From 344a48ab55e29e5bcef33273403da079cdf3c64f Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Fri, 15 Jul 2011 18:35:40 +0530 Subject: [PATCH 01/67] [FIX] Fixed DATA_ERROR, dhtmlx is not supported datetime formate, Then when render parent task it reduce the hours. bzr revid: sma@tinyerp.com-20110715130540-y7par5uca2xxmlpp --- addons/base_gantt/static/src/js/gantt.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index cf0ce449d60..6d8db18b5bd 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -246,7 +246,7 @@ init: function(view_manager, session, element_id, dataset, view_id) { for (i in all_events){ res = all_events[i]; if ((typeof(res['evt'][3])) == "object"){ - res['evt'][3] = self.hours_between(res['evt'][2],res['evt'][3]); + res['evt'][3] = self.hours_between(res['evt'][2],res['evt'][3], true); } k = res['evt'][0].toString().indexOf('_'); @@ -356,14 +356,14 @@ init: function(view_manager, session, element_id, dataset, view_id) { return dat; }, - hours_between: function(date1, date2) { + hours_between: function(date1, date2, parent_task) { var ONE_DAY = 1000 * 60 * 60 * 24; var date1_ms = date1.getTime(); var date2_ms = date2.getTime(); var difference_ms = Math.abs(date1_ms - date2_ms); - d = Math.floor(difference_ms / ONE_DAY); + d = parent_task? Math.ceil(difference_ms / ONE_DAY) : Math.floor(difference_ms / ONE_DAY); h = (difference_ms % ONE_DAY)/(1000 * 60 * 60); num = (d * this.day_length) + h; return parseFloat(num.toFixed(2)); From ff5acb435146bff358b98a93374b4d967397bd90 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Mon, 18 Jul 2011 11:47:22 +0530 Subject: [PATCH 02/67] [IMP] Improve edit, when open popup on dblclick of tasks. bzr revid: sma@tinyerp.com-20110718061722-8uy5eqw9tzu04bqg --- addons/base_gantt/static/src/js/gantt.js | 62 +++++++++++++++++------- 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 6d8db18b5bd..c68e704a14e 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -289,7 +289,7 @@ init: function(view_manager, session, element_id, dataset, view_id) { ganttChartControl.attachEvent("onTaskStartDrag", function(task) {self.on_drag_start(task);}); ganttChartControl.attachEvent("onTaskEndResize", function(task) {self.on_resize_drag_end(task, "resize");}); ganttChartControl.attachEvent("onTaskEndDrag", function(task) {self.on_resize_drag_end(task, "drag");}); - ganttChartControl.attachEvent("onTaskDblClick", function(task) {self.open_popup(task);}); + ganttChartControl.attachEvent("onTaskDblClick", function(task, evt) {self.open_popup(task); evt.stopPropagation(); evt.preventDefault();}); taskdiv = jQuery("div.taskPanel").parent(); taskdiv.addClass('ganttTaskPanel'); @@ -372,27 +372,53 @@ init: function(view_manager, session, element_id, dataset, view_id) { open_popup : function(task) { var event_id = task.getId(); - if(event_id.toString().search("_") != -1) return; - if (event_id) { - event_id = parseInt(event_id, 10); - var dataset_event_index = jQuery.inArray(event_id, this.ids); - } else { - var dataset_event_index = null; + if(event_id) event_id = parseInt(event_id, 10); + + var action = { + "res_model": this.dataset.model, + "res_id": event_id, + "views":[[false,"form"]], + "type":"ir.actions.act_window", + "view_type":"form", + "view_mode":"form" } - this.dataset.index = dataset_event_index; + + action.flags = { + search_view: false, + sidebar : false, + views_switcher : false, + action_buttons : false, + pager: false + } var element_id = _.uniqueId("act_window_dialog"); - var dialog = jQuery('
', - {'id': element_id - }).dialog({ - title: 'Gantt Chart', - modal: true, - minWidth: 800, - position: 'top' - }); - var event_form = new openerp.base.FormView(this.view_manager, this.session, element_id, this.dataset, false); - event_form.start(); + var dialog = jQuery('
', { + 'id': element_id + }).dialog({ + modal: true, + width: 'auto', + height: 'auto', + buttons: { + Cancel: function() { + $(this).dialog("destroy"); + }, + Save: function() { + var view_manager = action_manager.viewmanager; + var _dialog = this; + view_manager.views[view_manager.active_view].controller.do_save(function(r) { + $(_dialog).dialog("destroy"); + self.reload_gantt(); + }) + } + } + }); + var action_manager = new openerp.base.ActionManager(this.session, element_id); + action_manager.start(); + action_manager.do_action(action); + + //Default_get + if(!event_id) action_manager.viewmanager.dataset.index = null; }, on_drag_start : function(task){ From 9ed55ee3f545029143bed141fbce788701ba8db5 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Wed, 27 Jul 2011 12:32:20 +0530 Subject: [PATCH 03/67] [FIX] Show Save/Edit and New buttons in popups. bzr revid: sma@tinyerp.com-20110727070220-vyk3w7001lpi7l04 --- addons/base_gantt/static/src/js/gantt.js | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index c68e704a14e..e3c2b79fc58 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -389,7 +389,6 @@ init: function(view_manager, session, element_id, dataset, view_id) { search_view: false, sidebar : false, views_switcher : false, - action_buttons : false, pager: false } var element_id = _.uniqueId("act_window_dialog"); From f61dadb8490a45e9b9cf07384fb65c1e9cb2e8af Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Tue, 2 Aug 2011 11:22:16 +0530 Subject: [PATCH 04/67] [IMP] Use parent and remove session from ganttview. bzr revid: sma@tinyerp.com-20110802055216-0t9fq66nmthdwzyp --- addons/base_gantt/static/src/js/gantt.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 06ec4be2634..cde8cd18b9d 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -1,16 +1,14 @@ /*--------------------------------------------------------- * OpenERP base_gantt *---------------------------------------------------------*/ - openerp.base_gantt = function (openerp) { QWeb.add_template('/base_gantt/static/src/xml/base_gantt.xml'); openerp.base.views.add('gantt', 'openerp.base_gantt.GanttView'); -openerp.base_gantt.GanttView = openerp.base.Widget.extend({ +openerp.base_gantt.GanttView = openerp.base.View.extend({ -init: function(view_manager, session, element_id, dataset, view_id) { - - this._super(session, element_id); - this.view_manager = view_manager; +init: function(parent, element_id, dataset, view_id) { + this._super(parent, element_id); + this.view_manager = parent || new openerp.base.NullViewManager(); this.dataset = dataset; this.model = dataset.model; this.view_id = view_id; @@ -29,7 +27,7 @@ init: function(view_manager, session, element_id, dataset, view_id) { this.calendar_fields = {}; this.info_fields = []; this.domain = this.dataset._domain ? this.dataset._domain: []; - this.context = {}; + this.context = this.dataset.context || {}; }, start: function() { From 72f7aa772edfae4162ba450db5b57229df49d631 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Tue, 2 Aug 2011 11:40:30 +0530 Subject: [PATCH 05/67] [FIX] Need to load all js files for calendar, gantt, graph view. bzr revid: sma@tinyerp.com-20110802061030-eqvqab8ruwxjhpuy --- addons/base/static/src/js/chrome.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index ed84c32071b..50d4c6e418e 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -250,9 +250,9 @@ openerp.base.Session = openerp.base.Widget.extend( /** @lends openerp.base.Sessi if ( (tag.readyState && tag.readyState != "loaded" && tag.readyState != "complete") || tag.onload_done ) return; tag.onload_done = true; - self.do_load_js(files); }; - document.head.appendChild(tag); + $('head').append(tag); + self.do_load_js(files); } else { this.on_modules_loaded(); } From 5075601ddc655111b41bb34b6daec2e646a6aa4d Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Tue, 2 Aug 2011 12:00:45 +0530 Subject: [PATCH 06/67] [FIX] Fixed session. bzr revid: sma@tinyerp.com-20110802063045-4q4c3rf45tqdf25l --- addons/base_gantt/static/src/js/gantt.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index cde8cd18b9d..dc31eb0a9d7 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -410,10 +410,10 @@ init: function(parent, element_id, dataset, view_id) { } } }); - var action_manager = new openerp.base.ActionManager(this.session, element_id); + var action_manager = new openerp.base.ActionManager(this, element_id); action_manager.start(); action_manager.do_action(action); - + //Default_get if(!event_id) action_manager.viewmanager.dataset.index = null; }, From e0a7ee0df10db7df30c72e10312abe74730ee9fd Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Tue, 2 Aug 2011 12:03:14 +0530 Subject: [PATCH 07/67] [FIX] Fixed click events. bzr revid: sma@tinyerp.com-20110802063314-yb41yj6m53tobpso --- addons/base_gantt/static/src/js/gantt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index dc31eb0a9d7..7513948125a 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -287,7 +287,7 @@ init: function(parent, element_id, dataset, view_id) { ganttChartControl.attachEvent("onTaskStartDrag", function(task) {self.on_drag_start(task);}); ganttChartControl.attachEvent("onTaskEndResize", function(task) {self.on_resize_drag_end(task, "resize");}); ganttChartControl.attachEvent("onTaskEndDrag", function(task) {self.on_resize_drag_end(task, "drag");}); - ganttChartControl.attachEvent("onTaskDblClick", function(task, evt) {self.open_popup(task); evt.stopPropagation(); evt.preventDefault();}); + ganttChartControl.attachEvent("onTaskDblClick", function(task) {self.open_popup(task);}); taskdiv = jQuery("div.taskPanel").parent(); taskdiv.addClass('ganttTaskPanel'); From d70785e2e8abef875a18a9e983f1938decfe2990 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Fri, 5 Aug 2011 12:52:34 +0530 Subject: [PATCH 08/67] [FIX] Replace group name False to Undefined. bzr revid: sma@tinyerp.com-20110805072234-f4zvl4fnzhiewkcv --- addons/base_gantt/static/src/js/gantt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 7513948125a..9b86f791f32 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -173,7 +173,7 @@ init: function(parent, element_id, dataset, view_id) { } if (grp_key == false){ - grp_key = "False"; + grp_key = "Undefined"; } if (j == 0){ From 5be9b44ac8c77e6eb56296e83b5932cc325c25bf Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Wed, 10 Aug 2011 14:15:28 +0530 Subject: [PATCH 09/67] [IMP] Consider to remove level tag from xml and display first time without group_by. bzr revid: sma@tinyerp.com-20110810084528-059auhvl25neb63p --- addons/base_gantt/static/src/js/gantt.js | 84 ++++++++++++++---------- 1 file changed, 50 insertions(+), 34 deletions(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 9b86f791f32..b31e02eeb78 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -50,8 +50,7 @@ init: function(parent, element_id, dataset, view_id) { this.color_field = this.fields_view.arch.attrs.color; this.day_length = this.fields_view.arch.attrs.day_length || 8; this.colors = this.fields_view.arch.attrs.colors; - - this.text = this.fields_view.arch.children[0].children[0].attrs.name; + this.text = this.fields_view.arch.children[0].attrs.name; this.parent = this.fields_view.arch.children[0].attrs.link; this.format = "yyyy-MM-dd"; @@ -98,7 +97,7 @@ init: function(parent, element_id, dataset, view_id) { if (result.length != 0){ var show_event = []; - for (i in result){ + for (var i in result){ var res = result[i]; if (res[this.date_start] != false){ @@ -130,7 +129,7 @@ init: function(parent, element_id, dataset, view_id) { var child_event = {}; var temp_id = ""; var final_events = []; - for (i in show_event) { + for (var i in show_event) { var res = show_event[i]; @@ -159,11 +158,8 @@ init: function(parent, element_id, dataset, view_id) { if (duration == false) duration = 0 - if (self.grp.length == 0){ - self.grp.push({'group_by' : this.parent}) - } - if (self.grp != undefined){ - for (j in self.grp){ + if (self.grp.length){ + for (var j in self.grp){ var grp_key = res[self.grp[j]['group_by']]; if (typeof(grp_key) == "object"){ grp_key = res[self.grp[j]['group_by']][1]; @@ -205,9 +201,18 @@ init: function(parent, element_id, dataset, view_id) { all_events[id] = {'parent': temp_id, 'evt':[id , text, start_date, duration, 100, "", color_box[color]]}; final_events.push(id); } + else { + if (i == 0) { + var mod_id = "_" + i; + child_event[mod_id] = {}; + all_events[mod_id] = {'parent': "", 'evt': [mod_id, this.name, start_date, start_date, 100, "", "white"]}; + } + all_events[id] = {'parent': mod_id, 'evt':[id , text, start_date, duration, 100, "", color_box[color]]}; + final_events.push(id); + } } - for (i in final_events){ + for (var i in final_events){ var evt_id = final_events[i]; var evt_date = all_events[evt_id]['evt'][2]; while (all_events[evt_id]['parent'] != "") { @@ -223,7 +228,7 @@ init: function(parent, element_id, dataset, view_id) { var evt_duration = ""; var evt_end_date = ""; - for (i in final_events){ + for (var i in final_events){ evt_id = final_events[i]; evt_date = all_events[evt_id]['evt'][2]; evt_duration = all_events[evt_id]['evt'][3]; @@ -240,32 +245,17 @@ init: function(parent, element_id, dataset, view_id) { } } - for (j in self.grp){ - for (i in all_events){ - res = all_events[i]; - if ((typeof(res['evt'][3])) == "object"){ - res['evt'][3] = self.hours_between(res['evt'][2],res['evt'][3], true); - } - - k = res['evt'][0].toString().indexOf('_'); - if (k != -1){ - if (res['evt'][0].substring(k) == "_"+j){ - if (j == 0){ - task = new GanttTaskInfo(res['evt'][0], res['evt'][1], res['evt'][2], res['evt'][3], res['evt'][4], "",res['evt'][6]); - project.addTask(task); - } else { - task = new GanttTaskInfo(res['evt'][0], res['evt'][1], res['evt'][2], res['evt'][3], res['evt'][4], "",res['evt'][6]); - prt = project.getTaskById(res['parent']); - prt.addChildTask(task); - } - } - } - } + for (var j in self.grp) { + self.render_events(all_events, j); } - for (i in final_events){ + + if (!self.grp.length) { + self.render_events(all_events, 0); + } + + for (var i in final_events){ evt_id = final_events[i]; res = all_events[evt_id]; - task=new GanttTaskInfo(res['evt'][0], res['evt'][1], res['evt'][2], res['evt'][3], res['evt'][4], "",res['evt'][6]); prt = project.getTaskById(res['parent']); prt.addChildTask(task); @@ -368,6 +358,32 @@ init: function(parent, element_id, dataset, view_id) { }, + render_events : function(all_events, j) { + + var self = this; + for (var i in all_events){ + var res = all_events[i]; + if ((typeof(res['evt'][3])) == "object"){ + res['evt'][3] = self.hours_between(res['evt'][2],res['evt'][3], true); + } + + k = res['evt'][0].toString().indexOf('_'); + + if (k != -1) { + if (res['evt'][0].substring(k) == "_"+j){ + if (j == 0){ + task = new GanttTaskInfo(res['evt'][0], res['evt'][1], res['evt'][2], res['evt'][3], res['evt'][4], "",res['evt'][6]); + project.addTask(task); + } else { + task = new GanttTaskInfo(res['evt'][0], res['evt'][1], res['evt'][2], res['evt'][3], res['evt'][4], "",res['evt'][6]); + prt = project.getTaskById(res['parent']); + prt.addChildTask(task); + } + } + } + } + }, + open_popup : function(task) { var event_id = task.getId(); if(event_id.toString().search("_") != -1) From 15aef31efd1f6f2a92cf3ac5c822eba08b8c28b3 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Wed, 10 Aug 2011 15:11:38 +0530 Subject: [PATCH 10/67] [FIX] Initialize implicit globals. bzr revid: sma@tinyerp.com-20110810094138-sb0ed029xsfrs239 --- addons/base_gantt/static/src/js/gantt.js | 39 ++++++++++++------------ 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index b31e02eeb78..18c8617022c 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -50,7 +50,8 @@ init: function(parent, element_id, dataset, view_id) { this.color_field = this.fields_view.arch.attrs.color; this.day_length = this.fields_view.arch.attrs.day_length || 8; this.colors = this.fields_view.arch.attrs.colors; - this.text = this.fields_view.arch.children[0].attrs.name; + var arch_children = this.fields_view.arch.children[0]; + this.text = arch_children.children[0] ? arch_children.children[0].attrs.name : arch_children.attrs.name; this.parent = this.fields_view.arch.children[0].attrs.link; this.format = "yyyy-MM-dd"; @@ -65,7 +66,7 @@ init: function(parent, element_id, dataset, view_id) { create_gantt: function() { - ganttChartControl = new GanttChart(this.day_length); + var ganttChartControl = new GanttChart(this.day_length); ganttChartControl.setImagePath("/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/"); ganttChartControl.setEditable(true); ganttChartControl.showTreePanel(true); @@ -204,7 +205,6 @@ init: function(parent, element_id, dataset, view_id) { else { if (i == 0) { var mod_id = "_" + i; - child_event[mod_id] = {}; all_events[mod_id] = {'parent': "", 'evt': [mod_id, this.name, start_date, start_date, 100, "", "white"]}; } all_events[id] = {'parent': mod_id, 'evt':[id , text, start_date, duration, 100, "", color_box[color]]}; @@ -261,11 +261,11 @@ init: function(parent, element_id, dataset, view_id) { prt.addChildTask(task); } - oth_hgt = 264; - min_hgt = 150; - name_min_wdt = 150; - gantt_hgt = jQuery(window).height() - oth_hgt; - search_wdt = jQuery("#oe_app_search").width(); + var oth_hgt = 264; + var min_hgt = 150; + var name_min_wdt = 150; + var gantt_hgt = jQuery(window).height() - oth_hgt; + var search_wdt = jQuery("#oe_app_search").width(); if (gantt_hgt > min_hgt){ jQuery('#GanttDiv').height(gantt_hgt).width(search_wdt); @@ -279,13 +279,13 @@ init: function(parent, element_id, dataset, view_id) { ganttChartControl.attachEvent("onTaskEndDrag", function(task) {self.on_resize_drag_end(task, "drag");}); ganttChartControl.attachEvent("onTaskDblClick", function(task) {self.open_popup(task);}); - taskdiv = jQuery("div.taskPanel").parent(); + var taskdiv = jQuery("div.taskPanel").parent(); taskdiv.addClass('ganttTaskPanel'); taskdiv.prev().addClass('ganttDayPanel'); - $gantt_panel = jQuery(".ganttTaskPanel , .ganttDayPanel"); + var $gantt_panel = jQuery(".ganttTaskPanel , .ganttDayPanel"); - ganttrow = jQuery('.taskPanel').closest('tr'); - gtd = ganttrow.children(':first-child'); + var ganttrow = jQuery('.taskPanel').closest('tr'); + var gtd = ganttrow.children(':first-child'); gtd.children().addClass('task-name'); jQuery(".toggle-sidebar").click(function(e) { @@ -307,9 +307,8 @@ init: function(parent, element_id, dataset, view_id) { $gantt_panel.width(1); jQuery(".ganttTaskPanel").parent().width(1); - search_wdt = jQuery("#oe_app_search").width(); - day_wdt = jQuery(".ganttDayPanel").children().children().width(); - name_wdt = jQuery('.task-name').width(); + var search_wdt = jQuery("#oe_app_search").width(); + var day_wdt = jQuery(".ganttDayPanel").children().children().width(); jQuery('#GanttDiv').css('width','100%'); if (search_wdt - day_wdt <= name_min_wdt){ @@ -333,7 +332,7 @@ init: function(parent, element_id, dataset, view_id) { var self = this; - dat = this.convert_str_date(dat); + var dat = this.convert_str_date(dat); var day = Math.floor(duration/self.day_length); var hrs = duration % self.day_length; @@ -351,9 +350,9 @@ init: function(parent, element_id, dataset, view_id) { var date2_ms = date2.getTime(); var difference_ms = Math.abs(date1_ms - date2_ms); - d = parent_task? Math.ceil(difference_ms / ONE_DAY) : Math.floor(difference_ms / ONE_DAY); - h = (difference_ms % ONE_DAY)/(1000 * 60 * 60); - num = (d * this.day_length) + h; + var d = parent_task? Math.ceil(difference_ms / ONE_DAY) : Math.floor(difference_ms / ONE_DAY); + var h = (difference_ms % ONE_DAY)/(1000 * 60 * 60); + var num = (d * this.day_length) + h; return parseFloat(num.toFixed(2)); }, @@ -435,7 +434,7 @@ init: function(parent, element_id, dataset, view_id) { }, on_drag_start : function(task){ - st_date = task.getEST(); + var st_date = task.getEST(); if(st_date.getHours()){ self.hh = st_date.getHours(); self.mm = st_date.getMinutes(); From 84dde229f0d1e12e6825d2768fffc93bffe00535 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 10 Aug 2011 16:58:40 +0200 Subject: [PATCH 11/67] [IMP] use Class for Compound* types instead of manual prototypes bzr revid: xmo@openerp.com-20110810145840-rblh9kouk1pf63by --- addons/base/static/src/js/data.js | 85 ++++++++++++++++--------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index 9e9f2b42323..4e611771808 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -633,48 +633,51 @@ openerp.base.ReadOnlyDataSetSearch = openerp.base.DataSetSearch.extend({ on_unlink: function(ids) {} }); -openerp.base.CompoundContext = function() { - this.__ref = "compound_context"; - this.__contexts = []; - this.__eval_context = null; - var self = this; - _.each(arguments, function(x) { - self.add(x); - }); -}; -openerp.base.CompoundContext.prototype.add = function(context) { - this.__contexts.push(context); - return this; -}; -openerp.base.CompoundContext.prototype.set_eval_context = function(eval_context) { - this.__eval_context = eval_context; - return this; -}; -openerp.base.CompoundContext.prototype.get_eval_context = function() { - return this.__eval_context; -}; - -openerp.base.CompoundDomain = function() { - this.__ref = "compound_domain"; - this.__domains = []; - this.__eval_context = null; - var self = this; - _.each(arguments, function(x) { - self.add(x); - }); -}; -openerp.base.CompoundDomain.prototype.add = function(domain) { - this.__domains.push(domain); - return this; -}; -openerp.base.CompoundDomain.prototype.set_eval_context = function(eval_context) { - this.__eval_context = eval_context; - return this; -}; -openerp.base.CompoundDomain.prototype.get_eval_context = function() { - return this.__eval_context; -}; +openerp.base.CompoundContext = openerp.base.Class.extend({ + init: function () { + this.__ref = "compound_context"; + this.__contexts = []; + this.__eval_context = null; + var self = this; + _.each(arguments, function(x) { + self.add(x); + }); + }, + add: function (context) { + this.__contexts.push(context); + return this; + }, + set_eval_context: function (eval_context) { + this.__eval_context = eval_context; + return this; + }, + get_eval_context: function () { + return this.__eval_context; + } +}); +openerp.base.CompoundDomain = openerp.base.Class.extend({ + init: function () { + this.__ref = "compound_domain"; + this.__domains = []; + this.__eval_context = null; + var self = this; + _.each(arguments, function(x) { + self.add(x); + }); + }, + add: function(domain) { + this.__domains.push(domain); + return this; + }, + set_eval_context: function(eval_context) { + this.__eval_context = eval_context; + return this; + }, + get_eval_context: function() { + return this.__eval_context; + } +}); }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: From 0cd8a79009b8df3a880c72dab2a66da16e4f9a5f Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 10 Aug 2011 17:42:38 +0200 Subject: [PATCH 12/67] [ADD] Added exception throw when domain references an unknown field bzr revid: fme@openerp.com-20110810154238-h18xpgjtbhqlr67d --- addons/base/static/src/js/form.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 3aea5828038..25bc55a86fb 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -510,36 +510,40 @@ openerp.base.form.compute_domain = function(expr, fields) { } } - var field = fields[ex[0]].get_value ? fields[ex[0]].get_value() : fields[ex[0]].value; + var field = fields[ex[0]]; + if (!field) { + throw new Error("Domain references unknown field : " + ex[0]); + } + var field_value = field.get_value ? fields[ex[0]].get_value() : fields[ex[0]].value; var op = ex[1]; var val = ex[2]; switch (op.toLowerCase()) { case '=': case '==': - stack.push(field == val); + stack.push(field_value == val); break; case '!=': case '<>': - stack.push(field != val); + stack.push(field_value != val); break; case '<': - stack.push(field < val); + stack.push(field_value < val); break; case '>': - stack.push(field > val); + stack.push(field_value > val); break; case '<=': - stack.push(field <= val); + stack.push(field_value <= val); break; case '>=': - stack.push(field >= val); + stack.push(field_value >= val); break; case 'in': - stack.push(_(val).contains(field)); + stack.push(_(val).contains(field_value)); break; case 'not in': - stack.push(!_(val).contains(field)); + stack.push(!_(val).contains(field_value)); break; default: this.log("Unsupported operator in modifiers :", op); From 791fcfb0720a41bec48b3677289c785fbc907202 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 10 Aug 2011 18:16:01 +0200 Subject: [PATCH 13/67] [FIX] Fixed event boundaries padding bug bzr revid: fme@openerp.com-20110810161601-pk4sm0fuc2or51l4 --- addons/base_calendar/static/src/js/calendar.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index 5aa594bcf0e..fcbe1084f2f 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -48,14 +48,19 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.fields = this.fields_view.fields; //* Calendar Fields * - this.calendar_fields['date_start'] = {'name': this.date_start, 'kind': this.fields[this.date_start]['type']}; + this.calendar_fields.date_start = {'name': this.date_start, 'kind': this.fields[this.date_start].type}; if (this.date_delay) { - this.calendar_fields['date_delay'] = {'name': this.date_delay, 'kind': this.fields[this.date_delay]['type']}; + if (this.fields[this.date_delay].type != 'float') { + throw new Error("Calendar view has a 'date_delay' type != float"); + } + this.calendar_fields.date_delay = {'name': this.date_delay, 'kind': this.fields[this.date_delay].type}; } - if (this.date_stop) { - this.calendar_fields['date_stop'] = {'name': this.date_stop, 'kind': this.fields[this.date_stop]['type']}; + this.calendar_fields.date_stop = {'name': this.date_stop, 'kind': this.fields[this.date_stop].type}; + } + if (!this.date_delay && !this.date_stop) { + throw new Error("Calendar view has none of the following attributes : 'date_stop', 'date_delay'"); } for (var fld = 0; fld < this.fields_view.arch.children.length; fld++) { @@ -307,10 +312,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ var data = { name: event_obj.text }; - var date_format = this.calendar_fields.date_start.kind == 'time' ? 'HH:mm:ss' : 'yyyy-MM-dd HH:mm:ss'; - data[this.date_start] = event_obj.start_date.toString(date_format); + data[this.date_start] = openerp.base.format_datetime(event_obj.start_date); if (this.date_stop) { - data[this.date_stop] = event_obj.end_date.toString(date_format); + data[this.date_stop] = openerp.base.format_datetime(event_obj.end_date); } if (this.date_delay) { var tds = (event_obj.start_date.getOrdinalNumber() / 1e3 >> 0) - (event_obj.start_date.getOrdinalNumber() < 0); From 0b9610e4350748bfe91305f9accadb17a92a4869 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 10 Aug 2011 21:25:09 +0200 Subject: [PATCH 14/67] [IMP] remove actiondialog bzr revid: al@openerp.com-20110810192509-isdf1h8vb758r07j --- addons/base/static/src/js/chrome.js | 4 +--- addons/base/static/src/js/views.js | 20 ++------------------ 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 41f60be72c9..633f56334de 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -318,9 +318,6 @@ openerp.base.Dialog = openerp.base.OldWidget.extend({ max_height: '100%', autoOpen: false, buttons: {}, - beforeClose: function () { - self.on_close(); - } }; for (var f in this) { if (f.substr(0, 10) == 'on_button_') { @@ -384,6 +381,7 @@ openerp.base.Dialog = openerp.base.OldWidget.extend({ close: function() { // Closes the dialog but leave it in a state where it could be opened again. this.$dialog.dialog('close'); + this.on_close(); }, on_close: function() { }, diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index f72f168a1f3..9bd7660e073 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -14,22 +14,6 @@ openerp.base.client_actions = new openerp.base.Registry(); */ openerp.base.views = new openerp.base.Registry(); -openerp.base.ActionDialog = openerp.base.Dialog.extend({ - identifier_prefix: 'action_dialog', - on_close: function() { - this._super(this, arguments); - if (this.close_callback) { - this.close_callback(); - } - }, - stop: function() { - this._super(this, arguments); - if (this.viewmanager) { - this.viewmanager.stop(); - } - } -}); - openerp.base.ActionManager = openerp.base.Widget.extend({ identifier_prefix: "actionmanager", init: function(parent) { @@ -77,8 +61,8 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ ir_actions_act_window: function (action, on_closed) { if (action.flags.popup) { if (this.dialog == null) { - this.dialog = new openerp.base.ActionDialog(this, { title: action.name, width: '80%' }); - this.dialog.close_callback = on_closed; + this.dialog = new openerp.base.Dialog(this, { title: action.name, width: '80%' }); + this.dialog.on_closed.add(on_closed); this.dialog.start(); this.dialog_viewmanager = new openerp.base.ViewManagerAction(this, action); this.dialog_viewmanager.appendTo(this.dialog.$element); From ea999bd1cde4e295f63ea7e07d9615bfcb6f4dfb Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 00:23:54 +0200 Subject: [PATCH 15/67] [FIX] dialog restore close hook fme bzr revid: al@openerp.com-20110810222354-glykgj1cvvt57upa --- addons/base/static/src/js/chrome.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 633f56334de..fb1757ebb43 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -318,6 +318,7 @@ openerp.base.Dialog = openerp.base.OldWidget.extend({ max_height: '100%', autoOpen: false, buttons: {}, + beforeClose: function () { self.on_close(); } }; for (var f in this) { if (f.substr(0, 10) == 'on_button_') { @@ -381,7 +382,6 @@ openerp.base.Dialog = openerp.base.OldWidget.extend({ close: function() { // Closes the dialog but leave it in a state where it could be opened again. this.$dialog.dialog('close'); - this.on_close(); }, on_close: function() { }, From c605d7a7703468622b0c33ed85b8166dd3845d02 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 01:02:13 +0200 Subject: [PATCH 16/67] [FIX] actionmanager dialog bzr revid: al@openerp.com-20110810230213-k9qrjv491tetsaqj --- addons/base/static/src/js/views.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 9bd7660e073..8865c278cbd 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -40,7 +40,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this.inner_viewmanager = null; } }, - do_action: function(action, on_closed) { + do_action: function(action, on_close) { console.log("action",action); var type = action.type.replace(/\./g,'_'); var popup = action.target === 'new'; @@ -56,22 +56,21 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ console.log("Action manager can't handle action of type " + action.type, action); return; } - this[type](action, on_closed); + this[type](action, on_close); }, - ir_actions_act_window: function (action, on_closed) { + ir_actions_act_window: function (action, on_close) { if (action.flags.popup) { if (this.dialog == null) { this.dialog = new openerp.base.Dialog(this, { title: action.name, width: '80%' }); - this.dialog.on_closed.add(on_closed); + if(on_close) + this.dialog.on_close.add(on_close); this.dialog.start(); - this.dialog_viewmanager = new openerp.base.ViewManagerAction(this, action); - this.dialog_viewmanager.appendTo(this.dialog.$element); - this.dialog.open(); } else { this.dialog_viewmanager.stop(); - this.dialog_viewmanager = new openerp.base.ViewManagerAction(this, action); - this.dialog_viewmanager.appendTo(this.dialog.$element); } + this.dialog_viewmanager = new openerp.base.ViewManagerAction(this, action); + this.dialog_viewmanager.appendTo(this.dialog.$element); + this.dialog.open(); } else { this.dialog_stop(); this.inner_stop(); From 4fc1277932c74030c57f234a0a2bbd229af77251 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 03:52:32 +0200 Subject: [PATCH 17/67] [FIX] actionmanager ir.action.act_window_close and button special bzr revid: al@openerp.com-20110811015232-sv31mivmb9zvpszs --- addons/base/static/src/js/views.js | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 8865c278cbd..2fddb4a89af 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -9,11 +9,6 @@ openerp.base.views = function(openerp) { */ openerp.base.client_actions = new openerp.base.Registry(); -/** - * Registry for all the main views - */ -openerp.base.views = new openerp.base.Registry(); - openerp.base.ActionManager = openerp.base.Widget.extend({ identifier_prefix: "actionmanager", init: function(parent) { @@ -85,7 +80,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ */ }, ir_actions_act_window_close: function (action, on_closed) { - this.close_dialog(); + this.dialog_stop(); }, ir_actions_server: function (action, on_closed) { var self = this; @@ -273,19 +268,14 @@ openerp.base.ViewManager = openerp.base.Widget.extend({ } }); -// Move parts or everything to ActionManager openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ init: function(parent, action) { this.session = parent.session; var dataset; if (!action.res_id) { - dataset = new openerp.base.DataSetSearch(this, action.res_model, action.context || null, action.domain || null); + dataset = new openerp.base.DataSetSearch(this, action.res_model, action.context, action.domain); } else { - dataset = new openerp.base.DataSetStatic(this, action.res_model, {}, [action.res_id]); - if (action.context) { - // TODO fme: should normalize all DataSets constructors to (session, model, context, domain, ...) - dataset.context = action.context; - } + dataset = new openerp.base.DataSetStatic(this, action.res_model, action.context, [action.res_id]); } this._super(parent, dataset, action.views); this.action = action; @@ -471,8 +461,9 @@ openerp.base.View = openerp.base.Widget.extend({ }; var context = new openerp.base.CompoundContext(dataset.get_context(), action_data.context || {}); + if (action_data.special) { - // dunno + handler({result: {"type":"ir.actions.act_window_close"}}); } else if (action_data.type=="object") { return dataset.call_button(action_data.name, [[record_id], context], handler); } else if (action_data.type=="action") { @@ -554,6 +545,11 @@ openerp.base.View = openerp.base.Widget.extend({ } }); +/** + * Registry for all the main views + */ +openerp.base.views = new openerp.base.Registry(); + openerp.base.json_node_to_xml = function(node, single_quote, indent) { // For debugging purpose, this function will convert a json node back to xml // Maybe usefull for xml view editor From 51da26530472471459854c37f779979b629c26a7 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 04:00:14 +0200 Subject: [PATCH 18/67] [FIX] list button actions bzr revid: al@openerp.com-20110811020014-skhi0zscvs1n7md5 --- addons/base/static/src/js/list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 54612b360d4..e34b4b75f54 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -94,7 +94,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi self.do_delete(ids); }, 'action': function (e, action_name, id, callback) { - self.do_action(action_name, id, callback); + self.do_button_action(action_name, id, callback); }, 'row_link': function (e, id, dataset) { self.do_activate_record(dataset.index, id, dataset); @@ -454,7 +454,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi * @param {Object} id id of the record the action should be called on * @param {Function} callback should be called after the action is executed, if non-null */ - do_action: function (name, id, callback) { + do_button_action: function (name, id, callback) { var self = this, action = _.detect(this.columns, function (field) { return field.name === name; From f31d25f556dbeba70bab7c7188fd84a416bf5133 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 04:42:46 +0200 Subject: [PATCH 19/67] [IMP] cleanups, session in core, keep a ref to webclient in window.openerp.sessions for debugging bzr revid: al@openerp.com-20110811024246-g3it6dtrqidzv0rx --- addons/base/static/src/js/boot.js | 9 +- addons/base/static/src/js/chrome.js | 276 +------------------------- addons/base/static/src/js/core.js | 288 ++++++++++++++++++++++++++++ addons/base/static/src/js/form.js | 6 +- addons/base/static/src/js/views.js | 8 +- 5 files changed, 297 insertions(+), 290 deletions(-) diff --git a/addons/base/static/src/js/boot.js b/addons/base/static/src/js/boot.js index 7ac8a6bb1e0..e3d33a1910c 100644 --- a/addons/base/static/src/js/boot.js +++ b/addons/base/static/src/js/boot.js @@ -14,13 +14,8 @@ /** @lends openerp */ var openerp = this.openerp = { - /** - * Debug flag turns on logging - */ + // debug flag debug: true, - // element_ids registry linked to all controllers on the page - // TODO rename to elements, or keep gtk naming? - screen: {}, // Per session namespace // openerp. will map to // openerp.sessions.sessionname. using a closure @@ -40,8 +35,6 @@ // this unique id will be replaced by hostname_databasename by // openerp.base.Connection on the first connection _session_id: "session" + session_counter++, - screen: openerp.screen, - sessions: openerp.sessions, base: {}, web_mobile: {} }; diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index fb1757ebb43..111e212d124 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -4,281 +4,6 @@ openerp.base.chrome = function(openerp) { -openerp.base.Session = openerp.base.Widget.extend( /** @lends openerp.base.Session# */{ - /** - * @constructs - * @param element_id to use for exception reporting - * @param server - * @param port - */ - init: function(parent, element_id, server, port) { - this._super(parent, element_id); - this.server = (server == undefined) ? location.hostname : server; - this.port = (port == undefined) ? location.port : port; - this.rpc_mode = (server == location.hostname) ? "ajax" : "jsonp"; - this.debug = true; - this.db = ""; - this.login = ""; - this.password = ""; - this.uid = false; - this.session_id = false; - this.module_list = []; - this.module_loaded = {"base": true}; - this.context = {}; - }, - start: function() { - this.session_restore(); - }, - /** - * Executes an RPC call, registering the provided callbacks. - * - * Registers a default error callback if none is provided, and handles - * setting the correct session id and session context in the parameter - * objects - * - * @param {String} url RPC endpoint - * @param {Object} params call parameters - * @param {Function} success_callback function to execute on RPC call success - * @param {Function} error_callback function to execute on RPC call failure - * @returns {jQuery.Deferred} jquery-provided ajax deferred - */ - rpc: function(url, params, success_callback, error_callback) { - var self = this; - // Construct a JSON-RPC2 request, method is currently unused - params.session_id = this.session_id; - - // Call using the rpc_mode - var deferred = $.Deferred(); - this.rpc_ajax(url, { - jsonrpc: "2.0", - method: "call", - params: params, - id:null - }).then(function () {deferred.resolve.apply(deferred, arguments);}, - function(error) {deferred.reject(error, $.Event());}); - return deferred.fail(function() { - deferred.fail(function(error, event) { - if (!event.isDefaultPrevented()) { - self.on_rpc_error(error, event); - } - }); - }).then(success_callback, error_callback).promise(); - }, - /** - * Raw JSON-RPC call - * - * @returns {jQuery.Deferred} ajax-based deferred object - */ - rpc_ajax: function(url, payload) { - var self = this; - this.on_rpc_request(); - // url can be an $.ajax option object - if (_.isString(url)) { - url = { - url: url - } - } - var ajax = _.extend({ - type: "POST", - url: url, - dataType: 'json', - contentType: 'application/json', - data: JSON.stringify(payload), - processData: false - }, url); - var deferred = $.Deferred(); - $.ajax(ajax).done(function(response, textStatus, jqXHR) { - self.on_rpc_response(); - if (!response.error) { - deferred.resolve(response["result"], textStatus, jqXHR); - return; - } - if (response.error.data.type !== "session_invalid") { - deferred.reject(response.error); - return; - } - self.uid = false; - self.on_session_invalid(function() { - self.rpc(url, payload.params, - function() { - deferred.resolve.apply(deferred, arguments); - }, - function(error, event) { - event.preventDefault(); - deferred.reject.apply(deferred, arguments); - }); - }); - }).fail(function(jqXHR, textStatus, errorThrown) { - self.on_rpc_response(); - var error = { - code: -32098, - message: "XmlHttpRequestError " + errorThrown, - data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] } - }; - deferred.reject(error); - }); - return deferred.promise(); - }, - on_rpc_request: function() { - }, - on_rpc_response: function() { - }, - on_rpc_error: function(error) { - }, - /** - * The session is validated either by login or by restoration of a previous session - */ - on_session_valid: function() { - if(!openerp._modules_loaded) - this.load_modules(); - }, - on_session_invalid: function(contination) { - }, - session_is_valid: function() { - return this.uid; - }, - session_login: function(db, login, password, success_callback) { - var self = this; - this.db = db; - this.login = login; - this.password = password; - var params = { db: this.db, login: this.login, password: this.password }; - this.rpc("/base/session/login", params, function(result) { - self.session_id = result.session_id; - self.uid = result.uid; - self.session_save(); - self.on_session_valid(); - if (success_callback) - success_callback(); - }); - }, - session_logout: function() { - this.uid = false; - }, - /** - * Reloads uid and session_id from local storage, if they exist - */ - session_restore: function () { - this.uid = this.get_cookie('uid'); - this.session_id = this.get_cookie('session_id'); - this.db = this.get_cookie('db'); - this.login = this.get_cookie('login'); - // we should do an rpc to confirm that this session_id is valid and if it is retrieve the information about db and login - // then call on_session_valid - this.on_session_valid(); - }, - /** - * Saves the session id and uid locally - */ - session_save: function () { - this.set_cookie('uid', this.uid); - this.set_cookie('session_id', this.session_id); - this.set_cookie('db', this.db); - this.set_cookie('login', this.login); - }, - logout: function() { - delete this.uid; - delete this.session_id; - delete this.db; - delete this.login; - this.set_cookie('uid', ''); - this.set_cookie('session_id', ''); - this.set_cookie('db', ''); - this.set_cookie('login', ''); - this.on_session_invalid(function() {}); - }, - /** - * Fetches a cookie stored by an openerp session - * - * @private - * @param name the cookie's name - */ - get_cookie: function (name) { - var nameEQ = this.element_id + '|' + name + '='; - var cookies = document.cookie.split(';'); - for(var i=0; i Date: Thu, 11 Aug 2011 05:03:09 +0200 Subject: [PATCH 20/67] [FIX] viewmanageraction set action before _super bzr revid: al@openerp.com-20110811030309-76p0gev9e2dqng2s --- addons/base/static/src/js/views.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 051a71d3852..95d90dd1c38 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -277,6 +277,7 @@ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ } else { dataset = new openerp.base.DataSetStatic(this, action.res_model, action.context, [action.res_id]); } + this.action = action; this._super(parent, dataset, action.views); this.action = action; this.flags = this.action.flags || {}; From af721b53d1988a479411e771238cae10350ae6ae Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 05:10:00 +0200 Subject: [PATCH 21/67] [IMP] misc comments bzr revid: al@openerp.com-20110811031000-z0nkvickg6dkfe0d --- addons/base/static/src/js/boot.js | 13 +++++++------ addons/base/static/src/js/chrome.js | 3 +-- addons/base/static/src/js/core.js | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/addons/base/static/src/js/boot.js b/addons/base/static/src/js/boot.js index e3d33a1910c..3d1d1e75e7c 100644 --- a/addons/base/static/src/js/boot.js +++ b/addons/base/static/src/js/boot.js @@ -1,6 +1,6 @@ -//--------------------------------------------------------- -// OpenERP Web Boostrap -//--------------------------------------------------------- +/*--------------------------------------------------------- + * OpenERP Web Boostrap Code + *---------------------------------------------------------*/ /** * @name openerp @@ -44,12 +44,13 @@ } return new_instance; } + // TODO add initrpc to init core only for RPC }; })(); -//--------------------------------------------------------- -// OpenERP base module split -//--------------------------------------------------------- +/*--------------------------------------------------------- + * OpenERP Web base module split + *---------------------------------------------------------*/ openerp.base = function(instance) { openerp.base.core(instance); diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 111e212d124..7e7f5ae6ab6 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -1,10 +1,9 @@ /*--------------------------------------------------------- - * OpenERP base library + * OpenERP Web chrome *---------------------------------------------------------*/ openerp.base.chrome = function(openerp) { - openerp.base.Notification = openerp.base.Widget.extend({ init: function(parent, element_id) { this._super(parent, element_id); diff --git a/addons/base/static/src/js/core.js b/addons/base/static/src/js/core.js index 7cdaf94446a..859c96645a1 100644 --- a/addons/base/static/src/js/core.js +++ b/addons/base/static/src/js/core.js @@ -1,5 +1,5 @@ /*--------------------------------------------------------- - * OpenERP controller framework + * OpenERP Web core *--------------------------------------------------------*/ openerp.base.core = function(openerp) { @@ -888,4 +888,5 @@ openerp.base.Session = openerp.base.Widget.extend( /** @lends openerp.base.Sessi }); }; + // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: From 93a1fa92637c0e428407112d5d15e3edaf5d5376 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 11 Aug 2011 08:28:35 +0200 Subject: [PATCH 22/67] [ADD] some jsdoc before refactoding dataset methods bzr revid: xmo@openerp.com-20110811062835-smlv47aybl336q9b --- addons/base/static/src/js/data.js | 86 ++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index 4e611771808..aa409a36bb7 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -268,6 +268,11 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data }, /** * Read records. + * + * @param {Array} ids identifiers of the records to read + * @param {Array} [fields] fields to read and return, by default all fields are returned + * @param {Function} callback function called with read result + * @returns {$.Deferred} */ read_ids: function (ids, fields, callback) { var self = this; @@ -282,13 +287,20 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data * Read a slice of the records represented by this DataSet, based on its * domain and context. * + * @param {Array} [fields] fields to read and return, by default all fields are returned * @param {Number} [offset=0] The index from which selected records should be returned * @param {Number} [limit=null] The maximum number of records to return + * @param {Function} callback function called with read_slice result + * @returns {$.Deferred} */ read_slice: function (fields, offset, limit, callback) { }, /** - * Read the indexed record. + * Reads the current dataset record (from its index) + * + * @params {Array} [fields] fields to read and return, by default all fields are returned + * @params {Function} callback function called with read_index result + * @returns {$.Deferred} */ read_index: function (fields, callback) { var def = $.Deferred().then(callback); @@ -304,6 +316,13 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data } return def.promise(); }, + /** + * Reads default values for the current model + * + * @param {Array} [fields] fields to get default values for, by default all defaults are read + * @param {Function} callback function called with default_get result + * @returns {$.Deferred} + */ default_get: function(fields, callback) { return this.rpc('/base/dataset/default_get', { model: this.model, @@ -311,6 +330,14 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data context: this.get_context() }, callback); }, + /** + * Creates a new record in db + * + * @param {Object} data field values to set on the new record + * @param {Function} callback function called with operation result + * @param {Function} error_callback function called in case of creation error + * @returns {$.Deferred} + */ create: function(data, callback, error_callback) { return this.rpc('/base/dataset/create', { model: this.model, @@ -318,6 +345,15 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data context: this.get_context() }, callback, error_callback); }, + /** + * Saves the provided data in an existing db record + * + * @param {Number|String} id identifier for the record to alter + * @param {Object} data field values to write into the record + * @param {Function} callback function called with operation result + * @param {Function} error_callback function called in case of write error + * @returns {$.Deferred} + */ write: function (id, data, callback, error_callback) { return this.rpc('/base/dataset/save', { model: this.model, @@ -326,11 +362,27 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data context: this.get_context() }, callback, error_callback); }, + /** + * Deletes an existing record from the database + * + * @param {Number|String} ids identifier of the record to delete + * @param {Function} callback function called with operation result + * @param {Function} error_callback function called in case of deletion error + */ unlink: function(ids, callback, error_callback) { var self = this; return this.call_and_eval("unlink", [ids, this.get_context()], null, 1, callback, error_callback); }, + /** + * Calls an arbitrary RPC method + * + * @param {String} method name of the method (on the current model) to call + * @param {Array} [args] arguments to pass to the method + * @param {Function} callback + * @param {Function} error_callback + * @returns {$.Deferred} + */ call: function (method, args, callback, error_callback) { return this.rpc('/base/dataset/call', { model: this.model, @@ -338,6 +390,17 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data args: args || [] }, callback, error_callback); }, + /** + * Calls an arbitrary method, with more crazy + * + * @param {String} method + * @param {Array} [args] + * @param {Number} [domain_id] index of a domain to evaluate in the args array + * @param {Number} [context_id] index of a context to evaluate in the args array + * @param {Function} callback + * @param {Function }error_callback + * @returns {$.Deferred} + */ call_and_eval: function (method, args, domain_id, context_id, callback, error_callback) { return this.rpc('/base/dataset/call', { model: this.model, @@ -347,6 +410,15 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data args: args || [] }, callback, error_callback); }, + /** + * Calls a button method, usually returning some sort of action + * + * @param {String} method + * @param {Array} [args] + * @param {Function} callback + * @param {Function} error_callback + * @returns {$.Deferred} + */ call_button: function (method, args, callback, error_callback) { return this.rpc('/base/dataset/call_button', { model: this.model, @@ -356,6 +428,13 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data args: args || [] }, callback, error_callback); }, + /** + * Fetches the "readable name" for records, based on intrinsic rules + * + * @param {Array} ids + * @param {Function} callback + * @returns {$.Deferred} + */ name_get: function(ids, callback) { return this.call_and_eval('name_get', [ids, this.get_context()], null, 1, callback); }, @@ -366,12 +445,17 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data * @param {String} [operator='ilike'] matching operator to use with the provided name value * @param {Number} [limit=100] maximum number of matches to return * @param {Function} callback function to call with name_search result + * @returns {$.Deferred} */ name_search: function (name, domain, operator, limit, callback) { return this.call_and_eval('name_search', [name || '', domain || false, operator || 'ilike', this.get_context(), limit || 100], 1, 3, callback); }, + /** + * @param name + * @param callback + */ name_create: function(name, callback) { return this.call_and_eval('name_create', [name, this.get_context()], null, 1, callback); }, From 13c75281b07c1f3169478f137a17e8956e1f88be Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 11 Aug 2011 09:00:50 +0200 Subject: [PATCH 23/67] [IMP] change DataSet.read_slice to take an options object for optional fields, offset and limit args bzr revid: xmo@openerp.com-20110811070050-pkz6x39tf0i4e49r --- addons/base/static/src/js/data.js | 48 ++++++++++--------- addons/base/static/src/js/form.js | 14 +++--- addons/base/static/src/js/list.js | 11 +++-- addons/base/static/src/js/view_tree.js | 2 +- .../base_calendar/static/src/js/calendar.js | 8 +++- .../base_dashboard/static/src/js/dashboard.js | 9 ++-- .../base_default_home/static/src/js/home.js | 2 +- addons/base_gantt/static/src/js/gantt.js | 4 +- addons/base_graph/static/src/js/graph.js | 6 +-- .../web_mobile/static/src/js/form_mobile.js | 4 +- 10 files changed, 59 insertions(+), 49 deletions(-) diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index aa409a36bb7..2e3d6cf8f03 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -270,12 +270,11 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data * Read records. * * @param {Array} ids identifiers of the records to read - * @param {Array} [fields] fields to read and return, by default all fields are returned + * @param {Array} fields fields to read and return, by default all fields are returned * @param {Function} callback function called with read result * @returns {$.Deferred} */ read_ids: function (ids, fields, callback) { - var self = this; return this.rpc('/base/dataset/get', { model: this.model, ids: ids, @@ -287,14 +286,14 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data * Read a slice of the records represented by this DataSet, based on its * domain and context. * - * @param {Array} [fields] fields to read and return, by default all fields are returned - * @param {Number} [offset=0] The index from which selected records should be returned - * @param {Number} [limit=null] The maximum number of records to return + * @params {Object} options + * @param {Array} [options.fields] fields to read and return, by default all fields are returned + * @param {Number} [options.offset=0] The index from which selected records should be returned + * @param {Number} [options.limit=null] The maximum number of records to return * @param {Function} callback function called with read_slice result * @returns {$.Deferred} */ - read_slice: function (fields, offset, limit, callback) { - }, + read_slice: function (options, callback) { return null; }, /** * Reads the current dataset record (from its index) * @@ -476,9 +475,11 @@ openerp.base.DataSetStatic = openerp.base.DataSet.extend({ // all local records this.ids = ids || []; }, - read_slice: function (fields, offset, limit, callback) { - var self = this; - offset = offset || 0; + read_slice: function (options, callback) { + var self = this, + offset = options.offset || 0, + limit = options.limit || false, + fields = options.fields || false; var end_pos = limit && limit !== -1 ? offset + limit : undefined; return this.read_ids(this.ids.slice(offset, end_pos), fields, callback); }, @@ -515,25 +516,28 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ // is it necessary ? this.ids = []; }, - read_slice: function (fields, offset, limit, callback) { + /** + * Read a slice of the records represented by this DataSet, based on its + * domain and context. + * + * @params {Object} options + * @param {Array} [options.fields] fields to read and return, by default all fields are returned + * @param {Number} [options.offset=0] The index from which selected records should be returned + * @param {Number} [options.limit=null] The maximum number of records to return + * @param {Function} callback function called with read_slice result + * @returns {$.Deferred} + */ + read_slice: function (options, callback) { var self = this; - offset = offset || 0; - // cached search, not sure it's a good idea - if(this.offset <= offset) { - var start = offset - this.offset; - if(this.ids.length - start >= limit) { - // TODO: check if this could work do only read if possible - // return read_ids(ids.slice(start,start+limit),fields,callback) - } - } + var offset = options.offset || 0; return this.rpc('/base/dataset/search_read', { model: this.model, - fields: fields, + fields: options.fields || false, domain: this.domain, context: this.get_context(), sort: this.sort(), offset: offset, - limit: limit + limit: options.limit || false }, function (result) { self.ids = result.ids; self.offset = offset; diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 7e739b6bc90..2eb06eba81f 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -451,12 +451,14 @@ openerp.base.form.SidebarAttachments = openerp.base.Widget.extend({ this.on_attachments_loaded([]); } else { (new openerp.base.DataSetSearch( - this, 'ir.attachment', this.view.dataset.get_context(), - [['res_model', '=', this.view.dataset.model], - ['res_id', '=', this.view.datarecord.id], - ['type', 'in', ['binary', 'url']]])).read_slice( - ['name', 'url', 'type'], false, false, - this.on_attachments_loaded); + this, 'ir.attachment', this.view.dataset.get_context(), + [ + ['res_model', '=', this.view.dataset.model], + ['res_id', '=', this.view.datarecord.id], + ['type', 'in', ['binary', 'url']] + ])).read_slice( + {fields: ['name', 'url', 'type']}, + this.on_attachments_loaded); } }, on_attachments_loaded: function(attachments) { diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index e34b4b75f54..45da03e470c 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -478,7 +478,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi _.extend(this.dataset, { domain: dataset.domain, context: dataset.get_context() - }).read_slice([], 0, false, function () { + }).read_slice({}, function () { self.select_record(index); }); }, @@ -1033,10 +1033,11 @@ openerp.base.ListView.Groups = openerp.base.Class.extend( /** @lends openerp.bas d = new $.Deferred(), page = this.datagroup.openable ? this.page : view.page; - dataset.read_slice( - _.filter(_.pluck(_.select(this.columns, function(x) {return x.tag == "field";}), 'name'), _.identity), - page * limit, limit, - function (records) { + dataset.read_slice({ + fields: _.filter(_.pluck(_.select(this.columns, function(x) {return x.tag == "field";}), 'name'), _.identity), + offset: page * limit, + limit: limit + }, function (records) { if (!self.datagroup.openable) { view.configure_pager(dataset); } else { diff --git a/addons/base/static/src/js/view_tree.js b/addons/base/static/src/js/view_tree.js index 9951d9429f8..da426080574 100644 --- a/addons/base/static/src/js/view_tree.js +++ b/addons/base/static/src/js/view_tree.js @@ -72,7 +72,7 @@ openerp.base.TreeView = openerp.base.View.extend({ 'toolbar': has_toolbar })); - this.dataset.read_slice(this.fields_list(), 0, false, function (records) { + this.dataset.read_slice({fields: this.fields_list()}, function (records) { if (!has_toolbar) { // WARNING: will do a second read on the same ids, but only on // first load so not very important diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index fcbe1084f2f..b53ed9ba900 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -131,7 +131,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ }, load_scheduler: function() { var self = this; - this.dataset.read_slice([], 0, false, function(events) { + this.dataset.read_slice({}, function(events) { if (self.session.locale_code) { // TODO: replace $LAB $LAB.setOptions({AlwaysPreserveOrder: true}).script([ @@ -340,7 +340,11 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ // TODO: handle non-empty results.group_by with read_group self.dataset.context = self.context = results.context; self.dataset.domain = self.domain = results.domain; - self.dataset.read_slice(_.keys(self.fields), 0, self.limit, self.on_events_loaded); + self.dataset.read_slice({ + fields: _.keys(self.fields), + offset:0, + limit: self.limit + }, self.on_events_loaded); }); }); }, diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/base_dashboard/static/src/js/dashboard.js index b4e04dbd22a..422d279a485 100644 --- a/addons/base_dashboard/static/src/js/dashboard.js +++ b/addons/base_dashboard/static/src/js/dashboard.js @@ -290,7 +290,7 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ this.dataset.domain = [['type', '=', 'manual']]; }, start: function () { - $.when(this.dataset.read_slice(['state', 'action_id', 'category_id']), + $.when(this.dataset.read_slice({fields: ['state', 'action_id', 'category_id']}), this.dataset.call('progress')) .then(this.on_records_loaded); }, @@ -353,8 +353,8 @@ openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({ start: function () { var self = this; this.dataset.read_slice( - ['name', 'web_icon_data', 'web_icon_hover_data'], - null, null, function (applications) { + {fields: ['name', 'web_icon_data', 'web_icon_hover_data']}, + function (applications) { // Create a matrix of 3*x applications var rows = []; while (applications.length) { @@ -384,7 +384,8 @@ openerp.base_dashboard.Widgets = openerp.base.View.extend({ this.widgets = new openerp.base.DataSetSearch(this, 'res.widget'); }, start: function () { - this.user_widgets.read_slice(['widget_id', 'user_id'], null, null, + this.user_widgets.read_slice( + {fields: ['widget_id', 'user_id']}, this.on_widgets_list_loaded); }, on_widgets_list_loaded: function (user_widgets) { diff --git a/addons/base_default_home/static/src/js/home.js b/addons/base_default_home/static/src/js/home.js index 1cf2ed3ab25..ebdf7ea7d00 100644 --- a/addons/base_default_home/static/src/js/home.js +++ b/addons/base_default_home/static/src/js/home.js @@ -86,7 +86,7 @@ openerp.base_default_home = function (openerp) { $.blockUI({ message: '' }); - Modules.read_slice(['id'], null, null, function (records) { + Modules.read_slice({fields: ['id']}, function (records) { if (!(records.length === 1)) { return; } Modules.call('state_update', [_.pluck(records, 'id'), 'to install', ['uninstalled']], diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 09174e25ab7..4a38747bf8a 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -81,7 +81,7 @@ init: function(view_manager, session, element_id, dataset, view_id) { get_events: function() { var self = this; - this.dataset.read_slice(false, false, false, function(result) { + this.dataset.read_slice({}, function(result) { self.load_event(result); }); @@ -460,7 +460,7 @@ init: function(view_manager, session, element_id, dataset, view_id) { reload_gantt: function() { var self = this; - this.dataset.read_slice(false, false, false, function(response) { + this.dataset.read_slice({}, function(response) { ganttChartControl.clearAll(); jQuery("#GanttDiv").children().remove(); self.load_event(response); diff --git a/addons/base_graph/static/src/js/graph.js b/addons/base_graph/static/src/js/graph.js index 5ad85e4a8b0..f7c949dc194 100644 --- a/addons/base_graph/static/src/js/graph.js +++ b/addons/base_graph/static/src/js/graph.js @@ -89,7 +89,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ } this.dataset.domain = domain; this.dataset.context = this.view_manager.dataset.context; - this.dataset.read_slice(_(this.fields).keys(), 0, false, function(res) { + this.dataset.read_slice({fields: _(this.fields).keys()}, function(res) { self.schedule_chart(res); }); } @@ -468,9 +468,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ } self.dataset.context = results.context; self.dataset.domain = results.domain; - self.dataset.read_slice([], 0, false,function(response){ - self.load_chart(response); - }); + self.dataset.read_slice({}, $.proxy(self, 'load_chart')); }); } }); diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js index 51bfd719c7f..a8c7bcc480e 100644 --- a/addons/web_mobile/static/src/js/form_mobile.js +++ b/addons/web_mobile/static/src/js/form_mobile.js @@ -12,7 +12,7 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ view_id = this.action.views[1][0]; this.dataset = new openerp.base.DataSetSearch(this.session, this.action.res_model, null, null); - this.dataset.read_slice(false, false, false, function (result) { + this.dataset.read_slice({}, function (result) { for (var i = 0; i < result.length; i++) { if (result[i].id == id) { @@ -101,4 +101,4 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ }, }); -} \ No newline at end of file +} From 33f984d056f6fc367ed1194f7e81aba4c0deca3e Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Thu, 11 Aug 2011 12:49:34 +0530 Subject: [PATCH 24/67] [FIX] Minor changes. bzr revid: sma@tinyerp.com-20110811071934-adjiwyspxegdpzk5 --- addons/base_gantt/static/src/js/gantt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/base_gantt/static/src/js/gantt.js index 18c8617022c..61f9a443d56 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/base_gantt/static/src/js/gantt.js @@ -66,7 +66,7 @@ init: function(parent, element_id, dataset, view_id) { create_gantt: function() { - var ganttChartControl = new GanttChart(this.day_length); + ganttChartControl = new GanttChart(this.day_length); ganttChartControl.setImagePath("/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/"); ganttChartControl.setEditable(true); ganttChartControl.showTreePanel(true); From 13c30f7b50c7fb769d3b53eb2744e9091a77439b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 11 Aug 2011 10:28:18 +0200 Subject: [PATCH 25/67] [IMP] avoid altering the dataset's domain and context in place during list view search bzr revid: xmo@openerp.com-20110811082818-hhgdmn0k10tnbxm4 --- addons/base/static/src/js/data.js | 17 +++++++++-- addons/base/static/src/js/list.js | 15 +++++----- addons/base/static/src/js/views.js | 45 ++---------------------------- 3 files changed, 23 insertions(+), 54 deletions(-) diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js index 2e3d6cf8f03..244c057d544 100644 --- a/addons/base/static/src/js/data.js +++ b/addons/base/static/src/js/data.js @@ -465,7 +465,10 @@ openerp.base.DataSet = openerp.base.Widget.extend( /** @lends openerp.base.Data signal: signal }, callback); }, - get_context: function() { + get_context: function(request_context) { + if (request_context) { + return new openerp.base.CompoundContext(this.context, request_context); + } return this.context; } }); @@ -522,6 +525,8 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ * * @params {Object} options * @param {Array} [options.fields] fields to read and return, by default all fields are returned + * @param {Object} [options.context] context data to add to the request payload, on top of the DataSet's own context + * @param {Array} [options.domain] domain data to add to the request payload, ANDed with the dataset's domain * @param {Number} [options.offset=0] The index from which selected records should be returned * @param {Number} [options.limit=null] The maximum number of records to return * @param {Function} callback function called with read_slice result @@ -533,8 +538,8 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ return this.rpc('/base/dataset/search_read', { model: this.model, fields: options.fields || false, - domain: this.domain, - context: this.get_context(), + domain: this.get_domain(options.domain), + context: this.get_context(options.context), sort: this.sort(), offset: offset, limit: options.limit || false @@ -546,6 +551,12 @@ openerp.base.DataSetSearch = openerp.base.DataSet.extend({ } }); }, + get_domain: function (other_domain) { + if (other_domain) { + return new openerp.base.CompoundDomain(this.domain, other_domain); + } + return this.domain; + }, /** * Reads or changes sort criteria on the dataset. * diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 45da03e470c..96df00c81ff 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -399,11 +399,10 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi * @param {Object} results results of evaluating domain and process for a search */ do_actual_search: function (results) { - this.dataset.context = results.context; - this.dataset.domain = results.domain; this.groups.datagroup = new openerp.base.DataGroup( this, this.model, - results.domain, results.context, + this.dataset.get_domain(results.domain), + this.dataset.get_context(results.context), results.group_by); this.groups.datagroup.sort = this.dataset._sort; @@ -475,11 +474,11 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi */ do_activate_record: function (index, id, dataset) { var self = this; - _.extend(this.dataset, { - domain: dataset.domain, - context: dataset.get_context() - }).read_slice({}, function () { - self.select_record(index); + this.dataset.read_slice({ + context: dataset.get_context(), + domain: dataset.get_domain() + }, function () { + self.select_record(index); }); }, /** diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 95d90dd1c38..fc6e38593d4 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -36,7 +36,6 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ } }, do_action: function(action, on_close) { - this.log("action",action); var type = action.type.replace(/\./g,'_'); var popup = action.target === 'new'; action.flags = _.extend({ @@ -232,9 +231,8 @@ openerp.base.ViewManager = openerp.base.Widget.extend({ this.searchview.hide(); } this.searchview.on_search.add(function(domains, contexts, groupbys) { - self.views[self.active_view].controller.do_search.call( - self, domains.concat(self.domains()), - contexts.concat(self.contexts()), groupbys); + var controller = self.views[self.active_view].controller; + controller.do_search.call(controller, domains, contexts, groupbys); }); return this.searchview.start(); }, @@ -248,23 +246,6 @@ openerp.base.ViewManager = openerp.base.Widget.extend({ on_remove: function() { }, on_edit: function() { - }, - /** - * Domains added on searches by the view manager, to override in subsequent - * view manager in order to add new pieces of domains to searches - * - * @returns an empty list - */ - domains: function () { - return []; - }, - /** - * Contexts added on searches by the view manager. - * - * @returns an empty list - */ - contexts: function () { - return []; } }); @@ -310,28 +291,6 @@ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ .then(this.searchview.do_search); } } - }, - /** - * adds action domain to the search domains - * - * @returns the action's domain - */ - domains: function () { - if (!this.action.domain) { - return []; - } - return [this.action.domain]; - }, - /** - * adds action context to the search contexts - * - * @returns the action's context - */ - contexts: function () { - if (!this.action.context) { - return []; - } - return [this.action.context]; } }); From adf903f0b005c50963baea4f3a6e4b5231e8b7d9 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 11 Aug 2011 10:43:01 +0200 Subject: [PATCH 26/67] [FIX] listview pagination broken in fme@openerp.com-20110808144120-xlut0922rd61moxc, listview needs to get it from the action descriptor stored in the parent object bzr revid: xmo@openerp.com-20110811084301-xp42ylhmv2ackhws --- addons/base/static/src/js/list.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 96df00c81ff..e7abfdfaf0f 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -61,7 +61,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi /** * Retrieves the view's number of records per page (|| section) * - * options > defaults > indefinite + * options > defaults > parent.action.limit > indefinite * * @returns {Number|null} */ @@ -69,6 +69,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi if (this._limit === undefined) { this._limit = (this.options.limit || this.defaults.limit + || (this.widget_parent.action || {}).limit || null); } return this._limit; From c0bedd91f07cfb07084a16b1dd2d5839a8a21505 Mon Sep 17 00:00:00 2001 From: "olt@tinyerp.com" <> Date: Thu, 11 Aug 2011 12:58:35 +0200 Subject: [PATCH 27/67] [IMP] added more fields in default anonymization config bzr revid: olt@tinyerp.com-20110811105835-1tbv4s50o2160maf --- .../ir.model.fields.anonymization.csv | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/addons/anonymization/ir.model.fields.anonymization.csv b/addons/anonymization/ir.model.fields.anonymization.csv index f0918ccda80..2d7ac5de31a 100644 --- a/addons/anonymization/ir.model.fields.anonymization.csv +++ b/addons/anonymization/ir.model.fields.anonymization.csv @@ -37,3 +37,18 @@ anonymization_field_account_invoice_tax_base,account.invoice.tax,base anonymization_field_product_name,product.template,name anonymization_field_res_users_name,res.users,name anonymization_field_res_users_signature,res.users,signature +anonymization_field_res_partner_contact_name,res.partner.contact,name +anonymization_field_res_partner_contact_first_name,res.partner.contact,first_name +anonymization_field_res_partner_contact_maiden_name,res.partner.contact,maiden_name +anonymization_field_res_partner_contact_mobile,res.partner.contact,mobile +anonymization_field_res_partner_contact_email,res.partner.contact,email +anonymization_field_res_partner_job_email,res.partner.job,email +anonymization_field_res_partner_job_phone,res.partner.job,phone +anonymization_field_res_partner_job_fax,res.partner.job,fax +anonymization_field_res_partner_job_other,res.partner.job,other +anonymization_field_crm_phonecall_partner_phone,crm.phonecall,partner_phone +anonymization_field_training_participation_stakeholder_request_email,training.participation.stakeholder.request,email +anonymization_field_training_participation_contact_firstname,training.participation,contact_firstname +anonymization_field_training_participation_contact_lastname,training.participation,contact_lastname +anonymization_field_training_subscription_partner_rh_email,training.subscription,partner_rh_email +anonymization_field_training_subscription_line_job_email,training.subscription.line,job_email From 3c8664626cdc4ee553b12fcf0079fd83b298d694 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 11 Aug 2011 14:48:13 +0200 Subject: [PATCH 28/67] [fix] problem due alification bzr revid: nicolas.vanhoren@openerp.com-20110811124813-ni1mdvcmp6gwvhsn --- addons/base/static/src/js/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 2eb06eba81f..8cb29d3e62f 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1679,7 +1679,7 @@ openerp.base.form.FieldOne2Many = openerp.base.form.Field.extend({ self.save_form_view(); }); setTimeout(function () { - self.viewmanager.appendTo(this.$element); + self.viewmanager.appendTo(self.$element); }, 0); }, reload_current_view: function() { From 142ae74461975f16b4030337405b01870fa6221f Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 11 Aug 2011 15:12:57 +0200 Subject: [PATCH 29/67] [FIX] re-introduce M2M widget bzr revid: xmo@openerp.com-20110811131257-t6pdqsdrhuxgne22 --- addons/base/static/src/js/search.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 661e0d650b8..e88e31ebba0 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -361,7 +361,6 @@ openerp.base.search.fields = new openerp.base.Registry({ 'selection': 'openerp.base.search.SelectionField', 'datetime': 'openerp.base.search.DateTimeField', 'date': 'openerp.base.search.DateField', - 'one2many': 'openerp.base.search.OneToManyField', 'many2one': 'openerp.base.search.ManyToOneField', 'many2many': 'openerp.base.search.ManyToManyField' }); @@ -796,6 +795,12 @@ openerp.base.search.ManyToOneField = openerp.base.search.CharField.extend({ return this._super(); } }); +/** + * m2m search field behaves pretty much exactly like a char field + * + * @class + */ +openerp.base.search.ManyToManyField = openerp.base.search.CharField.extend({}); openerp.base.search.ExtendedSearch = openerp.base.OldWidget.extend({ template: 'SearchView.extended_search', From 935f52f741ed3b579a63bc209ae78535c116be29 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 15:24:10 +0200 Subject: [PATCH 30/67] [IMP] CalendarView now works with date_delay bzr revid: fme@openerp.com-20110811132410-9g7nktccxfis9tkk --- .../base_calendar/static/src/js/calendar.js | 143 +++--------------- 1 file changed, 22 insertions(+), 121 deletions(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index b53ed9ba900..8107f88fb2c 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -99,7 +99,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ scheduler.config.multi_day = true; //Multi day events are not rendered in daily and weekly views scheduler.config.start_on_monday = true; scheduler.config.scroll_hour = 8; - scheduler.config.drag_resize = scheduler.config.drag_create = !!this.date_stop; + scheduler.config.drag_resize = true; + scheduler.config.drag_create = true; // Initialize Sceduler this.mode = this.mode || 'month'; @@ -131,7 +132,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ }, load_scheduler: function() { var self = this; - this.dataset.read_slice({}, function(events) { + this.dataset.read_slice({ + fields: _.keys(self.fields_view.fields) + }, function(events) { if (self.session.locale_code) { // TODO: replace $LAB $LAB.setOptions({AlwaysPreserveOrder: true}).script([ @@ -186,82 +189,35 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.refresh_minical(); this.sidebar.responsible.on_events_loaded(sidebar_items); }, - convert_event: function(event) { - var starts = event[this.date_start], - ends = event[this.date_delay] || 1, - span = 0, + convert_event: function(evt) { + var date_start = openerp.base.parse_datetime(evt[this.date_start]), + date_stop = this.date_stop ? openerp.base.parse_datetime(evt[this.date_stop]) : null, + date_delay = evt[this.date_delay] || null, res_text = '', res_description = []; - var parse_start_date = openerp.base.parse_datetime(starts); - if (event[this.date_stop]) { - var parse_end_date = openerp.base.parse_datetime(event[this.date_stop]); - } if (this.info_fields) { - var fld = event[this.info_fields[0]]; - - if (typeof fld == 'object') { - res_text = fld[fld.length -1]; - } else { - res_text = fld; - } + var fld = evt[this.info_fields[0]]; + res_text = (typeof fld == 'object') ? fld[fld.length -1] : res_text = fld; var sliced_info_fields = this.info_fields.slice(1); - for (sl_fld in sliced_info_fields) { - var slc_fld = event[sliced_info_fields[sl_fld]]; - + for (var sl_fld in sliced_info_fields) { + var slc_fld = evt[sliced_info_fields[sl_fld]]; if (typeof slc_fld == 'object') { res_description.push(slc_fld[slc_fld.length - 1]); - } else { - if(slc_fld) res_description.push(slc_fld); + } else if (slc_fld) { + res_description.push(slc_fld); } } } - - if (starts && ends) { - var n = 0, - h = ends; - if (ends == this.day_length) { - span = 1; - } else if (ends > this.day_length) { - n = ends / this.day_length; - h = ends % this.day_length; - n = parseInt(Math.floor(n)); - - if (h > 0) { - span = n + 1; - } else { - span = n; - } - } - var start = parse_start_date.setTime((parse_start_date.getTime() + (h * 60 * 60) + (n * 24 * 60 * 60))); - ends = parse_start_date; - } - - if (starts && this.date_stop) { - ends = parse_end_date; - if (event[this.date_stop] == undefined) { - var start = parse_start_date.setTime((parse_start_date.getTime() + (h * 60 * 60) + (n * 24 * 60 * 60))); - ends = parse_start_date; - } - var tds = parse_start_date.getTime(), - tde = parse_end_date.getTime(); - - if (tds >= tde) { - tde = tds + 60 * 60; - parse_end_date.setTime(tde); - ends = parse_end_date; - } - n = (tde - tds) / (60 * 60); - if (n >= this.day_length) { - span = Math.ceil(n / 24); - } + if (!date_stop && date_delay) { + date_stop = date_start.clone().addHours(date_delay); } return { - 'start_date': parse_start_date.toString('yyyy-MM-dd HH:mm:ss'), - 'end_date': ends.toString('yyyy-MM-dd HH:mm:ss'), + 'start_date': date_start.toString('yyyy-MM-dd HH:mm:ss'), + 'end_date': date_stop.toString('yyyy-MM-dd HH:mm:ss'), 'text': res_text, - 'id': event['id'], + 'id': evt.id, 'title': res_description.join() } }, @@ -317,15 +273,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ data[this.date_stop] = openerp.base.format_datetime(event_obj.end_date); } if (this.date_delay) { - var tds = (event_obj.start_date.getOrdinalNumber() / 1e3 >> 0) - (event_obj.start_date.getOrdinalNumber() < 0); - var tde = (event_obj.end_date.getOrdinalNumber() / 1e3 >> 0) - (event_obj.end_date.getOrdinalNumber() < 0); - var n = (tde - tds) / (60 * 60); - if (n > this.day_length) { - var d = Math.floor(n / 24), - h = n % 24; - n = d * this.day_length + h; - } - data[this.date_delay] = n; + var diff_seconds = Math.round((event_obj.end_date.getTime() - event_obj.start_date.getTime()) / 1000); + data[this.date_delay] = diff_seconds / 3600; } return data; }, @@ -362,54 +311,6 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ if (this.sidebar) { this.sidebar.$element.hide(); } - }, - popup_event: function(event_id) { - var self = this; - if (event_id) event_id = parseInt(event_id, 10); - var action = { - res_model: this.dataset.model, - res_id: event_id, - views: [[false, 'form']], - type: 'ir.actions.act_window', - view_type: 'form', - view_mode: 'form', - flags : { - search_view: false, - sidebar : false, - views_switcher : false, - action_buttons : false, - pager: false - } - } - var element_id = _.uniqueId("act_window_dialog"); - var dialog = $('
', { - 'id': element_id - }).dialog({ - modal: true, - width: 'auto', - height: 'auto', - buttons: { - Cancel: function() { - $(this).dialog("destroy"); - }, - Save: function() { - var view_manager = action_manager.viewmanager; - var _dialog = this; - view_manager.views[view_manager.active_view].controller.do_save(function(r) { - $(_dialog).dialog("destroy"); - // self.start(); - self.load_scheduler(); - }) - } - } - }); - var action_manager = new openerp.base.ActionManager(this, element_id); - action_manager.start(); - action_manager.do_action(action); - //Default_get - if (!event_id) { - this.dataset.index = null; - } } }); From 1dea9ed16fedae2b8d08328b03b84d1fe5948694 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 11 Aug 2011 16:44:07 +0200 Subject: [PATCH 31/67] [FIX] when reloading the view description thingie, the listview needs to send the search context along so stuff line invisible attributes (for invisible columns) can be correctly evaluated bzr revid: xmo@openerp.com-20110811144407-f5nlq89wqdh4z0pa --- addons/base/static/src/js/list.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index e7abfdfaf0f..3032e702a73 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -352,8 +352,9 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi * Reloads the list view based on the current settings (dataset & al) * * @param {Boolean} [grouped] Should the list be displayed grouped + * @param {Object} [context] context to send the server while loading the view */ - reload_view: function (grouped) { + reload_view: function (grouped, context) { var self = this; var callback = function (field_view_get) { self.on_loaded(field_view_get, grouped); @@ -364,7 +365,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi return this.rpc('/base/listview/load', { model: this.model, view_id: this.view_id, - context: this.dataset.get_context(), + context: this.dataset.get_context(context), toolbar: this.options.sidebar }, callback); } @@ -411,7 +412,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi results.group_by = null; } - this.reload_view(!!results.group_by).then( + this.reload_view(!!results.group_by, results.context).then( $.proxy(this, 'reload_content')); }, /** From 1dea8eff47b258bcab4e81a765080a7ffa618fad Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 16:59:04 +0200 Subject: [PATCH 32/67] [FIX] action where res_id is defined bzr revid: al@openerp.com-20110811145904-0on11bcatcvg8r3q --- addons/base/static/src/js/view_tree.js | 1 - addons/base/static/src/js/views.js | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/base/static/src/js/view_tree.js b/addons/base/static/src/js/view_tree.js index da426080574..5c3c7457e1c 100644 --- a/addons/base/static/src/js/view_tree.js +++ b/addons/base/static/src/js/view_tree.js @@ -176,7 +176,6 @@ openerp.base.TreeView = openerp.base.View.extend({ }, function (actions) { if (!actions.length) { return; } var action = actions[0][2]; - action.flags.new_window = true; self.do_action(action); }); }, diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index fc6e38593d4..7e6bfa0a5cb 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -39,7 +39,6 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ var type = action.type.replace(/\./g,'_'); var popup = action.target === 'new'; action.flags = _.extend({ - popup: popup, views_switcher : !popup, search_view : !popup, action_buttons : !popup, @@ -53,7 +52,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this[type](action, on_close); }, ir_actions_act_window: function (action, on_close) { - if (action.flags.popup) { + if (action.target === 'new') { if (this.dialog == null) { this.dialog = new openerp.base.Dialog(this, { title: action.name, width: '80%' }); if(on_close) @@ -252,13 +251,15 @@ openerp.base.ViewManager = openerp.base.Widget.extend({ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ init: function(parent, action) { this.session = parent.session; + this.action = action; var dataset; if (!action.res_id) { dataset = new openerp.base.DataSetSearch(this, action.res_model, action.context, action.domain); } else { + this.action.flags.search_view = false; dataset = new openerp.base.DataSetStatic(this, action.res_model, action.context, [action.res_id]); + dataset.index = 0; } - this.action = action; this._super(parent, dataset, action.views); this.action = action; this.flags = this.action.flags || {}; From a245bf37194da0ad2e0ebbb06fc8665b6ad7cc49 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 11 Aug 2011 18:03:47 +0200 Subject: [PATCH 33/67] [imp] add Save & New in popups for o2m & m2m bzr revid: nicolas.vanhoren@openerp.com-20110811160347-rn4kjlpib1lh1o5p --- addons/base/static/src/js/form.js | 71 ++++++++++++++++++++--------- addons/base/static/src/xml/base.xml | 14 ++++-- 2 files changed, 59 insertions(+), 26 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 8cb29d3e62f..4e7876b1768 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1506,7 +1506,6 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({ var dataset = new openerp.base.DataSetStatic(self, self.field.relation, self.build_context()); dataset.name_get([element_ids[0]], function(data) { self._change_int_ext_value(data[0]); - pop.stop(); }); }); }, @@ -1842,16 +1841,16 @@ openerp.base.form.One2ManyListView = openerp.base.ListView.extend({ pop.select_element(self.o2m.field.relation,{ initial_view: "form", alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, - auto_create: false, + create_function: function(data) { + return self.o2m.dataset.create(data, function(r) { + self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result])); + self.o2m.dataset.on_change(); + }); + }, parent_view: self.o2m.view }, self.o2m.build_domain(), self.o2m.build_context()); - pop.on_create.add(function(data) { - self.o2m.dataset.create(data, function(r) { - self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result])); - self.o2m.dataset.on_change(); - pop.stop(); - self.o2m.reload_current_view(); - }); + pop.on_select_elements.add_last(function() { + self.o2m.reload_current_view(); }); } }, @@ -1946,7 +1945,6 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({ self.reload_content(); } }); - pop.stop(); }); }, do_activate_record: function(index, id) { @@ -1968,16 +1966,22 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ * - initial_view: form or search (default search) * - disable_multiple_selection * - alternative_form_view - * - auto_create (default true) + * - create_function (defaults to a naive saving behavior) * - parent_view */ select_element: function(model, options, domain, context) { + var self = this; this.model = model; this.domain = domain || []; this.context = context || {}; - this.options = _.defaults(options || {}, {"initial_view": "search", "auto_create": true}); + this.options = _.defaults(options || {}, {"initial_view": "search", "create_function": function() { + return self.create_row.apply(self, arguments); + }}); this.initial_ids = this.options.initial_ids; - openerp.base.form.dialog(this.render()); + this.created_elements = []; + openerp.base.form.dialog(this.render(), {close:function() { + self.check_exit(); + }}); this.start(); }, start: function() { @@ -2023,6 +2027,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ } $sbutton.click(function() { self.on_select_elements(self.selected_ids); + self.stop(); }); self.view_list = new openerp.base.form.SelectCreateListView(self, self.element_id + "_view_list", self.dataset, false, @@ -2035,15 +2040,11 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ }); this.searchview.start(); }, - on_create: function(data) { - if (!this.options.auto_create) - return; + create_row: function(data) { var self = this; var wdataset = new openerp.base.DataSetSearch(this, this.model, this.context, this.domain); wdataset.parent_view = this.options.parent_view; - wdataset.create(data, function(r) { - self.on_select_elements([r.result]); - }); + return wdataset.create(data); }, on_select_elements: function(element_ids) { }, @@ -2071,18 +2072,43 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ this.view_form.start(); this.view_form.on_loaded.add_last(function() { var $buttons = self.view_form.$element.find(".oe_form_buttons"); - $buttons.html(QWeb.render("SelectCreatePopup.form.buttons")); + $buttons.html(QWeb.render("SelectCreatePopup.form.buttons", {widget:self})); + var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new"); + $nbutton.click(function() { + self._created = $.Deferred().then(function() { + self._created = undefined; + self.view_form.on_button_new(); + }); + self.view_form.do_save(); + }); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save"); $nbutton.click(function() { + self._created = $.Deferred().then(function() { + self._created = undefined; + self.check_exit(); + }); self.view_form.do_save(); }); var $cbutton = $buttons.find(".oe_selectcreatepopup-form-close"); $cbutton.click(function() { - self.stop(); + self.check_exit(); + }); + }); + this.dataset.on_create.add(function(data) { + self.options.create_function(data).then(function(r) { + self.created_elements.push(r.result); + if (self._created) { + self._created.resolve(); + } }); }); - this.dataset.on_create.add(this.on_create); this.view_form.do_show(); + }, + check_exit: function() { + if (this.created_elements.length > 0) { + this.on_select_elements(this.created_elements); + } + this.stop(); } }); @@ -2092,6 +2118,7 @@ openerp.base.form.SelectCreateListView = openerp.base.ListView.extend({ }, select_record: function(index) { this.popup.on_select_elements([this.dataset.ids[index]]); + this.popup.stop(); }, do_select: function(ids, records) { this._super(ids, records); diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 4e581e8c175..f9ec63dd69c 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -1114,11 +1114,17 @@ - + - - + + + + + + + +
@@ -1127,7 +1133,7 @@ - + From 673a0683e825f0e257b831e94d464deaee011de4 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 18:07:54 +0200 Subject: [PATCH 34/67] [IMP] CalendarView: Fitler events using sidebar 'Responsibles' option bzr revid: fme@openerp.com-20110811160754-jfexopgrrqnfg9df --- .../base_calendar/static/src/js/calendar.js | 102 ++++++++++-------- .../static/src/xml/base_calendar.xml | 6 +- 2 files changed, 63 insertions(+), 45 deletions(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index 8107f88fb2c..9204695b663 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -17,6 +17,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.context = this.dataset.context || {}; this.has_been_loaded = $.Deferred(); this.creating_event_id = null; + this.dataset_events = []; if (this.options.action_views_ids.form) { this.form_dialog = new openerp.base_calendar.CalendarFormDialog(this, {}, this.options.action_views_ids.form, dataset); this.form_dialog.start(); @@ -130,25 +131,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ reload_event: function(id) { this.dataset.read_ids([id], _.keys(this.fields), this.on_events_loaded); }, - load_scheduler: function() { - var self = this; - this.dataset.read_slice({ - fields: _.keys(self.fields_view.fields) - }, function(events) { - if (self.session.locale_code) { - // TODO: replace $LAB - $LAB.setOptions({AlwaysPreserveOrder: true}).script([ - '/base_calendar/static/lib/dhtmlxScheduler/sources/locale_' + self.session.locale_code + '.js', - '/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_' + self.session.locale_code + '.js' - ]).wait(function() { - self.on_events_loaded(events); - }); - } else { - self.on_events_loaded(events); - } - }); - }, - on_events_loaded: function(events) { + on_events_loaded: function(events, fn_filter, no_filter_reload) { var self = this; //To parse Events we have to convert date Format @@ -162,32 +145,41 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ break; } - if (this.fields[this.date_start]['type'] == 'date') { + if (this.color_field) { + var filter = evt[this.color_field]; + if (filter) { + //evt.color = '#dddddd'; + var filter_item = { + value: (typeof filter === 'object') ? filter[0] : filter, + label: (typeof filter === 'object') ? filter[1] : filter, + color: evt.color + } + if (fn_filter && !fn_filter(filter_item.value)) { + continue; + } + if (_.indexOf(sidebar_ids, filter_item.value) === -1) { + sidebar_items.push(filter_item); + sidebar_ids.push(filter_item.value); + } + } + } + + /* + * TODO: check dates of type date + * if (this.fields[this.date_start]['type'] == 'date') { evt[this.date_start] = openerp.base.parse_date(evt[this.date_start]).set({hour: 9}).toString('yyyy-MM-dd HH:mm:ss'); } if (this.date_stop && evt[this.date_stop] && this.fields[this.date_stop]['type'] == 'date') { evt[this.date_stop] = openerp.base.parse_date(evt[this.date_stop]).set({hour: 17}).toString('yyyy-MM-dd HH:mm:ss'); - } - if (this.color_field) { - var user = evt[this.color_field]; - if (user) { - if (_.indexOf(sidebar_ids, user[0]) === -1) { - sidebar_items.push({ - id: user[0], - name: user[1], - // TODO: use color table - color: '#dddddd' - }); - sidebar_ids.push(user[0]); - } - } - } + }*/ res_events.push(this.convert_event(evt)); } scheduler.parse(res_events, 'json'); this.refresh_scheduler(); this.refresh_minical(); - this.sidebar.responsible.on_events_loaded(sidebar_items); + if (!no_filter_reload) { + this.sidebar.responsible.on_events_loaded(sidebar_items); + } }, convert_event: function(evt) { var date_start = openerp.base.parse_datetime(evt[this.date_start]), @@ -213,13 +205,20 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ if (!date_stop && date_delay) { date_stop = date_start.clone().addHours(date_delay); } - return { + var r = { 'start_date': date_start.toString('yyyy-MM-dd HH:mm:ss'), 'end_date': date_stop.toString('yyyy-MM-dd HH:mm:ss'), 'text': res_text, 'id': evt.id, 'title': res_description.join() } + if (evt.color) { + r.color = evt.color; + } + if (evt.textColor) { + r.textColor = evt.textColor; + } + return r; }, do_create_event: function(event_id, event_obj) { var self = this, @@ -280,6 +279,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ }, do_search: function(domains, contexts, groupbys) { var self = this; + scheduler.clearAll(); $.when(this.has_been_loaded).then(function() { self.rpc('/base/session/eval_domain_and_context', { domains: domains, @@ -293,7 +293,11 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ fields: _.keys(self.fields), offset:0, limit: self.limit - }, self.on_events_loaded); + }, function(events) { + self.dataset_events = events; + self.on_events_loaded(events); + } + ); }); }); }, @@ -352,10 +356,25 @@ openerp.base_calendar.SidebarResponsible = openerp.base.Widget.extend({ init: function(parent, element_id, view) { this._super(parent, element_id); this.view = view; + this.$element.delegate('input:checkbox', 'change', this.on_filter_click); }, - on_events_loaded: function(users) { - this.$element.html(QWeb.render('CalendarView.sidebar.responsible', { users : users })); - // TODO: bind checkboxes reload sheduler + on_events_loaded: function(filters) { + this.$element.html(QWeb.render('CalendarView.sidebar.responsible', { filters: filters })); + }, + on_filter_click: function(e) { + var responsibles = [], + $e = $(e.target); + this.$element.find('div.oe_calendar_responsible input:checked').each(function() { + responsibles.push($(this).val()); + }); + scheduler.clearAll(); + if (responsibles.length) { + this.view.on_events_loaded(this.view.dataset_events, function(filter_value) { + return _.indexOf(responsibles, filter_value.toString()) > -1; + }, true); + } else { + this.view.on_events_loaded(this.view.dataset_events, false, true); + } } }); @@ -367,7 +386,6 @@ openerp.base_calendar.SidebarNavigator = openerp.base.Widget.extend({ on_events_loaded: function(events) { } }); - }; // DEBUG_RPC:rpc.request:('execute', 'addons-dsh-l10n_us', 1, '*', ('ir.filters', 'get_filters', u'res.partner')) diff --git a/addons/base_calendar/static/src/xml/base_calendar.xml b/addons/base_calendar/static/src/xml/base_calendar.xml index d5350ec9046..299f3ba0f3c 100644 --- a/addons/base_calendar/static/src/xml/base_calendar.xml +++ b/addons/base_calendar/static/src/xml/base_calendar.xml @@ -18,9 +18,9 @@
-
- - +
+ +
From c1401ef8f04fbabbf23089c9e222c000528979cb Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 18:19:27 +0200 Subject: [PATCH 35/67] [FIX] Fixed css problem with reauired fields bzr revid: fme@openerp.com-20110811161927-ot5p552djlb1iigw --- addons/base/static/src/css/base.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css index a629e559d4c..13294819f6b 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/base/static/src/css/base.css @@ -923,7 +923,7 @@ label.error { height: 15px; } .openerp td.required input, .openerp td.required select { - background-color: #D2D2FF; + background-color: #D2D2FF !important; } .openerp td.invalid input, .openerp td.invalid select, .openerp td.invalid textarea { background-color: #F66 !important; From 9df84d52ed480d2e3ae8312e16c75197d612a473 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 18:21:04 +0200 Subject: [PATCH 36/67] [IMP] CalendarView: bind openerp form view to 'open details' icon bzr revid: fme@openerp.com-20110811162104-2pueyflxtpf7oqpf --- addons/base_calendar/static/src/js/calendar.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index 9204695b663..9640f600b55 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -112,6 +112,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ scheduler.attachEvent('onEventDeleted', this.do_delete_event); scheduler.attachEvent('onEventChanged', this.do_save_event); scheduler.attachEvent('onDblClick', this.do_edit_event); + scheduler.attachEvent('onBeforeLightbox', this.do_edit_event); this.mini_calendar = scheduler.renderCalendar({ container: this.sidebar.navigator.element_id, @@ -259,9 +260,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.dataset.index = index; this.form_dialog.form.do_show(); this.form_dialog.open(); - } else { - this.notification.warn("Edit event", "Could not find event #" + event_id); + return false; } + return true; }, get_event_data: function(event_obj) { var data = { From 4df61cba6930f14e6a54fccfea52949b875f3a7d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 18:22:10 +0200 Subject: [PATCH 37/67] [FIX] CalendarView: extra argument type check bzr revid: fme@openerp.com-20110811162210-suf52n8k1abgu2az --- addons/base_calendar/static/src/js/calendar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index 9640f600b55..c3331ca6c06 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -155,7 +155,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ label: (typeof filter === 'object') ? filter[1] : filter, color: evt.color } - if (fn_filter && !fn_filter(filter_item.value)) { + if (typeof(fn_filter) === 'function') { continue; } if (_.indexOf(sidebar_ids, filter_item.value) === -1) { From 1ce53f9425af367f3af6182af4a0d6814afb3ff0 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 18:26:09 +0200 Subject: [PATCH 38/67] [FIX] Bug in previous revision bzr revid: fme@openerp.com-20110811162609-k112p5t0bewnaj42 --- addons/base_calendar/static/src/js/calendar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index c3331ca6c06..8cefd40193a 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -155,7 +155,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ label: (typeof filter === 'object') ? filter[1] : filter, color: evt.color } - if (typeof(fn_filter) === 'function') { + if (typeof(fn_filter) === 'function' && !fn_filter(filter_item.value)) { continue; } if (_.indexOf(sidebar_ids, filter_item.value) === -1) { From a94ac45ed761c632f4f8ecd4c6b8fdbf7549efcf Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 11 Aug 2011 19:13:37 +0200 Subject: [PATCH 39/67] [IMP] CalendarView: Added colors to events bzr revid: fme@openerp.com-20110811171337-ebal9w5qwsjfbq2c --- .../base_calendar/static/src/js/calendar.js | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index 8cefd40193a..22088493e16 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -22,6 +22,10 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.form_dialog = new openerp.base_calendar.CalendarFormDialog(this, {}, this.options.action_views_ids.form, dataset); this.form_dialog.start(); } + this.COLOR_PALETTE = ['#f57900', '#cc0000', '#d400a8', '#75507b', '#3465a4', '#73d216', '#c17d11', '#edd400', + '#fcaf3e', '#ef2929', '#ff00c9', '#ad7fa8', '#729fcf', '#8ae234', '#e9b96e', '#fce94f', + '#ff8e00', '#ff0000', '#b0008c', '#9000ff', '#0078ff', '#00ff00', '#e6ff00', '#ffff00', + '#905000', '#9b0000', '#840067', '#510090', '#0000c9', '#009b00', '#9abe00', '#ffc900' ]; }, start: function() { this.rpc("/base_calendar/calendarview/load", {"model": this.model, "view_id": this.view_id, 'toolbar': true}, this.on_loaded); @@ -132,6 +136,10 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ reload_event: function(id) { this.dataset.read_ids([id], _.keys(this.fields), this.on_events_loaded); }, + get_color: function(index) { + index = index % this.COLOR_PALETTE.length; + return this.COLOR_PALETTE[index]; + }, on_events_loaded: function(events, fn_filter, no_filter_reload) { var self = this; @@ -149,30 +157,31 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ if (this.color_field) { var filter = evt[this.color_field]; if (filter) { - //evt.color = '#dddddd'; var filter_item = { value: (typeof filter === 'object') ? filter[0] : filter, - label: (typeof filter === 'object') ? filter[1] : filter, - color: evt.color + label: (typeof filter === 'object') ? filter[1] : filter } if (typeof(fn_filter) === 'function' && !fn_filter(filter_item.value)) { continue; } - if (_.indexOf(sidebar_ids, filter_item.value) === -1) { + var filter_index = _.indexOf(sidebar_ids, filter_item.value); + if (filter_index === -1) { + evt.color = filter_item.color = this.get_color(sidebar_ids.length); sidebar_items.push(filter_item); sidebar_ids.push(filter_item.value); + } else { + evt.color = this.get_color(filter_index); } + evt.textColor = '#ffffff'; } } - /* - * TODO: check dates of type date - * if (this.fields[this.date_start]['type'] == 'date') { + if (this.fields[this.date_start]['type'] == 'date') { evt[this.date_start] = openerp.base.parse_date(evt[this.date_start]).set({hour: 9}).toString('yyyy-MM-dd HH:mm:ss'); } if (this.date_stop && evt[this.date_stop] && this.fields[this.date_stop]['type'] == 'date') { evt[this.date_stop] = openerp.base.parse_date(evt[this.date_stop]).set({hour: 17}).toString('yyyy-MM-dd HH:mm:ss'); - }*/ + } res_events.push(this.convert_event(evt)); } scheduler.parse(res_events, 'json'); From 2f9f557e185af4d0f72da7d194f12e48b2b1ed44 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 11 Aug 2011 20:12:17 +0200 Subject: [PATCH 40/67] [FIX] get rid of unsued menus and submenu bzr revid: al@openerp.com-20110811181217-y2yxdz34uswijwza --- openerp/addons/base/ir/ir.xml | 1 - openerp/addons/base/ir/ir_actions.py | 1 - openerp/osv/orm.py | 10 +--------- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index 868e405e93c..c537d265dd2 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -535,7 +535,6 @@ - diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index ea3b21807fe..7b1cb937c3d 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -284,7 +284,6 @@ class act_window(osv.osv): 'filter': fields.boolean('Filter'), 'auto_search':fields.boolean('Auto Search'), 'search_view' : fields.function(_search_view, type='text', method=True, string='Search View'), - 'menus': fields.char('Menus', size=4096), 'help': fields.text('Action description', help='Optional help text for the users with a description of the target view, such as its usage and purpose.', translate=True), diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index c93467c6052..d4a5d808990 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1767,7 +1767,7 @@ class orm_template(object): :param view_type: type of the view to return if view_id is None ('form', tree', ...) :param context: context arguments, like lang, time zone :param toolbar: true to include contextual actions - :param submenu: example (portal_project module) + :param submenu: deprecated :return: dictionary describing the composition of the requested view (including inherited views and extensions) :raise AttributeError: * if the inherited view has unknown position to work with other than 'before', 'after', 'inside', 'replace' @@ -1999,14 +1999,6 @@ class orm_template(object): result['arch'] = xarch result['fields'] = xfields - if submenu: - if context and context.get('active_id', False): - data_menu = self.pool.get('ir.ui.menu').browse(cr, user, context['active_id'], context).action - if data_menu: - act_id = data_menu.id - if act_id: - data_action = self.pool.get('ir.actions.act_window').browse(cr, user, [act_id], context)[0] - result['submenu'] = getattr(data_action, 'menus', False) if toolbar: def clean(x): x = x[2] From 18de9c065a33e6cb0e32195be0d374ec93a3e763 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP Date: Fri, 12 Aug 2011 13:10:21 +0530 Subject: [PATCH 41/67] [FIX] typo fied name lp bug: https://launchpad.net/bugs/825008 fixed bzr revid: jam@tinyerp.com-20110812074021-7cbge6mgfamim32w --- addons/project_issue/project_issue_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 23f12b3907f..86e232e91b5 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -153,7 +153,7 @@ - + From 3278222800fc084b5cafea8cd1fe2d4de79eafcd Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 10:00:51 +0200 Subject: [PATCH 42/67] [FIX] project_scrum: filters in field in override to project search view bzr revid: xmo@openerp.com-20110812080051-ozhrap5afiqunt1f --- addons/project_scrum/project_scrum_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/project_scrum/project_scrum_view.xml b/addons/project_scrum/project_scrum_view.xml index 99b74157466..aa16a62c0b9 100644 --- a/addons/project_scrum/project_scrum_view.xml +++ b/addons/project_scrum/project_scrum_view.xml @@ -573,8 +573,8 @@ - - + + From 61e9552f6dcf29003dfbb842336c752d5f94a4dd Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 10:36:10 +0200 Subject: [PATCH 43/67] [FIX] reintroduce o2m search field, aliases to CharField. Also make m2m search field an actual alias to CharField bzr revid: xmo@openerp.com-20110812083610-utduagt0np0h7rib --- addons/base/static/src/js/search.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index e88e31ebba0..4b746832a65 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -362,7 +362,8 @@ openerp.base.search.fields = new openerp.base.Registry({ 'datetime': 'openerp.base.search.DateTimeField', 'date': 'openerp.base.search.DateField', 'many2one': 'openerp.base.search.ManyToOneField', - 'many2many': 'openerp.base.search.ManyToManyField' + 'many2many': 'openerp.base.search.CharField', + 'one2many': 'openerp.base.search.CharField' }); openerp.base.search.Invalid = openerp.base.Class.extend( /** @lends openerp.base.search.Invalid# */{ /** @@ -723,11 +724,8 @@ openerp.base.search.DateField = openerp.base.search.Field.extend( /** @lends ope } }); openerp.base.search.DateTimeField = openerp.base.search.DateField.extend({ - // TODO: time? }); openerp.base.search.ManyToOneField = openerp.base.search.CharField.extend({ - // TODO: @widget - // TODO: .selection, .context, .domain init: function (view_section, field, view) { this._super(view_section, field, view); var self = this; @@ -795,12 +793,6 @@ openerp.base.search.ManyToOneField = openerp.base.search.CharField.extend({ return this._super(); } }); -/** - * m2m search field behaves pretty much exactly like a char field - * - * @class - */ -openerp.base.search.ManyToManyField = openerp.base.search.CharField.extend({}); openerp.base.search.ExtendedSearch = openerp.base.OldWidget.extend({ template: 'SearchView.extended_search', From 86a5de431bc6c59569cef680fc41ed712caa0f31 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 10:38:20 +0200 Subject: [PATCH 44/67] [FIX] don't use @string on filters inside fields in search view, use @help bzr revid: xmo@openerp.com-20110812083820-tnk2yv7kkuylg9aw --- openerp/addons/base/res/partner/partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/partner/partner_view.xml b/openerp/addons/base/res/partner/partner_view.xml index 763147fb47e..7dc4a595adf 100644 --- a/openerp/addons/base/res/partner/partner_view.xml +++ b/openerp/addons/base/res/partner/partner_view.xml @@ -344,7 +344,7 @@ - + From 4e5f4bd565bbaff2a8f89117c791de9299015e08 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 11:45:41 +0200 Subject: [PATCH 45/67] [IMP] simple style fixes bzr revid: xmo@openerp.com-20110812094541-zeb5lz6nk0jgq21y --- addons/base/static/src/js/search.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 4b746832a65..63ccec088a6 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -875,11 +875,10 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.OldWidget.extend({ this._super(); var _this = this; this.add_prop(); - this.$element.find('.searchview_extended_add_proposition').click(function (e) { + this.$element.find('.searchview_extended_add_proposition').click(function () { _this.add_prop(); }); - var delete_btn = this.$element.find('.searchview_extended_delete_group'); - delete_btn.click(function (e) { + this.$element.find('.searchview_extended_delete_group').click(function () { _this.stop(); }); }, @@ -889,7 +888,7 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.OldWidget.extend({ }).compact().value(); var choice = this.$element.find(".searchview_extended_group_choice").val(); var op = choice == "all" ? "&" : "|"; - return [].concat(choice == "none" ? ['!'] : [], + return choice == "none" ? ['!'] : [].concat( _.map(_.range(_.max([0,props.length - 1])), function() { return op; }), props); }, @@ -901,10 +900,7 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.OldWidget.extend({ parent.check_last_element(); }, set_last_group: function(is_last) { - if(is_last) - this.$element.addClass("last_group"); - else - this.$element.removeClass("last_group"); + this.$element.toggleClass('last_group', is_last); } }); @@ -927,8 +923,7 @@ openerp.base.search.ExtendedSearchProposition = openerp.base.OldWidget.extend({ this.$element.find(".searchview_extended_prop_field").change(function() { _this.changed(); }); - var delete_btn = this.$element.find('.searchview_extended_delete_prop'); - delete_btn.click(function (e) { + this.$element.find('.searchview_extended_delete_prop').click(function () { _this.stop(); }); }, From d6074e66195065581a002f865df76d192fbc8ab1 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 12:36:43 +0200 Subject: [PATCH 46/67] [IMP] move openerp.base.Widget to relevant section of the actual dogs (as a guide), remove old manual openerp.base.Widget APIDoc bzr revid: xmo@openerp.com-20110812103643-2ew32jiqdsm71jqe --- addons/base/controllers/main.py | 8 +- addons/base/static/src/js/core.js | 53 ------ doc/source/addons.rst | 291 +++++++++++------------------- doc/source/development.rst | 12 +- 4 files changed, 115 insertions(+), 249 deletions(-) diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 4f6b3ea4f70..36db03d6bba 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -772,8 +772,8 @@ class View(openerpweb.Controller): """ Parses an arbitrary string containing a domain, transforms it to either a literal domain or a :class:`openerpweb.nonliterals.Domain` - :param domain: the domain to parse, if the domain is not a string it is assumed to - be a literal domain and is returned as-is + :param domain: the domain to parse, if the domain is not a string it + is assumed to be a literal domain and is returned as-is :param session: Current OpenERP session :type session: openerpweb.openerpweb.OpenERPSession """ @@ -789,8 +789,8 @@ class View(openerpweb.Controller): """ Parses an arbitrary string containing a context, transforms it to either a literal context or a :class:`openerpweb.nonliterals.Context` - :param context: the context to parse, if the context is not a string it is assumed to - be a literal domain and is returned as-is + :param context: the context to parse, if the context is not a string it + is assumed to be a literal domain and is returned as-is :param session: Current OpenERP session :type session: openerpweb.openerpweb.OpenERPSession """ diff --git a/addons/base/static/src/js/core.js b/addons/base/static/src/js/core.js index 859c96645a1..da9b5abf3e8 100644 --- a/addons/base/static/src/js/core.js +++ b/addons/base/static/src/js/core.js @@ -373,59 +373,6 @@ openerp.base.SessionAware = openerp.base.Class.extend({ } }); -/** - * Base class for all visual components. Provides a lot of functionalities helpful - * for the management of a part of the DOM. - * - * Widget handles: - * - Rendering with QWeb. - * - Life-cycle management and parenting (when a parent is destroyed, all its children are - * destroyed too). - * - Insertion in DOM. - * - * Widget also extends SessionAware for ease of use. - * - * Guide to create implementations of the Widget class: - * ============================================== - * - * Here is a sample child class: - * - * MyWidget = openerp.base.Widget.extend({ - * // the name of the QWeb template to use for rendering - * template: "MyQWebTemplate", - * // identifier prefix, it is useful to put an obvious one for debugging - * identifier_prefix: 'my-id-prefix-', - * - * init: function(parent) { - * this._super(parent); - * // stuff that you want to init before the rendering - * }, - * start: function() { - * this._super(); - * // stuff you want to make after the rendering, `this.$element` holds a correct value - * this.$element.find(".my_button").click(/* an example of event binding * /); - * - * // if you have some asynchronous operations, it's a good idea to return - * // a promise in start() - * var promise = this.rpc(...); - * return promise; - * } - * }); - * - * Now this class can simply be used with the following syntax: - * - * var my_widget = new MyWidget(this); - * my_widget.appendTo($(".some-div")); - * - * With these two lines, the MyWidget instance was inited, rendered, it was inserted into the - * DOM inside the ".some-div" div and its events were binded. - * - * And of course, when you don't need that widget anymore, just do: - * - * my_widget.stop(); - * - * That will kill the widget in a clean way and erase its content from the dom. - */ openerp.base.Widget = openerp.base.SessionAware.extend({ /** * The name of the QWeb template that will be used for rendering. Must be diff --git a/doc/source/addons.rst b/doc/source/addons.rst index 4f371192760..7261e57ebd3 100644 --- a/doc/source/addons.rst +++ b/doc/source/addons.rst @@ -113,6 +113,98 @@ initializing the addon. Creating new standard roles --------------------------- +Widget +++++++ + +This is the base class for all visual components. It provides a number of +services for the management of a DOM subtree: + +* Rendering with QWeb + +* Parenting-child relations + +* Life-cycle management (including facilitating children destruction when a + parent object is removed) + +* DOM insertion, via jQuery-powered insertion methods. Insertion targets can + be anything the corresponding jQuery method accepts (generally selectors, + DOM nodes and jQuery objects): + + :js:func:`~openerp.base.Widget.appendTo` + Renders the widget and inserts it as the last child of the target, uses + `.appendTo()`_ + + :js:func:`~openerp.base.Widget.prependTo` + Renders the widget and inserts it as the first child of the target, uses + `.prependTo()`_ + + :js:func:`~openerp.base.Widget.insertAfter` + Renders the widget and inserts it as the preceding sibling of the target, + uses `.insertAfter()`_ + + :js:func:`~openerp.base.Widget.insertBefore` + Renders the widget and inserts it as the following sibling of the target, + uses `.insertBefore()`_ + +:js:class:`~openerp.base.Widget` inherits from +:js:class:`~openerp.base.SessionAware`, so subclasses can easily access the +RPC layers. + +Subclassing Widget +~~~~~~~~~~~~~~~~~~ + +:js:class:`~openerp.base.Widget` is subclassed in the standard manner (via the +:js:func:`~openerp.base.Class.extend` method), and provides a number of +abstract properties and concrete methods (which you may or may not want to +override). Creating a subclass looks like this: + +.. code-block:: javascript + + var MyWidget = openerp.base.Widget.extend({ + // QWeb template to use when rendering the object + template: "MyQWebTemplate", + // autogenerated id prefix, specificity helps when debugging + identifier_prefix: 'my-id-prefix-', + + init: function(parent) { + this._super(parent); + // insert code to execute before rendering, for object + // initialization + }, + start: function() { + this._super(); + // post-rendering initialization code, at this point + // ``this.$element`` has been initialized + this.$element.find(".my_button").click(/* an example of event binding * /); + + // if ``start`` is asynchronous, return a promise object so callers + // know when the object is done initializing + return this.rpc(/* … */) + } + }); + +The new class can then be used in the following manner: + +.. code-block:: javascript + + // Create the instance + var my_widget = new MyWidget(this); + // Render and insert into DOM + my_widget.appendTo(".some-div"); + +After these two lines have executed (and any promise returned by ``appendTo`` +has been resolved if needed), the widget is ready to be used. + +If the widget is not needed anymore (because it's transient), simply terminate +it: + +.. code-block:: javascript + + my_widget.stop(); + +will unbind all DOM events, remove the widget's content from the DOM and +destroy all widget data. + Views +++++ @@ -236,193 +328,6 @@ replace ``addons`` by the directory in which your own addon lives. and run ``nosetests addons`` instead of the ``unit2`` command, the result should be exactly the same. -APIs ----- - -Javascript -++++++++++ - -.. js:class:: openerp.base.Widget(view, node) - - :param openerp.base.Controller view: The view to which the widget belongs - :param Object node: the ``fields_view_get`` descriptor for the widget - - .. js:attribute:: $element - - The widget's root element as jQuery object - -.. js:class:: openerp.base.DataSet(session, model) - - :param openerp.base.Session session: the RPC session object - :param String model: the model managed by this dataset - - The DataSet is the abstraction for a sequence of records stored in - database. - - It provides interfaces for reading records based on search - criteria, and for selecting and fetching records based on - activated ids. - - .. js:function:: fetch([offset][, limit]) - - :param Number offset: the index from which records should start - being returned (section) - :param Number limit: the maximum number of records to return - :returns: the dataset instance it was called on - - Asynchronously fetches the records selected by the DataSet's - domain and context, in the provided sort order if any. - - Only fetches the fields selected by the DataSet. - - On success, triggers :js:func:`on_fetch` - - .. js:function:: on_fetch(records, event) - - :param Array records: an array of - :js:class:`openerp.base.DataRecord` - matching the DataSet's selection - :param event: a data holder letting the event handler fetch - meta-informations about the event. - :type event: OnFetchEvent - - Fired after :js:func:`fetch` is done fetching the records - selected by the DataSet. - - .. js:function:: active_ids - - :returns: the dataset instance it was called on - - Asynchronously fetches the active records for this DataSet. - - On success, triggers :js:func:`on_active_ids` - - .. js:function:: on_active_ids(records) - - :param Array records: an array of - :js:class:`openerp.base.DataRecord` - matching the currently active ids - - Fired after :js:func:`active_ids` fetched the records matching - the DataSet's active ids. - - .. js:function:: active_id - - :returns: the dataset instance in was called on - - Asynchronously fetches the current active record. - - On success, triggers :js:func:`on_active_id` - - .. js:function:: on_active_id(record) - - :param Object record: the record fetched by - :js:func:`active_id`, or ``null`` - :type record: openerp.base.DataRecord - - Fired after :js:func:`active_id` fetched the record matching - the dataset's active id - - .. js:function:: set(options) - - :param Object options: the options to set on the dataset - :type options: DataSetOptions - :returns: the dataset instance it was called on - - Configures the data set by setting various properties on it - - .. js:function:: prev - - :returns: the dataset instance it was called on - - Activates the id preceding the current one in the active ids - sequence of the dataset. - - If the current active id is at the start of the sequence, - wraps back to the last id of the sequence. - - .. js:function:: next - - :returns: the dataset instance it was called on - - Activates the id following the current one in the active ids - sequence. - - If the current active id is the last of the sequence, wraps - back to the beginning of the active ids sequence. - - .. js:function:: select(ids) - - :param Array ids: the identifiers to activate on the dataset - :returns: the dataset instance it was called on - - Activates all the ids specified in the dataset, resets the - current active id to be the first id of the new sequence. - - The internal order will be the same as the ids list provided. - - .. js:function:: get_active_ids - - :returns: the list of current active ids for the dataset - - .. js:function:: activate(id) - - :param Number id: the id to activate - :returns: the dataset instance it was called on - - Activates the id provided in the dataset. If no ids are - selected, selects the id in the dataset. - - If ids are already selected and the provided id is not in that - selection, raises an error. - - .. js:function:: get_active_id - - :returns: the dataset's current active id - -Ad-hoc objects and structural types -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -These objects are not associated with any specific class, they're -generally literal objects created on the spot. Names are merely -convenient ways to refer to them and their properties. - -.. js:class:: OnFetchEvent - - .. js:attribute:: context - - The context used for the :js:func:`fetch` call (domain set on - the :js:class:`openerp.base.DataSet` when ``fetch`` was - called) - - .. js:attribute:: domain - - The domain used for the :js:func:`fetch` call - - .. js:attribute:: limit - - The limit with which the original :js:func:`fetch` call was - performed - - .. js:attribute:: offset - - The offset with which the original :js:func:`fetch` call was - performed - - .. js:attribute:: sort - - The sorting criteria active on the - :js:class:`openerp.base.DataSet` when :js:func:`fetch` was - called - -.. js:class:: DataSetOptions - - .. js:attribute:: context - - .. js:attribute:: domain - - .. js:attribute:: sort - Python ++++++ @@ -499,3 +404,15 @@ Python .. _promise object: http://api.jquery.com/deferred.promise/ + +.. _.appendTo(): + http://api.jquery.com/appendTo/ + +.. _.prependTo(): + http://api.jquery.com/prependTo/ + +.. _.insertAfter(): + http://api.jquery.com/insertAfter/ + +.. _.insertBefore(): + http://api.jquery.com/insertBefore/ diff --git a/doc/source/development.rst b/doc/source/development.rst index bfb176cb5c5..85fbebcceb3 100644 --- a/doc/source/development.rst +++ b/doc/source/development.rst @@ -374,11 +374,13 @@ Deletion can be overridden by replacing the calls :js:func:`~openerp.base.DataSet.unlink` in order to remove the records entirely. -.. note:: the list-wise deletion button (next to the record addition button) - simply proxies to :js:func:`~openerp.base.ListView.do_delete` after - obtaining all selected record ids, but it is possible to override it - alone by replacing - :js:func:`~openerp.base.ListView.do_delete_selected`. +.. note:: + + the list-wise deletion button (next to the record addition button) + simply proxies to :js:func:`~openerp.base.ListView.do_delete` after + obtaining all selected record ids, but it is possible to override it + alone by replacing + :js:func:`~openerp.base.ListView.do_delete_selected`. Internal API Doc ---------------- From 2c2fe7a691fb31a72a19662750dda0422105c4e5 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Fri, 12 Aug 2011 16:08:18 +0530 Subject: [PATCH 47/67] [FIX] Remove conflicts. bzr revid: sma@tinyerp.com-20110812103818-q8wet6opinckiv1a --- addons/base/static/src/js/chrome.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 1ff49eb773a..92e3c298420 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -4,7 +4,7 @@ openerp.base.chrome = function(openerp) { -<<<<<<< TREE + openerp.base.Session = openerp.base.Widget.extend( /** @lends openerp.base.Session# */{ /** * @constructs @@ -273,8 +273,6 @@ openerp.base.Session = openerp.base.Widget.extend( /** @lends openerp.base.Sessi } }); -======= ->>>>>>> MERGE-SOURCE openerp.base.Notification = openerp.base.Widget.extend({ init: function(parent, element_id) { this._super(parent, element_id); From ee581f8247fa3d0df9ace2505f6977f48fcd0257 Mon Sep 17 00:00:00 2001 From: "sma (Tiny)" Date: Fri, 12 Aug 2011 17:14:02 +0530 Subject: [PATCH 48/67] [IMP] simplify code of padding function in date formatting. bzr revid: sma@tinyerp.com-20110812114402-u9u8vxxp1fnonq3m --- addons/base/static/src/js/formats.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/js/formats.js b/addons/base/static/src/js/formats.js index fb1ada544a4..eb5ff6d8368 100644 --- a/addons/base/static/src/js/formats.js +++ b/addons/base/static/src/js/formats.js @@ -83,7 +83,7 @@ openerp.base.parse_time = function(str) { */ var zpad = function(str, size) { str = "" + str; - return new Array(size - str.length).join('0') + str; + return new Array(_.range(size - str.length)).join('0') + str; }; /** From 964ae3f196f1b61bbb8b924cbd3862af41b7fd12 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 14:11:27 +0200 Subject: [PATCH 49/67] [FIX] stupid bug introduced in revision xmo@openerp.com-20110810141545-k98nvymjy5r7sslb bzr revid: xmo@openerp.com-20110812121127-m50vupb36bv0tnjy --- addons/base/static/src/js/formats.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base/static/src/js/formats.js b/addons/base/static/src/js/formats.js index fb1ada544a4..074cabe5eee 100644 --- a/addons/base/static/src/js/formats.js +++ b/addons/base/static/src/js/formats.js @@ -83,7 +83,7 @@ openerp.base.parse_time = function(str) { */ var zpad = function(str, size) { str = "" + str; - return new Array(size - str.length).join('0') + str; + return new Array(size - str.length + 1).join('0') + str; }; /** From 5b4f60bcd046aa7da54195c614665b171b570f5b Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Fri, 12 Aug 2011 18:36:24 +0530 Subject: [PATCH 50/67] [IMP]project_issue: Add new field(days_since_creation) as a diffrence between create_date and today() bzr revid: ron@tinyerp.com-20110812130624-34exduud974omfhn --- addons/project_issue/project_issue.py | 8 ++++++++ addons/project_issue/project_issue_view.xml | 1 + 2 files changed, 9 insertions(+) diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 628ae886b50..794ee59e2ad 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -116,6 +116,12 @@ class project_issue(crm.crm_case, osv.osv): hours = cal_obj.interval_hours_get(cr, uid, issue.project_id.resource_calendar_id.id, datetime.strptime(issue.create_date, '%Y-%m-%d %H:%M:%S'), datetime.strptime(issue.date_closed, '%Y-%m-%d %H:%M:%S')) + elif field in ['days_since_creation']: + if issue.create_date: + days_since_creation = datetime.today() - datetime.strptime(issue.create_date, "%Y-%m-%d %H:%M:%S") + res[issue.id][field] = days_since_creation.days + continue + elif field in ['inactivity_days']: res[issue.id][field] = 0 if issue.date_action_last: @@ -177,6 +183,8 @@ class project_issue(crm.crm_case, osv.osv): 'active': fields.boolean('Active', required=False), 'create_date': fields.datetime('Creation Date', readonly=True,select=True), 'write_date': fields.datetime('Update Date', readonly=True), + 'days_since_creation': fields.function(_compute_day, string='Days since create date', \ + multi='compute_day', type="float", help="Difference in days between create date and current date"), 'date_deadline': fields.date('Deadline'), 'section_id': fields.many2one('crm.case.section', 'Sales Team', \ select=True, help='Sales team to which Case belongs to.\ diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 86e232e91b5..1d1474ab255 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -162,6 +162,7 @@ + From 672a71be9384755f9e29d43eaaf316c85d200467 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Fri, 12 Aug 2011 18:59:33 +0530 Subject: [PATCH 51/67] [IMP]project_issue: Improved in fields bzr revid: ron@tinyerp.com-20110812132933-cqdqnise609ubesr --- addons/project_issue/project_issue.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 794ee59e2ad..12bfa85b283 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -183,8 +183,8 @@ class project_issue(crm.crm_case, osv.osv): 'active': fields.boolean('Active', required=False), 'create_date': fields.datetime('Creation Date', readonly=True,select=True), 'write_date': fields.datetime('Update Date', readonly=True), - 'days_since_creation': fields.function(_compute_day, string='Days since create date', \ - multi='compute_day', type="float", help="Difference in days between create date and current date"), + 'days_since_creation': fields.function(_compute_day, string='Days since creation date', \ + multi='compute_day', type="integer", help="Difference in days between creation date and current date"), 'date_deadline': fields.date('Deadline'), 'section_id': fields.many2one('crm.case.section', 'Sales Team', \ select=True, help='Sales team to which Case belongs to.\ From a4f9eb398b39978be8c35a8eb2e1eb561ef26ecf Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Fri, 12 Aug 2011 15:31:08 +0200 Subject: [PATCH 52/67] [REM] listview columns filtering on a name being present: don't try to read buttons with a name, it's kinda stupid bzr revid: xmo@openerp.com-20110812133108-5bync0jgo0krn0u4 --- addons/base/static/src/js/list.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 3032e702a73..a0440221520 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -772,7 +772,7 @@ openerp.base.ListView.List = openerp.base.Class.extend( /** @lends openerp.base. var old_index = this.dataset.index; this.dataset.index = record_index; read_p = this.dataset.read_index( - _.filter(_.pluck(this.columns, 'name'), _.identity), + _.pluck(_(this.columns).filter(function (r) {return r.tag === 'field';}), 'name'), function (record) { var form_record = self.transform_record(record); self.rows.splice(record_index, 1, form_record); @@ -1035,7 +1035,7 @@ openerp.base.ListView.Groups = openerp.base.Class.extend( /** @lends openerp.bas page = this.datagroup.openable ? this.page : view.page; dataset.read_slice({ - fields: _.filter(_.pluck(_.select(this.columns, function(x) {return x.tag == "field";}), 'name'), _.identity), + fields: _.pluck(_.select(this.columns, function(x) {return x.tag == "field"}), 'name'), offset: page * limit, limit: limit }, function (records) { From a0c1d305e1dc6635ce3e7c0124cb48752420695b Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Fri, 12 Aug 2011 17:14:50 +0200 Subject: [PATCH 53/67] [ADD] account_invoice_be: added the support of structured communication on outgoing invoices (bba communication), made by Noviat. bzr revid: qdp-launchpad@openerp.com-20110812151450-2nq5sre7ili1xnpq --- addons/account_invoice_be/__init__.py | 24 ++ addons/account_invoice_be/__openerp__.py | 55 +++++ .../account_invoice_view.xml | 23 ++ addons/account_invoice_be/i18n/fr.po | 26 +++ addons/account_invoice_be/i18n/nl.po | 26 +++ addons/account_invoice_be/invoice.py | 215 ++++++++++++++++++ addons/account_invoice_be/partner.py | 48 ++++ addons/account_invoice_be/partner_view.xml | 20 ++ 8 files changed, 437 insertions(+) create mode 100644 addons/account_invoice_be/__init__.py create mode 100644 addons/account_invoice_be/__openerp__.py create mode 100644 addons/account_invoice_be/account_invoice_view.xml create mode 100644 addons/account_invoice_be/i18n/fr.po create mode 100644 addons/account_invoice_be/i18n/nl.po create mode 100644 addons/account_invoice_be/invoice.py create mode 100644 addons/account_invoice_be/partner.py create mode 100644 addons/account_invoice_be/partner_view.xml diff --git a/addons/account_invoice_be/__init__.py b/addons/account_invoice_be/__init__.py new file mode 100644 index 00000000000..176d1b9a904 --- /dev/null +++ b/addons/account_invoice_be/__init__.py @@ -0,0 +1,24 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import partner +import invoice diff --git a/addons/account_invoice_be/__openerp__.py b/addons/account_invoice_be/__openerp__.py new file mode 100644 index 00000000000..c8d08d02a81 --- /dev/null +++ b/addons/account_invoice_be/__openerp__.py @@ -0,0 +1,55 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Add support for Belgian structured communication to Invoices', + 'version': '1.2', + 'license': 'AGPL-3', + 'author': 'Noviat', + 'category' : 'Localization/Accounting', + 'description': """ + +Belgian localisation for in- and outgoing invoices (prereq to account_coda): + - Rename 'reference' field labels to 'Communication' + - Add support for Belgian Structured Communication + +A Structured Communication can be generated automatically on outgoing invoices according to the following algorithms: + 1) Random : +++RRR/RRRR/RRRDD+++ + R..R = Random Digits, DD = Check Digits + 2) Date : +++DOY/YEAR/SSSDD+++ + DOY = Day of the Year, SSS = Sequence Number, DD = Check Digits) + 3) Customer Reference +++RRR/RRRR/SSSDDD+++ + R..R = Customer Reference without non-numeric characters, SSS = Sequence Number, DD = Check Digits) + +The preferred type of Structured Communication and associated Algorithm can be specified on the Partner records. +A 'random' Structured Communication will generated if no algorithm is specified on the Partner record. + + """, + 'depends': ['account', 'account_cancel'], + 'demo_xml': [], + 'init_xml': [], + 'update_xml' : [ + 'partner_view.xml', + 'account_invoice_view.xml', + ], + 'active': False, + 'installable': True,} diff --git a/addons/account_invoice_be/account_invoice_view.xml b/addons/account_invoice_be/account_invoice_view.xml new file mode 100644 index 00000000000..8cabe036dfb --- /dev/null +++ b/addons/account_invoice_be/account_invoice_view.xml @@ -0,0 +1,23 @@ + + + + + + + account.invoice.form.inherit + account.invoice + form + + + + + + + + + + + + + diff --git a/addons/account_invoice_be/i18n/fr.po b/addons/account_invoice_be/i18n/fr.po new file mode 100644 index 00000000000..f6f88f0c9a0 --- /dev/null +++ b/addons/account_invoice_be/i18n/fr.po @@ -0,0 +1,26 @@ +# French translation of openobject-addons. +# This file contains the translation of the following modules: +# * l10n_be_extra +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: support@noviat.be\n" +"POT-Creation-Date: 2011-01-16 17:06:14.002000\n" +"PO-Revision-Date: 2011-01-16 17:06:14.002000\n" +"Last-Translator: Luc De Meyer (Noviat nv/sa)\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. module: l10n_be_extra +#: field:account.invoice,reference:0 +msgid "Communication" +msgstr "Communication" + +#. module: l10n_be_extra +#: field:account.invoice,reference_type:0 +msgid "Communication Type" +msgstr "Type de communication" + diff --git a/addons/account_invoice_be/i18n/nl.po b/addons/account_invoice_be/i18n/nl.po new file mode 100644 index 00000000000..42221219bbe --- /dev/null +++ b/addons/account_invoice_be/i18n/nl.po @@ -0,0 +1,26 @@ +# Dutch translation of openobject-addons. +# This file contains the translation of the following modules: +# * l10n_be_extra +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: support@noviat.be\n" +"POT-Creation-Date: 2011-01-16 17:05:57.465000\n" +"PO-Revision-Date: 2011-01-16 17:05:57.465000\n" +"Last-Translator: Luc De Meyer (Noviat nv/sa)\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. module: l10n_be_extra +#: field:account.invoice,reference:0 +msgid "Communication" +msgstr "Mededeling" + +#. module: l10n_be_extra +#: field:account.invoice,reference_type:0 +msgid "Communication Type" +msgstr "Type mededeling" + diff --git a/addons/account_invoice_be/invoice.py b/addons/account_invoice_be/invoice.py new file mode 100644 index 00000000000..6aea22376fc --- /dev/null +++ b/addons/account_invoice_be/invoice.py @@ -0,0 +1,215 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Copyright (c) 2011 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import re, time, random +from osv import fields, osv +from tools.translate import _ +import netsvc +logger=netsvc.Logger() + +""" +account.invoice object: + - Add support for Belgian structured communication + - Rename 'reference' field labels to 'Communication' +""" + +class account_invoice(osv.osv): + _inherit = 'account.invoice' + + def _get_reference_type(self, cursor, user, context=None): + """Add BBA Structured Communication Type and change labels from 'reference' into 'communication' """ + res = super(account_invoice, self)._get_reference_type(cursor, user, + context=context) + res[[i for i,x in enumerate(res) if x[0] == 'none'][0]] = ('none', 'Free Communication') + res.append(('bba', 'BBA Structured Communication')) + #logger.notifyChannel('addons.'+self._name, netsvc.LOG_WARNING, 'reference_type = %s' %res ) + return res + + def check_bbacomm(self, val): + supported_chars = '0-9+*/ ' + pattern = re.compile('[^' + supported_chars + ']') + if pattern.findall(val or ''): + return False + bbacomm = re.sub('\D', '', val or '') + if len(bbacomm) == 12: + base = int(bbacomm[:10]) + mod = base % 97 or 97 + if mod == int(bbacomm[-2:]): + return True + return False + + def _check_communication(self, cr, uid, ids): + for inv in self.browse(cr, uid, ids): + if inv.reference_type == 'bba': + return self.check_bbacomm(inv.reference) + return True + + def onchange_partner_id(self, cr, uid, ids, type, partner_id, + date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False): + result = super(account_invoice, self).onchange_partner_id(cr, uid, ids, type, partner_id, + date_invoice, payment_term, partner_bank_id, company_id) +# reference_type = self.default_get(cr, uid, ['reference_type'])['reference_type'] +# logger.notifyChannel('addons.'+self._name, netsvc.LOG_WARNING, 'partner_id %s' % partner_id) + reference = False + reference_type = 'none' + if partner_id: + if (type == 'out_invoice'): + reference_type = self.pool.get('res.partner').browse(cr, uid, partner_id).out_inv_comm_type + if reference_type: + algorithm = self.pool.get('res.partner').browse(cr, uid, partner_id).out_inv_comm_algorithm + if not algorithm: + algorithm = 'random' + reference = self.generate_bbacomm(cr, uid, ids, type, reference_type, algorithm, partner_id, '')['value']['reference'] + res_update = { + 'reference_type': reference_type, + 'reference': reference, + } + result['value'].update(res_update) + return result + + def generate_bbacomm(self, cr, uid, ids, type, reference_type, algorithm, partner_id, reference): + partner_obj = self.pool.get('res.partner') + reference = reference or '' + if (type == 'out_invoice'): + if reference_type == 'bba': + if not algorithm: + if partner_id: + algorithm = partner_obj.browse(cr, uid, partner_id).out_inv_comm_algorithm + if not algorithm: + if not algorithm: + algorithm = 'random' + if algorithm == 'date': + if not self.check_bbacomm(reference): + doy = time.strftime('%j') + year = time.strftime('%Y') + seq = '001' + seq_ids = self.search(cr, uid, + [('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), + ('reference', 'like', '+++%s/%s/%%' % (doy, year))], order='reference') + if seq_ids: + prev_seq = int(self.browse(cr, uid, seq_ids[-1]).reference[12:15]) + if prev_seq < 999: + seq = '%03d' % (prev_seq + 1) + else: + raise osv.except_osv(_('Warning!'), + _('The daily maximum of outgoing invoices with an automatically generated BBA Structured Communications has been exceeded!' \ + '\nPlease create manually a unique BBA Structured Communication.')) + bbacomm = doy + year + seq + base = int(bbacomm) + mod = base % 97 or 97 + reference = '+++%s/%s/%s%02d+++' % (doy, year, seq, mod) + elif algorithm == 'partner_ref': + if not self.check_bbacomm(reference): + partner_ref = self.pool.get('res.partner').browse(cr, uid, partner_id).ref + partner_ref_nr = re.sub('\D', '', partner_ref or '') + if (len(partner_ref_nr) < 3) or (len(partner_ref_nr) > 7): + raise osv.except_osv(_('Warning!'), + _('The Partner should have a 3-7 digit Reference Number for the generation of BBA Structured Communications!' \ + '\nPlease correct the Partner record.')) + else: + partner_ref_nr = partner_ref_nr.ljust(7, '0') + seq = '001' + seq_ids = self.search(cr, uid, + [('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), + ('reference', 'like', '+++%s/%s/%%' % (partner_ref_nr[:3], partner_ref_nr[3:]))], order='reference') + if seq_ids: + prev_seq = int(self.browse(cr, uid, seq_ids[-1]).reference[12:15]) + if prev_seq < 999: + seq = '%03d' % (prev_seq + 1) + else: + raise osv.except_osv(_('Warning!'), + _('The daily maximum of outgoing invoices with an automatically generated BBA Structured Communications has been exceeded!' \ + '\nPlease create manually a unique BBA Structured Communication.')) + bbacomm = partner_ref_nr + seq + base = int(bbacomm) + mod = base % 97 or 97 + reference = '+++%s/%s/%s%02d+++' % (partner_ref_nr[:3], partner_ref_nr[3:], seq, mod) + elif algorithm == 'random': + if not self.check_bbacomm(reference): + base = random.randint(1, 9999999999) + bbacomm = str(base).rjust(7, '0') + base = int(bbacomm) + mod = base % 97 or 97 + mod = str(mod).rjust(2, '0') + reference = '+++%s/%s/%s%s+++' % (bbacomm[:3], bbacomm[3:7], bbacomm[7:], mod) + else: + raise osv.except_osv(_('Error!'), + _("Unsupported Structured Communication Type Algorithm '%s' !" \ + "\nPlease contact your OpenERP support channel.") % algorithm) + return {'value': {'reference': reference}} + + def create(self, cr, uid, vals, context=None): + if vals.has_key('reference_type'): + reference_type = vals['reference_type'] + if reference_type == 'bba': + if vals.has_key('reference'): + bbacomm = vals['reference'] + else: + raise osv.except_osv(_('Warning!'), + _('Empty BBA Structured Communication!' \ + '\nPlease fill in a unique BBA Structured Communication.')) + if self.check_bbacomm(bbacomm): + reference = re.sub('\D', '', bbacomm) + vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++' + same_ids = self.search(cr, uid, + [('type', '=', 'out_invoice'), ('reference_type', '=', 'bba'), + ('reference', '=', vals['reference'])]) + if same_ids: + raise osv.except_osv(_('Warning!'), + _('The BBA Structured Communication has already been used!' \ + '\nPlease create manually a unique BBA Structured Communication.')) + return super(account_invoice, self).create(cr, uid, vals, context=context) + + def write(self, cr, uid, ids, vals, context={}): + for inv in self.browse(cr, uid, ids, context): + if vals.has_key('reference_type'): + reference_type = vals['reference_type'] + else: + reference_type = inv.reference_type or '' + if reference_type == 'bba': + if vals.has_key('reference'): + bbacomm = vals['reference'] + else: + bbacomm = inv.reference or '' + if self.check_bbacomm(bbacomm): + reference = re.sub('\D', '', bbacomm) + vals['reference'] = '+++' + reference[0:3] + '/' + reference[3:7] + '/' + reference[7:] + '+++' + same_ids = self.search(cr, uid, + [('id', '!=', inv.id), ('type', '=', 'out_invoice'), + ('reference_type', '=', 'bba'), ('reference', '=', vals['reference'])]) + if same_ids: + raise osv.except_osv(_('Warning!'), + _('The BBA Structured Communication has already been used!' \ + '\nPlease create manually a unique BBA Structured Communication.')) + return super(account_invoice, self).write(cr, uid, ids, vals, context) + + _columns = { + 'reference': fields.char('Communication', size=64, help="The partner reference of this invoice."), + 'reference_type': fields.selection(_get_reference_type, 'Communication Type', + required=True), + } + + _constraints = [ + (_check_communication, 'Invalid BBA Structured Communication !', ['Communication']), + ] + +account_invoice() diff --git a/addons/account_invoice_be/partner.py b/addons/account_invoice_be/partner.py new file mode 100644 index 00000000000..2794b81670c --- /dev/null +++ b/addons/account_invoice_be/partner.py @@ -0,0 +1,48 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# Created by Luc De Meyer +# Copyright (c) 2010 Noviat nv/sa (www.noviat.be). All rights reserved. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import fields, osv +import time +from tools.translate import _ +import netsvc +logger=netsvc.Logger() + +class res_partner(osv.osv): + """ add field to indicate default 'Communication Type' on customer invoices """ + _inherit = 'res.partner' + + def _get_comm_type(self, cr, uid, context=None): + res = self.pool.get('account.invoice')._get_reference_type(cr, uid,context=context) + return res + + _columns = { + 'out_inv_comm_type': fields.selection(_get_comm_type, 'Communication Type', change_default=True, + help='Select Default Communication Type for Outgoing Invoices.' ), + 'out_inv_comm_algorithm': fields.selection([ + ('random','Random'), + ('date','Date'), + ('partner_ref','Customer Reference'), + ], 'Communication Algorithm', + help='Select Algorithm to generate the Structured Communication on Outgoing Invoices.' ), + } +res_partner() diff --git a/addons/account_invoice_be/partner_view.xml b/addons/account_invoice_be/partner_view.xml new file mode 100644 index 00000000000..7489322a665 --- /dev/null +++ b/addons/account_invoice_be/partner_view.xml @@ -0,0 +1,20 @@ + + + + + + + res.partner.inv_comm_type.form.inherit + res.partner + form + + + + + + + + + + + From 5e92ffeaccab8b0234c5757ed6ade4998e42fd88 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Fri, 12 Aug 2011 17:28:12 +0200 Subject: [PATCH 54/67] [IMP] account_invoice_l10nbe: better naming of previously named account_invoice_be module bzr revid: qdp-launchpad@openerp.com-20110812152812-d3jp9j7a82wr3w3d --- addons/{account_invoice_be => account_invoice_l10nbe}/__init__.py | 0 .../{account_invoice_be => account_invoice_l10nbe}/__openerp__.py | 0 .../account_invoice_view.xml | 0 addons/{account_invoice_be => account_invoice_l10nbe}/i18n/fr.po | 0 addons/{account_invoice_be => account_invoice_l10nbe}/i18n/nl.po | 0 addons/{account_invoice_be => account_invoice_l10nbe}/invoice.py | 0 addons/{account_invoice_be => account_invoice_l10nbe}/partner.py | 0 .../partner_view.xml | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename addons/{account_invoice_be => account_invoice_l10nbe}/__init__.py (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/__openerp__.py (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/account_invoice_view.xml (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/i18n/fr.po (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/i18n/nl.po (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/invoice.py (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/partner.py (100%) rename addons/{account_invoice_be => account_invoice_l10nbe}/partner_view.xml (100%) diff --git a/addons/account_invoice_be/__init__.py b/addons/account_invoice_l10nbe/__init__.py similarity index 100% rename from addons/account_invoice_be/__init__.py rename to addons/account_invoice_l10nbe/__init__.py diff --git a/addons/account_invoice_be/__openerp__.py b/addons/account_invoice_l10nbe/__openerp__.py similarity index 100% rename from addons/account_invoice_be/__openerp__.py rename to addons/account_invoice_l10nbe/__openerp__.py diff --git a/addons/account_invoice_be/account_invoice_view.xml b/addons/account_invoice_l10nbe/account_invoice_view.xml similarity index 100% rename from addons/account_invoice_be/account_invoice_view.xml rename to addons/account_invoice_l10nbe/account_invoice_view.xml diff --git a/addons/account_invoice_be/i18n/fr.po b/addons/account_invoice_l10nbe/i18n/fr.po similarity index 100% rename from addons/account_invoice_be/i18n/fr.po rename to addons/account_invoice_l10nbe/i18n/fr.po diff --git a/addons/account_invoice_be/i18n/nl.po b/addons/account_invoice_l10nbe/i18n/nl.po similarity index 100% rename from addons/account_invoice_be/i18n/nl.po rename to addons/account_invoice_l10nbe/i18n/nl.po diff --git a/addons/account_invoice_be/invoice.py b/addons/account_invoice_l10nbe/invoice.py similarity index 100% rename from addons/account_invoice_be/invoice.py rename to addons/account_invoice_l10nbe/invoice.py diff --git a/addons/account_invoice_be/partner.py b/addons/account_invoice_l10nbe/partner.py similarity index 100% rename from addons/account_invoice_be/partner.py rename to addons/account_invoice_l10nbe/partner.py diff --git a/addons/account_invoice_be/partner_view.xml b/addons/account_invoice_l10nbe/partner_view.xml similarity index 100% rename from addons/account_invoice_be/partner_view.xml rename to addons/account_invoice_l10nbe/partner_view.xml From 1f61d5c2e29901a87507af250cf09af61c5a2936 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Sun, 14 Aug 2011 04:45:01 +0000 Subject: [PATCH 55/67] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20110814044430-2o7xhfo8phslwwbm bzr revid: launchpad_translations_on_behalf_of_openerp-20110814044501-phnxu5mn3aex6dzp --- addons/account/i18n/cs.po | 278 +++++++++++++++++---------- addons/product_margin/i18n/cs.po | 50 ++--- debian/po/bg.po | 4 +- debian/po/ca.po | 4 +- debian/po/cs.po | 4 +- debian/po/da.po | 4 +- debian/po/de.po | 4 +- debian/po/el.po | 4 +- debian/po/en_GB.po | 4 +- debian/po/es.po | 4 +- debian/po/es_CL.po | 4 +- debian/po/es_EC.po | 4 +- debian/po/fa.po | 4 +- debian/po/fi.po | 4 +- debian/po/fr.po | 4 +- debian/po/gl.po | 4 +- debian/po/he.po | 4 +- debian/po/hr.po | 4 +- debian/po/hu.po | 4 +- debian/po/it.po | 4 +- debian/po/ja.po | 4 +- debian/po/ko.po | 4 +- debian/po/lv.po | 4 +- debian/po/mn.po | 4 +- debian/po/nb.po | 4 +- debian/po/nl.po | 4 +- debian/po/pl.po | 4 +- debian/po/pt.po | 4 +- debian/po/pt_BR.po | 4 +- debian/po/ro.po | 4 +- debian/po/ru.po | 4 +- debian/po/sk.po | 4 +- debian/po/sq.po | 4 +- debian/po/sr.po | 4 +- debian/po/sv.po | 4 +- debian/po/tr.po | 4 +- debian/po/uk.po | 4 +- debian/po/vi.po | 4 +- debian/po/zh_CN.po | 4 +- debian/po/zh_TW.po | 4 +- openerp/addons/base/i18n/af.po | 4 +- openerp/addons/base/i18n/am.po | 4 +- openerp/addons/base/i18n/ar.po | 4 +- openerp/addons/base/i18n/bg.po | 4 +- openerp/addons/base/i18n/bs.po | 4 +- openerp/addons/base/i18n/ca.po | 4 +- openerp/addons/base/i18n/cs.po | 8 +- openerp/addons/base/i18n/da.po | 4 +- openerp/addons/base/i18n/de.po | 4 +- openerp/addons/base/i18n/el.po | 4 +- openerp/addons/base/i18n/en_GB.po | 4 +- openerp/addons/base/i18n/es.po | 4 +- openerp/addons/base/i18n/es_CL.po | 4 +- openerp/addons/base/i18n/es_EC.po | 4 +- openerp/addons/base/i18n/et.po | 4 +- openerp/addons/base/i18n/eu.po | 4 +- openerp/addons/base/i18n/fa.po | 4 +- openerp/addons/base/i18n/fa_AF.po | 4 +- openerp/addons/base/i18n/fi.po | 18 +- openerp/addons/base/i18n/fr.po | 4 +- openerp/addons/base/i18n/gl.po | 4 +- openerp/addons/base/i18n/he.po | 4 +- openerp/addons/base/i18n/hr.po | 4 +- openerp/addons/base/i18n/hu.po | 4 +- openerp/addons/base/i18n/hy.po | 4 +- openerp/addons/base/i18n/id.po | 4 +- openerp/addons/base/i18n/is.po | 4 +- openerp/addons/base/i18n/it.po | 4 +- openerp/addons/base/i18n/ja.po | 4 +- openerp/addons/base/i18n/ko.po | 4 +- openerp/addons/base/i18n/lt.po | 4 +- openerp/addons/base/i18n/lv.po | 4 +- openerp/addons/base/i18n/mk.po | 4 +- openerp/addons/base/i18n/mn.po | 4 +- openerp/addons/base/i18n/nb.po | 4 +- openerp/addons/base/i18n/nl.po | 4 +- openerp/addons/base/i18n/nl_BE.po | 4 +- openerp/addons/base/i18n/pl.po | 4 +- openerp/addons/base/i18n/pt.po | 4 +- openerp/addons/base/i18n/pt_BR.po | 4 +- openerp/addons/base/i18n/ro.po | 4 +- openerp/addons/base/i18n/ru.po | 4 +- openerp/addons/base/i18n/sk.po | 4 +- openerp/addons/base/i18n/sl.po | 4 +- openerp/addons/base/i18n/sq.po | 4 +- openerp/addons/base/i18n/sr.po | 4 +- openerp/addons/base/i18n/sr@latin.po | 4 +- openerp/addons/base/i18n/sv.po | 4 +- openerp/addons/base/i18n/th.po | 4 +- openerp/addons/base/i18n/tlh.po | 4 +- openerp/addons/base/i18n/tr.po | 4 +- openerp/addons/base/i18n/uk.po | 4 +- openerp/addons/base/i18n/ur.po | 4 +- openerp/addons/base/i18n/vi.po | 4 +- openerp/addons/base/i18n/zh_CN.po | 6 +- openerp/addons/base/i18n/zh_TW.po | 4 +- 96 files changed, 404 insertions(+), 320 deletions(-) diff --git a/addons/account/i18n/cs.po b/addons/account/i18n/cs.po index 7cd2ad13673..b5151f9ab0d 100644 --- a/addons/account/i18n/cs.po +++ b/addons/account/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-07-15 02:11+0000\n" -"Last-Translator: Chronos \n" +"PO-Revision-Date: 2011-08-13 17:32+0000\n" +"Last-Translator: Jan B. Krejčí \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-07-16 04:56+0000\n" -"X-Generator: Launchpad (build 13405)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" "X-Poedit-Language: Czech\n" #. module: account @@ -40,13 +40,12 @@ msgid "" "You cannot remove/deactivate an account which is set as a property to any " "Partner." msgstr "" -"Nemůžete odstranit/deaktivovat účet, který je nastaven jako vlastnost " -"některého partnera" +"Nemůžete odstranit/deaktivovat účet, který je přiřazen některému partnerovi" #. module: account #: view:account.move.reconcile:0 msgid "Journal Entry Reconcile" -msgstr "" +msgstr "Likvidace záznamu v knize" #. module: account #: field:account.installer.modules,account_voucher:0 @@ -71,12 +70,12 @@ msgstr "Zbytek" #: code:addons/account/invoice.py:793 #, python-format msgid "Please define sequence on invoice journal" -msgstr "Prosím nadefinujte sekvenci knihy faktur" +msgstr "Prosím nadefinujte číselnou řadu knihy faktur" #. module: account #: constraint:account.period:0 msgid "Error ! The duration of the Period(s) is/are invalid. " -msgstr "Chyba! Délku období (s) je / jsou neplatné. " +msgstr "Chyba! Neplatná délka období. " #. module: account #: field:account.analytic.line,currency_id:0 @@ -91,12 +90,12 @@ msgstr "Definice potomků" #. module: account #: model:ir.model,name:account.model_report_aged_receivable msgid "Aged Receivable Till Today" -msgstr "Splatné pohledávky do dnešního dne" +msgstr "Pohledávky splatné ke dnešku" #. module: account #: field:account.partner.ledger,reconcil:0 msgid "Include Reconciled Entries" -msgstr "" +msgstr "Zahrnout zlikvidované záznamy" #. module: account #: view:account.pl.report:0 @@ -104,13 +103,13 @@ msgid "" "The Profit and Loss report gives you an overview of your company profit and " "loss in a single document" msgstr "" -"Výkaz zisku a ztrát Vám dá přehled o zisku a ztrátě společnosti v jediném " +"Výkaz zisku a ztráty Vám dá přehled o zisku či ztrátě společnosti v jediném " "dokumentu" #. module: account #: model:process.transition,name:account.process_transition_invoiceimport0 msgid "Import from invoice or payment" -msgstr "Importovat z faktur nebo plateb" +msgstr "Importovat z faktury nebo platby" #. module: account #: model:ir.model,name:account.model_wizard_multi_charts_accounts @@ -128,17 +127,19 @@ msgid "" "If you unreconciliate transactions, you must also verify all the actions " "that are linked to those transactions because they will not be disabled" msgstr "" +"Pokud zrušíte likvidaci transakcí, musíte také zkontrolovat všechny akce, " +"které se k nim váží, protože tyto nebudou zrušeny" #. module: account #: report:account.tax.code.entries:0 msgid "Accounting Entries-" -msgstr "Účetní zápisy-" +msgstr "Účetní záznamy -" #. module: account #: code:addons/account/account.py:1305 #, python-format msgid "You can not delete posted movement: \"%s\"!" -msgstr "Nemůžet smazat vložené pohyby: \"%s\"!" +msgstr "Nemůžet smazat zaúčtované pohyby: \"%s\"!" #. module: account #: report:account.invoice:0 @@ -154,7 +155,7 @@ msgstr "Původ" #: view:account.move.line.reconcile:0 #: view:account.move.line.reconcile.writeoff:0 msgid "Reconcile" -msgstr "Vyrovnání" +msgstr "Likvidace" #. module: account #: field:account.bank.statement.line,ref:0 @@ -169,7 +170,7 @@ msgstr "Odkaz" #. module: account #: view:account.open.closed.fiscalyear:0 msgid "Choose Fiscal Year " -msgstr "Vyberte Daňový rok " +msgstr "VYberte fiskální rok " #. module: account #: help:account.payment.term,active:0 @@ -178,7 +179,7 @@ msgid "" "term without removing it." msgstr "" "Pokud je pole nastaveno na Nepravda, umožní vám to skrýt platební období bez " -"jejího odebrání." +"jeho odebrání." #. module: account #: code:addons/account/invoice.py:1436 @@ -195,12 +196,12 @@ msgstr "Zdroj účtu" #. module: account #: model:ir.actions.act_window,name:account.act_acc_analytic_acc_5_report_hr_timesheet_invoice_journal msgid "All Analytic Entries" -msgstr "Všechny analytické položky" +msgstr "Všechny analytické záznamy" #. module: account #: model:ir.actions.act_window,name:account.action_view_created_invoice_dashboard msgid "Invoices Created Within Past 15 Days" -msgstr "" +msgstr "Faktury vytvořené v posledních 15 dnech" #. module: account #: selection:account.account.type,sign:0 @@ -211,7 +212,7 @@ msgstr "Záporné" #: code:addons/account/wizard/account_move_journal.py:95 #, python-format msgid "Journal: %s" -msgstr "Deník: %s" +msgstr "Kniha: %s" #. module: account #: help:account.analytic.journal,type:0 @@ -220,6 +221,9 @@ msgid "" "invoice) to create analytic entries, OpenERP will look for a matching " "journal of the same type." msgstr "" +"Udává typ analytické knihy. Pokud mají být pro dokument (např. fakturu) " +"vytvořeny analytické položky, OpenERP bude hledet vyhovující knihu shodného " +"typu." #. module: account #: model:ir.actions.act_window,name:account.action_account_tax_template_form @@ -239,13 +243,13 @@ msgid "" "No period defined for this date: %s !\n" "Please create a fiscal year." msgstr "" -"Není určena perioda pro tento datum: %s !\n" -"Prosíme vytvořte daňový rok." +"Pro toto datum: %s není definováno období.\n" +"Prosím vytvořte fiskální rok." #. module: account #: model:ir.model,name:account.model_account_move_line_reconcile_select msgid "Move line reconcile select" -msgstr "" +msgstr "Výběr likvidace pohybu" #. module: account #: help:account.model.line,sequence:0 @@ -253,6 +257,8 @@ msgid "" "The sequence field is used to order the resources from lower sequences to " "higher ones" msgstr "" +"Pole \"sequence\" je použito pro řazení záznamů od nejnižšího čísla k " +"nejvyššímu" #. module: account #: help:account.tax.code,notprintable:0 @@ -261,17 +267,19 @@ msgid "" "Check this box if you don't want any VAT related to this Tax Code to appear " "on invoices" msgstr "" +"Zaškrtněte toto pole, pokud nechcete, aby se ve fakturách objevovalo k " +"tomuto daňovému kódu žádné DPH" #. module: account #: code:addons/account/invoice.py:1224 #, python-format msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)" -msgstr "Faktura '%s' je částečně zaplacená: %s%s of %s%s (%s%s zbývá)" +msgstr "Faktura '%s' je zaplacená částečně: %s%s z %s%s (zbývá %s%s)" #. module: account #: model:process.transition,note:account.process_transition_supplierentriesreconcile0 msgid "Accounting entries are an input of the reconciliation." -msgstr "Účetní položky jsou vstupem vyrovnání." +msgstr "Účetní záznamy jsou vstupem likvidace" #. module: account #: model:ir.ui.menu,name:account.menu_finance_management_belgian_reports @@ -282,12 +290,12 @@ msgstr "Belgické výkazy" #: code:addons/account/account_move_line.py:1182 #, python-format msgid "You can not add/modify entries in a closed journal." -msgstr "Nemůžete přida/upravit položky v uzavřeném deníku." +msgstr "Nemůžete přidávat/upravovat položky v uzavřené knize." #. module: account #: view:account.bank.statement:0 msgid "Calculated Balance" -msgstr "Spočítat rozvahu" +msgstr "Vypočtený zůstatek" #. module: account #: model:ir.actions.act_window,name:account.action_account_use_model_create_entry @@ -299,7 +307,7 @@ msgstr "Ruční opakování" #. module: account #: view:account.fiscalyear.close.state:0 msgid "Close Fiscalyear" -msgstr "Uzavřít finační rok" +msgstr "Uzávěrka fiskálního roku" #. module: account #: field:account.automatic.reconcile,allow_write_off:0 @@ -314,13 +322,13 @@ msgstr "Vyberte období pro analýzu" #. module: account #: view:account.move.line:0 msgid "St." -msgstr "" +msgstr "Sv." #. module: account #: code:addons/account/invoice.py:532 #, python-format msgid "Invoice line account company does not match with invoice company." -msgstr "" +msgstr "Firma řádku faktury nesouhlasí s firmou faktury" #. module: account #: field:account.journal.column,field:0 @@ -333,6 +341,8 @@ msgid "" "Installs localized accounting charts to match as closely as possible the " "accounting needs of your company based on your country." msgstr "" +"Nainstaluje lokalizované účtové rozvrhy, co nejlépe odpovídající účetním " +"potřebám vaší firmy a vaší země." #. module: account #: code:addons/account/wizard/account_move_journal.py:63 @@ -343,11 +353,15 @@ msgid "" "You can create one in the menu: \n" "Configuration/Financial Accounting/Accounts/Journals." msgstr "" +"Pro tuto firmu neexistuje účetní kniha typu %s.\n" +"\n" +"Můžete ji vytvořit v nabídce:\n" +"Konfigurace/Finanční účetnictví/Účty/Knihy" #. module: account #: model:ir.model,name:account.model_account_unreconcile msgid "Account Unreconcile" -msgstr "" +msgstr "Zrušit likvidaci" #. module: account #: view:product.product:0 @@ -377,6 +391,9 @@ msgid "" "OpenERP. Journal items are created by OpenERP if you use Bank Statements, " "Cash Registers, or Customer/Supplier payments." msgstr "" +"Tento pohled je používán účetními pro hromadné vytváření záznamů. OpenERP " +"vytvoří záznamy, když použijete bankovní výpisy, pokladnu nebo platby " +"klientů či dodavatelům." #. module: account #: model:ir.model,name:account.model_account_tax_template @@ -397,12 +414,12 @@ msgstr "Datum vytvoření" #. module: account #: selection:account.journal,type:0 msgid "Purchase Refund" -msgstr "" +msgstr "Dobropis přijatý" #. module: account #: selection:account.journal,type:0 msgid "Opening/Closing Situation" -msgstr "" +msgstr "Počáteční/konečný stav" #. module: account #: help:account.journal,currency:0 @@ -412,7 +429,7 @@ msgstr "Měna použitá k zadání příkazu" #. module: account #: field:account.open.closed.fiscalyear,fyear_id:0 msgid "Fiscal Year to Open" -msgstr "Finanční rok k otevření" +msgstr "Fiskální rok k otevření" #. module: account #: help:account.journal,sequence_id:0 @@ -420,11 +437,12 @@ msgid "" "This field contains the informatin related to the numbering of the journal " "entries of this journal." msgstr "" +"Toto pole obsahuje informace související s číslováním záznamů této knihy." #. module: account #: field:account.journal,default_debit_account_id:0 msgid "Default Debit Account" -msgstr "Výchozí dluhový účet" +msgstr "Výchozí debetní účet" #. module: account #: view:account.move:0 @@ -439,7 +457,7 @@ msgstr "Kladný" #. module: account #: view:account.move.line.unreconcile.select:0 msgid "Open For Unreconciliation" -msgstr "Otevřít pro vyrovnání" +msgstr "Otevřít pro zrušení likvidace" #. module: account #: field:account.fiscal.position.template,chart_template_id:0 @@ -460,6 +478,9 @@ msgid "" "it comes to 'Printed' state. When all transactions are done, it comes in " "'Done' state." msgstr "" +"Když je vytvořen záznam v knize, jeho stav je \"Draft\". Když je vytištěn " +"report, stav se změní na \"Printed\". Když jsou hotovy všechny transakce, " +"záznam přejde do stavu \"Done\"." #. module: account #: model:ir.actions.act_window,help:account.action_account_tax_chart @@ -469,6 +490,10 @@ msgid "" "amount of each area of the tax declaration for your country. It’s presented " "in a hierarchical structure, which can be modified to fit your needs." msgstr "" +"Daňový přehled je strom reprezentující strukturu daňových kódů či případů, " +"který zobrazuje aktuální daňovou situaci. Přehled zobrazuje výši všech " +"oblastí daňového přiznání pro vaši zemi. Je strukturován hierarchicky a může " +"být podle potřeby upraven." #. module: account #: view:account.analytic.line:0 @@ -502,7 +527,7 @@ msgstr "" #: field:validate.account.move,journal_id:0 #, python-format msgid "Journal" -msgstr "Deník" +msgstr "Kniha" #. module: account #: model:ir.model,name:account.model_account_invoice_confirm @@ -517,7 +542,7 @@ msgstr "Nadřazený cíl" #. module: account #: field:account.bank.statement,account_id:0 msgid "Account used in this journal" -msgstr "Účet použitý v tomto deníku" +msgstr "Účet použitý v této knize" #. module: account #: help:account.aged.trial.balance,chart_account_id:0 @@ -536,17 +561,17 @@ msgstr "Účet použitý v tomto deníku" #: help:account.report.general.ledger,chart_account_id:0 #: help:account.vat.declaration,chart_account_id:0 msgid "Select Charts of Accounts" -msgstr "" +msgstr "Vyberte účtový rozvrh" #. module: account #: view:product.product:0 msgid "Purchase Taxes" -msgstr "Daně nákupu" +msgstr "Nákupní daně" #. module: account #: model:ir.model,name:account.model_account_invoice_refund msgid "Invoice Refund" -msgstr "Vrácení faktury" +msgstr "Dobropis vydaný" #. module: account #: report:account.overdue:0 @@ -556,13 +581,13 @@ msgstr "" #. module: account #: field:account.automatic.reconcile,unreconciled:0 msgid "Not reconciled transactions" -msgstr "Žádné vyrovnané transakce" +msgstr "Nezlikvidované transakce" #. module: account #: code:addons/account/account_cash_statement.py:349 #, python-format msgid "CashBox Balance is not matching with Calculated Balance !" -msgstr "" +msgstr "Stav pokladny neodpovídá vypočtenému zůstatku!" #. module: account #: view:account.fiscal.position:0 @@ -575,12 +600,12 @@ msgstr "Mapování daně" #: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state #: model:ir.ui.menu,name:account.menu_wizard_fy_close_state msgid "Close a Fiscal Year" -msgstr "Uzavřít finanční rok" +msgstr "Uzavřít fiskální rok" #. module: account #: model:process.transition,note:account.process_transition_confirmstatementfromdraft0 msgid "The accountant confirms the statement." -msgstr "Účetní potvrzuje příkaz" +msgstr "Účetní potvrzuje výpis." #. module: account #: selection:account.balance.report,display_account:0 @@ -596,12 +621,12 @@ msgstr "Vše" #. module: account #: field:account.invoice.report,address_invoice_id:0 msgid "Invoice Address Name" -msgstr "Jméno adresy faktury" +msgstr "Název příjemce faktury" #. module: account #: selection:account.installer,period:0 msgid "3 Monthly" -msgstr "3 měsíce" +msgstr "Kvartální" #. module: account #: view:account.unreconcile.reconcile:0 @@ -609,6 +634,8 @@ msgid "" "If you unreconciliate transactions, you must also verify all the actions " "that are linked to those transactions because they will not be disable" msgstr "" +"Pokud zrušíte likvidaci transakcí, musíte také zkontrolovat všechny akce, " +"které s nimi souvisejí, protože tyto nebudou zrušeny" #. module: account #: view:analytic.entries.report:0 @@ -618,7 +645,7 @@ msgstr " 30 dní " #. module: account #: field:ir.sequence,fiscal_ids:0 msgid "Sequences" -msgstr "Posloupnosti" +msgstr "Číselné řady" #. module: account #: view:account.fiscal.position.template:0 @@ -628,12 +655,12 @@ msgstr "Mapování daní" #. module: account #: report:account.central.journal:0 msgid "Centralized Journal" -msgstr "Centralizovaný deník" +msgstr "Centralizovaná kniha" #. module: account #: sql_constraint:account.sequence.fiscalyear:0 msgid "Main Sequence must be different from current !" -msgstr "Hlavní posloupnost musí být odlišná od aktuální !" +msgstr "Hlavní číselná řada musí být odlišná od současné!" #. module: account #: field:account.invoice.tax,tax_amount:0 @@ -645,18 +672,18 @@ msgstr "Částka kódu daně" #: code:addons/account/installer.py:434 #, python-format msgid "SAJ" -msgstr "" +msgstr "KFV" #. module: account #: help:account.bank.statement,balance_end_real:0 msgid "closing balance entered by the cashbox verifier" -msgstr "" +msgstr "konečný zůstatek zadaný ověřovatelem pokladny" #. module: account #: view:account.period:0 #: view:account.period.close:0 msgid "Close Period" -msgstr "Ukončit období" +msgstr "Uzavřít období" #. module: account #: model:ir.model,name:account.model_account_common_partner_report @@ -666,19 +693,19 @@ msgstr "" #. module: account #: field:account.fiscalyear.close,period_id:0 msgid "Opening Entries Period" -msgstr "Období otvíracích položek" +msgstr "Období počátečních zůstatků" #. module: account #: model:ir.model,name:account.model_account_journal_period msgid "Journal Period" -msgstr "Období deníku" +msgstr "Období knihy" #. module: account #: code:addons/account/account_move_line.py:723 #: code:addons/account/account_move_line.py:767 #, python-format msgid "To reconcile the entries company should be the same for all entries" -msgstr "" +msgstr "Při likvidaci záznamů by u všech měla být stejná firma" #. module: account #: view:account.account:0 @@ -690,12 +717,12 @@ msgstr "" #: model:ir.actions.act_window,name:account.action_aged_receivable #, python-format msgid "Receivable Accounts" -msgstr "Účety pohledávek" +msgstr "Pohledávky" #. module: account #: model:ir.model,name:account.model_account_report_general_ledger msgid "General Ledger Report" -msgstr "ˇ" +msgstr "Hlavní kniha" #. module: account #: view:account.invoice:0 @@ -705,17 +732,17 @@ msgstr "Znovu otevřít" #. module: account #: view:account.use.model:0 msgid "Are you sure you want to create entries?" -msgstr "Chcete opravdu vytvořit položky?" +msgstr "Opravdu chcete vytvořit záznamy?" #. module: account #: selection:account.bank.accounts.wizard,account_type:0 msgid "Check" -msgstr "Zkontrolovat" +msgstr "Šekový" #. module: account #: field:account.partner.reconcile.process,today_reconciled:0 msgid "Partners Reconciled Today" -msgstr "" +msgstr "Dnes likvidovaní partneři" #. module: account #: selection:account.payment.term.line,value:0 @@ -864,6 +891,7 @@ msgstr "Vytvořit 3-měsíční období" #. module: account #: report:account.overdue:0 +#: report:account.aged_trial_balance:0 msgid "Due" msgstr "Do" @@ -916,7 +944,7 @@ msgstr "" #. module: account #: model:process.node,note:account.process_node_accountingstatemententries0 msgid "Bank statement" -msgstr "Bankovní příkaz" +msgstr "Bankovní výpis" #. module: account #: field:account.analytic.line,move_id:0 @@ -955,6 +983,10 @@ msgstr "Položky modelu" #: field:account.journal,code:0 #: report:account.partner.balance:0 #: field:account.period,code:0 +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 msgid "Code" msgstr "Kód" @@ -1072,7 +1104,7 @@ msgstr "Začátek období" #. module: account #: model:process.transition,name:account.process_transition_confirmstatementfromdraft0 msgid "Confirm statement" -msgstr "Potvrdit příkaz" +msgstr "Potvrdit výpis" #. module: account #: field:account.fiscal.position.tax,tax_dest_id:0 @@ -1276,6 +1308,7 @@ msgstr "Analýza položek deníku" #. module: account #: model:ir.ui.menu,name:account.next_id_22 +#: report:account.aged_trial_balance:0 msgid "Partners" msgstr "Partneři" @@ -1286,7 +1319,7 @@ msgstr "Partneři" #: model:process.node,name:account.process_node_bankstatement0 #: model:process.node,name:account.process_node_supplierbankstatement0 msgid "Bank Statement" -msgstr "Bankovní příkaz" +msgstr "Bankovní výpis" #. module: account #: view:res.partner:0 @@ -1373,6 +1406,9 @@ msgid "" "entry per accounting document: invoice, refund, supplier payment, bank " "statements, etc." msgstr "" +"Záznam v knize se skládá z položek, kde každá je debetní nebo kreditní " +"transakcí. OpenERP automaticky vytvoří jeden záznam v knize pro každý účetní " +"dokument: fakturu, dobropis, platbu dodavateli, bankovní výpis atd." #. module: account #: view:account.entries.report:0 @@ -1475,7 +1511,7 @@ msgstr "Jít na dalšího partnera" #. module: account #: view:account.bank.statement:0 msgid "Search Bank Statements" -msgstr "Hledat bankovní příkazy" +msgstr "Hledat v bankovních výpisech" #. module: account #: sql_constraint:account.model.line:0 @@ -1499,7 +1535,7 @@ msgstr "" #: view:account.bank.statement:0 #: field:account.bank.statement,line_ids:0 msgid "Statement lines" -msgstr "Řádky příkazů" +msgstr "Řádky výpisu" #. module: account #: model:ir.actions.act_window,help:account.action_bank_statement_tree @@ -1511,6 +1547,10 @@ msgid "" "the Payment column of a line, you can press F1 to open the reconciliation " "form." msgstr "" +"Bankovní výpis je souhrn všech transakcí v daném období na bankovním účtu. " +"Počáteční zůstatek je vyplněn automaticky, konečný byste měli najít na " +"výpisu z banky. Když jste ve sloupci Platba v položce, stiskem F1 vyvoláte " +"likvidaci." #. module: account #: report:account.analytic.account.cost_ledger:0 @@ -1704,7 +1744,7 @@ msgstr "Tyto období se mohou překrývat." #. module: account #: model:process.node,name:account.process_node_draftstatement0 msgid "Draft statement" -msgstr "Návrh příkazu" +msgstr "Rozpracovaný výpis" #. module: account #: view:account.tax:0 @@ -1916,6 +1956,8 @@ msgid "" "be with same name as statement name. This allows the statement entries to " "have the same references than the statement itself" msgstr "" +"Jestliže zadáte název jiný než \"/\", budou se stejně jmenovat i vytvořené " +"účetní záznamy." #. module: account #: model:ir.actions.act_window,name:account.action_account_unreconcile @@ -1948,7 +1990,7 @@ msgstr "Účty k vyrovnání" #. module: account #: model:process.transition,note:account.process_transition_filestatement0 msgid "Import of the statement in the system from an electronic file" -msgstr "" +msgstr "Import výpisu v elektronické podobě." #. module: account #: model:process.node,name:account.process_node_importinvoice0 @@ -2125,8 +2167,13 @@ msgstr "Šablona výrobku" #: report:account.third_party_ledger_other:0 #: report:account.vat.declaration:0 #: model:ir.model,name:account.model_account_fiscalyear +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 +#: report:account.aged_trial_balance:0 msgid "Fiscal Year" -msgstr "Přestupný rok(Fiscal Year)" +msgstr "Účetní období" #. module: account #: help:account.aged.trial.balance,fiscalyear_id:0 @@ -2145,17 +2192,17 @@ msgstr "Přestupný rok(Fiscal Year)" #: help:account.report.general.ledger,fiscalyear_id:0 #: help:account.vat.declaration,fiscalyear_id:0 msgid "Keep empty for all open fiscal year" -msgstr "Nechat prázdné pro všechny otevřené finanční pozice" +msgstr "Pro vybrání všech účetních období nechte pole prázdné" #. module: account #: model:ir.model,name:account.model_account_move msgid "Account Entry" -msgstr "Položka účtu" +msgstr "Účetní záznam" #. module: account #: field:account.sequence.fiscalyear,sequence_main_id:0 msgid "Main Sequence" -msgstr "Hlavní posloupnosti" +msgstr "Hlavní číselná řada" #. module: account #: field:account.invoice,payment_term:0 @@ -2467,7 +2514,7 @@ msgstr "" #: model:ir.actions.act_window,name:account.action_bank_statement_tree #: model:ir.ui.menu,name:account.menu_bank_statement_tree msgid "Bank Statements" -msgstr "Bankovní příkazy" +msgstr "Bankovní výpisy" #. module: account #: selection:account.tax.template,applicable_type:0 @@ -2651,7 +2698,7 @@ msgstr "" #: help:account.bank.statement,account_id:0 msgid "" "used in statement reconciliation domain, but shouldn't be used elswhere." -msgstr "" +msgstr "použito v rámci likvidace výpisu, nemělo by se používat jinde" #. module: account #: field:account.invoice.tax,base_amount:0 @@ -3822,6 +3869,8 @@ msgid "" "the system on document validation (invoices, bank statements...) and will be " "created in 'Posted' state." msgstr "" +"Ručně vytvořené účetní záznamy jsou typicky založeny jako nezaúčtované. Toto " +"jde pro vybrané knihy přeskakovat, takže založené záznamy se rovnou zaúčtují." #. module: account #: code:addons/account/account_analytic_line.py:90 @@ -3920,7 +3969,7 @@ msgstr "Režim zobrazení" #. module: account #: model:process.node,note:account.process_node_importinvoice0 msgid "Statement from invoice or payment" -msgstr "" +msgstr "Výpis z faktury nebo platby" #. module: account #: view:account.payment.term.line:0 @@ -3952,7 +4001,7 @@ msgstr "Statistiky faktur" #. module: account #: model:process.transition,note:account.process_transition_paymentorderreconcilation0 msgid "Bank statements are entered in the system." -msgstr "" +msgstr "Bankovní výpisy jsou zadány do systému." #. module: account #: code:addons/account/wizard/account_reconcile.py:133 @@ -4301,7 +4350,7 @@ msgstr "Jste si jisti?" #. module: account #: help:account.move.line,statement_id:0 msgid "The bank statement used for bank reconciliation" -msgstr "" +msgstr "Bankovní výpis použitý pro likvidaci banky" #. module: account #: model:process.transition,note:account.process_transition_suppliercustomerinvoice0 @@ -4511,6 +4560,11 @@ msgstr "" #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 #: field:account.vat.declaration,target_move:0 +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 +#: report:account.aged_trial_balance:0 msgid "Target Moves" msgstr "Cílové pohyby" @@ -4627,6 +4681,8 @@ msgstr "Výsledek vyrovnání" #: view:account.bs.report:0 #: model:ir.actions.act_window,name:account.action_account_bs_report #: model:ir.ui.menu,name:account.menu_account_bs_report +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 msgid "Balance Sheet" msgstr "Zůstatkový list" @@ -4663,7 +4719,7 @@ msgstr "" #. module: account #: view:account.tax.template:0 msgid "Compute Code (if type=code)" -msgstr "" +msgstr "Vypočítat kód (pokud typ = kód)" #. module: account #: selection:account.analytic.journal,type:0 @@ -4854,7 +4910,7 @@ msgstr "Analytické účetnictví" #: selection:account.invoice.report,type:0 #: selection:report.invoice.created,type:0 msgid "Customer Refund" -msgstr "" +msgstr "Dobropis vystavený" #. module: account #: view:account.account:0 @@ -5555,7 +5611,7 @@ msgstr "Šablony účtů" #. module: account #: report:account.vat.declaration:0 msgid "Tax Statement" -msgstr "Daňový příkaz" +msgstr "Daňový výkaz" #. module: account #: model:ir.model,name:account.model_res_company @@ -6018,6 +6074,8 @@ msgid "" "corresponds with the entries (or records) of that account in your accounting " "system." msgstr "" +"Likvidace banky spočívá v kontrole, že bankovní výpis odpovídá záznamům v " +"účetnictví." #. module: account #: model:process.node,note:account.process_node_draftstatement0 @@ -6301,6 +6359,8 @@ msgstr "" #: report:account.general.journal:0 #: report:account.invoice:0 #: report:account.partner.balance:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 msgid "Total:" msgstr "Celkem:" @@ -6374,7 +6434,7 @@ msgstr "Dokončeno" #. module: account #: model:process.transition,note:account.process_transition_invoicemanually0 msgid "A statement with manual entries becomes a draft statement." -msgstr "" +msgstr "Výpis s ručně zadanými položkami je nastaven jako rozpracovaný." #. module: account #: view:account.aged.trial.balance:0 @@ -6409,7 +6469,7 @@ msgstr "" #. module: account #: model:ir.ui.menu,name:account.menu_menu_Bank_process msgid "Statements Reconciliation" -msgstr "Vyrovnání příkazů" +msgstr "Likvidace výpisů" #. module: account #: report:account.invoice:0 @@ -6531,7 +6591,7 @@ msgstr "Nadřazená šablona účtu" #: field:account.move.line,statement_id:0 #: model:process.process,name:account.process_process_statementprocess0 msgid "Statement" -msgstr "Příkaz" +msgstr "Výpis" #. module: account #: help:account.journal,default_debit_account_id:0 @@ -6627,7 +6687,7 @@ msgstr "" #. module: account #: model:ir.model,name:account.model_account_bank_statement_line msgid "Bank Statement Line" -msgstr "" +msgstr "Řádek bankovního výpisu" #. module: account #: field:account.automatic.reconcile,date2:0 @@ -7327,6 +7387,9 @@ msgid "" "will see the taxes with codes related to your legal statement according to " "your country." msgstr "" +"Tento daňový přehled slouží k vytváření pravidelných daňových výkazů. " +"Uvidíte v něm daně a jejich kódy příslušející k daňovým přiznáním podle vaší " +"země." #. module: account #: view:account.installer.modules:0 @@ -7492,6 +7555,11 @@ msgstr "Měna společnosti" #: report:account.partner.balance:0 #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 +#: report:account.aged_trial_balance:0 msgid "Chart of Account" msgstr "" @@ -7607,6 +7675,10 @@ msgstr "Deník vrácení peněz" #: report:account.general.journal:0 #: report:account.general.ledger_landscape:0 #: report:account.partner.balance:0 +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 msgid "Filter By" msgstr "Filtrovat podle" @@ -7663,7 +7735,7 @@ msgstr "Mezivýsledek" #. module: account #: view:account.vat.declaration:0 msgid "Print Tax Statement" -msgstr "Tisknout daňový příkaz" +msgstr "Tisk daňového výkazu" #. module: account #: view:account.model.line:0 @@ -7810,7 +7882,7 @@ msgstr "" msgid "" "The amount of the voucher must be the same amount as the one on the " "statement line" -msgstr "" +msgstr "Částka na dokladu musí odpovídat částce v řádku výpisu" #. module: account #: code:addons/account/account_move_line.py:1137 @@ -7869,7 +7941,7 @@ msgstr "Měna" #: help:account.bank.statement.line,sequence:0 msgid "" "Gives the sequence order when displaying a list of bank statement lines." -msgstr "" +msgstr "Určuje pořadí v zobrazení seznamu řádků výpisu" #. module: account #: model:process.transition,note:account.process_transition_validentries0 @@ -8146,6 +8218,7 @@ msgstr "" #. module: account #: field:account.aged.trial.balance,direction_selection:0 +#: report:account.aged_trial_balance:0 msgid "Analysis Direction" msgstr "" @@ -8262,6 +8335,10 @@ msgstr "Nechejte prázdné pro použití příjmového účtu" #: report:account.third_party_ledger_other:0 #: field:report.account.receivable,balance:0 #: field:report.aged.receivable,balance:0 +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 msgid "Balance" msgstr "Zůstatek" @@ -8273,6 +8350,10 @@ msgstr "Ručně nebo automaticky zadáno do systému" #. module: account #: report:account.account.balance:0 #: report:account.general.ledger_landscape:0 +#: report:account.balancesheet.horizontal:0 +#: report:account.balancesheet:0 +#: report:pl.account.horizontal:0 +#: report:pl.account:0 msgid "Display Account" msgstr "Zobrazit účet" @@ -8337,7 +8418,7 @@ msgstr "" #: code:addons/account/account_bank_statement.py:391 #, python-format msgid "Cannot delete bank statement(s) which are already confirmed !" -msgstr "" +msgstr "Nelze smazat bankovní výpis, který už byl potvrzen!" #. module: account #: code:addons/account/wizard/account_automatic_reconcile.py:152 @@ -8408,7 +8489,7 @@ msgstr "" #. module: account #: model:ir.actions.act_window,name:account.act_account_journal_2_account_bank_statement msgid "Bank statements" -msgstr "Bankovní příkazy" +msgstr "Bankovní výpisy" #. module: account #: help:account.addtmpl.wizard,cparent_id:0 @@ -8575,6 +8656,7 @@ msgstr "Vstupní předplatné" #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 #: field:account.vat.declaration,date_from:0 +#: report:account.aged_trial_balance:0 msgid "Start Date" msgstr "Počáteční datum" @@ -9045,6 +9127,7 @@ msgstr "Stavy" #: field:report.account.sales,amount_total:0 #: field:report.account_type.sales,amount_total:0 #: field:report.invoice.created,amount_total:0 +#: report:account.aged_trial_balance:0 msgid "Total" msgstr "Celkem" @@ -9125,13 +9208,13 @@ msgstr "t" #. module: account #: model:ir.actions.act_window,name:account.action_bank_statement_draft_tree msgid "Draft statements" -msgstr "" +msgstr "Rozpracované výpisy" #. module: account #: model:process.transition,note:account.process_transition_statemententries0 msgid "" "Manual or automatic creation of payment entries according to the statements" -msgstr "" +msgstr "Manuální nebo automatické vytvoření záznamů o platbách podle výpisů" #. module: account #: view:account.invoice:0 @@ -9363,7 +9446,7 @@ msgstr "Další volitelná měna, pokud je položka více-měnová." #: model:process.transition,note:account.process_transition_invoiceimport0 msgid "" "Import of the statement in the system from a supplier or customer invoice" -msgstr "" +msgstr "Import výpisu do systému z vydané nebo přijaté faktury" #. module: account #: model:ir.ui.menu,name:account.menu_finance_periodical_processing_billing @@ -9543,6 +9626,7 @@ msgstr "account.addtmpl.wizard" #: field:account.partner.ledger,result_selection:0 #: report:account.third_party_ledger:0 #: report:account.third_party_ledger_other:0 +#: report:account.aged_trial_balance:0 msgid "Partner's" msgstr "Partneři" @@ -9867,10 +9951,6 @@ msgstr "" #~ msgid "Taxed Amount" #~ msgstr "Zdaněná částka" -#, python-format -#~ msgid "The statement balance is incorrect !\n" -#~ msgstr "Zůstatek příkaz není správný !\n" - #, python-format #~ msgid "Invoice " #~ msgstr "Faktura " @@ -9878,3 +9958,7 @@ msgstr "" #, python-format #~ msgid "is validated." #~ msgstr "není platné." + +#, python-format +#~ msgid "The statement balance is incorrect !\n" +#~ msgstr "Nesprávný zůstatek výpisu!\n" diff --git a/addons/product_margin/i18n/cs.po b/addons/product_margin/i18n/cs.po index d1cbb07b7a1..6d2f2c8f769 100644 --- a/addons/product_margin/i18n/cs.po +++ b/addons/product_margin/i18n/cs.po @@ -7,30 +7,30 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2010-08-03 09:09+0000\n" -"Last-Translator: Mantavya Gajjar (Open ERP) \n" +"PO-Revision-Date: 2011-08-13 17:31+0000\n" +"Last-Translator: Jan B. Krejčí \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-04-29 05:36+0000\n" -"X-Generator: Launchpad (build 12758)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: product_margin #: view:product.product:0 #: field:product.product,turnover:0 msgid "Turnover" -msgstr "" +msgstr "Obrat" #. module: product_margin #: field:product.product,expected_margin_rate:0 msgid "Expected Margin (%)" -msgstr "" +msgstr "Očekávaná marže (%)" #. module: product_margin #: field:product.margin,from_date:0 msgid "From" -msgstr "" +msgstr "Od" #. module: product_margin #: help:product.product,sale_expected:0 @@ -46,7 +46,7 @@ msgstr "" #. module: product_margin #: field:product.margin,to_date:0 msgid "To" -msgstr "" +msgstr "Do" #. module: product_margin #: field:product.product,date_to:0 @@ -62,18 +62,18 @@ msgstr "Od data" #: selection:product.margin,invoice_state:0 #: selection:product.product,invoice_state:0 msgid "Draft, Open and Paid" -msgstr "" +msgstr "Draft, Otevřený a Zaplacený" #. module: product_margin #: field:product.product,purchase_avg_price:0 #: field:product.product,sale_avg_price:0 msgid "Avg. Unit Price" -msgstr "" +msgstr "Prům. jedn. cena" #. module: product_margin #: model:ir.module.module,shortdesc:product_margin.module_meta_information msgid "Margins in Product" -msgstr "" +msgstr "Marže produktu" #. module: product_margin #: model:ir.model,name:product_margin.model_product_product @@ -83,13 +83,13 @@ msgstr "" #. module: product_margin #: view:product.product:0 msgid "Catalog Price" -msgstr "" +msgstr "Katalogová cena" #. module: product_margin #: selection:product.margin,invoice_state:0 #: selection:product.product,invoice_state:0 msgid "Paid" -msgstr "" +msgstr "Zaplaceno" #. module: product_margin #: help:product.product,sales_gap:0 @@ -118,7 +118,7 @@ msgstr "" #. module: product_margin #: help:product.product,normal_cost:0 msgid "Sum of Multification of Cost price and quantity of Supplier Invoices" -msgstr "" +msgstr "Suma součinu nákladové ceny a množství v přijatých fakturách" #. module: product_margin #: help:product.product,expected_margin:0 @@ -134,12 +134,12 @@ msgstr "Kritérium analýzy" #: view:product.product:0 #: field:product.product,total_cost:0 msgid "Total Cost" -msgstr "" +msgstr "Celkové náklady" #. module: product_margin #: field:product.product,expected_margin:0 msgid "Expected Margin" -msgstr "" +msgstr "Očekávaná marže" #. module: product_margin #: view:product.product:0 @@ -155,7 +155,7 @@ msgstr "" #. module: product_margin #: help:product.product,expected_margin_rate:0 msgid "Expected margin * 100 / Expected Sale" -msgstr "" +msgstr "Očekávaná marže * 100 / Očekávaný prodej" #. module: product_margin #: help:product.product,sale_avg_price:0 @@ -166,18 +166,18 @@ msgstr "Prům. cena ve faktůrách zákazníků)" #: help:product.product,total_cost:0 msgid "" "Sum of Multification of Invoice price and quantity of Supplier Invoices " -msgstr "" +msgstr "Suma součinu fakturované ceny a množství na přijatých fakturách " #. module: product_margin #: field:product.margin,invoice_state:0 #: field:product.product,invoice_state:0 msgid "Invoice State" -msgstr "" +msgstr "Stav faktury" #. module: product_margin #: help:product.product,purchase_gap:0 msgid "Normal Cost - Total Cost" -msgstr "" +msgstr "Normální náklady - Celkové náklady" #. module: product_margin #: field:product.product,total_margin:0 @@ -208,7 +208,7 @@ msgstr "Prům. cena ve fakturách zásobitelů " #. module: product_margin #: help:product.product,purchase_num_invoiced:0 msgid "Sum of Quantity in Supplier Invoices" -msgstr "" +msgstr "Suma množství v přijatých fakturách" #. module: product_margin #: view:product.margin:0 @@ -224,7 +224,7 @@ msgstr "Celkový rozsah * 100 / Obrat" #: field:product.product,purchase_num_invoiced:0 #: field:product.product,sale_num_invoiced:0 msgid "# Invoiced" -msgstr "" +msgstr "# Fakturováno" #. module: product_margin #: selection:product.margin,invoice_state:0 @@ -244,7 +244,7 @@ msgstr "Prodeje" #: view:product.product:0 #, python-format msgid "Product Margins" -msgstr "" +msgstr "Marže produktů" #. module: product_margin #: view:product.margin:0 @@ -259,12 +259,12 @@ msgstr "" #. module: product_margin #: field:product.product,purchase_gap:0 msgid "Purchase Gap" -msgstr "" +msgstr "Nákupní rozdíl" #. module: product_margin #: field:product.product,total_margin_rate:0 msgid "Total Margin (%)" -msgstr "" +msgstr "Celková marže (%)" #. module: product_margin #: view:product.margin:0 diff --git a/debian/po/bg.po b/debian/po/bg.po index 237f2b4c6b2..b8b59ed7477 100644 --- a/debian/po/bg.po +++ b/debian/po/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/ca.po b/debian/po/ca.po index d78ea80c6d6..277525e763b 100644 --- a/debian/po/ca.po +++ b/debian/po/ca.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/cs.po b/debian/po/cs.po index 59d83e4468c..c8d4327e19a 100644 --- a/debian/po/cs.po +++ b/debian/po/cs.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/da.po b/debian/po/da.po index f3afb84f539..3c1ab98b5c4 100644 --- a/debian/po/da.po +++ b/debian/po/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/de.po b/debian/po/de.po index a29ae6ef7f2..db89f7ca666 100644 --- a/debian/po/de.po +++ b/debian/po/de.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/el.po b/debian/po/el.po index aba757554f3..30ab6f392ca 100644 --- a/debian/po/el.po +++ b/debian/po/el.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/en_GB.po b/debian/po/en_GB.po index 9c010a6e997..64be141c7c9 100644 --- a/debian/po/en_GB.po +++ b/debian/po/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/es.po b/debian/po/es.po index a2ff2bfcade..af18e467d53 100644 --- a/debian/po/es.po +++ b/debian/po/es.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/es_CL.po b/debian/po/es_CL.po index 164489b3910..2cac6a953a1 100644 --- a/debian/po/es_CL.po +++ b/debian/po/es_CL.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/es_EC.po b/debian/po/es_EC.po index cde9a0d9562..5e12c661bce 100644 --- a/debian/po/es_EC.po +++ b/debian/po/es_EC.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/fa.po b/debian/po/fa.po index 165ce297eab..f02901cb4c6 100644 --- a/debian/po/fa.po +++ b/debian/po/fa.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/fi.po b/debian/po/fi.po index 6cc9e384219..ead16bd6dff 100644 --- a/debian/po/fi.po +++ b/debian/po/fi.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/fr.po b/debian/po/fr.po index cadc6b38c28..7294520b38e 100644 --- a/debian/po/fr.po +++ b/debian/po/fr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/gl.po b/debian/po/gl.po index 695bccd2263..5d5861d3253 100644 --- a/debian/po/gl.po +++ b/debian/po/gl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/he.po b/debian/po/he.po index 4ff529ffe72..b6abd19c4f3 100644 --- a/debian/po/he.po +++ b/debian/po/he.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/hr.po b/debian/po/hr.po index c526a9c7f9c..1d64614f75a 100644 --- a/debian/po/hr.po +++ b/debian/po/hr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/hu.po b/debian/po/hu.po index fd7fbbc41b9..ec27e63c66c 100644 --- a/debian/po/hu.po +++ b/debian/po/hu.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/it.po b/debian/po/it.po index f40bc73a4e4..c0c55387657 100644 --- a/debian/po/it.po +++ b/debian/po/it.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/ja.po b/debian/po/ja.po index da8679eed6e..2b0b8ecae9d 100644 --- a/debian/po/ja.po +++ b/debian/po/ja.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/ko.po b/debian/po/ko.po index e2030b6603b..535f76d42ee 100644 --- a/debian/po/ko.po +++ b/debian/po/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/lv.po b/debian/po/lv.po index 4579b1dd5f1..4006ca8e7aa 100644 --- a/debian/po/lv.po +++ b/debian/po/lv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/mn.po b/debian/po/mn.po index eecb8291af1..aa80ced1387 100644 --- a/debian/po/mn.po +++ b/debian/po/mn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/nb.po b/debian/po/nb.po index ffa73979796..22167473f37 100644 --- a/debian/po/nb.po +++ b/debian/po/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/nl.po b/debian/po/nl.po index 1e712de2721..0139ddfd1c9 100644 --- a/debian/po/nl.po +++ b/debian/po/nl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/pl.po b/debian/po/pl.po index 141fd7be6e7..efa21e2cb9e 100644 --- a/debian/po/pl.po +++ b/debian/po/pl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/pt.po b/debian/po/pt.po index 52cbf6c4aa9..870a10982ea 100644 --- a/debian/po/pt.po +++ b/debian/po/pt.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po index f5709b4714d..4ebb91a03d4 100644 --- a/debian/po/pt_BR.po +++ b/debian/po/pt_BR.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/ro.po b/debian/po/ro.po index 51b4dc85f5d..454d1208f17 100644 --- a/debian/po/ro.po +++ b/debian/po/ro.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/ru.po b/debian/po/ru.po index c5c0cf40689..a62d56135be 100644 --- a/debian/po/ru.po +++ b/debian/po/ru.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/sk.po b/debian/po/sk.po index d4eb3f0e938..2e64c468c20 100644 --- a/debian/po/sk.po +++ b/debian/po/sk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/sq.po b/debian/po/sq.po index 5550c306840..2fd401f07b8 100644 --- a/debian/po/sq.po +++ b/debian/po/sq.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/sr.po b/debian/po/sr.po index 09b4b5c9450..d28f2812596 100644 --- a/debian/po/sr.po +++ b/debian/po/sr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/sv.po b/debian/po/sv.po index 081480fc235..ef404a44c15 100644 --- a/debian/po/sv.po +++ b/debian/po/sv.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" "X-Poedit-Language: Swedish\n" #. Type: string diff --git a/debian/po/tr.po b/debian/po/tr.po index f4fd357482a..134f48eae01 100644 --- a/debian/po/tr.po +++ b/debian/po/tr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/uk.po b/debian/po/uk.po index 211c0184720..16b418d8c4f 100644 --- a/debian/po/uk.po +++ b/debian/po/uk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/vi.po b/debian/po/vi.po index 6f00faeddc0..9495f3be262 100644 --- a/debian/po/vi.po +++ b/debian/po/vi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/zh_CN.po b/debian/po/zh_CN.po index f366835628a..ce11bdaa420 100644 --- a/debian/po/zh_CN.po +++ b/debian/po/zh_CN.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. Type: string #. Description diff --git a/debian/po/zh_TW.po b/debian/po/zh_TW.po index 24c27ac3fb2..0594a718c6e 100644 --- a/debian/po/zh_TW.po +++ b/debian/po/zh_TW.po @@ -12,8 +12,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" "X-Poedit-Country: TAIWAN\n" "X-Poedit-Language: Chinese\n" "X-Poedit-SourceCharset: utf-8\n" diff --git a/openerp/addons/base/i18n/af.po b/openerp/addons/base/i18n/af.po index a5fb9bb85f5..ce51ecf45c9 100644 --- a/openerp/addons/base/i18n/af.po +++ b/openerp/addons/base/i18n/af.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:52+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:37+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/am.po b/openerp/addons/base/i18n/am.po index 9f4a242a575..f85334c78fb 100644 --- a/openerp/addons/base/i18n/am.po +++ b/openerp/addons/base/i18n/am.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:52+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:37+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ar.po b/openerp/addons/base/i18n/ar.po index 5106646a7f7..ee7f8f0fc06 100644 --- a/openerp/addons/base/i18n/ar.po +++ b/openerp/addons/base/i18n/ar.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:52+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:37+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/bg.po b/openerp/addons/base/i18n/bg.po index 250be02237f..775497880f4 100644 --- a/openerp/addons/base/i18n/bg.po +++ b/openerp/addons/base/i18n/bg.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/bs.po b/openerp/addons/base/i18n/bs.po index 9f4a6dd194e..87a6f927bb3 100644 --- a/openerp/addons/base/i18n/bs.po +++ b/openerp/addons/base/i18n/bs.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ca.po b/openerp/addons/base/i18n/ca.po index 750800445fb..1a2e0cfa1b6 100644 --- a/openerp/addons/base/i18n/ca.po +++ b/openerp/addons/base/i18n/ca.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 3996f631942..f842644827f 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-07-15 18:58+0000\n" +"PO-Revision-Date: 2011-08-13 17:34+0000\n" "Last-Translator: Chronos \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" "X-Poedit-Language: Czech\n" #. module: base @@ -2125,7 +2125,7 @@ msgstr "Koncept" #: selection:res.config.view,view:0 #: selection:res.users,view:0 msgid "Extended" -msgstr "Rozšířený" +msgstr "Rozšířené" #. module: base #: model:ir.actions.act_window,help:base.action_partner_title_contact diff --git a/openerp/addons/base/i18n/da.po b/openerp/addons/base/i18n/da.po index 476174e41d8..7f21a346790 100644 --- a/openerp/addons/base/i18n/da.po +++ b/openerp/addons/base/i18n/da.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index 52e60f0a158..8289e5c376c 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/el.po b/openerp/addons/base/i18n/el.po index 9c1eeb6605e..334a58a2235 100644 --- a/openerp/addons/base/i18n/el.po +++ b/openerp/addons/base/i18n/el.po @@ -12,8 +12,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" "X-Poedit-Country: GREECE\n" "X-Poedit-Language: Greek\n" "X-Poedit-SourceCharset: utf-8\n" diff --git a/openerp/addons/base/i18n/en_GB.po b/openerp/addons/base/i18n/en_GB.po index 819ebc88f20..1f8bc5daf79 100644 --- a/openerp/addons/base/i18n/en_GB.po +++ b/openerp/addons/base/i18n/en_GB.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 02c98328d6a..b77151221a8 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/es_CL.po b/openerp/addons/base/i18n/es_CL.po index 67604a603f6..e51d5b9361f 100644 --- a/openerp/addons/base/i18n/es_CL.po +++ b/openerp/addons/base/i18n/es_CL.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/es_EC.po b/openerp/addons/base/i18n/es_EC.po index 545e8d9d2f1..fa554c25b73 100644 --- a/openerp/addons/base/i18n/es_EC.po +++ b/openerp/addons/base/i18n/es_EC.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/et.po b/openerp/addons/base/i18n/et.po index 50a7a609592..cd1e0799b8c 100644 --- a/openerp/addons/base/i18n/et.po +++ b/openerp/addons/base/i18n/et.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/eu.po b/openerp/addons/base/i18n/eu.po index 6916e0fca5c..e5b8d24f9b7 100644 --- a/openerp/addons/base/i18n/eu.po +++ b/openerp/addons/base/i18n/eu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:37+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po index 6f050b63eb9..75eacf72ac1 100644 --- a/openerp/addons/base/i18n/fa.po +++ b/openerp/addons/base/i18n/fa.po @@ -9,8 +9,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" "X-Poedit-Language: Persian\n" diff --git a/openerp/addons/base/i18n/fa_AF.po b/openerp/addons/base/i18n/fa_AF.po index f36744f9254..bdfce3a4680 100644 --- a/openerp/addons/base/i18n/fa_AF.po +++ b/openerp/addons/base/i18n/fa_AF.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/fi.po b/openerp/addons/base/i18n/fi.po index eb12afab6d7..c840b901d66 100644 --- a/openerp/addons/base/i18n/fi.po +++ b/openerp/addons/base/i18n/fi.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 @@ -2950,7 +2950,7 @@ msgstr "Liipaisuobjekti" #. module: base #: view:res.users:0 msgid "Current Activity" -msgstr "" +msgstr "Nykyinen aktiviteetti" #. module: base #: view:workflow.activity:0 @@ -4259,7 +4259,7 @@ msgstr "Pankit" #. module: base #: view:res.log:0 msgid "Unread" -msgstr "" +msgstr "Lukemattomat" #. module: base #: field:ir.cron,doall:0 @@ -7286,7 +7286,7 @@ msgstr "Tunisia" #. module: base #: model:ir.ui.menu,name:base.menu_mrp_root msgid "Manufacturing" -msgstr "Valmistava" +msgstr "Valmistus" #. module: base #: model:res.country,name:base.km @@ -7668,7 +7668,7 @@ msgstr "Kategoria" #: selection:ir.attachment,type:0 #: selection:ir.property,type:0 msgid "Binary" -msgstr "" +msgstr "Binäärinen" #. module: base #: field:ir.actions.server,sms:0 @@ -8079,7 +8079,7 @@ msgstr "Asetukset" #. module: base #: model:res.partner.category,name:base.res_partner_category_consumers0 msgid "Consumers" -msgstr "" +msgstr "Kuluttajat" #. module: base #: view:res.config:0 @@ -8781,7 +8781,7 @@ msgstr "Virhe! Et voi luoda rekursiivista valikkoa." #: model:ir.ui.menu,name:base.menu_publisher_warranty_contract_add #: view:publisher_warranty.contract.wizard:0 msgid "Register a Contract" -msgstr "Rekisteröi kontakti" +msgstr "Rekisteröi sopimus" #. module: base #: view:ir.rule:0 @@ -9086,7 +9086,7 @@ msgstr "Bulgaria / български език" #. module: base #: model:ir.ui.menu,name:base.menu_aftersale msgid "After-Sale Services" -msgstr "Jälkimarkkinointi" +msgstr "Jälkimarkkinapalvelut" #. module: base #: view:ir.actions.todo:0 diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index 72e556ca0b6..807f13d3fac 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/gl.po b/openerp/addons/base/i18n/gl.po index f032077f599..32dea586fa8 100644 --- a/openerp/addons/base/i18n/gl.po +++ b/openerp/addons/base/i18n/gl.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/he.po b/openerp/addons/base/i18n/he.po index cbf4aa5d2ab..ede6a0babe3 100644 --- a/openerp/addons/base/i18n/he.po +++ b/openerp/addons/base/i18n/he.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index 37f273dfa6e..16d1bd77537 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" "Language: hr\n" #. module: base diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index 59e6d3c7784..a471ee47e9d 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/hy.po b/openerp/addons/base/i18n/hy.po index 92450cdeeb8..d22a2e16aba 100644 --- a/openerp/addons/base/i18n/hy.po +++ b/openerp/addons/base/i18n/hy.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:37+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/id.po b/openerp/addons/base/i18n/id.po index 785ad80ae63..1028ec1f65e 100644 --- a/openerp/addons/base/i18n/id.po +++ b/openerp/addons/base/i18n/id.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/is.po b/openerp/addons/base/i18n/is.po index 1f2e848fb3d..867bda823d6 100644 --- a/openerp/addons/base/i18n/is.po +++ b/openerp/addons/base/i18n/is.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:54+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:39+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index 8621750ca76..5240c94c6ad 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index bc08b18fb84..6464d1a8f3d 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ko.po b/openerp/addons/base/i18n/ko.po index 1c65d8855e0..1a161d148b8 100644 --- a/openerp/addons/base/i18n/ko.po +++ b/openerp/addons/base/i18n/ko.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/lt.po b/openerp/addons/base/i18n/lt.po index 8f782400c4c..720a5b0da58 100644 --- a/openerp/addons/base/i18n/lt.po +++ b/openerp/addons/base/i18n/lt.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/lv.po b/openerp/addons/base/i18n/lv.po index 858e75fd362..b91b48ca5bc 100644 --- a/openerp/addons/base/i18n/lv.po +++ b/openerp/addons/base/i18n/lv.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po index 0d66bbfbcdc..9805c306546 100644 --- a/openerp/addons/base/i18n/mk.po +++ b/openerp/addons/base/i18n/mk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/mn.po b/openerp/addons/base/i18n/mn.po index 9fd6c96d98f..a99e476d842 100644 --- a/openerp/addons/base/i18n/mn.po +++ b/openerp/addons/base/i18n/mn.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:55+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:40+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/nb.po b/openerp/addons/base/i18n/nb.po index 4a0ba940896..5a8a443e3d2 100644 --- a/openerp/addons/base/i18n/nb.po +++ b/openerp/addons/base/i18n/nb.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/nl.po b/openerp/addons/base/i18n/nl.po index a241280ea9a..0eb8fee697b 100644 --- a/openerp/addons/base/i18n/nl.po +++ b/openerp/addons/base/i18n/nl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:53+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:38+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/nl_BE.po b/openerp/addons/base/i18n/nl_BE.po index ccf2043de97..baf38ceba4d 100644 --- a/openerp/addons/base/i18n/nl_BE.po +++ b/openerp/addons/base/i18n/nl_BE.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index 0981174df44..4b044d0d10f 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index 3f0c496f29b..4b3dccedea3 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index ab16ee3b6b4..f4a0b467163 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ro.po b/openerp/addons/base/i18n/ro.po index be2f7107ab4..b5d46379e7d 100644 --- a/openerp/addons/base/i18n/ro.po +++ b/openerp/addons/base/i18n/ro.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index 47cb98b5b98..eae5aae1b32 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/sk.po b/openerp/addons/base/i18n/sk.po index 5d65c0911db..7ea85c64207 100644 --- a/openerp/addons/base/i18n/sk.po +++ b/openerp/addons/base/i18n/sk.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/sl.po b/openerp/addons/base/i18n/sl.po index 14d93634083..ce6ece7bb5f 100644 --- a/openerp/addons/base/i18n/sl.po +++ b/openerp/addons/base/i18n/sl.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/sq.po b/openerp/addons/base/i18n/sq.po index 035dbdebf04..a709f253137 100644 --- a/openerp/addons/base/i18n/sq.po +++ b/openerp/addons/base/i18n/sq.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:52+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:37+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/sr.po b/openerp/addons/base/i18n/sr.po index 9a06950b7fc..92da88ab1e9 100644 --- a/openerp/addons/base/i18n/sr.po +++ b/openerp/addons/base/i18n/sr.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:56+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:41+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/sr@latin.po b/openerp/addons/base/i18n/sr@latin.po index d9874da338d..0b045d8aebd 100644 --- a/openerp/addons/base/i18n/sr@latin.po +++ b/openerp/addons/base/i18n/sr@latin.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:59+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:44+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/sv.po b/openerp/addons/base/i18n/sv.po index 407c323dcdf..39bd316d471 100644 --- a/openerp/addons/base/i18n/sv.po +++ b/openerp/addons/base/i18n/sv.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/th.po b/openerp/addons/base/i18n/th.po index 6fb52860c7d..831662befb2 100644 --- a/openerp/addons/base/i18n/th.po +++ b/openerp/addons/base/i18n/th.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/tlh.po b/openerp/addons/base/i18n/tlh.po index 0bda452db6c..3d0740a2e54 100644 --- a/openerp/addons/base/i18n/tlh.po +++ b/openerp/addons/base/i18n/tlh.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/tr.po b/openerp/addons/base/i18n/tr.po index a8b5e0dfe3c..dd1ced6bb5a 100644 --- a/openerp/addons/base/i18n/tr.po +++ b/openerp/addons/base/i18n/tr.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/uk.po b/openerp/addons/base/i18n/uk.po index 55c832c0c72..f8a053da660 100644 --- a/openerp/addons/base/i18n/uk.po +++ b/openerp/addons/base/i18n/uk.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:42+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/ur.po b/openerp/addons/base/i18n/ur.po index bdbd94c5e93..663fb1ad57e 100644 --- a/openerp/addons/base/i18n/ur.po +++ b/openerp/addons/base/i18n/ur.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:57+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/vi.po b/openerp/addons/base/i18n/vi.po index 7bcbe0f0060..bce78c257f9 100644 --- a/openerp/addons/base/i18n/vi.po +++ b/openerp/addons/base/i18n/vi.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index 5903603e3ba..69143d461fe 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 @@ -8036,7 +8036,7 @@ msgstr "伊拉克" #. module: base #: model:ir.ui.menu,name:base.menu_association msgid "Association" -msgstr "关联" +msgstr "商会" #. module: base #: model:res.country,name:base.cl diff --git a/openerp/addons/base/i18n/zh_TW.po b/openerp/addons/base/i18n/zh_TW.po index c0d5d10fb9e..ca3b3201309 100644 --- a/openerp/addons/base/i18n/zh_TW.po +++ b/openerp/addons/base/i18n/zh_TW.po @@ -13,8 +13,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-08-06 04:58+0000\n" -"X-Generator: Launchpad (build 13613)\n" +"X-Launchpad-Export-Date: 2011-08-14 04:43+0000\n" +"X-Generator: Launchpad (build 13674)\n" #. module: base #: view:ir.filters:0 From 941496a321565e65d67c87f29ed729d86fd96cf5 Mon Sep 17 00:00:00 2001 From: fp Date: Mon, 15 Aug 2011 16:16:43 +0200 Subject: [PATCH 56/67] [IMP] bank account management reviewed, improved groups name bzr revid: fp@fp-laptop-20110815141643-ebg8rnuihkei6fni --- openerp/addons/base/__openerp__.py | 4 +- openerp/addons/base/base_update.xml | 26 ++- openerp/addons/base/res/__init__.py | 1 - openerp/addons/base/res/bank.py | 58 ----- openerp/addons/base/res/bank_view.xml | 58 ----- openerp/addons/base/res/partner/__init__.py | 1 + openerp/addons/base/res/partner/bank.py | 221 ++++++++++++++++++ openerp/addons/base/res/partner/bank_view.xml | 189 +++++++++++++++ openerp/addons/base/res/partner/partner.py | 116 --------- .../addons/base/res/partner/partner_data.xml | 17 +- .../addons/base/res/partner/partner_view.xml | 66 ------ openerp/addons/base/res/res_company.py | 15 +- openerp/addons/base/res/res_security.xml | 2 +- .../addons/base/security/base_security.xml | 4 +- 14 files changed, 455 insertions(+), 323 deletions(-) delete mode 100644 openerp/addons/base/res/bank.py delete mode 100644 openerp/addons/base/res/bank_view.xml create mode 100644 openerp/addons/base/res/partner/bank.py create mode 100644 openerp/addons/base/res/partner/bank_view.xml diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index 5b357263569..c36dcecdf30 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -62,7 +62,7 @@ 'res/partner/partner_report.xml', 'res/partner/partner_view.xml', 'res/partner/partner_shortcut_data.xml', - 'res/bank_view.xml', + 'res/partner/bank_view.xml', 'res/country_view.xml', 'res/res_currency_view.xml', 'res/partner/crm_view.xml', @@ -71,11 +71,9 @@ 'res/partner/wizard/partner_clear_ids_view.xml', 'res/partner/wizard/partner_wizard_ean_check_view.xml', 'res/partner/partner_data.xml', - 'res/ir_property_view.xml', 'security/base_security.xml', 'publisher_warranty/publisher_warranty_view.xml', - 'security/ir.model.access.csv', 'res/res_widget_view.xml', 'res/res_widget_data.xml', diff --git a/openerp/addons/base/base_update.xml b/openerp/addons/base/base_update.xml index acc2d1d741d..5da43489e55 100644 --- a/openerp/addons/base/base_update.xml +++ b/openerp/addons/base/base_update.xml @@ -189,6 +189,16 @@ + + Company Bank Accounts + res.partner.bank + form + tree,form + + Configure your company's bank account and select those that must appear on the report footer. You can drag & drop bank in the list view to reorder bank accounts. If you use the accounting application of OpenERP, journals and accounts will be created automatically based on these data. + + + res.company.form res.company @@ -217,12 +227,16 @@ - - - - -