Merge branch 'unicode' of github.com:webnotes/erpnext into unicode
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 4563532..9e0a4eb 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -78,35 +78,32 @@
'source', 'cancel_reason', 'total_advance', 'gross_profit',
'gross_profit_percent', 'get_advances_received',
'advance_adjustment_details', 'sales_partner', 'commission_rate',
- 'total_commission'];
+ 'total_commission', 'advances'];
item_flds_normal = ['sales_order', 'delivery_note']
item_flds_pos = ['warehouse', 'serial_no', 'batch_no', 'actual_qty', 'delivered_qty']
if(cint(doc.is_pos) == 1) {
hide_field(par_flds);
- $(cur_frm.fields_dict.payments_section.row.wrapper).toggle(true);
- $(cur_frm.fields_dict.advances.row.wrapper).toggle(false);
+ unhide_field('payments_section');
for(f in item_flds_normal) cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal[f], false);
for(f in item_flds_pos) cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_pos[f], (doc.update_stock==1?true:false));
} else {
+ hide_field('payments_section');
unhide_field(par_flds);
- $(cur_frm.fields_dict.payments_section.row.wrapper).toggle(false);
- $(cur_frm.fields_dict.advances.row.wrapper).toggle(true);
for(f in item_flds_normal) cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_normal[f], true);
for(f in item_flds_pos) cur_frm.fields_dict['entries'].grid.set_column_disp(item_flds_pos[f], false);
}
- if (doc.docstatus==1) $(cur_frm.fields_dict.recurring_invoice.row.wrapper).toggle(true);
- else $(cur_frm.fields_dict.recurring_invoice.row.wrapper).toggle(false);
+ if (doc.docstatus==1) unhide_field('recurring_invoice');
+ else hide_field('recurring_invoice');
- if(doc.customer) $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(true);
- else $(cur_frm.fields_dict.contact_section.row.wrapper).toggle(false);
+ if(doc.customer) unhide_field('contact_section');
+ else hide_field('contact_section');
// India related fields
var cp = wn.control_panel;
if (cp.country == 'India') unhide_field(['c_form_applicable', 'c_form_no']);
else hide_field(['c_form_applicable', 'c_form_no']);
-
}
@@ -114,7 +111,6 @@
// -------
cur_frm.cscript.refresh = function(doc, dt, dn) {
cur_frm.cscript.is_opening(doc, dt, dn);
- cur_frm.cscript.hide_fields(doc, dt, dn);
erpnext.hide_naming_series();
// Show / Hide button
@@ -131,6 +127,8 @@
if(doc.outstanding_amount!=0)
cur_frm.add_custom_button('Make Payment Entry', cur_frm.cscript.make_bank_voucher);
}
+ cur_frm.cscript.hide_fields(doc, dt, dn);
+
}
//fetch retail transaction related fields
@@ -191,7 +189,7 @@
var args = onload ? 'onload':''
if(doc.customer) $c_obj(make_doclist(doc.doctype, doc.name), 'get_default_customer_address', args, callback);
- if(doc.customer) unhide_field(['customer_address','contact_person', 'territory','customer_group']);
+ if(doc.customer) unhide_field('contact_section');
}
@@ -231,7 +229,7 @@
var callback = function(r,rt) {
var doc = locals[cur_frm.doctype][cur_frm.docname];
if(doc.customer) $c_obj(make_doclist(dt,dn), 'get_default_customer_address', '', callback2);
- if(doc.customer) unhide_field(['customer_address','contact_person','territory','customer_group']);
+ if(doc.customer) unhide_field('contact_section');
cur_frm.refresh();
}
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt b/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
index b1368d1..ad92d22 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
@@ -3,9 +3,9 @@
# These values are common in all dictionaries
{
- 'creation': '2012-07-13 11:57:13',
+ 'creation': '2012-07-18 16:02:44',
'docstatus': 0,
- 'modified': '2012-07-16 16:25:11',
+ 'modified': '2012-09-07 11:56:59',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -55,6 +55,66 @@
'name': u'Sales Invoice'
},
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Accounts Manager',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Accounts Manager',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 1,
+ 'cancel': 1,
+ 'create': 1,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Accounts User',
+ 'submit': 1,
+ 'write': 1
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 1,
+ 'role': u'Accounts User',
+ 'submit': 0,
+ 'write': 0
+ },
+
+ # DocPerm
+ {
+ 'amend': 0,
+ 'cancel': 0,
+ 'create': 0,
+ 'doctype': u'DocPerm',
+ 'permlevel': 0,
+ 'role': u'Customer',
+ 'submit': 0,
+ 'write': 0
+ },
+
# DocField
{
'doctype': u'DocField',
@@ -812,7 +872,7 @@
'doctype': u'DocField',
'fieldname': u'write_off_outstanding_amount_automatically',
'fieldtype': u'Check',
- 'label': u'Write Off Outstanding Amount Automatically',
+ 'label': u'Write Off Outstanding Amount',
'permlevel': 0,
'print_hide': 1
},
@@ -1487,6 +1547,7 @@
# DocField
{
'allow_on_submit': 1,
+ 'colour': u'White:FFF',
'depends_on': u'eval:doc.convert_into_recurring_invoice==1',
'description': u'Start date of the invoice period',
'doctype': u'DocField',
diff --git a/erpnext/patches/august_2012/reload_stock_ledger.py b/erpnext/patches/august_2012/reload_stock_ledger.py
new file mode 100644
index 0000000..d0ec9ee
--- /dev/null
+++ b/erpnext/patches/august_2012/reload_stock_ledger.py
@@ -0,0 +1,4 @@
+def execute():
+ import webnotes
+ from webnotes.modules import reload_doc
+ reload_doc('stock', 'Report', 'Stock Ledger')
\ No newline at end of file
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index 64c190f..1eaa757 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -565,4 +565,12 @@
'patch_module': 'patches.august_2012',
'patch_file': 'remove_cash_flow_statement',
},
-]
\ No newline at end of file
+ {
+ 'patch_module': 'patches.august_2012',
+ 'patch_file': 'reload_stock_ledger',
+ },
+ {
+ 'patch_module': 'patches.september_2012',
+ 'patch_file': 'stock_report_permissions_for_accounts',
+ },
+]
diff --git a/erpnext/patches/september_2012/__init__.py b/erpnext/patches/september_2012/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/patches/september_2012/__init__.py
diff --git a/erpnext/patches/september_2012/stock_report_permissions_for_accounts.py b/erpnext/patches/september_2012/stock_report_permissions_for_accounts.py
new file mode 100644
index 0000000..26af06b
--- /dev/null
+++ b/erpnext/patches/september_2012/stock_report_permissions_for_accounts.py
@@ -0,0 +1,17 @@
+def execute():
+ import webnotes
+ from webnotes.model.doc import addchild
+ from webnotes.model.code import get_obj
+
+ for parent in ("Stock Ledger Entry", "Bin"):
+ existing = webnotes.conn.sql("""select role from `tabDocPerm`
+ where permlevel=0 and parent=%s""", (parent,))
+
+ if "Accounts Manager" not in map(lambda x: x[0], existing):
+ doctype_obj = get_obj("DocType", parent, with_children=1)
+ ch = addchild(doctype_obj.doc, "permissions", "DocPerm")
+ ch.permlevel = 0
+ ch.role = "Accounts Manager"
+ ch.read = 1
+ ch.save()
+
\ No newline at end of file
diff --git a/erpnext/stock/Report/Stock Ledger/Stock Ledger.txt b/erpnext/stock/Report/Stock Ledger/Stock Ledger.txt
new file mode 100644
index 0000000..d0c5184
--- /dev/null
+++ b/erpnext/stock/Report/Stock Ledger/Stock Ledger.txt
@@ -0,0 +1,26 @@
+# Report, Stock Ledger
+[
+
+ # These values are common in all dictionaries
+ {
+ 'creation': '2012-09-06 18:47:05',
+ 'docstatus': 0,
+ 'modified': '2012-09-06 18:48:22',
+ 'modified_by': u'Administrator',
+ 'owner': u'Administrator'
+ },
+
+ # These values are common for all Report
+ {
+ 'doctype': 'Report',
+ 'json': u'{"filters":[["Stock Ledger Entry","is_cancelled","=","No"]],"columns":[["item_code","Stock Ledger Entry"],["warehouse","Stock Ledger Entry"],["posting_date","Stock Ledger Entry"],["posting_time","Stock Ledger Entry"],["actual_qty","Stock Ledger Entry"],["bin_aqat","Stock Ledger Entry"],["voucher_type","Stock Ledger Entry"],["voucher_no","Stock Ledger Entry"]],"sort_by":"Stock Ledger Entry.posting_date","sort_order":"desc","sort_by_next":"Stock Ledger Entry.posting_time","sort_order_next":"desc"}',
+ 'name': '__common__',
+ 'ref_doctype': u'Stock Ledger Entry'
+ },
+
+ # Report, Stock Ledger
+ {
+ 'doctype': 'Report',
+ 'name': u'Stock Ledger'
+ }
+]
\ No newline at end of file
diff --git a/erpnext/utilities/page/todo/todo.py b/erpnext/utilities/page/todo/todo.py
index 37f9295..f0de04e 100644
--- a/erpnext/utilities/page/todo/todo.py
+++ b/erpnext/utilities/page/todo/todo.py
@@ -49,7 +49,7 @@
def delete(arg=None):
name = webnotes.form_dict['name']
d = Document('ToDo', name)
- if d and d.name:
+ if d and d.name and d.owner != webnotes.session['user']:
notify_assignment(d)
webnotes.conn.sql("delete from `tabToDo` where name = %s", name)
diff --git a/public/js/all-app.js b/public/js/all-app.js
index e5fb717..f33df11 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -1043,9 +1043,8 @@
wn.views.reportview2={show:function(dt){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){new wn.views.ReportViewPage(route[1],route[2]);}else{wn.set_route('404');}}}}
wn.views.ReportViewPage=Class.extend({init:function(doctype,docname){this.doctype=doctype;this.docname=docname;this.page_name=wn.get_route_str();this.make_page();var me=this;wn.model.with_doctype(doctype,function(){me.make_report_view();if(docname){wn.model.with_doc('Report',docname,function(r){me.reportview.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.reportview.run();});}else{me.reportview.run();}});},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},make_report_view:function(){this.page.appframe.add_breadcrumb(locals.DocType[this.doctype].module);this.reportview=new wn.views.ReportView(this.doctype,this.docname,this.page)}})
wn.views.ReportView=wn.ui.Listing.extend({init:function(doctype,docname,page){var me=this;$(page).find('.layout-main').html('Loading Report...');this.import_slickgrid();$(page).find('.layout-main').empty();this.doctype=doctype;this.docname=docname;this.page=page;this.tab_name='`tab'+doctype+'`';this.setup();},import_slickgrid:function(){wn.require('js/lib/slickgrid/slick.grid.css');wn.require('js/lib/slickgrid/slick-default-theme.css');wn.require('js/lib/slickgrid/jquery.event.drag.min.js');wn.require('js/lib/slickgrid/slick.core.js');wn.require('js/lib/slickgrid/slick.grid.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},set_init_columns:function(){var columns=[['name'],['owner']];$.each(wn.meta.docfield_list[this.doctype],function(i,df){if(df.in_filter&&df.fieldname!='naming_series'&&df.fieldtype!='Table'){columns.push([df.fieldname]);}});this.columns=columns;},setup:function(){var me=this;this.make({title:'Report: '+(this.docname?(this.doctype+' - '+this.docname):this.doctype),appframe:this.page.appframe,method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:$(this.page).find('.layout-main'),start:0,page_length:20,show_filters:true,new_doctype:this.doctype,allow_delete:true,});this.make_column_picker();this.make_sorter();this.make_export();this.set_init_columns();this.make_save();},set_columns_and_filters:function(opts){var me=this;if(opts.columns)this.columns=opts.columns;if(opts.filters)$.each(opts.filters,function(i,f){me.filter_list.add_filter(f[0],f[1],f[2],f[3]);});if(opts.sort_by)this.sort_by_select.val(opts.sort_by);if(opts.sort_order)this.sort_order_select.val(opts.sort_order);if(opts.sort_by_next)this.sort_by_next_select.val(opts.sort_by_next);if(opts.sort_order_next)this.sort_order_next_select.val(opts.sort_order_next);},get_args:function(){var me=this;return{doctype:this.doctype,fields:$.map(this.columns,function(v){return me.get_full_column_name(v)}),order_by:this.get_order_by(),filters:this.filter_list.get_filters(),docstatus:['0','1','2']}},get_order_by:function(){var order_by=this.get_selected_table_and_column(this.sort_by_select)
-+' '+this.sort_order_select.val()
-if(this.sort_by_next_select.val()){order_by+=', '+this.get_selected_table_and_column(this.sort_by_next_select)
-+' '+this.sort_order_next_select.attr("fieldname")}
++' '+this.sort_order_select.val();if(this.sort_by_next_select.val()){order_by+=', '+this.get_selected_table_and_column(this.sort_by_next_select)
++' '+this.sort_order_next_select.val();}
return order_by;},get_selected_table_and_column:function($select){return this.get_full_column_name([$select.find('option:selected').attr('fieldname'),$select.find('option:selected').attr('table')])},get_full_column_name:function(v){return(v[1]?('`tab'+v[1]+'`'):this.tab_name)+'.'+v[0];},build_columns:function(){var me=this;return $.map(this.columns,function(c){var docfield=wn.meta.docfield_map[c[1]||me.doctype][c[0]];coldef={id:c[0],field:c[0],docfield:docfield,name:(docfield?docfield.label:toTitle(c[0])),width:(docfield?cint(docfield.width):120)||120}
if(c[0]=='name'){coldef.formatter=function(row,cell,value,columnDef,dataContext){return repl("<a href='#!Form/%(doctype)s/%(name)s'>%(name)s</a>",{doctype:me.doctype,name:value});}}else if(docfield&&docfield.fieldtype=='Link'){coldef.formatter=function(row,cell,value,columnDef,dataContext){if(value){return repl("<a href='#!Form/%(doctype)s/%(name)s'>%(name)s</a>",{doctype:columnDef.docfield.options,name:value});}else{return'';}}}
return coldef;});},render_list:function(){var me=this;var columns=[{id:'_idx',field:'_idx',name:'Sr.',width:40}].concat(this.build_columns());$.each(this.data,function(i,v){v._idx=i+1;});var options={enableCellNavigation:true,enableColumnReorder:false};var grid=new Slick.Grid(this.$w.find('.result-list').css('border','1px solid grey').css('height','500px').get(0),this.data,columns,options);},make_column_picker:function(){var me=this;this.column_picker=new wn.ui.ColumnPicker(this);this.page.appframe.add_button('Pick Columns',function(){me.column_picker.show(me.columns);},'icon-th-list');},make_sorter:function(){var me=this;this.sort_dialog=new wn.ui.Dialog({title:'Sorting Preferences'});$(this.sort_dialog.body).html('<p class="help">Sort By</p>\
@@ -2147,7 +2146,7 @@
refresh_field=function(n,docname,table_field){if(typeof n==typeof[])refresh_many(n,docname,table_field);if(table_field){if(_f.frm_dialog&&_f.frm_dialog.display){_f.frm_dialog.cur_frm.refresh_field(n);}else{var g=_f.cur_grid_cell;if(g)var hc=g.grid.head_row.cells[g.cellIndex];if(g&&hc&&hc.fieldname==n&&g.row.docname==docname){hc.template.refresh();}else{cur_frm.fields_dict[table_field].grid.refresh_cell(docname,n);}}}else if(cur_frm){cur_frm.refresh_field(n)}}
set_field_options=function(n,txt){cur_frm.set_df_property(n,'options',txt)}
set_field_permlevel=function(n,level){cur_frm.set_df_property(n,'permlevel',level)}
-toggle_field=function(n,hidden){var df_obj=get_field_obj(n);var df=Meta.get_field(cur_frm.doctype,n,cur_frm.docname);if(df){if(df_obj.df.fieldtype==="Section Break"){$(df_obj.row.wrapper).toggle(hidden?false:true);}else if(df_obj.df.fieldtype==="Column Break"){$(df_obj.cell.wrapper).toggle(hidden?false:true);}else{df.hidden=hidden;refresh_field(n);}}
+toggle_field=function(n,hidden){var df=Meta.get_field(cur_frm.doctype,n,cur_frm.docname);if(df){df.hidden=hidden;refresh_field(n);}
else{console.log((hidden?"hide_field":"unhide_field")+" cannot find field "+n);}}
hide_field=function(n){if(cur_frm){if(n.substr)toggle_field(n,1);else{for(var i in n)toggle_field(n[i],1)}}}
unhide_field=function(n){if(cur_frm){if(n.substr)toggle_field(n,0);else{for(var i in n)toggle_field(n[i],0)}}}