Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/.gitignore b/.gitignore
index 99a0c8a..dc2ad3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.pyc
+*.py~
*.comp.js
.DS_Store
patch.log
diff --git a/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt b/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
index db1ebb6..93668b6 100755
--- a/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
+++ b/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-07-03 13:29:48",
+ "creation": "2012-12-19 22:38:53",
"modified_by": "Administrator",
- "modified": "2012-12-19 11:57:47"
+ "modified": "2013-01-04 13:15:09"
},
{
"istable": 1,
@@ -40,17 +40,18 @@
},
{
"oldfieldtype": "Data",
- "search_index": 0,
"doctype": "DocField",
"label": "Item Name",
"oldfieldname": "item_name",
"fieldname": "item_name",
"fieldtype": "Data",
+ "search_index": 0,
"reqd": 1,
"permlevel": 0,
"in_filter": 0
},
{
+ "print_width": "300px",
"oldfieldtype": "Text",
"doctype": "DocField",
"label": "Description",
@@ -74,6 +75,15 @@
{
"print_hide": 1,
"doctype": "DocField",
+ "label": "UOM",
+ "options": "UOM",
+ "fieldname": "uom",
+ "fieldtype": "Link",
+ "permlevel": 0
+ },
+ {
+ "print_hide": 1,
+ "doctype": "DocField",
"label": "Ref Rate ",
"fieldname": "import_ref_rate",
"fieldtype": "Currency",
@@ -140,19 +150,21 @@
},
{
"print_hide": 1,
+ "print_width": "120px",
"permlevel": 0,
"oldfieldtype": "Link",
"doctype": "DocField",
"label": "Expense Head",
"oldfieldname": "expense_head",
"width": "120px",
- "options": "Account",
"fieldname": "expense_head",
"fieldtype": "Link",
- "reqd": 1
+ "reqd": 1,
+ "options": "Account"
},
{
"print_hide": 1,
+ "print_width": "120px",
"oldfieldtype": "Link",
"doctype": "DocField",
"label": "Cost Center",
@@ -175,15 +187,6 @@
},
{
"print_hide": 1,
- "doctype": "DocField",
- "label": "UOM",
- "options": "UOM",
- "fieldname": "uom",
- "fieldtype": "Link",
- "permlevel": 0
- },
- {
- "print_hide": 1,
"oldfieldtype": "Data",
"doctype": "DocField",
"label": "Brand",
@@ -200,35 +203,35 @@
"label": "Item Group",
"oldfieldname": "item_group",
"permlevel": 1,
- "options": "Item Group",
"fieldname": "item_group",
"fieldtype": "Link",
"search_index": 1,
"hidden": 1,
+ "options": "Item Group",
"in_filter": 1
},
{
"print_hide": 1,
"oldfieldtype": "Link",
- "search_index": 1,
"doctype": "DocField",
"label": "Pur Order",
"oldfieldname": "purchase_order",
"options": "Purchase Order",
"fieldname": "purchase_order",
"fieldtype": "Link",
+ "search_index": 1,
"permlevel": 1,
"in_filter": 1
},
{
"print_hide": 1,
"oldfieldtype": "Data",
- "search_index": 1,
"doctype": "DocField",
"label": "Purchase Order Item",
"oldfieldname": "po_detail",
"fieldname": "po_detail",
"fieldtype": "Data",
+ "search_index": 1,
"hidden": 1,
"permlevel": 1,
"in_filter": 1
@@ -236,25 +239,25 @@
{
"print_hide": 1,
"oldfieldtype": "Link",
- "search_index": 1,
"doctype": "DocField",
"label": "Pur Receipt",
"oldfieldname": "purchase_receipt",
"options": "Purchase Receipt",
"fieldname": "purchase_receipt",
"fieldtype": "Link",
+ "search_index": 1,
"permlevel": 1,
"in_filter": 1
},
{
"print_hide": 1,
"oldfieldtype": "Data",
- "search_index": 1,
"doctype": "DocField",
"label": "PR Detail",
"oldfieldname": "pr_detail",
"fieldname": "pr_detail",
"fieldtype": "Data",
+ "search_index": 1,
"hidden": 1,
"permlevel": 1,
"in_filter": 1
diff --git a/accounts/utils/__init__.py b/accounts/utils/__init__.py
index c4a0042..8ad1899 100644
--- a/accounts/utils/__init__.py
+++ b/accounts/utils/__init__.py
@@ -28,8 +28,8 @@
subdate(adddate(year_start_date, interval 1 year), interval 1 day)
as year_end_date
from `tabFiscal Year`
- where %s >= year_start_date and %s < adddate(year_start_date, interval 1 year)""",
- (date, date))
+ where %s >= year_start_date and %s < adddate(year_start_date, interval 1 year)
+ order by year_start_date desc""", (date, date))
if not fy:
error_msg = """%s not in any Fiscal Year""" % formatdate(date)
diff --git a/buying/doctype/purchase_order_item/purchase_order_item.txt b/buying/doctype/purchase_order_item/purchase_order_item.txt
index 9f8151d..cbe2cde 100755
--- a/buying/doctype/purchase_order_item/purchase_order_item.txt
+++ b/buying/doctype/purchase_order_item/purchase_order_item.txt
@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-08-06 20:00:38",
+ "creation": "2012-12-19 22:38:55",
"modified_by": "Administrator",
- "modified": "2012-12-19 11:57:28"
+ "modified": "2013-01-04 13:13:47"
},
{
"istable": 1,
@@ -78,6 +78,7 @@
"in_filter": 1
},
{
+ "print_width": "300px",
"oldfieldtype": "Small Text",
"doctype": "DocField",
"label": "Description",
@@ -89,6 +90,7 @@
"permlevel": 0
},
{
+ "print_width": "60px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
@@ -101,6 +103,20 @@
"permlevel": 0
},
{
+ "print_hide": 0,
+ "print_width": "100px",
+ "permlevel": 0,
+ "oldfieldtype": "Link",
+ "doctype": "DocField",
+ "label": "UOM",
+ "oldfieldname": "uom",
+ "width": "100px",
+ "fieldname": "uom",
+ "fieldtype": "Link",
+ "reqd": 1,
+ "options": "UOM"
+ },
+ {
"print_hide": 1,
"doctype": "DocField",
"label": "Ref Rate ",
@@ -146,6 +162,7 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
@@ -194,20 +211,8 @@
"in_filter": 1
},
{
- "print_hide": 0,
- "oldfieldtype": "Link",
- "doctype": "DocField",
- "label": "UOM",
- "oldfieldname": "uom",
- "width": "100px",
- "options": "UOM",
- "fieldname": "uom",
- "fieldtype": "Link",
- "reqd": 1,
- "permlevel": 0
- },
- {
"print_hide": 1,
+ "print_width": "100px",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "UOM Conversion Factor",
@@ -221,6 +226,7 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"oldfieldtype": "Data",
"doctype": "DocField",
"label": "Stock UOM",
@@ -247,6 +253,7 @@
{
"print_hide": 1,
"permlevel": 1,
+ "print_width": "120px",
"no_copy": 0,
"oldfieldtype": "Link",
"doctype": "DocField",
@@ -263,12 +270,12 @@
{
"print_hide": 1,
"oldfieldtype": "Date",
- "search_index": 0,
"doctype": "DocField",
"label": "Purchase Request Date",
"oldfieldname": "prevdoc_date",
"fieldname": "prevdoc_date",
"fieldtype": "Date",
+ "search_index": 0,
"hidden": 1,
"permlevel": 1,
"in_filter": 1
@@ -326,15 +333,16 @@
"label": "Item Group",
"oldfieldname": "item_group",
"permlevel": 1,
- "options": "Item Group",
"fieldname": "item_group",
"fieldtype": "Link",
"search_index": 0,
"hidden": 1,
+ "options": "Item Group",
"in_filter": 1
},
{
"print_hide": 1,
+ "print_width": "100px",
"no_copy": 1,
"oldfieldtype": "Currency",
"doctype": "DocField",
@@ -361,11 +369,11 @@
{
"print_hide": 1,
"default": "0.00",
- "no_copy": 1,
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Billed Quantity",
"oldfieldname": "billed_qty",
+ "no_copy": 1,
"fieldname": "billed_qty",
"fieldtype": "Currency",
"hidden": 0,
diff --git a/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt b/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
index 97cddf7..40d5607 100644
--- a/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
+++ b/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-08-06 20:00:36",
+ "creation": "2012-12-19 22:38:54",
"modified_by": "Administrator",
- "modified": "2012-12-19 11:56:59"
+ "modified": "2013-01-04 13:14:13"
},
{
"istable": 1,
@@ -63,6 +63,7 @@
"in_filter": 1
},
{
+ "print_width": "300px",
"oldfieldtype": "Small Text",
"doctype": "DocField",
"label": "Description",
@@ -74,6 +75,7 @@
"permlevel": 0
},
{
+ "print_width": "60px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
@@ -86,6 +88,20 @@
"permlevel": 0
},
{
+ "print_hide": 0,
+ "print_width": "100px",
+ "permlevel": 0,
+ "oldfieldtype": "Link",
+ "doctype": "DocField",
+ "label": "UOM",
+ "oldfieldname": "uom",
+ "width": "100px",
+ "fieldname": "uom",
+ "fieldtype": "Link",
+ "reqd": 1,
+ "options": "UOM"
+ },
+ {
"print_hide": 1,
"doctype": "DocField",
"label": "Ref Rate ",
@@ -131,6 +147,7 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
@@ -160,11 +177,11 @@
"doctype": "DocField",
"label": "Warehouse",
"oldfieldname": "warehouse",
+ "options": "Warehouse",
"fieldname": "warehouse",
"fieldtype": "Link",
"reqd": 0,
"hidden": 0,
- "options": "Warehouse",
"permlevel": 0
},
{
@@ -179,19 +196,6 @@
"in_filter": 1
},
{
- "print_hide": 0,
- "oldfieldtype": "Link",
- "doctype": "DocField",
- "label": "UOM",
- "oldfieldname": "uom",
- "width": "100px",
- "options": "UOM",
- "fieldname": "uom",
- "fieldtype": "Link",
- "reqd": 1,
- "permlevel": 0
- },
- {
"print_hide": 1,
"no_copy": 0,
"oldfieldtype": "Data",
@@ -206,6 +210,7 @@
{
"print_hide": 1,
"permlevel": 1,
+ "print_width": "120px",
"no_copy": 0,
"oldfieldtype": "Link",
"doctype": "DocField",
@@ -222,12 +227,12 @@
{
"print_hide": 1,
"oldfieldtype": "Date",
- "search_index": 0,
"doctype": "DocField",
"label": "Purchase Request Date",
"oldfieldname": "prevdoc_date",
"fieldname": "prevdoc_date",
"fieldtype": "Date",
+ "search_index": 0,
"hidden": 1,
"permlevel": 1,
"in_filter": 1
@@ -265,11 +270,11 @@
"label": "Item Group",
"oldfieldname": "item_group",
"permlevel": 1,
- "options": "Item Group",
"fieldname": "item_group",
"fieldtype": "Link",
"search_index": 0,
"hidden": 1,
+ "options": "Item Group",
"in_filter": 1
},
{
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index 926d607..80d3d5f 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,4 +1,8 @@
erpnext.updates = [
+ ["4th January 2013", [
+ "Support Analytics: Simple Tool to Plot Number Tickets and time to Closing",
+ "Workflow: Added Workflow Help",
+ ]],
["2nd January 2013", [
"Permission Manager: New Design with better help and better advanced permission selection.",
"User Properties: Better way to set User Properties (defaults).",
diff --git a/hr/doctype/expense_claim/expense_claim.py b/hr/doctype/expense_claim/expense_claim.py
index 3906550..9e476e5 100644
--- a/hr/doctype/expense_claim/expense_claim.py
+++ b/hr/doctype/expense_claim/expense_claim.py
@@ -32,10 +32,6 @@
def validate(self):
# if self.doc.exp_approver == self.doc.owner:
# webnotes.msgprint("""Self Approval is not allowed.""", raise_exception=1)
-
- import utilities
- utilities.validate_status(self.doc.approval_status, ["Draft", "Approved", "Rejected"])
-
self.validate_fiscal_year()
self.validate_exp_details()
diff --git a/hr/doctype/leave_application/leave_application.py b/hr/doctype/leave_application/leave_application.py
index ebefc0e..ad3f864 100755
--- a/hr/doctype/leave_application/leave_application.py
+++ b/hr/doctype/leave_application/leave_application.py
@@ -32,10 +32,6 @@
def validate(self):
# if self.doc.leave_approver == self.doc.owner:
- # webnotes.msgprint("""Self Approval is not allowed.""", raise_exception=1)
- import utilities
- utilities.validate_status(self.doc.status, ["Open", "Approved", "Rejected"])
-
self.validate_to_date()
self.validate_balance_leaves()
self.validate_leave_overlap()
@@ -43,7 +39,7 @@
def on_submit(self):
if self.doc.status != "Approved":
- webnotes.msgprint("""Only Approved Leave Applications can be Submitted.""",
+ webnotes.msgprint("""Only Leave Applications with status 'Approved' can be Submitted.""",
raise_exception=True)
def get_holidays(self):
diff --git a/startup/report_data_map.py b/startup/report_data_map.py
index c7a8ab7..41d6cb8 100644
--- a/startup/report_data_map.py
+++ b/startup/report_data_map.py
@@ -215,6 +215,13 @@
"parent": ["Purchase Invoice", "name"],
"item_code": ["Item", "name"]
}
+ },
+
+ # Support
+ "Support Ticket": {
+ "columns": ["name","status","creation","modified"],
+ "conditions": ["docstatus < 2"],
+ "order_by": "creation"
}
}
diff --git a/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt b/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt
index d49dfa9..6d085f1 100755
--- a/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt
+++ b/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt
@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-07-03 13:30:42",
+ "creation": "2012-12-03 10:25:00",
"modified_by": "Administrator",
- "modified": "2012-12-03 10:20:11"
+ "modified": "2013-01-04 13:14:40"
},
{
"istable": 1,
@@ -25,13 +25,13 @@
"doctype": "DocType"
},
{
+ "print_width": "100px",
"permlevel": 0,
"oldfieldtype": "Link",
"doctype": "DocField",
"label": "Item Code",
"oldfieldname": "item_code",
"width": "100px",
- "trigger": "Client",
"fieldname": "item_code",
"fieldtype": "Link",
"search_index": 1,
@@ -53,6 +53,7 @@
"in_filter": 0
},
{
+ "print_width": "300px",
"oldfieldtype": "Text",
"doctype": "DocField",
"label": "Description",
@@ -65,39 +66,39 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Recd Quantity",
"oldfieldname": "received_qty",
"width": "100px",
- "trigger": "Client",
"fieldname": "received_qty",
"fieldtype": "Currency",
"reqd": 1,
"permlevel": 0
},
{
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Accepted Quantity",
"oldfieldname": "qty",
"width": "100px",
- "trigger": "Client",
"fieldname": "qty",
"fieldtype": "Currency",
"permlevel": 0
},
{
"print_hide": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Rejected Quantity",
"oldfieldname": "rejected_qty",
"width": "100px",
- "trigger": "Client",
"fieldname": "rejected_qty",
"fieldtype": "Currency",
"search_index": 0,
@@ -106,6 +107,20 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
+ "permlevel": 0,
+ "oldfieldtype": "Link",
+ "doctype": "DocField",
+ "label": "UOM",
+ "oldfieldname": "uom",
+ "width": "100px",
+ "fieldname": "uom",
+ "fieldtype": "Link",
+ "reqd": 1,
+ "options": "UOM"
+ },
+ {
+ "print_hide": 1,
"doctype": "DocField",
"label": "Ref Rate ",
"fieldname": "import_ref_rate",
@@ -122,14 +137,13 @@
},
{
"print_hide": 0,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Rate",
"oldfieldname": "import_rate",
"width": "100px",
- "trigger": "Client",
"fieldname": "import_rate",
"fieldtype": "Currency",
"permlevel": 0
@@ -153,14 +167,13 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Rate *(Default Curr.)",
"oldfieldname": "purchase_rate",
"width": "100px",
- "trigger": "Client",
"fieldname": "purchase_rate",
"fieldtype": "Currency",
"reqd": 1,
@@ -168,13 +181,13 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Amount (Default Curr.)",
"oldfieldname": "amount",
"width": "100px",
- "trigger": "Client",
"fieldname": "amount",
"fieldtype": "Currency",
"reqd": 0,
@@ -182,40 +195,26 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
+ "permlevel": 0,
"oldfieldtype": "Link",
"doctype": "DocField",
"label": "Accepted Warehouse",
"oldfieldname": "warehouse",
"width": "100px",
- "options": "Warehouse",
"fieldname": "warehouse",
"fieldtype": "Link",
"hidden": 0,
- "permlevel": 0
+ "options": "Warehouse"
},
{
"print_hide": 1,
- "permlevel": 0,
- "oldfieldtype": "Link",
- "colour": "White:FFF",
- "doctype": "DocField",
- "label": "UOM",
- "oldfieldname": "uom",
- "width": "100px",
- "trigger": "Client",
- "fieldname": "uom",
- "fieldtype": "Link",
- "reqd": 1,
- "options": "UOM"
- },
- {
- "print_hide": 1,
+ "print_width": "100px",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Conversion Factor",
"oldfieldname": "conversion_factor",
"width": "100px",
- "trigger": "Client",
"fieldname": "conversion_factor",
"fieldtype": "Currency",
"reqd": 1,
@@ -223,6 +222,7 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"oldfieldtype": "Data",
"doctype": "DocField",
"label": "Stock UOM",
@@ -237,7 +237,6 @@
"print_hide": 0,
"no_copy": 1,
"oldfieldtype": "Text",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Serial No",
"oldfieldname": "serial_no",
@@ -258,22 +257,20 @@
{
"print_hide": 1,
"oldfieldtype": "Link",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Batch No",
"oldfieldname": "batch_no",
- "trigger": "Client",
+ "options": "Batch",
"fieldname": "batch_no",
"fieldtype": "Link",
- "options": "Batch",
"permlevel": 0
},
{
"print_hide": 1,
"permlevel": 1,
+ "print_width": "100px",
"no_copy": 1,
"oldfieldtype": "Link",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Rejected Warehouse",
"oldfieldname": "rejected_warehouse",
@@ -287,7 +284,6 @@
"print_hide": 1,
"no_copy": 1,
"oldfieldtype": "Date",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Required By",
"oldfieldname": "schedule_date",
@@ -299,7 +295,6 @@
},
{
"print_hide": 1,
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Project Name",
"options": "Project",
@@ -312,7 +307,6 @@
"print_hide": 1,
"no_copy": 1,
"oldfieldtype": "Link",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "QA No",
"oldfieldname": "qa_no",
@@ -349,12 +343,12 @@
},
{
"print_hide": 1,
+ "print_width": "100px",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Stock Qty",
"oldfieldname": "stock_qty",
"width": "100px",
- "trigger": "Client",
"fieldname": "stock_qty",
"fieldtype": "Currency",
"permlevel": 0
@@ -362,7 +356,6 @@
{
"print_hide": 1,
"oldfieldtype": "Data",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Prevdoc Doctype",
"oldfieldname": "prevdoc_doctype",
@@ -374,9 +367,9 @@
{
"print_hide": 1,
"permlevel": 1,
+ "print_width": "150px",
"no_copy": 0,
"oldfieldtype": "Link",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "PO No",
"oldfieldname": "prevdoc_docname",
@@ -403,6 +396,7 @@
},
{
"print_hide": 1,
+ "print_width": "150px",
"oldfieldtype": "Currency",
"doctype": "DocField",
"label": "Raw Materials Supplied Cost",
@@ -416,9 +410,9 @@
},
{
"print_hide": 1,
+ "print_width": "150px",
"no_copy": 1,
"oldfieldtype": "Currency",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Item Tax Amount",
"oldfieldname": "item_tax_amount",
@@ -432,9 +426,9 @@
},
{
"print_hide": 1,
+ "print_width": "150px",
"no_copy": 0,
"oldfieldtype": "Data",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Purchase Order Item No",
"oldfieldname": "prevdoc_detail_docname",
@@ -448,22 +442,23 @@
},
{
"print_hide": 1,
+ "permlevel": 1,
+ "print_width": "100px",
"default": "0.00",
"oldfieldtype": "Currency",
"doctype": "DocField",
- "no_copy": 1,
"label": "Billed Quantity",
"oldfieldname": "billed_qty",
- "width": "100px",
+ "no_copy": 1,
"fieldname": "billed_qty",
"fieldtype": "Currency",
- "permlevel": 1
+ "width": "100px"
},
{
"print_hide": 1,
+ "print_width": "80px",
"no_copy": 1,
"oldfieldtype": "Currency",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Valuation Rate",
"oldfieldname": "valuation_rate",
@@ -478,7 +473,6 @@
"print_hide": 1,
"description": "Tax detail table fetched from item master as a string and stored in this field.\nUsed for Taxes and Charges",
"oldfieldtype": "Small Text",
- "colour": "White:FFF",
"doctype": "DocField",
"label": "Item Tax Rate",
"oldfieldname": "item_tax_rate",
@@ -491,8 +485,8 @@
},
{
"print_hide": 1,
- "oldfieldtype": "Check",
"allow_on_submit": 1,
+ "oldfieldtype": "Check",
"doctype": "DocField",
"label": "Page Break",
"oldfieldname": "page_break",
diff --git a/stock/doctype/valuation_control/valuation_control.py~ b/stock/doctype/valuation_control/valuation_control.py~
deleted file mode 100644
index 88ce63e..0000000
--- a/stock/doctype/valuation_control/valuation_control.py~
+++ /dev/null
@@ -1,87 +0,0 @@
-# Please edit this list and import only required elements
-import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-
-# -----------------------------------------------------------------------------------------
-
-
-class DocType:
- def __init__(self, d, dl):
- self.doc, self.doclist = d, dl
-
- # Get FIFO Rate from Stack
- # -------------------------
- def get_fifo_rate(self, fcfs_stack, qty):
- fcfs_val = 0
- withdraw = flt(qty)
- while withdraw:
- batch = fcfs_stack[0]
- if batch[0] <= withdraw:
- # not enough or exactly same qty in current batch, clear batch
- withdraw -= batch[0]
- fcfs_val += (flt(batch[0]) * flt(batch[1]))
- fcfs_stack.pop(0)
- else:
- # all from current batch
- fcfs_val += (flt(withdraw) * flt(batch[1]))
- batch[0] -= withdraw
- withdraw = 0
- fcfs_rate = flt(fcfs_val) / flt(qty)
- return fcfs_rate
-
- # --------------------------------
- # get serializable inventory rate
- # --------------------------------
- def get_serializable_inventory_rate(self, serial_no):
- sr_nos = get_obj("Stock Ledger").get_sr_no_list(serial_no)
- tot = 0
- for s in sr_nos:
- serial_no = s.strip()
- tot += flt(webnotes.conn.get_value('Serial No', serial_no, 'purchase_rate'))
- return tot / len(sr_nos)
-
-
- # ---------------------
- # get valuation method
- # ---------------------
- def get_valuation_method(self, item_code):
- val_method = webnotes.conn.get_value('Item', item_code, 'valuation_method')
- if not val_method:
- val_method = get_defaults().get('valuation_method', 'FIFO')
- return val_method
-
-
- # Get Incoming Rate based on valuation method
- # --------------------------------------------
- def get_incoming_rate(self, posting_date, posting_time, item, warehouse, qty = 0, serial_no = ''):
- msgprint(1)
- in_rate = 0
- val_method = self.get_valuation_method(item)
- bin_obj = get_obj('Warehouse',warehouse).get_bin(item)
- if serial_no:
- in_rate = self.get_serializable_inventory_rate(serial_no)
- elif val_method == 'FIFO':
- in_rate = 0
- if qty:
- prev_sle = bin_obj.get_prev_sle(posting_date, posting_time)
- msgprint(prev_sle)
- fcfs_stack = eval(prev_sle.get('fcfs_stack', '[]') or '[]')
- msgprint(fcfs_stack)
- in_rate = fcfs_stack and self.get_fifo_rate(fcfs_stack, qty) or 0
- msgprint(in_rate)
- elif val_method == 'Moving Average':
- prev_sle = bin_obj.get_prev_sle(posting_date, posting_time)
- in_rate = prev_sle and prev_sle.get('valuation_rate', 0) or 0
- return in_rate
diff --git a/stock/page/stock_balance/stock_balance.js b/stock/page/stock_balance/stock_balance.js
index da6b831..90c7943 100644
--- a/stock/page/stock_balance/stock_balance.js
+++ b/stock/page/stock_balance/stock_balance.js
@@ -130,6 +130,12 @@
}
}
}
+
+ // opening + diff = closing
+ // adding opening, since diff already added to closing
+ $.each(me.item_by_name, function(key, item) {
+ item.closing += item.opening;
+ });
},
update_groups: function() {
diff --git a/support/page/support_analytics/__init__.py b/support/page/support_analytics/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/support/page/support_analytics/__init__.py
diff --git a/support/page/support_analytics/support_analytics.js b/support/page/support_analytics/support_analytics.js
new file mode 100644
index 0000000..e310df3
--- /dev/null
+++ b/support/page/support_analytics/support_analytics.js
@@ -0,0 +1,91 @@
+wn.pages['support-analytics'].onload = function(wrapper) {
+ wn.ui.make_app_page({
+ parent: wrapper,
+ title: 'Support Analytics',
+ single_column: true
+ });
+
+ new erpnext.SupportAnalytics(wrapper);
+
+ wrapper.appframe.add_home_breadcrumb()
+ wrapper.appframe.add_module_breadcrumb("Support")
+ wrapper.appframe.add_breadcrumb("icon-bar-chart")
+}
+
+erpnext.SupportAnalytics = wn.views.GridReportWithPlot.extend({
+ init: function(wrapper) {
+ this._super({
+ title: "Support Analtyics",
+ page: wrapper,
+ parent: $(wrapper).find('.layout-main'),
+ appframe: wrapper.appframe,
+ doctypes: ["Support Ticket", "Fiscal Year"],
+ });
+ },
+
+ filters: [
+ {fieldtype:"Select", label: "Fiscal Year", link:"Fiscal Year",
+ default_value: "Select Fiscal Year..."},
+ {fieldtype:"Date", label: "From Date"},
+ {fieldtype:"Label", label: "To"},
+ {fieldtype:"Date", label: "To Date"},
+ {fieldtype:"Select", label: "Range",
+ options:["Daily", "Weekly", "Monthly", "Quarterly", "Yearly"]},
+ {fieldtype:"Button", label: "Refresh", icon:"icon-refresh icon-white", cssClass:"btn-info"},
+ {fieldtype:"Button", label: "Reset Filters"}
+ ],
+
+ setup_columns: function() {
+ var std_columns = [
+ {id: "check", name: "Plot", field: "check", width: 30,
+ formatter: this.check_formatter},
+ {id: "status", name: "Status", field: "status", width: 100},
+ ];
+ this.make_date_range_columns();
+ this.columns = std_columns.concat(this.columns);
+ },
+
+ prepare_data: function() {
+ // add Opening, Closing, Totals rows
+ // if filtered by account and / or voucher
+ var me = this;
+ var total_tickets = {status:"All Tickets", "id": "all-tickets",
+ checked:true};
+ var days_to_close = {status:"Days to Close", "id":"days-to-close",
+ checked:false};
+ var hours_to_close = {status:"Hours to Close", "id":"hours-to-close",
+ checked:false};
+
+
+ $.each(wn.report_dump.data["Support Ticket"], function(i, d) {
+ var dateobj = dateutil.str_to_obj(d.creation);
+ var date = d.creation.split(" ")[0];
+ var col = me.column_map[date];
+ if(col) {
+ // just count
+ var day_diff = dateutil.get_diff(d.modified, d.creation);
+ var hour_diff = dateutil.get_hour_diff(d.modified, d.creation);
+
+ total_tickets[col.field] = flt(total_tickets[col.field]) + 1;
+ days_to_close[col.field] = flt(days_to_close[col.field]) + day_diff;
+ hours_to_close[col.field] = flt(hours_to_close[col.field]) + hour_diff;
+ }
+ });
+
+ // make averages
+ $.each(this.columns, function(i, col) {
+ if(col.formatter==me.currency_formatter && total_tickets[col.field]) {
+ days_to_close[col.field] = flt(days_to_close[col.field]) / flt(total_tickets[col.field]);
+ hours_to_close[col.field] = flt(hours_to_close[col.field]) / flt(total_tickets[col.field]);
+ }
+ })
+
+ this.data = [total_tickets, days_to_close, hours_to_close];
+ },
+
+ get_plot_points: function(item, col, idx) {
+ return [[dateutil.str_to_obj(col.id).getTime(), item[col.field]],
+ [dateutil.user_to_obj(col.name).getTime(), item[col.field]]];
+ }
+
+});
\ No newline at end of file
diff --git a/support/page/support_analytics/support_analytics.txt b/support/page/support_analytics/support_analytics.txt
new file mode 100644
index 0000000..587bd93
--- /dev/null
+++ b/support/page/support_analytics/support_analytics.txt
@@ -0,0 +1,32 @@
+[
+ {
+ "owner": "Administrator",
+ "docstatus": 0,
+ "creation": "2013-01-04 15:31:45",
+ "modified_by": "Administrator",
+ "modified": "2013-01-04 15:38:44"
+ },
+ {
+ "name": "__common__",
+ "title": "Support Analytics",
+ "doctype": "Page",
+ "module": "Support",
+ "standard": "Yes",
+ "page_name": "support-analytics"
+ },
+ {
+ "name": "__common__",
+ "parent": "support-analytics",
+ "doctype": "Page Role",
+ "parenttype": "Page",
+ "role": "Support Team",
+ "parentfield": "roles"
+ },
+ {
+ "name": "support-analytics",
+ "doctype": "Page"
+ },
+ {
+ "doctype": "Page Role"
+ }
+]
\ No newline at end of file
diff --git a/support/page/support_home/support_home.html b/support/page/support_home/support_home.html
index ed01fa0..59eff10 100644
--- a/support/page/support_home/support_home.html
+++ b/support/page/support_home/support_home.html
@@ -26,6 +26,16 @@
</div>
<div style="clear: both"></div>
<hr>
+ <div style="width: 48%; float: left;">
+ <h5><a href="#support-analytics" data-role="Analytics, Support Manager">
+ Support Analytics</a>
+ </h5>
+ <p class="help">Support Ticket trends and response.</p>
+ </div>
+ <div style="width: 48%; float: right;">
+ </div>
+ <div style="clear: both;"></div>
+ <hr>
<h4>Reports</h4>
<div class="reports-list"></div>
</div>
diff --git a/website/doctype/product_settings/product_settings.py b/website/doctype/product_settings/product_settings.py
index 0137ff1..4e72be6 100644
--- a/website/doctype/product_settings/product_settings.py
+++ b/website/doctype/product_settings/product_settings.py
@@ -10,4 +10,8 @@
def on_update(self):
"""clear web cache"""
from website.utils import clear_cache
- clear_cache()
\ No newline at end of file
+ clear_cache()
+
+ if self.doc.default_product_category:
+ webnotes.model_wrapper("Item Group",
+ self.doc.default_product_category).save()
\ No newline at end of file