Correct export of Delivery Unit EON_EMOBILITY_VIRTA (42 files, replaces incomplete initial export)

This commit is contained in:
Thorsten Schmitz
2026-07-09 02:05:30 +02:00
parent dafd956626
commit 3348c5d03b
42 changed files with 6303 additions and 157 deletions
-9
View File
@@ -1,9 +0,0 @@
node_modules/
.DS_Store
*.log
.idea/
.vscode/
dist/
build/
*.pyc
__pycache__/
-37
View File
@@ -1,37 +0,0 @@
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
-26
View File
@@ -1,26 +0,0 @@
# EON_EMOBILITY_VIRTA Deployment Unit
This is the EON EMOBILITY VIRTA deployment unit exported from SAP HANA XS repository.
## Structure
- `uniorg/eon/virta/meta/` - Database schema and view definitions (SQL)
- `uniorg/eon/virta/v1/` - VIRTA API v1 integration services
- `uniorg/eon/virta/v2/` - VIRTA API v2 integration services
## Components
### Meta Schema
- Database table alterations for charging transactions
- View definitions for charge data (EMP and CPO perspectives)
- Schema initialization and migration scripts
### API Integrations
- VIRTA API HTTP destination configurations
- Transaction data retrieval and management services
- Field reload and data synchronization services
## File Statistics
- Total files: 23
- SQL files: 11 (meta/)
- XSJS files: 12 (v1/ and v2/)
@@ -0,0 +1,156 @@
alter VIEW "VIRTAPORTAL"."V_EMP_TRANSACTIONS" ( "CHECK_CONSUMED_WATTHOUR",
"CHECK_START_STOP",
"CHECK_DURATION",
"CHECK_CONTRACT_EXISTS",
"CHECK_BILLING",
"BILLING_ID",
"DURATION",
"WATTHOUR",
"FREECHARGING",
"KWHNETPRICE",
"MINUTENETPRICE",
"SESSIONNETPRICE",
"TRANSACTIONTYPE",
"PAYMENTTYPE",
"CREATE_TS",
"UPDATE_TS",
"CREATE_USER",
"UPDATE_USER",
"UUID",
"EVSEID",
"STATION_ID",
"FULLEVSEID",
"CUSTOMERID",
"STARTTIME",
"STOPTIME",
"METERSTART",
"METERSTOP",
"PLUGTYPE",
"CREATED",
"RFID",
"STATION_NAME",
"LOCATION_ID",
"LOCATION_ADDRESS",
"LOCATION_CITY",
"LOCATION_TYPE",
"LOCATION_COUNTRY",
"CUSTOMERGROUPID",
"CUSTOMERGROUPNAME",
"ORGANIZATIONID",
"EMPSHARE",
"SIGNEDMETERVALUEBEGIN",
"SIGNEDMETERVALUEEND",
"OPERATORPRICE",
"OPERATORCURRENCY",
"OPERATORID",
"EMPTARIFFID",
"EMPTARIFFNAME",
"NOTES",
"MILEAGE",
"CDRID",
"STATIONUUID",
"STATUS",
"EICHRECHTTYPE",
"KWHGROSSPRICE",
"MINUTEGROSSPRICE",
"SESSIONGROSSPRICE",
"CPOOPERATORID",
"AMOUNT",
"CURRENCY",
"BILLING","FREEMINUTES" ) AS select
-- 28.06.2023
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",
CASE WHEN C.U_VIRTA_ID IS NULL
OR U_VIRTA_ID = ''
THEN 'NO CONTRACT' --WHEN ET.FULLEVSEID IS NULL THEN 'NULL'
ELSE 'OK'
END as "CHECK_CONTRACT_EXISTS",
(SELECT
LAST_VALUE(STATUS
order by ID)
FROM "A19753_EON_P01"."EON_CHARGEDATA" CD
WHERE CD.NICE_CDRID = ET.UUID
AND CD.BILLING_MODE = 'EMP' ) as CHECK_BILLING,
(SELECT
MAX(ID )
FROM "A19753_EON_P01"."EON_CHARGEDATA" CD
WHERE CD.NICE_CDRID = ET.UUID
AND CD.BILLING_MODE = 'EMP' ) as BILLING_ID,
"DURATION",
"WATTHOUR",
"FREECHARGING",
"KWHNETPRICE",
"MINUTENETPRICE",
"SESSIONNETPRICE",
"TRANSACTIONTYPE",
"PAYMENTTYPE",
ET."CREATE_TS",
ET."UPDATE_TS",
ET."CREATE_USER",
ET."UPDATE_USER",
"UUID",
"EVSEID",
"STATION_ID",
"FULLEVSEID",
"CUSTOMERID",
"STARTTIME",
"STOPTIME",
"METERSTART",
"METERSTOP",
"PLUGTYPE",
"CREATED",
"RFID",
"STATION_NAME",
"LOCATION_ID",
"LOCATION_ADDRESS",
"LOCATION_CITY",
"LOCATION_TYPE",
"LOCATION_COUNTRY",
"CUSTOMERGROUPID",
"CUSTOMERGROUPNAME",
"ORGANIZATIONID",
"EMPSHARE",
"SIGNEDMETERVALUEBEGIN",
"SIGNEDMETERVALUEEND",
"OPERATORPRICE",
"OPERATORCURRENCY",
"OPERATORID",
"EMPTARIFFID",
"EMPTARIFFNAME",
"NOTES",
"MILEAGE",
"CDRID",
"STATIONUUID",
ET."STATUS",
"EICHRECHTTYPE",
"KWHGROSSPRICE",
"MINUTEGROSSPRICE",
"SESSIONGROSSPRICE",
"CPOOPERATORID",
"AMOUNT",
"CURRENCY",
"BILLING",
"FREEMINUTES"
from "VIRTAPORTAL"."EMP_TRANSACTIONS" ET
LEFT OUTER JOIN (SELECT
DISTINCT U_VIRTA_ID
FROM "A19753_EON_P01"."@EON_CONTRACT_EVDRV") AS C ON C.U_VIRTA_ID = TO_NVARCHAR(ET."CUSTOMERID")
AND U_VIRTA_ID <> ''
WHERE ET.STARTTIME IS NOT NULL
AND ET.STOPTIME IS NOT NULL WITH READ ONLY
@@ -0,0 +1,96 @@
CREATE VIEW "VIRTAPORTAL"."V_EMP_TRANSACTIONS_DUPLICATES" ( "UUID",
"CDRID",
"CREATED",
"CUSTOMERID",
"FULLEVSEID",
"STARTTIME",
"STOPTIME",
"WATTHOUR",
"DURATION",
"FREECHARGING",
"CHECK_BILLING",
"TRANSACTIONTYPE",
"CREATE_TS",
"UPDATE_TS",
"RANK" ) AS WITH "EMP_TRANSACTIONS_VALID" AS (SELECT
-- 21.04.2023
UUID,
CDRID,
CREATED,
CUSTOMERID,
COALESCE(FULLEVSEID,
STATIONUUID) AS FULLEVSEID,
STARTTIME,
STOPTIME ,
WATTHOUR,
DURATION,
"FREECHARGING",
IFNULL(CHECK_BILLING,
'Z') AS CHECK_BILLING,
TRANSACTIONTYPE,
CREATE_TS,
UPDATE_TS
FROM "VIRTAPORTAL"."V_EMP_TRANSACTIONS" AS EMPT
WHERE CHECK_CONTRACT_EXISTS = 'OK'
AND CHECK_CONSUMED_WATTHOUR = 'OK'
AND CHECK_START_STOP = 'OK'
AND CHECK_DURATION = 'OK'
AND UPDATE_TS > '20220101'),
"HAVING_DUPLICATES" AS (SELECT
CUSTOMERID,
FULLEVSEID,
STARTTIME,
COUNT(*) AS DUPLICATES
FROM EMP_TRANSACTIONS_VALID
GROUP BY CUSTOMERID,
FULLEVSEID,
STARTTIME HAVING COUNT(*) > 1),
"DUPLICATE_EMP_TRANSACTIONS_WITH_RANK" AS (SELECT
"V"."UUID" ,
"V"."CDRID" ,
"V"."CREATED" ,
"V"."CUSTOMERID" ,
"V"."FULLEVSEID" ,
"V"."STARTTIME" ,
"V"."STOPTIME" ,
"V"."WATTHOUR" ,
"V"."DURATION" ,
"V"."FREECHARGING" ,
IFNULL("V"."CHECK_BILLING",
'Z') AS CHECK_BILLING,
"V"."TRANSACTIONTYPE" ,
"V"."CREATE_TS" ,
"V"."UPDATE_TS" ,
RANK() OVER ( PARTITION BY CUSTOMERID,
FULLEVSEID,
STARTTIME
ORDER BY CHECK_BILLING,
WATTHOUR DESC,
CDRID DESC ) AS Rank
FROM EMP_TRANSACTIONS_VALID V
WHERE EXISTS (SELECT
1
FROM HAVING_DUPLICATES D
WHERE D.FULLEVSEID = V.FULLEVSEID
AND D.STARTTIME = V.STARTTIME
AND D.CUSTOMERID = V.CUSTOMERID)) SELECT
"V"."UUID" ,
"V"."CDRID" ,
"V"."CREATED" ,
"V"."CUSTOMERID" ,
"V"."FULLEVSEID" ,
"V"."STARTTIME" ,
"V"."STOPTIME" ,
"V"."WATTHOUR" ,
"V"."DURATION" ,
"V"."FREECHARGING" ,
IFNULL("V"."CHECK_BILLING",
'Z') AS CHECK_BILLING,
"V"."TRANSACTIONTYPE" ,
"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
+1 -1
View File
@@ -39,5 +39,5 @@ ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" add ("FULLEVSEID_REDUCED" NVARCHAR(5000
1,
1,
''),
"FULLEVSEID"))
"FULLEVSEID"))
;
+1 -1
View File
@@ -57,5 +57,5 @@ ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD (
);
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ALTER (
"FULLEVSEID_REDUCED" NVARCHAR(5000) AS NULLIF("substr_regex"("FULLEVSEID", '^(.*)(\\*\\d)$', 1, 1, 1, ''), "FULLEVSEID")
"FULLEVSEID_REDUCED" NVARCHAR(5000) AS NULLIF("substr_regex"("FULLEVSEID", '^(.*)(\*\d)$', 1, 1, 1, ''), "FULLEVSEID")
);
+290
View File
@@ -0,0 +1,290 @@
ALTER VIEW "EMOBILITY"."V_CHARGEDATA_EMP" ( "ID",
"CALLID",
"CDRID",
"EVSEID",
"CONTRACTID",
"RFID",
"INSTANCE",
"TOKENTYPE",
"CONSUMEDENERGY",
"OPERATORID",
"OPERATORNAME",a
"OPERATORSUBMANDANT",
"FREECHARGE",
"CHARGEPOINTTYPE",
"MAXSOCKETPOWER",
"ADDRESS",
"ZIP",
"CITY",
"COUNTRY",
"PROVIDERID",
"PROVIDERNAME",
"CHARGINGSTARTTIME",
"CHARGINGSTOPTIME",
"PARKINGSTARTTIME",
"PARKINGSTOPTIME",
"METERSTART",
"METERSTOP",
"TARIFF",
"CURRENCY",
"VAT",
"BILLINGVALUEBRUTTO",
"BILLINGVALUENETTO",
"PARKINGTIMEPRICEBRUTTO",
"PARKINGTIMEPRICENETTO",
"ADITIONALPRICEBRUTTO",
"ADITIONALPRICENETTO",
"KWHNETPRICE",
"MINUTENETPRICE",
"SESSIONNETPRICE",
"EICHRECHTTYPE",
"MILEAGE",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
"SYSTYPE",
"VIEWVERSION" ) AS select
"UUID",
"UUID",
"UUID",
"FULLEVSEID",
"CUSTOMERID",
UPPER("RFID"),
UPPER("RFID"),
'RFID',
IFNULL("WATTHOUR",
0),
'OPERATORID',
'OPERATORNAME',
'true',
CASE "FREECHARGING" WHEN 'yes'
THEN 'true' WHEN 'no'
then 'false'
ELSE ''
END as FREECHARGE,
"PLUGTYPE",
0,
--'MAXSOCKETPOWER',
"LOCATION_ADDRESS",
'',
--LOCATION ZIP
"LOCATION_CITY",
'DE',
'PROVIDERID',
'PROVIDERNAME',
left("STARTTIME",
19),
left("STOPTIME",
19),
left("STARTTIME",
19),
left("STOPTIME",
19),
IFNULL( "METERSTART",
0),
IFNULL( "METERSTOP",
0),
'TARIFF',
"CURRENCY",
0,
--'VAT',
0,
--'BILLINGVALUEBRUTTO',
0,
--'BILLINGVALUENETTO',
0,
--'PARKINGTIMEPRICEBRUTTO',
0,
--'PARKINGTIMEPRICENETTO',
0,
--'ADITIONALPRICEBRUTTO',
0,
--'ADITIONALPRICENETTO',
"KWHGROSSPRICE" / '1.16',
"MINUTEGROSSPRICE" / '1.16',
"SESSIONGROSSPRICE" / '1.16',
-- "SESSIONGROSSPRICE" ,
"EICHRECHTTYPE",
"MILEAGE",
--'B2CPRICING',
--'ASSETOWNERPRICING',
--'CPOPRICING',
/* "STATIONUUID",
"CUSTOMERID",
"STARTTIME",
"STOPTIME",
"DURATION",
"WATTHOUR",
"AMOUNT",
"CURRENCY",
"TRANSACTIONTYPE",
"CREATED",
"RFID",
"STATION",
"CUSTOMERGROUPID",
"CUSTOMERGROUPNAME",
"ORGANIZATIONID",
"PAYMENTTYPE",
"EVSEID",
"PLUGTYPE",
"EMPSHARE",
"SIGNEDMETERVALUEBEGIN",
"SIGNEDMETERVALUEEND",
"OPERATORPRICE",
"OPERATORCURRENCY",
"OPERATORID",
"FREECHARGING",
"EMPTARIFFID",
"EMPTARIFFNAME",
"FULLEVSEID",
"METERSTART",
"METERSTOP",
"NOTES",
"MILEAGE",
*/ --"JSONRAW",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
'VIRTAPORTAL',
'V 1.4/10.09.2020'
from "VIRTAPORTAL"."EMP_TRANSACTIONS"
where "TRANSACTIONTYPE" = 'charge'
and "WATTHOUR" > 0
and "DURATION" > 2;
DROP VIEW "EMOBILITY"."V_CHARGEDATA_CPO";
CREATE VIEW "EMOBILITY"."V_CHARGEDATA_CPO" ( "ID",
"CALLID",
"CDRID",
"EVSEID",
"CONTRACTID",
"RFID",
"INSTANCE",
"TOKENTYPE",
"CONSUMEDENERGY",
"OPERATORID",
"OPERATORNAME",
"OPERATORSUBMANDANT",
"FREECHARGE",
"CHARGEPOINTTYPE",
"MAXSOCKETPOWER",
"ADDRESS",
"ZIP",
"CITY",
"COUNTRY",
"PROVIDERID",
"PROVIDERNAME",
"CHARGINGSTARTTIME",
"CHARGINGSTOPTIME",
"PARKINGSTARTTIME",
"PARKINGSTOPTIME",
"METERSTART",
"METERSTOP",
"TARIFF",
"CURRENCY",
"VAT",
"BILLINGVALUEBRUTTO",
"BILLINGVALUENETTO",
"PARKINGTIMEPRICEBRUTTO",
"PARKINGTIMEPRICENETTO",
"ADITIONALPRICEBRUTTO",
"ADITIONALPRICENETTO",
"KWHNETPRICE",
"MINUTENETPRICE",
"SESSIONNETPRICE",
"EICHRECHTTYPE",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
"SYSTYPE",
"VIEWVERSION") AS select
"CDRID",
IFNULL("UUID",
CDRID),
"CDRID",
"FULLEVSEID",
CASE WHEN "ROAMINGEMPID" > ''
THEN 'ROAMING'
ELSE 'DE-EON-C00000000-0' -- ADHOC
END as "CONTRACTID",
UPPER("RFID"),
UPPER("RFID"),
'RFID',
IFNULL("WATTHOUR",
0),
'EMPSELLERID',
'EMPSELLERID',
'true',
CASE "FREECHARGING" WHEN 'yes'
THEN 'true' WHEN 'no'
then 'false'
ELSE ''
END as FREECHARGE,
"PLUGTYPE",
0,
--'MAXSOCKETPOWER',
"LOCATION_ADDRESS",
'',
--LOCATION ZIP
"LOCATION_CITY",
'DE',
'EMPSELLERID',
'STRING',
left("STARTTIME",
19),
left("STOPTIME",
19),
left("STARTTIME",
19),
left("STOPTIME",
19),
IFNULL( "METERSTART",
0),
IFNULL( "METERSTOP",
0),
'TARIFF',
'CURRENCY',
'VAT',
--'BILLINGVALUEBRUTTO',
IFNULL("AMOUNT",
0)/100,
--'BILLINGVALUENETTO',
0,
--'PARKINGTIMEPRICEBRUTTO',
0,
--'PARKINGTIMEPRICENETTO',
0,
--'ADITIONALPRICEBRUTTO',
0,
--'ADITIONALPRICENETTO',
0,
"KWHNETPRICE",
"MINUTENETPRICE",
"SESSIONNETPRICE",
"EICHRECHTTYPE",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
'VIRTAPORTAL',
'V 1.2/31.07.2020'
from "VIRTAPORTAL"."CPO_CHARGES" --where "TRANSACTIONTYPE" = 'charge'
where "PLUGTYPE" IS NOT NULL
and "WATTHOUR" > 0
and "DURATION" > 2;
+269
View File
@@ -0,0 +1,269 @@
--V1.1 08.01.2020
create schema EMOBILITY;
ALTER VIEW "EMOBILITY"."V_CHARGEDATA_EMP" (
--Version:1.0.4 10.01.2020
"ID",
"CALLID",
"CDRID",
"EVSEID",
"CONTRACTID",
"RFID",
"INSTANCE",
"TOKENTYPE",
"CONSUMEDENERGY",
"OPERATORID",
"OPERATORNAME",
"OPERATORSUBMANDANT",
"FREECHARGE",
"CHARGEPOINTTYPE",
"MAXSOCKETPOWER",
"ADDRESS",
"ZIP",
"CITY",
"COUNTRY",
"PROVIDERID",
"PROVIDERNAME",
"CHARGINGSTARTTIME",
"CHARGINGSTOPTIME",
"PARKINGSTARTTIME",
"PARKINGSTOPTIME",
"METERSTART",
"METERSTOP",
"TARIFF",
"CURRENCY",
"VAT",
"BILLINGVALUEBRUTTO",
"BILLINGVALUENETTO",
"PARKINGTIMEPRICEBRUTTO",
"PARKINGTIMEPRICENETTO",
"ADITIONALPRICEBRUTTO",
"ADITIONALPRICENETTO",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
"SYSTYPE" ) AS select
"UUID",
"UUID",
"UUID",
"FULLEVSEID",
"CUSTOMERID",
UPPER("RFID"),
UPPER("RFID"),
'RFID',
IFNULL("WATTHOUR",
0),
'OPERATORID',
'OPERATORNAME',
'true',
CASE "FREECHARGING" WHEN 'yes'
THEN 'true' WHEN 'no'
then 'false'
ELSE ''
END as FREECHARGE,
"PLUGTYPE",
0,
--'MAXSOCKETPOWER',
"LOCATION_ADDRESS",
'',
--LOCATION ZIP
"LOCATION_CITY",
'DE',
'PROVIDERID',
'PROVIDERNAME',
left("STARTTIME",
19),
left("STOPTIME",
19),
left("STARTTIME",
19),
left("STOPTIME",
19),
IFNULL( "METERSTART",
0),
IFNULL( "METERSTOP",
0),
'TARIFF',
"CURRENCY",
0,
--'VAT',
0,
--'BILLINGVALUEBRUTTO',
0,
--'BILLINGVALUENETTO',
0,
--'PARKINGTIMEPRICEBRUTTO',
0,
--'PARKINGTIMEPRICENETTO',
0,
--'ADITIONALPRICEBRUTTO',
0,
--'ADITIONALPRICENETTO',
--'B2CPRICING',
--'ASSETOWNERPRICING',
--'CPOPRICING',
/* "STATIONUUID",
"CUSTOMERID",
"STARTTIME",
"STOPTIME",
"DURATION",
"WATTHOUR",
"AMOUNT",
"CURRENCY",
"TRANSACTIONTYPE",
"CREATED",
"RFID",
"STATION",
"CUSTOMERGROUPID",
"CUSTOMERGROUPNAME",
"ORGANIZATIONID",
"PAYMENTTYPE",
"EVSEID",
"PLUGTYPE",
"EMPSHARE",
"SIGNEDMETERVALUEBEGIN",
"SIGNEDMETERVALUEEND",
"OPERATORPRICE",
"OPERATORCURRENCY",
"OPERATORID",
"FREECHARGING",
"EMPTARIFFID",
"EMPTARIFFNAME",
"FULLEVSEID",
"METERSTART",
"METERSTOP",
"NOTES",
"MILEAGE",
*/ --"JSONRAW",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
'VIRTAPORTAL'
from "VIRTAPORTAL"."EMP_TRANSACTIONS"
where "TRANSACTIONTYPE" = 'charge'
and "WATTHOUR" > 0
and "DURATION" > 2
and "PLUGTYPE" IS NOT NULL;
ALTER VIEW "EMOBILITY"."V_CHARGEDATA_CPO" (
--V1.0.0 10.01.2020
"ID",
"CALLID",
"CDRID",
"EVSEID",
"CONTRACTID",
"RFID",
"INSTANCE",
"TOKENTYPE",
"CONSUMEDENERGY",
"OPERATORID",
"OPERATORNAME",
"OPERATORSUBMANDANT",
"FREECHARGE",
"CHARGEPOINTTYPE",
"MAXSOCKETPOWER",
"ADDRESS",
"ZIP",
"CITY",
"COUNTRY",
"PROVIDERID",
"PROVIDERNAME",
"CHARGINGSTARTTIME",
"CHARGINGSTOPTIME",
"PARKINGSTARTTIME",
"PARKINGSTOPTIME",
"METERSTART",
"METERSTOP",
"TARIFF",
"CURRENCY",
"VAT",
"BILLINGVALUEBRUTTO",
"BILLINGVALUENETTO",
"PARKINGTIMEPRICEBRUTTO",
"PARKINGTIMEPRICENETTO",
"ADITIONALPRICEBRUTTO",
"ADITIONALPRICENETTO",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
"SYSTYPE" ) AS select
"CDRID",
"UUID",
"CDRID",
"FULLEVSEID",
"EMPSELLERID",
UPPER("RFID"),
UPPER("RFID"),
'RFID',
IFNULL("WATTHOUR", 0),
'EMPSELLERID',
'EMPSELLERID',
'true',
CASE "FREECHARGING" WHEN 'yes'
THEN 'true' WHEN 'no'
then 'false'
ELSE ''
END as FREECHARGE,
"PLUGTYPE",
0,
--'MAXSOCKETPOWER',
"LOCATION_ADDRESS",
'',
--LOCATION ZIP
"LOCATION_CITY",
'DE',
'EMPSELLERID',
'STRING',
left("STARTTIME", 19),
left("STOPTIME", 19),
left("STARTTIME", 19),
left("STOPTIME", 19),
IFNULL( "METERSTART", 0),
IFNULL( "METERSTOP", 0),
'TARIFF',
'CURRENCY',
'VAT',
--'BILLINGVALUEBRUTTO',
0,
--'BILLINGVALUEBRUTTO',
0,
--'BILLINGVALUENETTO',
0,
--'PARKINGTIMEPRICEBRUTTO',
0,
--'PARKINGTIMEPRICENETTO',
0,
--'ADITIONALPRICEBRUTTO',
0,
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
'VIRTAPORTAL'
from "VIRTAPORTAL"."CPO_CHARGES"
--where "TRANSACTIONTYPE" = 'charge'
where "PLUGTYPE" IS NOT NULL;
@@ -0,0 +1,188 @@
--Version 26.08.2020
ALTER VIEW "EMOBILITY"."V_CHARGEDATA_EMP_VIRTAPORTAL" ( "ID",
"CALLID",
"CDRID",
"EVSEID",
"CONTRACTID",
"RFID",
"INSTANCE",
"TOKENTYPE",
"CONSUMEDENERGY",
"OPERATORID",
"OPERATORNAME",
"OPERATORSUBMANDANT",
"FREECHARGE",
"CHARGEPOINTTYPE",
"METERID",
"MAXSOCKETPOWER",
"ADDRESS",
"ZIP",
"CITY",
"COUNTRY",
"PROVIDERID",
"PROVIDERNAME",
"CHARGINGSTARTTIME",
"CHARGINGSTOPTIME",
"PARKINGSTARTTIME",
"PARKINGSTOPTIME",
"METERSTART",
"METERSTOP",
"TARIFF",
"CURRENCY",
"VAT",
"BILLINGVALUEBRUTTO",
"BILLINGVALUENETTO",
"PARKINGTIMEPRICEBRUTTO",
"PARKINGTIMEPRICENETTO",
"ADITIONALPRICEBRUTTO",
"ADITIONALPRICENETTO",
"KWHNETPRICE",
"MINUTENETPRICE",
"SESSIONNETPRICE",
"DURATION",
"EICHRECHTTYPE",
"MILEAGE",
"SUBSCRIPTION_ID",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
"SYSTYPE",
"VIEWVERSION" ) AS (select
"UUID",
"UUID",
"UUID",
"FULLEVSEID",
TO_NVARCHAR("CUSTOMERID"),
UPPER("RFID"),
UPPER("RFID"),
'RFID',
IFNULL("WATTHOUR",
0),
CPOOPERATORID,
'OPERATORNAME',
'true',
CASE "FREECHARGING" WHEN 'yes'
THEN 'true' WHEN 'no'
THEN 'false'
ELSE 'false'
END as FREECHARGE,
CASE CPOOPERATORID WHEN 'DE*ION'
THEN 'ION' WHEN 'DE*UFC'
THEN 'UFC'
ELSE IFNULL("PLUGTYPE" ,
'UNKNOWN')
END as "PLUGTYPE",
'METERID',
0,
REPLACE(REPLACE("LOCATION_ADDRESS",
'&',
' '),
';',
' '),
'',
--LOCATION ZIP
"LOCATION_CITY",
"LOCATION_COUNTRY",
'PROVIDERID',
'PROVIDERNAME',
left("STARTTIME",
19),
left("STOPTIME",
19),
left("STARTTIME",
19),
left("STOPTIME",
19),
IFNULL( "METERSTART",
0),
IFNULL( "METERSTOP",
0),
'TARIFF',
"CURRENCY",
0,
--'VAT',
0,
--'BILLINGVALUEBRUTTO',
0,
--'BILLINGVALUENETTO',
0,
--'PARKINGTIMEPRICEBRUTTO',
0,
--'PARKINGTIMEPRICENETTO',
0,
--'ADITIONALPRICEBRUTTO',
0,
--'ADITIONALPRICENETTO',
"KWHGROSSPRICE" / '119',
-- "MINUTEGROSSPRICE" / '119',
CAST(null as DECIMAL(17,
3)) as "MINUTENETPRICE",
-- "SESSIONGROSSPRICE" / '119' ,
CASE WHEN "SESSIONGROSSPRICE" IS NULL
AND "MINUTEGROSSPRICE" IS NOT NULL
AND "FREECHARGING" = 'yes'
THEN 0.0 WHEN "SESSIONGROSSPRICE" IS NULL
AND "MINUTEGROSSPRICE" IS NOT NULL
AND NOT "FREECHARGING" = 'yes'
THEN 5.0
ELSE "SESSIONGROSSPRICE" / '119'
END as "SESSIONNETPRICE",
"DURATION" ,
"EICHRECHTTYPE",
"MILEAGE",
'',
--'B2CPRICING',
--'ASSETOWNERPRICING',
--'CPOPRICING',
/* "STATIONUUID",
"CUSTOMERID",
"STARTTIME",
"STOPTIME",
"DURATION",
"WATTHOUR",
"AMOUNT",
"CURRENCY",
"TRANSACTIONTYPE",
"CREATED",
"RFID",
"STATION",
"CUSTOMERGROUPID",
"CUSTOMERGROUPNAME",
"ORGANIZATIONID",
"PAYMENTTYPE",
"EVSEID",
"PLUGTYPE",
"EMPSHARE",
"SIGNEDMETERVALUEBEGIN",
"SIGNEDMETERVALUEEND",
"OPERATORPRICE",
"OPERATORCURRENCY",
"OPERATORID",
"FREECHARGING",
"EMPTARIFFID",
"EMPTARIFFNAME",
"FULLEVSEID",
"METERSTART",
"METERSTOP",
"NOTES",
"MILEAGE",
*/ --"JSONRAW",
"CREATE_TS",
"UPDATE_TS",
"STATUS",
"BILLING",
'VIRTAPORTAL',
'V 2.5/26.8.2021'
from "VIRTAPORTAL"."EMP_TRANSACTIONS"
where "TRANSACTIONTYPE" = 'charge' --and ("PLUGTYPE" is not null OR "CPOOPERATORID" in ('DE*ION','DE*UFC'))
and "STOPTIME" >= '2020-01-01'
and "WATTHOUR" > 0
and "DURATION" > 2)
+438
View File
@@ -0,0 +1,438 @@
// Prod API Documentation Url: https://virta-api-admin.api-docs.io/
var ParDebug = false;
var Billingrunmode = "EMP";
var DateFrom = "";
var DateTo = "";
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var destn_pkg = "uniorg.eon.virta.v1";
var dest_name = "VirtaAPI";
var serviceVersion = '1.5';
var pageSize = 100;
/*if ($.request.parameters.get("pageSize")) {
pageSize = $.request.parameters.get("pageSize");
}*/
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function getVirtaToken(ifUsername, ifPassword) {
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.POST, "/auth");
req.contentType = "application/json";
outMsg = {};
outMsg.username = ifUsername;
outMsg.password = ifPassword;
req.setBody(JSON.stringify(outMsg));
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString();
var retObj = JSON.parse(b1iResp);
return retObj.token.toString();
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
function sleep(seconds) {
var currentTime = new Date().getTime();
while (currentTime + seconds * 1000 >= new Date().getTime()) {
}
}
function getCPOList() {
var mytoken = getVirtaToken("b1_api_user", "qEJPiFLtBHgYR10vkWmqs4");
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "/cpo/charges");
req.contentType = "application/json";
req.headers.set("Authorization", "Bearer" + mytoken);
req.parameters.set("perPage", pageSize.toString());
req.parameters.set("from", DateFrom);
req.parameters.set("to", DateTo);
var totalCount = 1;
myDebug.Calls = [];
for (var p = 1; p <= Math.ceil(totalCount / pageSize); ++p) {
var debugCall = {};
debugCall.request = { "page": p };
req.parameters.set("page", p.toString());
client.request(req, dest);
var response = client.getResponse();
// get all the cookies and headers from the response
var he = [];
for(var c in response.headers) {
he.push(response.headers[c]);
}
debugCall.response = { "headers": he };
if (response.status === 429) {
// HTTP Status 429 "Too many requests"
var retryAfter = parseInt(response.headers.get('retry-after'), 10) + 1;
if (!(retryAfter > 0)) {
retryAfter = 10;
}
debugCall.waitSeconds = retryAfter;
sleep(retryAfter);
--p;
myDebug.Calls.push(debugCall);
} else if (response.status >= 200 && response.status < 300) {
var virtaBody = response.body.asString();
totalCount = response.headers.get('X-Total-Count');
var maxPageSize = Math.ceil(totalCount / pageSize);
debugCall.totalCount = totalCount;
debugCall.pagesCount = maxPageSize;
debugCall.link = response.headers.get('link');
debugCall.responseLineCount = JSON.parse(virtaBody).length;
myDebug.Calls.push(debugCall);
writeObj2Table(virtaBody);
} else {
debugCall.responseStatus = response.status;
myDebug.Calls.push(debugCall);
break;
}
}
//$.response.status = $.net.http.OK;
//$.response.contentType = "application/json";
// $.response.setBody(JSON.stringify(b1iResp));
//$.response.setBody(JSON.stringify(virtaBody));
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
var query = "select \"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL from dummy";
pstmt = conn.prepareStatement(query);
var rs = pstmt.executeQuery();
if (!rs.next()) {
outMsg = {};
outMsg.method = "getnexval from sequence error";
outMsg.status = "error";
// outMsg.message = e.message;
outMessages.push(outMsg);
} else {
return rs.getString(1);
}
rs.close();
pstmt.close();
conn.close();
}
function writeObj2Table(myOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var transOBJ = JSON.parse(myOBJ);
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
query =
"UPSERT \"VIRTAPORTAL\".\"CPO_CHARGES\" (CDRID,UUID,STATIONUUID,EMPSELLERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,METHOD,CREATED,RFID,STATION,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,JSONRAW,UPDATE_TS,EICHRECHTTYPE) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(1, transRow.cdrId);
} else {
pstmt.setNull(1);
}
if (transRow.UUID){
pstmt.setNString(2, transRow.UUID);
} else {
pstmt.setNull(2);
}
if (!isNaN(parseInt(transRow.locationId))) {
pstmt.setInteger(3, transRow.locationId);
} else {
pstmt.setNull(3);
}
if (!isNaN(parseInt(transRow.empSellerId))) {
pstmt.setInteger(4, transRow.empSellerId);
} else {
pstmt.setNull(4);
}
if (transRow.startTime) {
pstmt.setNString(5, transRow.startTime);
} else {
pstmt.setNull(5);
}
if (transRow.stopTime) {
pstmt.setNString(6, transRow.stopTime);
} else {
pstmt.setNull(6);
}
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
pstmt.setNString(10, transRow.currency);
pstmt.setNString(11, transRow.method);
if (transRow.created) {
pstmt.setNString(12, transRow.created);
} else {
pstmt.setNull(12);
}
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
pstmt.setNString(15, transRow.station.identity);
pstmt.setNString(16, transRow.station.name);
pstmt.setInteger(17, transRow.station.location.id);
pstmt.setNString(18, transRow.station.location.address);
pstmt.setNString(19, transRow.station.location.city);
pstmt.setNString(20, transRow.station.location.locationType);
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
}
if (transRow.roamingEmpId) {
pstmt.setNString(21, transRow.roamingEmpId);
} else {
pstmt.setNull(21);
}
pstmt.setNString(22, transRow.evcoId);
pstmt.setInteger(23, transRow.organizationId);
if (transRow.fullEvseId) {
pstmt.setNString(24, transRow.fullEvseId);
} else {
pstmt.setNull(24);
}
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
pstmt.setNString(26, transRow.socketType);
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin.substring(0,50));
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd.substring(0,50));
} else {
pstmt.setNull(29);
}
pstmt.setNString(30, transRow.freeCharging);
if (!isNaN(parseInt(transRow.connectorId))) {
pstmt.setInteger(31, transRow.connectorId);
} else {
pstmt.setNull(31);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(32, transRow.meterStart);
} else {
pstmt.setNull(32);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(33, transRow.meterStop);
} else {
pstmt.setNull(33);
}
pstmt.setNString(34, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(35, transRow.notes[0].value);
} else {
pstmt.setNull(35);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(36, JSON.stringify(transRow));
pstmt.setNString(37, transRow.eichrechtType);
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
}
}
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
if ($.request.parameters.get('Billingrunmode') > 0) {
Billingrunmode = $.request.parameters.get('Billingrunmode');
}
if ($.request.parameters.get('DateFrom')) {
DateFrom = $.request.parameters.get('DateFrom');
}
if ($.request.parameters.get('DateTo')) {
DateTo = $.request.parameters.get('DateTo');
}
//doHTTPCallstartBillingrun("FEE","20180101","20180131");
//getVirtaToken("b1_api_user","E3qq$§U,Q3hD#K2}");
getCPOList();
setOutputMessage();
+557
View File
@@ -0,0 +1,557 @@
// Prod API Documentation Url: https://virta-api-admin.api-docs.io/
var ParDebug = false;
var Billingrunmode = "EMP";
var DateFrom = "";
var DateTo = "";
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var destn_pkg = "uniorg.eon.virta.v1";
var dest_name = "VirtaAPI";
var serviceVersion = '2.2';
//Last Change Mapping 30.06.2021 TS UO
var pageSize = 100;
/*if ($.request.parameters.get("pageSize")) {
pageSize = $.request.parameters.get("pageSize");
}*/
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function getVirtaToken(ifUsername, ifPassword) {
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.POST, "/auth");
req.contentType = "application/json";
outMsg = {};
outMsg.username = ifUsername;
outMsg.password = ifPassword;
req.setBody(JSON.stringify(outMsg));
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString();
var retObj = JSON.parse(b1iResp);
return retObj.token.toString();
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
function sleep(seconds) {
var currentTime = new Date().getTime();
while (currentTime + seconds * 1000 >= new Date().getTime()) {}
}
function getEMPList() {
var mytoken = getVirtaToken("b1_api_user", "qEJPiFLtBHgYR10vkWmqs4");
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "/emp/transactions");
req.contentType = "application/json";
req.headers.set("Authorization", "Bearer" + mytoken);
req.parameters.set("perPage", pageSize.toString());
req.parameters.set("from", DateFrom);
req.parameters.set("to", DateTo);
var totalCount = 1;
myDebug.Calls = [];
for (var p = 1; p <= Math.ceil(totalCount / pageSize); ++p) {
var debugCall = {};
debugCall.request = {
"page": p
};
req.parameters.set("page", p.toString());
client.request(req, dest);
var response = client.getResponse();
// get all the cookies and headers from the response
var he = [];
for (var c in response.headers) {
he.push(response.headers[c]);
}
debugCall.response = {
"headers": he
};
if (response.status === 429) {
// HTTP Status 429 "Too many requests"
var retryAfter = parseInt(response.headers.get('retry-after'), 10) + 1;
if (!(retryAfter > 0)) {
retryAfter = 10;
}
debugCall.waitSeconds = retryAfter;
sleep(retryAfter);
--p;
myDebug.Calls.push(debugCall);
} else if (response.status >= 200 && response.status < 300) {
var virtaBody = response.body.asString();
totalCount = response.headers.get('X-Total-Count');
var maxPageSize = Math.ceil(totalCount / pageSize);
debugCall.totalCount = totalCount;
debugCall.pagesCount = maxPageSize;
debugCall.link = response.headers.get('link');
debugCall.responseLineCount = JSON.parse(virtaBody).length;
myDebug.Calls.push(debugCall);
writeObj2Table(virtaBody);
} else {
debugCall.responseStatus = response.status;
myDebug.Calls.push(debugCall);
break;
}
//debugCall.virtaBody = virtaBody;
// debugCall.header = response.headers.toSting();
}
//$.response.status = $.net.http.OK;
//$.response.contentType = "application/json";
// $.response.setBody(JSON.stringify(b1iResp));
//$.response.setBody(JSON.stringify(virtaBody));
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
var query = "select \"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL from dummy";
pstmt = conn.prepareStatement(query);
var rs = pstmt.executeQuery();
if (!rs.next()) {
outMsg = {};
outMsg.method = "getnexval from sequence error";
outMsg.status = "error";
// outMsg.message = e.message;
outMessages.push(outMsg);
} else {
return rs.getString(1);
}
rs.close();
pstmt.close();
conn.close();
}
function writeObj2Table(myOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var transOBJ = JSON.parse(myOBJ);
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
query =
"UPSERT \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" (UUID,CDRID,STATIONUUID,CUSTOMERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,TRANSACTIONTYPE,CREATED,RFID,STATION,STATION_ID,STATION_NAME,LOCATION_ID,LOCATION_ADDRESS,LOCATION_CITY,LOCATION_TYPE,CUSTOMERGROUPID,CUSTOMERGROUPNAME,ORGANIZATIONID,PAYMENTTYPE,EVSEID,PLUGTYPE,EMPSHARE,SIGNEDMETERVALUEBEGIN,SIGNEDMETERVALUEEND,OPERATORPRICE,OPERATORCURRENCY,OPERATORID,FREECHARGING,EMPTARIFFID,EMPTARIFFNAME,FULLEVSEID,METERSTART,METERSTOP,NOTES,MILEAGE,JSONRAW,UPDATE_TS,EICHRECHTTYPE,KWHNETPRICE,MINUTENETPRICE,SESSIONNETPRICE,CPOOPERATORID,KWHGROSSPRICE,MINUTEGROSSPRICE,SESSIONGROSSPRICE,LOCATION_COUNTRY) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?,?,?,?,?,?,?,?,?) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
if (transRow.uuid) {
pstmt.setNString(1, transRow.uuid);
} else {
pstmt.setNull(1);
}
/*
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(2, transRow.cdrId);
} else {
pstmt.setNull(2);
}
*/
if (transRow.cdrId) {
pstmt.setNString(2, transRow.cdrId.toString());
} else {
pstmt.setNull(2);
}
if (transRow.stationUuid) {
pstmt.setNString(3, transRow.stationUuid);
} else {
pstmt.setNull(3);
}
if (!isNaN(parseInt(transRow.customerId))) {
pstmt.setInteger(4, transRow.customerId);
} else {
pstmt.setNull(4);
}
if (transRow.startTime) {
pstmt.setNString(5, transRow.startTime);
} else {
pstmt.setNull(5);
}
if (transRow.stopTime) {
pstmt.setNString(6, transRow.stopTime);
} else {
pstmt.setNull(6);
}
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
if (transRow.currency) {
pstmt.setNString(10, transRow.currency);
} else {
pstmt.setNull(10);
}
if (transRow.transactionType) {
pstmt.setNString(11, transRow.transactionType);
} else {
pstmt.setNull(11);
}
if (transRow.created) {
pstmt.setNString(12, transRow.created);
} else {
pstmt.setNull(12);
}
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
pstmt.setNString(15, transRow.station.identity);
if (transRow.station.name) {
pstmt.setNString(16, transRow.station.name);
} else {
pstmt.setNull(16);
}
if (typeof transRow.station.location === "undefined" || !transRow.station.location.id || !transRow.station.location.address || !transRow.station.location.city || !transRow.station.location.locationType || !transRow.station.location.country) {
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
pstmt.setNull(50);
} else {
pstmt.setInteger(17, transRow.station.location.id);
pstmt.setNString(18, transRow.station.location.address);
pstmt.setNString(19, transRow.station.location.city);
pstmt.setNString(20, transRow.station.location.locationType);
pstmt.setNString(50, transRow.station.location.country);
}
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
pstmt.setNull(50);
}
pstmt.setInteger(21, transRow.customerGroupId);
if (transRow.customerGroupName) {
pstmt.setNString(22, transRow.customerGroupName);
} else {
pstmt.setNull(22);
}
if (!isNaN(parseInt(transRow.organizationId))) {
pstmt.setInteger(23, transRow.organizationId);
} else {
pstmt.setNull(23);
}
if (transRow.paymentType) {
pstmt.setNString(24, transRow.paymentType);
} else {
pstmt.setNull(24);
}
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
if (transRow.plugType) {
pstmt.setNString(26, transRow.plugType);
} else {
pstmt.setNull(26);
}
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin.substring(0, 50));
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd.substring(0, 50));
} else {
pstmt.setNull(29);
}
if (!isNaN(parseInt(transRow.operatorPrice))) {
pstmt.setInteger(30, transRow.operatorPrice);
} else {
pstmt.setNull(30);
}
if (transRow.operatorCurrency) {
pstmt.setNString(31, transRow.operatorCurrency);
} else {
pstmt.setNull(31);
}
if (!isNaN(parseInt(transRow.operatorId))) {
pstmt.setInteger(32, transRow.operatorId);
} else {
pstmt.setNull(32);
}
if (transRow.freeCharging) {
pstmt.setNString(33, transRow.freeCharging);
} else {
pstmt.setNull(33);
}
if (!isNaN(parseInt(transRow.empTariffId))) {
pstmt.setInteger(34, transRow.empTariffId);
} else {
pstmt.setNull(34);
}
if (transRow.empTariffName) {
pstmt.setNString(35, transRow.empTariffName.substring(0, 50));
} else {
pstmt.setNull(35);
}
if (transRow.fullEvseId) {
pstmt.setNString(36, transRow.fullEvseId.substring(0, 50));
} else {
pstmt.setNull(36);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(37, transRow.meterStart);
} else {
pstmt.setNull(37);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(38, transRow.meterStop);
} else {
pstmt.setNull(38);
}
pstmt.setNString(39, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(40, transRow.notes[0].value);
} else {
pstmt.setNull(40);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(41, JSON.stringify(transRow));
if (transRow.eichrechtType) {
pstmt.setNString(42, transRow.eichrechtType);
} else {
pstmt.setNull(42);
}
if (!isNaN(parseInt(transRow.empKwhNetPrice))) {
pstmt.setInteger(43, transRow.empKwhNetPrice);
} else {
pstmt.setNull(43);
}
if (!isNaN(parseInt(transRow.empMinuteNetPrice))) {
pstmt.setInteger(44, transRow.empMinuteNetPrice);
} else {
pstmt.setNull(44);
}
if (!isNaN(parseInt(transRow.empSessionNetPrice))) {
pstmt.setInteger(45, transRow.empSessionNetPrice);
} else {
pstmt.setNull(45);
}
if (transRow.cpoOperatorId) {
pstmt.setNString(46, transRow.cpoOperatorId);
} else {
pstmt.setNull(46);
}
if (!isNaN(parseInt(transRow.empKwhGrossPrice))) {
pstmt.setInteger(47, transRow.empKwhGrossPrice);
} else {
pstmt.setNull(47);
}
if (!isNaN(parseInt(transRow.empMinuteGrossPrice))) {
pstmt.setInteger(48, transRow.empMinuteGrossPrice);
} else {
pstmt.setNull(48);
}
if (!isNaN(parseInt(transRow.empSessionGrossPrice))) {
pstmt.setInteger(49, transRow.empSessionGrossPrice);
} else {
pstmt.setNull(49);
}
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
}
}
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
if ($.request.parameters.get('Billingrunmode') > 0) {
Billingrunmode = $.request.parameters.get('Billingrunmode');
}
if ($.request.parameters.get('DateFrom')) {
DateFrom = $.request.parameters.get('DateFrom');
}
if ($.request.parameters.get('DateTo')) {
DateTo = $.request.parameters.get('DateTo');
}
//doHTTPCallstartBillingrun("FEE","20180101","20180131");
//getVirtaToken("b1_api_user","E3qq$§U,Q3hD#K2}");
getEMPList();
setOutputMessage();
+216
View File
@@ -0,0 +1,216 @@
var output = {};
var outMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var serviceName = "eon.virta.v1.reloadfields.xsjs";
var serviceVersion = '1.0';
var startTS = new Date();
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
output.durationSeconds = Math.floor((new Date() - startTS)/1000);
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
if (outMsg.method && outMessages.indexOf(outMsg) === -1) {
outMsg.status = "canceled";
outMessages.push(outMsg);
}
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
//$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
// Workaround, weil CRM scheinbar Probleme mit anderen Statuscodes hat
$.response.status = $.net.http.OK;
}
function checkParams() {
var isValid = true;
var missingParams = [];
try {
if (!$.request.parameters.get("field")) {
missingParams.push("field");
isValid = false;
}
} catch (e) {
exceptionHandler(e);
isValid = false;
}
if (!isValid) {
outMsg = {};
outMsg.method = "checkParams";
outMsg.status = "error";
outStatus = "error";
outMsg.message = "missing mandatory parameters: " + missingParams.join();
outMessages.push(outMsg);
$.response.status = $.net.http.BAD_REQUEST;
}
return isValid;
}
function getEmpTransactionData() {
var limit = 1000;
var offset = 0;
outMsg = {};
outMsg.method = "getEmpTransactionData";
outMsg.status = "error";
var resultData = {};
var resultSet = [];
var conn = $.hdb.getConnection();
do {
if (debugLevel > 1) {
outMsg.limit = limit;
outMsg.offset = offset;
}
var queryResult = conn.executeQuery(
"select UUID, JSONRAW \
from VIRTAPORTAL.EMP_TRANSACTIONS \
where STARTTIME >= '20220101' and JSONRAW is not null \
order by UUID \
limit ? offset ?", limit, offset);
var iterator = queryResult.getIterator();
while (iterator.next()) {
resultSet.push(iterator.value());
}
offset += limit;
} while (queryResult.length === limit)
conn.close();
resultData = {
count: resultSet.length,
rows: resultSet
};
outMsg.status = "success";
outMsg.result = resultData;
if (debugLevel > 0 || outMsg.status === "error") {
outMessages.push(outMsg);
}
return resultData;
}
function updateEmpFreeMinutes() {
var empTransData = getEmpTransactionData();
var completeData = [];
if (empTransData.count > 0) {
completeData = empTransData.rows.map(function(row) {
var parsedData = {};
var valid = true;
try {
parsedData = JSON.parse(row.JSONRAW);
if (!parsedData.hasOwnProperty('empFreeMinutes')) {
valid = false;
}
} catch (e) {
valid = false;
}
return {
UUID: row.UUID,
FREEMINUTES: parsedData.empFreeMinutes,
valid: valid
};
});
}
// myDebug.completeData = completeData;
/*var updateData = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return {
UUID: row.UUID,
FREEMINUTES: row.parsedData.empFreeMinutes
};
});*/
//myDebug.updateData = updateData;
if (completeData.some(function(row) {return row.valid;})) {
var paramList = completeData.filter(function(row) {return row.valid;}).map(function(row) {
return [row.FREEMINUTES, row.UUID];
});
outMsg = {};
outMsg.method = "updateData";
outMsg.status = "error";
var resultData = {};
var conn = $.hdb.getConnection();
var statement = "update VIRTAPORTAL.EMP_TRANSACTIONS \
set FREEMINUTES = ? \
where UUID = ?";
if (debugLevel > 1) {
outMsg.statement = statement;
outMsg.paramList = paramList;
}
var affectedRows = conn.executeUpdate(statement, paramList);
conn.commit();
conn.close();
resultData = {
count: affectedRows.reduce(function(cur, acc) {return cur + acc;}, 0)
};
outMsg.status = "success";
outMsg.result = resultData;
outMessages.push(outMsg);
}
}
function chooseMode(field) {
switch (field) {
case 'empfreeminutes':
updateEmpFreeMinutes();
break;
default:
exceptionHandler(new Error("unsupported mode: field=" + field));
}
}
try {
if (checkParams()) {
chooseMode($.request.parameters.get("field"));
}
} catch (e) {
exceptionHandler(e);
}
setOutputMessage();
+416
View File
@@ -0,0 +1,416 @@
// Prod API Documentation Url: https://virta-api-admin.api-docs.io/
var ParDebug = false;
var Billingrunmode = "EMP";
var DateFrom = "";
var DateTo = "";
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var destn_pkg = "uniorg.eon.virta.v1";
var dest_name = "VirtaAPI";
var serviceVersion = '1.3';
var pageSize = 100;
/*if ($.request.parameters.get("pageSize")) {
pageSize = $.request.parameters.get("pageSize");
}*/
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function getVirtaToken(ifUsername, ifPassword) {
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.POST, "/auth");
req.contentType = "application/json";
outMsg = {};
outMsg.username = ifUsername;
outMsg.password = ifPassword;
req.setBody(JSON.stringify(outMsg));
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString();
var retObj = JSON.parse(b1iResp);
return retObj.token.toString();
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
function getCPOList() {
var mytoken = getVirtaToken("b1_api_user", "E3qq$§U,Q3hD#K2}");
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "/cpo/charges");
req.contentType = "application/json";
req.headers.set("Authorization", "Bearer" + mytoken);
req.parameters.set("perPage", pageSize.toString());
req.parameters.set("from", DateFrom);
req.parameters.set("to", DateTo);
var totalCount = 1;
myDebug.Calls = [];
for (var p = 1; p <= Math.ceil(totalCount / pageSize); ++p) {
var debugCall = {};
debugCall.request = { "page": p };
req.parameters.set("page", p.toString());
client.request(req, dest);
var response = client.getResponse();
// get all the cookies and headers from the response
var he = [];
for(var c in response.headers) {
he.push(response.headers[c]);
}
debugCall.response = { "headers": he };
var virtaBody = response.body.asString();
totalCount = response.headers.get('X-Total-Count');
var maxPageSize = Math.ceil(totalCount / pageSize);
debugCall.totalCount = totalCount;
debugCall.pagesCount = maxPageSize;
debugCall.link = response.headers.get('link');
debugCall.responseLineCount = JSON.parse(virtaBody).length;
//debugCall.virtaBody = virtaBody;
// debugCall.header = response.headers.toSting();
myDebug.Calls.push(debugCall);
writeObj2Table(virtaBody);
}
//$.response.status = $.net.http.OK;
//$.response.contentType = "application/json";
// $.response.setBody(JSON.stringify(b1iResp));
//$.response.setBody(JSON.stringify(virtaBody));
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
var query = "select \"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL from dummy";
pstmt = conn.prepareStatement(query);
var rs = pstmt.executeQuery();
if (!rs.next()) {
outMsg = {};
outMsg.method = "getnexval from sequence error";
outMsg.status = "error";
// outMsg.message = e.message;
outMessages.push(outMsg);
} else {
return rs.getString(1);
}
rs.close();
pstmt.close();
conn.close();
}
function writeObj2Table(myOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var transOBJ = JSON.parse(myOBJ);
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
query =
"UPSERT \"VIRTAPORTAL\".\"CPO_CHARGES\" (CDRID,UUID,STATIONUUID,EMPSELLERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,METHOD,CREATED,RFID,STATION,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,JSONRAW,UPDATE_TS,EICHRECHTTYPE) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(1, transRow.cdrId);
} else {
pstmt.setNull(1);
}
if (transRow.UUID){
pstmt.setNString(2, transRow.UUID);
} else {
pstmt.setNull(2);
}
if (!isNaN(parseInt(transRow.locationId))) {
pstmt.setInteger(3, transRow.locationId);
} else {
pstmt.setNull(3);
}
if (!isNaN(parseInt(transRow.empSellerId))) {
pstmt.setInteger(4, transRow.empSellerId);
} else {
pstmt.setNull(4);
}
if (transRow.startTime) {
pstmt.setNString(5, transRow.startTime);
} else {
pstmt.setNull(5);
}
if (transRow.stopTime) {
pstmt.setNString(6, transRow.stopTime);
} else {
pstmt.setNull(6);
}
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
pstmt.setNString(10, transRow.currency);
pstmt.setNString(11, transRow.method);
if (transRow.created) {
pstmt.setNString(12, transRow.created);
} else {
pstmt.setNull(12);
}
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
pstmt.setNString(15, transRow.station.identity);
pstmt.setNString(16, transRow.station.name);
pstmt.setInteger(17, transRow.station.location.id);
pstmt.setNString(18, transRow.station.location.address);
pstmt.setNString(19, transRow.station.location.city);
pstmt.setNString(20, transRow.station.location.locationType);
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
}
if (transRow.roamingEmpId) {
pstmt.setNString(21, transRow.roamingEmpId);
} else {
pstmt.setNull(21);
}
pstmt.setNString(22, transRow.evcoId);
pstmt.setInteger(23, transRow.organizationId);
if (transRow.fullEvseId) {
pstmt.setNString(24, transRow.fullEvseId);
} else {
pstmt.setNull(24);
}
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
pstmt.setNString(26, transRow.socketType);
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin);
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd);
} else {
pstmt.setNull(29);
}
pstmt.setNString(30, transRow.freeCharging);
if (!isNaN(parseInt(transRow.connectorId))) {
pstmt.setInteger(31, transRow.connectorId);
} else {
pstmt.setNull(31);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(32, transRow.meterStart);
} else {
pstmt.setNull(32);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(33, transRow.meterStop);
} else {
pstmt.setNull(33);
}
pstmt.setNString(34, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(35, transRow.notes[0].value);
} else {
pstmt.setNull(35);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(36, JSON.stringify(transRow));
pstmt.setNString(37, transRow.eichrechtType);
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
}
}
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
if ($.request.parameters.get('Billingrunmode') > 0) {
Billingrunmode = $.request.parameters.get('Billingrunmode');
}
if ($.request.parameters.get('DateFrom')) {
DateFrom = $.request.parameters.get('DateFrom');
}
if ($.request.parameters.get('DateTo')) {
DateTo = $.request.parameters.get('DateTo');
}
//doHTTPCallstartBillingrun("FEE","20180101","20180131");
//getVirtaToken("b1_api_user","E3qq$§U,Q3hD#K2}");
getCPOList();
setOutputMessage();
+492
View File
@@ -0,0 +1,492 @@
// Prod API Documentation Url: https://virta-api-admin.api-docs.io/
var ParDebug = false;
var Billingrunmode = "EMP";
var DateFrom = "";
var DateTo = "";
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var destn_pkg = "uniorg.eon.virta.v2";
var dest_name = "VirtaAPI";
var api_key = "qk2OLoXL3Y2Bqre9IQBdjaTqFUDvOJk888usKRiV";
var serviceVersion = '1.8';
var pageSize = 100;
/*if ($.request.parameters.get("pageSize")) {
pageSize = $.request.parameters.get("pageSize");
}*/
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function getVirtaToken(ifUsername, ifPassword) {
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.POST, "/auth");
req.headers.set("x-api-key", api_key);
req.contentType = "application/json";
outMsg = {};
outMsg.username = ifUsername;
outMsg.password = ifPassword;
req.setBody(JSON.stringify(outMsg));
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString();
var retObj = JSON.parse(b1iResp);
return retObj.token.toString();
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
function sleep(seconds) {
var currentTime = new Date().getTime();
while (currentTime + seconds * 1000 >= new Date().getTime()) {}
}
function getEMPList() {
var mytoken = getVirtaToken("b1_api_user", "E3qq$§U,Q3hD#K2}");
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "/emp/transactions");
req.contentType = "application/json";
req.headers.set("Authorization", "Bearer" + mytoken);
req.headers.set("x-api-key", api_key);
req.parameters.set("perPage", pageSize.toString());
req.parameters.set("from", DateFrom);
req.parameters.set("to", DateTo);
var totalCount = 1;
myDebug.Calls = [];
for (var p = 1; p <= Math.ceil(totalCount / pageSize); ++p) {
var debugCall = {};
debugCall.request = {
"page": p
};
req.parameters.set("page", p.toString());
client.request(req, dest);
var response = client.getResponse();
// get all the cookies and headers from the response
var he = [];
for (var c in response.headers) {
he.push(response.headers[c]);
}
debugCall.response = {
"headers": he
};
if (response.status === 429) {
// HTTP Status 429 "Too many requests"
var retryAfter = parseInt(response.headers.get('retry-after'), 10) + 1;
if (!(retryAfter > 0)) {
retryAfter = 10;
}
debugCall.waitSeconds = retryAfter;
sleep(retryAfter);
--p;
myDebug.Calls.push(debugCall);
} else if (response.status >= 200 && response.status < 300) {
var virtaBody = response.body.asString();
totalCount = response.headers.get('X-Total-Count');
var maxPageSize = Math.ceil(totalCount / pageSize);
debugCall.totalCount = totalCount;
debugCall.pagesCount = maxPageSize;
debugCall.link = response.headers.get('link');
debugCall.responseLineCount = JSON.parse(virtaBody).length;
myDebug.Calls.push(debugCall);
writeObj2Table(virtaBody);
} else {
debugCall.responseStatus = response.status;
myDebug.Calls.push(debugCall);
break;
}
//debugCall.virtaBody = virtaBody;
// debugCall.header = response.headers.toSting();
}
//$.response.status = $.net.http.OK;
//$.response.contentType = "application/json";
// $.response.setBody(JSON.stringify(b1iResp));
//$.response.setBody(JSON.stringify(virtaBody));
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
var query = "select \"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL from dummy";
pstmt = conn.prepareStatement(query);
var rs = pstmt.executeQuery();
if (!rs.next()) {
outMsg = {};
outMsg.method = "getnexval from sequence error";
outMsg.status = "error";
// outMsg.message = e.message;
outMessages.push(outMsg);
} else {
return rs.getString(1);
}
rs.close();
pstmt.close();
conn.close();
}
function writeObj2Table(myOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var transOBJ = JSON.parse(myOBJ);
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
query =
"UPSERT \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" (UUID,CDRID,STATIONUUID,CUSTOMERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,TRANSACTIONTYPE,CREATED,RFID,STATION,STATION_ID,STATION_NAME,LOCATION_ID,LOCATION_ADDRESS,LOCATION_CITY,LOCATION_TYPE,CUSTOMERGROUPID,CUSTOMERGROUPNAME,ORGANIZATIONID,PAYMENTTYPE,EVSEID,PLUGTYPE,EMPSHARE,SIGNEDMETERVALUEBEGIN,SIGNEDMETERVALUEEND,OPERATORPRICE,OPERATORCURRENCY,OPERATORID,FREECHARGING,EMPTARIFFID,EMPTARIFFNAME,FULLEVSEID,METERSTART,METERSTOP,NOTES,MILEAGE,JSONRAW,UPDATE_TS,EICHRECHTTYPE,KWHNETPRICE,MINUTENETPRICE,SESSIONNETPRICE,CPOOPERATORID,KWHGROSSPRICE,MINUTEGROSSPRICE,SESSIONGROSSPRICE,LOCATION_COUNTRY) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?,?,?,?,?,?,?,?,?) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
pstmt.setNString(1, transRow.uuid);
/*
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(2, transRow.cdrId);
} else {
pstmt.setNull(2);
}
*/
if (transRow.cdrId) {
pstmt.setNString(2, transRow.cdrId.toString());
} else {
pstmt.setNull(2);
}
pstmt.setNString(3, transRow.stationUuid);
pstmt.setInteger(4, transRow.customerId);
pstmt.setNString(5, transRow.startTime);
pstmt.setNString(6, transRow.stopTime);
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
pstmt.setNString(10, transRow.currency);
pstmt.setNString(11, transRow.transactionType);
pstmt.setNString(12, transRow.created);
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
pstmt.setNString(15, transRow.station.identity);
if (transRow.station.name) {
pstmt.setNString(16, transRow.station.name);
} else {
pstmt.setNull(16);
}
if (typeof transRow.station.location === "undefined") {
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
pstmt.setNull(50);
} else {
pstmt.setInteger(17, transRow.station.location.id);
pstmt.setNString(18, transRow.station.location.address);
pstmt.setNString(19, transRow.station.location.city);
pstmt.setNString(20, transRow.station.location.locationType);
pstmt.setNString(50, transRow.station.location.country);
}
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
pstmt.setNull(50);
}
pstmt.setInteger(21, transRow.customerGroupId);
pstmt.setNString(22, transRow.customerGroupName);
pstmt.setInteger(23, transRow.organizationId);
pstmt.setNString(24, transRow.paymentType);
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
if (transRow.plugType) {
pstmt.setNString(26, transRow.plugType);
} else {
pstmt.setNull(26);
}
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin.substring(0, 50));
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd.substring(0, 50));
} else {
pstmt.setNull(29);
}
if (!isNaN(parseInt(transRow.operatorPrice))) {
pstmt.setInteger(30, transRow.operatorPrice);
} else {
pstmt.setNull(30);
}
pstmt.setNString(31, transRow.operatorCurrency);
if (!isNaN(parseInt(transRow.operatorId))) {
pstmt.setInteger(32, transRow.operatorId);
} else {
pstmt.setNull(32);
}
pstmt.setNString(33, transRow.freeCharging);
if (!isNaN(parseInt(transRow.empTariffId))) {
pstmt.setInteger(34, transRow.empTariffId);
} else {
pstmt.setNull(34);
}
if (transRow.empTariffName) {
pstmt.setNString(35, transRow.empTariffName);
} else {
pstmt.setNull(35);
}
if (transRow.fullEvseId) {
pstmt.setNString(36, transRow.fullEvseId);
} else {
pstmt.setNull(36);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(37, transRow.meterStart);
} else {
pstmt.setNull(37);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(38, transRow.meterStop);
} else {
pstmt.setNull(38);
}
pstmt.setNString(39, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(40, transRow.notes[0].value);
} else {
pstmt.setNull(40);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(41, JSON.stringify(transRow));
pstmt.setNString(42, transRow.eichrechtType);
if (!isNaN(parseInt(transRow.empKwhNetPrice))) {
pstmt.setInteger(43, transRow.empKwhNetPrice);
} else {
pstmt.setNull(43);
}
if (!isNaN(parseInt(transRow.empMinuteNetPrice))) {
pstmt.setInteger(44, transRow.empMinuteNetPrice);
} else {
pstmt.setNull(44);
}
if (!isNaN(parseInt(transRow.empSessionNetPrice))) {
pstmt.setInteger(45, transRow.empSessionNetPrice);
} else {
pstmt.setNull(45);
}
if (transRow.cpoOperatorId) {
pstmt.setNString(46, transRow.cpoOperatorId);
} else {
pstmt.setNull(46);
}
if (!isNaN(parseInt(transRow.empKwhGrossPrice))) {
pstmt.setInteger(47, transRow.empKwhGrossPrice);
} else {
pstmt.setNull(47);
}
if (!isNaN(parseInt(transRow.empMinuteGrossPrice))) {
pstmt.setInteger(48, transRow.empMinuteGrossPrice);
} else {
pstmt.setNull(48);
}
if (!isNaN(parseInt(transRow.empSessionGrossPrice))) {
pstmt.setInteger(49, transRow.empSessionGrossPrice);
} else {
pstmt.setNull(49);
}
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
}
}
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
if ($.request.parameters.get('Billingrunmode') > 0) {
Billingrunmode = $.request.parameters.get('Billingrunmode');
}
if ($.request.parameters.get('DateFrom')) {
DateFrom = $.request.parameters.get('DateFrom');
}
if ($.request.parameters.get('DateTo')) {
DateTo = $.request.parameters.get('DateTo');
}
//doHTTPCallstartBillingrun("FEE","20180101","20180131");
//getVirtaToken("b1_api_user","E3qq$§U,Q3hD#K2}");
getEMPList();
setOutputMessage();
+454
View File
@@ -0,0 +1,454 @@
// Prod API Documentation Url: https://virta-api-admin.api-docs.io/
var ParDebug = false;
var Billingrunmode = "EMP";
var DateFrom = "";
var DateTo = "";
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var destn_pkg = "uniorg.eon.virta.v2";
var dest_name = "VirtaAPI";
var api_key = "qk2OLoXL3Y2Bqre9IQBdjaTqFUDvOJk888usKRiV";
var serviceVersion = '1.7';
var pageSize = 100;
/*if ($.request.parameters.get("pageSize")) {
pageSize = $.request.parameters.get("pageSize");
}*/
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function getVirtaToken(ifUsername, ifPassword) {
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.POST, "/auth");
req.headers.set("x-api-key", api_key);
req.contentType = "application/json";
outMsg = {};
outMsg.username = ifUsername;
outMsg.password = ifPassword;
req.setBody(JSON.stringify(outMsg));
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString();
var retObj = JSON.parse(b1iResp);
return retObj.token.toString();
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
function getEMPList() {
try {
var mytoken = getVirtaToken("b1_api_user", "E3qq$§U,Q3hD#K2}");
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "/emp/transactions");
req.contentType = "application/json";
req.headers.set("x-api-key", api_key);
req.headers.set("Authorization", "Bearer" + mytoken);
req.parameters.set("perPage", pageSize.toString());
req.parameters.set("from", DateFrom);
req.parameters.set("to", DateTo);
var totalCount = 1;
myDebug.Calls = [];
for (var p = 1; p <= Math.ceil(totalCount / pageSize); ++p) {
var debugCall = {};
debugCall.request = {
"page": p
};
req.parameters.set("page", p.toString());
client.request(req, dest);
var response = client.getResponse();
// get all the cookies and headers from the response
var he = [];
for (var c in response.headers) {
he.push(response.headers[c]);
}
debugCall.response = {
"headers": he
};
var virtaBody = response.body.asString();
totalCount = response.headers.get('X-Total-Count');
var maxPageSize = Math.ceil(totalCount / pageSize);
debugCall.totalCount = totalCount;
debugCall.pagesCount = maxPageSize;
debugCall.link = response.headers.get('link');
debugCall.responseLineCount = JSON.parse(virtaBody).length;
debugCall.virtaBody = virtaBody;
debugCall.header = response.headers.toString();
myDebug.Calls.push(debugCall);
writeObj2Table(virtaBody);
}
} catch (e) {
exceptionHandler(e);
}
//$.response.status = $.net.http.OK;
//$.response.contentType = "application/json";
// $.response.setBody(JSON.stringify(b1iResp));
//$.response.setBody(JSON.stringify(virtaBody));
}
function getnextval() {
var conn = $.db.getConnection();
var pstmt;
var query = "select \"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL from dummy";
pstmt = conn.prepareStatement(query);
var rs = pstmt.executeQuery();
if (!rs.next()) {
outMsg = {};
outMsg.method = "getnexval from sequence error";
outMsg.status = "error";
// outMsg.message = e.message;
outMessages.push(outMsg);
} else {
return rs.getString(1);
}
rs.close();
pstmt.close();
conn.close();
}
function writeObj2Table(myOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var transOBJ = JSON.parse(myOBJ);
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
query =
"UPSERT \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" (UUID,CDRID,STATIONUUID,CUSTOMERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,TRANSACTIONTYPE,CREATED,RFID,STATION,STATION_ID,STATION_NAME,LOCATION_ID,LOCATION_ADDRESS,LOCATION_CITY,LOCATION_TYPE,CUSTOMERGROUPID,CUSTOMERGROUPNAME,ORGANIZATIONID,PAYMENTTYPE,EVSEID,PLUGTYPE,EMPSHARE,SIGNEDMETERVALUEBEGIN,SIGNEDMETERVALUEEND,OPERATORPRICE,OPERATORCURRENCY,OPERATORID,FREECHARGING,EMPTARIFFID,EMPTARIFFNAME,FULLEVSEID,METERSTART,METERSTOP,NOTES,MILEAGE,JSONRAW,UPDATE_TS,EICHRECHTTYPE,KWHNETPRICE,MINUTENETPRICE,SESSIONNETPRICE,CPOOPERATORID) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?,?,?,?,?) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
pstmt.setNString(1, transRow.uuid);
/*
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(2, transRow.cdrId);
} else {
pstmt.setNull(2);
}
*/
if (transRow.cdrId) {
pstmt.setNString(2, transRow.cdrId.toString());
} else {
pstmt.setNull(2);
}
pstmt.setNString(3, transRow.stationUuid);
pstmt.setInteger(4, transRow.customerId);
pstmt.setNString(5, transRow.startTime);
pstmt.setNString(6, transRow.stopTime);
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
pstmt.setNString(10, transRow.currency);
pstmt.setNString(11, transRow.transactionType);
pstmt.setNString(12, transRow.created);
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
pstmt.setNString(15, transRow.station.identity);
if (transRow.station.name) {
pstmt.setNString(16, transRow.station.name);
} else {
pstmt.setNull(16);
}
if (typeof transRow.station.location === "undefined") {
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
} else {
pstmt.setInteger(17, transRow.station.location.id);
pstmt.setNString(18, transRow.station.location.address);
pstmt.setNString(19, transRow.station.location.city);
pstmt.setNString(20, transRow.station.location.locationType);
}
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
}
pstmt.setInteger(21, transRow.customerGroupId);
pstmt.setNString(22, transRow.customerGroupName);
pstmt.setInteger(23, transRow.organizationId);
pstmt.setNString(24, transRow.paymentType);
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
pstmt.setNString(26, transRow.plugType);
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin);
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd);
} else {
pstmt.setNull(29);
}
if (!isNaN(parseInt(transRow.operatorPrice))) {
pstmt.setInteger(30, transRow.operatorPrice);
} else {
pstmt.setNull(30);
}
pstmt.setNString(31, transRow.operatorCurrency);
if (!isNaN(parseInt(transRow.operatorId))) {
pstmt.setInteger(32, transRow.operatorId);
} else {
pstmt.setNull(32);
}
pstmt.setNString(33, transRow.freeCharging);
if (!isNaN(parseInt(transRow.empTariffId))) {
pstmt.setInteger(34, transRow.empTariffId);
} else {
pstmt.setNull(34);
}
if (transRow.empTariffName) {
pstmt.setNString(35, transRow.empTariffName);
} else {
pstmt.setNull(35);
}
if (transRow.fullEvseId) {
pstmt.setNString(36, transRow.fullEvseId);
} else {
pstmt.setNull(36);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(37, transRow.meterStart);
} else {
pstmt.setNull(37);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(38, transRow.meterStop);
} else {
pstmt.setNull(38);
}
pstmt.setNString(39, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(40, transRow.notes[0].value);
} else {
pstmt.setNull(40);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(41, JSON.stringify(transRow));
pstmt.setNString(42, transRow.eichrechtType);
if (!isNaN(parseInt(transRow.empKwhNetPrice))) {
pstmt.setInteger(43, transRow.empKwhNetPrice);
} else {
pstmt.setNull(43);
}
if (!isNaN(parseInt(transRow.empMinuteNetPrice))) {
pstmt.setInteger(44, transRow.empMinuteNetPrice);
} else {
pstmt.setNull(44);
}
if (!isNaN(parseInt(transRow.empSessionNetPrice))) {
pstmt.setInteger(45, transRow.empSessionNetPrice);
} else {
pstmt.setNull(45);
}
if (transRow.cpoOperatorId) {
pstmt.setNString(46, transRow.cpoOperatorId);
} else {
pstmt.setNull(46);
}
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}
}
}
try{
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
if ($.request.parameters.get('Billingrunmode') > 0) {
Billingrunmode = $.request.parameters.get('Billingrunmode');
}
if ($.request.parameters.get('DateFrom')) {
DateFrom = $.request.parameters.get('DateFrom');
}
if ($.request.parameters.get('DateTo')) {
DateTo = $.request.parameters.get('DateTo');
}
//doHTTPCallstartBillingrun("FEE","20180101","20180131");
//getVirtaToken("b1_api_user","E3qq$§U,Q3hD#K2}");
getEMPList();
setOutputMessage();
} catch (e) {
exceptionHandler(e);
}
+684
View File
@@ -0,0 +1,684 @@
var output = {};
var outMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var serviceName = "eon.virta.v2.reloadfields.xsjs";
var serviceVersion = '1.4';
var startTS = new Date();
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
output.durationSeconds = Math.floor((new Date() - startTS) / 1000);
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
if (outMsg.method && outMessages.indexOf(outMsg) === -1) {
outMsg.status = "canceled";
outMessages.push(outMsg);
}
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
//$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
// Workaround, weil CRM scheinbar Probleme mit anderen Statuscodes hat
$.response.status = $.net.http.OK;
}
function checkParams() {
var isValid = true;
var missingParams = [];
try {
if (!$.request.parameters.get("field")) {
missingParams.push("field");
isValid = false;
}
if (!$.request.parameters.get("datefrom")) {
missingParams.push("datefrom");
isValid = false;
}
if (!$.request.parameters.get("dateto")) {
missingParams.push("dateto");
isValid = false;
}
} catch (e) {
exceptionHandler(e);
isValid = false;
}
if (!isValid) {
outMsg = {};
outMsg.method = "checkParams";
outMsg.status = "error";
outStatus = "error";
outMsg.message = "missing mandatory parameters: " + missingParams.join();
outMessages.push(outMsg);
$.response.status = $.net.http.BAD_REQUEST;
}
return isValid;
}
function getCpoTransactionData() {
var datefrom = $.request.parameters.get("datefrom");
var dateto = $.request.parameters.get("dateto");
var limit = 1000;
var offset = 0;
outMsg = {};
outMsg.method = "getCpoTransactionData";
outMsg.status = "error";
var resultData = {};
var resultSet = [];
var conn = $.hdb.getConnection();
do {
if (debugLevel > 1) {
outMsg.limit = limit;
outMsg.offset = offset;
}
var queryResult = conn.executeQuery(
"select CDRID, JSONRAW \
from VIRTAPORTAL.CPO_CHARGES \
where STARTTIME >= ? and STARTTIME <= ? and JSONRAW is not null \
order by CDRID \
limit ? offset ?",
datefrom, dateto, limit, offset);
var iterator = queryResult.getIterator();
while (iterator.next()) {
resultSet.push(JSON.parse(JSON.stringify(iterator.value())));
}
offset += limit;
} while (queryResult.length === limit)
conn.close();
resultData = {
count: resultSet.length,
rows: resultSet
};
outMsg.status = "success";
outMsg.result = resultData;
if (debugLevel > 0 || outMsg.status === "error") {
outMessages.push(outMsg);
}
return resultData;
}
function updateCpoValidationResults() {
var cpoTransData = getCpoTransactionData();
var completeData = [];
if (cpoTransData.count > 0) {
completeData = cpoTransData.rows.map(function(row) {
var parsedData = {};
var valid = true;
try {
parsedData = JSON.parse(row.JSONRAW);
if (!parsedData.hasOwnProperty('businessValidationResult') || !parsedData.hasOwnProperty('techValidationResult') || !parsedData.hasOwnProperty('notBillableReason')) {
valid = false;
}
} catch (e) {
valid = false;
}
return {
CDRID: row.CDRID,
BUSINESSVALIDATIONRESULT: parsedData.businessValidationResult,
TECHVALIDATIONRESULT: parsedData.techValidationResult,
NOTBILLABLEREASON: parsedData.notBillableReason,
valid: valid
};
});
}
if (completeData.some(function(row) {
return row.valid;
})) {
var paramList = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return [row.BUSINESSVALIDATIONRESULT, row.TECHVALIDATIONRESULT, row.NOTBILLABLEREASON, row.CDRID];
});
outMsg = {};
outMsg.method = "updateData";
outMsg.status = "error";
var resultData = {};
var conn = $.hdb.getConnection();
var statement = "update VIRTAPORTAL.CPO_CHARGES \
set BUSINESSVALIDATIONRESULT=?,TECHVALIDATIONRESULT=?,NOTBILLABLEREASON=? \
where CDRID = ?";
if (debugLevel > 1) {
outMsg.statement = statement;
outMsg.paramList = paramList;
}
var affectedRows = conn.executeUpdate(statement, paramList);
conn.commit();
conn.close();
resultData = {
count: affectedRows.reduce(function(cur, acc) {
return cur + acc;
}, 0)
};
outMsg.status = "success";
outMsg.result = resultData;
outMessages.push(outMsg);
}
}
function getEmpTransactionData() {
var datefrom = $.request.parameters.get("datefrom");
var dateto = $.request.parameters.get("dateto");
var limit = 1000;
var offset = 0;
outMsg = {};
outMsg.method = "getEmpTransactionData";
outMsg.status = "error";
var resultData = {};
var resultSet = [];
var conn = $.hdb.getConnection();
do {
if (debugLevel > 1) {
outMsg.limit = limit;
outMsg.offset = offset;
}
var queryResult = conn.executeQuery(
"select UUID, JSONRAW \
from VIRTAPORTAL.EMP_TRANSACTIONS \
where STARTTIME >= ? and STARTTIME <= ? and JSONRAW is not null \
order by UUID \
limit ? offset ?",
datefrom, dateto, limit, offset);
var iterator = queryResult.getIterator();
while (iterator.next()) {
resultSet.push(JSON.parse(JSON.stringify(iterator.value())));
}
offset += limit;
} while (queryResult.length === limit)
conn.close();
resultData = {
count: resultSet.length,
rows: resultSet
};
outMsg.status = "success";
outMsg.result = resultData;
if (debugLevel > 0 || outMsg.status === "error") {
outMessages.push(outMsg);
}
return resultData;
}
function updateEmpFreeMinutes() {
var empTransData = getEmpTransactionData();
var completeData = [];
if (empTransData.count > 0) {
completeData = empTransData.rows.map(function(row) {
var parsedData = {};
var valid = true;
try {
parsedData = JSON.parse(row.JSONRAW);
if (!parsedData.hasOwnProperty('empFreeMinutes')) {
valid = false;
}
} catch (e) {
valid = false;
}
return {
UUID: row.UUID,
FREEMINUTES: parsedData.empFreeMinutes,
valid: valid
};
});
}
// myDebug.completeData = completeData;
/*var updateData = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return {
UUID: row.UUID,
FREEMINUTES: row.parsedData.empFreeMinutes
};
});*/
//myDebug.updateData = updateData;
if (completeData.some(function(row) {
return row.valid;
})) {
var paramList = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return [row.FREEMINUTES, row.UUID];
});
outMsg = {};
outMsg.method = "updateData";
outMsg.status = "error";
var resultData = {};
var conn = $.hdb.getConnection();
var statement = "update VIRTAPORTAL.EMP_TRANSACTIONS \
set FREEMINUTES = ? \
where UUID = ?";
if (debugLevel > 1) {
outMsg.statement = statement;
outMsg.paramList = paramList;
}
var affectedRows = conn.executeUpdate(statement, paramList);
conn.commit();
conn.close();
resultData = {
count: affectedRows.reduce(function(cur, acc) {
return cur + acc;
}, 0)
};
outMsg.status = "success";
outMsg.result = resultData;
outMessages.push(outMsg);
}
}
function updateEmpValidationResults() {
var empTransData = getEmpTransactionData();
var completeData = [];
if (empTransData.count > 0) {
completeData = empTransData.rows.map(function(row) {
var parsedData = {};
var valid = true;
try {
parsedData = JSON.parse(row.JSONRAW);
if (!parsedData.hasOwnProperty('businessValidationResult') || !parsedData.hasOwnProperty('techValidationResult') || !parsedData.hasOwnProperty('notBillableReason')) {
valid = false;
}
} catch (e) {
valid = false;
}
return {
UUID: row.UUID,
BUSINESSVALIDATIONRESULT: parsedData.businessValidationResult,
TECHVALIDATIONRESULT: parsedData.techValidationResult,
NOTBILLABLEREASON: parsedData.notBillableReason,
valid: valid
};
});
}
if (completeData.some(function(row) {
return row.valid;
})) {
var paramList = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return [row.BUSINESSVALIDATIONRESULT, row.TECHVALIDATIONRESULT, row.NOTBILLABLEREASON, row.UUID];
});
outMsg = {};
outMsg.method = "updateData";
outMsg.status = "error";
var resultData = {};
var conn = $.hdb.getConnection();
var statement = "update VIRTAPORTAL.EMP_TRANSACTIONS \
set BUSINESSVALIDATIONRESULT=?,TECHVALIDATIONRESULT=?,NOTBILLABLEREASON=? \
where UUID = ?";
if (debugLevel > 1) {
outMsg.statement = statement;
outMsg.paramList = paramList;
}
var affectedRows = conn.executeUpdate(statement, paramList);
conn.commit();
conn.close();
resultData = {
count: affectedRows.reduce(function(cur, acc) {
return cur + acc;
}, 0)
};
outMsg.status = "success";
outMsg.result = resultData;
outMessages.push(outMsg);
}
}
function checkEmpFreePeriod() {
var empTransData = getEmpTransactionData();
var completeData = [];
if (empTransData.count > 0) {
completeData = empTransData.rows.map(function(row) {
var parsedData = {};
var valid = true;
try {
parsedData = JSON.parse(row.JSONRAW);
if (!parsedData.hasOwnProperty('empFreePeriod')) {
valid = false;
}
} catch (e) {
valid = false;
}
return {
UUID: row.UUID,
FREEPERIOD: parsedData.empFreePeriod,
valid: valid
};
});
}
// myDebug.completeData = completeData;
/*var updateData = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return {
UUID: row.UUID,
FREEMINUTES: row.parsedData.empFreeMinutes
};
});*/
//myDebug.updateData = updateData;
var foundData = completeData.filter(function(row) {
return row.valid && row.FREEPERIOD !== null;
}).map(function(row) {
return {
FreePeriod: row.FREEPERIOD,
UUID: row.UUID
};
});
outMsg = {};
outMsg.method = "updateData";
outMsg.foundData = foundData;
outMsg.status = "success";
outMessages.push(outMsg);
}
function getEoperateTransactionData() {
var datefrom = $.request.parameters.get("datefrom");
var dateto = $.request.parameters.get("dateto");
var limit = 1000;
var offset = 0;
outMsg = {};
outMsg.method = "getEoperateTransactionData";
outMsg.status = "error";
var resultData = {};
var resultSet = [];
var conn = $.hdb.getConnection();
do {
if (debugLevel > 1) {
outMsg.limit = limit;
outMsg.offset = offset;
}
var queryResult = conn.executeQuery(
"select BDR_ID, JSONRAW \
from EOPERATE.CHARGEDATA \
where CHARGE_DATA_BEGIN_UTC >= ? and CHARGE_DATA_BEGIN_UTC <= ? and JSONRAW is not null \
order by BDR_ID \
limit ? offset ?",
datefrom, dateto, limit, offset);
var iterator = queryResult.getIterator();
while (iterator.next()) {
resultSet.push(JSON.parse(JSON.stringify(iterator.value())));
}
offset += limit;
} while (queryResult.length === limit)
conn.close();
resultData = {
count: resultSet.length,
rows: resultSet
};
outMsg.status = "success";
outMsg.result = resultData;
if (debugLevel > 0 || outMsg.status === "error") {
outMessages.push(outMsg);
}
return resultData;
}
function roundTo(n, digits) {
var negative = false;
if (digits === undefined) {
digits = 0;
}
if (n < 0) {
negative = true;
n = n * -1;
}
var multiplicator = Math.pow(10, digits);
n = parseFloat((n * multiplicator).toFixed(11));
n = (Math.round(n) / multiplicator).toFixed(digits);
if (negative) {
n = (n * -1).toFixed(digits);
}
return Number(n);
}
function updateEoperatePricingItems() {
var transData = getEoperateTransactionData();
var completeData = [];
if (transData.count > 0) {
completeData = transData.rows.map(function(row) {
var parsedData = {};
var valid = false;
var pricingItemsArray = [];
try {
parsedData = JSON.parse(row.JSONRAW)[0];
if (parsedData.hasOwnProperty('PRICING') && parsedData.PRICING.hasOwnProperty('ITEMS')) {
valid = true;
pricingItemsArray = parsedData.PRICING.ITEMS.filter(function(pricingItem) {
return pricingItem.TYPE === "CUS";
});
}
} catch (e) {
valid = false;
}
return {
BDR_ID: row.BDR_ID,
ITEMS: pricingItemsArray,
valid: valid
};
});
}
myDebug.completeData = completeData;
if (completeData.some(function(row) {
return row.valid;
})) {
var paramList = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
/*
"TYPE": "CUS",
"UNIT": "KWH",
"UNIT_PRICE": "0.74710000",
"QUANTITY": "1.97050000",
"NET_AMOUNT": "1.47207941",
"CURRENCY": "EUR"
*/
var params = [];
for (let ii = 0; ii < 4; ii++) {
var item = row.ITEMS[ii];
if (item) {
params.push(item.TYPE, item.UNIT, roundTo(item.UNIT_PRICE, 4), roundTo(item.QUANTITY, 3), roundTo(item.NET_AMOUNT, 3), item.CURRENCY);
} else {
params.push(null, null, null, null, null, null);
}
}
params.push(row.BDR_ID);
return params;
});
// myDebug.paramList = paramList;
outMsg = {};
outMsg.method = "updateData";
outMsg.status = "error";
var resultData = {};
var conn = $.hdb.getConnection();
var statement =
"UPDATE EOPERATE.CHARGEDATA SET PRICING_ITEMS_1_TYPE= ?,PRICING_ITEMS_1_UNIT= ?,PRICING_ITEMS_1_UNIT_PRICE= ?,PRICING_ITEMS_1_QUANTITY= ?,PRICING_ITEMS_1_NET_AMOUNT= ?,PRICING_ITEMS_1_CURRENCY= ?,PRICING_ITEMS_2_TYPE= ?,PRICING_ITEMS_2_UNIT= ?,PRICING_ITEMS_2_UNIT_PRICE= ?,PRICING_ITEMS_2_QUANTITY= ?,PRICING_ITEMS_2_NET_AMOUNT= ?,PRICING_ITEMS_2_CURRENCY= ?,PRICING_ITEMS_3_TYPE= ?,PRICING_ITEMS_3_UNIT= ?,PRICING_ITEMS_3_UNIT_PRICE= ?,PRICING_ITEMS_3_QUANTITY= ?,PRICING_ITEMS_3_NET_AMOUNT= ?,PRICING_ITEMS_3_CURRENCY= ?,PRICING_ITEMS_4_TYPE= ?,PRICING_ITEMS_4_UNIT= ?,PRICING_ITEMS_4_UNIT_PRICE= ?,PRICING_ITEMS_4_QUANTITY= ?,PRICING_ITEMS_4_NET_AMOUNT= ?,PRICING_ITEMS_4_CURRENCY= ? where BDR_ID = ?";
if (debugLevel > 1) {
outMsg.statement = statement;
outMsg.paramList = paramList;
}
var affectedRows = conn.executeUpdate(statement, paramList);
conn.commit();
conn.close();
resultData = {
count: affectedRows.reduce(function(cur, acc) {
return cur + acc;
}, 0)
};
outMsg.status = "success";
outMsg.result = resultData;
outMessages.push(outMsg);
}
}
function updateEoperateValidationResults() {
var transData = getEoperateTransactionData();
var completeData = [];
if (transData.count > 0) {
completeData = transData.rows.map(function(row) {
var parsedData = {};
var valid = true;
try {
parsedData = JSON.parse(row.JSONRAW)[0];
if (!parsedData.hasOwnProperty('BUSINESS_VALIDATION_RESULT') || !parsedData.hasOwnProperty('TECH_VALIDATION_RESULT') || !parsedData.hasOwnProperty('NOT_BILLABLE_REASON')) {
valid = false;
}
} catch (e) {
valid = false;
}
return {
BDR_ID: row.BDR_ID,
BUSINESSVALIDATIONRESULT: parsedData.BUSINESS_VALIDATION_RESULT,
TECHVALIDATIONRESULT: parsedData.TECH_VALIDATION_RESULT,
NOTBILLABLEREASON: parsedData.NOT_BILLABLE_REASON,
valid: valid
};
});
}
myDebug.completeData = completeData;
if (completeData.some(function(row) {
return row.valid;
})) {
var paramList = completeData.filter(function(row) {
return row.valid;
}).map(function(row) {
return [row.BUSINESSVALIDATIONRESULT, row.TECHVALIDATIONRESULT, row.NOTBILLABLEREASON, row.BDR_ID];
});
// myDebug.paramList = paramList;
outMsg = {};
outMsg.method = "updateData";
outMsg.status = "error";
var resultData = {};
var conn = $.hdb.getConnection();
var statement =
"UPDATE EOPERATE.CHARGEDATA SET BUSINESSVALIDATIONRESULT=?,TECHVALIDATIONRESULT=?,NOTBILLABLEREASON=? where BDR_ID = ?";
if (debugLevel > 1) {
outMsg.statement = statement;
outMsg.paramList = paramList;
}
var affectedRows = conn.executeUpdate(statement, paramList);
conn.commit();
conn.close();
resultData = {
count: affectedRows.reduce(function(cur, acc) {
return cur + acc;
}, 0)
};
outMsg.status = "success";
outMsg.result = resultData;
outMessages.push(outMsg);
}
}
function chooseMode(field) {
switch (field) {
case 'empfreeminutes':
updateEmpFreeMinutes();
break;
case 'empfreeperiod':
checkEmpFreePeriod();
break;
case 'empValidationResults':
updateEmpValidationResults();
break;
case 'cpoValidationResults':
updateCpoValidationResults();
break;
case 'updateEoperatePricingItems':
updateEoperatePricingItems();
break;
case 'eoperateValidationResults':
updateEoperateValidationResults();
break;
default:
exceptionHandler(new Error("unsupported mode: field=" + field));
}
}
try {
if (checkParams()) {
chooseMode($.request.parameters.get("field"));
}
} catch (e) {
exceptionHandler(e);
}
setOutputMessage();
+439
View File
@@ -0,0 +1,439 @@
var ParDebug = false;
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var serviceVersion = '2.8';
// 4.5.2023 Validation Felder hinzugefügt
// 22.01.2024 Anpassung zulässige null werte in location TS
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function checkCDRID(myCDRID) {
var exists = false;
var conn = $.db.getConnection();
var pstmt;
var query = "select \"CDRID\" from \"VIRTAPORTAL\".\"CPO_CHARGES\" where CDRID = ?";
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, myCDRID);
var rs = pstmt.executeQuery();
if (rs.next()) {
exists = true;
}
rs.close();
pstmt.close();
conn.close();
return exists;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function writeObj2Table(transOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
var isUpdateMode = false;
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
var myCDRID = transOBJ[0].cdrId.toString();
isUpdateMode = checkCDRID(myCDRID);
if (isUpdateMode) {
// "UPDATE \"EOPERATE\".\"CHARGEDATA\" SET BDR_ID = ?,EMAID =? ,UNIQUE_ID = ?, CREATION_DATE_UTC = ?,CHARGEPOINT_ID= ?,CHARGEPOINT_TYPE= ?,CHARGEPOINT_METER_ID= ?,CHARGEPOINT_ADDRESS_COUNTRY= ?,CHARGEPOINT_ADDRESS_POSTALCODE= ?,CHARGEPOINT_ADDRESS_CITY= ?,CHARGEPOINT_ADDRESS_STREET= ?,CHARGEPOINT_OPERATOR_ID= ?,CHARGEPOINT_OPERATOR_NAME= ?,EMOBILITY_PROVIDER_ID= ?,EMOBILITY_PROVIDER_NAME= ?,CHARGE_DATA_AUTHORIZATION_TYPE= ?,CHARGE_DATA_CONSUMPTION_KWH= ?,CHARGE_DATA_BEGIN_UTC= ?,CHARGE_DATA_END_UTC= ?,CHARGE_DATA_TIME_ZONE= ?,CHARGE_DATA_EKA_STATUS= ?,PRICING_ITEMS_1_TYPE= ?,PRICING_ITEMS_1_UNIT= ?,PRICING_ITEMS_1_UNIT_PRICE= ?,PRICING_ITEMS_1_QUANTITY= ?,PRICING_ITEMS_1_NET_AMOUNT= ?,PRICING_ITEMS_1_CURRENCY= ?,PRICING_ITEMS_2_TYPE= ?,PRICING_ITEMS_2_UNIT= ?,PRICING_ITEMS_2_UNIT_PRICE= ?,PRICING_ITEMS_2_QUANTITY= ?,PRICING_ITEMS_2_NET_AMOUNT= ?,PRICING_ITEMS_2_CURRENCY= ?,PRICING_ITEMS_3_TYPE= ?,PRICING_ITEMS_3_UNIT= ?,PRICING_ITEMS_3_UNIT_PRICE= ?,PRICING_ITEMS_3_QUANTITY= ?,PRICING_ITEMS_3_NET_AMOUNT= ?,PRICING_ITEMS_3_CURRENCY= ?,PRICING_ITEMS_4_TYPE= ?,PRICING_ITEMS_4_UNIT= ?,PRICING_ITEMS_4_UNIT_PRICE= ?,PRICING_ITEMS_4_QUANTITY= ?,PRICING_ITEMS_4_NET_AMOUNT= ?,PRICING_ITEMS_4_CURRENCY= ?,SUBSCRIPTION_ID= ?,JSONRAW= ?,UPDATE_TS= CURRENT_TIMESTAMP,UPDATE_USER= CURRENT_USER)";
query =
"UPDATE \"VIRTAPORTAL\".\"CPO_CHARGES\" SET CDRID=?,UUID=?,STATIONUUID=?,EMPSELLERID=?,STARTTIME=?,STOPTIME=?,DURATION=?,WATTHOUR=?,AMOUNT=?,CURRENCY=?,METHOD=?,CREATED=?,RFID=?,STATION=?,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=?,JSONRAW=?,EICHRECHTTYPE=?,UPDATE_TS=CURRENT_TIMESTAMP,UPDATE_USER=CURRENT_USER,BUSINESSVALIDATIONRESULT=?,TECHVALIDATIONRESULT=?,NOTBILLABLEREASON=? where CDRID = ?";
outMsg.method = "Update Data CDRID: " + myCDRID;
} else {
query =
"INSERT INTO \"VIRTAPORTAL\".\"CPO_CHARGES\" (CDRID,UUID,STATIONUUID,EMPSELLERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,METHOD,CREATED,RFID,STATION,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,JSONRAW,EICHRECHTTYPE,UPDATE_TS,UPDATE_USER,BUSINESSVALIDATIONRESULT,TECHVALIDATIONRESULT,NOTBILLABLEREASON) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP, CURRENT_USER,?,?,?)";
outMsg.method = "Insert Data CDRID: " + myCDRID;
}
myDebug.query = query;
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
//query =
// "UPSERT \"VIRTAPORTAL\".\"CPO_CHARGES\" (CDRID,UUID,STATIONUUID,EMPSELLERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,METHOD,CREATED,RFID,STATION,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,JSONRAW,EICHRECHTTYPE,UPDATE_TS,UPDATE_USER) values (" +
// "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP, CURRENT_USER) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(1, transRow.cdrId);
} else {
pstmt.setNull(1);
}
if (transRow.UUID){
pstmt.setNString(2, transRow.UUID);
} else {
pstmt.setNull(2);
}
if (!isNaN(parseInt(transRow.locationId))) {
pstmt.setInteger(3, transRow.locationId);
} else {
pstmt.setNull(3);
}
if (!isNaN(parseInt(transRow.empSellerId))) {
pstmt.setInteger(4, transRow.empSellerId);
} else {
pstmt.setNull(4);
}
if (transRow.startTime) {
pstmt.setNString(5, transRow.startTime);
} else {
pstmt.setNull(5);
}
if (transRow.stopTime) {
pstmt.setNString(6, transRow.stopTime);
} else {
pstmt.setNull(6);
}
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
pstmt.setNString(10, transRow.currency);
pstmt.setNString(11, transRow.method);
if (transRow.created) {
pstmt.setNString(12, transRow.created);
} else {
pstmt.setNull(12);
}
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
if(transRow.station.identity){
pstmt.setNString(15, transRow.station.identity);
} else {
pstmt.setNull(15);
}
if(transRow.station.name){
pstmt.setNString(16, transRow.station.name);
} else {
pstmt.setNull(16);
}
if (!isNaN(parseInt(transRow.station.location.id))) {
pstmt.setInteger(17, transRow.station.location.id);
} else {
pstmt.setNull(17);
}
if(transRow.station.location.address){
pstmt.setNString(18, transRow.station.location.address);
} else {
pstmt.setNull(18);
}
if(transRow.station.location.city){
pstmt.setNString(19, transRow.station.location.city);
} else {
pstmt.setNull(19);
}
if (transRow.station.location.locationType){
pstmt.setNString(20, transRow.station.location.locationType);
} else {
pstmt.setNull(20);
}
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
}
if (transRow.roamingEmpId) {
pstmt.setNString(21, transRow.roamingEmpId);
} else {
pstmt.setNull(21);
}
if(transRow.evcoId){
pstmt.setNString(22, transRow.evcoId);
} else {
pstmt.setNull(22);
}
pstmt.setInteger(23, transRow.organizationId);
if (transRow.fullEvseId) {
pstmt.setNString(24, transRow.fullEvseId);
} else {
pstmt.setNull(24);
}
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
if(transRow.socketType){
pstmt.setNString(26, transRow.socketType);
} else {
pstmt.setNull(26);
}
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin.substring(0,49));
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd.substring(0,49));
} else {
pstmt.setNull(29);
}
if(transRow.freeCharging){
pstmt.setNString(30, transRow.freeCharging);
} else {
pstmt.setNull(30);
}
if (!isNaN(parseInt(transRow.connectorId))) {
pstmt.setInteger(31, transRow.connectorId);
} else {
pstmt.setNull(31);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(32, transRow.meterStart);
} else {
pstmt.setNull(32);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(33, transRow.meterStop);
} else {
pstmt.setNull(33);
}
pstmt.setNString(34, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(35, transRow.notes[0].value);
} else {
pstmt.setNull(35);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(36, JSON.stringify(transRow));
if (transRow.eichrechtType) {
pstmt.setNString(37, transRow.eichrechtType);
} else {
pstmt.setNull(37);
}
//04.05.2023 Erweiterung PlausiheckFelder
if (transRow.businessValidationResult) {
pstmt.setNString(38, transRow.businessValidationResult);
} else {
pstmt.setNull(38);
}
if (transRow.techValidationResult) {
pstmt.setNString(39, transRow.techValidationResult);
} else {
pstmt.setNull(39);
}
if (transRow.notBillableReason) {
pstmt.setNString(40, transRow.notBillableReason);
} else {
pstmt.setNull(40);
}
if (isUpdateMode) {
pstmt.setNString(41, myCDRID);
}
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
exceptionHandler(e);
/*outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}*/
}
}
function checkPayload(aCDR) {
var isValid = true;
var reason = "";
try {
if (Array.isArray(aCDR)) {
aCDR.forEach(function(cdrObj) {
if (!cdrObj.hasOwnProperty('cdrId')) {
isValid = false;
reason =
" (mandatory properties are: cdrId)";
}
});
} else {
isValid = false;
reason = " (payload is not an array)";
}
} catch (e) {
exceptionHandler(e);
isValid = false;
}
if (!isValid) {
outMsg = {};
outMsg.method = "checkPayload";
outMsg.status = "error";
outStatus = "error";
$.response.status = $.net.http.BAD_REQUEST;
outMsg.message = "invalid payload structure" + reason;
outMessages.push(outMsg);
}
return isValid;
}
function processData(sObj) {
try {
var cdrData = JSON.parse(sObj);
if (!Array.isArray(cdrData)) {
cdrData = [cdrData];
}
if (checkPayload(cdrData)) {
writeObj2Table(cdrData);
}
} catch (e) {
exceptionHandler(e);
}
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
processData(content);
setOutputMessage();
+533
View File
@@ -0,0 +1,533 @@
var ParDebug = false;
var output = {};
var outMessages = [];
var outErrorMessages = [];
var outMsg = {};
var outStatus = "success";
var myDebug = {};
var serviceVersion = '2.8';
var debugLevel = 0;
switch ($.request.parameters.get("debug")) {
case "true":
case "yes":
case "1":
debugLevel = 1;
break;
case "full":
case "2":
debugLevel = 2;
break;
}
if (debugLevel > 0) {
output.requestParams = $.request.parameters;
}
function setOutputMessage() {
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
$.response.contentType = "application/json";
$.response.setBody(JSON.stringify(output));
//$.response.status = $.net.http.OK;
}
function exceptionHandler(ex) {
outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outMsg.message = ex.toString();
if (debugLevel > 0) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = ex.name;
outMsg.exceptionInfo.message = ex.message;
outMsg.exceptionInfo.fileName = ex.fileName;
outMsg.exceptionInfo.lineNumber = ex.lineNumber;
outMsg.exceptionInfo.columnNumber = ex.columnNumber;
outMsg.exceptionInfo.stack = ex.stack;
//outMsg.exceptionInfo.source = ex.toSource();
outMsg.serviceVersion = serviceVersion;
}
outMessages.push(outMsg);
outStatus = "error";
output.status = outStatus;
if (debugLevel > 0) {
output.debugInfos = myDebug;
}
output.messages = outMessages;
var errbody = JSON.stringify(output);
$.response.contentType = 'application/json';
$.response.setBody(errbody);
$.response.status = $.net.http.INTERNAL_SERVER_ERROR;
}
function checkUUID(myUUID) {
var exists = false;
var conn = $.db.getConnection();
var pstmt;
var query = "select \"UUID\" from \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" where UUID = ?";
pstmt = conn.prepareStatement(query);
pstmt.setNString(1, myUUID);
var rs = pstmt.executeQuery();
if (rs.next()) {
exists = true;
}
rs.close();
pstmt.close();
conn.close();
return exists;
}
function writeObj2Table(transOBJ) {
//var pdcontent = $.request.body.asString();
// pdcontent = pdcontent.replace(/\"([^(\")"]+)\":/g,"$1:");
var conn = $.db.getConnection();
var pstmt;
var query;
var vals = {};
var data = [];
var isUpdateMode = false;
// var query2;
// var output = {results: [] };
//var mynextval = getnextval();
//myDebug.mynextval = mynextval;
try {
var myUUID = transOBJ[0].uuid.toString();
isUpdateMode = checkUUID(myUUID);
if (isUpdateMode) {
// "UPDATE \"EOPERATE\".\"CHARGEDATA\" SET BDR_ID = ?,EMAID =? ,UNIQUE_ID = ?, CREATION_DATE_UTC = ?,CHARGEPOINT_ID= ?,CHARGEPOINT_TYPE= ?,CHARGEPOINT_METER_ID= ?,CHARGEPOINT_ADDRESS_COUNTRY= ?,CHARGEPOINT_ADDRESS_POSTALCODE= ?,CHARGEPOINT_ADDRESS_CITY= ?,CHARGEPOINT_ADDRESS_STREET= ?,CHARGEPOINT_OPERATOR_ID= ?,CHARGEPOINT_OPERATOR_NAME= ?,EMOBILITY_PROVIDER_ID= ?,EMOBILITY_PROVIDER_NAME= ?,CHARGE_DATA_AUTHORIZATION_TYPE= ?,CHARGE_DATA_CONSUMPTION_KWH= ?,CHARGE_DATA_BEGIN_UTC= ?,CHARGE_DATA_END_UTC= ?,CHARGE_DATA_TIME_ZONE= ?,CHARGE_DATA_EKA_STATUS= ?,PRICING_ITEMS_1_TYPE= ?,PRICING_ITEMS_1_UNIT= ?,PRICING_ITEMS_1_UNIT_PRICE= ?,PRICING_ITEMS_1_QUANTITY= ?,PRICING_ITEMS_1_NET_AMOUNT= ?,PRICING_ITEMS_1_CURRENCY= ?,PRICING_ITEMS_2_TYPE= ?,PRICING_ITEMS_2_UNIT= ?,PRICING_ITEMS_2_UNIT_PRICE= ?,PRICING_ITEMS_2_QUANTITY= ?,PRICING_ITEMS_2_NET_AMOUNT= ?,PRICING_ITEMS_2_CURRENCY= ?,PRICING_ITEMS_3_TYPE= ?,PRICING_ITEMS_3_UNIT= ?,PRICING_ITEMS_3_UNIT_PRICE= ?,PRICING_ITEMS_3_QUANTITY= ?,PRICING_ITEMS_3_NET_AMOUNT= ?,PRICING_ITEMS_3_CURRENCY= ?,PRICING_ITEMS_4_TYPE= ?,PRICING_ITEMS_4_UNIT= ?,PRICING_ITEMS_4_UNIT_PRICE= ?,PRICING_ITEMS_4_QUANTITY= ?,PRICING_ITEMS_4_NET_AMOUNT= ?,PRICING_ITEMS_4_CURRENCY= ?,SUBSCRIPTION_ID= ?,JSONRAW= ?,UPDATE_TS= CURRENT_TIMESTAMP,UPDATE_USER= CURRENT_USER)";
query =
"UPDATE \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" SET UUID=?,CDRID=?,STATIONUUID=?,CUSTOMERID=?,STARTTIME=?,STOPTIME=?,DURATION=?,WATTHOUR=?,AMOUNT=?,CURRENCY=?,TRANSACTIONTYPE=?,CREATED=?,RFID=?,STATION=?,STATION_ID=?,STATION_NAME=?,LOCATION_ID=?,LOCATION_ADDRESS=?,LOCATION_CITY=?,LOCATION_TYPE=?,CUSTOMERGROUPID=?,CUSTOMERGROUPNAME=?,ORGANIZATIONID=?,PAYMENTTYPE=?,EVSEID=?,PLUGTYPE=?,EMPSHARE=?,SIGNEDMETERVALUEBEGIN=?,SIGNEDMETERVALUEEND=?,OPERATORPRICE=?,OPERATORCURRENCY=?,OPERATORID=?,FREECHARGING=?,EMPTARIFFID=?,EMPTARIFFNAME=?,FULLEVSEID=?,METERSTART=?,METERSTOP=?,NOTES=?,MILEAGE=?,JSONRAW=?,EICHRECHTTYPE=?,KWHNETPRICE=?,MINUTENETPRICE=?,SESSIONNETPRICE=?,CPOOPERATORID=?,KWHGROSSPRICE=?,MINUTEGROSSPRICE=?,SESSIONGROSSPRICE=?,LOCATION_COUNTRY=?,BUSINESSVALIDATIONRESULT=?,TECHVALIDATIONRESULT=?,NOTBILLABLEREASON=?,FREEMINUTES=?,UPDATE_TS=CURRENT_TIMESTAMP,UPDATE_USER=CURRENT_USER where UUID = ?";
outMsg.method = "Update Data UUID: " + myUUID;
} else {
query =
"INSERT INTO \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" (UUID,CDRID,STATIONUUID,CUSTOMERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,TRANSACTIONTYPE,CREATED,RFID,STATION,STATION_ID,STATION_NAME,LOCATION_ID,LOCATION_ADDRESS,LOCATION_CITY,LOCATION_TYPE,CUSTOMERGROUPID,CUSTOMERGROUPNAME,ORGANIZATIONID,PAYMENTTYPE,EVSEID,PLUGTYPE,EMPSHARE,SIGNEDMETERVALUEBEGIN,SIGNEDMETERVALUEEND,OPERATORPRICE,OPERATORCURRENCY,OPERATORID,FREECHARGING,EMPTARIFFID,EMPTARIFFNAME,FULLEVSEID,METERSTART,METERSTOP,NOTES,MILEAGE,JSONRAW,UPDATE_TS,EICHRECHTTYPE,KWHNETPRICE,MINUTENETPRICE,SESSIONNETPRICE,CPOOPERATORID,KWHGROSSPRICE,MINUTEGROSSPRICE,SESSIONGROSSPRICE,LOCATION_COUNTRY,BUSINESSVALIDATIONRESULT,TECHVALIDATIONRESULT,NOTBILLABLEREASON,FREEMINUTES,UPDATE_USER) values (" +
"?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_USER)";
outMsg.method = "Insert Data UUID: " + myUUID;
}
// query = "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,TYPE,GROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
//query =
// "UPSERT \"VIRTAPORTAL\".\"EMP_TRANSACTIONS\" (UUID,CDRID,STATIONUUID,CUSTOMERID,STARTTIME,STOPTIME,DURATION,WATTHOUR,AMOUNT,CURRENCY,TRANSACTIONTYPE,CREATED,RFID,STATION,STATION_ID,STATION_NAME,LOCATION_ID,LOCATION_ADDRESS,LOCATION_CITY,LOCATION_TYPE,CUSTOMERGROUPID,CUSTOMERGROUPNAME,ORGANIZATIONID,PAYMENTTYPE,EVSEID,PLUGTYPE,EMPSHARE,SIGNEDMETERVALUEBEGIN,SIGNEDMETERVALUEEND,OPERATORPRICE,OPERATORCURRENCY,OPERATORID,FREECHARGING,EMPTARIFFID,EMPTARIFFNAME,FULLEVSEID,METERSTART,METERSTOP,NOTES,MILEAGE,JSONRAW,UPDATE_TS,EICHRECHTTYPE,KWHNETPRICE,MINUTENETPRICE,SESSIONNETPRICE,CPOOPERATORID,KWHGROSSPRICE,MINUTEGROSSPRICE,SESSIONGROSSPRICE,LOCATION_COUNTRY) values (" +
// "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?,?,?,?,?,?,?,?,?) WITH PRIMARY KEY";
// "INSERT INTO \"NICEPORTAL\".\"UO_CRM_DATA_BP\" (ID,ID_MSD,ID_CRM,TYPE,BPGROUP,SALUTATION,TITLE,NAME,SURNAME,PHONE,MOBILE_PHONE,EMAIL,ADDRESS_JSON,IBAN,BIC,SEPA_MANDATE_ID,SIGNATURE_DATE,ACCOUNT_OWNER,STREET,STREET_NO,ZIP_CODE,CITY,JSONRAW,CREATE_TS,UPDATE_TS) values (\"NICEPORTAL\".\"SEQ_CRMBP_ID\".NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP)";
pstmt = conn.prepareStatement(query);
pstmt.setBatchSize(transOBJ.length);
//$.trace.debug("prepareBatchStatement (" + transOBJ.length.toString() + " rows): " + query);
transOBJ.forEach(function(transRow) {
pstmt.setNString(1, transRow.uuid);
/*
if (!isNaN(parseInt(transRow.cdrId))) {
pstmt.setInteger(2, transRow.cdrId);
} else {
pstmt.setNull(2);
}
*/
if (transRow.cdrId) {
pstmt.setNString(2, transRow.cdrId.toString());
} else {
pstmt.setNull(2);
}
if (transRow.stationUuid) {
pstmt.setNString(3, transRow.stationUuid);
} else {
pstmt.setNull(3);
}
if (!isNaN(parseInt(transRow.customerId))) {
pstmt.setInteger(4, transRow.customerId);
} else {
pstmt.setNull(4);
}
if (transRow.startTime) {
pstmt.setNString(5, transRow.startTime);
} else {
pstmt.setNull(5);
}
if (transRow.stopTime) {
pstmt.setNString(6, transRow.stopTime);
} else {
pstmt.setNull(6);
}
if (!isNaN(parseInt(transRow.duration))) {
pstmt.setInteger(7, transRow.duration);
} else {
pstmt.setNull(7);
}
if (!isNaN(parseInt(transRow.wattHour))) {
pstmt.setInteger(8, transRow.wattHour);
} else {
pstmt.setNull(8);
}
if (!isNaN(parseInt(transRow.amount))) {
pstmt.setInteger(9, transRow.amount);
} else {
pstmt.setNull(9);
}
if (transRow.currency) {
pstmt.setNString(10, transRow.currency);
} else {
pstmt.setNull(10);
}
if (transRow.transactionType) {
pstmt.setNString(11, transRow.transactionType);
} else {
pstmt.setNull(11);
}
if (transRow.created) {
pstmt.setNString(12, transRow.created);
} else {
pstmt.setNull(12);
}
if (transRow.rfid) {
pstmt.setNString(13, transRow.rfid);
} else {
pstmt.setNull(13);
}
if (transRow.station) {
pstmt.setNClob(14, JSON.stringify(transRow.station));
pstmt.setNString(15, transRow.station.identity);
if (transRow.station.name) {
pstmt.setNString(16, transRow.station.name.substr(0,100));
} else {
pstmt.setNull(16);
}
if (typeof transRow.station.location === "undefined") {
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
pstmt.setNull(50);
} else {
if (!isNaN(parseInt(transRow.station.location.id))) {
pstmt.setInteger(17, transRow.station.location.id);
} else {
pstmt.setNull(17);
}
if (transRow.station.location.address) {
pstmt.setNString(18, transRow.station.location.address);
} else {
pstmt.setNull(18);
}
if (transRow.station.location.city) {
pstmt.setNString(19, transRow.station.location.city);
} else {
pstmt.setNull(19);
}
if (transRow.station.location.locationType) {
pstmt.setNString(20, transRow.station.location.locationType);
} else {
pstmt.setNull(20);
}
if (transRow.station.location.country) {
pstmt.setNString(50, transRow.station.location.country);
} else {
pstmt.setNull(50);
}
}
} else {
pstmt.setNull(14);
pstmt.setNull(15);
pstmt.setNull(16);
pstmt.setNull(17);
pstmt.setNull(18);
pstmt.setNull(19);
pstmt.setNull(20);
pstmt.setNull(50);
}
pstmt.setInteger(21, transRow.customerGroupId);
if (transRow.customerGroupName) {
pstmt.setNString(22, transRow.customerGroupName);
} else {
pstmt.setNull(22);
}
if (!isNaN(parseInt(transRow.organizationId))) {
pstmt.setInteger(23, transRow.organizationId);
} else {
pstmt.setNull(23);
}
if (transRow.paymentType) {
pstmt.setNString(24, transRow.paymentType);
} else {
pstmt.setNull(24);
}
if (transRow.evseId) {
pstmt.setNString(25, transRow.evseId.toString());
} else {
pstmt.setNull(25);
}
if (transRow.plugType) {
pstmt.setNString(26, transRow.plugType);
} else {
pstmt.setNull(26);
}
if (!isNaN(parseInt(transRow.empShare))) {
pstmt.setInteger(27, transRow.empShare);
} else {
pstmt.setNull(27);
}
if (transRow.signedMeterValueBegin) {
pstmt.setNString(28, transRow.signedMeterValueBegin.substr(0, 50));
} else {
pstmt.setNull(28);
}
if (transRow.signedMeterValueEnd) {
pstmt.setNString(29, transRow.signedMeterValueEnd.substr(0, 50));
} else {
pstmt.setNull(29);
}
if (!isNaN(parseInt(transRow.operatorPrice))) {
pstmt.setInteger(30, transRow.operatorPrice);
} else {
pstmt.setNull(30);
}
if (transRow.operatorCurrency) {
pstmt.setNString(31, transRow.operatorCurrency);
} else {
pstmt.setNull(31);
}
if (!isNaN(parseInt(transRow.operatorId))) {
pstmt.setInteger(32, transRow.operatorId);
} else {
pstmt.setNull(32);
}
if (transRow.freeCharging) {
pstmt.setNString(33, transRow.freeCharging);
} else {
pstmt.setNull(33);
}
if (!isNaN(parseInt(transRow.empTariffId))) {
pstmt.setInteger(34, transRow.empTariffId);
} else {
pstmt.setNull(34);
}
if (transRow.empTariffName) {
pstmt.setNString(35, transRow.empTariffName);
} else {
pstmt.setNull(35);
}
if (transRow.fullEvseId) {
pstmt.setNString(36, transRow.fullEvseId);
} else {
pstmt.setNull(36);
}
if (!isNaN(parseInt(transRow.meterStart))) {
pstmt.setInteger(37, transRow.meterStart);
} else {
pstmt.setNull(37);
}
if (!isNaN(parseInt(transRow.meterStop))) {
pstmt.setInteger(38, transRow.meterStop);
} else {
pstmt.setNull(38);
}
pstmt.setNString(39, JSON.stringify(transRow.notes));
if (transRow.notes && transRow.notes.length > 0) {
pstmt.setInteger(40, transRow.notes[0].value);
} else {
pstmt.setNull(40);
}
//pstmt.setNString(34, "1234");
pstmt.setNString(41, JSON.stringify(transRow));
if (transRow.eichrechtType) {
pstmt.setNString(42, transRow.eichrechtType);
} else {
pstmt.setNull(42);
}
if (!isNaN(parseInt(transRow.empKwhNetPrice))) {
pstmt.setInteger(43, transRow.empKwhNetPrice);
} else {
pstmt.setNull(43);
}
if (!isNaN(parseInt(transRow.empMinuteNetPrice))) {
pstmt.setInteger(44, transRow.empMinuteNetPrice);
} else {
pstmt.setNull(44);
}
if (!isNaN(parseInt(transRow.empSessionNetPrice))) {
pstmt.setInteger(45, transRow.empSessionNetPrice);
} else {
pstmt.setNull(45);
}
if (transRow.cpoOperatorId) {
pstmt.setNString(46, transRow.cpoOperatorId);
} else {
pstmt.setNull(46);
}
if (!isNaN(parseInt(transRow.empKwhGrossPrice))) {
pstmt.setInteger(47, transRow.empKwhGrossPrice);
} else {
pstmt.setNull(47);
}
if (!isNaN(parseInt(transRow.empMinuteGrossPrice))) {
pstmt.setInteger(48, transRow.empMinuteGrossPrice);
} else {
pstmt.setNull(48);
}
if (!isNaN(parseInt(transRow.empSessionGrossPrice))) {
pstmt.setInteger(49, transRow.empSessionGrossPrice);
} else {
pstmt.setNull(49);
}
//20.04.2023 Erweiterung PlausiheckFelder
if (transRow.businessValidationResult) {
pstmt.setNString(51, transRow.businessValidationResult);
} else {
pstmt.setNull(51);
}
if (transRow.techValidationResult) {
pstmt.setNString(52, transRow.techValidationResult);
} else {
pstmt.setNull(52);
}
if (transRow.notBillableReason) {
pstmt.setNString(53, transRow.notBillableReason);
} else {
pstmt.setNull(53);
}
if (!isNaN(parseInt(transRow.empFreeMinutes))) {
pstmt.setInteger(54, transRow.empFreeMinutes);
} else {
pstmt.setNull(54);
}
if (isUpdateMode) {
pstmt.setNString(55, myUUID);
}
pstmt.addBatch();
});
var batchResult = pstmt.executeBatch();
//$.trace.debug("BatchUpsert Result: " + batchResult.toString());
pstmt.close();
conn.commit();
conn.close();
outMsg = {};
outMsg.method = "insertDB";
outMsg.status = "success";
outMessages.push(outMsg);
} catch (e) {
$.trace.error("InsertDB ExceptionHandler: " + e.toString());
exceptionHandler(e);
/*outMsg = {};
outMsg.method = "exceptionHandler";
outMsg.status = "error";
outStatus = "error";
output.status = outStatus;
outMsg.message = e.toString();
if (ParDebug) {
outMsg.exceptionInfo = {};
outMsg.exceptionInfo.name = e.name;
outMsg.exceptionInfo.message = e.message;
outMsg.exceptionInfo.fileName = e.fileName;
outMsg.exceptionInfo.lineNumber = e.lineNumber;
outMsg.exceptionInfo.columnNumber = e.columnNumber;
outMsg.exceptionInfo.stack = e.stack;
//outMsg.exceptionInfo.source = e.toSource();
}
outMessages.push(outMsg);
vals.status = 'error';
//vals.description = e.message;
vals.messages = outMessages;
if (ParDebug) {
vals.debug = {};
vals.debug.statement = query;
}*/
}
}
function checkPayload(aCDR) {
var isValid = true;
var reason = "";
try {
if (Array.isArray(aCDR)) {
aCDR.forEach(function(cdrObj) {
if (!cdrObj.hasOwnProperty('uuid')) {
isValid = false;
reason =
" (mandatory properties are: uuid)";
}
});
} else {
isValid = false;
reason = " (payload is not an array)";
}
} catch (e) {
exceptionHandler(e);
isValid = false;
}
if (!isValid) {
outMsg = {};
outMsg.method = "checkPayload";
outMsg.status = "error";
outStatus = "error";
$.response.status = $.net.http.BAD_REQUEST;
outMsg.message = "invalid payload structure" + reason;
outMessages.push(outMsg);
}
return isValid;
}
function processData(sObj) {
try {
var cdrData = JSON.parse(sObj);
if (!Array.isArray(cdrData)) {
cdrData = [cdrData];
}
if (checkPayload(cdrData)) {
writeObj2Table(cdrData);
}
} catch (e) {
exceptionHandler(e);
}
}
ParDebug = $.request.parameters.get('debug') && $.request.parameters.get('debug').toLowerCase() === "true";
var content = '';
if ($.request.body) {
content = $.request.body.asString();
}
processData(content);
setOutputMessage();
+1
View File
@@ -0,0 +1 @@
BILLINGRUNUI
@@ -0,0 +1 @@
{"type":"mta","builders":{"default":"mtabuilder","configs":{}},"runners":{"configs":{}},"attributes":{"sap.watt.common.setting":["{\"generation\":[{\"templateId\":\"hanatemplates.hanamtaproject\",\"templateVersion\":\"1.0.0\",\"dateTimeStamp\":\"Fri, 08 Nov 2019 12:03:22 GMT\"}],\"translation\":{\"translationDomain\":\"\",\"supportedLanguages\":\"en,fr,de\",\"defaultLanguage\":\"en\",\"defaultI18NPropertyFile\":\"i18n.properties\",\"resourceModelName\":\"i18n\"},\"basevalidator\":{\"services\":{\"json\":\"jsonValidator\",\"xml\":\"xmlValidator\",\"js\":\"jsValidator\"}},\"build\":{\"targetFolder\":\"dist\",\"sourceFolder\":\"webapp\"}}"]},"mixinTypes":[]}
+20
View File
@@ -0,0 +1,20 @@
{
"exposed": true,
"authentication": [{
"method": "Form"
}],
"mime_mapping": [{
"extension": "jpg",
"mimetype": "image/jpeg"
}],
"force_ssl": false,
"enable_etags": true,
"prevent_xsrf": true,
"anonymous_connection": null,
"cors": [{
"enabled": false
}],
"cache_control": "no-cache, no-store",
"default_file": "index.html"
}
@@ -0,0 +1,10 @@
description = "b1i saphanats03 server";
host = "192.168.50.187";
port = 8080;
pathPrefix = "/B1iXcellerator/exec/ipo/vP.0010000105.in_HCSX/com.sap.b1i.vplatform.runtime/INB_HT_CALL_SYNC_XPT/INB_HT_CALL_SYNC_XPT.ipo/proc";
proxyType = none;
proxyHost = "localhost";
proxyPort = 0;
authType = none;
useSSL = false;
timeout = 0;
@@ -0,0 +1,71 @@
var ParDebug = false;
var Billingrunmode = "ABC";
var DateFrom = "";
var DateTo = "";
var BillingRunDate = "20190701";
function doHTTPCallstartBillingrun(Billingrunmode,BillingRunDate,DateFrom,DateTo) {
//http://172.17.12.201:8080/B1iXcellerator/exec/ipo/vP.0010000104.in_HCSX/com.sap.b1i.vplatform.runtime/INB_HT_CALL_SYNC_XPT/INB_HT_CALL_SYNC_XPT.ipo/proc?biu=uni.eon.emob.addcdr&SysId=0010000100&CdrCallId=4aa9b243be184a4abdb4179f375459be
var destn_pkg = "uniorg.mrssporty.billingrunui.b1iwrapper";
var dest_name = "B1I";
try
{
var dest = $.net.http.readDestination(destn_pkg, dest_name);
var client = new $.net.http.Client();
var req = new $.web.WebRequest($.net.http.GET, "");
var oSysId = "0010000104";
// oCdrCallId = "4aa9b243be184a4abdb4179f375459be";
req.parameters.set("biu", "uni.msp.billing.run");
//req.parameters.set("msglog", "true");
req.parameters.set("function", "triggerbillingrun");
req.parameters.set("SysId", oSysId);
req.parameters.set("Billingrunmode", Billingrunmode);
// req.parameters.set("DateFrom", DateFrom);
// req.parameters.set("DateTo", DateTo);
req.parameters.set("BillingRunDate", BillingRunDate);
//, "/httpdest.png");
client.request(req, dest);
var response = client.getResponse();
var b1iResp = response.body.asString()
$.trace.debug("DEBUG Billingmode: " + Billingrunmode );
$.response.status = $.net.http.OK;
$.response.contentType = "text/xml";
$.response.setBody(b1iResp);
} catch (e) {
$.response.contentType = "text/plain";
$.response.setBody(e.message);
}
}
if ($.request.parameters.get('Billingrunmode')) {
Billingrunmode = $.request.parameters.get('Billingrunmode');
}
if ($.request.parameters.get('DateFrom')) {
DateFrom = $.request.parameters.get('DateFrom');
}
if ($.request.parameters.get('DateTo')) {
DateTo = $.request.parameters.get('DateTo');
}
if ($.request.parameters.get('BillingRunDate')) {
BillingRunDate = $.request.parameters.get('BillingRunDate');
}
doHTTPCallstartBillingrun(Billingrunmode,BillingRunDate);
+11
View File
@@ -0,0 +1,11 @@
ID: UOBILLING
_schema-version: '2.1'
version: 0.0.1
modules:
- name: BILLINGRUNUI
type: html5
path: BILLINGRUNUI
+12
View File
@@ -0,0 +1,12 @@
{
"name": "uniorg-approuter",
"engines": {
"node": ">=4.0.0 <9.0.0"
},
"dependencies": {
"@sap/approuter": "5.13.0"
},
"scripts": {
"start": "node node_modules/@sap/approuter/approuter.js"
}
}
@@ -0,0 +1,30 @@
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"uniorg/eon/virtaportalui/model/models"
], function (UIComponent, Device, models) {
"use strict";
return UIComponent.extend("uniorg.eon.virtaportalui.Component", {
metadata: {
manifest: "json"
},
/**
* The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
* @public
* @override
*/
init: function () {
// call the base component's init function
UIComponent.prototype.init.apply(this, arguments);
// enable routing
this.getRouter().initialize();
// set the device model
this.setModel(models.createDeviceModel(), "device");
}
});
});
@@ -0,0 +1,437 @@
sap.ui.define([
'jquery.sap.global',
'sap/ui/core/Fragment',
'sap/m/MessageBox',
'sap/m/MessagePopover',
'sap/m/MessageItem',
'sap/m/MessageToast',
'sap/ui/core/message/Message',
'sap/ui/core/MessageType',
'sap/ui/core/Core',
'sap/ui/core/mvc/Controller',
'sap/ui/model/json/JSONModel',
'sap/ui/core/Element'
], function (jQuery,Fragment,MessageBox,MessagePopover, MessageItem, MessageToast, Message, MessageType,Core,Controller,JSONModel,Element) {
"use strict";
//Version 1.0.1
var _timeout;
var _myrunid;
var _hostname = window.location.hostname;
var _VersionInfo = '1.0.1';
return Controller.extend("uniorg.eon.virtaportalui.controller.View1", {
onInit: function () {
var oModel = new JSONModel("./localService/mockdata/FormsModel.json");
this.oView = this.getView();
this._MessageManager = Core.getMessageManager();
this.oView.setModel(oModel);
// this._MessageManager.registerObject(this.oView.byId("formContainer"), true);
this.oView.setModel(this._MessageManager.getMessageModel(),"message");
this.createMessagePopover();
},
convertmydate: function() {
var mm = this.getMonth() + 1; // getMonth() is zero-based
var dd = this.getDate();
return [this.getFullYear(),
(mm>9 ? '' : '0') + mm,
(dd>9 ? '' : '0') + dd
].join('');
},
// start messagepopover
handleMessagePopoverPress: function (oEvent) {
if (!this.oMP) {
this.createMessagePopover();
}
this.oMP.toggle(oEvent.getSource());
},
createMessagePopover: function () {
var that = this;
this.oMP = new MessagePopover({
activeTitlePress: function (oEvent) {
var oItem = oEvent.getParameter("item"),
oPage = that.oView.byId("messageHandlingPage"),
oMessage = oItem.getBindingContext("message").getObject(),
oControl = Element.registry.get(oMessage.getControlId());
if (oControl) {
oPage.scrollToElement(oControl.getDomRef(), 200, [0, -100]);
setTimeout(function(){
oControl.focus();
}, 300);
}
},
items: {
path:"message>/",
template: new MessageItem(
{
title: "{message>message}",
subtitle: "{message>additionalText}",
groupName: {parts: [{path: 'message>controlIds'}], formatter: this.getGroupName},
activeTitle: {parts: [{path: 'message>controlIds'}], formatter: this.isPositionable},
type: "{message>type}",
description: "{message>message}"
})
}
});
this.oMP._oMessageView.setGroupItems(true);
this.getView().byId("messagePopoverBtn").addDependent(this.oMP);
},
getGroupName : function (sControlId) {
// the group name is generated based on the current layout
// and is specific for each use case
var oControl = Element.registry.get(sControlId);
if (oControl) {
var sFormSubtitle = oControl.getParent().getParent().getTitle().getText(),
sFormTitle = oControl.getParent().getParent().getParent().getTitle();
return sFormTitle + ", " + sFormSubtitle;
}
},
isPositionable : function (sControlId) {
// Such a hook can be used by the application to determine if a control can be found/reached on the page and navigated to.
return sControlId ? true : true;
},
onChange: function (oEvent) {
var oInput = oEvent.getSource();
if (oInput.getRequired()) {
this.handleRequiredField(oInput);
}
if (oInput.getLabels()[0].getText() === "Standard Weekly Hours") {
this.checkInputConstraints(oInput);
}
},
handleRequiredField: function (oInput) {
var sTarget = oInput.getBindingContext().getPath() + "/" + oInput.getBindingPath("value");
this.removeMessageFromTarget(sTarget);
if (!oInput.getValue()) {
this._MessageManager.addMessages(
new Message({
message: "A mandatory field is required",
type: MessageType.Error,
additionalText: oInput.getLabels()[0].getText(),
target: sTarget,
processor: this.getView().getModel()
})
);
}
},
checkInputConstraints: function (oInput) {
var oBinding = oInput.getBinding("value"),
sValueState = "None",
sTarget = oInput.getBindingContext().getPath() + "/" + oInput.getBindingPath("value");
this.removeMessageFromTarget(sTarget);
try {
oBinding.getType().validateValue(oInput.getValue());
} catch (oException) {
sValueState = "Warning";
this._MessageManager.addMessages(
new Message({
message: "The value should not exceed 40",
type: MessageType.Warning,
additionalText: oInput.getLabels()[0].getText(),
description: "The value of the working hours field should not exceed 40 hours.",
target: sTarget,
processor: this.getView().getModel()
})
);
}
oInput.setValueState(sValueState);
},
removeMessageFromTarget: function (sTarget) {
this._MessageManager.getMessageModel().getData().forEach(function(oMessage){
if (oMessage.target === sTarget) {
this._MessageManager.removeMessages(oMessage);
}
}.bind(this));
},
_generateInvalidUserInput: function () {
var oButton = this.getView().byId("messagePopoverBtn"),
oRequiredNameInput = this.oView.byId("formContainer").getItems()[4].getContent()[2],
oNumericZipInput = this.oView.byId("formContainer").getItems()[5].getContent()[7],
oEmailInput = this.oView.byId("formContainer").getItems()[6].getContent()[13],
iWeeklyHours = this.oView.byId("formContainerEmployment").getItems()[0].getContent()[13];
oButton.setVisible(true);
oRequiredNameInput.setValue(undefined);
oNumericZipInput.setValue("AAA");
oEmailInput.setValue("MariaFontes.com");
iWeeklyHours.setValue(400);
this.handleRequiredField(oRequiredNameInput);
this.checkInputConstraints(iWeeklyHours);
this.oMP.getBinding("items").attachChange(function(oEvent){
this.oMP._oMessageView.navigateBack();
}.bind(this));
setTimeout(function(){
this.oMP.openBy(oButton);
}.bind(this), 100);
},
// ende messagpopover
closeMyOpenDialog: function (oEvent) {
this._dialog.close();
},
onOpenDialog: function (oEvent) {
// instantiate dialog
if (!this._dialog) {
this._dialog = sap.ui.xmlfragment("uniorg.eon.virtaportalui.view.BusyDialog", this);
this.getView().addDependent(this._dialog);
}
// open dialog
jQuery.sap.syncStyleClass("sapUiSizeCompact", this.getView(), this._dialog);
this._dialog.open();
// simulate end of operation
/* _timeout = jQuery.sap.delayedCall(3000, this, function () {
this._dialog.close();
});*/
},
onDialogClosed: function (oEvent) {
jQuery.sap.clearDelayedCall(_timeout);
if (oEvent.getParameter("cancelPressed")) {
MessageToast.show("The operation has been cancelled");
} else {
MessageToast.show("The operation has been completed");
}
},
callb1iphase1: function (myMode,myBookingdate,oEvent) {
var that = this;
var myMode = this.getView().byId("box0").getValue();
var myDateFrom = this.getView().byId("picker0").getValue();
var myDateTo = this.getView().byId("picker1").getValue();
// var myDuedate = this.getView().byId("picker1").getValue();
console.log("mymode ist:" + myMode);
var today = new Date();
var parts = myDateFrom.split('.');
var parts2 = myDateTo.split('.');
var PageSize = 200;
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
//var mynewdate = new Date(parts[0], parts[1] - 1, parts[2]);
myDateFrom = parts[2] + parts[1] + parts[0];
myDateTo = parts2[2] + parts2[1] + parts2[0];
//var oInput = oEvent.getSource();
//var sTarget = oInput.getBindingContext().getPath() + "/" + oInput.getBindingPath("value");
var myurl ="";
if (myMode=='EMP')
{
myurl = "https://" + _hostname + ":4300/uniorg/eon/virta/v1/getemptrans.xsjs";
}
if (myMode=='CPO')
{
myurl = "https://" + _hostname + ":4300/uniorg/eon/virta/v1/getcpotrans.xsjs";
}
var responsephase1 =$.ajax({
type: "GET",
// data: "POST CONTENT DATA",
crossDomain: true,
url: myurl,
data: {'debug' : true, 'pageSize':PageSize,'DateFrom':myDateFrom,'DateTo':myDateTo,'Billingrunmode':myMode},
contentType: "application/json",
timeout: 3600000,
success: function(result) {
that._dialog.close();
var bCompact = !!that.getView().$().closest(".sapUiSizeCompact").length;
//var xmlDoc = jQuery.parseXML(responsephase1.responseText);
//console.log(xmlDoc.childNodes[0].childNodes[1].innerHTML);
console.log(responsephase1.responseText);
var retrunid = "xxx";
var iserror = false;
if (retrunid.toString().length > 40){
iserror = true;
}
var encodedResponse = responsephase1.responseJSON;
console.log(encodedResponse);
if (!iserror)
{
sap.m.MessageBox.information("Data Download finished", {
title: "run finished",
id: "messageBoxId1",
details: encodedResponse,
//styleClass: bCompact ? "sapUiSizeCompact" : "",
contentWidth: "1000px"
});
that._MessageManager.addMessages(
new Message({
message: "run finished ID:" + retrunid,
type: MessageType.Information,
additionalText: encodedResponse
// target: sTarget
// processor: mythis.getView().getModel()
})
);
}
else {
sap.m.MessageBox.information("run failure", {
title: "Error at run",
id: "messageBoxId1",
details: encodedResponse,
styleClass: "sapUiSizeCompact",
contentWidth: "1000px"
});
that._MessageManager.addMessages(
new Message({
message: "Failure at Http Call",
type: MessageType.Error,
additionalText: encodedResponse
// target: sTarget
// processor: mythis.getView().getModel()
})
);
}
return retrunid;
},
error: function(response) {
that._dialog.close();
/* var encodedResponse = responsephase1.responseText.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&apos;');
console.log(encodedResponse);*/
//var bCompact = !!this.getView().$().closest(".sapUiSizeCompact").length;
// var retrunid = xmlDoc.childNodes[0].childNodes[1].innerHTML;
// this.closeMyOpenDialog;
sap.m.MessageBox.error("Error in HTTP CALL", {
title: "Error in HTTPCALL",
id: "messageBoxId1",
details: response,
styleClass: "sapUiSizeCompact",
contentWidth: "1000px"
});
return "";
}
});
},
pushthebutton: function (oEvent) {
//This code was generated by the layout editor.
var myMode = this.getView().byId("box0").getValue();
var myDateFrom = this.getView().byId("picker0").getValue();
var myDateTo = this.getView().byId("picker1").getValue();
// var myDuedate = this.getView().byId("picker1").getValue();
console.log("mymode ist:" + myMode);
var today = new Date();
// myBookingdate = today.toISOString().substring(0, 10);
var myMode = this.getView().byId("box0").getValue();
var myBookingdate = this.getView().byId("picker0").getValue();
// var myDuedate = this.getView().byId("picker1").getValue();
console.log("mymode ist:" + myMode);
var isError = false;
if (myMode.toString().length == 0)
{
isError = true;
var msgtxt="empty Mode please select a value";
MessageToast.show(msgtxt);
this._MessageManager.addMessages(
new Message({
message: msgtxt,
type: MessageType.Error,
additionalText: myMode
// target: sTarget
// processor: mythis.getView().getModel()
})
);
}
if (myDateFrom.toString().length > 0 && myDateTo.toString().length > 0 ){
var today = new Date();
var parts = myDateFrom.split('.');
var parts2 = myDateTo.split('.');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
//var mynewdate = new Date(parts[0], parts[1] - 1, parts[2]);
myDateFrom = "20" + parts[2] + parts[1] + parts[0];
myDateTo = "20" + parts2[2] + parts2[1] + parts2[0];
}
else {
isError= true;
var msgtxt="empty From or To Date please select a value";
MessageToast.show(msgtxt);
this._MessageManager.addMessages(
new Message({
message: msgtxt,
type: MessageType.Error,
additionalText: myMode
// target: sTarget
// processor: mythis.getView().getModel()
})
);
}
if (!isError)
{
this.onOpenDialog(oEvent);
var mycrrundid = this.callb1iphase1(myMode,myBookingdate,oEvent);
console.log("Ergebnis functionhttpcall phase1: " + mycrrundid);
}
}
});
});
@@ -0,0 +1 @@
/* Enter your custom styles here */
@@ -0,0 +1,4 @@
title=VIRTA PORTAL INTERFACE
appTitle=VIRTAPORTAL LOADER
appDescription=App Description
VersionInfo=1.0.7
@@ -0,0 +1,35 @@
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="UTF-8">
<title>BILLINGRUNUI</title>
<script id="sap-ui-bootstrap"
src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-libs="sap.m"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-compatVersion="edge"
data-sap-ui-resourceroots='{"uniorg.eon.virtaportalui": "./"}'>
</script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script>
sap.ui.getCore().attachInit(function() {
new sap.m.Shell({
app: new sap.ui.core.ComponentContainer({
height : "100%",
name : "uniorg.eon.virtaportalui"
})
}).placeAt("content");
});
</script>
</head>
<body class="sapUiBody" id="content">
</body>
</html>
@@ -0,0 +1,158 @@
{
"forms": [
{
"name": "Julie Armstrong",
"street": {
"name": "Mainstreet",
"number": 1278
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "Julie.Armstrong@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
},
{
"name": "Denise Smith",
"street": {
"name": "Mainstreet",
"number": 1567
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "Denise.Smith@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
},
{
"name": "Richard Wilson",
"street": {
"name": "Mainstreet",
"number": 2984
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "Richard.Wilson@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
},
{
"name": "Gerd Becker",
"street": {
"name": "Mainstreet",
"number": 3614
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "Gerd.Becker@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
},
{
"name": "John Miller",
"street": {
"name": "Mainstreet",
"number": 1618
},
"zip": {
"code": "AAA",
"city": "Maintown"
},
"country": "Germany",
"email": "John.Miller@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
},
{
"name": "Stefan Bosch",
"street": {
"name": "Mainstreet",
"number": 4864
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "Stefan.Bosch@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
},
{
"name": "Maria Fontes",
"street": {
"name": "Mainstreet",
"number": 4864
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "MariaFontescompany.com"
},
{
"name": "Antonio Ferrari",
"street": {
"name": "Mainstreet",
"number": 2598
},
"zip": {
"code": 12345,
"city": "Maintown"
},
"country": "Germany",
"email": "Antonio.Ferrari@company.com",
"phone": {
"number": "+1 (610) 661-1000",
"time": "12:00"
},
"website": "n/a"
}
],
"employment": [
{
"jobTitle": "Senior UI Developer (UIDEV-SR)",
"payGrade": "Salary Grade 18 (GR-14",
"unit": "ABC",
"class": "Employee",
"fte": 1,
"weeklyHours": 0
}
]
}
@@ -0,0 +1,97 @@
{
"_version": "1.5.0",
"sap.app": {
"id": "uniorg.eon.virtaportalui",
"type": "application",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "1.0.0"
},
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"sourceTemplate": {
"id": "hanatemplates.basicSAPUI5ApplicationProject",
"version": "0.0.0"
}
},
"sap.ui": {
"technology": "UI5",
"icons": {
"icon": "",
"favIcon": "",
"phone": "",
"phone@2": "",
"tablet": "",
"tablet@2": ""
},
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
},
"supportedThemes": [
"sap_hcb",
"sap_bluecrystal"
]
},
"sap.ui5": {
"rootView": {
"viewName": "uniorg.eon.virtaportalui.view.View1",
"type": "XML"
},
"dependencies": {
"minUI5Version": "1.30.0",
"libs": {
"sap.ui.core": {},
"sap.m": {},
"sap.ui.layout": {},
"sap.ushell": {},
"sap.collaboration": {},
"sap.ui.comp": {},
"sap.uxap": {}
}
},
"contentDensities": {
"compact": true,
"cozy": true
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "uniorg.eon.virtaportalui.i18n.i18n"
}
}
},
"resources": {
"css": [{
"uri": "css/style.css"
}]
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"async": true,
"viewPath": "uniorg.eon.virtaportalui.view",
"controlAggregation": "pages",
"controlId": "idAppControl"
},
"routes": [{
"name": "RouteView1",
"pattern": "RouteView1",
"target": ["TargetView1"]
}],
"targets": {
"TargetView1": {
"viewType": "XML",
"transition": "slide",
"clearAggregation": true,
"viewName": "View1"
}
}
}
}
}
@@ -0,0 +1,16 @@
sap.ui.define([
"sap/ui/model/json/JSONModel",
"sap/ui/Device"
], function (JSONModel, Device) {
"use strict";
return {
createDeviceModel: function () {
var oModel = new JSONModel(Device);
oModel.setDefaultBindingMode("OneWay");
return oModel;
}
};
});
@@ -0,0 +1,9 @@
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core">
<BusyDialog
title="Portal Downloader"
text="... Download started ..."
showCancelButton="true"
close="onDialogClosed"/>
</core:FragmentDefinition>
@@ -0,0 +1,28 @@
<mvc:View
controllerName="sap.m.sample.MessageBoxInfo.controller.MessageBoxInfo"
xmlns:l="sap.ui.layout"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m">
<l:VerticalLayout
class="sapUiContentPadding"
setwidth="50"
width="100%">
<l:content>
<Button
text="Show Details - Text"
class="sapUiSmallMarginBottom"
press="showTextInfo"
width="500px"/>
<Button
text="Show Details - FormattedText"
class="sapUiSmallMarginBottom"
press="showFormattedTextInfo"
width="500px"/>
<Button
text="Show Details - JSON"
class="sapUiSmallMarginBottom"
press="showJSONInfo"
width="500px"/>
</l:content>
</l:VerticalLayout>
</mvc:View>
@@ -0,0 +1,44 @@
<mvc:View controllerName="uniorg.eon.virtaportalui.controller.View1" xmlns:mvc="sap.ui.core.mvc" xmlns:html="http://www.w3.org/1999/xhtml"
displayBlock="true" xmlns="sap.m">
<App id="idAppControl">
<pages>
<Page id="messageHandlingPage" title="{i18n>title} V{i18n>VersionInfo}">
<content>
<Panel width="auto" class="sapUiResponsiveMargin" accessibleRole="Region">
<headerToolbar>
<OverflowToolbar height="3rem">
<Title text="{i18n>title}"/>
<ToolbarSpacer />
<Button icon="sap-icon://settings" />
<Button icon="sap-icon://drop-down-list" />
</OverflowToolbar>
</headerToolbar>
<Label id="label1" text="VIRTA DATA LOADER" width="50%" design="Bold" textAlign="Left" vAlign="Middle"/>
<ComboBox xmlns="sap.m" id="box0" width="60%">
<items>
<core:Item xmlns:core="sap.ui.core" key="EMP" text="EMP" id="item0"/>
<core:Item xmlns:core="sap.ui.core" key="CPO" text="CPO" id="item1"/>
</items>
</ComboBox>
<Label id="label2" text="Define Range" width="60%" design="Bold" textAlign="Left" vAlign="Middle"/>
<DatePicker xmlns="sap.m" id="picker0" name="StartDate" required="true" maxWidth="50%" tooltip="Start Date" valueFormat="dd.MM.yyyy"/>
<DatePicker xmlns="sap.m" id="picker1" name="EndDate" required="true" maxWidth="50%" tooltip="End Date" valueFormat="dd.MM.yyyy"/>
<Button xmlns="sap.m" text="get Data" id="button0" press="pushthebutton"/>
</Panel>
</content>
<footer>
<OverflowToolbar>
<Button id="messagePopoverBtn" icon="sap-icon://message-popup" type="Emphasized"
text="{=${message>/}.length}"
visible="{=!!${message>/}.length}"
press="handleMessagePopoverPress"/>
<ToolbarSpacer/>
<!-- <Button type="Emphasized" text="Save" press="_generateInvalidUserInput" />
<Button text="Cancel" /> -->
</OverflowToolbar>
</footer>
</Page>
</pages>
</App>
</mvc:View>
+5
View File
@@ -0,0 +1,5 @@
{
"welcomeFile": "webapp/index.html",
"authenticationMethod": "none",
"routes": []
}