Skip to content

Commit

Permalink
fix: check for duplicate in pos closing and pos merge log entry
Browse files Browse the repository at this point in the history
(cherry picked from commit 47add0b)
  • Loading branch information
ruthra-kumar authored and mergify[bot] committed Feb 21, 2023
1 parent 74a3588 commit 05d6490
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
16 changes: 16 additions & 0 deletions erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,24 @@ def validate(self):
if frappe.db.get_value("POS Opening Entry", self.pos_opening_entry, "status") != "Open":
frappe.throw(_("Selected POS Opening Entry should be open."), title=_("Invalid Opening Entry"))

self.validate_duplicate_pos_invoices()
self.validate_pos_invoices()

def validate_duplicate_pos_invoices(self):
pos_occurences = {}
for idx, inv in enumerate(self.pos_transactions, 1):
pos_occurences.setdefault(inv.pos_invoice, []).append(idx)

error_list = []
for key, value in pos_occurences.items():
if len(value) > 1:
error_list.append(
_("{} is added multiple times on rows: {}".format(frappe.bold(key), frappe.bold(value)))
)

if error_list:
frappe.throw(error_list, title=_("Duplicate POS Invoices found"), as_list=True)

def validate_pos_invoices(self):
invalid_rows = []
for d in self.pos_transactions:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,22 @@ class POSInvoiceMergeLog(Document):
def validate(self):
self.validate_customer()
self.validate_pos_invoice_status()
self.validate_duplicate_pos_invoices()

def validate_duplicate_pos_invoices(self):
pos_occurences = {}
for idx, inv in enumerate(self.pos_invoices, 1):
pos_occurences.setdefault(inv.pos_invoice, []).append(idx)

error_list = []
for key, value in pos_occurences.items():
if len(value) > 1:
error_list.append(
_("{} is added multiple times on rows: {}".format(frappe.bold(key), frappe.bold(value)))
)

if error_list:
frappe.throw(error_list, title=_("Duplicate POS Invoices found"), as_list=True)

def validate_customer(self):
if self.merge_invoices_based_on == "Customer Group":
Expand Down Expand Up @@ -426,6 +442,8 @@ def create_merge_logs(invoice_by_customer, closing_entry=None):

if closing_entry:
closing_entry.set_status(update=True, status="Failed")
if type(error_message) == list:
error_message = frappe.json.dumps(error_message)
closing_entry.db_set("error_message", error_message)
raise

Expand Down

0 comments on commit 05d6490

Please sign in to comment.