delete gross profit based on search criteria

This commit is contained in:
Nabin Hait 2013-02-26 10:51:24 +05:30
parent 6dfa84164e
commit 6054ae2bec
6 changed files with 1 additions and 186 deletions

View File

@ -195,4 +195,5 @@ patch_list = [
"execute:webnotes.conn.sql(\"update `tabReport` set report_type=if(ifnull(query, '')='', 'Report Builder', 'Query Report') where is_standard='No'\")",
"execute:webnotes.conn.sql(\"update `tabReport` set report_name=name where ifnull(report_name,'')='' and is_standard='No'\")",
"patches.february_2013.p08_todo_query_report",
"execute:webnotes.delete_doc('Search Criteria', 'gross_profit') # 2013-02-26"
]

View File

@ -1 +0,0 @@
from __future__ import unicode_literals

View File

@ -1,38 +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 <http://www.gnu.org/licenses/>.
report.customize_filters = function() {
this.mytabs.items['Select Columns'].hide();
this.mytabs.tabs['More Filters'].hide();
this.hide_all_filters();
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'ID'].df.filter_hide = 0;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'From Posting Date'].df.filter_hide = 0;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'To Posting Date'].df.filter_hide = 0;
this.filter_fields_dict['Delivery Note Item'+FILTER_SEP +'Item Code'].df.filter_hide = 0;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'Project Name'].df.filter_hide = 0;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'ID'].df.in_first_page = 1;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'From Posting Date'].df.in_first_page = 1;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'To Posting Date'].df.in_first_page = 1;
this.filter_fields_dict['Delivery Note Item'+FILTER_SEP +'Item Code'].df.in_first_page = 1;
this.filter_fields_dict['Delivery Note'+FILTER_SEP +'Project Name'].df.in_first_page = 1;
this.filter_fields_dict['Delivery Note' + FILTER_SEP +
'From Posting Date'].df['report_default'] = sys_defaults["year_start_date"]
this.filter_fields_dict['Delivery Note' + FILTER_SEP +
'To Posting Date'].df['report_default'] = dateutil.obj_to_str(new Date());
}

View File

@ -1,104 +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 <http://www.gnu.org/licenses/>.
from __future__ import unicode_literals
from webnotes.utils import flt
if not (filter_values.get('posting_date') or filter_values.get('posting_date1')):
msgprint("Please select From and To Posting Date", raise_exception=1)
columns = [
['Delivery Note', 'Link', '120px', 'Delivery Note'],
['Posting Date', 'Date', '120px', ''],
['Posting Time', 'Data', '120px', ''],
['Item Code', 'Link', '120px', 'Item'],
['Item Name', 'Data', '120px', ''],
['Description', 'Data', '120px', ''],
['Warehouse', 'Link', '120px', 'Warehouse'],
['Project Name', 'Link', '120px', 'Project'],
['Quantity', 'Currency', '120px', ''],
['Rate', 'Currency', '120px', ''],
['Amount', 'Currency', '120px', ''],
#['DN Item Row Id', 'Data', '120px', ''],
['Purchase Cost', 'Currency', '150px', ''],
['Gross Profit', 'Currency', '150px', ''],
['Gross Profit (%)', 'Currrency', '150px', '']
]
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
sle = sql("""
select
actual_qty, incoming_rate, voucher_no, item_code, warehouse, voucher_detail_no
from
`tabStock Ledger Entry`
where
voucher_type = 'Delivery Note'
and ifnull(is_cancelled, 'No') = 'No'
order by posting_date desc, posting_time desc, name desc
""", as_dict=1)
def get_purchase_cost(dn, item, wh, qty, dn_item_row_id):
from webnotes.utils import flt
global sle
purchase_cost = 0
packing_items = sql("select item_code, qty from `tabSales BOM Item` where parent = %s", item)
if packing_items:
packing_items = [[t[0], flt(t[1])*qty] for t in packing_items]
else:
packing_items = [[item, qty]]
for d in sle:
if packing_items:
if d['voucher_no'] == dn \
and [d['item_code'], flt(abs(d['actual_qty']))] in packing_items \
and (not d['voucher_detail_no'] or d['voucher_detail_no'] == dn_item_row_id):
purchase_cost += flt(d['incoming_rate'])*flt(abs(d['actual_qty']))
packing_items.remove([d['item_code'], flt(abs(d['actual_qty']))])
else:
break
return purchase_cost
out, tot_amount, tot_pur_cost = [], 0, 0
for r in res:
purchase_cost = get_purchase_cost(r[col_idx['Delivery Note']], r[col_idx['Item Code']], \
r[col_idx['Warehouse']], r[col_idx['Quantity']], r[-1])
r.pop(-1)
r.append(purchase_cost)
gp = flt(r[col_idx['Amount']]) - flt(purchase_cost)
gp_percent = r[col_idx['Amount']] and purchase_cost and \
round((gp*100/flt(r[col_idx['Amount']])), 2) or 0
r.append(fmt_money(gp))
r.append(fmt_money(gp_percent))
out.append(r)
tot_amount += flt(r[col_idx['Amount']])
tot_pur_cost += flt(purchase_cost)
# Add Total Row
l_row = ['' for i in range(len(colnames))]
l_row[col_idx['Project Name']] = '<b>TOTALS</b>'
l_row[col_idx['Amount']] = fmt_money(tot_amount)
l_row[col_idx['Purchase Cost']] = fmt_money(tot_pur_cost)
l_row[col_idx['Gross Profit']] = fmt_money(flt(tot_amount) - flt(tot_pur_cost))
l_row[col_idx['Gross Profit (%)']] = tot_amount and \
round((flt(tot_amount) - flt(tot_pur_cost))*100 / flt(tot_amount), 2)
out.append(l_row)

View File

@ -1,15 +0,0 @@
SELECT
dn.name, dn.posting_date, dn.posting_time, dn_item.item_code,
dn_item.item_name, dn_item.description, dn_item.warehouse,
dn.project_name, dn_item.qty, dn_item.basic_rate, dn_item.amount, dn_item.name
FROM
`tabDelivery Note Item` dn_item, `tabDelivery Note` dn
WHERE
dn_item.parent = dn.name
AND dn.docstatus = 1
AND dn.name like '%(name)s%%'
AND ifnull(dn_item.item_code, '') like '%(item_code)s%%'
AND ifnull(dn.project_name, '') like '%(project_name)s%%'
AND dn.posting_date >= '%(posting_date)s'
AND dn.posting_date <= '%(posting_date1)s'
ORDER BY dn.name DESC

View File

@ -1,28 +0,0 @@
[
{
"owner": "Administrator",
"docstatus": 0,
"creation": "2012-05-14 18:22:18",
"modified_by": "Administrator",
"modified": "2012-09-24 14:11:39"
},
{
"description": "Invoice wise",
"parent_doc_type": "Delivery Note",
"module": "Selling",
"standard": "Yes",
"sort_order": "DESC",
"filters": "{\"Delivery Note\\u0001Submitted\":1,\"Delivery Note\\u0001Status\":[],\"Delivery Note\\u0001Fiscal Year\":[]}",
"doc_type": "Delivery Note Item",
"name": "__common__",
"doctype": "Search Criteria",
"sort_by": "`tabDelivery Note`.`name`",
"page_len": 50,
"criteria_name": "Gross Profit",
"columns": "Delivery Note\u0001ID,Delivery Note\u0001Posting Date,Delivery Note\u0001Posting Time,Delivery Note Item\u0001Item Code,Delivery Note Item\u0001Item Name,Delivery Note Item\u0001Description,Delivery Note Item\u0001Warehouse,Delivery Note\u0001Project Name,Delivery Note Item\u0001Quantity,Delivery Note Item\u0001Rate*,Delivery Note Item\u0001Amount*"
},
{
"name": "gross_profit",
"doctype": "Search Criteria"
}
]