diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index 1b933ce2c8..f537200e04 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -21,9 +21,11 @@
"in_filter": 0,
"in_list_view": 1,
"label": "Make Accounting Entry For Every Stock Movement",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -43,9 +45,11 @@
"in_filter": 0,
"in_list_view": 1,
"label": "Accounts Frozen Upto",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -65,10 +69,12 @@
"in_filter": 0,
"in_list_view": 1,
"label": "Role Allowed to Set Frozen Accounts & Edit Frozen Entries",
+ "length": 0,
"no_copy": 0,
"options": "Role",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -88,10 +94,12 @@
"in_filter": 0,
"in_list_view": 1,
"label": "Credit Controller",
+ "length": 0,
"no_copy": 0,
"options": "Role",
"permlevel": 0,
"print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -110,10 +118,60 @@
"in_filter": 0,
"in_list_view": 0,
"label": "Check Supplier Invoice Number Uniqueness",
+ "length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "payment_gateway_settings",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Payment Gateway Settings",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "message",
+ "fieldtype": "Text Editor",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Payment Transaction Message",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
@@ -131,7 +189,8 @@
"is_submittable": 0,
"issingle": 1,
"istable": 0,
- "modified": "2015-07-14 00:51:48.095525",
+ "max_attachments": 0,
+ "modified": "2015-12-17 12:26:28.440728",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.json b/erpnext/accounts/doctype/payment_request/payment_request.json
index aa215206ed..40d2fc9ae6 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.json
+++ b/erpnext/accounts/doctype/payment_request/payment_request.json
@@ -33,32 +33,6 @@
"set_only_once": 0,
"unique": 0
},
- {
- "allow_on_submit": 1,
- "bold": 0,
- "collapsible": 0,
- "default": "",
- "fieldname": "status",
- "fieldtype": "Select",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "in_filter": 0,
- "in_list_view": 0,
- "label": "Status",
- "length": 0,
- "no_copy": 0,
- "options": "\nPaid\nFailed\nCancelled",
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
{
"allow_on_submit": 0,
"bold": 0,
@@ -181,6 +155,32 @@
"set_only_once": 0,
"unique": 0
},
+ {
+ "allow_on_submit": 1,
+ "bold": 0,
+ "collapsible": 0,
+ "default": "",
+ "fieldname": "status",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "Status",
+ "length": 0,
+ "no_copy": 0,
+ "options": "\nInitiated\nPaid\nFailed\nCancelled",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
{
"allow_on_submit": 0,
"bold": 0,
@@ -209,6 +209,7 @@
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "default": "",
"fieldname": "print_format",
"fieldtype": "Select",
"hidden": 0,
@@ -271,7 +272,7 @@
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
- "read_only": 0,
+ "read_only": 1,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -302,6 +303,30 @@
"set_only_once": 0,
"unique": 0
},
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "fieldname": "payment_url",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "in_filter": 0,
+ "in_list_view": 0,
+ "label": "payment_url",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
{
"allow_on_submit": 0,
"bold": 0,
@@ -410,7 +435,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2015-12-17 10:08:48.333171",
+ "modified": "2015-12-21 10:57:48.107213",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Request",
diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py
index d1bfc9fc18..570d8e7487 100644
--- a/erpnext/accounts/doctype/payment_request/payment_request.py
+++ b/erpnext/accounts/doctype/payment_request/payment_request.py
@@ -11,7 +11,7 @@ from erpnext.accounts.doctype.journal_entry.journal_entry import get_payment_ent
from erpnext.accounts.party import get_party_account
from erpnext.accounts.utils import get_account_currency, get_balance_on
from itertools import chain
-
+from paypal_integration.express_checkout import set_express_checkout
class PaymentRequest(Document):
def validate(self):
self.validate_payment_request()
@@ -22,11 +22,8 @@ class PaymentRequest(Document):
frappe.throw(_("Payment Request already exist"))
def on_submit(self):
- if self.status == "Paid":
- self.set_paid()
-
- self.send_email()
self.send_payment_request()
+ self.send_email()
self.make_communication_entry()
def on_cancel(self):
@@ -39,12 +36,17 @@ class PaymentRequest(Document):
pass
def send_payment_request(self):
- pass
-
- def make_communication_log_entry(self):
- pass
-
+ if self.payment_gateway == "PayPal":
+ self.payment_url = set_express_checkout(self.amount, "USD", {"doctype": self.doctype,
+ "docname": self.name})
+
+ if self.payment_url:
+ frappe.db.set_value(self.doctype, self.name, "status", "Initiated")
+
def set_paid(self):
+ if frappe.session.user == "Guest":
+ frappe.set_user("Administrator")
+
self.create_journal_voucher_entry()
def create_journal_voucher_entry(self):
@@ -85,12 +87,15 @@ class PaymentRequest(Document):
}
jv = get_payment_entry(ref_doc, payment_details)
+
jv.update({
"voucher_type": "Journal Entry",
"posting_date": today()
})
jv.submit()
-
+
+ frappe.db.set_value(self.doctype, self.name, "status", "Paid")
+
def send_email(self):
"""send email with payment link"""
frappe.sendmail(recipients=self.email_to, sender=None, subject=self.subject,
@@ -99,13 +104,13 @@ class PaymentRequest(Document):
def get_message(self):
"""return message with payment gateway link"""
- return self.message + "
Payment Link link for payment gateway "
+ return self.message + self.payment_url if self.payment_url else ""
def set_failed(self):
pass
def set_cancelled(self):
- pass
+ frappe.db.set_value(self.doctype, self.name, "status", "Cancelled")
def make_communication_entry(self):
"""Make communication entry"""
@@ -125,18 +130,20 @@ def make_payment_request(dt, dn, recipient_id=None):
ref_doc = get_reference_doc_details(dt, dn)
payment_gateway, payment_account = get_gateway_details()
- pr = frappe.get_doc({
- "doctype": "Payment Request",
+ pr = frappe.new_doc("Payment Request")
+ pr.update({
"payment_gateway": payment_gateway,
"payment_account": payment_account,
"currency": ref_doc.currency,
"amount": get_amount(ref_doc, dt),
"email_to": recipient_id,
+ "subject": "Payment Request for %s"%dn,
+ "message": frappe.get_doc("Accounts Settings").message,
"reference_doctype": dt,
"reference_name": dn
- }).insert()
+ })
- return pr.name
+ return pr.as_dict()
def get_reference_doc_details(dt, dn):
""" return reference doc Sales Order/Sales Invoice"""
diff --git a/erpnext/config/accounts.py b/erpnext/config/accounts.py
index 8a27394509..d80449d3b7 100644
--- a/erpnext/config/accounts.py
+++ b/erpnext/config/accounts.py
@@ -32,6 +32,11 @@ def get_data():
"name": "Supplier",
"description": _("Supplier database.")
},
+ {
+ "type": "doctype",
+ "name": "Payment Request",
+ "description": _("Payment Request")
+ },
{
"type": "page",
"name": "Accounts Browser",
@@ -83,6 +88,11 @@ def get_data():
"name": "Fiscal Year",
"description": _("Financial / accounting year.")
},
+ {
+ "type": "doctype",
+ "name": "Payment Gateway",
+ "description": _("Setup Gateway accounts.")
+ },
{
"type": "page",
"name": "Accounts Browser",
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index f6b42f7c69..7f17bd3837 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -300,7 +300,9 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
},
callback: function(r) {
if(!r.exc){
- frappe.msgprint(__("Payment Request generated"))
+ var doc = frappe.model.sync(r.message);
+ console.log(r.message)
+ frappe.set_route("Form", r.message.doctype, r.message.name);
}
}
})