From d52e702c84f0ae569fbf743428f01a009e030a75 Mon Sep 17 00:00:00 2001
From: Nabin Hait
Date: Wed, 2 Jan 2013 11:20:32 +0530
Subject: [PATCH 1/8] updated latest updates page
---
home/page/latest_updates/latest_updates.js | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index 304947e06f..abcb27ac45 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,4 +1,11 @@
erpnext.updates = [
+ ["1st January 2013", [
+ "Trial Balance: Added an option to see the report without period closing entry\
+ You will find this checkbox at the bottom of the report.",
+ "General Ledger: Now, on filter of any account group, you will have an option to see \
+ the report grouped by ledgers under that group and with opening \
+ and closing balance for each of them."
+ ]]
["28th December 2012", [
"Workflow: Added System for Multi-level approval before Submission. \
See video at
Date: Wed, 2 Jan 2013 11:37:30 +0530
Subject: [PATCH 2/8] removed rename master link from setup
---
setup/page/setup/setup.html | 4 ----
1 file changed, 4 deletions(-)
diff --git a/setup/page/setup/setup.html b/setup/page/setup/setup.html
index 1e7607f6c0..621de3b7ed 100644
--- a/setup/page/setup/setup.html
+++ b/setup/page/setup/setup.html
@@ -49,10 +49,6 @@
Recycle Bin
Un-trash items
-
- Rename Master
- Click on "Rename" on the sidebar of an item for renaming.
-
Email and Notifications
From 325caf33f7f2a079df999b7d96787b257e9145cc Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Wed, 2 Jan 2013 13:42:21 +0530
Subject: [PATCH 3/8] added Send From field in newsletter
---
support/doctype/newsletter/newsletter.js | 5 +++++
support/doctype/newsletter/newsletter.py | 24 +++++++++++++++++++----
support/doctype/newsletter/newsletter.txt | 13 ++++++++++--
3 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/support/doctype/newsletter/newsletter.js b/support/doctype/newsletter/newsletter.js
index 1f75edc9a1..69881cd11d 100644
--- a/support/doctype/newsletter/newsletter.js
+++ b/support/doctype/newsletter/newsletter.js
@@ -23,4 +23,9 @@ cur_frm.cscript.refresh = function(doc) {
});
})
}
+
+ if(doc.__islocal && !doc.send_from) {
+ cur_frm.set_value("send_from",
+ repl("%(fullname)s <%(email)s>", wn.user_info(doc.owner)));
+ }
}
\ No newline at end of file
diff --git a/support/doctype/newsletter/newsletter.py b/support/doctype/newsletter/newsletter.py
index 536b6496dc..c4b622a1a3 100644
--- a/support/doctype/newsletter/newsletter.py
+++ b/support/doctype/newsletter/newsletter.py
@@ -20,6 +20,7 @@ import webnotes
import webnotes.utils
from webnotes.utils import cstr
from webnotes.model.doc import Document
+from webnotes import _
class DocType():
def __init__(self, d, dl):
@@ -51,7 +52,7 @@ class DocType():
"""send emails to leads and customers"""
if self.doc.email_sent:
webnotes.msgprint("""Newsletter has already been sent""", raise_exception=1)
-
+
self.all_recipients = []
self.send_count = {}
@@ -82,8 +83,11 @@ class DocType():
", ".join(["%d %s(s)" % (self.send_count[s], s) for s in self.send_count]))
def test_send(self, doctype="Lead"):
+ self.validate_send()
+
args = self.dt_map[doctype]
- sender = webnotes.utils.get_email_id(self.doc.owner)
+
+ sender = self.doc.send_from or webnotes.utils.get_email_id(self.doc.owner)
recipients = self.doc.test_email_id.split(",")
from webnotes.utils.email_lib.bulk import send
send(recipients = recipients, sender = sender,
@@ -98,12 +102,14 @@ class DocType():
return recipients
def send(self, query_key, doctype):
+ self.validate_send()
+
webnotes.conn.auto_commit_on_many_writes = True
if isinstance(query_key, basestring) and self.query_map.has_key(query_key):
recipients = self.get_recipients(query_key)
else:
recipients = query_key
- sender = webnotes.utils.get_email_id(self.doc.owner)
+ sender = self.doc.send_from or webnotes.utils.get_email_id(self.doc.owner)
args = self.dt_map[doctype]
self.send_count[doctype] = self.send_count.setdefault(doctype, 0) + \
len(recipients)
@@ -112,7 +118,17 @@ class DocType():
send(recipients = recipients, sender = sender,
subject = self.doc.subject, message = self.doc.message,
doctype = doctype, email_field = args["email_field"])
-
+
+ def validate_send(self):
+ if self.doc.fields.get("__islocal"):
+ webnotes.msgprint(_("""Please save the Newsletter before sending."""),
+ raise_exception=1)
+
+ import conf
+ if getattr(conf, "status", None) == "Trial":
+ webnotes.msgprint(_("""Sending newsletters is not allowed for Trial users, \
+ to prevent abuse of this feature."""), raise_exception=1)
+
lead_naming_series = None
def create_lead(email_id):
"""create a lead if it does not exist"""
diff --git a/support/doctype/newsletter/newsletter.txt b/support/doctype/newsletter/newsletter.txt
index 68fbabba16..4382379d08 100644
--- a/support/doctype/newsletter/newsletter.txt
+++ b/support/doctype/newsletter/newsletter.txt
@@ -2,9 +2,9 @@
{
"owner": "Administrator",
"docstatus": 0,
- "creation": "2012-12-07 15:15:31",
+ "creation": "2013-01-01 13:46:34",
"modified_by": "Administrator",
- "modified": "2013-01-01 10:54:40"
+ "modified": "2013-01-02 13:03:29"
},
{
"autoname": "naming_series:",
@@ -107,6 +107,15 @@
"fieldtype": "Section Break",
"permlevel": 0
},
+ {
+ "description": "If specified, send the newsletter using this email address",
+ "no_copy": 1,
+ "doctype": "DocField",
+ "label": "Send From",
+ "fieldname": "send_from",
+ "fieldtype": "Data",
+ "permlevel": 0
+ },
{
"doctype": "DocField",
"label": "Subject",
From 8ab7580d88cf0f74c06aae14246127a0dc01044f Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Wed, 2 Jan 2013 13:48:40 +0530
Subject: [PATCH 4/8] newsletter: allow sending only if write permission
---
support/doctype/newsletter/newsletter.js | 3 ++-
support/doctype/newsletter/newsletter.txt | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/support/doctype/newsletter/newsletter.js b/support/doctype/newsletter/newsletter.js
index 69881cd11d..0a3fbe81fb 100644
--- a/support/doctype/newsletter/newsletter.js
+++ b/support/doctype/newsletter/newsletter.js
@@ -16,7 +16,8 @@
cur_frm.cscript.refresh = function(doc) {
erpnext.hide_naming_series();
- if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved) {
+ if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved
+ && inList(wn.boot.can_write, doc.doctype)) {
cur_frm.add_custom_button('Send', function() {
$c_obj(make_doclist(doc.doctype, doc.name), 'send_emails', '', function(r) {
cur_frm.refresh();
diff --git a/support/doctype/newsletter/newsletter.txt b/support/doctype/newsletter/newsletter.txt
index 4382379d08..04701e86e5 100644
--- a/support/doctype/newsletter/newsletter.txt
+++ b/support/doctype/newsletter/newsletter.txt
@@ -4,7 +4,7 @@
"docstatus": 0,
"creation": "2013-01-01 13:46:34",
"modified_by": "Administrator",
- "modified": "2013-01-02 13:03:29"
+ "modified": "2013-01-02 13:47:36"
},
{
"autoname": "naming_series:",
From 946442d7a5b0cfc7c5c5abbc6fdfc323f2f5193a Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Wed, 2 Jan 2013 13:51:29 +0530
Subject: [PATCH 5/8] added new item-wise pricelist report and deprecated
search criteria of Stock module
---
patches/january_2013/__init__.py | 0
.../deprecate_stock_search_criteria.py | 9 ++
patches/patch_list.py | 4 +
stock/report/item_wise_price_list/__init__.py | 0
.../item_wise_price_list.txt | 20 +++++
stock/search_criteria/__init__.py | 1 -
.../itemwise_price_list/__init__.py | 1 -
.../itemwise_price_list.js | 19 ----
.../itemwise_price_list.txt | 27 ------
.../itemwise_receipt_details/__init__.py | 1 -
.../itemwise_receipt_details.js | 25 ------
.../itemwise_receipt_details.txt | 27 ------
.../shortage_to_purchase_request/__init__.py | 1 -
.../shortage_to_purchase_request.txt | 26 ------
.../stock_aging_report/__init__.py | 1 -
.../stock_aging_report/stock_aging_report.js | 28 ------
.../stock_aging_report/stock_aging_report.py | 32 -------
.../stock_aging_report/stock_aging_report.txt | 27 ------
.../search_criteria/stock_ledger/__init__.py | 1 -
.../stock_ledger/stock_ledger.js | 20 -----
.../stock_ledger/stock_ledger.txt | 29 ------
stock/search_criteria/stock_level/__init__.py | 1 -
.../stock_level/stock_level.js | 22 -----
.../stock_level/stock_level.py | 19 ----
.../stock_level/stock_level.txt | 29 ------
.../search_criteria/stock_report/__init__.py | 1 -
.../stock_report/stock_report.js | 89 -------------------
.../stock_report/stock_report.py | 88 ------------------
.../stock_report/stock_report.txt | 26 ------
29 files changed, 33 insertions(+), 541 deletions(-)
create mode 100644 patches/january_2013/__init__.py
create mode 100644 patches/january_2013/deprecate_stock_search_criteria.py
create mode 100644 stock/report/item_wise_price_list/__init__.py
create mode 100644 stock/report/item_wise_price_list/item_wise_price_list.txt
delete mode 100644 stock/search_criteria/__init__.py
delete mode 100644 stock/search_criteria/itemwise_price_list/__init__.py
delete mode 100644 stock/search_criteria/itemwise_price_list/itemwise_price_list.js
delete mode 100644 stock/search_criteria/itemwise_price_list/itemwise_price_list.txt
delete mode 100644 stock/search_criteria/itemwise_receipt_details/__init__.py
delete mode 100644 stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js
delete mode 100644 stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt
delete mode 100644 stock/search_criteria/shortage_to_purchase_request/__init__.py
delete mode 100644 stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt
delete mode 100644 stock/search_criteria/stock_aging_report/__init__.py
delete mode 100644 stock/search_criteria/stock_aging_report/stock_aging_report.js
delete mode 100644 stock/search_criteria/stock_aging_report/stock_aging_report.py
delete mode 100644 stock/search_criteria/stock_aging_report/stock_aging_report.txt
delete mode 100644 stock/search_criteria/stock_ledger/__init__.py
delete mode 100644 stock/search_criteria/stock_ledger/stock_ledger.js
delete mode 100644 stock/search_criteria/stock_ledger/stock_ledger.txt
delete mode 100644 stock/search_criteria/stock_level/__init__.py
delete mode 100644 stock/search_criteria/stock_level/stock_level.js
delete mode 100644 stock/search_criteria/stock_level/stock_level.py
delete mode 100644 stock/search_criteria/stock_level/stock_level.txt
delete mode 100644 stock/search_criteria/stock_report/__init__.py
delete mode 100644 stock/search_criteria/stock_report/stock_report.js
delete mode 100644 stock/search_criteria/stock_report/stock_report.py
delete mode 100644 stock/search_criteria/stock_report/stock_report.txt
diff --git a/patches/january_2013/__init__.py b/patches/january_2013/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/patches/january_2013/deprecate_stock_search_criteria.py b/patches/january_2013/deprecate_stock_search_criteria.py
new file mode 100644
index 0000000000..d51aadb5cf
--- /dev/null
+++ b/patches/january_2013/deprecate_stock_search_criteria.py
@@ -0,0 +1,9 @@
+import webnotes
+
+def execute():
+ for sc in ["itemwise_price_list", "itemwise_receipt_details",
+ "shortage_to_purchase_request", "stock_aging_report",
+ "stock_ledger", "stock_level", "stock_report",
+ "custom_test2", "custom_test3", "custom_test4",
+ "test_so2", "test_so3"]:
+ webnotes.delete_doc("Search Criteria", sc)
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index b1ebdef5ed..94566d7759 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -574,4 +574,8 @@ patch_list = [
'patch_module': 'patches.december_2012',
'patch_file': 'update_print_width',
},
+ {
+ 'patch_module': 'patches.january_2013',
+ 'patch_file': 'deprecate_stock_search_criteria',
+ },
]
\ No newline at end of file
diff --git a/stock/report/item_wise_price_list/__init__.py b/stock/report/item_wise_price_list/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
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
new file mode 100644
index 0000000000..4427a5b331
--- /dev/null
+++ b/stock/report/item_wise_price_list/item_wise_price_list.txt
@@ -0,0 +1,20 @@
+[
+ {
+ "owner": "Administrator",
+ "docstatus": 0,
+ "creation": "2013-01-02 11:56:33",
+ "modified_by": "Administrator",
+ "modified": "2013-01-02 12:00:38"
+ },
+ {
+ "name": "__common__",
+ "ref_doctype": "Item",
+ "doctype": "Report",
+ "is_standard": "Yes",
+ "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"
+ },
+ {
+ "name": "Item-Wise Price List",
+ "doctype": "Report"
+ }
+]
\ No newline at end of file
diff --git a/stock/search_criteria/__init__.py b/stock/search_criteria/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/itemwise_price_list/__init__.py b/stock/search_criteria/itemwise_price_list/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/itemwise_price_list/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/itemwise_price_list/itemwise_price_list.js b/stock/search_criteria/itemwise_price_list/itemwise_price_list.js
deleted file mode 100644
index b19db63fb0..0000000000
--- a/stock/search_criteria/itemwise_price_list/itemwise_price_list.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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 .
-
-report.customize_filters = function() {
- this.filter_fields_dict['Item'+FILTER_SEP +'ID'].df.in_first_page = 1;
-}
\ No newline at end of file
diff --git a/stock/search_criteria/itemwise_price_list/itemwise_price_list.txt b/stock/search_criteria/itemwise_price_list/itemwise_price_list.txt
deleted file mode 100644
index 9522c83d3a..0000000000
--- a/stock/search_criteria/itemwise_price_list/itemwise_price_list.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-[
- {
- "owner": "harshada@webnotestech.com",
- "docstatus": 0,
- "creation": "2012-04-03 12:49:51",
- "modified_by": "Administrator",
- "modified": "2012-04-03 12:49:51"
- },
- {
- "parent_doc_type": "Item",
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "DESC",
- "filters": "{'Item\u0001Saved':1,'Item Price\u0001Price List Name':'','Item Price\u0001Currency':''}",
- "doc_type": "Item Price",
- "name": "__common__",
- "doctype": "Search Criteria",
- "sort_by": "`tabItem`.`item_name`",
- "page_len": 50,
- "criteria_name": "Itemwise Price List",
- "columns": "Item\u0001Item Name,Item\u0001Item Group,Item Price\u0001Price List Name,Item Price\u0001Ref Rate,Item Price\u0001Currency"
- },
- {
- "name": "itemwise_price_list",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
diff --git a/stock/search_criteria/itemwise_receipt_details/__init__.py b/stock/search_criteria/itemwise_receipt_details/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/itemwise_receipt_details/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js b/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js
deleted file mode 100644
index 641c294bbf..0000000000
--- a/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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 .
-
-report.customize_filters = function() {
- this.filter_fields_dict['Purchase Receipt'+FILTER_SEP +'From Transaction Date'].df['report_default'] = sys_defaults.year_start_date;
- this.filter_fields_dict['Purchase Receipt'+FILTER_SEP +'To Transaction Date'].df['report_default'] = dateutil.obj_to_str(new Date());
- this.filter_fields_dict['Purchase Receipt'+FILTER_SEP +'From Posting Date'].df['report_default'] = sys_defaults.year_start_date;
- this.filter_fields_dict['Purchase Receipt'+FILTER_SEP +'To Posting Date'].df['report_default'] = dateutil.obj_to_str(new Date());
- this.filter_fields_dict['Purchase Receipt'+FILTER_SEP +'Company'].df['report_default'] = sys_defaults.company;
- this.filter_fields_dict['Purchase Receipt'+FILTER_SEP +'Fiscal Year'].df['report_default'] = sys_defaults.fiscal_year;
-
-}
\ No newline at end of file
diff --git a/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt b/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt
deleted file mode 100644
index 7d257272d0..0000000000
--- a/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-[
- {
- "owner": "Administrator",
- "docstatus": 0,
- "creation": "2012-04-11 13:16:55",
- "modified_by": "Administrator",
- "modified": "2012-04-13 11:16:40"
- },
- {
- "parent_doc_type": "Purchase Receipt",
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "DESC",
- "filters": "{\"Purchase Receipt\\u0001Submitted\":1,\"Purchase Receipt\\u0001Status\":[\"\"],\"Purchase Receipt\\u0001Fiscal Year\":[\"\"]}",
- "doc_type": "Purchase Receipt Item",
- "name": "__common__",
- "doctype": "Search Criteria",
- "sort_by": "`tabPurchase Receipt`.`name`",
- "page_len": 50,
- "criteria_name": "Itemwise Receipt Details",
- "columns": "Purchase Receipt\u0001ID,Purchase Receipt\u0001Posting Date,Purchase Receipt Item\u0001Item Code,Purchase Receipt Item\u0001Item Name,Purchase Receipt Item\u0001Accepted Quantity,Purchase Receipt Item\u0001Rejected Quantity,Purchase Receipt Item\u0001UOM,Purchase Receipt Item\u0001Accepted Warehouse,Purchase Receipt Item\u0001Rejected Warehouse,Purchase Receipt Item\u0001Amount"
- },
- {
- "name": "itemwise_receipt_details",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
diff --git a/stock/search_criteria/shortage_to_purchase_request/__init__.py b/stock/search_criteria/shortage_to_purchase_request/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/shortage_to_purchase_request/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt b/stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt
deleted file mode 100644
index 81511b7db8..0000000000
--- a/stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "owner": "wasim@webnotestech.com",
- "docstatus": 0,
- "creation": "2012-03-30 14:50:44",
- "modified_by": "Administrator",
- "modified": "2012-03-30 14:50:44"
- },
- {
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "DESC",
- "filters": "{'Item\u0001Saved':1}",
- "doctype": "Search Criteria",
- "doc_type": "Item",
- "name": "__common__",
- "sort_by": "`tabItem`.`name`",
- "page_len": 50,
- "criteria_name": "Shortage To Purchase Request",
- "columns": "Item\u0001ID,Item\u0001Item Name,Item\u0001Description,Item\u0001Lead Time Days"
- },
- {
- "name": "shortage_to_purchase_request",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
diff --git a/stock/search_criteria/stock_aging_report/__init__.py b/stock/search_criteria/stock_aging_report/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/stock_aging_report/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/stock_aging_report/stock_aging_report.js b/stock/search_criteria/stock_aging_report/stock_aging_report.js
deleted file mode 100644
index 8cc73dd9da..0000000000
--- a/stock/search_criteria/stock_aging_report/stock_aging_report.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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 .
-
-report.customize_filters = function() {
- //this.hide_all_filters();
-
- this.filter_fields_dict['Serial No'+FILTER_SEP +'Status'].df.filter_hide = 1;
-
- this.filter_fields_dict['Serial No'+FILTER_SEP +'ID'].df.in_first_page = 1;
- this.filter_fields_dict['Serial No'+FILTER_SEP +'From Purchase Date'].df.in_first_page = 1;
- this.filter_fields_dict['Serial No'+FILTER_SEP +'To Purchase Date'].df.in_first_page = 1;
-}
-
-//this.mytabs.items['Select Columns'].hide();
-this.mytabs.items['More Filters'].hide();
\ No newline at end of file
diff --git a/stock/search_criteria/stock_aging_report/stock_aging_report.py b/stock/search_criteria/stock_aging_report/stock_aging_report.py
deleted file mode 100644
index 695ad02770..0000000000
--- a/stock/search_criteria/stock_aging_report/stock_aging_report.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# 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
-col = [['In Store Period (in days)', 'Data', '']]
-for c in col:
- colnames.append(str(c[0]))
- coltypes.append(str(c[1]))
- colwidths.append('150px')
- coloptions.append(str(c[2]))
- col_idx[str(c)] = len(colnames) - 1
-
-import datetime
-for r in res:
- if r[col_idx['Purchase Date']]:
- dt = (datetime.date.today() - getdate(r[col_idx['Purchase Date']])).days
- else:
- dt = ''
- r.append(dt)
\ No newline at end of file
diff --git a/stock/search_criteria/stock_aging_report/stock_aging_report.txt b/stock/search_criteria/stock_aging_report/stock_aging_report.txt
deleted file mode 100644
index 61287fa897..0000000000
--- a/stock/search_criteria/stock_aging_report/stock_aging_report.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-[
- {
- "owner": "ashwini@webnotestech.com",
- "docstatus": 0,
- "creation": "2012-04-03 12:49:53",
- "modified_by": "Administrator",
- "modified": "2012-04-03 12:49:53"
- },
- {
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "DESC",
- "filters": "{'Serial No\u0001Saved':1,'Serial No\u0001Submitted':1,'Serial No\u0001Status':'In Store','Serial No\u0001Maintenance Status':''}",
- "doc_type": "Serial No",
- "name": "__common__",
- "add_cond": "`tabSerial No`.status = 'In Store'",
- "doctype": "Search Criteria",
- "sort_by": "`tabSerial No`.`name`",
- "page_len": 1000,
- "criteria_name": "Stock Aging Report",
- "columns": "Serial No\u0001ID,Serial No\u0001Item Code,Serial No\u0001Description,Serial No\u0001Item Group,Serial No\u0001Purchase Date"
- },
- {
- "name": "stock_aging_report",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
diff --git a/stock/search_criteria/stock_ledger/__init__.py b/stock/search_criteria/stock_ledger/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/stock_ledger/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/stock_ledger/stock_ledger.js b/stock/search_criteria/stock_ledger/stock_ledger.js
deleted file mode 100644
index a47806fada..0000000000
--- a/stock/search_criteria/stock_ledger/stock_ledger.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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 .
-
-report.customize_filters = function() {
- this.add_filter({fieldname:'item_name', label:'Item Name', fieldtype:'Data', options:'', parent:'Item'});
- this.add_filter({fieldname:'description', label:'Description', fieldtype:'Small Text', options: '', parent:'Item'});
-}
\ No newline at end of file
diff --git a/stock/search_criteria/stock_ledger/stock_ledger.txt b/stock/search_criteria/stock_ledger/stock_ledger.txt
deleted file mode 100644
index 1c9fd8ee88..0000000000
--- a/stock/search_criteria/stock_ledger/stock_ledger.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-[
- {
- "owner": "Administrator",
- "docstatus": 0,
- "creation": "2012-09-14 11:30:39",
- "modified_by": "Administrator",
- "modified": "2012-11-06 10:27:11"
- },
- {
- "add_col": "`tabItem`.`item_name`\n`tabItem`.`description`",
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "ASC",
- "add_tab": "`tabItem`",
- "doc_type": "Stock Ledger Entry",
- "name": "__common__",
- "filters": "{\"Stock Ledger Entry\\u0001Warehouse Type\":[],\"Stock Ledger Entry\\u0001Company\":[],\"Stock Ledger Entry\\u0001Is Cancelled\":[\"No\"],\"Stock Ledger Entry\\u0001Is Stock Entry\":[]}",
- "add_cond": "`tabItem`.`name` = `tabStock Ledger Entry`.`item_code`",
- "doctype": "Search Criteria",
- "sort_by": "`tabStock Ledger Entry`.`posting_date`, `tabStock Ledger Entry`.`posting_time`, `tabStock Ledger Entry`.`name`",
- "page_len": 50,
- "criteria_name": "Stock Ledger",
- "columns": "Stock Ledger Entry\u0001Item Code,Stock Ledger Entry\u0001Warehouse,Stock Ledger Entry\u0001Posting Date,Stock Ledger Entry\u0001Posting Time,Stock Ledger Entry\u0001Actual Quantity,Stock Ledger Entry\u0001Bin Actual Qty After Transaction,Stock Ledger Entry\u0001Voucher Type,Stock Ledger Entry\u0001Voucher No"
- },
- {
- "name": "stock_ledger",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
diff --git a/stock/search_criteria/stock_level/__init__.py b/stock/search_criteria/stock_level/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/stock_level/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/stock_level/stock_level.js b/stock/search_criteria/stock_level/stock_level.js
deleted file mode 100644
index 4fb744ddb9..0000000000
--- a/stock/search_criteria/stock_level/stock_level.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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 .
-
-report.customize_filters = function() {
- this.add_filter({fieldname:'item_name', label:'Item Name', fieldtype:'Data', options:'', parent:'Item', in_first_page : 0});
- this.add_filter({fieldname:'description', label:'Description', fieldtype:'Small Text', options: '', parent:'Item', in_first_page : 0});
- this.add_filter({fieldname:'item_group', label:'Item Group', fieldtype:'link', options: 'Item Group', parent:'Item', in_first_page : 1});
- this.add_filter({fieldname:'brand', label:'Brand', fieldtype:'link', options: 'Brand', parent:'Item', in_first_page : 1});
-}
\ No newline at end of file
diff --git a/stock/search_criteria/stock_level/stock_level.py b/stock/search_criteria/stock_level/stock_level.py
deleted file mode 100644
index d53ab5f87a..0000000000
--- a/stock/search_criteria/stock_level/stock_level.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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
-colwidths[col_idx['Reserved Quantity']]= "120px"
-colwidths[col_idx['Ordered Quantity']] = "120px"
\ No newline at end of file
diff --git a/stock/search_criteria/stock_level/stock_level.txt b/stock/search_criteria/stock_level/stock_level.txt
deleted file mode 100644
index b33540c35d..0000000000
--- a/stock/search_criteria/stock_level/stock_level.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-[
- {
- "owner": "Administrator",
- "docstatus": 0,
- "creation": "2012-04-03 12:49:53",
- "modified_by": "Administrator",
- "modified": "2012-04-03 12:49:53"
- },
- {
- "add_col": "`tabItem`.`item_name`\n`tabItem`.`description`",
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "DESC",
- "add_tab": "`tabItem`",
- "doc_type": "Bin",
- "name": "__common__",
- "filters": "{}",
- "add_cond": "`tabItem`.name = `tabBin`.item_code",
- "doctype": "Search Criteria",
- "sort_by": "`tabBin`.`warehouse`",
- "page_len": 50,
- "criteria_name": "Stock Level",
- "columns": "Bin\u0001Warehouse,Bin\u0001Item Code,Bin\u0001UOM,Bin\u0001Reserved Quantity,Bin\u0001Actual Quantity,Bin\u0001Ordered Quantity,Bin\u0001Planned Qty,Bin\u0001Projected Qty,Bin\u0001Quantity Requested for Purchase,Bin\u0001Valuation Rate,Bin\u0001Stock Value"
- },
- {
- "name": "stock_level",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
diff --git a/stock/search_criteria/stock_report/__init__.py b/stock/search_criteria/stock_report/__init__.py
deleted file mode 100644
index baffc48825..0000000000
--- a/stock/search_criteria/stock_report/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/stock/search_criteria/stock_report/stock_report.js b/stock/search_criteria/stock_report/stock_report.js
deleted file mode 100644
index d08d1e75e7..0000000000
--- a/stock/search_criteria/stock_report/stock_report.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// 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 .
-
-//233
-report.customize_filters = function() {
- this.mytabs.items['Select Columns'].hide()
- this.mytabs.items['More Filters'].hide()
- this.hide_all_filters();
- this.add_filter({fieldname:'based_on', label:'Based On', fieldtype:'Select', options:'Warehouse'+NEWLINE+'Item Code',ignore : 1,parent:'Stock Ledger Entry'});
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'To Posting Date'].df.filter_hide = 0;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Item Code'].df.filter_hide = 0;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Warehouse'].df.filter_hide = 0;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Warehouse Type'].df.filter_hide = 0;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'From Posting Date'].df.filter_hide = 1;
-
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Item Code'].df.in_first_page = 1;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Warehouse'].df.in_first_page = 1;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Based On'].df.in_first_page = 1;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'Warehouse Type'].df.in_first_page = 1;
- this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP +'To Posting Date'].df.in_first_page = 1;
-}
-
-
-report.get_query = function(){
- based_on = this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP+'Based On'].get_value();
- as_on = this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP+'To Posting Date'].get_value();
- warehouse = this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP+'Warehouse'].get_value();
- warehouse_type = this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP+'Warehouse Type'].get_value();
- item_code = this.filter_fields_dict['Stock Ledger Entry'+FILTER_SEP+'Item Code'].get_value();
-
- cond = '';
- date_cond = '';
- tables = '';
- cols = '';
- group_by = '';
- ware_type_cond = '';
- war = '';
- if(!as_on) as_on = get_today();
-
- date_cond = repl(' AND `tabStock Ledger Entry`.posting_date <= "%(as_on)s" ', {as_on:as_on});
-
- if(warehouse_type.length > 0 && warehouse_type != ''){
- for(var i = 0; i.
-
-from __future__ import unicode_literals
-cols, columns = [], []
-# Add columns
-# ------------
-based_on = filter_values.get('based_on').split(NEWLINE)
-if len(based_on) == 1 and based_on[0]:
- if based_on[0] == 'Item Code':
- cols = ["Item Code", "Item Name", "Description", "Stock UOM"]
- elif based_on[0] == 'Warehouse':
- cols = ["Warehouse", "Warehouse Type"]
-else:
- cols = ["Item Code", "Item Name", "Description", "Stock UOM", "Warehouse", "Warehouse Type"]
-
-for d in cols:
- columns.append([d,'Data','150px',''])
-
-columns.append(['Closing Balance','Currency','200px',''])
-columns.append(['Stock Value','Currency','150px',''])
-
-posting_date = filter_values.get('posting_date1')
-if not posting_date: posting_date = nowdate()
-
-for c in columns:
- colnames.append(c[0])
- coltypes.append(c[1])
- colwidths.append(c[2])
- coloptions.append(c[3])
- col_idx[c[0]] = len(colnames)-1
-
-def get_values(msgprint, flt, posting_date, item_code = '', warehouse = ''):
- cl_bal, stock_val = 0,0
- if item_code and not warehouse:
- war_list = sql("select distinct warehouse from `tabStock Ledger Entry` where item_code = %s", item_code)
- for d in war_list:
- act = sql("select bin_aqat, stock_value from `tabStock Ledger Entry` where item_code = %s and warehouse = %s and ifnull(is_cancelled, 'No') = 'No' and timestamp(posting_date, posting_time) <= timestamp(%s, %s) Order by timestamp(posting_date, posting_time) DESC, name DESC LIMIT 1", (item_code, d[0], posting_date, '23:55'))
- cl_bal += act and flt(act[0][0]) or 0.00
- stock_val += act and flt(act[0][1]) or 0.00
- elif warehouse and not item_code:
- item_list = sql("select distinct item_code from `tabStock Ledger Entry` where warehouse = %s", warehouse)
- for d in item_list:
- act = sql("select bin_aqat, stock_value from `tabStock Ledger Entry` where item_code = %s and warehouse = %s and ifnull(is_cancelled, 'No') = 'No' and timestamp(posting_date, posting_time) <= timestamp(%s, %s) Order by timestamp(posting_date, posting_time) DESC, name DESC LIMIT 1", (d[0], warehouse, posting_date, '23:55'))
- cl_bal += act and flt(act[0][0]) or 0.00
- stock_val += act and flt(act[0][1]) or 0.00
- return cl_bal, stock_val
-
-out=[]
-cl_bal,tot_stock = 0,0
-
-for r in res:
- if len(based_on) == 1 and based_on[0]:
- if based_on[0] == 'Item Code': closing_balance, stock_value = get_values(msgprint, flt, posting_date, item_code = r[col_idx['Item Code']])
- elif based_on[0] == 'Warehouse': closing_balance, stock_value = get_values(msgprint, flt, posting_date, warehouse = r[col_idx['Warehouse']])
- r.append(closing_balance)
- r.append(stock_value)
- else:
- det = sql("select bin_aqat, stock_value from `tabStock Ledger Entry` where item_code = %s and warehouse = %s and ifnull(is_cancelled, 'No') = 'No' and timestamp(posting_date, posting_time) <= timestamp(%s, %s) Order by timestamp(posting_date, posting_time) DESC, name DESC LIMIT 1", (r[col_idx['Item Code']], r[col_idx['Warehouse']], posting_date, '23:55'))
-
- r.append(det and flt(det[0][0]) or 0.00)
- r.append(det and flt(det[0][1]) or 0.00)
- cl_bal += flt(r[col_idx['Closing Balance']])
- tot_stock += flt(r[col_idx['Stock Value']])
- out.append(r)
-
-# Add the totals row
-l_row = ['' for i in range(len(colnames))]
-if len(based_on) == 1 and based_on[0] == 'Warehouse':
- l_row[col_idx['Warehouse Type']] = 'TOTALS'
-else:
- l_row[col_idx['Stock UOM']] = 'TOTALS'
-l_row[col_idx['Closing Balance']] = cl_bal
-l_row[col_idx['Stock Value']] = tot_stock
-out.append(l_row)
diff --git a/stock/search_criteria/stock_report/stock_report.txt b/stock/search_criteria/stock_report/stock_report.txt
deleted file mode 100644
index bb64f542d8..0000000000
--- a/stock/search_criteria/stock_report/stock_report.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- {
- "owner": "Administrator",
- "docstatus": 0,
- "creation": "2012-04-03 12:49:53",
- "modified_by": "Administrator",
- "modified": "2012-04-03 12:49:53"
- },
- {
- "module": "Stock",
- "standard": "Yes",
- "sort_order": "DESC",
- "filters": "{'Stock Ledger Entry\u0001Is Cancelled':'','Stock Ledger Entry\u0001Is Stock Entry':''}",
- "doctype": "Search Criteria",
- "doc_type": "Stock Ledger Entry",
- "name": "__common__",
- "sort_by": "`tabStock Ledger Entry`.`name`",
- "page_len": 50,
- "criteria_name": "Stock Report",
- "columns": "Stock Ledger Entry\u0001ID"
- },
- {
- "name": "stock_report",
- "doctype": "Search Criteria"
- }
-]
\ No newline at end of file
From 5eaff20dd1e28879072e987417982d77d0b280cb Mon Sep 17 00:00:00 2001
From: Anand Doshi
Date: Wed, 2 Jan 2013 14:19:52 +0530
Subject: [PATCH 6/8] added comma in latest updates
---
home/page/latest_updates/latest_updates.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index abcb27ac45..99a4bf99c5 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -5,7 +5,7 @@ erpnext.updates = [
"General Ledger: Now, on filter of any account group, you will have an option to see \
the report grouped by ledgers under that group and with opening \
and closing balance for each of them."
- ]]
+ ]],
["28th December 2012", [
"Workflow: Added System for Multi-level approval before Submission. \
See video at
Date: Wed, 2 Jan 2013 14:47:06 +0530
Subject: [PATCH 7/8] fix in newsletter
---
support/doctype/newsletter/newsletter.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/support/doctype/newsletter/newsletter.js b/support/doctype/newsletter/newsletter.js
index 0a3fbe81fb..69a55eff09 100644
--- a/support/doctype/newsletter/newsletter.js
+++ b/support/doctype/newsletter/newsletter.js
@@ -17,7 +17,7 @@
cur_frm.cscript.refresh = function(doc) {
erpnext.hide_naming_series();
if(!doc.__islocal && !cint(doc.email_sent) && !doc.__unsaved
- && inList(wn.boot.can_write, doc.doctype)) {
+ && inList(wn.boot.profile.can_write, doc.doctype)) {
cur_frm.add_custom_button('Send', function() {
$c_obj(make_doclist(doc.doctype, doc.name), 'send_emails', '', function(r) {
cur_frm.refresh();
From e8b7ac1469429aea3b7551f6e03e650d3d9a3661 Mon Sep 17 00:00:00 2001
From: Nabin Hait
Date: Wed, 2 Jan 2013 15:11:29 +0530
Subject: [PATCH 8/8] opening and closing balance fix in general ledger
---
.../page/general_ledger/general_ledger.js | 29 ++++++++++++++-----
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/accounts/page/general_ledger/general_ledger.js b/accounts/page/general_ledger/general_ledger.js
index 1a0f76e252..8f6b598d56 100644
--- a/accounts/page/general_ledger/general_ledger.js
+++ b/accounts/page/general_ledger/general_ledger.js
@@ -243,13 +243,9 @@ erpnext.GeneralLedger = wn.views.GridReport.extend({
out = this.group_data_by_ledger(grouped_ledgers);
}
- if(me.account_by_name[me.account].debit_or_credit == "Debit") {
- opening.debit -= opening.credit; opening.credit = 0;
- closing.debit -= closing.credit; closing.credit = 0;
- } else {
- opening.credit -= opening.debit; opening.debit = 0;
- closing.credit -= closing.debit; closing.debit = 0;
- }
+ opening = me.get_balance(me.account_by_name[me.account].debit_or_credit, opening)
+ closing = me.get_balance(me.account_by_name[me.account].debit_or_credit, closing)
+
out = [opening].concat(out).concat([totals, closing]);
} else {
me.appframe.set_title("General Ledger");
@@ -260,6 +256,7 @@ erpnext.GeneralLedger = wn.views.GridReport.extend({
},
group_data_by_ledger: function(grouped_ledgers) {
+ var me = this;
var out = []
$.each(Object.keys(grouped_ledgers).sort(), function(i, account) {
if(grouped_ledgers[account].entries.length) {
@@ -270,7 +267,14 @@ erpnext.GeneralLedger = wn.views.GridReport.extend({
grouped_ledgers[account].closing.credit =
grouped_ledgers[account].opening.credit
+ grouped_ledgers[account].totals.credit;
-
+
+ grouped_ledgers[account].opening =
+ me.get_balance(me.account_by_name[me.account].debit_or_credit,
+ grouped_ledgers[account].opening)
+ grouped_ledgers[account].closing =
+ me.get_balance(me.account_by_name[me.account].debit_or_credit,
+ grouped_ledgers[account].closing)
+
out = out.concat([grouped_ledgers[account].opening])
.concat(grouped_ledgers[account].entries)
.concat([grouped_ledgers[account].totals,
@@ -280,6 +284,15 @@ erpnext.GeneralLedger = wn.views.GridReport.extend({
});
return [{id: "_blank_first", _no_format: true, debit: "", credit: ""}].concat(out);
},
+
+ get_balance: function(debit_or_credit, balance) {
+ if(debit_or_credit == "Debit") {
+ balance.debit -= balance.credit; balance.credit = 0;
+ } else {
+ balance.credit -= balance.debit; balance.debit = 0;
+ }
+ return balance
+ },
make_summary_row: function(label, item_account) {
return {