amplid stuff and fixes

This commit is contained in:
Dennes Schäffler
2025-09-23 11:32:57 +02:00
parent 26c50e2156
commit 5be90ca15e

View File

@@ -23,11 +23,13 @@ export class AmplidService {
}) })
export class AmplidPlugin implements OnApplicationBootstrap { export class AmplidPlugin implements OnApplicationBootstrap {
private customFieldForBestellteMenge = 'bestellteMenge'; //bestellteMenge private customFieldForBestellteMenge = 'bestelltemenge'; //bestellteMenge
@Inject(EventBus) @Inject(EventBus)
private readonly eventBus!: EventBus; private readonly eventBus!: EventBus;
private readonly logger = Logger.forContext(this);
// Required static init method for Phoenix plugins // Required static init method for Phoenix plugins
static init(): typeof AmplidPlugin { static init(): typeof AmplidPlugin {
console.log('AmplidPlugin initialized'); console.log('AmplidPlugin initialized');
@@ -39,22 +41,34 @@ export class AmplidPlugin implements OnApplicationBootstrap {
} }
setupEvents() { setupEvents() {
this.eventBus.ofType(DocumentLineItemStatusChangedEvent).subscribe(async (event) => { this.eventBus.registerBlockingEventHandler(DocumentLineItemStatusChangedEvent, {
id: 'amplid-plugin-document-line-item-status-changed',
handler: async (event) => {
if (event.newStatus == DocumentStatusType.COMPLETED) { if (event.newStatus == DocumentStatusType.COMPLETED) {
if (!event.dli) {
this.logger.error(`DocumentLineItem not found in event`, "AMPLID PLUGIN");
return;
}
let bestellteMenge = +event.dli.customFields?.[this.customFieldForBestellteMenge]; let bestellteMenge = +event.dli.customFields?.[this.customFieldForBestellteMenge];
if (bestellteMenge && bestellteMenge > 0) { if (bestellteMenge && bestellteMenge > 0) {
if (bestellteMenge == event.dli.quantity && event.dli.openQuantity == 0) { if (bestellteMenge == event.dli.quantity && event.dli.openQuantity == 0) {
//we are good, we can keep it being completed //we are good, we can keep it being completed
this.logger.info(`Keeping status as completed for DocumentLineItem ${event.dli.id} because bestellteMenge ${bestellteMenge} is equal to quantity ${event.dli.quantity} and openQuantity ${event.dli.openQuantity}`);
} else { } else {
//we need to change the status to inwork //we need to change the status to inwork
Logger.info(`Changing status to inwork for DocumentLineItem ${event.dli.id} because bestellteMenge ${bestellteMenge} is not equal to quantity ${event.dli.quantity} and openQuantity ${event.dli.openQuantity}`); this.logger.info(`Changing status to inwork for DocumentLineItem ${event.dli.id} because bestellteMenge ${bestellteMenge} is not equal to quantity ${event.dli.quantity} and openQuantity ${event.dli.openQuantity}`);
event.dli.status = DocumentStatusType.INWORK; event.dli.status = DocumentStatusType.INWORK;
await DocumentLineItem.update(event.dli.id, { status: DocumentStatusType.INWORK }); await DocumentLineItem.update(event.dli.id, { status: DocumentStatusType.INWORK });
} }
} }
else {
this.logger.info(`Keeping status as completed for DocumentLineItem ${event.dli.id} because bestelltemenge ${bestellteMenge} is not set`);
} }
}
},
}); });
} }
} }