From 52f7b6daf86ba5d2f2c5c45cdad54ca830fbad1c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 May 2013 12:24:27 +0530 Subject: [PATCH 01/11] [report] purchase in transit in new style --- buying/page/buying_home/buying_home.js | 4 ++++ stock/page/stock_home/stock_home.js | 4 ++++ stock/report/purchase_in_transit/__init__.py | 0 .../purchase_in_transit.txt | 22 +++++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 stock/report/purchase_in_transit/__init__.py create mode 100644 stock/report/purchase_in_transit/purchase_in_transit.txt diff --git a/buying/page/buying_home/buying_home.js b/buying/page/buying_home/buying_home.js index 56328cc574..e7532dda2e 100644 --- a/buying/page/buying_home/buying_home.js +++ b/buying/page/buying_home/buying_home.js @@ -107,6 +107,10 @@ wn.module_page["Buying"] = [ "label":wn._("Item-wise Purchase History"), route: "query-report/Item-wise Purchase History", }, + { + "label":wn._("Purchase In Transit"), + route: "query-report/Purchase In Transit", + }, ] } ] diff --git a/stock/page/stock_home/stock_home.js b/stock/page/stock_home/stock_home.js index db77fced0e..bfcaf8acc1 100644 --- a/stock/page/stock_home/stock_home.js +++ b/stock/page/stock_home/stock_home.js @@ -197,6 +197,10 @@ wn.module_page["Stock"] = [ route: "query-report/Item-Wise Price List", doctype: "Item" }, + { + "label":wn._("Purchase In Transit"), + route: "query-report/Purchase In Transit", + }, ] } ] diff --git a/stock/report/purchase_in_transit/__init__.py b/stock/report/purchase_in_transit/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/stock/report/purchase_in_transit/purchase_in_transit.txt b/stock/report/purchase_in_transit/purchase_in_transit.txt new file mode 100644 index 0000000000..60ce0da460 --- /dev/null +++ b/stock/report/purchase_in_transit/purchase_in_transit.txt @@ -0,0 +1,22 @@ +[ + { + "creation": "2013-05-06 12:09:05", + "docstatus": 0, + "modified": "2013-05-06 12:22:52", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doctype": "Report", + "is_standard": "Yes", + "name": "__common__", + "query": "SELECT\n pi.name as \"Purchase Invoice:Link/Purchase Invoice:120\",\n\tpi.posting_date as \"Posting Date:Date:100\",\n\tpi.credit_to as \"Supplier Account:Link/Account:120\",\n\tpi_item.item_code as \"Item Code:Link/Item:120\",\n\tpi_item.description as \"Description:Data:140\",\n\tpi_item.qty as \"Qty:Float:120\",\n\tpi_item.amount as \"Amount:Currency:120\",\n\tpi_item.purchase_order as \"Purchase Order:Link/Purchase Order:120\",\n\tpi_item.purchase_receipt as \"Purchase Receipt:Link/Purchase Receipt:120\",\n\tpr.posting_date as \"PR Posting Date:Date:130\",\n\tpi.company as \"Company:Link/Company:120\"\nFROM\n\t`tabPurchase Invoice` pi, `tabPurchase Invoice Item` pi_item, `tabPurchase Receipt` pr\nWHERE\n\tpi.name = pi_item.parent and pi_item.purchase_receipt = pr.name\n\tand pi.docstatus = 1 and pr.posting_date > pi.posting_date\nORDER BY\n\tpi.name desc", + "ref_doctype": "Purchase Receipt", + "report_name": "Purchase In Transit", + "report_type": "Query Report" + }, + { + "doctype": "Report", + "name": "Purchase In Transit" + } +] \ No newline at end of file From a55723bea28ea040101a8ebe3ff3420d916627b2 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 May 2013 12:46:07 +0530 Subject: [PATCH 02/11] [report] sales partners commission --- accounts/page/accounts_home/accounts_home.js | 5 +++++ .../sales_partners_commission/__init__.py | 0 .../sales_partners_commission.txt | 22 +++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 accounts/report/sales_partners_commission/__init__.py create mode 100644 accounts/report/sales_partners_commission/sales_partners_commission.txt diff --git a/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js index d2b0a0ea0d..c3d4cf18ce 100644 --- a/accounts/page/accounts_home/accounts_home.js +++ b/accounts/page/accounts_home/accounts_home.js @@ -217,6 +217,11 @@ wn.module_page["Accounts"] = [ route: "query-report/Payment Made With Ageing", doctype: "Journal Voucher" }, + { + "label":wn._("Sales Partners Commission"), + route: "query-report/Sales Partners Commission", + doctype: "Sales Invoice" + }, ] } ] diff --git a/accounts/report/sales_partners_commission/__init__.py b/accounts/report/sales_partners_commission/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/accounts/report/sales_partners_commission/sales_partners_commission.txt b/accounts/report/sales_partners_commission/sales_partners_commission.txt new file mode 100644 index 0000000000..52bbf3c751 --- /dev/null +++ b/accounts/report/sales_partners_commission/sales_partners_commission.txt @@ -0,0 +1,22 @@ +[ + { + "creation": "2013-05-06 12:28:23", + "docstatus": 0, + "modified": "2013-05-06 12:41:15", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doctype": "Report", + "is_standard": "Yes", + "name": "__common__", + "query": "SELECT\n sales_partner as \"Sales Partner:Link/Sales Partner:150\",\n\tsum(net_total) as \"Invoiced Amount (Exculsive Tax):Currency:210\",\n\tsum(total_commission) as \"Total Commission:Currency:150\",\n\tsum(total_commission)*100/sum(net_total) as \"Average Commission Rate:Currency:170\"\nFROM\n\t`tabSales Invoice`\nWHERE\n\tdocstatus = 1 and ifnull(net_total, 0) > 0 and ifnull(total_commission, 0) > 0\nGROUP BY\n\tsales_partner\nORDER BY\n\t\"Total Commission:Currency:120\"", + "ref_doctype": "Sales Invoice", + "report_name": "Sales Partners Commission", + "report_type": "Query Report" + }, + { + "doctype": "Report", + "name": "Sales Partners Commission" + } +] \ No newline at end of file From 6d309f727f45eef02156bf63f5ec9e64289f6f8b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 May 2013 14:34:33 +0530 Subject: [PATCH 03/11] [report] maintenance schedules --- support/page/support_home/support_home.js | 12 ++++++++++ support/report/__init__.py | 0 .../report/maintenance_schedules/__init__.py | 0 .../maintenance_schedules.txt | 22 +++++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 support/report/__init__.py create mode 100644 support/report/maintenance_schedules/__init__.py create mode 100644 support/report/maintenance_schedules/maintenance_schedules.txt diff --git a/support/page/support_home/support_home.js b/support/page/support_home/support_home.js index d397daa6ce..bde5e5c00a 100644 --- a/support/page/support_home/support_home.js +++ b/support/page/support_home/support_home.js @@ -72,6 +72,18 @@ wn.module_page["Support"] = [ }, ] }, + { + title: wn._("Reports"), + right: true, + icon: "icon-list", + items: [ + { + "label":wn._("Maintenance Schedules"), + route: "query-report/Maintenance Schedules", + doctype: "Maintenance Schedule" + } + ] + } ] pscript['onload_support-home'] = function(wrapper) { diff --git a/support/report/__init__.py b/support/report/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/support/report/maintenance_schedules/__init__.py b/support/report/maintenance_schedules/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/support/report/maintenance_schedules/maintenance_schedules.txt b/support/report/maintenance_schedules/maintenance_schedules.txt new file mode 100644 index 0000000000..525f4834ba --- /dev/null +++ b/support/report/maintenance_schedules/maintenance_schedules.txt @@ -0,0 +1,22 @@ +[ + { + "creation": "2013-05-06 14:25:21", + "docstatus": 0, + "modified": "2013-05-06 14:32:47", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doctype": "Report", + "is_standard": "Yes", + "name": "__common__", + "query": "SELECT\n ms_item.scheduled_date as \"Schedule Date:Date:120\",\n\tms_item.item_code as \"Item Code:Link/Item:120\",\n\tms_item.item_name as \"Item Name::120\",\n\tms_item.serial_no as \"Serial No::120\",\n\tms_item.incharge_name as \"Incharge::120\",\n\tms.customer_name as \"Customer:Link/Customer:120\",\n\tms.address_display as \"Customer Address::120\",\n\tms.sales_order_no as \"Sales Order:Link/Sales Order:120\",\n\tms.company as \"Company:Link/Company:120\"\n\t\nFROM\n\t`tabMaintenance Schedule` ms, `tabMaintenance Schedule Detail` ms_item\nWHERE\n\tms.name = ms_item.parent and ms.docstatus = 1\nORDER BY\n\tms_item.scheduled_date asc, ms_item.item_code asc", + "ref_doctype": "Maintenance Schedule", + "report_name": "Maintenance Schedules", + "report_type": "Query Report" + }, + { + "doctype": "Report", + "name": "Maintenance Schedules" + } +] \ No newline at end of file From 15697ed93716c97b10699601ca8d7f571d7982be Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 May 2013 17:01:19 +0530 Subject: [PATCH 04/11] [fixes] hour_rate fetching in bom --- manufacturing/doctype/bom/bom.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manufacturing/doctype/bom/bom.js b/manufacturing/doctype/bom/bom.js index f0c15fa2a9..b1f43f7620 100644 --- a/manufacturing/doctype/bom/bom.js +++ b/manufacturing/doctype/bom/bom.js @@ -64,9 +64,9 @@ cur_frm.add_fetch("item", "stock_uom", "uom"); cur_frm.cscript.workstation = function(doc,dt,dn) { var d = locals[dt][dn]; - wn.model.with_doc("Workstation", d.workstation, function(i, v) { - d.hour_rate = v.hour_rate; - refresh_field("hour_rate"); + wn.model.with_doc("Workstation", d.workstation, function(i, r) { + d.hour_rate = r.docs[0].hour_rate; + refresh_field("hour_rate", dn, "bom_operations"); calculate_op_cost(doc); calculate_total(doc); }); From 35e7e8f58f9ff5e389f2058d92bd52d93b4f011b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 May 2013 18:37:57 +0530 Subject: [PATCH 05/11] [report] employee birthday --- hr/page/hr_home/hr_home.js | 4 ++ hr/report/employee_birthday/__init__.py | 0 .../employee_birthday/employee_birthday.js | 19 +++++++ .../employee_birthday/employee_birthday.py | 50 +++++++++++++++++++ .../employee_birthday/employee_birthday.txt | 21 ++++++++ 5 files changed, 94 insertions(+) create mode 100644 hr/report/employee_birthday/__init__.py create mode 100644 hr/report/employee_birthday/employee_birthday.js create mode 100644 hr/report/employee_birthday/employee_birthday.py create mode 100644 hr/report/employee_birthday/employee_birthday.txt diff --git a/hr/page/hr_home/hr_home.js b/hr/page/hr_home/hr_home.js index df3264501a..1e0e5bc28f 100644 --- a/hr/page/hr_home/hr_home.js +++ b/hr/page/hr_home/hr_home.js @@ -169,6 +169,10 @@ wn.module_page["HR"] = [ "label":wn._("Employee Leave Balance"), route: "query-report/Employee Leave Balance" }, + { + "label":wn._("Employee Birthday"), + route: "query-report/Employee Birthday" + }, ] } ]; diff --git a/hr/report/employee_birthday/__init__.py b/hr/report/employee_birthday/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/hr/report/employee_birthday/employee_birthday.js b/hr/report/employee_birthday/employee_birthday.js new file mode 100644 index 0000000000..f2bc9cbe56 --- /dev/null +++ b/hr/report/employee_birthday/employee_birthday.js @@ -0,0 +1,19 @@ +wn.query_reports["Employee Birthday"] = { + "filters": [ + { + "fieldname":"month", + "label": "Month", + "fieldtype": "Select", + "options": "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug\nSep\nOct\nNov\nDec", + "default": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", + "Dec"][wn.datetime.str_to_obj(wn.datetime.get_today()).getMonth()], + }, + { + "fieldname":"company", + "label": "Company", + "fieldtype": "Link", + "options": "Company", + "default": wn.defaults.get_user_default("company") + } + ] +} \ No newline at end of file diff --git a/hr/report/employee_birthday/employee_birthday.py b/hr/report/employee_birthday/employee_birthday.py new file mode 100644 index 0000000000..7268055b72 --- /dev/null +++ b/hr/report/employee_birthday/employee_birthday.py @@ -0,0 +1,50 @@ +# ERPNext - web based ERP (http://erpnext.com) +# Copyright (C) 2012 Web Notes Technologies Pvt Ltd +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from __future__ import unicode_literals +import webnotes +from webnotes.utils import flt + +def execute(filters=None): + if not filters: filters = {} + + columns = get_columns() + data = get_employees(filters) + + return columns, data + +def get_columns(): + return [ + "Employee:Link/Employee:120", "Date of Birth:Date:100", "Branch:Link/Branch:120", + "Department:Link/Department:120", "Designation:Link/Designation:120", "Gender::60", + "Company:Link/Company:120" + ] + +def get_employees(filters): + conditions = get_conditions(filters) + return webnotes.conn.sql("""select name, date_of_birth, branch, department, designation, + gender, company from tabEmployee where status = 'Active' %s""" % conditions, as_list=1) + +def get_conditions(filters): + conditions = "" + if filters.get("month"): + month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", + "Dec"].index(filters["month"]) + 1 + conditions += " and month(date_of_birth) = '%s'" % month + + if filters.get("company"): conditions += " and company = '%s'" % filters["company"] + + return conditions \ No newline at end of file diff --git a/hr/report/employee_birthday/employee_birthday.txt b/hr/report/employee_birthday/employee_birthday.txt new file mode 100644 index 0000000000..575ae73352 --- /dev/null +++ b/hr/report/employee_birthday/employee_birthday.txt @@ -0,0 +1,21 @@ +[ + { + "creation": "2013-05-06 17:56:03", + "docstatus": 0, + "modified": "2013-05-06 17:56:03", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doctype": "Report", + "is_standard": "Yes", + "name": "__common__", + "ref_doctype": "Employee", + "report_name": "Employee Birthday", + "report_type": "Script Report" + }, + { + "doctype": "Report", + "name": "Employee Birthday" + } +] \ No newline at end of file From 6754dda4a89a469c5f693e0ca5340cc1cd8c21ed Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Mon, 6 May 2013 18:50:29 +0530 Subject: [PATCH 06/11] [report] employee information --- hr/page/hr_home/hr_home.js | 4 ++++ hr/report/employee_information/__init__.py | 0 .../employee_information.txt | 22 +++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 hr/report/employee_information/__init__.py create mode 100644 hr/report/employee_information/employee_information.txt diff --git a/hr/page/hr_home/hr_home.js b/hr/page/hr_home/hr_home.js index 1e0e5bc28f..b2cce73f15 100644 --- a/hr/page/hr_home/hr_home.js +++ b/hr/page/hr_home/hr_home.js @@ -173,6 +173,10 @@ wn.module_page["HR"] = [ "label":wn._("Employee Birthday"), route: "query-report/Employee Birthday" }, + { + "label":wn._("Employee Information"), + route: "Report2/Employee/Employee Information" + }, ] } ]; diff --git a/hr/report/employee_information/__init__.py b/hr/report/employee_information/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/hr/report/employee_information/employee_information.txt b/hr/report/employee_information/employee_information.txt new file mode 100644 index 0000000000..b9d190b029 --- /dev/null +++ b/hr/report/employee_information/employee_information.txt @@ -0,0 +1,22 @@ +[ + { + "creation": "2013-05-06 18:43:53", + "docstatus": 0, + "modified": "2013-05-06 18:47:43", + "modified_by": "Administrator", + "owner": "Administrator" + }, + { + "doctype": "Report", + "is_standard": "Yes", + "json": "{\"filters\":[],\"columns\":[[\"name\",\"Employee\"],[\"employee_number\",\"Employee\"],[\"date_of_joining\",\"Employee\"],[\"branch\",\"Employee\"],[\"department\",\"Employee\"],[\"designation\",\"Employee\"],[\"gender\",\"Employee\"],[\"status\",\"Employee\"],[\"company\",\"Employee\"],[\"employment_type\",\"Employee\"],[\"grade\",\"Employee\"],[\"reports_to\",\"Employee\"],[\"company_email\",\"Employee\"]],\"sort_by\":\"Employee.bank_ac_no\",\"sort_order\":\"desc\",\"sort_by_next\":\"\",\"sort_order_next\":\"desc\"}", + "name": "__common__", + "ref_doctype": "Employee", + "report_name": "Employee Information", + "report_type": "Report Builder" + }, + { + "doctype": "Report", + "name": "Employee Information" + } +] \ No newline at end of file From c1b961932186a327d58e2f9fcab23e0d62fbd315 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 May 2013 11:16:20 +0530 Subject: [PATCH 07/11] [fixes] company for auto-material request --- stock/doctype/bin/bin.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/stock/doctype/bin/bin.py b/stock/doctype/bin/bin.py index be343129bf..2d98c2634f 100644 --- a/stock/doctype/bin/bin.py +++ b/stock/doctype/bin/bin.py @@ -79,7 +79,7 @@ class DocType: if (flt(args.get("actual_qty")) < 0 or flt(args.get("reserved_qty")) > 0) \ and args.get("is_cancelled") == 'No' and args.get("is_amended")=='No': - self.reorder_item(args.get("voucher_type"), args.get("voucher_no")) + self.reorder_item(args.get("voucher_type"), args.get("voucher_no"), args.get("company")) def get_first_sle(self): sle = sql(""" @@ -92,7 +92,7 @@ class DocType: """, (self.doc.item_code, self.doc.warehouse), as_dict=1) return sle and sle[0] or None - def reorder_item(self,doc_type,doc_name): + def reorder_item(self,doc_type,doc_name, company): """ Reorder item if stock reaches reorder level""" if not hasattr(webnotes, "auto_indent"): webnotes.auto_indent = webnotes.conn.get_value('Global Defaults', None, 'auto_indent') @@ -111,10 +111,10 @@ class DocType: material_request_type = "Purchase" if flt(reorder_qty) and flt(self.doc.projected_qty) < flt(reorder_level): - self.create_material_request(doc_type, doc_name, reorder_level, reorder_qty, - material_request_type) + self.create_material_request(doc_type, doc_name, reorder_level, reorder_qty, + company, material_request_type) - def create_material_request(self, doc_type, doc_name, reorder_level, reorder_qty, + def create_material_request(self, doc_type, doc_name, reorder_level, reorder_qty, company, material_request_type="Purchase"): """ Create indent on reaching reorder level """ defaults = webnotes.defaults.get_defaults() @@ -122,7 +122,7 @@ class DocType: mr = webnotes.bean([{ "doctype": "Material Request", - "company": defaults.company, + "company": company or defaults.company, "fiscal_year": defaults.fiscal_year, "transaction_date": nowdate(), "material_request_type": material_request_type, From 620576080a41f16522ed00306589c9ab20d1cfe1 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 May 2013 12:03:33 +0530 Subject: [PATCH 08/11] [fixes][currency symbol] fieldtype in report --- .../purchase_taxes_and_charges.txt | 23 ++++++++++++++----- .../item_wise_purchase_history.txt | 4 ++-- .../issued_items_against_production_order.txt | 4 ++-- .../item_wise_sales_history.txt | 4 ++-- .../sales_person_wise_transaction_summary.py | 4 ++-- .../item_wise_price_list.txt | 6 ++--- 6 files changed, 28 insertions(+), 17 deletions(-) diff --git a/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt b/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt index 576730779a..619aed1954 100644 --- a/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt +++ b/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-03-26 06:51:12", + "creation": "2013-04-19 11:00:06", "docstatus": 0, - "modified": "2013-04-17 14:05:19", + "modified": "2013-05-07 11:23:56", "modified_by": "Administrator", "owner": "Administrator" }, @@ -35,6 +35,7 @@ "oldfieldname": "category", "oldfieldtype": "Select", "options": "Valuation and Total\nValuation\nTotal", + "read_only": 0, "reqd": 1 }, { @@ -45,6 +46,7 @@ "oldfieldname": "charge_type", "oldfieldtype": "Select", "options": "\nActual\nOn Net Total\nOn Previous Row Amount\nOn Previous Row Total", + "read_only": 0, "reqd": 1 }, { @@ -55,6 +57,7 @@ "oldfieldname": "account_head", "oldfieldtype": "Link", "options": "Account", + "read_only": 0, "reqd": 1 }, { @@ -65,7 +68,8 @@ "label": "Cost Center", "oldfieldname": "cost_center", "oldfieldtype": "Link", - "options": "Cost Center" + "options": "Cost Center", + "read_only": 0 }, { "doctype": "DocField", @@ -75,17 +79,18 @@ "oldfieldname": "description", "oldfieldtype": "Small Text", "print_width": "300px", + "read_only": 0, "reqd": 1, "width": "300px" }, { "doctype": "DocField", "fieldname": "rate", - "fieldtype": "Currency", + "fieldtype": "Float", "label": "Rate", "oldfieldname": "rate", "oldfieldtype": "Currency", - "options": "Company:company:default_currency", + "read_only": 0, "reqd": 0 }, { @@ -96,6 +101,7 @@ "oldfieldname": "tax_amount", "oldfieldtype": "Currency", "options": "Company:company:default_currency", + "read_only": 0, "reqd": 0 }, { @@ -115,7 +121,8 @@ "hidden": 0, "label": "Enter Row", "oldfieldname": "row_id", - "oldfieldtype": "Data" + "oldfieldtype": "Data", + "read_only": 0 }, { "default": "Add", @@ -126,6 +133,7 @@ "oldfieldname": "add_deduct_tax", "oldfieldtype": "Select", "options": "Add\nDeduct", + "read_only": 0, "reqd": 1 }, { @@ -149,6 +157,7 @@ "oldfieldname": "parenttype", "oldfieldtype": "Data", "print_hide": 1, + "read_only": 0, "search_index": 0 }, { @@ -163,6 +172,7 @@ "oldfieldtype": "Currency", "options": "Company:company:default_currency", "print_hide": 1, + "read_only": 0, "report_hide": 1 }, { @@ -177,6 +187,7 @@ "oldfieldtype": "Currency", "options": "Company:company:default_currency", "print_hide": 1, + "read_only": 0, "report_hide": 1 } ] \ No newline at end of file diff --git a/buying/report/item_wise_purchase_history/item_wise_purchase_history.txt b/buying/report/item_wise_purchase_history/item_wise_purchase_history.txt index 3f9e702f5f..5d36d9445b 100644 --- a/buying/report/item_wise_purchase_history/item_wise_purchase_history.txt +++ b/buying/report/item_wise_purchase_history/item_wise_purchase_history.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-03 14:55:53", "docstatus": 0, - "modified": "2013-05-03 15:13:34", + "modified": "2013-05-07 11:20:09", "modified_by": "Administrator", "owner": "Administrator" }, @@ -11,7 +11,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select\n po_item.item_code as \"Item Code:Link/Item:120\",\n\tpo_item.item_name as \"Item Name::120\",\n\tpo_item.description as \"Description::150\",\n\tpo_item.qty as \"Qty:Currency:100\",\n\tpo_item.stock_uom as \"UOM:Link/UOM:80\",\n\tpo_item.purchase_rate as \"Rate:Currency:120\",\n\tpo_item.amount as \"Amount:Currency:120\",\n\tpo.name as \"Purchase Order:Link/Purchase Order:120\",\n\tpo.transaction_date as \"Transaction Date:Date:140\",\n\tpo.supplier as \"Supplier:Link/Supplier:130\",\n\tpo_item.project_name as \"Project:Link/Project:130\",\n\tifnull(po_item.received_qty, 0) as \"Received Qty:Currency:120\",\n\tifnull(po_item.billed_qty, 0) as \"Billed Qty:Currency:120\"\nfrom\n\t`tabPurchase Order` po, `tabPurchase Order Item` po_item\nwhere\n\tpo.name = po_item.parent and po.docstatus = 1\norder by po.name desc", + "query": "select\n po_item.item_code as \"Item Code:Link/Item:120\",\n\tpo_item.item_name as \"Item Name::120\",\n\tpo_item.description as \"Description::150\",\n\tpo_item.qty as \"Qty:Float:100\",\n\tpo_item.stock_uom as \"UOM:Link/UOM:80\",\n\tpo_item.purchase_rate as \"Rate:Currency:120\",\n\tpo_item.amount as \"Amount:Currency:120\",\n\tpo.name as \"Purchase Order:Link/Purchase Order:120\",\n\tpo.transaction_date as \"Transaction Date:Date:140\",\n\tpo.supplier as \"Supplier:Link/Supplier:130\",\n\tpo_item.project_name as \"Project:Link/Project:130\",\n\tifnull(po_item.received_qty, 0) as \"Received Qty:Float:120\",\n\tifnull(po_item.billed_qty, 0) as \"Billed Qty:Float:120\"\nfrom\n\t`tabPurchase Order` po, `tabPurchase Order Item` po_item\nwhere\n\tpo.name = po_item.parent and po.docstatus = 1\norder by po.name desc", "ref_doctype": "Purchase Order", "report_name": "Item-wise Purchase History", "report_type": "Query Report" diff --git a/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.txt b/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.txt index e00123d592..a5a03bfa00 100644 --- a/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.txt +++ b/manufacturing/report/issued_items_against_production_order/issued_items_against_production_order.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-03 17:48:46", "docstatus": 0, - "modified": "2013-05-03 18:24:05", + "modified": "2013-05-07 11:49:56", "modified_by": "Administrator", "owner": "Administrator" }, @@ -11,7 +11,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select\n ste.production_order as \"Production Order:Link/Production Order:120\",\n ste.posting_date as \"Issue Date:Date:140\",\n ste_item.item_code as \"Item Code:Link/Item:120\",\n\tste_item.description as \"Description::150\",\n\tste_item.transfer_qty as \"Qty:Currency:100\",\n\tste_item.stock_uom as \"UOM:Link/UOM:80\",\n\tste_item.amount as \"Amount:Currency:120\",\n\tste_item.serial_no as \"Serial No:Link/Serial No:80\",\n\tste_item.s_warehouse as \"Source Warehouse:Link/Warehouse:120\",\n\tste_item.t_warehouse as \"Target Warehouse:Link/Warehouse:120\",\n\tpro.production_item as \"Finished Goods:Link/Item:120\", \n\tste.name as \"Stock Entry:Link/Stock Entry:120\"\nfrom\n\t`tabStock Entry` ste, `tabStock Entry Detail` ste_item, `tabProduction Order` pro\nwhere\n\tifnull(ste.production_order, '') != '' and ste.name = ste_item.parent \n\tand ste.production_order = pro.name and ste.docstatus = 1 \n\tand ste.purpose = 'Manufacture/Repack'\norder by ste.posting_date, ste.production_order, ste_item.item_code", + "query": "select\n ste.production_order as \"Production Order:Link/Production Order:120\",\n ste.posting_date as \"Issue Date:Date:140\",\n ste_item.item_code as \"Item Code:Link/Item:120\",\n\tste_item.description as \"Description::150\",\n\tste_item.transfer_qty as \"Qty:Float:100\",\n\tste_item.stock_uom as \"UOM:Link/UOM:80\",\n\tste_item.amount as \"Amount:Currency:120\",\n\tste_item.serial_no as \"Serial No:Link/Serial No:80\",\n\tste_item.s_warehouse as \"Source Warehouse:Link/Warehouse:120\",\n\tste_item.t_warehouse as \"Target Warehouse:Link/Warehouse:120\",\n\tpro.production_item as \"Finished Goods:Link/Item:120\", \n\tste.name as \"Stock Entry:Link/Stock Entry:120\"\nfrom\n\t`tabStock Entry` ste, `tabStock Entry Detail` ste_item, `tabProduction Order` pro\nwhere\n\tifnull(ste.production_order, '') != '' and ste.name = ste_item.parent \n\tand ste.production_order = pro.name and ste.docstatus = 1 \n\tand ste.purpose = 'Manufacture/Repack'\norder by ste.posting_date, ste.production_order, ste_item.item_code", "ref_doctype": "Production Order", "report_name": "Issued Items Against Production Order", "report_type": "Query Report" diff --git a/selling/report/item_wise_sales_history/item_wise_sales_history.txt b/selling/report/item_wise_sales_history/item_wise_sales_history.txt index cf13bdc3ea..6fee050e0d 100644 --- a/selling/report/item_wise_sales_history/item_wise_sales_history.txt +++ b/selling/report/item_wise_sales_history/item_wise_sales_history.txt @@ -2,7 +2,7 @@ { "creation": "2013-05-03 14:38:34", "docstatus": 0, - "modified": "2013-05-03 15:15:11", + "modified": "2013-05-07 11:19:40", "modified_by": "Administrator", "owner": "Administrator" }, @@ -11,7 +11,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select\n so_item.item_code as \"Item Code:Link/Item:120\",\n\tso_item.item_name as \"Item Name::120\",\n\tso_item.description as \"Description::150\",\n\tso_item.qty as \"Qty:Currency:100\",\n\tso_item.stock_uom as \"UOM:Link/UOM:80\",\n\tso_item.basic_rate as \"Rate:Currency:120\",\n\tso_item.amount as \"Amount:Currency:120\",\n\tso.name as \"Sales Order:Link/Sales Order:120\",\n\tso.transaction_date as \"Transaction Date:Date:140\",\n\tso.customer as \"Customer:Link/Customer:130\",\n\tso.territory as \"Territory:Link/Territory:130\",\n so.project_name as \"Project:Link/Project:130\",\n\tifnull(so_item.delivered_qty, 0) as \"Delivered Qty:Currency:120\",\n\tifnull(so_item.billed_amt, 0) as \"Billed Amount:Currency:120\"\nfrom\n\t`tabSales Order` so, `tabSales Order Item` so_item\nwhere\n\tso.name = so_item.parent\n\tand so.docstatus = 1\norder by so.name desc", + "query": "select\n so_item.item_code as \"Item Code:Link/Item:120\",\n\tso_item.item_name as \"Item Name::120\",\n\tso_item.description as \"Description::150\",\n\tso_item.qty as \"Qty:Float:100\",\n\tso_item.stock_uom as \"UOM:Link/UOM:80\",\n\tso_item.basic_rate as \"Rate:Currency:120\",\n\tso_item.amount as \"Amount:Currency:120\",\n\tso.name as \"Sales Order:Link/Sales Order:120\",\n\tso.transaction_date as \"Transaction Date:Date:140\",\n\tso.customer as \"Customer:Link/Customer:130\",\n\tso.territory as \"Territory:Link/Territory:130\",\n so.project_name as \"Project:Link/Project:130\",\n\tifnull(so_item.delivered_qty, 0) as \"Delivered Qty:Float:120\",\n\tifnull(so_item.billed_amt, 0) as \"Billed Amount:Currency:120\"\nfrom\n\t`tabSales Order` so, `tabSales Order Item` so_item\nwhere\n\tso.name = so_item.parent\n\tand so.docstatus = 1\norder by so.name desc", "ref_doctype": "Sales Order", "report_name": "Item-wise Sales History", "report_type": "Query Report" diff --git a/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py b/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py index 612cb7425d..23e8819242 100644 --- a/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py +++ b/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py @@ -32,8 +32,8 @@ def get_columns(filters): return [filters["doc_type"] + ":Link/" + filters["doc_type"] + ":140", "Customer:Link/Customer:140", "Territory:Link/Territory:100", "Posting Date:Date:100", - "Item Code:Link/Item:120", "Qty:Currency:100", "Amount:Currency:120", - "Sales Person:Link/Sales Person:140", "Contribution %:Currency:110", + "Item Code:Link/Item:120", "Qty:Float:100", "Amount:Currency:120", + "Sales Person:Link/Sales Person:140", "Contribution %:Float:110", "Contribution Amount:Currency:140"] def get_entries(filters): diff --git a/stock/report/item_wise_price_list/item_wise_price_list.txt b/stock/report/item_wise_price_list/item_wise_price_list.txt index 6c2afad897..824c603597 100644 --- a/stock/report/item_wise_price_list/item_wise_price_list.txt +++ b/stock/report/item_wise_price_list/item_wise_price_list.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-01-02 14:22:51", + "creation": "2013-02-22 18:01:55", "docstatus": 0, - "modified": "2013-02-22 15:53:01", + "modified": "2013-05-07 11:50:46", "modified_by": "Administrator", "owner": "Administrator" }, @@ -10,7 +10,7 @@ "doctype": "Report", "is_standard": "Yes", "name": "__common__", - "query": "select\n item.name as \"ID:Link/Item:120\", \n item.item_name as \"Item Name::120\", \n item_price.price_list_name as \"Price List::80\",\n item_price.ref_currency as \"Currency::40\", \n item_price.ref_rate as \"Rate:Currency:80\",\n item.description as \"Description::160\",\n item.item_group as \"Item Group:Link/Item Group:100\",\n item.brand as \"Brand::100\"\nfrom `tabItem` item, `tabItem Price` item_price\nwhere\n item_price.parent = item.name", + "query": "select\n item.name as \"ID:Link/Item:120\", \n item.item_name as \"Item Name::120\", \n item_price.price_list_name as \"Price List::80\",\n item_price.ref_currency as \"Currency::40\", \n item_price.ref_rate as \"Rate:Float:80\",\n item.description as \"Description::160\",\n item.item_group as \"Item Group:Link/Item Group:100\",\n item.brand as \"Brand::100\"\nfrom `tabItem` item, `tabItem Price` item_price\nwhere\n item_price.parent = item.name", "ref_doctype": "Item", "report_name": "Item-Wise Price List", "report_type": "Query Report" From f2d4df975ee97fcbf480df6d1a4cfd6ca23a5553 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 May 2013 13:12:02 +0530 Subject: [PATCH 09/11] [fixes] floating point issue in buying rate --- controllers/selling_controller.py | 3 ++- stock/doctype/stock_entry/stock_entry.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/controllers/selling_controller.py b/controllers/selling_controller.py index b22042d0fe..80af337031 100644 --- a/controllers/selling_controller.py +++ b/controllers/selling_controller.py @@ -59,7 +59,8 @@ class SellingController(StockController): buying_amount = get_buying_amount(item.item_code, item.warehouse, -1*item.qty, self.doc.doctype, self.doc.name, item.name, stock_ledger_entries, item_sales_bom) - item.buying_amount = buying_amount > 0 and buying_amount or 0 + + item.buying_amount = buying_amount >= 0.01 and buying_amount or 0 webnotes.conn.set_value(item.doctype, item.name, "buying_amount", item.buying_amount) diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index fa60072518..d08deefa2b 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -194,10 +194,10 @@ class DocType(StockController): total_valuation_amount = 0 for item in self.doclist.get({"parentfield": "mtn_details"}): if item.t_warehouse and not item.s_warehouse: - total_valuation_amount += flt(item.incoming_rate) * flt(item.transfer_qty) + total_valuation_amount += flt(item.incoming_rate, 2) * flt(item.transfer_qty) if item.s_warehouse and not item.t_warehouse: - total_valuation_amount -= flt(item.incoming_rate) * flt(item.transfer_qty) + total_valuation_amount -= flt(item.incoming_rate, 2) * flt(item.transfer_qty) return total_valuation_amount @@ -607,7 +607,7 @@ class DocType(StockController): 'voucher_no': self.doc.name, 'voucher_detail_no': d.name, 'actual_qty': qty, - 'incoming_rate': flt(d.incoming_rate) or 0, + 'incoming_rate': flt(d.incoming_rate, 2) or 0, 'stock_uom': d.stock_uom, 'company': self.doc.company, 'is_cancelled': (is_cancelled ==1) and 'Yes' or 'No', From 04f888fa52f13822d23442fd6203363168945ac7 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 May 2013 16:03:10 +0530 Subject: [PATCH 10/11] [fixes] item_code non-mandatory in item if naming_series --- .../bank_reconciliation.py | 2 +- .../bom_replace_tool/bom_replace_tool.py | 6 +- stock/doctype/item/item.py | 4 +- stock/doctype/item/item.txt | 70 ++++--------------- 4 files changed, 17 insertions(+), 65 deletions(-) diff --git a/accounts/doctype/bank_reconciliation/bank_reconciliation.py b/accounts/doctype/bank_reconciliation/bank_reconciliation.py index 980af5844f..f19df48306 100644 --- a/accounts/doctype/bank_reconciliation/bank_reconciliation.py +++ b/accounts/doctype/bank_reconciliation/bank_reconciliation.py @@ -66,6 +66,6 @@ class DocType: vouchers.append(d.voucher_id) if vouchers: - msgprint("Clearance Date updated in %s" % vouchers) + msgprint("Clearance Date updated in %s" % ", ".join(vouchers)) else: msgprint("Clearance Date not mentioned") \ No newline at end of file diff --git a/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py b/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py index 177adcda83..4c9c42da2e 100644 --- a/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py +++ b/manufacturing/doctype/bom_replace_tool/bom_replace_tool.py @@ -46,11 +46,7 @@ class DocType: webnotes.conn.sql("""update `tabBOM Item` set bom_no=%s, rate=%s, amount=qty*%s where bom_no = %s and docstatus < 2""", (self.doc.new_bom, current_bom_unitcost, current_bom_unitcost, self.doc.current_bom)) - - def get_parent_boms(bom_no): - return [d[0] for d in webnotes.conn.sql("""select distinct parent from - `tabBOM Item` where ifnull(bom_no, '')=%s and docstatus < 2""", bom_no)] - + def get_parent_boms(self): return [d[0] for d in webnotes.conn.sql("""select distinct parent from `tabBOM Item` where ifnull(bom_no, '') = %s and docstatus < 2""", diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py index 63275047ad..fde532c96c 100644 --- a/stock/doctype/item/item.py +++ b/stock/doctype/item/item.py @@ -31,7 +31,9 @@ class DocType(DocListController): if webnotes.conn.get_default("item_naming_by")=="Naming Series": from webnotes.model.doc import make_autoname self.doc.item_code = make_autoname(self.doc.naming_series+'.#####') - + elif not self.doc.item_code: + msgprint(_("Item Code is mandatory"), raise_exception=1) + self.doc.name = self.doc.item_code def validate(self): diff --git a/stock/doctype/item/item.txt b/stock/doctype/item/item.txt index 274719eec5..c799029d95 100644 --- a/stock/doctype/item/item.txt +++ b/stock/doctype/item/item.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-04-25 10:56:55", + "creation": "2013-05-03 10:45:46", "docstatus": 0, - "modified": "2013-05-02 15:10:53", + "modified": "2013-05-07 15:58:58", "modified_by": "Administrator", "owner": "Administrator" }, @@ -28,13 +28,14 @@ "permlevel": 0 }, { - "amend": 0, "doctype": "DocPerm", "name": "__common__", "parent": "Item", "parentfield": "permissions", "parenttype": "DocType", + "permlevel": 0, "read": 1, + "report": 1, "submit": 0 }, { @@ -55,7 +56,8 @@ "fieldname": "naming_series", "fieldtype": "Select", "label": "Naming Series", - "options": "\nITEM" + "options": "\nITEM", + "read_only": 0 }, { "description": "Item will be saved by this name in the data base.", @@ -64,10 +66,11 @@ "fieldtype": "Data", "in_filter": 0, "label": "Item Code", + "no_copy": 1, "oldfieldname": "item_code", "oldfieldtype": "Data", "read_only": 0, - "reqd": 1, + "reqd": 0, "search_index": 0 }, { @@ -883,76 +886,27 @@ "label": "Website Description", "read_only": 0 }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Material Manager", - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "Material Manager", - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Material User", - "write": 0 - }, - { - "cancel": 0, - "create": 0, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "Material User", - "write": 0 - }, { "cancel": 1, "create": 1, "doctype": "DocPerm", - "permlevel": 0, - "report": 1, "role": "Material Master Manager", "write": 1 }, { + "amend": 0, "cancel": 0, "create": 0, "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "Material Master Manager", + "role": "Material Manager", "write": 0 }, { - "cancel": 1, - "create": 1, - "doctype": "DocPerm", - "permlevel": 0, - "report": 1, - "role": "System Manager", - "write": 1 - }, - { + "amend": 0, "cancel": 0, "create": 0, "doctype": "DocPerm", - "permlevel": 1, - "report": 0, - "role": "System Manager", + "role": "Material User", "write": 0 } ] \ No newline at end of file From f7bdf8e05aa80ca00ba96e5af7cd3053d38ca16d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 7 May 2013 16:48:55 +0530 Subject: [PATCH 11/11] [fixes][jv] set clearance date as null on saving document --- accounts/doctype/journal_voucher/journal_voucher.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py index 9b1ca7a105..f7d4035a58 100644 --- a/accounts/doctype/journal_voucher/journal_voucher.py +++ b/accounts/doctype/journal_voucher/journal_voucher.py @@ -43,6 +43,8 @@ class DocType(AccountsController): if not self.doc.is_opening: self.doc.is_opening='No' + self.doc.clearance_date = None + self.validate_debit_credit() self.validate_cheque_info() self.validate_entries_for_advance()