From b77a1057ce8f09ef5e2e01cf54a67fb0578359d2 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 1 Aug 2016 18:35:18 +0530 Subject: [PATCH] fixes and cleanups. --- erpnext/accounts/doctype/sales_invoice/pos.py | 21 ++++++++++++------- erpnext/accounts/page/pos/pos.js | 2 ++ .../request_for_quotation.js | 2 +- .../request_for_quotation.json | 5 +++-- .../projects/doctype/timesheet/timesheet.js | 8 ++++--- .../projects/doctype/timesheet/timesheet.json | 4 ++-- .../projects/doctype/timesheet/timesheet.py | 9 +------- .../timesheet_detail/timesheet_detail.json | 6 +++--- 8 files changed, 31 insertions(+), 26 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py index 9f64e075d63..9643764ab92 100644 --- a/erpnext/accounts/doctype/sales_invoice/pos.py +++ b/erpnext/accounts/doctype/sales_invoice/pos.py @@ -108,13 +108,14 @@ def get_items(doc, pos_profile): item.price_list_rate = frappe.db.get_value('Item Price', {'item_code': item.name, 'price_list': doc.selling_price_list}, 'price_list_rate') or 0 - item.default_warehouse = pos_profile.get('warehouse') or item.default_warehouse or None + item.default_warehouse = pos_profile.get('warehouse') or \ + get_item_warehouse_for_company(doc.company, item.default_warehouse) or None item.expense_account = pos_profile.get('expense_account') or item.expense_account item.income_account = pos_profile.get('income_account') or item_doc.income_account item.cost_center = pos_profile.get('cost_center') or item_doc.selling_cost_center item.actual_qty = frappe.db.get_value('Bin', {'item_code': item.name, 'warehouse': item.default_warehouse}, 'actual_qty') or 0 - item.serial_nos = get_serial_nos(item, pos_profile) + item.serial_nos = get_serial_nos(item, pos_profile, doc.company) item.batch_nos = frappe.db.sql_list("""select name from `tabBatch` where ifnull(expiry_date, '4000-10-10') > curdate() and item = %(item_code)s""", {'item_code': item.item_code}) @@ -122,13 +123,19 @@ def get_items(doc, pos_profile): return item_list -def get_serial_nos(item, pos_profile): +def get_item_warehouse_for_company(company, warehouse): + if frappe.db.get_value('Warehouse', warehouse, 'company') != company: + warehouse = None + return warehouse + +def get_serial_nos(item, pos_profile, company): cond = "1=1" if pos_profile.get('update_stock') and pos_profile.get('warehouse'): cond = "warehouse = '{0}'".format(pos_profile.get('warehouse')) serial_nos = frappe.db.sql("""select name, warehouse from `tabSerial No` where {0} - and item_code = %(item_code)s""".format(cond), {'item_code': item.item_code}, as_dict=1) + and item_code = %(item_code)s and company = %(company)s + """.format(cond), {'item_code': item.item_code, 'company': company}, as_dict=1) serial_no_list = {} for serial_no in serial_nos: @@ -214,9 +221,9 @@ def submit_invoice(si_doc, name): save_invoice(e, si_doc, name) def save_invoice(e, si_doc, name): - si_doc.docstatus = 0 - si_doc.name = '' - si_doc.save(ignore_permissions=True) + if not frappe.db.exists('Sales Invoice', {'offline_pos_name': name}): + si_doc.flags.ignore_mandatory = True + si_doc.insert() make_scheduler_log(e, si_doc.name) def make_scheduler_log(e, sales_invoice): diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js index 183010387ce..8444dbe91f7 100644 --- a/erpnext/accounts/page/pos/pos.js +++ b/erpnext/accounts/page/pos/pos.js @@ -177,6 +177,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ doc = JSON.parse(localStorage.getItem('doc')) if(this.frm.doc.payments.length == 0){ this.frm.doc.payments = doc.payments; + this.calculate_outstanding_amount(); } if(this.frm.doc.customer){ @@ -869,6 +870,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({ for(key in data){ if(data[key].docstatus == 1 && index < 50){ index++ + data[key].docstatus = 0; return data } } diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js index 5eafb81a0e7..d126eb091e9 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js @@ -30,7 +30,7 @@ frappe.ui.form.on("Request for Quotation",{ }, onload: function(frm) { - frm.add_fetch('standard_reply', 'response', 'response'); + frm.add_fetch('standard_reply', 'response', 'message_for_supplier'); if(!frm.doc.message_for_supplier) { frm.set_value("message_for_supplier", __("Please supply the specified items at the best possible rates")) diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json index 2ce5c5c7bea..e48e1dc506b 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json @@ -9,6 +9,7 @@ "docstatus": 0, "doctype": "DocType", "document_type": "Document", + "editable_grid": 0, "fields": [ { "allow_on_submit": 0, @@ -296,7 +297,7 @@ "options": "Standard Reply", "permlevel": 0, "precision": "", - "print_hide": 0, + "print_hide": 1, "print_hide_if_no_value": 0, "read_only": 0, "report_hide": 0, @@ -638,7 +639,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-06-30 01:57:49.233065", + "modified": "2016-08-01 08:45:39.777405", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation", diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/erpnext/projects/doctype/timesheet/timesheet.js index e2e6459b0a1..a780ab4f471 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.js +++ b/erpnext/projects/doctype/timesheet/timesheet.js @@ -6,15 +6,17 @@ frappe.ui.form.on("Timesheet", { setup: function(frm) { frm.get_field('time_logs').grid.editable_fields = [ {fieldname: 'billable', columns: 1}, + {fieldname: 'project', columns: 3}, {fieldname: 'activity_type', columns: 2}, {fieldname: 'from_time', columns: 3}, - {fieldname: 'hours', columns: 1}, - {fieldname: 'project', columns: 3} + {fieldname: 'hours', columns: 1} ]; frm.fields_dict.employee.get_query = function() { return { - query:"erpnext.projects.doctype.timesheet.timesheet.get_employee_list" + filters:{ + 'status': 'Active' + } } } diff --git a/erpnext/projects/doctype/timesheet/timesheet.json b/erpnext/projects/doctype/timesheet/timesheet.json index c035cd3a165..16d71d8c24c 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.json +++ b/erpnext/projects/doctype/timesheet/timesheet.json @@ -1,6 +1,6 @@ { "allow_copy": 0, - "allow_import": 0, + "allow_import": 1, "allow_rename": 0, "autoname": "naming_series:", "beta": 0, @@ -662,7 +662,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-07-26 00:01:56.055046", + "modified": "2016-08-01 08:54:31.840829", "modified_by": "Administrator", "module": "Projects", "name": "Timesheet", diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py index a1b757c4bc8..abcffad1c75 100644 --- a/erpnext/projects/doctype/timesheet/timesheet.py +++ b/erpnext/projects/doctype/timesheet/timesheet.py @@ -94,7 +94,7 @@ class Timesheet(Document): if self.production_order and flt(data.completed_qty) == 0: frappe.throw(_("Row {0}: Completed Qty must be greater than zero.").format(data.idx)) - if self.production_order and flt(pending_qty) < flt(data.completed_qty): + if self.production_order and flt(pending_qty) < flt(data.completed_qty) and flt(pending_qty) > 0: frappe.throw(_("Row {0}: Completed Qty cannot be more than {1} for operation {2}").format(data.idx, pending_qty, data.operation), OverProductionLoggedError) @@ -290,10 +290,3 @@ def get_activity_cost(employee=None, activity_type=None): ["costing_rate", "billing_rate"], as_dict=True) return rate[0] if rate else {} - -@frappe.whitelist() -def get_employee_list(doctype, txt, searchfield, start, page_len, filters): - return frappe.db.sql("""select distinct employee, employee_name - from `tabSalary Structure` where salary_slip_based_on_timesheet=1 - and employee like %(txt)s or employee_name like %(txt)s limit %(start)s, %(page_len)s""", - {'txt': "%%%s%%"% txt, 'start': start, 'page_len': page_len}) diff --git a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json b/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json index 7604ded6ed3..f847e64ae51 100644 --- a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json +++ b/erpnext/projects/doctype/timesheet_detail/timesheet_detail.json @@ -22,7 +22,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Billable", + "label": "Bill", "length": 0, "no_copy": 0, "permlevel": 0, @@ -121,7 +121,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_list_view": 0, - "label": "Hours", + "label": "Hrs", "length": 0, "no_copy": 0, "permlevel": 0, @@ -532,7 +532,7 @@ "issingle": 0, "istable": 1, "max_attachments": 0, - "modified": "2016-07-26 00:07:58.267131", + "modified": "2016-08-06 03:14:31.691605", "modified_by": "Administrator", "module": "Projects", "name": "Timesheet Detail",