Procházet zdrojové kódy

Changes in print format and money_in_words

version-14
Anand Doshi před 13 roky
rodič
revize
2efd363b57
5 změnil soubory, kde provedl 31 přidání a 35 odebrání
  1. +1
    -2
      js/legacy/app.js
  2. +9
    -11
      js/legacy/form.compressed.js
  3. +19
    -19
      js/legacy/widgets/form/print_format.js
  4. +1
    -2
      js/legacy/wnf.compressed.js
  5. +1
    -1
      py/webnotes/utils/__init__.py

+ 1
- 2
js/legacy/app.js Zobrazit soubor

@@ -134,8 +134,7 @@ function redirect_to_login() {
}

// default print style
_p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }"
+"\npre { margin:0; padding:0;}"
_p.def_print_style_body = "html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }" + "\npre { margin:0; padding:0;}"

_p.def_print_style_other = "\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
+"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"


+ 9
- 11
js/legacy/form.compressed.js Zobrazit soubor

@@ -344,7 +344,7 @@ $.extend(_p,{show_dialog:function(){if(!_p.dialog){_p.make_dialog();}
_p.dialog.show();},make_dialog:function(){var d=new Dialog(360,140,'Print Formats',[['HTML','Select'],['Check','No Letterhead'],['HTML','Buttons']]);$btn(d.widgets.Buttons,'Print',function(){_p.build(sel_val(cur_frm.print_sel),_p.go,d.widgets['No Letterhead'].checked);},{cssFloat:'right',marginBottom:'16px',marginLeft:'7px'},'green');$btn(d.widgets.Buttons,'Preview',function(){_p.build(sel_val(cur_frm.print_sel),_p.preview,d.widgets['No Letterhead'].checked);},{cssFloat:'right',marginBottom:'16px'},'');d.onshow=function(){var c=_p.dialog.widgets['Select'];if(c.cur_sel&&c.cur_sel.parentNode==c){c.removeChild(c.cur_sel);}
c.appendChild(cur_frm.print_sel);c.cur_sel=cur_frm.print_sel;}
_p.dialog=d;},formats:{},build:function(fmtname,onload,no_letterhead,only_body){args={fmtname:fmtname,onload:onload,no_letterhead:no_letterhead,only_body:only_body};if(!cur_frm){alert('No Document Selected');return;}
var doc=locals[cur_frm.doctype][cur_frm.docname];if(args.fmtname=='Standard'){args.onload(_p.render({body:_p.print_std(args.no_letterhead),style:_p.print_style,doc:doc,title:doc.name,no_letterhead:args.no_letterhead,only_body:args.only_body}));}else{if(!_p.formats[args.fmtname]){var build_args=args;$c(command='webnotes.widgets.form.get_print_format',args={'name':build_args.fmtname},fn=function(r,rt){_p.formats[build_args.fmtname]=r.message;build_args.onload(_p.render({body:_p.formats[build_args.fmtname],style:'',doc:doc,title:doc.name,no_letterhead:build_args.no_letterhead,only_body:build_args.only_body}));});}else{args.onload(_p.render({body:_p.formats[args.fmtname],style:'',doc:doc,title:doc.name,no_letterhead:args.no_letterhead,only_body:args.only_body}));}}},render:function(args){var container=document.createElement('div');var stat='';stat+=_p.show_draft(args);stat+=_p.show_archived(args);container.innerHTML=args.body;_p.run_embedded_js(container,args.doc);var style=_p.consolidate_css(container,args);_p.show_letterhead(container,args);_p.render_header_on_break(container,args);return _p.render_final(style,stat,container,args);},head_banner_format:function(){return"\
var doc=locals[cur_frm.doctype][cur_frm.docname];if(args.fmtname=='Standard'){args.onload(_p.render({body:_p.print_std(args.no_letterhead),style:_p.print_style,doc:doc,title:doc.name,no_letterhead:args.no_letterhead,only_body:args.only_body}));}else{if(!_p.formats[args.fmtname]){var build_args=args;$c(command='webnotes.widgets.form.get_print_format',args={'name':build_args.fmtname},fn=function(r,rt){_p.formats[build_args.fmtname]=r.message;build_args.onload(_p.render({body:_p.formats[build_args.fmtname],style:'',doc:doc,title:doc.name,no_letterhead:build_args.no_letterhead,only_body:build_args.only_body}));});}else{args.onload(_p.render({body:_p.formats[args.fmtname],style:'',doc:doc,title:doc.name,no_letterhead:args.no_letterhead,only_body:args.only_body}));}}},render:function(args){var container=document.createElement('div');var stat='';stat+=_p.show_draft(args);stat+=_p.show_archived(args);container.innerHTML=args.body;_p.show_letterhead(container,args);_p.run_embedded_js(container,args.doc);var style=_p.consolidate_css(container,args);_p.render_header_on_break(container,args);return _p.render_final(style,stat,container,args);},head_banner_format:function(){return"\
<div style = '\
text-align: center; \
padding: 8px; \
@@ -358,9 +358,7 @@ var doc=locals[cur_frm.doctype][cur_frm.docname];if(args.fmtname=='Standard'){ar
</div>"},show_draft:function(args){if(args.doc&&cint(args.doc.docstatus)==0&&cur_frm.perm[0][SUBMIT]){draft=_p.head_banner_format();draft=draft.replace("{{HEAD}}","DRAFT");draft=draft.replace("{{DESCRIPTION}}","This box will go away after the document is submitted.");return draft;}else{return"";}},show_archived:function(args){if(args.doc&&args.doc.__archived){archived=_p.head_banner_format();archived=archived.replace("{{HEAD}}","ARCHIVED");archived=archived.replace("{{DESCRIPTION}}","You must restore this document to make it editable.");}else{return"";}},consolidate_css:function(container,args){var body_style='';var style_list=container.getElementsByTagName('style');while(style_list&&style_list.length>0){for(i in style_list){if(style_list[i]&&style_list[i].innerHTML){body_style+=style_list[i].innerHTML;var parent=style_list[i].parentNode;if(parent){parent.removeChild(style_list[i]);}else{container.removeChild(style_list[i]);}}}
style_list=container.getElementsByTagName('style');}
style_concat=(args.only_body?'':_p.def_print_style_body)
+_p.def_print_style_other
+args.style
+body_style;return style_concat;},run_embedded_js:function(container,doc){var jslist=container.getElementsByTagName('script');while(jslist&&jslist.length>0){for(i in jslist){if(jslist[i]&&jslist[i].innerHTML){var code=jslist[i].innerHTML;var parent=jslist[i].parentNode;var span=$a(parent,'span');parent.replaceChild(span,jslist[i]);var val=eval(code);if(!val){val='';}
+_p.def_print_style_other+args.style+body_style;return style_concat;},run_embedded_js:function(container,doc){var jslist=container.getElementsByTagName('script');while(jslist&&jslist.length>0){for(i in jslist){if(jslist[i]&&jslist[i].innerHTML){var code=jslist[i].innerHTML;var parent=jslist[i].parentNode;var span=$a(parent,'span');parent.replaceChild(span,jslist[i]);var val=code?eval(code):'';if(!val||typeof(val)=='object'){val='';}
span.innerHTML=val;}}
jslist=container.getElementsByTagName('script');}},show_letterhead:function(container,args){if(!(args.no_letterhead||args.only_body)){container.innerHTML='<div>'+_p.get_letter_head()+'</div>'
+container.innerHTML;}},render_header_on_break:function(container,args){var page_set=container.getElementsByClassName('page-settings');if(page_set.length){for(var i=0;i<page_set.length;i++){var tmp='';tmp+=_p.show_draft(args);tmp+=_p.show_archived(args);_p.show_letterhead(page_set[i],args);page_set[i].innerHTML=tmp+page_set[i].innerHTML;}}},render_final:function(style,stat,container,args){var header='<div class="page-settings">\n';var footer='\n</div>';if(!args.only_body){header='<!DOCTYPE html>\n\
@@ -374,7 +372,7 @@ jslist=container.getElementsByTagName('script');}},show_letterhead:function(cont
var finished=header
+stat
+container.innerHTML.replace(/<div/g,'\n<div').replace(/<td/g,'\n<td')
+footer;return finished;},get_letter_head:function(){var cp=locals['Control Panel']['Control Panel'];var lh='';if(cur_frm.doc.letter_head){lh=cstr(_p.letter_heads[cur_frm.doc.letter_head]);}else if(cp.letter_head){lh=cp.letter_head}
+footer;return finished;},get_letter_head:function(){var cp=locals['Control Panel']['Control Panel'];var lh='';if(cur_frm.doc.letter_head){lh=cstr(_p.letter_heads[cur_frm.doc.letter_head]);}else if(cp.letter_head){lh=cp.letter_head;}
return lh;},print_style:"\
.datalabelcell { \
padding: 2px 0px; \
@@ -395,7 +393,7 @@ return lh;},print_style:"\
font-size: 14px; \
font-weight: bold; \
margin: 8px 0px; \
}",print_style_other:"",print_std:function(no_letterhead){var docname=cur_frm.docname;var doctype=cur_frm.doctype;var data=getchildren('DocField',doctype,'fields','DocType');var layout=_p.add_layout(doctype);this.pf_list=[layout];var me=this;me.layout=layout;$.extend(this,{build_head:function(doctype,docname){var h1_style={fontSize:'22px',marginBottom:'8px'}
}",print_std:function(no_letterhead){var docname=cur_frm.docname;var doctype=cur_frm.doctype;var data=getchildren('DocField',doctype,'fields','DocType');var layout=_p.add_layout(doctype);this.pf_list=[layout];var me=this;me.layout=layout;$.extend(this,{build_head:function(doctype,docname){var h1_style={fontSize:'22px',marginBottom:'8px'}
var h1=$a(me.layout.cur_row.header,'h1','',h1_style);h1.innerHTML=cur_frm.pformat[docname]?cur_frm.pformat[docname]:get_doctype_label(doctype);var h2_style={fontSize:'16px',color:'#888',marginBottom:'8px',paddingBottom:'8px',borderBottom:(me.layout.with_border?'0px':'1px solid #000')}
var h2=$a(me.layout.cur_row.header,'div','',h2_style);h2.innerHTML=docname;},build_data:function(data,doctype,docname){if(data[0]&&data[0].fieldtype!="Section Break"){me.layout.addrow();if(data[0].fieldtype!="Column Break"){me.layout.addcell();}}
$.extend(this,{generate_custom_html:function(field,doctype,docname){var container=$a(me.layout.cur_cell,'div');container.innerHTML=cur_frm.pformat[field.fieldname](locals[doctype][docname]);},render_normal:function(field){switch(field.fieldtype){case'Section Break':me.layout.addrow();if(field[i+1]&&field[i+1].fieldtype!='Column Break'){me.layout.addcell();}
@@ -404,18 +402,18 @@ me.layout.close_borders();},build_html:function(){var html='';for(var i=0;i<me.p
this.pf_list=[];return html;}});this.build_head(doctype,docname);this.build_data(data,doctype,docname);var html=this.build_html();return html;},add_layout:function(doctype){var layout=new Layout();layout.addrow();if(locals['DocType'][doctype].print_outline=='Yes'){layout.with_border=1}
return layout;},print_std_add_table:function(t,layout,pf_list,dt,no_letterhead){if(t.appendChild){layout.cur_cell.appendChild(t);}else{page_break='\n\
<div style = "page-break-after: always;" \
class = "page_break"></div><div class="page-settings">';for(var i=0;i<t.length-1;i++){layout.cur_cell.appendChild(t[i]);layout.close_borders();pf_list.push(page_break);layout=_p.add_layout(dt,no_letterhead);pf_list.push(layout);layout.addrow();layout.addcell();var div=$a(layout.cur_cell,'div');div.innerHTML='Continued from previous page...';div.style.padding='4px';}
class = "page_break"></div><div class="page-settings"></div>';for(var i=0;i<t.length-1;i++){layout.cur_cell.appendChild(t[i]);layout.close_borders();pf_list.push(page_break);layout=_p.add_layout(dt,no_letterhead);pf_list.push(layout);layout.addrow();layout.addcell();var div=$a(layout.cur_cell,'div');div.innerHTML='Continued from previous page...';div.style.padding='4px';}
layout.cur_cell.appendChild(t[t.length-1]);}
return layout;},print_std_add_field:function(dt,dn,f,layout){var val=_f.get_value(dt,dn,f.fieldname);if(f.fieldtype!='Button'){if(val||in_list['Float','Int','Currency'],f.fieldtype){row=_p.field_tab(layout.cur_cell);row.cells[0].innerHTML=f.label?f.label:f.fieldname;$s(row.cells[1],val,f.fieldtype);if(f.fieldtype=='Currency'){$y(row.cells[1],{textAlign:'left'});}}}},field_tab:function(layout_cell){var tab=$a(layout_cell,'table','',{width:'100%'});var row=tab.insertRow(0);_p.row=row;row.insertCell(0);row.insertCell(1);row.cells[0].className='datalabelcell';row.cells[1].className='datainputcell';return row;}});print_table=function(dt,dn,fieldname,tabletype,cols,head_labels,widths,condition,cssClass){var me=this;$.extend(this,{flist:fields_list[tabletype],data:getchildren(tabletype,dn,fieldname,dt),cell_style:{border:'1px solid #000',padding:'2px',verticalAlign:'top'},head_cell_style:{border:'1px solid #000',padding:'2px',verticalAlign:'top',backgroundColor:'#ddd'},table_style:{width:'100%',borderCollapse:'collapse',marginBottom:'10px'},prepare_col_heads:function(flist){var new_flist=[];if(cols&&cols.length){if(cols[0]=='SR'){new_flist.push('SR')}
return layout;},print_std_add_field:function(dt,dn,f,layout){var val=_f.get_value(dt,dn,f.fieldname);if(f.fieldtype!='Button'){if(val||in_list(['Float','Int','Currency'],f.fieldtype)){row=_p.field_tab(layout.cur_cell);row.cells[0].innerHTML=f.label?f.label:f.fieldname;$s(row.cells[1],val,f.fieldtype);if(f.fieldtype=='Currency'){$y(row.cells[1],{textAlign:'left'});}}}},field_tab:function(layout_cell){var tab=$a(layout_cell,'table','',{width:'100%'});var row=tab.insertRow(0);_p.row=row;row.insertCell(0);row.insertCell(1);row.cells[0].className='datalabelcell';row.cells[1].className='datainputcell';return row;}});print_table=function(dt,dn,fieldname,tabletype,cols,head_labels,widths,condition,cssClass,modifier){var me=this;$.extend(this,{flist:fields_list[tabletype],data:getchildren(tabletype,dn,fieldname,dt),cell_style:{border:'1px solid #000',padding:'2px',verticalAlign:'top'},head_cell_style:{border:'1px solid #000',padding:'2px',verticalAlign:'top',backgroundColor:'#ddd',fontWeight:'bold'},table_style:{width:'100%',borderCollapse:'collapse',marginBottom:'10px'},prepare_col_heads:function(flist){var new_flist=[];if(cols&&cols.length){if(cols[0]=='SR'){new_flist.push('SR')}
for(var i=0;i<cols.length;i++){for(var j=0;j<flist.length;j++){if(flist[j].fieldname==cols[i]){new_flist.push(flist[j]);break;}}}}else{new_flist.push('SR');for(var i=0;i<flist.length;i++){if(!flist[i].print_hide){new_flist.push(flist[i]);}}}
me.flist=new_flist;},make_print_table:function(flist){var wrapper=document.createElement('div');var table=$a(wrapper,'table','',me.table_style);table.wrapper=wrapper;table.insertRow(0);var col_start=0;if(flist[0]=='SR'){var cell=table.rows[0].insertCell(0);cell.innerHTML=head_labels?head_labels[0]:'<b>SR</b>';$y(cell,{width:'30px'});$y(cell,me.head_cell_style);col_start++;}
for(var c=col_start;c<flist.length;c++){var cell=table.rows[0].insertCell(c);$y(cell,me.head_cell_style);cell.innerHTML=head_labels?head_labels[c]:flist[c].label;if(flist[c].width){$y(cell,{width:flist[c].width});}
if(widths){$y(cell,{width:widths[c]});}
if(flist[c].fieldtype=='Currency'){$y(cell,{textAlign:'right'});}
cell.style.fontWeight='bold';}
if(in_list(['Currency','Float'],flist[c].fieldtype)){$y(cell,{textAlign:'right'});}}
return table;},populate_table:function(table,data){for(var r=0;r<data.length;r++){if((!condition)||(condition(data[r]))){if(data[r].page_break){table=me.make_print_table(me.flist);me.table_list.push(table.wrapper);}
var row=table.insertRow(table.rows.length);if(me.flist[0]=='SR'){var cell=row.insertCell(0);cell.innerHTML=r+1;$y(cell,me.cell_style);}
for(var c=me.flist.indexOf('SR')+1;c<me.flist.length;c++){var cell=row.insertCell(c);$y(cell,me.cell_style);$s(cell,data[r][me.flist[c].fieldname],me.flist[c].fieldtype);if(me.flist[c].fieldtype=='Currency'){cell.style.textAlign='right';}}}}}});if(!this.data.length){return document.createElement('div');}
for(var c=me.flist.indexOf('SR')+1;c<me.flist.length;c++){var cell=row.insertCell(c);$y(cell,me.cell_style);if(modifier&&me.flist[c].fieldname in modifier){data[r][me.flist[c].fieldname]=modifier[me.flist[c].fieldname](data[r]);}
$s(cell,data[r][me.flist[c].fieldname],me.flist[c].fieldtype);if(in_list(['Currency','Float'],me.flist[c].fieldtype)){cell.style.textAlign='right';}}}}}});if(!this.data.length){return document.createElement('div');}
this.prepare_col_heads(this.flist);var table=me.make_print_table(this.flist);this.table_list=[table.wrapper];this.populate_table(table,this.data);return(me.table_list.length>1)?me.table_list:me.table_list[0];}
_e.email_as_field='email_id';_e.email_as_dt='Contact';_e.email_as_in='email_id,contact_name';sendmail=function(emailto,emailfrom,cc,subject,message,fmt,with_attachments){var fn=function(html){$c('webnotes.utils.email_lib.send_form',{'sendto':emailto,'sendfrom':emailfrom?emailfrom:'','cc':cc?cc:'','subject':subject,'message':replace_newlines(message),'body':html,'full_domain':wn.urllib.get_base_url(),'with_attachments':with_attachments?1:0,'dt':cur_frm.doctype,'dn':cur_frm.docname},function(r,rtxt){});}
_p.build(fmt,fn);}


+ 19
- 19
js/legacy/widgets/form/print_format.js Zobrazit soubor

@@ -155,12 +155,12 @@ $.extend(_p, {
// Append args.body's content as a child of container
container.innerHTML = args.body;
_p.run_embedded_js(container, args.doc);
var style = _p.consolidate_css(container, args);
// Show letterhead?
_p.show_letterhead(container, args);
_p.run_embedded_js(container, args.doc);
var style = _p.consolidate_css(container, args);
_p.render_header_on_break(container, args);
return _p.render_final(style, stat, container, args);
@@ -235,10 +235,9 @@ $.extend(_p, {
}
// Concatenate all styles
//style_concat = _p.def_print_style_other + args.style + body_style;
style_concat = (args.only_body ? '' : _p.def_print_style_body)
+ _p.def_print_style_other
+ args.style
+ body_style;
+ _p.def_print_style_other + args.style + body_style;
return style_concat;
},
@@ -254,8 +253,8 @@ $.extend(_p, {
var parent = jslist[i].parentNode;
var span = $a(parent, 'span');
parent.replaceChild(span, jslist[i]);
var val = eval(code);
if(!val) { val = ''; }
var val = code ? eval(code) : '';
if(!val || typeof(val)=='object') { val = ''; }
span.innerHTML = val;
}
}
@@ -319,7 +318,7 @@ $.extend(_p, {
if(cur_frm.doc.letter_head) {
lh = cstr(_p.letter_heads[cur_frm.doc.letter_head]);
} else if (cp.letter_head) {
lh = cp.letter_head
lh = cp.letter_head;
}
return lh;
},
@@ -347,8 +346,6 @@ $.extend(_p, {
margin: 8px 0px; \
}",
print_style_other: "",
print_std: function(no_letterhead) {
// Get doctype, docname, layout for a doctype
var docname = cur_frm.docname;
@@ -516,7 +513,7 @@ $.extend(_p, {
} else {
page_break = '\n\
<div style = "page-break-after: always;" \
class = "page_break"></div><div class="page-settings">';
class = "page_break"></div><div class="page-settings"></div>';
// If a list of tables is passed
for(var i = 0; i < t.length-1; i++) {
@@ -547,7 +544,7 @@ $.extend(_p, {
print_std_add_field: function(dt, dn, f, layout) {
var val = _f.get_value(dt, dn, f.fieldname);
if(f.fieldtype!='Button') {
if(val || in_list['Float', 'Int', 'Currency'], f.fieldtype) {
if(val || in_list(['Float', 'Int', 'Currency'], f.fieldtype)) {
// If value or a numeric type then proceed
// Add field table
@@ -579,7 +576,7 @@ $.extend(_p, {
});


print_table = function(dt, dn, fieldname, tabletype, cols, head_labels, widths, condition, cssClass) {
print_table = function(dt, dn, fieldname, tabletype, cols, head_labels, widths, condition, cssClass, modifier) {
var me = this;
$.extend(this, {
flist: fields_list[tabletype],
@@ -601,7 +598,8 @@ print_table = function(dt, dn, fieldname, tabletype, cols, head_labels, widths,
border: '1px solid #000',
padding: '2px',
verticalAlign: 'top',
backgroundColor: '#ddd'
backgroundColor: '#ddd',
fontWeight: 'bold'
},
table_style: {
@@ -668,10 +666,9 @@ print_table = function(dt, dn, fieldname, tabletype, cols, head_labels, widths,
cell.innerHTML = head_labels?head_labels[c]:flist[c].label;
if(flist[c].width) { $y(cell, {width: flist[c].width}); }
if(widths) { $y(cell, {width: widths[c]}); }
if(flist[c].fieldtype == 'Currency') {
if(in_list(['Currency', 'Float'], flist[c].fieldtype)) {
$y(cell, { textAlign: 'right' });
}
cell.style.fontWeight = 'bold';
}
return table;
},
@@ -698,9 +695,12 @@ print_table = function(dt, dn, fieldname, tabletype, cols, head_labels, widths,
for(var c=me.flist.indexOf('SR')+1; c<me.flist.length; c++){
var cell = row.insertCell(c);
$y(cell, me.cell_style);
if(modifier && me.flist[c].fieldname in modifier) {
data[r][me.flist[c].fieldname] = modifier[me.flist[c].fieldname](data[r]);
}
$s(cell, data[r][me.flist[c].fieldname],
me.flist[c].fieldtype);
if(me.flist[c].fieldtype == 'Currency') {
if(in_list(['Currency', 'Float'], me.flist[c].fieldtype)) {
cell.style.textAlign = 'right';
}
}
@@ -722,4 +722,4 @@ print_table = function(dt, dn, fieldname, tabletype, cols, head_labels, widths,

// If multiple tables exists, send whole list, else send only one table
return (me.table_list.length > 1) ? me.table_list : me.table_list[0];
}
}

+ 1
- 2
js/legacy/wnf.compressed.js Zobrazit soubor

@@ -909,8 +909,7 @@ redirect_to_login();});}
function redirect_to_login(){if(login_file)
window.location.href=login_file;else
window.location.href='index.html';}
_p.def_print_style_body="html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }"
+"\npre { margin:0; padding:0;}"
_p.def_print_style_body="html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }"+"\npre { margin:0; padding:0;}"
_p.def_print_style_other="\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
+"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
+"\n.noborder td { vertical-align: top; }"


+ 1
- 1
py/webnotes/utils/__init__.py Zobrazit soubor

@@ -389,7 +389,7 @@ def money_in_words(number, main_currency = None, fraction_currency=None):
if not fraction_currency:
fraction_currency = d.get('fraction_currency', 'paise')

n = str(flt(number))
n = "%.2f" % flt(number)
main, fraction = n.split('.')
if len(fraction)==1: fraction += '0'


Načítá se…
Zrušit
Uložit