From 414199a5db18148d8a6e07ab1162538757a07a98 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 19 Sep 2016 13:59:18 +0530 Subject: [PATCH] [Fix] Mode of payment issue --- erpnext/patches.txt | 1 + .../v7_0/update_mode_of_payment_type.py | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 erpnext/patches/v7_0/update_mode_of_payment_type.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index dfc926dc66..69904ae0e0 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -317,3 +317,4 @@ erpnext.patches.v7_0.update_missing_employee_in_timesheet erpnext.patches.v7_0.update_status_for_timesheet erpnext.patches.v7_0.set_party_name_in_payment_entry execute:frappe.db.sql("update `tabTimesheet` ts, `tabEmployee` emp set ts.employee_name = emp.employee_name where emp.name = ts.employee and ts.employee_name is null and ts.employee is not null") +erpnext.patches.v7_0.update_mode_of_payment_type diff --git a/erpnext/patches/v7_0/update_mode_of_payment_type.py b/erpnext/patches/v7_0/update_mode_of_payment_type.py new file mode 100644 index 0000000000..9292a1be1b --- /dev/null +++ b/erpnext/patches/v7_0/update_mode_of_payment_type.py @@ -0,0 +1,29 @@ +from __future__ import unicode_literals +import frappe +from frappe.utils import flt + +def execute(): + frappe.reload_doc('accounts', 'doctype', 'mode_of_payment') + + frappe.db.sql(""" update `tabMode of Payment` set type = 'Cash' where (type is null or type = '') and name = 'Cash'""") + + for data in frappe.db.sql("""select name from `tabSales Invoice` where is_pos=1 and docstatus<2 and + (ifnull(paid_amount, 0) - ifnull(change_amount, 0)) > ifnull(grand_total, 0) and modified > '2016-05-01'""", as_dict=1): + if data.name: + si_doc = frappe.get_doc("Sales Invoice", data.name) + remove_payment = [] + mode_of_payment = [d.mode_of_payment for d in si_doc.payments if flt(d.amount) > 0] + if mode_of_payment != set(mode_of_payment): + for payment_data in si_doc.payments: + if payment_data.idx != 1 and payment_data.amount == si_doc.grand_total: + remove_payment.append(payment_data) + frappe.db.sql(""" delete from `tabSales Invoice Payment` + where name = %(name)s""", {'name': payment_data.name}) + + if len(remove_payment) > 0: + for d in remove_payment: + si_doc.remove(d) + + si_doc.set_paid_amount() + si_doc.db_set("paid_amount", si_doc.paid_amount, update_modified = False) + si_doc.db_set("base_paid_amount", si_doc.base_paid_amount, update_modified = False) \ No newline at end of file