From 12abd405d3eab2a246549844de79789ac2e15951 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Wed, 18 Dec 2024 20:19:36 +0530 Subject: [PATCH] fix: POS Closing entry issue (#44772) --- .../pos_invoice_merge_log.py | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py index 60dbae7e67e..ccabb0aee82 100644 --- a/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py +++ b/erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.py @@ -89,11 +89,13 @@ class POSInvoiceMergeLog(Document): sales = [d for d in pos_invoice_docs if d.get("is_return") == 0] sales_invoice, credit_note = "", "" + sales_invoice_doc = None if sales: - sales_invoice = self.process_merging_into_sales_invoice(sales) + sales_invoice_doc = self.process_merging_into_sales_invoice(sales) + sales_invoice = sales_invoice_doc.name if returns: - credit_note = self.process_merging_into_credit_note(returns, sales_invoice) + credit_note = self.process_merging_into_credit_note(returns, sales_invoice_doc) self.save() # save consolidated_sales_invoice & consolidated_credit_note ref in merge log self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note) @@ -126,15 +128,23 @@ class POSInvoiceMergeLog(Document): self.consolidated_invoice = sales_invoice.name - return sales_invoice.name + return sales_invoice - def process_merging_into_credit_note(self, data, sales_invoice): + def process_merging_into_credit_note(self, data, sales_invoice_doc=None): credit_note = self.get_new_sales_invoice() credit_note.is_return = 1 credit_note = self.merge_pos_invoice_into(credit_note, data) + referenes = {} + + if sales_invoice_doc: + credit_note.return_against = sales_invoice_doc.name + + for d in sales_invoice_doc.items: + referenes[d.item_code] = d.name - credit_note.return_against = sales_invoice + for d in credit_note.items: + d.sales_invoice_item = referenes.get(d.item_code) credit_note.is_consolidated = 1 credit_note.set_posting_time = 1 @@ -340,7 +350,12 @@ class POSInvoiceMergeLog(Document): return [] def cancel_linked_invoices(self): - for si_name in [self.consolidated_invoice, self.consolidated_credit_note]: + invoices = [self.consolidated_invoice, self.consolidated_credit_note] + if not invoices: + return + + invoices.reverse() + for si_name in invoices: if not si_name: continue si = frappe.get_doc("Sales Invoice", si_name) -- GitLab