From 60e234581cb146df50800f83aa7d2c4f98552364 Mon Sep 17 00:00:00 2001 From: Gadha2311 Date: Sat, 4 Oct 2025 12:46:06 +0530 Subject: [PATCH 1/3] fix : set outstanding to zero for return payments when invoice is fully paid --- models/baseModels/Invoice/Invoice.ts | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/models/baseModels/Invoice/Invoice.ts b/models/baseModels/Invoice/Invoice.ts index e8ea56804..b3557d3a0 100644 --- a/models/baseModels/Invoice/Invoice.ts +++ b/models/baseModels/Invoice/Invoice.ts @@ -1047,19 +1047,16 @@ export abstract class Invoice extends Transactional { if (sinvreturnedDoc.outstandingAmount?.isZero()) { return this.grandTotal?.abs(); } else { - const totalPaid = sinvreturnedDoc.grandTotal - ?.abs() - .sub(sinvreturnedDoc.outstandingAmount as Money); + const totalPaid = sinvreturnedDoc + .grandTotal!.abs() + .sub(sinvreturnedDoc.outstandingAmount!); - if (!sinvreturnedDoc.isReturn) { - return totalPaid?.abs(); - } - - if (!this.grandTotal?.isNegative()) { - this.grandTotal = this.grandTotal?.neg(); - } + const returnAmount = this.grandTotal!.abs(); - return this.grandTotal?.add(totalPaid as Money).abs(); + const result = returnAmount.lte(totalPaid) + ? returnAmount + : totalPaid; + return result; } } @@ -1290,18 +1287,21 @@ export abstract class Invoice extends Transactional { paymentType = PaymentTypeEnum.Receive; } } + const paymentAmount = this.isReturn + ? outstandingAmount + : outstandingAmount?.abs(); const data = { party: this.party, date: new Date().toISOString(), paymentType, - amount: this.outstandingAmount?.abs(), + amount: paymentAmount, [accountField]: this.account, for: [ { referenceType: this.schemaName, referenceName: this.name, - amount: this.outstandingAmount, + amount: this.isReturn ? this.grandTotal : outstandingAmount, }, ], }; @@ -1313,7 +1313,6 @@ export abstract class Invoice extends Transactional { return this.fyo.doc.getNewDoc(ModelNameEnum.Payment, data) as Payment; } - async getStockTransfer(isAuto = false): Promise { if (!this.isSubmitted) { return null; From 770912e45c1a804565f12e5e54ca47b5980a7f0f Mon Sep 17 00:00:00 2001 From: Gadha2311 Date: Fri, 10 Oct 2025 11:18:21 +0530 Subject: [PATCH 2/3] fix : simplify return logic --- models/baseModels/Invoice/Invoice.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/models/baseModels/Invoice/Invoice.ts b/models/baseModels/Invoice/Invoice.ts index b3557d3a0..d4622a5d7 100644 --- a/models/baseModels/Invoice/Invoice.ts +++ b/models/baseModels/Invoice/Invoice.ts @@ -1051,12 +1051,11 @@ export abstract class Invoice extends Transactional { .grandTotal!.abs() .sub(sinvreturnedDoc.outstandingAmount!); - const returnAmount = this.grandTotal!.abs(); + const intendedReturnAmount = this.grandTotal!.abs(); - const result = returnAmount.lte(totalPaid) - ? returnAmount + return intendedReturnAmount.lte(totalPaid) + ? intendedReturnAmount : totalPaid; - return result; } } From 5549a25c75f5ac9ebb9d7cc61b56384e45296304 Mon Sep 17 00:00:00 2001 From: Gadha2311 Date: Fri, 10 Oct 2025 12:15:18 +0530 Subject: [PATCH 3/3] fix:rename returnAmount --- models/baseModels/Invoice/Invoice.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models/baseModels/Invoice/Invoice.ts b/models/baseModels/Invoice/Invoice.ts index d4622a5d7..1d7919883 100644 --- a/models/baseModels/Invoice/Invoice.ts +++ b/models/baseModels/Invoice/Invoice.ts @@ -1051,10 +1051,10 @@ export abstract class Invoice extends Transactional { .grandTotal!.abs() .sub(sinvreturnedDoc.outstandingAmount!); - const intendedReturnAmount = this.grandTotal!.abs(); + const outstandingAmount = this.grandTotal!.abs(); - return intendedReturnAmount.lte(totalPaid) - ? intendedReturnAmount + return outstandingAmount.lte(totalPaid) + ? outstandingAmount : totalPaid; } }