Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/erpnext/home/page/my_company/my_company.py b/erpnext/home/page/my_company/my_company.py
index 3ff1482..c96d998 100644
--- a/erpnext/home/page/my_company/my_company.py
+++ b/erpnext/home/page/my_company/my_company.py
@@ -140,7 +140,9 @@
if 'new_password' in args:
if cint(webnotes.conn.get_value('Control Panel',None,'sync_with_gateway')):
import server_tools.gateway_utils
- webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])['message'])
+ res = server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])
+ if 'Traceback' not in res['message']:
+ webnotes.msgprint(res['message'])
else:
webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", (args['new_password'], args['user']))
- else: webnotes.msgprint('Settings Updated')
\ No newline at end of file
+ else: webnotes.msgprint('Settings Updated')
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 9930bf4..4504191 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -34,9 +34,9 @@
'customer_name' : details and details[0]['customer_name'] or ''
}
#get primary contact details(this is done separately coz. , if join query used & no primary contact thn it would not be able to fetch customer details)
- contact_det = sql("select contact_name, contact_no, email_id from `tabContact` where customer_name='%s' and is_customer=1 and is_primary_contact='Yes' and docstatus!=2" %(self.doc.customer), as_dict = 1)
+ contact_det = sql("select contact_name, phone, email_id from `tabContact` where customer_name='%s' and is_customer=1 and is_primary_contact=1 and docstatus!=2" %(self.doc.customer), as_dict = 1)
ret['contact_person'] = contact_det and contact_det[0]['contact_name'] or ''
- ret['contact_no'] = contact_det and contact_det[0]['contact_no'] or ''
+ ret['contact_no'] = contact_det and contact_det[0]['phone'] or ''
ret['email_id'] = contact_det and contact_det[0]['email_id'] or ''
return ret
else:
diff --git a/erpnext/setup/doctype/email_digest/email_digest.coffee b/erpnext/setup/doctype/email_digest/email_digest.coffee
deleted file mode 100644
index 1b17d5b..0000000
--- a/erpnext/setup/doctype/email_digest/email_digest.coffee
+++ /dev/null
@@ -1,101 +0,0 @@
-content_items = ['Sales','Expenses','Bank Balance','Activity']
-
-# make a grid with items and columns of checkboxes
-# Parameters:
-# parent
-# label (main heading)
-# items = [] (rows)
-# columns = [] (columns of checks)
-# widths
-# description
-
-class CheckGrid
- constructor: (@args) ->
- $.extend @, args
- @wrapper = $a @parent, 'div', 'check-grid round'
- @render()
-
- render: ->
- $a @wrapper, 'h3', 'check-grid-title', null, @label
-
- if @description
- $a @wrapper, 'div', 'help-box', null, @description
-
- @tab = make_table @wrapper, @items.length + 1, @columns.length, '100%', @widths
- @checks = {}
-
- # render heads
- for i in [0..@columns.length-1]
- $($td(@tab, 0, i))
- .addClass('check-grid-head gradient')
- .html @columns[i]
-
- @render_rows()
-
- render_rows: ->
- # render rows
- for i in [0..@items.length-1]
- $td(@tab, i+1, 0).innerHTML = @items[i]
-
- # render checkboxes for this row
- @checks[@items[i]] = {}
- for c in [1..@columns.length-1]
- check = $a_input $td(@tab, i+1, c), 'checkbox'
-
- # tag keys to checkbox
- check.item = @items[i]
- check.column = @columns[c]
-
- # add in my checks
- @checks[@items[i]][@columns[c]] = check
-
- # get the values of the checkbox in a double dict
- get: =>
- val = {}
- for item in keys @checks
- for column in keys @checks[item]
- check = @checks[item][column]
- val[check.item] or= {}
- val[check.item][check.column] = if check.checked then 1 else 0
- val
-
- # set the values of the grid
- set: (val) =>
- for item in keys @checks
- for column in keys @checks[item]
- if val[item][column]
- @checks[item][column] .checked = val[item][column]
- return
-
-# attach it to onload
-cx = cur_frm.cscript
-cx.onload = (doc, dt, dn) ->
-
- # make the content grid
- cx.content_grid = new CheckGrid
- parent: cur_frm.fields_dict.Body.wrapper
- label: 'Email Settings'
- items: content_items
- columns: ['Item','Daily','Weekly']
- widths: ['60%', '20%', '20%']
- description: 'Select items to be compiled for Email Digest'
-
- # make the email grid
- cx.email_grid = new CheckGrid
- parent: cur_frm.fields_dict.Body.wrapper
- label: 'Send To'
- items: ['test1@erpnext', 'test2@erpnext']
- columns: ['Email','Daily','Weekly']
- widths: ['60%', '20%', '20%']
- description: 'Select who gets daily and weekly mails'
-
- cx.content_grid.set JSON.parse doc.content_config if doc.content_config
- cx.email_grid.set JSON.parse doc.email_config if doc.email_config
-
- return
-
-# update the data before sending
-cx.validate = (doc, dt, dn) ->
- doc.content_config = JSON.stringify cx.content_grid.get()
- doc.email_config = JSON.stringify cx.email_grid.get()
-
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.css b/erpnext/setup/doctype/email_digest/email_digest.css
deleted file mode 100644
index f61dacc..0000000
--- a/erpnext/setup/doctype/email_digest/email_digest.css
+++ /dev/null
@@ -1,18 +0,0 @@
-
-div.check-grid {
- margin: 17px;
-}
-
-div.check-grid table {
- border-collapse: collapse;
-}
-
-div.check-grid table td {
- padding: 3px;
- border: 1px solid #aaa;
-}
-
-td.check-grid-head {
- font-weight: bold;
- text-align: center;
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.js b/erpnext/setup/doctype/email_digest/email_digest.js
deleted file mode 100644
index ddb13f4..0000000
--- a/erpnext/setup/doctype/email_digest/email_digest.js
+++ /dev/null
@@ -1,108 +0,0 @@
-(function() {
- var CheckGrid, content_items, cx;
- var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
- content_items = ['Sales', 'Expenses', 'Bank Balance', 'Activity'];
- CheckGrid = (function() {
- function CheckGrid(args) {
- this.args = args;
- this.set = __bind(this.set, this);
- this.get = __bind(this.get, this);
- $.extend(this, args);
- this.wrapper = $a(this.parent, 'div', 'check-grid round');
- this.render();
- }
- CheckGrid.prototype.render = function() {
- var i, _ref;
- $a(this.wrapper, 'h3', 'check-grid-title', null, this.label);
- if (this.description) {
- $a(this.wrapper, 'div', 'help-box', null, this.description);
- }
- this.tab = make_table(this.wrapper, this.items.length + 1, this.columns.length, '100%', this.widths);
- this.checks = {};
- for (i = 0, _ref = this.columns.length - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
- $($td(this.tab, 0, i)).addClass('check-grid-head gradient').html(this.columns[i]);
- }
- return this.render_rows();
- };
- CheckGrid.prototype.render_rows = function() {
- var c, check, i, _ref, _results;
- _results = [];
- for (i = 0, _ref = this.items.length - 1; 0 <= _ref ? i <= _ref : i >= _ref; 0 <= _ref ? i++ : i--) {
- $td(this.tab, i + 1, 0).innerHTML = this.items[i];
- this.checks[this.items[i]] = {};
- _results.push((function() {
- var _ref2, _results2;
- _results2 = [];
- for (c = 1, _ref2 = this.columns.length - 1; 1 <= _ref2 ? c <= _ref2 : c >= _ref2; 1 <= _ref2 ? c++ : c--) {
- check = $a_input($td(this.tab, i + 1, c), 'checkbox');
- check.item = this.items[i];
- check.column = this.columns[c];
- _results2.push(this.checks[this.items[i]][this.columns[c]] = check);
- }
- return _results2;
- }).call(this));
- }
- return _results;
- };
- CheckGrid.prototype.get = function() {
- var check, column, item, val, _i, _j, _len, _len2, _name, _ref, _ref2;
- val = {};
- _ref = keys(this.checks);
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- item = _ref[_i];
- _ref2 = keys(this.checks[item]);
- for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
- column = _ref2[_j];
- check = this.checks[item][column];
- val[_name = check.item] || (val[_name] = {});
- val[check.item][check.column] = check.checked ? 1 : 0;
- }
- }
- return val;
- };
- CheckGrid.prototype.set = function(val) {
- var column, item, _i, _j, _len, _len2, _ref, _ref2;
- _ref = keys(this.checks);
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- item = _ref[_i];
- _ref2 = keys(this.checks[item]);
- for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
- column = _ref2[_j];
- if (val[item][column]) {
- this.checks[item][column].checked = val[item][column];
- }
- }
- }
- };
- return CheckGrid;
- })();
- cx = cur_frm.cscript;
- cx.onload = function(doc, dt, dn) {
- cx.content_grid = new CheckGrid({
- parent: cur_frm.fields_dict.Body.wrapper,
- label: 'Email Settings',
- items: content_items,
- columns: ['Item', 'Daily', 'Weekly'],
- widths: ['60%', '20%', '20%'],
- description: 'Select items to be compiled for Email Digest'
- });
- cx.email_grid = new CheckGrid({
- parent: cur_frm.fields_dict.Body.wrapper,
- label: 'Send To',
- items: ['test1@erpnext', 'test2@erpnext'],
- columns: ['Email', 'Daily', 'Weekly'],
- widths: ['60%', '20%', '20%'],
- description: 'Select who gets daily and weekly mails'
- });
- if (doc.content_config) {
- cx.content_grid.set(JSON.parse(doc.content_config));
- }
- if (doc.email_config) {
- cx.email_grid.set(JSON.parse(doc.email_config));
- }
- };
- cx.validate = function(doc, dt, dn) {
- doc.content_config = JSON.stringify(cx.content_grid.get());
- return doc.email_config = JSON.stringify(cx.email_grid.get());
- };
-}).call(this);
diff --git a/index.html b/index.html
index e575dac..db7c228 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
<meta charset="utf-8">
<title>ERPNext</title>
<meta name="author" content="">
- <script type="text/javascript">window._version_number="336"
+ <script type="text/javascript">window._version_number="337"
wn={}
wn.provide=function(namespace){var nsl=namespace.split('.');var l=nsl.length;var parent=window;for(var i=0;i<l;i++){var n=nsl[i];if(!parent[n]){parent[n]={}}
diff --git a/versions-master.db b/versions-master.db
index a100caf..0c1c75c 100644
--- a/versions-master.db
+++ b/versions-master.db
Binary files differ