diff --git a/FILES_MANIFEST.txt b/FILES_MANIFEST.txt new file mode 100644 index 0000000..646f072 --- /dev/null +++ b/FILES_MANIFEST.txt @@ -0,0 +1,37 @@ +EON_EMOBILITY_VIRTA (DU2) - File Manifest +========================================== + +Total Files: 23 extracted from uniorg/eon/virta + +META Directory (11 files): + 1. V_CPO_CHARGES.sql + 2. V_CPO_CHARGES_DUPLICATES.sql + 3. V_EMP_TRANSACTIONS.sql + 4. V_EMP_TRANSACTIONS_DUPLICATES.sql + 5. alter_tables.sql + 6. cpo_charges.sql + 7. create_views.sql + 8. emobility.sql + 9. emobility_view_emp_v1_0.sql + 10. emp_transactions.sql + 11. stations.sql + +V1 Directory (5 files): + 12. VirtaAPI.xshttpdest + 13. getcpotrans.xsjs + 14. getemptrans.xsjs + 15. reloadfields.xsjs + 16. testhana.xsjs + +V2 Directory (7 files): + 17. VirtaAPI.xshttpdest + 18. getcpotrans.xsjs + 19. getemptrans.xsjs + 20. getemptrans_old.xsjs + 21. reloadfields.xsjs + 22. setcpotrans.xsjs + 23. setemptrans.xsjs + +Export Date: 2026-07-08 +Source System: HANA XS Repository +Delivery Unit: EON_EMOBILITY_VIRTA diff --git a/uniorg/eon/virta/meta/V_CPO_CHARGES.sql b/uniorg/eon/virta/meta/V_CPO_CHARGES.sql new file mode 100644 index 0000000..69484ae --- /dev/null +++ b/uniorg/eon/virta/meta/V_CPO_CHARGES.sql @@ -0,0 +1,137 @@ +CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES" ( "CHECK_METHOD", + "CHECK_CONSUMED_WATTHOUR", + "CHECK_START_STOP", + "CHECK_DURATION", + "CDRID", + "UUID", + "STATIONUUID", + "EMPSELLERID", + "STARTTIME", + "STOPTIME", + "DURATION", + "WATTHOUR", + "AMOUNT", + "CURRENCY", + "METHOD", + "CREATED", + "RFID", + "STATION_ID", + "STATION_NAME", + "LOCATION_ID", + "LOCATION_ADDRESS", + "LOCATION_CITY", + "LOCATION_TYPE", + "ROAMINGEMPID", + "EVCOID", + "ORGANIZATIONID", + "FULLEVSEID", + "EVSEID", + "PLUGTYPE", + "EMPSHARE", + "SIGNEDMETERVALUEBEGIN", + "SIGNEDMETERVALUEEND", + "FREECHARGING", + "CONNECTORID", + "METERSTART", + "METERSTOP", + "NOTES", + "MILEAGE", + "CREATE_TS", + "UPDATE_TS", + "STATUS", + "BILLING", + "KWHNETPRICE", + "MINUTENETPRICE", + "SESSIONNETPRICE", + "EICHRECHTTYPE", + "CREATE_USER", + "UPDATE_USER", + "FULLEVSEID_REDUCED" ) AS WITH "CHARGEPOINT_CONTRACTS" AS (SELECT + DISTINCT T1.U_DATA_TEXT AS CHARGEPOINT + FROM "A19753_EON_P01"."@EON_CONTRACT" T0 + INNER JOIN "A19753_EON_P01"."@EON_CONTRACT_PARAM" T1 ON T0."DocEntry" = T1."DocEntry" + WHERE T1.U_COMPONENT = 'CHARGEPOINT' + AND T0."Canceled"='N') select + /* CASE WHEN CONTRACT.CHARGEPOINT IS NULL +THEN 'NOCONTACT' +else 'OK' +END as CHECK_CONTRACT_EXISTS, + */ CASE WHEN METHOD IN ('rfid', + 'onetime', + 'app') +THEN 'OK' WHEN METHOD IN ( 'auth_not_required_ocpp') +AND "RFID" NOT IN ('NOA', + 'NOA:', + '0', + 'zero', + '00', + '000', + '00000', + '00000000', + '00000000000000', + '000' ) +THEN 'OK' +ELSE 'OTHER' +END AS CHECK_METHOD , + CASE WHEN WATTHOUR > 120000 +THEN 'INVALID' WHEN WATTHOUR = 0 +THEN 'SMALL' +ELSE 'OK' +END as "CHECK_CONSUMED_WATTHOUR", + CASE WHEN STARTTIME IS NULL +THEN 'NULL' WHEN STARTTIME = STOPTIME +THEN 'EQUAL' WHEN STOPTIME < STARTTIME +THEN 'INVALID' +ELSE 'OK' +END AS "CHECK_START_STOP", + CASE WHEN DURATION IS NULL +THEN 'NULL' WHEN DURATION <= 2 +THEN 'SMALL' +ELSE 'OK' +END AS "CHECK_DURATION", + "CDRID", + "UUID", + "STATIONUUID", + "EMPSELLERID", + "STARTTIME", + "STOPTIME", + "DURATION", + "WATTHOUR", + "AMOUNT", + "CURRENCY", + "METHOD", + "CREATED", + "RFID", + "STATION_ID", + "STATION_NAME", + "LOCATION_ID", + "LOCATION_ADDRESS", + "LOCATION_CITY", + "LOCATION_TYPE", + "ROAMINGEMPID", + "EVCOID", + "ORGANIZATIONID", + "FULLEVSEID", + "EVSEID", + "PLUGTYPE", + "EMPSHARE", + "SIGNEDMETERVALUEBEGIN", + "SIGNEDMETERVALUEEND", + "FREECHARGING", + "CONNECTORID", + "METERSTART", + "METERSTOP", + "NOTES", + "MILEAGE", + "CREATE_TS", + "UPDATE_TS", + "STATUS", + "BILLING", + "KWHNETPRICE", + "MINUTENETPRICE", + "SESSIONNETPRICE", + "EICHRECHTTYPE", + "CREATE_USER", + "UPDATE_USER", + "FULLEVSEID_REDUCED" +from "VIRTAPORTAL"."CPO_CHARGES" CHARGES WITH READ ONLY \ No newline at end of file diff --git a/uniorg/eon/virta/meta/V_CPO_CHARGES_DUPLICATES.sql b/uniorg/eon/virta/meta/V_CPO_CHARGES_DUPLICATES.sql new file mode 100644 index 0000000..343b3e9 --- /dev/null +++ b/uniorg/eon/virta/meta/V_CPO_CHARGES_DUPLICATES.sql @@ -0,0 +1,85 @@ +CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES_DUPLICATES" ( "UUID", + "CDRID", + "CREATED", + "FULLEVSEID", + "STARTTIME", + "STOPTIME", + "WATTHOUR", + "DURATION", + "FREECHARGING", + "CREATE_TS", + "UPDATE_TS", + "RANK" ) AS WITH "CHARGEPOINT_CONTRACTS" AS (SELECT + DISTINCT T1.U_DATA_TEXT AS CHARGEPOINT + FROM "A19753_EON_P01"."@EON_CONTRACT" T0 + INNER JOIN "A19753_EON_P01"."@EON_CONTRACT_PARAM" T1 ON T0."DocEntry" = T1."DocEntry" + WHERE T1.U_COMPONENT = 'CHARGEPOINT' + AND T0."Canceled"='N'), + "CHARGES_VALID" AS (SELECT + UUID, + CDRID, + CREATED, + COALESCE(FULLEVSEID, + STATIONUUID) AS FULLEVSEID, + STARTTIME, + STOPTIME , + WATTHOUR, + DURATION, + "FREECHARGING", + CREATE_TS, + UPDATE_TS + FROM "VIRTAPORTAL"."V_CPO_CHARGES" AS EMPT + WHERE CHECK_CONSUMED_WATTHOUR = 'OK' + AND CHECK_START_STOP = 'OK' + AND CHECK_DURATION = 'OK' + AND UPDATE_TS > '20230101' + and exists (select + 1 + from "CHARGEPOINT_CONTRACTS" C + where EMPT.FULLEVSEID_REDUCED = C.CHARGEPOINT + OR EMPT.STATION_ID = C.CHARGEPOINT)), + "HAVING_DUPLICATES" AS (SELECT + FULLEVSEID, + STARTTIME, + COUNT(*) AS DUPLICATES + FROM CHARGES_VALID + GROUP BY FULLEVSEID, + STARTTIME HAVING COUNT(*) > 1), + "DUPLICATE_EMP_TRANSACTIONS_WITH_RANK" AS (SELECT + "V"."UUID" , + "V"."CDRID" , + "V"."CREATED" , + "V"."FULLEVSEID" , + "V"."STARTTIME" , + "V"."STOPTIME" , + "V"."WATTHOUR" , + "V"."DURATION" , + "V"."FREECHARGING" , + "V"."CREATE_TS" , + "V"."UPDATE_TS" , + RANK() OVER ( PARTITION BY FULLEVSEID, + STARTTIME + ORDER BY WATTHOUR DESC, + CDRID DESC ) AS Rank + FROM CHARGES_VALID V + WHERE EXISTS (SELECT + 1 + FROM HAVING_DUPLICATES D + WHERE D.FULLEVSEID = V.FULLEVSEID + AND D.STARTTIME = V.STARTTIME )) SELECT + "V"."UUID" , + "V"."CDRID" , + "V"."CREATED" , + "V"."FULLEVSEID" , + "V"."STARTTIME" , + "V"."STOPTIME" , + "V"."WATTHOUR" , + "V"."DURATION" , + "V"."FREECHARGING" , + "V"."CREATE_TS" , + "V"."UPDATE_TS" , + "V"."RANK" +FROM DUPLICATE_EMP_TRANSACTIONS_WITH_RANK V +ORDER BY V.STARTTIME DESC , + V.FULLEVSEID, + V.RANK WITH READ ONLY diff --git a/uniorg/eon/virta/meta/alter_tables.sql b/uniorg/eon/virta/meta/alter_tables.sql index a8f508a..7dc7743 100644 --- a/uniorg/eon/virta/meta/alter_tables.sql +++ b/uniorg/eon/virta/meta/alter_tables.sql @@ -5,9 +5,39 @@ ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("KWHNETPRICE" INTEGER CS_INT); ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("MINUTENETPRICE" INTEGER CS_INT); ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("SESSIONNETPRICE" INTEGER CS_INT); + -- Felder müssen noch im Interface gemappt werden ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("KWHGROSSPRICE" INTEGER CS_INT); ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("MINUTEGROSSPRICE" INTEGER CS_INT); ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("SESSIONGROSSPRICE" INTEGER CS_INT); -- Mapping von CPOOPERATORID übernehmen -ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("CPOOPERATORID" NVARCHAR(50)); \ No newline at end of file +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("CPOOPERATORID" NVARCHAR(50)); +--Neu 26.08.2021 Laden im Ausland Erweiterung +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("LOCATION_COUNTRY" NVARCHAR(3)); +--Neu 20.04.2022 Neue PlausiCheckFelder +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("BUSINESSVALIDATIONRESULT" NVARCHAR(100)); +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("TECHVALIDATIONRESULT" NVARCHAR(100)); +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("NOTBILLABLEREASON" NVARCHAR(200)); + +--Neu 05.06.2023 +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("FREEMINUTES" INTEGER CS_INT); + + +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("KWHNETPRICE" INTEGER CS_INT); +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("MINUTENETPRICE" INTEGER CS_INT); +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("SESSIONNETPRICE" INTEGER CS_INT); +-- Schlumpf :o) + +--04_05_2021 +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("BUSINESSVALIDATIONRESULT" NVARCHAR(100)); +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("TECHVALIDATIONRESULT" NVARCHAR(100)); +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("NOTBILLABLEREASON" NVARCHAR(200)); + +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" add ("FULLEVSEID_REDUCED" NVARCHAR(5000) AS IFNULL("substr_regex"("FULLEVSEID", + '^(.*)(\*\d)$', + 1, + 1, + 1, + ''), + "FULLEVSEID")) +; diff --git a/uniorg/eon/virta/meta/cpo_charges.sql b/uniorg/eon/virta/meta/cpo_charges.sql new file mode 100644 index 0000000..58e70de --- /dev/null +++ b/uniorg/eon/virta/meta/cpo_charges.sql @@ -0,0 +1,61 @@ +--drop table "VIRTAPORTAL"."CPO_CHARGES"; +CREATE COLUMN TABLE "VIRTAPORTAL"."CPO_CHARGES"( + "CDRID" NVARCHAR(50) NOT NULL, + "UUID" NVARCHAR(50), + "STATIONUUID" NVARCHAR(50), + "EMPSELLERID" BIGINT CS_FIXED, + "STARTTIME" NVARCHAR(50), + "STOPTIME" NVARCHAR(50), + "DURATION" INTEGER CS_INT, + "WATTHOUR" INTEGER CS_INT, + "AMOUNT" INTEGER CS_INT, + "CURRENCY" NVARCHAR(3), + "METHOD" NVARCHAR(50), + "CREATED" NVARCHAR(50), + "RFID" NVARCHAR(50), + "STATION" NCLOB MEMORY THRESHOLD 1000, + "STATION_ID" NVARCHAR(50), + "STATION_NAME" NVARCHAR(100), + "LOCATION_ID" INTEGER CS_INT, + "LOCATION_ADDRESS" NVARCHAR(100), + "LOCATION_CITY" NVARCHAR(100), + "LOCATION_TYPE" NVARCHAR(50), + "ROAMINGEMPID" NVARCHAR(50), + "EVCOID" NVARCHAR(100), + "ORGANIZATIONID" NVARCHAR(50), + "FULLEVSEID" NVARCHAR(50), + "EVSEID" NVARCHAR(50), + "PLUGTYPE" NVARCHAR(50), + "EMPSHARE" INTEGER CS_INT, + "SIGNEDMETERVALUEBEGIN" NVARCHAR(50), + "SIGNEDMETERVALUEEND" NVARCHAR(50), + "FREECHARGING" NVARCHAR(3), + "CONNECTORID" INTEGER CS_INT, + "METERSTART" INTEGER CS_INT, + "METERSTOP" INTEGER CS_INT, + "NOTES" NVARCHAR(500), + "MILEAGE" INTEGER CS_INT, + "JSONRAW" NCLOB MEMORY THRESHOLD 1000, + "CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL, + "UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL, + "STATUS" VARCHAR(1) DEFAULT 'N', + "BILLING" VARCHAR(1) DEFAULT 'Y', + PRIMARY KEY ( + "CDRID" + ) +) +UNLOAD PRIORITY 5 AUTO MERGE; + + +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ( +"CREATE_USER" NVARCHAR(50) DEFAULT CURRENT_USER NOT NULL +); + + +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ( +"UPDATE_USER" NVARCHAR(50) DEFAULT CURRENT_USER NOT NULL +); + +ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ALTER ( +"FULLEVSEID_REDUCED" NVARCHAR(5000) AS NULLIF("substr_regex"("FULLEVSEID", '^(.*)(\\*\\d)$', 1, 1, 1, ''), "FULLEVSEID") +); diff --git a/uniorg/eon/virta/meta/emp_transactions.sql b/uniorg/eon/virta/meta/emp_transactions.sql new file mode 100644 index 0000000..a3ae218 --- /dev/null +++ b/uniorg/eon/virta/meta/emp_transactions.sql @@ -0,0 +1,68 @@ +-- V1.1 (2022-11-04) +--DROP TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS"; +CREATE COLUMN TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS"( + "UUID" NVARCHAR(50) NOT NULL, + "CDRID" NVARCHAR(50), + "STATIONUUID" NVARCHAR(50), + "CUSTOMERID" BIGINT CS_FIXED, + "STARTTIME" NVARCHAR(50), + "STOPTIME" NVARCHAR(50), + "DURATION" INTEGER CS_INT, + "WATTHOUR" INTEGER CS_INT, + "AMOUNT" INTEGER CS_INT, + "CURRENCY" NVARCHAR(3), + "TRANSACTIONTYPE" NVARCHAR(50), + "CREATED" NVARCHAR(50), + "RFID" NVARCHAR(50), + "STATION" NCLOB MEMORY THRESHOLD 1000, + "STATION_ID" NVARCHAR(50), + "STATION_NAME" NVARCHAR(100), + "LOCATION_ID" INTEGER CS_INT, + "LOCATION_ADDRESS" NVARCHAR(100), + "LOCATION_CITY" NVARCHAR(100), + "LOCATION_TYPE" NVARCHAR(50), + "CUSTOMERGROUPID" NVARCHAR(50), + "CUSTOMERGROUPNAME" NVARCHAR(100), + "ORGANIZATIONID" NVARCHAR(50), + "PAYMENTTYPE" NVARCHAR(50), + "EVSEID" NVARCHAR(50), + "PLUGTYPE" NVARCHAR(50), + "EMPSHARE" INTEGER CS_INT, + "SIGNEDMETERVALUEBEGIN" NVARCHAR(50), + "SIGNEDMETERVALUEEND" NVARCHAR(50), + "OPERATORPRICE" INTEGER CS_INT, + "OPERATORCURRENCY" NVARCHAR(3), + "OPERATORID" INTEGER CS_INT, + "FREECHARGING" NVARCHAR(3), + "EMPTARIFFID" INTEGER CS_INT, + "EMPTARIFFNAME" NVARCHAR(100), + "FULLEVSEID" NVARCHAR(50), + "METERSTART" INTEGER CS_INT, + "METERSTOP" INTEGER CS_INT, + "NOTES" NVARCHAR(500), + "MILEAGE" INTEGER CS_INT, + "JSONRAW" NCLOB MEMORY THRESHOLD 1000, + "CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL, + "UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL, + "STATUS" VARCHAR(1) DEFAULT 'N', + "BILLING" VARCHAR(1) DEFAULT 'Y', + PRIMARY KEY ( + "UUID" + ) +) +UNLOAD PRIORITY 5 AUTO MERGE; + +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ALTER ( + "EMPTARIFFNAME" NVARCHAR(100) +); + + + +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ( +"CREATE_USER" NVARCHAR(50) DEFAULT CURRENT_USER NOT NULL +); + + +ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ( +"UPDATE_USER" NVARCHAR(50) DEFAULT CURRENT_USER NOT NULL +); diff --git a/uniorg/eon/virta/meta/stations.sql b/uniorg/eon/virta/meta/stations.sql new file mode 100644 index 0000000..44ddfd8 --- /dev/null +++ b/uniorg/eon/virta/meta/stations.sql @@ -0,0 +1,21 @@ +--erstmal nicht benötigt +DROP TABLE "VIRTAPORTAL"."STATIONS"; +CREATE COLUMN TABLE "VIRTAPORTAL"."STATIONS"( + "ID" NVARCHAR(50) NOT NULL, + "IDENTITY" NVARCHAR(50), + "NAME" NVARCHAR(50), + "ADDRESS" NVARCHAR(50), + "CITY" NVARCHAR(50), + "LAT" NVARCHAR(50), + "LNG" NVARCHAR(50), + "LOCATIONTYPE" INTEGER CS_INT, + "JSONRAW" NCLOB MEMORY THRESHOLD 1000, + "CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL, + "UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL, + "STATUS" VARCHAR(1) DEFAULT 'N', + "BILLING" VARCHAR(1) DEFAULT 'Y', + PRIMARY KEY ( + "ID" + ) +) +UNLOAD PRIORITY 5 AUTO MERGE; diff --git a/uniorg/eon/virta/v1/VirtaAPI.xshttpdest b/uniorg/eon/virta/v1/VirtaAPI.xshttpdest index e981de9..5edbafc 100644 --- a/uniorg/eon/virta/v1/VirtaAPI.xshttpdest +++ b/uniorg/eon/virta/v1/VirtaAPI.xshttpdest @@ -9,4 +9,4 @@ authType = none; useSSL = true; timeout = 0; sslHostCheck = false; -sslAuth = anonymous; \ No newline at end of file +sslAuth = anonymous; diff --git a/uniorg/eon/virta/v1/testhana.xsjs b/uniorg/eon/virta/v1/testhana.xsjs new file mode 100644 index 0000000..53d0719 --- /dev/null +++ b/uniorg/eon/virta/v1/testhana.xsjs @@ -0,0 +1,4 @@ + var body = JSON.stringify('Hello e.on!'); + $.response.contentType = 'application/json'; + $.response.setBody(body); + $.response.status = $.net.http.OK; diff --git a/uniorg/eon/virta/v2/VirtaAPI.xshttpdest b/uniorg/eon/virta/v2/VirtaAPI.xshttpdest index 111689a..353acbd 100644 --- a/uniorg/eon/virta/v2/VirtaAPI.xshttpdest +++ b/uniorg/eon/virta/v2/VirtaAPI.xshttpdest @@ -9,4 +9,4 @@ authType = none; useSSL = true; timeout = 0; sslHostCheck = false; -sslAuth = anonymous; \ No newline at end of file +sslAuth = anonymous;