From 10d1806d813d976d7627cde9b4d0cd3f6b1e252f Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 10 Nov 2014 11:11:38 +0530 Subject: [PATCH 1/2] Credit days validation fixes --- .../journal_voucher/journal_voucher.py | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py index 7a833f76274..825a8dd8013 100644 --- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py +++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py @@ -310,22 +310,19 @@ class JournalVoucher(AccountsController): self.total_amount_in_words = money_in_words(amt, company_currency) def check_credit_days(self): - date_diff = 0 if self.cheque_date: - date_diff = (getdate(self.cheque_date)-getdate(self.posting_date)).days - - if date_diff <= 0: return - - # Get List of Customer Account - acc_list = filter(lambda d: frappe.db.get_value("Account", d.account, - "master_type")=='Customer', self.get('entries')) - - for d in acc_list: - credit_days = self.get_credit_days_for(d.account) - # Check credit days - if credit_days > 0 and not self.get_authorized_user() and cint(date_diff) > credit_days: - msgprint(_("Maximum allowed credit is {0} days after posting date").format(credit_days), - raise_exception=1) + for d in self.get("entries"): + if flt(d.credit) > 0 and d.against_invoice \ + and frappe.db.get_value("Account", d.account, "master_type")=='Customer': + posting_date = frappe.db.get_value("Sales Invoice", d.against_invoice, "posting_date") + credit_days = self.get_credit_days_for(d.account) + if credit_days: + date_diff = (getdate(self.cheque_date) - getdate(posting_date)).days + if date_diff > flt(credit_days): + msgprint(_("Note: Reference Date exceeds allowed credit days by {0} days for {1}") + .format(date_diff - flt(credit_days), d.account)) + if not self.get_authorized_user(): + raise frappe.ValidationError def get_credit_days_for(self, ac): if not self.credit_days_for.has_key(ac): @@ -333,8 +330,7 @@ class JournalVoucher(AccountsController): if not self.credit_days_for[ac]: if self.credit_days_global==-1: - self.credit_days_global = cint(frappe.db.get_value("Company", - self.company, "credit_days")) + self.credit_days_global = cint(frappe.db.get_value("Company", self.company, "credit_days")) return self.credit_days_global else: @@ -343,10 +339,7 @@ class JournalVoucher(AccountsController): def get_authorized_user(self): if self.is_approving_authority==-1: self.is_approving_authority = 0 - - # Fetch credit controller role - approving_authority = frappe.db.get_value("Accounts Settings", None, - "credit_controller") + approving_authority = frappe.db.get_value("Accounts Settings", None, "credit_controller") # Check logged-in user is authorized if approving_authority in frappe.user.get_roles(): From bf836277f994de51788ef13b91975cbc35a0987c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 10 Nov 2014 11:28:25 +0530 Subject: [PATCH 2/2] Payment tool fix: get outstanding sales orders --- erpnext/accounts/doctype/payment_tool/payment_tool.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/payment_tool/payment_tool.py b/erpnext/accounts/doctype/payment_tool/payment_tool.py index 578a3168eaa..4d4d8e83d26 100644 --- a/erpnext/accounts/doctype/payment_tool/payment_tool.py +++ b/erpnext/accounts/doctype/payment_tool/payment_tool.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals import frappe -from frappe import _, scrub +from frappe import _ from frappe.utils import flt from frappe.model.document import Document import json @@ -93,7 +93,7 @@ def get_orders_to_be_billed(party_type, party_name): and docstatus = 1 and ifnull(status, "") != "Stopped" and ifnull(grand_total, 0) > ifnull(advance_paid, 0) - and ifnull(per_billed, 0) < 100.0 + and abs(100 - ifnull(per_billed, 0)) > 0.01 """ % (voucher_type, 'customer' if party_type == "Customer" else 'supplier', '%s'), party_name, as_dict = True)