diff --git a/erpnext/patches/july_2012/remove_event_role_owner_match.py b/erpnext/patches/july_2012/remove_event_role_owner_match.py
new file mode 100644
index 0000000000..a74ef8075d
--- /dev/null
+++ b/erpnext/patches/july_2012/remove_event_role_owner_match.py
@@ -0,0 +1,5 @@
+def execute():
+ import webnotes
+ webnotes.conn.sql("""\
+ update `tabDocPerm` set `match`=NULL
+ where parent='Event' and role='All' and permlevel=0""")
\ No newline at end of file
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index 5a6748c966..b538c3d7b1 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -487,4 +487,9 @@ patch_list = [
'patch_file': 'cms2',
'description': 'cms2 release patches'
},
+ {
+ 'patch_module': 'patches.july_2012',
+ 'patch_file': 'remove_event_role_owner_match',
+ 'description': "Remove Owner match from Event DocType's Permissions"
+ },
]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 9a45c70091..175133d748 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -293,22 +293,22 @@ cur_frm.fields_dict['quotation_details'].grid.get_field('item_code').get_query=
(\
select q.item_code,q.quote_rate from\
(\
- select q.transaction_date,qd.item_code,basic_rate as quote_rate from `tabQuotation Item` qd, `tabQuotation` q where q.name=qd.parent and q.docstatus=1 and customer='%(cust)s'\
+ select q.transaction_date,qd.item_code,qd.basic_rate as quote_rate from `tabQuotation Item` qd, `tabQuotation` q where q.name=qd.parent and q.docstatus=1 and customer='%(cust)s'\
)q,\
(\
- select qd.item_code,max(transaction_date) as transaction_date from `tabQuotation Item` qd, `tabQuotation` q where q.name=qd.parent and q.docstatus=1 and customer='%(cust)s' group by qd.item_code\
+ select qd.item_code,max(q.transaction_date) as transaction_date from `tabQuotation Item` qd, `tabQuotation` q where q.name=qd.parent and q.docstatus=1 and customer='%(cust)s' group by qd.item_code\
)m where q.item_code=m.item_code and q.transaction_date=m.transaction_date\
)q on i.item_code=q.item_code\
left join\
(\
select r.item_code,r.sales_rate from\
(\
- select r.voucher_date,rd.item_code,basic_rate as sales_rate from `tabSales Invoice Item` rd, `tabSales Invoice` r where r.name=rd.parent and r.docstatus=1 and customer='%(cust)s'\
+ select r.voucher_date,rd.item_code,rd.basic_rate as sales_rate from `tabSales Invoice Item` rd, `tabSales Invoice` r where r.name=rd.parent and r.docstatus=1 and r.customer='%(cust)s'\
)r,\
(\
- select rd.item_code,max(voucher_date) as voucher_date from `tabSales Invoice Item` rd, `tabSales Invoice` r where r.name=rd.parent and r.docstatus=1 and customer='%(cust)s' group by rd.item_code\
+ select rd.item_code,max(r.voucher_date) as voucher_date from `tabSales Invoice Item` rd, `tabSales Invoice` r where r.name=rd.parent and r.docstatus=1 and r.customer='%(cust)s' group by rd.item_code\
)m where r.item_code=m.item_code and r.voucher_date=m.voucher_date\
- )s on i.item_code=s.item_code ORDER BY item_code LIMIT 50",{cust:doc.customer, cond:cond});
+ )s on i.item_code=s.item_code ORDER BY i.item_code LIMIT 50",{cust:doc.customer, cond:cond});
else
return repl("SELECT name, item_name, description FROM tabItem WHERE `tabItem`.%(key)s LIKE '%s' %(cond)s ORDER BY tabItem.item_code DESC LIMIT 50", {cond:cond});
}
diff --git a/erpnext/selling/doctype/sales_order/listview.js b/erpnext/selling/doctype/sales_order/listview.js
index cbe35daae1..3fa63a5d7f 100644
--- a/erpnext/selling/doctype/sales_order/listview.js
+++ b/erpnext/selling/doctype/sales_order/listview.js
@@ -3,21 +3,23 @@ wn.doclistviews['Sales Order'] = wn.views.ListView.extend({
init: function(d) {
this._super(d)
this.fields = this.fields.concat([
- "`tabSales Order`.customer_name",
+ "`tabSales Order`.customer_name",
+ "`tabSales Order`.status",
+ "`tabSales Order`.order_type",
"ifnull(`tabSales Order`.per_delivered,0) as per_delivered",
"ifnull(`tabSales Order`.per_billed,0) as per_billed",
"`tabSales Order`.currency",
"ifnull(`tabSales Order`.grand_total_export,0) as grand_total_export"
]);
- this.stats = this.stats.concat(['status', 'company']);
+ this.stats = this.stats.concat(['status', 'order_type', 'company']);
},
columns: [
{width: '3%', content: 'check'},
- {width: '5%', content:'avatar'},
- {width: '3%', content:'docstatus'},
- {width: '15%', content:'name'},
- {width: '32%', content:'customer_name+tags', css: {color:'#222'}},
+ {width: '5%', content: 'avatar'},
+ {width: '3%', content: 'docstatus'},
+ {width: '15%', content: 'name'},
+ {width: '29%', content: 'customer_name+tags', css: {color:'#222'}},
{
width: '18%',
content: function(parent, data) {
@@ -25,7 +27,19 @@ wn.doclistviews['Sales Order'] = wn.views.ListView.extend({
},
css: {'text-align':'right'}
},
- {width: '8%', content: 'per_delivered', type:'bar-graph', label:'Delivered'},
+ {
+ width: '11%',
+ content: function(parent, data, me) {
+ var order_type = data.order_type.toLowerCase();
+
+ if (order_type === 'sales') {
+ me.render_icon(parent, 'icon-tag', data.order_type);
+ me.render_bar_graph(parent, data, 'per_billed', 'Delivered');
+ } else if (order_type === 'maintenance') {
+ me.render_icon(parent, 'icon-wrench', data.order_type);
+ }
+ },
+ },
{width: '8%', content: 'per_billed', type:'bar-graph', label:'Billed'},
{width: '12%', content:'modified', css: {'text-align': 'right', 'color':'#777'}}
]
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.txt b/erpnext/stock/doctype/stock_entry/stock_entry.txt
index b95c9ea626..0c1028fdd2 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.txt
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.txt
@@ -5,7 +5,7 @@
{
'creation': '2012-05-03 11:12:49',
'docstatus': 0,
- 'modified': '2012-05-03 18:08:43',
+ 'modified': '2012-07-17 13:32:44',
'modified_by': u'Administrator',
'owner': u'Administrator'
},
@@ -26,6 +26,7 @@
'hide_toolbar': 0,
'in_create': 0,
'in_dialog': 0,
+ 'is_submittable': 1,
'is_transaction_doc': 0,
'issingle': 0,
'max_attachments': 0,
diff --git a/public/css/all-app.css b/public/css/all-app.css
index 84ac2758c3..ecdbe652f9 100644
--- a/public/css/all-app.css
+++ b/public/css/all-app.css
@@ -2314,6 +2314,11 @@ div.form-title {
border-bottom: 1px solid #eee;
}
+.appframe-titlebar .label {
+ vertical-align: middle;
+ margin-right: 7px;
+}
+
div.form-section-head {
margin: 11px -15px 3px -15px;
border-top: 1px solid #ccc;
@@ -3214,6 +3219,8 @@ div.stat-item {
height: 18px;
border: 1px solid #aaa;
border-radius: 9px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
overflow: hidden;
}
@@ -3222,6 +3229,10 @@ div.stat-bar {
left: 0px;
height: 100%;
z-index: 0;
+ /* So that this div is also curved like the enclosing one */
+ border-radius: 9px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
background: #e0ff84; /* Old browsers */
background: -moz-linear-gradient(top, #e0ff84 0%, #a4e567 100%); /* FF3.6+ */
@@ -3237,12 +3248,8 @@ div.stat-bar {
* lib/css/ui/views.css
*/
-.breadcrumbs {
- color: #000000;
-}
-
-.breadcrumbs a {
- color: #000000;
+.breadcrumb-area, .breadcrumb-area span {
+ vertical-align: middle;
}
div.appframe-titlebar {
@@ -3260,6 +3267,14 @@ div.appframe-titlebar {
border-radius: 5px 5px 0px 0px;
-webkit-border-radius: 5px 5px 0px 0px;
-moz-border-radius: 5px 5px 0px 0px;
+
+ text-shadow: 0px 1px 1px #fff;
+ color: #555;
+}
+
+span.appframe-title {
+ font-size: 160%;
+ font-weight: bold;
}
div.appframe-toolbar {
diff --git a/public/css/all-web.css b/public/css/all-web.css
index ec2fbcd333..332471b01b 100644
--- a/public/css/all-web.css
+++ b/public/css/all-web.css
@@ -2470,6 +2470,8 @@ div.stat-item {
height: 18px;
border: 1px solid #aaa;
border-radius: 9px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
overflow: hidden;
}
@@ -2478,6 +2480,10 @@ div.stat-bar {
left: 0px;
height: 100%;
z-index: 0;
+ /* So that this div is also curved like the enclosing one */
+ border-radius: 9px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
background: #e0ff84; /* Old browsers */
background: -moz-linear-gradient(top, #e0ff84 0%, #a4e567 100%); /* FF3.6+ */
@@ -2493,12 +2499,8 @@ div.stat-bar {
* lib/css/ui/views.css
*/
-.breadcrumbs {
- color: #000000;
-}
-
-.breadcrumbs a {
- color: #000000;
+.breadcrumb-area, .breadcrumb-area span {
+ vertical-align: middle;
}
div.appframe-titlebar {
@@ -2516,6 +2518,14 @@ div.appframe-titlebar {
border-radius: 5px 5px 0px 0px;
-webkit-border-radius: 5px 5px 0px 0px;
-moz-border-radius: 5px 5px 0px 0px;
+
+ text-shadow: 0px 1px 1px #fff;
+ color: #555;
+}
+
+span.appframe-title {
+ font-size: 160%;
+ font-weight: bold;
}
div.appframe-toolbar {
diff --git a/public/js/all-app.js b/public/js/all-app.js
index a9d1967b75..f1d29793e9 100644
--- a/public/js/all-app.js
+++ b/public/js/all-app.js
@@ -249,7 +249,7 @@ throw new SyntaxError('JSON.parse');};}}());
* lib/js/wn/router.js
*/
wn.re_route={}
-wn.route=function(){if(wn.re_route[window.location.hash]){window.location.hash=wn.re_route[window.location.hash];}
+wn.route=function(){if(wn.re_route[window.location.hash]){var re_route_val=wn.get_route_str(wn.re_route[window.location.hash]);var cur_route_val=wn.get_route_str(wn._cur_route);if(decodeURIComponent(re_route_val)===decodeURIComponent(cur_route_val)){window.history.back();return;}else{window.location.hash=wn.re_route[window.location.hash];}}
wn._cur_route=window.location.hash;route=wn.get_route();switch(route[0]){case"List":wn.views.doclistview.show(route[1]);break;case"Form":if(route.length>3){route[2]=route.splice(2).join('/');}
wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;case"Report2":wn.views.reportview2.show();break;default:wn.views.pageview.show(route[0]);}}
wn.get_route=function(route){return $.map(wn.get_route_str(route).split('/'),function(r){return decodeURIComponent(r);});}
@@ -349,7 +349,8 @@ df.original_type=df.fieldtype;df.description='';df.reqd=0;if(fieldtype){df.field
if(df.fieldtype=='Check'){df.fieldtype='Select';df.options='No\nYes';}else if(['Text','Text Editor','Code','Link'].indexOf(df.fieldtype)!=-1){df.fieldtype='Data';}},set_default_condition:function(df,fieldtype){if(!fieldtype){if(df.fieldtype=='Data'){this.$w.find('.condition').val('like');}else{this.$w.find('.condition').val('=');}}},get_value:function(){var me=this;var val=me.field.get_value();var cond=me.$w.find('.condition').val();if(me.field.df.original_type=='Check'){val=(val=='Yes'?1:0);}
if(cond=='like'){val=val+'%';}
return[me.fieldselect.$select.find('option:selected').attr('table'),me.field.df.fieldname,me.$w.find('.condition').val(),cstr(val)];}});wn.ui.FieldSelect=Class.extend({init:function(parent,doctype,filter_fields,with_blank){this.doctype=doctype;this.fields_by_name={};this.with_blank=with_blank;this.$select=$('
\
@@ -2215,7 +2204,7 @@ this.make();}
wn.widgets.form.sidebar.Attachment=function(parent,filedet,frm){filedet=filedet.split(',')
this.filename=filedet[0];this.fileid=filedet[1];this.frm=frm;var me=this;this.wrapper=$a(parent,'div','sidebar-comment-message');this.remove_fileid=function(){var doc=locals[me.frm.doctype][me.frm.docname];var fl=doc.file_list.split('\n');new_fl=[];for(var i=0;i3){route[2]=route.splice(2).join('/');}
wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;case"Report2":wn.views.reportview2.show();break;default:wn.views.pageview.show(route[0]);}}
wn.get_route=function(route){return $.map(wn.get_route_str(route).split('/'),function(r){return decodeURIComponent(r);});}
@@ -236,7 +236,8 @@ df.original_type=df.fieldtype;df.description='';df.reqd=0;if(fieldtype){df.field
if(df.fieldtype=='Check'){df.fieldtype='Select';df.options='No\nYes';}else if(['Text','Text Editor','Code','Link'].indexOf(df.fieldtype)!=-1){df.fieldtype='Data';}},set_default_condition:function(df,fieldtype){if(!fieldtype){if(df.fieldtype=='Data'){this.$w.find('.condition').val('like');}else{this.$w.find('.condition').val('=');}}},get_value:function(){var me=this;var val=me.field.get_value();var cond=me.$w.find('.condition').val();if(me.field.df.original_type=='Check'){val=(val=='Yes'?1:0);}
if(cond=='like'){val=val+'%';}
return[me.fieldselect.$select.find('option:selected').attr('table'),me.field.df.fieldname,me.$w.find('.condition').val(),cstr(val)];}});wn.ui.FieldSelect=Class.extend({init:function(parent,doctype,filter_fields,with_blank){this.doctype=doctype;this.fields_by_name={};this.with_blank=with_blank;this.$select=$('