diff --git a/apps/api/src/app/resolvers/sales.invoice.resolver.ts b/apps/api/src/app/resolvers/sales.invoice.resolver.ts index 222c4ea..6c0666e 100644 --- a/apps/api/src/app/resolvers/sales.invoice.resolver.ts +++ b/apps/api/src/app/resolvers/sales.invoice.resolver.ts @@ -109,6 +109,22 @@ export class SalesInvoiceResolver { ); } + @Mutation(() => SalesInvoice) + async revertSalesInvoice( + @Args('id', { type: () => Int }) id: number, + @CurrentUser() user, + ): Promise { + const invoice = await this.salesInvoiceService.loadEntityById( + this.entityManager, + id, + ); + return await this.salesInvoiceService.revert( + this.entityManager, + invoice, + user, + ); + } + @Mutation(() => SalesInvoice) async publishSalesInvoice( @Args('args') objData: SalesInvoicePublishArgs, diff --git a/apps/api/src/model/lib/sales.invoice.service.ts b/apps/api/src/model/lib/sales.invoice.service.ts index 5ddab47..196cd0c 100644 --- a/apps/api/src/model/lib/sales.invoice.service.ts +++ b/apps/api/src/model/lib/sales.invoice.service.ts @@ -553,6 +553,16 @@ export class SalesInvoiceService extends BaseEntityService< return invoice; } + async revert( + manager: EntityManager, + invoice: SalesInvoiceModel, + currentUser: UserModel, + ): Promise { + invoice.isDraft = true; + await this.persist(manager, invoice, currentUser); + return invoice; + } + async fixPrint(manager: EntityManager) { console.log('Fix print started'); const invoices = await manager @@ -581,17 +591,19 @@ export class SalesInvoiceService extends BaseEntityService< notDraftInvoicesWithoutDocumentNumber: Array, ) { for (const invoice of notDraftInvoicesWithoutDocumentNumber) { - if (invoice.documentNo || invoice.isDraft) { + if (invoice.isDraft) { throw new Error( 'Call with non draft invoices without document number only!', ); } - invoice.documentNo = - await this.documentNumberingServiceModel.getNextDocumentNumber( - manager, - invoice.constructor, - await invoice.organization, - ); + if (!invoice.documentNo) { + invoice.documentNo = + await this.documentNumberingServiceModel.getNextDocumentNumber( + manager, + invoice.constructor, + await invoice.organization, + ); + } } }