diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 149a5b63e8c60f220a8b802f4c9bea8b2ef8be0e..410fe391ef714edad68ea6ccc50ee2e9466eac7d 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -61,6 +61,14 @@ <name>Salesproject</name> <kind v="10077" /> </entityNode> + <entityNode> + <name>Offer</name> + <kind v="10077" /> + </entityNode> + <entityNode> + <name>Order</name> + <kind v="10077" /> + </entityNode> <entityNode> <name>PROJECT_FieldStaff</name> <kind v="159" /> @@ -72,20 +80,17 @@ <title></title> </entityNode> <entityNode> - <name>Offer</name> - <kind v="10077" /> - </entityNode> - <entityNode> - <name>Order</name> + <name>Contract</name> <kind v="10077" /> </entityNode> <entityNode> - <name>Contract</name> + <name>Product</name> <kind v="10077" /> </entityNode> <entityNode> - <name>Product</name> + <name>Productprice</name> <kind v="10077" /> + <title></title> </entityNode> </childNodes> </entityNode> diff --git a/entity/Address_entity/conditionProcess.js b/entity/Address_entity/conditionProcess.js index 029bece9162d3a87ea09053626efcef906a8d9ef..fccfe75da2c5adf71d2f3fdbed4695f49ec76ea6 100644 --- a/entity/Address_entity/conditionProcess.js +++ b/entity/Address_entity/conditionProcess.js @@ -1,7 +1,7 @@ import("system.result"); import("system.vars"); -if(vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param") != null && vars.get("$param.ContactId_param") != "") +if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) result.string("ADDRESS.CONTACT_ID = ('" + vars.getString("$param.ContactId_param") + "')"); else - result.string("1 = 1"); + result.string("1=1"); diff --git a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js index 03fa933bbc75f782259828e7771b24d8912ef0a5..f28818dcfa611f2cdae014095414c5ce2383a129 100644 --- a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js @@ -1,7 +1,7 @@ import("system.result"); import("system.vars"); -if(vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param") != null) +if(vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param")) result.string("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = ('" + vars.getString("$param.AttributeId_param") + "')"); else result.string("1 = 2"); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 1025fac61468df0ad65685eb86187d6c530a0c83..609c83dc2e21531d13805b6f92948158f2e0632c 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -475,7 +475,7 @@ <fieldName>KeywordGuarantee</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> + <entityDependency> <name>2443c7e3-9e66-41dc-99c7-3283e9315000</name> <entityName>Campaign_entity</entityName> <fieldName>KeywordCurrency</fieldName> @@ -530,6 +530,7 @@ </entityParameter> <entityConsumer> <name>KeywordAttributeRelations</name> + <onValidation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js</onValidation> <dependency> <name>dependency</name> <entityName>KeywordAttributeRelation_entity</entityName> @@ -543,22 +544,6 @@ </entityParameter> </children> </entityConsumer> - <entityConsumer> - <name>KeywordAttributeRelationsReadOnly</name> - <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc</documentation> - <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>KeywordAttributeRelation_entity</entityName> - <fieldName>AttributesForKeywordEntry</fieldName> - </dependency> - <children> - <entityParameter> - <name>KeywordEntryId_param</name> - <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> <entityParameter> <name>ExcludedKeyIdsSubquery_param</name> <expose v="true" /> diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..ff0553af7e4a904edf8807108c2c417aadd12adb --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js @@ -0,0 +1,82 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("system.db"); + +if (!_areUnique()) + result.string(translate.text("Attributes must be unique!")); + +function _areUnique () +{ + var insertedRows = vars.get("$field.KeywordAttributeRelations.insertedRows"); + var changedRows = vars.get("$field.KeywordAttributeRelations.changedRows"); + var deletedRows = vars.get("$field.KeywordAttributeRelations.deletedRows"); + + var storedRows = db.table(SqlCondition.begin() + .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", vars.get("$field.AB_KEYWORD_ENTRYID")) + .buildSql("select AB_KEYWORD_ATTRIBUTERELATIONID, AB_KEYWORD_ATTRIBUTE_ID from AB_KEYWORD_ATTRIBUTERELATION")); + + var attributeChanges = {}; + + if (deletedRows) + deletedRows.forEach(function (row) + { + this[row.AB_KEYWORD_ATTRIBUTERELATIONID] = ""; + }, attributeChanges); + + if (changedRows) + changedRows.forEach(function (row) + { + this[row.AB_KEYWORD_ATTRIBUTERELATIONID] = row.AB_KEYWORD_ATTRIBUTE_ID; + }, attributeChanges); + + var countObj = {}; + + storedRows.forEach(function ([storedAttrRelationId, storedAttributeId]) { + var currentAttributeId = storedAttributeId; + //merging the data that is stored in the DB and the provided changes + if (attributeChanges && storedAttrRelationId in attributeChanges) + currentAttributeId = attributeChanges[storedAttrRelationId]; + + // it doesn't matter if a row has been deleted or if the attribute has been set to "nothing" + if (currentAttributeId == "") + _decrCount(storedAttributeId); + else + { + _incrCount(currentAttributeId); + if (currentAttributeId != storedAttributeId) + _decrCount(storedAttributeId); + } + }); + + if (insertedRows) //append the new rows + { + insertedRows.forEach(function (row) + { + this[row.AB_KEYWORD_ATTRIBUTE_ID] = (this[row.AB_KEYWORD_ATTRIBUTE_ID] || 0) + 1; + }, countObj); + } + + for (let id in countObj) + if (countObj[id] > 1) + return false; + + return true; + + function _incrCount (pAttributeId) + { + if (countObj[pAttributeId]) + countObj[pAttributeId]++; + else + countObj[pAttributeId] = 1; + } + + function _decrCount (pAttributeId) + { + if (countObj[pAttributeId]) + countObj[pAttributeId]--; + else + countObj[pAttributeId] = 0; + } +} diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js deleted file mode 100644 index 53afbdfbbfe9044ca0a5af0984365d6b2ee5bdba..0000000000000000000000000000000000000000 --- a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.AB_KEYWORD_ENTRYID")); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc deleted file mode 100644 index 99874edc30d1b8340662c802a9b2b4ef1da0fcdd..0000000000000000000000000000000000000000 --- a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc +++ /dev/null @@ -1,2 +0,0 @@ -Since it's not possible to limit the keywordAttributeRelation to a distinctive list (use a KeywordAttributeRelation "category" only once per keyowrd-entry) within the generic-multiple-template / titledList-template use this readonly consumer there. -For editing use the not-read-only consumer in a list-template. In a list-template only one row can be changed (and stored) which means we can exlucde already stored entries. \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/contact_id/onValueChange.js b/entity/Offer_entity/entityfields/contact_id/onValueChange.js index ae48412049aaa2dcb6dd2d2b7d64e5cc3b25c0fa..15006677e0cc2ec6dd0ffd120b1b14916637ec69 100644 --- a/entity/Offer_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Offer_entity/entityfields/contact_id/onValueChange.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.neon"); import("system.vars"); import("system.db"); @@ -9,9 +10,11 @@ var contactid = vars.get("local.value"); if(contactid != "") { //Language Preset - var relData = db.array(db.ROW, "select ISOLANGUAGE from CONTACT where CONTACTID = '" + contactid + "'"); - if(relData[0] != "") - neon.setFieldValue("field.ISOLANGUAGE", relData[0]); + var lang = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", contactid) + .buildSql("select ISOLANGUAGE from CONTACT")); + if(lang != "") + neon.setFieldValue("field.ISOLANGUAGE", lang); // set $field.CONTATCT_ORG_ID per contactid var orgid = ContactUtils.getPersOrgIds(contactid); diff --git a/entity/Offer_entity/entityfields/contact_id/valueProcess.js b/entity/Offer_entity/entityfields/contact_id/valueProcess.js index ae70dd9d53d436e3a989d138c46c5f78c7fa1621..ca10ffff0e5c7db64b8e1602cfc4006252747100 100644 --- a/entity/Offer_entity/entityfields/contact_id/valueProcess.js +++ b/entity/Offer_entity/entityfields/contact_id/valueProcess.js @@ -20,10 +20,12 @@ if ((!vars.exists("$param.ContactId_param") || !vars.get("$param.ContactId_param if (contactId) { - var relData = db.array(db.ROW, "select ISOLANGUAGE from CONTACT where CONTACTID = '" + contactId + "'"); + var lang = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", contactid) + .buildSql("select ISOLANGUAGE from CONTACT")); - if(relData[0] != "") - neon.setFieldValue("field.ISOLANGUAGE", relData[0]); + if(lang != "") + neon.setFieldValue("field.ISOLANGUAGE", lang); result.string(contactId); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/footer/valueProcess.js b/entity/Offer_entity/entityfields/footer/valueProcess.js index 002d6afd22e0e8bede80b076b0c08bda6d3cb458..192565648a52934053446ebc48e07722713ffcb2 100644 --- a/entity/Offer_entity/entityfields/footer/valueProcess.js +++ b/entity/Offer_entity/entityfields/footer/valueProcess.js @@ -12,10 +12,12 @@ else if(vars.get("$this.value")) result.string(vars.get("$this.value")); else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string("Vielen Dank!") + result.string("Vielen Dank!"); //TODO: translate if (vars.get("$field.ChoosenTEXFooter") != "") { - var binaryId = db.cell("select ID from ASYS_BINARIES where ROW_ID = '" + vars.get("$field.ChoosenTEXFooter") + "'", SqlUtils.getSystemAlias()); + var binaryId = db.cell(SqlCondition.begin() + .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.ChoosenTEXFooter") + .buildSql("select ID from ASYS_BINARIES"), SqlUtils.getSystemAlias()); result.string(util.decodeBase64String(db.getBinaryContent(binaryId, SqlUtils.getSystemAlias()))); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/header/valueProcess.js b/entity/Offer_entity/entityfields/header/valueProcess.js index a271b33322c83b7cd69b4fd90a81b4fe3174467e..5ebdc79fc02cf4b23a7c4e478d2a3d6055b630f2 100644 --- a/entity/Offer_entity/entityfields/header/valueProcess.js +++ b/entity/Offer_entity/entityfields/header/valueProcess.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.logging"); import("system.result"); import("system.vars"); @@ -12,11 +13,12 @@ else if(vars.get("$this.value")) result.string(vars.get("$this.value")); else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string("Gerne bieten wir Ihnen wie folgt an:") + result.string("Gerne bieten wir Ihnen wie folgt an:"); //TODO: translate if (vars.get("$field.ChoosenTEXHeader") != "") { - var binaryId = db.cell("select ID from ASYS_BINARIES where ROW_ID = '" + vars.get("$field.ChoosenTEXHeader") + "'", "_____SYSTEMALIAS"); - logging.log(binaryId); - result.string(util.decodeBase64String(db.getBinaryContent(binaryId, "_____SYSTEMALIAS"))); + var binaryId = db.cell(SqlCondition.begin() + .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.ChoosenTEXHeader") + .buildSql("select ID from ASYS_BINARIES"), SqlUtils.getSystemAlias()); + result.string(util.decodeBase64String(db.getBinaryContent(binaryId, SqlUtils.getSystemAlias()))); } \ No newline at end of file diff --git a/entity/Offer_entity/onDBDelete.js b/entity/Offer_entity/onDBDelete.js index c69fde6a9281b91ef88556c006165b009a8fcb4c..5c36082b9691235f56ae00de76af5eca4d528c14 100644 --- a/entity/Offer_entity/onDBDelete.js +++ b/entity/Offer_entity/onDBDelete.js @@ -1,4 +1,5 @@ +import("Sql_lib"); import("system.vars"); import("system.db"); -db.deleteData("OFFERITEM", "OFFERITEM.OFFER_ID = '" + vars.getString("$field.OFFERID") + "'"); \ No newline at end of file +db.deleteData("OFFERITEM", SqlCondition.equals("OFFERITEM.OFFER_ID", vars.getString("$field.OFFERID"), "1=2")); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/onDBDelete.js b/entity/Offer_entity/recordcontainers/db/onDBDelete.js index c69fde6a9281b91ef88556c006165b009a8fcb4c..5c36082b9691235f56ae00de76af5eca4d528c14 100644 --- a/entity/Offer_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Offer_entity/recordcontainers/db/onDBDelete.js @@ -1,4 +1,5 @@ +import("Sql_lib"); import("system.vars"); import("system.db"); -db.deleteData("OFFERITEM", "OFFERITEM.OFFER_ID = '" + vars.getString("$field.OFFERID") + "'"); \ No newline at end of file +db.deleteData("OFFERITEM", SqlCondition.equals("OFFERITEM.OFFER_ID", vars.getString("$field.OFFERID"), "1=2")); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/footer/valueProcess.js b/entity/Order_entity/entityfields/footer/valueProcess.js index a57f0c325bb04abbb9c14d6bc7deda65f75ab9ae..da93ce5f2efc0488c2259f82b3b5c783337a7375 100644 --- a/entity/Order_entity/entityfields/footer/valueProcess.js +++ b/entity/Order_entity/entityfields/footer/valueProcess.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.result"); import("system.vars"); import("system.neon"); @@ -6,21 +7,22 @@ import("system.util"); if (vars.get("$this.value") == null) { -if (vars.exists("$param.OrderFooter_param")) -{ - result.string(vars.get("$param.OrderFooter_param")); -} - + if (vars.exists("$param.OrderFooter_param")) + { + result.string(vars.get("$param.OrderFooter_param")); + } -else if(vars.get("$this.value")) - result.string(vars.get("$this.value")); + else if(vars.get("$this.value")) + result.string(vars.get("$this.value")); -else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string("Danke sehr:") + else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string("Danke sehr:"); //TODO: translate -if (vars.get("$field.ChosenTexFooter") != "") -{ - var binaryId = db.cell("select ID from ASYS_BINARIES where ROW_ID = '" + vars.get("$field.ChosenTexFooter") + "'", "_____SYSTEMALIAS"); - result.string(util.decodeBase64String(db.getBinaryContent(binaryId, "_____SYSTEMALIAS"))); -} + if (vars.get("$field.ChosenTexFooter") != "") + { + var binaryId = db.cell(SqlCondition.begin() + .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.ChosenTexFooter") + .buildSql("select ID from ASYS_BINARIES"), SqlUtils.getSystemAlias()); + result.string(util.decodeBase64String(db.getBinaryContent(binaryId, SqlUtils.getSystemAlias()))); + } } \ No newline at end of file diff --git a/entity/Order_entity/entityfields/header/valueProcess.js b/entity/Order_entity/entityfields/header/valueProcess.js index 35a345fc953a6cbd4906c73374b69c554e505aff..038bf931e38f6a3ea50e99194e5da823d96a9fd6 100644 --- a/entity/Order_entity/entityfields/header/valueProcess.js +++ b/entity/Order_entity/entityfields/header/valueProcess.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.result"); import("system.vars"); import("system.neon"); @@ -6,18 +7,20 @@ import("system.util"); if (vars.get("$this.value") == null) { -if(vars.exists("$param.OrderHeader_param") && vars.get("$param.OrderHeader_param")) - result.string(vars.get("$param.OrderHeader_param")); + if(vars.exists("$param.OrderHeader_param") && vars.get("$param.OrderHeader_param")) + result.string(vars.get("$param.OrderHeader_param")); -else if(vars.get("$this.value")) - result.string(vars.get("$this.value")); + else if(vars.get("$this.value")) + result.string(vars.get("$this.value")); -else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string("Gerne bieten wir Ihnen wie folgt an:") + else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string("Gerne bieten wir Ihnen wie folgt an:"); //TODO: translation -if (vars.get("$field.ChosenTexHeader") != "") -{ - var binaryId = db.cell("select ID from ASYS_BINARIES where ROW_ID = '" + vars.get("$field.ChosenTexHeader") + "'", "_____SYSTEMALIAS"); - result.string(util.decodeBase64String(db.getBinaryContent(binaryId, "_____SYSTEMALIAS"))); -} + if (vars.get("$field.ChosenTexHeader") != "") + { + var binaryId = db.cell(SqlCondition.begin() + .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.ChosenTexHeader") + .buildSql("select ID from ASYS_BINARIES"), SqlUtils.getSystemAlias()); + result.string(util.decodeBase64String(db.getBinaryContent(binaryId, SqlUtils.getSystemAlias()))); + } } \ No newline at end of file diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 9aff525cbe0da3f68ee53d578251adfa679a21d1..7f12819dac5c3456db46f3d21d2dbdc9e631f171 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -3,6 +3,7 @@ <name>Productprice_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Productprice_entity/documentation.adoc</documentation> + <icon>VAADIN:MONEY</icon> <title>Prices</title> <siblings> <element>Product_entity</element> diff --git a/entity/Productprice_entity/entityfields/product_id/stateProcess.js b/entity/Productprice_entity/entityfields/product_id/stateProcess.js index 07518244a575e451e071fc07387960724911c5e3..ced938f5f37658b7dbf70ee82013020b1e3a0328 100644 --- a/entity/Productprice_entity/entityfields/product_id/stateProcess.js +++ b/entity/Productprice_entity/entityfields/product_id/stateProcess.js @@ -2,11 +2,7 @@ import("system.vars"); import("system.result"); import("system.neon"); -if(vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param")) -{ - result.string(neon.COMPONENTSTATE_DISABLED); -} +if (vars.exists("$param.ProductId_param") && vars.get("$param.ProductId_param")) + result.string(neon.COMPONENTSTATE_READONLY); else -{ - result.string(neon.COMPONENTSTATE_AUTO); -} \ No newline at end of file + result.string(neon.COMPONENTSTATE_AUTO); \ No newline at end of file diff --git a/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js b/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js index 9fd0aad5a4bce2f8f7f5ca713d35f79bc1b9a7ec..4fd74ea4b6fff396197bed7a63ad854e7b3021b7 100644 --- a/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js +++ b/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js @@ -1,3 +1,4 @@ +import("system.db"); import("system.result"); -result.object({"PRODUCTPRICE.VALID_FROM": "down"}); \ No newline at end of file +result.object({"PRODUCTPRICE.VALID_FROM": db.DESCENDING}); \ No newline at end of file diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 91644104f7cc8a70d51a24d3184ce1febf78ed43..59bc632c9c90132aea4e1255f88d74da873f9a8b 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6400,6 +6400,144 @@ <entry> <key>This error should never appear - contact administrator.</key> </entry> + <entry> + <key>Reminder</key> + </entry> + <entry> + <key>versendet</key> + </entry> + <entry> + <key>Netto</key> + </entry> + <entry> + <key>Only </key> + </entry> + <entry> + <key>Währung</key> + </entry> + <entry> + <key>Transfer to Invoice</key> + </entry> + <entry> + <key>Pay due date</key> + </entry> + <entry> + <key>No duplicates allowed: action '</key> + </entry> + <entry> + <key>Payment address</key> + </entry> + <entry> + <key>Texts</key> + </entry> + <entry> + <key>Print reminder</key> + </entry> + <entry> + <key>keine Standard-E-Mail Büro vorhanden !</key> + </entry> + <entry> + <key>Rech.-Betrag</key> + </entry> + <entry> + <key>Order date</key> + </entry> + <entry> + <key>Due date</key> + </entry> + <entry> + <key>Order amount</key> + </entry> + <entry> + <key>Belegdatum</key> + </entry> + <entry> + <key>Firma</key> + </entry> + <entry> + <key>Choose payment address</key> + </entry> + <entry> + <key>Adds the selection to a bulk mail</key> + </entry> + <entry> + <key>Order number</key> + </entry> + <entry> + <key>Paid</key> + </entry> + <entry> + <key>Empty actions are not allowed!</key> + </entry> + <entry> + <key>Dunning level</key> + </entry> + <entry> + <key>Print order</key> + </entry> + <entry> + <key>Beleg</key> + </entry> + <entry> + <key>Order Type</key> + </entry> + <entry> + <key>Notice</key> + </entry> + <entry> + <key>Bitte einen Adressat in 'to' eintragen!</key> + </entry> + <entry> + <key>Dunning text</key> + </entry> + <entry> + <key>Choose delivery address</key> + </entry> + <entry> + <key>Links</key> + </entry> + <entry> + <key>geprüft</key> + </entry> + <entry> + <key>Mahnung</key> + </entry> + <entry> + <key>Set dunning</key> + </entry> + <entry> + <key>Beleg-Nr.</key> + </entry> + <entry> + <key>Adds the selection to a serial letter</key> + </entry> + <entry> + <key>Cancel</key> + </entry> + <entry> + <key>Set to sent</key> + </entry> + <entry> + <key>Due</key> + </entry> + <entry> + <key>Set paid amount</key> + </entry> + <entry> + <key>Belegliste</key> + </entry> + <entry> + <key>Pay date</key> + </entry> + <entry> + <key>This error should never appear - contact administrator.</key> + </entry> + <entry> + <key>Transfer to delivery note</key> + </entry> + <entry> + <key>Dunning date</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Productprice/Productprice.aod b/neonContext/Productprice/Productprice.aod index 705012cef4192bf010547b88fdacc2242bf92dd7..52e0c4aa761b241c4a0a17410e29554faf3d3666 100644 --- a/neonContext/Productprice/Productprice.aod +++ b/neonContext/Productprice/Productprice.aod @@ -2,6 +2,7 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> <name>Productprice</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:MONEY</icon> <filterview>ProductpriceFilter_view</filterview> <editview>ProductpriceEdit_view</editview> <preview>ProductpricePreview_view</preview> @@ -23,5 +24,9 @@ <name>590ab927-5303-451b-824a-c16adfb00772</name> <view>ProductpricePreview_view</view> </neonViewReference> + <neonViewReference> + <name>ff71c944-42f4-46ff-bb61-2b7205609a49</name> + <view>ProductpriceForProductFilter_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/ProductMain_view/ProductMain_view.aod b/neonView/ProductMain_view/ProductMain_view.aod index ba7678cf434ca2dd7a5cfc4d885fa1ebc74f7e49..205b0e34998d8922727c490b284c2076fc516675 100644 --- a/neonView/ProductMain_view/ProductMain_view.aod +++ b/neonView/ProductMain_view/ProductMain_view.aod @@ -37,7 +37,7 @@ <neonViewReference> <name>11c4c5a0-27fa-4748-a6c6-3a667d2f3d8f</name> <entityField>Productprices</entityField> - <view>ProductpriceFilter_view</view> + <view>ProductpriceForProductFilter_view</view> </neonViewReference> <neonViewReference> <name>616f7cc3-93e7-41ee-8d38-027dd3d4b299</name> diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod index dfbf07b3a8b7c4983f20aba29880854e5c266158..ba9818dfc76cf8ad7dc0e7dea06c58374a599692 100644 --- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod +++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod @@ -17,6 +17,10 @@ <name>44311686-a24a-4cf0-87a0-6e354b3f457a</name> <entityField>IMAGE</entityField> </neonTableColumn> + <neonTableColumn> + <name>c97a0ba1-90de-4dd9-b917-c474b4de0f8e</name> + <entityField>PRODUCT_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>695ce7be-d738-48a9-833d-e8815c6eff74</name> <entityField>PRICELIST</entityField> @@ -48,6 +52,7 @@ <neonTableColumn> <name>981f29b1-b4c5-4591-8064-21a72f339179</name> <entityField>VAT</entityField> + <collapse v="false" /> </neonTableColumn> </columns> </tableViewTemplate> diff --git a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..52af81ef82c88c1f695981bccad2e221b9c85a5f --- /dev/null +++ b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod @@ -0,0 +1,55 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.2"> + <name>ProductpriceForProductFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>05bed0da-33f6-483a-b7d8-82ff4ef573f1</name> + <entityField>IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>83216e42-ad22-40d7-b01e-fccc940af44c</name> + <entityField>PRICELIST</entityField> + </neonTableColumn> + <neonTableColumn> + <name>c1211cf5-ad9b-43ef-9ce5-ab93f01eb5c9</name> + <entityField>VALID_FROM</entityField> + </neonTableColumn> + <neonTableColumn> + <name>35e5daad-a34a-45f9-a81e-dc6b654184df</name> + <entityField>VALID_TO</entityField> + </neonTableColumn> + <neonTableColumn> + <name>b14d91ad-bfc0-4c18-b447-8c8e7568a600</name> + <entityField>PRICE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>f5f43936-fa42-46a7-b152-e5a8fa0228c9</name> + <entityField>CURRENCY</entityField> + </neonTableColumn> + <neonTableColumn> + <name>16bcb0f7-6dd5-449b-830d-0eef6c11a600</name> + <entityField>BUYSELL</entityField> + </neonTableColumn> + <neonTableColumn> + <name>bce5ad39-9325-4582-a34b-908b40b69762</name> + <entityField>FROMQUANTITY</entityField> + </neonTableColumn> + <neonTableColumn> + <name>6e6d8582-08d0-464d-9632-f21a205de661</name> + <entityField>VAT</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod index d1b78476afeb57aa906210ff9c35195e0fd14bde..b5039c392066e51b42601d3dcca9df5d352a3ea3 100644 --- a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod +++ b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod @@ -11,6 +11,7 @@ <children> <genericViewTemplate> <name>PriceInfo</name> + <showDrawer v="true" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -46,9 +47,9 @@ <cardViewTemplate> <name>Header</name> <iconField>IMAGE</iconField> - <titleField>PRODUCT_ID</titleField> + <titleField>PRICELIST</titleField> + <subtitleField>PRODUCT_ID</subtitleField> <entityField>#ENTITY</entityField> - <informationField>PRICELIST</informationField> </cardViewTemplate> </children> </neonView>