From 90c0b7fbea5691dd2d712b7b0fd87eed0c7ba202 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Fri, 22 Jul 2016 14:15:03 +0530 Subject: [PATCH] [fix] payment request demo --- .../payment_request/payment_request.py | 35 ++++++++++++++----- erpnext/demo/user/accounts.py | 17 +++++++-- erpnext/demo/user/sales.py | 13 +++++++ 3 files changed, 54 insertions(+), 11 deletions(-) diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index f55adb9688..665fc9064a 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -34,7 +34,7 @@ class PaymentRequest(Document): if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart": send_mail = False - if send_mail: + if send_mail and not self.flags.mute_email: self.send_payment_request() self.send_email() @@ -104,8 +104,9 @@ class PaymentRequest(Document): self.reference_name, self.name) }) - company_details = get_company_defaults(ref_doc.company) if payment_entry.difference_amount: + company_details = get_company_defaults(ref_doc.company) + payment_entry.append("deductions", { "account": company_details.exchange_gain_loss_account, "cost_center": company_details.cost_center, @@ -132,7 +133,8 @@ class PaymentRequest(Document): "payment_url": self.payment_url } - return frappe.render_template(self.message, context) + if self.message: + return frappe.render_template(self.message, context) def set_failed(self): pass @@ -183,13 +185,17 @@ def make_payment_request(**args): "grand_total": grand_total, "email_to": args.recipient_id or "", "subject": "Payment Request for %s"%args.dn, - "message": gateway_account.message, + "message": gateway_account.get("message") or get_dummy_message(args.use_dummy_message), "reference_doctype": args.dt, "reference_name": args.dn }) if args.return_doc: return pr + + if args.mute_email: + pr.flags.mute_email = True + if args.submit_doc: pr.insert(ignore_permissions=True) pr.submit() @@ -258,9 +264,9 @@ def resend_payment_email(docname): return frappe.get_doc("Payment Request", docname).send_email() @frappe.whitelist() -def make_payment_entry(docname): +def make_payment_entry(docname, make_draft_payment_entry=True): doc = frappe.get_doc("Payment Request", docname) - doc.flags.make_draft_payment_entry = True + doc.flags.make_draft_payment_entry = make_draft_payment_entry return doc.set_as_paid().as_dict() def make_status_as_paid(doc, method): @@ -269,6 +275,17 @@ def make_status_as_paid(doc, method): {"reference_doctype": ref.reference_doctype, "reference_name": ref.reference_name, "docstatus": 1}) - doc = frappe.get_doc("Payment Request", payment_request_name) - if doc.status != "Paid": - doc.db_set('status', 'Paid') + if payment_request_name: + doc = frappe.get_doc("Payment Request", payment_request_name) + if doc.status != "Paid": + doc.db_set('status', 'Paid') + +def get_dummy_message(use_dummy_message=True): + return """ +

Hope you are enjoying a service. Please consider bank details for payment

+

Bank Details


+

Bank Name : National Bank

+

Account Number : 123456789000872

+

IFSC code : NB000001

+

Account Name : Wind Power LLC

+ """ diff --git a/erpnext/demo/user/accounts.py b/erpnext/demo/user/accounts.py index e7dceb3887..36a79f621d 100644 --- a/erpnext/demo/user/accounts.py +++ b/erpnext/demo/user/accounts.py @@ -10,6 +10,8 @@ from frappe.utils import random_string from frappe.desk import query_report from erpnext.accounts.doctype.journal_entry.journal_entry import get_payment_entry_against_invoice from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry +from frappe.utils.make_random import get_random +from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request, make_payment_entry def work(): frappe.set_user(frappe.db.get_global('demo_accounts_user')) @@ -46,8 +48,19 @@ def work(): if random.random() < 0.5: make_payment_entries("Purchase Invoice", "Accounts Payable") + if random.random() < 0.1: + #make payment request against sales invoice + sales_invoice_name = get_random("Sales Invoice", filters={"docstatus": 1}) + if sales_invoice_name: + si = frappe.get_doc("Sales Invoice", sales_invoice_name) + if si.outstanding_amount > 0: + payment_request = make_payment_request(dt="Sales Invoice", dn=si.name, recipient_id=si.contact_email, + submit_doc=True, mute_email=True, use_dummy_message=True) + + make_payment_entry(payment_request.name, make_draft_payment_entry=False) + def make_payment_entries(ref_doctype, report): - outstanding_invoices = list(set([r[3] for r in query_report.run(report, + outstanding_invoices = list(set([r[3] for r in query_report.run(report, {"report_date": frappe.flags.current_date })["result"] if r[2]==ref_doctype])) # make Payment Entry @@ -69,4 +82,4 @@ def make_payment_entries(ref_doctype, report): jv.cheque_date = frappe.flags.current_date jv.insert() jv.submit() - frappe.db.commit() \ No newline at end of file + frappe.db.commit() diff --git a/erpnext/demo/user/sales.py b/erpnext/demo/user/sales.py index 6b36b46f78..cd008a93c0 100644 --- a/erpnext/demo/user/sales.py +++ b/erpnext/demo/user/sales.py @@ -4,9 +4,11 @@ from __future__ import unicode_literals import frappe, random +from frappe.utils import flt from frappe.utils.make_random import add_random_children, get_random from erpnext.setup.utils import get_exchange_rate from erpnext.accounts.party import get_party_account_currency +from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request, make_payment_entry def work(): frappe.set_user(frappe.db.get_global('demo_sales_user_2')) @@ -34,6 +36,17 @@ def work(): for i in xrange(random.randint(1,3)): make_sales_order() + if random.random() < 0.1: + #make payment request against Sales Order + sales_order_name = get_random("Sales Order", filters={"docstatus": 1}) + if sales_order_name: + so = frappe.get_doc("Sales Order", sales_order_name) + if (flt(so.grand_total) - flt(so.advance_paid)) > 0: + payment_request = make_payment_request(dt="Sales Order", dn=so.name, recipient_id=so.contact_email, + submit_doc=True, mute_email=True, use_dummy_message=True) + + make_payment_entry(payment_request.name, make_draft_payment_entry=False) + def make_opportunity(): b = frappe.get_doc({ "doctype": "Opportunity",