Skip to content
Snippets Groups Projects
Commit 17718906 authored by Pascal Neub's avatar Pascal Neub Committed by Sebastian Pongratz
Browse files

[Projekt: xRM-Sales][TicketNr.: 2001368][Verknüpfung von Produkten und Angeboten]

parent 04708ff5
No related branches found
No related tags found
No related merge requests found
Showing
with 267 additions and 119 deletions
......@@ -1188,6 +1188,20 @@
<onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
<iconId>VAADIN:TICKET</iconId>
</entityActionField>
<entityConsumer>
<name>KeywordProductGroup</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/keywordproductgroup/children/containername_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
<dbRecordContainer>
......@@ -1477,6 +1491,24 @@
<filterConditionProcess>%aditoprj%/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>Product_filter</name>
<title>Product</title>
<contentType>TEXT</contentType>
<useConsumer v="true" />
<consumer>Products</consumer>
<filterConditionProcess>%aditoprj%/entity/Offer_entity/recordcontainers/db/filterextensions/product_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>ProductGroup_filter</name>
<title>Product Group</title>
<contentType>TEXT</contentType>
<useConsumer v="true" />
<consumer>KeywordProductGroup</consumer>
<filterConditionProcess>%aditoprj%/entity/Offer_entity/recordcontainers/db/filterextensions/productgroup_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
</filterExtensions>
</dbRecordContainer>
<indexRecordContainer>
......
import("system.result");
import("KeywordRegistry_basic");
result.string($KeywordRegistry.productGroupcode());
......@@ -25,4 +25,4 @@ else if(approval == 2)
cond.andIfSet("OFFER.STATUS", "$param.OfferStatus_param")
result.string(cond.toString());
\ No newline at end of file
result.string(cond.toString());
import("system.result");
import("Sql_lib");
var sql = newSelect("OFFERITEM.OFFERITEMID").from("OFFERITEM")
.where("OFFER.OFFERID = OFFERITEM.OFFER_ID")
.and("OFFERITEM.PRODUCT_ID", "$local.rawvalue", SqlUtils.getSqlConditionalOperator());
result.string("exists (" + sql.toString() + ")");
import("system.result");
import("Sql_lib");
var sql = newSelect("OFFERITEM.OFFERITEMID").from("OFFERITEM")
.join("PRODUCT", "PRODUCT.PRODUCTID = OFFERITEM.PRODUCT_ID")
.where("OFFER.OFFERID = OFFERITEM.OFFER_ID")
.and("PRODUCT.GROUPCODEID", "$local.rawvalue", SqlUtils.getSqlConditionalOperator());
result.string("exists (" + sql.toString() + ")");
......@@ -23,8 +23,6 @@
<name>DISCOUNT</name>
<title>Discount</title>
<contentType>NUMBER</contentType>
<maxValue v="100" />
<minValue v="0" />
<outputFormat>0.00'%'</outputFormat>
<inputFormat>0.00</inputFormat>
<onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/discount/onValidation.js</onValidation>
......@@ -76,7 +74,6 @@
<inputFormat>#,##0.00</inputFormat>
<mandatory v="true" />
<displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/price/displayValueProcess.js</displayValueProcess>
<onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/price/onValidation.js</onValidation>
</entityField>
<entityField>
<name>PRODUCT_ID</name>
......@@ -87,7 +84,6 @@
<mandatory v="true" />
<stateProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/stateProcess.js</stateProcess>
<valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/valueProcess.js</valueProcess>
<displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js</displayValueProcess>
<onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValueChange.js</onValueChange>
<onValueChangeTypes>
<element>MASK</element>
......@@ -108,7 +104,6 @@
<onValueChangeTypes>
<element>MASK</element>
</onValueChangeTypes>
<onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValidation.js</onValidation>
</entityField>
<entityField>
<name>UNIT</name>
......@@ -301,6 +296,65 @@
<state>READONLY</state>
<valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/currency/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>OFFER_CODE</name>
<title>Offer number</title>
<linkedContext>Offer</linkedContext>
<state>READONLY</state>
</entityField>
<entityField>
<name>OFFER_PERSON_ID</name>
<title>Person</title>
<linkedContext>Person</linkedContext>
<state>READONLY</state>
</entityField>
<entityField>
<name>OFFER_ORGANISATION_ID</name>
<title>Company</title>
<linkedContext>Organisation</linkedContext>
<state>READONLY</state>
</entityField>
<entityField>
<name>OFFER_STATUS</name>
<title>Status</title>
<state>READONLY</state>
</entityField>
<entityField>
<name>OFFER_IMAGE</name>
<contentType>IMAGE</contentType>
<state>READONLY</state>
<valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offer_image/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>OFFER_NET</name>
<title>Total net</title>
<contentType>NUMBER</contentType>
<state>READONLY</state>
<displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offer_net/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>OFFER_CURRENCY</name>
<title>Currency</title>
<state>READONLY</state>
</entityField>
<entityField>
<name>OFFER_DATE</name>
<title>Date</title>
<contentType>DATE</contentType>
<resolution>DAY</resolution>
<outputFormat>dd.MM.yyyy</outputFormat>
<state>READONLY</state>
</entityField>
<entityField>
<name>OFFER_PROBABILITY</name>
<title>Probability</title>
<contentType>NUMBER</contentType>
<outputFormat>0'%'</outputFormat>
<state>READONLY</state>
</entityField>
<entityField>
<name>PRODUCT_GROUPCODEID</name>
</entityField>
<entityField>
<name>PICTURE</name>
<contentType>IMAGE</contentType>
......@@ -317,6 +371,7 @@
<maximumDbRows v="0" />
<isPageable v="false" />
<hasDependentRecords v="true" />
<fromClauseProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
<conditionProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<orderClauseProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
<onDBInsert>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
......@@ -416,12 +471,64 @@
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>PRODUCT_ID.displayValue</name>
<expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression>
<recordfield>PRODUCT.PRODUCTNAME</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DISCOUNT.displayValue</name>
<expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/discount.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_CODE.value</name>
<recordfield>OFFER.OFFERID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_CODE.displayValue</name>
<expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/offer_code.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_PERSON_ID.value</name>
<recordfield>CONTACT.PERSON_ID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_ORGANISATION_ID.value</name>
<recordfield>CONTACT.ORGANISATION_ID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_PERSON_ID.displayValue</name>
<expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/offer_person_id.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_ORGANISATION_ID.displayValue</name>
<recordfield>ORGANISATION.NAME</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_STATUS.value</name>
<recordfield>OFFER.STATUS</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_STATUS.displayValue</name>
<expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/offer_status.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_NET.value</name>
<recordfield>OFFER.NET</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_CURRENCY.value</name>
<recordfield>OFFER.CURRENCY</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_DATE.value</name>
<recordfield>OFFER.OFFERDATE</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>OFFER_PROBABILITY.value</name>
<recordfield>OFFER.PROBABILITY</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>PRODUCT_GROUPCODEID.value</name>
<recordfield>PRODUCT.GROUPCODEID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>PICTURE.value</name>
<expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/picture.value/expression.js</expression>
......@@ -433,12 +540,47 @@
</recordFieldMappings>
<linkInformation>
<linkInformation>
<name>1894a7fa-bc31-43c2-9ba9-d432892efdaa</name>
<name>94b18d52-4cb7-4685-bf9f-44fc50b34812</name>
<tableName>OFFERITEM</tableName>
<primaryKey>OFFERITEMID</primaryKey>
<isUIDTable v="true" />
<readonly v="false" />
</linkInformation>
<linkInformation>
<name>321ad9b2-5d2e-4bb6-8c55-924a00b80178</name>
<tableName>PRODUCT</tableName>
<primaryKey>PRODUCTID</primaryKey>
<isUIDTable v="false" />
<readonly v="true" />
</linkInformation>
<linkInformation>
<name>813cea70-5156-4f5c-8b11-ebdaff5f3d76</name>
<tableName>OFFER</tableName>
<primaryKey>OFFERID</primaryKey>
<isUIDTable v="false" />
<readonly v="true" />
</linkInformation>
<linkInformation>
<name>d4a5de75-fb96-4836-996c-b28d74158879</name>
<tableName>CONTACT</tableName>
<primaryKey>CONTACTID</primaryKey>
<isUIDTable v="false" />
<readonly v="true" />
</linkInformation>
<linkInformation>
<name>691e743c-4996-44b6-9f95-14befae0edb9</name>
<tableName>ORGANISATION</tableName>
<primaryKey>ORGANISATIONID</primaryKey>
<isUIDTable v="false" />
<readonly v="true" />
</linkInformation>
<linkInformation>
<name>d2849657-01db-4ddc-804e-7e7df8a98acc</name>
<tableName>PERSON</tableName>
<primaryKey>PERSONID</primaryKey>
<isUIDTable v="false" />
<readonly v="true" />
</linkInformation>
</linkInformation>
</dbRecordContainer>
</recordContainers>
......
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
if(validationResult)
{
result.string(validationResult);
}
import("system.result");
import("system.vars");
result.string("TEXT:" + vars.get("$field.OFFER_STATUS.displayValue"));
import("system.result");
import("system.vars");
import("system.translate");
import("Util_lib");
result.string(NumberUtils.formatWithCurrency(
vars.get("$this.value"),
translate.text("#,##0.00"),
vars.get("$field.OFFER_CURRENCY"))
);
import("Sql_lib");
import("system.db");
import("Util_lib");
import("system.result");
import("system.vars");
import("system.translate");
import("system.result");
if (vars.get("$param.Currency_param"))
{
var curr = vars.get("$param.Currency_param")
}
else {
curr = newSelect("CURRENCY")
.from("OFFER")
.whereIfSet("OFFER.OFFERID", "$field.OFFER_ID")
.cell(true);
}
import("Util_lib");
result.string(NumberUtils.formatWithCurrency(vars.get("$field.PRICE"), translate.text("#,##0.00"), curr));
\ No newline at end of file
var currency = vars.get("$param.Currency_param") || vars.get("$field.OFFER_CURRENCY");
result.string(NumberUtils.formatWithCurrency(
vars.get("$this.value"), translate.text("#,##0.00"), currency));
import("KeywordRegistry_basic");
import("system.result");
import("Sql_lib");
import("system.vars");
import("KeywordRegistry_basic");
//allow negative values if product is discount
var minValue = 0;
var productId = vars.get("$field.PRODUCT_ID");
if(productId)
{
var productGroup = newSelect("PRODUCT.GROUPCODEID")
.from("PRODUCT")
.where("PRODUCT.PRODUCTID", productId)
.cell();
if(productGroup == $KeywordRegistry.productGroupcode$discount())
{
minValue = "";
}
}
result.string(minValue);
\ No newline at end of file
// allow negative values if product is discount
var allowNegative = vars.get("$field.GROUPCODEID") == $KeywordRegistry.productGroupcode$discount();
result.string(allowNegative ? "" : 0);
import("system.result");
import("Util_lib");
import("KeywordRegistry_basic");
import("system.vars");
import("Sql_lib");
var value = vars.get("local.value");
var minValue = 0;
var productId = vars.get("$field.PRODUCT_ID");
if(productId)
{
var productGroup = newSelect("PRODUCT.GROUPCODEID")
.from("PRODUCT")
.where("PRODUCT.PRODUCTID", productId)
.cell();
if(productGroup != $KeywordRegistry.productGroupcode$discount())
{
var validationResult = NumberUtils.validateIsBetweenFloat("Unit price", value, minValue, Number.MAX_VALUE);
if (validationResult)
{
result.string(validationResult);
}
}
}
\ No newline at end of file
import("system.neon");
import("Product_lib");
import("system.vars");
import("system.result");
import("Sql_lib");
if(vars.get("$field.PRODUCT_ID") && vars.get("$sys.viewmode") != neon.FRAME_VIEWMODE_TABLE)
{
result.string(ProductUtils.getProductName(vars.get("$field.PRODUCT_ID")));
}
\ No newline at end of file
import("system.translate");
import("system.result");
import("system.vars");
import("Entity_lib");
var quatity = vars.get("$local.value") ? vars.get("$local.value") : "";
if (parseInt(quatity) <= 0)
{
result.string(translate.text("${QUANTITY_LOWER_THAN_1}"));
}
import("Sql_lib");
import("system.db");
import("Util_lib");
import("system.result");
import("system.vars");
import("system.translate");
import("system.result");
if (vars.get("$param.Currency_param"))
{
var curr = vars.get("$param.Currency_param")
}
else {
curr = newSelect("CURRENCY")
.from("OFFER")
.whereIfSet("OFFER.OFFERID", "$field.OFFER_ID")
.cell(true);
}
import("Util_lib");
result.string(NumberUtils.formatWithCurrency(vars.get("$field.TotalPrice"), translate.text("#,##0.00"), curr));
\ No newline at end of file
var currency = vars.get("$param.Currency_param") || vars.get("$field.OFFER_CURRENCY");
result.string(NumberUtils.formatWithCurrency(
vars.get("$this.value"), translate.text("#,##0.00"), currency));
......@@ -4,5 +4,5 @@ import("system.result");
import("system.vars");
var cond = newWhereIfSet("OFFERITEM.OFFER_ID", "$param.OfferId_param")
result.string(cond.toString());
\ No newline at end of file
cond.andIfSet("OFFERITEM.PRODUCT_ID", "$param.ProductId_param");
result.string(cond.toString());
import("system.result");
import("Sql_lib");
result.string(
new SqlBuilder().from("OFFERITEM")
.leftJoin("PRODUCT", "OFFERITEM.PRODUCT_ID = PRODUCT.PRODUCTID")
.leftJoin("OFFER", "OFFERITEM.OFFER_ID = OFFER.OFFERID")
.leftJoin("CONTACT", "OFFER.CONTACT_ID = CONTACT.CONTACTID")
.leftJoin("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
.leftJoin("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID")
.toString()
);
import("system.result");
import("system.SQLTYPES");
import("Sql_lib");
var maskingUtils = new SqlMaskingUtils();
var fields = [
maskingUtils.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 20),
maskingUtils.cast("OFFER.VERSNR", SQLTYPES.CHAR, 20)
];
result.string(maskingUtils.concatWithSeparator(fields, "-", false));
import("system.result");
import("Person_lib");
result.string(PersUtils.getDisplaySqlExpression());
import("system.result");
import("Keyword_lib");
import("KeywordRegistry_basic");
result.string(KeywordUtils.getResolvedTitleSqlPart(
$KeywordRegistry.offerStatus(), "OFFER.STATUS"));
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