[stock] [feature] added project to stock ledger entry and updated stock balance report
diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
index 9b5c80c..4b92643 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -608,22 +608,23 @@
def make_sl_entry(self, d, wh, qty, in_value, update_stock):
st_uom = webnotes.conn.sql("select stock_uom from `tabItem` where name = '%s'"%d['item_code'])
self.values.append({
- 'item_code' : d['item_code'],
- 'warehouse' : wh,
- 'transaction_date' : getdate(self.doc.modified).strftime('%Y-%m-%d'),
- 'posting_date' : self.doc.posting_date,
- 'posting_time' : self.doc.posting_time,
- 'voucher_type' : 'Sales Invoice',
- 'voucher_no' : cstr(self.doc.name),
- 'voucher_detail_no' : cstr(d['name']),
- 'actual_qty' : qty,
- 'stock_uom' : st_uom and st_uom[0][0] or '',
- 'incoming_rate' : in_value,
- 'company' : self.doc.company,
- 'fiscal_year' : self.doc.fiscal_year,
- 'is_cancelled' : (update_stock==1) and 'No' or 'Yes',
- 'batch_no' : cstr(d['batch_no']),
- 'serial_no' : d['serial_no']
+ 'item_code' : d['item_code'],
+ 'warehouse' : wh,
+ 'transaction_date' : getdate(self.doc.modified).strftime('%Y-%m-%d'),
+ 'posting_date' : self.doc.posting_date,
+ 'posting_time' : self.doc.posting_time,
+ 'voucher_type' : 'Sales Invoice',
+ 'voucher_no' : cstr(self.doc.name),
+ 'voucher_detail_no' : cstr(d['name']),
+ 'actual_qty' : qty,
+ 'stock_uom' : st_uom and st_uom[0][0] or '',
+ 'incoming_rate' : in_value,
+ 'company' : self.doc.company,
+ 'fiscal_year' : self.doc.fiscal_year,
+ 'is_cancelled' : (update_stock==1) and 'No' or 'Yes',
+ 'batch_no' : cstr(d['batch_no']),
+ 'serial_no' : d['serial_no'],
+ "project" : self.doc.project_name
})
def update_stock_ledger(self, update_stock):
diff --git a/patches/march_2013/p07_update_project_in_stock_ledger.py b/patches/march_2013/p07_update_project_in_stock_ledger.py
new file mode 100644
index 0000000..ad4d639
--- /dev/null
+++ b/patches/march_2013/p07_update_project_in_stock_ledger.py
@@ -0,0 +1,42 @@
+import webnotes
+
+def execute():
+ webnotes.reload_doc("stock", "doctype", "stock_ledger_entry")
+
+ # from stock entry
+ webnotes.conn.sql("""update
+ `tabStock Ledger Entry` sle,
+ `tabStock Entry` st
+ set sle.project = st.project_name
+ where
+ sle.voucher_type = "Stock Entry"
+ and sle.voucher_no = st.name""")
+
+ # from purchase
+ webnotes.conn.sql("""update
+ `tabStock Ledger Entry` sle,
+ `tabPurchase Receipt Item` pri
+ set sle.project = pri.project_name
+ where
+ sle.voucher_type = "Purchase Receipt"
+ and sle.voucher_detail_no = pri.name""")
+
+ # from delivery note
+ webnotes.conn.sql("""update
+ `tabStock Ledger Entry` sle,
+ `tabDelivery Note` dn
+ set sle.project = dn.project_name
+ where
+ sle.voucher_type = "Delivery Note"
+ and sle.voucher_no = dn.name""")
+
+ # from pos invoice
+ webnotes.conn.sql("""update
+ `tabStock Ledger Entry` sle,
+ `tabSales Invoice` si
+ set sle.project = si.project_name
+ where
+ sle.voucher_type = "Sales Invoice"
+ and sle.voucher_no = si.name""")
+
+
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 9c0d9b8..fc9855d 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -214,5 +214,7 @@
"patches.march_2013.p04_pos_update_stock_check",
"patches.march_2013.p05_payment_reconciliation",
"patches.march_2013.p06_remove_sales_purchase_return_tool",
- "execute:webnotes.bean('Global Defaults').save()"
+ "execute:webnotes.bean('Global Defaults').save()",
+ "patches.march_2013.p07_update_project_in_stock_ledger",
+ "execute:webnotes.bean('Style Settings').save() #2013-03-25",
]
\ No newline at end of file
diff --git a/startup/report_data_map.py b/startup/report_data_map.py
index f914277..501db4f 100644
--- a/startup/report_data_map.py
+++ b/startup/report_data_map.py
@@ -80,6 +80,11 @@
"conditions": ["docstatus < 2"],
"order_by": "name"
},
+ "Project": {
+ "columns": ["name"],
+ "conditions": ["docstatus < 2"],
+ "order_by": "name"
+ },
"Warehouse": {
"columns": ["name"],
"conditions": ["docstatus < 2"],
@@ -87,13 +92,14 @@
},
"Stock Ledger Entry": {
"columns": ["name", "posting_date", "posting_time", "item_code", "warehouse",
- "actual_qty as qty", "voucher_type", "voucher_no",
+ "actual_qty as qty", "voucher_type", "voucher_no", "project",
"ifnull(incoming_rate,0) as incoming_rate", "stock_uom", "serial_no"],
"conditions": ["ifnull(is_cancelled, 'No')='No'"],
"order_by": "posting_date, posting_time, name",
"links": {
"item_code": ["Item", "name"],
- "warehouse": ["Warehouse", "name"]
+ "warehouse": ["Warehouse", "name"],
+ "project": ["Project", "name"]
},
"force_index": "posting_sort_index"
},
diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
index 5e3c9e9..90b0ba7 100644
--- a/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -387,7 +387,8 @@
'fiscal_year' : self.doc.fiscal_year,
'is_cancelled' : (update_stock==1) and 'No' or 'Yes',
'batch_no' : d['batch_no'],
- 'serial_no' : d['serial_no']
+ 'serial_no' : d['serial_no'],
+ "project" : self.doc.project_name
})
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 7949a1c..4a52a5f 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -196,21 +196,22 @@
serial_no = cstr(d.serial_no).strip()
self.values.append({
- 'item_code' : d.fields.has_key('item_code') and d.item_code or d.rm_item_code,
- 'warehouse' : wh,
- 'posting_date' : self.doc.posting_date,
- 'posting_time' : self.doc.posting_time,
- 'voucher_type' : 'Purchase Receipt',
- 'voucher_no' : self.doc.name,
- 'voucher_detail_no' : d.name,
- 'actual_qty' : qty,
- 'stock_uom' : d.stock_uom,
- 'incoming_rate' : in_value,
- 'company' : self.doc.company,
- 'fiscal_year' : self.doc.fiscal_year,
- 'is_cancelled' : (is_submit==1) and 'No' or 'Yes',
- 'batch_no' : cstr(d.batch_no).strip(),
- 'serial_no' : serial_no
+ 'item_code' : d.fields.has_key('item_code') and d.item_code or d.rm_item_code,
+ 'warehouse' : wh,
+ 'posting_date' : self.doc.posting_date,
+ 'posting_time' : self.doc.posting_time,
+ 'voucher_type' : 'Purchase Receipt',
+ 'voucher_no' : self.doc.name,
+ 'voucher_detail_no' : d.name,
+ 'actual_qty' : qty,
+ 'stock_uom' : d.stock_uom,
+ 'incoming_rate' : in_value,
+ 'company' : self.doc.company,
+ 'fiscal_year' : self.doc.fiscal_year,
+ 'is_cancelled' : (is_submit==1) and 'No' or 'Yes',
+ 'batch_no' : cstr(d.batch_no).strip(),
+ 'serial_no' : serial_no,
+ "project" : d.project_name
})
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index f54ce60..e79e989 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -604,7 +604,8 @@
'company': self.doc.company,
'is_cancelled': (is_cancelled ==1) and 'Yes' or 'No',
'batch_no': cstr(d.batch_no).strip(),
- 'serial_no': cstr(d.serial_no).strip()
+ 'serial_no': cstr(d.serial_no).strip(),
+ "project": self.doc.project_name
})
def get_cust_values(self):
diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt b/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt
index 9551b59..6bcd758 100644
--- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt
+++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt
@@ -1,8 +1,8 @@
[
{
- "creation": "2013-01-14 16:33:26",
+ "creation": "2013-01-29 19:25:42",
"docstatus": 0,
- "modified": "2013-01-29 16:27:57",
+ "modified": "2013-03-25 16:04:59",
"modified_by": "Administrator",
"owner": "Administrator"
},
@@ -24,13 +24,9 @@
"parent": "Stock Ledger Entry",
"parentfield": "fields",
"parenttype": "DocType",
- "permlevel": 0,
- "read_only": 1
+ "permlevel": 0
},
{
- "amend": 0,
- "cancel": 0,
- "create": 0,
"doctype": "DocPerm",
"name": "__common__",
"parent": "Stock Ledger Entry",
@@ -39,9 +35,7 @@
"permlevel": 0,
"read": 1,
"report": 1,
- "role": "Material User",
- "submit": 0,
- "write": 0
+ "submit": 0
},
{
"doctype": "DocType",
@@ -57,6 +51,7 @@
"oldfieldtype": "Link",
"options": "Item",
"print_width": "100px",
+ "read_only": 1,
"reqd": 0,
"search_index": 1,
"width": "100px"
@@ -68,6 +63,7 @@
"in_filter": 0,
"label": "Serial No",
"print_width": "100px",
+ "read_only": 1,
"search_index": 0,
"width": "100px"
},
@@ -77,7 +73,8 @@
"fieldtype": "Data",
"label": "Batch No",
"oldfieldname": "batch_no",
- "oldfieldtype": "Data"
+ "oldfieldtype": "Data",
+ "read_only": 1
},
{
"doctype": "DocField",
@@ -89,6 +86,7 @@
"oldfieldtype": "Link",
"options": "Warehouse",
"print_width": "100px",
+ "read_only": 1,
"search_index": 1,
"width": "100px"
},
@@ -101,6 +99,7 @@
"oldfieldname": "warehouse_type",
"oldfieldtype": "Select",
"options": "link:Warehouse Type",
+ "read_only": 1,
"search_index": 0
},
{
@@ -113,6 +112,7 @@
"oldfieldname": "posting_date",
"oldfieldtype": "Date",
"print_width": "100px",
+ "read_only": 1,
"reqd": 0,
"search_index": 1,
"width": "100px"
@@ -126,6 +126,7 @@
"oldfieldname": "posting_time",
"oldfieldtype": "Time",
"print_width": "100px",
+ "read_only": 1,
"search_index": 0,
"width": "100px"
},
@@ -138,6 +139,7 @@
"oldfieldname": "voucher_type",
"oldfieldtype": "Data",
"print_width": "150px",
+ "read_only": 1,
"search_index": 0,
"width": "150px"
},
@@ -150,6 +152,7 @@
"oldfieldname": "voucher_no",
"oldfieldtype": "Data",
"print_width": "150px",
+ "read_only": 1,
"search_index": 0,
"width": "150px"
},
@@ -161,6 +164,7 @@
"oldfieldname": "voucher_detail_no",
"oldfieldtype": "Data",
"print_width": "150px",
+ "read_only": 1,
"width": "150px"
},
{
@@ -172,6 +176,7 @@
"oldfieldname": "actual_qty",
"oldfieldtype": "Currency",
"print_width": "150px",
+ "read_only": 1,
"width": "150px"
},
{
@@ -181,7 +186,8 @@
"label": "Incoming Rate",
"oldfieldname": "incoming_rate",
"oldfieldtype": "Currency",
- "options": "Company:company:default_currency"
+ "options": "Company:company:default_currency",
+ "read_only": 1
},
{
"doctype": "DocField",
@@ -191,6 +197,7 @@
"oldfieldname": "stock_uom",
"oldfieldtype": "Data",
"print_width": "150px",
+ "read_only": 1,
"width": "150px"
},
{
@@ -202,6 +209,7 @@
"oldfieldname": "bin_aqat",
"oldfieldtype": "Currency",
"print_width": "150px",
+ "read_only": 1,
"width": "150px"
},
{
@@ -213,6 +221,7 @@
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"print_width": "150px",
+ "read_only": 1,
"width": "150px"
},
{
@@ -222,7 +231,8 @@
"label": "Stock Value",
"oldfieldname": "stock_value",
"oldfieldtype": "Currency",
- "options": "Company:company:default_currency"
+ "options": "Company:company:default_currency",
+ "read_only": 1
},
{
"doctype": "DocField",
@@ -234,11 +244,19 @@
"oldfieldname": "fcfs_stack",
"oldfieldtype": "Text",
"print_hide": 1,
+ "read_only": 1,
"report_hide": 1,
"search_index": 0
},
{
"doctype": "DocField",
+ "fieldname": "project",
+ "fieldtype": "Link",
+ "label": "Project",
+ "options": "Project"
+ },
+ {
+ "doctype": "DocField",
"fieldname": "company",
"fieldtype": "Select",
"in_filter": 1,
@@ -247,6 +265,7 @@
"oldfieldtype": "Data",
"options": "link:Company",
"print_width": "150px",
+ "read_only": 1,
"search_index": 0,
"width": "150px"
},
@@ -259,6 +278,7 @@
"oldfieldname": "fiscal_year",
"oldfieldtype": "Data",
"print_width": "150px",
+ "read_only": 1,
"search_index": 0,
"width": "150px"
},
@@ -272,10 +292,20 @@
"oldfieldtype": "Select",
"options": "\nYes\nNo",
"print_width": "100px",
+ "read_only": 1,
"search_index": 0,
"width": "100px"
},
{
- "doctype": "DocPerm"
+ "amend": 0,
+ "cancel": 0,
+ "create": 0,
+ "doctype": "DocPerm",
+ "role": "Material User",
+ "write": 0
+ },
+ {
+ "doctype": "DocPerm",
+ "role": "Accounts Manager"
}
]
\ No newline at end of file
diff --git a/stock/page/stock_balance/stock_balance.js b/stock/page/stock_balance/stock_balance.js
index 47a3344..163b74f 100644
--- a/stock/page/stock_balance/stock_balance.js
+++ b/stock/page/stock_balance/stock_balance.js
@@ -35,7 +35,7 @@
this._super(wrapper, {
title: "Stock Balance",
doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry", "Brand",
- "Stock Entry"],
+ "Stock Entry", "Project"],
});
},
setup_columns: function() {
@@ -76,6 +76,10 @@
default_value: "Select Warehouse...", filter: function(val, item, opts, me) {
return me.apply_zero_filter(val, item, opts, me);
}},
+ {fieldtype:"Select", label: "Project", link:"Project",
+ default_value: "Select Project...", filter: function(val, item, opts, me) {
+ return me.apply_zero_filter(val, item, opts, me);
+ }, link_formatter: {filter_input: "project"}},
{fieldtype:"Date", label: "From Date"},
{fieldtype:"Label", label: "To"},
{fieldtype:"Date", label: "To Date"},
@@ -105,7 +109,8 @@
var sl = data[i];
var sl_posting_date = dateutil.str_to_obj(sl.posting_date);
- if(me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) {
+ if((me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) &&
+ (me.is_default("project") ? true : me.project == sl.project)) {
var item = me.item_by_name[sl.item_code];
var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
var valuation_method = item.valuation_method ?
diff --git a/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css
index 712c748..e2c0db5 100644
--- a/website/doctype/style_settings/custom_template.css
+++ b/website/doctype/style_settings/custom_template.css
@@ -69,7 +69,6 @@
.navbar-inverse .navbar-inner {
background-color: #{{ doc.top_bar_background or "444444"}};
background-repeat: repeat-x;
- border-color: transparent;
background-image: none;
}
diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py
index 71478a4..58dca7b 100644
--- a/website/doctype/style_settings/style_settings.py
+++ b/website/doctype/style_settings/style_settings.py
@@ -85,7 +85,7 @@
"UPPERCASE": "uppercase",
"Title Case":"capitalize",
"lowercase": "lowercase"
- }[self.doc.heading_text_as]
+ }.get(self.doc.heading_text_as) or ""
self.doc.at_import = ""
for f in fonts: