Merge branch 'master' into edge
Conflicts: patches/march_2013/p07_update_valuation_rate.py patches/patch_list.py
This commit is contained in:
commit
234b8e3de3
@ -53,16 +53,14 @@ cur_frm.pformat.other_charges= function(doc){
|
|||||||
var new_val = flt(val)/flt(doc.conversion_rate);
|
var new_val = flt(val)/flt(doc.conversion_rate);
|
||||||
return new_val;
|
return new_val;
|
||||||
}
|
}
|
||||||
out ='';
|
|
||||||
if (!doc.print_without_amount) {
|
function print_hide(fieldname) {
|
||||||
print_hide_dict = {};
|
var doc_field = wn.meta.get_docfield(doc.doctype, fieldname, doc.name);
|
||||||
for(var i in locals['DocField']) {
|
return doc_field.print_hide;
|
||||||
var doc_field = locals['DocField'][i];
|
|
||||||
if(doc_field.fieldname) {
|
|
||||||
print_hide_dict[doc_field.fieldname] = doc_field.print_hide;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out ='';
|
||||||
|
if (!doc.print_without_amount) {
|
||||||
var cl = getchildren('Sales Taxes and Charges',doc.name,'other_charges');
|
var cl = getchildren('Sales Taxes and Charges',doc.name,'other_charges');
|
||||||
|
|
||||||
// outer table
|
// outer table
|
||||||
@ -71,7 +69,7 @@ cur_frm.pformat.other_charges= function(doc){
|
|||||||
// main table
|
// main table
|
||||||
|
|
||||||
out +='<table class="noborder" style="width:100%">';
|
out +='<table class="noborder" style="width:100%">';
|
||||||
if(!print_hide_dict['net_total']) {
|
if(!print_hide('net_total')) {
|
||||||
out +=make_row('Net Total',convert_rate(doc.net_total),1);
|
out +=make_row('Net Total',convert_rate(doc.net_total),1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,15 +82,15 @@ cur_frm.pformat.other_charges= function(doc){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// grand total
|
// grand total
|
||||||
if(!print_hide_dict['grand_total_export']) {
|
if(!print_hide('grand_total_export')) {
|
||||||
out += make_row('Grand Total',doc.grand_total_export,1);
|
out += make_row('Grand Total',doc.grand_total_export,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!print_hide_dict['rounded_total_export']) {
|
if(!print_hide('rounded_total_export')) {
|
||||||
out += make_row('Rounded Total',doc.rounded_total_export,1);
|
out += make_row('Rounded Total',doc.rounded_total_export,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(doc.in_words_export && !print_hide_dict['in_words_export']){
|
if(doc.in_words_export && !print_hide('in_words_export')){
|
||||||
out +='</table></td></tr>';
|
out +='</table></td></tr>';
|
||||||
out += '<tr><td colspan = "2">';
|
out += '<tr><td colspan = "2">';
|
||||||
out += '<table><tr><td style="width:25%;"><b>In Words</b></td>'
|
out += '<table><tr><td style="width:25%;"><b>In Words</b></td>'
|
||||||
|
@ -24,7 +24,7 @@ class DocType:
|
|||||||
|
|
||||||
def get_rate(self, arg):
|
def get_rate(self, arg):
|
||||||
from webnotes.model.code import get_obj
|
from webnotes.model.code import get_obj
|
||||||
return get_obj('Sales Common').get_rate(arg, self)
|
return get_obj('Sales Common').get_rate(arg)
|
||||||
|
|
||||||
def update_other_default_charges(self):
|
def update_other_default_charges(self):
|
||||||
webnotes.conn.sql("update `tabSales Taxes and Charges Master` set is_default = 0 where ifnull(is_default,0) = 1 and name != '%s' and company = '%s'" % (self.doc.name, self.doc.company))
|
webnotes.conn.sql("update `tabSales Taxes and Charges Master` set is_default = 0 where ifnull(is_default,0) = 1 and name != '%s' and company = '%s'" % (self.doc.name, self.doc.company))
|
||||||
|
0
patches/april_2013/__init__.py
Normal file
0
patches/april_2013/__init__.py
Normal file
35
patches/april_2013/p01_update_serial_no_valuation_rate.py
Normal file
35
patches/april_2013/p01_update_serial_no_valuation_rate.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import webnotes
|
||||||
|
from webnotes.utils import cstr
|
||||||
|
from stock.stock_ledger import update_entries_after
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
webnotes.conn.auto_commit_on_many_writes = 1
|
||||||
|
|
||||||
|
pr_items = webnotes.conn.sql("""select item_code, warehouse, serial_no, valuation_rate, name
|
||||||
|
from `tabPurchase Receipt Item` where ifnull(serial_no, '') != '' and docstatus = 1""",
|
||||||
|
as_dict=True)
|
||||||
|
|
||||||
|
item_warehouse = []
|
||||||
|
|
||||||
|
for item in pr_items:
|
||||||
|
serial_nos = cstr(item.serial_no).strip().split("\n")
|
||||||
|
serial_nos = map(lambda x: x.strip(), serial_nos)
|
||||||
|
|
||||||
|
if cstr(item.serial_no) != "\n".join(serial_nos):
|
||||||
|
webnotes.conn.sql("""update `tabPurchase Receipt Item` set serial_no = %s
|
||||||
|
where name = %s""", ("\n".join(serial_nos), item.name))
|
||||||
|
|
||||||
|
if [item.item_code, item.warehouse] not in item_warehouse:
|
||||||
|
item_warehouse.append([item.item_code, item.warehouse])
|
||||||
|
|
||||||
|
webnotes.conn.sql("""update `tabSerial No` set purchase_rate = %s
|
||||||
|
where name in (%s)""" % ('%s', ', '.join(['%s']*len(serial_nos))),
|
||||||
|
tuple([item.valuation_rate] + serial_nos))
|
||||||
|
|
||||||
|
for d in item_warehouse:
|
||||||
|
try:
|
||||||
|
update_entries_after({"item_code": d[0], "warehouse": d[1] })
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
|
webnotes.conn.auto_commit_on_many_writes = 0
|
@ -4,12 +4,11 @@ def execute():
|
|||||||
webnotes.reload_doc("accounts", "doctype", "purchase_invoice_item")
|
webnotes.reload_doc("accounts", "doctype", "purchase_invoice_item")
|
||||||
|
|
||||||
for purchase_invoice in webnotes.conn.sql_list("""select distinct parent
|
for purchase_invoice in webnotes.conn.sql_list("""select distinct parent
|
||||||
from `tabPurchase Invoice Item` pi_item where docstatus = 1 and ifnull(valuation_rate, 0)=0
|
from `tabPurchase Invoice Item` where docstatus = 1 and ifnull(valuation_rate, 0)=0"""):
|
||||||
and exists(select name from `tabPurchase Invoice` where name = pi_item.parent)"""):
|
|
||||||
pi = webnotes.get_obj("Purchase Invoice", purchase_invoice)
|
pi = webnotes.get_obj("Purchase Invoice", purchase_invoice)
|
||||||
pi.calculate_taxes_and_totals()
|
pi.calculate_taxes_and_totals()
|
||||||
pi.update_raw_material_cost()
|
pi.update_raw_material_cost()
|
||||||
pi.update_valuation_rate("entries")
|
pi.update_valuation_rate("entries")
|
||||||
for item in pi.doclist.get({"parentfield": "entries"}):
|
for item in pi.doclist.get({"parentfield": "entries"}):
|
||||||
webnotes.conn.set_value("Purchase Invoice Item", item.name, "valuation_rate",
|
webnotes.conn.sql("""update `tabPurchase Invoice Item` set valuation_rate = %s
|
||||||
item.valuation_rate)
|
where name = %s""", (item.valuation_rate, item.name))
|
||||||
|
@ -7,5 +7,5 @@ def execute():
|
|||||||
for pi in pi_list:
|
for pi in pi_list:
|
||||||
pi_obj = get_obj("Purchase Invoice", pi[0], with_children=1)
|
pi_obj = get_obj("Purchase Invoice", pi[0], with_children=1)
|
||||||
pi_obj.set_against_expense_account()
|
pi_obj.set_against_expense_account()
|
||||||
webnotes.conn.set_value("Purchase Invoice", pi[0],
|
webnotes.conn.sql("""update `tabPurchase Invoice` set against_expense_account = %s
|
||||||
"against_expense_account", pi_obj.doc.against_expense_account)
|
where name = %s""", (pi_obj.doc.against_expense_account, pi[0]))
|
@ -230,4 +230,5 @@ patch_list = [
|
|||||||
"patches.march_2013.p07_update_valuation_rate",
|
"patches.march_2013.p07_update_valuation_rate",
|
||||||
"patches.march_2013.p08_create_aii_accounts",
|
"patches.march_2013.p08_create_aii_accounts",
|
||||||
"patches.march_2013.p03_update_buying_amount",
|
"patches.march_2013.p03_update_buying_amount",
|
||||||
|
"patches.april_2013.p01_update_serial_no_valuation_rate",
|
||||||
]
|
]
|
@ -1,8 +1,8 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"creation": "2013-01-23 20:00:16",
|
"creation": "2013-03-28 10:35:29",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"modified": "2013-03-20 15:09:28",
|
"modified": "2013-04-01 12:06:52",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"owner": "Administrator"
|
"owner": "Administrator"
|
||||||
},
|
},
|
||||||
@ -124,6 +124,7 @@
|
|||||||
"label": "Description"
|
"label": "Description"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"depends_on": "show_in_website",
|
||||||
"doctype": "DocField",
|
"doctype": "DocField",
|
||||||
"fieldname": "item_website_specifications",
|
"fieldname": "item_website_specifications",
|
||||||
"fieldtype": "Table",
|
"fieldtype": "Table",
|
||||||
@ -181,20 +182,6 @@
|
|||||||
"no_copy": 1,
|
"no_copy": 1,
|
||||||
"print_hide": 1
|
"print_hide": 1
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cancel": 1,
|
|
||||||
"create": 1,
|
|
||||||
"doctype": "DocPerm",
|
|
||||||
"role": "System Manager",
|
|
||||||
"write": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cancel": 1,
|
|
||||||
"create": 1,
|
|
||||||
"doctype": "DocPerm",
|
|
||||||
"role": "Material Master Manager",
|
|
||||||
"write": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"amend": 0,
|
"amend": 0,
|
||||||
"cancel": 0,
|
"cancel": 0,
|
||||||
@ -210,5 +197,19 @@
|
|||||||
"doctype": "DocPerm",
|
"doctype": "DocPerm",
|
||||||
"role": "Material User",
|
"role": "Material User",
|
||||||
"write": 0
|
"write": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cancel": 1,
|
||||||
|
"create": 1,
|
||||||
|
"doctype": "DocPerm",
|
||||||
|
"role": "System Manager",
|
||||||
|
"write": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cancel": 1,
|
||||||
|
"create": 1,
|
||||||
|
"doctype": "DocPerm",
|
||||||
|
"role": "Material Master Manager",
|
||||||
|
"write": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
@ -199,6 +199,18 @@ wn.module_page["Setup"] = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: wn._("Update Manager"),
|
||||||
|
icon: "icon-magnet",
|
||||||
|
right: true,
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
"page":"update-manager",
|
||||||
|
label: wn._("Update This Application"),
|
||||||
|
"description":wn._("Apply latest updates and patches to this app")
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
pscript['onload_Setup'] = function(wrapper) {
|
pscript['onload_Setup'] = function(wrapper) {
|
||||||
|
@ -212,6 +212,7 @@ class DocType:
|
|||||||
if flt(d.qty):
|
if flt(d.qty):
|
||||||
d.valuation_rate = (flt(d.purchase_rate) + (flt(d.rm_supp_cost)/flt(d.qty)) + (flt(d.item_tax_amount)/flt(d.qty))) / flt(d.conversion_factor)
|
d.valuation_rate = (flt(d.purchase_rate) + (flt(d.rm_supp_cost)/flt(d.qty)) + (flt(d.item_tax_amount)/flt(d.qty))) / flt(d.conversion_factor)
|
||||||
d.save()
|
d.save()
|
||||||
|
if d.serial_no:
|
||||||
self.update_serial_no(d.serial_no, d.valuation_rate)
|
self.update_serial_no(d.serial_no, d.valuation_rate)
|
||||||
sql("update `tabStock Ledger Entry` set incoming_rate = '%s' where voucher_detail_no = '%s'"%(flt(d.valuation_rate), d.name))
|
sql("update `tabStock Ledger Entry` set incoming_rate = '%s' where voucher_detail_no = '%s'"%(flt(d.valuation_rate), d.name))
|
||||||
|
|
||||||
@ -226,10 +227,10 @@ class DocType:
|
|||||||
|
|
||||||
def update_serial_no(self, sr_no, rate):
|
def update_serial_no(self, sr_no, rate):
|
||||||
""" update valuation rate in serial no"""
|
""" update valuation rate in serial no"""
|
||||||
sr_no = cstr(sr_no).split('\n')
|
sr_no = map(lambda x: x.strip(), cstr(sr_no).split('\n'))
|
||||||
for d in sr_no:
|
|
||||||
sql("update `tabSerial No` set purchase_rate = %s where name = %s", (rate, d))
|
|
||||||
|
|
||||||
|
webnotes.conn.sql("""update `tabSerial No` set purchase_rate = %s where name in (%s)""" %
|
||||||
|
('%s', ', '.join(['%s']*len(sr_no))), tuple([rate] + sr_no))
|
||||||
|
|
||||||
def update_landed_cost(self):
|
def update_landed_cost(self):
|
||||||
"""
|
"""
|
||||||
|
@ -38,10 +38,10 @@ class DocType:
|
|||||||
|
|
||||||
for d in getlist(obj.doclist, table_name):
|
for d in getlist(obj.doclist, table_name):
|
||||||
if d.serial_no:
|
if d.serial_no:
|
||||||
d.serial_no = cstr(d.serial_no).strip().replace(',', '\n')
|
serial_nos = cstr(d.serial_no).strip().replace(',', '\n').split('\n')
|
||||||
|
d.serial_no = "\n".join(map(lambda x: x.strip(), serial_nos))
|
||||||
d.save()
|
d.save()
|
||||||
|
|
||||||
|
|
||||||
def validate_serial_no_warehouse(self, obj, fname):
|
def validate_serial_no_warehouse(self, obj, fname):
|
||||||
for d in getlist(obj.doclist, fname):
|
for d in getlist(obj.doclist, fname):
|
||||||
wh = d.warehouse or d.s_warehouse
|
wh = d.warehouse or d.s_warehouse
|
||||||
@ -84,6 +84,7 @@ class DocType:
|
|||||||
item_details = webnotes.conn.sql("""select item_group, warranty_period
|
item_details = webnotes.conn.sql("""select item_group, warranty_period
|
||||||
from `tabItem` where name = '%s' and (ifnull(end_of_life,'')='' or
|
from `tabItem` where name = '%s' and (ifnull(end_of_life,'')='' or
|
||||||
end_of_life = '0000-00-00' or end_of_life > now()) """ %(d.item_code), as_dict=1)
|
end_of_life = '0000-00-00' or end_of_life > now()) """ %(d.item_code), as_dict=1)
|
||||||
|
webnotes.errprint([d.item_code, d.valuation_rate])
|
||||||
|
|
||||||
s.purchase_document_type = obj.doc.doctype
|
s.purchase_document_type = obj.doc.doctype
|
||||||
s.purchase_document_no = obj.doc.name
|
s.purchase_document_no = obj.doc.name
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<div class="span3">
|
<div class="span3">
|
||||||
<div style="height: 120px; overflow: hidden;">
|
<div style="height: 120px; overflow: hidden;">
|
||||||
{% if website_image %}
|
<a href="{{ page_name }}">
|
||||||
|
{%- if website_image -%}
|
||||||
<img class="product-image" style="width: 80%; margin: auto;" src="{{ website_image }}">
|
<img class="product-image" style="width: 80%; margin: auto;" src="{{ website_image }}">
|
||||||
{% else %}
|
{%- else -%}
|
||||||
{% include 'html/product_missing_image.html' %}
|
{% include 'html/product_missing_image.html' %}
|
||||||
{% endif %}
|
{%- endif -%}
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 100px; overflow: hidden; font-size: 80%;">
|
<div style="height: 100px; overflow: hidden; font-size: 80%;">
|
||||||
<h4 style="margin-bottom: 2px;"><a href="{{ page_name }}">{{ item_name }}</a></h4>
|
<h4 style="margin-bottom: 2px;"><a href="{{ page_name }}">{{ item_name }}</a></h4>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user