From f4848e106e0f0dfc1b3dad7691bce91ee79bf742 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 5 Apr 2012 16:06:13 +0530 Subject: [PATCH 01/84] [IMP] Improved code for set the name of pdf report bzr revid: tpa@tinyerp.com-20120405103613-0q1dizma6lrg2si3 --- addons/web/controllers/main.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index b1fc438ede0..61e6f1f6605 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1893,9 +1893,15 @@ class Reports(View): report = zlib.decompress(report) report_mimetype = self.TYPES_MAPPING.get( report_struct['format'], 'octet-stream') + if 'name' not in action: + reports = req.session.model('ir.actions.report.xml') + res_id = reports.search([('report_name', '=',action['report_name']),], + 0, False, False, context) + action['name'] = reports.read(res_id, ['name'], context)[0]['name'] + return req.make_response(report, headers=[ - ('Content-Disposition', 'attachment; filename="%s.%s"' % (action['report_name'], report_struct['format'])), + ('Content-Disposition', 'attachment; filename="%s.%s"' % (action['name'], report_struct['format'])), ('Content-Type', report_mimetype), ('Content-Length', len(report))], cookies={'fileToken': int(token)}) From 5b20f124a536552479d2928eee12e7110933851f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 16 Apr 2012 14:33:59 +0200 Subject: [PATCH 02/84] [ADD] basic quick_create UI in kanban view bzr revid: xmo@openerp.com-20120416123359-l60csuz0jgx37f7c --- addons/web_kanban/static/src/css/kanban.css | 24 +++++++ addons/web_kanban/static/src/js/kanban.js | 68 ++++++++++++++++++- .../web_kanban/static/src/xml/web_kanban.xml | 5 ++ 3 files changed, 94 insertions(+), 3 deletions(-) diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index d23174df74c..c74b038d1a6 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -224,6 +224,30 @@ line-height: 1em; } +.openerp .oe_kanban_add { + cursor: pointer; + position: absolute; + top: 6px; + right: 6px; + width: 16px; + height: 16px; + background: url(/web_kanban/static/src/img/plus-icon.png) no-repeat; +} + +.openerp .oe_kanban_quick_create { + /* apply block formatting context */ + overflow: hidden; +} +.openerp .oe_kanban_quick_create input { + display: block; + /* margins within width */ + box-sizing: border-box; + width: 100%; +} +.openerp .oe_kanban_quick_create button { + float: right; +} + /* Custom colors are also present in kanban.js */ /* Custom color#0 */ .openerp .oe_kanban_color_0 .oe_kanban_color_bglight { diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 1118c6388c8..cbcbadce1fb 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -351,6 +351,12 @@ openerp.web_kanban.KanbanGroup = openerp.web.OldWidget.extend({ self.view.compute_groups_width(); return false; }); + this.$element.find('.oe_kanban_add').click(function () { + if (self.quick) { return; } + self.quick = new openerp.web_kanban.QuickCreate(this) + .on('added', self, self.proxy('quick_add')); + self.quick.appendTo(self.$element.find('.oe_kanban_group_header')); + }); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); if (this.state.folded) { this.do_toggle_fold(); @@ -373,12 +379,17 @@ openerp.web_kanban.KanbanGroup = openerp.web.OldWidget.extend({ 'offset': self.dataset_offset += self.view.limit }).then(this.do_add_records); }, - do_add_records: function(records) { + do_add_records: function(records, prepend) { var self = this; _.each(records, function(record) { var rec = new openerp.web_kanban.KanbanRecord(self, record); - rec.insertBefore(self.$records.find('.oe_kanban_show_more')); - self.records.push(rec); + if (!prepend) { + rec.insertBefore(self.$records.find('.oe_kanban_show_more')); + self.records.push(rec); + } else { + rec.prependTo(self.$records); + self.records.unshift(rec); + } }); this.$records.find('.oe_kanban_show_more').toggle(this.records.length < this.dataset.size()) .find('.oe_kanban_remaining').text(this.dataset.size() - this.records.length); @@ -401,6 +412,35 @@ openerp.web_kanban.KanbanGroup = openerp.web.OldWidget.extend({ self.view.dataset.write(record.id, { sequence : index }); }); } + }, + /** + * Handles user event from nested quick creation view + * + * @param {String} name name to give to the new record + */ + quick_add: function (name) { + var context = {}; + context['default_' + this.view.group_by] = this.value; + // FIXME: what if name_create fails? + new openerp.web.Model(this.dataset.model).call( + 'name_create', [name], {context: new openerp.web.CompoundContext( + this.dataset.get_context(), context)}) + .then(this.proxy('quick_created')) + }, + /** + * Handles a non-erroneous response from name_create + * + * @param {(Id, String)} record name_get format for the newly created record + */ + quick_created: function (record) { + var id = record[0], self = this; + this.quick.destroy(); + delete this.quick; + new openerp.web.Model(this.dataset.model).call( + 'read', [[id], this.view.fields_keys], {}) + .then(function (records) { + self.do_add_records(records, 'prepend'); + }); } }); @@ -602,6 +642,28 @@ openerp.web_kanban.KanbanRecord = openerp.web.OldWidget.extend({ } } }); + +/** + * Quick creation view. + * + * Triggers a single event "added" with a single parameter "name", which is the + * name entered by the user + * + * @class + * @type {*} + */ +openerp.web_kanban.QuickCreate = openerp.web.Widget.extend({ + template: 'KanbanView.quick_create', + + start: function () { + var self = this; + this.$element.on('submit', function () { + self.trigger('added', self.$element.find('input').val()); + return false; + }); + return this._super(); + } +}); }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml index 0238c7ac357..97a9463e4f2 100644 --- a/addons/web_kanban/static/src/xml/web_kanban.xml +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -20,6 +20,7 @@
+
@@ -62,4 +63,8 @@ +
+ + +
From 7d0722b36762bb60f75184bfcd624400443584da Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 16 Apr 2012 15:08:34 +0200 Subject: [PATCH 03/84] [FIX] add id of newly created record to view's dataset so it's possible to switch to its form view bzr revid: xmo@openerp.com-20120416130834-egkio5meh6y5t47z --- addons/web_kanban/static/src/js/kanban.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index cbcbadce1fb..fa5fabacd93 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -439,6 +439,7 @@ openerp.web_kanban.KanbanGroup = openerp.web.OldWidget.extend({ new openerp.web.Model(this.dataset.model).call( 'read', [[id], this.view.fields_keys], {}) .then(function (records) { + self.view.dataset.ids.push(id); self.do_add_records(records, 'prepend'); }); } From a1172d68ee1838c694a0ab1d99f7de151b7cce57 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 17 Apr 2012 08:17:14 +0200 Subject: [PATCH 04/84] [IMP] automatically focus quick-name field when opening quick-creation form bzr revid: xmo@openerp.com-20120417061714-155b7d4yzy07pzlq --- addons/web_kanban/static/src/js/kanban.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index fa5fabacd93..bf637633b11 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -658,8 +658,10 @@ openerp.web_kanban.QuickCreate = openerp.web.Widget.extend({ start: function () { var self = this; + var $input = this.$element.find('input'); + $input.focus(); this.$element.on('submit', function () { - self.trigger('added', self.$element.find('input').val()); + self.trigger('added', $input.val()); return false; }); return this._super(); From 491641a31c40c1cd11a1e6f21aadc67aad69a59f Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Mon, 23 Apr 2012 15:50:03 +0530 Subject: [PATCH 05/84] [IMP] all : Improved the typos. bzr revid: mdi@tinyerp.com-20120423102003-ze3x042iee031530 --- addons/base_calendar/base_calendar_view.xml | 4 ++-- addons/crm/crm_lead.py | 2 +- addons/crm/crm_meeting_view.xml | 2 +- addons/crm/crm_segmentation.py | 2 +- addons/event/res_partner.py | 5 ++++- addons/event_moodle/event_moodle.py | 2 +- addons/hr/hr_view.xml | 6 +++--- addons/point_of_sale/point_of_sale_view.xml | 2 +- addons/product/product.py | 10 +++++----- addons/project/project_view.xml | 4 ++-- addons/project_planning/project_planning_view.xml | 2 +- 11 files changed, 22 insertions(+), 19 deletions(-) diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index e786eff6048..9ca3f0733be 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -11,7 +11,7 @@
- + @@ -248,7 +248,7 @@ - + diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 00f477a75d7..bac8ffd4f1f 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -169,7 +169,7 @@ class crm_lead(crm_case, osv.osv): 'date_closed': fields.datetime('Closed', readonly=True), 'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_ids', '=', section_id)]"), 'user_id': fields.many2one('res.users', 'Salesman'), - 'referred': fields.char('Referred By', size=64), + 'referred': fields.char('Referred by', size=64), 'date_open': fields.datetime('Opened', readonly=True), 'day_open': fields.function(_compute_day, string='Days to Open', \ multi='day_open', type="float", store=True), diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml index d740a00cf02..802e39fed39 100644 --- a/addons/crm/crm_meeting_view.xml +++ b/addons/crm/crm_meeting_view.xml @@ -64,7 +64,7 @@ - + diff --git a/addons/crm/crm_segmentation.py b/addons/crm/crm_segmentation.py index 41ec59bff2f..e4c27153c3d 100644 --- a/addons/crm/crm_segmentation.py +++ b/addons/crm/crm_segmentation.py @@ -45,7 +45,7 @@ added to partners that match the segmentation criterions after computation.'), 'partner_id': fields.integer('Max Partner ID processed'), 'segmentation_line': fields.one2many('crm.segmentation.line', \ 'segmentation_id', 'Criteria', required=True), - 'som_interval': fields.integer('Days per Periode', help="A period is the average number of days between two cycle of sale or purchase for this segmentation.\ + 'som_interval': fields.integer('Days per Period', help="A period is the average number of days between two cycle of sale or purchase for this segmentation.\ \nIt's mainly used to detect if a partner has not purchased or buy for a too long time, \ \nso we suppose that his state of mind has decreased because he probably bought goods to another supplier. \ \nUse this functionality for recurring businesses."), diff --git a/addons/event/res_partner.py b/addons/event/res_partner.py index 1d5582f7929..2a7bdfe6f2d 100644 --- a/addons/event/res_partner.py +++ b/addons/event/res_partner.py @@ -29,7 +29,10 @@ class res_partner(osv.osv): 'event_ids': fields.one2many('event.event','main_speaker_id', readonly=True), 'event_registration_ids': fields.one2many('event.registration','partner_id', readonly=True), } + _defaults = { + 'speaker' : True, + } res_partner() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/event_moodle/event_moodle.py b/addons/event_moodle/event_moodle.py index 59d3e530b44..7414abe4613 100644 --- a/addons/event_moodle/event_moodle.py +++ b/addons/event_moodle/event_moodle.py @@ -177,7 +177,7 @@ class event_event(osv.osv): 'shortname': '', 'startdate': date, 'summary': event.note, - 'categoryid':1, #the category hardcoded is 'Miscelleanous' + 'categoryid':1, #the category hardcoded is 'Miscellaneous' }] #create a course in moodle and keep the id response_courses = moodle_pool.create_moodle_courses(cr, uid, moodle_config_wiz_id, dic_courses, context=context) diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index a954d916385..e1bb0d6a795 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -242,7 +242,7 @@ - Subordonate Hierarchy + Subordinate Hierarchy ir.actions.act_window hr.employee [('id','in',active_ids)] @@ -254,7 +254,7 @@ - Subordonate Hierarchy + Subordinate Hierarchy @@ -315,7 +315,7 @@ parent="hr.menu_hr_configuration" sequence="1"/> - Categories structure + Categories Structure hr.employee.category tree diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index b397bd826cc..07940d0edfd 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -747,7 +747,7 @@ - + diff --git a/addons/product/product.py b/addons/product/product.py index 70f6a0683d6..fe17fe99ea9 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -291,7 +291,7 @@ class product_template(osv.osv): 'description_purchase': fields.text('Purchase Description',translate=True), 'description_sale': fields.text('Sale Description',translate=True), 'type': fields.selection([('product','Stockable Product'),('consu', 'Consumable'),('service','Service')], 'Product Type', required=True, help="Will change the way procurements are processed. Consumable are product where you don't manage stock."), - 'supply_method': fields.selection([('produce','Produce'),('buy','Buy')], 'Supply method', required=True, help="Produce will generate production order or tasks, according to the product type. Buy will trigger purchase orders when requested."), + 'supply_method': fields.selection([('produce','Produce'),('buy','Buy')], 'Supply Method', required=True, help="Produce will generate production order or tasks, according to the product type. Buy will trigger purchase orders when requested."), 'sale_delay': fields.float('Customer Lead Time', help="This is the average delay in days between the confirmation of the customer order and the delivery of the finished products. It's the time you promise to your customers."), 'produce_delay': fields.float('Manufacturing Lead Time', help="Average delay in days to produce this product. This is only for the production order and, if it is a multi-level bill of material, it's only for the level of this product. Different lead times will be summed for all levels and purchase orders."), 'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procurement Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."), @@ -300,8 +300,8 @@ class product_template(osv.osv): 'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Sale Price'), help="Base price for computing the customer price. Sometimes called the catalog price."), 'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Purchase Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price."), 'volume': fields.float('Volume', help="The volume in m3."), - 'weight': fields.float('Gross weight', digits_compute=dp.get_precision('Stock Weight'), help="The gross weight in Kg."), - 'weight_net': fields.float('Net weight', digits_compute=dp.get_precision('Stock Weight'), help="The net weight in Kg."), + 'weight': fields.float('Gross Weight', digits_compute=dp.get_precision('Stock Weight'), help="The gross weight in Kg."), + 'weight_net': fields.float('Net Weight', digits_compute=dp.get_precision('Stock Weight'), help="The net weight in Kg."), 'cost_method': fields.selection([('standard','Standard Price'), ('average','Average Price')], 'Costing Method', required=True, help="Standard Price: the cost price is fixed and recomputed periodically (usually at the end of the year), Average Price: the cost price is recomputed at each reception of products."), 'warranty': fields.float('Warranty (months)'), @@ -312,7 +312,7 @@ class product_template(osv.osv): ('sellable','Normal'), ('end','End of Lifecycle'), ('obsolete','Obsolete')], 'Status', help="Tells the user if he can use the product or not."), - 'uom_id': fields.many2one('product.uom', 'Default Unit Of Measure', required=True, help="Default Unit of Measure used for all stock operation."), + 'uom_id': fields.many2one('product.uom', 'Default Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."), 'uom_po_id': fields.many2one('product.uom', 'Purchase Unit of Measure', required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."), 'uos_id' : fields.many2one('product.uom', 'Unit of Sale', help='Used by companies that manage two units of measure: invoicing and inventory management. For example, in food industries, you will manage a stock of ham but invoice in Kg. Keep empty to use the default UOM.'), @@ -328,7 +328,7 @@ class product_template(osv.osv): 'loc_rack': fields.char('Rack', size=16), 'loc_row': fields.char('Row', size=16), 'loc_case': fields.char('Case', size=16), - 'company_id': fields.many2one('res.company', 'Company',select=1), + 'company_id': fields.many2one('res.company', 'Company', select=1), } def _get_uom_id(self, cr, uid, *args): diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 63898cb518d..2e833b47c07 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -50,7 +50,7 @@ - + @@ -296,7 +296,7 @@ - + diff --git a/addons/project_planning/project_planning_view.xml b/addons/project_planning/project_planning_view.xml index d12b62dbf18..8c3b8074d65 100644 --- a/addons/project_planning/project_planning_view.xml +++ b/addons/project_planning/project_planning_view.xml @@ -117,7 +117,7 @@ - + From 9fbdc7c526a10e50522a6692ee264153473421df Mon Sep 17 00:00:00 2001 From: "Divyesh Makwana (Open ERP)" Date: Mon, 23 Apr 2012 15:53:13 +0530 Subject: [PATCH 06/84] [IMP] Improved the typos. bzr revid: mdi@tinyerp.com-20120423102313-0mboqhctzoje5ize --- openerp/addons/base/base_update.xml | 2 +- openerp/addons/base/res/res_currency.py | 2 +- openerp/addons/base/res/res_currency_view.xml | 2 +- openerp/addons/base/res/res_partner.py | 2 +- openerp/tools/misc.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/base_update.xml b/openerp/addons/base/base_update.xml index 597fa824a59..9458e287b34 100644 --- a/openerp/addons/base/base_update.xml +++ b/openerp/addons/base/base_update.xml @@ -252,7 +252,7 @@