Skip to content
Snippets Groups Projects
Commit 19b9760d authored by Mohamed Mansour's avatar Mohamed Mansour
Browse files

Merged master

parent 25ff206d
No related branches found
No related tags found
No related merge requests found
......@@ -453,274 +453,180 @@
</entityDependency>
<entityDependency>
<name>d8c587cc-47db-4e08-a6ac-92ec1d91acb5</name>
<entityDependency>
<name>2694515c-eda4-44aa-9826-d430aa8a8089</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordOrderTypes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>72ae7a5c-acc9-4e59-8110-f5b544f47f15</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordDunningLevels</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>ea9260e9-b5e8-457c-ae84-45c4692348ce</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordPaymentTerms</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>5d296f68-0a8f-429c-b630-e3ca88874945</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordDeliveryTerms</fieldName>
<entityName>BulkMail_entity</entityName>
<fieldName>StatusKeyword</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>2712e2b3-f17f-4a9c-9752-2383f62eb2b8</name>
<entityName>Contract_entity</entityName>
<fieldName>ContractStates</fieldName>
<name>41fd8fd4-7285-4493-9a56-cc0c44353057</name>
<entityName>DSGVOInfo_entity</entityName>
<fieldName>KeywordDeadline</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>bd68f269-457c-487d-a1b2-e045d98f74b7</name>
<entityName>Contract_entity</entityName>
<fieldName>ContractTypes</fieldName>
<name>1cbfe51f-43c3-4e99-895f-673097915249</name>
<entityName>DSGVOInfo_entity</entityName>
<fieldName>KeywordTransmission</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>b88b5cc8-c29e-4110-b86e-d1d0050460e5</name>
<entityName>Offer_entity</entityName>
<fieldName>KeywordCurrencies</fieldName>
<name>718da6a7-229b-4075-a8ff-b0458c770e7b</name>
<entityName>DSGVOInfo_entity</entityName>
<fieldName>KeywordGuarantee</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>57c746ee-a8c0-484a-8c73-6301609b76b1</name>
<name>2694515c-eda4-44aa-9826-d430aa8a8089</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordCurrencies</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>bf014596-954b-4c7d-9304-8283c9bcc7ae</name>
<entityName>Productprice_entity</entityName>
<fieldName>KeywordCurrencies</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>f5dcbf08-3765-4a9d-8b42-cb1219c87f57</name>
<entityName>Offeritem_entity</entityName>
<fieldName>KeywordProductGroupcodes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>53bcaa07-94eb-4e81-9e9e-c5748156dad5</name>
<entityName>Orderitem_entity</entityName>
<fieldName>KeywordProductGroupcodes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>c404b010-1634-4160-adca-7edf1535ee26</name>
<entityName>Product_entity</entityName>
<fieldName>KeywordProductGroupcodes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>3575fdd7-3dd6-4318-b0d2-32d1df821076</name>
<entityName>Forecast_entity</entityName>
<fieldName>KeywordProductGroupcodes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>5a21cbe2-4eb0-4968-80fa-b98a64599230</name>
<entityName>Offer_entity</entityName>
<fieldName>KeywordOfferStates</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>8696e561-b263-4c7c-b753-c5da44b48055</name>
<entityName>Organisation_entity</entityName>
<fieldName>KeywordOrganisationTypes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>0d54d283-f158-4b91-8f6d-026954ed9c50</name>
<entityName>Person_entity</entityName>
<fieldName>KeywordGenders</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>8d28f08b-675d-4bcf-9318-a508d45ca69e</name>
<entityName>Task_entity</entityName>
<fieldName>KeywordStates</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>b069ef7d-07a0-460c-a8e7-cde5861c96c2</name>
<entityName>Productprice_entity</entityName>
<fieldName>KeywordPricelists</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>7f134ef1-cff5-4cf4-9d2a-e288c7904c28</name>
<entityName>Offeritem_entity</entityName>
<fieldName>KeywordQuantityUnits</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>c3c3b430-a14f-46b4-909a-9b53cef35413</name>
<entityName>Orderitem_entity</entityName>
<fieldName>KeywordQuantityUnits</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>a1983efd-92f9-4a6b-8805-d2977fcde0c8</name>
<entityName>Product_entity</entityName>
<fieldName>KeywordQuantityUnits</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>026021cd-cd64-400d-8bd5-f6d044af1ad8</name>
<entityName>Member_entity</entityName>
<fieldName>KeywordMemberRoles</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>356e23f9-eb05-4e18-b0b5-cbc7c8716dba</name>
<entityName>SalesprojectSource_entity</entityName>
<fieldName>KeywordSources</fieldName>
<fieldName>KeywordOrderTypes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>36a72192-902f-431b-8f43-0bef311678f7</name>
<name>72ae7a5c-acc9-4e59-8110-f5b544f47f15</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordStates</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>e2041dea-8647-49e9-aacf-4481b75b76ff</name>
<entityName>Stock_entity</entityName>
<fieldName>KeywordWarehouses</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>403c40a4-f747-4e47-ad60-07334724d6fb</name>
<entityName>KeywordAttribute_entity</entityName>
<fieldName>KeywordAttributeTypes</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>078bbd52-87fa-44cc-9902-04af935b5fbc</name>
<entityName>Attribute_entity</entityName>
<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>
<fieldName>KeywordMediums</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>04b28ce6-a144-4c19-ac2d-4cfbc3568700</name>
<entityName>Organisation_entity</entityName>
<fieldName>KeywordPricePolitics</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>f024df05-2faf-4447-9eed-ae31b329d542</name>
<entityName>Competition_entity</entityName>
<fieldName>KeywordPricePolitics</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>60840c28-9875-4e3e-8099-5ca208d58bbe</name>
<entityName>Organisation_entity</entityName>
<fieldName>KeywordWeaknesses</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>854148e2-2532-4562-b393-832819e8d462</name>
<entityName>Organisation_entity</entityName>
<fieldName>KeywordStrenghts</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>613d5861-0494-45f9-a839-a705347a68da</name>
<entityName>Competition_entity</entityName>
<fieldName>KeywordWeaknesses</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>119d79d0-9e04-4dd0-80bb-0bc32eaae775</name>
<entityName>Competition_entity</entityName>
<fieldName>KeywordStrenghts</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>6e2d164c-1ac7-4ed0-ad8f-7bfda1328493</name>
<entityName>Salesproject_entity</entityName>
<fieldName>KeywordStates</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>3ca6d3c7-83d2-4761-bab4-50d2baecdbd6</name>
<entityName>Competition_entity</entityName>
<fieldName>KeywordPhases</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>1053a90d-574a-4ca2-b41d-42b513db0fd2</name>
<entityName>Task_entity</entityName>
<fieldName>KeywordPriorities</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>bf9f7a07-dfb9-44d0-8f9b-d3814053683e</name>
<entityName>Competition_entity</entityName>
<fieldName>KeywordStates</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>ef8b9397-6292-42de-806e-5aaf3e3db5f3</name>
<entityName>Salesproject_entity</entityName>
<fieldName>KeywordWonLost</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>5d9e0e48-ece8-4b8e-ab72-beef77b5dcc3</name>
<entityName>Task_entity</entityName>
<fieldName>KeywordProgress</fieldName>
<fieldName>KeywordDunningLevels</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>36aa04c1-5361-4e40-a036-0546db596973</name>
<entityName>Offer_entity</entityName>
<fieldName>KeywordDeliveryTerm</fieldName>
<name>ea9260e9-b5e8-457c-ae84-45c4692348ce</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordPaymentTerms</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>7e12cbd6-3a2c-4bd8-bc66-5001c282b690</name>
<entityName>Offer_entity</entityName>
<fieldName>KeywordPaymentTerm</fieldName>
<name>5d296f68-0a8f-429c-b630-e3ca88874945</name>
<entityName>Order_entity</entityName>
<fieldName>KeywordDeliveryTerms</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
</dependencies>
<children>
<entityParameter>
<name>OnlyActives_param</name>
<valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>ContainerName_param</name>
<expose v="true" />
</entityParameter>
</children>
</entityProvider>
<entityField>
<name>TITLE_TRANSLATED</name>
<valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js</valueProcess>
</entityField>
<entityParameter>
<name>OnlyActives_param</name>
<valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/onlyactives_param/valueProcess.js</valueProcess>
<expose v="true" />
<description>PARAMETER</description>
</entityParameter>
<entityConsumer>
<name>KeywordAttributeRelations</name>
<dependency>
<name>dependency</name>
<entityName>KeywordAttributeRelation_entity</entityName>
<fieldName>AttributesForKeywordEntry</fieldName>
</dependency>
<children>
<entityParameter>
<name>KeywordEntryId_param</name>
<valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelations/children/keywordentryid_param/valueProcess.js</valueProcess>
<expose v="true" />
</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" />
<documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc</documentation>
<description>PARAMETER</description>
</entityParameter>
<entityParameter>
<name>WhitelistIds_param</name>
<expose v="true" />
<documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/whitelistids_param/documentation.adoc</documentation>
</entityParameter>
<entityField>
<name>expanded</name>
<valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js</valueProcess>
</entityField>
<entityActionField>
<name>openAdminView</name>
<title>Open admin view</title>
<onActionProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
<iconId>VAADIN:CURLY_BRACKETS</iconId>
<stateProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/openadminview/stateProcess.js</stateProcess>
</entityActionField>
</entityFields>
<recordContainers>
<dbRecordContainer>
<name>db</name>
<alias>Data_alias</alias>
<isPageable v="false" />
<conditionProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
<onDBDelete>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
<linkInformation>
<linkInformation>
<name>52acbfe0-57f4-4614-83af-9882e168f431</name>
<tableName>AB_KEYWORD_ENTRY</tableName>
<primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
<isUIDTable v="true" />
<readonly v="false" />
</linkInformation>
</linkInformation>
<recordFieldMappings>
<dbRecordFieldMapping>
<name>TITLE.value</name>
<recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>SORTING.value</name>
<recordfield>AB_KEYWORD_ENTRY.SORTING</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>ISESSENTIAL.value</name>
<recordfield>AB_KEYWORD_ENTRY.ISESSENTIAL</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>ISACTIVE.value</name>
<recordfield>AB_KEYWORD_ENTRY.ISACTIVE</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>AB_KEYWORD_ENTRYID.value</name>
<recordfield>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>KEYID.value</name>
<recordfield>AB_KEYWORD_ENTRY.KEYID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CONTAINER.value</name>
<recordfield>AB_KEYWORD_ENTRY.CONTAINER</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
</recordFieldMappings>
</dbRecordContainer>
</recordContainers>
</entity>
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;
}
}
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.AB_KEYWORD_ENTRYID"));
\ No newline at end of file
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
......@@ -19,4 +19,4 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
throw new TypeError(translate.text("The code number is not a valid number."));
neon.setFieldValue("$field.SORTING", ++newCodeNumber);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment