[fix] payment request demo

This commit is contained in:
Saurabh
2016-07-22 14:15:03 +05:30
parent e4e8954a19
commit 90c0b7fbea
3 changed files with 54 additions and 11 deletions

View File

@@ -34,7 +34,7 @@ class PaymentRequest(Document):
if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart": if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart":
send_mail = False send_mail = False
if send_mail: if send_mail and not self.flags.mute_email:
self.send_payment_request() self.send_payment_request()
self.send_email() self.send_email()
@@ -104,8 +104,9 @@ class PaymentRequest(Document):
self.reference_name, self.name) self.reference_name, self.name)
}) })
company_details = get_company_defaults(ref_doc.company)
if payment_entry.difference_amount: if payment_entry.difference_amount:
company_details = get_company_defaults(ref_doc.company)
payment_entry.append("deductions", { payment_entry.append("deductions", {
"account": company_details.exchange_gain_loss_account, "account": company_details.exchange_gain_loss_account,
"cost_center": company_details.cost_center, "cost_center": company_details.cost_center,
@@ -132,7 +133,8 @@ class PaymentRequest(Document):
"payment_url": self.payment_url "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): def set_failed(self):
pass pass
@@ -183,13 +185,17 @@ def make_payment_request(**args):
"grand_total": grand_total, "grand_total": grand_total,
"email_to": args.recipient_id or "", "email_to": args.recipient_id or "",
"subject": "Payment Request for %s"%args.dn, "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_doctype": args.dt,
"reference_name": args.dn "reference_name": args.dn
}) })
if args.return_doc: if args.return_doc:
return pr return pr
if args.mute_email:
pr.flags.mute_email = True
if args.submit_doc: if args.submit_doc:
pr.insert(ignore_permissions=True) pr.insert(ignore_permissions=True)
pr.submit() pr.submit()
@@ -258,9 +264,9 @@ def resend_payment_email(docname):
return frappe.get_doc("Payment Request", docname).send_email() return frappe.get_doc("Payment Request", docname).send_email()
@frappe.whitelist() @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 = 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() return doc.set_as_paid().as_dict()
def make_status_as_paid(doc, method): 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, {"reference_doctype": ref.reference_doctype, "reference_name": ref.reference_name,
"docstatus": 1}) "docstatus": 1})
doc = frappe.get_doc("Payment Request", payment_request_name) if payment_request_name:
if doc.status != "Paid": doc = frappe.get_doc("Payment Request", payment_request_name)
doc.db_set('status', 'Paid') if doc.status != "Paid":
doc.db_set('status', 'Paid')
def get_dummy_message(use_dummy_message=True):
return """
<p> Hope you are enjoying a service. Please consider bank details for payment </p>
<p> Bank Details <p><br>
<p> Bank Name : National Bank </p>
<p> Account Number : 123456789000872 </p>
<p> IFSC code : NB000001 </p>
<p> Account Name : Wind Power LLC </p>
"""

View File

@@ -10,6 +10,8 @@ from frappe.utils import random_string
from frappe.desk import query_report from frappe.desk import query_report
from erpnext.accounts.doctype.journal_entry.journal_entry import get_payment_entry_against_invoice 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 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(): def work():
frappe.set_user(frappe.db.get_global('demo_accounts_user')) frappe.set_user(frappe.db.get_global('demo_accounts_user'))
@@ -46,8 +48,19 @@ def work():
if random.random() < 0.5: if random.random() < 0.5:
make_payment_entries("Purchase Invoice", "Accounts Payable") 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): 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])) {"report_date": frappe.flags.current_date })["result"] if r[2]==ref_doctype]))
# make Payment Entry # make Payment Entry
@@ -69,4 +82,4 @@ def make_payment_entries(ref_doctype, report):
jv.cheque_date = frappe.flags.current_date jv.cheque_date = frappe.flags.current_date
jv.insert() jv.insert()
jv.submit() jv.submit()
frappe.db.commit() frappe.db.commit()

View File

@@ -4,9 +4,11 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe, random import frappe, random
from frappe.utils import flt
from frappe.utils.make_random import add_random_children, get_random from frappe.utils.make_random import add_random_children, get_random
from erpnext.setup.utils import get_exchange_rate from erpnext.setup.utils import get_exchange_rate
from erpnext.accounts.party import get_party_account_currency 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(): def work():
frappe.set_user(frappe.db.get_global('demo_sales_user_2')) 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)): for i in xrange(random.randint(1,3)):
make_sales_order() 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(): def make_opportunity():
b = frappe.get_doc({ b = frappe.get_doc({
"doctype": "Opportunity", "doctype": "Opportunity",