@golemio/energetics 1.12.0 → 1.12.1-rc.2699859021
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/migrations/postgresql/20260619000001-ppas-commercial-invoice.js +47 -0
- package/db/migrations/postgresql/sqls/20260619000001-ppas-commercial-invoice-down.sql +4 -0
- package/db/migrations/postgresql/sqls/20260619000001-ppas-commercial-invoice-up.sql +99 -0
- package/dist/integration-engine/enapo/datasources/ppas/AbstractPpasDatasource.d.ts +16 -0
- package/dist/integration-engine/enapo/datasources/ppas/AbstractPpasDatasource.js +88 -0
- package/dist/integration-engine/enapo/datasources/ppas/AbstractPpasDatasource.js.map +1 -0
- package/dist/integration-engine/enapo/datasources/ppas/commercial/PpasCommercialDatasource.d.ts +13 -0
- package/dist/integration-engine/enapo/datasources/ppas/commercial/PpasCommercialDatasource.js +67 -0
- package/dist/integration-engine/enapo/datasources/ppas/commercial/PpasCommercialDatasource.js.map +1 -0
- package/dist/integration-engine/enapo/datasources/ppas/distribution/PpasDistributionDatasource.d.ts +3 -14
- package/dist/integration-engine/enapo/datasources/ppas/distribution/PpasDistributionDatasource.js +6 -86
- package/dist/integration-engine/enapo/datasources/ppas/distribution/PpasDistributionDatasource.js.map +1 -1
- package/dist/integration-engine/enapo/ioc/Di.js +14 -0
- package/dist/integration-engine/enapo/ioc/Di.js.map +1 -1
- package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.d.ts +7 -0
- package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.js +7 -0
- package/dist/integration-engine/enapo/ioc/EnapoWorkerContainerToken.js.map +1 -1
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceDeviceRepository.d.ts +7 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceDeviceRepository.js +36 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceDeviceRepository.js.map +1 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceInstallationRepository.d.ts +7 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceInstallationRepository.js +36 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceInstallationRepository.js.map +1 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoicePriceRepository.d.ts +7 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoicePriceRepository.js +36 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoicePriceRepository.js.map +1 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceRepository.d.ts +7 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceRepository.js +36 -0
- package/dist/integration-engine/enapo/repositories/ppas/PpasCommercialInvoiceRepository.js.map +1 -0
- package/dist/integration-engine/enapo/transformations/ppas/PpasCommercialTransformation.d.ts +28 -0
- package/dist/integration-engine/enapo/transformations/ppas/PpasCommercialTransformation.js +185 -0
- package/dist/integration-engine/enapo/transformations/ppas/PpasCommercialTransformation.js.map +1 -0
- package/dist/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.d.ts +0 -18
- package/dist/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.js +14 -82
- package/dist/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.js.map +1 -1
- package/dist/integration-engine/enapo/transformations/ppas/PpasInvoicePriceTypeHelper.d.ts +33 -0
- package/dist/integration-engine/enapo/transformations/ppas/PpasInvoicePriceTypeHelper.js +87 -0
- package/dist/integration-engine/enapo/transformations/ppas/PpasInvoicePriceTypeHelper.js.map +1 -0
- package/dist/integration-engine/enapo/workers/EnapoWorker.js +1 -0
- package/dist/integration-engine/enapo/workers/EnapoWorker.js.map +1 -1
- package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasCommercialParams.d.ts +4 -0
- package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasCommercialParams.js +3 -0
- package/dist/integration-engine/enapo/workers/interfaces/IEnapoPpasCommercialParams.js.map +1 -0
- package/dist/integration-engine/enapo/workers/schema/EnapoPpasCommercialParamsSchema.d.ts +5 -0
- package/dist/integration-engine/enapo/workers/schema/EnapoPpasCommercialParamsSchema.js +29 -0
- package/dist/integration-engine/enapo/workers/schema/EnapoPpasCommercialParamsSchema.js.map +1 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasCommercialTask.d.ts +34 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasCommercialTask.js +182 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasCommercialTask.js.map +1 -0
- package/dist/integration-engine/enapo/workers/task/EnapoPpasDistributionTask.js.map +1 -1
- package/dist/schema-definitions/datasources/enapo/ppas/IPpasInvoiceCommon.d.ts +23 -0
- package/dist/schema-definitions/datasources/enapo/ppas/IPpasInvoiceCommon.js +3 -0
- package/dist/schema-definitions/datasources/enapo/ppas/IPpasInvoiceCommon.js.map +1 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/IPpasCommercialInvoiceDetailInput.d.ts +62 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/IPpasCommercialInvoiceDetailInput.js +3 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/IPpasCommercialInvoiceDetailInput.js.map +1 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/IPpasCommercialInvoiceListInput.d.ts +26 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/IPpasCommercialInvoiceListInput.js +3 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/IPpasCommercialInvoiceListInput.js.map +1 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/PpasCommercialSchema.d.ts +5 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/PpasCommercialSchema.js +185 -0
- package/dist/schema-definitions/datasources/enapo/ppas/commercial/PpasCommercialSchema.js.map +1 -0
- package/dist/schema-definitions/datasources/enapo/ppas/distribution/IPpasDistributionInvoiceDetailInput.d.ts +7 -6
- package/dist/schema-definitions/datasources/enapo/ppas/distribution/IPpasDistributionInvoiceListInput.d.ts +5 -27
- package/dist/schema-definitions/datasources/enapo/ppas/distribution/PpasDistributionSchema.js.map +1 -1
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceDeviceModel.d.ts +24 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceDeviceModel.js +54 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceDeviceModel.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceInstallationModel.d.ts +26 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceInstallationModel.js +56 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceInstallationModel.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceModel.d.ts +30 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceModel.js +64 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoiceModel.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoicePriceModel.d.ts +23 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoicePriceModel.js +52 -0
- package/dist/schema-definitions/models/enapo/ppas/PpasCommercialInvoicePriceModel.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoice.d.ts +24 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoice.js +3 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoice.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoiceDevice.d.ts +19 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoiceDevice.js +3 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoiceDevice.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoiceInstallation.d.ts +20 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoiceInstallation.js +3 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoiceInstallation.js.map +1 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoicePrice.d.ts +18 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoicePrice.js +3 -0
- package/dist/schema-definitions/models/enapo/ppas/interfaces/IPpasCommercialInvoicePrice.js.map +1 -0
- package/docs/implementation_documentation.md +60 -1
- package/package.json +2 -2
package/dist/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.js
CHANGED
|
@@ -16,10 +16,7 @@ exports.PpasDistributionTransformation = void 0;
|
|
|
16
16
|
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
17
17
|
const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
|
|
18
18
|
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
19
|
-
const
|
|
20
|
-
STANDARD: "STANDARD",
|
|
21
|
-
CORRECTION: "CORRECTION",
|
|
22
|
-
};
|
|
19
|
+
const PpasInvoicePriceTypeHelper_1 = require("./PpasInvoicePriceTypeHelper");
|
|
23
20
|
let PpasDistributionTransformation = class PpasDistributionTransformation extends AbstractTransformation_1.AbstractTransformation {
|
|
24
21
|
constructor(logger) {
|
|
25
22
|
super();
|
|
@@ -36,8 +33,8 @@ let PpasDistributionTransformation = class PpasDistributionTransformation extend
|
|
|
36
33
|
customer_name: element.customer.name,
|
|
37
34
|
customer_contract_account_id: element.customer.contractAccountId,
|
|
38
35
|
customer_address_street: element.customerAddress.street,
|
|
39
|
-
customer_address_house_number:
|
|
40
|
-
customer_address_house_org_number:
|
|
36
|
+
customer_address_house_number: (0, PpasInvoicePriceTypeHelper_1.normalizeToStringOrNull)(element.customerAddress.houseNumber),
|
|
37
|
+
customer_address_house_org_number: (0, PpasInvoicePriceTypeHelper_1.normalizeToStringOrNull)(element.installations.address.houseOrgNumber),
|
|
41
38
|
customer_address_city: element.customerAddress.city,
|
|
42
39
|
customer_address_city_part: element.customerAddress.cityPart,
|
|
43
40
|
customer_address_post_code: element.customerAddress.postCode,
|
|
@@ -55,13 +52,13 @@ let PpasDistributionTransformation = class PpasDistributionTransformation extend
|
|
|
55
52
|
place_id: element.installations.installation,
|
|
56
53
|
installations_billing_class: element.installations.billingClass,
|
|
57
54
|
installations_measurement_type: element.installations.measurementType,
|
|
58
|
-
installations_contract_contract_id:
|
|
55
|
+
installations_contract_contract_id: (0, PpasInvoicePriceTypeHelper_1.normalizeToStringOrNull)(element.installations.contract.contractId),
|
|
59
56
|
installations_contract_move_in_date: element.installations.contract.moveInDate,
|
|
60
57
|
installations_contract_move_out_date: element.installations.contract.moveOutDate,
|
|
61
58
|
installations_tdd_class: element.installations.tddClass,
|
|
62
59
|
installations_address_street: element.installations.address.street,
|
|
63
|
-
installations_address_house_number:
|
|
64
|
-
installations_address_house_org_number:
|
|
60
|
+
installations_address_house_number: (0, PpasInvoicePriceTypeHelper_1.normalizeToStringOrNull)(element.installations.address.houseNumber),
|
|
61
|
+
installations_address_house_org_number: (0, PpasInvoicePriceTypeHelper_1.normalizeToStringOrNull)(element.installations.address.houseOrgNumber),
|
|
65
62
|
installations_address_city: element.installations.address.city,
|
|
66
63
|
installations_address_city_part: element.installations.address.cityPart,
|
|
67
64
|
installations_address_post_code: element.installations.address.postCode,
|
|
@@ -81,9 +78,9 @@ let PpasDistributionTransformation = class PpasDistributionTransformation extend
|
|
|
81
78
|
device.readings = [device.readings];
|
|
82
79
|
}
|
|
83
80
|
for (const reading of device.readings) {
|
|
84
|
-
const deviceGroupKey =
|
|
85
|
-
const deviceGroupState =
|
|
86
|
-
const resolvedReadingType =
|
|
81
|
+
const deviceGroupKey = (0, PpasInvoicePriceTypeHelper_1.createDeviceGroupKey)(device, reading);
|
|
82
|
+
const deviceGroupState = (0, PpasInvoicePriceTypeHelper_1.getOrCreateGroupState)(deviceGroupStateByKey, deviceGroupKey);
|
|
83
|
+
const resolvedReadingType = (0, PpasInvoicePriceTypeHelper_1.determinePriceType)(reading?.gas?.consumptionKwh ?? 0, 0, deviceGroupState);
|
|
87
84
|
const deviceRow = {
|
|
88
85
|
device_serial_number: device.number,
|
|
89
86
|
type: device.type,
|
|
@@ -95,14 +92,14 @@ let PpasDistributionTransformation = class PpasDistributionTransformation extend
|
|
|
95
92
|
reading_to: reading.readingTo,
|
|
96
93
|
consumption: reading.consumption,
|
|
97
94
|
unit: reading.unit,
|
|
98
|
-
meter_reading_type:
|
|
95
|
+
meter_reading_type: (0, PpasInvoicePriceTypeHelper_1.normalizeToStringOrNull)(reading.mrType),
|
|
99
96
|
reading_type: resolvedReadingType,
|
|
100
97
|
gas_consumption_kwh: reading?.gas?.consumptionKwh,
|
|
101
98
|
volume_coefficient: reading?.gas?.volumeCoefficient,
|
|
102
99
|
combustion_heat: reading?.gas?.combustionHeat,
|
|
103
100
|
normometers_nm3: reading?.gas?.normometersNm3,
|
|
104
101
|
};
|
|
105
|
-
const inputReadingKey =
|
|
102
|
+
const inputReadingKey = (0, PpasInvoicePriceTypeHelper_1.createDeviceGroupKey)(device, reading);
|
|
106
103
|
if (uniqueDeviceReadingKeys.has(inputReadingKey)) {
|
|
107
104
|
this.logger.info(`${this.name}: Duplicate device key for device_serial_number ${device.number}
|
|
108
105
|
and invoice_id ${element.id.intNum}`);
|
|
@@ -115,9 +112,9 @@ let PpasDistributionTransformation = class PpasDistributionTransformation extend
|
|
|
115
112
|
const groupStateByKey = new Map();
|
|
116
113
|
const uniquePriceConflictKeys = new Set();
|
|
117
114
|
for (const price of element.installations.prices) {
|
|
118
|
-
const groupKey =
|
|
119
|
-
const groupState =
|
|
120
|
-
const priceType =
|
|
115
|
+
const groupKey = (0, PpasInvoicePriceTypeHelper_1.createPriceGroupKey)(price);
|
|
116
|
+
const groupState = (0, PpasInvoicePriceTypeHelper_1.getOrCreateGroupState)(groupStateByKey, groupKey);
|
|
117
|
+
const priceType = (0, PpasInvoicePriceTypeHelper_1.determinePriceType)(price.priceNetto, price.quantity, groupState);
|
|
121
118
|
const priceRow = {
|
|
122
119
|
invoice_id: element.id.intNum,
|
|
123
120
|
customer_id: element.customer.id,
|
|
@@ -157,74 +154,9 @@ let PpasDistributionTransformation = class PpasDistributionTransformation extend
|
|
|
157
154
|
};
|
|
158
155
|
};
|
|
159
156
|
}
|
|
160
|
-
normalizeToStringOrNull(value) {
|
|
161
|
-
const str = String(value).trim();
|
|
162
|
-
return str === "" ? null : str;
|
|
163
|
-
}
|
|
164
|
-
getOrCreateDistributionGroupState(groupStateByKey, groupKey) {
|
|
165
|
-
const existingState = groupStateByKey.get(groupKey);
|
|
166
|
-
if (existingState)
|
|
167
|
-
return existingState;
|
|
168
|
-
const initialState = {
|
|
169
|
-
occurrenceIndex: 0,
|
|
170
|
-
zeroOccurrenceIndex: 0,
|
|
171
|
-
hasStandardInGroup: false,
|
|
172
|
-
hasCorrectionInGroup: false,
|
|
173
|
-
};
|
|
174
|
-
groupStateByKey.set(groupKey, initialState);
|
|
175
|
-
return initialState;
|
|
176
|
-
}
|
|
177
|
-
resolveNeutralDistributionPriceType(groupState) {
|
|
178
|
-
if (!groupState.hasStandardInGroup)
|
|
179
|
-
return DISTRIBUTION_PRICE_TYPE.STANDARD;
|
|
180
|
-
if (!groupState.hasCorrectionInGroup)
|
|
181
|
-
return DISTRIBUTION_PRICE_TYPE.CORRECTION;
|
|
182
|
-
return groupState.zeroOccurrenceIndex % 2 === 0 ? DISTRIBUTION_PRICE_TYPE.STANDARD : DISTRIBUTION_PRICE_TYPE.CORRECTION;
|
|
183
|
-
}
|
|
184
|
-
determineDistributionPriceType(priceNetto, quantity, groupState) {
|
|
185
|
-
const priceNettoValue = priceNetto ?? 0;
|
|
186
|
-
const quantityValue = quantity ?? 0;
|
|
187
|
-
const isPositive = priceNettoValue > 0 || quantityValue > 0;
|
|
188
|
-
const isNegative = priceNettoValue < 0 || quantityValue < 0;
|
|
189
|
-
const isZeroRow = priceNettoValue === 0 && quantityValue === 0;
|
|
190
|
-
if (isPositive) {
|
|
191
|
-
groupState.hasStandardInGroup = true;
|
|
192
|
-
return DISTRIBUTION_PRICE_TYPE.STANDARD;
|
|
193
|
-
}
|
|
194
|
-
if (isNegative) {
|
|
195
|
-
groupState.hasCorrectionInGroup = true;
|
|
196
|
-
return DISTRIBUTION_PRICE_TYPE.CORRECTION;
|
|
197
|
-
}
|
|
198
|
-
const resolvedType = this.resolveNeutralDistributionPriceType(groupState);
|
|
199
|
-
if (resolvedType === DISTRIBUTION_PRICE_TYPE.STANDARD) {
|
|
200
|
-
groupState.hasStandardInGroup = true;
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
groupState.hasCorrectionInGroup = true;
|
|
204
|
-
}
|
|
205
|
-
if (isZeroRow) {
|
|
206
|
-
groupState.zeroOccurrenceIndex += 1;
|
|
207
|
-
}
|
|
208
|
-
return resolvedType;
|
|
209
|
-
}
|
|
210
|
-
createDistributionPriceGroupKey(price) {
|
|
211
|
-
return [
|
|
212
|
-
price.dateFrom,
|
|
213
|
-
price.dateTo,
|
|
214
|
-
price.kind,
|
|
215
|
-
price.unit ?? "",
|
|
216
|
-
price.unitPrice ?? "",
|
|
217
|
-
price.timeSlot ?? "",
|
|
218
|
-
price.description ?? "",
|
|
219
|
-
price.priceGroup ?? "",
|
|
220
|
-
].join("|");
|
|
221
|
-
}
|
|
222
157
|
createInvoicePriceConflictKey(row) {
|
|
223
158
|
return [row.invoice_id, row.customer_id, row.date_from, row.date_to, row.kind, row.price_type].join("|");
|
|
224
159
|
}
|
|
225
|
-
createDeviceGroupKey(device, reading) {
|
|
226
|
-
return [device.number, reading.dateFrom, reading.dateTo, device.kind ?? reading.kind ?? ""].join("|");
|
|
227
|
-
}
|
|
228
160
|
};
|
|
229
161
|
exports.PpasDistributionTransformation = PpasDistributionTransformation;
|
|
230
162
|
exports.PpasDistributionTransformation = PpasDistributionTransformation = __decorate([
|
package/dist/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PpasDistributionTransformation.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,wEAAqE;AAErE,6GAA0G;AAC1G,iEAAwE;
|
|
1
|
+
{"version":3,"file":"PpasDistributionTransformation.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/transformations/ppas/PpasDistributionTransformation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const PPAS_INVOICE_PRICE_TYPE: {
|
|
2
|
+
readonly STANDARD: "STANDARD";
|
|
3
|
+
readonly CORRECTION: "CORRECTION";
|
|
4
|
+
};
|
|
5
|
+
export type PpasInvoicePriceType = (typeof PPAS_INVOICE_PRICE_TYPE)[keyof typeof PPAS_INVOICE_PRICE_TYPE];
|
|
6
|
+
export type PpasInvoiceGroupState = {
|
|
7
|
+
occurrenceIndex: number;
|
|
8
|
+
zeroOccurrenceIndex: number;
|
|
9
|
+
hasStandardInGroup: boolean;
|
|
10
|
+
hasCorrectionInGroup: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function getOrCreateGroupState(groupStateByKey: Map<string, PpasInvoiceGroupState>, groupKey: string): PpasInvoiceGroupState;
|
|
13
|
+
export declare function determinePriceType(priceNetto: number | null | undefined, quantity: number | null | undefined, groupState: PpasInvoiceGroupState): PpasInvoicePriceType;
|
|
14
|
+
export declare function createDeviceGroupKey(device: {
|
|
15
|
+
number: string;
|
|
16
|
+
kind?: string;
|
|
17
|
+
}, reading: {
|
|
18
|
+
dateFrom: string;
|
|
19
|
+
dateTo: string;
|
|
20
|
+
kind?: string;
|
|
21
|
+
}): string;
|
|
22
|
+
export declare function createPriceGroupKey(price: {
|
|
23
|
+
dateFrom: string;
|
|
24
|
+
dateTo: string;
|
|
25
|
+
kind: string;
|
|
26
|
+
unit?: string;
|
|
27
|
+
unitPrice?: number;
|
|
28
|
+
timeSlot?: number | string | null;
|
|
29
|
+
description?: string;
|
|
30
|
+
priceGroup?: string;
|
|
31
|
+
}): string;
|
|
32
|
+
export declare function normalizeToStringOrNull(value: string | number | undefined | null): string | null;
|
|
33
|
+
export declare function normalizeToNumberOrNull(value: string | number | undefined | null): number | null;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PPAS_INVOICE_PRICE_TYPE = void 0;
|
|
4
|
+
exports.getOrCreateGroupState = getOrCreateGroupState;
|
|
5
|
+
exports.determinePriceType = determinePriceType;
|
|
6
|
+
exports.createDeviceGroupKey = createDeviceGroupKey;
|
|
7
|
+
exports.createPriceGroupKey = createPriceGroupKey;
|
|
8
|
+
exports.normalizeToStringOrNull = normalizeToStringOrNull;
|
|
9
|
+
exports.normalizeToNumberOrNull = normalizeToNumberOrNull;
|
|
10
|
+
exports.PPAS_INVOICE_PRICE_TYPE = {
|
|
11
|
+
STANDARD: "STANDARD",
|
|
12
|
+
CORRECTION: "CORRECTION",
|
|
13
|
+
};
|
|
14
|
+
function getOrCreateGroupState(groupStateByKey, groupKey) {
|
|
15
|
+
const existingState = groupStateByKey.get(groupKey);
|
|
16
|
+
if (existingState)
|
|
17
|
+
return existingState;
|
|
18
|
+
const initialState = {
|
|
19
|
+
occurrenceIndex: 0,
|
|
20
|
+
zeroOccurrenceIndex: 0,
|
|
21
|
+
hasStandardInGroup: false,
|
|
22
|
+
hasCorrectionInGroup: false,
|
|
23
|
+
};
|
|
24
|
+
groupStateByKey.set(groupKey, initialState);
|
|
25
|
+
return initialState;
|
|
26
|
+
}
|
|
27
|
+
function resolveNeutralPriceType(groupState) {
|
|
28
|
+
if (!groupState.hasStandardInGroup)
|
|
29
|
+
return exports.PPAS_INVOICE_PRICE_TYPE.STANDARD;
|
|
30
|
+
if (!groupState.hasCorrectionInGroup)
|
|
31
|
+
return exports.PPAS_INVOICE_PRICE_TYPE.CORRECTION;
|
|
32
|
+
return groupState.zeroOccurrenceIndex % 2 === 0 ? exports.PPAS_INVOICE_PRICE_TYPE.STANDARD : exports.PPAS_INVOICE_PRICE_TYPE.CORRECTION;
|
|
33
|
+
}
|
|
34
|
+
function determinePriceType(priceNetto, quantity, groupState) {
|
|
35
|
+
const priceNettoValue = priceNetto ?? 0;
|
|
36
|
+
const quantityValue = quantity ?? 0;
|
|
37
|
+
const isPositive = priceNettoValue > 0 || quantityValue > 0;
|
|
38
|
+
const isNegative = priceNettoValue < 0 || quantityValue < 0;
|
|
39
|
+
const isZeroRow = priceNettoValue === 0 && quantityValue === 0;
|
|
40
|
+
if (isPositive) {
|
|
41
|
+
groupState.hasStandardInGroup = true;
|
|
42
|
+
return exports.PPAS_INVOICE_PRICE_TYPE.STANDARD;
|
|
43
|
+
}
|
|
44
|
+
if (isNegative) {
|
|
45
|
+
groupState.hasCorrectionInGroup = true;
|
|
46
|
+
return exports.PPAS_INVOICE_PRICE_TYPE.CORRECTION;
|
|
47
|
+
}
|
|
48
|
+
const resolvedType = resolveNeutralPriceType(groupState);
|
|
49
|
+
if (resolvedType === exports.PPAS_INVOICE_PRICE_TYPE.STANDARD) {
|
|
50
|
+
groupState.hasStandardInGroup = true;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
groupState.hasCorrectionInGroup = true;
|
|
54
|
+
}
|
|
55
|
+
if (isZeroRow) {
|
|
56
|
+
groupState.zeroOccurrenceIndex += 1;
|
|
57
|
+
}
|
|
58
|
+
return resolvedType;
|
|
59
|
+
}
|
|
60
|
+
function createDeviceGroupKey(device, reading) {
|
|
61
|
+
return [device.number, reading.dateFrom, reading.dateTo, device.kind ?? reading.kind ?? ""].join("|");
|
|
62
|
+
}
|
|
63
|
+
function createPriceGroupKey(price) {
|
|
64
|
+
return [
|
|
65
|
+
price.dateFrom,
|
|
66
|
+
price.dateTo,
|
|
67
|
+
price.kind,
|
|
68
|
+
price.unit ?? "",
|
|
69
|
+
price.unitPrice ?? "",
|
|
70
|
+
price.timeSlot ?? "",
|
|
71
|
+
price.description ?? "",
|
|
72
|
+
price.priceGroup ?? "",
|
|
73
|
+
].join("|");
|
|
74
|
+
}
|
|
75
|
+
function normalizeToStringOrNull(value) {
|
|
76
|
+
if (value === undefined || value === null)
|
|
77
|
+
return null;
|
|
78
|
+
const str = String(value).trim();
|
|
79
|
+
return str === "" ? null : str;
|
|
80
|
+
}
|
|
81
|
+
function normalizeToNumberOrNull(value) {
|
|
82
|
+
if (value === undefined || value === null || value === "")
|
|
83
|
+
return null;
|
|
84
|
+
const num = Number(value);
|
|
85
|
+
return Number.isFinite(num) ? num : null;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=PpasInvoicePriceTypeHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PpasInvoicePriceTypeHelper.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/transformations/ppas/PpasInvoicePriceTypeHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ class EnapoWorker extends integration_engine_1.AbstractWorker {
|
|
|
21
21
|
this.registerTask(Di_1.EnapoContainer.resolve(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.EnoStructureTask));
|
|
22
22
|
this.registerTask(Di_1.EnapoContainer.resolve(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.EnoGeometryTask));
|
|
23
23
|
this.registerTask(Di_1.EnapoContainer.resolve(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.EnapoPpasDistributionTask));
|
|
24
|
+
this.registerTask(Di_1.EnapoContainer.resolve(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.EnapoPpasCommercialTask));
|
|
24
25
|
this.registerTask(Di_1.EnapoContainer.resolve(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PorsennaDistributionTask));
|
|
25
26
|
}
|
|
26
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnapoWorker.js","sourceRoot":"","sources":["../../../../src/integration-engine/enapo/workers/EnapoWorker.ts"],"names":[],"mappings":";;;AAAA,8EAAuE;AAEvE,4CAAiD;AACjD,kCAA2C;AAC3C,gFAA6E;AAE7E,MAAa,WAAY,SAAQ,mCAAc;IAG3C;QACI,KAAK,EAAE,CAAC;QAHF,SAAI,GAAG,6BAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"EnapoWorker.js","sourceRoot":"","sources":["../../../../src/integration-engine/enapo/workers/EnapoWorker.ts"],"names":[],"mappings":";;;AAAA,8EAAuE;AAEvE,4CAAiD;AACjD,kCAA2C;AAC3C,gFAA6E;AAE7E,MAAa,WAAY,SAAQ,mCAAc;IAG3C;QACI,KAAK,EAAE,CAAC;QAHF,SAAI,GAAG,6BAAiB,CAAC;QAiB5B,iBAAY,GAAG,CAAC,IAAW,EAAQ,EAAE;YACxC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC,CAAC;QAfE,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,YAAY,CAAC,mBAAc,CAAC,OAAO,CAAQ,qDAAyB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACzG,CAAC;CAMJ;AAtBD,kCAsBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEnapoPpasCommercialParams.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/interfaces/IEnapoPpasCommercialParams.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.EnapoPpasCommercialParamsSchema = void 0;
|
|
13
|
+
const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
|
|
14
|
+
class EnapoPpasCommercialParamsSchema {
|
|
15
|
+
}
|
|
16
|
+
exports.EnapoPpasCommercialParamsSchema = EnapoPpasCommercialParamsSchema;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, class_validator_1.IsOptional)(),
|
|
19
|
+
(0, class_validator_1.IsISO8601)({ strict: true }),
|
|
20
|
+
(0, class_validator_1.Length)(10, 10),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], EnapoPpasCommercialParamsSchema.prototype, "from", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_validator_1.IsOptional)(),
|
|
25
|
+
(0, class_validator_1.IsISO8601)({ strict: true }),
|
|
26
|
+
(0, class_validator_1.Length)(10, 10),
|
|
27
|
+
__metadata("design:type", String)
|
|
28
|
+
], EnapoPpasCommercialParamsSchema.prototype, "to", void 0);
|
|
29
|
+
//# sourceMappingURL=EnapoPpasCommercialParamsSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnapoPpasCommercialParamsSchema.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/schema/EnapoPpasCommercialParamsSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+EAA0F;AAG1F,MAAa,+BAA+B;CAS3C;AATD,0EASC;AALG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3B,IAAA,wBAAM,EAAC,EAAE,EAAE,EAAE,CAAC;;6DACD;AAId;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3B,IAAA,wBAAM,EAAC,EAAE,EAAE,EAAE,CAAC;;2DACH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PpasCommercialDatasource } from "../../datasources/ppas/commercial/PpasCommercialDatasource";
|
|
2
|
+
import { PpasCommercialInvoiceDeviceRepository } from "../../repositories/ppas/PpasCommercialInvoiceDeviceRepository";
|
|
3
|
+
import { PpasCommercialInvoiceInstallationRepository } from "../../repositories/ppas/PpasCommercialInvoiceInstallationRepository";
|
|
4
|
+
import { PpasCommercialInvoicePriceRepository } from "../../repositories/ppas/PpasCommercialInvoicePriceRepository";
|
|
5
|
+
import { PpasCommercialInvoiceRepository } from "../../repositories/ppas/PpasCommercialInvoiceRepository";
|
|
6
|
+
import { PpasCommercialTransformation } from "../../transformations/ppas/PpasCommercialTransformation";
|
|
7
|
+
import { IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector";
|
|
8
|
+
import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
|
|
9
|
+
import { ILogger } from "@golemio/core/dist/helpers/logger/LoggerProvider";
|
|
10
|
+
import { AbstractTask } from "@golemio/core/dist/integration-engine";
|
|
11
|
+
import { IEnapoPpasCommercialParams } from "../interfaces/IEnapoPpasCommercialParams";
|
|
12
|
+
import { EnapoPpasCommercialParamsSchema } from "../schema/EnapoPpasCommercialParamsSchema";
|
|
13
|
+
export declare class EnapoPpasCommercialTask extends AbstractTask<IEnapoPpasCommercialParams> {
|
|
14
|
+
protected dbConnector: IDatabaseConnector;
|
|
15
|
+
protected datasource: PpasCommercialDatasource;
|
|
16
|
+
protected ppasCommercialInvoiceRepository: PpasCommercialInvoiceRepository;
|
|
17
|
+
protected ppasCommercialInvoiceInstallationRepository: PpasCommercialInvoiceInstallationRepository;
|
|
18
|
+
protected ppasCommercialInvoiceDeviceRepository: PpasCommercialInvoiceDeviceRepository;
|
|
19
|
+
protected ppasCommercialInvoicePriceRepository: PpasCommercialInvoicePriceRepository;
|
|
20
|
+
protected ppasCommercialTransformation: PpasCommercialTransformation;
|
|
21
|
+
protected logger: ILogger;
|
|
22
|
+
queueName: string;
|
|
23
|
+
queueTtl: number;
|
|
24
|
+
schema: typeof EnapoPpasCommercialParamsSchema;
|
|
25
|
+
private readonly requestDelayMs;
|
|
26
|
+
constructor(config: ISimpleConfig, dbConnector: IDatabaseConnector, datasource: PpasCommercialDatasource, ppasCommercialInvoiceRepository: PpasCommercialInvoiceRepository, ppasCommercialInvoiceInstallationRepository: PpasCommercialInvoiceInstallationRepository, ppasCommercialInvoiceDeviceRepository: PpasCommercialInvoiceDeviceRepository, ppasCommercialInvoicePriceRepository: PpasCommercialInvoicePriceRepository, ppasCommercialTransformation: PpasCommercialTransformation, logger: ILogger);
|
|
27
|
+
execute(params: IEnapoPpasCommercialParams): Promise<void>;
|
|
28
|
+
private saveInvoice;
|
|
29
|
+
private resolveDateRange;
|
|
30
|
+
private buildDateWindows;
|
|
31
|
+
private getLastInvoiceDateOrFallback;
|
|
32
|
+
protected sleep(ms: number): Promise<void>;
|
|
33
|
+
private readConfigOrDefault;
|
|
34
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.EnapoPpasCommercialTask = void 0;
|
|
16
|
+
const constants_1 = require("../../constants");
|
|
17
|
+
const PpasCommercialDatasource_1 = require("../../datasources/ppas/commercial/PpasCommercialDatasource");
|
|
18
|
+
const EnapoWorkerContainerToken_1 = require("../../ioc/EnapoWorkerContainerToken");
|
|
19
|
+
const PpasCommercialInvoiceDeviceRepository_1 = require("../../repositories/ppas/PpasCommercialInvoiceDeviceRepository");
|
|
20
|
+
const PpasCommercialInvoiceInstallationRepository_1 = require("../../repositories/ppas/PpasCommercialInvoiceInstallationRepository");
|
|
21
|
+
const PpasCommercialInvoicePriceRepository_1 = require("../../repositories/ppas/PpasCommercialInvoicePriceRepository");
|
|
22
|
+
const PpasCommercialInvoiceRepository_1 = require("../../repositories/ppas/PpasCommercialInvoiceRepository");
|
|
23
|
+
const PpasCommercialTransformation_1 = require("../../transformations/ppas/PpasCommercialTransformation");
|
|
24
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
25
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
26
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
27
|
+
const luxon_1 = require("@golemio/core/dist/shared/luxon");
|
|
28
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
29
|
+
const EnapoPpasCommercialParamsSchema_1 = require("../schema/EnapoPpasCommercialParamsSchema");
|
|
30
|
+
const BACKFILL_FROM_DATE = "2024-01-01";
|
|
31
|
+
const MAX_DATE_RANGE_DAYS = 366;
|
|
32
|
+
const DEFAULT_REQUEST_DELAY_MS = 650;
|
|
33
|
+
let EnapoPpasCommercialTask = class EnapoPpasCommercialTask extends integration_engine_1.AbstractTask {
|
|
34
|
+
constructor(config, dbConnector, datasource, ppasCommercialInvoiceRepository, ppasCommercialInvoiceInstallationRepository, ppasCommercialInvoiceDeviceRepository, ppasCommercialInvoicePriceRepository, ppasCommercialTransformation, logger) {
|
|
35
|
+
super(constants_1.ENAPO_WORKER_NAME);
|
|
36
|
+
this.dbConnector = dbConnector;
|
|
37
|
+
this.datasource = datasource;
|
|
38
|
+
this.ppasCommercialInvoiceRepository = ppasCommercialInvoiceRepository;
|
|
39
|
+
this.ppasCommercialInvoiceInstallationRepository = ppasCommercialInvoiceInstallationRepository;
|
|
40
|
+
this.ppasCommercialInvoiceDeviceRepository = ppasCommercialInvoiceDeviceRepository;
|
|
41
|
+
this.ppasCommercialInvoicePriceRepository = ppasCommercialInvoicePriceRepository;
|
|
42
|
+
this.ppasCommercialTransformation = ppasCommercialTransformation;
|
|
43
|
+
this.logger = logger;
|
|
44
|
+
this.queueName = "fetchPpasCommercial";
|
|
45
|
+
this.queueTtl = 60 * 60 * 1000;
|
|
46
|
+
this.schema = EnapoPpasCommercialParamsSchema_1.EnapoPpasCommercialParamsSchema;
|
|
47
|
+
this.requestDelayMs = this.readConfigOrDefault(config, "module.energetics.enapo.ppas.commercial.requestDelayMs", DEFAULT_REQUEST_DELAY_MS);
|
|
48
|
+
}
|
|
49
|
+
async execute(params) {
|
|
50
|
+
try {
|
|
51
|
+
const companyIdList = await this.datasource.getCompanyIdList();
|
|
52
|
+
const processedIntNums = new Set();
|
|
53
|
+
let isFirstRequest = true;
|
|
54
|
+
for (const companyId of companyIdList) {
|
|
55
|
+
const { from, to } = await this.resolveDateRange(params, companyId);
|
|
56
|
+
for (const window of this.buildDateWindows(from, to)) {
|
|
57
|
+
if (!isFirstRequest) {
|
|
58
|
+
await this.sleep(this.requestDelayMs);
|
|
59
|
+
}
|
|
60
|
+
isFirstRequest = false;
|
|
61
|
+
let invoiceList;
|
|
62
|
+
try {
|
|
63
|
+
invoiceList = await this.datasource.getInvoiceList(window.from, window.to, companyId);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
// Stop this company's windows (don't continue) so the timestamp watermark cannot advance
|
|
67
|
+
// past the failed window — the next run retries it from MAX(facts_doc_date) + 1.
|
|
68
|
+
this.logger.error(`${this.constructor.name}: Skipping company ${companyId} from ${window.from} to ${window.to}` +
|
|
69
|
+
` due to error: ` +
|
|
70
|
+
(err instanceof Error ? err.message : String(err)));
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
for (const invoiceRef of invoiceList) {
|
|
74
|
+
const intNum = invoiceRef.id?.intNum;
|
|
75
|
+
if (!intNum || processedIntNums.has(intNum)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
processedIntNums.add(intNum);
|
|
79
|
+
await this.sleep(this.requestDelayMs);
|
|
80
|
+
try {
|
|
81
|
+
await this.saveInvoice(intNum);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
this.logger.error(`${this.constructor.name}: Skipping invoice ${intNum} due to error: ` +
|
|
85
|
+
(err instanceof Error ? err.message : String(err)));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
if (err instanceof golemio_errors_1.AbstractGolemioError) {
|
|
93
|
+
throw err;
|
|
94
|
+
}
|
|
95
|
+
throw new golemio_errors_1.GeneralError(`Unable to download PPAS commercial data`, this.constructor.name, err);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async saveInvoice(intNum) {
|
|
99
|
+
const transaction = await this.dbConnector.getConnection().transaction();
|
|
100
|
+
try {
|
|
101
|
+
const invoiceDetail = await this.datasource.getInvoiceDetail(intNum);
|
|
102
|
+
const { invoiceHeader, rowInstallations, rowDevices, rowPrice } = this.ppasCommercialTransformation.transformElement(invoiceDetail);
|
|
103
|
+
await this.ppasCommercialInvoiceRepository.bulkSave([invoiceHeader], undefined, undefined, undefined, transaction);
|
|
104
|
+
await this.ppasCommercialInvoiceInstallationRepository.bulkSave(rowInstallations, undefined, undefined, undefined, transaction);
|
|
105
|
+
await this.ppasCommercialInvoicePriceRepository.bulkSave(rowPrice, undefined, undefined, undefined, transaction);
|
|
106
|
+
if (rowDevices.length > 0) {
|
|
107
|
+
await this.ppasCommercialInvoiceDeviceRepository.bulkSave(rowDevices, undefined, undefined, undefined, transaction);
|
|
108
|
+
}
|
|
109
|
+
await transaction.commit();
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
await transaction.rollback();
|
|
113
|
+
throw err;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async resolveDateRange(params, companyId) {
|
|
117
|
+
if (params.from && params.to) {
|
|
118
|
+
return { from: params.from, to: params.to };
|
|
119
|
+
}
|
|
120
|
+
const from = await this.getLastInvoiceDateOrFallback(companyId);
|
|
121
|
+
const to = luxon_1.DateTime.now().toFormat("yyyy-LL-dd");
|
|
122
|
+
return { from, to };
|
|
123
|
+
}
|
|
124
|
+
// The upstream API limits a single query to MAX_DATE_RANGE_DAYS, so a longer range is split
|
|
125
|
+
// into consecutive windows. This also advances coverage to today even when a company has no
|
|
126
|
+
// invoices in early windows — otherwise the timestamp watermark would never move past the backfill date.
|
|
127
|
+
buildDateWindows(from, to) {
|
|
128
|
+
const windows = [];
|
|
129
|
+
const end = luxon_1.DateTime.fromISO(to);
|
|
130
|
+
let cursor = luxon_1.DateTime.fromISO(from);
|
|
131
|
+
while (cursor <= end) {
|
|
132
|
+
const windowEnd = luxon_1.DateTime.min(cursor.plus({ days: MAX_DATE_RANGE_DAYS }), end);
|
|
133
|
+
windows.push({ from: cursor.toFormat("yyyy-LL-dd"), to: windowEnd.toFormat("yyyy-LL-dd") });
|
|
134
|
+
cursor = windowEnd.plus({ days: 1 });
|
|
135
|
+
}
|
|
136
|
+
return windows;
|
|
137
|
+
}
|
|
138
|
+
async getLastInvoiceDateOrFallback(companyId) {
|
|
139
|
+
const result = (await this.dbConnector
|
|
140
|
+
.getConnection()
|
|
141
|
+
.query(`SELECT MAX(facts_doc_date)::text AS last_date FROM energetics.enapo_ppas_commercial_invoice ` +
|
|
142
|
+
`WHERE customer_company_id = :companyId`, {
|
|
143
|
+
type: "SELECT",
|
|
144
|
+
replacements: { companyId },
|
|
145
|
+
}));
|
|
146
|
+
if (result.length > 0 && result[0].last_date) {
|
|
147
|
+
return luxon_1.DateTime.fromISO(result[0].last_date).plus({ days: 1 }).toFormat("yyyy-LL-dd");
|
|
148
|
+
}
|
|
149
|
+
return BACKFILL_FROM_DATE;
|
|
150
|
+
}
|
|
151
|
+
sleep(ms) {
|
|
152
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
153
|
+
}
|
|
154
|
+
readConfigOrDefault(config, key, defaultValue) {
|
|
155
|
+
try {
|
|
156
|
+
return config.getValue(key);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return defaultValue;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
exports.EnapoPpasCommercialTask = EnapoPpasCommercialTask;
|
|
164
|
+
exports.EnapoPpasCommercialTask = EnapoPpasCommercialTask = __decorate([
|
|
165
|
+
(0, tsyringe_1.injectable)(),
|
|
166
|
+
__param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
|
|
167
|
+
__param(1, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.PostgresConnector)),
|
|
168
|
+
__param(2, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.EnapoPpasCommercialDatasource)),
|
|
169
|
+
__param(3, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PpasCommercialInvoiceRepository)),
|
|
170
|
+
__param(4, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PpasCommercialInvoiceInstallationRepository)),
|
|
171
|
+
__param(5, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PpasCommercialInvoiceDeviceRepository)),
|
|
172
|
+
__param(6, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PpasCommercialInvoicePriceRepository)),
|
|
173
|
+
__param(7, (0, tsyringe_1.inject)(EnapoWorkerContainerToken_1.EnapoWorkerContainerToken.PpasCommercialTransformation)),
|
|
174
|
+
__param(8, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
|
|
175
|
+
__metadata("design:paramtypes", [Object, Object, PpasCommercialDatasource_1.PpasCommercialDatasource,
|
|
176
|
+
PpasCommercialInvoiceRepository_1.PpasCommercialInvoiceRepository,
|
|
177
|
+
PpasCommercialInvoiceInstallationRepository_1.PpasCommercialInvoiceInstallationRepository,
|
|
178
|
+
PpasCommercialInvoiceDeviceRepository_1.PpasCommercialInvoiceDeviceRepository,
|
|
179
|
+
PpasCommercialInvoicePriceRepository_1.PpasCommercialInvoicePriceRepository,
|
|
180
|
+
PpasCommercialTransformation_1.PpasCommercialTransformation, Object])
|
|
181
|
+
], EnapoPpasCommercialTask);
|
|
182
|
+
//# sourceMappingURL=EnapoPpasCommercialTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnapoPpasCommercialTask.js","sourceRoot":"","sources":["../../../../../src/integration-engine/enapo/workers/task/EnapoPpasCommercialTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAAwD;AACxD,yGAA0G;AAC1G,mFAAoF;AACpF,yHAA0H;AAC1H,qIAAsI;AACtI,uHAAwH;AACxH,6GAA8G;AAC9G,0GAA2G;AAG3G,wEAAqE;AAErE,8EAAqE;AACrE,6EAA8F;AAC9F,2DAA2D;AAC3D,iEAAwE;AAExE,+FAA4F;AAE5F,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAG9B,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,iCAAwC;IAOjF,YACoC,MAAqB,EAChB,WAAyC,EACb,UAA8C,EAE/G,+BAA0E,EAE1E,2CAAkG,EAElG,qCAAsF,EAEtF,oCAAoF,EAEpF,4BAAoE,EAC1C,MAAyB;QAEnD,KAAK,CAAC,6BAAiB,CAAC,CAAC;QAdsB,gBAAW,GAAX,WAAW,CAAoB;QACH,eAAU,GAAV,UAAU,CAA0B;QAErG,oCAA+B,GAA/B,+BAA+B,CAAiC;QAEhE,gDAA2C,GAA3C,2CAA2C,CAA6C;QAExF,0CAAqC,GAArC,qCAAqC,CAAuC;QAE5E,yCAAoC,GAApC,oCAAoC,CAAsC;QAE1E,iCAA4B,GAA5B,4BAA4B,CAA8B;QAChC,WAAM,GAAN,MAAM,CAAS;QApBhD,cAAS,GAAG,qBAAqB,CAAC;QAClC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC1B,WAAM,GAAG,iEAA+B,CAAC;QAsB5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAC1C,MAAM,EACN,wDAAwD,EACxD,wBAAwB,CAC3B,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,MAAkC;QACnD,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAC/D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;YAC3C,IAAI,cAAc,GAAG,IAAI,CAAC;YAE1B,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEpE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,cAAc,EAAE,CAAC;wBAClB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC1C,CAAC;oBACD,cAAc,GAAG,KAAK,CAAC;oBAEvB,IAAI,WAAW,CAAC;oBAChB,IAAI,CAAC;wBACD,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBAC1F,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,yFAAyF;wBACzF,iFAAiF;wBACjF,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAsB,SAAS,SAAS,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,EAAE,EAAE;4BACzF,iBAAiB;4BACjB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;wBACF,MAAM;oBACV,CAAC;oBAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;wBACnC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC;wBACrC,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC1C,SAAS;wBACb,CAAC;wBACD,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAE7B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBACtC,IAAI,CAAC;4BACD,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBACnC,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAsB,MAAM,iBAAiB;gCACjE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACzD,CAAC;wBACN,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,GAAG,YAAY,qCAAoB,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,6BAAY,CAAC,yCAAyC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAc;QACpC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,GAC3D,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAEtE,MAAM,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACnH,MAAM,IAAI,CAAC,2CAA2C,CAAC,QAAQ,CAC3D,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,CACd,CAAC;YACF,MAAM,IAAI,CAAC,oCAAoC,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YACjH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CACrD,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,CACd,CAAC;YACN,CAAC;YAED,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,MAAkC,EAAE,SAAiB;QAChF,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEjD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxB,CAAC;IAED,4FAA4F;IAC5F,4FAA4F;IAC5F,yGAAyG;IACjG,gBAAgB,CAAC,IAAY,EAAE,EAAU;QAC7C,MAAM,OAAO,GAAwC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,gBAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,gBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpC,OAAO,MAAM,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,gBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5F,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,4BAA4B,CAAC,SAAiB;QACxD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW;aACjC,aAAa,EAAE;aACf,KAAK,CACF,8FAA8F;YAC1F,wCAAwC,EAC5C;YACI,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,EAAE,SAAS,EAAE;SAC9B,CACJ,CAAwC,CAAC;QAE9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3C,OAAO,gBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAES,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEO,mBAAmB,CAAI,MAAqB,EAAE,GAAW,EAAE,YAAe;QAC9E,IAAI,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAI,GAAG,CAAM,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,YAAY,CAAC;QACxB,CAAC;IACL,CAAC;CACJ,CAAA;AApLY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,qBAAU,GAAE;IASJ,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,YAAY,CAAC,CAAA;IAC9B,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAA;IACnC,WAAA,IAAA,iBAAM,EAAC,qDAAyB,CAAC,6BAA6B,CAAC,CAAA;IAC/D,WAAA,IAAA,iBAAM,EAAC,qDAAyB,CAAC,+BAA+B,CAAC,CAAA;IAEjE,WAAA,IAAA,iBAAM,EAAC,qDAAyB,CAAC,2CAA2C,CAAC,CAAA;IAE7E,WAAA,IAAA,iBAAM,EAAC,qDAAyB,CAAC,qCAAqC,CAAC,CAAA;IAEvE,WAAA,IAAA,iBAAM,EAAC,qDAAyB,CAAC,oCAAoC,CAAC,CAAA;IAEtE,WAAA,IAAA,iBAAM,EAAC,qDAAyB,CAAC,4BAA4B,CAAC,CAAA;IAE9D,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;qDAX8D,mDAAwB;QAEpE,iEAA+B;QAEnB,yFAA2C;QAEjD,6EAAqC;QAEtC,2EAAoC;QAE5C,2DAA4B;GApB/D,uBAAuB,CAoLnC"}
|