Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/buying/page/purchase_analytics/purchase_analytics.js b/buying/page/purchase_analytics/purchase_analytics.js
index 6919ad3..7d8171e 100644
--- a/buying/page/purchase_analytics/purchase_analytics.js
+++ b/buying/page/purchase_analytics/purchase_analytics.js
@@ -35,8 +35,10 @@
page: wrapper,
parent: $(wrapper).find('.layout-main'),
appframe: wrapper.appframe,
- doctypes: ["Item", "Item Group", "Supplier", "Supplier Type", "Company",
- "Purchase Invoice", "Purchase Invoice Item", "Fiscal Year"],
+ doctypes: ["Item", "Item Group", "Supplier", "Supplier Type", "Company", "Fiscal Year",
+ "Purchase Invoice", "Purchase Invoice Item",
+ "Purchase Order", "Purchase Order Item[Purchase Analytics]",
+ "Purchase Receipt", "Purchase Receipt Item[Purchase Analytics]"],
tree_grid: { show: true }
});
@@ -102,6 +104,8 @@
filter: function(val, item, opts, me) {
return me.apply_zero_filter(val, item, opts, me);
}},
+ {fieldtype:"Select", label: "Based On", options:["Purchase Invoice",
+ "Purchase Order", "Purchase Receipt"]},
{fieldtype:"Select", label: "Value or Qty", options:["Value", "Quantity"]},
{fieldtype:"Select", label: "Company", link:"Company",
default_value: "Select Company..."},
@@ -124,7 +128,11 @@
this.filter_inputs.tree_type.change(function() {
me.filter_inputs.refresh.click();
});
-
+
+ this.filter_inputs.based_on.change(function() {
+ me.filter_inputs.refresh.click();
+ });
+
this.show_zero_check()
this.setup_plot_check();
},
@@ -135,8 +143,6 @@
prepare_data: function() {
var me = this;
if (!this.tl) {
- this.make_transaction_list("Purchase Invoice", "Purchase Invoice Item");
-
// add 'Not Set' Supplier & Item
// Add 'All Supplier Types' Supplier Type
// (Supplier / Item are not mandatory!!)
@@ -164,6 +170,11 @@
});
}
+ if (!this.tl || !this.tl[this.based_on]) {
+ this.make_transaction_list(this.based_on, this.based_on + " Item");
+ }
+
+
if(!this.data || me.item_type != me.tree_type) {
if(me.tree_type=='Supplier') {
var items = wn.report_dump.data["Supplier"];
@@ -214,11 +225,12 @@
var to_date = dateutil.str_to_obj(this.to_date);
var is_val = this.value_or_qty == 'Value';
- $.each(this.tl, function(i, tl) {
+ $.each(this.tl[this.based_on], function(i, tl) {
if (me.is_default('company') ? true : me.apply_filter(tl, "company")) {
var posting_date = dateutil.str_to_obj(tl.posting_date);
if (posting_date >= from_date && posting_date <= to_date) {
- var item = me.item_by_name[tl[me.tree_grid.item_key]] || me.item_by_name['Not Set'];
+ var item = me.item_by_name[tl[me.tree_grid.item_key]] ||
+ me.item_by_name['Not Set'];
item[me.column_map[tl.posting_date].field] += (is_val ? tl.amount : tl.qty);
}
}
diff --git a/selling/doctype/lead/lead.txt b/selling/doctype/lead/lead.txt
index 0d4983a..688c653 100644
--- a/selling/doctype/lead/lead.txt
+++ b/selling/doctype/lead/lead.txt
@@ -1,8 +1,8 @@
[
{
- "creation": "2013-01-10 16:34:18",
+ "creation": "2013-01-22 16:50:33",
"docstatus": 0,
- "modified": "2013-01-22 14:56:03",
+ "modified": "2013-01-24 16:06:05",
"modified_by": "Administrator",
"owner": "Administrator"
},
@@ -227,7 +227,7 @@
"oldfieldtype": "Data"
},
{
- "description": "<a href=\"javascript:cur_frm.cscript.TerritoryHelp();\">To manage Territory, click here</a>",
+ "description": "<a href=\"#!Sales Browser/Territory\">To manage Territory, click here</a>",
"doctype": "DocField",
"fieldname": "territory",
"fieldtype": "Link",
@@ -470,6 +470,6 @@
{
"cancel": 0,
"doctype": "DocPerm",
- "role": "System Manager"
+ "role": "Guest"
}
]
\ No newline at end of file
diff --git a/selling/page/sales_analytics/sales_analytics.js b/selling/page/sales_analytics/sales_analytics.js
index 3d54203..499c6c0 100644
--- a/selling/page/sales_analytics/sales_analytics.js
+++ b/selling/page/sales_analytics/sales_analytics.js
@@ -34,8 +34,10 @@
page: wrapper,
parent: $(wrapper).find('.layout-main'),
appframe: wrapper.appframe,
- doctypes: ["Item", "Item Group", "Customer", "Customer Group", "Company",
- "Sales Invoice", "Sales Invoice Item", "Territory"],
+ doctypes: ["Item", "Item Group", "Customer", "Customer Group", "Company", "Territory",
+ "Fiscal Year", "Sales Invoice", "Sales Invoice Item",
+ "Sales Order", "Sales Order Item[Sales Analytics]",
+ "Delivery Note", "Delivery Note Item[Sales Analytics]"],
tree_grid: { show: true }
});
@@ -45,13 +47,7 @@
show: true,
item_key: "customer",
parent_field: "parent_customer_group",
- formatter: function(item) {
- // return repl('<a href="#Report2/stock-invoices/customer=%(enc_value)s">%(value)s</a>', {
- // value: item.name,
- // enc_value: encodeURIComponent(item.name)
- // });
- return item.name;
- }
+ formatter: function(item) { return item.name; }
},
"Customer": {
label: "Customer",
@@ -110,6 +106,8 @@
filter: function(val, item, opts, me) {
return me.apply_zero_filter(val, item, opts, me);
}},
+ {fieldtype:"Select", label: "Based On", options:["Sales Invoice",
+ "Sales Order", "Delivery Note"]},
{fieldtype:"Select", label: "Value or Qty", options:["Value", "Quantity"]},
{fieldtype:"Select", label: "Company", link:"Company",
default_value: "Select Company..."},
@@ -132,6 +130,10 @@
this.filter_inputs.tree_type.change(function() {
me.filter_inputs.refresh.click();
});
+
+ this.filter_inputs.based_on.change(function() {
+ me.filter_inputs.refresh.click();
+ });
this.show_zero_check()
this.setup_plot_check();
@@ -143,8 +145,6 @@
prepare_data: function() {
var me = this;
if (!this.tl) {
- this.make_transaction_list("Sales Invoice", "Sales Invoice Item");
-
// add 'Not Set' Customer & Item
// (Customer / Item are not mandatory!!)
wn.report_dump.data["Customer"].push({
@@ -160,6 +160,10 @@
id: "Not Set",
});
}
+
+ if (!this.tl || !this.tl[this.based_on]) {
+ this.make_transaction_list(this.based_on, this.based_on + " Item");
+ }
if(!this.data || me.item_type != me.tree_type) {
if(me.tree_type=='Customer') {
@@ -214,11 +218,12 @@
var to_date = dateutil.str_to_obj(this.to_date);
var is_val = this.value_or_qty == 'Value';
- $.each(this.tl, function(i, tl) {
+ $.each(this.tl[this.based_on], function(i, tl) {
if (me.is_default('company') ? true : me.apply_filter(tl, "company")) {
var posting_date = dateutil.str_to_obj(tl.posting_date);
if (posting_date >= from_date && posting_date <= to_date) {
- var item = me.item_by_name[tl[me.tree_grid.item_key]] || me.item_by_name['Not Set'];
+ var item = me.item_by_name[tl[me.tree_grid.item_key]] ||
+ me.item_by_name['Not Set'];
item[me.column_map[tl.posting_date].field] += (is_val ? tl.amount : tl.qty);
}
}
diff --git a/startup/report_data_map.py b/startup/report_data_map.py
index 06bbf44..dc1833d 100644
--- a/startup/report_data_map.py
+++ b/startup/report_data_map.py
@@ -134,6 +134,7 @@
"warehouse": ["Warehouse", "name"]
},
},
+
"Sales Order Item": {
"columns": ["item_code", "(ifnull(qty, 0) - ifnull(delivered_qty, 0)) as qty",
"reserved_warehouse as warehouse"],
@@ -185,6 +186,42 @@
"item_code": ["Item", "name"]
}
},
+ "Sales Order": {
+ "columns": ["name", "customer", "transaction_date as posting_date", "company"],
+ "conditions": ["docstatus=1"],
+ "order_by": "transaction_date",
+ "links": {
+ "customer": ["Customer", "name"],
+ "company":["Company", "name"]
+ }
+ },
+ "Sales Order Item[Sales Analytics]": {
+ "columns": ["parent", "item_code", "qty", "amount"],
+ "conditions": ["docstatus=1", "ifnull(parent, '')!=''"],
+ "order_by": "parent",
+ "links": {
+ "parent": ["Sales Order", "name"],
+ "item_code": ["Item", "name"]
+ }
+ },
+ "Delivery Note": {
+ "columns": ["name", "customer", "posting_date", "company"],
+ "conditions": ["docstatus=1"],
+ "order_by": "posting_date",
+ "links": {
+ "customer": ["Customer", "name"],
+ "company":["Company", "name"]
+ }
+ },
+ "Delivery Note Item[Sales Analytics]": {
+ "columns": ["parent", "item_code", "qty", "amount"],
+ "conditions": ["docstatus=1", "ifnull(parent, '')!=''"],
+ "order_by": "parent",
+ "links": {
+ "parent": ["Delivery Note", "name"],
+ "item_code": ["Item", "name"]
+ }
+ },
"Supplier": {
"columns": ["name", "if(supplier_name=name, '', supplier_name) as supplier_name",
"supplier_type as parent_supplier_type"],
@@ -217,7 +254,42 @@
"item_code": ["Item", "name"]
}
},
-
+ "Purchase Order": {
+ "columns": ["name", "supplier", "transaction_date as posting_date", "company"],
+ "conditions": ["docstatus=1"],
+ "order_by": "posting_date",
+ "links": {
+ "supplier": ["Supplier", "name"],
+ "company":["Company", "name"]
+ }
+ },
+ "Purchase Order Item[Purchase Analytics]": {
+ "columns": ["parent", "item_code", "qty", "amount"],
+ "conditions": ["docstatus=1", "ifnull(parent, '')!=''"],
+ "order_by": "parent",
+ "links": {
+ "parent": ["Purchase Order", "name"],
+ "item_code": ["Item", "name"]
+ }
+ },
+ "Purchase Receipt": {
+ "columns": ["name", "supplier", "posting_date", "company"],
+ "conditions": ["docstatus=1"],
+ "order_by": "posting_date",
+ "links": {
+ "supplier": ["Supplier", "name"],
+ "company":["Company", "name"]
+ }
+ },
+ "Purchase Receipt Item[Purchase Analytics]": {
+ "columns": ["parent", "item_code", "qty", "amount"],
+ "conditions": ["docstatus=1", "ifnull(parent, '')!=''"],
+ "order_by": "parent",
+ "links": {
+ "parent": ["Purchase Receipt", "name"],
+ "item_code": ["Item", "name"]
+ }
+ },
# Support
"Support Ticket": {
"columns": ["name","status","creation","resolution_date","first_responded_on"],