chore: implenet the external invoice 2

This commit is contained in:
mahyargdz
2025-07-14 12:28:40 +03:30
parent 11b8164c28
commit b7dcc994f6
2 changed files with 17 additions and 16 deletions
@@ -562,7 +562,7 @@ export class InvoicesService {
await queryRunner.manager.save(Wallet, userWallet);
if (invoice.items[0]?.subscriptionPlan) {
if (invoice.items[0]?.subscriptionPlan && !invoice.isExternal) {
const userSubscription = invoice.items[0].subscriptionPlan;
userSubscription.status = SubscriptionStatus.ACTIVE;
@@ -573,7 +573,7 @@ export class InvoicesService {
await this.addNotifyAdminForSubscriptionPaymentToQueue(invoice);
//
} else if (invoice.items[0]?.supportPlan) {
} else if (invoice.items[0]?.supportPlan && !invoice.isExternal) {
const oldUserSupportPlan = await queryRunner.manager.findOne(UserSupportPlan, {
where: { user: { id: user.id }, status: UserSupportPlanStatus.ACTIVE },
});
@@ -594,6 +594,11 @@ export class InvoicesService {
await this.addNotifyForWalletDeduction(invoice, user, userWallet, WalletMessage.INVOICE_WALLET_TRANSFER);
}
invoice.status = InvoiceStatus.PAID;
invoice.paidAt = dayjs().toDate();
await queryRunner.manager.save(Invoice, invoice);
if (invoice.isExternal && invoice.items?.[0]?.subscriptionPlan) {
const externalInvoiceJobData: IExternalInvoiceJob = {
invoice,
@@ -604,18 +609,14 @@ export class InvoicesService {
};
await this.externalInvoiceQueue.add(INVOICE.EXTERNAL_CALLBACK_JOB_NAME, externalInvoiceJobData, {
delay: dayjs().add(5000, "millisecond").diff(dayjs()),
// delay: dayjs().add(10000, "millisecond").diff(dayjs()),
delay: 5000,
attempts: INVOICE.EXTERNAL_JOB_ATTEMPTS,
backoff: { type: "exponential", delay: INVOICE.EXTERNAL_JOB_BACKOFF },
priority: INVOICE.EXTERNAL_JOB_PRIORITY,
});
}
invoice.status = InvoiceStatus.PAID;
invoice.paidAt = dayjs().toDate();
await queryRunner.manager.save(Invoice, invoice);
await this.notificationQueue.addBillInvoiceNotification(userId, {
invoiceId: invoice.numericId.toString(),
dueDate: invoice.dueDate,
@@ -816,7 +817,7 @@ export class InvoicesService {
items: invoiceItems,
tax: tax.toNumber(),
dueDate,
status: InvoiceStatus.PENDING,
status: InvoiceStatus.WAIT_PAYMENT,
isRecurring: createDto.isRecurring,
recurringPeriod: createDto.recurringPeriod,
maxRecurringCycles: createDto.maxRecurringCycles,