Merge branch 'develop' of https://github.com/frappe/erpnext into draft-mode-print
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index ab40e8c..91997d9 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -303,6 +303,36 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "allow_print_before_pay",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Allow Print Before Pay ",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 1,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "offline_pos_name",
"fieldtype": "Data",
"hidden": 1,
@@ -4563,7 +4593,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
- "modified": "2018-01-11 14:02:48.829906",
+ "modified": "2018-01-09 09:48:00.152026",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index f6d43c7..bf6ad49 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -304,6 +304,8 @@
self.account_for_change_amount = frappe.db.get_value('Company', self.company, 'default_cash_account')
if pos:
+ self.allow_print_before_pay = pos.allow_print_before_pay
+
if not for_validate and not self.customer:
self.customer = pos.customer
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.js b/erpnext/selling/page/point_of_sale/point_of_sale.js
index 0876228..29238ea 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.js
@@ -50,7 +50,6 @@
this.set_online_status();
},
() => this.setup_company(),
-
() => this.make_new_invoice(),
() => {
frappe.dom.unfreeze();
@@ -111,6 +110,7 @@
},
on_select_change: () => {
this.cart.numpad.set_inactive();
+ this.set_form_action();
},
get_item_details: (item_code) => {
return this.items.get(item_code);
@@ -180,6 +180,7 @@
.then(() => {
// update cart
this.update_cart_data(item);
+ this.set_form_action();
});
}
return;
@@ -278,13 +279,17 @@
}
submit_sales_invoice() {
-
+ var is_saved = 0;
+ if(!this.frm.doc.__islocal){
+ is_saved = 1;
+ }
frappe.confirm(__("Permanently Submit {0}?", [this.frm.doc.name]), () => {
frappe.call({
method: 'erpnext.selling.page.point_of_sale.point_of_sale.submit_invoice',
freeze: true,
args: {
- doc: this.frm.doc
+ doc: this.frm.doc,
+ is_saved: is_saved
}
}).then(r => {
if(r.message) {
@@ -499,19 +504,26 @@
}
set_form_action() {
- if(this.frm.doc.docstatus !== 1) return;
+ if(this.frm.doc.docstatus == 1 || (this.frm.doc.allow_print_before_pay == 1&&this.frm.doc.items.length>0)){
+ this.page.set_secondary_action(__("Print"), async() => {
+ if(this.frm.doc.docstatus != 1 ){
+ await this.frm.save();
+ }
+ this.frm.print_preview.printit(true);
+ });
+ }
+ if(this.frm.doc.items.length == 0){
+ this.page.clear_secondary_action();
+ }
- this.page.set_secondary_action(__("Print"), () => {
- this.frm.print_preview.printit(true);
- });
-
- this.page.set_primary_action(__("New"), () => {
- this.make_new_invoice();
- });
-
- this.page.add_menu_item(__("Email"), () => {
- this.frm.email_doc();
- });
+ if (this.frm.doc.docstatus == 1) {
+ this.page.set_primary_action(__("New"), () => {
+ this.make_new_invoice();
+ });
+ this.page.add_menu_item(__("Email"), () => {
+ this.frm.email_doc();
+ });
+ }
}
};
diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py
index d98a017..4a5637d 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.py
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.py
@@ -88,11 +88,15 @@
return '%%%s%%'%(frappe.db.escape(item_code)), condition
@frappe.whitelist()
-def submit_invoice(doc):
+def submit_invoice(doc,is_saved):
if isinstance(doc, basestring):
args = json.loads(doc)
- doc = frappe.new_doc('Sales Invoice')
+ if(int(is_saved) == 1):
+ doc = frappe.get_doc('Sales Invoice',args["name"])
+ else:
+ doc = frappe.new_doc('Sales Invoice')
+
doc.update(args)
doc.run_method("set_missing_values")
doc.run_method("calculate_taxes_and_totals")
@@ -123,4 +127,4 @@
return frappe.db.sql(""" select distinct name from `tabItem Group`
where {condition} and (name like %(txt)s) limit {start}, {page_len}"""
.format(condition = cond, start=start, page_len= page_len),
- {'txt': '%%%s%%' % txt})
+ {'txt': '%%%s%%' % txt})
\ No newline at end of file
diff --git a/erpnext/selling/page/point_of_sale/tests/test_point_of_sale.js b/erpnext/selling/page/point_of_sale/tests/test_point_of_sale.js
index 79d1700..5272220 100644
--- a/erpnext/selling/page/point_of_sale/tests/test_point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/tests/test_point_of_sale.js
@@ -13,6 +13,9 @@
() => frappe.timeout(0.2),
() => frappe.click_element(`.cart-items [data-item-code="Test Product 2"]`),
() => frappe.timeout(0.2),
+ // () => frappe.click_element(`.btn-secondary`),
+ // () => frappe.timeout(0.4),
+ // () => assert.ok(!cur_frm.doc.__islocal, "Sales invoice saved"),
() => frappe.click_element(`.number-pad [data-value="Rate"]`),
() => frappe.timeout(0.2),
() => frappe.click_element(`.number-pad [data-value="2"]`),