From e4e69ec0274ea61dffa9d9dab4fb311c6e303ecd Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 17 Aug 2016 16:20:13 +0530 Subject: [PATCH] changed field name, validation for change amount account, validation for serial no qty --- .../doctype/pos_profile/pos_profile.json | 6 ++-- .../doctype/sales_invoice/sales_invoice.js | 10 +++---- .../doctype/sales_invoice/sales_invoice.json | 6 ++-- .../doctype/sales_invoice/sales_invoice.py | 18 +++++++----- .../sales_invoice/test_sales_invoice.py | 2 +- erpnext/accounts/page/pos/pos.js | 28 ++++++++++++++----- erpnext/public/css/erpnext.css | 9 +++++- 7 files changed, 52 insertions(+), 27 deletions(-) diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json index 0ab48e283f8..01a87c42e7e 100644 --- a/erpnext/accounts/doctype/pos_profile/pos_profile.json +++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json @@ -720,14 +720,14 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "fieldname": "change_amount_account", + "fieldname": "account_for_change_amount", "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Change Amount Account", + "label": "Account for Change Amount", "length": 0, "no_copy": 0, "options": "Account", @@ -885,7 +885,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-08-09 02:36:07.316464", + "modified": "2016-08-17 15:12:56.713748", "modified_by": "Administrator", "module": "Accounts", "name": "POS Profile", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 11918711347..3245e78e139 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -270,13 +270,13 @@ erpnext.accounts.SalesInvoiceController = erpnext.selling.SellingController.exte }, change_amount: function(){ - if((this.frm.doc.paid_amount - this.frm.doc.grand_total) < this.frm.doc.change_amount){ - this.frm.set_value("change_amount", 0.0) - frappe.msgprint(__("You can not return change amount, limit has been exceeded")) - }else{ + if(this.frm.doc.paid_amount > this.frm.doc.grand_total){ this.calculate_write_off_amount() - this.frm.refresh_fields(); + }else { + this.frm.set_value("change_amount", 0.0) } + + this.frm.refresh_fields(); } }); diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index df7f89ed69c..a2e930c820d 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -2356,14 +2356,14 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, - "fieldname": "change_amount_account", + "fieldname": "account_for_change_amount", "fieldtype": "Link", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Change Amount Account", + "label": "Account for Change Amount", "length": 0, "no_copy": 0, "options": "Account", @@ -3751,7 +3751,7 @@ "istable": 0, "max_attachments": 0, "menu_index": 0, - "modified": "2016-08-04 05:08:15.008493", + "modified": "2016-08-17 15:12:39.357372", "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 cdf9bd8029d..871a1512e05 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -61,6 +61,7 @@ class SalesInvoice(SellingController): self.clear_unallocated_advances("Sales Invoice Advance", "advances") self.add_remarks() self.validate_write_off_account() + self.validate_account_for_change_amount() self.validate_fixed_asset() self.set_income_account_for_fixed_assets() @@ -237,8 +238,8 @@ class SalesInvoice(SellingController): pos_profile = frappe.get_doc('POS Profile', pos.name) if pos else None update_multi_mode_option(self, pos_profile) - if not self.change_amount_account: - self.change_amount_account = frappe.db.get_value('Company', self.company, 'default_cash_account') + if not self.account_for_change_amount: + self.account_for_change_amount = frappe.db.get_value('Company', self.company, 'default_cash_account') if pos: if not for_validate and not self.customer: @@ -246,8 +247,8 @@ class SalesInvoice(SellingController): self.mode_of_payment = pos.mode_of_payment # self.set_customer_defaults() - if not self.change_amount_account: - self.change_amount_account = pos.get('change_amount_account') + if pos.get('account_for_change_amount'): + self.account_for_change_amount = pos.get('account_for_change_amount') for fieldname in ('territory', 'naming_series', 'currency', 'taxes_and_charges', 'letter_head', 'tc_name', 'selling_price_list', 'company', 'select_print_heading', 'cash_bank_account', @@ -385,6 +386,9 @@ class SalesInvoice(SellingController): if flt(self.write_off_amount) and not self.write_off_account: msgprint(_("Please enter Write Off Account"), raise_exception=1) + def validate_account_for_change_amount(self): + if flt(self.change_amount) and not self.account_for_change_amount: + msgprint(_("Please enter Account for Change Amount"), raise_exception=1) def validate_c_form(self): """ Blank C-form no if C-form applicable marked as 'No'""" @@ -614,13 +618,13 @@ class SalesInvoice(SellingController): def make_gle_for_change_amount(self, gl_entries): if cint(self.is_pos) and self.change_amount: - if self.change_amount_account: + if self.account_for_change_amount: gl_entries.append( self.get_gl_dict({ "account": self.debit_to, "party_type": "Customer", "party": self.customer, - "against": self.change_amount_account, + "against": self.account_for_change_amount, "debit": flt(self.base_change_amount), "debit_in_account_currency": flt(self.base_change_amount) \ if self.party_account_currency==self.company_currency else flt(self.change_amount), @@ -631,7 +635,7 @@ class SalesInvoice(SellingController): gl_entries.append( self.get_gl_dict({ - "account": self.change_amount_account, + "account": self.account_for_change_amount, "against": self.customer, "credit": self.base_change_amount }) diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py index db129de6bc8..1bb7b1c2aca 100644 --- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -455,7 +455,7 @@ class TestSalesInvoice(unittest.TestCase): self.pos_gl_entry(si, pos, 300) - def test_pos_chnage_amount(self): + def test_pos_change_amount(self): set_perpetual_inventory() self.make_pos_profile() diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js index fd76d510b53..850564cbfb2 100644 --- a/erpnext/accounts/page/pos/pos.js +++ b/erpnext/accounts/page/pos/pos.js @@ -188,8 +188,8 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ this.frm.doc.write_off_account = doc.write_off_account } - if(!this.frm.doc.change_amount_account){ - this.frm.doc.change_amount_account = doc.change_amount_account + if(!this.frm.doc.account_for_change_amount){ + this.frm.doc.account_for_change_amount = doc.account_for_change_amount } }, @@ -486,11 +486,8 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ this.remove_item = [] $.each(this.frm.doc["items"] || [], function(i, d) { - if (d.item_code == item_code && d.serial_no - && field == 'qty' && cint(value) != value) { - d.qty = 0.0; - me.refresh(); - frappe.throw(__("Serial no item cannot be a fraction")) + if(d.serial_no){ + me.validate_serial_no_qty(d, item_code, field, value) } if (d.item_code == item_code) { @@ -907,6 +904,23 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ } }, + validate_serial_no_qty: function(args, item_code, field, value){ + var me = this; + if (args.item_code == item_code && args.serial_no + && field == 'qty' && cint(value) != value) { + args.qty = 0.0; + this.refresh(); + frappe.throw(__("Serial no item cannot be a fraction")) + } + + if(args.serial_no && args.serial_no.split('\n').length != cint(value)){ + args.qty = 0.0; + args.serial_no = '' + this.refresh(); + frappe.throw(__("Total nos of serial no is not equal to quantity.")) + } + }, + mandatory_batch_no: function(){ var me = this; if(this.items[0].has_batch_no && !this.item_batch_no[this.items[0].item_code]){ diff --git a/erpnext/public/css/erpnext.css b/erpnext/public/css/erpnext.css index b8d51c02bdd..475b44bbab4 100644 --- a/erpnext/public/css/erpnext.css +++ b/erpnext/public/css/erpnext.css @@ -137,12 +137,14 @@ font-size: 15px; } .pos-payment-row .col-xs-6 { - padding: 10px; + padding: 15px; } .pos-payment-row { border-bottom: 1px solid #d1d8dd; margin: 2px 0px 5px 0px; height: 60px; + margin-top: 0px; + margin-bottom: 0px; } .pos-payment-row:hover, .pos-keyboard-key:hover { @@ -202,3 +204,8 @@ body[data-route="pos"] .modal-dialog { .pos-invoice-list { padding: 15px 10px; } +.write_off_amount, +.change_amount { + margin: 15px; + width: 130px; +}