From b5e768906a0d8d15bb7175eafbaf59042d972668 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Tue, 29 Jul 2014 16:07:43 +0530 Subject: [PATCH] built item grids for sales, purchase, stock --- erpnext/accounts/doctype/account/account.py | 1 - .../doctype/sales_invoice/sales_invoice.py | 4 + .../doctype/purchase_order/purchase_order.py | 4 + .../supplier_quotation/supplier_quotation.py | 5 + erpnext/controllers/selling_controller.py | 7 + .../selling/doctype/quotation/quotation.py | 4 + .../doctype/sales_order/sales_order.py | 4 + .../sales_order_item/sales_order_item.json | 742 +++++++++--------- .../doctype/delivery_note/delivery_note.py | 4 + .../delivery_note_item.json | 6 +- .../material_request/material_request.py | 5 + .../purchase_receipt/purchase_receipt.py | 5 + .../stock/doctype/stock_entry/stock_entry.py | 4 + .../stock_entry_detail.json | 9 +- .../form_grid/includes/visible_cols.html | 13 + erpnext/templates/form_grid/item_grid.html | 109 +++ .../form_grid/material_request_grid.html | 52 ++ .../templates/form_grid/stock_entry_grid.html | 42 + 18 files changed, 642 insertions(+), 378 deletions(-) create mode 100644 erpnext/templates/form_grid/includes/visible_cols.html create mode 100644 erpnext/templates/form_grid/item_grid.html create mode 100644 erpnext/templates/form_grid/material_request_grid.html create mode 100644 erpnext/templates/form_grid/stock_entry_grid.html diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index 5b034f8b23..2f60dca904 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -16,7 +16,6 @@ class Account(Document): if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.user.get_roles(): self.get("__onload").can_freeze_account = True - def autoname(self): self.name = self.account_name.strip() + ' - ' + \ frappe.db.get_value("Company", self.company, "abbr") diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 8f82fc6284..1205646cbf 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -18,6 +18,10 @@ month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12} from erpnext.controllers.selling_controller import SellingController +form_grid_templates = { + "entries": "templates/form_grid/item_grid.html" +} + class SalesInvoice(SellingController): tname = 'Sales Invoice Item' fname = 'entries' diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py index f9f5103726..04ad37fc72 100644 --- a/erpnext/buying/doctype/purchase_order/purchase_order.py +++ b/erpnext/buying/doctype/purchase_order/purchase_order.py @@ -8,6 +8,10 @@ from frappe import msgprint, _, throw from frappe.model.mapper import get_mapped_doc from erpnext.controllers.buying_controller import BuyingController +form_grid_templates = { + "po_details": "templates/form_grid/item_grid.html" +} + class PurchaseOrder(BuyingController): tname = 'Purchase Order Item' fname = 'po_details' diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py index 2af7bb93a6..d009bac241 100644 --- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py +++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py @@ -6,6 +6,11 @@ import frappe from frappe.model.mapper import get_mapped_doc from erpnext.controllers.buying_controller import BuyingController + +form_grid_templates = { + "quotation_items": "templates/form_grid/item_grid.html" +} + class SupplierQuotation(BuyingController): tname = "Supplier Quotation Item" fname = "quotation_items" diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index 7faba41b77..dd58758546 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -6,6 +6,7 @@ import frappe from frappe.utils import cint, flt, rounded, cstr, comma_or from erpnext.setup.utils import get_company_currency from frappe import _, throw +from erpnext.stock.get_item_details import get_available_qty from erpnext.controllers.stock_controller import StockController @@ -17,6 +18,12 @@ class SellingController(StockController): "other_charges": "templates/print_formats/includes/taxes.html", } + def onload(self): + if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"): + for item in self.get(self.fname): + item.update(get_available_qty(item.item_code, + item.warehouse)) + def validate(self): super(SellingController, self).validate() self.validate_max_discount() diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py index f396191a2d..ab6e4baec8 100644 --- a/erpnext/selling/doctype/quotation/quotation.py +++ b/erpnext/selling/doctype/quotation/quotation.py @@ -9,6 +9,10 @@ from frappe import _ from erpnext.controllers.selling_controller import SellingController +form_grid_templates = { + "quotation_details": "templates/form_grid/item_grid.html" +} + class Quotation(SellingController): tname = 'Quotation Item' fname = 'quotation_details' diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index e0a7a1d62d..37b26fdb48 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -12,6 +12,10 @@ from frappe.model.mapper import get_mapped_doc from erpnext.controllers.selling_controller import SellingController +form_grid_templates = { + "sales_order_details": "templates/form_grid/item_grid.html" +} + class SalesOrder(SellingController): tname = 'Sales Order Item' fname = 'sales_order_details' diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json index eb0c024723..4ea3fecfde 100644 --- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json +++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -1,443 +1,443 @@ { - "autoname": "SOD/.#####", - "creation": "2013-03-07 11:42:58", - "docstatus": 0, - "doctype": "DocType", + "autoname": "SOD/.#####", + "creation": "2013-03-07 11:42:58", + "docstatus": 0, + "doctype": "DocType", "fields": [ { - "fieldname": "item_code", - "fieldtype": "Link", - "in_filter": 1, - "in_list_view": 1, - "label": "Item Code", - "oldfieldname": "item_code", - "oldfieldtype": "Link", - "options": "Item", - "permlevel": 0, - "print_width": "150px", - "read_only": 0, - "reqd": 1, - "search_index": 1, + "fieldname": "item_code", + "fieldtype": "Link", + "in_filter": 1, + "in_list_view": 1, + "label": "Item Code", + "oldfieldname": "item_code", + "oldfieldtype": "Link", + "options": "Item", + "permlevel": 0, + "print_width": "150px", + "read_only": 0, + "reqd": 1, + "search_index": 1, "width": "150px" - }, + }, { - "fieldname": "customer_item_code", - "fieldtype": "Data", - "hidden": 1, - "in_list_view": 0, - "label": "Customer's Item Code", - "permlevel": 0, - "print_hide": 1, + "fieldname": "customer_item_code", + "fieldtype": "Data", + "hidden": 1, + "in_list_view": 0, + "label": "Customer's Item Code", + "permlevel": 0, + "print_hide": 1, "read_only": 1 - }, + }, { - "fieldname": "item_name", - "fieldtype": "Data", - "in_list_view": 0, - "label": "Item Name", - "oldfieldname": "item_name", - "oldfieldtype": "Data", - "permlevel": 0, - "print_hide": 1, - "print_width": "150", - "read_only": 0, - "reqd": 1, + "fieldname": "item_name", + "fieldtype": "Data", + "in_list_view": 0, + "label": "Item Name", + "oldfieldname": "item_name", + "oldfieldtype": "Data", + "permlevel": 0, + "print_hide": 1, + "print_width": "150", + "read_only": 0, + "reqd": 1, "width": "150" - }, + }, { - "fieldname": "col_break1", - "fieldtype": "Column Break", + "fieldname": "col_break1", + "fieldtype": "Column Break", "permlevel": 0 - }, + }, { - "fieldname": "description", - "fieldtype": "Small Text", - "in_filter": 1, - "in_list_view": 1, - "label": "Description", - "oldfieldname": "description", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_width": "300px", - "read_only": 0, - "reqd": 1, - "search_index": 1, + "fieldname": "description", + "fieldtype": "Small Text", + "in_filter": 1, + "in_list_view": 1, + "label": "Description", + "oldfieldname": "description", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_width": "300px", + "read_only": 0, + "reqd": 1, + "search_index": 1, "width": "300px" - }, + }, { - "fieldname": "quantity_and_rate", - "fieldtype": "Section Break", - "in_list_view": 0, - "label": "Quantity and Rate", + "fieldname": "quantity_and_rate", + "fieldtype": "Section Break", + "in_list_view": 0, + "label": "Quantity and Rate", "permlevel": 0 - }, + }, { - "fieldname": "qty", - "fieldtype": "Float", - "in_list_view": 1, - "label": "Quantity", - "oldfieldname": "qty", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_width": "100px", - "read_only": 0, - "reqd": 1, + "fieldname": "qty", + "fieldtype": "Float", + "in_list_view": 1, + "label": "Quantity", + "oldfieldname": "qty", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_width": "100px", + "read_only": 0, + "reqd": 1, "width": "100px" - }, + }, { - "fieldname": "price_list_rate", - "fieldtype": "Currency", - "in_list_view": 0, - "label": "Price List Rate", - "oldfieldname": "ref_rate", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "70px", - "read_only": 1, - "reqd": 0, + "fieldname": "price_list_rate", + "fieldtype": "Currency", + "in_list_view": 0, + "label": "Price List Rate", + "oldfieldname": "ref_rate", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "70px", + "read_only": 1, + "reqd": 0, "width": "70px" - }, + }, { - "fieldname": "discount_percentage", - "fieldtype": "Percent", - "in_list_view": 0, - "label": "Discount(%)", - "oldfieldname": "adj_rate", - "oldfieldtype": "Float", - "permlevel": 0, - "print_hide": 1, - "print_width": "70px", - "read_only": 0, + "fieldname": "discount_percentage", + "fieldtype": "Float", + "in_list_view": 0, + "label": "Discount(%)", + "oldfieldname": "adj_rate", + "oldfieldtype": "Float", + "permlevel": 0, + "print_hide": 1, + "print_width": "70px", + "read_only": 0, "width": "70px" - }, + }, { - "fieldname": "col_break2", - "fieldtype": "Column Break", + "fieldname": "col_break2", + "fieldtype": "Column Break", "permlevel": 0 - }, + }, { - "fieldname": "stock_uom", - "fieldtype": "Link", - "hidden": 0, - "in_list_view": 0, - "label": "UOM", - "oldfieldname": "stock_uom", - "oldfieldtype": "Data", - "options": "UOM", - "permlevel": 0, - "print_width": "70px", - "read_only": 1, - "reqd": 0, + "fieldname": "stock_uom", + "fieldtype": "Link", + "hidden": 0, + "in_list_view": 0, + "label": "UOM", + "oldfieldname": "stock_uom", + "oldfieldtype": "Data", + "options": "UOM", + "permlevel": 0, + "print_width": "70px", + "read_only": 1, + "reqd": 0, "width": "70px" - }, + }, { - "fieldname": "base_price_list_rate", - "fieldtype": "Currency", - "in_list_view": 0, - "label": "Price List Rate (Company Currency)", - "oldfieldname": "base_ref_rate", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "100px", - "read_only": 1, + "fieldname": "base_price_list_rate", + "fieldtype": "Currency", + "in_list_view": 0, + "label": "Price List Rate (Company Currency)", + "oldfieldname": "base_ref_rate", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "100px", + "read_only": 1, "width": "100px" - }, + }, { - "fieldname": "section_break_simple1", - "fieldtype": "Section Break", + "fieldname": "section_break_simple1", + "fieldtype": "Section Break", "permlevel": 0 - }, + }, { - "fieldname": "rate", - "fieldtype": "Currency", - "in_list_view": 1, - "label": "Rate", - "oldfieldname": "export_rate", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_width": "100px", - "read_only": 0, - "reqd": 0, + "fieldname": "rate", + "fieldtype": "Currency", + "in_list_view": 1, + "label": "Rate", + "oldfieldname": "export_rate", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_width": "100px", + "read_only": 0, + "reqd": 0, "width": "100px" - }, + }, { - "fieldname": "amount", - "fieldtype": "Currency", - "in_list_view": 1, - "label": "Amount", - "no_copy": 0, - "oldfieldname": "export_amount", - "oldfieldtype": "Currency", - "options": "currency", - "permlevel": 0, - "print_width": "100px", - "read_only": 1, - "reqd": 0, + "fieldname": "amount", + "fieldtype": "Currency", + "in_list_view": 1, + "label": "Amount", + "no_copy": 0, + "oldfieldname": "export_amount", + "oldfieldtype": "Currency", + "options": "currency", + "permlevel": 0, + "print_width": "100px", + "read_only": 1, + "reqd": 0, "width": "100px" - }, + }, { - "fieldname": "col_break3", - "fieldtype": "Column Break", + "fieldname": "col_break3", + "fieldtype": "Column Break", "permlevel": 0 - }, + }, { - "fieldname": "base_rate", - "fieldtype": "Currency", - "in_list_view": 0, - "label": "Basic Rate (Company Currency)", - "oldfieldname": "basic_rate", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "100px", - "read_only": 1, - "reqd": 0, + "fieldname": "base_rate", + "fieldtype": "Currency", + "in_list_view": 0, + "label": "Basic Rate (Company Currency)", + "oldfieldname": "basic_rate", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "100px", + "read_only": 1, + "reqd": 0, "width": "100px" - }, + }, { - "fieldname": "base_amount", - "fieldtype": "Currency", - "in_list_view": 0, - "label": "Amount (Company Currency)", - "no_copy": 0, - "oldfieldname": "amount", - "oldfieldtype": "Currency", - "options": "Company:company:default_currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "100px", - "read_only": 1, - "reqd": 0, + "fieldname": "base_amount", + "fieldtype": "Currency", + "in_list_view": 0, + "label": "Amount (Company Currency)", + "no_copy": 0, + "oldfieldname": "amount", + "oldfieldtype": "Currency", + "options": "Company:company:default_currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "100px", + "read_only": 1, + "reqd": 0, "width": "100px" - }, + }, { - "fieldname": "pricing_rule", - "fieldtype": "Link", - "label": "Pricing Rule", - "options": "Pricing Rule", - "permlevel": 0, + "fieldname": "pricing_rule", + "fieldtype": "Link", + "label": "Pricing Rule", + "options": "Pricing Rule", + "permlevel": 0, "read_only": 1 - }, + }, { - "fieldname": "warehouse_and_reference", - "fieldtype": "Section Break", - "in_list_view": 0, - "label": "Warehouse and Reference", + "fieldname": "warehouse_and_reference", + "fieldtype": "Section Break", + "in_list_view": 0, + "label": "Warehouse and Reference", "permlevel": 0 - }, + }, { - "fieldname": "warehouse", - "fieldtype": "Link", - "in_list_view": 0, - "label": "Reserved Warehouse", - "no_copy": 0, - "oldfieldname": "reserved_warehouse", - "oldfieldtype": "Link", - "options": "Warehouse", - "permlevel": 0, - "print_hide": 1, - "print_width": "150px", - "read_only": 0, - "reqd": 0, + "fieldname": "warehouse", + "fieldtype": "Link", + "in_list_view": 0, + "label": "Reserved Warehouse", + "no_copy": 0, + "oldfieldname": "reserved_warehouse", + "oldfieldtype": "Link", + "options": "Warehouse", + "permlevel": 0, + "print_hide": 1, + "print_width": "150px", + "read_only": 0, + "reqd": 0, "width": "150px" - }, + }, { - "fieldname": "prevdoc_docname", - "fieldtype": "Link", - "hidden": 0, - "in_filter": 1, - "in_list_view": 0, - "label": "Quotation", - "no_copy": 1, - "oldfieldname": "prevdoc_docname", - "oldfieldtype": "Link", - "options": "Quotation", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, + "fieldname": "prevdoc_docname", + "fieldtype": "Link", + "hidden": 0, + "in_filter": 1, + "in_list_view": 0, + "label": "Quotation", + "no_copy": 1, + "oldfieldname": "prevdoc_docname", + "oldfieldtype": "Link", + "options": "Quotation", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, "search_index": 1 - }, + }, { - "fieldname": "brand", - "fieldtype": "Link", - "hidden": 1, - "in_filter": 1, - "in_list_view": 0, - "label": "Brand Name", - "oldfieldname": "brand", - "oldfieldtype": "Link", - "options": "Brand", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, + "fieldname": "brand", + "fieldtype": "Link", + "hidden": 1, + "in_filter": 1, + "in_list_view": 0, + "label": "Brand Name", + "oldfieldname": "brand", + "oldfieldtype": "Link", + "options": "Brand", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, "search_index": 1 - }, + }, { - "description": "Add / Edit", - "fieldname": "item_group", - "fieldtype": "Link", - "hidden": 1, - "in_filter": 1, - "in_list_view": 0, - "label": "Item Group", - "oldfieldname": "item_group", - "oldfieldtype": "Link", - "options": "Item Group", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, + "description": "Add / Edit", + "fieldname": "item_group", + "fieldtype": "Link", + "hidden": 1, + "in_filter": 1, + "in_list_view": 0, + "label": "Item Group", + "oldfieldname": "item_group", + "oldfieldtype": "Link", + "options": "Item Group", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, "search_index": 1 - }, + }, { - "allow_on_submit": 1, - "fieldname": "page_break", - "fieldtype": "Check", - "in_list_view": 0, - "label": "Page Break", - "oldfieldname": "page_break", - "oldfieldtype": "Check", - "permlevel": 0, - "print_hide": 1, - "read_only": 0, + "allow_on_submit": 1, + "fieldname": "page_break", + "fieldtype": "Check", + "in_list_view": 0, + "label": "Page Break", + "oldfieldname": "page_break", + "oldfieldtype": "Check", + "permlevel": 0, + "print_hide": 1, + "read_only": 0, "report_hide": 1 - }, + }, { - "fieldname": "col_break4", - "fieldtype": "Column Break", + "fieldname": "col_break4", + "fieldtype": "Column Break", "permlevel": 0 - }, + }, { - "fieldname": "projected_qty", - "fieldtype": "Float", - "hidden": 1, - "in_list_view": 0, - "label": "Projected Qty", - "no_copy": 1, - "oldfieldname": "projected_qty", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "70px", - "read_only": 1, + "fieldname": "projected_qty", + "fieldtype": "Float", + "hidden": 0, + "in_list_view": 0, + "label": "Projected Qty", + "no_copy": 1, + "oldfieldname": "projected_qty", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "70px", + "read_only": 1, "width": "70px" - }, + }, { - "fieldname": "actual_qty", - "fieldtype": "Float", - "in_list_view": 0, - "label": "Actual Qty", - "no_copy": 1, - "permlevel": 0, - "print_hide": 1, - "print_width": "70px", - "read_only": 1, + "fieldname": "actual_qty", + "fieldtype": "Float", + "in_list_view": 0, + "label": "Actual Qty", + "no_copy": 1, + "permlevel": 0, + "print_hide": 1, + "print_width": "70px", + "read_only": 1, "width": "70px" - }, + }, { - "fieldname": "delivered_qty", - "fieldtype": "Float", - "hidden": 0, - "in_filter": 0, - "in_list_view": 0, - "label": "Delivered Qty", - "no_copy": 1, - "oldfieldname": "delivered_qty", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "100px", - "read_only": 1, - "search_index": 0, + "fieldname": "delivered_qty", + "fieldtype": "Float", + "hidden": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Delivered Qty", + "no_copy": 1, + "oldfieldname": "delivered_qty", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "100px", + "read_only": 1, + "search_index": 0, "width": "100px" - }, + }, { - "fieldname": "billed_amt", - "fieldtype": "Currency", - "in_list_view": 0, - "label": "Billed Amt", - "no_copy": 1, - "options": "currency", - "permlevel": 0, - "print_hide": 1, + "fieldname": "billed_amt", + "fieldtype": "Currency", + "in_list_view": 0, + "label": "Billed Amt", + "no_copy": 1, + "options": "currency", + "permlevel": 0, + "print_hide": 1, "read_only": 1 - }, + }, { - "description": "For Production", - "fieldname": "planned_qty", - "fieldtype": "Float", - "hidden": 1, - "in_list_view": 0, - "label": "Planned Quantity", - "no_copy": 1, - "oldfieldname": "planned_qty", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "50px", - "read_only": 1, - "report_hide": 1, + "description": "For Production", + "fieldname": "planned_qty", + "fieldtype": "Float", + "hidden": 1, + "in_list_view": 0, + "label": "Planned Quantity", + "no_copy": 1, + "oldfieldname": "planned_qty", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "50px", + "read_only": 1, + "report_hide": 1, "width": "50px" - }, + }, { - "description": "For Production", - "fieldname": "produced_qty", - "fieldtype": "Float", - "hidden": 1, - "in_list_view": 0, - "label": "Produced Quantity", - "oldfieldname": "produced_qty", - "oldfieldtype": "Currency", - "permlevel": 0, - "print_hide": 1, - "print_width": "50px", - "read_only": 1, - "report_hide": 1, + "description": "For Production", + "fieldname": "produced_qty", + "fieldtype": "Float", + "hidden": 1, + "in_list_view": 0, + "label": "Produced Quantity", + "oldfieldname": "produced_qty", + "oldfieldtype": "Currency", + "permlevel": 0, + "print_hide": 1, + "print_width": "50px", + "read_only": 1, + "report_hide": 1, "width": "50px" - }, + }, { - "fieldname": "item_tax_rate", - "fieldtype": "Small Text", - "hidden": 1, - "in_list_view": 0, - "label": "Item Tax Rate", - "oldfieldname": "item_tax_rate", - "oldfieldtype": "Small Text", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, + "fieldname": "item_tax_rate", + "fieldtype": "Small Text", + "hidden": 1, + "in_list_view": 0, + "label": "Item Tax Rate", + "oldfieldname": "item_tax_rate", + "oldfieldtype": "Small Text", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, "report_hide": 1 - }, + }, { - "description": "Used for Production Plan", - "fieldname": "transaction_date", - "fieldtype": "Date", - "hidden": 1, - "in_filter": 0, - "in_list_view": 0, - "label": "Sales Order Date", - "oldfieldname": "transaction_date", - "oldfieldtype": "Date", - "permlevel": 0, - "print_hide": 1, - "read_only": 1, - "report_hide": 1, + "description": "Used for Production Plan", + "fieldname": "transaction_date", + "fieldtype": "Date", + "hidden": 1, + "in_filter": 0, + "in_list_view": 0, + "label": "Sales Order Date", + "oldfieldname": "transaction_date", + "oldfieldtype": "Date", + "permlevel": 0, + "print_hide": 1, + "read_only": 1, + "report_hide": 1, "search_index": 0 } - ], - "idx": 1, - "istable": 1, - "modified": "2014-07-31 04:55:10.143164", - "modified_by": "Administrator", - "module": "Selling", - "name": "Sales Order Item", - "owner": "Administrator", - "permissions": [], - "sort_field": "modified", + ], + "idx": 1, + "istable": 1, + "modified": "2014-07-31 04:55:10.143164", + "modified_by": "Administrator", + "module": "Selling", + "name": "Sales Order Item", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", "sort_order": "DESC" -} \ No newline at end of file +} diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 54e4fa2acb..e831c47fe7 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -12,6 +12,10 @@ from frappe.model.mapper import get_mapped_doc from erpnext.stock.utils import update_bin from erpnext.controllers.selling_controller import SellingController +form_grid_templates = { + "delivery_note_details": "templates/form_grid/item_grid.html" +} + class DeliveryNote(SellingController): tname = 'Delivery Note Item' fname = 'delivery_note_details' diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json index 2f69bc9dc9..8c5cbb7bb5 100644 --- a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json +++ b/erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -109,7 +109,7 @@ }, { "fieldname": "discount_percentage", - "fieldtype": "Percent", + "fieldtype": "Float", "in_list_view": 0, "label": "Discount (%)", "oldfieldname": "adj_rate", @@ -365,6 +365,7 @@ "label": "Against Sales Order", "options": "Sales Order", "permlevel": 0, + "print_hide": 1, "read_only": 1 }, { @@ -373,6 +374,7 @@ "label": "Against Sales Invoice", "options": "Sales Invoice", "permlevel": 0, + "print_hide": 1, "read_only": 1 }, { @@ -429,7 +431,7 @@ ], "idx": 1, "istable": 1, - "modified": "2014-07-24 05:56:00.218977", + "modified": "2014-07-29 06:11:36.636120", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note Item", diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index 9951fc88c2..89121e322c 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -12,6 +12,11 @@ from frappe import _ from frappe.model.mapper import get_mapped_doc from erpnext.controllers.buying_controller import BuyingController + +form_grid_templates = { + "indent_details": "templates/form_grid/material_request_grid.html" +} + class MaterialRequest(BuyingController): tname = 'Material Request Item' fname = 'indent_details' diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 74f1198752..5f56149607 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -11,6 +11,11 @@ import frappe.defaults from erpnext.stock.utils import update_bin from erpnext.controllers.buying_controller import BuyingController + +form_grid_templates = { + "purchase_receipt_details": "templates/form_grid/item_grid.html" +} + class PurchaseReceipt(BuyingController): tname = 'Purchase Receipt Item' fname = 'purchase_receipt_details' diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 861d967596..413aa4741a 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -19,6 +19,10 @@ class DuplicateEntryForProductionOrderError(frappe.ValidationError): pass from erpnext.controllers.stock_controller import StockController +form_grid_templates = { + "mtn_details": "templates/form_grid/stock_entry_grid.html" +} + class StockEntry(StockController): fname = 'mtn_details' diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index 0bdc9a8e5e..e2f2c59d5b 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -1,6 +1,6 @@ { "autoname": "MTND/.######", - "creation": "2013-03-29 18:22:12.000000", + "creation": "2013-03-29 18:22:12", "docstatus": 0, "doctype": "DocType", "fields": [ @@ -190,7 +190,7 @@ "oldfieldtype": "Link", "options": "Batch", "permlevel": 0, - "print_hide": 1, + "print_hide": 0, "read_only": 0 }, { @@ -300,9 +300,10 @@ ], "idx": 1, "istable": 1, - "modified": "2014-02-03 12:59:27.000000", + "modified": "2014-07-29 05:28:21.872968", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", - "owner": "Administrator" + "owner": "Administrator", + "permissions": [] } \ No newline at end of file diff --git a/erpnext/templates/form_grid/includes/visible_cols.html b/erpnext/templates/form_grid/includes/visible_cols.html new file mode 100644 index 0000000000..82f15c29db --- /dev/null +++ b/erpnext/templates/form_grid/includes/visible_cols.html @@ -0,0 +1,13 @@ +{% $.each(visible_columns || [], function(i, df) { %} + {% var val = row.get_formatted(df.fieldname); + if(val) { %} +
+
+ {%= __(df.label) %}: +
+
+ {%= row.get_formatted(df.fieldname) %} +
+
+ {% } %} +{% }); %} diff --git a/erpnext/templates/form_grid/item_grid.html b/erpnext/templates/form_grid/item_grid.html new file mode 100644 index 0000000000..2c03ef9b71 --- /dev/null +++ b/erpnext/templates/form_grid/item_grid.html @@ -0,0 +1,109 @@ +{% var visible_columns = row.get_visible_columns(["item_code", "item_name", "description", "qty", "rate", "amount", "stock_uom", "uom", "discount_percentage", "schedule_date", "warehouse", "against_sales_order", "sales_order"]); %} + +{% if(!doc) { %} +
+
{%= __("Item") %}
+
{%= __("Qty") %}
+
{%= __("Rate") %}
+
{%= __("Amount") %}
+
+{% } else { %} +
+
{%= doc.item_code %} + {% if(doc.item_name != doc.item_code) { %} +
{%= doc.item_name %}{% } %} + {% if(doc.item_name != doc.description) { %} +

{%= doc.description %}

{% } %} + {% if(doc.sales_order || doc.against_sales_order) { %} +

+ + {%= doc.sales_order || doc.against_sales_order %} +

+ {% } %} + {% include "templates/form_grid/includes/visible_cols.html" %} + {% if(doc.schedule_date) { %} +
+ {%= row.get_formatted("schedule_date") %} + {% } %} +
+ + +
+ {%= row.get_formatted("qty") %} +
{%= doc.uom || doc.stock_uom %} + {% if(in_list(["Sales Order Item", "Purchase Order Item"], + doc.doctype) && frm.doc.docstatus===1) { + var delivered = doc.doctype==="Sales Order Item" ? + doc.delivered_qty : doc.received_qty, + percent_delivered = + 100 - cint((doc.qty - delivered) * 100 / doc.qty); + %} +
+
+ {%= percent_delivered %}% +
+
+ {% } %} + {% if(doc.warehouse) { + var label_class = "label-default", + title = "Warehouse", + actual_qty = (doc.doctype==="Sales Order" + ? doc.projected_qty : doc.actual_qty); + if(actual_qty != undefined) { + if(actual_qty > doc.qty) { + var label_class = "label-success"; + var title = "In Stock" + } else { + var title = "Not In Stock" + } + } + %} +
+ + {%= doc.warehouse %} + +
+ {% } %} +
+ + +
+ {%= row.get_formatted("rate") %} + {% if(doc.discount_percentage) { %} +
+ {%= -1 * doc.discount_percentage %}% + {% }%} +
+ + +
+ {%= row.get_formatted("amount") %} + {% if(in_list(["Sales Order Item", "Purchase Order Item"], + doc.doctype) && frm.doc.docstatus===1 && doc.amount) { + var percent_billed = + 100 - cint((doc.amount - doc.billed_amt) * 100 / doc.amount); + %} +
  +
+
+ {%= percent_billed %}% +
+
+ {% } %} +
+
+{% } %} diff --git a/erpnext/templates/form_grid/material_request_grid.html b/erpnext/templates/form_grid/material_request_grid.html new file mode 100644 index 0000000000..53b875a312 --- /dev/null +++ b/erpnext/templates/form_grid/material_request_grid.html @@ -0,0 +1,52 @@ +{% var visible_columns = row.get_visible_columns(["item_code", + "item_name", "description", "amount", "stock_uom", "uom", "qty"]); %} + +{% if(!doc) { %} +
+
{%= __("Item") %}
+
{%= __("Qty") %}
+
+{% } else { %} +
+
{%= doc.item_code %} + {% if(doc.item_name != doc.item_code) { %} +
{%= doc.item_name %}{% } %} + {% if(doc.item_name != doc.description) { %} +

{%= doc.description %}

{% } %} + {% include "templates/form_grid/includes/visible_cols.html" %} + {% if(doc.schedule_date) { %} +
+ {%= row.get_formatted("schedule_date") %} + {% } %} +
+ + +
+ {%= row.get_formatted("qty") %} + {%= doc.uom || doc.stock_uom %} + {% var percent_delivered = + 100 - cint((doc.qty - cint(doc.ordered_qty)) * 100 / doc.qty); %} +
+
+ {%= percent_delivered %}% +
+
+ {% if(doc.warehouse) { %} +
+ + {%= doc.warehouse %} + +
+ {% } %} +
+
+{% } %} diff --git a/erpnext/templates/form_grid/stock_entry_grid.html b/erpnext/templates/form_grid/stock_entry_grid.html new file mode 100644 index 0000000000..56033054d2 --- /dev/null +++ b/erpnext/templates/form_grid/stock_entry_grid.html @@ -0,0 +1,42 @@ +{% var visible_columns = row.get_visible_columns(["item_code", + "item_name", "description", "amount", "stock_uom", "uom", "qty", + "s_warehouse", "t_warehouse", "incoming_rate"]); +%} + +{% if(!doc) { %} +
+
{%= __("Item") %}
+
{%= __("Qty") %}
+
{%= __("Amount") %}
+
+{% } else { %} +
+
{%= doc.item_code %} + {% if(doc.item_name != doc.item_code) { %} +
{%= doc.item_name %}{% } %} + {% if(doc.item_name != doc.description) { %} +

{%= doc.description %}

{% } %} + {% include "templates/form_grid/includes/visible_cols.html" %} +
+ {% if(doc.s_warehouse) { %} + {%= doc.s_warehouse || "" %}{% } %} + + {% if(doc.t_warehouse) { %} + {%= doc.t_warehouse || "" %}{% } %} +
+
+ + +
+ {%= row.get_formatted("qty") %} +
{%= doc.uom || doc.stock_uom %} +
+ + +
+ {%= row.get_formatted("amount") %} +
+ {%= row.get_formatted("incoming_rate") %}
+
+
+{% } %}