Correct export of Delivery Unit EON_EMOBILITY_VIRTA (42 files, replaces incomplete initial export)
This commit is contained in:
@@ -1,9 +0,0 @@
|
|||||||
node_modules/
|
|
||||||
.DS_Store
|
|
||||||
*.log
|
|
||||||
.idea/
|
|
||||||
.vscode/
|
|
||||||
dist/
|
|
||||||
build/
|
|
||||||
*.pyc
|
|
||||||
__pycache__/
|
|
||||||
@@ -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
|
|
||||||
@@ -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/)
|
|
||||||
@@ -47,19 +47,19 @@ CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES" ( "CHECK_METHOD",
|
|||||||
"CREATE_USER",
|
"CREATE_USER",
|
||||||
"UPDATE_USER",
|
"UPDATE_USER",
|
||||||
"FULLEVSEID_REDUCED" ) AS WITH "CHARGEPOINT_CONTRACTS" AS (SELECT
|
"FULLEVSEID_REDUCED" ) AS WITH "CHARGEPOINT_CONTRACTS" AS (SELECT
|
||||||
DISTINCT T1.U_DATA_TEXT AS CHARGEPOINT
|
DISTINCT T1.U_DATA_TEXT AS CHARGEPOINT
|
||||||
FROM "A19753_EON_P01"."@EON_CONTRACT" T0
|
FROM "A19753_EON_P01"."@EON_CONTRACT" T0
|
||||||
INNER JOIN "A19753_EON_P01"."@EON_CONTRACT_PARAM" T1 ON T0."DocEntry" = T1."DocEntry"
|
INNER JOIN "A19753_EON_P01"."@EON_CONTRACT_PARAM" T1 ON T0."DocEntry" = T1."DocEntry"
|
||||||
WHERE T1.U_COMPONENT = 'CHARGEPOINT'
|
WHERE T1.U_COMPONENT = 'CHARGEPOINT'
|
||||||
AND T0."Canceled"='N') select
|
AND T0."Canceled"='N') select
|
||||||
/* CASE WHEN CONTRACT.CHARGEPOINT IS NULL
|
/* CASE WHEN CONTRACT.CHARGEPOINT IS NULL
|
||||||
THEN 'NOCONTACT'
|
THEN 'NOCONTACT'
|
||||||
else 'OK'
|
else 'OK'
|
||||||
END as CHECK_CONTRACT_EXISTS,
|
END as CHECK_CONTRACT_EXISTS,
|
||||||
*/ CASE WHEN METHOD IN ('rfid',
|
*/ CASE WHEN METHOD IN ('rfid',
|
||||||
'onetime',
|
'onetime',
|
||||||
'app')
|
'app')
|
||||||
THEN 'OK' WHEN METHOD IN ( 'auth_not_required_ocpp')
|
THEN 'OK' WHEN METHOD IN ( 'auth_not_required_ocpp')
|
||||||
AND "RFID" NOT IN ('NOA',
|
AND "RFID" NOT IN ('NOA',
|
||||||
'NOA:',
|
'NOA:',
|
||||||
'0',
|
'0',
|
||||||
@@ -69,25 +69,25 @@ AND "RFID" NOT IN ('NOA',
|
|||||||
'00000',
|
'00000',
|
||||||
'00000000',
|
'00000000',
|
||||||
'00000000000000',
|
'00000000000000',
|
||||||
'000' )
|
'000' )
|
||||||
THEN 'OK'
|
THEN 'OK'
|
||||||
ELSE 'OTHER'
|
ELSE 'OTHER'
|
||||||
END AS CHECK_METHOD ,
|
END AS CHECK_METHOD ,
|
||||||
CASE WHEN WATTHOUR > 120000
|
CASE WHEN WATTHOUR > 120000
|
||||||
THEN 'INVALID' WHEN WATTHOUR = 0
|
THEN 'INVALID' WHEN WATTHOUR = 0
|
||||||
THEN 'SMALL'
|
THEN 'SMALL'
|
||||||
ELSE 'OK'
|
ELSE 'OK'
|
||||||
END as "CHECK_CONSUMED_WATTHOUR",
|
END as "CHECK_CONSUMED_WATTHOUR",
|
||||||
CASE WHEN STARTTIME IS NULL
|
CASE WHEN STARTTIME IS NULL
|
||||||
THEN 'NULL' WHEN STARTTIME = STOPTIME
|
THEN 'NULL' WHEN STARTTIME = STOPTIME
|
||||||
THEN 'EQUAL' WHEN STOPTIME < STARTTIME
|
THEN 'EQUAL' WHEN STOPTIME < STARTTIME
|
||||||
THEN 'INVALID'
|
THEN 'INVALID'
|
||||||
ELSE 'OK'
|
ELSE 'OK'
|
||||||
END AS "CHECK_START_STOP",
|
END AS "CHECK_START_STOP",
|
||||||
CASE WHEN DURATION IS NULL
|
CASE WHEN DURATION IS NULL
|
||||||
THEN 'NULL' WHEN DURATION <= 2
|
THEN 'NULL' WHEN DURATION <= 2
|
||||||
THEN 'SMALL'
|
THEN 'SMALL'
|
||||||
ELSE 'OK'
|
ELSE 'OK'
|
||||||
END AS "CHECK_DURATION",
|
END AS "CHECK_DURATION",
|
||||||
"CDRID",
|
"CDRID",
|
||||||
"UUID",
|
"UUID",
|
||||||
@@ -133,5 +133,5 @@ END AS "CHECK_DURATION",
|
|||||||
"EICHRECHTTYPE",
|
"EICHRECHTTYPE",
|
||||||
"CREATE_USER",
|
"CREATE_USER",
|
||||||
"UPDATE_USER",
|
"UPDATE_USER",
|
||||||
"FULLEVSEID_REDUCED"
|
"FULLEVSEID_REDUCED"
|
||||||
from "VIRTAPORTAL"."CPO_CHARGES" CHARGES WITH READ ONLY
|
from "VIRTAPORTAL"."CPO_CHARGES" CHARGES WITH READ ONLY
|
||||||
@@ -10,10 +10,10 @@ CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES_DUPLICATES" ( "UUID",
|
|||||||
"CREATE_TS",
|
"CREATE_TS",
|
||||||
"UPDATE_TS",
|
"UPDATE_TS",
|
||||||
"RANK" ) AS WITH "CHARGEPOINT_CONTRACTS" AS (SELECT
|
"RANK" ) AS WITH "CHARGEPOINT_CONTRACTS" AS (SELECT
|
||||||
DISTINCT T1.U_DATA_TEXT AS CHARGEPOINT
|
DISTINCT T1.U_DATA_TEXT AS CHARGEPOINT
|
||||||
FROM "A19753_EON_P01"."@EON_CONTRACT" T0
|
FROM "A19753_EON_P01"."@EON_CONTRACT" T0
|
||||||
INNER JOIN "A19753_EON_P01"."@EON_CONTRACT_PARAM" T1 ON T0."DocEntry" = T1."DocEntry"
|
INNER JOIN "A19753_EON_P01"."@EON_CONTRACT_PARAM" T1 ON T0."DocEntry" = T1."DocEntry"
|
||||||
WHERE T1.U_COMPONENT = 'CHARGEPOINT'
|
WHERE T1.U_COMPONENT = 'CHARGEPOINT'
|
||||||
AND T0."Canceled"='N'),
|
AND T0."Canceled"='N'),
|
||||||
"CHARGES_VALID" AS (SELECT
|
"CHARGES_VALID" AS (SELECT
|
||||||
UUID,
|
UUID,
|
||||||
@@ -27,22 +27,22 @@ CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES_DUPLICATES" ( "UUID",
|
|||||||
DURATION,
|
DURATION,
|
||||||
"FREECHARGING",
|
"FREECHARGING",
|
||||||
CREATE_TS,
|
CREATE_TS,
|
||||||
UPDATE_TS
|
UPDATE_TS
|
||||||
FROM "VIRTAPORTAL"."V_CPO_CHARGES" AS EMPT
|
FROM "VIRTAPORTAL"."V_CPO_CHARGES" AS EMPT
|
||||||
WHERE CHECK_CONSUMED_WATTHOUR = 'OK'
|
WHERE CHECK_CONSUMED_WATTHOUR = 'OK'
|
||||||
AND CHECK_START_STOP = 'OK'
|
AND CHECK_START_STOP = 'OK'
|
||||||
AND CHECK_DURATION = 'OK'
|
AND CHECK_DURATION = 'OK'
|
||||||
AND UPDATE_TS > '20230101'
|
AND UPDATE_TS > '20230101'
|
||||||
and exists (select
|
and exists (select
|
||||||
1
|
1
|
||||||
from "CHARGEPOINT_CONTRACTS" C
|
from "CHARGEPOINT_CONTRACTS" C
|
||||||
where EMPT.FULLEVSEID_REDUCED = C.CHARGEPOINT
|
where EMPT.FULLEVSEID_REDUCED = C.CHARGEPOINT
|
||||||
OR EMPT.STATION_ID = C.CHARGEPOINT)),
|
OR EMPT.STATION_ID = C.CHARGEPOINT)),
|
||||||
"HAVING_DUPLICATES" AS (SELECT
|
"HAVING_DUPLICATES" AS (SELECT
|
||||||
FULLEVSEID,
|
FULLEVSEID,
|
||||||
STARTTIME,
|
STARTTIME,
|
||||||
COUNT(*) AS DUPLICATES
|
COUNT(*) AS DUPLICATES
|
||||||
FROM CHARGES_VALID
|
FROM CHARGES_VALID
|
||||||
GROUP BY FULLEVSEID,
|
GROUP BY FULLEVSEID,
|
||||||
STARTTIME HAVING COUNT(*) > 1),
|
STARTTIME HAVING COUNT(*) > 1),
|
||||||
"DUPLICATE_EMP_TRANSACTIONS_WITH_RANK" AS (SELECT
|
"DUPLICATE_EMP_TRANSACTIONS_WITH_RANK" AS (SELECT
|
||||||
@@ -58,14 +58,14 @@ CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES_DUPLICATES" ( "UUID",
|
|||||||
"V"."CREATE_TS" ,
|
"V"."CREATE_TS" ,
|
||||||
"V"."UPDATE_TS" ,
|
"V"."UPDATE_TS" ,
|
||||||
RANK() OVER ( PARTITION BY FULLEVSEID,
|
RANK() OVER ( PARTITION BY FULLEVSEID,
|
||||||
STARTTIME
|
STARTTIME
|
||||||
ORDER BY WATTHOUR DESC,
|
ORDER BY WATTHOUR DESC,
|
||||||
CDRID DESC ) AS Rank
|
CDRID DESC ) AS Rank
|
||||||
FROM CHARGES_VALID V
|
FROM CHARGES_VALID V
|
||||||
WHERE EXISTS (SELECT
|
WHERE EXISTS (SELECT
|
||||||
1
|
1
|
||||||
FROM HAVING_DUPLICATES D
|
FROM HAVING_DUPLICATES D
|
||||||
WHERE D.FULLEVSEID = V.FULLEVSEID
|
WHERE D.FULLEVSEID = V.FULLEVSEID
|
||||||
AND D.STARTTIME = V.STARTTIME )) SELECT
|
AND D.STARTTIME = V.STARTTIME )) SELECT
|
||||||
"V"."UUID" ,
|
"V"."UUID" ,
|
||||||
"V"."CDRID" ,
|
"V"."CDRID" ,
|
||||||
@@ -78,8 +78,8 @@ CREATE VIEW "VIRTAPORTAL"."V_CPO_CHARGES_DUPLICATES" ( "UUID",
|
|||||||
"V"."FREECHARGING" ,
|
"V"."FREECHARGING" ,
|
||||||
"V"."CREATE_TS" ,
|
"V"."CREATE_TS" ,
|
||||||
"V"."UPDATE_TS" ,
|
"V"."UPDATE_TS" ,
|
||||||
"V"."RANK"
|
"V"."RANK"
|
||||||
FROM DUPLICATE_EMP_TRANSACTIONS_WITH_RANK V
|
FROM DUPLICATE_EMP_TRANSACTIONS_WITH_RANK V
|
||||||
ORDER BY V.STARTTIME DESC ,
|
ORDER BY V.STARTTIME DESC ,
|
||||||
V.FULLEVSEID,
|
V.FULLEVSEID,
|
||||||
V.RANK WITH READ ONLY
|
V.RANK WITH READ ONLY
|
||||||
@@ -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
|
||||||
@@ -11,16 +11,16 @@ ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("KWHGROSSPRICE" INTEGER CS_INT
|
|||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("MINUTEGROSSPRICE" INTEGER CS_INT);
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("MINUTEGROSSPRICE" INTEGER CS_INT);
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("SESSIONGROSSPRICE" INTEGER CS_INT);
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("SESSIONGROSSPRICE" INTEGER CS_INT);
|
||||||
-- Mapping von CPOOPERATORID übernehmen
|
-- Mapping von CPOOPERATORID übernehmen
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("CPOOPERATORID" NVARCHAR(50));
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("CPOOPERATORID" NVARCHAR(50));
|
||||||
--Neu 26.08.2021 Laden im Ausland Erweiterung
|
--Neu 26.08.2021 Laden im Ausland Erweiterung
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("LOCATION_COUNTRY" NVARCHAR(3));
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("LOCATION_COUNTRY" NVARCHAR(3));
|
||||||
--Neu 20.04.2022 Neue PlausiCheckFelder
|
--Neu 20.04.2022 Neue PlausiCheckFelder
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("BUSINESSVALIDATIONRESULT" NVARCHAR(100));
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("BUSINESSVALIDATIONRESULT" NVARCHAR(100));
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("TECHVALIDATIONRESULT" NVARCHAR(100));
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("TECHVALIDATIONRESULT" NVARCHAR(100));
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("NOTBILLABLEREASON" NVARCHAR(200));
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("NOTBILLABLEREASON" NVARCHAR(200));
|
||||||
|
|
||||||
--Neu 05.06.2023
|
--Neu 05.06.2023
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("FREEMINUTES" INTEGER CS_INT);
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD ("FREEMINUTES" INTEGER CS_INT);
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("KWHNETPRICE" INTEGER CS_INT);
|
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("KWHNETPRICE" INTEGER CS_INT);
|
||||||
@@ -29,7 +29,7 @@ ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("SESSIONNETPRICE" INTEGER CS_INT);
|
|||||||
-- Schlumpf :o)
|
-- Schlumpf :o)
|
||||||
|
|
||||||
--04_05_2021
|
--04_05_2021
|
||||||
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("BUSINESSVALIDATIONRESULT" NVARCHAR(100));
|
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("BUSINESSVALIDATIONRESULT" NVARCHAR(100));
|
||||||
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("TECHVALIDATIONRESULT" NVARCHAR(100));
|
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("TECHVALIDATIONRESULT" NVARCHAR(100));
|
||||||
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("NOTBILLABLEREASON" NVARCHAR(200));
|
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD ("NOTBILLABLEREASON" NVARCHAR(200));
|
||||||
|
|
||||||
@@ -39,5 +39,5 @@ ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" add ("FULLEVSEID_REDUCED" NVARCHAR(5000
|
|||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
''),
|
''),
|
||||||
"FULLEVSEID"))
|
"FULLEVSEID"))
|
||||||
;
|
;
|
||||||
@@ -26,15 +26,15 @@ CREATE COLUMN TABLE "VIRTAPORTAL"."CPO_CHARGES"(
|
|||||||
"FULLEVSEID" NVARCHAR(50),
|
"FULLEVSEID" NVARCHAR(50),
|
||||||
"EVSEID" NVARCHAR(50),
|
"EVSEID" NVARCHAR(50),
|
||||||
"PLUGTYPE" NVARCHAR(50),
|
"PLUGTYPE" NVARCHAR(50),
|
||||||
"EMPSHARE" INTEGER CS_INT,
|
"EMPSHARE" INTEGER CS_INT,
|
||||||
"SIGNEDMETERVALUEBEGIN" NVARCHAR(50),
|
"SIGNEDMETERVALUEBEGIN" NVARCHAR(50),
|
||||||
"SIGNEDMETERVALUEEND" NVARCHAR(50),
|
"SIGNEDMETERVALUEEND" NVARCHAR(50),
|
||||||
"FREECHARGING" NVARCHAR(3),
|
"FREECHARGING" NVARCHAR(3),
|
||||||
"CONNECTORID" INTEGER CS_INT,
|
"CONNECTORID" INTEGER CS_INT,
|
||||||
"METERSTART" INTEGER CS_INT,
|
"METERSTART" INTEGER CS_INT,
|
||||||
"METERSTOP" INTEGER CS_INT,
|
"METERSTOP" INTEGER CS_INT,
|
||||||
"NOTES" NVARCHAR(500),
|
"NOTES" NVARCHAR(500),
|
||||||
"MILEAGE" INTEGER CS_INT,
|
"MILEAGE" INTEGER CS_INT,
|
||||||
"JSONRAW" NCLOB MEMORY THRESHOLD 1000,
|
"JSONRAW" NCLOB MEMORY THRESHOLD 1000,
|
||||||
"CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
"CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
"UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL,
|
"UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL,
|
||||||
@@ -57,5 +57,5 @@ ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ADD (
|
|||||||
);
|
);
|
||||||
|
|
||||||
ALTER TABLE "VIRTAPORTAL"."CPO_CHARGES" ALTER (
|
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")
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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)
|
||||||
@@ -27,20 +27,20 @@ CREATE COLUMN TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS"(
|
|||||||
"PAYMENTTYPE" NVARCHAR(50),
|
"PAYMENTTYPE" NVARCHAR(50),
|
||||||
"EVSEID" NVARCHAR(50),
|
"EVSEID" NVARCHAR(50),
|
||||||
"PLUGTYPE" NVARCHAR(50),
|
"PLUGTYPE" NVARCHAR(50),
|
||||||
"EMPSHARE" INTEGER CS_INT,
|
"EMPSHARE" INTEGER CS_INT,
|
||||||
"SIGNEDMETERVALUEBEGIN" NVARCHAR(50),
|
"SIGNEDMETERVALUEBEGIN" NVARCHAR(50),
|
||||||
"SIGNEDMETERVALUEEND" NVARCHAR(50),
|
"SIGNEDMETERVALUEEND" NVARCHAR(50),
|
||||||
"OPERATORPRICE" INTEGER CS_INT,
|
"OPERATORPRICE" INTEGER CS_INT,
|
||||||
"OPERATORCURRENCY" NVARCHAR(3),
|
"OPERATORCURRENCY" NVARCHAR(3),
|
||||||
"OPERATORID" INTEGER CS_INT,
|
"OPERATORID" INTEGER CS_INT,
|
||||||
"FREECHARGING" NVARCHAR(3),
|
"FREECHARGING" NVARCHAR(3),
|
||||||
"EMPTARIFFID" INTEGER CS_INT,
|
"EMPTARIFFID" INTEGER CS_INT,
|
||||||
"EMPTARIFFNAME" NVARCHAR(100),
|
"EMPTARIFFNAME" NVARCHAR(100),
|
||||||
"FULLEVSEID" NVARCHAR(50),
|
"FULLEVSEID" NVARCHAR(50),
|
||||||
"METERSTART" INTEGER CS_INT,
|
"METERSTART" INTEGER CS_INT,
|
||||||
"METERSTOP" INTEGER CS_INT,
|
"METERSTOP" INTEGER CS_INT,
|
||||||
"NOTES" NVARCHAR(500),
|
"NOTES" NVARCHAR(500),
|
||||||
"MILEAGE" INTEGER CS_INT,
|
"MILEAGE" INTEGER CS_INT,
|
||||||
"JSONRAW" NCLOB MEMORY THRESHOLD 1000,
|
"JSONRAW" NCLOB MEMORY THRESHOLD 1000,
|
||||||
"CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
"CREATE_TS" LONGDATE CS_LONGDATE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
"UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL,
|
"UPDATE_TS" LONGDATE CS_LONGDATE NOT NULL,
|
||||||
@@ -65,4 +65,4 @@ ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD (
|
|||||||
|
|
||||||
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD (
|
ALTER TABLE "VIRTAPORTAL"."EMP_TRANSACTIONS" ADD (
|
||||||
"UPDATE_USER" NVARCHAR(50) DEFAULT CURRENT_USER NOT NULL
|
"UPDATE_USER" NVARCHAR(50) DEFAULT CURRENT_USER NOT NULL
|
||||||
);
|
);
|
||||||
@@ -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();
|
||||||
@@ -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();
|
||||||
@@ -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();
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
var body = JSON.stringify('Hello e.on!');
|
var body = JSON.stringify('Hello e.on!');
|
||||||
$.response.contentType = 'application/json';
|
$.response.contentType = 'application/json';
|
||||||
$.response.setBody(body);
|
$.response.setBody(body);
|
||||||
$.response.status = $.net.http.OK;
|
$.response.status = $.net.http.OK;
|
||||||
@@ -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();
|
||||||
@@ -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();
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
@@ -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();
|
||||||
@@ -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();
|
||||||
@@ -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":[]}
|
||||||
@@ -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);
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
ID: UOBILLING
|
||||||
|
_schema-version: '2.1'
|
||||||
|
version: 0.0.1
|
||||||
|
|
||||||
|
modules:
|
||||||
|
|
||||||
|
|
||||||
|
- name: BILLINGRUNUI
|
||||||
|
type: html5
|
||||||
|
path: BILLINGRUNUI
|
||||||
|
|
||||||
@@ -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, '&')
|
||||||
|
.replace(/</g, '<')
|
||||||
|
.replace(/>/g, '>')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''');
|
||||||
|
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>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"welcomeFile": "webapp/index.html",
|
||||||
|
"authenticationMethod": "none",
|
||||||
|
"routes": []
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user