diff --git a/.liquibase/Data_alias/basic/2021.0.0/addDiscountToOrder.xml b/.liquibase/Data_alias/basic/2021.0.0/addDiscountToOrder.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f6d604f6b36675cb71721a84f65dc9a47744c2a --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.0/addDiscountToOrder.xml @@ -0,0 +1,12 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="j.luginger" id="fc76d687-c5d8-4b12-919c-0324eb7f8f72"> + <addColumn tableName="SALESORDER"> + <column name="DISCOUNT" type="NUMERIC(14,2)" /> + <column name="DISCOUNTED_NET" type="NUMERIC(14,2)" /> + <column name="DISCOUNTED_VAT" type="NUMERIC(14,2)" /> + </addColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.0/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/changelog.xml index 21d9b6123c339868f578deb1c41f89eb8269b0d3..80893bba73690c101cfdd077ae199d371a9ad61c 100644 --- a/.liquibase/Data_alias/basic/2021.0.0/changelog.xml +++ b/.liquibase/Data_alias/basic/2021.0.0/changelog.xml @@ -15,4 +15,5 @@ <include relativeToChangelogFile="true" file="KeywordMigration/changelog.xml"/> <include relativeToChangelogFile="true" file="addDateNewToSalesproject.xml"/> <include relativeToChangelogFile="true" file="EwsContactSync/create_ab_synccontact.xml"/> + <include relativeToChangelogFile="true" file="addDiscountToOrder.xml"/> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/alter_offer.xml b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/alter_offer.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6bac2781ff4b79979b1579392634f6b6a2cc1d2 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/alter_offer.xml @@ -0,0 +1,49 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="p.neub" id="05a0c26f-0753-41b3-adc5-25ae99f75dd7"> + <renameColumn newColumnName="PROBABILITY_OLD" oldColumnName="PROBABILITY" tableName="OFFER"/> + <addColumn tableName="OFFER"> + <column afterColumn="PROBABILITY_OLD" name="PROBABILITY" type="DECIMAL(6, 2)"/> + </addColumn> + + <update tableName="OFFER"> + <column name="PROBABILITY" valueNumeric="0"/> + <where>OFFER.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="0"/> + </whereParams> + </update> + <update tableName="OFFER"> + <column name="PROBABILITY" valueNumeric="25"/> + <where>OFFER.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="25"/> + </whereParams> + </update> + <update tableName="OFFER"> + <column name="PROBABILITY" valueNumeric="50"/> + <where>OFFER.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="50"/> + </whereParams> + </update> + <update tableName="OFFER"> + <column name="PROBABILITY" valueNumeric="75"/> + <where>OFFER.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="75"/> + </whereParams> + </update> + <update tableName="OFFER"> + <column name="PROBABILITY" valueNumeric="100"/> + <where>OFFER.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="100"/> + </whereParams> + </update> + + <dropColumn tableName="OFFER"> + <column name="PROBABILITY_OLD"/> + </dropColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/alter_salesproject.xml b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/alter_salesproject.xml new file mode 100644 index 0000000000000000000000000000000000000000..03b2cc484dc898ed3df714a5204d7feb6505788d --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/alter_salesproject.xml @@ -0,0 +1,49 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="p.neub" id="dbee2caa-50f2-4516-b5ea-e7e1087e4456"> + <renameColumn newColumnName="PROBABILITY_OLD" oldColumnName="PROBABILITY" tableName="SALESPROJECT"/> + <addColumn tableName="SALESPROJECT"> + <column afterColumn="PROBABILITY_OLD" name="PROBABILITY" type="DECIMAL(6, 2)"/> + </addColumn> + + <update tableName="SALESPROJECT"> + <column name="PROBABILITY" valueNumeric="0"/> + <where>SALESPROJECT.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="SALPROJPROB0"/> + </whereParams> + </update> + <update tableName="SALESPROJECT"> + <column name="PROBABILITY" valueNumeric="25"/> + <where>SALESPROJECT.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="SALPROJPROB25"/> + </whereParams> + </update> + <update tableName="SALESPROJECT"> + <column name="PROBABILITY" valueNumeric="50"/> + <where>SALESPROJECT.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="SALPROJPROB50"/> + </whereParams> + </update> + <update tableName="SALESPROJECT"> + <column name="PROBABILITY" valueNumeric="75"/> + <where>SALESPROJECT.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="SALPROJPROB75"/> + </whereParams> + </update> + <update tableName="SALESPROJECT"> + <column name="PROBABILITY" valueNumeric="100"/> + <where>SALESPROJECT.PROBABILITY_OLD = ?</where> + <whereParams> + <param value="SALPROJPROB100"/> + </whereParams> + </update> + + <dropColumn tableName="SALESPROJECT"> + <column name="PROBABILITY_OLD"/> + </dropColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/changelog.xml b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..2b185aa275da764cf657ba3eec80e1d0bf3aafe7 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/changelog.xml @@ -0,0 +1,6 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="delete_probabiliy_keyword.xml" relativeToChangelogFile="true"/> + <include file="alter_salesproject.xml" relativeToChangelogFile="true"/> + <include file="alter_offer.xml" relativeToChangelogFile="true"/> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/delete_probabiliy_keyword.xml b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/delete_probabiliy_keyword.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e52b09b6711607a134dde0cc1aa5b523da71e8a --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.1/ProbabilityMigration/delete_probabiliy_keyword.xml @@ -0,0 +1,80 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="p.neub" id="2ebeb8cb-09fb-495a-afed-6a7904e6f294"> + <delete tableName="AB_KEYWORD_CATEGORY"> + <where>AB_KEYWORD_CATEGORYID = '91e847b9-9c35-4e1e-8936-045eb7d4f90a'</where> + </delete> + <delete tableName="AB_KEYWORD_CATEGORY"> + <where>AB_KEYWORD_CATEGORYID = '05fe9872-c1a8-41ab-bf0b-d0df0537fe4f'</where> + </delete> + + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = 'ab44bd2c-dffa-4731-8a24-fad31f069c46'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = 'e59169d3-c0d9-4718-b8b6-e315857948a0'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = '415f1cf0-8c5b-4b6e-9900-0d0d6d72381c'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = '6182cc48-df2b-4ba9-893a-bcedfd0e1e4b'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = 'f5b601a5-451b-4ab6-9167-b95077e90c62'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = 'e14fab55-4a85-48c2-a109-125eaed9dc3f'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = '8f55a5e3-00a9-4691-ab79-309a3eda68ec'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = '808a55bc-5876-4deb-a78f-bb352c41d712'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = '941e60df-a4f5-4ae8-9ca1-d9f2b2d01d9d'</where> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = '2f21341b-9991-4967-a785-60216ec8c25e'</where> + </delete> + + <delete tableName="AB_KEYWORD_ATTRIBUTE"> + <where>AB_KEYWORD_ATTRIBUTEID = '2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTE"> + <where>AB_KEYWORD_ATTRIBUTEID = 'b9766994-4e7d-4079-a0bc-f1397f93047f'</where> + </delete> + + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = '173b7c41-4f00-486d-8e24-8c7e9feb246b'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = '2d8b8da4-1241-4094-abf5-54d8cacadcaf'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = 'd02adcf4-fdc0-4614-ad44-88fa9de77a37'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = 'ad5da2d5-31ed-433d-8822-16ca9f763a9f'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = 'fde64249-12c6-4140-9f3f-19585c2ba8fd'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = '36fa5f86-6abf-4065-ae3d-e8e614985967'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = '8b719177-b9a1-44f8-bfba-34b678d84daa'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = 'a7cc397c-b246-4552-9bf4-537ad4d4476d'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = '1a233346-a284-49a8-ac51-c3a214474e88'</where> + </delete> + <delete tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <where>AB_KEYWORD_ATTRIBUTERELATIONID = 'f25f0406-998b-4b29-9432-4dafa378f1eb'</where> + </delete> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.1/changelog.xml b/.liquibase/Data_alias/basic/2021.0.1/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..177203074a8579de2393bf20ad25ddafc4fe6795 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.1/changelog.xml @@ -0,0 +1,6 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include relativeToChangelogFile="true" file="update_SalesOrderItemRemoveOptional.xml"/> + <include relativeToChangelogFile="true" file="ProbabilityMigration/changelog.xml"/> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2021.0.1/update_SalesOrderItemRemoveOptional.xml b/.liquibase/Data_alias/basic/2021.0.1/update_SalesOrderItemRemoveOptional.xml new file mode 100644 index 0000000000000000000000000000000000000000..64bf902478621ef41504593718480ac0184474f6 --- /dev/null +++ b/.liquibase/Data_alias/basic/2021.0.1/update_SalesOrderItemRemoveOptional.xml @@ -0,0 +1,10 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="b.ulrich" id="2bbb96a8-077f-43de-af4c-e279d993fff8"> + <dropColumn tableName="SALESORDERITEM"> + <column name="OPTIONAL"/> + </dropColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/offer.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/offer.xml index 8be28d744ec1851598a06432416c573fc92450ab..fbd8e3bdb19a5a1e8730b7cc0fbdc13d15e02142 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/offer.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/offer.xml @@ -14,7 +14,7 @@ <column name="ADDRESS" value="Gfk AG Wilhelm-Straße 4 80807 München"/> <column name="OFFERDATE" valueDate="2018-02-23T01:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="0"/> + <column name="PROBABILITY" valueNumeric="0"/> <column name="OFFERCODE" valueNumeric="1003"/> <column name="VAT" valueNumeric="79.80"/> <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/> @@ -32,7 +32,7 @@ <column name="ADDRESS" value="Gfk AG Wilhelm-Straße 4 80807 München"/> <column name="OFFERDATE" valueDate="2018-08-12T02:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="OFFERCODE" valueNumeric="1001"/> <column name="VAT" valueNumeric="79.80"/> <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/> @@ -50,7 +50,7 @@ <column name="ADDRESS" value="Gfk AG Wilhelm-Straße 4 80807 München"/> <column name="OFFERDATE" valueDate="2018-11-21T01:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="100"/> + <column name="PROBABILITY" valueNumeric="100"/> <column name="OFFERCODE" valueNumeric="1000"/> <column name="VAT" valueNumeric="39.90"/> <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/> @@ -72,7 +72,7 @@ <column name="ADDRESS" value="Transatlantik Logistics GmbH Friedrichshafen 12 88046 Friedrichshafen"/> <column name="OFFERDATE" valueDate="2020-05-20T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="OFFERCODE" valueNumeric="1008"/> <column name="VAT" valueNumeric="0.00"/> <column name="DATE_NEW" valueDate="2019-05-17T09:03:46"/> @@ -95,7 +95,7 @@ <column name="ADDRESS" value="Industrial Steel AG Königstraße 4 22767 Hamburg"/> <column name="OFFERDATE" valueDate="2020-03-16T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="75"/> + <column name="PROBABILITY" valueNumeric="75"/> <column name="OFFERCODE" valueNumeric="1013"/> <column name="VAT" valueNumeric="4750.00"/> <column name="DATE_NEW" valueDate="2019-05-23T09:04:28"/> @@ -117,7 +117,7 @@ <column name="ADDRESS" value="Bucher Unternehmensgruppe Julius-Leber-Straße 5 22765 Hamburg"/> <column name="OFFERDATE" valueDate="2020-04-06T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="0"/> + <column name="PROBABILITY" valueNumeric="0"/> <column name="OFFERCODE" valueNumeric="1014"/> <column name="VAT" valueNumeric="0.00"/> <column name="DATE_NEW" valueDate="2020-09-16T09:11:19"/> @@ -140,7 +140,7 @@ <column name="ADDRESS" value="Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart"/> <column name="OFFERDATE" valueDate="2020-07-06T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="OFFERCODE" valueNumeric="1011"/> <column name="VAT" valueNumeric="10165.00"/> <column name="DATE_NEW" valueDate="2019-05-22T11:40:03"/> @@ -180,7 +180,7 @@ <column name="ADDRESS" value="Gfk AG Wilhelm-Straße 4 80807 München"/> <column name="OFFERDATE" valueDate="2018-06-14T02:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="75"/> + <column name="PROBABILITY" valueNumeric="75"/> <column name="OFFERCODE" valueNumeric="1002"/> <column name="VAT" valueNumeric="119.70"/> <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/> @@ -202,7 +202,7 @@ <column name="ADDRESS" value="Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart"/> <column name="OFFERDATE" valueDate="2020-08-19T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="25"/> + <column name="PROBABILITY" valueNumeric="25"/> <column name="OFFERCODE" valueNumeric="1006"/> <column name="VAT" valueNumeric="0.00"/> <column name="DATE_NEW" valueDate="2019-05-17T08:23:52"/> @@ -225,7 +225,7 @@ <column name="ADDRESS" value="Industrial Steel AG Königstraße 4 22767 Hamburg"/> <column name="OFFERDATE" valueDate="2020-05-15T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="25"/> + <column name="PROBABILITY" valueNumeric="25"/> <column name="OFFERCODE" valueNumeric="1010"/> <column name="VAT" valueNumeric="0.00"/> <column name="DATE_NEW" valueDate="2019-05-17T10:28:20"/> @@ -248,7 +248,7 @@ <column name="ADDRESS" value="Industrial Steel AG Königstraße 4 22767 Hamburg"/> <column name="OFFERDATE" valueDate="2020-05-14T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="OFFERCODE" valueNumeric="1005"/> <column name="VAT" valueNumeric="39.90"/> <column name="DATE_NEW" valueDate="2019-05-16T01:35:17"/> @@ -267,7 +267,7 @@ <column name="ADDRESS" value="Gfk AG Wilhelm-Straße 4 80807 München"/> <column name="OFFERDATE" valueDate="2017-11-09T01:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="OFFERCODE" valueNumeric="1004"/> <column name="VAT" valueNumeric="159.60"/> <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/> @@ -289,7 +289,7 @@ <column name="ADDRESS" value="Industrial Steel AG Königstraße 4 22767 Hamburg"/> <column name="OFFERDATE" valueDate="2020-03-23T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="OFFERCODE" valueNumeric="1012"/> <column name="VAT" valueNumeric="8550.00"/> <column name="DATE_NEW" valueDate="2019-05-23T09:00:44"/> @@ -312,7 +312,7 @@ <column name="ADDRESS" value="Transatlantik Logistics GmbH Friedrichshafen 12 88046 Friedrichshafen"/> <column name="OFFERDATE" valueDate="2020-07-06T12:00:00"/> <column name="OBJECT_TYPE" value="Salesproject"/> - <column name="PROBABILITY" value="75"/> + <column name="PROBABILITY" valueNumeric="75"/> <column name="OFFERCODE" valueNumeric="1009"/> <column name="VAT" valueNumeric="0.00"/> <column name="DATE_NEW" valueDate="2019-05-17T09:27:12"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/salesorderitem.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/salesorderitem.xml index a7f439b41f7bdd297ae3ae0cee4f264fe9614d9f..f2f54c736ff6a767c4726a7c57c50dfa5ad3eb65 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/salesorderitem.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/salesorderitem.xml @@ -7,7 +7,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP2 "/> <column name="ITEMNAME" value="Klimaanlage 2-Zonen"/> <column name="SALESORDER_ID" value="9069d098-7237-4fed-a365-ad2e60bf740f"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="2"/> <column name="ITEMPOSITION" value="2"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -21,7 +20,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP2 "/> <column name="ITEMNAME" value="Turbolader"/> <column name="SALESORDER_ID" value="4eb43698-a4e7-4617-8150-1b279dcce9f2"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -34,7 +32,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP2 "/> <column name="ITEMNAME" value="Turbolader"/> <column name="SALESORDER_ID" value="1b9bd530-f45b-4074-872f-b8362cfc5ed0"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -45,7 +42,6 @@ <insert tableName="salesorderitem"> <column name="QUANTITY" valueNumeric="1.00"/> <column name="SALESORDER_ID" value="66f6ffc1-702a-4ebe-9158-6214884d658d"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="PRICE" valueNumeric="145000.00"/> @@ -58,7 +54,6 @@ <column name="ITEMNAME" value="AX45"/> <column name="SALESORDER_ID" value="373f28a5-a812-433b-8196-a6bf8bdd5656"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -71,7 +66,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP2 "/> <column name="ITEMNAME" value="Klimaanlage 4-Zonen"/> <column name="SALESORDER_ID" value="4eb43698-a4e7-4617-8150-1b279dcce9f2"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="2"/> <column name="ITEMPOSITION" value="2"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -85,7 +79,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP1 "/> <column name="ITEMNAME" value="Stahlträger Standard"/> <column name="SALESORDER_ID" value="63a33308-4ae4-4de7-bd59-162f3677e819"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="2"/> <column name="ITEMPOSITION" value="2"/> <column name="UNIT" value="QUANTITYKGS"/> @@ -99,7 +92,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP2 "/> <column name="ITEMNAME" value="Klimaanlage 4-Zonen"/> <column name="SALESORDER_ID" value="1b9bd530-f45b-4074-872f-b8362cfc5ed0"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="2"/> <column name="ITEMPOSITION" value="2"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -113,7 +105,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP3 "/> <column name="ITEMNAME" value="Standard Gerüst"/> <column name="SALESORDER_ID" value="fc691949-4f61-485c-8e97-8f3d0d3d3962"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="2"/> <column name="ITEMPOSITION" value="2"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -127,7 +118,6 @@ <column name="ITEMNAME" value="Ersatzteil 3"/> <column name="SALESORDER_ID" value="50c64e0f-6a21-4842-ab41-b27c70d0939a"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -141,7 +131,6 @@ <column name="ITEMNAME" value="AX45"/> <column name="SALESORDER_ID" value="545ffd81-cfa5-4be6-b62c-df269909dcd4"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYHOUR"/> @@ -155,7 +144,6 @@ <column name="ITEMNAME" value="AX45"/> <column name="SALESORDER_ID" value="3ce30718-ecc6-4543-95c8-1b25e1b6db43"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -169,7 +157,6 @@ <column name="ITEMNAME" value="WG2 Proudkt 3"/> <column name="SALESORDER_ID" value="5e082fe5-99d4-43be-aaad-e596f844fa8a"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="3"/> <column name="ITEMPOSITION" value="3"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -183,7 +170,6 @@ <column name="ITEMNAME" value="AX45"/> <column name="SALESORDER_ID" value="4b0e2423-d09d-47fc-b274-5a9fde013b64"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -197,7 +183,6 @@ <column name="ITEMNAME" value="WG2 Produkt 5"/> <column name="SALESORDER_ID" value="e40eb96e-1f1f-4afa-9bd3-f70eff9041c0"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -211,7 +196,6 @@ <column name="ITEMNAME" value="Förderanlage"/> <column name="SALESORDER_ID" value="63a33308-4ae4-4de7-bd59-162f3677e819"/> <column name="DISCOUNT" valueNumeric="5.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -224,7 +208,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP2 "/> <column name="ITEMNAME" value="Bremsscheiben"/> <column name="SALESORDER_ID" value="9069d098-7237-4fed-a365-ad2e60bf740f"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -237,7 +220,6 @@ <column name="GROUPCODEID" value="PRODUCTGROUP3 "/> <column name="ITEMNAME" value="Gipsplatten"/> <column name="SALESORDER_ID" value="fc691949-4f61-485c-8e97-8f3d0d3d3962"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> @@ -251,7 +233,6 @@ <column name="ITEMNAME" value="Service Einsatz"/> <column name="SALESORDER_ID" value="5e082fe5-99d4-43be-aaad-e596f844fa8a"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="2"/> <column name="ITEMPOSITION" value="2"/> <column name="UNIT" value="QUANTITYHOUR"/> @@ -265,7 +246,6 @@ <column name="ITEMNAME" value="WG2 Produkt 4"/> <column name="SALESORDER_ID" value="5e082fe5-99d4-43be-aaad-e596f844fa8a"/> <column name="VAT" valueNumeric="19.00"/> - <column name="OPTIONAL" valueNumeric="0"/> <column name="ITEMSORT" valueNumeric="1"/> <column name="ITEMPOSITION" value="1"/> <column name="UNIT" value="QUANTITYPIECES"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/salesproject.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/salesproject.xml index 501abc4a8119a32b98be9512a91506f1fee1b5d7..e974404a483fca6b30869ed902b060c218cfa29b 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/salesproject.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/salesproject.xml @@ -7,7 +7,7 @@ <column name="PHASE" value="SALPROJPHASESQO"/> <column name="ENDDATE" valueDate="2021-05-20T12:00:00"/> <column name="SALESPROJECTID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> - <column name="PROBABILITY" value="SALPROJPROB25"/> + <column name="PROBABILITY" valueNumeric="25"/> <column name="PROJECTCODE" valueNumeric="1002"/> <column name="PROJECTTITLE" value="Erstprojekt"/> <column name="CONTACT_ID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/> @@ -20,7 +20,7 @@ <column name="PHASE" value="SALPROJPHASESAL"/> <column name="ENDDATE" valueDate="2021-05-17T12:00:00"/> <column name="SALESPROJECTID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> - <column name="PROBABILITY" value="SALPROJPROB25"/> + <column name="PROBABILITY" valueNumeric="25"/> <column name="PROJECTCODE" valueNumeric="1003"/> <column name="PROJECTTITLE" value="Skyscraper / Pilotprojekt"/> <column name="CONTACT_ID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/> @@ -33,7 +33,7 @@ <column name="PHASE" value="SALPROJPHASEOFFER"/> <column name="ENDDATE" valueDate="2022-05-22T12:00:00"/> <column name="SALESPROJECTID" value="7e2680f6-a438-45aa-956a-787363f85923"/> - <column name="PROBABILITY" value="SALPROJPROB50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="PROJECTCODE" valueNumeric="1005"/> <column name="PROJECTTITLE" value="Kronen Pilotprojekt"/> <column name="CONTACT_ID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> @@ -46,7 +46,7 @@ <column name="PHASE" value="SALPROJPHASESAL"/> <column name="ENDDATE" valueDate="2022-05-18T12:00:00"/> <column name="SALESPROJECTID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> - <column name="PROBABILITY" value="SALPROJPROB25"/> + <column name="PROBABILITY" valueNumeric="25"/> <column name="PROJECTCODE" valueNumeric="1004"/> <column name="PROJECTTITLE" value="Transatlantik Initialprojekt"/> <column name="CONTACT_ID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/> @@ -58,7 +58,7 @@ <column name="PHASE" value="SALPROJPHASENQC"/> <column name="ENDDATE" valueDate="2021-11-26T12:00:00"/> <column name="SALESPROJECTID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> - <column name="PROBABILITY" value="SALPROJPROB50"/> + <column name="PROBABILITY" valueNumeric="50"/> <column name="PROJECTCODE" valueNumeric="1007"/> <column name="PROJECTTITLE" value="Projekt 123"/> <column name="CONTACT_ID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/> @@ -71,7 +71,7 @@ <column name="PHASE" value="SALPROJPHASEMQC"/> <column name="ENDDATE" valueDate="2022-05-22T12:00:00"/> <column name="SALESPROJECTID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> - <column name="PROBABILITY" value="SALPROJPROB25"/> + <column name="PROBABILITY" valueNumeric="25"/> <column name="PROJECTCODE" valueNumeric="1006"/> <column name="PROJECTTITLE" value="Buchner Neuprojekt"/> <column name="CONTACT_ID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index 12d0865aebe1c4bc81cb8563000a34e896ec8998..0e119a8ff0c966e6cc4761f641a92445cdc95ecb 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -20,6 +20,7 @@ <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2021.0.0/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2021.0.1/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index c11813dbb29225d87cc86ba13b661a200c04c77d..2175c22884be38146d736ca8d19f523168fa5210 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -2723,9 +2723,9 @@ <name>PROBABILITY</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> + <columnType v="3" /> + <size v="6" /> + <scale v="2" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -3712,9 +3712,9 @@ <name>PROBABILITY</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> + <columnType v="3" /> + <size v="6" /> + <scale v="2" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -4914,6 +4914,48 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>DISCOUNTED_VAT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2" /> + <size v="14" /> + <scale v="2" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DISCOUNT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2" /> + <size v="14" /> + <scale v="2" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DISCOUNTED_NET</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2" /> + <size v="14" /> + <scale v="2" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -5096,32 +5138,6 @@ </customBooleanProperty> </customProperties> </entityFieldDb> - <entityFieldDb> - <name>OPTIONAL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Optional</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customBooleanProperty> - <name>autoMapTrueFalse4Log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> <entityFieldDb> <name>GROUPCODEID</name> <dbName></dbName> diff --git a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantmessage/valueProcess.js b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantmessage/valueProcess.js index a962faa8460527ec241f6d7d408b0191a62a8215..50b80a7140e7174360fc74fd7532e1ae3c65d0a2 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantmessage/valueProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantmessage/valueProcess.js @@ -4,6 +4,7 @@ import("system.result"); import("system.vars"); import("Campaign_lib"); import("FilterViewAction_lib"); +import("Util_lib"); var res = ""; var resNotAdded = "\n"; @@ -11,7 +12,7 @@ var resNotAdded = "\n"; if(vars.get("$field.CAMPAIGN_ID") && vars.get("$field.campaignparticipantContactIds") && !vars.get("$sys.validationerrors")) { var selectedIds; - var isUpdate = vars.get("$param.isUpdate_param"); + var isUpdate = Utils.toBoolean(vars.get("$param.isUpdate_param")); var validCount = JSON.parse(vars.get("$field.campaignparticipantContactIds")).length; var comingfrom = vars.get("$param.dataSourceTableName_param"); diff --git a/entity/Campaign_entity/entityfields/status/valueProcess.js b/entity/Campaign_entity/entityfields/status/valueProcess.js index c3b6c3a036232875d3123ed76e88d24c518a0e7f..709bac7b561d6b2c1196a79c7cdf68a6fb14e5c6 100644 --- a/entity/Campaign_entity/entityfields/status/valueProcess.js +++ b/entity/Campaign_entity/entityfields/status/valueProcess.js @@ -1,7 +1,10 @@ -import("KeywordRegistry_basic"); import("system.neon"); import("system.vars"); import("system.result"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) - result.string($KeywordRegistry.campaignState$planning); \ No newline at end of file +{ + result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignState(), $KeywordRegistry.campaignState$planning())); +} \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 0604749d96591ca6bcac5da852be07f170278f69..1fd447f2c7fd885bb1c2fa5c3de283de3e3acfb2 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -253,24 +253,12 @@ <fieldName>KeywordAttributeTypes</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>718fe5a2-c75f-49ed-b67e-fc4fbf63ff1d</name> - <entityName>Salesproject_entity</entityName> - <fieldName>KeywordProbabilties</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>a44375e9-917c-4db8-9aa8-de0625caf78f</name> <entityName>Activity_entity</entityName> <fieldName>KeywordCategories</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>f442a641-4dff-4860-bf4c-cfddc054e075</name> - <entityName>Offer_entity</entityName> - <fieldName>KeywordProbabilities</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>fa831dac-3287-422a-8f28-504fc525876a</name> <entityName>Communication_entity</entityName> diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index d03d338d99b497acd580e820f5cb8713eb9c53c1..89c126aae63a6c4ca813d6384d10c1c3c19d27df 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -75,12 +75,14 @@ <entityField> <name>PROBABILITY</name> <title>Probability</title> - <consumer>KeywordProbabilities</consumer> <contentType>NUMBER</contentType> + <maxValue v="100" /> + <minValue v="0" /> + <outputFormat>0.00'%'</outputFormat> <groupable v="true" /> + <dropDownProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>STATUS</name> @@ -344,21 +346,6 @@ <fieldName>ISO3Name</fieldName> </dependency> </entityConsumer> - <entityConsumer> - <name>KeywordProbabilities</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordprobabilities/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> <entityConsumer> <name>Activities</name> <dependency> @@ -1032,22 +1019,22 @@ <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/discounted_vat/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> - <name>Products</name> - <children> - <entityParameter> - <name>OrderOfferInformations_param</name> - <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/products/children/orderofferinformations_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ShownInOfferMainView_param</name> - <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/products/children/showninoffermainview_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - <dependency> - <name>dependency</name> - <entityName>Product_entity</entityName> - <fieldName>Products</fieldName> - </dependency> + <name>Products</name> + <dependency> + <name>dependency</name> + <entityName>Product_entity</entityName> + <fieldName>Products</fieldName> + </dependency> + <children> + <entityParameter> + <name>OrderOfferInformations_param</name> + <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/products/children/orderofferinformations_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ShownInOfferMainView_param</name> + <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/products/children/showninoffermainview_param/valueProcess.js</valueProcess> + </entityParameter> + </children> </entityConsumer> <entityActionGroup> <name>observeActionGroup</name> @@ -1235,10 +1222,6 @@ <name>STATUS.displayValue</name> <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PROBABILITY.displayValue</name> - <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PAYMENTTERMS.value</name> <recordfield>OFFER.PAYMENTTERMS</recordfield> @@ -1344,10 +1327,6 @@ <recordfield>OFFER.OFFERID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> - <aggregateFieldDbMapping> - <name>PROBABILITY_aggregate.value</name> - <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js</expression> - </aggregateFieldDbMapping> <dbRecordFieldMapping> <name>OFFER_ID.value</name> <recordfield>OFFER.OFFER_ID</recordfield> @@ -1368,6 +1347,11 @@ <name>DISCOUNTED_VAT.value</name> <recordfield>OFFER.DISCOUNTED_VAT</recordfield> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>PROBABILITY_aggregate.value</name> + <recordfield>OFFER.PROBABILITY</recordfield> + <aggregateType>AVG</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <linkInformation> <linkInformation> diff --git a/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js b/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js index e833fd2b232711df202d9d8fc5a8ce87a3437dcb..3eb3a981bf7b535d0a5452b4fac94a1f0a788cf1 100644 --- a/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js +++ b/entity/Offer_entity/entityfields/chosenaddress/valueProcess.js @@ -4,8 +4,7 @@ import("system.neon"); import("system.vars"); //the value of this field can also be changed by CONTACT_ID.onValueChange - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && vars.get("this.value") == null) { var defaultAddressId = ContactUtils.getDefaultAddressId(vars.get("$field.CONTACT_ID")); if (defaultAddressId) diff --git a/entity/Offer_entity/entityfields/contact_id/onValueChange.js b/entity/Offer_entity/entityfields/contact_id/onValueChange.js index 74fa8e077b78ed95d1e417ae9326c2ae2ff2d837..b4795cd6992949c03f9a7174a6b2c74bee969827 100644 --- a/entity/Offer_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Offer_entity/entityfields/contact_id/onValueChange.js @@ -6,8 +6,9 @@ import("system.db"); import("Util_lib"); import("Entity_lib"); import("Contact_lib"); +import("system.datetime"); -var contactid = vars.get("local.value"); +var contactid = vars.get("$local.value"); if(contactid != "") { //Language Preset @@ -16,22 +17,43 @@ if(contactid != "") .where("CONTACT.CONTACTID", contactid) .cell(); if(lang != "") - neon.setFieldValue("field.ISOLANGUAGE", lang); + { + neon.setFieldValue("$field.ISOLANGUAGE", lang); + } + //Address Preset var defaultAddressId = ContactUtils.getDefaultAddressId(contactid); if (defaultAddressId) { - neon.setFieldValue("field.ChosenAddress", defaultAddressId); - neon.setFieldValue("$field.ADDRESS", AddressUtils.getAddressById(defaultAddressId)); + neon.setFieldValue("$field.ChosenAddress", defaultAddressId); + neon.setFieldValue("$field.ADDRESS", AddressUtils.getAddressById(defaultAddressId)); } var addrobj = new AddrObject(contactid); var salutation = addrobj.getFormattedAddress(false, "{letter_salutation},"); if (salutation != "Err.,") + { neon.setFieldValue("field.LETTERSALUTATION", salutation); + } // set $field.CONTATCT_ORG_ID per contactid var orgid = ContactUtils.getPersOrgIds(contactid); neon.setFieldValue("$field.CONTACT_ORG_ID", orgid[2]); + + //Salesproject Preset + if(vars.get("$field.OBJECT_TYPE") == "Salesproject") + { + var today = datetime.today(); + var salesProjectId = newSelect("SALESPROJECT.SALESPROJECTID") + .from("SALESPROJECT") + .where("SALESPROJECT.CONTACT_ID", contactid) + .and(newWhere("SALESPROJECT.STARTDATE", today, SqlBuilder.GREATER_OR_EQUAL()).or("SALESPROJECT.STARTDATE is null")) + .cell(); + if(salesProjectId) + { + neon.setFieldValue("$field.OBJECT_ROWID", salesProjectId); + } + } + } else { @@ -39,7 +61,7 @@ else neon.setFieldValue("$field.ISOLANGUAGE", ""); } -if(!vars.get("$param.ObjectRowId_param")) +if(!vars.get("$param.ObjectRowId_param") && !(vars.get("$field.OBJECT_TYPE") == "Salesproject" && vars.get("$field.OBJECT_ROWID"))) { neon.setFieldValue("$field.OBJECT_ROWID", ""); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/keywordprobabilities/children/containername_param/valueProcess.js b/entity/Offer_entity/entityfields/keywordprobabilities/children/containername_param/valueProcess.js deleted file mode 100644 index 5201e2bd086a135a79c013249a4e96128c326955..0000000000000000000000000000000000000000 --- a/entity/Offer_entity/entityfields/keywordprobabilities/children/containername_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.offerProbability()); diff --git a/entity/Offer_entity/entityfields/neworder/onActionProcess.js b/entity/Offer_entity/entityfields/neworder/onActionProcess.js index dbaec31a9aeba19cb139de45ab7bb2a7c975d943..4caa7f1855881b334607e4424879d882f87f31b0 100644 --- a/entity/Offer_entity/entityfields/neworder/onActionProcess.js +++ b/entity/Offer_entity/entityfields/neworder/onActionProcess.js @@ -9,6 +9,7 @@ var currency = vars.getString("$field.CURRENCY"); var language = vars.getString("$field.ISOLANGUAGE"); var address = vars.getString("$field.ADDRESS"); var offerId = vars.getString("$field.OFFERID"); +var discount = vars.getString("$field.DISCOUNT"); -OfferUtils.copyToOrder(offerId, pContext, pRowId, contactId, language, currency, address); +OfferUtils.copyToOrder(offerId, pContext, pRowId, contactId, language, currency, address, discount); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/probability/displayValueProcess.js b/entity/Offer_entity/entityfields/probability/displayValueProcess.js deleted file mode 100644 index 888f3e80c6b6961d0e3b7caf8820bc54a7f17cba..0000000000000000000000000000000000000000 --- a/entity/Offer_entity/entityfields/probability/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.offerProbability(), vars.get("$field.PROBABILITY"))); diff --git a/entity/Offer_entity/entityfields/probability/dropDownProcess.js b/entity/Offer_entity/entityfields/probability/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0ce6525ee92048543d83d251c2b289e710aa5e01 --- /dev/null +++ b/entity/Offer_entity/entityfields/probability/dropDownProcess.js @@ -0,0 +1,9 @@ +import("system.result"); + +result.object([ + ["0.00", "0%"], + ["25.00", "25%"], + ["50.00", "50%"], + ["75.00", "75%"], + ["100.00", "100%"] +]); diff --git a/entity/Offer_entity/entityfields/probability/valueProcess.js b/entity/Offer_entity/entityfields/probability/valueProcess.js index 410c669a772468381243551aa7d9577c25f4d07c..ad82690b022e8c95df71cc2a924d30b643efcacc 100644 --- a/entity/Offer_entity/entityfields/probability/valueProcess.js +++ b/entity/Offer_entity/entityfields/probability/valueProcess.js @@ -1,13 +1,8 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("AttributeRegistry_basic"); import("system.neon"); import("system.result"); import("system.vars"); -import("Attribute_lib"); -import("Contact_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { - result.string(KeywordUtils.getFirst($KeywordRegistry.offerProbability())); + result.string("0.00"); } \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js deleted file mode 100644 index e9591dca90a38b8354700b428504eec663a4afeb..0000000000000000000000000000000000000000 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerProbability(), "OFFER.PROBABILITY"); -result.string(sql); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js deleted file mode 100644 index 25f76f180180bfc8602cee9566751078ba280678..0000000000000000000000000000000000000000 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.SQLTYPES"); -import("system.result"); -import("Sql_lib"); - -var helper = new SqlMaskingUtils(); -result.string("AVG("+ helper.cast("OFFER.PROBABILITY", SQLTYPES.INTEGER) + ")"); \ No newline at end of file diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index ad9892139f1fd85ceec66e62b2b6d490095a13b0..f9d3dd60f06a287133e98358fda08d724f3316c6 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -87,6 +87,7 @@ <title>Total VAT</title> <contentType>NUMBER</contentType> <state>READONLY</state> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/vat/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/vat/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -108,6 +109,11 @@ <entityConsumer> <name>Orderitems</name> <description></description> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> <children> <entityParameter> <name>OrderId_param</name> @@ -132,12 +138,11 @@ <expose v="true" /> <mandatory v="true" /> </entityParameter> + <entityParameter> + <name>Discount_param</name> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderitems/children/discount_param/valueProcess.js</valueProcess> + </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> </entityConsumer> <entityField> <name>NET</name> @@ -199,6 +204,11 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -209,15 +219,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -228,28 +238,28 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Salesprojects</name> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>KeywordCurrencies</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -257,14 +267,14 @@ <expose v="false" /> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -272,11 +282,6 @@ <expose v="false" /> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -295,6 +300,11 @@ </entityParameter> <entityConsumer> <name>Activities</name> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -309,11 +319,6 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> </entityConsumer> <entityField> <name>OFFER_ID</name> @@ -327,6 +332,11 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -341,15 +351,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -360,15 +370,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -379,25 +389,20 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>LogHistories</name> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>ORDERTYPE</name> @@ -473,31 +478,31 @@ </entityField> <entityConsumer> <name>KeywordOrderTypes</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityField> <name>OBJECT_ROWID</name> @@ -525,6 +530,11 @@ </entityField> <entityConsumer> <name>Objects</name> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -535,14 +545,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>Contexts</name> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -553,11 +563,6 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> </entityConsumer> <entityParameter> <name>PossibleConnectionTypes</name> @@ -610,46 +615,46 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerms</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>PossibleAddresses</name> <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> </entityConsumer> <entityField> <name>NOTICE</name> @@ -666,20 +671,25 @@ </entityField> <entityConsumer> <name>Offers</name> + <dependency> + <name>dependency</name> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> + </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> </entityConsumer> <entityConsumer> <name>DocumentTemplateTexHeader</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -690,14 +700,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> <dependency> <name>dependency</name> <entityName>DocumentTemplate_entity</entityName> <fieldName>DocumentTemplateProvider</fieldName> </dependency> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -708,11 +718,6 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> </entityConsumer> <entityField> <name>ChosenTexHeader</name> @@ -957,6 +962,11 @@ </entityActionField> <entityConsumer> <name>Products</name> + <dependency> + <name>dependency</name> + <entityName>Product_entity</entityName> + <fieldName>Products</fieldName> + </dependency> <children> <entityParameter> <name>OrderOfferInformations_param</name> @@ -967,12 +977,47 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/products/children/showninordermainview_param/valueProcess.js</valueProcess> </entityParameter> </children> - <dependency> - <name>dependency</name> - <entityName>Product_entity</entityName> - <fieldName>Products</fieldName> - </dependency> </entityConsumer> + <entityField> + <name>DISCOUNT</name> + <title>Discount</title> + <contentType>NUMBER</contentType> + <outputFormat>0.00'%'</outputFormat> + <inputFormat>0.00</inputFormat> + <valueProcess>%aditoprj%/entity/Order_entity/entityfields/discount/valueProcess.js</valueProcess> + <onValueChange>%aditoprj%/entity/Order_entity/entityfields/discount/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + <onValidation>%aditoprj%/entity/Order_entity/entityfields/discount/onValidation.js</onValidation> + </entityField> + <entityField> + <name>DISCOUNTED_NET</name> + <title>discounted Price</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + <inputFormat>#,##0.00</inputFormat> + <state>READONLY</state> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/discounted_net/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/discounted_net/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>DISCOUNTED_VAT</name> + <title>discounted Vat</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + <inputFormat>#,##0.00</inputFormat> + <state>READONLY</state> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/discounted_vat/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/discounted_vat/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>DiscountChanged</name> + </entityField> + <entityParameter> + <name>Discount_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> @@ -1185,6 +1230,18 @@ <recordfield>SALESORDER.INFO</recordfield> <isFilterable v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DISCOUNT.value</name> + <recordfield>SALESORDER.DISCOUNT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DISCOUNTED_NET.value</name> + <recordfield>SALESORDER.DISCOUNTED_NET</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DISCOUNTED_VAT.value</name> + <recordfield>SALESORDER.DISCOUNTED_VAT</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> <linkInformation> <linkInformation> diff --git a/entity/Order_entity/entityfields/contact_id/onValueChange.js b/entity/Order_entity/entityfields/contact_id/onValueChange.js index b0695547e1c2b02e41ad59aa861999bd9747ca51..87c7d317e21e3ee037a3e97de36109bf8b378b2a 100644 --- a/entity/Order_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Order_entity/entityfields/contact_id/onValueChange.js @@ -1,7 +1,42 @@ +import("PostalAddress_lib"); +import("Sql_lib"); +import("system.datetime"); import("system.neon"); import("system.vars"); import("Contact_lib"); +var contactId = vars.get("$local.value"); -neon.setFieldValue("$field.ChosenPaymentAddress", ContactUtils.getDefaultAddressId(vars.get("local.value"))); -neon.setFieldValue("$field.ChosenDeliveryAddress", ContactUtils.getDefaultAddressId(vars.get("local.value"))); \ No newline at end of file +neon.setFieldValue("$field.ChosenPaymentAddress", ContactUtils.getDefaultAddressId(contactId)); +neon.setFieldValue("$field.ChosenDeliveryAddress", ContactUtils.getDefaultAddressId(contactId)); + +if(contactId != "") +{ + //Language Preset + var lang = newSelect("ISOLANGUAGE") + .from("CONTACT") + .where("CONTACT.CONTACTID", contactId) + .cell(); + if(lang != "") + neon.setFieldValue("field.ISOLANGUAGE", lang); + + //Address Preset + var defaultAddressId = ContactUtils.getDefaultAddressId(contactId); + if (defaultAddressId) + { + neon.setFieldValue("$field.ChosenPaymentAddress", defaultAddressId); + neon.setFieldValue("$field.PAYMENTADDRESS", AddressUtils.getAddressById(defaultAddressId)); + neon.setFieldValue("$field.ChosenDeliveryAddress", defaultAddressId); + neon.setFieldValue("$field.DELIVERYADDRESS", AddressUtils.getAddressById(defaultAddressId)); + } + + //Salesproject Preset + var today = datetime.today(); + var salesProjectId = newSelect("SALESPROJECT.SALESPROJECTID") + .from("SALESPROJECT") + .where("SALESPROJECT.CONTACT_ID", contactId) + .and(newWhere("SALESPROJECT.STARTDATE", today, SqlBuilder.GREATER_OR_EQUAL()).or("SALESPROJECT.STARTDATE is null")) + .cell(); + if(salesProjectId) + neon.setFieldValue("$field.OBJECT_ROWID", salesProjectId); +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/copyorder/onActionProcess.js b/entity/Order_entity/entityfields/copyorder/onActionProcess.js index 57c33c7f0149a55843b44c007ac0c13ab4645ede..08aa313af34c0b6b2a2f65389221f8a893139fc7 100644 --- a/entity/Order_entity/entityfields/copyorder/onActionProcess.js +++ b/entity/Order_entity/entityfields/copyorder/onActionProcess.js @@ -23,7 +23,8 @@ var fieldValues = { dunningLevel: vars.getString("$field.DUNNINGLEVEL"), orderType: vars.getString("$field.ORDERTYPE"), cancellation: vars.getString("$field.CANCELLATION"), - orderStatus:vars.getString("$field.ORDERSTATUS") + orderStatus:vars.getString("$field.ORDERSTATUS"), + discount:vars.getString("$field.DISCOUNT") }; OrderUtils.copyOrder(orderId, fieldValues); diff --git a/entity/Order_entity/entityfields/discount/onValidation.js b/entity/Order_entity/entityfields/discount/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..a4f36ca91dd7ba266045b1623af7f1e934044812 --- /dev/null +++ b/entity/Order_entity/entityfields/discount/onValidation.js @@ -0,0 +1,12 @@ +import("system.result"); +import("system.vars"); +import("Util_lib"); +import("Entity_lib"); + +var value = vars.get("local.value"); +var validationResult = NumberUtils.validateIsBetweenFloat("Discount", value, 0, 100); + +if (validationResult) +{ + result.string(validationResult); +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/discount/onValueChange.js b/entity/Order_entity/entityfields/discount/onValueChange.js new file mode 100644 index 0000000000000000000000000000000000000000..5fc7651884946ad0f59a3f5c51b5bb93f0505c30 --- /dev/null +++ b/entity/Order_entity/entityfields/discount/onValueChange.js @@ -0,0 +1,5 @@ +import("system.neon"); +import("system.vars"); +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon. OPERATINGSTATE_EDIT){ + neon.setFieldValue("$field.DiscountChanged", "true"); +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/discount/valueProcess.js b/entity/Order_entity/entityfields/discount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..fa96d16798f8258f091583613760f918dc4a8126 --- /dev/null +++ b/entity/Order_entity/entityfields/discount/valueProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Discount_param") + && vars.get("$param.Discount_param")){ + result.string(vars.get("$param.Discount_param")); +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/discounted_net/displayValueProcess.js b/entity/Order_entity/entityfields/discounted_net/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c7473e812c66616164442674dc87bdd5282dc50d --- /dev/null +++ b/entity/Order_entity/entityfields/discounted_net/displayValueProcess.js @@ -0,0 +1,6 @@ +import("Util_lib"); +import("system.vars"); +import("system.translate"); +import("system.result"); + +result.string(NumberUtils.formatWithCurrency(vars.get("$field.DISCOUNTED_NET"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/discounted_net/stateProcess.js b/entity/Order_entity/entityfields/discounted_net/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..73fcdafe7c5bd47935d3f961a106bd995308316b --- /dev/null +++ b/entity/Order_entity/entityfields/discounted_net/stateProcess.js @@ -0,0 +1,14 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); + +var discount = vars.get("$field.DISCOUNT"); + +if(parseInt(discount) == 0 || !discount) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_READONLY); +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/discounted_vat/displayValueProcess.js b/entity/Order_entity/entityfields/discounted_vat/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..730396f16084a8c954d9cd54640efdd758e8cb52 --- /dev/null +++ b/entity/Order_entity/entityfields/discounted_vat/displayValueProcess.js @@ -0,0 +1,6 @@ +import("Util_lib"); +import("system.vars"); +import("system.translate"); +import("system.result"); + +result.string(NumberUtils.formatWithCurrency(vars.get("$field.DISCOUNTED_VAT"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/discounted_vat/stateProcess.js b/entity/Order_entity/entityfields/discounted_vat/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..73fcdafe7c5bd47935d3f961a106bd995308316b --- /dev/null +++ b/entity/Order_entity/entityfields/discounted_vat/stateProcess.js @@ -0,0 +1,14 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); + +var discount = vars.get("$field.DISCOUNT"); + +if(parseInt(discount) == 0 || !discount) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_READONLY); +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/orderitems/children/discount_param/valueProcess.js b/entity/Order_entity/entityfields/orderitems/children/discount_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d4bcbd3537e07fda683ae496cd386d37657089d7 --- /dev/null +++ b/entity/Order_entity/entityfields/orderitems/children/discount_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.DISCOUNT")); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/totalgross/valueProcess.js b/entity/Order_entity/entityfields/totalgross/valueProcess.js index 6e374c8f50a610ed0f50b89319726224167631d0..2177ad85cf1f90944d9ef3dc5f5f546dda75c990 100644 --- a/entity/Order_entity/entityfields/totalgross/valueProcess.js +++ b/entity/Order_entity/entityfields/totalgross/valueProcess.js @@ -2,7 +2,8 @@ import("system.result"); import("system.vars"); import("system.eMath"); -var netValue = vars.get("$field.NET"); -var vatValue = vars.get("$field.VAT"); +var discount = vars.get("$field.DISCOUNT"); +var netValue = discount && parseInt(discount) != 0 ? vars.get("$field.DISCOUNTED_NET") : vars.get("$field.NET"); +var vatValue = discount && parseInt(discount) != 0 ? vars.get("$field.DISCOUNTED_VAT") : vars.get("$field.VAT"); -result.string( eMath.addDec(netValue, vatValue) ); \ No newline at end of file +result.string(eMath.addDec(netValue, vatValue)); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/transferdeliverynote/onActionProcess.js b/entity/Order_entity/entityfields/transferdeliverynote/onActionProcess.js index d45901068c7376e9d81aa1f6d8998326c3de4d43..c9992080475e9d6cd0f950b670f8079072395fb5 100644 --- a/entity/Order_entity/entityfields/transferdeliverynote/onActionProcess.js +++ b/entity/Order_entity/entityfields/transferdeliverynote/onActionProcess.js @@ -4,23 +4,27 @@ import("Order_lib"); import("Keyword_lib"); import("KeywordRegistry_basic"); -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); -var offerId = vars.getString("$field.OFFER_ID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var deliveryAddress = vars.getString("$field.DELIVERYADDRESS"); -var paymentAddress = vars.getString("$field.PAYMENTADDRESS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); -var dunningDate = vars.getString("$field.DUNNINGDATE"); -var dunningLevel = vars.getString("$field.DUNNINGLEVEL"); -var orderType= $KeywordRegistry.orderType$deliverynote(); -var cancellation= vars.getString("$field.CANCELLATION"); -var orderStatus=vars.getString("$field.ORDERSTATUS"); -OrderUtils.copyOrder(offerId, contactId, orderType, language, currency, header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, rowId, dunningDate, dunningLevel, cancellation, orderStatus); - \ No newline at end of file +var orderId = vars.get("$field.SALESORDERID"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + currency: vars.getString("$field.CURRENCY"), + language: vars.getString("$field.ISOLANGUAGE"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + offerId: vars.getString("$field.OFFER_ID"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + paymentAddress: vars.getString("$field.PAYMENTADDRESS"), + deliveryAddress: vars.getString("$field.DELIVERYADDRESS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE"), + dunningDate: vars.getString("$field.DUNNINGDATE"), + dunningLevel: vars.getString("$field.DUNNINGLEVEL"), + orderType: $KeywordRegistry.orderType$deliverynote(), + cancellation: vars.getString("$field.CANCELLATION"), + orderStatus:vars.getString("$field.ORDERSTATUS"), + discount:vars.getString("$field.DISCOUNT") +}; + +OrderUtils.copyOrder(orderId, fieldValues); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/transferinvoice/onActionProcess.js b/entity/Order_entity/entityfields/transferinvoice/onActionProcess.js index 8c722274346b912365e016e416bdf8548cf26234..85054a19bf5183650c8b136f844dd133934e998b 100644 --- a/entity/Order_entity/entityfields/transferinvoice/onActionProcess.js +++ b/entity/Order_entity/entityfields/transferinvoice/onActionProcess.js @@ -4,22 +4,27 @@ import("Order_lib"); import("Keyword_lib"); import("KeywordRegistry_basic"); -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); -var offerId = vars.getString("$field.OFFER_ID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var deliveryAddress = vars.getString("$field.DELIVERYADDRESS"); -var paymentAddress = vars.getString("$field.PAYMENTADDRESS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); -var dunningDate = vars.getString("$field.DUNNINGDATE"); -var dunningLevel = vars.getString("$field.DUNNINGLEVEL"); -var orderType= $KeywordRegistry.orderType$invoice(); -var cancellation= vars.getString("$field.CANCELLATION"); -var orderStatus=vars.getString("$field.ORDERSTATUS"); -OrderUtils.copyOrder(offerId, contactId, orderType, language, currency, header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, rowId, dunningDate, dunningLevel, cancellation, orderStatus); \ No newline at end of file +var orderId = vars.get("$field.SALESORDERID"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + currency: vars.getString("$field.CURRENCY"), + language: vars.getString("$field.ISOLANGUAGE"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + offerId: vars.getString("$field.OFFER_ID"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + paymentAddress: vars.getString("$field.PAYMENTADDRESS"), + deliveryAddress: vars.getString("$field.DELIVERYADDRESS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE"), + dunningDate: vars.getString("$field.DUNNINGDATE"), + dunningLevel: vars.getString("$field.DUNNINGLEVEL"), + orderType: $KeywordRegistry.orderType$invoice(), + cancellation: vars.getString("$field.CANCELLATION"), + orderStatus:vars.getString("$field.ORDERSTATUS"), + discount:vars.getString("$field.DISCOUNT") +}; + +OrderUtils.copyOrder(orderId, fieldValues); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/vat/stateProcess.js b/entity/Order_entity/entityfields/vat/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..58cd7c749ad71ae22fb4df03fbd71aed82ed7b6e --- /dev/null +++ b/entity/Order_entity/entityfields/vat/stateProcess.js @@ -0,0 +1,14 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +var discount = vars.get("$field.DISCOUNT"); + +if(discount && parseInt(discount) != 0) +{ + result.string(neon.COMPONENTSTATE_INVISIBLE); +} +else +{ + result.string(neon.COMPONENTSTATE_READONLY); +} \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js index bd3c2bb14b920b17de3b9bfba245f260f445b66d..3815f3cacf937dcf70ea327686f39f7a066140dc 100644 --- a/entity/Order_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js @@ -1,14 +1,23 @@ +import("Offer_lib"); import("Workflow_lib"); import("Order_lib"); import("system.neon"); import("system.vars"); //@TODO: OfferId_param is also set by 'copy order' -> the items of the offer are copied. What should happen? +var rowdata = vars.get("$local.rowdata"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { - if (vars.exists("$param.OfferId_param") && vars.get("$param.OfferId_param")) - OrderUtils.copyOfferItemsToOrder(vars.get("$param.OfferId_param"), vars.get("$local.uid")); + var discount = rowdata["OFFER.DISCOUNT"]; + if (vars.get("$param.OfferId_param") || vars.get("$field.OFFER_ID")) + { + let offerId = vars.get("$param.OfferId_param") || vars.get("$field.OFFER_ID"); + OrderUtils.copyOfferItemsToOrder(offerId, vars.get("$local.uid"), discount); + } if (vars.exists("$param.SourceOrderId_param") && vars.get("$param.SourceOrderId_param")) - OrderUtils.copyOrderItems(vars.get("$param.SourceOrderId_param"), vars.get("$local.uid")); + { + OrderUtils.copyOrderItems(vars.get("$param.SourceOrderId_param"), vars.get("$local.uid"), discount); + } } + WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/onDBUpdate.js b/entity/Order_entity/recordcontainers/db/onDBUpdate.js index 2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee..de5f68bc141ec452ccbfc58ab1a6762919698d5a 100644 --- a/entity/Order_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Order_entity/recordcontainers/db/onDBUpdate.js @@ -1,3 +1,38 @@ +import("Order_lib"); +import("system.entities"); +import("system.vars"); import("Workflow_lib"); +var rowdata = vars.get("$local.rowdata"); +var oid = rowdata["SALESORDER.SALESORDERID"]; + +if(vars.get("$field.DiscountChanged") == "true" && oid){ + var discount = rowdata["SALESORDER.DISCOUNT"]; + var oiUtils = new OrderItemUtils(oid); + + var vals = oiUtils.getNetAndVat(); + var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount); + + let config = entities.createConfigForUpdatingRows(); + config.entity("Order_entity"); + if(discountedVals){ + config.fieldValues({ + "NET": vals[0], + "VAT": vals[1], + "DISCOUNTED_NET": discountedVals[0], + "DISCOUNTED_VAT": discountedVals[1] + }); + } + else + { + config.fieldValues({ + "NET": vals[0], + "VAT": vals[1] + }); + } + + config.uid(oid); + entities.updateRow(config); + +} WorkflowSignalSender.updated(); \ No newline at end of file diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod index a13602e73007dc54da4338f78b349e91415c0e0e..11dd85372cf2c28d72012ade4ff7def203fa3874 100644 --- a/entity/Orderitem_entity/Orderitem_entity.aod +++ b/entity/Orderitem_entity/Orderitem_entity.aod @@ -243,6 +243,10 @@ <name>ProductId_param</name> <expose v="true" /> </entityParameter> + <entityParameter> + <name>Discount_param</name> + <expose v="true" /> + </entityParameter> <entityActionGroup> <name>group</name> <children> diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js b/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js index 6fdaf11a98f6cbbe12ed2e89a69b169a8c6e6db2..23d5cc030038257a4b6ef7d593867dd0a5a851fd 100644 --- a/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,4 @@ +import("system.entities"); import("system.datetime"); import("system.neon"); import("system.vars"); @@ -15,14 +16,34 @@ if(oid != "") { var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : ""; - var oiUtils = new OrderItemUtils(rowdata["SALESORDERITEM.SALESORDER_ID"]); + var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): ""; + var oiUtils = new OrderItemUtils(oid); oiUtils.insertPartsList(rowdata["SALESORDERITEM.PRODUCT_ID"], vars.get("$local.uid"), curr, contactid, vars.get("$param.Language_param")); oiUtils.reOrgItems(); //update order price - var cols = ["NET", "VAT"]; var vals = oiUtils.getNetAndVat(); + var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount); - newWhere("SALESORDER.SALESORDERID", oid) - .updateData(true, "SALESORDER", cols, null, vals); -} + let config = entities.createConfigForUpdatingRows() + config.entity("Order_entity"); + + if(discountedVals){ + config.fieldValues({ + "NET": vals[0], + "VAT": vals[1], + "DISCOUNTED_NET": discountedVals[0], + "DISCOUNTED_VAT": discountedVals[1] + }); + } + else + { + config.fieldValues({ + "NET": vals[0], + "VAT": vals[1] + }); + + } + config.uid(oid); + entities.updateRow(config); +} \ No newline at end of file diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js index 62ae2c66e33bb89cdbcc1c99fe8a0d6df93bd283..a763dd4a6bcb8cc0232ef42817f0d777f5cab1ec 100644 --- a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js @@ -1,3 +1,4 @@ +import("system.entities"); import("system.vars"); import("system.db"); import("system.neon"); @@ -7,10 +8,29 @@ import("Sql_lib"); var oid = vars.get("$local.rowdata")["SALESORDERITEM.SALESORDER_ID"]; if(oid != "") { - var cols = ["NET", "VAT"]; + var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): ""; var oiUtils = new OrderItemUtils(oid); var vals = oiUtils.getNetAndVat(); + var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount); - newWhere("SALESORDER.SALESORDERID", oid) - .updateData(true, "SALESORDER", cols, null, vals); + let config = entities.createConfigForUpdatingRows() + config.entity("Order_entity"); + + if(discountedVals){ + config.fieldValues({ + "NET": vals[0], + "VAT": vals[1], + "DISCOUNTED_NET": discountedVals[0], + "DISCOUNTED_VAT": discountedVals[1] + }); + } + else + { + config.fieldValues({ + "NET": vals[0], + "VAT": vals[1] + }); + } + config.uid(oid); + entities.updateRow(config); } \ No newline at end of file diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 32ad155d4473c1621475321e718f8af1d08e71be..c75679705aabe4204eebe96948fae4b0e356a9dd 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -64,7 +64,6 @@ <mandatory v="true" /> <stateProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/stateProcess.js</stateProcess> <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>CONTACT_ID</name> @@ -324,6 +323,10 @@ <name>FROMQUANTITY.displayValue</name> <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PRODUCT_ID.displayValue</name> + <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <linkInformation> <linkInformation> diff --git a/entity/Productprice_entity/entityfields/product_id/displayValueProcess.js b/entity/Productprice_entity/entityfields/product_id/displayValueProcess.js deleted file mode 100644 index 62dfdaf791091cabb2983bad7ed5f34dd09272ba..0000000000000000000000000000000000000000 --- a/entity/Productprice_entity/entityfields/product_id/displayValueProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("system.result"); -import("system.db"); -import("Sql_lib"); - -// TODO: Wenn es möglich ist, den anzeigenamen des Produkts über die Entity beziehung zu laden, dann umbauen...!!! -result.string(newSelect("PRODUCTNAME") - .from("PRODUCT") - .whereIfSet("PRODUCT.PRODUCTID", "$field.PRODUCT_ID") - .cell(true)); \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/vat/valueProcess.js b/entity/Productprice_entity/entityfields/vat/valueProcess.js index 20e9d87a63c30b2ad2bf4937fcf74160202978c8..543a56a83e80c0367a2e74f7a5460cf30660a3c1 100644 --- a/entity/Productprice_entity/entityfields/vat/valueProcess.js +++ b/entity/Productprice_entity/entityfields/vat/valueProcess.js @@ -2,14 +2,18 @@ import("Product_lib"); import("system.vars"); import("system.result"); import("system.neon"); +import("system.project"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { + var defaultVAT = project.getPreferenceValue("custom.sales.vat", "0"); if (vars.get("$field.PRODUCT_ID")) { var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCT_ID"), "SP", true); - result.string(price[2] || "0"); + result.string(price[2] || defaultVAT); } else - result.string("0"); -} \ No newline at end of file + { + result.string(defaultVAT); + } +} diff --git a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..cbc5d9d359d33fe622b4e9052b1038a67111ffdb --- /dev/null +++ b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("system.result"); + +result.string("select PRODUCTNAME from PRODUCT \n\ + where PRODUCT.PRODUCTID = PRODUCTPRICE.PRODUCT_ID"); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index bcfcc3b972f3bdd1ccc586d49c2ed66fbad84d63..d463af5044cad07e970d56230d13fe5ee1860c1d 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -139,9 +139,12 @@ <entityField> <name>PROBABILITY</name> <title>Probability</title> - <consumer>KeywordProbabilties</consumer> + <contentType>NUMBER</contentType> + <maxValue v="100" /> + <minValue v="0" /> + <outputFormat>0.00'%'</outputFormat> <groupable v="true" /> - <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js</displayValueProcess> + <dropDownProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/dropDownProcess.js</dropDownProcess> </entityField> <entityConsumer> <name>SalesprojectSources</name> @@ -367,22 +370,6 @@ </entityParameter> </children> </entityConsumer> - <entityConsumer> - <name>KeywordProbabilties</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - <title></title> - </entityParameter> - </children> - </entityConsumer> <entityConsumer> <name>KeywordStates</name> <dependency> @@ -871,6 +858,16 @@ <iconId>VAADIN:CURLY_BRACKETS</iconId> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/openadminview/stateProcess.js</stateProcess> </entityActionField> + <entityAggregateField> + <name>PROBABILITY_aggregate</name> + <parentField>PROBABILITY</parentField> + <title>Ø Probability</title> + </entityAggregateField> + <entityAggregateField> + <name>VOLUME_aggregate</name> + <parentField>VOLUME</parentField> + <title>Volume</title> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -945,10 +942,6 @@ <name>CONTACT_ID.displayValue</name> <recordfield>ORGANISATION.NAME</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PROBABILITY.displayValue</name> - <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PHASE.displayValue</name> <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js</expression> @@ -1009,6 +1002,16 @@ <name>ACTIVE.value</name> <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>VOLUME_aggregate.value</name> + <recordfield>SALESPROJECT.VOLUME</recordfield> + <aggregateType>SUM</aggregateType> + </aggregateFieldDbMapping> + <aggregateFieldDbMapping> + <name>PROBABILITY_aggregate.value</name> + <recordfield>SALESPROJECT.PROBABILITY</recordfield> + <aggregateType>AVG</aggregateType> + </aggregateFieldDbMapping> </recordFieldMappings> <linkInformation> <linkInformation> diff --git a/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/valueProcess.js b/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/valueProcess.js deleted file mode 100644 index ac59463181f9370f389bb466248fb9696b50449d..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.salesprojectProbability()); diff --git a/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js b/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js deleted file mode 100644 index 883b399d257f7806caa70c5004c07847d77163e9..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectProbability(), vars.get("$field.PROBABILITY"))); diff --git a/entity/Salesproject_entity/entityfields/probability/dropDownProcess.js b/entity/Salesproject_entity/entityfields/probability/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0ce6525ee92048543d83d251c2b289e710aa5e01 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/probability/dropDownProcess.js @@ -0,0 +1,9 @@ +import("system.result"); + +result.object([ + ["0.00", "0%"], + ["25.00", "25%"], + ["50.00", "50%"], + ["75.00", "75%"], + ["100.00", "100%"] +]); diff --git a/entity/Salesproject_entity/entityfields/projecttitle/valueProcess.js b/entity/Salesproject_entity/entityfields/projecttitle/valueProcess.js index 9753cbeb1be78e2dfe22996ff2da440325580ef4..da045df984042ff2f93d1b1174827862a7e825c9 100644 --- a/entity/Salesproject_entity/entityfields/projecttitle/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/projecttitle/valueProcess.js @@ -2,5 +2,5 @@ import("system.neon"); import("system.vars"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.PresetTitle_param")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.PresetTitle_param") && !vars.get("$this.value")) result.string(vars.get("$param.PresetTitle_param")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js deleted file mode 100644 index f5ef49dc97e054a1378a98f5cf434622dd068c45..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectProbability(), "SALESPROJECT.PROBABILITY"); -result.string(sql); diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 1afd8f40e37c8b1f742a131679a3769426a24d06..10640fbd76559db3afd6f39c4dbb01949eb0e493 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6735,7 +6735,7 @@ </entry> <entry> <key>Choose payment address</key> - <value>Zahlungsadresse auswählen</value> + <value>Rechnungsadresse auswählen</value> </entry> <entry> <key>Paid</key> @@ -9307,7 +9307,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>%0 new participants will be added to the campaign.</key> - <value>Der Kampagne werden %0 neue Empfänger hinzugefügt.</value> + <value>Der Kampagne werden %0 neue Teilnehmer hinzugefügt.</value> </entry> <entry> <key>%0 of the chosen records are already recipients or don't have an e-mail set</key> @@ -10644,6 +10644,10 @@ Bitte Datumseingabe prüfen</value> <entry> <key>HTML Editor</key> </entry> + <entry> + <key>Participant is already participating</key> + <value>Teilnehmer nimmt bereits teil.</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index 57dc7485b7ab4a0cf110be281c8993df2c7663ec..92def56f1a35869471d27551d86b8e0b6362c374 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -8,6 +8,7 @@ <filterView>SalesprojectFilter_view</filterView> <editView>SalesprojectEdit_view</editView> <previewView>SalesprojectPreview_view</previewView> + <previewMultipleView>SalesprojectPreviewMultiple_view</previewMultipleView> <lookupView>SalesprojectFilter_view</lookupView> <entity>Salesproject_entity</entity> <references> @@ -75,5 +76,9 @@ <name>b50928ae-ad07-40ea-87e7-4f82daf9715c</name> <view>SalesprojectActivity_view</view> </neonViewReference> + <neonViewReference> + <name>407d9b32-c379-428b-b1e1-d92a820971fd</name> + <view>SalesprojectPreviewMultiple_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/OrderEdit_view/OrderEdit_view.aod b/neonView/OrderEdit_view/OrderEdit_view.aod index 576ed09e070e3a3a4006d823f10de1c2cd198487..7ad8037635ed21259aab3e15150b9adc86152afa 100644 --- a/neonView/OrderEdit_view/OrderEdit_view.aod +++ b/neonView/OrderEdit_view/OrderEdit_view.aod @@ -44,6 +44,10 @@ <name>64cb7376-3a7c-4ce9-99e8-e70bc91b41d0</name> <entityField>CURRENCY</entityField> </entityFieldLink> + <entityFieldLink> + <name>9f357666-930f-41c5-81dc-c5bf1e57aced</name> + <entityField>DISCOUNT</entityField> + </entityFieldLink> <entityFieldLink> <name>5b75296a-a0c0-469e-a9ab-2f279c4fca48</name> <entityField>ISOLANGUAGE</entityField> diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod index 8710a68db4050c688bf06956d5603a725dd7fec9..b29cb9ac7650c362802bf6a09ced75f3d339bcf4 100644 --- a/neonView/OrderPreview_view/OrderPreview_view.aod +++ b/neonView/OrderPreview_view/OrderPreview_view.aod @@ -43,6 +43,10 @@ <name>1be56d96-0a47-4895-a73f-2e01855da628</name> <entityField>ISOLANGUAGE</entityField> </entityFieldLink> + <entityFieldLink> + <name>65f77f9f-1117-4cf9-8711-95166ca80a1f</name> + <entityField>DISCOUNT</entityField> + </entityFieldLink> <entityFieldLink> <name>fecf7457-825d-40a3-b330-bace7ed75ddc</name> <entityField>DUNNINGDATE</entityField> @@ -75,10 +79,18 @@ <name>d7ca2b66-5e7a-4951-a89b-fbeab0f4f798</name> <entityField>NET</entityField> </entityFieldLink> + <entityFieldLink> + <name>4baf8275-e96d-4b26-9808-17fc1e515134</name> + <entityField>DISCOUNTED_NET</entityField> + </entityFieldLink> <entityFieldLink> <name>c50dec3f-5468-4196-be88-a413ae3947de</name> <entityField>VAT</entityField> </entityFieldLink> + <entityFieldLink> + <name>2b919444-e34e-4f89-9894-8916da00a709</name> + <entityField>DISCOUNTED_VAT</entityField> + </entityFieldLink> <entityFieldLink> <name>43972a26-67f7-4fb5-9107-111731d326af</name> <entityField>TotalGross</entityField> diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod index 0a0b6d9d563c258bef7bd4ec2435fb2598d8aa0f..8149fa636066fe7f47e27e290d848834dcc53e1c 100644 --- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod +++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod @@ -43,9 +43,6 @@ <name>2b38de6e-85de-479c-99fd-27ff0d2e1c33</name> <entityField>DISCOUNT</entityField> </entityFieldLink> - <entityFieldLink> - <name>242825ab-fd74-4be5-b8c8-bf945a501494</name> - </entityFieldLink> <entityFieldLink> <name>ff49cd49-d539-4c43-b9c7-822360ae6881</name> <entityField>TotalPrice</entityField> diff --git a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod index f2c8a1df6c9a02c7e097ec3a1d42cf388491f381..ccbae0155b998c96d98076d0597ea1652664d847 100644 --- a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod +++ b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod @@ -46,9 +46,6 @@ <name>e679761b-c004-4bd8-940c-b12e8b209762</name> <entityField>DISCOUNT</entityField> </entityFieldLink> - <entityFieldLink> - <name>1cfd6a95-4789-43aa-941c-6f69eeedd6b2</name> - </entityFieldLink> </fields> </genericViewTemplate> <genericViewTemplate> diff --git a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod index 82ff3fd5782ed9701bfaef2fd191edced58649c4..0d6dc9443854e14fba5468cf3e324dc9b1ca7f9a 100644 --- a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod +++ b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod @@ -12,6 +12,14 @@ <name>GenericMultiple</name> <entityField>#ENTITY</entityField> <columns> + <neonGenericMultipleTableColumn> + <name>f0dcda2f-c8a9-4d7c-a605-b94456c6ce1d</name> + <entityField>PROJECTTITLE</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>cbd92642-5ff5-490c-af7a-4f325937de75</name> + <entityField>PHASE</entityField> + </neonGenericMultipleTableColumn> <neonGenericMultipleTableColumn> <name>2a2cfc4f-cdd1-4ff5-8bb6-fd8a16777cf6</name> <entityField>PROJECTTYPE</entityField> diff --git a/neonView/SalesprojectPreviewMultiple_view/SalesprojectPreviewMultiple_view.aod b/neonView/SalesprojectPreviewMultiple_view/SalesprojectPreviewMultiple_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..74e22b5b5dc75e2259a2e60420678e6c1c25c681 --- /dev/null +++ b/neonView/SalesprojectPreviewMultiple_view/SalesprojectPreviewMultiple_view.aod @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8"> + <name>SalesprojectPreviewMultiple_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <footer>ScoreCard</footer> + </headerFooterLayout> + </layout> + <children> + <dynamicMultiDataChartViewTemplate> + <name>Chart</name> + <chartType>BAR</chartType> + <shareParent v="false" /> + <columns> + <neonDynamicMultiDataChartColumn> + <name>2ee7797d-d358-4915-afd0-e71d800563f3</name> + <entityField>VOLUME</entityField> + <aggregateEntityField>VOLUME_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> + <treeTableViewTemplate> + <name>TreeTable</name> + <defaultGroupFields> + <element>PHASE</element> + </defaultGroupFields> + <columns> + <neonTreeTableColumn> + <name>3cc7232e-4092-4a94-9b69-256d4b955cc9</name> + <entityField>VOLUME</entityField> + <aggregateEntityField>VOLUME_aggregate</aggregateEntityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>7032ecbc-200c-47d8-b14c-389e83bb4090</name> + <entityField>PROBABILITY</entityField> + <aggregateEntityField>PROBABILITY_aggregate</aggregateEntityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> + <scoreCardViewTemplate> + <name>ScoreCard</name> + <fields> + <entityFieldLink> + <name>e6aa37dc-bb86-4e0e-80b9-a24da11e6453</name> + <entityField>VOLUME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>b98eceb0-3154-48a0-9a57-d07112cfda43</name> + <entityField>PROBABILITY</entityField> + </entityFieldLink> + </fields> + </scoreCardViewTemplate> + </children> +</neonView> diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index 15de760a6f958e6b3c19f38029aaf0620a1bd3f6..f48aa4fd1691d2091d0b8e3a25243074e083743e 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -33,6 +33,7 @@ <neonClientPermissionsEnabled v="true" /> <clientFeedbackMailaddress /> <blobHandlingMethod>DATABASE</blobHandlingMethod> + <databaseAuditProcessLoggerUser>Admin</databaseAuditProcessLoggerUser> <databaseAuditGetOldValueLobs v="false" /> <indexsearchGlobalEnabled v="true" /> <indexsearchUseLegacyConfiguration v="false" /> @@ -163,5 +164,10 @@ <description>Whether the observations are enabled or not</description> <property v="false" /> </customBooleanProperty> + <customStringProperty> + <name>sales.vat</name> + <description>Default VAT in percent</description> + <property>19</property> + </customStringProperty> </customProperties> </preferences> diff --git a/process/AISalesproject_lib/process.js b/process/AISalesproject_lib/process.js index e0ceec91ec4f07fe072160f85fdbf3133a09ca71..0cca5549c0492f2c1442d39bb62bd8ff8daf13f8 100644 --- a/process/AISalesproject_lib/process.js +++ b/process/AISalesproject_lib/process.js @@ -185,13 +185,12 @@ AISalesprojectUtil.getVolumeClassification = function (pVolume) AISalesprojectUtil.getProbabilityValue = function (pProbId) { - if(pProbId == "SALPROJPROB0" || pProbId == "SALPROJPROB25") + var prob = parseInt(pProbId); + if(prob <= 25) return "negative"; - else if(pProbId == "SALPROJPROB50") - return "neutral"; - else if(pProbId == "SALPROJPROB75" || pProbId == "SALPROJPROB100") + else if(prob >= 75) return "positive"; - return ""; + return "neutral"; }; AISalesprojectUtil.getClassificationValues = function (pClassificationType, pObjectType, pObjectRowid, pScoreType) diff --git a/process/ChecklistEntryRegistry_basic/process.js b/process/ChecklistEntryRegistry_basic/process.js index d95e132e9d51ab5497e510d19b032ba92921d027..496eda6a2e822c72af1122829932e0e468d28d38 100644 --- a/process/ChecklistEntryRegistry_basic/process.js +++ b/process/ChecklistEntryRegistry_basic/process.js @@ -351,7 +351,7 @@ $ChecklistEntryRegistry.salesprojectProb100 = function(){ verifierFn: function(pSalesprojectId){ var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["PROBABILITY"], null, "NoPhaseRequirementLoading"); - if(spRows[0]["PROBABILITY"] && spRows[0]["PROBABILITY"] == "SALPROJPROB100") + if(spRows[0]["PROBABILITY"] && parseInt(spRows[0]["PROBABILITY"]) == 100) { return true; } diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index 3a514e016762cc93feda22a8be23e51c0899bbcd..b3ec321e8045f8908f42fc5c07996703ef549cb0 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -106,7 +106,6 @@ $KeywordRegistry.salesorderState$lost = function(){return "SALORDERSTATLOST";}; $KeywordRegistry.salesprojectWonLost = function(){return "SalesprojectWonLost";}; $KeywordRegistry.stockWarehouse = function(){return "StockWarehouse";}; -$KeywordRegistry.salesprojectProbability = function(){return "SalesprojectProbability";}; $KeywordRegistry.activityCategory = function(){return "ActivityCategory";}; $KeywordRegistry.activityCategory$mail = function(){return "MAIL";}; @@ -118,8 +117,6 @@ $KeywordRegistry.addressType$private = function(){return "HOMEADDR";}; $KeywordRegistry.addressType$office = function(){return "OFFICEADDR";}; $KeywordRegistry.addressType$post = function(){return "POSTADDR";}; -$KeywordRegistry.offerProbability = function(){return "OfferProbability";}; - $KeywordRegistry.communicationMedium = function(){return "CommunicationMedium";}; $KeywordRegistry.communicationMedium$mail = function(){return "COMMEMAIL";}; $KeywordRegistry.communicationMedium$mobil = function(){return "COMMMOBIL";}; diff --git a/process/Neon_lib/process.js b/process/Neon_lib/process.js index 18402adc55753b73d0fe427c881e0b50e9333cfa..68c68fe321122b78933d1c8980d1f86cdf513dc9 100644 --- a/process/Neon_lib/process.js +++ b/process/Neon_lib/process.js @@ -89,10 +89,14 @@ CopyModuleUtils.copyModule = function(pInputMapping) var AliasDefinitionStructure = project.getAliasDefinitionStructure("Data_alias", null); var ModulesMapping = {}; var statements = []; - + + if(pInputMapping["OFFERITEM"]["destinationModuleName"] == "SALESORDERITEM") //SalesOrder and Offer don't have the exact smae structure anymore: Order don't have the field "optional" + { + delete AliasDefinitionStructure["tables"]["OFFERITEM"]["columns"]["OPTIONAL"]; + } buildMapping( pInputMapping ); buildStatements( ModulesMapping ); - + if(statements.length > 0) db.inserts( statements ); diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js index 49477739fd0a0b2931359ff565701150edf9108a..594266a6cd93c5e17443f58660b1c8781e8858a8 100644 --- a/process/OfferOrder_lib/process.js +++ b/process/OfferOrder_lib/process.js @@ -103,9 +103,12 @@ ItemUtils.prototype.getNetAndVat = function(pExcludedItemIds) { // TODO: Bessere Möglichkeit als per SQL die zugehörigen Posten aus der DB zu holen? var sum = 0; var vat = 0; - - - var orderItems = newSelect("QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL") + var columns = "QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL"; + + if(this.tableName == "SALESORDER") + columns = "QUANTITY, PRICE, DISCOUNT, VAT, 0"; + + var orderItems = newSelect(columns) .from(this.tableName + "ITEM") .where(this.tableName + "ITEM." + this.tableName + "_ID", this.offerOrderId) .andIfSet(this.tableName + "ITEM." + this.tableName + "ITEMID", pExcludedItemIds, SqlBuilder.NOT_IN()) @@ -157,6 +160,7 @@ ItemUtils.prototype.getItemSum = function(pQuantity, pPrice, pDiscount, pOptiona pQuantity = pQuantity || 0; pPrice = pPrice || 0; pDiscount = pDiscount || 0; + pOptional = pOptional || "0"; return pOptional == "0" ? (MoneyUtils.getNet(parseFloat(pPrice), parseFloat(pQuantity), parseFloat(pDiscount))) : 0; @@ -170,6 +174,8 @@ ItemUtils.prototype.getItemVAT = function(pQuantity, pPrice, pDiscount, pVat, pO pPrice = pPrice || 0; pDiscount = pDiscount || 0; pVat = pVat || 0; + pOptional = pOptional || "0"; + return pOptional == "0" ? (MoneyUtils.getVat(parseFloat(pVat), parseFloat(pPrice), parseFloat(pQuantity), parseFloat(pDiscount))) : 0; } diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index 19ceed323e4bba20dc3ed7c185078fec5e35afc0..32b5a3a56f20c0bb76da1a2ad5d3d319571cc14d 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -1,3 +1,4 @@ +import("system.project"); import("system.SQLTYPES"); import("system.vars"); import("system.util"); @@ -442,8 +443,9 @@ OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId, pDiscount) * @param pLanguage {String} language * @param pCurrency {String} [currency=""] * @param pAddress {String} [address=""] + * @param pDiscount {String} discount */ -OfferUtils.copyToOrder = function (pOfferId, pContextId, pRowId, pContactId, pLanguage, pCurrency, pAddress) +OfferUtils.copyToOrder = function (pOfferId, pContextId, pRowId, pContactId, pLanguage, pCurrency, pAddress, pDiscount) { var fieldparams = { @@ -453,7 +455,8 @@ OfferUtils.copyToOrder = function (pOfferId, pContextId, pRowId, pContactId, pLa "$field.CURRENCY" : pCurrency || "", "$field.PAYMENTADDRESS" : pAddress || "", "$field.OBJECT_TYPE" : pContextId || "", - "$field.OBJECT_ROWID" : pRowId || "" + "$field.OBJECT_ROWID" : pRowId || "", + "$field.DISCOUNT" : pDiscount || "" }; var params = {}; diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index 5c4d7f122ab9714f382ab2a4fdc1b81350c070f7..f6012eb211dfc3eaa9bfbf1d64c757d09f49bd9e 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -1,3 +1,5 @@ +import("Offer_lib"); +import("system.project"); import("Context_lib"); import("KeywordRegistry_basic"); import("Neon_lib"); @@ -126,7 +128,8 @@ OrderUtils.copyOrder = function (pSourceOrderId, pOrderData) "$field.DUNNINGDATE": pOrderData.dunningDate || "", "$field.DUNNINGLEVEL": pOrderData.dunningLevel || "", "$field.CANCELLATION": pOrderData.cancellation || "", - "$field.ORDERSTATUS": pOrderData.orderStatus || "" + "$field.ORDERSTATUS": pOrderData.orderStatus || "", + "$field.DISCOUNT": pOrderData.discount || "" }; var params = { @@ -143,8 +146,9 @@ OrderUtils.copyOrder = function (pSourceOrderId, pOrderData) * * @param {String} pSourceOfferId the offer to get the items from * @param {String} pOrderId the order to create the items for + * @param {Number} pDiscount */ -OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) +OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId, pDiscount) { var inputMapping = { "OFFERITEM": { @@ -158,8 +162,7 @@ OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) "PRODUCT_ID" : "PRODUCT_ID", "QUANTITY" : "QUANTITY", "ITEMSORT" : "ITEMSORT", - "ITEMNAME" : "ITEMNAME", - "OPTIONAL" : "OPTIONAL", + "ITEMNAME" : "ITEMNAME", "DISCOUNT" : "DISCOUNT", "PRICE" : "PRICE", "UNIT" : "UNIT", @@ -174,14 +177,30 @@ OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) }; CopyModuleUtils.copyModule(inputMapping); - var oiUtils = new OrderItemUtils(pOrderId); + + var oiUtils = new OfferItemUtils(pSourceOfferId); //update order price - cols = ["NET", "VAT"]; - var vals = oiUtils.getNetAndVat(); + var [netPrice, vat] = oiUtils.getNetAndVat(); + var discountedVals = OfferItemUtils.getDiscountedNet(null, pSourceOfferId, pDiscount); - newWhere("SALESORDER.SALESORDERID", pOrderId) - .updateData(true, "SALESORDER", cols, null, vals); + if(discountedVals){ + newWhere("SALESORDER.SALESORDERID", pTargetOfferId) + .updateFields({ + "NET": netPrice, + "VAT": vat, + "DISCOUNTED_NET": discountedVals[0], + "DISCOUNTED_VAT": discountedVals[1] + }); + } + else + { + newWhere("SALESORDER.SALESORDERID", pTargetOfferId) + .updateFields({ + "NET": netPrice, + "VAT": vat + }); + } } /** @@ -189,8 +208,9 @@ OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) * * @param {String} pSourceOrderId the order to get the items from * @param {String} pTargetOrderId the order to create the items for + * @param {Number} pDiscount */ -OrderUtils.copyOrderItems = function (pSourceOrderId, pTargetOrderId) +OrderUtils.copyOrderItems = function (pSourceOrderId, pTargetOrderId, pDiscount) { var inputMapping = { "SALESORDERITEM": { @@ -205,13 +225,27 @@ OrderUtils.copyOrderItems = function (pSourceOrderId, pTargetOrderId) var oiUtils = new OrderItemUtils(pTargetOrderId); //update order price - var [netValue, vat] = oiUtils.getNetAndVat(); + var [netPrice, vat] = oiUtils.getNetAndVat(); + var discountedVals = OrderItemUtils.getDiscountedNet(null, pSourceOrderId, pDiscount); - newWhere("SALESORDER.SALESORDERID", pTargetOrderId) + if(discountedVals){ + newWhere("SALESORDER.SALESORDERID", pTargetOfferId) + .updateFields({ + "NET": netPrice, + "VAT": vat, + "DISCOUNTED_NET": discountedVals[0], + "DISCOUNTED_VAT": discountedVals[1] + }); + } + else + { + newWhere("SALESORDER.SALESORDERID", pTargetOfferId) .updateFields({ - "NET": netValue, + "NET": netPrice, "VAT": vat }); + } + } /** @@ -261,15 +295,14 @@ OrderUtils.buildOrderReport = function (pOrderID) "SALESORDERITEM.ASSIGNEDTO", "SALESORDERITEM.PRODUCT_ID", "SALESORDERITEM.ITEMNAME" , - "SALESORDERITEM.OPTIONAL", //4 "SALESORDERITEM.ITEMPOSITION", "PRODUCT.PRODUCTCODE", "PRODUCT.PRODUCTID", - "SALESORDERITEM.UNIT", //8 + "SALESORDERITEM.UNIT", //7 sqlUtil.isNull("SALESORDERITEM.QUANTITY", "0"), sqlUtil.isNull("SALESORDERITEM.PRICE", "0"), sqlUtil.isNull("SALESORDERITEM.DISCOUNT", "0"), - sqlUtil.isNull("SALESORDERITEM.VAT", "0"), //12 + sqlUtil.isNull("SALESORDERITEM.VAT", "0"), //11 "SALESORDERITEM.SALESORDER_ID", "SALESORDERITEM.ITEMSORT", "0", @@ -296,50 +329,48 @@ OrderUtils.buildOrderReport = function (pOrderID) itemData = itemData.map(function (item) { //quantity * price - fullPrice = eMath.mulDec(parseFloat(item[9]), parseFloat(item[10])); //price without discount + fullPrice = eMath.mulDec(parseFloat(item[8]), parseFloat(item[9])); //price without discount - if (item[4] != "1") //optional - { - //itemSum = (fullPrice * (100 - discount)) / 100 - itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, item[11])), 100), 2, eMath.ROUND_HALF_EVEN); //sum of the item (with discount) - sumItemSum += itemSum; //total sum (without vat) - } + + //itemSum = (fullPrice * (100 - discount)) / 100 + itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, item[10])), 100), 2, eMath.ROUND_HALF_EVEN); //sum of the item (with discount) + sumItemSum += itemSum; //total sum (without vat) + //vatsum = itemSum * vat / 100 - vatsum = eMath.divDec(eMath.mulDec(itemSum, item[12]), 100); //vat per product - if (item[12] > 0) - sums.push([item[12], vatsum]); //MWSteuerwerte für Map vorbereiten + vatsum = eMath.divDec(eMath.mulDec(itemSum, item[11]), 100); //vat per product + if (item[11] > 0) + sums.push([item[11], vatsum]); //MWSteuerwerte für Map vorbereiten // sumItemSum + vat total = eMath.addDec(sumItemSum, orderData[9]); //total sum with vat - if (!printDiscount && item[11] > 0) + if (!printDiscount && item[10] > 0) printDiscount = true; return [ - item[7], //productid + item[6], //productid orderData[6], //currency orderData[7], //offerdate pOrderID, //offerId item[0], //info item[1], //assignedTo item[3], //itemname - item[4], //optional - item[5], //itemposition - item[6], //productcode + item[4], //itemposition + item[5], //productcode orderData[8], //header orderData[13], //footer - text.formatDouble(item[9], "#,##0", true), //quantity - text.formatDouble(item[10], "#,##0.00", true), //price - text.formatDouble(item[11], "0.00", true), //discount + text.formatDouble(item[8] || "0.0", "#,##0", true), //quantity + text.formatDouble(item[9] || "0.0", "#,##0.00", true), //price + text.formatDouble(item[10] || "0.0", "0.00", true), //discount orderData[5], //offercode - text.formatDouble(orderData[9], "#,##0.00", true), //vat - text.formatDouble(itemSum, "#,##0.00", true), //itemsum - KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), item[8]), //unittext + text.formatDouble(orderData[9] || "0.0", "#,##0.00", true), //vat + text.formatDouble(itemSum || "0.0", "#,##0.00", true), //itemsum + KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), item[7]), //unittext item[2], + item[12], + item[7], item[13], - item[8], - item[14], - text.formatDouble(item[12], "#,##0.00", true) + text.formatDouble(item[11] || "0.0", "#,##0.00", true) ]; }); @@ -397,17 +428,16 @@ OrderUtils.buildOrderReport = function (pOrderID) "SALESORDERITEM_INFO", "SALESORDERITEM_ASSIGNEDTO", //4 "ITEMNAME" , - "SALESORDERITEM_OPTIONAL", "SALESORDERITEM_ITEMPOSITION", - "PRODUCTCODE", //8 + "PRODUCTCODE", //7 "HEADER", "FOOTER", "QUANTITY", "PRICE", - "ORDERITEM.DISCOUNT", //13 + "ORDERITEM.DISCOUNT", //12 "ORDERCODE", "SALESORDER.VAT", - "ITEMSUM", // 17 + "ITEMSUM", // 16 "UNITTEXT", "PRODUCT_ID", "ORDERITEM.SALESORDER_ID", @@ -484,15 +514,14 @@ OrderUtils.buildReminderReport = function (pOrderID) "SALESORDERITEM.ASSIGNEDTO", "SALESORDERITEM.PRODUCT_ID", "SALESORDERITEM.ITEMNAME" , - "SALESORDERITEM.OPTIONAL", //4 "SALESORDERITEM.ITEMPOSITION", "PRODUCT.PRODUCTCODE", "PRODUCT.PRODUCTID", - "SALESORDERITEM.UNIT", //8 + "SALESORDERITEM.UNIT", //7 sqlUtil.isNull("SALESORDERITEM.QUANTITY", "0"), sqlUtil.isNull("SALESORDERITEM.PRICE", "0"), sqlUtil.isNull("SALESORDERITEM.DISCOUNT", "0"), - sqlUtil.isNull("SALESORDERITEM.VAT", "0"), //12 + sqlUtil.isNull("SALESORDERITEM.VAT", "0"), //11 "SALESORDERITEM.SALESORDER_ID", "SALESORDERITEM.ITEMSORT", "0", @@ -507,7 +536,9 @@ OrderUtils.buildReminderReport = function (pOrderID) if (itemData.length == 0) + { return null; + } var fullPrice = 0; var itemSum = 0; @@ -520,31 +551,32 @@ OrderUtils.buildReminderReport = function (pOrderID) itemData = itemData.map(function (item) { //quantity * price - fullPrice = eMath.mulDec(parseFloat(item[9]), parseFloat(item[10])); //price without discount + fullPrice = eMath.mulDec(parseFloat(item[8]), parseFloat(item[9])); //price without discount + + //itemSum = (fullPrice * (100 - discount)) / 100 + itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, item[10])), 100), 2, eMath.ROUND_HALF_EVEN); //sum of the item (with discount) + sumItemSum += itemSum; //total sum (without vat) - if (item[4] != "1") //optional + //vatsum = itemSum * vat / 100 + vatsum = eMath.divDec(eMath.mulDec(itemSum, item[11]), 100); //vat per product + if (item[11] > 0) { - //itemSum = (fullPrice * (100 - discount)) / 100 - itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, item[11])), 100), 2, eMath.ROUND_HALF_EVEN); //sum of the item (with discount) - sumItemSum += itemSum; //total sum (without vat) + sums.push([item[11], vatsum]); //MWSteuerwerte für Map vorbereiten } - //vatsum = itemSum * vat / 100 - vatsum = eMath.divDec(eMath.mulDec(itemSum, item[12]), 100); //vat per product - if (item[12] > 0) - sums.push([item[12], vatsum]); //MWSteuerwerte für Map vorbereiten // sumItemSum + vat total = eMath.addDec(sumItemSum, orderData[9]); //total sum with vat - if (!printDiscount && item[11] > 0) + if (!printDiscount && item[10] > 0) + { printDiscount = true; - + } return [ orderData[15], //payed pOrderID, //relationid orderData[6], //currency orderData[7], //orderdate - text.formatDouble(orderData[9], "#,##0.00", true), //vat + text.formatDouble(orderData[9] || "0.0", "#,##0.00", true), //vat orderData[10], //ordercode orderData[16], //net text.formatDouble(grossPrice, "#,##0.00", true),//grossPrice @@ -651,15 +683,15 @@ OrderItemUtils.prototype.initItemTree = function() { /** * For documentation, see class ItemUtils. */ -OrderItemUtils.prototype.getItemSum = function(pQuantity, pPrice, pDiscount, pOptional) { +OrderItemUtils.prototype.getItemSum = function(pQuantity, pPrice, pDiscount) { return ItemUtils.prototype.getItemSum.apply(this, [pQuantity, pPrice, pDiscount, false]); } /** * For documentation, see class ItemUtils. */ -OrderItemUtils.prototype.getItemVAT = function(pQuantity, pPrice, pDiscount, pVAT, pOptional) { - return ItemUtils.prototype.getItemVAT.apply(this, [pQuantity, pPrice, pDiscount, pVAT, pOptional]); +OrderItemUtils.prototype.getItemVAT = function(pQuantity, pPrice, pDiscount, pVAT) { + return ItemUtils.prototype.getItemVAT.apply(this, [pQuantity, pPrice, pDiscount, pVAT]); } /** @@ -685,7 +717,6 @@ OrderItemUtils.prototype.insertPartsList = function(pProductId, pAssignedTo, pCu , "PRICE" , "VAT" , "QUANTITY" - , "OPTIONAL" , "ITEMPOSITION" , "ITEMSORT"]; @@ -726,4 +757,57 @@ OrderItemUtils.prototype.reOrgItems = function() { this.initItemTree(); ItemUtils.prototype.reOrgItems.apply(this); -} \ No newline at end of file +} + + +OrderItemUtils.getDiscountedNet = function(pExcludedIs, pOrderId, pDiscount, pExcludedProductgroups){ + pDiscount = pDiscount || 0; + var ret; + var sum = 0; + var sumExcluded = 0; + var vat = 0; + var vatExcluded = 0; + if(pOrderId){ + var orderitemData = newSelect("QUANTITY, PRICE, DISCOUNT, VAT") + .from("SALESORDERITEM") + .where("SALESORDERITEM.SALESORDER_ID", pOrderId) + .andIfSet("SALESORDERITEM.GROUPCODEID", pExcludedProductgroups, SqlBuilder.NOT_IN()) + .andIfSet("SALESORDERITEM.SALESORDERITEMID", pExcludedIs, SqlBuilder.NOT_IN()) + .table(); + + for (var i = 0; i < orderitemData.length; i++) + { + sum = eMath.addDec(sum, ItemUtils.prototype.getItemSum(orderitemData[i][0], orderitemData[i][1], orderitemData[i][2])); + vat = eMath.addDec(vat, ItemUtils.prototype.getItemVAT(orderitemData[i][0], orderitemData[i][1], orderitemData[i][2], orderitemData[i][3])); + } + + sum = eMath.subDec(sum, eMath.divDec(eMath.mulDec(sum, pDiscount), "100")); + vat = eMath.subDec(vat, eMath.divDec(eMath.mulDec(vat, pDiscount), "100")); + + + if(pExcludedProductgroups) + { + var excludedOrderitemData = newSelect("QUANTITY, PRICE, DISCOUNT, VAT") + .from("SALESORDERITEM") + .where("SALESORDERITEM.SALESORDERITEM_ID", pOrderId) + .and("SALESORDERITEM.GROUPCODEID", pExcludedProductgroups, SqlBuilder.IN()) + .andIfSet("OFFERITEM.SALESORDERITEMID", pExcludedIs, SqlBuilder.NOT_IN()) + .table(); + + excludedOrderitemData.forEach(function(excludedOrderItem){ + sumExcluded = eMath.addDec(sumExcluded, ItemUtils.prototype.getItemSum(excludedOrderItem[0], excludedOrderItem[1], excludedOrderItem[2])); + vatExcluded = eMath.addDec(vatExcluded, ItemUtils.prototype.getItemVAT(excludedOrderitemData[i][0], excludedOrderitemData[i][1], excludedOrderitemData[i][2], excludedOrderitemData[i][3])); + }); + } + if(sumExcluded) + { + sum = eMath.addDec(sum, sumExcluded); + } + if(vatExcluded) + { + vat = eMath.addDec(vat, vatExcluded); + } + } + ret = [sum, vat]; + return ret; +} diff --git a/process/Turnover_lib/process.js b/process/Turnover_lib/process.js index b070a1a6605c5a3c5d63ef49760af0709429cf9c..c2f5c6c9de86aaacfe8646551301282a2b085ce7 100644 --- a/process/Turnover_lib/process.js +++ b/process/Turnover_lib/process.js @@ -48,7 +48,6 @@ TurnoverUtil.getTurnoverData = function (pMaxYear, pYearCount, pSalesprojectId) .where("SALESORDER.ORDERTYPE", "ORDTYPEINVO") .and("SALESORDER.ORDERSTATUS", "1") .and("SALESORDER.CANCELLATION", "1", SqlBuilder.NOT_EQUAL()) - .and("SALESORDERITEM.OPTIONAL", "1", SqlBuilder.NOT_EQUAL()) .and("SALESORDER.SALESORDERDATE", pMaxYear, sqlMask.yearFromDate("#") + " <= ?", SQLTYPES.INTEGER) .and("SALESORDER.SALESORDERDATE", minYear, sqlMask.yearFromDate("#") + " >= ?", SQLTYPES.INTEGER) .andIfSet("SALESORDER.SALESPROJECT_ID", pSalesprojectId) diff --git a/process/migrateProbabilities/documentation.adoc b/process/migrateProbabilities/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..ae05f3bb7b2abeca84bc12a2cccf5389e3bdfe8f --- /dev/null +++ b/process/migrateProbabilities/documentation.adoc @@ -0,0 +1,2 @@ += Probability Migration +This process can be used to directly migrate the sales probabilities in the database, without the use of liquibase scripts. diff --git a/process/migrateProbabilities/migrateProbabilities.aod b/process/migrateProbabilities/migrateProbabilities.aod new file mode 100644 index 0000000000000000000000000000000000000000..db4161fc0de18dd38568aa658c0bc1e36c21cba6 --- /dev/null +++ b/process/migrateProbabilities/migrateProbabilities.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>migrateProbabilities</name> + <title>Migrate Probabilities</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/migrateProbabilities/documentation.adoc</documentation> + <process>%aditoprj%/process/migrateProbabilities/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/migrateProbabilities/process.js b/process/migrateProbabilities/process.js new file mode 100644 index 0000000000000000000000000000000000000000..2f28c6efd57099eb4f9f73f20bf8dc0f525fb5d5 --- /dev/null +++ b/process/migrateProbabilities/process.js @@ -0,0 +1,62 @@ +import("system.fileIO"); +import("system.db"); +import("system.SQLTYPES"); +import("system.logging"); +import("system.util"); +import("system.vars"); +import("Sql_lib"); +import("Util_lib"); +import("Liquibase_lib"); + +var categoryIds = newSelect("AB_KEYWORD_CATEGORYID") + .from("AB_KEYWORD_CATEGORY") + .where("AB_KEYWORD_CATEGORY.NAME", ["SalesprojectProbability", "OfferProbability"], SqlBuilder.IN()) + .arrayColumn(); +var entryIds = newSelect("AB_KEYWORD_ENTRYID") + .from("AB_KEYWORD_ENTRY") + .where("AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID", categoryIds, SqlBuilder.IN()) + .arrayColumn(); +var attributeIds = newSelect("AB_KEYWORD_ATTRIBUTEID") + .from("AB_KEYWORD_ATTRIBUTE") + .where("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID", categoryIds, SqlBuilder.IN()) + .arrayColumn(); +var attributeRelationIds = newSelect("AB_KEYWORD_ATTRIBUTERELATIONID") + .from("AB_KEYWORD_ATTRIBUTERELATION") + .where("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", entryIds, SqlBuilder.IN()) + .arrayColumn(); + +newWhere("AB_KEYWORD_CATEGORY.AB_KEYWORD_CATEGORYID", + categoryIds, SqlBuilder.IN()).deleteData(); +newWhere("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", + entryIds, SqlBuilder.IN()).deleteData(); +newWhere("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID", + attributeIds, SqlBuilder.IN()).deleteData(); +newWhere("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTERELATIONID", + attributeRelationIds, SqlBuilder.IN()).deleteData(); + +// dbms independent rename +// no use of SqlBuilder becasue alter and update using computed values are currently not supported + +db.runStatement("alter table SALESPROJECT add PROBABILITY_OLD VARCHAR(36)"); +db.runStatement("update SALESPROJECT set PROBABILITY_OLD = PROBABILITY"); +db.runStatement("alter table SALESPROJECT drop column PROBABILITY"); +db.runStatement("alter table SALESPROJECT add PROBABILITY DECIMAL(6, 2)"); +var sWhenBlock = ""; +for(let i = 0; i <= 100; i += 25) +{ + sWhenBlock += "when SALESPROJECT.PROBABILITY_OLD = 'SALPROJPROB" + i + "' then " + i + " "; +} +db.runStatement("update SALESPROJECT set PROBABILITY = case " + sWhenBlock + "end"); + +db.runStatement("alter table OFFER add PROBABILITY_OLD VARCHAR(36)"); +db.runStatement("update OFFER set PROBABILITY_OLD = PROBABILITY"); +db.runStatement("alter table OFFER drop column PROBABILITY"); +db.runStatement("alter table OFFER add PROBABILITY DECIMAL(6, 2)"); +var oWhenBlock = ""; +for(let i = 0; i <= 100; i += 25) +{ + oWhenBlock += "when OFFER.PROBABILITY_OLD = '" + i + "' then " + i + " "; +} +db.runStatement("update OFFER set PROBABILITY = case " + oWhenBlock + "end"); + +logging.log("Probabilities migrated succesfully");