From 8abd37e3f35b1ffb8baef605067d3ecbf9168ce8 Mon Sep 17 00:00:00 2001 From: Sophia Leierseder <s.leierseder@adito.de> Date: Thu, 4 Apr 2019 13:33:05 +0200 Subject: [PATCH] Salesproject scorecard with key figures --- .../SalesprojectChart_entity.aod | 6 +-- .../Salesproject_entity.aod | 28 +++++++++++ .../open_saleprojects/valueProcess.js | 14 ++++++ .../overall_forecast/valueProcess.js | 14 ++++++ .../overall_turnover/valueProcess.js | 14 ++++++ .../entityfields/sent_offers/valueProcess.js | 13 +++++ .../_____LANGUAGE_EXTRA.aod | 9 ++++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 4 ++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 9 ++++ neonContext/Salesproject/Salesproject.aod | 4 ++ .../SalesprojectScoreCard_view.aod | 50 +++++++++++++++++++ 11 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 entity/Salesproject_entity/entityfields/open_saleprojects/valueProcess.js create mode 100644 entity/Salesproject_entity/entityfields/overall_forecast/valueProcess.js create mode 100644 entity/Salesproject_entity/entityfields/overall_turnover/valueProcess.js create mode 100644 entity/Salesproject_entity/entityfields/sent_offers/valueProcess.js create mode 100644 neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod diff --git a/entity/SalesprojectChart_entity/SalesprojectChart_entity.aod b/entity/SalesprojectChart_entity/SalesprojectChart_entity.aod index bd720b911e..865b746689 100644 --- a/entity/SalesprojectChart_entity/SalesprojectChart_entity.aod +++ b/entity/SalesprojectChart_entity/SalesprojectChart_entity.aod @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0"> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1"> <name>SalesprojectChart_entity</name> <title>Salesproject Charts</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -14,7 +14,7 @@ <name>UID</name> </entityField> <entityField> - <name>PARENT</name> + <name>SORTING</name> <title>Parent</title> </entityField> <entityField> @@ -35,7 +35,7 @@ <element>UID.value</element> <element>X_PHASE.value</element> <element>Y_COUNT.value</element> - <element>PARENT.value</element> + <element>SORTING.value</element> </recordFields> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index fc82706d67..4f929d040c 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -517,6 +517,34 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>OVERALL_TURNOVER</name> + <title>Turnover actual year</title> + <contentType>NUMBER</contentType> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/overall_turnover/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>OVERALL_FORECAST</name> + <title>Forecast actual year</title> + <contentType>NUMBER</contentType> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/overall_forecast/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>OPEN_SALEPROJECTS</name> + <title>Open salesprojects</title> + <contentType>NUMBER</contentType> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/open_saleprojects/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>SENT_OFFERS</name> + <title>Sent offers</title> + <contentType>NUMBER</contentType> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/sent_offers/valueProcess.js</valueProcess> + </entityField> <entityProvider> <name>openSalesprojects</name> <fieldType>DEPENDENCY_IN</fieldType> diff --git a/entity/Salesproject_entity/entityfields/open_saleprojects/valueProcess.js b/entity/Salesproject_entity/entityfields/open_saleprojects/valueProcess.js new file mode 100644 index 0000000000..5bad01babc --- /dev/null +++ b/entity/Salesproject_entity/entityfields/open_saleprojects/valueProcess.js @@ -0,0 +1,14 @@ +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("system.logging"); +import("Sql_lib"); +import("system.SQLTYPES") + +var opensp = db.cell("select count(STATE) from SALESPROJECT \n\ +join AB_KEYWORD_ENTRY on KEYID = STATE and CONTAINER = 'SalesprojectState' and TITLE = 'Open' \n\ +group by KEYID, AB_KEYWORD_ENTRY.TITLE"); + +result.string(opensp); diff --git a/entity/Salesproject_entity/entityfields/overall_forecast/valueProcess.js b/entity/Salesproject_entity/entityfields/overall_forecast/valueProcess.js new file mode 100644 index 0000000000..55161154b7 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/overall_forecast/valueProcess.js @@ -0,0 +1,14 @@ +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("system.logging"); +import("Sql_lib"); +import("system.SQLTYPES") + +var forecast = db.cell(SqlCondition.begin() + .andPrepare("SALESPROJECT_FORECAST.DATE_START", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER) + .buildSql("select sum(VOLUME * 1000) from SALESPROJECT_FORECAST", "1=2")); + +result.string(forecast); diff --git a/entity/Salesproject_entity/entityfields/overall_turnover/valueProcess.js b/entity/Salesproject_entity/entityfields/overall_turnover/valueProcess.js new file mode 100644 index 0000000000..1a9825c1ad --- /dev/null +++ b/entity/Salesproject_entity/entityfields/overall_turnover/valueProcess.js @@ -0,0 +1,14 @@ +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("system.logging"); +import("Sql_lib"); +import("system.SQLTYPES") + +var turnover = db.cell(SqlCondition.begin() + .andPrepare("SALESORDER.SALESORDERDATE", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER) + .buildSql("select sum(NET + VAT) from SALESORDER", "1=2")); + +result.string(turnover); diff --git a/entity/Salesproject_entity/entityfields/sent_offers/valueProcess.js b/entity/Salesproject_entity/entityfields/sent_offers/valueProcess.js new file mode 100644 index 0000000000..c415d73135 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/sent_offers/valueProcess.js @@ -0,0 +1,13 @@ +import("system.datetime"); +import("system.db"); +import("system.result"); +import("system.vars"); +import("Date_lib"); +import("system.logging"); +import("Sql_lib"); +import("system.SQLTYPES") + +var sentoffer = db.cell("select count(STATUS) from OFFER join AB_KEYWORD_ENTRY \n\ +on KEYID = STATUS and CONTAINER = 'OfferStatus' and TITLE = 'Sent' group by KEYID, AB_KEYWORD_ENTRY.TITLE"); + +result.string(sentoffer); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 7f1bc7254a..cbab88eb79 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -2685,6 +2685,15 @@ <entry> <key>Username already exists!</key> </entry> + <entry> + <key>Salesproject Phases</key> + </entry> + <entry> + <key>Turnover actual year</key> + </entry> + <entry> + <key>Forecast actual year</key> + </entry> <entry> <key>This private person doeas already exist and can not be created once more.</key> </entry> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 4a8fb2f972..c565c0d19b 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -30,6 +30,10 @@ <key>Entrydate (Day)</key> <value>Eingangsdatum (Tag)</value> </entry> + <entry> + <key>Salesproject Phases</key> + <value>Vertriebsprojektphasen</value> + </entry> <entry> <key>Turnover</key> <value>Umsatz</value> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 7226f426ca..55aa1f3290 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -2721,6 +2721,15 @@ <entry> <key>Username already exists!</key> </entry> + <entry> + <key>Salesproject Phases</key> + </entry> + <entry> + <key>Turnover actual year</key> + </entry> + <entry> + <key>Forecast actual year</key> + </entry> <entry> <key>This private person doeas already exist and can not be created once more.</key> </entry> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index feef456053..fe73d71fbb 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -30,5 +30,9 @@ <name>d7fb7e2b-c932-4b96-be2c-ae5ec3d36beb</name> <view>SalesprojectCycle_view</view> </neonViewReference> + <neonViewReference> + <name>f93ffaae-a097-41d6-8ca8-fad02323a909</name> + <view>SalesprojectScoreCard_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod new file mode 100644 index 0000000000..642117e5d6 --- /dev/null +++ b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod @@ -0,0 +1,50 @@ +<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>SalesprojectScoreCard_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <dashletConfigurations> + <neonDashletConfiguration> + <name>KeyFigures</name> + <title>Key figures</title> + <description>Kennzahlen</description> + <fragment>Salesproject/full</fragment> + <singleton v="false" /> + <icon>VAADIN:GRID_BIG</icon> + <categories> + <neonDashletCategory> + <name>salesproject</name> + <title>Salesproject</title> + </neonDashletCategory> + </categories> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <scoreCardViewTemplate> + <name>KeyFigures</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>9c2ca675-1a37-4ceb-ad49-279bddc1150b</name> + <entityField>OVERALL_TURNOVER</entityField> + </entityFieldLink> + <entityFieldLink> + <name>23433d4d-94cb-4a25-99c1-88df451fcc34</name> + <entityField>OVERALL_FORECAST</entityField> + </entityFieldLink> + <entityFieldLink> + <name>da6c1a0b-723c-43d4-a168-1732ebe3bd34</name> + <entityField>OPEN_SALEPROJECTS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>c376674f-fe29-4527-a2b3-db67e1dca085</name> + <entityField>SENT_OFFERS</entityField> + </entityFieldLink> + </fields> + </scoreCardViewTemplate> + </children> +</neonView> -- GitLab