- // eslint-disable-next-line consistent-this
- private async stopTransaction(connectorId: number, self: AutomaticTransactionGenerator): Promise<StopTransactionResponse> {
- const transactionId = self.chargingStation.getConnector(connectorId).transactionId;
- return await self.chargingStation.ocppRequestService.sendStopTransaction(transactionId, self.chargingStation.getTransactionMeterStop(transactionId), self.chargingStation.getTransactionIdTag(transactionId));
+ private async stopTransaction(connectorId: number, reason: StopTransactionReason = StopTransactionReason.NONE): Promise<StopTransactionResponse> {
+ const measureId = 'StopTransaction with ATG';
+ const beginId = PerformanceStatistics.beginMeasure(measureId);
+ let transactionId = 0;
+ let stopResponse: StopTransactionResponse;
+ if (this.chargingStation.getConnector(connectorId)?.transactionStarted) {
+ transactionId = this.chargingStation.getConnector(connectorId).transactionId;
+ stopResponse = await this.chargingStation.ocppRequestService.sendStopTransaction(transactionId,
+ this.chargingStation.getEnergyActiveImportRegisterByTransactionId(transactionId),
+ this.chargingStation.getTransactionIdTag(transactionId),
+ reason);
+ } else {
+ logger.warn(`${this.logPrefix(connectorId)} trying to stop a not started transaction${transactionId ? ' ' + transactionId.toString() : ''}`);
+ }
+ PerformanceStatistics.endMeasure(measureId, beginId);
+ return stopResponse;