[fix] Price list not loaded from pos profile, auto set outstanding amount in the mode of payment
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index cb52627..25aff13 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -24,11 +24,11 @@
frappe.ui.form.on('POS Profile', {
setup: function(frm) {
- frm.set_query("online_print_format", function() {
+ frm.set_query("print_format_for_online", function() {
return {
filters: [
['Print Format', 'doc_type', '=', 'Sales Invoice'],
- ['Print Format', 'print_format_type', '!=', 'Js'],
+ ['Print Format', 'print_format_type', '=', 'Server'],
]
};
});
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index db9969d..83d5103 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -247,7 +247,7 @@
super(SalesInvoice, self).set_missing_values(for_validate)
if pos:
- return {"print_format": pos.get("print_format") }
+ return {"print_format": pos.get("print_format_for_online") }
def update_time_sheet(self, sales_invoice):
for d in self.timesheets:
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 b167bcd..0a70bb9 100644
--- a/erpnext/selling/page/point_of_sale/point_of_sale.js
+++ b/erpnext/selling/page/point_of_sale/point_of_sale.js
@@ -53,8 +53,6 @@
() => this.setup_pos_profile(),
() => this.make_new_invoice(),
() => {
- frappe.timeout(1);
- this.make_items();
this.bind_events();
frappe.dom.unfreeze();
},
@@ -323,16 +321,20 @@
make_new_invoice() {
return frappe.run_serially([
- () => this.make_sales_invoice_frm(),
() => {
- if (this.cart) {
- this.cart.frm = this.frm;
- this.cart.reset();
- } else {
- this.make_cart();
- }
- this.toggle_editing(true);
- }
+ this.make_sales_invoice_frm()
+ .then(() => this.set_pos_profile_data())
+ .then(() => {
+ if (this.cart) {
+ this.cart.frm = this.frm;
+ this.cart.reset();
+ } else {
+ this.make_items();
+ this.make_cart();
+ }
+ this.toggle_editing(true);
+ })
+ },
]);
}
@@ -359,12 +361,29 @@
if(!frm.doc.company) {
frm.set_value('company', pos_profile.company);
}
- frm.set_value('is_pos', 1);
- frm.meta.default_print_format = 'POS Invoice';
+ frm.doc.is_pos = 1;
return frm;
}
}
+ set_pos_profile_data() {
+ return new Promise(resolve => {
+ return this.frm.call({
+ doc: this.frm.doc,
+ method: "set_missing_values",
+ }).then((r) => {
+ if(!r.exc) {
+ this.frm.script_manager.trigger("update_stock");
+ frappe.model.set_default_values(this.frm.doc);
+ this.frm.cscript.calculate_taxes_and_totals();
+ this.frm.meta.default_print_format = r.message.print_format || 'POS Invoice';
+ }
+
+ resolve();
+ })
+ })
+ }
+
prepare_menu() {
var me = this;
this.page.clear_menu();
@@ -392,9 +411,6 @@
if(this.frm.doc.docstatus !== 1) return;
this.page.set_secondary_action(__("Print"), () => {
- if (this.pos_profile && this.pos_profile.print_format_for_online) {
- this.frm.meta.default_print_format = this.pos_profile.print_format_for_online;
- }
this.frm.print_preview.printit(true);
});
@@ -1264,6 +1280,16 @@
$(this.dialog.body).find('.input-with-feedback').focusin(function() {
me.numpad.reset_value();
me.fieldname = $(this).prop('dataset').fieldname;
+ if (me.frm.doc.outstanding_amount > 0 &&
+ !in_list(['write_off_amount', 'change_amount'], me.fieldname)) {
+ me.frm.doc.payments.forEach((data) => {
+ if (data.mode_of_payment == me.fieldname && !data.amount) {
+ me.dialog.set_value(me.fieldname,
+ me.frm.doc.outstanding_amount / me.frm.doc.conversion_rate);
+ return;
+ }
+ })
+ }
});
}
@@ -1403,4 +1429,4 @@
this.dialog.set_value("paid_amount", this.frm.doc.paid_amount);
this.dialog.set_value("outstanding_amount", this.frm.doc.outstanding_amount);
}
-}
+}
\ No newline at end of file