Merge branch 'master' of github.com:webnotes/erpnext
This commit is contained in:
commit
6971f577da
@ -421,8 +421,8 @@ class DocType(TransactionBase):
|
||||
raise Exception
|
||||
|
||||
def validate_pos(self):
|
||||
if not self.doc.cash_bank_account:
|
||||
msgprint("Cash/Bank Account is mandatory for POS entry")
|
||||
if not self.doc.cash_bank_account and flt(self.doc.paid_amount):
|
||||
msgprint("Cash/Bank Account is mandatory for POS, for making payment entry")
|
||||
raise Exception
|
||||
if (flt(self.doc.paid_amount) + flt(self.doc.write_off_amount) - round(flt(self.doc.grand_total), 2))>0.001:
|
||||
msgprint("(Paid amount + Write Off Amount) can not be greater than Grand Total")
|
||||
@ -676,8 +676,14 @@ class DocType(TransactionBase):
|
||||
if not d.warehouse:
|
||||
d.warehouse = cstr(w)
|
||||
|
||||
if flt(self.doc.paid_amount) == 0:
|
||||
webnotes.conn.set(self.doc,'paid_amount',(flt(self.doc.grand_total) - flt(self.doc.write_off_amount)))
|
||||
if flt(self.doc.paid_amount) == 0:
|
||||
if self.doc.cash_bank_account:
|
||||
webnotes.conn.set(self.doc, 'paid_amount',
|
||||
(flt(self.doc.grand_total) - flt(self.doc.write_off_amount)))
|
||||
else:
|
||||
# show message that the amount is not paid
|
||||
webnotes.conn.set(self.doc,'paid_amount',0)
|
||||
webnotes.msgprint("Note: Payment Entry not created since 'Cash/Bank Account' was not specified.")
|
||||
|
||||
else:
|
||||
webnotes.conn.set(self.doc,'paid_amount',0)
|
||||
|
@ -407,9 +407,21 @@ class DocType(TransactionBase):
|
||||
if not default_currency:
|
||||
msgprint('Message: Please enter default currency in Company Master')
|
||||
raise Exception
|
||||
if (obj.doc.currency == default_currency and flt(obj.doc.conversion_rate) != 1.00) or not obj.doc.conversion_rate or (obj.doc.currency != default_currency and flt(obj.doc.conversion_rate) == 1.00):
|
||||
msgprint("Message: Please Enter Appropriate Conversion Rate.")
|
||||
raise Exception
|
||||
|
||||
if obj.doc.conversion_rate == 0:
|
||||
msgprint('Conversion Rate cannot be 0', raise_exception=1)
|
||||
elif not obj.doc.conversion_rate:
|
||||
msgprint('Please specify Conversion Rate', raise_exception=1)
|
||||
elif obj.doc.currency == default_currency and \
|
||||
flt(obj.doc.conversion_rate) != 1.00:
|
||||
msgprint("""Conversion Rate should be equal to 1.00, \
|
||||
since the specified Currency and the company's currency \
|
||||
are same""", raise_exception=1)
|
||||
elif obj.doc.currency != default_currency and \
|
||||
flt(obj.doc.conversion_rate) == 1.00:
|
||||
msgprint("""Conversion Rate should not be equal to 1.00, \
|
||||
since the specified Currency and the company's currency \
|
||||
are different""", raise_exception=1)
|
||||
|
||||
def validate_doc(self, obj, prevdoc_doctype, prevdoc_docname):
|
||||
if prevdoc_docname :
|
||||
|
@ -105,47 +105,48 @@ cur_frm.cscript.make_contact = function() {
|
||||
cur_frm.contact_list.run();
|
||||
}
|
||||
|
||||
// make purchase order list
|
||||
cur_frm.cscript.make_po_list = function(parent, doc){
|
||||
wn.require('js/listing.js');
|
||||
var lst = new Listing();
|
||||
lst.colwidths = ['5%','25%','20%','25%','25%'];
|
||||
lst.colnames = ['Sr.','Id','Status','PO Date','Grand Total'];
|
||||
lst.coltypes = ['Data','Link','Data','Data','Currency'];
|
||||
lst.coloptions = ['','Purchase Order','','','',''];
|
||||
|
||||
var q = repl("select name,status,transaction_date, grand_total from `tabPurchase Order` where supplier='%(sup)s' order by transaction_date desc", {'sup':doc.name});
|
||||
var q_max = repl("select count(name) from `tabPurchase Order` where supplier='%(sup)s'", {'sup':doc.name});
|
||||
|
||||
cur_frm.cscript.run_list(lst,parent,q,q_max,doc,'Purchase Order','Purchase Order');
|
||||
// Transaction History
|
||||
|
||||
cur_frm.cscript.make_po_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Purchase Order',
|
||||
[
|
||||
{fieldname: 'name', width: '28%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'status', width: '25%', label: 'Status', type: 'Data'},
|
||||
{fieldname: 'modified', width: '12%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
||||
|
||||
// make purchase receipt list
|
||||
cur_frm.cscript.make_pr_list = function(parent,doc){
|
||||
wn.require('js/listing.js');
|
||||
var lst = new Listing();
|
||||
lst.colwidths = ['5%','20%','20%','20%','15%','20%'];
|
||||
lst.colnames = ['Sr.','Id','Status','Receipt Date','% Billed','Grand Total'];
|
||||
lst.coltypes = ['Data','Link','Data','Data','Currency','Currency'];
|
||||
lst.coloptions = ['','Purchase Receipt','','','',''];
|
||||
|
||||
var q = repl("select name,status,transaction_date,per_billed,grand_total from `tabPurchase Receipt` where supplier='%(sup)s' order by transaction_date desc", {'sup':doc.name});
|
||||
var q_max = repl("select count(name) from `tabPurchase Receipt` where supplier='%(sup)s'", {'sup':doc.name});
|
||||
|
||||
cur_frm.cscript.run_list(lst,parent,q,q_max,doc,'Purchase Receipt','Purchase Receipt');
|
||||
cur_frm.cscript.make_pr_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Purchase Receipt',
|
||||
[
|
||||
{fieldname: 'name', width: '28%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'status', width: '15%', label: 'Status', type: 'Data'},
|
||||
{fieldname: 'per_billed', width: '10%', label: '% Billed',
|
||||
type: 'Percentage', style: 'text-align: right'},
|
||||
{fieldname: 'modified', width: '12%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
||||
|
||||
// make purchase invoice list
|
||||
cur_frm.cscript.make_pi_list = function(parent,doc){
|
||||
wn.require('js/listing.js');
|
||||
var lst = new Listing();
|
||||
lst.colwidths = ['5%','20%','20%','20%','15%','20%'];
|
||||
lst.colnames = ['Sr.','Id','Posting Date','Credit To','Bill Date','Grand Total'];
|
||||
lst.coltypes = ['Data','Link','Data','Data','Currency','Currency'];
|
||||
lst.coloptions = ['','Purchase Invoice','','','',''];
|
||||
|
||||
var q = repl("select name, posting_date, credit_to, bill_date, grand_total from `tabPurchase Invoice` where supplier='%(sup)s' order by posting_date desc", {'sup':doc.name});
|
||||
var q_max = repl("select count(name) from `tabPurchase Invoice` where supplier='%(sup)s'", {'sup':doc.name});
|
||||
|
||||
cur_frm.cscript.run_list(lst,parent,q,q_max,doc,'Purchase Invoice','Purchase Invoice');
|
||||
}
|
||||
cur_frm.cscript.make_pi_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Purchase Invoice',
|
||||
[
|
||||
{fieldname: 'name', width: '30%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'modified', width: '35%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
17
erpnext/patches/may_2012/remove_euro_currency.py
Normal file
17
erpnext/patches/may_2012/remove_euro_currency.py
Normal file
@ -0,0 +1,17 @@
|
||||
def execute():
|
||||
"""
|
||||
* Replace EURO with EUR
|
||||
* Delete EURO from tabCurrency
|
||||
"""
|
||||
import webnotes
|
||||
tables = webnotes.conn.sql("show tables")
|
||||
for (tab,) in tables:
|
||||
desc = webnotes.conn.sql("desc `%s`" % tab, as_dict=1)
|
||||
for d in desc:
|
||||
if "currency" in d.get('Field'):
|
||||
field = d.get('Field')
|
||||
webnotes.conn.sql("""\
|
||||
update `%s` set `%s`='EUR'
|
||||
where `%s`='EURO'""" % (tab, field, field))
|
||||
webnotes.conn.sql("update `tabSingles` set value='EUR' where value='EURO'")
|
||||
webnotes.conn.sql("delete from `tabCurrency` where name='EURO'")
|
@ -402,4 +402,9 @@ patch_list = [
|
||||
'patch_file': 'profile_perm_patch',
|
||||
'description': 'Make profile readonly for role All'
|
||||
},
|
||||
{
|
||||
'patch_module': 'patches.may_2012',
|
||||
'patch_file': 'remove_euro_currency',
|
||||
'description': 'Remove EURO currency and replace with EUR'
|
||||
},
|
||||
]
|
@ -3,9 +3,9 @@
|
||||
|
||||
# These values are common in all dictionaries
|
||||
{
|
||||
'creation': '2012-03-27 14:36:05',
|
||||
'creation': '2012-05-15 12:14:48',
|
||||
'docstatus': 0,
|
||||
'modified': '2012-03-27 14:45:50',
|
||||
'modified': '2012-05-28 19:03:56',
|
||||
'modified_by': u'Administrator',
|
||||
'owner': u'Administrator'
|
||||
},
|
||||
@ -23,7 +23,7 @@
|
||||
'section_style': u'Tabbed',
|
||||
'server_code_error': u' ',
|
||||
'show_in_menu': 0,
|
||||
'version': 190
|
||||
'version': 1
|
||||
},
|
||||
|
||||
# These values are common for all DocField
|
||||
@ -323,6 +323,7 @@
|
||||
'fieldname': u'produced_qty',
|
||||
'fieldtype': u'Currency',
|
||||
'label': u'Produced Qty',
|
||||
'no_copy': 1,
|
||||
'oldfieldname': u'produced_qty',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1
|
||||
|
@ -148,114 +148,63 @@ cur_frm.fields_dict['lead_name'].get_query = function(doc,dt,dn){
|
||||
return 'SELECT `tabLead`.`name` FROM `tabLead` WHERE `tabLead`.`status`!="Converted" AND `tabLead`.%(key)s LIKE "%s" ORDER BY `tabLead`.`name` ASC LIMIT 50';
|
||||
}
|
||||
|
||||
/* ********************************* transaction history ************************************** */
|
||||
|
||||
cur_frm.render_transaction_history_row = function(data) {
|
||||
data.grand_total = fmt_money(data.grand_total);
|
||||
data.modified = wn.datetime.only_date(data.modified);
|
||||
return repl('\
|
||||
<table><tr> \
|
||||
<td width="30%" title="Id"> \
|
||||
<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a> \
|
||||
</td> \
|
||||
<td width="20%" title="Status">%(status)s</td> \
|
||||
<td width="30%" title="Grand Total" style="text-align: right;"> \
|
||||
%(currency)s %(grand_total)s \
|
||||
</td> \
|
||||
<td width="20%" title="Modified Date" style="text-align: right;"> \
|
||||
%(modified)s \
|
||||
</td> \
|
||||
</tr></table>', data);
|
||||
// Transaction History
|
||||
// functions called by these functions are defined in contact_control.js
|
||||
cur_frm.cscript.make_qtn_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Quotation',
|
||||
[
|
||||
{fieldname: 'name', width: '28%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'status', width: '25%', label: 'Status', type: 'Data'},
|
||||
{fieldname: 'modified', width: '12%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
||||
|
||||
cur_frm.get_query_transaction_history = function(args) {
|
||||
return repl("\
|
||||
select name, status, modified, currency, \
|
||||
grand_total \
|
||||
from `tab%(doctype)s` \
|
||||
where customer='%(customer)s' \
|
||||
order by modified desc", args);
|
||||
cur_frm.cscript.make_so_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Sales Order',
|
||||
[
|
||||
{fieldname: 'name', width: '28%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'status', width: '25%', label: 'Status', type: 'Data'},
|
||||
{fieldname: 'modified', width: '12%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
||||
|
||||
cur_frm.render_transaction_history = function(parent, doc, doctype, get_query, render_row) {
|
||||
$(parent).css({
|
||||
'padding-top': '10px',
|
||||
});
|
||||
|
||||
cur_frm.transaction_list = new wn.ui.Listing({
|
||||
parent: parent,
|
||||
page_length: 10,
|
||||
get_query: get_query || function() {
|
||||
return cur_frm.get_query_transaction_history({
|
||||
customer: doc.name,
|
||||
doctype: doctype,
|
||||
});
|
||||
},
|
||||
as_dict: 1,
|
||||
no_result_message: repl('No %(doctype)s created for this customer', { doctype: doctype }),
|
||||
render_row: function(wrapper, data) {
|
||||
data.doctype = doctype;
|
||||
render_html = render_row
|
||||
? render_row(data)
|
||||
: cur_frm.render_transaction_history_row(data);
|
||||
$(wrapper).html(render_html);
|
||||
},
|
||||
});
|
||||
|
||||
cur_frm.transaction_list.run();
|
||||
}
|
||||
// --------------------
|
||||
// make quotation list
|
||||
// --------------------
|
||||
cur_frm.cscript.make_qtn_list = function(parent,doc){
|
||||
cur_frm.render_transaction_history(parent, doc, 'Quotation');
|
||||
cur_frm.cscript.make_dn_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Delivery Note',
|
||||
[
|
||||
{fieldname: 'name', width: '28%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'status', width: '25%', label: 'Status', type: 'Data'},
|
||||
{fieldname: 'modified', width: '12%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
||||
|
||||
// -------------
|
||||
// make so list
|
||||
// -------------
|
||||
cur_frm.cscript.make_so_list = function(parent,doc){
|
||||
cur_frm.render_transaction_history(parent, doc, 'Sales Order');
|
||||
}
|
||||
|
||||
|
||||
// -------------
|
||||
// make dn list
|
||||
// -------------
|
||||
cur_frm.cscript.make_dn_list = function(parent,doc){
|
||||
cur_frm.render_transaction_history(parent, doc, 'Delivery Note');
|
||||
}
|
||||
|
||||
// -------------
|
||||
// make si list
|
||||
// -------------
|
||||
cur_frm.cscript.make_si_list = function(parent,doc){
|
||||
cur_frm.render_transaction_history(parent, doc, 'Sales Invoice', function() {
|
||||
return repl("\
|
||||
select name, outstanding_amount, modified, currency, \
|
||||
grand_total \
|
||||
from `tab%(doctype)s` \
|
||||
where customer='%(customer)s' \
|
||||
order by modified desc", { doctype: 'Sales Invoice', customer: doc.name });
|
||||
}, function(data) {
|
||||
data.grand_total = fmt_money(data.grand_total);
|
||||
data.modified = wn.datetime.only_date(data.modified);
|
||||
data.outstanding_amount = fmt_money(data.outstanding_amount);
|
||||
return repl('\
|
||||
<table><tr> \
|
||||
<td width="30%" title="Id"> \
|
||||
<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a> \
|
||||
</td> \
|
||||
<td width="20%" title="Outstanding Amount" \
|
||||
style="text-align: right; color: #777"> \
|
||||
%(currency)s %(outstanding_amount)s \
|
||||
</td>\
|
||||
<td width="30%" title="Grand Total" style="text-align: right;"> \
|
||||
%(currency)s %(grand_total)s\
|
||||
</td> \
|
||||
<td width="20%" title="Modified Date" style="text-align: right;"> \
|
||||
%(modified)s \
|
||||
</td> \
|
||||
</tr></table>', data);
|
||||
});
|
||||
cur_frm.cscript.make_si_list = function(parent, doc) {
|
||||
cur_frm.cscript.render_transaction_history(parent, doc, 'Sales Invoice',
|
||||
[
|
||||
{fieldname: 'name', width: '28%', label: 'Id', type: 'Link'},
|
||||
{fieldname: 'outstanding_amount', width: '25%',
|
||||
label: 'Outstanding Amount',
|
||||
type: 'Currency', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'modified', width: '12%', label: 'Last Modified On',
|
||||
type: 'Date', style: 'text-align: right; color: #777'},
|
||||
{fieldname: 'currency', width: '0%', label: 'Currency',
|
||||
style: 'display: hidden'},
|
||||
{fieldname: 'grand_total', width: '35%', label: 'Grand Total',
|
||||
type: 'Currency', style: 'text-align: right'},
|
||||
]);
|
||||
}
|
@ -207,21 +207,32 @@ class DocType(TransactionBase):
|
||||
if default: add_cond = 'ifnull(t2.is_default,0) = 1'
|
||||
else: add_cond = 't1.parent = "'+cstr(obj.doc.charge)+'"'
|
||||
idx = 0
|
||||
other_charge = webnotes.conn.sql("select t1.charge_type,t1.row_id,t1.description,t1.account_head,t1.rate,t1.tax_amount,t1.included_in_print_rate, t1.cost_center_other_charges from `tabSales Taxes and Charges` t1, `tabSales Taxes and Charges Master` t2 where t1.parent = t2.name and t2.company = '%s' and %s order by t1.idx" % (obj.doc.company, add_cond), as_dict = 1)
|
||||
other_charge = webnotes.conn.sql("""\
|
||||
select t1.*
|
||||
from
|
||||
`tabSales Taxes and Charges` t1,
|
||||
`tabSales Taxes and Charges Master` t2
|
||||
where
|
||||
t1.parent = t2.name and
|
||||
t2.company = '%s' and
|
||||
%s
|
||||
order by t1.idx""" % (obj.doc.company, add_cond), as_dict=1)
|
||||
from webnotes.model import default_fields
|
||||
for other in other_charge:
|
||||
d = addchild(obj.doc, 'other_charges', 'Sales Taxes and Charges', 1, obj.doclist)
|
||||
d.charge_type = other['charge_type']
|
||||
d.row_id = other['row_id']
|
||||
d.description = other['description']
|
||||
d.account_head = other['account_head']
|
||||
d.cost_center_other_charges = other['cost_center_other_charges']
|
||||
d.rate = flt(other['rate'])
|
||||
d.tax_amount = flt(other['tax_amount'])
|
||||
d.included_in_print_rate = cint(other['included_in_print_rate'])
|
||||
# remove default fields like parent, parenttype etc.
|
||||
# from query results
|
||||
for field in default_fields:
|
||||
if field in other: del other[field]
|
||||
|
||||
d = addchild(obj.doc, 'other_charges', 'Sales Taxes and Charges', 1,
|
||||
obj.doclist)
|
||||
d.fields.update(other)
|
||||
d.rate = flt(d.rate)
|
||||
d.tax_amount = flt(d.tax_rate)
|
||||
d.included_in_print_rate = cint(d.included_in_print_rate)
|
||||
d.idx = idx
|
||||
idx += 1
|
||||
|
||||
|
||||
# Get TERMS AND CONDITIONS
|
||||
# =======================================================================================
|
||||
def get_tc_details(self,obj):
|
||||
@ -352,8 +363,10 @@ class DocType(TransactionBase):
|
||||
|
||||
if self.has_sales_bom(d.item_code):
|
||||
for p in getlist(obj.doclist, 'packing_details'):
|
||||
if p.parent_item == d.item_code:
|
||||
il.append([warehouse, p.item_code, flt(p.qty)*qty, flt(p.qty)* reserved_qty, p.uom, p.batch_no, p.serial_no])
|
||||
#if p.parent_item == d.item_code: -- this fails when item with same name appears more than once in delivery note item table
|
||||
if p.parent_detail_docname == d.name:
|
||||
# the packing details table's qty is already multiplied with parent's qty
|
||||
il.append([warehouse, p.item_code, flt(p.qty), (flt(p.qty)/qty)*(reserved_qty), p.uom, p.batch_no, p.serial_no])
|
||||
else:
|
||||
il.append([warehouse, d.item_code, qty, reserved_qty, d.stock_uom, d.batch_no, d.serial_no])
|
||||
return il
|
||||
@ -424,6 +437,10 @@ class DocType(TransactionBase):
|
||||
pi.serial_no = cstr(line.serial_no)
|
||||
pi.batch_no = cstr(line.batch_no)
|
||||
pi.idx = self.packing_list_idx
|
||||
|
||||
# has to be saved, since this function is called on_update of delivery note
|
||||
pi.save()
|
||||
|
||||
self.packing_list_idx += 1
|
||||
|
||||
|
||||
|
@ -121,3 +121,80 @@ if(cur_frm.fields_dict['territory']){
|
||||
return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.%(key)s LIKE "%s" ORDER BY `tabTerritory`.`name` ASC LIMIT 50';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Transaction History related functions
|
||||
cur_frm.cscript.render_transaction_history = function(parent, doc, doctype, args) {
|
||||
$(parent).css({ 'padding-top': '10px' });
|
||||
cur_frm.transaction_list = new wn.ui.Listing({
|
||||
parent: parent,
|
||||
page_length: 10,
|
||||
get_query: function() {
|
||||
return cur_frm.cscript.get_query_transaction_history({
|
||||
parent: doc.doctype.toLowerCase(),
|
||||
parent_name: doc.name,
|
||||
doctype: doctype,
|
||||
fields: (function() {
|
||||
var fields = [];
|
||||
for(var i in args) {
|
||||
fields.push(args[i].fieldname);
|
||||
}
|
||||
return fields.join(", ");
|
||||
})(),
|
||||
});
|
||||
},
|
||||
as_dict: 1,
|
||||
no_result_message: repl('No %(doctype)s created for this %(parent)s',
|
||||
{ doctype: doctype, parent: doc.doctype }),
|
||||
render_row: function(wrapper, data) {
|
||||
render_html = cur_frm.cscript.render_transaction_history_row(data, args, doctype);
|
||||
$(wrapper).html(render_html);
|
||||
},
|
||||
});
|
||||
cur_frm.transaction_list.run();
|
||||
}
|
||||
|
||||
cur_frm.cscript.render_transaction_history_row = function(data, args, doctype) {
|
||||
var content = [];
|
||||
var currency = data.currency;
|
||||
for (var a in args) {
|
||||
for (var d in data) {
|
||||
if (args[a].fieldname === d && args[a].fieldname !== 'currency') {
|
||||
if (args[a].type === 'Link') {
|
||||
data[d] = repl('<a href="#!Form/%(doctype)s/%(name)s">\
|
||||
%(name)s</a>', { doctype: doctype, name: data[d]});
|
||||
} else if (args[a].type === 'Currency') {
|
||||
data[d] = currency + " " + fmt_money(data[d]);
|
||||
} else if (args[a].type === 'Percentage') {
|
||||
data[d] = flt(data[d]) + '%';
|
||||
} else if (args[a].type === 'Date') {
|
||||
data[d] = wn.datetime.only_date(data[d]);
|
||||
}
|
||||
if (args[a].style == undefined) {
|
||||
args[a].style = '';
|
||||
}
|
||||
data[d] = repl('\
|
||||
<td width="%(width)s" title="%(title)s" style="%(style)s">\
|
||||
%(content)s</td>',
|
||||
{
|
||||
content: data[d],
|
||||
width: args[a].width,
|
||||
title: args[a].label,
|
||||
style: args[a].style,
|
||||
});
|
||||
content.push(data[d]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
content = content.join("\n");
|
||||
return '<table><tr>' + content + '</tr></table>';
|
||||
}
|
||||
|
||||
cur_frm.cscript.get_query_transaction_history = function(args) {
|
||||
var query = repl("\
|
||||
select %(fields)s from `tab%(doctype)s` \
|
||||
where %(parent)s = '%(parent_name)s' \
|
||||
order by modified desc", args);
|
||||
return query;
|
||||
}
|
@ -61,22 +61,40 @@ erpnext.module_page.hide_links = function(wrapper) {
|
||||
|
||||
erpnext.module_page.make_list = function(module, wrapper) {
|
||||
// make project listing
|
||||
wrapper.list = new wn.ui.Listing({
|
||||
parent: $(wrapper).find('.reports-list').get(0),
|
||||
method: 'utilities.get_report_list',
|
||||
var $w = $(wrapper).find('.reports-list');
|
||||
var $parent1 = $('<div style="width: 45%; float: left; margin-right: 4.5%"></div>').appendTo($w);
|
||||
var $parent2 = $('<div style="width: 45%; float: left;"></div>').appendTo($w);
|
||||
|
||||
wrapper.list1 = new wn.ui.Listing({
|
||||
parent: $parent1,
|
||||
method: 'utilities.get_sc_list',
|
||||
render_row: function(row, data) {
|
||||
if(!data.parent_doc_type) data.parent_doc_type = data.doc_type;
|
||||
$(row).html(repl('<a href="#!Report/%(doc_type)s/%(criteria_name)s" \
|
||||
data-doctype="%(parent_doc_type)s">\
|
||||
%(criteria_name)s</a>', data))
|
||||
},
|
||||
args: {
|
||||
module: module
|
||||
},
|
||||
args: { module: module },
|
||||
no_refresh: true,
|
||||
callback: function(r) {
|
||||
erpnext.module_page.hide_links(wrapper)
|
||||
erpnext.module_page.hide_links($parent1)
|
||||
}
|
||||
});
|
||||
wrapper.list.run();
|
||||
wrapper.list1.run();
|
||||
|
||||
wrapper.list2 = new wn.ui.Listing({
|
||||
parent: $parent2,
|
||||
method: 'utilities.get_report_list',
|
||||
render_row: function(row, data) {
|
||||
$(row).html(repl('<a href="#!Report2/%(ref_doctype)s/%(name)s" \
|
||||
data-doctype="%(ref_doctype)s">\
|
||||
%(name)s</a>', data))
|
||||
},
|
||||
args: { module: module },
|
||||
no_refresh: true,
|
||||
callback: function(r) {
|
||||
erpnext.module_page.hide_links($parent2)
|
||||
}
|
||||
});
|
||||
wrapper.list2.run();
|
||||
}
|
@ -182,7 +182,6 @@ class DocType(TransactionBase):
|
||||
#self.validate_prevdoc_details()
|
||||
self.validate_reference_value()
|
||||
self.validate_for_items()
|
||||
sales_com_obj.make_packing_list(self,'delivery_note_details')
|
||||
sales_com_obj.validate_max_discount(self, 'delivery_note_details') #verify whether rate is not greater than max discount
|
||||
sales_com_obj.get_allocated_sum(self) # this is to verify that the allocated % of sales persons is 100%
|
||||
sales_com_obj.check_conversion_rate(self)
|
||||
@ -474,6 +473,7 @@ class DocType(TransactionBase):
|
||||
|
||||
# on update
|
||||
def on_update(self):
|
||||
get_obj('Sales Common').make_packing_list(self,'delivery_note_details')
|
||||
self.set_actual_qty()
|
||||
get_obj('Stock Ledger').scrub_serial_nos(self)
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
import webnotes
|
||||
|
||||
@webnotes.whitelist()
|
||||
def get_report_list(arg=None):
|
||||
def get_sc_list(arg=None):
|
||||
"""return list of reports for the given module module"""
|
||||
webnotes.response['values'] = webnotes.conn.sql("""select
|
||||
distinct criteria_name, doc_type, parent_doc_type
|
||||
@ -26,4 +26,16 @@ def get_report_list(arg=None):
|
||||
and docstatus in (0, NULL)
|
||||
and ifnull(disabled, 0) = 0
|
||||
order by criteria_name
|
||||
limit %(limit_start)s, %(limit_page_length)s""" % webnotes.form_dict, as_dict=True)
|
||||
|
||||
@webnotes.whitelist()
|
||||
def get_report_list():
|
||||
"""return list on new style reports for modules"""
|
||||
webnotes.response['values'] = webnotes.conn.sql("""select
|
||||
distinct tabReport.name, tabReport.ref_doctype
|
||||
from `tabReport`, `tabDocType`
|
||||
where tabDocType.module='%(module)s'
|
||||
and tabDocType.name = tabReport.ref_doctype
|
||||
and tabReport.docstatus in (0, NULL)
|
||||
order by tabReport.name
|
||||
limit %(limit_start)s, %(limit_page_length)s""" % webnotes.form_dict, as_dict=True)
|
@ -20,17 +20,17 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
||||
|
||||
var route = wn.get_route();
|
||||
if(route[1]=='Supplier') {
|
||||
var supplier = locals.Supplier[route[2]]
|
||||
var supplier = wn.container.page.frm.doc;
|
||||
doc.supplier = supplier.name;
|
||||
doc.supplier_name = supplier.supplier_name;
|
||||
doc.address_type = 'Office';
|
||||
} else if(route[1]=='Customer') {
|
||||
var customer = locals.Customer[route[2]]
|
||||
var customer = wn.container.page.frm.doc;
|
||||
doc.customer = customer.name;
|
||||
doc.customer_name = customer.customer_name;
|
||||
doc.address_type = 'Office';
|
||||
} else if(route[1]=='Sales Partner') {
|
||||
var sp = locals['Sales Partner'][route[2]];
|
||||
var sp = wn.container.page.frm.doc;
|
||||
doc.sales_partner = sp.name;
|
||||
doc.address_type = 'Office';
|
||||
}
|
||||
|
@ -21,18 +21,18 @@ cur_frm.cscript.onload = function(doc, cdt, cdn) {
|
||||
|
||||
var route = wn.get_route();
|
||||
if(route[1]=='Supplier') {
|
||||
var supplier = locals.Supplier[route[2]]
|
||||
var supplier = wn.container.page.frm.doc;
|
||||
doc.supplier = supplier.name;
|
||||
doc.supplier_name = supplier.supplier_name;
|
||||
} else if(route[1]=='Customer') {
|
||||
var customer = locals.Customer[route[2]];
|
||||
var customer = wn.container.page.frm.doc;
|
||||
doc.customer = customer.name;
|
||||
doc.customer_name = customer.customer_name;
|
||||
if(customer.customer_type == 'Individual') {
|
||||
doc.first_name = customer.customer_name;
|
||||
}
|
||||
} else if(route[1]=='Sales Partner') {
|
||||
var sp = locals['Sales Partner'][route[2]];
|
||||
var sp = wn.container.page.frm.doc;
|
||||
doc.sales_partner = sp.name;
|
||||
}
|
||||
}
|
||||
|
@ -3276,51 +3276,71 @@ div.appframe-toolbar {
|
||||
font-family: 'Pontano Sans';
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
src: url('../lib/css/fonts/pontanosans.woff') format('woff');
|
||||
src: url('fonts/pontanosans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Droid Sans';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Droid Sans'), local('DroidSans'), url('../lib/css/fonts/droidsans.woff') format('woff');
|
||||
src: local('Droid Sans'), local('DroidSans'), url('fonts/droidsans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('PT Sans'), local('PTSans-Regular'), url('../lib/css/fonts/ptsans.woff') format('woff');
|
||||
src: local('PT Sans'), local('PTSans-Regular'), url('fonts/ptsans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Open Sans'), local('OpenSans'), url('../lib/css/fonts/opensans.woff') format('woff');
|
||||
src: local('Open Sans'), local('OpenSans'), url('fonts/opensans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Lato Regular'), local('Lato-Regular'), url('../lib/css/fonts/lato.woff') format('woff');
|
||||
src: local('Lato Regular'), local('Lato-Regular'), url('fonts/lato.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Cabin';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Cabin Regular'), local('Cabin-Regular'), url('../lib/css/fonts/cabin.woff') format('woff');
|
||||
src: local('Cabin Regular'), local('Cabin-Regular'), url('fonts/cabin.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Pacifico';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Pacifico Regular'), local('Pacifico-Regular'), url('../lib/css/fonts/pacifico.woff') format('woff');
|
||||
src: local('Pacifico Regular'), local('Pacifico-Regular'), url('fonts/pacifico.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oleo Script';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Oleo Script'), local('OleoScript-Regular'), url('fonts/oleoscript.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Cookie';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Cookie-Regular'), url('fonts/cookie.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Marck Script';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Marck Script'), local('MarckScript-Regular'), url('fonts/marckscript.woff') format('woff');
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
@ -2271,51 +2271,71 @@ div.dialog_row table td textarea {
|
||||
font-family: 'Pontano Sans';
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
src: url('../lib/css/fonts/pontanosans.woff') format('woff');
|
||||
src: url('fonts/pontanosans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Droid Sans';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Droid Sans'), local('DroidSans'), url('../lib/css/fonts/droidsans.woff') format('woff');
|
||||
src: local('Droid Sans'), local('DroidSans'), url('fonts/droidsans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('PT Sans'), local('PTSans-Regular'), url('../lib/css/fonts/ptsans.woff') format('woff');
|
||||
src: local('PT Sans'), local('PTSans-Regular'), url('fonts/ptsans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Open Sans'), local('OpenSans'), url('../lib/css/fonts/opensans.woff') format('woff');
|
||||
src: local('Open Sans'), local('OpenSans'), url('fonts/opensans.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Lato';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Lato Regular'), local('Lato-Regular'), url('../lib/css/fonts/lato.woff') format('woff');
|
||||
src: local('Lato Regular'), local('Lato-Regular'), url('fonts/lato.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Cabin';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Cabin Regular'), local('Cabin-Regular'), url('../lib/css/fonts/cabin.woff') format('woff');
|
||||
src: local('Cabin Regular'), local('Cabin-Regular'), url('fonts/cabin.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Pacifico';
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
src: local('Pacifico Regular'), local('Pacifico-Regular'), url('../lib/css/fonts/pacifico.woff') format('woff');
|
||||
src: local('Pacifico Regular'), local('Pacifico-Regular'), url('fonts/pacifico.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oleo Script';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Oleo Script'), local('OleoScript-Regular'), url('fonts/oleoscript.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Cookie';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Cookie-Regular'), url('fonts/cookie.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Marck Script';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Marck Script'), local('MarckScript-Regular'), url('fonts/marckscript.woff') format('woff');
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
BIN
public/css/fonts/cabin.woff
Normal file
BIN
public/css/fonts/cabin.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/cookie.woff
Normal file
BIN
public/css/fonts/cookie.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/droidsans.woff
Normal file
BIN
public/css/fonts/droidsans.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/lato.woff
Normal file
BIN
public/css/fonts/lato.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/marckscript.woff
Normal file
BIN
public/css/fonts/marckscript.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/oleoscript.woff
Normal file
BIN
public/css/fonts/oleoscript.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/opensans.woff
Normal file
BIN
public/css/fonts/opensans.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/pacifico.woff
Normal file
BIN
public/css/fonts/pacifico.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/pontanosans.woff
Normal file
BIN
public/css/fonts/pontanosans.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/ptsans.woff
Normal file
BIN
public/css/fonts/ptsans.woff
Normal file
Binary file not shown.
@ -959,7 +959,7 @@ wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=d
|
||||
<div class="wnlist-area"><div class="help">Loading...</div></div>\
|
||||
</div>\
|
||||
<div class="layout-side-section">\
|
||||
<div class="stat-wrapper show-docstatus hide">\
|
||||
<div class="show-docstatus hide" style="margin-bottom: 19px">\
|
||||
<h4>Show</h4>\
|
||||
<div><input data-docstatus="0" type="checkbox" checked="checked" /> Drafts</div>\
|
||||
<div><input data-docstatus="1" type="checkbox" checked="checked" /> Submitted</div>\
|
||||
@ -978,7 +978,7 @@ this.listview.parent=this;},init_list:function(){this.make({method:'webnotes.wid
|
||||
</p></div>',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype,description:wn.markdown(locals.DocType[this.doctype].description||'')});},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[]}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove')}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length)
|
||||
return;if(!confirm('This is PERMANENT action and you cannot undo. Continue?')){return;}
|
||||
me.set_working(true);wn.call({method:'webnotes.widgets.doclistview.delete_items',args:{items:dl,doctype:me.doctype},callback:function(){me.set_working(false);me.refresh();}})},init_stats:function(){var me=this
|
||||
wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('<div class="stat-wrapper"><h4>Tags</h4>\
|
||||
wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});if(me.listview.stats.length){$('<button class="btn btn-small"><i class="refresh"></i> Refresh</button>').click(function(){me.reload_stats();}).appendTo($('<div class="stat-wrapper">').appendTo(me.$page.find('.layout-side-section')))}}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('<div class="stat-wrapper"><h4>Tags</h4>\
|
||||
<div class="help small"><i>No records tagged.</i><br><br> \
|
||||
To add a tag, open the document and click on \
|
||||
"Add Tag" on the sidebar</div></div>');}
|
||||
@ -995,7 +995,7 @@ args.label=v[0];args.width=flt(v[1])/max*100;args.count=v[1];args.field=field;$i
|
||||
<a href="#" data-label="%(label)s" data-field="%(field)s">\
|
||||
%(label)s</a> \
|
||||
(%(count)s)</div>\
|
||||
</div>',args));this.setup_stat_item_click($item);return $item;},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{filter.set_values(fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{this.filter_list.add_filter(fieldname,'=',label);}}
|
||||
</div>',args));this.setup_stat_item_click($item);return $item;},reload_stats:function(){this.$page.find('.layout-side-section .stat-wrapper').remove();this.init_stats();},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{filter.set_values(fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(fieldname,'like','%'+label);}else{this.filter_list.add_filter(fieldname,'=',label);}}
|
||||
this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags'];this.show_hide_check_column();},columns:[{width:'3%',content:'check'},{width:'4%',content:'avatar'},{width:'3%',content:'docstatus',css:{"text-align":"center"}},{width:'35%',content:'name'},{width:'40%',content:'tags',css:{'color':'#aaa'}},{width:'15%',content:'modified',css:{'text-align':'right','color':'#222'}}],render_column:function(data,parent,opts){var me=this;if(opts.css){$.each(opts.css,function(k,v){$(parent).css(k,v)});}
|
||||
if(opts.content.indexOf&&opts.content.indexOf('+')!=-1){$.map(opts.content.split('+'),function(v){me.render_column(data,parent,{content:v});});return;}
|
||||
if(typeof opts.content=='function'){opts.content(parent,data);}
|
||||
@ -2284,9 +2284,11 @@ erpnext.hide_naming_series=function(){if(cur_frm.fields_dict.naming_series){hide
|
||||
*/
|
||||
wn.provide('erpnext.module_page');erpnext.module_page.setup_page=function(module,wrapper){erpnext.module_page.hide_links(wrapper);erpnext.module_page.make_list(module,wrapper);$(wrapper).find("a[title]").tooltip({delay:{show:500,hide:100}});}
|
||||
erpnext.module_page.hide_links=function(wrapper){$(wrapper).find('[href*="List/"]').each(function(){var href=$(this).attr('href');var dt=href.split('/')[1];if(wn.boot.profile.all_read.indexOf(get_label_doctype(dt))==-1){var txt=$(this).text();$(this).parent().css('color','#999').html(txt);}});$(wrapper).find('[data-doctype]').each(function(){var dt=$(this).attr('data-doctype');if(wn.boot.profile.all_read.indexOf(dt)==-1){var txt=$(this).text();$(this).parent().css('color','#999').html(txt);}});$(wrapper).find('[href*="Form/"]').each(function(){var href=$(this).attr('href');var dt=href.split('/')[1];if(wn.boot.profile.all_read.indexOf(get_label_doctype(dt))==-1){var txt=$(this).text();$(this).parent().css('color','#999').html(txt);}});}
|
||||
erpnext.module_page.make_list=function(module,wrapper){wrapper.list=new wn.ui.Listing({parent:$(wrapper).find('.reports-list').get(0),method:'utilities.get_report_list',render_row:function(row,data){if(!data.parent_doc_type)data.parent_doc_type=data.doc_type;$(row).html(repl('<a href="#!Report/%(doc_type)s/%(criteria_name)s" \
|
||||
erpnext.module_page.make_list=function(module,wrapper){var $w=$(wrapper).find('.reports-list');var $parent1=$('<div style="width: 45%; float: left; margin-right: 4.5%"></div>').appendTo($w);var $parent2=$('<div style="width: 45%; float: left;"></div>').appendTo($w);wrapper.list1=new wn.ui.Listing({parent:$parent1,method:'utilities.get_sc_list',render_row:function(row,data){if(!data.parent_doc_type)data.parent_doc_type=data.doc_type;$(row).html(repl('<a href="#!Report/%(doc_type)s/%(criteria_name)s" \
|
||||
data-doctype="%(parent_doc_type)s">\
|
||||
%(criteria_name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links(wrapper)}});wrapper.list.run();}
|
||||
%(criteria_name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links($parent1)}});wrapper.list1.run();wrapper.list2=new wn.ui.Listing({parent:$parent2,method:'utilities.get_report_list',render_row:function(row,data){$(row).html(repl('<a href="#!Report2/%(ref_doctype)s/%(name)s" \
|
||||
data-doctype="%(ref_doctype)s">\
|
||||
%(name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links($parent2)}});wrapper.list2.run();}
|
||||
/*
|
||||
* erpnext/startup/js/toolbar.js
|
||||
*/
|
||||
|
23
update_erpnext.py
Normal file
23
update_erpnext.py
Normal file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/python
|
||||
import commands
|
||||
|
||||
cmd_list = [
|
||||
'lib/wnf.py --pull origin master',
|
||||
'lib/wnf.py -l',
|
||||
'lib/wnf.py --sync_all'
|
||||
]
|
||||
err = 0
|
||||
for cmd in cmd_list:
|
||||
stat, op = commands.getstatusoutput(cmd)
|
||||
if stat != 0:
|
||||
print "something went wrong"
|
||||
print "cannot proceed with update"
|
||||
print "status: %s" % stat
|
||||
print "output: %s" % op
|
||||
err = 1
|
||||
break
|
||||
|
||||
if not err:
|
||||
print "update_erpnext.py --> run success."
|
||||
else:
|
||||
print "update_erpnext.py --> run failed."
|
Loading…
Reference in New Issue
Block a user