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 60dbae7e67e1f276867522f044af63259e4bf734..ccabb0aee82e470fce20c87d8a239b93a9283af7 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)