diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index d159a36c18531a46cfa2bbf9f4ae93895ea75c3a..fb017884871b067886006739a58eb23b9aed8941 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -3,6 +3,7 @@ <name>Offer_entity</name> <title>Offer</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Offer_entity/documentation.adoc</documentation> <grantUpdateProcess>%aditoprj%/entity/Offer_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Offer_entity/grantDeleteProcess.js</grantDeleteProcess> <recordContainerType>DB</recordContainerType> @@ -37,6 +38,7 @@ </entityField> <entityField> <name>OFFERCODE</name> + <documentation>%aditoprj%/entity/Offer_entity/entityfields/offercode/documentation.adoc</documentation> <title>Offer number</title> <tableName>OFFER</tableName> <columnName>OFFERCODE</columnName> @@ -69,6 +71,7 @@ </entityField> <entityField> <name>RELATION_ID</name> + <documentation>%aditoprj%/entity/Offer_entity/entityfields/relation_id/documentation.adoc</documentation> <title>Contact / Company</title> <tableName>OFFER</tableName> <columnName>RELATION_ID</columnName> @@ -182,6 +185,7 @@ </entityField> <entityField> <name>TotalGross</name> + <documentation>%aditoprj%/entity/Offer_entity/entityfields/totalgross/documentation.adoc</documentation> <title>Total gross</title> <state>READONLY</state> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/totalgross/valueProcess.js</valueProcess> @@ -222,6 +226,7 @@ </entityActionField> <entityField> <name>VERSNR</name> + <documentation>%aditoprj%/entity/Offer_entity/entityfields/versnr/documentation.adoc</documentation> <title>Vers. no.</title> <tableName>OFFER</tableName> <columnName>VERSNR</columnName> @@ -230,6 +235,7 @@ </entityField> <entityField> <name>OFFER_ID</name> + <documentation>%aditoprj%/entity/Offer_entity/entityfields/offer_id/documentation.adoc</documentation> </entityField> <entityFieldGroup> <name>OfferCode_VersNr</name> diff --git a/entity/Offer_entity/documentation.adoc b/entity/Offer_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..c11de6b80022e744fb25f0e547aa69c66eeb3d00 --- /dev/null +++ b/entity/Offer_entity/documentation.adoc @@ -0,0 +1,15 @@ += OFFER + +:hardbreaks: + +Entity contains meta data of the Offer module. +It provides data from database table _OFFER_. + +== Actions + +* _Copy offer_: All values, offeritems included, are copyed and inserted in a new offer (new offer code, versnr. _1_). +* _New offer version_: All values, offeritems included, are copyed and inserted in a **new offer version** (versnr. + _1_). + +== Submodules + +* Offeritem \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/offer_id/documentation.adoc b/entity/Offer_entity/entityfields/offer_id/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..45c579ffee22ce5cfa74223c23851653a2bb8750 --- /dev/null +++ b/entity/Offer_entity/entityfields/offer_id/documentation.adoc @@ -0,0 +1,4 @@ += OFFER_ID +:hardbreaks: + +This field contains link information to previous offer version. \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/offercode/documentation.adoc b/entity/Offer_entity/entityfields/offercode/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..019d2f6339229de4bf8ba5b485bcba702cb0c6cb --- /dev/null +++ b/entity/Offer_entity/entityfields/offercode/documentation.adoc @@ -0,0 +1,5 @@ += OFFERCODE +:hardbreaks: + +Unique identification number of the offer. +It's automatically generated from the starting number _1000_. \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/relation_id/documentation.adoc b/entity/Offer_entity/entityfields/relation_id/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e978c88ef79f2554ac4731f7d4c3eb17aa50ea8b --- /dev/null +++ b/entity/Offer_entity/entityfields/relation_id/documentation.adoc @@ -0,0 +1,10 @@ += RELATION_ID +:hardbreaks: + +Over this field the company or contact person of customer is linked. + +== onValueChange + +If set in the selected company or contact person, the following field value are taken over: + +* LANGUAGE \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/totalgross/documentation.adoc b/entity/Offer_entity/entityfields/totalgross/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..c727abed66886d38bd46c6df6e1045b82666eb30 --- /dev/null +++ b/entity/Offer_entity/entityfields/totalgross/documentation.adoc @@ -0,0 +1,6 @@ += TotalGross +:hardbreaks: + +Contains the total gross of the offer (net). +This is calculated as follows: _NET_ + _VAT_. +Both are calculated in *_Offeritem_entity_* at _onDBInsert_, _onDBUpdate_ and _onDBDelete_. \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/versnr/documentation.adoc b/entity/Offer_entity/entityfields/versnr/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..0d9cdfe8dd6e5f417025786617c8df67e43d9520 --- /dev/null +++ b/entity/Offer_entity/entityfields/versnr/documentation.adoc @@ -0,0 +1,8 @@ += VERSNR +:hardbreaks: + +Additional to the offercode there's a version number. +By default it contains the value _1_. + +A new offer version can be created over the action _newOfferVersion_. +Then the new value is the old one incremented by _1_. \ No newline at end of file diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod index f9636b1e8709caf576c908bcba3680a4458bf93e..dfa1a79e76789c678181e5b94f12d8387578636b 100644 --- a/entity/Offeritem_entity/Offeritem_entity.aod +++ b/entity/Offeritem_entity/Offeritem_entity.aod @@ -3,6 +3,7 @@ <name>Offeritem_entity</name> <title>Offeritem</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Offeritem_entity/documentation.adoc</documentation> <grantCreateProcess>%aditoprj%/entity/Offeritem_entity/grantCreateProcess.js</grantCreateProcess> <grantUpdateProcess>%aditoprj%/entity/Offeritem_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Offeritem_entity/grantDeleteProcess.js</grantDeleteProcess> @@ -117,15 +118,16 @@ </entityField> <entityField> <name>PRODUCT_ID</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/documentation.adoc</documentation> <title>Article</title> <tableName>OFFERITEM</tableName> <columnName>PRODUCT_ID</columnName> <possibleItemsProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/possibleItemsProcess.js</possibleItemsProcess> - <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValidation.js</onValidation> <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValueChange.js</onValueChange> </entityField> <entityField> <name>QUANTITY</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/documentation.adoc</documentation> <title>Quantity</title> <tableName>OFFERITEM</tableName> <columnName>QUANTITY</columnName> @@ -180,6 +182,7 @@ </entityParameter> <entityField> <name>TotalPrice</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/totalprice/documentation.adoc</documentation> <title>Sum</title> <contentType>NUMBER</contentType> <outputFormat>#,##0.00</outputFormat> diff --git a/entity/Offeritem_entity/documentation.adoc b/entity/Offeritem_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..a5283456a0759e860a058690aeb402321c2779ec --- /dev/null +++ b/entity/Offeritem_entity/documentation.adoc @@ -0,0 +1,21 @@ += OFFERITEM +:hardbreaks: + +Entity contains products that belong to the linked offer. +It provides data from database table _OFFERITEM_ by a JDito record container. + +== onDBInsert + +If a new offer item is to be added, the parts list of the corresponding product +is inserted at the same time. A new item is created for each product. +The net sum in the linked offer is updated. + +== onDBUpdate + +The net sum in the linked offer is updated. + + +== onDBDelete + +Before deletion of an item, its subordinated items are also deleted. +The net sum in the linked offer is updated. \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/product_id/documentation.adoc b/entity/Offeritem_entity/entityfields/product_id/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..5d6ffbd8dd98f0a218cec7b0d8a0228b1e65b94e --- /dev/null +++ b/entity/Offeritem_entity/entityfields/product_id/documentation.adoc @@ -0,0 +1,14 @@ += PRODUCT_ID +:hardbreaks: + +Contains link to selected product for this item. + +== onValueChange + +The following field are set with the values from the selected product: + +* GROUPCODEID +* UNIT +* ITEMNAME +* PRICE & VAT: Values from the current valid price list defined to this product. + For futher informations see the comments in method __getPriceListToUse_ in _Product_lib_. \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/product_id/onValidation.js b/entity/Offeritem_entity/entityfields/product_id/onValidation.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Offeritem_entity/entityfields/quantity/documentation.adoc b/entity/Offeritem_entity/entityfields/quantity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..5f7419c93c2913f83e1e1ab76f14dd1f03e49d2c --- /dev/null +++ b/entity/Offeritem_entity/entityfields/quantity/documentation.adoc @@ -0,0 +1,9 @@ += QUANTITY +:hardbreaks: + +Quantity of selected product in this item. + +== onValueChange + +The fields PRICE & VAT are set by changing quantity when a product has already been selected. +The reason for this is that you can define a quantity as of which price lists are valid. \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/totalprice/documentation.adoc b/entity/Offeritem_entity/entityfields/totalprice/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..481fb639fb88ae3d95aa88fa8cf0cee9160dc2e5 --- /dev/null +++ b/entity/Offeritem_entity/entityfields/totalprice/documentation.adoc @@ -0,0 +1,5 @@ += TotalPrice +:hardbreaks: + +Contains the total price of the item. +This is calculated as follows: _QUANTITY_ * _PRICE_ * (100 - _DISCOUNT_) / 100 \ No newline at end of file diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod index 5966912c271c770f8c6f9f04cb4b9bfc3f8e9a5b..ce05f40bd6b8211c3c09efc9b048a706a6fbf6c1 100644 --- a/entity/Prod2prod_entity/Prod2prod_entity.aod +++ b/entity/Prod2prod_entity/Prod2prod_entity.aod @@ -2,6 +2,7 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.5" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.0.5"> <name>Prod2prod_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Prod2prod_entity/documentation.adoc</documentation> <externalOpenAction>%aditoprj%/entity/Prod2prod_entity/externalOpenAction.js</externalOpenAction> <recordContainerType>JDITO</recordContainerType> <alias>Data_alias</alias> @@ -49,6 +50,7 @@ </entityField> <entityField> <name>DEST_ID</name> + <documentation>%aditoprj%/entity/Prod2prod_entity/entityfields/dest_id/documentation.adoc</documentation> <tableName></tableName> <columnName></columnName> <fieldName>DEST_ID</fieldName> @@ -81,6 +83,7 @@ </entityField> <entityField> <name>SOURCE_ID</name> + <documentation>%aditoprj%/entity/Prod2prod_entity/entityfields/source_id/documentation.adoc</documentation> <title>Product</title> <tableName></tableName> <columnName></columnName> @@ -90,6 +93,7 @@ </entityField> <entityField> <name>TAKEPRICE</name> + <documentation>%aditoprj%/entity/Prod2prod_entity/entityfields/takeprice/documentation.adoc</documentation> <title>Price</title> <tableName></tableName> <columnName></columnName> diff --git a/entity/Prod2prod_entity/documentation.adoc b/entity/Prod2prod_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..59bbbae97ad3a477420b71e111fac26c5dada832 --- /dev/null +++ b/entity/Prod2prod_entity/documentation.adoc @@ -0,0 +1,34 @@ += Prod2prod_entity +:hardbreaks: + +Entity contains links between products. +It provides data from database table _PROD2PROD_. + +The record container loads the parts list of the passed product. +This means which sub-products this product consists of. + +A possible **definiton** for a parts list is: + +[quote, McGraw-Hill Dictionary of Scientific & Technical Terms, 6E. S.v. "parts list." Retrieved November 26 2018 from https://encyclopedia2.thefreedictionary.com/parts+list] +____ +One or more printed sheets showing a manufacturer's parts or assemblies of an end item by illustration or a numerical listing of part numbers and names; it does not outline any assembly, maintenance, or operating instructions, and it may or may not have a price list cover sheet. +____ + +Database table _PROD2PROD_ contains the two foreign key columns _DEST_ID_ and _SOURCE_ID_. +Both contain a _PRODUCTID_. The following visualization clarifies the structure of a parts list. + +++++ +<img src="data:image/png;base64,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" style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1&edit=_blank');}})(this);"/> +++++ + +//// +How to edit this diagram: +1. copy complete <img> tag from above +2. paste it into text editor and save it as a html file +3. open html file with browser +4. click on the diagram +5. at the bottom of the page you can start edit mode +6. edit diagram on draw.io +7. get <img> tag of the diagram with File -> Embed -> Image +8. replace tag above +//// \ No newline at end of file diff --git a/entity/Prod2prod_entity/entityfields/dest_id/documentation.adoc b/entity/Prod2prod_entity/entityfields/dest_id/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..34ed7bcc2d426001e59818f56d45016fdb521c6e --- /dev/null +++ b/entity/Prod2prod_entity/entityfields/dest_id/documentation.adoc @@ -0,0 +1,7 @@ += DEST_ID +:hardbreaks: + +This column contains link information (foreign key) to the product to which it is a part of (parent). + +== Preset New +The system defaults to the passed value of the parameter _ProductId_param_. \ No newline at end of file diff --git a/entity/Prod2prod_entity/entityfields/optional/documentation.adoc b/entity/Prod2prod_entity/entityfields/optional/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..3ca64e8047d84398535b3cfa2d20919c5ecd4e25 --- /dev/null +++ b/entity/Prod2prod_entity/entityfields/optional/documentation.adoc @@ -0,0 +1,4 @@ += OPTIONAL +:hardbreaks: + +Flag for offer / order. The value is taken over in offer / order. \ No newline at end of file diff --git a/entity/Prod2prod_entity/entityfields/source_id/documentation.adoc b/entity/Prod2prod_entity/entityfields/source_id/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..59dcd2e0f4c01785c34f531b3f43bd54235841f6 --- /dev/null +++ b/entity/Prod2prod_entity/entityfields/source_id/documentation.adoc @@ -0,0 +1,8 @@ += SOURCE_ID +:hardbreaks: + +This column contains link information (foreign key) to the partial product. (child) + +== value list +Listed are all products which are **not already part of** parts list. +This means each product recursively appears in _DEST_ID_ or _SOURCE_ID_ of the current product passed by parameter _ProductId_param_ **is excluded**. \ No newline at end of file diff --git a/entity/Prod2prod_entity/entityfields/takeprice/documentation.adoc b/entity/Prod2prod_entity/entityfields/takeprice/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..eb617876677f893ff5d953b92f7cd5cff145f60e --- /dev/null +++ b/entity/Prod2prod_entity/entityfields/takeprice/documentation.adoc @@ -0,0 +1,4 @@ += TAKEPRICE +:hardbreaks: + +Flag for offer / order. If set the current valid price list to this product is taken over in offer / order. \ No newline at end of file diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 439bbabafd0959b155035cc79d979774c422fcfe..c0010e3e41a6303993fb2d67197ca7e828b0ff60 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -3,6 +3,7 @@ <name>Product_entity</name> <title>Product</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Product_entity/documentation.adoc</documentation> <recordContainerType>DB</recordContainerType> <iconId>VAADIN:HAMMER</iconId> <alias>Data_alias</alias> @@ -60,6 +61,7 @@ </entityField> <entityField> <name>PRODUCTCODE</name> + <documentation>%aditoprj%/entity/Product_entity/entityfields/productcode/documentation.adoc</documentation> <title>Product number</title> <tableName>PRODUCT</tableName> <columnName>PRODUCTCODE</columnName> diff --git a/entity/Product_entity/documentation.adoc b/entity/Product_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..ccd3865898d44c3d0ebd4b3bd46633d4f84b8bf1 --- /dev/null +++ b/entity/Product_entity/documentation.adoc @@ -0,0 +1,12 @@ += PRODUCT + +:hardbreaks: + +Entity contains meta data of the Product module. +It provides data from database table _PRODUCT_. + +== Submodules + +* Parts list (Prod2Prod) +* Product price +* Stock \ No newline at end of file diff --git a/entity/Product_entity/entityfields/productcode/documentation.adoc b/entity/Product_entity/entityfields/productcode/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e3dd7742201c099ba3c7af84b92d80b5c9444479 --- /dev/null +++ b/entity/Product_entity/entityfields/productcode/documentation.adoc @@ -0,0 +1,4 @@ += PRODUCTCODE +:hardbreaks: + +Unique identification number of the product. (max. 30 characters, not automatically generated) \ No newline at end of file diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 0897e500a76be11b22381413ef3a4c312199ea08..039922c708f81775e5285feb0d1fd9cc8af6af88 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -135,9 +135,11 @@ </entityField> <entityField> <name>PRICELIST</name> + <documentation>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/documentation.adoc</documentation> <title>Price list</title> <tableName>PRODUCTPRICE</tableName> <columnName>PRICELIST</columnName> + <mandatoryProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/mandatoryProcess.js</mandatoryProcess> <possibleItemsProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/possibleItemsProcess.js</possibleItemsProcess> <state>AUTO</state> <stateProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/stateProcess.js</stateProcess> diff --git a/entity/Productprice_entity/documentation.adoc b/entity/Productprice_entity/documentation.adoc index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cb6558ccb5adeee75778e6e5e83b152b94f590c7 100644 --- a/entity/Productprice_entity/documentation.adoc +++ b/entity/Productprice_entity/documentation.adoc @@ -0,0 +1,15 @@ += PRODUCTPRICE + +:hardbreaks: + +Entity contains price lists for the linked product. +It provides data from database table _PRODUCTPRICE_. + +== New price list via product + +By creation via product you have to select a price list type using the field _PRICELIST_. + +== New price list via organisation (custom price list) + +By creation via an organisation you don't have do select a price list type because +it's a custom price list \-> field _RELATION_ID_ is filled automatically by parameter _Relation_Id_param_. \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/pricelist/documentation.adoc b/entity/Productprice_entity/entityfields/pricelist/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..777173dda73190f975c75f5475f8f7a31b4d7bfb --- /dev/null +++ b/entity/Productprice_entity/entityfields/pricelist/documentation.adoc @@ -0,0 +1,18 @@ += PRICELIST + +:hardbreaks: + +Field indicates the type of the price list. + +== onValidation + +There's a **verficiation** for current pricelist whether an **identical price list already exists** for product. +The following criteria will be checked in function _ProductUtils.checkForIndenticalPriceLists()_: + +* Identical price list type +* Identical from quantity +* Identical currency +* Identical purchase price/sales price +* Idcentical Valid from and valid to OR + +If all criteria are fulfilled, price list can not be saved. \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/pricelist/mandatoryProcess.js b/entity/Productprice_entity/entityfields/pricelist/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6db2c72b17a7335446e477540a3117ae5704fa35 --- /dev/null +++ b/entity/Productprice_entity/entityfields/pricelist/mandatoryProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +if(vars.get("$field.RELATION_ID") != "") + result.string("false"); +else + result.string("true"); \ No newline at end of file diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod index 918140f62110b5d809333a1b3a4c7f677f4ee9d3..dfae4c28d432d6336ce785d7b4d71155351ba1a1 100644 --- a/entity/Stock_entity/Stock_entity.aod +++ b/entity/Stock_entity/Stock_entity.aod @@ -3,6 +3,7 @@ <name>Stock_entity</name> <title>Stock</title> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Stock_entity/documentation.adoc</documentation> <recordContainerType>DB</recordContainerType> <alias>Data_alias</alias> <conditionProcess>%aditoprj%/entity/Stock_entity/conditionProcess.js</conditionProcess> diff --git a/entity/Stock_entity/documentation.adoc b/entity/Stock_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..988a6942455abacabdd88bb4170f27b36ed446e5 --- /dev/null +++ b/entity/Stock_entity/documentation.adoc @@ -0,0 +1,6 @@ += STOCK + +:hardbreaks: + +Entity contains stock for the linked product. +It provides data from database table _STOCK_. \ No newline at end of file diff --git a/entity/Stock_entity/entityfields/stockcount/valueProcess.js b/entity/Stock_entity/entityfields/stockcount/valueProcess.js index d5de29c8e34a1b58595736e30155324f168ff5b5..4c32e2524eda69478457c1979858e40229135cba 100644 --- a/entity/Stock_entity/entityfields/stockcount/valueProcess.js +++ b/entity/Stock_entity/entityfields/stockcount/valueProcess.js @@ -5,7 +5,7 @@ import("Product_lib"); if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param") != "") { - var ProductUtils = new ProductUtils(); + var pUtils = new ProductUtils(); - result.string( ProductUtils.getStockCount(vars.get("$param.ProductId_param")) ); + result.string( pUtils.getStockCount(vars.get("$param.ProductId_param")) ); } \ No newline at end of file