From edff1d957585dc36ec8a67d95df389509fc6511f Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 26 Jul 2013 12:48:34 +0530 Subject: [PATCH 001/171] [IMP] Fixed issue of traceback when we enter non integer number,improved css and help. bzr revid: tpa@tinyerp.com-20130726071834-hd9qyyotf41ja57w --- addons/crm/static/src/css/crm.css | 1 + addons/sale/report/sale_report_view.xml | 4 +-- addons/sale_crm/sale_crm_view.xml | 37 ++++++++++++++++++++--- addons/sale_crm/static/src/js/sale_crm.js | 21 ++++++++----- 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index ba4473edc26..53939191eb5 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -29,6 +29,7 @@ margin: 0 !important; position: relative; display: inline-block; + float: left; } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list a:hover { text-decoration: underline !important; diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index 69e9cc5e119..4d0ac87bc13 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -47,8 +47,8 @@ - - + + diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index ae21934ce61..09b613a40ec 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -211,6 +211,33 @@ + + Sales Analysis + sale.report + form + tree,graph + {'search_default_year':1,'search_default_month':1,'search_default_User':1,'search_default_Quotations':1,'group_by_no_leaf':1,'group_by':[]} + This report performs analysis on your quotations and sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + + + + Sales Analysis + sale.report + form + tree,graph + {'search_default_year':1,'search_default_month':1,'search_default_User':1,'search_default_Sales':1,'group_by_no_leaf':1,'group_by':[]} + This report performs analysis on your quotations and sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + + + + Invoices Analysis + account.invoice.report + form + tree,graph + {'search_default_period':1, 'search_default_current':1, 'search_default_user':1, 'search_default_year': 1, 'search_default_category_product':1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':1,} + From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs. + + crm.case.section.form crm.case.section @@ -241,9 +268,9 @@ @@ -251,7 +278,7 @@ diff --git a/addons/sale_crm/static/src/js/sale_crm.js b/addons/sale_crm/static/src/js/sale_crm.js index 207ac959af3..77871bb3a50 100644 --- a/addons/sale_crm/static/src/js/sale_crm.js +++ b/addons/sale_crm/static/src/js/sale_crm.js @@ -67,13 +67,17 @@ openerp.sale_crm.GaugeWidget = openerp.web_kanban.AbstractField.extend({ $input.focus() .keydown(function (event) { event.stopPropagation(); - if (event.keyCode == 13 || event.keyCode == 9) { - if ($input.val() != value) { - parent.view.dataset.call(self.options.action_change, [parent.id, $input.val()]).then(function () { - parent.do_reload(); - }); - } else { - $div.remove(); + if(isNaN($input.val())){ + self.do_warn(_t("Wrong value entered!"), _t("Only Integer Value should be valid.")); + $div.remove(); + } else { + if (event.keyCode == 13 || event.keyCode == 9) { + var val = self.parse_client($input.val()); + if (val != value) { + parent.view.dataset.call(self.options.action_change, [parent.id, $input.val()]).then(function () { + parent.do_reload(); + }); + } else { $div.remove();} } } }) @@ -102,6 +106,9 @@ openerp.sale_crm.GaugeWidget = openerp.web_kanban.AbstractField.extend({ } } }, + parse_client: function(value) { + return openerp.web.parse_value(value, { type:"integer" }); + }, }); openerp.web_kanban.fields_registry.add("gage", "openerp.sale_crm.GaugeWidget"); From c588dc46990c67f66662a34e700b295851e086df Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 26 Jul 2013 18:52:42 +0530 Subject: [PATCH 002/171] [IMP] improved typo bzr revid: tpa@tinyerp.com-20130726132242-595e8x43s3jfiov1 --- addons/sale_crm/sale_crm_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 09b613a40ec..4a624db44a1 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -270,7 +270,7 @@ Sales Orders - Revenue of confirmed sales orders per month.
Click to acces the Sales Analysis + Revenue of confirmed sales orders per month.
Click to acces the Sales Analysis.
From 0049c8efe85a67f1a20b82d086a34af3f3b09e64 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 29 Jul 2013 15:41:17 +0530 Subject: [PATCH 003/171] [IMP] Improved code of sale report to inherit and add fields in sale_crm,sale_stock modules, added proper domins on the actions in sales teams kanban bzr revid: tpa@tinyerp.com-20130729101117-6sxwrsh2coz8ygkd --- addons/crm/report/crm_lead_report_view.xml | 12 ++-- addons/sale/report/sale_report.py | 38 ++++++++---- addons/sale/report/sale_report_view.xml | 2 - addons/sale_crm/__openerp__.py | 1 + addons/sale_crm/report/__init__.py | 1 + addons/sale_crm/report/sale_report.py | 37 ++++++++++++ addons/sale_crm/report/sale_report_view.xml | 27 +++++++++ addons/sale_crm/sale_crm_view.xml | 17 +++--- addons/sale_stock/report/sale_report.py | 59 ++----------------- addons/sale_stock/report/sale_report_view.xml | 4 ++ 10 files changed, 117 insertions(+), 81 deletions(-) create mode 100644 addons/sale_crm/report/sale_report.py create mode 100644 addons/sale_crm/report/sale_report_view.xml diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 09853c6379e..23594a7f9e1 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -66,9 +66,6 @@ crm.lead.report - - - @@ -113,7 +110,7 @@ - @@ -165,9 +162,9 @@ Leads Analysis crm.lead.report form - {'search_default_year': 1,'search_default_lead': 1, "search_default_user":1, "search_default_this_month":1, 'group_by_no_leaf':1, 'group_by':[]} + {'search_default_year': 1, "search_default_user":1, "search_default_month":1, 'group_by_no_leaf':1, 'group_by':[]} tree,graph - [] + [('type','=', 'lead')] Leads Analysis allows you to check different CRM related information like the treatment delays or number of leads per state. You can sort out your leads analysis by different groups to get accurate grained analysis.
@@ -187,8 +184,9 @@ Opportunities Analysis crm.lead.report form - {"search_default_year":1,"search_default_opportunity":1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]} + {"search_default_year":1, "search_default_user":1,"search_default_month":1,'group_by_no_leaf':1,'group_by':[]} tree,graph + [('type','=', 'opportunity')] Opportunities Analysis gives you an instant access to your opportunities with information such as the expected revenue, planned cost, missed deadlines or the number of interactions per opportunity. This report is mainly used by the sales manager in order to do the periodic review with the teams of the sales pipeline. diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index d5f07f863b9..d2f7849a958 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -60,12 +60,9 @@ class sale_report(osv.osv): } _order = 'date desc' - def init(self, cr): - tools.drop_view_if_exists(cr, 'sale_report') - cr.execute(""" - create or replace view sale_report as ( - select - min(l.id) as id, + def _select(self): + select_str = """ + SELECT min(l.id) as id, l.product_id as product_id, t.uom_id as product_uom, sum(l.product_uom_qty / u.factor * u2.factor) as product_uom_qty, @@ -84,15 +81,23 @@ class sale_report(osv.osv): t.categ_id as categ_id, s.pricelist_id as pricelist_id, s.project_id as analytic_account_id - from - sale_order s + """ + return select_str + + def _from(self): + from_str = """ + sale_order s join sale_order_line l on (s.id=l.order_id) left join product_product p on (l.product_id=p.id) left join product_template t on (p.product_tmpl_id=t.id) left join product_uom u on (u.id=l.product_uom) left join product_uom u2 on (u2.id=t.uom_id) - group by - l.product_id, + """ + return from_str + + def _group_by(self): + group_by_str = """ + GROUP BY l.product_id, l.product_uom_qty, l.order_id, t.uom_id, @@ -105,7 +110,16 @@ class sale_report(osv.osv): s.state, s.pricelist_id, s.project_id - ) - """) + """ + return group_by_str + + def init(self, cr): + # self._table = sale_report + tools.drop_view_if_exists(cr, self._table) + cr.execute("""CREATE or REPLACE VIEW %s as ( + %s + FROM ( %s ) + %s + )""" % (self._table, self._select(), self._from(), self._group_by())) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index 4d0ac87bc13..28a6f83936a 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -50,8 +50,6 @@ - - diff --git a/addons/sale_crm/__openerp__.py b/addons/sale_crm/__openerp__.py index 7db1aa1eff0..25b1fb5f7f4 100644 --- a/addons/sale_crm/__openerp__.py +++ b/addons/sale_crm/__openerp__.py @@ -46,6 +46,7 @@ modules. 'security/sale_crm_security.xml', 'security/ir.model.access.csv', 'report/sale_crm_account_invoice_report_view.xml', + 'report/sale_report_view.xml', ], 'js': [ 'static/lib/justgage.js', diff --git a/addons/sale_crm/report/__init__.py b/addons/sale_crm/report/__init__.py index d7c6d373468..d86b3e66de9 100644 --- a/addons/sale_crm/report/__init__.py +++ b/addons/sale_crm/report/__init__.py @@ -20,6 +20,7 @@ ############################################################################## import sales_crm_account_invoice_report +import sale_report # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_crm/report/sale_report.py b/addons/sale_crm/report/sale_report.py new file mode 100644 index 00000000000..f8fae28f600 --- /dev/null +++ b/addons/sale_crm/report/sale_report.py @@ -0,0 +1,37 @@ + # -*- coding: utf-8 -*- + ############################################################################## + # + # OpenERP, Open Source Management Solution + # Copyright (C) 2004-2010 Tiny SPRL (). + # + # 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 . + # + ############################################################################## + +from openerp.osv import fields, osv +from openerp import tools + +class sale_report(osv.osv): + _inherit = "sale.report" + _columns = { + 'section_id': fields.many2one('crm.case.section', 'Sales Team'), + } + + def _select(self): + return super(sale_report, self)._select() + ", s.section_id as section_id" + + def _group_by(self): + return super(sale_report, self)._group_by() + ", s.section_id" + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_crm/report/sale_report_view.xml b/addons/sale_crm/report/sale_report_view.xml new file mode 100644 index 00000000000..f054634cf1c --- /dev/null +++ b/addons/sale_crm/report/sale_report_view.xml @@ -0,0 +1,27 @@ + + + + + sale.report.tree.sale.crm + sale.report + + + + + + + + + + sale.report.search.sale.crm + sale.report + + + + + + + + + + \ No newline at end of file diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 4a624db44a1..7e0d6b27a3a 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -212,12 +212,13 @@ - Sales Analysis + Quotations Analysis sale.report form tree,graph - {'search_default_year':1,'search_default_month':1,'search_default_User':1,'search_default_Quotations':1,'group_by_no_leaf':1,'group_by':[]} - This report performs analysis on your quotations and sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + [('state','=','draft'),('section_id', '=', active_id)] + {'search_default_order_month':1,'search_default_User':1} + This report performs analysis on your quotations. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. @@ -225,8 +226,9 @@ sale.report form tree,graph - {'search_default_year':1,'search_default_month':1,'search_default_User':1,'search_default_Sales':1,'group_by_no_leaf':1,'group_by':[]} - This report performs analysis on your quotations and sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. + [('state','not in',('draft','done','cancel')),('section_id', '=', active_id)] + {'search_default_order_month':1,'search_default_User':1} + This report performs analysis on your sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. @@ -234,7 +236,8 @@ account.invoice.report form tree,graph - {'search_default_period':1, 'search_default_current':1, 'search_default_user':1, 'search_default_year': 1, 'search_default_category_product':1, 'search_default_customer':1, 'group_by':[], 'group_by_no_leaf':1,} + [('section_id', '=', active_id)] + {'search_default_month':1, 'search_default_user':1} From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs. @@ -288,7 +291,7 @@ Quotations - Revenue of created quotations per month.
Click to see a detailed analysis of sales. + Revenue of created quotations per month.
Click to see a detailed analysis.
diff --git a/addons/sale_stock/report/sale_report.py b/addons/sale_stock/report/sale_report.py index 0feb3ee2392..7a8234fa7fa 100644 --- a/addons/sale_stock/report/sale_report.py +++ b/addons/sale_stock/report/sale_report.py @@ -39,58 +39,11 @@ class sale_report(osv.osv): ('cancel', 'Cancelled') ], 'Order Status', readonly=True), } - - def init(self, cr): - tools.drop_view_if_exists(cr, 'sale_report') - cr.execute(""" - create or replace view sale_report as ( - select - min(l.id) as id, - l.product_id as product_id, - t.uom_id as product_uom, - sum(l.product_uom_qty / u.factor * u2.factor) as product_uom_qty, - sum(l.product_uom_qty * l.price_unit * (100.0-l.discount) / 100.0) as price_total, - 1 as nbr, - s.date_order as date, - s.date_confirm as date_confirm, - to_char(s.date_order, 'YYYY') as year, - to_char(s.date_order, 'MM') as month, - to_char(s.date_order, 'YYYY-MM-DD') as day, - s.partner_id as partner_id, - s.user_id as user_id, - s.company_id as company_id, - s.warehouse_id as warehouse_id, - extract(epoch from avg(date_trunc('day',s.date_confirm)-date_trunc('day',s.create_date)))/(24*60*60)::decimal(16,2) as delay, - s.state, - t.categ_id as categ_id, - s.shipped, - s.shipped::integer as shipped_qty_1, - s.pricelist_id as pricelist_id, - s.project_id as analytic_account_id - from - sale_order s - join sale_order_line l on (s.id=l.order_id) - left join product_product p on (l.product_id=p.id) - left join product_template t on (p.product_tmpl_id=t.id) - left join product_uom u on (u.id=l.product_uom) - left join product_uom u2 on (u2.id=t.uom_id) - group by - l.product_id, - l.product_uom_qty, - l.order_id, - t.uom_id, - t.categ_id, - s.date_order, - s.date_confirm, - s.partner_id, - s.user_id, - s.warehouse_id, - s.company_id, - s.state, - s.shipped, - s.pricelist_id, - s.project_id - ) - """) + + def _select(self): + return super(sale_report, self)._select() + ", s.warehouse_id as warehouse_id, s.shipped, s.shipped::integer as shipped_qty_1" + + def _group_by(self): + return super(sale_report, self)._group_by() + ", s.warehouse_id, s.shipped" # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_stock/report/sale_report_view.xml b/addons/sale_stock/report/sale_report_view.xml index 6642bffcede..486cf3a7b11 100644 --- a/addons/sale_stock/report/sale_report_view.xml +++ b/addons/sale_stock/report/sale_report_view.xml @@ -17,6 +17,10 @@ sale.report + + + + From eb700cf29beb3865e26fb4f8c53469f2cac40eb7 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 30 Jul 2013 16:38:22 +0530 Subject: [PATCH 004/171] [IMP] Added company_id and currency_symbole field and improved related code to show tooltip as per requrement and 5 sec late,improved css to show proper cursore, improved actions & domains for proper results. bzr revid: tpa@tinyerp.com-20130730110822-zzioh92in4azqay8 --- addons/crm/crm.py | 12 ++++- addons/crm/crm_case_section_view.xml | 53 ++++++++++++++++++-- addons/crm/static/src/css/crm.css | 3 +- addons/crm/static/src/js/crm_case_section.js | 5 +- addons/sale_crm/report/sale_report_view.xml | 2 +- addons/sale_crm/sale_crm_view.xml | 8 +-- 6 files changed, 69 insertions(+), 14 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index d1194508b71..876814fe5b7 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -156,6 +156,13 @@ class crm_case_section(osv.osv): res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date'], 'planned_revenue', 'create_date', context=context) return res + def _get_currency_symbol(self, cr, uid, ids, name, arg, context=None): + """Set currency symbole of company currency""" + res = {} + for sales_team in self.browse(cr, uid, ids, context=context): + res[sales_team.id] = sales_team.company_id.currency_id.symbol + return res + _columns = { 'name': fields.char('Sales Team', size=64, required=True, translate=True), 'complete_name': fields.function(get_full_name, type='char', size=256, readonly=True, store=True), @@ -184,7 +191,9 @@ class crm_case_section(osv.osv): string='Open Leads per Month'), 'monthly_planned_revenue': fields.function(_get_opportunities_data, type="string", readonly=True, multi='_get_opportunities_data', - string='Planned Revenue per Month') + string='Planned Revenue per Month'), + 'company_id': fields.many2one('res.company', 'Company', select=1), + 'currency_symbol': fields.function(_get_currency_symbol, string='Currency Symbol', method=True, type='char'), } def _get_stage_common(self, cr, uid, context): @@ -195,6 +204,7 @@ class crm_case_section(osv.osv): 'active': 1, 'stage_ids': _get_stage_common, 'use_leads': True, + 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case.section', context=c), } _sql_constraints = [ diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml index c957311b47f..c8d4cb01c41 100644 --- a/addons/crm/crm_case_section_view.xml +++ b/addons/crm/crm_case_section_view.xml @@ -13,7 +13,6 @@ { 'search_default_section_id': [active_id], - 'search_default_open': 1, 'default_section_id': active_id, 'default_type': 'lead', 'stage_type': 'lead', @@ -43,7 +42,6 @@ { 'search_default_section_id': [active_id], - 'search_default_assigned_to_me': 1, 'default_section_id': active_id, 'stage_type': 'opportunity', 'default_type': 'opportunity', @@ -64,6 +62,52 @@ + + Leads Analysis + crm.lead.report + form + {"search_default_month":1} + tree,graph + [('type','=', 'lead'),('section_id', '=', active_id)] + Leads Analysis allows you to check different CRM related information like the treatment delays or number of leads per state. You can sort out your leads analysis by different groups to get accurate grained analysis. + + + + tree + + + + + + graph + + + + + + Opportunities Analysis + crm.lead.report + form + {"search_default_month":1} + tree,graph + [('type','=', 'opportunity'), ('section_id', '=', active_id)] + Opportunities Analysis gives you an instant access to your opportunities with information such as the expected revenue, planned cost, missed deadlines or the number of interactions per opportunity. This report is mainly used by the sales manager in order to do the periodic review with the teams of the sales pipeline. + + + + + tree + + + + + + + graph + + + + @@ -80,6 +124,7 @@ + diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 53939191eb5..680c3a9bd88 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -1,5 +1,6 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams { width: 345px; + cursor: default; } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars { text-align: right; @@ -61,5 +62,5 @@ .openerp .oe_kanban_view .oe_sparkline_bar { height: 20px; - width: 36px; + width: 36px !important; } \ No newline at end of file diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js index 2b4ca741d75..f16dc31f634 100644 --- a/addons/crm/static/src/js/crm_case_section.js +++ b/addons/crm/static/src/js/crm_case_section.js @@ -8,7 +8,6 @@ openerp.crm = function(openerp) { } }, }); - openerp.crm.SparklineBarWidget = openerp.web_kanban.AbstractField.extend({ className: "oe_sparkline_bar", start: function() { @@ -20,12 +19,12 @@ openerp.crm = function(openerp) { self.$el.sparkline(value, { type: 'bar', barWidth: 5, - tooltipFormat: '{{offset:offset}} {{value}}', + tooltipFormat: _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? 'Leads' : self.getParent().record.currency_symbol.raw_value), tooltipValueLookups: { 'offset': tooltips }, }); - self.$el.tipsy({'delayIn': 0, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); + self.$el.tipsy({'delayIn': 3000, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); }, 0); }, }); diff --git a/addons/sale_crm/report/sale_report_view.xml b/addons/sale_crm/report/sale_report_view.xml index f054634cf1c..99ab196a115 100644 --- a/addons/sale_crm/report/sale_report_view.xml +++ b/addons/sale_crm/report/sale_report_view.xml @@ -17,7 +17,7 @@ sale.report - + diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 7e0d6b27a3a..667d5f4f412 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -217,7 +217,7 @@ form tree,graph [('state','=','draft'),('section_id', '=', active_id)] - {'search_default_order_month':1,'search_default_User':1} + {'search_default_order_month':1} This report performs analysis on your quotations. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. @@ -227,7 +227,7 @@ form tree,graph [('state','not in',('draft','done','cancel')),('section_id', '=', active_id)] - {'search_default_order_month':1,'search_default_User':1} + {'search_default_order_month':1} This report performs analysis on your sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. @@ -237,7 +237,7 @@ form tree,graph [('section_id', '=', active_id)] - {'search_default_month':1, 'search_default_user':1} + {'search_default_month':1} From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs. @@ -299,7 +299,7 @@
Invoiced - Forecast + Forecast

Define an invoicing target in the sales team settings to see the period's achievement and forecast at a glance. From 14522ba8a8ff8787fe0b2620f3cab91c5428c1ae Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 30 Jul 2013 16:43:37 +0530 Subject: [PATCH 005/171] [IMP] improved code to show only paid invoices on click action of graph bzr revid: tpa@tinyerp.com-20130730111337-nw7s9i2dad7s4o7k --- addons/sale_crm/sale_crm_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 667d5f4f412..fa44cd7e821 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -236,7 +236,7 @@ account.invoice.report form tree,graph - [('section_id', '=', active_id)] + [('state','=','paid'),('section_id', '=', active_id)] {'search_default_month':1} From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs. From 4a826985a28023c3160c14d3a80dd5e9e37df9e9 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 30 Jul 2013 17:00:59 +0530 Subject: [PATCH 006/171] [IMP] improved code to show Lead(s) insted of Leads and make it traslatable also bzr revid: tpa@tinyerp.com-20130730113059-03mvlq21b3dlzknz --- addons/crm/static/src/js/crm_case_section.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js index f16dc31f634..a281e4bb0f1 100644 --- a/addons/crm/static/src/js/crm_case_section.js +++ b/addons/crm/static/src/js/crm_case_section.js @@ -1,4 +1,5 @@ openerp.crm = function(openerp) { +var _t = openerp.web._t; openerp.web_kanban.KanbanRecord.include({ on_card_clicked: function() { if (this.view.dataset.model === 'crm.case.section') { @@ -19,7 +20,7 @@ openerp.crm = function(openerp) { self.$el.sparkline(value, { type: 'bar', barWidth: 5, - tooltipFormat: _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? 'Leads' : self.getParent().record.currency_symbol.raw_value), + tooltipFormat: _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? _t('Lead(s)') : self.getParent().record.currency_symbol.raw_value), tooltipValueLookups: { 'offset': tooltips }, From 9010169be290874fdba68543d5f185d7b2118653 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 30 Jul 2013 18:55:39 +0530 Subject: [PATCH 007/171] [IMP] sale_crm: improved filter in search view bzr revid: tpa@tinyerp.com-20130730132539-zgh8y85sz83ly5bt --- addons/sale_crm/report/sale_report_view.xml | 2 +- addons/sale_crm/sale_crm_view.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sale_crm/report/sale_report_view.xml b/addons/sale_crm/report/sale_report_view.xml index 99ab196a115..8661d13c470 100644 --- a/addons/sale_crm/report/sale_report_view.xml +++ b/addons/sale_crm/report/sale_report_view.xml @@ -19,7 +19,7 @@ - + diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index fa44cd7e821..73057e63bfc 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -226,7 +226,7 @@ sale.report form tree,graph - [('state','not in',('draft','done','cancel')),('section_id', '=', active_id)] + [('state','not in',('draft','sent','cancel')),('section_id', '=', active_id)] {'search_default_order_month':1} This report performs analysis on your sales orders. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application. From d2777a494fa3af402b41a88ad21a2545852174f3 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 31 Jul 2013 18:50:56 +0530 Subject: [PATCH 008/171] [IMP] improved code to show opportunity revenue in current user currency in multy currency senario for sales team sparkline bars bzr revid: tpa@tinyerp.com-20130731132056-ns7wl04r33grznrs --- addons/crm/crm.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 876814fe5b7..137f619f2e3 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -111,7 +111,7 @@ class crm_case_section(osv.osv): def get_full_name(self, cr, uid, ids, field_name, arg, context=None): return dict(self.name_get(cr, uid, ids, context=context)) - def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, context=None): + def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, type=None, context=None): """ Generic method to generate data for bar chart values using SparklineBarWidget. This method performs obj.read_group(cr, uid, domain, read_fields, groupby_field). @@ -135,8 +135,19 @@ class crm_case_section(osv.osv): group_obj = obj.read_group(cr, uid, domain, read_fields, groupby_field, context=context) for group in group_obj: group_begin_date = datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATE_FORMAT) - month_delta = relativedelta.relativedelta(month_begin, group_begin_date) - section_result[self._period_number - (month_delta.months + 1)] = {'value': group.get(value_field, 0), 'tooltip': group_begin_date.strftime('%B')} + month = self._period_number - (relativedelta.relativedelta(month_begin, group_begin_date).months + 1) + section_result[month] = {'value': 0, 'tooltip': group_begin_date.strftime('%B')} + inner_groupby = (group.get('__context', {})).get('group_by',[]) + if type == "Lead" or not inner_groupby: + section_result[month]['value'] = group.get(value_field, 0) + continue + if inner_groupby: + groupby_company = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) + for groupby in groupby_company: + company = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context) + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + value = self.pool.get('res.currency').compute(cr, uid, company.currency_id.id, user.company_id.currency_id.id, groupby.get(value_field, 0)) + section_result[month]['value'] = section_result[month]['value'] + value return section_result def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None): @@ -151,16 +162,16 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() lead_domain = [('type', '=', 'lead'), ('section_id', '=', id), ('create_date', '>=', groupby_begin)] - res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context) + res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], type="Lead", context=context) opp_domain = [('type', '=', 'opportunity'), ('section_id', '=', id), ('create_date', '>=', groupby_begin)] - res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date'], 'planned_revenue', 'create_date', context=context) + res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date', 'company_id'], 'planned_revenue', ['create_date', 'company_id'], context=context) return res def _get_currency_symbol(self, cr, uid, ids, name, arg, context=None): """Set currency symbole of company currency""" res = {} - for sales_team in self.browse(cr, uid, ids, context=context): - res[sales_team.id] = sales_team.company_id.currency_id.symbol + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + res = dict.fromkeys(ids, user.company_id.currency_id.symbol) return res _columns = { @@ -192,7 +203,6 @@ class crm_case_section(osv.osv): 'monthly_planned_revenue': fields.function(_get_opportunities_data, type="string", readonly=True, multi='_get_opportunities_data', string='Planned Revenue per Month'), - 'company_id': fields.many2one('res.company', 'Company', select=1), 'currency_symbol': fields.function(_get_currency_symbol, string='Currency Symbol', method=True, type='char'), } @@ -204,7 +214,6 @@ class crm_case_section(osv.osv): 'active': 1, 'stage_ids': _get_stage_common, 'use_leads': True, - 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case.section', context=c), } _sql_constraints = [ From 7f6daa12f92c07351f349c338d2ae1666b3b3c6e Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 5 Aug 2013 17:05:49 +0530 Subject: [PATCH 009/171] [IMP] Improved report of lead/apportunity analysis to show in user currency and improved code to show target and forcast amount in current user currency. bzr revid: tpa@tinyerp.com-20130805113549-9vmwd2v0zsjwlcms --- addons/crm/report/crm_lead_report.py | 32 +++++++++++++++++++--- addons/crm/report/crm_lead_report_view.xml | 8 +++--- addons/sale_crm/sale_crm.py | 32 ++++++++++++++++++++-- addons/sale_crm/sale_crm_demo.xml | 8 +++--- addons/sale_crm/sale_crm_view.xml | 4 +-- 5 files changed, 67 insertions(+), 17 deletions(-) diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index d12facd66a0..23347988573 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -53,6 +53,19 @@ class crm_lead_report(osv.osv): _description = "CRM Lead Analysis" _rec_name = 'deadline_day' + def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): + """Compute the amounts in the currency of the user + """ + res = {} + currency_obj = self.pool.get('res.currency') + user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + for item in self.browse(cr, uid, ids, context=context): + res[item.id] = { + 'user_currency_planned_revenue': currency_obj.compute(cr, uid, item.company_id.currency_id.id, user_currency_id, item.planned_revenue, context=context), + 'user_currency_probable_revenue': currency_obj.compute(cr, uid, item.company_id.currency_id.id, user_currency_id, item.probable_revenue, context=context), + } + return res + _columns = { # grouping fields based on Deadline Date 'deadline_year': fields.char('Ex. Closing Year', size=10, readonly=True, help="Expected closing year"), @@ -83,7 +96,9 @@ class crm_lead_report(osv.osv): 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'probability': fields.float('Probability',digits=(16,2),readonly=True, group_operator="avg"), 'planned_revenue': fields.float('Planned Revenue',digits=(16,2),readonly=True), + 'user_currency_planned_revenue': fields.function(_compute_amounts_in_user_currency, string="Planned Revenue", type='float',digits=(16,2), multi="_compute_amounts", readonly=True), 'probable_revenue': fields.float('Probable Revenue', digits=(16,2),readonly=True), + 'user_currency_probable_revenue': fields.function(_compute_amounts_in_user_currency, string="Probable Revenue", type='float',digits=(16,2), multi="_compute_amounts",readonly=True), 'stage_id': fields.many2one ('crm.case.stage', 'Stage', readonly=True, domain="[('section_ids', '=', section_id)]"), 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True), 'nbr': fields.integer('# of Cases', readonly=True), @@ -94,12 +109,21 @@ class crm_lead_report(osv.osv): ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"), } - - - + + #FIX:To show sum of values of function fields in groupby + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): + res = super(crm_lead_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) + for group in res: + group['user_currency_probable_revenue'] = 0 + group['user_currency_planned_revenue'] = 0 + group_ids = self.search(cr, uid, group.get('__domain'),context=context) + record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) + for id, rec in record.iteritems(): + group['user_currency_planned_revenue'] += rec['user_currency_planned_revenue'] + group['user_currency_probable_revenue'] += rec['user_currency_probable_revenue'] + return res def init(self, cr): - """ CRM Lead Report @param cr: the current row, from the database cursor diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 23594a7f9e1..a9b7bc73aab 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -28,7 +28,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -146,12 +146,12 @@ - + - + diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 97c5f4579e0..634df104d34 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -67,12 +67,25 @@ class crm_case_section(osv.osv): res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context) return res + def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): + """Compute the amounts in the currency of the user """ + res = {} + currency_obj = self.pool.get('res.currency') + user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + for item in self.browse(cr, uid, ids, context=context): + base_currency_id = item.user_id.company_id.currency_id.id if item.user_id else item.create_uid.company_id.currency_id.id + res[item.id] = { + 'invoiced_forecast': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.base_invoiced_forecast, context=context), + 'invoiced_target': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.base_invoiced_target, context=context), + } + return res + _columns = { - 'invoiced_forecast': fields.integer(string='Invoice Forecast', + 'invoiced_forecast': fields.function(_compute_amounts_in_user_currency, string='Invoice Forecast',type='integer', multi="_compute_amounts", help="Forecast of the invoice revenue for the current month. This is the amount the sales \n" "team should invoice this month. It is used to compute the progression ratio \n" " of the current and forecast revenue on the kanban view."), - 'invoiced_target': fields.integer(string='Invoice Target', + 'invoiced_target': fields.function(_compute_amounts_in_user_currency,string='Invoice Target',type='integer', multi="_compute_amounts", help="Target of invoice revenue for the current month. This is the amount the sales \n" "team estimates to be able to invoice this month."), 'monthly_quoted': fields.function(_get_sale_orders_data, @@ -84,11 +97,24 @@ class crm_case_section(osv.osv): 'monthly_invoiced': fields.function(_get_invoices_data, type='string', readonly=True, string='Rate of sent invoices per duration'), + 'base_invoiced_forecast': fields.integer(string="Invoice Forecast"), + 'base_invoiced_target': fields.integer(string="Invoice Target"), + 'create_uid': fields.many2one('res.users', 'Create User'), } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'invoiced_forecast': value}, context=context) + return self.write(cr, uid, [id], {'invoiced_forecast': int(value)}, context=context) + def write(self, cr, uid, ids, vals, context=None): + currency_obj = self.pool.get('res.currency') + user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + for item in self.browse(cr, uid, ids, context=context): + base_currency_id = item.user_id.company_id.currency_id.id if item.user_id else item.create_uid.company_id.currency_id.id + if vals.get('invoiced_forecast'): + vals['base_invoiced_forecast'] = currency_obj.compute(cr, uid, user_currency_id, base_currency_id, vals['invoiced_forecast'], context=context) + if vals.get('invoiced_target'): + vals['base_invoiced_target'] = currency_obj.compute(cr, uid, user_currency_id, base_currency_id, vals['invoiced_target'], context=context) + return super(crm_case_section, self).write(cr, uid, ids, vals, context=context) class res_users(osv.Model): _inherit = 'res.users' diff --git a/addons/sale_crm/sale_crm_demo.xml b/addons/sale_crm/sale_crm_demo.xml index 0c2822719dd..3eff4061aa1 100644 --- a/addons/sale_crm/sale_crm_demo.xml +++ b/addons/sale_crm/sale_crm_demo.xml @@ -3,15 +3,15 @@ - 52700 - 60000 + 52700 + 60000 Indirect Sales IM - 36000 - 40000 + 36000 + 40000 diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 73057e63bfc..22dff55531d 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -248,8 +248,8 @@ - - + + From a24a72e3d3f2bdc1b0a1968e9796c81d51d0a6ae Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 6 Aug 2013 12:04:16 +0530 Subject: [PATCH 010/171] [IMP] improved view by css bzr revid: tpa@tinyerp.com-20130806063416-8rrqtf3qb7j01sb2 --- addons/crm/static/src/css/crm.css | 11 +++++++++-- addons/sale_crm/sale_crm_view.xml | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 680c3a9bd88..8e8d95fe2f7 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -1,6 +1,7 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams { width: 345px; cursor: default; + min-height: 240px !important; } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars { text-align: right; @@ -55,12 +56,18 @@ font-size: 10px; } -.openerp .oe_kanban_view .oe_justgage { +.openerp .oe_kanban_view .oe_salesteams_justgage { color: black; display: inline-block; + bottom: 0; } .openerp .oe_kanban_view .oe_sparkline_bar { height: 20px; width: 36px !important; -} \ No newline at end of file +} + +.openerp .oe_kanban_view .oe_salesteams_help { + display: inline-block; +} + diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 22dff55531d..1546fbc27e6 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -297,11 +297,11 @@
-
+
Invoiced Forecast
-
+

Define an invoicing target in the sales team settings to see the period's achievement and forecast at a glance.
From 9daabe375448d13f03b9be7f154f01b9ee349108 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 6 Aug 2013 14:41:24 +0530 Subject: [PATCH 011/171] [IMP] show sales analysis based on cretion date for quatation and for sales based on confirm date. bzr revid: tpa@tinyerp.com-20130806091124-650f98bm7d1e004e --- addons/crm/crm_demo.xml | 2 ++ addons/crm/report/crm_lead_report.py | 11 ++++++----- addons/sale/report/sale_report.py | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/crm/crm_demo.xml b/addons/crm/crm_demo.xml index 2858250e86a..2cf7b104a3f 100644 --- a/addons/crm/crm_demo.xml +++ b/addons/crm/crm_demo.xml @@ -9,11 +9,13 @@ Indirect Sales IM + Marketing SPD + diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index 23347988573..ed4b6c4310a 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -116,11 +116,12 @@ class crm_lead_report(osv.osv): for group in res: group['user_currency_probable_revenue'] = 0 group['user_currency_planned_revenue'] = 0 - group_ids = self.search(cr, uid, group.get('__domain'),context=context) - record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) - for id, rec in record.iteritems(): - group['user_currency_planned_revenue'] += rec['user_currency_planned_revenue'] - group['user_currency_probable_revenue'] += rec['user_currency_probable_revenue'] + if group.get('__domain'): + group_ids = self.search(cr, uid, group.get('__domain'),context=context) + record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) + for id, rec in record.iteritems(): + group['user_currency_planned_revenue'] += rec['user_currency_planned_revenue'] + group['user_currency_probable_revenue'] += rec['user_currency_probable_revenue'] return res def init(self, cr): diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index d2f7849a958..9b2728c1668 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -70,9 +70,9 @@ class sale_report(osv.osv): 1 as nbr, s.date_order as date, s.date_confirm as date_confirm, - to_char(s.date_order, 'YYYY') as year, - to_char(s.date_order, 'MM') as month, - to_char(s.date_order, 'YYYY-MM-DD') as day, + case when (s.state='draft') then to_char(s.date_order, 'YYYY') else to_char(s.date_confirm, 'YYYY') end as year, + case when (s.state='draft') then to_char(s.date_order, 'MM') else to_char(s.date_confirm, 'MM') end as month, + case when (s.state='draft') then to_char(s.date_order, 'YYYY-MM-DD') else to_char(s.date_confirm, 'YYYY-MM-DD') end as day, s.partner_id as partner_id, s.user_id as user_id, s.company_id as company_id, From 5323abfafce039fe14162cc1e1c4e3cd3df2d6ad Mon Sep 17 00:00:00 2001 From: "Chirag Dodiya (OpenERP Trainee)" Date: Tue, 6 Aug 2013 14:44:13 +0530 Subject: [PATCH 012/171] [IMP] Improved css for kanbanview of Sales Teams bzr revid: chiragdd7@gmail.com-20130806091413-yf8xyc5xvcpcc3m2 --- addons/crm/static/src/css/crm.css | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 8e8d95fe2f7..ddb60fb2e98 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -57,6 +57,7 @@ } .openerp .oe_kanban_view .oe_salesteams_justgage { + position: absolute; color: black; display: inline-block; bottom: 0; From 90983ace491a1d73c500b31f74d4762927bbcdfc Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 6 Aug 2013 16:57:13 +0530 Subject: [PATCH 013/171] [IMP] add demo user in direct sales team also. bzr revid: tpa@tinyerp.com-20130806112713-l11uio6f6sgzzfc5 --- addons/crm/crm_demo.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/crm/crm_demo.xml b/addons/crm/crm_demo.xml index 2cf7b104a3f..82bdcd8fcd9 100644 --- a/addons/crm/crm_demo.xml +++ b/addons/crm/crm_demo.xml @@ -6,6 +6,10 @@ + + + + Indirect Sales IM From f8d47a4a1d6ce1f44fc5f5f86d135cdb413e11bf Mon Sep 17 00:00:00 2001 From: "Ravi Gohil (OpenERP)" Date: Wed, 7 Aug 2013 15:16:30 +0530 Subject: [PATCH 014/171] [FIX] crm: While processing the 'Convert to Opportunity' wizard in leads view, if the system found matching partner from the information provided in lead and suggested that partner in the wizard, and later if we decided not to link the opportunity to existing partner but to create a new one, it never create one, but will link to the priorly suggested partner: (Maintenance Case : 596231) lp bug: https://launchpad.net/bugs/1208436 fixed bzr revid: rgo@tinyerp.com-20130807094630-efk7yo1ia27vpq5i --- addons/crm/wizard/crm_lead_to_opportunity.py | 3 +++ addons/crm/wizard/crm_lead_to_opportunity_view.xml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py index 3c847ade42a..1c8b8331b47 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity.py +++ b/addons/crm/wizard/crm_lead_to_opportunity.py @@ -37,6 +37,9 @@ class crm_lead2opportunity_partner(osv.osv_memory): 'opportunity_ids': fields.many2many('crm.lead', string='Opportunities'), } + def onchange_action(self, cr, uid, ids, action, context=None): + return {'value': {'partner_id': False if action != 'exist' else self._find_matching_partner(cr, uid, context=context)}} + def default_get(self, cr, uid, fields, context=None): """ Default get for name, opportunity_ids. diff --git a/addons/crm/wizard/crm_lead_to_opportunity_view.xml b/addons/crm/wizard/crm_lead_to_opportunity_view.xml index 00686de1c8e..9f7701a1752 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity_view.xml +++ b/addons/crm/wizard/crm_lead_to_opportunity_view.xml @@ -27,7 +27,7 @@ - + From ac12aa981a4fc7c2dbbabaa65831f5415751a128 Mon Sep 17 00:00:00 2001 From: "Chirag Dodiya (OpenERP Trainee)" Date: Thu, 8 Aug 2013 11:19:40 +0530 Subject: [PATCH 015/171] [IMP] Improved Sale Analysis report bzr revid: chiragdd7@gmail.com-20130808054940-b1a8ikj4hd49rpru --- addons/sale/report/sale_report.py | 22 ++++++++++++++++++++++ addons/sale/report/sale_report_view.xml | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index d2f7849a958..42a3c3d7cbf 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -27,6 +27,17 @@ class sale_report(osv.osv): _description = "Sales Orders Statistics" _auto = False _rec_name = 'date' + def _compute_total_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): + """Compute the Price total in the currency of the user + """ + res = {} + currency_obj = self.pool.get('res.currency') + user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + for item in self.browse(cr, uid, ids, context=context): + res[item.id] = { + 'user_price_total': currency_obj.compute(cr, uid, item.pricelist_id.currency_id.id, user_currency_id, item.price_total, context=context), + } + return res _columns = { 'date': fields.date('Date Order', readonly=True), 'date_confirm': fields.date('Date Confirm', readonly=True), @@ -57,6 +68,7 @@ class sale_report(osv.osv): ], 'Order Status', readonly=True), 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True), 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True), + 'user_price_total': fields.function(_compute_total_in_user_currency, string="Total Price", type='float',digits=(16,2), multi="_compute_amounts", readonly=True), } _order = 'date desc' @@ -113,6 +125,16 @@ class sale_report(osv.osv): """ return group_by_str + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): + res = super(sale_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) + for group in res: + group['user_price_total'] = 0 + group_ids = self.search(cr, uid, group.get('__domain'),context=context) + record = self._compute_total_in_user_currency(cr, uid, group_ids, context=context) + for id, rec in record.iteritems(): + group['user_price_total'] += rec['user_price_total'] + return res + def init(self, cr): # self._table = sale_report tools.drop_view_if_exists(cr, self._table) diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index 28a6f83936a..1b22f9b75d6 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -20,7 +20,7 @@ - + From c80f7589895fd2b53c4d32e73bc432648e46490c Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP Trainee)" Date: Thu, 8 Aug 2013 11:23:54 +0530 Subject: [PATCH 016/171] [IMP]:Account:account_invoice_report.py bzr revid: sunilsharma.sharma07@gmail.com-20130808055354-0379xbn60gbcmvsc --- addons/account/report/account_invoice_report.py | 15 ++++++++++++++- .../report/account_invoice_report_view.xml | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index d8dc45f9a3b..8674e71e109 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -29,7 +29,7 @@ class account_invoice_report(osv.osv): _auto = False _rec_name = 'date' - def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): + def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): """Compute the amounts in the currency of the user """ if context is None: @@ -103,6 +103,19 @@ class account_invoice_report(osv.osv): } _order = 'date desc' + #FIX:To show sum of values of function fields in groupby + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): + res = super(account_invoice_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) + for group in res: + group['user_currency_price_total'] = 0 + group_ids = self.search(cr, uid, group.get('__domain'),context=context) + record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) + for id, rec in record.iteritems(): + group['user_currency_price_total'] += rec['user_currency_price_total'] + + return res + + def _select(self): select_str = """ SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, sub.country_id, diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml index 5f38db5e71f..4c297fd52e8 100644 --- a/addons/account/report/account_invoice_report_view.xml +++ b/addons/account/report/account_invoice_report_view.xml @@ -30,7 +30,7 @@ - + @@ -41,7 +41,7 @@ - + From 3fa52479281b91684075c3e307a80616b57d8d49 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 8 Aug 2013 14:46:45 +0530 Subject: [PATCH 017/171] [IMP] improved code to show invoice analysis report amounts in current user currency. bzr revid: tpa@tinyerp.com-20130808091645-8loajee0ss41d1u4 --- addons/account/report/account_invoice_report.py | 12 ++++++++++++ .../account/report/account_invoice_report_view.xml | 4 ++-- addons/crm/static/src/css/crm.css | 1 - 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index d8dc45f9a3b..6fac59607c2 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -103,6 +103,18 @@ class account_invoice_report(osv.osv): } _order = 'date desc' + #FIX:To show sum of values of function fields in groupby + def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): + res = super(account_invoice_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) + for group in res: + group['user_currency_price_total'] = 0 + if group.get('__domain'): + group_ids = self.search(cr, uid, group.get('__domain'),context=context) + record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) + for id, rec in record.iteritems(): + group['user_currency_price_total'] += rec['user_currency_price_total'] + return res + def _select(self): select_str = """ SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, sub.country_id, diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml index 5f38db5e71f..4c297fd52e8 100644 --- a/addons/account/report/account_invoice_report_view.xml +++ b/addons/account/report/account_invoice_report_view.xml @@ -30,7 +30,7 @@ - + @@ -41,7 +41,7 @@ - + diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 8e8d95fe2f7..09d8bb30229 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -1,7 +1,6 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams { width: 345px; cursor: default; - min-height: 240px !important; } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars { text-align: right; From 38f4192a91774a9eb957134d5eb8c43ba26b5e91 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 8 Aug 2013 14:54:29 +0530 Subject: [PATCH 018/171] [IMP] pass default value for arguments bzr revid: tpa@tinyerp.com-20130808092429-h1nvz0gtn5mqzm5w --- addons/account/report/account_invoice_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index 6fac59607c2..ef9478faf0a 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -29,7 +29,7 @@ class account_invoice_report(osv.osv): _auto = False _rec_name = 'date' - def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): + def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): """Compute the amounts in the currency of the user """ if context is None: From 418c77da3026df95004ce98eca8a305fc04c0f42 Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP Trainee)" Date: Tue, 13 Aug 2013 12:03:15 +0530 Subject: [PATCH 019/171] [IMP]:User_Currency: bzr revid: sunilsharma.sharma07@gmail.com-20130813063315-i45q7dykm6sp3a94 --- addons/crm/crm.py | 10 ++++++++-- addons/sale_crm/sale_crm.py | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 137f619f2e3..0ac2e887e72 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -144,9 +144,15 @@ class crm_case_section(osv.osv): if inner_groupby: groupby_company = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) for groupby in groupby_company: - company = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context) + if inner_groupby[0] == 'company_id': + company = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context) + base_currency_id = company.currency_id.id + elif inner_groupby[0] == 'pricelist_id': + base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id + else : + base_currency_id = groupby['__domain'][0][2] user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - value = self.pool.get('res.currency').compute(cr, uid, company.currency_id.id, user.company_id.currency_id.id, groupby.get(value_field, 0)) + value = self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, groupby.get(value_field, 0)) section_result[month]['value'] = section_result[month]['value'] + value return section_result diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 634df104d34..5333016b620 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -52,9 +52,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', groupby_begin)] - res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) + res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order','pricelist_id'], 'amount_total', ['date_order','pricelist_id'], context=context) validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', groupby_begin)] - res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm'], 'amount_total', 'date_confirm', context=context) + res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm','pricelist_id'], 'amount_total', ['date_confirm','pricelist_id'], context=context) return res def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): @@ -64,7 +64,7 @@ class crm_case_section(osv.osv): groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', groupby_begin)] - res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context) + res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date','currency_id'], 'price_total', ['date','currency_id'], context=context) return res def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): From 73ff1e657dcd2f4e4a53cf040692e9bd20c73775 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 16 Aug 2013 18:37:10 +0530 Subject: [PATCH 020/171] [FIX] show error messge when we move recored in kanban. bzr revid: tpa@tinyerp.com-20130816130710-ec5x1k7tn86dejk1 --- addons/web_kanban/static/src/js/kanban.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 6f47f9c128d..7dd7c56a0b6 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -436,7 +436,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({ new_group.do_save_sequences(); }).fail(function(error, evt) { evt.preventDefault(); - alert(_t("An error has occured while moving the record to this group: ") + data.message); + alert(_t("An error has occured while moving the record to this group: ") + error.data.message); self.do_reload(); // TODO: use draggable + sortable in order to cancel the dragging when the rcp fails }); } From a3508b45d7a23053a95468a1a9560951283378bf Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 16 Aug 2013 18:57:54 +0530 Subject: [PATCH 021/171] [IMP] improved code to show invoice bar value bzr revid: tpa@tinyerp.com-20130816132754-tgnd3xoi9v3o5711 --- addons/crm/crm.py | 2 -- addons/sale_crm/sale_crm.py | 4 ++-- addons/sale_crm/sale_crm_view.xml | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 0f9759a77d5..a9479000b3e 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -136,8 +136,6 @@ class crm_case_section(osv.osv): base_currency_id = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id elif inner_groupby[0] == 'pricelist_id': base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id - else : - base_currency_id = groupby['__domain'][0][2] user = self.pool.get('res.users').browse(cr, uid, uid, context=context) value = self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, groupby.get(value_field, 0)) section_result[month]['value'] = section_result[month]['value'] + value diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 5333016b620..c48c874b48d 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -64,7 +64,7 @@ class crm_case_section(osv.osv): groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', groupby_begin)] - res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date','currency_id'], 'price_total', ['date','currency_id'], context=context) + res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['date'], 'user_currency_price_total', 'date', context=context) return res def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): @@ -103,7 +103,7 @@ class crm_case_section(osv.osv): } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'invoiced_forecast': int(value)}, context=context) + return self.write(cr, uid, [id], {'invoiced_forecast': int(float(value))}, context=context) def write(self, cr, uid, ids, vals, context=None): currency_obj = self.pool.get('res.currency') diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 0526efebd7d..3656fa0719a 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -236,7 +236,7 @@ account.invoice.report form tree,graph - [('state','=','paid'),('section_id', '=', active_id)] + [('section_id', '=', active_id)] {'search_default_month':1} From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs. From f76b2078aa312b952a97552add00fc24d46fdaa3 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 19 Aug 2013 11:15:16 +0530 Subject: [PATCH 022/171] [IMP] imrpved code to remove error of undefined record bzr revid: tpa@tinyerp.com-20130819054516-je0uzg0jlsap909r --- addons/crm/static/src/js/crm_case_section.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js index a281e4bb0f1..5c76668849e 100644 --- a/addons/crm/static/src/js/crm_case_section.js +++ b/addons/crm/static/src/js/crm_case_section.js @@ -17,10 +17,14 @@ var _t = openerp.web._t; setTimeout(function () { var value = _.pluck(self.field.value, 'value'); var tooltips = _.pluck(self.field.value, 'tooltip'); + var currency_symbol = ""; + if (self.getParent()){ + currency_symbol = self.getParent().record.currency_symbol.raw_value; + }; self.$el.sparkline(value, { type: 'bar', barWidth: 5, - tooltipFormat: _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? _t('Lead(s)') : self.getParent().record.currency_symbol.raw_value), + tooltipFormat: _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? _t('Lead(s)') : currency_symbol), tooltipValueLookups: { 'offset': tooltips }, From ee9b75603f0dc777736a039dbf3ebb04c9e1062e Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 21 Aug 2013 16:41:13 +0530 Subject: [PATCH 023/171] [IMP] insted of replacing int field with function and add new int fied add new function field only, use fnct_inv insted of overwriting write method. bzr revid: tpa@tinyerp.com-20130821111113-5n022roofguvea0f --- addons/sale_crm/sale_crm.py | 33 ++++++++++++++----------------- addons/sale_crm/sale_crm_demo.xml | 8 ++++---- addons/sale_crm/sale_crm_view.xml | 16 +++++++-------- 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index b463eca6bb4..af5973b8e3e 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -75,17 +75,27 @@ class crm_case_section(osv.osv): for item in self.browse(cr, uid, ids, context=context): base_currency_id = item.user_id.company_id.currency_id.id if item.user_id else item.create_uid.company_id.currency_id.id res[item.id] = { - 'invoiced_forecast': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.base_invoiced_forecast, context=context), - 'invoiced_target': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.base_invoiced_target, context=context), + 'user_currency_invoiced_forecast': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.invoiced_forecast, context=context), + 'user_currency_invoiced_target': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.invoiced_target, context=context), } return res + def _set_forecast_target(self, cr, uid, team_id, name, value, arg, context=None): + user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id + team = self.browse(cr, uid, team_id, context=context) + base_currency_id = team.user_id.company_id.currency_id.id if team.user_id else team.create_uid.company_id.currency_id.id + amount = self.pool.get('res.currency').compute(cr, uid, user_currency_id, base_currency_id, value, context=context) + self.write(cr, uid, [team_id], {name.strip("user_currency"): amount}, context=context) + return True + _columns = { - 'invoiced_forecast': fields.function(_compute_amounts_in_user_currency, string='Invoice Forecast',type='integer', multi="_compute_amounts", + 'invoiced_forecast': fields.integer("Invoice Forecast"), + 'user_currency_invoiced_forecast': fields.function(_compute_amounts_in_user_currency, fnct_inv=_set_forecast_target, string='Invoice Forecast',type='integer', multi="_compute_amounts", help="Forecast of the invoice revenue for the current month. This is the amount the sales \n" "team should invoice this month. It is used to compute the progression ratio \n" " of the current and forecast revenue on the kanban view."), - 'invoiced_target': fields.function(_compute_amounts_in_user_currency,string='Invoice Target',type='integer', multi="_compute_amounts", + 'invoiced_target': fields.integer("Invoice Target"), + 'user_currency_invoiced_target': fields.function(_compute_amounts_in_user_currency, fnct_inv=_set_forecast_target, string='Invoice Target',type='integer', multi="_compute_amounts", help="Target of invoice revenue for the current month. This is the amount the sales \n" "team estimates to be able to invoice this month."), 'monthly_quoted': fields.function(_get_sale_orders_data, @@ -97,24 +107,11 @@ class crm_case_section(osv.osv): 'monthly_invoiced': fields.function(_get_invoices_data, type='string', readonly=True, string='Rate of sent invoices per duration'), - 'base_invoiced_forecast': fields.integer(string="Invoice Forecast"), - 'base_invoiced_target': fields.integer(string="Invoice Target"), 'create_uid': fields.many2one('res.users', 'Create User'), } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'invoiced_forecast': int(float(value))}, context=context) - - def write(self, cr, uid, ids, vals, context=None): - currency_obj = self.pool.get('res.currency') - user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id - for item in self.browse(cr, uid, ids, context=context): - base_currency_id = item.user_id.company_id.currency_id.id if item.user_id else item.create_uid.company_id.currency_id.id - if vals.get('invoiced_forecast'): - vals['base_invoiced_forecast'] = currency_obj.compute(cr, uid, user_currency_id, base_currency_id, vals['invoiced_forecast'], context=context) - if vals.get('invoiced_target'): - vals['base_invoiced_target'] = currency_obj.compute(cr, uid, user_currency_id, base_currency_id, vals['invoiced_target'], context=context) - return super(crm_case_section, self).write(cr, uid, ids, vals, context=context) + return self.write(cr, uid, [id], {'user_currency_invoiced_forecast': int(float(value))}, context=context) class res_users(osv.Model): _inherit = 'res.users' diff --git a/addons/sale_crm/sale_crm_demo.xml b/addons/sale_crm/sale_crm_demo.xml index 3eff4061aa1..0c2822719dd 100644 --- a/addons/sale_crm/sale_crm_demo.xml +++ b/addons/sale_crm/sale_crm_demo.xml @@ -3,15 +3,15 @@ - 52700 - 60000 + 52700 + 60000 Indirect Sales IM - 36000 - 40000 + 36000 + 40000 diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 7e4bca1d817..47d850c96fe 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -248,8 +248,8 @@ - - + + @@ -265,8 +265,8 @@ - - + +
@@ -297,11 +297,11 @@
-
- Invoiced - Forecast +
+ Invoiced + Forecast
-
+

Define an invoicing target in the sales team settings to see the period's achievement and forecast at a glance.
From b63f89a74ea0c0ab8ef811069164fd6396e61ee0 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 4 Sep 2013 16:55:40 +0530 Subject: [PATCH 024/171] [RMV] remove improvemets to calculate amount based on currency from analysis reports. bzr revid: tpa@tinyerp.com-20130904112540-4ovecz1mpjkok7ge --- .../account/report/account_invoice_report.py | 14 +-------- .../report/account_invoice_report_view.xml | 4 +-- addons/crm/report/crm_lead_report.py | 29 ------------------- addons/crm/report/crm_lead_report_view.xml | 8 ++--- addons/sale/report/sale_report.py | 23 +-------------- 5 files changed, 8 insertions(+), 70 deletions(-) diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index ef9478faf0a..c08ea91e2ea 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -29,7 +29,7 @@ class account_invoice_report(osv.osv): _auto = False _rec_name = 'date' - def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): + def def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): """Compute the amounts in the currency of the user """ if context is None: @@ -103,18 +103,6 @@ class account_invoice_report(osv.osv): } _order = 'date desc' - #FIX:To show sum of values of function fields in groupby - def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): - res = super(account_invoice_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) - for group in res: - group['user_currency_price_total'] = 0 - if group.get('__domain'): - group_ids = self.search(cr, uid, group.get('__domain'),context=context) - record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) - for id, rec in record.iteritems(): - group['user_currency_price_total'] += rec['user_currency_price_total'] - return res - def _select(self): select_str = """ SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, sub.country_id, diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml index 4c297fd52e8..5f38db5e71f 100644 --- a/addons/account/report/account_invoice_report_view.xml +++ b/addons/account/report/account_invoice_report_view.xml @@ -30,7 +30,7 @@ - + @@ -41,7 +41,7 @@ - + diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index c2f1c0b496e..f379e068b30 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -45,19 +45,6 @@ class crm_lead_report(osv.osv): _description = "CRM Lead Analysis" _rec_name = 'deadline_day' - def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): - """Compute the amounts in the currency of the user - """ - res = {} - currency_obj = self.pool.get('res.currency') - user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id - for item in self.browse(cr, uid, ids, context=context): - res[item.id] = { - 'user_currency_planned_revenue': currency_obj.compute(cr, uid, item.company_id.currency_id.id, user_currency_id, item.planned_revenue, context=context), - 'user_currency_probable_revenue': currency_obj.compute(cr, uid, item.company_id.currency_id.id, user_currency_id, item.probable_revenue, context=context), - } - return res - _columns = { # grouping fields based on Deadline Date 'deadline_year': fields.char('Ex. Closing Year', size=10, readonly=True, help="Expected closing year"), @@ -88,9 +75,7 @@ class crm_lead_report(osv.osv): 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'probability': fields.float('Probability',digits=(16,2),readonly=True, group_operator="avg"), 'planned_revenue': fields.float('Planned Revenue',digits=(16,2),readonly=True), - 'user_currency_planned_revenue': fields.function(_compute_amounts_in_user_currency, string="Planned Revenue", type='float',digits=(16,2), multi="_compute_amounts", readonly=True), 'probable_revenue': fields.float('Probable Revenue', digits=(16,2),readonly=True), - 'user_currency_probable_revenue': fields.function(_compute_amounts_in_user_currency, string="Probable Revenue", type='float',digits=(16,2), multi="_compute_amounts",readonly=True), 'stage_id': fields.many2one ('crm.case.stage', 'Stage', readonly=True, domain="[('section_ids', '=', section_id)]"), 'partner_id': fields.many2one('res.partner', 'Partner' , readonly=True), 'nbr': fields.integer('# of Cases', readonly=True), @@ -101,20 +86,6 @@ class crm_lead_report(osv.osv): ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"), } - - #FIX:To show sum of values of function fields in groupby - def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): - res = super(crm_lead_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) - for group in res: - group['user_currency_probable_revenue'] = 0 - group['user_currency_planned_revenue'] = 0 - if group.get('__domain'): - group_ids = self.search(cr, uid, group.get('__domain'),context=context) - record = self._compute_amounts_in_user_currency(cr, uid, group_ids, context=context) - for id, rec in record.iteritems(): - group['user_currency_planned_revenue'] += rec['user_currency_planned_revenue'] - group['user_currency_probable_revenue'] += rec['user_currency_probable_revenue'] - return res def init(self, cr): """ diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index f718d7a9bf8..c7220fe66f2 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -28,7 +28,7 @@ - + @@ -53,7 +53,7 @@ - + @@ -148,13 +148,13 @@ - + - + diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py index fb7ac78c3e0..969df76398c 100644 --- a/addons/sale/report/sale_report.py +++ b/addons/sale/report/sale_report.py @@ -27,17 +27,7 @@ class sale_report(osv.osv): _description = "Sales Orders Statistics" _auto = False _rec_name = 'date' - def _compute_total_in_user_currency(self, cr, uid, ids, field_names=[], args={}, context=None): - """Compute the Price total in the currency of the user - """ - res = {} - currency_obj = self.pool.get('res.currency') - user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id - for item in self.browse(cr, uid, ids, context=context): - res[item.id] = { - 'user_price_total': currency_obj.compute(cr, uid, item.pricelist_id.currency_id.id, user_currency_id, item.price_total, context=context), - } - return res + _columns = { 'date': fields.date('Date Order', readonly=True), 'date_confirm': fields.date('Date Confirm', readonly=True), @@ -68,7 +58,6 @@ class sale_report(osv.osv): ], 'Order Status', readonly=True), 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True), 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True), - 'user_price_total': fields.function(_compute_total_in_user_currency, string="Total Price", type='float',digits=(16,2), multi="_compute_amounts", readonly=True), } _order = 'date desc' @@ -125,16 +114,6 @@ class sale_report(osv.osv): """ return group_by_str - def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False): - res = super(sale_report, self).read_group(cr, uid, domain, fields, groupby, offset, limit, context, orderby) - for group in res: - group['user_price_total'] = 0 - group_ids = self.search(cr, uid, group.get('__domain'),context=context) - record = self._compute_total_in_user_currency(cr, uid, group_ids, context=context) - for id, rec in record.iteritems(): - group['user_price_total'] += rec['user_price_total'] - return res - def init(self, cr): # self._table = sale_report tools.drop_view_if_exists(cr, self._table) From 6e1b899aa98cc250ed82d0540eb9f1c7e8a93a9d Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 4 Sep 2013 17:13:35 +0530 Subject: [PATCH 025/171] [IMP] improved code bzr revid: tpa@tinyerp.com-20130904114335-jfptxzwdgt2xjzm1 --- addons/account/report/account_invoice_report.py | 2 +- addons/crm/report/crm_lead_report.py | 3 ++- addons/sale/report/sale_report_view.xml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index c08ea91e2ea..d8dc45f9a3b 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -29,7 +29,7 @@ class account_invoice_report(osv.osv): _auto = False _rec_name = 'date' - def def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): + def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): """Compute the amounts in the currency of the user """ if context is None: diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index f379e068b30..ac1e10a84c6 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -86,8 +86,9 @@ class crm_lead_report(osv.osv): ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"), } - + def init(self, cr): + """ CRM Lead Report @param cr: the current row, from the database cursor diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml index 1b22f9b75d6..28a6f83936a 100644 --- a/addons/sale/report/sale_report_view.xml +++ b/addons/sale/report/sale_report_view.xml @@ -20,7 +20,7 @@ - + From e7764209b74cd68bc561e1ee3ab83ce06862e63f Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 5 Sep 2013 12:44:04 +0530 Subject: [PATCH 026/171] [FIX] improved code for invoice sparkline bar bzr revid: tpa@tinyerp.com-20130905071404-dlgdeovxarfa9pg6 --- addons/crm/crm.py | 8 +++++--- addons/sale_crm/sale_crm.py | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index a9479000b3e..b3c560f084d 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -129,13 +129,15 @@ class crm_case_section(osv.osv): if type == "Lead" or not inner_groupby: section_result[month]['value'] = group.get(value_field, 0) continue - if inner_groupby: - groupby_company = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) - for groupby in groupby_company: + elif inner_groupby: + inner_group_obj = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) + for groupby in inner_group_obj: if inner_groupby[0] == 'company_id': base_currency_id = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id elif inner_groupby[0] == 'pricelist_id': base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id + elif inner_groupby[0] == 'currency_id': + base_currency_id = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context)[0]['currency_id'][0] user = self.pool.get('res.users').browse(cr, uid, uid, context=context) value = self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, groupby.get(value_field, 0)) section_result[month]['value'] = section_result[month]['value'] + value diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index af5973b8e3e..63017171322 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -52,9 +52,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', groupby_begin)] - res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order','pricelist_id'], 'amount_total', ['date_order','pricelist_id'], context=context) + res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order', 'pricelist_id'], 'amount_total', ['date_order', 'pricelist_id'], context=context) validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', groupby_begin)] - res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm','pricelist_id'], 'amount_total', ['date_confirm','pricelist_id'], context=context) + res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm', 'pricelist_id'], 'amount_total', ['date_confirm', 'pricelist_id'], context=context) return res def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): @@ -64,7 +64,7 @@ class crm_case_section(osv.osv): groupby_begin = (month_begin + relativedelta.relativedelta(months=-4)).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', groupby_begin)] - res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['date'], 'user_currency_price_total', 'date', context=context) + res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date', 'currency_id'], 'price_total', ['date', 'currency_id'], context=context) return res def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): From 17b89198ab3d59c17ce3e57d635d27756c7c91b3 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 6 Sep 2013 16:46:55 +0530 Subject: [PATCH 027/171] [FIX] round amount insted of converting in to int. bzr revid: tpa@tinyerp.com-20130906111655-f6na9nvtot6t7wdd --- addons/sale_crm/sale_crm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 63017171322..0369a62b7fa 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -111,7 +111,7 @@ class crm_case_section(osv.osv): } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'user_currency_invoiced_forecast': int(float(value))}, context=context) + return self.write(cr, uid, [id], {'user_currency_invoiced_forecast': round(float(value))}, context=context) class res_users(osv.Model): _inherit = 'res.users' From 3413d5364fe1eddafd467b69782e96877d8d3a49 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 9 Sep 2013 11:28:58 +0530 Subject: [PATCH 028/171] [IMP] improved domain on invoice analysis report action bzr revid: tpa@tinyerp.com-20130909055858-yvf28wwpixak1kdy --- addons/sale_crm/sale_crm_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 47d850c96fe..c3458f3f1a3 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -236,7 +236,7 @@ account.invoice.report form tree,graph - [('section_id', '=', active_id)] + [('section_id', '=', active_id),('state', 'not in', ['draft', 'cancel'])] {'search_default_month':1} From this report, you can have an overview of the amount invoiced to your customer. The tool search can also be used to personalise your Invoices reports and so, match this analysis to your needs. From da358b54ab12b175d673a067132eaa5df16af449 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 16 Sep 2013 18:37:00 +0530 Subject: [PATCH 029/171] [IMP] improved code to show bar required help and with delay bzr revid: tpa@tinyerp.com-20130916130700-e9ipoezcjeyva3mb --- addons/crm/crm_case_section_view.xml | 4 +-- addons/crm/static/src/js/crm_case_section.js | 37 +++++++------------- addons/sale_crm/sale_crm_view.xml | 6 ++-- 3 files changed, 17 insertions(+), 30 deletions(-) diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml index b5e23fec324..78727b396d3 100644 --- a/addons/crm/crm_case_section_view.xml +++ b/addons/crm/crm_case_section_view.xml @@ -144,11 +144,11 @@
diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js index 5c76668849e..83e4205f4e5 100644 --- a/addons/crm/static/src/js/crm_case_section.js +++ b/addons/crm/static/src/js/crm_case_section.js @@ -9,30 +9,17 @@ var _t = openerp.web._t; } }, }); - openerp.crm.SparklineBarWidget = openerp.web_kanban.AbstractField.extend({ - className: "oe_sparkline_bar", - start: function() { - var self = this; - var title = this.$node.html(); - setTimeout(function () { - var value = _.pluck(self.field.value, 'value'); - var tooltips = _.pluck(self.field.value, 'tooltip'); - var currency_symbol = ""; - if (self.getParent()){ - currency_symbol = self.getParent().record.currency_symbol.raw_value; - }; - self.$el.sparkline(value, { - type: 'bar', - barWidth: 5, - tooltipFormat: _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? _t('Lead(s)') : currency_symbol), - tooltipValueLookups: { - 'offset': tooltips - }, - }); - self.$el.tipsy({'delayIn': 3000, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); - }, 0); - }, - }); - openerp.web_kanban.fields_registry.add("sparkline_bar", "openerp.crm.SparklineBarWidget"); + openerp.web_kanban.SparklineBarWidgetSalesTeam = openerp.web_kanban.SparklineBarWidget.extend({ + set_offset:function(){ + var self = this; + var currency_symbol = ""; + if (self.getParent()){ + currency_symbol = self.getParent().record.currency_symbol.raw_value; + }; + return _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? _t('Lead(s)') : currency_symbol) + } + }); + +openerp.web_kanban.fields_registry.add("sparkline_bar_sales", "openerp.web_kanban.SparklineBarWidgetSalesTeam"); }; diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index c7d3dc42292..c31e87bdf28 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -272,7 +272,7 @@
Sales Orders - + Revenue of confirmed sales orders per month.
Click to acces the Sales Analysis.
@@ -282,7 +282,7 @@
Invoices - + Revenue of sent invoices per month.
Click to see a detailed analysis of invoices.
@@ -290,7 +290,7 @@
Quotations - + Revenue of created quotations per month.
Click to see a detailed analysis.
From 3cdc986c0c7b7908c8c97176086b599cfa97f531 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Mon, 16 Sep 2013 18:38:25 +0530 Subject: [PATCH 030/171] [IMP] improved code to pass tooltip delay in option and added function so we can set requred help in inherited modules. bzr revid: tpa@tinyerp.com-20130916130825-pciwsn0doshstrp2 --- .../static/src/js/kanban_gauge.js | 28 +++++++++++++------ .../static/src/js/kanban_sparkline.js | 7 +++-- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js index cb2faf6874b..60cbdf1ddd8 100644 --- a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js +++ b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js @@ -4,7 +4,8 @@ openerp.web_kanban_gauge = function (instance) { * Kanban widgets: GaugeWidget * */ - +var _t = instance.web._t, + _lt = instance.web._lt; instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({ className: "oe_gauge", start: function() { @@ -77,13 +78,19 @@ instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({ $input.focus() .keydown(function (event) { event.stopPropagation(); - if (event.keyCode == 13 || event.keyCode == 9) { - if ($input.val() != value) { - parent.view.dataset.call(self.options.action_change, [parent.id, $input.val()]).then(function () { - parent.do_reload(); - }); - } else { - $div.remove(); + if(isNaN($input.val())){ + self.do_warn(_t("Wrong value entered!"), _t("Only Integer Value should be valid.")); + $div.remove(); + } else { + if (event.keyCode == 13 || event.keyCode == 9) { + var val = self.parse_client($input.val()); + if ($input.val() != value) { + parent.view.dataset.call(self.options.action_change, [parent.id, $input.val()]).then(function () { + parent.do_reload(); + }); + } else { + $div.remove(); + } } } }) @@ -112,6 +119,11 @@ instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({ } } }, + + parse_client: function(value) { + return openerp.web.parse_value(value, { type:"integer" }); + }, + }); instance.web_kanban.fields_registry.add("gauge", "instance.web_kanban.GaugeWidget"); diff --git a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js index de21cbba945..68703d90585 100644 --- a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js +++ b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js @@ -20,15 +20,18 @@ instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.exten barWidth: 4, barSpacing: 1, barColor: '#96d854', - tooltipFormat: '{{offset:offset}} {{value}}', + tooltipFormat: self.set_offset(), tooltipValueLookups: { 'offset': tooltips } }, self.options); self.$el.sparkline(value, sparkline_options); - self.$el.tipsy({'delayIn': 0, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); + self.$el.tipsy({'delayIn': self.options.delayIn || 0, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); }, 0); }, + set_offset: function(){ + return '{{offset:offset}} {{value}}'; + } }); instance.web_kanban.fields_registry.add("sparkline_bar", "instance.web_kanban.SparklineBarWidget"); From cce3b9138bc58afbd3ed9502c7ce50d588230e2d Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 11 Oct 2013 12:57:44 +0530 Subject: [PATCH 031/171] [IMP] improved code to set suffix in tooltip. bzr revid: tpa@tinyerp.com-20131011072744-pz4mcxbr4qbdrg79 --- .../static/src/js/kanban_sparkline.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js index db10299ddd2..630d5812f39 100644 --- a/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js +++ b/addons/web_kanban_sparkline/static/src/js/kanban_sparkline.js @@ -13,6 +13,11 @@ instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.exten setTimeout(function () { var value = _.pluck(self.field.value, 'value'); var tooltips = _.pluck(self.field.value, 'tooltip'); + var suffix = self.options.tooltip_suffix || ""; + if (self.options.tooltip_suffix_field) { + suffix = self.getParent().record[self.options.tooltip_suffix_field].raw_value; + } + var tooltipformat = _.str.sprintf("{{offset:offset}}: {{value}} %s", suffix); var sparkline_options = _.extend({ type: 'bar', barWidth: 5, @@ -20,7 +25,7 @@ instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.exten barWidth: 4, barSpacing: 1, barColor: '#96d854', - tooltipFormat: self.set_offset(), + tooltipFormat: tooltipformat, chartRangeMin: 0, tooltipValueLookups: { 'offset': tooltips @@ -30,9 +35,6 @@ instance.web_kanban.SparklineBarWidget = instance.web_kanban.AbstractField.exten self.$el.tipsy({'delayIn': self.options.delayIn || 0, 'html': true, 'title': function(){return title}, 'gravity': 'n'}); }, 0); }, - set_offset: function(){ - return '{{offset:offset}} {{value}}'; - } }); instance.web_kanban.fields_registry.add("sparkline_bar", "instance.web_kanban.SparklineBarWidget"); From 6279bcf4b3b37ec61c159e77a2603e8c61b592fd Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 11 Oct 2013 13:00:04 +0530 Subject: [PATCH 032/171] [IMP] improved code to set tooltip suffix in sparkline bar, pass suffix in opetion insted of overriding widget. bzr revid: tpa@tinyerp.com-20131011073004-0swv6l1aomjt71xp --- addons/crm/crm_case_section_view.xml | 4 ++-- addons/crm/static/src/js/crm_case_section.js | 14 -------------- addons/sale_crm/sale_crm_view.xml | 6 +++--- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml index 78727b396d3..7bc2b914e2c 100644 --- a/addons/crm/crm_case_section_view.xml +++ b/addons/crm/crm_case_section_view.xml @@ -144,11 +144,11 @@
diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js index 83e4205f4e5..e027313d6dc 100644 --- a/addons/crm/static/src/js/crm_case_section.js +++ b/addons/crm/static/src/js/crm_case_section.js @@ -1,5 +1,4 @@ openerp.crm = function(openerp) { -var _t = openerp.web._t; openerp.web_kanban.KanbanRecord.include({ on_card_clicked: function() { if (this.view.dataset.model === 'crm.case.section') { @@ -9,17 +8,4 @@ var _t = openerp.web._t; } }, }); - - openerp.web_kanban.SparklineBarWidgetSalesTeam = openerp.web_kanban.SparklineBarWidget.extend({ - set_offset:function(){ - var self = this; - var currency_symbol = ""; - if (self.getParent()){ - currency_symbol = self.getParent().record.currency_symbol.raw_value; - }; - return _.str.sprintf("{{offset:offset}}: {{value}} %s",self.$el.closest("div[class='oe_salesteams_leads']").attr('class') ? _t('Lead(s)') : currency_symbol) - } - }); - -openerp.web_kanban.fields_registry.add("sparkline_bar_sales", "openerp.web_kanban.SparklineBarWidgetSalesTeam"); }; diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 9e9cdbd415c..2e55ec8fa89 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -272,7 +272,7 @@
Sales Orders - + Revenue of confirmed sales orders per month.
Click to acces the Sales Analysis.
@@ -282,7 +282,7 @@
Invoices - + Revenue of sent invoices per month.
Click to see a detailed analysis of invoices.
@@ -290,7 +290,7 @@
Quotations - + Revenue of created quotations per month.
Click to see a detailed analysis.
From 62ba3155a0bc37579bc0ae184fcac8c588455ffa Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 11 Oct 2013 18:14:04 +0530 Subject: [PATCH 033/171] [IMP] remove type parameter from __get_bar_values and make base_currency_id alwas defined bzr revid: tpa@tinyerp.com-20131011124404-xoytwxfso8rg5lmb --- addons/crm/crm.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index bb4d13cf5aa..8f0e6a82591 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -100,7 +100,7 @@ class crm_case_section(osv.osv): def get_full_name(self, cr, uid, ids, field_name, arg, context=None): return dict(self.name_get(cr, uid, ids, context=context)) - def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, type=None, context=None): + def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, context=None): """ Generic method to generate data for bar chart values using SparklineBarWidget. This method performs obj.read_group(cr, uid, domain, read_fields, groupby_field). @@ -127,21 +127,22 @@ class crm_case_section(osv.osv): month = self._period_number - (relativedelta.relativedelta(month_begin, group_begin_date).months + 1) section_result[month] = {'value': 0, 'tooltip': group_begin_date.strftime('%B')} inner_groupby = (group.get('__context', {})).get('group_by',[]) - if type == "Lead" or not inner_groupby: + if value_field == 'create_date_count' or not inner_groupby: section_result[month]['value'] = group.get(value_field, 0) continue - elif inner_groupby: + if inner_groupby: inner_group_obj = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) for groupby in inner_group_obj: + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + base_currency_id = user.company_id.currency_id.id if inner_groupby[0] == 'company_id': base_currency_id = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id elif inner_groupby[0] == 'pricelist_id': base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id elif inner_groupby[0] == 'currency_id': base_currency_id = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context)[0]['currency_id'][0] - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) value = self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, groupby.get(value_field, 0)) - section_result[month]['value'] = section_result[month]['value'] + value + section_result[month]['value'] += value return section_result def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None): @@ -158,7 +159,7 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() lead_domain = date_domain + [('type', '=', 'lead'), ('section_id', '=', id)] - res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], type="Lead", context=context) + res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], context=context) opp_domain = date_domain + [('type', '=', 'opportunity'), ('section_id', '=', id)] res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date', 'company_id'], 'planned_revenue', ['create_date', 'company_id'], context=context) return res From adbffd1e14e0a47b847361f01e4533e6df8e491e Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Tue, 15 Oct 2013 16:08:18 +0530 Subject: [PATCH 034/171] [ADD]:sale_crrm: Added:sale_crm/tests/__init__.py sale_crm/tests/test_sale_crm_case.py bzr revid: sunilsharma.sharma07@gmail.com-20131015103818-ai34ff5rbv86wtgl --- addons/sale_crm/tests/__init__.py | 28 +++++ addons/sale_crm/tests/test_sale_crm_case.py | 120 ++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 addons/sale_crm/tests/__init__.py create mode 100644 addons/sale_crm/tests/test_sale_crm_case.py diff --git a/addons/sale_crm/tests/__init__.py b/addons/sale_crm/tests/__init__.py new file mode 100644 index 00000000000..fc04080875f --- /dev/null +++ b/addons/sale_crm/tests/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Business Applications +# Copyright (c) 2013-TODAY OpenERP S.A. +# +# 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 . +# +############################################################################## + +from . import test_sale_crm_case + +checks = [ + test_sale_crm_case, +] + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_crm/tests/test_sale_crm_case.py b/addons/sale_crm/tests/test_sale_crm_case.py new file mode 100644 index 00000000000..bfdbee312c7 --- /dev/null +++ b/addons/sale_crm/tests/test_sale_crm_case.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Business Applications +# Copyright (c) 2013-TODAY OpenERP S.A. +# +# 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 . +# +############################################################################## + +from openerp.addons.mail.tests.common import TestMail +from openerp.osv.orm import except_orm + +class TestSaleCrm(TestMail): + + def setUp(self): + super(TestSaleCrm, self).setUp() + cr, uid = self.cr, self.uid + +class TestSaleCrmCase(TestSaleCrm): + + def test_sale_crm_case(self): + """ Testing Sale Crm """ + + cr, uid, = self.cr, self.uid + + # Usefull models + ir_model_obj = self.registry('ir.model.data') + res_company_obj = self.registry('res.company') + res_users_obj = self.registry('res.users') + crm_case_section_obj = self.registry('crm.case.section') + crm_lead_obj = self.registry('crm.lead') + + # Find Direct Sales + direct_sales_ref = ir_model_obj.get_object_reference(cr, uid, 'crm' , 'section_sales_department') + + # for Opportunities + usd_ref = ir_model_obj.get_object_reference(cr, uid, 'base' , 'USD') + your_company_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'main_company') + + # Before opportunities + opportunities_before = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + + #I Create company with USD currency. + res_company_id = res_company_obj.create(cr, uid,{ + 'name': 'New Company', + 'currency_id': usd_ref and usd_ref[1] or False, + 'parent_id': your_company_ref and your_company_ref[1] or False + }) + + # Find Sale Manager group + group_sale_manager_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'group_sale_manager')[1] + + #I Create User of new company. + res_users_id = res_users_obj.create(cr, uid,{ + 'name': 'User', + 'login': 'admin@example.com', + 'company_id': res_company_id, + 'company_ids': [(6, 0, [res_company_id])], + 'email': 'admin@gmail.com', + 'groups_id': [(6, 0, [group_sale_manager_id])] + }) + + #I create Opportunitie for new created user + opportunities_id = crm_lead_obj.create(cr, res_users_id,{ + 'name': 'Opportunities', + 'type': 'opportunity', + 'planned_revenue': 10000, + 'user_id' : res_users_id, + 'section_id': direct_sales_ref and direct_sales_ref[1] or False + }) + + user_rate = res_company_obj.browse(cr, uid ,[res_company_id])[0].currency_id.rate_silent + + # After opportunities + opportunities_after = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + + #Assertion Error + self.assertTrue(int(opportunities_after[1]['monthly_planned_revenue'][4]['value']) == int(opportunities_before[1]['monthly_planned_revenue'][4]['value'] + (10000 / user_rate)), "Not Proper Currency Conversion for Opportunities") + + # Before Sale or Quotations + sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + + # Before Invoice + invoice_before = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + + #I Write company . + company_id = res_users_obj._get_company(cr, uid, context=False, uid2=False) + in_ref = ir_model_obj.get_object_reference(cr, uid, 'base' , 'INR') + res_company_obj.write(cr, uid,[company_id], { + 'currency_id': in_ref and in_ref[1] or False + }) + + # After Sale or Quotations + sale_order_after = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + + # After Invoice + invoice_after = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + + new_rate = res_company_obj.browse(cr, uid , [company_id])[0].currency_id.rate_silent + + #Assertion Error + for i in range(0,5): + # for Quotations + self.assertTrue(sale_order_before[1]['monthly_quoted'][i]['value'] * new_rate == sale_order_after[1]['monthly_quoted'][i]['value'], "Not Proper Currency Conversion for Quotations ") + # for sale odrer + self.assertTrue(sale_order_before[1]['monthly_confirmed'][i]['value'] * new_rate == sale_order_after[1]['monthly_confirmed'][i]['value'], "Not Proper Currency Conversion for Sale Order") + # for Invoice + self.assertTrue(invoice_before[1][i]['value'] * new_rate == invoice_after[1][i]['value'], "Not Proper Currency Conversion for Invoice") From e52f18cc9ab6d3cd5229ac650404a1020a439ac2 Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Thu, 17 Oct 2013 12:07:49 +0530 Subject: [PATCH 035/171] [IMP]:sale_crm:add Round function and improve Assertion msg bzr revid: sunilsharma.sharma07@gmail.com-20131017063749-mexdixqszsnwtu4q --- addons/sale_crm/tests/test_sale_crm_case.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/sale_crm/tests/test_sale_crm_case.py b/addons/sale_crm/tests/test_sale_crm_case.py index bfdbee312c7..1171c0759ed 100644 --- a/addons/sale_crm/tests/test_sale_crm_case.py +++ b/addons/sale_crm/tests/test_sale_crm_case.py @@ -87,7 +87,7 @@ class TestSaleCrmCase(TestSaleCrm): opportunities_after = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) #Assertion Error - self.assertTrue(int(opportunities_after[1]['monthly_planned_revenue'][4]['value']) == int(opportunities_before[1]['monthly_planned_revenue'][4]['value'] + (10000 / user_rate)), "Not Proper Currency Conversion for Opportunities") + self.assertTrue(round(opportunities_after[1]['monthly_planned_revenue'][4]['value']) == round(opportunities_before[1]['monthly_planned_revenue'][4]['value'] + (10000 / user_rate)), "Not Proper Currency Conversion for Opportunities") # Before Sale or Quotations sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) @@ -113,8 +113,9 @@ class TestSaleCrmCase(TestSaleCrm): #Assertion Error for i in range(0,5): # for Quotations - self.assertTrue(sale_order_before[1]['monthly_quoted'][i]['value'] * new_rate == sale_order_after[1]['monthly_quoted'][i]['value'], "Not Proper Currency Conversion for Quotations ") - # for sale odrer - self.assertTrue(sale_order_before[1]['monthly_confirmed'][i]['value'] * new_rate == sale_order_after[1]['monthly_confirmed'][i]['value'], "Not Proper Currency Conversion for Sale Order") + self.assertTrue(round(sale_order_before[1]['monthly_quoted'][i]['value'] * new_rate) == round(sale_order_after[1]['monthly_quoted'][i]['value']), "Currency Conversion For Quotations Is Wrong") + # for sale order + self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][i]['value'] * new_rate) == round(sale_order_after[1]['monthly_confirmed'][i]['value']), "Currency Conversion For Sale Order Is Wrong") # for Invoice - self.assertTrue(invoice_before[1][i]['value'] * new_rate == invoice_after[1][i]['value'], "Not Proper Currency Conversion for Invoice") + self.assertTrue(round(invoice_before[1][i]['value'] * new_rate) == round(invoice_after[1][i]['value']), "Currency Conversion For Invoice Is Wrong") + From 09789afc2bef4c2c77bd6ebcd722eaa7be4fd40b Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Thu, 17 Oct 2013 12:53:00 +0530 Subject: [PATCH 036/171] [IMP]:sale_crm:improve code standard bzr revid: sunilsharma.sharma07@gmail.com-20131017072300-vt3y65394wv5tl8q --- addons/sale_crm/tests/test_sale_crm_case.py | 23 ++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/addons/sale_crm/tests/test_sale_crm_case.py b/addons/sale_crm/tests/test_sale_crm_case.py index 1171c0759ed..3081b9c08a7 100644 --- a/addons/sale_crm/tests/test_sale_crm_case.py +++ b/addons/sale_crm/tests/test_sale_crm_case.py @@ -43,10 +43,10 @@ class TestSaleCrmCase(TestSaleCrm): crm_lead_obj = self.registry('crm.lead') # Find Direct Sales - direct_sales_ref = ir_model_obj.get_object_reference(cr, uid, 'crm' , 'section_sales_department') + direct_sales_ref = ir_model_obj.get_object_reference(cr, uid, 'crm', 'section_sales_department') # for Opportunities - usd_ref = ir_model_obj.get_object_reference(cr, uid, 'base' , 'USD') + usd_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'USD') your_company_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'main_company') # Before opportunities @@ -78,7 +78,7 @@ class TestSaleCrmCase(TestSaleCrm): 'type': 'opportunity', 'planned_revenue': 10000, 'user_id' : res_users_id, - 'section_id': direct_sales_ref and direct_sales_ref[1] or False + 'section_id': direct_sales_ref and direct_sales_ref[1] or False }) user_rate = res_company_obj.browse(cr, uid ,[res_company_id])[0].currency_id.rate_silent @@ -97,9 +97,9 @@ class TestSaleCrmCase(TestSaleCrm): #I Write company . company_id = res_users_obj._get_company(cr, uid, context=False, uid2=False) - in_ref = ir_model_obj.get_object_reference(cr, uid, 'base' , 'INR') - res_company_obj.write(cr, uid,[company_id], { - 'currency_id': in_ref and in_ref[1] or False + inr_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'INR') + res_company_obj.write(cr, uid, [company_id], { + 'currency_id': inr_ref and inr_ref[1] or False }) # After Sale or Quotations @@ -108,14 +108,13 @@ class TestSaleCrmCase(TestSaleCrm): # After Invoice invoice_after = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) - new_rate = res_company_obj.browse(cr, uid , [company_id])[0].currency_id.rate_silent + new_rate = res_company_obj.browse(cr, uid, [company_id])[0].currency_id.rate_silent #Assertion Error - for i in range(0,5): + for month in range(0,5): # for Quotations - self.assertTrue(round(sale_order_before[1]['monthly_quoted'][i]['value'] * new_rate) == round(sale_order_after[1]['monthly_quoted'][i]['value']), "Currency Conversion For Quotations Is Wrong") + self.assertTrue(round(sale_order_before[1]['monthly_quoted'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_quoted'][month]['value']), "Currency Conversion For Quotations Is Wrong") # for sale order - self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][i]['value'] * new_rate) == round(sale_order_after[1]['monthly_confirmed'][i]['value']), "Currency Conversion For Sale Order Is Wrong") + self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_confirmed'][month]['value']), "Currency Conversion For Sale Order Is Wrong") # for Invoice - self.assertTrue(round(invoice_before[1][i]['value'] * new_rate) == round(invoice_after[1][i]['value']), "Currency Conversion For Invoice Is Wrong") - + self.assertTrue(round(invoice_before[1][month]['value'] * new_rate) == round(invoice_after[1][month]['value']), "Currency Conversion For Invoice Is Wrong") From b686ee51af6a709722b5a3d2280d827eb65750db Mon Sep 17 00:00:00 2001 From: "Sunil Sharma (OpenERP)" Date: Thu, 17 Oct 2013 16:14:42 +0530 Subject: [PATCH 037/171] [IMP]:sale_crm:remove setup method and improve msg bzr revid: sunilsharma.sharma07@gmail.com-20131017104442-6kw85h9524grftsw --- addons/sale_crm/tests/test_sale_crm_case.py | 80 +++++++++------------ 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/addons/sale_crm/tests/test_sale_crm_case.py b/addons/sale_crm/tests/test_sale_crm_case.py index 3081b9c08a7..71cad1aff93 100644 --- a/addons/sale_crm/tests/test_sale_crm_case.py +++ b/addons/sale_crm/tests/test_sale_crm_case.py @@ -20,49 +20,38 @@ ############################################################################## from openerp.addons.mail.tests.common import TestMail -from openerp.osv.orm import except_orm class TestSaleCrm(TestMail): - def setUp(self): - super(TestSaleCrm, self).setUp() - cr, uid = self.cr, self.uid - -class TestSaleCrmCase(TestSaleCrm): - def test_sale_crm_case(self): - """ Testing Sale Crm """ + """Testing __get_bar_values method""" cr, uid, = self.cr, self.uid - # Usefull models + #Usefull models ir_model_obj = self.registry('ir.model.data') res_company_obj = self.registry('res.company') res_users_obj = self.registry('res.users') crm_case_section_obj = self.registry('crm.case.section') crm_lead_obj = self.registry('crm.lead') - # Find Direct Sales - direct_sales_ref = ir_model_obj.get_object_reference(cr, uid, 'crm', 'section_sales_department') + #Get required ids + direct_sales_id = ir_model_obj.get_object_reference(cr, uid, 'crm', 'section_sales_department')[1] + usd_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'USD')[1] + your_company_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'main_company')[1] - # for Opportunities - usd_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'USD') - your_company_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'main_company') + #Call _get_opportunities_data method before creating new opportunity in another currency. + opportunities_before = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - # Before opportunities - opportunities_before = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) - - #I Create company with USD currency. + #Create new company with USD currency. res_company_id = res_company_obj.create(cr, uid,{ 'name': 'New Company', - 'currency_id': usd_ref and usd_ref[1] or False, - 'parent_id': your_company_ref and your_company_ref[1] or False + 'currency_id': usd_id, + 'parent_id': your_company_id }) - # Find Sale Manager group + #Create sales manager of new company. group_sale_manager_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'group_sale_manager')[1] - - #I Create User of new company. res_users_id = res_users_obj.create(cr, uid,{ 'name': 'User', 'login': 'admin@example.com', @@ -72,49 +61,44 @@ class TestSaleCrmCase(TestSaleCrm): 'groups_id': [(6, 0, [group_sale_manager_id])] }) - #I create Opportunitie for new created user + #Create Opportunitie by new created user. opportunities_id = crm_lead_obj.create(cr, res_users_id,{ 'name': 'Opportunities', 'type': 'opportunity', 'planned_revenue': 10000, 'user_id' : res_users_id, - 'section_id': direct_sales_ref and direct_sales_ref[1] or False + 'section_id': direct_sales_id }) - user_rate = res_company_obj.browse(cr, uid ,[res_company_id])[0].currency_id.rate_silent + user_rate = res_company_obj.browse(cr, uid, [res_company_id])[0].currency_id.rate_silent - # After opportunities - opportunities_after = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) - - #Assertion Error + #Call _get_opportunities_data method and check Currency Conversion of amount for new created opportunity which was in another currency. + opportunities_after = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) self.assertTrue(round(opportunities_after[1]['monthly_planned_revenue'][4]['value']) == round(opportunities_before[1]['monthly_planned_revenue'][4]['value'] + (10000 / user_rate)), "Not Proper Currency Conversion for Opportunities") - # Before Sale or Quotations - sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + #Call _get_sale_orders_data method before changing currency of user. + sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - # Before Invoice - invoice_before = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + #Call _get_invoices_data method before changing currency of user. + invoice_before = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - #I Write company . + #Change currency of company to INR. company_id = res_users_obj._get_company(cr, uid, context=False, uid2=False) - inr_ref = ir_model_obj.get_object_reference(cr, uid, 'base', 'INR') + inr_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'INR')[1] res_company_obj.write(cr, uid, [company_id], { - 'currency_id': inr_ref and inr_ref[1] or False + 'currency_id': inr_id, }) - # After Sale or Quotations - sale_order_after = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + #Call _get_sale_orders_data method after changing currency of user. + sale_order_after = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - # After Invoice - invoice_after = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_ref[1]], field_name=False, arg=False, context=False) + #Call _get_invoices_data method after changing currency of user. + invoice_after = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) new_rate = res_company_obj.browse(cr, uid, [company_id])[0].currency_id.rate_silent - #Assertion Error + #Check currency conversion for Quotations,Sale orders and Invoices in to the current users currency for month in range(0,5): - # for Quotations - self.assertTrue(round(sale_order_before[1]['monthly_quoted'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_quoted'][month]['value']), "Currency Conversion For Quotations Is Wrong") - # for sale order - self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_confirmed'][month]['value']), "Currency Conversion For Sale Order Is Wrong") - # for Invoice - self.assertTrue(round(invoice_before[1][month]['value'] * new_rate) == round(invoice_after[1][month]['value']), "Currency Conversion For Invoice Is Wrong") + self.assertTrue(round(sale_order_before[1]['monthly_quoted'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_quoted'][month]['value']), "Currency conversion for quotations is wrong") + self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_confirmed'][month]['value']), "Currency conversion for sale orders is wrong") + self.assertTrue(round(invoice_before[1][month]['value'] * new_rate) == round(invoice_after[1][month]['value']), "Currency conversion for invoices is wrong") From f684f68173a31455d6113ce6a8cdced749233642 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 23 Oct 2013 11:12:54 +0530 Subject: [PATCH 038/171] [RMV] removed code to convert forcast and target amount in user currency. bzr revid: tpa@tinyerp.com-20131023054254-gw4mjjighbbn1unm --- addons/sale_crm/sale_crm.py | 31 +++++-------------------------- addons/sale_crm/sale_crm_view.xml | 17 +++++++++-------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index fa8a1f8c467..29aa81a3c35 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -70,35 +70,12 @@ class crm_case_section(osv.osv): res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date', 'currency_id'], 'price_total', ['date', 'currency_id'], context=context) return res - def _compute_amounts_in_user_currency(self, cr, uid, ids, field_names, args, context=None): - """Compute the amounts in the currency of the user """ - res = {} - currency_obj = self.pool.get('res.currency') - user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id - for item in self.browse(cr, uid, ids, context=context): - base_currency_id = item.user_id.company_id.currency_id.id if item.user_id else item.create_uid.company_id.currency_id.id - res[item.id] = { - 'user_currency_invoiced_forecast': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.invoiced_forecast, context=context), - 'user_currency_invoiced_target': currency_obj.compute(cr, uid, base_currency_id, user_currency_id, item.invoiced_target, context=context), - } - return res - - def _set_forecast_target(self, cr, uid, team_id, name, value, arg, context=None): - user_currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id - team = self.browse(cr, uid, team_id, context=context) - base_currency_id = team.user_id.company_id.currency_id.id if team.user_id else team.create_uid.company_id.currency_id.id - amount = self.pool.get('res.currency').compute(cr, uid, user_currency_id, base_currency_id, value, context=context) - self.write(cr, uid, [team_id], {name.strip("user_currency"): amount}, context=context) - return True - _columns = { - 'invoiced_forecast': fields.integer("Invoice Forecast"), - 'user_currency_invoiced_forecast': fields.function(_compute_amounts_in_user_currency, fnct_inv=_set_forecast_target, string='Invoice Forecast',type='integer', multi="_compute_amounts", + 'invoiced_forecast': fields.integer("Invoice Forecast", help="Forecast of the invoice revenue for the current month. This is the amount the sales \n" "team should invoice this month. It is used to compute the progression ratio \n" " of the current and forecast revenue on the kanban view."), - 'invoiced_target': fields.integer("Invoice Target"), - 'user_currency_invoiced_target': fields.function(_compute_amounts_in_user_currency, fnct_inv=_set_forecast_target, string='Invoice Target',type='integer', multi="_compute_amounts", + 'invoiced_target': fields.integer("Invoice Target", help="Target of invoice revenue for the current month. This is the amount the sales \n" "team estimates to be able to invoice this month."), 'monthly_quoted': fields.function(_get_sale_orders_data, @@ -111,10 +88,12 @@ class crm_case_section(osv.osv): type='string', readonly=True, string='Rate of sent invoices per duration'), 'create_uid': fields.many2one('res.users', 'Create User'), + 'company_id': fields.related('create_uid', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), + 'currency_id': fields.related('company_id', 'currency_id', type='many2one', relation='res.currency', required=True, readonly=True, string='Currency'), } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'user_currency_invoiced_forecast': round(float(value))}, context=context) + return self.write(cr, uid, [id], {'invoiced_forecast': round(float(value))}, context=context) class res_users(osv.Model): _inherit = 'res.users' diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 2e55ec8fa89..afaa6a3578c 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -248,8 +248,9 @@ - - + + + @@ -265,8 +266,8 @@ - - + +
@@ -297,11 +298,11 @@
-
- Invoiced - Forecast +
+ Invoiced + Forecast
-
+

Define an invoicing target in the sales team settings to see the period's achievement and forecast at a glance.
From 44eaa430cc780f72f21ab62d658ce24a07d57cd0 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 23 Oct 2013 11:40:53 +0530 Subject: [PATCH 039/171] [IMP] add direct currency_id field insted of related field. bzr revid: tpa@tinyerp.com-20131023061053-3avp9mp31v7vl9o6 --- addons/crm/crm.py | 4 +++- addons/sale_crm/sale_crm.py | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 8f0e6a82591..fe67db23aed 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -200,7 +200,8 @@ class crm_case_section(osv.osv): 'monthly_planned_revenue': fields.function(_get_opportunities_data, type="string", readonly=True, multi='_get_opportunities_data', string='Planned Revenue per Month'), - 'currency_symbol': fields.function(_get_currency_symbol, string='Currency Symbol', method=True, type='char'), + 'currency_id': fields.many2one('res.currency', 'Currency', required=True), + 'currency_symbol': fields.function(_get_currency_symbol, string="Current User's Currency Symbol", method=True, type='char'), } def _get_stage_common(self, cr, uid, context): @@ -211,6 +212,7 @@ class crm_case_section(osv.osv): 'active': 1, 'stage_ids': _get_stage_common, 'use_leads': True, + 'currency_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, } _sql_constraints = [ diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 29aa81a3c35..7287e7dc1a8 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -88,8 +88,6 @@ class crm_case_section(osv.osv): type='string', readonly=True, string='Rate of sent invoices per duration'), 'create_uid': fields.many2one('res.users', 'Create User'), - 'company_id': fields.related('create_uid', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True), - 'currency_id': fields.related('company_id', 'currency_id', type='many2one', relation='res.currency', required=True, readonly=True, string='Currency'), } def action_forecast(self, cr, uid, id, value, context=None): From 4e0a8f917378f5fc18b56868bc8597b4c3dd7a13 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 23 Oct 2013 12:14:55 +0530 Subject: [PATCH 040/171] [IMP] removed unused create_uid field. bzr revid: tpa@tinyerp.com-20131023064455-ge7pxrmz1qskh6jf --- addons/sale_crm/sale_crm.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 7287e7dc1a8..67a7c9d39f9 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -87,7 +87,6 @@ class crm_case_section(osv.osv): 'monthly_invoiced': fields.function(_get_invoices_data, type='string', readonly=True, string='Rate of sent invoices per duration'), - 'create_uid': fields.many2one('res.users', 'Create User'), } def action_forecast(self, cr, uid, id, value, context=None): From cabc3bbece5646d11048e2a34b676fd80515091f Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 23 Oct 2013 15:20:00 +0530 Subject: [PATCH 041/171] [IMP] added new _currency_conversation method. bzr revid: tpa@tinyerp.com-20131023095000-082hgraqi6i7h3o6 --- addons/crm/crm.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index fe67db23aed..f0b4ffeb0cd 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -100,6 +100,19 @@ class crm_case_section(osv.osv): def get_full_name(self, cr, uid, ids, field_name, arg, context=None): return dict(self.name_get(cr, uid, ids, context=context)) + def _currency_conversation(self, cr, uid, amount, relation_id, relation_field, context=None): + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + base_currency_id = user.company_id.currency_id.id + if relation_field == 'company_id': + base_currency_id = self.pool.get('res.company').browse(cr, uid, relation_id, context=context).currency_id.id + elif relation_field == 'pricelist_id': + base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, relation_id, context=context).currency_id.id + elif relation_field == 'currency_id': + currency_rates = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context) + if currency_rates: + base_currency_id = currency_rates[0]['currency_id'][0] + return self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, amount, context=context) + def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, context=None): """ Generic method to generate data for bar chart values using SparklineBarWidget. This method performs obj.read_group(cr, uid, domain, read_fields, groupby_field). @@ -133,16 +146,7 @@ class crm_case_section(osv.osv): if inner_groupby: inner_group_obj = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) for groupby in inner_group_obj: - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - base_currency_id = user.company_id.currency_id.id - if inner_groupby[0] == 'company_id': - base_currency_id = self.pool.get('res.company').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id - elif inner_groupby[0] == 'pricelist_id': - base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, groupby['__domain'][0][2], context=context).currency_id.id - elif inner_groupby[0] == 'currency_id': - base_currency_id = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context)[0]['currency_id'][0] - value = self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, groupby.get(value_field, 0)) - section_result[month]['value'] += value + section_result[month]['value'] += self._currency_conversation(cr, uid, groupby.get(value_field, 0), groupby['__domain'][0][2],inner_groupby[0], context=context) return section_result def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None): From 416c47f3244ee6c01cd9f5a7406879fe9c99ec69 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 23 Oct 2013 17:06:52 +0530 Subject: [PATCH 042/171] [FIX] replace integer with float in validation bzr revid: tpa@tinyerp.com-20131023113652-rj74krv1lecyp2xf --- addons/web_kanban_gauge/static/src/js/kanban_gauge.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js index 60cbdf1ddd8..0d8a21ef638 100644 --- a/addons/web_kanban_gauge/static/src/js/kanban_gauge.js +++ b/addons/web_kanban_gauge/static/src/js/kanban_gauge.js @@ -121,7 +121,7 @@ instance.web_kanban.GaugeWidget = instance.web_kanban.AbstractField.extend({ }, parse_client: function(value) { - return openerp.web.parse_value(value, { type:"integer" }); + return openerp.web.parse_value(value, { type:"float" }); }, }); From f48db35788352e1dc53646739ad75f50a0537730 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 23 Oct 2013 17:07:42 +0530 Subject: [PATCH 043/171] [FIX] sale_crmconvert target and forcat fields to float from int bzr revid: tpa@tinyerp.com-20131023113742-55szrqznr1imequi --- addons/sale_crm/sale_crm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 67a7c9d39f9..2e7d61a6487 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -71,11 +71,11 @@ class crm_case_section(osv.osv): return res _columns = { - 'invoiced_forecast': fields.integer("Invoice Forecast", + 'invoiced_forecast': fields.float("Invoice Forecast", help="Forecast of the invoice revenue for the current month. This is the amount the sales \n" "team should invoice this month. It is used to compute the progression ratio \n" " of the current and forecast revenue on the kanban view."), - 'invoiced_target': fields.integer("Invoice Target", + 'invoiced_target': fields.float("Invoice Target", help="Target of invoice revenue for the current month. This is the amount the sales \n" "team estimates to be able to invoice this month."), 'monthly_quoted': fields.function(_get_sale_orders_data, @@ -90,7 +90,7 @@ class crm_case_section(osv.osv): } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'invoiced_forecast': round(float(value))}, context=context) + return self.write(cr, uid, [id], {'invoiced_forecast': value}, context=context) class res_users(osv.Model): _inherit = 'res.users' From 29214f08942c6cf44810f48f3a1d6497b147b6b1 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 25 Oct 2013 15:15:12 +0530 Subject: [PATCH 044/171] [IMP] improved code. bzr revid: tpa@tinyerp.com-20131025094512-m0mx0a0s94h1ldjg --- addons/crm/crm.py | 8 +------- addons/sale_crm/sale_crm.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index f0b4ffeb0cd..9e1a9abfe5e 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -105,12 +105,6 @@ class crm_case_section(osv.osv): base_currency_id = user.company_id.currency_id.id if relation_field == 'company_id': base_currency_id = self.pool.get('res.company').browse(cr, uid, relation_id, context=context).currency_id.id - elif relation_field == 'pricelist_id': - base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, relation_id, context=context).currency_id.id - elif relation_field == 'currency_id': - currency_rates = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context) - if currency_rates: - base_currency_id = currency_rates[0]['currency_id'][0] return self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, amount, context=context) def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, context=None): @@ -146,7 +140,7 @@ class crm_case_section(osv.osv): if inner_groupby: inner_group_obj = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) for groupby in inner_group_obj: - section_result[month]['value'] += self._currency_conversation(cr, uid, groupby.get(value_field, 0), groupby['__domain'][0][2],inner_groupby[0], context=context) + section_result[month]['value'] += self._currency_conversation(cr, uid, groupby.get(value_field, 0), groupby['__domain'][0][2], inner_groupby[0], context=context) return section_result def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None): diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 2e7d61a6487..26b2aa05b94 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -45,6 +45,19 @@ class sale_order(osv.osv): class crm_case_section(osv.osv): _inherit = 'crm.case.section' + def _currency_conversation(self, cr, uid, amount, relation_id, relation_field, context=None): + user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + base_currency_id = user.company_id.currency_id.id + if relation_field not in ['pricelist_id', 'currency_id']: + return super(crm_case_section, self)._currency_conversation(cr, uid, amount, relation_id, relation_field, context=context) + if relation_field == 'pricelist_id': + base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, relation_id, context=context).currency_id.id + elif relation_field == 'currency_id': + currency_rates = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context) + if currency_rates: + base_currency_id = currency_rates[0]['currency_id'][0] + return self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, amount, context=context) + def _get_sale_orders_data(self, cr, uid, ids, field_name, arg, context=None): obj = self.pool.get('sale.order') res = dict.fromkeys(ids, False) From c05369d2b282cfad15182fe6bd16ba12b3e80366 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 29 Oct 2013 16:52:01 +0530 Subject: [PATCH 045/171] [ADD] added onchange on manger to change currency_id bzr revid: tpa@tinyerp.com-20131029112201-fs1us3vi4bhofplx --- addons/crm/crm.py | 8 ++++++++ addons/crm/crm_case_section_view.xml | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 9e1a9abfe5e..f01c023329a 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -198,6 +198,7 @@ class crm_case_section(osv.osv): 'monthly_planned_revenue': fields.function(_get_opportunities_data, type="string", readonly=True, multi='_get_opportunities_data', string='Planned Revenue per Month'), + 'create_uid': fields.many2one('res.users', 'Create User'), 'currency_id': fields.many2one('res.currency', 'Currency', required=True), 'currency_symbol': fields.function(_get_currency_symbol, string="Current User's Currency Symbol", method=True, type='char'), } @@ -254,6 +255,13 @@ class crm_case_section(osv.osv): mail_alias.unlink(cr, uid, alias_ids, context=context) return res + def onchange_user(self, cr, uid, ids, user_id, context=None): + if user_id: + currency_id = self.pool.get('res.users').browse(cr, uid, user_id, context=context).company_id.currency_id.id + else: + currency_id = self.browse(cr, uid, ids[0], context=context).create_uid.company_id.currency_id.id + return {'value': {'currency_id': currency_id}} + class crm_case_categ(osv.osv): """ Category of Case """ _name = "crm.case.categ" diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml index 7bc2b914e2c..4b3c01e3bbf 100644 --- a/addons/crm/crm_case_section_view.xml +++ b/addons/crm/crm_case_section_view.xml @@ -219,7 +219,7 @@
- + From ecdb4abbd1d43922fff11b028b17dbd2afde22ed Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 29 Oct 2013 18:21:28 +0530 Subject: [PATCH 046/171] [IMP] improved code to show all amounts in sales teams currency instead on current users currency bzr revid: tpa@tinyerp.com-20131029125128-9n4myfklstueqq0v --- addons/crm/crm.py | 25 +++++++++---------------- addons/sale_crm/sale_crm.py | 16 ++++++++-------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/addons/crm/crm.py b/addons/crm/crm.py index f01c023329a..3db95cee3ba 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -100,14 +100,14 @@ class crm_case_section(osv.osv): def get_full_name(self, cr, uid, ids, field_name, arg, context=None): return dict(self.name_get(cr, uid, ids, context=context)) - def _currency_conversation(self, cr, uid, amount, relation_id, relation_field, context=None): - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - base_currency_id = user.company_id.currency_id.id + def _currency_conversation(self, cr, uid, id, amount, relation_id, relation_field, context=None): + team = self.browse(cr, uid, id, context=context) + base_currency_id = team.currency_id.id if relation_field == 'company_id': base_currency_id = self.pool.get('res.company').browse(cr, uid, relation_id, context=context).currency_id.id - return self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, amount, context=context) + return self.pool.get('res.currency').compute(cr, uid, base_currency_id, team.currency_id.id, amount, context=context) - def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, context=None): + def __get_bar_values(self, cr, uid, id, obj, domain, read_fields, value_field, groupby_field, context=None): """ Generic method to generate data for bar chart values using SparklineBarWidget. This method performs obj.read_group(cr, uid, domain, read_fields, groupby_field). @@ -140,7 +140,7 @@ class crm_case_section(osv.osv): if inner_groupby: inner_group_obj = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) for groupby in inner_group_obj: - section_result[month]['value'] += self._currency_conversation(cr, uid, groupby.get(value_field, 0), groupby['__domain'][0][2], inner_groupby[0], context=context) + section_result[month]['value'] += self._currency_conversation(cr, uid, id, groupby.get(value_field, 0), groupby['__domain'][0][2], inner_groupby[0], context=context) return section_result def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None): @@ -157,16 +157,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() lead_domain = date_domain + [('type', '=', 'lead'), ('section_id', '=', id)] - res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], context=context) + res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, id, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], context=context) opp_domain = date_domain + [('type', '=', 'opportunity'), ('section_id', '=', id)] - res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date', 'company_id'], 'planned_revenue', ['create_date', 'company_id'], context=context) - return res - - def _get_currency_symbol(self, cr, uid, ids, name, arg, context=None): - """Set currency symbole of company currency""" - res = {} - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - res = dict.fromkeys(ids, user.company_id.currency_id.symbol) + res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, id, obj, opp_domain, ['planned_revenue', 'create_date', 'company_id'], 'planned_revenue', ['create_date', 'company_id'], context=context) return res _columns = { @@ -200,7 +193,7 @@ class crm_case_section(osv.osv): string='Planned Revenue per Month'), 'create_uid': fields.many2one('res.users', 'Create User'), 'currency_id': fields.many2one('res.currency', 'Currency', required=True), - 'currency_symbol': fields.function(_get_currency_symbol, string="Current User's Currency Symbol", method=True, type='char'), + 'currency_symbol': fields.related('currency_id', 'symbol', type='char', string='Currency Symbol'), } def _get_stage_common(self, cr, uid, context): diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 26b2aa05b94..1fedc6a9945 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -45,18 +45,18 @@ class sale_order(osv.osv): class crm_case_section(osv.osv): _inherit = 'crm.case.section' - def _currency_conversation(self, cr, uid, amount, relation_id, relation_field, context=None): - user = self.pool.get('res.users').browse(cr, uid, uid, context=context) - base_currency_id = user.company_id.currency_id.id + def _currency_conversation(self, cr, uid, id, amount, relation_id, relation_field, context=None): + team = self.browse(cr, uid, id, context=context) + base_currency_id = team.currency_id.id if relation_field not in ['pricelist_id', 'currency_id']: - return super(crm_case_section, self)._currency_conversation(cr, uid, amount, relation_id, relation_field, context=context) + return super(crm_case_section, self)._currency_conversation(cr, uid, id, amount, relation_id, relation_field, context=context) if relation_field == 'pricelist_id': base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, relation_id, context=context).currency_id.id elif relation_field == 'currency_id': currency_rates = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context) if currency_rates: base_currency_id = currency_rates[0]['currency_id'][0] - return self.pool.get('res.currency').compute(cr, uid, base_currency_id, user.company_id.currency_id.id, amount, context=context) + return self.pool.get('res.currency').compute(cr, uid, base_currency_id, team.currency_id.id, amount, context=context) def _get_sale_orders_data(self, cr, uid, ids, field_name, arg, context=None): obj = self.pool.get('sale.order') @@ -67,9 +67,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)] - res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order', 'pricelist_id'], 'amount_total', ['date_order', 'pricelist_id'], context=context) + res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, id, obj, created_domain, ['amount_total', 'date_order', 'pricelist_id'], 'amount_total', ['date_order', 'pricelist_id'], context=context) validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', date_begin), ('date_order', '<=', date_end)] - res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm', 'pricelist_id'], 'amount_total', ['date_confirm', 'pricelist_id'], context=context) + res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, id, obj, validated_domain, ['amount_total', 'date_confirm', 'pricelist_id'], 'amount_total', ['date_confirm', 'pricelist_id'], context=context) return res def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): @@ -80,7 +80,7 @@ class crm_case_section(osv.osv): date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', date_begin), ('date', '<=', date_end)] - res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date', 'currency_id'], 'price_total', ['date', 'currency_id'], context=context) + res[id] = self.__get_bar_values(cr, uid, id, obj, created_domain, ['price_total', 'date', 'currency_id'], 'price_total', ['date', 'currency_id'], context=context) return res _columns = { From 850593c39ad51066b30c92a0e68a2d7ddd26af73 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Wed, 30 Oct 2013 12:16:09 +0530 Subject: [PATCH 047/171] [IMP] improved test cases related to changes of currency conversation to show amounts in teams curreny instead current users currency bzr revid: tpa@tinyerp.com-20131030064609-rzkoul8d44cp93dv --- addons/sale_crm/tests/test_sale_crm_case.py | 46 ++++++--------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/addons/sale_crm/tests/test_sale_crm_case.py b/addons/sale_crm/tests/test_sale_crm_case.py index 55aea92ce41..6fb7d4c555a 100644 --- a/addons/sale_crm/tests/test_sale_crm_case.py +++ b/addons/sale_crm/tests/test_sale_crm_case.py @@ -39,8 +39,10 @@ class TestSaleCrm(TestMail): usd_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'USD')[1] your_company_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'main_company')[1] - # Call _get_opportunities_data method before creating new opportunity in another currency. + # Call relevant methods before changing manager of sales team. opportunities_before = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) + sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) + invoice_before = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) # Create new company with USD currency. res_company_id = res_company_obj.create(cr, uid,{ @@ -49,7 +51,7 @@ class TestSaleCrm(TestMail): 'parent_id': your_company_id }) - # Create sales manager of new company. + # Create new user with sales manager access rights for new company. group_sale_manager_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'group_sale_manager')[1] res_users_id = res_users_obj.create(cr, uid,{ 'name': 'User', @@ -60,44 +62,22 @@ class TestSaleCrm(TestMail): 'groups_id': [(6, 0, [group_sale_manager_id])] }) - # Create Opportunitie by new created user. - opportunities_id = crm_lead_obj.create(cr, res_users_id,{ - 'name': 'Opportunities', - 'type': 'opportunity', - 'planned_revenue': 10000, + # Change manager of sales team with USD currency. + crm_case_section_obj.write(cr, uid, [direct_sales_id], { 'user_id' : res_users_id, - 'section_id': direct_sales_id + 'currency_id': usd_id, }) - user_rate = res_company_obj.browse(cr, uid, [res_company_id])[0].currency_id.rate_silent - - # Call _get_opportunities_data method and check Currency Conversion of amount for new created opportunity which was in another currency. + # Call relevant methods and get converted data in another currency. opportunities_after = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - self.assertTrue(round(opportunities_after[1]['monthly_planned_revenue'][4]['value']) == round(opportunities_before[1]['monthly_planned_revenue'][4]['value'] + (10000 / user_rate)), "Not Proper Currency Conversion for Opportunities") - - # Call _get_sale_orders_data method before changing currency of user. - sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - - # Call _get_invoices_data method before changing currency of user. - invoice_before = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - - # Change currency of company to INR. - company_id = res_users_obj._get_company(cr, uid, context=False, uid2=False) - inr_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'INR')[1] - res_company_obj.write(cr, uid, [company_id], { - 'currency_id': inr_id, - }) - - # Call _get_sale_orders_data method after changing currency of user. sale_order_after = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - - # Call _get_invoices_data method after changing currency of user. invoice_after = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - new_rate = res_company_obj.browse(cr, uid, [company_id])[0].currency_id.rate_silent + team_currency_rate = crm_case_section_obj.browse(cr, uid, direct_sales_id).currency_id.rate_silent # Check currency conversion for Quotations,Sale orders and Invoices in to the current users currency for month in range(0,5): - self.assertTrue(round(sale_order_before[1]['monthly_quoted'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_quoted'][month]['value']), "Currency conversion for quotations is wrong") - self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][month]['value'] * new_rate) == round(sale_order_after[1]['monthly_confirmed'][month]['value']), "Currency conversion for sale orders is wrong") - self.assertTrue(round(invoice_before[1][month]['value'] * new_rate) == round(invoice_after[1][month]['value']), "Currency conversion for invoices is wrong") + self.assertTrue(round(opportunities_before[1]['monthly_planned_revenue'][month]['value']) == round(opportunities_after[1]['monthly_planned_revenue'][month]['value'] / team_currency_rate), "Not Proper Currency Conversion for Opportunities") + self.assertTrue(round(sale_order_before[1]['monthly_quoted'][month]['value']) == round(sale_order_after[1]['monthly_quoted'][month]['value'] / team_currency_rate), "Currency conversion for quotations is wrong") + self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][month]['value']) == round(sale_order_after[1]['monthly_confirmed'][month]['value'] / team_currency_rate), "Currency conversion for sale orders is wrong") + self.assertTrue(round(invoice_before[1][month]['value']) == round(invoice_after[1][month]['value'] / team_currency_rate), "Currency conversion for invoices is wrong") From 72ffc9a842ce97f5acff4f008fc5753706041f17 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Thu, 31 Oct 2013 12:47:28 +0530 Subject: [PATCH 048/171] [IMP] improved css. bzr revid: tpa@tinyerp.com-20131031071728-1n22alzz56ud0wl1 --- addons/crm/static/src/css/crm.css | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 09d8bb30229..ebd83861538 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -23,6 +23,7 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list { position: relative; margin: 10px; + min-height: 10px; } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list div { width: 160px; From 05266e0a0f5382c17ec3c0a2aa8d5d8d7cdd4fac Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 1 Nov 2013 14:32:22 +0530 Subject: [PATCH 049/171] [ADD] show avtars of members in sales team kanban if only crm is installed. bzr revid: tpa@tinyerp.com-20131101090222-f0ewbmvc4kc2vqap --- addons/crm/crm_case_section_view.xml | 5 +++ addons/crm/static/src/css/crm.css | 7 ++-- addons/crm/static/src/js/crm_case_section.js | 36 ++++++++++++++++++++ addons/sale_crm/sale_crm_view.xml | 2 +- 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml index 4b3c01e3bbf..e032376cb05 100644 --- a/addons/crm/crm_case_section_view.xml +++ b/addons/crm/crm_case_section_view.xml @@ -151,6 +151,11 @@ Planned Revenue per Month
Click to see a detailed analysis of opportunities.
+
+ + + +
diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index ebd83861538..311727fe51d 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -2,12 +2,11 @@ width: 345px; cursor: default; } -.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars { - text-align: right; - margin: -5px 0 -10px 0; +.openerp .oe_kanban_view .oe_kanban_salesteams_avatars { + margin-top: 20px; } -.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars img { +.openerp .oe_kanban_view .oe_kanban_salesteams_avatars img { width: 30px; height: 30px; padding-left: 0px; diff --git a/addons/crm/static/src/js/crm_case_section.js b/addons/crm/static/src/js/crm_case_section.js index e027313d6dc..02f42288880 100644 --- a/addons/crm/static/src/js/crm_case_section.js +++ b/addons/crm/static/src/js/crm_case_section.js @@ -1,4 +1,40 @@ openerp.crm = function(openerp) { + openerp.web_kanban.KanbanView.include({ + crm_display_members_names: function() { + /* + * Set avatar title for members. + * In kanban views, many2many fields only return a list of ids. + * We can implement return value of m2m fields like [(1,"Adminstration"),...]. + */ + var self = this; + var members_ids = []; + + // Collect members ids + self.$el.find('img[data-member_id]').each(function() { + members_ids.push($(this).data('member_id')); + }); + + // Find their matching names + var dataset = new openerp.web.DataSetSearch(self, 'res.users', self.session.context, [['id', 'in', _.uniq(members_ids)]]); + dataset.read_slice(['id', 'name']).done(function(result) { + _.each(result, function(v, k) { + // Set the proper value in the DOM + self.$el.find('img[data-member_id=' + v.id + ']').attr('title', v.name).tipsy({ + offset: 10 + }); + }); + }); + }, + on_groups_started: function() { + var self = this; + self._super.apply(self, arguments); + + if (self.dataset.model === 'crm.case.section') { + self.crm_display_members_names(); + } + }, + }); + openerp.web_kanban.KanbanRecord.include({ on_card_clicked: function() { if (this.view.dataset.model === 'crm.case.section') { diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index afaa6a3578c..8d0d6b1d817 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -297,7 +297,7 @@
- +
Invoiced Forecast From 6f71304ad6ef6e85c11b11efaebf104bad868e38 Mon Sep 17 00:00:00 2001 From: Paramjit Singh Sahota Date: Wed, 13 Nov 2013 16:20:53 +0530 Subject: [PATCH 050/171] [IMP] Improved code according to the changes of bootstrap3 in web. bzr revid: psa@tinyerp.com-20131113105053-80qelj2buiehd6fl --- addons/im/static/src/js/im.js | 2 +- addons/portal_anonymous/static/src/js/portal_anonymous.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/im/static/src/js/im.js b/addons/im/static/src/js/im.js index 6fbf452f974..870e32f4bc6 100644 --- a/addons/im/static/src/js/im.js +++ b/addons/im/static/src/js/im.js @@ -83,7 +83,7 @@ }); }, calc_box: function() { - var $topbar = instance.client.$(".oe_topbar"); + var $topbar = instance.client.$(".navbar"); var top = $topbar.offset().top + $topbar.height(); top = Math.max(top - $(window).scrollTop(), 0); this.$el.css("top", top); diff --git a/addons/portal_anonymous/static/src/js/portal_anonymous.js b/addons/portal_anonymous/static/src/js/portal_anonymous.js index d4f6351efc9..b289db2053f 100644 --- a/addons/portal_anonymous/static/src/js/portal_anonymous.js +++ b/addons/portal_anonymous/static/src/js/portal_anonymous.js @@ -71,7 +71,7 @@ openerp.portal_anonymous = function(instance) { this.$el.find('a.login').click(function() { var p = self.getParent(); var am = p.action_manager; - p.$el.find('.oe_leftbar, .oe_topbar').hide(); + p.$el.find('.oe_leftbar, .navbar').hide(); self.session.session_logout().done(function () { am.do_action({ type:'ir.actions.client', From f726a07c1157bc7458a6ea7a3897dd761542573d Mon Sep 17 00:00:00 2001 From: Paramjit Singh Sahota Date: Thu, 14 Nov 2013 11:57:43 +0530 Subject: [PATCH 051/171] [FIX] Fixed the issue of positioning of signin icon in navbar, bzr revid: psa@tinyerp.com-20131114062743-zku2t3lpoyyc8451 --- addons/hr_attendance/static/src/css/slider.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr_attendance/static/src/css/slider.css b/addons/hr_attendance/static/src/css/slider.css index 664d4f96e41..849cd33a894 100644 --- a/addons/hr_attendance/static/src/css/slider.css +++ b/addons/hr_attendance/static/src/css/slider.css @@ -5,7 +5,7 @@ display: inline-block; } .openerp .oe_attendance_signin { - float:left; + float: right; height: 32px; width: 32px; background: url(/hr_attendance/static/src/img/emp-out32.png); From 1098f7021ecc9a1ee81c02532570a2f47ddef628 Mon Sep 17 00:00:00 2001 From: ima-openerp Date: Thu, 14 Nov 2013 17:35:29 +0530 Subject: [PATCH 052/171] [IMP]improved css for sales team kanban, sale order payment_acquirers and attach file button. bzr revid: ima@tinyerp.com-20131114120529-5ltoe9aoglsx92vv --- addons/crm/static/src/css/crm.css | 7 +++++-- addons/im/static/src/js/im.js | 2 +- addons/mail/static/src/css/mail.css | 4 +--- addons/portal/static/src/css/portal.css | 2 +- addons/portal_anonymous/static/src/js/portal_anonymous.js | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index ba4473edc26..cce8248bc8b 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -1,5 +1,8 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams { - width: 345px; + /* Customize width and height of kanban according bootstrap3 */ + width: 357px; + min-height: 254px !important; + /* End of customize */ } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars { text-align: right; @@ -21,7 +24,7 @@ .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list { position: relative; - margin: 10px; + margin: 10px 0 10px 9px; /* Improved margin to set alignment of list items according bootstrap3 */ } .openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list div { width: 160px; diff --git a/addons/im/static/src/js/im.js b/addons/im/static/src/js/im.js index 870e32f4bc6..93069fd0276 100644 --- a/addons/im/static/src/js/im.js +++ b/addons/im/static/src/js/im.js @@ -83,7 +83,7 @@ }); }, calc_box: function() { - var $topbar = instance.client.$(".navbar"); + var $topbar = instance.client.$(".navbar"); // .oe_topbar is replaced with .navbar of bootstrap3 var top = $topbar.offset().top + $topbar.height(); top = Math.max(top - $(window).scrollTop(), 0); this.$el.css("top", top); diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index e4b7f9247e3..e25bc816a95 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -94,9 +94,7 @@ } .openerp .oe_mail .oe_msg .oe_msg_footer{ margin-left: 4px; - padding-top: 3px; overflow: hidden; - margin-bottom: 4px; font-size: 11px; } .openerp .oe_mail .oe_msg .oe_msg_content{ @@ -478,7 +476,7 @@ } .openerp .oe_mail .oe_msg_footer button.oe_attach{ width: 24px; - overflow: hidden; + margin-bottom: 8px; /* improved margin of file attach button according bootstrap3 */ filter:none; } .openerp .oe_mail .oe_msg_footer button.oe_attach .oe_e{ diff --git a/addons/portal/static/src/css/portal.css b/addons/portal/static/src/css/portal.css index 45c0cdd7805..e32f3b0e639 100644 --- a/addons/portal/static/src/css/portal.css +++ b/addons/portal/static/src/css/portal.css @@ -10,7 +10,7 @@ margin: -40px 0 -32px -24px; position: relative; padding: 10px 15px; - right: -153px; + right: -125px; /* improved margin according bootstrap3 */ background: #729FCF; background-image: -webkit-gradient(linear, left top, left bottom, from(#729FCF), to(#3465A4)); diff --git a/addons/portal_anonymous/static/src/js/portal_anonymous.js b/addons/portal_anonymous/static/src/js/portal_anonymous.js index b289db2053f..f6b41eb59f0 100644 --- a/addons/portal_anonymous/static/src/js/portal_anonymous.js +++ b/addons/portal_anonymous/static/src/js/portal_anonymous.js @@ -71,7 +71,7 @@ openerp.portal_anonymous = function(instance) { this.$el.find('a.login').click(function() { var p = self.getParent(); var am = p.action_manager; - p.$el.find('.oe_leftbar, .navbar').hide(); + p.$el.find('.oe_leftbar, .navbar').hide(); // .oe_topbar is replaced with .navbar of bootstrap3 self.session.session_logout().done(function () { am.do_action({ type:'ir.actions.client', From 88a79fdaf361822aa0634bf0ae828c9758416217 Mon Sep 17 00:00:00 2001 From: ima-openerp Date: Fri, 15 Nov 2013 15:43:17 +0530 Subject: [PATCH 053/171] [IMP]improved css for survey kanban, file attach button and my current timesheet in hr. bzr revid: ima@tinyerp.com-20131115101317-3jb422klc3jgdwps --- addons/hr_timesheet_sheet/static/src/css/timesheet.css | 2 +- addons/mail/static/src/css/mail.css | 2 +- addons/survey/static/src/css/survey.css | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/hr_timesheet_sheet/static/src/css/timesheet.css b/addons/hr_timesheet_sheet/static/src/css/timesheet.css index 36ea9a34db9..dca253cd9fc 100644 --- a/addons/hr_timesheet_sheet/static/src/css/timesheet.css +++ b/addons/hr_timesheet_sheet/static/src/css/timesheet.css @@ -19,7 +19,7 @@ text-align: center; color: #006699; font-family: "Helvetica Neue", Arial, Verdana, "Nimbus Sans L", sans-serif; - font-size: 10px; + font-size: 11px; background: #eeeeee; min-width: 47px; } diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index e25bc816a95..6f4c6361e95 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -476,7 +476,7 @@ } .openerp .oe_mail .oe_msg_footer button.oe_attach{ width: 24px; - margin-bottom: 8px; /* improved margin of file attach button according bootstrap3 */ + margin-bottom: 5px; /* improved margin of file attach button according bootstrap3 */ filter:none; } .openerp .oe_mail .oe_msg_footer button.oe_attach .oe_e{ diff --git a/addons/survey/static/src/css/survey.css b/addons/survey/static/src/css/survey.css index 34d686c6e77..15899533213 100644 --- a/addons/survey/static/src/css/survey.css +++ b/addons/survey/static/src/css/survey.css @@ -6,6 +6,8 @@ } .openerp .oe_kanban_survey { - width: 200px; - + /* Customize height and width according bootstrap3 */ + width: 212px; + min-height: 86px !important; + /* End of customize */ } From a254e5fca9b5b436dbc5f1207ea64585bd6c96e2 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Fri, 15 Nov 2013 16:19:09 +0530 Subject: [PATCH 054/171] [ADD] added record rules for analysis report objects. bzr revid: tpa@tinyerp.com-20131115104909-izjhuoy3eyy1vfjk --- addons/crm/security/crm_security.xml | 14 ++++++++++++++ addons/sale/security/sale_security.xml | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/addons/crm/security/crm_security.xml b/addons/crm/security/crm_security.xml index ef7eb8b24db..efc335391f8 100644 --- a/addons/crm/security/crm_security.xml +++ b/addons/crm/security/crm_security.xml @@ -91,5 +91,19 @@ + + Personal Leads Analysis + + ['|',('user_id','=',user.id),('user_id','=',False)] + + + + + All Leads Analysis + + [(1,'=',1)] + + + diff --git a/addons/sale/security/sale_security.xml b/addons/sale/security/sale_security.xml index 557562275d7..c34f29fc81b 100644 --- a/addons/sale/security/sale_security.xml +++ b/addons/sale/security/sale_security.xml @@ -78,6 +78,13 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + Sales Order Analysis multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + @@ -93,6 +100,19 @@ + + Personal Orders Analysis + + ['|',('user_id','=',user.id),('user_id','=',False)] + + + + + All Orders Analysis + + [(1,'=',1)] + + Personal Order Lines From 926ff04ed83f466cc1ec675b926656b61a9fb110 Mon Sep 17 00:00:00 2001 From: ima-openerp Date: Mon, 18 Nov 2013 11:03:59 +0530 Subject: [PATCH 055/171] [IMP]improved css for pos screen header. bzr revid: ima@tinyerp.com-20131118053359-ccc5w6zrunagx2v6 --- addons/point_of_sale/static/src/css/pos.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index 89ab429c4f4..71d2cf6d58f 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -126,6 +126,7 @@ background: #393939; background: -moz-linear-gradient(#7b7979, #393939); background: -webkit-gradient(linear, left top, left bottom, from(#7b7979), to(#393939)); + z-index: 2; /* Customize according bootstrap3 navbar */ } /* a) The left part of the top-bar */ @@ -659,6 +660,7 @@ .point-of-sale .screen header h2 { margin-top: 0px; padding-top: 7px; + font-size: 1.5em /* Customize font according bootstrap3 */ } .point-of-sale .screen p{ font-size: 18px; From 3bf3bc38957ffd9fcc82cdd9fe33400c67faac6b Mon Sep 17 00:00:00 2001 From: ima-openerp Date: Mon, 18 Nov 2013 17:46:05 +0530 Subject: [PATCH 056/171] [IMP]improved css for base_import, mass_mailing and idea module. bzr revid: ima@tinyerp.com-20131118121605-1rn0z4hojxblngbu --- addons/base_import/static/src/css/import.css | 10 ++++++++++ addons/idea/static/src/css/idea_idea.css | 2 +- addons/mass_mailing/static/src/css/mass_mailing.css | 12 +++++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css index 3913619b6c9..3d3c60d957b 100644 --- a/addons/base_import/static/src/css/import.css +++ b/addons/base_import/static/src/css/import.css @@ -1,12 +1,14 @@ .oe_import > p { margin-left: 8px; margin-right: 8px; + margin-top: 13px; /* Customize space according bootstrap3 */ text-align: justify } .oe_import h2 { margin-top: 0; margin-bottom: 5px; + font-size: 1.5em; /* Customize according bootstrap3 */ } .oe_padding { @@ -22,6 +24,14 @@ border: solid 1px #dddddd; width: 600px; } +/* Customize according bootstrap3 */ +.oe_import .oe_import_box label{ + font-weight: normal; +} +.oe_import .oe_import_box .oe_import_file { + display: inline-block; +} +/* End of Customize */ .oe_import .oe_import_toggle{ margin-top: 8px; } diff --git a/addons/idea/static/src/css/idea_idea.css b/addons/idea/static/src/css/idea_idea.css index 08daffd902a..ff146bd189d 100644 --- a/addons/idea/static/src/css/idea_idea.css +++ b/addons/idea/static/src/css/idea_idea.css @@ -1,5 +1,5 @@ .openerp .oe_kanban_view .oe_kanban_idea_idea { - width: 200px; + width: 212px; /* Customize width according bootstrap3 */ } .openerp .oe_kanban_view .oe_kanban_idea_idea .oe_avatars { diff --git a/addons/mass_mailing/static/src/css/mass_mailing.css b/addons/mass_mailing/static/src/css/mass_mailing.css index ca5455d6323..e54ce46c025 100644 --- a/addons/mass_mailing/static/src/css/mass_mailing.css +++ b/addons/mass_mailing/static/src/css/mass_mailing.css @@ -1,13 +1,19 @@ .openerp .oe_kanban_view .oe_kanban_mass_mailing.oe_kanban_mass_mailing_campaign { - width: 540px; + /* Customize to manage content */ + width: 552px; + min-height: 278px !important; + /* End of customize */ } .openerp .oe_kanban_view .oe_kanban_mass_mailing.oe_kanban_mass_mailing_segment { - width: 270px; + /* Customize to manage content */ + width: 282px; + min-height: 246px !important; + /* End of customize */ } .openerp .oe_kanban_view .oe_kanban_mass_mailing .oe_mail_stats { - width: 120px; + width: 122px; /* Manage space in between stats */ display: inline-block; margin: 2px 5px 0px 5px; text-align: center; From beea089c21cbdf77a5ac041145db85fc9b411ade Mon Sep 17 00:00:00 2001 From: ima-openerp Date: Tue, 19 Nov 2013 17:28:40 +0530 Subject: [PATCH 057/171] [IMP]improved css of base_import module for dd, label and p tags. bzr revid: ima@tinyerp.com-20131119115840-o8evs0ap85xf7ybp --- addons/base_import/static/src/css/import.css | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/base_import/static/src/css/import.css b/addons/base_import/static/src/css/import.css index 3d3c60d957b..579b6e26999 100644 --- a/addons/base_import/static/src/css/import.css +++ b/addons/base_import/static/src/css/import.css @@ -50,7 +50,7 @@ } .oe_import .oe_import_options p { - margin: 0; + margin: 0 0 -7px 0; /* Customize margin-bottom of

according bootstrap3 */ padding: 0; } .oe_import .oe_import_options label { @@ -79,6 +79,14 @@ .oe_import .oe_import_report_more { display: none; } +/* Customize dd and label according bootstrap3 */ +.oe_import dd { + -webkit-margin-start: 40px; +} +.oe_import .oe_import_with_file label { + font-weight: normal; +} +/* End of customize */ .oe_import.oe_import_preview .oe_import_grid { display: table; From a68dbfe28693fc732eb05eacf6175e0608d8f7d9 Mon Sep 17 00:00:00 2001 From: "Turkesh Patel (Open ERP)" Date: Tue, 26 Nov 2013 12:12:38 +0530 Subject: [PATCH 058/171] [RMV] remove all currecny related stuff as per the comments of fp sir. bzr revid: tpa@tinyerp.com-20131126064238-odztahk0kofak3vh --- addons/crm/crm.py | 38 ++-------- addons/crm/crm_case_section_view.xml | 5 +- addons/crm/static/src/css/crm.css | 11 --- addons/sale_crm/sale_crm.py | 26 ++----- addons/sale_crm/sale_crm_view.xml | 11 ++- addons/sale_crm/tests/__init__.py | 28 ------- addons/sale_crm/tests/test_sale_crm_case.py | 83 --------------------- 7 files changed, 20 insertions(+), 182 deletions(-) delete mode 100644 addons/sale_crm/tests/__init__.py delete mode 100644 addons/sale_crm/tests/test_sale_crm_case.py diff --git a/addons/crm/crm.py b/addons/crm/crm.py index cddd2a166de..a98fcadb959 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -101,14 +101,7 @@ class crm_case_section(osv.osv): def get_full_name(self, cr, uid, ids, field_name, arg, context=None): return dict(self.name_get(cr, uid, ids, context=context)) - def _currency_conversation(self, cr, uid, id, amount, relation_id, relation_field, context=None): - team = self.browse(cr, uid, id, context=context) - base_currency_id = team.currency_id.id - if relation_field == 'company_id': - base_currency_id = self.pool.get('res.company').browse(cr, uid, relation_id, context=context).currency_id.id - return self.pool.get('res.currency').compute(cr, uid, base_currency_id, team.currency_id.id, amount, context=context) - - def __get_bar_values(self, cr, uid, id, obj, domain, read_fields, value_field, groupby_field, context=None): + def __get_bar_values(self, cr, uid, obj, domain, read_fields, value_field, groupby_field, context=None): """ Generic method to generate data for bar chart values using SparklineBarWidget. This method performs obj.read_group(cr, uid, domain, read_fields, groupby_field). @@ -132,16 +125,8 @@ class crm_case_section(osv.osv): group_obj = obj.read_group(cr, uid, domain, read_fields, groupby_field, context=context) for group in group_obj: group_begin_date = datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATE_FORMAT) - month = self._period_number - (relativedelta.relativedelta(month_begin, group_begin_date).months + 1) - section_result[month] = {'value': 0, 'tooltip': group_begin_date.strftime('%B')} - inner_groupby = (group.get('__context', {})).get('group_by',[]) - if value_field == 'create_date_count' or not inner_groupby: - section_result[month]['value'] = group.get(value_field, 0) - continue - if inner_groupby: - inner_group_obj = obj.read_group(cr, uid, group.get('__domain'), read_fields, inner_groupby, context=context) - for groupby in inner_group_obj: - section_result[month]['value'] += self._currency_conversation(cr, uid, id, groupby.get(value_field, 0), groupby['__domain'][0][2], inner_groupby[0], context=context) + month_delta = relativedelta.relativedelta(month_begin, group_begin_date) + section_result[self._period_number - (month_delta.months + 1)] = {'value': group.get(value_field, 0), 'tooltip': group_begin_date.strftime('%B')} return section_result def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None): @@ -158,9 +143,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() lead_domain = date_domain + [('type', '=', 'lead'), ('section_id', '=', id)] - res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, id, obj, lead_domain, ['create_date','company_id'], 'create_date_count', ['create_date', 'company_id'], context=context) + res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context) opp_domain = date_domain + [('type', '=', 'opportunity'), ('section_id', '=', id)] - res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, id, obj, opp_domain, ['planned_revenue', 'create_date', 'company_id'], 'planned_revenue', ['create_date', 'company_id'], context=context) + res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'create_date'], 'planned_revenue', 'create_date', context=context) return res _columns = { @@ -191,10 +176,7 @@ class crm_case_section(osv.osv): string='Open Leads per Month'), 'monthly_planned_revenue': fields.function(_get_opportunities_data, type="string", readonly=True, multi='_get_opportunities_data', - string='Planned Revenue per Month'), - 'create_uid': fields.many2one('res.users', 'Create User'), - 'currency_id': fields.many2one('res.currency', 'Currency', required=True), - 'currency_symbol': fields.related('currency_id', 'symbol', type='char', string='Currency Symbol'), + string='Planned Revenue per Month') } def _get_stage_common(self, cr, uid, context): @@ -205,7 +187,6 @@ class crm_case_section(osv.osv): 'active': 1, 'stage_ids': _get_stage_common, 'use_leads': True, - 'currency_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.currency_id.id, } _sql_constraints = [ @@ -249,13 +230,6 @@ class crm_case_section(osv.osv): mail_alias.unlink(cr, uid, alias_ids, context=context) return res - def onchange_user(self, cr, uid, ids, user_id, context=None): - if user_id: - currency_id = self.pool.get('res.users').browse(cr, uid, user_id, context=context).company_id.currency_id.id - else: - currency_id = self.browse(cr, uid, ids[0], context=context).create_uid.company_id.currency_id.id - return {'value': {'currency_id': currency_id}} - class crm_case_categ(osv.osv): """ Category of Case """ _name = "crm.case.categ" diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml index e032376cb05..b674bf95061 100644 --- a/addons/crm/crm_case_section_view.xml +++ b/addons/crm/crm_case_section_view.xml @@ -124,7 +124,6 @@ -

@@ -148,7 +147,7 @@
@@ -224,7 +223,7 @@
- + diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css index 311727fe51d..f11e932504e 100644 --- a/addons/crm/static/src/css/crm.css +++ b/addons/crm/static/src/css/crm.css @@ -55,17 +55,6 @@ font-size: 10px; } -.openerp .oe_kanban_view .oe_salesteams_justgage { - color: black; - display: inline-block; - bottom: 0; -} - -.openerp .oe_kanban_view .oe_sparkline_bar { - height: 20px; - width: 36px !important; -} - .openerp .oe_kanban_view .oe_salesteams_help { display: inline-block; } diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 1fedc6a9945..a2c2b7e2af3 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -45,19 +45,6 @@ class sale_order(osv.osv): class crm_case_section(osv.osv): _inherit = 'crm.case.section' - def _currency_conversation(self, cr, uid, id, amount, relation_id, relation_field, context=None): - team = self.browse(cr, uid, id, context=context) - base_currency_id = team.currency_id.id - if relation_field not in ['pricelist_id', 'currency_id']: - return super(crm_case_section, self)._currency_conversation(cr, uid, id, amount, relation_id, relation_field, context=context) - if relation_field == 'pricelist_id': - base_currency_id = self.pool.get('product.pricelist').browse(cr, uid, relation_id, context=context).currency_id.id - elif relation_field == 'currency_id': - currency_rates = self.pool.get('res.currency.rate').search_read(cr, uid, [('rate', '=', 1)], ['currency_id'], limit=1, context=context) - if currency_rates: - base_currency_id = currency_rates[0]['currency_id'][0] - return self.pool.get('res.currency').compute(cr, uid, base_currency_id, team.currency_id.id, amount, context=context) - def _get_sale_orders_data(self, cr, uid, ids, field_name, arg, context=None): obj = self.pool.get('sale.order') res = dict.fromkeys(ids, False) @@ -67,9 +54,9 @@ class crm_case_section(osv.osv): for id in ids: res[id] = dict() created_domain = [('section_id', '=', id), ('state', 'in', ['draft', 'sent']), ('date_order', '>=', date_begin), ('date_order', '<=', date_end)] - res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, id, obj, created_domain, ['amount_total', 'date_order', 'pricelist_id'], 'amount_total', ['date_order', 'pricelist_id'], context=context) + res[id]['monthly_quoted'] = self.__get_bar_values(cr, uid, obj, created_domain, ['amount_total', 'date_order'], 'amount_total', 'date_order', context=context) validated_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'sent']), ('date_confirm', '>=', date_begin), ('date_order', '<=', date_end)] - res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, id, obj, validated_domain, ['amount_total', 'date_confirm', 'pricelist_id'], 'amount_total', ['date_confirm', 'pricelist_id'], context=context) + res[id]['monthly_confirmed'] = self.__get_bar_values(cr, uid, obj, validated_domain, ['amount_total', 'date_confirm'], 'amount_total', 'date_confirm', context=context) return res def _get_invoices_data(self, cr, uid, ids, field_name, arg, context=None): @@ -80,15 +67,15 @@ class crm_case_section(osv.osv): date_end = month_begin.replace(day=calendar.monthrange(month_begin.year, month_begin.month)[1]).strftime(tools.DEFAULT_SERVER_DATE_FORMAT) for id in ids: created_domain = [('section_id', '=', id), ('state', 'not in', ['draft', 'cancel']), ('date', '>=', date_begin), ('date', '<=', date_end)] - res[id] = self.__get_bar_values(cr, uid, id, obj, created_domain, ['price_total', 'date', 'currency_id'], 'price_total', ['date', 'currency_id'], context=context) + res[id] = self.__get_bar_values(cr, uid, obj, created_domain, ['price_total', 'date'], 'price_total', 'date', context=context) return res _columns = { - 'invoiced_forecast': fields.float("Invoice Forecast", + 'invoiced_forecast': fields.integer(string='Invoice Forecast', help="Forecast of the invoice revenue for the current month. This is the amount the sales \n" "team should invoice this month. It is used to compute the progression ratio \n" " of the current and forecast revenue on the kanban view."), - 'invoiced_target': fields.float("Invoice Target", + 'invoiced_target': fields.integer(string='Invoice Target', help="Target of invoice revenue for the current month. This is the amount the sales \n" "team estimates to be able to invoice this month."), 'monthly_quoted': fields.function(_get_sale_orders_data, @@ -103,7 +90,8 @@ class crm_case_section(osv.osv): } def action_forecast(self, cr, uid, id, value, context=None): - return self.write(cr, uid, [id], {'invoiced_forecast': value}, context=context) + return self.write(cr, uid, [id], {'invoiced_forecast': round(float(value))}, context=context) + class res_users(osv.Model): _inherit = 'res.users' diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index ce8c5a26efb..4669f669276 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -248,9 +248,8 @@ - - - + + @@ -273,7 +272,7 @@
Sales Orders - + Revenue of confirmed sales orders per month.
Click to acces the Sales Analysis.
@@ -283,7 +282,7 @@
Invoices - + Revenue of sent invoices per month.
Click to see a detailed analysis of invoices.
@@ -291,7 +290,7 @@
Quotations - + Revenue of created quotations per month.
Click to see a detailed analysis.
diff --git a/addons/sale_crm/tests/__init__.py b/addons/sale_crm/tests/__init__.py deleted file mode 100644 index fc04080875f..00000000000 --- a/addons/sale_crm/tests/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Business Applications -# Copyright (c) 2013-TODAY OpenERP S.A. -# -# 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 . -# -############################################################################## - -from . import test_sale_crm_case - -checks = [ - test_sale_crm_case, -] - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_crm/tests/test_sale_crm_case.py b/addons/sale_crm/tests/test_sale_crm_case.py deleted file mode 100644 index 6fb7d4c555a..00000000000 --- a/addons/sale_crm/tests/test_sale_crm_case.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Business Applications -# Copyright (c) 2013-TODAY OpenERP S.A. -# -# 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 . -# -############################################################################## - -from openerp.addons.mail.tests.common import TestMail - -class TestSaleCrm(TestMail): - - def test_sale_crm_case(self): - """Testing __get_bar_values method""" - cr, uid, = self.cr, self.uid - - # Usefull models - ir_model_obj = self.registry('ir.model.data') - res_company_obj = self.registry('res.company') - res_users_obj = self.registry('res.users') - crm_case_section_obj = self.registry('crm.case.section') - crm_lead_obj = self.registry('crm.lead') - - # Get required ids - direct_sales_id = ir_model_obj.get_object_reference(cr, uid, 'crm', 'section_sales_department')[1] - usd_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'USD')[1] - your_company_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'main_company')[1] - - # Call relevant methods before changing manager of sales team. - opportunities_before = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - sale_order_before = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - invoice_before = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - - # Create new company with USD currency. - res_company_id = res_company_obj.create(cr, uid,{ - 'name': 'New Company', - 'currency_id': usd_id, - 'parent_id': your_company_id - }) - - # Create new user with sales manager access rights for new company. - group_sale_manager_id = ir_model_obj.get_object_reference(cr, uid, 'base', 'group_sale_manager')[1] - res_users_id = res_users_obj.create(cr, uid,{ - 'name': 'User', - 'login': 'admin@example.com', - 'company_id': res_company_id, - 'company_ids': [(6, 0, [res_company_id])], - 'email': 'admin@gmail.com', - 'groups_id': [(6, 0, [group_sale_manager_id])] - }) - - # Change manager of sales team with USD currency. - crm_case_section_obj.write(cr, uid, [direct_sales_id], { - 'user_id' : res_users_id, - 'currency_id': usd_id, - }) - - # Call relevant methods and get converted data in another currency. - opportunities_after = crm_case_section_obj._get_opportunities_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - sale_order_after = crm_case_section_obj._get_sale_orders_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - invoice_after = crm_case_section_obj._get_invoices_data(cr, uid, [direct_sales_id], field_name=False, arg=False, context=False) - - team_currency_rate = crm_case_section_obj.browse(cr, uid, direct_sales_id).currency_id.rate_silent - - # Check currency conversion for Quotations,Sale orders and Invoices in to the current users currency - for month in range(0,5): - self.assertTrue(round(opportunities_before[1]['monthly_planned_revenue'][month]['value']) == round(opportunities_after[1]['monthly_planned_revenue'][month]['value'] / team_currency_rate), "Not Proper Currency Conversion for Opportunities") - self.assertTrue(round(sale_order_before[1]['monthly_quoted'][month]['value']) == round(sale_order_after[1]['monthly_quoted'][month]['value'] / team_currency_rate), "Currency conversion for quotations is wrong") - self.assertTrue(round(sale_order_before[1]['monthly_confirmed'][month]['value']) == round(sale_order_after[1]['monthly_confirmed'][month]['value'] / team_currency_rate), "Currency conversion for sale orders is wrong") - self.assertTrue(round(invoice_before[1][month]['value']) == round(invoice_after[1][month]['value'] / team_currency_rate), "Currency conversion for invoices is wrong") From 41ca7536e02093211b65342afd3fb44ed25c1c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 10:56:32 +0100 Subject: [PATCH 059/171] [FIX] mail: when performing pure email mass mailing attachments were not formatted as a m2m command but a list of ids. This is now fixed. bzr revid: tde@openerp.com-20131126095632-txuy00xc1cmqjqcn --- addons/mail/wizard/mail_compose_message.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index f129e5bf0f9..7c63dbd23fa 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -260,6 +260,10 @@ class mail_compose_message(osv.TransientModel): for res_id, mail_values in all_mail_values.iteritems(): if mass_mail_mode and not wizard.post: + # Attachments are still formatted as a list of ids, because message_post will process them + # We have to put them back as a m2m command if we want attachments to be sent + if mail_values.get('attachment_ids'): + mail_values['attachment_ids'] = [(4, id) for id in mail_values['attachment_ids']] self.pool.get('mail.mail').create(cr, uid, mail_values, context=context) else: subtype = 'mail.mt_comment' From 6f322004cc4c5ea886231fb18c17cc9310802f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 12:07:42 +0100 Subject: [PATCH 060/171] [FIX] email_template: when generating reports in batch, update the values for all res_ids, not only the last one of the current template. bzr revid: tde@openerp.com-20131126110742-aecac7r0zyappo0a --- addons/email_template/email_template.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index efa1387435a..ab95613c283 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -369,7 +369,7 @@ class email_template(osv.osv): attachment_ids=[attach.id for attach in template.attachment_ids], ) - # Add report in attachments + # Add report in attachments: generate once for all template_res_ids if template.report_template: for res_id in template_res_ids: attachments = [] @@ -388,7 +388,8 @@ class email_template(osv.osv): report_name += ext attachments.append((report_name, result)) - values['attachments'] = attachments + for res_id in template_res_ids: + results[res_id]['attachments'] = attachments return results From cf214ed7244207f1fd5d377ab69d85a6441ff665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 12:09:42 +0100 Subject: [PATCH 061/171] [FIX] mail: when generating pure email mass mailing we have to process attachments as well as attachment_ids in the values generated by the composer and the optional template. As this behavior is the same as the one already implemented for message_post, this feature has been moved into its dedicated method to be called by message_post or before calling mail_mail.create(). This also allows to have attachments in pure email mass mailing that are attached to mail.message, not to mail.compose.message model. When unlinking those emails, the attachments will be also removed, and not lost in the database anymore. bzr revid: tde@openerp.com-20131126110942-h8p0d9sbjtk0hwlu --- addons/mail/mail_thread.py | 57 +++++++++++++--------- addons/mail/wizard/mail_compose_message.py | 12 +++-- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 33d7f81024f..5d81d9c98f5 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -1287,6 +1287,40 @@ class mail_thread(osv.AbstractModel): mail_message_obj.write(cr, SUPERUSER_ID, message_ids, {'author_id': partner_info['partner_id']}, context=context) return result + def _message_preprocess_attachments(self, cr, uid, attachments, attachment_ids, attach_model, attach_res_id, context=None): + """ Preprocess attachments for mail_thread.message_post() or mail_mail.create(). + + :param list attachments: list of attachment tuples in the form ``(name,content)``, + where content is NOT base64 encoded + :param list attachment_ids: a list of attachment ids, not in tomany command form + :param str attach_model: the model of the attachments parent record + :param integer attach_res_id: the id of the attachments parent record + """ + Attachment = self.pool['ir.attachment'] + m2m_attachment_ids = [] + if attachment_ids: + filtered_attachment_ids = Attachment.search(cr, SUPERUSER_ID, [ + ('res_model', '=', 'mail.compose.message'), + ('create_uid', '=', uid), + ('id', 'in', attachment_ids)], context=context) + if filtered_attachment_ids: + Attachment.write(cr, SUPERUSER_ID, filtered_attachment_ids, {'res_model': attach_model, 'res_id': attach_res_id}, context=context) + m2m_attachment_ids += [(4, id) for id in attachment_ids] + # Handle attachments parameter, that is a dictionary of attachments + for name, content in attachments: + if isinstance(content, unicode): + content = content.encode('utf-8') + data_attach = { + 'name': name, + 'datas': base64.b64encode(str(content)), + 'datas_fname': name, + 'description': name, + 'res_model': attach_model, + 'res_id': attach_res_id, + } + m2m_attachment_ids.append((0, 0, data_attach)) + return m2m_attachment_ids + def message_post(self, cr, uid, thread_id, body='', subject=None, type='notification', subtype=None, parent_id=False, attachments=None, context=None, content_subtype='html', **kwargs): @@ -1365,28 +1399,7 @@ class mail_thread(osv.AbstractModel): # 3. Attachments # - HACK TDE FIXME: Chatter: attachments linked to the document (not done JS-side), load the message - attachment_ids = kwargs.pop('attachment_ids', []) or [] # because we could receive None (some old code sends None) - if attachment_ids: - filtered_attachment_ids = ir_attachment.search(cr, SUPERUSER_ID, [ - ('res_model', '=', 'mail.compose.message'), - ('create_uid', '=', uid), - ('id', 'in', attachment_ids)], context=context) - if filtered_attachment_ids: - ir_attachment.write(cr, SUPERUSER_ID, filtered_attachment_ids, {'res_model': model, 'res_id': thread_id}, context=context) - attachment_ids = [(4, id) for id in attachment_ids] - # Handle attachments parameter, that is a dictionary of attachments - for name, content in attachments: - if isinstance(content, unicode): - content = content.encode('utf-8') - data_attach = { - 'name': name, - 'datas': base64.b64encode(str(content)), - 'datas_fname': name, - 'description': name, - 'res_model': model, - 'res_id': thread_id, - } - attachment_ids.append((0, 0, data_attach)) + attachment_ids = self._message_preprocess_attachments(cr, uid, attachments, kwargs.pop('attachment_ids', []), model, thread_id, context) # 4: mail.message.subtype subtype_id = False diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 7c63dbd23fa..f9e3ff52f28 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -20,6 +20,7 @@ ############################################################################## import re + from openerp import tools from openerp import SUPERUSER_ID from openerp.osv import osv @@ -260,10 +261,13 @@ class mail_compose_message(osv.TransientModel): for res_id, mail_values in all_mail_values.iteritems(): if mass_mail_mode and not wizard.post: - # Attachments are still formatted as a list of ids, because message_post will process them - # We have to put them back as a m2m command if we want attachments to be sent - if mail_values.get('attachment_ids'): - mail_values['attachment_ids'] = [(4, id) for id in mail_values['attachment_ids']] + # process attachments and attachment_ids before sending values to mail_mail.Lcreat + m2m_attachment_ids = self.pool['mail.thread']._message_preprocess_attachments( + cr, uid, mail_values.pop('attachments', []), + mail_values.pop('attachment_ids', []), + 'mail.message', 0, + context=context) + mail_values['attachment_ids'] = m2m_attachment_ids self.pool.get('mail.mail').create(cr, uid, mail_values, context=context) else: subtype = 'mail.mt_comment' From 974675bcbf3235b48fbe8c98267677f4929003d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 13:03:36 +0100 Subject: [PATCH 062/171] [FIX] mail: attachments encoding issue: posting process waits not encoded attachments: email_template encodes them. So de-encoding is necessary. bzr revid: tde@openerp.com-20131126120336-5lcp9ii7z9lru5vr --- addons/mail/wizard/mail_compose_message.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index f9e3ff52f28..d7d5ae9bae1 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -19,6 +19,7 @@ # ############################################################################## +import base64 import re from openerp import tools @@ -261,7 +262,6 @@ class mail_compose_message(osv.TransientModel): for res_id, mail_values in all_mail_values.iteritems(): if mass_mail_mode and not wizard.post: - # process attachments and attachment_ids before sending values to mail_mail.Lcreat m2m_attachment_ids = self.pool['mail.thread']._message_preprocess_attachments( cr, uid, mail_values.pop('attachments', []), mail_values.pop('attachment_ids', []), @@ -306,7 +306,12 @@ class mail_compose_message(osv.TransientModel): if mass_mail_mode and wizard.model: email_dict = rendered_values[res_id] mail_values['partner_ids'] += email_dict.pop('partner_ids', []) - mail_values['attachments'] = email_dict.pop('attachments', []) + # process attachments and attachment_ids before sending values to mail_mail.create() + attachments = [] + if email_dict.get('attachments'): + for name, enc_cont in email_dict.pop('attachments'): + attachments.append((name, base64.b64decode(enc_cont))) + mail_values['attachments'] = attachments attachment_ids = [] for attach_id in mail_values.pop('attachment_ids'): new_attach_id = self.pool.get('ir.attachment').copy(cr, uid, attach_id, {'res_model': self._name, 'res_id': wizard.id}, context=context) From f2c23488c3a29416582cdcd9c2ec993025c20e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 13:08:43 +0100 Subject: [PATCH 063/171] [FIX] email_template: fixing to have the correct report suppose to correctly fix. So, fix the fix to fix it bzr revid: tde@openerp.com-20131126120843-gt8vdhl3yn61vd8r --- addons/email_template/email_template.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index ab95613c283..6e19b1eb8aa 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -387,9 +387,7 @@ class email_template(osv.osv): if not report_name.endswith(ext): report_name += ext attachments.append((report_name, result)) - - for res_id in template_res_ids: - results[res_id]['attachments'] = attachments + results[res_id]['attachments'] = attachments return results From 4468d522836bcb1f70311942ab9b7ba5de33dc69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 13:16:49 +0100 Subject: [PATCH 064/171] [DOC] mail: cleaned a comment bzr revid: tde@openerp.com-20131126121649-nywrh4hc1mcpwleh --- addons/mail/wizard/mail_compose_message.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index d7d5ae9bae1..833811c07a1 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -306,7 +306,7 @@ class mail_compose_message(osv.TransientModel): if mass_mail_mode and wizard.model: email_dict = rendered_values[res_id] mail_values['partner_ids'] += email_dict.pop('partner_ids', []) - # process attachments and attachment_ids before sending values to mail_mail.create() + # process attachments: should not be encoded before being processed by message_post / mail_mail create attachments = [] if email_dict.get('attachments'): for name, enc_cont in email_dict.pop('attachments'): From ae7fcfb5646051c33ef4876c5c6784169604c5dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 26 Nov 2013 18:17:52 +0100 Subject: [PATCH 065/171] [IMP] [FIX] mail: mail_thread : - avoid having to browse the record in message_subscribe: refactored message_subscribe to work on ids without browsing, try to lessen the number of queries to do - update _set_followers, method of the function field message_follower_ids, to use message_subscribe and message_unsibscribe - in create: add author as follower in creation values, not after create, allowing create access rules based on followers - updated message_unsubscribe to be the lower method, not calling _set_followers anymore bzr revid: tde@openerp.com-20131126171752-1irizm7mhv2y1wrn --- addons/mail/mail_thread.py | 77 +++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index eac8df8ebbf..a8755cd1abd 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -188,13 +188,10 @@ class mail_thread(osv.AbstractModel): new = set(command[2]) # remove partners that are no longer followers - fol_ids = fol_obj.search(cr, SUPERUSER_ID, - [('res_model', '=', self._name), ('res_id', '=', id), ('partner_id', 'not in', list(new))]) - fol_obj.unlink(cr, SUPERUSER_ID, fol_ids) + self.message_unsubscribe(cr, uid, [id], list(old-new)) # add new followers - for partner_id in new - old: - fol_obj.create(cr, SUPERUSER_ID, {'res_model': self._name, 'res_id': id, 'partner_id': partner_id}) + self.message_subscribe(cr, uid, [id], list(new-old)) def _search_followers(self, cr, uid, obj, name, args, context): fol_obj = self.pool.get('mail.followers') @@ -240,15 +237,22 @@ class mail_thread(osv.AbstractModel): """ if context is None: context = {} + + # subscribe uid unless asked not to + if not context.get('mail_create_nosubscribe'): + pid = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid).partner_id.id + message_follower_ids = values.get('message_follower_ids') + if message_follower_ids is False or message_follower_ids is None: # web client seems to send False as message_follower_ids value + message_follower_ids = [] + message_follower_ids.append([4, pid]) + values['message_follower_ids'] = message_follower_ids + thread_id = super(mail_thread, self).create(cr, uid, values, context=context) # automatic logging unless asked not to (mainly for various testing purpose) if not context.get('mail_create_nolog'): self.message_post(cr, uid, thread_id, body=_('%s created') % (self._description), context=context) - # subscribe uid unless asked not to - if not context.get('mail_create_nosubscribe'): - self.message_subscribe_users(cr, uid, [thread_id], [uid], context=context) # auto_subscribe: take values and defaults into account create_values = dict(values) for key, val in context.iteritems(): @@ -1189,35 +1193,33 @@ class mail_thread(osv.AbstractModel): else: self.check_access_rights(cr, uid, 'write') - for record in self.browse(cr, SUPERUSER_ID, ids, context=context): - existing_pids = set([f.id for f in record.message_follower_ids - if f.id in partner_ids]) + existing_pids_dict = {} + fol_ids = mail_followers_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('res_id', 'in', ids)]) + for fol in mail_followers_obj.browse(cr, SUPERUSER_ID, fol_ids, context=context): + existing_pids_dict.setdefault(fol.res_id, set()).add(fol.partner_id.id) + + # subtype_ids specified: update already subscribed partners + if subtype_ids and fol_ids: + mail_followers_obj.write(cr, SUPERUSER_ID, fol_ids, {'subtype_ids': [(6, 0, subtype_ids)]}, context=context) + # subtype_ids not specified: do not update already subscribed partner, fetch default subtypes for new partners + if subtype_ids is None: + subtype_ids = subtype_obj.search( + cr, uid, [ + ('default', '=', True), '|', ('res_model', '=', self._name), ('res_model', '=', False)], context=context) + + for id in ids: + existing_pids = existing_pids_dict.get(id, set()) new_pids = set(partner_ids) - existing_pids - # subtype_ids specified: update already subscribed partners - if subtype_ids and existing_pids: - fol_ids = mail_followers_obj.search(cr, SUPERUSER_ID, [ - ('res_model', '=', self._name), - ('res_id', '=', record.id), - ('partner_id', 'in', list(existing_pids)), - ], context=context) - mail_followers_obj.write(cr, SUPERUSER_ID, fol_ids, {'subtype_ids': [(6, 0, subtype_ids)]}, context=context) - # subtype_ids not specified: do not update already subscribed partner, fetch default subtypes for new partners - elif subtype_ids is None: - subtype_ids = subtype_obj.search(cr, uid, [ - ('default', '=', True), - '|', - ('res_model', '=', self._name), - ('res_model', '=', False) - ], context=context) # subscribe new followers for new_pid in new_pids: - mail_followers_obj.create(cr, SUPERUSER_ID, { - 'res_model': self._name, - 'res_id': record.id, - 'partner_id': new_pid, - 'subtype_ids': [(6, 0, subtype_ids)], - }, context=context) + mail_followers_obj.create( + cr, SUPERUSER_ID, { + 'res_model': self._name, + 'res_id': id, + 'partner_id': new_pid, + 'subtype_ids': [(6, 0, subtype_ids)], + }, context=context) return True @@ -1236,7 +1238,14 @@ class mail_thread(osv.AbstractModel): self.check_access_rights(cr, uid, 'read') else: self.check_access_rights(cr, uid, 'write') - return self.write(cr, SUPERUSER_ID, ids, {'message_follower_ids': [(3, pid) for pid in partner_ids]}, context=context) + fol_obj = self.pool['mail.followers'] + fol_ids = fol_obj.search( + cr, SUPERUSER_ID, [ + ('res_model', '=', self._name), + ('res_id', 'in', ids), + ('partner_id', 'in', partner_ids) + ], context=context) + return fol_obj.unlink(cr, SUPERUSER_ID, fol_ids, context=context) def _message_get_auto_subscribe_fields(self, cr, uid, updated_fields, auto_follow_fields=['user_id'], context=None): """ Returns the list of relational fields linking to res.users that should From 0ecdb5dec7159a4a28d8abd7215c3ec724d5a3dc Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Wed, 27 Nov 2013 14:35:00 +0100 Subject: [PATCH 066/171] [FIX]google_spreadsheet: if formula contained html special chars, the formula was not written on the spreadsheet. The formula is now html escaped before sending the writting request on the spreadsheet. bzr revid: dle@openerp.com-20131127133500-18vra6sqs6cb3loh --- addons/google_spreadsheet/google_spreadsheet.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/addons/google_spreadsheet/google_spreadsheet.py b/addons/google_spreadsheet/google_spreadsheet.py index a724e3c425e..81ec536b6f2 100644 --- a/addons/google_spreadsheet/google_spreadsheet.py +++ b/addons/google_spreadsheet/google_spreadsheet.py @@ -18,6 +18,7 @@ # ############################################################################## +import cgi import simplejson import logging from lxml import etree @@ -67,24 +68,24 @@ class config(osv.osv): request = ''' - https://spreadsheets.google.com/feeds/cells/%s/od6/private/full + https://spreadsheets.google.com/feeds/cells/{key}/od6/private/full A1 - https://spreadsheets.google.com/feeds/cells/%s/od6/private/full/R1C1 + https://spreadsheets.google.com/feeds/cells/{key}/od6/private/full/R1C1 - + href="https://spreadsheets.google.com/feeds/cells/{key}/od6/private/full/R1C1"/> + A2 - https://spreadsheets.google.com/feeds/cells/%s/od6/private/full/R60C15 + https://spreadsheets.google.com/feeds/cells/{key}/od6/private/full/R60C15 - + href="https://spreadsheets.google.com/feeds/cells/{key}/od6/private/full/R60C15"/> + -''' % (spreadsheet_key, spreadsheet_key, spreadsheet_key, formula.replace('"', '"'), spreadsheet_key, spreadsheet_key, config_formula.replace('"', '"')) +''' .format(key=spreadsheet_key, formula=cgi.escape(formula, quote=True), config=cgi.escape(config_formula, quote=True)) try: req = urllib2.Request( From 274b9c9503602995906838d726fccf3e824c009a Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Wed, 27 Nov 2013 15:20:49 +0100 Subject: [PATCH 067/171] [FIX]google_drive: using res.users has_group method to know if the user is admin, instead of reading groups_id of the user (and, also, fixed the read call with a string instead of an array for the fields to read) bzr revid: dle@openerp.com-20131127142049-v9sr5ldc9g4cct98 --- addons/google_drive/google_drive.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/google_drive/google_drive.py b/addons/google_drive/google_drive.py index df0d6a3c5af..b69c7ddd173 100644 --- a/addons/google_drive/google_drive.py +++ b/addons/google_drive/google_drive.py @@ -60,10 +60,9 @@ class config(osv.Model): def get_access_token(self, cr, uid, scope=None, context=None): ir_config = self.pool['ir.config_parameter'] google_drive_refresh_token = ir_config.get_param(cr, SUPERUSER_ID, 'google_drive_refresh_token') - group_config = self.pool['ir.model.data'].get_object_reference(cr, uid, 'base', 'group_erp_manager')[1] - user = self.pool['res.users'].read(cr, uid, uid, "groups_id") + user_is_admin = self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager') if not google_drive_refresh_token: - if group_config in user['groups_id']: + if user_is_admin: raise self.pool.get('res.config.settings').get_config_warning(cr, _("You haven't configured 'Authorization Code' generated from google, Please generate and configure it in %(menu:base_setup.menu_general_configuration)s."), context=context) else: raise osv.except_osv(_('Error!'), _("Google Drive is not yet configured. Please contact your administrator.")) @@ -81,7 +80,7 @@ class config(osv.Model): req = urllib2.Request('https://accounts.google.com/o/oauth2/token', data, headers) content = urllib2.urlopen(req).read() except urllib2.HTTPError: - if group_config in user['groups_id']: + if user_is_admin: raise self.pool.get('res.config.settings').get_config_warning(cr, _("Something went wrong during the token generation. Please request again an authorization code in %(menu:base_setup.menu_general_configuration)s."), context=context) else: raise osv.except_osv(_('Error!'), _("Google Drive is not yet configured. Please contact your administrator.")) From f6d7ee39fc0d434e9790de704eaf7d72a18ed07f Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Wed, 27 Nov 2013 17:11:54 +0100 Subject: [PATCH 068/171] [FIX]tools, translate: more tolerant code, if the model does not exist anymore (impossible to syncrhonize translation terms if there are ir_model_fields with non-existing models) bzr revid: dle@openerp.com-20131127161154-t8xfjiytqq8ja8fh --- openerp/tools/translate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/tools/translate.py b/openerp/tools/translate.py index 4a055950c46..f82fa4b87ad 100644 --- a/openerp/tools/translate.py +++ b/openerp/tools/translate.py @@ -684,7 +684,7 @@ def trans_generate(lang, modules, cr): except AttributeError, exc: _logger.error("name error in %s: %s", xml_name, str(exc)) continue - objmodel = registry[obj.model] + objmodel = registry.get(obj.model) if not objmodel or not field_name in objmodel._columns: continue field_def = objmodel._columns[field_name] From f2da2d6811f63a8e6aacbf7fc6a0da496fd78001 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 27 Nov 2013 16:25:37 +0100 Subject: [PATCH 069/171] [FIX] orm: browse() do not prefetch deprecated fields bzr revid: chs@openerp.com-20131127152537-wkof87ut5cdud6z6 --- openerp/osv/orm.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 517f5126f54..71053a02cae 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -383,10 +383,12 @@ class browse_record(object): self.__logger.debug(''.join(traceback.format_stack())) raise KeyError(error_msg) + prefetchable = lambda f: f._classic_write and f._prefetch and not f.groups and not f.deprecated + # if the field is a classic one or a many2one, we'll fetch all classic and many2one fields - if col._prefetch and not col.groups: + if prefetchable(col): # gen the list of "local" (ie not inherited) fields which are classic or many2one - field_filter = lambda x: x[1]._classic_write and x[1]._prefetch and not x[1].groups + field_filter = lambda x: prefetchable(x[1]) fields_to_fetch = filter(field_filter, self._table._columns.items()) # gen the list of inherited fields inherits = map(lambda x: (x[0], x[1][2]), self._table._inherit_fields.items()) From c901141cecf5d5fa4d7866c5e4cd0f90235f29f8 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 27 Nov 2013 19:05:30 +0100 Subject: [PATCH 070/171] [FIX] module loading: do not warn about missing access rules for AbstractModels bzr revid: chs@openerp.com-20131127180530-aoslbam8almrmpbl --- openerp/modules/loading.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py index e4b9a04b221..de3b23aeedd 100644 --- a/openerp/modules/loading.py +++ b/openerp/modules/loading.py @@ -340,7 +340,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False): if processed_modules: cr.execute("""select model,name from ir_model where id NOT IN (select distinct model_id from ir_model_access)""") for (model, name) in cr.fetchall(): - if model in registry and not registry[model].is_transient() and isinstance(registry[model], openerp.osv.orm.AbstractModel): + if model in registry and not registry[model].is_transient() and not isinstance(registry[model], openerp.osv.orm.AbstractModel): _logger.warning('The model %s has no access rules, consider adding one. E.g. access_%s,access_%s,model_%s,,1,1,1,1', model, model.replace('.', '_'), model.replace('.', '_'), model.replace('.', '_')) From 8a1a3e996ffb0cd823b75120089227c08533c571 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Wed, 27 Nov 2013 22:26:18 +0100 Subject: [PATCH 071/171] [FIX] add missing access rules for `test_workflow` test module bzr revid: chs@openerp.com-20131127212618-rbd0v6nnxx2u68jp --- openerp/tests/addons/test_workflow/__openerp__.py | 2 +- .../addons/test_workflow/ir.model.access.csv | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 openerp/tests/addons/test_workflow/ir.model.access.csv diff --git a/openerp/tests/addons/test_workflow/__openerp__.py b/openerp/tests/addons/test_workflow/__openerp__.py index 1b846f9f227..12cafa274e8 100644 --- a/openerp/tests/addons/test_workflow/__openerp__.py +++ b/openerp/tests/addons/test_workflow/__openerp__.py @@ -8,7 +8,7 @@ 'maintainer': 'OpenERP SA', 'website': 'http://www.openerp.com', 'depends': ['base'], - 'data': ['data.xml'], + 'data': ['data.xml', 'ir.model.access.csv'], 'installable': True, 'auto_install': False, } diff --git a/openerp/tests/addons/test_workflow/ir.model.access.csv b/openerp/tests/addons/test_workflow/ir.model.access.csv new file mode 100644 index 00000000000..6fb5a7ae274 --- /dev/null +++ b/openerp/tests/addons/test_workflow/ir.model.access.csv @@ -0,0 +1,15 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_test_workflow_model,access_test_workflow_model,model_test_workflow_model,,1,1,1,1 +access_test_workflow_trigger,access_test_workflow_trigger,model_test_workflow_trigger,,1,1,1,1 +access_test_workflow_model_a,access_test_workflow_model_a,model_test_workflow_model_a,,1,1,1,1 +access_test_workflow_model_b,access_test_workflow_model_b,model_test_workflow_model_b,,1,1,1,1 +access_test_workflow_model_c,access_test_workflow_model_c,model_test_workflow_model_c,,1,1,1,1 +access_test_workflow_model_d,access_test_workflow_model_d,model_test_workflow_model_d,,1,1,1,1 +access_test_workflow_model_e,access_test_workflow_model_e,model_test_workflow_model_e,,1,1,1,1 +access_test_workflow_model_f,access_test_workflow_model_f,model_test_workflow_model_f,,1,1,1,1 +access_test_workflow_model_g,access_test_workflow_model_g,model_test_workflow_model_g,,1,1,1,1 +access_test_workflow_model_h,access_test_workflow_model_h,model_test_workflow_model_h,,1,1,1,1 +access_test_workflow_model_i,access_test_workflow_model_i,model_test_workflow_model_i,,1,1,1,1 +access_test_workflow_model_j,access_test_workflow_model_j,model_test_workflow_model_j,,1,1,1,1 +access_test_workflow_model_k,access_test_workflow_model_k,model_test_workflow_model_k,,1,1,1,1 +access_test_workflow_model_l,access_test_workflow_model_l,model_test_workflow_model_l,,1,1,1,1 From 4f2e951cde47c1b8245a147937e90e9420c572ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Nov 2013 11:39:21 +0100 Subject: [PATCH 072/171] [IMP] mail: mail_thread: routing: check for exact message_id. WIP: will be improved, notably about what to do for partial match. bzr revid: tde@openerp.com-20131128103921-q1a36otv9ptazehd --- addons/mail/mail_message.py | 4 ++++ addons/mail/mail_thread.py | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index de8e4c68fda..657c0f68e46 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -816,6 +816,10 @@ class mail_message(osv.Model): return email_reply_to + # def baseN(num, b, numerals=string.digits + string.letters): + # return ((num == 0) and "0") or (baseN(num // b, b, numerals).lstrip("0") + numerals[num % b]) + # message-id with db + def _get_message_id(self, cr, uid, values, context=None): message_id = None if not values.get('message_id') and values.get('reply_to'): diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index c169f1dc3f3..0f89159e20a 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -829,9 +829,26 @@ class mail_thread(osv.AbstractModel): email_to = decode_header(message, 'To') references = decode_header(message, 'References') in_reply_to = decode_header(message, 'In-Reply-To') + thread_references = references or in_reply_to + + # 1. message is a reply to an existing message (exact match of message_id) + msg_references = thread_references.split() + for msg_reference in msg_references: + mail_message_ids = self.pool['mail.message'].search( + cr, uid, [('message_id', '=', msg_reference)], context=context) + if mail_message_ids: + original_msg = self.pool['mail.message'].browse(cr, SUPERUSER_ID, mail_message_ids[0], context=context) + model, thread_id = original_msg.model, original_msg.res_id + _logger.info( + 'Routing mail from %s to %s with Message-Id %s: direct reply to msg: model: %s, thread_id: %s, custom_values: %s, uid: %s', + email_from, email_to, message_id, model, thread_id, custom_values, uid) + route = self.message_route_verify( + cr, uid, message, message_dict, + (model, thread_id, custom_values, uid, None), + update_author=True, assert_model=True, create_fallback=True, context=context) + return route and [route] or [] # 1. Verify if this is a reply to an existing thread - thread_references = references or in_reply_to ref_match = thread_references and tools.reference_re.search(thread_references) if ref_match: thread_id = int(ref_match.group(1)) From 361406fab8dae37f95c6b54b65ab6322974eedcc Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Thu, 28 Nov 2013 12:09:37 +0100 Subject: [PATCH 073/171] [FIX]purchase: on invoice payment confirmation (during a reconciliation for example), 'invoice paid' is written on the purchase order of the invoice. Traceback when there was several purchase orders associated to the invoices confirmed bzr revid: dle@openerp.com-20131128110937-gs6ko4djss3ffl3o --- addons/purchase/purchase.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 2a82d0f23f4..6fe2df11133 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -1289,8 +1289,8 @@ class account_invoice(osv.Model): else: user_id = uid po_ids = purchase_order_obj.search(cr, user_id, [('invoice_ids', 'in', ids)], context=context) - if po_ids: - purchase_order_obj.message_post(cr, user_id, po_ids, body=_("Invoice paid"), context=context) + for po_id in po_ids: + purchase_order_obj.message_post(cr, user_id, po_id, body=_("Invoice paid"), context=context) return res class account_invoice_line(osv.Model): From c553167ff87ed3b077d0cec83d82c23c432f4831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Nov 2013 14:31:32 +0100 Subject: [PATCH 074/171] [FIX] mail_message: do not overwrite 'False' message_id when creating a new mail message bzr revid: tde@openerp.com-20131128133132-8oevlk1wyoqytebo --- addons/mail/mail_message.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 657c0f68e46..6b431f4ef3e 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -821,12 +821,11 @@ class mail_message(osv.Model): # message-id with db def _get_message_id(self, cr, uid, values, context=None): - message_id = None - if not values.get('message_id') and values.get('reply_to'): + if values.get('reply_to'): message_id = tools.generate_tracking_message_id('reply_to') - elif not values.get('message_id') and values.get('res_id') and values.get('model'): + elif values.get('res_id') and values.get('model'): message_id = tools.generate_tracking_message_id('%(res_id)s-%(model)s' % values) - elif not values.get('message_id'): + else: message_id = tools.generate_tracking_message_id('private') return message_id @@ -837,7 +836,7 @@ class mail_message(osv.Model): if 'email_from' not in values: # needed to compute reply_to values['email_from'] = self._get_default_from(cr, uid, context=context) - if not values.get('message_id'): + if 'message_id' not in values: values['message_id'] = self._get_message_id(cr, uid, values, context=context) if 'reply_to' not in values: values['reply_to'] = self._get_reply_to(cr, uid, values, context=context) From 8253453d6439d97f272407f02eadafc99f0df796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 28 Nov 2013 14:32:26 +0100 Subject: [PATCH 075/171] [IMP] mail: mail_thread: routing: implement compat-mode routing It now accepts <111...222..openerp-res_id-model@mydomain.com> partial matching only if the target record has messages without message_id, aka <= 6.1 record. Updated and added tests bzr revid: tde@openerp.com-20131128133226-ce1qyeswi9n83q8v --- addons/mail/mail_thread.py | 37 +++++++++++++--------- addons/mail/tests/test_mail_gateway.py | 43 ++++++++++++++++++++------ 2 files changed, 57 insertions(+), 23 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 0f89159e20a..4bd0ff4a94e 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -723,8 +723,8 @@ class mail_thread(osv.AbstractModel): # Private message: should not contain any thread_id if not model and thread_id: if assert_model: - assert thread_id == 0, 'Routing: posting a message without model should be with a null res_id (private message).' - _warn('posting a message without model should be with a null res_id (private message), resetting thread_id') + assert thread_id == 0, 'Routing: posting a message without model should be with a null res_id (private message), received %s.' % thread_id + _warn('posting a message without model should be with a null res_id (private message), received %s, resetting thread_id' % thread_id) thread_id = 0 # Private message: should have a parent_id (only answers) if not model and not message_dict.get('parent_id'): @@ -821,6 +821,7 @@ class mail_thread(osv.AbstractModel): :return: list of [model, thread_id, custom_values, user_id, alias] """ assert isinstance(message, Message), 'message must be an email.message.Message at this point' + mail_msg_obj = self.pool['mail.message'] fallback_model = model # Get email.message.Message variables for future processing @@ -834,10 +835,9 @@ class mail_thread(osv.AbstractModel): # 1. message is a reply to an existing message (exact match of message_id) msg_references = thread_references.split() for msg_reference in msg_references: - mail_message_ids = self.pool['mail.message'].search( - cr, uid, [('message_id', '=', msg_reference)], context=context) + mail_message_ids = mail_msg_obj.search(cr, uid, [('message_id', '=', msg_reference)], context=context) if mail_message_ids: - original_msg = self.pool['mail.message'].browse(cr, SUPERUSER_ID, mail_message_ids[0], context=context) + original_msg = mail_msg_obj.browse(cr, SUPERUSER_ID, mail_message_ids[0], context=context) model, thread_id = original_msg.model, original_msg.res_id _logger.info( 'Routing mail from %s to %s with Message-Id %s: direct reply to msg: model: %s, thread_id: %s, custom_values: %s, uid: %s', @@ -848,29 +848,38 @@ class mail_thread(osv.AbstractModel): update_author=True, assert_model=True, create_fallback=True, context=context) return route and [route] or [] - # 1. Verify if this is a reply to an existing thread + # 2. message is a reply to an existign thread (6.1 compatibility) ref_match = thread_references and tools.reference_re.search(thread_references) if ref_match: thread_id = int(ref_match.group(1)) model = ref_match.group(2) or fallback_model if thread_id and model in self.pool: model_obj = self.pool[model] - if model_obj.exists(cr, uid, thread_id) and hasattr(model_obj, 'message_update'): - _logger.info('Routing mail from %s to %s with Message-Id %s: direct reply to model: %s, thread_id: %s, custom_values: %s, uid: %s', - email_from, email_to, message_id, model, thread_id, custom_values, uid) - route = self.message_route_verify(cr, uid, message, message_dict, - (model, thread_id, custom_values, uid, None), - update_author=True, assert_model=True, create_fallback=True, context=context) + compat_mail_msg_ids = mail_msg_obj.search( + cr, uid, [ + ('message_id', '=', False), + ('model', '=', model), + ('res_id', '=', thread_id), + ], context=context) + print 'cacaprout', compat_mail_msg_ids + if compat_mail_msg_ids and model_obj.exists(cr, uid, thread_id) and hasattr(model_obj, 'message_update'): + _logger.info( + 'Routing mail from %s to %s with Message-Id %s: direct thread reply (compat-mode) to model: %s, thread_id: %s, custom_values: %s, uid: %s', + email_from, email_to, message_id, model, thread_id, custom_values, uid) + route = self.message_route_verify( + cr, uid, message, message_dict, + (model, thread_id, custom_values, uid, None), + update_author=True, assert_model=True, create_fallback=True, context=context) return route and [route] or [] # 2. Reply to a private message if in_reply_to: - mail_message_ids = self.pool.get('mail.message').search(cr, uid, [ + mail_message_ids = mail_msg_obj.search(cr, uid, [ ('message_id', '=', in_reply_to), '!', ('message_id', 'ilike', 'reply_to') ], limit=1, context=context) if mail_message_ids: - mail_message = self.pool.get('mail.message').browse(cr, uid, mail_message_ids[0], context=context) + mail_message = mail_msg_obj.browse(cr, uid, mail_message_ids[0], context=context) _logger.info('Routing mail from %s to %s with Message-Id %s: direct reply to a private message: %s, custom_values: %s, uid: %s', email_from, email_to, message_id, mail_message.id, custom_values, uid) route = self.message_route_verify(cr, uid, message, message_dict, diff --git a/addons/mail/tests/test_mail_gateway.py b/addons/mail/tests/test_mail_gateway.py index b2a1c3250aa..c88ed6555d6 100644 --- a/addons/mail/tests/test_mail_gateway.py +++ b/addons/mail/tests/test_mail_gateway.py @@ -163,7 +163,7 @@ class TestMailgateway(TestMail): self.assertIn('
Should create a multipart/mixed: from gmail, bold, with attachment.

', res.get('body', ''), 'message_parse: html version should be in body after parsing multipart/mixed') - @mute_logger('openerp.addons.mail.mail_thread', 'openerp.osv.orm') + # @mute_logger('openerp.addons.mail.mail_thread', 'openerp.osv.orm') def test_10_message_process(self): """ Testing incoming emails processing. """ cr, uid, user_raoul = self.cr, self.uid, self.user_raoul @@ -378,7 +378,7 @@ class TestMailgateway(TestMail): frog_groups = format_and_process(MAIL_TEMPLATE, email_from='other4@gmail.com', msg_id='<1198923581.41972151344608186760.JavaMail.diff1@agrolait.com>', to='erroneous@example.com>', subject='Re: news', - extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) + extra='In-Reply-To: <1198923581.41972151344608186799.JavaMail.diff1@agrolait.com>\n') # Test: no group 'Re: news' created, still only 1 Frogs group self.assertEqual(len(frog_groups), 0, 'message_process: reply on Frogs should not have created a new group with new subject') @@ -387,16 +387,41 @@ class TestMailgateway(TestMail): 'message_process: reply on Frogs should not have created a duplicate group with old subject') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: one new message - self.assertEqual(len(frog_group.message_ids), 3, 'message_process: group should contain 2 messages after reply') + self.assertEqual(len(frog_group.message_ids), 3, 'message_process: group should contain 3 messages after reply') # Test: author (and not recipient) added as follower frog_follower_ids = set([p.id for p in frog_group.message_follower_ids]) self.assertEqual(frog_follower_ids, set([p1id, p2id]), 'message_process: after reply, group should have 2 followers') + # Do: incoming email with ref holding model / res_id but that does not match any message in the thread: must raise since OpenERP saas-3 + self.assertRaises(AssertionError, + format_and_process, + MAIL_TEMPLATE, email_from='other5@gmail.com', + to='noone@example.com', subject='spam', + extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>' % frog_group.id, + msg_id='<1.1.JavaMail.new@agrolait.com>') + # There are 6.1 messages, activate compat mode + tmp_msg_id = self.mail_message.create(cr, uid, {'message_id': False, 'model': 'mail.group', 'res_id': frog_group.id}) + # Do: compat mode accepts partial-matching emails + frog_groups = format_and_process(MAIL_TEMPLATE, email_from='other5@gmail.com', + msg_id='<1.2.JavaMail.new@agrolait.com>', + to='noone@example.com>', subject='spam', + extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>' % frog_group.id) + self.mail_message.unlink(cr, uid, [tmp_msg_id]) + # Test: no group 'Re: news' created, still only 1 Frogs group + self.assertEqual(len(frog_groups), 0, + 'message_process: reply on Frogs should not have created a new group with new subject') + frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) + self.assertEqual(len(frog_groups), 1, + 'message_process: reply on Frogs should not have created a duplicate group with old subject') + frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) + # Test: one new message + self.assertEqual(len(frog_group.message_ids), 4, 'message_process: group should contain 4 messages after reply') + # Do: due to some issue, same email goes back into the mailgateway frog_groups = format_and_process(MAIL_TEMPLATE, email_from='other4@gmail.com', msg_id='<1198923581.41972151344608186760.JavaMail.diff1@agrolait.com>', - subject='Re: news', extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) + subject='Re: news', extra='In-Reply-To: <1198923581.41972151344608186799.JavaMail.diff1@agrolait.com>\n') # Test: no group 'Re: news' created, still only 1 Frogs group self.assertEqual(len(frog_groups), 0, 'message_process: reply on Frogs should not have created a new group with new subject') @@ -405,7 +430,7 @@ class TestMailgateway(TestMail): 'message_process: reply on Frogs should not have created a duplicate group with old subject') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: no new message - self.assertEqual(len(frog_group.message_ids), 3, 'message_process: message with already existing message_id should not have been duplicated') + self.assertEqual(len(frog_group.message_ids), 4, 'message_process: message with already existing message_id should not have been duplicated') # Test: message_id is still unique msg_ids = self.mail_message.search(cr, uid, [('message_id', 'ilike', '<1198923581.41972151344608186760.JavaMail.diff1@agrolait.com>')]) self.assertEqual(len(msg_ids), 1, @@ -422,7 +447,7 @@ class TestMailgateway(TestMail): format_and_process(MAIL_TEMPLATE, email_from='Lombrik Lubrik ', to='erroneous@example.com>', subject='Re: news (2)', msg_id='<1198923581.41972151344608186760.JavaMail.new1@agrolait.com>', - extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) + extra='In-Reply-To: <1198923581.41972151344608186799.JavaMail.diff1@agrolait.com>') frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: author is A-Raoul (only existing) @@ -436,7 +461,7 @@ class TestMailgateway(TestMail): format_and_process(MAIL_TEMPLATE, email_from='Lombrik Lubrik ', to='erroneous@example.com>', subject='Re: news (3)', msg_id='<1198923581.41972151344608186760.JavaMail.new2@agrolait.com>', - extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) + extra='In-Reply-To: <1198923581.41972151344608186799.JavaMail.diff1@agrolait.com>') frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: author is Raoul (user), not A-Raoul @@ -451,7 +476,7 @@ class TestMailgateway(TestMail): format_and_process(MAIL_TEMPLATE, email_from='Lombrik Lubrik ', to='erroneous@example.com>', subject='Re: news (3)', msg_id='<1198923581.41972151344608186760.JavaMail.new3@agrolait.com>', - extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) + extra='In-Reply-To: <1198923581.41972151344608186799.JavaMail.diff1@agrolait.com>') frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: author is Raoul (user), not A-Raoul @@ -498,7 +523,7 @@ class TestMailgateway(TestMail): self.assertIn('
\nPlease call me as soon as possible this afternoon!\n\n--\nSylvie\n
', msg.body, 'message_process: plaintext incoming email incorrectly parsed') - @mute_logger('openerp.addons.mail.mail_thread', 'openerp.osv.orm') + # @mute_logger('openerp.addons.mail.mail_thread', 'openerp.osv.orm') def test_20_thread_parent_resolution(self): """ Testing parent/child relationships are correctly established when processing incoming mails """ cr, uid = self.cr, self.uid From 702b9c2e1bba826b29e9d9157b42c583f72d8d5b Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Thu, 28 Nov 2013 17:36:13 +0100 Subject: [PATCH 076/171] [FIX]base_import: if the error message was an except_orm or an access denied error, the error message was not displayed, only a red div without anything in it. bzr revid: dle@openerp.com-20131128163613-e20nbr3yqvhvx4bv --- addons/base_import/static/src/js/import.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/base_import/static/src/js/import.js b/addons/base_import/static/src/js/import.js index 0c3acd98265..1238bc9570f 100644 --- a/addons/base_import/static/src/js/import.js +++ b/addons/base_import/static/src/js/import.js @@ -373,7 +373,7 @@ openerp.base_import = function (instance) { return $.when([{ type: 'error', record: false, - message: error.data.fault_code, + message: error.data.arguments[1], }]); }) ; }, From 5c3dbb8aa87ef4b9049138f64c6b8988d0502881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Fri, 29 Nov 2013 11:27:09 +0100 Subject: [PATCH 077/171] [FIX] crm_claim: the 'My Company' filter was wrong, not useful and not possible to achieve. It is therefore set as invisible, and its domain set as void. This won't break any inheriting views, and this filter is ready to be removed in 8.0 lp bug: https://launchpad.net/bugs/1153956 fixed bzr revid: tde@openerp.com-20131129102709-wq4ftqx1x8h6n9xb --- addons/crm_claim/report/crm_claim_report_view.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/crm_claim/report/crm_claim_report_view.xml b/addons/crm_claim/report/crm_claim_report_view.xml index a9a4bcb27c1..8fb46985d94 100644 --- a/addons/crm_claim/report/crm_claim_report_view.xml +++ b/addons/crm_claim/report/crm_claim_report_view.xml @@ -56,7 +56,9 @@ - + + From 556c7f03f0e469e8d0702ba0baa30fd71cde7828 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 29 Nov 2013 15:35:22 +0100 Subject: [PATCH 078/171] [FIX] purchase: revert revision 7677 to set a default unit of measure to 'Unit' This allows to field a purchase.order without showing the units of measure if not product is selected Revision 7677 was integrated to fix lp:958897 (no change of uom when selecting a product whose uom is in the category 'Units'). This fix did not solve it properly (only for initial value) and introduced another problem. A better fix will be done on the onchange product. bzr revid: mat@openerp.com-20131129143522-i85e4hvf0p4h3ynn --- addons/purchase/purchase.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 10d8a34ba74..4aa59744a12 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -853,6 +853,14 @@ class purchase_order_line(osv.osv): res[line.id] = cur_obj.round(cr, uid, cur, taxes['total']) return res + def _get_uom_id(self, cr, uid, context=None): + try: + proxy = self.pool.get('ir.model.data') + result = proxy.get_object_reference(cr, uid, 'product', 'product_uom_unit') + return result[1] + except Exception, ex: + return False + _columns = { 'name': fields.text('Description', required=True), 'product_qty': fields.float('Quantity', digits_compute=dp.get_precision('Product Unit of Measure'), required=True), @@ -879,6 +887,7 @@ class purchase_order_line(osv.osv): } _defaults = { + 'product_uom' : _get_uom_id, 'product_qty': lambda *a: 1.0, 'state': lambda *args: 'draft', 'invoiced': lambda *a: 0, From fc4eca01e74e03331136029cb10a3c6f09cab55f Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Fri, 29 Nov 2013 16:47:14 +0100 Subject: [PATCH 079/171] [FIX] {account, sale_stock}: res_config: set_default as SUPERUSER_ID. check user group to avoid passthrough access rights security bzr revid: dle@openerp.com-20131129154714-pogix71b73nz11qp --- addons/account/account.py | 5 ++++- addons/account/res_config.py | 11 ++++++----- addons/sale_stock/res_config.py | 8 +++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index f3abf3ee07b..e37ea0e9b6f 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -25,6 +25,7 @@ from dateutil.relativedelta import relativedelta from operator import itemgetter import time +import openerp from openerp import SUPERUSER_ID from openerp import pooler, tools from openerp.osv import fields, osv @@ -3447,6 +3448,8 @@ class wizard_multi_charts_accounts(osv.osv_memory): all the provided information to create the accounts, the banks, the journals, the taxes, the tax codes, the accounting properties... accordingly for the chosen company. ''' + if uid != SUPERUSER_ID and not self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager'): + raise openerp.exceptions.AccessError(_("Only administrators can change the settings")) obj_data = self.pool.get('ir.model.data') ir_values_obj = self.pool.get('ir.values') obj_wizard = self.browse(cr, uid, ids[0]) @@ -3463,7 +3466,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): self.pool.get(tmp2[0]).write(cr, uid, tmp2[1], { 'currency_id': obj_wizard.currency_id.id }) - except ValueError, e: + except ValueError: pass # If the floats for sale/purchase rates have been filled, create templates from them diff --git a/addons/account/res_config.py b/addons/account/res_config.py index aba423d0085..a894ebb9b8a 100644 --- a/addons/account/res_config.py +++ b/addons/account/res_config.py @@ -22,13 +22,12 @@ import time import datetime from dateutil.relativedelta import relativedelta -from operator import itemgetter -from os.path import join as opj +import openerp +from openerp import SUPERUSER_ID from openerp.tools import DEFAULT_SERVER_DATE_FORMAT as DF from openerp.tools.translate import _ from openerp.osv import fields, osv -from openerp import tools class account_config_settings(osv.osv_memory): _name = 'account.config.settings' @@ -276,11 +275,13 @@ class account_config_settings(osv.osv_memory): def set_default_taxes(self, cr, uid, ids, context=None): """ set default sale and purchase taxes for products """ + if uid != SUPERUSER_ID and not self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager'): + raise openerp.exceptions.AccessError(_("Only administrators can change the settings")) ir_values = self.pool.get('ir.values') config = self.browse(cr, uid, ids[0], context) - ir_values.set_default(cr, uid, 'product.product', 'taxes_id', + ir_values.set_default(cr, SUPERUSER_ID, 'product.product', 'taxes_id', config.default_sale_tax and [config.default_sale_tax.id] or False, company_id=config.company_id.id) - ir_values.set_default(cr, uid, 'product.product', 'supplier_taxes_id', + ir_values.set_default(cr, SUPERUSER_ID, 'product.product', 'supplier_taxes_id', config.default_purchase_tax and [config.default_purchase_tax.id] or False, company_id=config.company_id.id) def set_chart_of_accounts(self, cr, uid, ids, context=None): diff --git a/addons/sale_stock/res_config.py b/addons/sale_stock/res_config.py index 3a6dcb404dd..30c15df6f9e 100644 --- a/addons/sale_stock/res_config.py +++ b/addons/sale_stock/res_config.py @@ -19,8 +19,9 @@ # ############################################################################## +import openerp +from openerp import SUPERUSER_ID from openerp.osv import fields, osv -from openerp import pooler from openerp.tools.translate import _ class sale_configuration(osv.osv_memory): @@ -76,12 +77,13 @@ class sale_configuration(osv.osv_memory): } def set_sale_defaults(self, cr, uid, ids, context=None): + if uid != SUPERUSER_ID and not self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager'): + raise openerp.exceptions.AccessError(_("Only administrators can change the settings")) ir_values = self.pool.get('ir.values') - ir_model_data = self.pool.get('ir.model.data') wizard = self.browse(cr, uid, ids)[0] default_picking_policy = 'one' if wizard.default_picking_policy else 'direct' - ir_values.set_default(cr, uid, 'sale.order', 'picking_policy', default_picking_policy) + ir_values.set_default(cr, SUPERUSER_ID, 'sale.order', 'picking_policy', default_picking_policy) res = super(sale_configuration, self).set_sale_defaults(cr, uid, ids, context) return res From 04cdf223b602d18da9a995a7c9fdd6b5c9694292 Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Fri, 29 Nov 2013 16:48:06 +0100 Subject: [PATCH 080/171] [FIX]res_config: set_default as SUPERUSER_ID. check user group to avoid passthrough access rights security bzr revid: dle@openerp.com-20131129154806-0gaqdbp6zobdqxy4 --- openerp/addons/base/res/res_config.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_config.py b/openerp/addons/base/res/res_config.py index a36c70dc046..1fa5b7bfe49 100644 --- a/openerp/addons/base/res/res_config.py +++ b/openerp/addons/base/res/res_config.py @@ -22,6 +22,7 @@ import logging from operator import attrgetter import openerp +from openerp import SUPERUSER_ID from openerp.osv import osv, fields from openerp.tools import ustr from openerp.tools.translate import _ @@ -530,6 +531,9 @@ class res_config_settings(osv.osv_memory, res_config_module_installation_mixin): return res def execute(self, cr, uid, ids, context=None): + if uid != SUPERUSER_ID and not self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager'): + raise openerp.exceptions.AccessError(_("Only administrators can change the settings")) + ir_values = self.pool.get('ir.values') ir_module = self.pool.get('ir.module.module') classified = self._get_classified_fields(cr, uid, context) @@ -538,7 +542,7 @@ class res_config_settings(osv.osv_memory, res_config_module_installation_mixin): # default values fields for name, model, field in classified['default']: - ir_values.set_default(cr, uid, model, field, config[name]) + ir_values.set_default(cr, SUPERUSER_ID, model, field, config[name]) # group fields: modify group / implied groups for name, group, implied_group in classified['group']: From 9f04e0c76c71ef19f14bd8682e57e182477a0038 Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Sat, 30 Nov 2013 05:14:29 +0000 Subject: [PATCH 081/171] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20131130050422-r8hhiot5r58eukys bzr revid: launchpad_translations_on_behalf_of_openerp-20131130051429-uepuma01yhw11md9 --- addons/product/i18n/am.po | 2475 ++++++++++++++++++++++++++ addons/web/i18n/ar.po | 4 +- addons/web/i18n/bg.po | 4 +- addons/web/i18n/bn.po | 4 +- addons/web/i18n/bs.po | 4 +- addons/web/i18n/ca.po | 4 +- addons/web/i18n/cs.po | 4 +- addons/web/i18n/da.po | 4 +- addons/web/i18n/de.po | 4 +- addons/web/i18n/en_AU.po | 4 +- addons/web/i18n/en_GB.po | 4 +- addons/web/i18n/es.po | 4 +- addons/web/i18n/es_CL.po | 4 +- addons/web/i18n/es_CR.po | 4 +- addons/web/i18n/es_DO.po | 4 +- addons/web/i18n/es_EC.po | 4 +- addons/web/i18n/es_MX.po | 4 +- addons/web/i18n/et.po | 8 +- addons/web/i18n/eu.po | 4 +- addons/web/i18n/fa.po | 4 +- addons/web/i18n/fi.po | 18 +- addons/web/i18n/fr.po | 4 +- addons/web/i18n/fr_CA.po | 4 +- addons/web/i18n/gl.po | 4 +- addons/web/i18n/gu.po | 4 +- addons/web/i18n/hi.po | 4 +- addons/web/i18n/hr.po | 4 +- addons/web/i18n/hu.po | 4 +- addons/web/i18n/id.po | 4 +- addons/web/i18n/it.po | 4 +- addons/web/i18n/ja.po | 18 +- addons/web/i18n/ka.po | 4 +- addons/web/i18n/ko.po | 4 +- addons/web/i18n/lo.po | 4 +- addons/web/i18n/lt.po | 4 +- addons/web/i18n/lv.po | 4 +- addons/web/i18n/mk.po | 4 +- addons/web/i18n/mn.po | 4 +- addons/web/i18n/nb.po | 4 +- addons/web/i18n/nl.po | 4 +- addons/web/i18n/nl_BE.po | 4 +- addons/web/i18n/pl.po | 4 +- addons/web/i18n/pt.po | 4 +- addons/web/i18n/pt_BR.po | 6 +- addons/web/i18n/ro.po | 4 +- addons/web/i18n/ru.po | 4 +- addons/web/i18n/sk.po | 4 +- addons/web/i18n/sl.po | 4 +- addons/web/i18n/sq.po | 4 +- addons/web/i18n/sr@latin.po | 4 +- addons/web/i18n/sv.po | 4 +- addons/web/i18n/th.po | 4 +- addons/web/i18n/tr.po | 4 +- addons/web/i18n/uk.po | 4 +- addons/web/i18n/vi.po | 4 +- addons/web/i18n/zh_CN.po | 4 +- addons/web/i18n/zh_TW.po | 4 +- addons/web_calendar/i18n/ar.po | 4 +- addons/web_calendar/i18n/bg.po | 4 +- addons/web_calendar/i18n/bn.po | 4 +- addons/web_calendar/i18n/bs.po | 4 +- addons/web_calendar/i18n/ca.po | 4 +- addons/web_calendar/i18n/cs.po | 4 +- addons/web_calendar/i18n/da.po | 4 +- addons/web_calendar/i18n/de.po | 4 +- addons/web_calendar/i18n/en_AU.po | 4 +- addons/web_calendar/i18n/en_GB.po | 4 +- addons/web_calendar/i18n/es.po | 4 +- addons/web_calendar/i18n/es_CL.po | 4 +- addons/web_calendar/i18n/es_CR.po | 4 +- addons/web_calendar/i18n/es_DO.po | 4 +- addons/web_calendar/i18n/es_EC.po | 4 +- addons/web_calendar/i18n/es_MX.po | 4 +- addons/web_calendar/i18n/et.po | 4 +- addons/web_calendar/i18n/eu.po | 4 +- addons/web_calendar/i18n/fa.po | 4 +- addons/web_calendar/i18n/fi.po | 4 +- addons/web_calendar/i18n/fr.po | 4 +- addons/web_calendar/i18n/fr_CA.po | 4 +- addons/web_calendar/i18n/gl.po | 4 +- addons/web_calendar/i18n/gu.po | 4 +- addons/web_calendar/i18n/hr.po | 4 +- addons/web_calendar/i18n/hu.po | 4 +- addons/web_calendar/i18n/id.po | 4 +- addons/web_calendar/i18n/it.po | 4 +- addons/web_calendar/i18n/ja.po | 4 +- addons/web_calendar/i18n/ka.po | 4 +- addons/web_calendar/i18n/ko.po | 4 +- addons/web_calendar/i18n/lt.po | 4 +- addons/web_calendar/i18n/mk.po | 4 +- addons/web_calendar/i18n/mn.po | 4 +- addons/web_calendar/i18n/nb.po | 4 +- addons/web_calendar/i18n/nl.po | 4 +- addons/web_calendar/i18n/nl_BE.po | 4 +- addons/web_calendar/i18n/pl.po | 4 +- addons/web_calendar/i18n/pt.po | 4 +- addons/web_calendar/i18n/pt_BR.po | 4 +- addons/web_calendar/i18n/ro.po | 4 +- addons/web_calendar/i18n/ru.po | 4 +- addons/web_calendar/i18n/sk.po | 4 +- addons/web_calendar/i18n/sl.po | 4 +- addons/web_calendar/i18n/sq.po | 4 +- addons/web_calendar/i18n/sr@latin.po | 4 +- addons/web_calendar/i18n/sv.po | 4 +- addons/web_calendar/i18n/th.po | 4 +- addons/web_calendar/i18n/tr.po | 4 +- addons/web_calendar/i18n/uk.po | 4 +- addons/web_calendar/i18n/zh_CN.po | 4 +- addons/web_calendar/i18n/zh_TW.po | 4 +- addons/web_diagram/i18n/ar.po | 4 +- addons/web_diagram/i18n/bg.po | 4 +- addons/web_diagram/i18n/bn.po | 4 +- addons/web_diagram/i18n/bs.po | 4 +- addons/web_diagram/i18n/ca.po | 4 +- addons/web_diagram/i18n/cs.po | 4 +- addons/web_diagram/i18n/da.po | 4 +- addons/web_diagram/i18n/de.po | 4 +- addons/web_diagram/i18n/en_AU.po | 4 +- addons/web_diagram/i18n/en_GB.po | 4 +- addons/web_diagram/i18n/es.po | 4 +- addons/web_diagram/i18n/es_CL.po | 4 +- addons/web_diagram/i18n/es_CR.po | 4 +- addons/web_diagram/i18n/es_DO.po | 4 +- addons/web_diagram/i18n/es_EC.po | 4 +- addons/web_diagram/i18n/es_MX.po | 4 +- addons/web_diagram/i18n/et.po | 4 +- addons/web_diagram/i18n/fa.po | 4 +- addons/web_diagram/i18n/fi.po | 4 +- addons/web_diagram/i18n/fr.po | 4 +- addons/web_diagram/i18n/gl.po | 4 +- addons/web_diagram/i18n/gu.po | 4 +- addons/web_diagram/i18n/hr.po | 4 +- addons/web_diagram/i18n/hu.po | 4 +- addons/web_diagram/i18n/id.po | 4 +- addons/web_diagram/i18n/it.po | 4 +- addons/web_diagram/i18n/ja.po | 4 +- addons/web_diagram/i18n/ka.po | 4 +- addons/web_diagram/i18n/ko.po | 4 +- addons/web_diagram/i18n/lt.po | 4 +- addons/web_diagram/i18n/mk.po | 4 +- addons/web_diagram/i18n/mn.po | 4 +- addons/web_diagram/i18n/nb.po | 4 +- addons/web_diagram/i18n/nl.po | 4 +- addons/web_diagram/i18n/nl_BE.po | 4 +- addons/web_diagram/i18n/pl.po | 4 +- addons/web_diagram/i18n/pt.po | 4 +- addons/web_diagram/i18n/pt_BR.po | 4 +- addons/web_diagram/i18n/ro.po | 4 +- addons/web_diagram/i18n/ru.po | 4 +- addons/web_diagram/i18n/sl.po | 4 +- addons/web_diagram/i18n/sq.po | 4 +- addons/web_diagram/i18n/sr@latin.po | 4 +- addons/web_diagram/i18n/sv.po | 4 +- addons/web_diagram/i18n/th.po | 4 +- addons/web_diagram/i18n/tr.po | 4 +- addons/web_diagram/i18n/zh_CN.po | 4 +- addons/web_diagram/i18n/zh_TW.po | 4 +- addons/web_gantt/i18n/ar.po | 4 +- addons/web_gantt/i18n/bg.po | 4 +- addons/web_gantt/i18n/bn.po | 4 +- addons/web_gantt/i18n/bs.po | 4 +- addons/web_gantt/i18n/ca.po | 4 +- addons/web_gantt/i18n/cs.po | 4 +- addons/web_gantt/i18n/da.po | 4 +- addons/web_gantt/i18n/de.po | 4 +- addons/web_gantt/i18n/en_AU.po | 4 +- addons/web_gantt/i18n/en_GB.po | 4 +- addons/web_gantt/i18n/es.po | 4 +- addons/web_gantt/i18n/es_CL.po | 4 +- addons/web_gantt/i18n/es_CR.po | 4 +- addons/web_gantt/i18n/es_DO.po | 4 +- addons/web_gantt/i18n/es_EC.po | 4 +- addons/web_gantt/i18n/es_MX.po | 4 +- addons/web_gantt/i18n/et.po | 4 +- addons/web_gantt/i18n/fa.po | 4 +- addons/web_gantt/i18n/fi.po | 4 +- addons/web_gantt/i18n/fr.po | 4 +- addons/web_gantt/i18n/gl.po | 4 +- addons/web_gantt/i18n/gu.po | 4 +- addons/web_gantt/i18n/hr.po | 4 +- addons/web_gantt/i18n/hu.po | 4 +- addons/web_gantt/i18n/it.po | 4 +- addons/web_gantt/i18n/ja.po | 4 +- addons/web_gantt/i18n/ka.po | 4 +- addons/web_gantt/i18n/ko.po | 4 +- addons/web_gantt/i18n/lo.po | 8 +- addons/web_gantt/i18n/lt.po | 4 +- addons/web_gantt/i18n/mk.po | 4 +- addons/web_gantt/i18n/mn.po | 4 +- addons/web_gantt/i18n/nb.po | 4 +- addons/web_gantt/i18n/nl.po | 4 +- addons/web_gantt/i18n/nl_BE.po | 4 +- addons/web_gantt/i18n/pl.po | 4 +- addons/web_gantt/i18n/pt.po | 4 +- addons/web_gantt/i18n/pt_BR.po | 4 +- addons/web_gantt/i18n/ro.po | 4 +- addons/web_gantt/i18n/ru.po | 4 +- addons/web_gantt/i18n/sl.po | 4 +- addons/web_gantt/i18n/sq.po | 4 +- addons/web_gantt/i18n/sr@latin.po | 4 +- addons/web_gantt/i18n/sv.po | 4 +- addons/web_gantt/i18n/th.po | 4 +- addons/web_gantt/i18n/tr.po | 4 +- addons/web_gantt/i18n/zh_CN.po | 4 +- addons/web_graph/i18n/ar.po | 4 +- addons/web_graph/i18n/bg.po | 4 +- addons/web_graph/i18n/bn.po | 4 +- addons/web_graph/i18n/bs.po | 4 +- addons/web_graph/i18n/ca.po | 4 +- addons/web_graph/i18n/cs.po | 4 +- addons/web_graph/i18n/da.po | 4 +- addons/web_graph/i18n/de.po | 4 +- addons/web_graph/i18n/en_AU.po | 4 +- addons/web_graph/i18n/en_GB.po | 4 +- addons/web_graph/i18n/es.po | 4 +- addons/web_graph/i18n/es_CL.po | 4 +- addons/web_graph/i18n/es_CR.po | 4 +- addons/web_graph/i18n/es_DO.po | 4 +- addons/web_graph/i18n/es_EC.po | 4 +- addons/web_graph/i18n/es_MX.po | 4 +- addons/web_graph/i18n/et.po | 4 +- addons/web_graph/i18n/fa.po | 4 +- addons/web_graph/i18n/fi.po | 4 +- addons/web_graph/i18n/fr.po | 4 +- addons/web_graph/i18n/fr_CA.po | 4 +- addons/web_graph/i18n/gl.po | 4 +- addons/web_graph/i18n/gu.po | 4 +- addons/web_graph/i18n/hr.po | 4 +- addons/web_graph/i18n/hu.po | 4 +- addons/web_graph/i18n/it.po | 4 +- addons/web_graph/i18n/ja.po | 4 +- addons/web_graph/i18n/ka.po | 4 +- addons/web_graph/i18n/ko.po | 4 +- addons/web_graph/i18n/lt.po | 4 +- addons/web_graph/i18n/mk.po | 4 +- addons/web_graph/i18n/mn.po | 4 +- addons/web_graph/i18n/nb.po | 4 +- addons/web_graph/i18n/nl.po | 4 +- addons/web_graph/i18n/nl_BE.po | 4 +- addons/web_graph/i18n/pl.po | 4 +- addons/web_graph/i18n/pt.po | 4 +- addons/web_graph/i18n/pt_BR.po | 4 +- addons/web_graph/i18n/ro.po | 4 +- addons/web_graph/i18n/ru.po | 4 +- addons/web_graph/i18n/sl.po | 4 +- addons/web_graph/i18n/sq.po | 4 +- addons/web_graph/i18n/sr@latin.po | 4 +- addons/web_graph/i18n/sv.po | 4 +- addons/web_graph/i18n/th.po | 4 +- addons/web_graph/i18n/tr.po | 4 +- addons/web_graph/i18n/zh_CN.po | 4 +- addons/web_kanban/i18n/ar.po | 4 +- addons/web_kanban/i18n/bg.po | 4 +- addons/web_kanban/i18n/bn.po | 4 +- addons/web_kanban/i18n/bs.po | 4 +- addons/web_kanban/i18n/ca.po | 4 +- addons/web_kanban/i18n/cs.po | 4 +- addons/web_kanban/i18n/da.po | 4 +- addons/web_kanban/i18n/de.po | 4 +- addons/web_kanban/i18n/en_AU.po | 4 +- addons/web_kanban/i18n/en_GB.po | 4 +- addons/web_kanban/i18n/es.po | 4 +- addons/web_kanban/i18n/es_CL.po | 4 +- addons/web_kanban/i18n/es_CR.po | 4 +- addons/web_kanban/i18n/es_DO.po | 4 +- addons/web_kanban/i18n/es_EC.po | 4 +- addons/web_kanban/i18n/es_MX.po | 4 +- addons/web_kanban/i18n/et.po | 4 +- addons/web_kanban/i18n/fa.po | 4 +- addons/web_kanban/i18n/fi.po | 4 +- addons/web_kanban/i18n/fr.po | 4 +- addons/web_kanban/i18n/fr_CA.po | 4 +- addons/web_kanban/i18n/gl.po | 4 +- addons/web_kanban/i18n/gu.po | 4 +- addons/web_kanban/i18n/hr.po | 4 +- addons/web_kanban/i18n/hu.po | 4 +- addons/web_kanban/i18n/it.po | 4 +- addons/web_kanban/i18n/ja.po | 8 +- addons/web_kanban/i18n/ka.po | 4 +- addons/web_kanban/i18n/ko.po | 4 +- addons/web_kanban/i18n/lt.po | 4 +- addons/web_kanban/i18n/mk.po | 4 +- addons/web_kanban/i18n/mn.po | 4 +- addons/web_kanban/i18n/nb.po | 4 +- addons/web_kanban/i18n/nl.po | 4 +- addons/web_kanban/i18n/nl_BE.po | 4 +- addons/web_kanban/i18n/pl.po | 4 +- addons/web_kanban/i18n/pt.po | 4 +- addons/web_kanban/i18n/pt_BR.po | 4 +- addons/web_kanban/i18n/ro.po | 4 +- addons/web_kanban/i18n/ru.po | 4 +- addons/web_kanban/i18n/sl.po | 4 +- addons/web_kanban/i18n/sr@latin.po | 4 +- addons/web_kanban/i18n/sv.po | 4 +- addons/web_kanban/i18n/th.po | 4 +- addons/web_kanban/i18n/tr.po | 4 +- addons/web_kanban/i18n/zh_CN.po | 4 +- addons/web_kanban/i18n/zh_TW.po | 4 +- addons/web_view_editor/i18n/ar.po | 4 +- addons/web_view_editor/i18n/bs.po | 4 +- addons/web_view_editor/i18n/cs.po | 4 +- addons/web_view_editor/i18n/da.po | 4 +- addons/web_view_editor/i18n/de.po | 4 +- addons/web_view_editor/i18n/en_AU.po | 4 +- addons/web_view_editor/i18n/en_GB.po | 4 +- addons/web_view_editor/i18n/es.po | 4 +- addons/web_view_editor/i18n/es_DO.po | 4 +- addons/web_view_editor/i18n/es_EC.po | 4 +- addons/web_view_editor/i18n/es_MX.po | 4 +- addons/web_view_editor/i18n/et.po | 4 +- addons/web_view_editor/i18n/fa.po | 4 +- addons/web_view_editor/i18n/fi.po | 4 +- addons/web_view_editor/i18n/fr.po | 4 +- addons/web_view_editor/i18n/hr.po | 4 +- addons/web_view_editor/i18n/hu.po | 4 +- addons/web_view_editor/i18n/it.po | 4 +- addons/web_view_editor/i18n/ko.po | 4 +- addons/web_view_editor/i18n/lt.po | 4 +- addons/web_view_editor/i18n/lv.po | 4 +- addons/web_view_editor/i18n/mk.po | 4 +- addons/web_view_editor/i18n/mn.po | 4 +- addons/web_view_editor/i18n/nb.po | 4 +- addons/web_view_editor/i18n/nl.po | 8 +- addons/web_view_editor/i18n/nl_BE.po | 4 +- addons/web_view_editor/i18n/pl.po | 4 +- addons/web_view_editor/i18n/pt.po | 4 +- addons/web_view_editor/i18n/pt_BR.po | 4 +- addons/web_view_editor/i18n/ro.po | 4 +- addons/web_view_editor/i18n/ru.po | 4 +- addons/web_view_editor/i18n/sl.po | 4 +- addons/web_view_editor/i18n/sv.po | 4 +- addons/web_view_editor/i18n/th.po | 4 +- addons/web_view_editor/i18n/tr.po | 4 +- addons/web_view_editor/i18n/zh_CN.po | 4 +- 334 files changed, 3164 insertions(+), 689 deletions(-) create mode 100644 addons/product/i18n/am.po diff --git a/addons/product/i18n/am.po b/addons/product/i18n/am.po new file mode 100644 index 00000000000..466eca830fc --- /dev/null +++ b/addons/product/i18n/am.po @@ -0,0 +1,2475 @@ +# Amharic translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-11-29 09:01+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Amharic \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-11-30 05:04+0000\n" +"X-Generator: Launchpad (build 16856)\n" + +#. module: product +#: field:product.packaging,rows:0 +msgid "Number of Layers" +msgstr "" + +#. module: product +#: help:product.pricelist.item,base:0 +msgid "Base price for computation." +msgstr "" + +#. module: product +#: help:product.product,seller_qty:0 +msgid "This is minimum quantity to purchase from Main Supplier." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_34_product_template +msgid "Webcam" +msgstr "የዌብ ካሜራ" + +#. module: product +#: field:product.product,incoming_qty:0 +msgid "Incoming" +msgstr "የሚመጣው" + +#. module: product +#: view:product.product:0 +msgid "Product Name" +msgstr "የእቃው ስም" + +#. module: product +#: view:product.template:0 +msgid "Second Unit of Measure" +msgstr "" + +#. module: product +#: help:res.partner,property_product_pricelist:0 +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" +msgstr "" + +#. module: product +#: field:product.product,seller_qty:0 +msgid "Supplier Quantity" +msgstr "ብዛት" + +#. module: product +#: selection:product.template,mes_type:0 +msgid "Fixed" +msgstr "ቛሚ" + +#. module: product +#: model:product.template,name:product.product_product_10_product_template +msgid "Mouse, Optical" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Base Prices" +msgstr "ዋጋ" + +#. module: product +#: field:product.pricelist.item,name:0 +msgid "Rule Name" +msgstr "" + +#. module: product +#: help:product.template,list_price:0 +msgid "" +"Base price to compute the customer price. Sometimes called the catalog price." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_3_product_template +msgid "PC Assemble SC234" +msgstr "" + +#. module: product +#: help:product.product,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: product +#: code:addons/product/pricelist.py:179 +#: code:addons/product/product.py:208 +#, python-format +msgid "Warning!" +msgstr "ማስጠንቀቅያ!" + +#. module: product +#: field:product.product,image_small:0 +msgid "Small-sized image" +msgstr "" + +#. module: product +#: code:addons/product/product.py:176 +#, python-format +msgid "" +"Conversion from Product UoM %s to Default UoM %s is not possible as they " +"both belong to different Category!." +msgstr "" + +#. module: product +#: selection:product.template,cost_method:0 +msgid "Average Price" +msgstr "" + +#. module: product +#: help:product.pricelist.item,name:0 +msgid "Explicit rule name for this pricelist line." +msgstr "" + +#. module: product +#: field:product.template,uos_coeff:0 +msgid "Unit of Measure -> UOS Coeff" +msgstr "" + +#. module: product +#: field:product.price_list,price_list:0 +msgid "PriceList" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_4_product_template +msgid "PC Assemble SC349" +msgstr "" + +#. module: product +#: help:product.product,seller_delay:0 +msgid "" +"This is the average delay in days between the purchase order confirmation " +"and the reception of goods for this product and for the default supplier. It " +"is used by the scheduler to order requests based on reordering delays." +msgstr "" + +#. module: product +#: model:product.pricelist.version,name:product.ver0 +msgid "Default Public Pricelist Version" +msgstr "" + +#. module: product +#: selection:product.template,cost_method:0 +msgid "Standard Price" +msgstr "" + +#. module: product +#: model:product.pricelist.type,name:product.pricelist_type_sale +#: field:res.partner,property_product_pricelist:0 +msgid "Sale Pricelist" +msgstr "" + +#. module: product +#: view:product.template:0 +#: field:product.template,type:0 +msgid "Product Type" +msgstr "" + +#. module: product +#: code:addons/product/product.py:412 +#, python-format +msgid "Products: " +msgstr "" + +#. module: product +#: constraint:decimal.precision:0 +msgid "" +"Error! You cannot define the decimal precision of 'Account' as greater than " +"the rounding factor of the company's main currency" +msgstr "" + +#. module: product +#: field:product.category,parent_id:0 +msgid "Parent Category" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_33_product_template +msgid "Headset for laptop PC with USB connector." +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_all +msgid "All products" +msgstr "" + +#. module: product +#: model:process.node,note:product.process_node_supplier0 +msgid "Supplier name, price, product code, ..." +msgstr "" + +#. module: product +#: constraint:res.currency:0 +msgid "" +"Error! You cannot define a rounding factor for the company's main currency " +"that is smaller than the decimal precision of 'Account'." +msgstr "" + +#. module: product +#: help:product.product,outgoing_qty:0 +msgid "" +"Quantity of products that are planned to leave.\n" +"In a context with a single Stock Location, this includes goods leaving this " +"Location, or any of its children.\n" +"In a context with a single Warehouse, this includes goods leaving the Stock " +"Location of this Warehouse, or any of its children.\n" +"In a context with a single Shop, this includes goods leaving the Stock " +"Location of the Warehouse of this Shop, or any of its children.\n" +"Otherwise, this includes goods leaving any Stock Location with 'internal' " +"type." +msgstr "" + +#. module: product +#: model:product.template,description_sale:product.product_product_42_product_template +msgid "" +"Office Editing Software with word processing, spreadsheets, presentations, " +"graphics, and databases..." +msgstr "" + +#. module: product +#: field:product.product,seller_id:0 +msgid "Main Supplier" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_ul_form_action +#: model:ir.model,name:product.model_product_packaging +#: model:ir.ui.menu,name:product.menu_product_ul_form_action +#: view:product.packaging:0 +#: view:product.product:0 +#: view:product.ul:0 +msgid "Packaging" +msgstr "" + +#. module: product +#: help:product.product,active:0 +msgid "" +"If unchecked, it will allow you to hide the product without removing it." +msgstr "" + +#. module: product +#: view:product.product:0 +#: field:product.template,categ_id:0 +#: field:product.uom,category_id:0 +msgid "Category" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_25_product_template +msgid "Laptop E5023" +msgstr "" + +#. module: product +#: help:product.packaging,ul_qty:0 +msgid "The number of packages by layer" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_30_product_template +msgid "Pen drive, SP-4" +msgstr "" + +#. module: product +#: field:product.packaging,qty:0 +msgid "Quantity by Package" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_29_product_template +msgid "Pen drive, SP-2" +msgstr "" + +#. module: product +#: view:product.product:0 +#: view:product.template:0 +#: field:product.template,state:0 +msgid "Status" +msgstr "" + +#. module: product +#: help:product.template,categ_id:0 +msgid "Select category for the current product" +msgstr "" + +#. module: product +#: field:product.product,outgoing_qty:0 +msgid "Outgoing" +msgstr "" + +#. module: product +#: model:product.price.type,name:product.list_price +#: field:product.product,lst_price:0 +msgid "Public Price" +msgstr "" + +#. module: product +#: field:product.price_list,qty5:0 +msgid "Quantity-5" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_ul_form_action +msgid "" +"

\n" +" Click to add a new packaging type.\n" +"

\n" +" The packaging type define the dimensions as well as the " +"number\n" +" of products per package. This will ensure salesperson sell " +"the\n" +" right number of products according to the package selected.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: field:product.template,product_manager:0 +msgid "Product Manager" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_7_product_template +msgid "17” LCD Monitor" +msgstr "" + +#. module: product +#: field:product.supplierinfo,product_name:0 +msgid "Supplier Product Name" +msgstr "" + +#. module: product +#: view:product.pricelist:0 +msgid "Products Price Search" +msgstr "" + +#. module: product +#: view:product.template:0 +#: field:product.template,description_sale:0 +msgid "Sale Description" +msgstr "" + +#. module: product +#: help:product.packaging,length:0 +msgid "The length of the package" +msgstr "" + +#. module: product +#: field:product.product,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: product +#: help:product.template,weight_net:0 +msgid "The net weight in Kg." +msgstr "" + +#. module: product +#: field:pricelist.partnerinfo,min_quantity:0 +#: field:product.supplierinfo,qty:0 +msgid "Quantity" +msgstr "" + +#. module: product +#: view:product.price_list:0 +msgid "Calculate Product Price per Unit Based on Pricelist Version." +msgstr "" + +#. module: product +#: help:product.pricelist.item,product_id:0 +msgid "" +"Specify a product if this rule only applies to one product. Keep empty " +"otherwise." +msgstr "" + +#. module: product +#: model:product.uom.categ,name:product.product_uom_categ_kgm +msgid "Weight" +msgstr "" + +#. module: product +#: help:product.product,virtual_available:0 +msgid "" +"Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\n" +"In a context with a single Stock Location, this includes goods stored in " +"this location, or any of its children.\n" +"In a context with a single Warehouse, this includes goods stored in the " +"Stock Location of this Warehouse, or any of its children.\n" +"In a context with a single Shop, this includes goods stored in the Stock " +"Location of the Warehouse of this Shop, or any of its children.\n" +"Otherwise, this includes goods stored in any Stock Location with 'internal' " +"type." +msgstr "" + +#. module: product +#: field:product.packaging,height:0 +msgid "Height" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Procurements" +msgstr "" + +#. module: product +#: model:res.groups,name:product.group_mrp_properties +msgid "Manage Properties of Product" +msgstr "" + +#. module: product +#: help:product.uom,factor:0 +msgid "" +"How much bigger or smaller this unit is compared to the reference Unit of " +"Measure for this category:\n" +"1 * (reference unit) = ratio * (this unit)" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_pricelist_partnerinfo +msgid "pricelist.partnerinfo" +msgstr "" + +#. module: product +#: field:product.price_list,qty2:0 +msgid "Quantity-2" +msgstr "" + +#. module: product +#: field:product.price_list,qty3:0 +msgid "Quantity-3" +msgstr "" + +#. module: product +#: field:product.price_list,qty1:0 +msgid "Quantity-1" +msgstr "" + +#. module: product +#: field:product.price_list,qty4:0 +msgid "Quantity-4" +msgstr "" + +#. module: product +#: view:res.partner:0 +msgid "Sales & Purchases" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_44_product_template +msgid "GrapWorks Software" +msgstr "" + +#. module: product +#: model:product.uom.categ,name:product.uom_categ_wtime +msgid "Working Time" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_42_product_template +msgid "Office Suite" +msgstr "" + +#. module: product +#: field:product.template,mes_type:0 +msgid "Measure Type" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_32_product_template +msgid "Headset standard" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_day +msgid "Day(s)" +msgstr "" + +#. module: product +#: help:product.product,incoming_qty:0 +msgid "" +"Quantity of products that are planned to arrive.\n" +"In a context with a single Stock Location, this includes goods arriving to " +"this Location, or any of its children.\n" +"In a context with a single Warehouse, this includes goods arriving to the " +"Stock Location of this Warehouse, or any of its children.\n" +"In a context with a single Shop, this includes goods arriving to the Stock " +"Location of the Warehouse of this Shop, or any of its children.\n" +"Otherwise, this includes goods arriving to any Stock Location with " +"'internal' type." +msgstr "" + +#. module: product +#: constraint:product.template:0 +msgid "" +"Error: The default Unit of Measure and the purchase Unit of Measure must be " +"in the same category." +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_uom_categ +msgid "Product uom categ" +msgstr "" + +#. module: product +#: model:product.ul,name:product.product_ul_box +msgid "Box 20x20x40" +msgstr "" + +#. module: product +#: field:product.template,warranty:0 +msgid "Warranty" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "Price Computation" +msgstr "" + +#. module: product +#: constraint:product.product:0 +msgid "" +"You provided an invalid \"EAN13 Barcode\" reference. You may use the " +"\"Internal Reference\" field instead." +msgstr "" + +#. module: product +#: model:res.groups,name:product.group_purchase_pricelist +msgid "Purchase Pricelists" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_5_product_template +msgid "PC Assemble + Custom (PC on Demand)" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_27_product_template +msgid "Custom Laptop based on customer's requirement." +msgstr "" + +#. module: product +#: help:product.packaging,width:0 +msgid "The width of the package" +msgstr "" + +#. module: product +#: code:addons/product/product.py:361 +#, python-format +msgid "Unit of Measure categories Mismatch!" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_36_product_template +msgid "Blank DVD-RW" +msgstr "" + +#. module: product +#: selection:product.category,type:0 +msgid "View" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_template_action_tree +msgid "Product Templates" +msgstr "" + +#. module: product +#: field:product.category,parent_left:0 +msgid "Left Parent" +msgstr "" + +#. module: product +#: help:product.pricelist.item,price_max_margin:0 +msgid "Specify the maximum amount of margin over the base price." +msgstr "" + +#. module: product +#: constraint:product.pricelist.item:0 +msgid "" +"Error! You cannot assign the Main Pricelist as Other Pricelist in PriceList " +"Item!" +msgstr "" + +#. module: product +#: view:product.price_list:0 +msgid "or" +msgstr "" + +#. module: product +#: constraint:product.packaging:0 +msgid "Error: Invalid ean code" +msgstr "" + +#. module: product +#: field:product.pricelist.item,min_quantity:0 +msgid "Min. Quantity" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_12_product_template +msgid "Mouse, Wireless" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_22_product_template +msgid "Processor Core i5 2.70 Ghz" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_price_type +msgid "Price Type" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "Max. Margin" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "Base Price" +msgstr "" + +#. module: product +#: help:product.supplierinfo,name:0 +msgid "Supplier of this product" +msgstr "" + +#. module: product +#: help:product.pricelist.version,active:0 +msgid "" +"When a version is duplicated it is set to non active, so that the dates do " +"not overlaps with original version. You should change the dates and " +"reactivate the pricelist" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_18_product_template +msgid "HDD SH-2" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_17_product_template +msgid "HDD SH-1" +msgstr "" + +#. module: product +#: field:product.supplierinfo,name:0 +#: field:product.template,seller_ids:0 +msgid "Supplier" +msgstr "" + +#. module: product +#: help:product.template,cost_method:0 +msgid "" +"Standard Price: The cost price is manually updated at the end of a specific " +"period (usually every year). \n" +"Average Price: The cost price is recomputed at each incoming shipment." +msgstr "" + +#. module: product +#: field:product.product,qty_available:0 +msgid "Quantity On Hand" +msgstr "" + +#. module: product +#: field:product.price.type,name:0 +msgid "Price Name" +msgstr "" + +#. module: product +#: help:product.product,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: product +#: field:product.product,ean13:0 +msgid "EAN13 Barcode" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.action_product_price_list +#: model:ir.model,name:product.model_product_price_list +#: view:product.price_list:0 +#: report:product.pricelist:0 +#: field:product.pricelist.version,pricelist_id:0 +msgid "Price List" +msgstr "" + +#. module: product +#: field:product.product,virtual_available:0 +msgid "Forecasted Quantity" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Purchase" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_33_product_template +msgid "Headset USB" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Suppliers" +msgstr "" + +#. module: product +#: model:res.groups,name:product.group_sale_pricelist +msgid "Sales Pricelists" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "New Price =" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_7 +msgid "Accessories" +msgstr "" + +#. module: product +#: model:process.transition,name:product.process_transition_supplierofproduct0 +msgid "Supplier of the product" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_28_product_template +msgid "External Hard disk" +msgstr "" + +#. module: product +#: help:product.template,standard_price:0 +msgid "" +"Cost price of the product used for standard stock valuation in accounting " +"and used as a base price on purchase orders." +msgstr "" + +#. module: product +#: field:product.category,child_id:0 +msgid "Child Categories" +msgstr "" + +#. module: product +#: field:product.pricelist.version,date_end:0 +msgid "End Date" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_litre +msgid "Liter(s)" +msgstr "" + +#. module: product +#: view:product.price_list:0 +msgid "Print" +msgstr "" + +#. module: product +#: view:product.product:0 +#: field:product.ul,type:0 +#: field:product.uom,uom_type:0 +msgid "Type" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_pricelist_action2 +#: model:ir.actions.act_window,name:product.product_pricelist_action_for_purchase +#: model:ir.ui.menu,name:product.menu_product_pricelist_action2 +#: model:ir.ui.menu,name:product.menu_product_pricelist_main +msgid "Pricelists" +msgstr "" + +#. module: product +#: field:product.product,partner_ref:0 +msgid "Customer ref" +msgstr "" + +#. module: product +#: field:product.pricelist.type,key:0 +msgid "Key" +msgstr "" + +#. module: product +#: model:ir.actions.report.xml,name:product.report_product_pricelist +#: model:ir.model,name:product.model_product_pricelist +#: field:product.product,pricelist_id:0 +#: view:product.supplierinfo:0 +msgid "Pricelist" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_hour +msgid "Hour(s)" +msgstr "" + +#. module: product +#: selection:product.template,state:0 +msgid "In Development" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_res_partner +msgid "Partner" +msgstr "" + +#. module: product +#: model:process.transition,note:product.process_transition_supplierofproduct0 +msgid "" +"1 or several supplier(s) can be linked to a product. All information stands " +"in the product form." +msgstr "" + +#. module: product +#: field:product.pricelist.item,price_round:0 +msgid "Price Rounding" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_1_product_template +msgid "On Site Monitoring" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "days" +msgstr "" + +#. module: product +#: model:process.node,name:product.process_node_supplier0 +#: view:product.supplierinfo:0 +msgid "Supplier Information" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_res_currency +#: field:product.price.type,currency_id:0 +#: report:product.pricelist:0 +#: field:product.pricelist,currency_id:0 +msgid "Currency" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_46_product_template +msgid "Datacard" +msgstr "" + +#. module: product +#: help:product.template,uos_coeff:0 +msgid "" +"Coefficient to convert default Unit of Measure to Unit of Sale\n" +" uos = uom * coeff" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_category_action_form +#: model:ir.ui.menu,name:product.menu_product_category_action_form +#: view:product.category:0 +msgid "Product Categories" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Procurement & Locations" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_20_product_template +msgid "Motherboard I9P57" +msgstr "" + +#. module: product +#: field:product.packaging,weight:0 +msgid "Total Package Weight" +msgstr "" + +#. module: product +#: help:product.packaging,code:0 +msgid "The code of the transport unit." +msgstr "" + +#. module: product +#: view:product.price.type:0 +msgid "Products Price Type" +msgstr "" + +#. module: product +#: field:product.product,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: product +#: field:product.product,price_extra:0 +msgid "Variant Price Extra" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_supplierinfo +msgid "Information about a product supplier" +msgstr "" + +#. module: product +#: help:product.uom,factor_inv:0 +msgid "" +"How many times this Unit of Measure is bigger than the reference Unit of " +"Measure in this category:\n" +"1 * (this unit) = ratio * (reference unit)" +msgstr "" + +#. module: product +#: view:product.template:0 +#: field:product.template,description_purchase:0 +msgid "Purchase Description" +msgstr "" + +#. module: product +#: constraint:product.pricelist.version:0 +msgid "You cannot have 2 pricelist versions that overlap!" +msgstr "" + +#. module: product +#: help:product.pricelist.item,min_quantity:0 +msgid "" +"Specify the minimum quantity that needs to be bought/sold for the rule to " +"apply." +msgstr "" + +#. module: product +#: help:product.pricelist.version,date_start:0 +msgid "First valid date for the version." +msgstr "" + +#. module: product +#: help:product.supplierinfo,delay:0 +msgid "" +"Lead time in days between the confirmation of the purchase order and the " +"reception of the products in your warehouse. Used by the scheduler for " +"automatic computation of the purchase order planning." +msgstr "" + +#. module: product +#: model:product.template,description_sale:product.product_product_3_product_template +msgid "" +"17\" LCD Monitor\n" +"Processor AMD 8-Core\n" +"512MB RAM\n" +"HDD SH-1" +msgstr "" + +#. module: product +#: selection:product.template,type:0 +msgid "Stockable Product" +msgstr "" + +#. module: product +#: field:product.packaging,code:0 +msgid "Code" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_27_product_template +msgid "Laptop Customized" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_ul +msgid "Shipping Unit" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_35_product_template +msgid "Blank CD" +msgstr "" + +#. module: product +#: field:pricelist.partnerinfo,suppinfo_id:0 +msgid "Partner Information" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_normal_action_sell +msgid "" +"

\n" +" Click to define a new product.\n" +"

\n" +" You must define a product for everything you sell, whether " +"it's\n" +" a physical product, a consumable or a service you offer to\n" +" customers.\n" +"

\n" +" The product form contains information to simplify the sale\n" +" process: price, notes in the quotation, accounting data,\n" +" procurement methods, etc.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: view:product.price_list:0 +msgid "Cancel" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_37_product_template +msgid "All in one hi-speed printer with fax and scanner." +msgstr "" + +#. module: product +#: help:product.supplierinfo,min_qty:0 +msgid "" +"The minimal quantity to purchase to this supplier, expressed in the supplier " +"Product Unit of Measure if not empty, in the default unit of measure of the " +"product otherwise." +msgstr "" + +#. module: product +#: view:product.product:0 +#: view:product.template:0 +msgid "Information" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "Products Listprices Items" +msgstr "" + +#. module: product +#: view:product.packaging:0 +msgid "Other Info" +msgstr "" + +#. module: product +#: field:product.pricelist.version,items_id:0 +msgid "Price List Items" +msgstr "" + +#. module: product +#: field:pricelist.partnerinfo,price:0 +msgid "Unit Price" +msgstr "" + +#. module: product +#: field:product.category,parent_right:0 +msgid "Right Parent" +msgstr "" + +#. module: product +#: field:product.product,price:0 +msgid "Price" +msgstr "" + +#. module: product +#: field:product.pricelist.item,price_surcharge:0 +msgid "Price Surcharge" +msgstr "" + +#. module: product +#: field:product.product,code:0 +#: field:product.product,default_code:0 +msgid "Internal Reference" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_8_product_template +msgid "USB Keyboard, QWERTY" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_9 +msgid "Softwares" +msgstr "" + +#. module: product +#: field:product.product,packaging:0 +msgid "Logistical Units" +msgstr "" + +#. module: product +#: field:product.category,complete_name:0 +#: field:product.category,name:0 +#: field:product.pricelist.type,name:0 +#: field:product.pricelist.version,name:0 +#: field:product.template,name:0 +#: field:product.ul,name:0 +#: field:product.uom.categ,name:0 +msgid "Name" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_4 +msgid "Computers" +msgstr "" + +#. module: product +#: help:product.product,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_kgm +msgid "kg" +msgstr "" + +#. module: product +#: selection:product.template,state:0 +msgid "Obsolete" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_km +msgid "km" +msgstr "" + +#. module: product +#: field:product.template,standard_price:0 +msgid "Cost" +msgstr "" + +#. module: product +#: help:product.category,sequence:0 +msgid "" +"Gives the sequence order when displaying a list of product categories." +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_dozen +msgid "Dozen(s)" +msgstr "" + +#. module: product +#: field:product.uom,factor:0 +#: field:product.uom,factor_inv:0 +msgid "Ratio" +msgstr "" + +#. module: product +#: field:product.packaging,width:0 +msgid "Width" +msgstr "" + +#. module: product +#: help:product.price.type,field:0 +msgid "Associated field in the product form." +msgstr "" + +#. module: product +#: view:product.product:0 +#: view:product.template:0 +#: field:product.template,uom_id:0 +#: field:product.uom,name:0 +msgid "Unit of Measure" +msgstr "" + +#. module: product +#: report:product.pricelist:0 +msgid "Printing Date" +msgstr "" + +#. module: product +#: field:product.template,uos_id:0 +msgid "Unit of Sale" +msgstr "" + +#. module: product +#: field:product.product,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_uom_categ_form_action +#: model:ir.ui.menu,name:product.menu_product_uom_categ_form_action +msgid "Unit of Measure Categories" +msgstr "" + +#. module: product +#: help:product.product,seller_id:0 +msgid "Main Supplier who has highest priority in Supplier List." +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_5 +#: view:product.product:0 +msgid "Services" +msgstr "" + +#. module: product +#: help:product.product,ean13:0 +msgid "International Article Number used for product identification." +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_category_action +msgid "" +"

\n" +" Here is a list of all your products classified by category. " +"You\n" +" can click a category to get the list of all products linked " +"to\n" +" this category or to a child of this category.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: code:addons/product/product.py:361 +#, python-format +msgid "" +"New Unit of Measure '%s' must belong to same Unit of Measure category '%s' " +"as of old Unit of Measure '%s'. If you need to change the unit of measure, " +"you may deactivate this product from the 'Procurements' tab and create a new " +"one." +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_normal_action +#: model:ir.actions.act_window,name:product.product_normal_action_puchased +#: model:ir.actions.act_window,name:product.product_normal_action_sell +#: model:ir.actions.act_window,name:product.product_normal_action_tree +#: model:ir.ui.menu,name:product.menu_products +#: model:ir.ui.menu,name:product.prod_config_main +#: view:product.product:0 +msgid "Products" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_32_product_template +msgid "" +"Hands free headset for laptop PC with in-line microphone and headphone plug." +msgstr "" + +#. module: product +#: help:product.packaging,rows:0 +msgid "The number of layers on a pallet or box" +msgstr "" + +#. module: product +#: help:product.pricelist.item,price_min_margin:0 +msgid "Specify the minimum amount of margin over the base price." +msgstr "" + +#. module: product +#: field:product.template,weight_net:0 +msgid "Net Weight" +msgstr "" + +#. module: product +#: view:product.packaging:0 +#: view:product.product:0 +msgid "Pallet Dimension" +msgstr "" + +#. module: product +#: help:product.product,image:0 +msgid "" +"This field holds the image used as image for the product, limited to " +"1024x1024px." +msgstr "" + +#. module: product +#: help:product.pricelist.item,categ_id:0 +msgid "" +"Specify a product category if this rule only applies to products belonging " +"to this category or its children categories. Keep empty otherwise." +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Inventory" +msgstr "" + +#. module: product +#: field:product.product,seller_info_id:0 +msgid "Supplier Info" +msgstr "" + +#. module: product +#: code:addons/product/product.py:732 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_2_product_template +msgid "On Site Assistance" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_39_product_template +msgid "Toner Cartridge" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_uom_form_action +#: model:ir.ui.menu,name:product.menu_product_uom_form_action +#: model:ir.ui.menu,name:product.next_id_16 +#: view:product.uom:0 +msgid "Units of Measure" +msgstr "" + +#. module: product +#: field:product.supplierinfo,min_qty:0 +msgid "Minimal Quantity" +msgstr "" + +#. module: product +#: help:product.supplierinfo,product_code:0 +msgid "" +"This supplier's product code will be used when printing a request for " +"quotation. Keep empty to use the internal one." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_43_product_template +msgid "Zed+ Antivirus" +msgstr "" + +#. module: product +#: field:product.pricelist.item,price_version_id:0 +msgid "Price List Version" +msgstr "" + +#. module: product +#: help:product.pricelist.item,sequence:0 +msgid "" +"Gives the order in which the pricelist items will be checked. The evaluation " +"gives highest priority to lowest sequence and stops as soon as a matching " +"item is found." +msgstr "" + +#. module: product +#: view:product.product:0 +#: selection:product.template,type:0 +msgid "Consumable" +msgstr "" + +#. module: product +#: help:product.price.type,currency_id:0 +msgid "The currency the field is expressed in." +msgstr "" + +#. module: product +#: help:product.template,weight:0 +msgid "The gross weight in Kg." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_37_product_template +msgid "Printer, All-in-one" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Procurement" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_23_product_template +msgid "Processor AMD 8-Core" +msgstr "" + +#. module: product +#: view:product.product:0 +#: view:product.template:0 +msgid "Weights" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Description for Quotations" +msgstr "" + +#. module: product +#: help:pricelist.partnerinfo,price:0 +msgid "" +"This price will be considered as a price for the supplier Unit of Measure if " +"any or the default Unit of Measure of the product otherwise" +msgstr "" + +#. module: product +#: field:product.template,uom_po_id:0 +msgid "Purchase Unit of Measure" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Group by..." +msgstr "" + +#. module: product +#: field:product.product,image_medium:0 +msgid "Medium-sized image" +msgstr "" + +#. module: product +#: selection:product.ul,type:0 +#: model:product.uom.categ,name:product.product_uom_categ_unit +msgid "Unit" +msgstr "" + +#. module: product +#: field:product.pricelist.version,date_start:0 +msgid "Start Date" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_38_product_template +msgid "Ink Cartridge" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_cm +msgid "cm" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_uom +msgid "Product Unit of Measure" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_pricelist_action +msgid "" +"

\n" +" Click to add a pricelist version.\n" +"

\n" +" There can be more than one version of a pricelist, each of\n" +" these must be valid during a certain period of time. Some\n" +" examples of versions: Main Prices, 2010, 2011, Summer " +"Sales,\n" +" etc.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: help:product.template,uom_po_id:0 +msgid "" +"Default Unit of Measure used for purchase orders. It must be in the same " +"category than the default unit of measure." +msgstr "" + +#. module: product +#: view:product.pricelist:0 +msgid "Products Price" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_26_product_template +msgid "" +"17\" Monitor\n" +"6GB RAM\n" +"Hi-Speed 234Q Processor\n" +"QWERTY keyboard" +msgstr "" + +#. module: product +#: field:product.uom,rounding:0 +msgid "Rounding Precision" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Consumable products" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_21_product_template +msgid "Motherboard A20Z7" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_1_product_template +#: model:product.template,description_sale:product.product_product_1_product_template +msgid "This type of service include basic monitoring of products." +msgstr "" + +#. module: product +#: help:product.pricelist.version,date_end:0 +msgid "Last valid date for the version." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_19_product_template +msgid "HDD on Demand" +msgstr "" + +#. module: product +#: field:product.price.type,active:0 +#: field:product.pricelist,active:0 +#: field:product.pricelist.version,active:0 +#: field:product.product,active:0 +#: field:product.uom,active:0 +msgid "Active" +msgstr "" + +#. module: product +#: field:product.product,price_margin:0 +msgid "Variant Price Margin" +msgstr "" + +#. module: product +#: field:product.pricelist,name:0 +msgid "Pricelist Name" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_1 +msgid "Saleable" +msgstr "" + +#. module: product +#: sql_constraint:product.uom:0 +msgid "The conversion ratio for a unit of measure cannot be 0!" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_24_product_template +msgid "Graphics Card" +msgstr "" + +#. module: product +#: help:product.packaging,ean:0 +msgid "The EAN code of the package unit." +msgstr "" + +#. module: product +#: help:product.supplierinfo,product_uom:0 +msgid "This comes from the product form." +msgstr "" + +#. module: product +#: field:product.packaging,weight_ul:0 +msgid "Empty Package Weight" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_41_product_template +msgid "Windows Home Server 2011" +msgstr "" + +#. module: product +#: field:product.price.type,field:0 +msgid "Product Field" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_5_product_template +msgid "Custom computer assembled on order based on customer's requirement." +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_price_type_action +#: model:ir.ui.menu,name:product.menu_product_price_type +msgid "Price Types" +msgstr "" + +#. module: product +#: help:product.template,uom_id:0 +msgid "Default Unit of Measure used for all stock operation." +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Sales" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_uom_categ_form_action +msgid "" +"

\n" +" Click to add a new unit of measure category.\n" +"

\n" +" Units of measure belonging to the same category can be\n" +" converted between each others. For example, in the category\n" +" 'Time', you will have the following units of " +"measure:\n" +" Hours, Days.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: help:pricelist.partnerinfo,min_quantity:0 +msgid "" +"The minimal quantity to trigger this rule, expressed in the supplier Unit of " +"Measure if any or in the default Unit of Measure of the product otherrwise." +msgstr "" + +#. module: product +#: selection:product.uom,uom_type:0 +msgid "Smaller than the reference Unit of Measure" +msgstr "" + +#. module: product +#: model:product.pricelist,name:product.list0 +msgid "Public Pricelist" +msgstr "" + +#. module: product +#: field:product.supplierinfo,product_code:0 +msgid "Supplier Product Code" +msgstr "" + +#. module: product +#: help:product.pricelist,active:0 +msgid "" +"If unchecked, it will allow you to hide the pricelist without removing it." +msgstr "" + +#. module: product +#: selection:product.ul,type:0 +msgid "Pallet" +msgstr "" + +#. module: product +#: field:product.packaging,ul_qty:0 +msgid "Package by layer" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_product +#: model:process.node,name:product.process_node_product0 +#: model:process.process,name:product.process_process_productprocess0 +#: field:product.packaging,product_id:0 +#: field:product.pricelist.item,product_id:0 +#: view:product.product:0 +#: field:product.supplierinfo,product_id:0 +#: model:res.request.link,name:product.req_link_product +msgid "Product" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Price:" +msgstr "" + +#. module: product +#: field:product.template,weight:0 +msgid "Gross Weight" +msgstr "" + +#. module: product +#: help:product.packaging,qty:0 +msgid "The total number of products you can put by pallet or box." +msgstr "" + +#. module: product +#: field:product.product,variants:0 +msgid "Variants" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_category_action +#: model:ir.ui.menu,name:product.menu_products_category +msgid "Products by Category" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_16_product_template +msgid "Computer Case" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_9_product_template +msgid "USB Keyboard, AZERTY" +msgstr "" + +#. module: product +#: help:product.supplierinfo,sequence:0 +msgid "Assigns the priority to the list of product supplier." +msgstr "" + +#. module: product +#: constraint:product.pricelist.item:0 +msgid "Error! The minimum margin should be lower than the maximum margin." +msgstr "" + +#. module: product +#: model:res.groups,name:product.group_uos +msgid "Manage Secondary Unit of Measure" +msgstr "" + +#. module: product +#: help:product.uom,rounding:0 +msgid "" +"The computed quantity will be a multiple of this value. Use 1.0 for a Unit " +"of Measure that cannot be further split, such as a piece." +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "Rounding Method" +msgstr "" + +#. module: product +#: model:ir.actions.report.xml,name:product.report_product_label +msgid "Products Labels" +msgstr "" + +#. module: product +#: model:product.ul,name:product.product_ul_big_box +msgid "Box 30x40x60" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_47_product_template +msgid "Switch, 24 ports" +msgstr "" + +#. module: product +#: selection:product.uom,uom_type:0 +msgid "Bigger than the reference Unit of Measure" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_consultant_product_template +#: selection:product.template,type:0 +msgid "Service" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Internal Description" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_48_product_template +msgid "USB Adapter" +msgstr "" + +#. module: product +#: help:product.template,uos_id:0 +msgid "" +"Sepcify a unit of measure here if invoicing is made in another unit of " +"measure than inventory. Keep empty to use the default unit of measure." +msgstr "" + +#. module: product +#: code:addons/product/product.py:208 +#, python-format +msgid "Cannot change the category of existing Unit of Measure '%s'." +msgstr "" + +#. module: product +#: help:product.packaging,height:0 +msgid "The height of the package" +msgstr "" + +#. module: product +#: view:product.pricelist:0 +msgid "Products Price List" +msgstr "" + +#. module: product +#: field:product.pricelist,company_id:0 +#: field:product.pricelist.item,company_id:0 +#: field:product.pricelist.version,company_id:0 +#: view:product.product:0 +#: field:product.supplierinfo,company_id:0 +#: field:product.template,company_id:0 +msgid "Company" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_26_product_template +msgid "Laptop S3450" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Default Unit of Measure" +msgstr "" + +#. module: product +#: code:addons/product/pricelist.py:377 +#, python-format +msgid "Partner section of the product form" +msgstr "" + +#. module: product +#: help:product.price.type,name:0 +msgid "Name of this kind of price." +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_3 +msgid "Other Products" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_9_product_template +msgid "This product is configured with example of push/pull flows" +msgstr "" + +#. module: product +#: field:product.product,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: product +#: model:product.uom,name:product.product_uom_unit +msgid "Unit(s)" +msgstr "" + +#. module: product +#: code:addons/product/product.py:176 +#, python-format +msgid "Error!" +msgstr "" + +#. module: product +#: field:product.packaging,length:0 +msgid "Length" +msgstr "" + +#. module: product +#: model:product.uom.categ,name:product.uom_categ_length +msgid "Length / Distance" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_8 +msgid "Components" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_pricelist_type +#: field:product.pricelist,type:0 +msgid "Pricelist Type" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_6 +msgid "External Devices" +msgstr "" + +#. module: product +#: field:product.product,color:0 +msgid "Color Index" +msgstr "" + +#. module: product +#: help:product.template,sale_ok:0 +msgid "Specify if the product can be selected in a sales order line." +msgstr "" + +#. module: product +#: view:product.product:0 +#: field:product.template,sale_ok:0 +msgid "Can be Sold" +msgstr "" + +#. module: product +#: field:product.template,produce_delay:0 +msgid "Manufacturing Lead Time" +msgstr "" + +#. module: product +#: field:product.supplierinfo,pricelist_ids:0 +msgid "Supplier Pricelist" +msgstr "" + +#. module: product +#: field:product.pricelist.item,base:0 +msgid "Based on" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_10 +msgid "Raw Materials" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_13_product_template +msgid "RAM SR5" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_14_product_template +msgid "RAM SR2" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_normal_action_puchased +msgid "" +"

\n" +" Click to define a new product.\n" +"

\n" +" You must define a product for everything you purchase, " +"whether\n" +" it's a physical product, a consumable or services you buy " +"to\n" +" subcontractants.\n" +"

\n" +" The product form contains detailed information to improve " +"the\n" +" purchase process: prices, procurement logistics, accounting " +"data,\n" +" available suppliers, etc.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: model:product.template,description_sale:product.product_product_44_product_template +msgid "Full featured image editing software." +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_pricelist_version +#: view:product.pricelist:0 +#: view:product.pricelist.version:0 +msgid "Pricelist Version" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "* ( 1 + " +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_31_product_template +msgid "Multimedia Speakers" +msgstr "" + +#. module: product +#: field:product.product,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Sale Conditions" +msgstr "" + +#. module: product +#: view:product.packaging:0 +#: view:product.product:0 +msgid "Palletization" +msgstr "" + +#. module: product +#: report:product.pricelist:0 +msgid "Price List Name" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Description for Suppliers" +msgstr "" + +#. module: product +#: field:product.supplierinfo,delay:0 +msgid "Delivery Lead Time" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "months" +msgstr "" + +#. module: product +#: help:product.uom,active:0 +msgid "" +"By unchecking the active field you can disable a unit of measure without " +"deleting it." +msgstr "" + +#. module: product +#: field:product.product,seller_delay:0 +msgid "Supplier Lead Time" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_decimal_precision +msgid "decimal.precision" +msgstr "" + +#. module: product +#: selection:product.ul,type:0 +msgid "Box" +msgstr "" + +#. module: product +#: help:product.pricelist.item,price_surcharge:0 +msgid "" +"Specify the fixed amount to add or substract(if negative) to the amount " +"calculated with the discount." +msgstr "" + +#. module: product +#: help:product.product,qty_available:0 +msgid "" +"Current quantity of products.\n" +"In a context with a single Stock Location, this includes goods stored at " +"this Location, or any of its children.\n" +"In a context with a single Warehouse, this includes goods stored in the " +"Stock Location of this Warehouse, or any of its children.\n" +"In a context with a single Shop, this includes goods stored in the Stock " +"Location of the Warehouse of this Shop, or any of its children.\n" +"Otherwise, this includes goods stored in any Stock Location with 'internal' " +"type." +msgstr "" + +#. module: product +#: help:product.template,type:0 +msgid "" +"Consumable: Will not imply stock management for this product. \n" +"Stockable product: Will imply stock management for this product." +msgstr "" + +#. module: product +#: help:product.pricelist.type,key:0 +msgid "" +"Used in the code to select specific prices based on the context. Keep " +"unchanged." +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_normal_action +msgid "" +"

\n" +" Click to define a new product.\n" +"

\n" +" You must define a product for everything you buy or sell,\n" +" whether it's a physical product, a consumable or service.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Context..." +msgstr "" + +#. module: product +#: field:product.packaging,ul:0 +msgid "Type of Package" +msgstr "" + +#. module: product +#: help:product.category,type:0 +msgid "" +"A category of the view type is a virtual category that can be used as the " +"parent of another category to create a hierarchical structure." +msgstr "" + +#. module: product +#: selection:product.ul,type:0 +msgid "Pack" +msgstr "" + +#. module: product +#: help:product.pricelist.item,product_tmpl_id:0 +msgid "" +"Specify a template if this rule only applies to one product template. Keep " +"empty otherwise." +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_2_product_template +msgid "" +"This type of service include assistance for security questions, system " +"configuration requirements, implementation or special needs." +msgstr "" + +#. module: product +#: field:product.product,image:0 +msgid "Image" +msgstr "" + +#. module: product +#: view:product.uom.categ:0 +msgid "Units of Measure categories" +msgstr "" + +#. module: product +#: model:product.template,description_sale:product.product_product_4_product_template +msgid "" +"19\" LCD Monitor\n" +"Processor Core i5 2.70 Ghz\n" +"2GB RAM\n" +"HDD SH-1" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Descriptions" +msgstr "" + +#. module: product +#: model:res.groups,name:product.group_stock_packaging +msgid "Manage Product Packaging" +msgstr "" + +#. module: product +#: model:product.category,name:product.product_category_2 +msgid "Internal" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_45_product_template +msgid "Router R430" +msgstr "" + +#. module: product +#: help:product.packaging,sequence:0 +msgid "Gives the sequence order when displaying a list of packaging." +msgstr "" + +#. module: product +#: selection:product.category,type:0 +#: selection:product.template,state:0 +msgid "Normal" +msgstr "" + +#. module: product +#: code:addons/product/pricelist.py:179 +#, python-format +msgid "" +"At least one pricelist has no active version !\n" +"Please create or activate one." +msgstr "" + +#. module: product +#: field:product.pricelist.item,price_max_margin:0 +msgid "Max. Price Margin" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid "Min. Margin" +msgstr "" + +#. module: product +#: help:product.supplierinfo,product_name:0 +msgid "" +"This supplier's product name will be used when printing a request for " +"quotation. Keep empty to use the internal one." +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_pricelist_action_for_purchase +msgid "" +"

\n" +" Click to create a pricelist.\n" +"

\n" +" A price list contains rules to be evaluated in order to " +"compute\n" +" the purchase price. The default price list has only one " +"rule; use\n" +" the cost price defined on the product form, so that you do " +"not have to\n" +" worry about supplier pricelists if you have very simple " +"needs.\n" +"

\n" +" But you can also import complex price lists form your " +"supplier\n" +" that may depends on the quantities ordered or the current\n" +" promotions.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: selection:product.template,mes_type:0 +msgid "Variable" +msgstr "" + +#. module: product +#: field:product.template,rental:0 +msgid "Can be Rent" +msgstr "" + +#. module: product +#: model:product.price.type,name:product.standard_price +msgid "Cost Price" +msgstr "" + +#. module: product +#: field:product.pricelist.item,price_min_margin:0 +msgid "Min. Price Margin" +msgstr "" + +#. module: product +#: model:res.groups,name:product.group_uom +msgid "Manage Multiple Units of Measure" +msgstr "" + +#. module: product +#: help:product.packaging,weight:0 +msgid "The weight of a full package, pallet or box." +msgstr "" + +#. module: product +#: view:product.uom:0 +msgid "e.g: 1 * (this unit) = ratio * (reference unit)" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_25_product_template +msgid "" +"17\" Monitor\n" +"4GB RAM\n" +"Standard-1294P Processor\n" +"QWERTY keyboard" +msgstr "" + +#. module: product +#: field:product.category,sequence:0 +#: field:product.packaging,sequence:0 +#: field:product.pricelist.item,sequence:0 +#: field:product.supplierinfo,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: product +#: help:product.template,produce_delay:0 +msgid "" +"Average delay in days to produce this product. In the case of multi-level " +"BOM, the manufacturing lead times of the components will be added." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_assembly_product_template +msgid "Assembly Service Cost" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_pricelist_item +msgid "Pricelist item" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_uom_form_action +msgid "" +"

\n" +" Click to add a new unit of measure.\n" +"

\n" +" You must define a conversion rate between several Units of\n" +" Measure within the same category.\n" +"

\n" +" " +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_11_product_template +msgid "Mouse, Laser" +msgstr "" + +#. module: product +#: view:product.template:0 +msgid "Delays" +msgstr "" + +#. module: product +#: field:product.category,type:0 +msgid "Category Type" +msgstr "" + +#. module: product +#: model:process.node,note:product.process_node_product0 +msgid "Creation of the product" +msgstr "" + +#. module: product +#: field:pricelist.partnerinfo,name:0 +#: field:product.packaging,name:0 +#: report:product.pricelist:0 +#: view:product.product:0 +#: field:product.template,description:0 +msgid "Description" +msgstr "" + +#. module: product +#: field:product.packaging,ean:0 +msgid "EAN" +msgstr "" + +#. module: product +#: view:product.pricelist.item:0 +msgid " ) + " +msgstr "" + +#. module: product +#: field:product.template,volume:0 +#: model:product.uom.categ,name:product.product_uom_categ_vol +msgid "Volume" +msgstr "" + +#. module: product +#: help:product.product,image_small:0 +msgid "" +"Small-sized image of the product. It is automatically resized as a 64x64px " +"image, with aspect ratio preserved. Use this field anywhere a small image is " +"required." +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_40_product_template +msgid "Windows 7 Professional" +msgstr "" + +#. module: product +#: selection:product.uom,uom_type:0 +msgid "Reference Unit of Measure for this category" +msgstr "" + +#. module: product +#: field:product.supplierinfo,product_uom:0 +msgid "Supplier Unit of Measure" +msgstr "" + +#. module: product +#: view:product.product:0 +msgid "Product Variant" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_6_product_template +msgid "15” LCD Monitor" +msgstr "" + +#. module: product +#: code:addons/product/pricelist.py:379 +#: field:product.pricelist.item,base_pricelist_id:0 +#, python-format +msgid "Other Pricelist" +msgstr "" + +#. module: product +#: model:ir.actions.act_window,help:product.product_pricelist_action2 +msgid "" +"

\n" +" Click to create a pricelist.\n" +"

\n" +" A price list contains rules to be evaluated in order to " +"compute\n" +" the sales price of the products.\n" +"

\n" +" Price lists may have several versions (2010, 2011, Promotion " +"of\n" +" February 2010, etc.) and each version may have several " +"rules.\n" +" (e.g. the customer price of a product category will be based " +"on\n" +" the supplier price multiplied by 1.80).\n" +"

\n" +" " +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_template +#: field:product.pricelist.item,product_tmpl_id:0 +#: field:product.product,product_tmpl_id:0 +#: view:product.template:0 +msgid "Product Template" +msgstr "" + +#. module: product +#: field:product.template,cost_method:0 +#: model:res.groups,name:product.group_costing_method +msgid "Costing Method" +msgstr "" + +#. module: product +#: model:ir.model,name:product.model_product_category +#: field:product.pricelist.item,categ_id:0 +msgid "Product Category" +msgstr "" + +#. module: product +#: model:product.template,description:product.product_product_19_product_template +msgid "On demand hard-disk having capacity based on requirement." +msgstr "" + +#. module: product +#: selection:product.template,state:0 +msgid "End of Lifecycle" +msgstr "" + +#. module: product +#: model:product.template,name:product.product_product_15_product_template +msgid "RAM SR3" +msgstr "" + +#. module: product +#: help:product.product,packaging:0 +msgid "" +"Gives the different ways to package the same product. This has no impact on " +"the picking order and is mainly used if you use the EDI module." +msgstr "" + +#. module: product +#: model:ir.actions.act_window,name:product.product_pricelist_action +#: model:ir.ui.menu,name:product.menu_product_pricelist_action +#: field:product.pricelist,version_id:0 +msgid "Pricelist Versions" +msgstr "" + +#. module: product +#: help:product.pricelist.item,price_round:0 +msgid "" +"Sets the price so that it is a multiple of this value.\n" +"Rounding is applied after the discount and before the surcharge.\n" +"To have prices that end in 9.99, set rounding 10, surcharge -0.01" +msgstr "" + +#. module: product +#: field:product.template,list_price:0 +msgid "Sale Price" +msgstr "" + +#. module: product +#: help:product.uom,category_id:0 +msgid "" +"Conversion between Units of Measure can only occur if they belong to the " +"same category. The conversion will be made based on the ratios." +msgstr "" + +#. module: product +#: constraint:product.category:0 +msgid "Error ! You cannot create recursive categories." +msgstr "" + +#. module: product +#: help:product.product,image_medium:0 +msgid "" +"Medium-sized image of the product. It is automatically resized as a " +"128x128px image, with aspect ratio preserved, only when the image exceeds " +"one of those sizes. Use this field in form views or some kanban views." +msgstr "" + +#. module: product +#: view:product.uom:0 +msgid "e.g: 1 * (reference unit) = ratio * (this unit)" +msgstr "" + +#. module: product +#: help:product.supplierinfo,qty:0 +msgid "This is a quantity which is converted into Default Unit of Measure." +msgstr "" + +#. module: product +#: help:product.template,volume:0 +msgid "The volume in m3." +msgstr "" + +#. module: product +#: field:product.pricelist.item,price_discount:0 +msgid "Price Discount" +msgstr "" diff --git a/addons/web/i18n/ar.po b/addons/web/i18n/ar.po index 44b9b33ead2..9a58e14b0f4 100644 --- a/addons/web/i18n/ar.po +++ b/addons/web/i18n/ar.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bg.po b/addons/web/i18n/bg.po index 45d22d66644..633efffa0da 100644 --- a/addons/web/i18n/bg.po +++ b/addons/web/i18n/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bn.po b/addons/web/i18n/bn.po index 16163d6bc68..167e132929b 100644 --- a/addons/web/i18n/bn.po +++ b/addons/web/i18n/bn.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bs.po b/addons/web/i18n/bs.po index 0176f1b18e8..f09acf2f5f1 100644 --- a/addons/web/i18n/bs.po +++ b/addons/web/i18n/bs.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ca.po b/addons/web/i18n/ca.po index e6c869bdf81..0ecf1e12177 100644 --- a/addons/web/i18n/ca.po +++ b/addons/web/i18n/ca.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/cs.po b/addons/web/i18n/cs.po index 36d5c245f53..76d5fcc3fbb 100644 --- a/addons/web/i18n/cs.po +++ b/addons/web/i18n/cs.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" "X-Poedit-Language: Czech\n" #. module: web diff --git a/addons/web/i18n/da.po b/addons/web/i18n/da.po index c8cd81789cd..e66a548080d 100644 --- a/addons/web/i18n/da.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/de.po b/addons/web/i18n/de.po index d659226080e..e62577b52c2 100644 --- a/addons/web/i18n/de.po +++ b/addons/web/i18n/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_AU.po b/addons/web/i18n/en_AU.po index b4756e2c8da..6184e923693 100644 --- a/addons/web/i18n/en_AU.po +++ b/addons/web/i18n/en_AU.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/en_GB.po b/addons/web/i18n/en_GB.po index 3f6671b98c7..493b1b0b557 100644 --- a/addons/web/i18n/en_GB.po +++ b/addons/web/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es.po b/addons/web/i18n/es.po index 657473f2743..64882c2c816 100644 --- a/addons/web/i18n/es.po +++ b/addons/web/i18n/es.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CL.po b/addons/web/i18n/es_CL.po index 712a6285e2f..2e53a46db39 100644 --- a/addons/web/i18n/es_CL.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_CR.po b/addons/web/i18n/es_CR.po index 237c3b427f3..0847853542e 100644 --- a/addons/web/i18n/es_CR.po +++ b/addons/web/i18n/es_CR.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" "Language: es\n" #. module: web diff --git a/addons/web/i18n/es_DO.po b/addons/web/i18n/es_DO.po index 47784855d62..f3989358167 100644 --- a/addons/web/i18n/es_DO.po +++ b/addons/web/i18n/es_DO.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_EC.po b/addons/web/i18n/es_EC.po index 2ed9559b903..18756cbe49e 100644 --- a/addons/web/i18n/es_EC.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/es_MX.po b/addons/web/i18n/es_MX.po index 61830a39123..b7bc2270b2c 100644 --- a/addons/web/i18n/es_MX.po +++ b/addons/web/i18n/es_MX.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/et.po b/addons/web/i18n/et.po index d509fb98c8c..0b4cce6b9a6 100644 --- a/addons/web/i18n/et.po +++ b/addons/web/i18n/et.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web @@ -242,7 +242,7 @@ msgstr "Vorm" #: code:addons/web/static/src/xml/base.xml:1352 #, python-format msgid "(no string)" -msgstr "" +msgstr "(ei ole rida)" #. module: web #. openerp-web @@ -962,7 +962,7 @@ msgstr "Salasõna on edukalt muudetud" #: code:addons/web/static/src/js/view_list_editable.js:793 #, python-format msgid "The form's data can not be discarded" -msgstr "" +msgstr "Vormi andmed tuleb salvestada" #. module: web #. openerp-web diff --git a/addons/web/i18n/eu.po b/addons/web/i18n/eu.po index 855cbebe39e..89661e78063 100644 --- a/addons/web/i18n/eu.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fa.po b/addons/web/i18n/fa.po index a62e4d0befd..132ab4f4054 100644 --- a/addons/web/i18n/fa.po +++ b/addons/web/i18n/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fi.po b/addons/web/i18n/fi.po index 8091a3fc592..60d27a7878c 100644 --- a/addons/web/i18n/fi.po +++ b/addons/web/i18n/fi.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web @@ -36,7 +36,7 @@ msgstr "%d minuuttia sitten" #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...
Please be patient." -msgstr "Ladataan...
Olkaa hyvä ja odottakaa." +msgstr "Ladataan edelleen...
Ole hyvä ja odota." #. module: web #. openerp-web @@ -192,7 +192,7 @@ msgstr "Valitse" #: code:addons/web/static/src/js/chrome.js:571 #, python-format msgid "Database restored successfully" -msgstr "Tietokanta palautettu" +msgstr "Tietokanta palautettu onnistuneesti" #. module: web #. openerp-web @@ -206,21 +206,21 @@ msgstr "Versio" #: code:addons/web/static/src/xml/base.xml:592 #, python-format msgid "Latest Modification Date:" -msgstr "Viimeisin muutospäivämäärä:" +msgstr "Viimeisin muokkauspäivä:" #. module: web #. openerp-web #: code:addons/web/static/src/js/search.js:1566 #, python-format msgid "M2O search fields do not currently handle multiple default values" -msgstr "Monesta yhteen hakukentät eivät salli useita oletusarvoja." +msgstr "Monesta-yhteen -hakukentät eivät salli useita oletusarvoja." #. module: web #. openerp-web #: code:addons/web/static/src/js/view_form.js:1241 #, python-format msgid "Widget type '%s' is not implemented" -msgstr "Pienohjelman tyyppiä '%s' ei ole asennettu" +msgstr "Sovelmatyyppiä \"%s\" ei ole asennettu" #. module: web #. openerp-web @@ -384,7 +384,7 @@ msgstr "Ryhmä" #: code:addons/web/static/src/xml/base.xml:949 #, python-format msgid "Unhandled widget" -msgstr "Käsittelemätön widgetti" +msgstr "Käsittelemätön sovelma" #. module: web #. openerp-web @@ -2409,7 +2409,7 @@ msgstr "Suodatin" #: code:addons/web/static/src/xml/base.xml:972 #, python-format msgid "Widget:" -msgstr "Widgetti" +msgstr "Sovelma:" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr.po b/addons/web/i18n/fr.po index 496c6d24a86..cc372914e66 100644 --- a/addons/web/i18n/fr.po +++ b/addons/web/i18n/fr.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/fr_CA.po b/addons/web/i18n/fr_CA.po index 412c2ddb60b..42b77983bab 100644 --- a/addons/web/i18n/fr_CA.po +++ b/addons/web/i18n/fr_CA.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/gl.po b/addons/web/i18n/gl.po index 68c8594de78..98497fe2f25 100644 --- a/addons/web/i18n/gl.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/gu.po b/addons/web/i18n/gu.po index cb9c60a781c..6bf534cfaf4 100644 --- a/addons/web/i18n/gu.po +++ b/addons/web/i18n/gu.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hi.po b/addons/web/i18n/hi.po index 48e08441e9f..77166ad5a13 100644 --- a/addons/web/i18n/hi.po +++ b/addons/web/i18n/hi.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hr.po b/addons/web/i18n/hr.po index dc968a0faf8..60dc8e503a3 100644 --- a/addons/web/i18n/hr.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/hu.po b/addons/web/i18n/hu.po index dca51bac062..9bfc5bc5738 100644 --- a/addons/web/i18n/hu.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/id.po b/addons/web/i18n/id.po index ffe55d158b5..0d4bca5ea5d 100644 --- a/addons/web/i18n/id.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/it.po b/addons/web/i18n/it.po index 6617897a4c6..46d5434c068 100644 --- a/addons/web/i18n/it.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ja.po b/addons/web/i18n/ja.po index c098aaa8a80..6fe334b963e 100644 --- a/addons/web/i18n/ja.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web @@ -36,7 +36,7 @@ msgstr "%d分前" #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...
Please be patient." -msgstr "ロード中です...
今しばらくお待ちください。" +msgstr "引き続き読込中...
今しばらくお待ちください。" #. module: web #. openerp-web @@ -475,7 +475,7 @@ msgstr "開発者モードを有効化" #: code:addons/web/static/src/js/chrome.js:341 #, python-format msgid "Loading (%d)" -msgstr "ロード中 (%d)" +msgstr "読込中(%d)" #. module: web #. openerp-web @@ -587,7 +587,7 @@ msgstr "は次ではない" #: code:addons/web/static/src/xml/base.xml:572 #, python-format msgid "Print Workflow" -msgstr "" +msgstr "印刷ワークフロー" #. module: web #. openerp-web @@ -608,7 +608,7 @@ msgstr "UTF-8" #: code:addons/web/static/src/xml/base.xml:443 #, python-format msgid "For more information visit" -msgstr "もっと詳しい情報はこちらへ" +msgstr "詳細の確認はこちらにて:" #. module: web #. openerp-web @@ -966,7 +966,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:555 #, python-format msgid "Debug View#" -msgstr "ビューをデバッグ" +msgstr "デバッグ対象ビュー#" #. module: web #. openerp-web @@ -1240,7 +1240,7 @@ msgstr "" #: code:addons/web/static/src/xml/base.xml:442 #, python-format msgid "Licenced under the terms of" -msgstr "ライセンスに準拠" +msgstr "準拠ライセンス:" #. module: web #. openerp-web @@ -2337,7 +2337,7 @@ msgstr "条件追加" #: code:addons/web/static/src/js/coresetup.js:619 #, python-format msgid "Still loading..." -msgstr "" +msgstr "引き続き読込..." #. module: web #. openerp-web diff --git a/addons/web/i18n/ka.po b/addons/web/i18n/ka.po index 10e4e95a456..1d586eb2e75 100644 --- a/addons/web/i18n/ka.po +++ b/addons/web/i18n/ka.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ko.po b/addons/web/i18n/ko.po index 0d2622f450b..c7d6f4363d4 100644 --- a/addons/web/i18n/ko.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lo.po b/addons/web/i18n/lo.po index 701f567aa25..6621569fe46 100644 --- a/addons/web/i18n/lo.po +++ b/addons/web/i18n/lo.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lt.po b/addons/web/i18n/lt.po index 0e8e9949a61..4489cae2e5b 100644 --- a/addons/web/i18n/lt.po +++ b/addons/web/i18n/lt.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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/lv.po b/addons/web/i18n/lv.po index 739972ab9e3..66b38fbdbc5 100644 --- a/addons/web/i18n/lv.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/mk.po b/addons/web/i18n/mk.po index 4dd1b28970b..b9d85ae6451 100644 --- a/addons/web/i18n/mk.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/mn.po b/addons/web/i18n/mn.po index c14b5c5b24f..fc245c20cb5 100644 --- a/addons/web/i18n/mn.po +++ b/addons/web/i18n/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nb.po b/addons/web/i18n/nb.po index 0874c36e2e6..e7fbf06aca2 100644 --- a/addons/web/i18n/nb.po +++ b/addons/web/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nl.po b/addons/web/i18n/nl.po index 6a8a23e71c7..8bd68ba4fac 100644 --- a/addons/web/i18n/nl.po +++ b/addons/web/i18n/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/nl_BE.po b/addons/web/i18n/nl_BE.po index d8cad8e0824..77713c2fc3f 100644 --- a/addons/web/i18n/nl_BE.po +++ b/addons/web/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pl.po b/addons/web/i18n/pl.po index 9c8b49bc170..374f7b89841 100644 --- a/addons/web/i18n/pl.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt.po b/addons/web/i18n/pt.po index 83c02ab0ffe..e6127f3bd15 100644 --- a/addons/web/i18n/pt.po +++ b/addons/web/i18n/pt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/pt_BR.po b/addons/web/i18n/pt_BR.po index 33d9912125d..76e0bdd1717 100644 --- a/addons/web/i18n/pt_BR.po +++ b/addons/web/i18n/pt_BR.po @@ -10,13 +10,13 @@ msgstr "" "POT-Creation-Date: 2012-12-21 17:06+0000\n" "PO-Revision-Date: 2012-12-16 22:21+0000\n" "Last-Translator: Fábio Martinelli - http://zupy.com.br " -"\n" +"\n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ro.po b/addons/web/i18n/ro.po index 7b2a36dc3ee..ab570e02edf 100644 --- a/addons/web/i18n/ro.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/ru.po b/addons/web/i18n/ru.po index 8486f2bc083..2f61f209499 100644 --- a/addons/web/i18n/ru.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sk.po b/addons/web/i18n/sk.po index fd183d36f2d..a02057ea879 100644 --- a/addons/web/i18n/sk.po +++ b/addons/web/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sl.po b/addons/web/i18n/sl.po index 33c11f05707..96483a0b310 100644 --- a/addons/web/i18n/sl.po +++ b/addons/web/i18n/sl.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sq.po b/addons/web/i18n/sq.po index a59f8edb6c1..7e07fccbec4 100644 --- a/addons/web/i18n/sq.po +++ b/addons/web/i18n/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: 2013-11-21 05:26+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:12+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sr@latin.po b/addons/web/i18n/sr@latin.po index a10831b3889..42fcea7543d 100644 --- a/addons/web/i18n/sr@latin.po +++ b/addons/web/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/sv.po b/addons/web/i18n/sv.po index cf8d1ddc9a7..496a1580a2a 100644 --- a/addons/web/i18n/sv.po +++ b/addons/web/i18n/sv.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/th.po b/addons/web/i18n/th.po index 35423e81b67..73ab0e8638b 100644 --- a/addons/web/i18n/th.po +++ b/addons/web/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/tr.po b/addons/web/i18n/tr.po index 5292a89006c..90d0778b8a7 100644 --- a/addons/web/i18n/tr.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/uk.po b/addons/web/i18n/uk.po index 3109c5df2a1..03f8f4e07cb 100644 --- a/addons/web/i18n/uk.po +++ b/addons/web/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/vi.po b/addons/web/i18n/vi.po index 6271c985405..54e4924abee 100644 --- a/addons/web/i18n/vi.po +++ b/addons/web/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_CN.po b/addons/web/i18n/zh_CN.po index 1ba1b62279c..4451dcf126f 100644 --- a/addons/web/i18n/zh_CN.po +++ b/addons/web/i18n/zh_CN.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/zh_TW.po b/addons/web/i18n/zh_TW.po index 80a11483fcf..6e419cfcd9b 100644 --- a/addons/web/i18n/zh_TW.po +++ b/addons/web/i18n/zh_TW.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web #. openerp-web diff --git a/addons/web_calendar/i18n/ar.po b/addons/web_calendar/i18n/ar.po index e964532acd3..6cc5eedeb1f 100644 --- a/addons/web_calendar/i18n/ar.po +++ b/addons/web_calendar/i18n/ar.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/bg.po b/addons/web_calendar/i18n/bg.po index c06e552da5d..be0c2cd364d 100644 --- a/addons/web_calendar/i18n/bg.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/bn.po b/addons/web_calendar/i18n/bn.po index fc306d46082..1d87fe63171 100644 --- a/addons/web_calendar/i18n/bn.po +++ b/addons/web_calendar/i18n/bn.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/bs.po b/addons/web_calendar/i18n/bs.po index 9e5ec63bb90..038b3a31c04 100644 --- a/addons/web_calendar/i18n/bs.po +++ b/addons/web_calendar/i18n/bs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ca.po b/addons/web_calendar/i18n/ca.po index d5dae42d16e..71fe9ae9979 100644 --- a/addons/web_calendar/i18n/ca.po +++ b/addons/web_calendar/i18n/ca.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/cs.po b/addons/web_calendar/i18n/cs.po index 3ac14399c2e..ff3dc3728c4 100644 --- a/addons/web_calendar/i18n/cs.po +++ b/addons/web_calendar/i18n/cs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" "X-Poedit-Language: Czech\n" #. module: web_calendar diff --git a/addons/web_calendar/i18n/da.po b/addons/web_calendar/i18n/da.po index 2a52ab13635..8feab5cfa18 100644 --- a/addons/web_calendar/i18n/da.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/de.po b/addons/web_calendar/i18n/de.po index a982bb9812c..bf5606e49cc 100644 --- a/addons/web_calendar/i18n/de.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/en_AU.po b/addons/web_calendar/i18n/en_AU.po index ec1bc32b469..d91cf7f31bc 100644 --- a/addons/web_calendar/i18n/en_AU.po +++ b/addons/web_calendar/i18n/en_AU.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/en_GB.po b/addons/web_calendar/i18n/en_GB.po index 141ea1e3302..2a8cbfd95b9 100644 --- a/addons/web_calendar/i18n/en_GB.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es.po b/addons/web_calendar/i18n/es.po index 63bc9eced16..e53f327edc4 100644 --- a/addons/web_calendar/i18n/es.po +++ b/addons/web_calendar/i18n/es.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_CL.po b/addons/web_calendar/i18n/es_CL.po index 776db23dd24..d452a29d6ec 100644 --- a/addons/web_calendar/i18n/es_CL.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_CR.po b/addons/web_calendar/i18n/es_CR.po index 9bcaf14abab..93c9ad11944 100644 --- a/addons/web_calendar/i18n/es_CR.po +++ b/addons/web_calendar/i18n/es_CR.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" "Language: es\n" #. module: web_calendar diff --git a/addons/web_calendar/i18n/es_DO.po b/addons/web_calendar/i18n/es_DO.po index ca6fae9d132..f8d8d5e05f4 100644 --- a/addons/web_calendar/i18n/es_DO.po +++ b/addons/web_calendar/i18n/es_DO.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_EC.po b/addons/web_calendar/i18n/es_EC.po index f8c1473f03b..08688346d99 100644 --- a/addons/web_calendar/i18n/es_EC.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/es_MX.po b/addons/web_calendar/i18n/es_MX.po index 0bd2c8f844a..f6aad25109d 100644 --- a/addons/web_calendar/i18n/es_MX.po +++ b/addons/web_calendar/i18n/es_MX.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/et.po b/addons/web_calendar/i18n/et.po index e03453c538a..92efefb68ce 100644 --- a/addons/web_calendar/i18n/et.po +++ b/addons/web_calendar/i18n/et.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/eu.po b/addons/web_calendar/i18n/eu.po index 4c51c9a273e..64ae29a57e1 100644 --- a/addons/web_calendar/i18n/eu.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fa.po b/addons/web_calendar/i18n/fa.po index 7dfa3dbe59a..7425e825b2b 100644 --- a/addons/web_calendar/i18n/fa.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fi.po b/addons/web_calendar/i18n/fi.po index d95d82c3d32..bbaf64aba62 100644 --- a/addons/web_calendar/i18n/fi.po +++ b/addons/web_calendar/i18n/fi.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fr.po b/addons/web_calendar/i18n/fr.po index 31222ffa69f..3f4d42b6c85 100644 --- a/addons/web_calendar/i18n/fr.po +++ b/addons/web_calendar/i18n/fr.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/fr_CA.po b/addons/web_calendar/i18n/fr_CA.po index f2cbacb3f02..3652f1d84b8 100644 --- a/addons/web_calendar/i18n/fr_CA.po +++ b/addons/web_calendar/i18n/fr_CA.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/gl.po b/addons/web_calendar/i18n/gl.po index c689fe57d1c..d61a1a57fe9 100644 --- a/addons/web_calendar/i18n/gl.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/gu.po b/addons/web_calendar/i18n/gu.po index 4addac5f978..cfd0374ef07 100644 --- a/addons/web_calendar/i18n/gu.po +++ b/addons/web_calendar/i18n/gu.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/hr.po b/addons/web_calendar/i18n/hr.po index f932a91bbcc..f6f28da54c9 100644 --- a/addons/web_calendar/i18n/hr.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/hu.po b/addons/web_calendar/i18n/hu.po index 4f495f848fe..86571c4af89 100644 --- a/addons/web_calendar/i18n/hu.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/id.po b/addons/web_calendar/i18n/id.po index 7bf62f0b196..5be9c8d9afc 100644 --- a/addons/web_calendar/i18n/id.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/it.po b/addons/web_calendar/i18n/it.po index 2a841ae68c4..f8fefc652e9 100644 --- a/addons/web_calendar/i18n/it.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ja.po b/addons/web_calendar/i18n/ja.po index d3042c514f2..e3644b70f76 100644 --- a/addons/web_calendar/i18n/ja.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ka.po b/addons/web_calendar/i18n/ka.po index ffd0f9d860d..f903a5b167f 100644 --- a/addons/web_calendar/i18n/ka.po +++ b/addons/web_calendar/i18n/ka.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ko.po b/addons/web_calendar/i18n/ko.po index c6ed2bad703..ab938532d10 100644 --- a/addons/web_calendar/i18n/ko.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/lt.po b/addons/web_calendar/i18n/lt.po index 8705d2d224f..d0bfbf3974d 100644 --- a/addons/web_calendar/i18n/lt.po +++ b/addons/web_calendar/i18n/lt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/mk.po b/addons/web_calendar/i18n/mk.po index 3b1340e628a..7a40db57e47 100644 --- a/addons/web_calendar/i18n/mk.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/mn.po b/addons/web_calendar/i18n/mn.po index 6f49252dc3c..115c9b78571 100644 --- a/addons/web_calendar/i18n/mn.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/nb.po b/addons/web_calendar/i18n/nb.po index 9d9ac3444cd..5d110946871 100644 --- a/addons/web_calendar/i18n/nb.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/nl.po b/addons/web_calendar/i18n/nl.po index c892b443d35..ed741ca38fd 100644 --- a/addons/web_calendar/i18n/nl.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/nl_BE.po b/addons/web_calendar/i18n/nl_BE.po index 3f500627b3e..da932da0f9f 100644 --- a/addons/web_calendar/i18n/nl_BE.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/pl.po b/addons/web_calendar/i18n/pl.po index e7405975d58..045fda58d07 100644 --- a/addons/web_calendar/i18n/pl.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/pt.po b/addons/web_calendar/i18n/pt.po index bf449f6ca64..d47f43f96f6 100644 --- a/addons/web_calendar/i18n/pt.po +++ b/addons/web_calendar/i18n/pt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/pt_BR.po b/addons/web_calendar/i18n/pt_BR.po index 97879f99041..d660835393a 100644 --- a/addons/web_calendar/i18n/pt_BR.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ro.po b/addons/web_calendar/i18n/ro.po index 213c13193d0..878dbfaffe6 100644 --- a/addons/web_calendar/i18n/ro.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/ru.po b/addons/web_calendar/i18n/ru.po index 2b0921894d5..8c18d67a363 100644 --- a/addons/web_calendar/i18n/ru.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sk.po b/addons/web_calendar/i18n/sk.po index 207e60fa064..d0e3e757a33 100644 --- a/addons/web_calendar/i18n/sk.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sl.po b/addons/web_calendar/i18n/sl.po index 89e88b270ec..73f4fe5391f 100644 --- a/addons/web_calendar/i18n/sl.po +++ b/addons/web_calendar/i18n/sl.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sq.po b/addons/web_calendar/i18n/sq.po index bfea31975e6..af69f60a83d 100644 --- a/addons/web_calendar/i18n/sq.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sr@latin.po b/addons/web_calendar/i18n/sr@latin.po index 05b06235d42..a9316ab5869 100644 --- a/addons/web_calendar/i18n/sr@latin.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/sv.po b/addons/web_calendar/i18n/sv.po index 7a0e8a90633..4d769e57b5d 100644 --- a/addons/web_calendar/i18n/sv.po +++ b/addons/web_calendar/i18n/sv.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/th.po b/addons/web_calendar/i18n/th.po index 4181cab02e6..dc0c60cdb05 100644 --- a/addons/web_calendar/i18n/th.po +++ b/addons/web_calendar/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/tr.po b/addons/web_calendar/i18n/tr.po index 639d5458555..ffe5c480269 100644 --- a/addons/web_calendar/i18n/tr.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/uk.po b/addons/web_calendar/i18n/uk.po index e8430f22a70..271285f0bb2 100644 --- a/addons/web_calendar/i18n/uk.po +++ b/addons/web_calendar/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/zh_CN.po b/addons/web_calendar/i18n/zh_CN.po index cde1fe8c4a1..f106c4a4875 100644 --- a/addons/web_calendar/i18n/zh_CN.po +++ b/addons/web_calendar/i18n/zh_CN.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_calendar/i18n/zh_TW.po b/addons/web_calendar/i18n/zh_TW.po index 454262ed062..2ea520f6918 100644 --- a/addons/web_calendar/i18n/zh_TW.po +++ b/addons/web_calendar/i18n/zh_TW.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_calendar #. openerp-web diff --git a/addons/web_diagram/i18n/ar.po b/addons/web_diagram/i18n/ar.po index d3be241cf53..90f1f440327 100644 --- a/addons/web_diagram/i18n/ar.po +++ b/addons/web_diagram/i18n/ar.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/bg.po b/addons/web_diagram/i18n/bg.po index e5b1f511f65..d9262179a7f 100644 --- a/addons/web_diagram/i18n/bg.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/bn.po b/addons/web_diagram/i18n/bn.po index 56a103ffc8f..a9a2316deb7 100644 --- a/addons/web_diagram/i18n/bn.po +++ b/addons/web_diagram/i18n/bn.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/bs.po b/addons/web_diagram/i18n/bs.po index 0701ab738b4..48ea68b2417 100644 --- a/addons/web_diagram/i18n/bs.po +++ b/addons/web_diagram/i18n/bs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ca.po b/addons/web_diagram/i18n/ca.po index 766ae9d35dc..b5684f61054 100644 --- a/addons/web_diagram/i18n/ca.po +++ b/addons/web_diagram/i18n/ca.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/cs.po b/addons/web_diagram/i18n/cs.po index 0211c5b85f2..33df9f0617d 100644 --- a/addons/web_diagram/i18n/cs.po +++ b/addons/web_diagram/i18n/cs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" "X-Poedit-Language: Czech\n" #. module: web_diagram diff --git a/addons/web_diagram/i18n/da.po b/addons/web_diagram/i18n/da.po index 0e0f96f9fa0..1bf73725fdb 100644 --- a/addons/web_diagram/i18n/da.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/de.po b/addons/web_diagram/i18n/de.po index 13cdfd18cfd..d910f02869f 100644 --- a/addons/web_diagram/i18n/de.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/en_AU.po b/addons/web_diagram/i18n/en_AU.po index 8928fa6d498..cb34ab06f55 100644 --- a/addons/web_diagram/i18n/en_AU.po +++ b/addons/web_diagram/i18n/en_AU.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/en_GB.po b/addons/web_diagram/i18n/en_GB.po index d68776742d8..a90e71aa286 100644 --- a/addons/web_diagram/i18n/en_GB.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es.po b/addons/web_diagram/i18n/es.po index f484e2350f4..705d6332f73 100644 --- a/addons/web_diagram/i18n/es.po +++ b/addons/web_diagram/i18n/es.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_CL.po b/addons/web_diagram/i18n/es_CL.po index 719e49b6fe8..7bb57d7ce20 100644 --- a/addons/web_diagram/i18n/es_CL.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_CR.po b/addons/web_diagram/i18n/es_CR.po index 2135641e07f..a8d011cf7cb 100644 --- a/addons/web_diagram/i18n/es_CR.po +++ b/addons/web_diagram/i18n/es_CR.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" "Language: es\n" #. module: web_diagram diff --git a/addons/web_diagram/i18n/es_DO.po b/addons/web_diagram/i18n/es_DO.po index 2015e9a0169..457d603eff5 100644 --- a/addons/web_diagram/i18n/es_DO.po +++ b/addons/web_diagram/i18n/es_DO.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_EC.po b/addons/web_diagram/i18n/es_EC.po index 10fa6ba9fe9..caf0514cedb 100644 --- a/addons/web_diagram/i18n/es_EC.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/es_MX.po b/addons/web_diagram/i18n/es_MX.po index 62e20be56a2..34e0e15ecd5 100644 --- a/addons/web_diagram/i18n/es_MX.po +++ b/addons/web_diagram/i18n/es_MX.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/et.po b/addons/web_diagram/i18n/et.po index 559042bade7..61863d59eab 100644 --- a/addons/web_diagram/i18n/et.po +++ b/addons/web_diagram/i18n/et.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/fa.po b/addons/web_diagram/i18n/fa.po index 15580d0e57e..be29cd2a206 100644 --- a/addons/web_diagram/i18n/fa.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/fi.po b/addons/web_diagram/i18n/fi.po index 588c1ff2e27..206f91e8597 100644 --- a/addons/web_diagram/i18n/fi.po +++ b/addons/web_diagram/i18n/fi.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/fr.po b/addons/web_diagram/i18n/fr.po index f2a7ce60552..e78c92e065f 100644 --- a/addons/web_diagram/i18n/fr.po +++ b/addons/web_diagram/i18n/fr.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/gl.po b/addons/web_diagram/i18n/gl.po index fbf0cac9bf8..d6e140ede7b 100644 --- a/addons/web_diagram/i18n/gl.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/gu.po b/addons/web_diagram/i18n/gu.po index 3d3ceb08696..ab87d1930ca 100644 --- a/addons/web_diagram/i18n/gu.po +++ b/addons/web_diagram/i18n/gu.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/hr.po b/addons/web_diagram/i18n/hr.po index cfce0dc4cd9..76925687204 100644 --- a/addons/web_diagram/i18n/hr.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/hu.po b/addons/web_diagram/i18n/hu.po index 7ace08dfcd1..7908f4c4245 100644 --- a/addons/web_diagram/i18n/hu.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/id.po b/addons/web_diagram/i18n/id.po index a2e93e67df9..badcc9ea033 100644 --- a/addons/web_diagram/i18n/id.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/it.po b/addons/web_diagram/i18n/it.po index 458e31d0ea0..7b89cb6db4e 100644 --- a/addons/web_diagram/i18n/it.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ja.po b/addons/web_diagram/i18n/ja.po index 0ab613d7793..574ae96cbc8 100644 --- a/addons/web_diagram/i18n/ja.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ka.po b/addons/web_diagram/i18n/ka.po index f447ad7a10f..567e52a27c2 100644 --- a/addons/web_diagram/i18n/ka.po +++ b/addons/web_diagram/i18n/ka.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ko.po b/addons/web_diagram/i18n/ko.po index 3d8b98ff450..b76c28e08bc 100644 --- a/addons/web_diagram/i18n/ko.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/lt.po b/addons/web_diagram/i18n/lt.po index 44df01b31af..31062d77c9a 100644 --- a/addons/web_diagram/i18n/lt.po +++ b/addons/web_diagram/i18n/lt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/mk.po b/addons/web_diagram/i18n/mk.po index 6e152b595dd..ffd0845e3fa 100644 --- a/addons/web_diagram/i18n/mk.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/mn.po b/addons/web_diagram/i18n/mn.po index a0bbccb77d8..367f367dc4b 100644 --- a/addons/web_diagram/i18n/mn.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/nb.po b/addons/web_diagram/i18n/nb.po index de8c6324ebd..b19057a77c9 100644 --- a/addons/web_diagram/i18n/nb.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/nl.po b/addons/web_diagram/i18n/nl.po index bcb42349b89..231af78e20a 100644 --- a/addons/web_diagram/i18n/nl.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/nl_BE.po b/addons/web_diagram/i18n/nl_BE.po index e497e403eb2..669430e78f6 100644 --- a/addons/web_diagram/i18n/nl_BE.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/pl.po b/addons/web_diagram/i18n/pl.po index 2b0b9e8f216..d0ed8af1f07 100644 --- a/addons/web_diagram/i18n/pl.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/pt.po b/addons/web_diagram/i18n/pt.po index dca0103964b..6b7d2e0a8dd 100644 --- a/addons/web_diagram/i18n/pt.po +++ b/addons/web_diagram/i18n/pt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/pt_BR.po b/addons/web_diagram/i18n/pt_BR.po index 6e7d0b1280d..86d9a3054fa 100644 --- a/addons/web_diagram/i18n/pt_BR.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ro.po b/addons/web_diagram/i18n/ro.po index f5e47b2eb34..d2f4884eec8 100644 --- a/addons/web_diagram/i18n/ro.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/ru.po b/addons/web_diagram/i18n/ru.po index 9b75baab5b0..9329b5b012d 100644 --- a/addons/web_diagram/i18n/ru.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sl.po b/addons/web_diagram/i18n/sl.po index 581e22c405f..af497e32a1e 100644 --- a/addons/web_diagram/i18n/sl.po +++ b/addons/web_diagram/i18n/sl.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sq.po b/addons/web_diagram/i18n/sq.po index f5f4afc7c9e..8c4add3db41 100644 --- a/addons/web_diagram/i18n/sq.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sr@latin.po b/addons/web_diagram/i18n/sr@latin.po index 546ab510c64..31961acb99e 100644 --- a/addons/web_diagram/i18n/sr@latin.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/sv.po b/addons/web_diagram/i18n/sv.po index 655aa285b59..424885a7f8a 100644 --- a/addons/web_diagram/i18n/sv.po +++ b/addons/web_diagram/i18n/sv.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/th.po b/addons/web_diagram/i18n/th.po index 3dc4d29a9ee..614c8a65cac 100644 --- a/addons/web_diagram/i18n/th.po +++ b/addons/web_diagram/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/tr.po b/addons/web_diagram/i18n/tr.po index 91b15a43f85..4e5a6bd96cf 100644 --- a/addons/web_diagram/i18n/tr.po +++ b/addons/web_diagram/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/zh_CN.po b/addons/web_diagram/i18n/zh_CN.po index 1968cdd71de..3c0b28a724c 100644 --- a/addons/web_diagram/i18n/zh_CN.po +++ b/addons/web_diagram/i18n/zh_CN.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_diagram/i18n/zh_TW.po b/addons/web_diagram/i18n/zh_TW.po index 51058e0e0b8..0ecc83199a7 100644 --- a/addons/web_diagram/i18n/zh_TW.po +++ b/addons/web_diagram/i18n/zh_TW.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:13+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_diagram #. openerp-web diff --git a/addons/web_gantt/i18n/ar.po b/addons/web_gantt/i18n/ar.po index 9e6a349c971..fc468b01eb3 100644 --- a/addons/web_gantt/i18n/ar.po +++ b/addons/web_gantt/i18n/ar.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/bg.po b/addons/web_gantt/i18n/bg.po index 74ef1b41a10..43bdf35dc5e 100644 --- a/addons/web_gantt/i18n/bg.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/bn.po b/addons/web_gantt/i18n/bn.po index a46aff4a340..3947017ba7c 100644 --- a/addons/web_gantt/i18n/bn.po +++ b/addons/web_gantt/i18n/bn.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/bs.po b/addons/web_gantt/i18n/bs.po index dbeaef365e2..241882cbec7 100644 --- a/addons/web_gantt/i18n/bs.po +++ b/addons/web_gantt/i18n/bs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ca.po b/addons/web_gantt/i18n/ca.po index cc28708821f..f64e42b7d81 100644 --- a/addons/web_gantt/i18n/ca.po +++ b/addons/web_gantt/i18n/ca.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/cs.po b/addons/web_gantt/i18n/cs.po index 0661cdb3654..ffe49f503bf 100644 --- a/addons/web_gantt/i18n/cs.po +++ b/addons/web_gantt/i18n/cs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" "X-Poedit-Language: Czech\n" #. module: web_gantt diff --git a/addons/web_gantt/i18n/da.po b/addons/web_gantt/i18n/da.po index 1f3f1b10fe1..c88fde5f829 100644 --- a/addons/web_gantt/i18n/da.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/de.po b/addons/web_gantt/i18n/de.po index 60520ef928f..d7b0bc64e19 100644 --- a/addons/web_gantt/i18n/de.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/en_AU.po b/addons/web_gantt/i18n/en_AU.po index c9a58537c9e..d049ae30e77 100644 --- a/addons/web_gantt/i18n/en_AU.po +++ b/addons/web_gantt/i18n/en_AU.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/en_GB.po b/addons/web_gantt/i18n/en_GB.po index a717dffd3f3..00351447a20 100644 --- a/addons/web_gantt/i18n/en_GB.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es.po b/addons/web_gantt/i18n/es.po index d14fa008068..38c360fa7a1 100644 --- a/addons/web_gantt/i18n/es.po +++ b/addons/web_gantt/i18n/es.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_CL.po b/addons/web_gantt/i18n/es_CL.po index 5c587461bb7..f39e1e34957 100644 --- a/addons/web_gantt/i18n/es_CL.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_CR.po b/addons/web_gantt/i18n/es_CR.po index e9e5cd1e134..84a9f4fdaf3 100644 --- a/addons/web_gantt/i18n/es_CR.po +++ b/addons/web_gantt/i18n/es_CR.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_DO.po b/addons/web_gantt/i18n/es_DO.po index 4b90cddec7c..025d6a18d57 100644 --- a/addons/web_gantt/i18n/es_DO.po +++ b/addons/web_gantt/i18n/es_DO.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_EC.po b/addons/web_gantt/i18n/es_EC.po index 9e727a62545..a3e4b6c8025 100644 --- a/addons/web_gantt/i18n/es_EC.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/es_MX.po b/addons/web_gantt/i18n/es_MX.po index 8df8df80620..efe9eacf11f 100644 --- a/addons/web_gantt/i18n/es_MX.po +++ b/addons/web_gantt/i18n/es_MX.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/et.po b/addons/web_gantt/i18n/et.po index 02021bf671a..c2bc6a0f512 100644 --- a/addons/web_gantt/i18n/et.po +++ b/addons/web_gantt/i18n/et.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/fa.po b/addons/web_gantt/i18n/fa.po index fcfd78db9c1..d37d3a30bd7 100644 --- a/addons/web_gantt/i18n/fa.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/fi.po b/addons/web_gantt/i18n/fi.po index 9bee604b58e..18981b3ce9b 100644 --- a/addons/web_gantt/i18n/fi.po +++ b/addons/web_gantt/i18n/fi.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/fr.po b/addons/web_gantt/i18n/fr.po index aca3ffcea3f..d5e9b52a068 100644 --- a/addons/web_gantt/i18n/fr.po +++ b/addons/web_gantt/i18n/fr.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/gl.po b/addons/web_gantt/i18n/gl.po index 6fb17209446..b8443518457 100644 --- a/addons/web_gantt/i18n/gl.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/gu.po b/addons/web_gantt/i18n/gu.po index 2d03b2bbdc4..33d5b5c142d 100644 --- a/addons/web_gantt/i18n/gu.po +++ b/addons/web_gantt/i18n/gu.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/hr.po b/addons/web_gantt/i18n/hr.po index eacbe0be8b9..c2a2c0fbc83 100644 --- a/addons/web_gantt/i18n/hr.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/hu.po b/addons/web_gantt/i18n/hu.po index 4b6f878890a..7462252840f 100644 --- a/addons/web_gantt/i18n/hu.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/it.po b/addons/web_gantt/i18n/it.po index e9239b8e832..5999b1c666b 100644 --- a/addons/web_gantt/i18n/it.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ja.po b/addons/web_gantt/i18n/ja.po index 5329578a7cd..dd262453198 100644 --- a/addons/web_gantt/i18n/ja.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ka.po b/addons/web_gantt/i18n/ka.po index 58cc47a7bf2..585357d47cc 100644 --- a/addons/web_gantt/i18n/ka.po +++ b/addons/web_gantt/i18n/ka.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ko.po b/addons/web_gantt/i18n/ko.po index 48cfb3d0b4f..35ef2fe4acb 100644 --- a/addons/web_gantt/i18n/ko.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/lo.po b/addons/web_gantt/i18n/lo.po index 4940557b9fb..b370022d9a3 100644 --- a/addons/web_gantt/i18n/lo.po +++ b/addons/web_gantt/i18n/lo.po @@ -14,19 +14,19 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web #: code:addons/web_gantt/static/src/xml/web_gantt.xml:10 #, python-format msgid "Create" -msgstr "ສ້າງຂື້ນ" +msgstr "ເເກ້ນ" #. module: web_gantt #. openerp-web #: code:addons/web_gantt/static/src/js/gantt.js:11 #, python-format msgid "Gantt" -msgstr "ກັນຕໍ່" +msgstr "ເເກ້ນ" diff --git a/addons/web_gantt/i18n/lt.po b/addons/web_gantt/i18n/lt.po index d533d35c833..52576e07188 100644 --- a/addons/web_gantt/i18n/lt.po +++ b/addons/web_gantt/i18n/lt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/mk.po b/addons/web_gantt/i18n/mk.po index 21830e7eb8e..bd4740fb5e6 100644 --- a/addons/web_gantt/i18n/mk.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/mn.po b/addons/web_gantt/i18n/mn.po index b3c853407db..2994824280b 100644 --- a/addons/web_gantt/i18n/mn.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/nb.po b/addons/web_gantt/i18n/nb.po index c0ef8ba980a..b373df6345d 100644 --- a/addons/web_gantt/i18n/nb.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/nl.po b/addons/web_gantt/i18n/nl.po index 472834411de..943ede32d72 100644 --- a/addons/web_gantt/i18n/nl.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/nl_BE.po b/addons/web_gantt/i18n/nl_BE.po index af7c2cd64d2..1a00acc5520 100644 --- a/addons/web_gantt/i18n/nl_BE.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/pl.po b/addons/web_gantt/i18n/pl.po index f4e301103e8..71d10e42811 100644 --- a/addons/web_gantt/i18n/pl.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/pt.po b/addons/web_gantt/i18n/pt.po index 6e09b29f7b0..8b8a25adb60 100644 --- a/addons/web_gantt/i18n/pt.po +++ b/addons/web_gantt/i18n/pt.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/pt_BR.po b/addons/web_gantt/i18n/pt_BR.po index 77edf02108c..1769854e355 100644 --- a/addons/web_gantt/i18n/pt_BR.po +++ b/addons/web_gantt/i18n/pt_BR.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ro.po b/addons/web_gantt/i18n/ro.po index b78d8d579fa..a63453cad34 100644 --- a/addons/web_gantt/i18n/ro.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/ru.po b/addons/web_gantt/i18n/ru.po index 950b24fec5b..85a8761c737 100644 --- a/addons/web_gantt/i18n/ru.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sl.po b/addons/web_gantt/i18n/sl.po index f64c87ce290..a75c99d231d 100644 --- a/addons/web_gantt/i18n/sl.po +++ b/addons/web_gantt/i18n/sl.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sq.po b/addons/web_gantt/i18n/sq.po index bbac6316308..417ddf27c44 100644 --- a/addons/web_gantt/i18n/sq.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sr@latin.po b/addons/web_gantt/i18n/sr@latin.po index 9f885fffe7d..ead7aade1a1 100644 --- a/addons/web_gantt/i18n/sr@latin.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/sv.po b/addons/web_gantt/i18n/sv.po index 2a0c5593fb8..d4bf814d3ab 100644 --- a/addons/web_gantt/i18n/sv.po +++ b/addons/web_gantt/i18n/sv.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/th.po b/addons/web_gantt/i18n/th.po index 3a90d97eb2d..863660cb7ef 100644 --- a/addons/web_gantt/i18n/th.po +++ b/addons/web_gantt/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/tr.po b/addons/web_gantt/i18n/tr.po index c7140e8f351..35c7b45ce38 100644 --- a/addons/web_gantt/i18n/tr.po +++ b/addons/web_gantt/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_gantt/i18n/zh_CN.po b/addons/web_gantt/i18n/zh_CN.po index 2edc23d5f5a..ac4d223f450 100644 --- a/addons/web_gantt/i18n/zh_CN.po +++ b/addons/web_gantt/i18n/zh_CN.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_gantt #. openerp-web diff --git a/addons/web_graph/i18n/ar.po b/addons/web_graph/i18n/ar.po index dbbfb889542..c2814c0478c 100644 --- a/addons/web_graph/i18n/ar.po +++ b/addons/web_graph/i18n/ar.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/bg.po b/addons/web_graph/i18n/bg.po index 065783e7c21..d8813b6a8f8 100644 --- a/addons/web_graph/i18n/bg.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/bn.po b/addons/web_graph/i18n/bn.po index 717b0475c50..670762882a6 100644 --- a/addons/web_graph/i18n/bn.po +++ b/addons/web_graph/i18n/bn.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/bs.po b/addons/web_graph/i18n/bs.po index f68ccc7cb1e..8254405c6bb 100644 --- a/addons/web_graph/i18n/bs.po +++ b/addons/web_graph/i18n/bs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ca.po b/addons/web_graph/i18n/ca.po index 6ae6d81a1a0..ac8951be360 100644 --- a/addons/web_graph/i18n/ca.po +++ b/addons/web_graph/i18n/ca.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/cs.po b/addons/web_graph/i18n/cs.po index 547d02d1bcb..67be7870493 100644 --- a/addons/web_graph/i18n/cs.po +++ b/addons/web_graph/i18n/cs.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/da.po b/addons/web_graph/i18n/da.po index 13001a6d789..76c62d59603 100644 --- a/addons/web_graph/i18n/da.po +++ b/addons/web_graph/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/de.po b/addons/web_graph/i18n/de.po index f37315bddd8..1dbfca14638 100644 --- a/addons/web_graph/i18n/de.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/en_AU.po b/addons/web_graph/i18n/en_AU.po index fb488b6f3cd..c56755c4e51 100644 --- a/addons/web_graph/i18n/en_AU.po +++ b/addons/web_graph/i18n/en_AU.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/en_GB.po b/addons/web_graph/i18n/en_GB.po index 6b2617daa24..186fb6ef324 100644 --- a/addons/web_graph/i18n/en_GB.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es.po b/addons/web_graph/i18n/es.po index 1e7257cad15..d4260f9b9ac 100644 --- a/addons/web_graph/i18n/es.po +++ b/addons/web_graph/i18n/es.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_CL.po b/addons/web_graph/i18n/es_CL.po index 034fdf070f4..4e4d56870dc 100644 --- a/addons/web_graph/i18n/es_CL.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_CR.po b/addons/web_graph/i18n/es_CR.po index 7363a474c3b..f2e128f7c64 100644 --- a/addons/web_graph/i18n/es_CR.po +++ b/addons/web_graph/i18n/es_CR.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_DO.po b/addons/web_graph/i18n/es_DO.po index f3b29ac3f29..9fbd1e04425 100644 --- a/addons/web_graph/i18n/es_DO.po +++ b/addons/web_graph/i18n/es_DO.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_EC.po b/addons/web_graph/i18n/es_EC.po index de61d01db81..63f8a32519f 100644 --- a/addons/web_graph/i18n/es_EC.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/es_MX.po b/addons/web_graph/i18n/es_MX.po index c2a932cb9a3..646a09fecf1 100644 --- a/addons/web_graph/i18n/es_MX.po +++ b/addons/web_graph/i18n/es_MX.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/et.po b/addons/web_graph/i18n/et.po index e5efe5e670c..0579efdb271 100644 --- a/addons/web_graph/i18n/et.po +++ b/addons/web_graph/i18n/et.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fa.po b/addons/web_graph/i18n/fa.po index 5dc30eba3de..6b7198cb1b7 100644 --- a/addons/web_graph/i18n/fa.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fi.po b/addons/web_graph/i18n/fi.po index 5bcce57019d..aca5e7c8194 100644 --- a/addons/web_graph/i18n/fi.po +++ b/addons/web_graph/i18n/fi.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fr.po b/addons/web_graph/i18n/fr.po index cccb0c373d7..028fac93365 100644 --- a/addons/web_graph/i18n/fr.po +++ b/addons/web_graph/i18n/fr.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/fr_CA.po b/addons/web_graph/i18n/fr_CA.po index a76f3df056e..072f65235c8 100644 --- a/addons/web_graph/i18n/fr_CA.po +++ b/addons/web_graph/i18n/fr_CA.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/gl.po b/addons/web_graph/i18n/gl.po index 107e007c17c..115605737b3 100644 --- a/addons/web_graph/i18n/gl.po +++ b/addons/web_graph/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/gu.po b/addons/web_graph/i18n/gu.po index 97db6dbddae..924bc633f41 100644 --- a/addons/web_graph/i18n/gu.po +++ b/addons/web_graph/i18n/gu.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/hr.po b/addons/web_graph/i18n/hr.po index 04e04977c5c..7b74aa82892 100644 --- a/addons/web_graph/i18n/hr.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/hu.po b/addons/web_graph/i18n/hu.po index 848ca2cc3d9..1b0b1180412 100644 --- a/addons/web_graph/i18n/hu.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/it.po b/addons/web_graph/i18n/it.po index fb6f30dd151..f071a164a6e 100644 --- a/addons/web_graph/i18n/it.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ja.po b/addons/web_graph/i18n/ja.po index 52b9b22b3c9..127fb37d47d 100644 --- a/addons/web_graph/i18n/ja.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ka.po b/addons/web_graph/i18n/ka.po index 8da7ae9d150..450f5b01420 100644 --- a/addons/web_graph/i18n/ka.po +++ b/addons/web_graph/i18n/ka.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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ko.po b/addons/web_graph/i18n/ko.po index a4cd4f078c8..865eb8b352f 100644 --- a/addons/web_graph/i18n/ko.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/lt.po b/addons/web_graph/i18n/lt.po index c694ba93037..1242b8b313e 100644 --- a/addons/web_graph/i18n/lt.po +++ b/addons/web_graph/i18n/lt.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/mk.po b/addons/web_graph/i18n/mk.po index d84de07862f..4b6e3cb99d7 100644 --- a/addons/web_graph/i18n/mk.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/mn.po b/addons/web_graph/i18n/mn.po index 3f4eb38c8e7..afc0e178d2e 100644 --- a/addons/web_graph/i18n/mn.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/nb.po b/addons/web_graph/i18n/nb.po index 2d0c40677a5..4a753ad2f34 100644 --- a/addons/web_graph/i18n/nb.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/nl.po b/addons/web_graph/i18n/nl.po index 6f6f347ca76..bca3e83dc00 100644 --- a/addons/web_graph/i18n/nl.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/nl_BE.po b/addons/web_graph/i18n/nl_BE.po index cb1a907a36b..25030560a43 100644 --- a/addons/web_graph/i18n/nl_BE.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/pl.po b/addons/web_graph/i18n/pl.po index 3fc9d289c1c..2df1c70a51a 100644 --- a/addons/web_graph/i18n/pl.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/pt.po b/addons/web_graph/i18n/pt.po index 4523a789203..c58fb864d2e 100644 --- a/addons/web_graph/i18n/pt.po +++ b/addons/web_graph/i18n/pt.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/pt_BR.po b/addons/web_graph/i18n/pt_BR.po index 2616e04a5e8..7ba7e8cb682 100644 --- a/addons/web_graph/i18n/pt_BR.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ro.po b/addons/web_graph/i18n/ro.po index 9fed89e5b80..d13da692023 100644 --- a/addons/web_graph/i18n/ro.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/ru.po b/addons/web_graph/i18n/ru.po index 8b752b65162..022f1de0048 100644 --- a/addons/web_graph/i18n/ru.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sl.po b/addons/web_graph/i18n/sl.po index f7fce4fed26..45a55703ac2 100644 --- a/addons/web_graph/i18n/sl.po +++ b/addons/web_graph/i18n/sl.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sq.po b/addons/web_graph/i18n/sq.po index d3872afd378..b3c272a63c1 100644 --- a/addons/web_graph/i18n/sq.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:27+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sr@latin.po b/addons/web_graph/i18n/sr@latin.po index ed5b5ef8d97..6cef8fc8e60 100644 --- a/addons/web_graph/i18n/sr@latin.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/sv.po b/addons/web_graph/i18n/sv.po index aa73bf41857..dbb23c8490a 100644 --- a/addons/web_graph/i18n/sv.po +++ b/addons/web_graph/i18n/sv.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/th.po b/addons/web_graph/i18n/th.po index b8a2445a0ad..718b77dc4f6 100644 --- a/addons/web_graph/i18n/th.po +++ b/addons/web_graph/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/tr.po b/addons/web_graph/i18n/tr.po index 5375d4a4ca9..ff97151c919 100644 --- a/addons/web_graph/i18n/tr.po +++ b/addons/web_graph/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_graph/i18n/zh_CN.po b/addons/web_graph/i18n/zh_CN.po index 88b7f3b9f02..4b1cea23ef6 100644 --- a/addons/web_graph/i18n/zh_CN.po +++ b/addons/web_graph/i18n/zh_CN.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_graph #. openerp-web diff --git a/addons/web_kanban/i18n/ar.po b/addons/web_kanban/i18n/ar.po index 1fca6b46c6f..882d87b9187 100644 --- a/addons/web_kanban/i18n/ar.po +++ b/addons/web_kanban/i18n/ar.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/bg.po b/addons/web_kanban/i18n/bg.po index 2617ae5082c..ea32d2722f5 100644 --- a/addons/web_kanban/i18n/bg.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/bn.po b/addons/web_kanban/i18n/bn.po index f519f50c593..806408a1b54 100644 --- a/addons/web_kanban/i18n/bn.po +++ b/addons/web_kanban/i18n/bn.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/bs.po b/addons/web_kanban/i18n/bs.po index c87366462bb..68e32a99f5b 100644 --- a/addons/web_kanban/i18n/bs.po +++ b/addons/web_kanban/i18n/bs.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ca.po b/addons/web_kanban/i18n/ca.po index 757eee72836..e713bf82d63 100644 --- a/addons/web_kanban/i18n/ca.po +++ b/addons/web_kanban/i18n/ca.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/cs.po b/addons/web_kanban/i18n/cs.po index b3d6dc7e53e..81350abbcbc 100644 --- a/addons/web_kanban/i18n/cs.po +++ b/addons/web_kanban/i18n/cs.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" "X-Poedit-Language: Czech\n" #. module: web_kanban diff --git a/addons/web_kanban/i18n/da.po b/addons/web_kanban/i18n/da.po index bf1649d02e6..13049ee9dd3 100644 --- a/addons/web_kanban/i18n/da.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/de.po b/addons/web_kanban/i18n/de.po index d49edf6f311..18cacae82bf 100644 --- a/addons/web_kanban/i18n/de.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/en_AU.po b/addons/web_kanban/i18n/en_AU.po index 07b8defb6f6..fc123ce7e27 100644 --- a/addons/web_kanban/i18n/en_AU.po +++ b/addons/web_kanban/i18n/en_AU.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/en_GB.po b/addons/web_kanban/i18n/en_GB.po index 3b9fcea2749..f9a115e93c7 100644 --- a/addons/web_kanban/i18n/en_GB.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es.po b/addons/web_kanban/i18n/es.po index cce24310e7f..510b960cd1a 100644 --- a/addons/web_kanban/i18n/es.po +++ b/addons/web_kanban/i18n/es.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_CL.po b/addons/web_kanban/i18n/es_CL.po index 40e2db8dfae..0f5c2bc381e 100644 --- a/addons/web_kanban/i18n/es_CL.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_CR.po b/addons/web_kanban/i18n/es_CR.po index 3efb2886108..aa9e28cd887 100644 --- a/addons/web_kanban/i18n/es_CR.po +++ b/addons/web_kanban/i18n/es_CR.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_DO.po b/addons/web_kanban/i18n/es_DO.po index 23880de220c..fe7faf23db6 100644 --- a/addons/web_kanban/i18n/es_DO.po +++ b/addons/web_kanban/i18n/es_DO.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_EC.po b/addons/web_kanban/i18n/es_EC.po index e14d90585aa..01a71bad148 100644 --- a/addons/web_kanban/i18n/es_EC.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/es_MX.po b/addons/web_kanban/i18n/es_MX.po index ed9e53c7e5a..2053d9b01bc 100644 --- a/addons/web_kanban/i18n/es_MX.po +++ b/addons/web_kanban/i18n/es_MX.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/et.po b/addons/web_kanban/i18n/et.po index 7407954ff3d..db88b296926 100644 --- a/addons/web_kanban/i18n/et.po +++ b/addons/web_kanban/i18n/et.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fa.po b/addons/web_kanban/i18n/fa.po index 8b66deee7e1..a2793da0888 100644 --- a/addons/web_kanban/i18n/fa.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fi.po b/addons/web_kanban/i18n/fi.po index 8ff9fa62b44..a60bb5d0e2a 100644 --- a/addons/web_kanban/i18n/fi.po +++ b/addons/web_kanban/i18n/fi.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fr.po b/addons/web_kanban/i18n/fr.po index 1ce1e6f5a8d..d55f6818853 100644 --- a/addons/web_kanban/i18n/fr.po +++ b/addons/web_kanban/i18n/fr.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/fr_CA.po b/addons/web_kanban/i18n/fr_CA.po index 65bd5beabd6..01b530e68ed 100644 --- a/addons/web_kanban/i18n/fr_CA.po +++ b/addons/web_kanban/i18n/fr_CA.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/gl.po b/addons/web_kanban/i18n/gl.po index 1ebab8f230f..8812a22cc79 100644 --- a/addons/web_kanban/i18n/gl.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/gu.po b/addons/web_kanban/i18n/gu.po index ed9cd7dc335..21de86e8e48 100644 --- a/addons/web_kanban/i18n/gu.po +++ b/addons/web_kanban/i18n/gu.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/hr.po b/addons/web_kanban/i18n/hr.po index 419d6c33c84..5ff155ae2af 100644 --- a/addons/web_kanban/i18n/hr.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/hu.po b/addons/web_kanban/i18n/hu.po index a2323de3e17..912c165ffe2 100644 --- a/addons/web_kanban/i18n/hu.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/it.po b/addons/web_kanban/i18n/it.po index 4168453383d..4d3cf7aca54 100644 --- a/addons/web_kanban/i18n/it.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ja.po b/addons/web_kanban/i18n/ja.po index f9f3fec165f..efc958b703f 100644 --- a/addons/web_kanban/i18n/ja.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web @@ -86,7 +86,7 @@ msgstr "カラムを追加" #: code:addons/web_kanban/static/src/xml/web_kanban.xml:45 #, python-format msgid "Fold" -msgstr "" +msgstr "折畳" #. module: web_kanban #. openerp-web @@ -114,7 +114,7 @@ msgstr "このレコードを削除しますか?" #: code:addons/web_kanban/static/src/js/kanban.js:680 #, python-format msgid "Unfold" -msgstr "" +msgstr "展開" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ka.po b/addons/web_kanban/i18n/ka.po index 115e933f929..e992ce49f33 100644 --- a/addons/web_kanban/i18n/ka.po +++ b/addons/web_kanban/i18n/ka.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ko.po b/addons/web_kanban/i18n/ko.po index afcb52efdfe..441e076c2dd 100644 --- a/addons/web_kanban/i18n/ko.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/lt.po b/addons/web_kanban/i18n/lt.po index 8db23eaa44d..9ef32a699e9 100644 --- a/addons/web_kanban/i18n/lt.po +++ b/addons/web_kanban/i18n/lt.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/mk.po b/addons/web_kanban/i18n/mk.po index 50041b62160..cfad8a415ca 100644 --- a/addons/web_kanban/i18n/mk.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/mn.po b/addons/web_kanban/i18n/mn.po index 7227b903c3f..b3e2fa733f9 100644 --- a/addons/web_kanban/i18n/mn.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/nb.po b/addons/web_kanban/i18n/nb.po index 901b687d4b0..d409cb594fe 100644 --- a/addons/web_kanban/i18n/nb.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/nl.po b/addons/web_kanban/i18n/nl.po index 9a87b7ac646..12d0e305630 100644 --- a/addons/web_kanban/i18n/nl.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/nl_BE.po b/addons/web_kanban/i18n/nl_BE.po index 70a7155b03c..de0c2d68e13 100644 --- a/addons/web_kanban/i18n/nl_BE.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/pl.po b/addons/web_kanban/i18n/pl.po index 848e148e142..78be07e8667 100644 --- a/addons/web_kanban/i18n/pl.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/pt.po b/addons/web_kanban/i18n/pt.po index d27cf29db03..c8b3a641108 100644 --- a/addons/web_kanban/i18n/pt.po +++ b/addons/web_kanban/i18n/pt.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/pt_BR.po b/addons/web_kanban/i18n/pt_BR.po index a4e39c271a2..87421dbe4c9 100644 --- a/addons/web_kanban/i18n/pt_BR.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ro.po b/addons/web_kanban/i18n/ro.po index c6e442cc7f2..6159d9d7cb5 100644 --- a/addons/web_kanban/i18n/ro.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/ru.po b/addons/web_kanban/i18n/ru.po index a61daca94dc..6432f4716ad 100644 --- a/addons/web_kanban/i18n/ru.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/sl.po b/addons/web_kanban/i18n/sl.po index e7140017205..afe9dbeadb2 100644 --- a/addons/web_kanban/i18n/sl.po +++ b/addons/web_kanban/i18n/sl.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/sr@latin.po b/addons/web_kanban/i18n/sr@latin.po index f9bb1035b08..52787e91e87 100644 --- a/addons/web_kanban/i18n/sr@latin.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/sv.po b/addons/web_kanban/i18n/sv.po index 507ec1a4edf..01a5f5f6ee7 100644 --- a/addons/web_kanban/i18n/sv.po +++ b/addons/web_kanban/i18n/sv.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/th.po b/addons/web_kanban/i18n/th.po index 2f654574a4d..0cd3b212537 100644 --- a/addons/web_kanban/i18n/th.po +++ b/addons/web_kanban/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/tr.po b/addons/web_kanban/i18n/tr.po index 1c1ccf007de..791c22de9d3 100644 --- a/addons/web_kanban/i18n/tr.po +++ b/addons/web_kanban/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/zh_CN.po b/addons/web_kanban/i18n/zh_CN.po index 2ab59f4bce0..3d5d5f47000 100644 --- a/addons/web_kanban/i18n/zh_CN.po +++ b/addons/web_kanban/i18n/zh_CN.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_kanban/i18n/zh_TW.po b/addons/web_kanban/i18n/zh_TW.po index b398a839c4a..d2cc9279982 100644 --- a/addons/web_kanban/i18n/zh_TW.po +++ b/addons/web_kanban/i18n/zh_TW.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_kanban #. openerp-web diff --git a/addons/web_view_editor/i18n/ar.po b/addons/web_view_editor/i18n/ar.po index ff23f95f9d5..ea0e79a2a72 100644 --- a/addons/web_view_editor/i18n/ar.po +++ b/addons/web_view_editor/i18n/ar.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/bs.po b/addons/web_view_editor/i18n/bs.po index 68438cbccdc..eb3ae603738 100644 --- a/addons/web_view_editor/i18n/bs.po +++ b/addons/web_view_editor/i18n/bs.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/cs.po b/addons/web_view_editor/i18n/cs.po index 408140476dc..1de18c9c851 100644 --- a/addons/web_view_editor/i18n/cs.po +++ b/addons/web_view_editor/i18n/cs.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/da.po b/addons/web_view_editor/i18n/da.po index 7df9fd0f903..b95622a22d6 100644 --- a/addons/web_view_editor/i18n/da.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/de.po b/addons/web_view_editor/i18n/de.po index 2b31f98c62a..6101a5a5c14 100644 --- a/addons/web_view_editor/i18n/de.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/en_AU.po b/addons/web_view_editor/i18n/en_AU.po index d7ed3f95dc4..ff7cf45d0f1 100644 --- a/addons/web_view_editor/i18n/en_AU.po +++ b/addons/web_view_editor/i18n/en_AU.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/en_GB.po b/addons/web_view_editor/i18n/en_GB.po index 335cf99deda..3437dcb2491 100644 --- a/addons/web_view_editor/i18n/en_GB.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es.po b/addons/web_view_editor/i18n/es.po index b31b5ad3260..2ce8c45a6ee 100644 --- a/addons/web_view_editor/i18n/es.po +++ b/addons/web_view_editor/i18n/es.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es_DO.po b/addons/web_view_editor/i18n/es_DO.po index e99ecc70435..64deda2a531 100644 --- a/addons/web_view_editor/i18n/es_DO.po +++ b/addons/web_view_editor/i18n/es_DO.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es_EC.po b/addons/web_view_editor/i18n/es_EC.po index abd8d3e589c..3f89494c916 100644 --- a/addons/web_view_editor/i18n/es_EC.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/es_MX.po b/addons/web_view_editor/i18n/es_MX.po index 9491b69966c..c188bbc60d4 100644 --- a/addons/web_view_editor/i18n/es_MX.po +++ b/addons/web_view_editor/i18n/es_MX.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/et.po b/addons/web_view_editor/i18n/et.po index 41710f16d9f..fdba024287f 100644 --- a/addons/web_view_editor/i18n/et.po +++ b/addons/web_view_editor/i18n/et.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/fa.po b/addons/web_view_editor/i18n/fa.po index bb52b7ff6df..8718ea851bd 100644 --- a/addons/web_view_editor/i18n/fa.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/fi.po b/addons/web_view_editor/i18n/fi.po index f063791474d..bc170a74ed1 100644 --- a/addons/web_view_editor/i18n/fi.po +++ b/addons/web_view_editor/i18n/fi.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/fr.po b/addons/web_view_editor/i18n/fr.po index e3fe2cac43a..8dc5d2b6177 100644 --- a/addons/web_view_editor/i18n/fr.po +++ b/addons/web_view_editor/i18n/fr.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/hr.po b/addons/web_view_editor/i18n/hr.po index 84af1b46823..64876fec642 100644 --- a/addons/web_view_editor/i18n/hr.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/hu.po b/addons/web_view_editor/i18n/hu.po index 483dac85ad0..1061622b59b 100644 --- a/addons/web_view_editor/i18n/hu.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/it.po b/addons/web_view_editor/i18n/it.po index b39494b476e..872803c8794 100644 --- a/addons/web_view_editor/i18n/it.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/ko.po b/addons/web_view_editor/i18n/ko.po index a7f8e10ddaf..8a7f987868f 100644 --- a/addons/web_view_editor/i18n/ko.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/lt.po b/addons/web_view_editor/i18n/lt.po index 89c8169d3f9..0428fc21c5d 100644 --- a/addons/web_view_editor/i18n/lt.po +++ b/addons/web_view_editor/i18n/lt.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/lv.po b/addons/web_view_editor/i18n/lv.po index 3decafb65f3..c8e4aa29c7a 100644 --- a/addons/web_view_editor/i18n/lv.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/mk.po b/addons/web_view_editor/i18n/mk.po index 38bd5f265fb..6ac0a82c4ea 100644 --- a/addons/web_view_editor/i18n/mk.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/mn.po b/addons/web_view_editor/i18n/mn.po index 154746d76d8..ca7304bd703 100644 --- a/addons/web_view_editor/i18n/mn.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/nb.po b/addons/web_view_editor/i18n/nb.po index 54bd969a63d..4d0c89e4705 100644 --- a/addons/web_view_editor/i18n/nb.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/nl.po b/addons/web_view_editor/i18n/nl.po index 517c42b43e1..17f8e7c4936 100644 --- a/addons/web_view_editor/i18n/nl.po +++ b/addons/web_view_editor/i18n/nl.po @@ -14,15 +14,15 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web #: code:addons/web_view_editor/static/src/js/view_editor.js:164 #, python-format msgid "The following fields are invalid :" -msgstr "De volgende velden zijn ongeldig." +msgstr "De volgende velden zijn ongeldig:" #. module: web_view_editor #. openerp-web @@ -129,7 +129,7 @@ msgstr "Kan huidige weergave declaratie niet vinden" #: code:addons/web_view_editor/static/src/js/view_editor.js:383 #, python-format msgid "Inherited View" -msgstr "Afgeleide weergave" +msgstr "Overerfde weergave" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/nl_BE.po b/addons/web_view_editor/i18n/nl_BE.po index bfc17eeb88d..4deecf749ed 100644 --- a/addons/web_view_editor/i18n/nl_BE.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/pl.po b/addons/web_view_editor/i18n/pl.po index 5ce1806f864..af34726d066 100644 --- a/addons/web_view_editor/i18n/pl.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/pt.po b/addons/web_view_editor/i18n/pt.po index fb1a7c1182e..8ad9acc134c 100644 --- a/addons/web_view_editor/i18n/pt.po +++ b/addons/web_view_editor/i18n/pt.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/pt_BR.po b/addons/web_view_editor/i18n/pt_BR.po index f77f1b87bbd..dae62f259bd 100644 --- a/addons/web_view_editor/i18n/pt_BR.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/ro.po b/addons/web_view_editor/i18n/ro.po index f531ae5eefd..7454d4b2f64 100644 --- a/addons/web_view_editor/i18n/ro.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/ru.po b/addons/web_view_editor/i18n/ru.po index 57c5bb293bf..06a8d4d6b20 100644 --- a/addons/web_view_editor/i18n/ru.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/sl.po b/addons/web_view_editor/i18n/sl.po index 881a019fe3f..58dd7246778 100644 --- a/addons/web_view_editor/i18n/sl.po +++ b/addons/web_view_editor/i18n/sl.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/sv.po b/addons/web_view_editor/i18n/sv.po index a02a86921b4..8042664038a 100644 --- a/addons/web_view_editor/i18n/sv.po +++ b/addons/web_view_editor/i18n/sv.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/th.po b/addons/web_view_editor/i18n/th.po index 2e946eaf255..33cc5bea310 100644 --- a/addons/web_view_editor/i18n/th.po +++ b/addons/web_view_editor/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/tr.po b/addons/web_view_editor/i18n/tr.po index 2f577626743..eee6fcff8ff 100644 --- a/addons/web_view_editor/i18n/tr.po +++ b/addons/web_view_editor/i18n/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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web diff --git a/addons/web_view_editor/i18n/zh_CN.po b/addons/web_view_editor/i18n/zh_CN.po index 1af07c98dd3..141c3af0abf 100644 --- a/addons/web_view_editor/i18n/zh_CN.po +++ b/addons/web_view_editor/i18n/zh_CN.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: 2013-11-21 05:28+0000\n" -"X-Generator: Launchpad (build 16831)\n" +"X-Launchpad-Export-Date: 2013-11-30 05:14+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: web_view_editor #. openerp-web From dfd010e48dadc3f301ee35e3d855e092527d886f Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Mon, 2 Dec 2013 05:23:51 +0000 Subject: [PATCH 082/171] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20131202052351-icrqefhleb8262tv --- addons/account/i18n/zh_TW.po | 12 +- addons/account_voucher/i18n/fi.po | 1283 ++++++++++++++++++++++++++++ addons/portal_anonymous/i18n/fi.po | 25 + addons/portal_claim/i18n/fi.po | 36 + addons/portal_crm/i18n/fi.po | 548 ++++++++++++ 5 files changed, 1898 insertions(+), 6 deletions(-) create mode 100644 addons/account_voucher/i18n/fi.po create mode 100644 addons/portal_anonymous/i18n/fi.po create mode 100644 addons/portal_claim/i18n/fi.po create mode 100644 addons/portal_crm/i18n/fi.po diff --git a/addons/account/i18n/zh_TW.po b/addons/account/i18n/zh_TW.po index 55362cf55a0..f6ab25cbc72 100644 --- a/addons/account/i18n/zh_TW.po +++ b/addons/account/i18n/zh_TW.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: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2012-08-21 06:06+0000\n" -"Last-Translator: Boyce Huang \n" +"PO-Revision-Date: 2013-12-01 17:16+0000\n" +"Last-Translator: Andy Cheng \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: 2013-09-12 05:37+0000\n" -"X-Generator: Launchpad (build 16761)\n" +"X-Launchpad-Export-Date: 2013-12-02 05:23+0000\n" +"X-Generator: Launchpad (build 16856)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -32,12 +32,12 @@ msgstr "在相同會計科目中,只能設定一次科目財務狀況。" msgid "" "Determine the display order in the report 'Accounting \\ Reporting \\ " "Generic Reporting \\ Taxes \\ Taxes Report'" -msgstr "確定以下報表的顯示順序:」會計-報表-通用報表-稅-稅報表「" +msgstr "確定以下報表的顯示順序:「會計 \\ 報表 \\ 通用報表 \\ 稅 \\ 稅報表」" #. module: account #: view:account.move.reconcile:0 msgid "Journal Entry Reconcile" -msgstr "日記帳分錄調節" +msgstr "帳簿分錄調節" #. module: account #: view:account.account:0 diff --git a/addons/account_voucher/i18n/fi.po b/addons/account_voucher/i18n/fi.po new file mode 100644 index 00000000000..b3542ed0ab6 --- /dev/null +++ b/addons/account_voucher/i18n/fi.po @@ -0,0 +1,1283 @@ +# Finnish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-12-01 22:00+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-12-02 05:23+0000\n" +"X-Generator: Launchpad (build 16856)\n" + +#. module: account_voucher +#: field:account.bank.statement.line,voucher_id:0 +msgid "Reconciliation" +msgstr "Täsmäytys" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_account_config_settings +msgid "account.config.settings" +msgstr "account.config.settings" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:417 +#, python-format +msgid "Write-Off" +msgstr "Alaskirjaus" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Payment Ref" +msgstr "Maksuviite" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Total Amount" +msgstr "Kokonaisarvo" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Open Customer Journal Entries" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: view:sale.receipt.report:0 +msgid "Group By..." +msgstr "Ryhmittely..." + +#. module: account_voucher +#: help:account.voucher,writeoff_amount:0 +msgid "" +"Computed as the difference between the amount stated in the voucher and the " +"sum of allocation on the voucher lines." +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "(Update)" +msgstr "(Päivitys)" + +#. module: account_voucher +#: view:account.voucher:0 +#: model:ir.actions.act_window,name:account_voucher.act_pay_bills +msgid "Bill Payment" +msgstr "" + +#. module: account_voucher +#: view:account.statement.from.invoice.lines:0 +#: model:ir.actions.act_window,name:account_voucher.action_view_account_statement_from_invoice_lines +msgid "Import Entries" +msgstr "Tuo kirjaukset" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Voucher Entry" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "March" +msgstr "Maaliskuu" + +#. module: account_voucher +#: field:account.voucher,message_unread:0 +msgid "Unread Messages" +msgstr "Lukemattomia viestejä" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Pay Bill" +msgstr "Maksa lasku" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Are you sure you want to cancel this receipt?" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Set to Draft" +msgstr "Aseta ehdotukseksi" + +#. module: account_voucher +#: help:account.voucher,reference:0 +msgid "Transaction reference number." +msgstr "Tapahtuman referenssinumero" + +#. module: account_voucher +#: view:sale.receipt.report:0 +msgid "Group by year of Invoice Date" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,user_id:0 +msgid "Salesperson" +msgstr "Myyjä" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Voucher Statistics" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1641 +#, python-format +msgid "" +"You can not change the journal as you already reconciled some statement " +"lines!" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Validate" +msgstr "Vahvista" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_vendor_payment +#: model:ir.ui.menu,name:account_voucher.menu_action_vendor_payment +msgid "Supplier Payments" +msgstr "Ostot" + +#. module: account_voucher +#: model:ir.actions.act_window,help:account_voucher.action_purchase_receipt +msgid "" +"

\n" +" Click to register a purchase receipt. \n" +"

\n" +" When the purchase receipt is confirmed, you can record the\n" +" supplier payment related to this purchase receipt.\n" +"

\n" +" " +msgstr "" +"

\n" +" Klikkaa rekisteröidäksesi ostokuitin.\n" +"

\n" +" Kun ostokuitti on vahvistettu, voit kirjata toimittajalle\n" +" tähän ostokuittiin liittyvän maksun.\n" +"

\n" +" " + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Search Vouchers" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,writeoff_acc_id:0 +msgid "Counterpart Account" +msgstr "Vastatili" + +#. module: account_voucher +#: field:account.voucher,account_id:0 +#: field:account.voucher.line,account_id:0 +#: field:sale.receipt.report,account_id:0 +msgid "Account" +msgstr "Tili" + +#. module: account_voucher +#: field:account.voucher,line_dr_ids:0 +msgid "Debits" +msgstr "" + +#. module: account_voucher +#: view:account.statement.from.invoice.lines:0 +msgid "Ok" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,reconcile:0 +msgid "Full Reconcile" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,date_due:0 +#: field:account.voucher.line,date_due:0 +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,date_due:0 +msgid "Due Date" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,narration:0 +msgid "Notes" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_purchase_receipt +#: model:ir.ui.menu,name:account_voucher.menu_action_purchase_receipt +msgid "Purchase Receipts" +msgstr "Ostokuitit" + +#. module: account_voucher +#: field:account.voucher.line,move_line_id:0 +msgid "Journal Item" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:558 +#: code:addons/account_voucher/account_voucher.py:1073 +#, python-format +msgid "Error!" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,amount:0 +msgid "Amount" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Payment Options" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Other Information" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,state:0 +#: selection:sale.receipt.report,state:0 +msgid "Cancelled" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1249 +#, python-format +msgid "" +"You have to configure account base code and account tax code on the '%s' tax!" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,help:account_voucher.action_sale_receipt +msgid "" +"

\n" +" Click to create a sale receipt.\n" +"

\n" +" When the sale receipt is confirmed, you can record the " +"customer\n" +" payment related to this sales receipt.\n" +"

\n" +" " +msgstr "" +"

\n" +" Klikkaa luodaksesi myyntikuitin.\n" +"

\n" +" Kun myyntikuitti on vahvistettu, voit kirjata asiakkaan\n" +" tähän kuittin littyvän suorituksen.\n" +"

\n" +" " + +#. module: account_voucher +#: help:account.voucher,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,day:0 +msgid "Day" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,tax_id:0 +msgid "Tax" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:971 +#, python-format +msgid "Invalid Action!" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,comment:0 +msgid "Counterpart Comment" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,account_analytic_id:0 +msgid "Analytic Account" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Total Allocation" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Payment Information" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "(update)" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: selection:account.voucher,state:0 +#: view:sale.receipt.report:0 +#: selection:sale.receipt.report,state:0 +msgid "Draft" +msgstr "" + +#. module: account_voucher +#: view:account.bank.statement:0 +msgid "Import Invoices" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1208 +#, python-format +msgid "Wrong voucher line" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,pay_now:0 +#: selection:sale.receipt.report,pay_now:0 +msgid "Pay Later or Group Funds" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: selection:account.voucher,type:0 +#: selection:sale.receipt.report,type:0 +msgid "Receipt" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1110 +#, python-format +msgid "" +"You should configure the 'Gain Exchange Rate Account' in the accounting " +"settings, to manage automatically the booking of accounting entries related " +"to differences between exchange rates." +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Sales Lines" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,period_id:0 +msgid "Period" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: code:addons/account_voucher/account_voucher.py:231 +#, python-format +msgid "Supplier" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Supplier Voucher" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher.line,type:0 +msgid "Debit" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1641 +#, python-format +msgid "Unable to change journal !" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,nbr:0 +msgid "# of Voucher Lines" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,type:0 +msgid "Type" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +msgid "Pro-forma Vouchers" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: model:ir.actions.act_window,name:account_voucher.act_journal_voucher_open +msgid "Voucher Entries" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,help:account_voucher.action_vendor_payment +msgid "" +"

\n" +" Click to create a new supplier payment.\n" +"

\n" +" OpenERP helps you easily track payments you make and the " +"remaining balances you need to pay your suppliers.\n" +"

\n" +" " +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Open Supplier Journal Entries" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_review_voucher_list +msgid "Vouchers Entries" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,name:0 +msgid "Memo" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Are you sure to unreconcile and cancel this record ?" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,is_multi_currency:0 +msgid "Multi Currency Voucher" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Bill Information" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "July" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,state:0 +msgid "" +" * The 'Draft' status is used when a user is encoding a new and unconfirmed " +"Voucher. \n" +"* The 'Pro-forma' when voucher is in Pro-forma status,voucher does not have " +"an voucher number. \n" +"* The 'Posted' status is used when user create voucher,a voucher number is " +"generated and voucher entries are created in account " +"\n" +"* The 'Cancelled' status is used when user cancel voucher." +msgstr "" + +#. module: account_voucher +#: field:account.voucher,writeoff_amount:0 +msgid "Difference Amount" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,due_delay:0 +msgid "Avg. Due Delay" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/invoice.py:34 +#, python-format +msgid "Pay Invoice" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1249 +#, python-format +msgid "No Account Base Code and Account Tax Code!" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,tax_amount:0 +msgid "Tax Amount" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +msgid "Validated Vouchers" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,help:account_voucher.action_vendor_receipt +msgid "" +"

\n" +" Click to register a new payment. \n" +"

\n" +" Enter the customer and the payment method and then, either\n" +" create manually a payment record or OpenERP will propose to " +"you\n" +" automatically the reconciliation of this payment with the " +"open\n" +" invoices or sales receipts.\n" +"

\n" +" " +msgstr "" +"

\n" +" Klikkaa rekisteröidäksesi uuden maksusuorituksen.\n" +"

\n" +" Anna asikas ja maksumenetelmä ja sen jälkeen, joko luo \n" +" manauaalisesti maksutietue tai OpenERP ehdottaa sinulle \n" +" automaattisesti tämän maksun täsmäytystä avoimien laskujen \n" +" tai myyntikuittien kanssa.\n" +"

\n" +" " + +#. module: account_voucher +#: field:account.config.settings,expense_currency_exchange_account_id:0 +#: field:res.company,expense_currency_exchange_account_id:0 +msgid "Loss Exchange Rate Account" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Paid Amount" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,payment_option:0 +msgid "Payment Difference" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,audit:0 +msgid "To Review" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1120 +#: code:addons/account_voucher/account_voucher.py:1134 +#: code:addons/account_voucher/account_voucher.py:1286 +#, python-format +msgid "change" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1106 +#, python-format +msgid "" +"You should configure the 'Loss Exchange Rate Account' in the accounting " +"settings, to manage automatically the booking of accounting entries related " +"to differences between exchange rates." +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Expense Lines" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Sale voucher" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,is_multi_currency:0 +msgid "" +"Fields with internal purpose only that depicts if the voucher is a multi " +"currency one or not" +msgstr "" + +#. module: account_voucher +#: view:account.invoice:0 +msgid "Register Payment" +msgstr "" + +#. module: account_voucher +#: field:account.statement.from.invoice.lines,line_ids:0 +msgid "Invoices" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "December" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +msgid "Group by month of Invoice Date" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,month:0 +msgid "Month" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,currency_id:0 +#: field:account.voucher.line,currency_id:0 +#: model:ir.model,name:account_voucher.model_res_currency +#: field:sale.receipt.report,currency_id:0 +msgid "Currency" +msgstr "" + +#. module: account_voucher +#: view:account.statement.from.invoice.lines:0 +msgid "Payable and Receivables" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Voucher Payment" +msgstr "" + +#. module: account_voucher +#: field:sale.receipt.report,state:0 +msgid "Voucher Status" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Are you sure to unreconcile this record?" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,company_id:0 +#: field:account.voucher.line,company_id:0 +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,paid:0 +msgid "The Voucher has been totally paid." +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,payment_option:0 +msgid "Reconcile Payment Balance" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1067 +#, python-format +msgid "Configuration Error !" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: view:sale.receipt.report:0 +msgid "Draft Vouchers" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,price_total_tax:0 +msgid "Total With Tax" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Purchase Voucher" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,state:0 +#: view:sale.receipt.report:0 +msgid "Status" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Allocation" +msgstr "" + +#. module: account_voucher +#: view:account.statement.from.invoice.lines:0 +#: view:account.voucher:0 +msgid "or" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "August" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Validate Payment" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,audit:0 +msgid "" +"Check this box if you are unsure of that journal entry and if you want to " +"note it as 'to be reviewed' by an accounting expert." +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "October" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1068 +#, python-format +msgid "Please activate the sequence of selected journal !" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "June" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,payment_rate_currency_id:0 +msgid "Payment Rate Currency" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,paid:0 +msgid "Paid" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_sale_receipt +#: model:ir.ui.menu,name:account_voucher.menu_action_sale_receipt +msgid "Sales Receipts" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,analytic_id:0 +msgid "Write-Off Analytic Account" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,date:0 +#: field:account.voucher.line,date_original:0 +#: field:sale.receipt.report,date:0 +msgid "Date" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "November" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: account_voucher +#: field:account.voucher,paid_amount_in_company_currency:0 +msgid "Paid Amount in Company Currency" +msgstr "" + +#. module: account_voucher +#: field:account.bank.statement.line,amount_reconciled:0 +msgid "Amount reconciled" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,pay_now:0 +#: selection:sale.receipt.report,pay_now:0 +msgid "Pay Directly" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,type:0 +msgid "Dr/Cr" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,pre_line:0 +msgid "Previous Payments ?" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1208 +#, python-format +msgid "The invoice you are willing to pay is not valid anymore." +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "January" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_voucher_list +#: model:ir.ui.menu,name:account_voucher.menu_encode_entries_by_voucher +msgid "Journal Vouchers" +msgstr "" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_res_company +msgid "Companies" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,active:0 +msgid "Active" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1074 +#, python-format +msgid "Please define a sequence on the journal." +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.act_pay_voucher +#: model:ir.actions.act_window,name:account_voucher.action_vendor_receipt +#: model:ir.ui.menu,name:account_voucher.menu_action_vendor_receipt +msgid "Customer Payments" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,name:account_voucher.action_sale_receipt_report_all +#: model:ir.ui.menu,name:account_voucher.menu_action_sale_receipt_report_all +#: view:sale.receipt.report:0 +msgid "Sales Receipts Analysis" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +msgid "Group by Invoice Date" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Post" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Invoices and outstanding transactions" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,price_total:0 +msgid "Total Without Tax" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Bill Date" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Unreconcile" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: model:ir.model,name:account_voucher.model_account_voucher +msgid "Accounting Voucher" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,number:0 +msgid "Number" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher.line,type:0 +msgid "Credit" +msgstr "" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: account_voucher +#: view:account.bank.statement:0 +msgid "onchange_amount(amount)" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "September" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Sales Information" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher.line,voucher_id:0 +#: model:res.request.link,name:account_voucher.req_link_voucher +msgid "Voucher" +msgstr "" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_account_invoice +msgid "Invoice" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Voucher Items" +msgstr "" + +#. module: account_voucher +#: view:account.statement.from.invoice.lines:0 +#: view:account.voucher:0 +msgid "Cancel" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.client,name:account_voucher.action_client_invoice_menu +msgid "Open Invoicing Menu" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,state:0 +#: view:sale.receipt.report:0 +#: selection:sale.receipt.report,state:0 +msgid "Pro-forma" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,move_ids:0 +msgid "Journal Items" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:558 +#, python-format +msgid "Please define default credit/debit accounts on the journal \"%s\"." +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,type:0 +#: selection:sale.receipt.report,type:0 +msgid "Purchase" +msgstr "" + +#. module: account_voucher +#: view:account.invoice:0 +#: view:account.voucher:0 +msgid "Pay" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Currency Options" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,payment_option:0 +msgid "" +"This field helps you to choose what you want to do with the eventual " +"difference between the paid amount and the sum of allocated amounts. You can " +"either choose to keep open this difference on the partner's account, or " +"reconcile it with the payment(s)" +msgstr "" + +#. module: account_voucher +#: model:ir.actions.act_window,help:account_voucher.action_sale_receipt_report_all +msgid "" +"

\n" +" From this report, you can have an overview of the amount " +"invoiced\n" +" to your customer as well as payment delays. The tool search can\n" +" also be used to personalise your Invoices reports and so, match\n" +" this analysis to your needs.\n" +"

\n" +" " +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Posted Vouchers" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,payment_rate:0 +msgid "Exchange Rate" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Payment Method" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,name:0 +msgid "Description" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "May" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Sale Receipt" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,journal_id:0 +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,journal_id:0 +msgid "Journal" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Internal Notes" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,line_cr_ids:0 +msgid "Credits" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,amount_original:0 +msgid "Original Amount" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Purchase Receipt" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,payment_rate:0 +msgid "" +"The specific rate that will be used, in this voucher, between the selected " +"currency (in 'Payment Rate Currency' field) and the voucher currency." +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,pay_now:0 +#: selection:account.voucher,type:0 +#: field:sale.receipt.report,pay_now:0 +#: selection:sale.receipt.report,type:0 +msgid "Payment" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: selection:account.voucher,state:0 +#: view:sale.receipt.report:0 +#: selection:sale.receipt.report,state:0 +msgid "Posted" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Customer" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "February" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +msgid "Supplier Invoices and Outstanding transactions" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,reference:0 +msgid "Ref #" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,year:0 +msgid "Year" +msgstr "" + +#. module: account_voucher +#: field:account.config.settings,income_currency_exchange_account_id:0 +#: field:res.company,income_currency_exchange_account_id:0 +msgid "Gain Exchange Rate Account" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,type:0 +#: selection:sale.receipt.report,type:0 +msgid "Sale" +msgstr "" + +#. module: account_voucher +#: selection:sale.receipt.report,month:0 +msgid "April" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,tax_id:0 +msgid "Only for tax excluded from price" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,type:0 +msgid "Default Type" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_account_statement_from_invoice_lines +msgid "Entries by Statement from Invoices" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,amount:0 +msgid "Total" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,move_id:0 +msgid "Account Entry" +msgstr "" + +#. module: account_voucher +#: constraint:account.bank.statement.line:0 +msgid "" +"The amount of the voucher must be the same amount as the one on the " +"statement line." +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:971 +#, python-format +msgid "Cannot delete voucher(s) which are already opened or paid." +msgstr "" + +#. module: account_voucher +#: help:account.voucher,date:0 +msgid "Effective date for accounting entries" +msgstr "" + +#. module: account_voucher +#: model:mail.message.subtype,name:account_voucher.mt_voucher_state_change +msgid "Status Change" +msgstr "" + +#. module: account_voucher +#: selection:account.voucher,payment_option:0 +msgid "Keep Open" +msgstr "" + +#. module: account_voucher +#: field:account.voucher,line_ids:0 +#: view:account.voucher.line:0 +#: model:ir.model,name:account_voucher.model_account_voucher_line +msgid "Voucher Lines" +msgstr "" + +#. module: account_voucher +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,delay_to_pay:0 +msgid "Avg. Delay To Pay" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,untax_amount:0 +msgid "Untax Amount" +msgstr "" + +#. module: account_voucher +#: model:ir.model,name:account_voucher.model_sale_receipt_report +msgid "Sales Receipt Statistics" +msgstr "" + +#. module: account_voucher +#: view:account.voucher:0 +#: field:account.voucher,partner_id:0 +#: field:account.voucher.line,partner_id:0 +#: view:sale.receipt.report:0 +#: field:sale.receipt.report,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: account_voucher +#: field:account.voucher.line,amount_unreconciled:0 +msgid "Open Balance" +msgstr "" + +#. module: account_voucher +#: model:mail.message.subtype,description:account_voucher.mt_voucher_state_change +msgid "Status changed" +msgstr "" + +#. module: account_voucher +#: code:addons/account_voucher/account_voucher.py:1106 +#: code:addons/account_voucher/account_voucher.py:1110 +#, python-format +msgid "Insufficient Configuration!" +msgstr "" + +#. module: account_voucher +#: help:account.voucher,active:0 +msgid "" +"By default, reconciliation vouchers made on draft bank statements are set as " +"inactive, which allow to hide the customer/supplier payment while the bank " +"statement isn't confirmed." +msgstr "" diff --git a/addons/portal_anonymous/i18n/fi.po b/addons/portal_anonymous/i18n/fi.po new file mode 100644 index 00000000000..7aa99c2f05e --- /dev/null +++ b/addons/portal_anonymous/i18n/fi.po @@ -0,0 +1,25 @@ +# Finnish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-12-01 22:23+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-12-02 05:23+0000\n" +"X-Generator: Launchpad (build 16856)\n" + +#. module: portal_anonymous +#. openerp-web +#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8 +#, python-format +msgid "Login" +msgstr "Kirjautuminen" diff --git a/addons/portal_claim/i18n/fi.po b/addons/portal_claim/i18n/fi.po new file mode 100644 index 00000000000..fbad5bedaf0 --- /dev/null +++ b/addons/portal_claim/i18n/fi.po @@ -0,0 +1,36 @@ +# Finnish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-12-01 22:24+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-12-02 05:23+0000\n" +"X-Generator: Launchpad (build 16856)\n" + +#. module: portal_claim +#: model:ir.actions.act_window,help:portal_claim.crm_case_categ_claim0 +msgid "" +"

\n" +" Click to register a new claim. \n" +"

\n" +" You can track your claims from this menu and the action we\n" +" will take.\n" +"

\n" +" " +msgstr "" + +#. module: portal_claim +#: model:ir.actions.act_window,name:portal_claim.crm_case_categ_claim0 +#: model:ir.ui.menu,name:portal_claim.portal_after_sales_claims +msgid "Claims" +msgstr "Reklamaatiot" diff --git a/addons/portal_crm/i18n/fi.po b/addons/portal_crm/i18n/fi.po new file mode 100644 index 00000000000..ed8c3a72160 --- /dev/null +++ b/addons/portal_crm/i18n/fi.po @@ -0,0 +1,548 @@ +# Finnish translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-12-01 22:26+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-12-02 05:23+0000\n" +"X-Generator: Launchpad (build 16856)\n" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Lead" +msgstr "Liidi" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,title:0 +msgid "Title" +msgstr "Titteli" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,probability:0 +msgid "Success Rate (%)" +msgstr "Onnistumistodennäköisyys (%)" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact us" +msgstr "Ota yhteyttä" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action:0 +msgid "Next Action Date" +msgstr "Seuraava toimenpidepäivä" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,fax:0 +msgid "Fax" +msgstr "Faksi" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,zip:0 +msgid "Zip" +msgstr "Postinumero" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_unread:0 +msgid "Unread Messages" +msgstr "Lukemattomia viestejä" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_id:0 +msgid "Company" +msgstr "Yritys" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_open:0 +msgid "Days to Open" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you for your interest, we'll respond to your request shortly." +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Highest" +msgstr "Korkein" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,mobile:0 +msgid "Mobile" +msgstr "Matkapuhelin" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,description:0 +msgid "Notes" +msgstr "Muistiinpanot" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages" +msgstr "Viestit" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,color:0 +msgid "Color Index" +msgstr "Väri-indeksi" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_latitude:0 +msgid "Geo Latitude" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_name:0 +msgid "Customer Name" +msgstr "Asiakkaan nimi" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Cancelled" +msgstr "Peruttu" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "Jos valittu, uudet viestit vaativat huomiosi." + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,channel_id:0 +msgid "Communication channel (mail, direct, phone, ...)" +msgstr "Kommunikointikanava (sähköposti, suora, puhelin,...)" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type_id:0 +msgid "Campaign" +msgstr "Kampanja" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref:0 +msgid "Reference" +msgstr "Viite" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_next:0 +#: field:portal_crm.crm_contact_us,title_action:0 +msgid "Next Action" +msgstr "Seuraava toimenpide" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" +"Sisältää viestien yhteenvedon (viestien määrän,...). Tämä yhteenveto on " +"valmiiksi html-muodossa, jotta se voidaan viedä kanban näkymään." + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_id:0 +msgid "Partner" +msgstr "Kumppani" + +#. module: portal_crm +#: model:ir.actions.act_window,name:portal_crm.action_contact_us +msgid "Contact Us" +msgstr "Ota yhteyttä" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,name:0 +msgid "Subject" +msgstr "Aihe" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,opt_out:0 +msgid "Opt-Out" +msgstr "Jätä pois" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,priority:0 +msgid "Priority" +msgstr "Tärkeys" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state_id:0 +msgid "State" +msgstr "Valtio" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_follower_ids:0 +msgid "Followers" +msgstr "Seuraajat" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_id:0 +msgid "Linked partner (optional). Usually created when converting the lead." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,payment_mode:0 +msgid "Payment Mode" +msgstr "Maksutapa" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "New" +msgstr "Uusi" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type:0 +msgid "Type" +msgstr "Tyyppi" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_from:0 +msgid "Email" +msgstr "Sähköposti" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,channel_id:0 +msgid "Channel" +msgstr "Kanava" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Name" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Lowest" +msgstr "Alin" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,create_date:0 +msgid "Creation Date" +msgstr "Luontipäivä" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Close" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Pending" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type:0 +msgid "Type is used to separate Leads and Opportunities" +msgstr "Tyyppiä käytetään erottamaan liidit ja mahdollisuudet toisistaan" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,categ_ids:0 +msgid "Categories" +msgstr "Kategoriat" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,stage_id:0 +msgid "Stage" +msgstr "Vaihe" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_login:0 +msgid "User Login" +msgstr "Käyttäjätunnus" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,opt_out:0 +msgid "" +"If opt-out is checked, this contact has refused to receive emails or " +"unsubscribed to a campaign." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,contact_name:0 +msgid "Contact Name" +msgstr "Yhteystiedon nimi" + +#. module: portal_crm +#: model:ir.ui.menu,name:portal_crm.portal_company_contact +msgid "Contact" +msgstr "Kontakti" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_email:0 +msgid "Partner Contact Email" +msgstr "Kumppanin yhteystieto, sähköposti" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_revenue:0 +msgid "Expected Revenue" +msgstr "Odotetut tulot" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,task_ids:0 +msgid "Tasks" +msgstr "Tehtävät" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact form" +msgstr "Yhteydenottolomake" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_currency:0 +msgid "Currency" +msgstr "Valuutta" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,write_date:0 +msgid "Update Date" +msgstr "Päivityksen ajankohta" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_deadline:0 +msgid "Expected Closing" +msgstr "Odotettu päätös" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref2:0 +msgid "Reference 2" +msgstr "Viittaus 2" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_email:0 +msgid "User Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_open:0 +msgid "Opened" +msgstr "Avattu" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "In Progress" +msgstr "Kesken" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_name:0 +msgid "" +"The name of the future partner company that will be created while converting " +"the lead into opportunity" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_cost:0 +msgid "Planned Costs" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_deadline:0 +msgid "Estimate of the date on which the opportunity will be won." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Low" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_closed:0 +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Closed" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_assign:0 +msgid "Assignation Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state:0 +msgid "Status" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Normal" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_cc:0 +msgid "Global CC" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street2:0 +msgid "Street2" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,id:0 +msgid "ID" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,phone:0 +msgid "Phone" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,active:0 +msgid "Active" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_id:0 +msgid "Salesperson" +msgstr "Myyjä" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_close:0 +msgid "Days to Close" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_ids:0 +msgid "Companies" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,section_id:0 +msgid "" +"When sending mails, the default email address is taken from the sales team." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_name:0 +msgid "Partner Contact Name" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_longitude:0 +msgid "Geo Longitude" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_assign:0 +msgid "Last date this case was forwarded/assigned to a partner" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_from:0 +msgid "Email address of the contact" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,city:0 +msgid "City" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Submit" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,function:0 +msgid "Function" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,referred:0 +msgid "Referred By" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Assigned Partner" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Opportunity" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Partner this case has been forwarded/assigned to." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,country_id:0 +msgid "Country" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,state:0 +msgid "" +"The Status is set to 'Draft', when a case is created. If the case is in " +"progress the Status is set to 'Open'. When the case is over, the Status is " +"set to 'Done'. If the case needs to be reviewed then the Status is set to " +"'Pending'." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type_id:0 +msgid "" +"From which campaign (seminar, marketing campaign, mass mailing, ...) did " +"this contact come from?" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "High" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,section_id:0 +msgid "Sales Team" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street:0 +msgid "Street" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_last:0 +msgid "Last Action" +msgstr "" + +#. module: portal_crm +#: model:ir.model,name:portal_crm.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "" From d6c6f31231070213bfabf0afdadc7a45d6fd626a Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Mon, 2 Dec 2013 14:19:43 +0100 Subject: [PATCH 083/171] [MERGE] boostrap3 manually merged bzr revid: al@openerp.com-20131202131943-b01fb56u0qsgcs53 --- addons/web/__openerp__.py | 2 +- .../lib/bootstrap/css/bootstrap-theme.css | 459 ++ .../static/lib/bootstrap/css/bootstrap.css | 7098 +++++++++++++++++ .../web/static/lib/bootstrap/js/bootstrap.js | 2002 +++++ addons/web/static/src/css/base.css | 368 +- addons/web/static/src/css/base.sass | 287 +- addons/web/static/src/css/data_export.css | 5 + addons/web/static/src/js/chrome.js | 24 +- addons/web/static/src/xml/base.xml | 44 +- .../static/src/css/web_calendar.css | 21 + .../static/src/css/web_calendar.sass | 14 + 11 files changed, 10090 insertions(+), 234 deletions(-) create mode 100644 addons/web/static/lib/bootstrap/css/bootstrap-theme.css create mode 100644 addons/web/static/lib/bootstrap/css/bootstrap.css create mode 100644 addons/web/static/lib/bootstrap/js/bootstrap.js diff --git a/addons/web/__openerp__.py b/addons/web/__openerp__.py index bb9fcaa0dbd..7c0b303061e 100644 --- a/addons/web/__openerp__.py +++ b/addons/web/__openerp__.py @@ -66,6 +66,7 @@ This module provides the core of the OpenERP Web Client. "static/lib/jquery.tipsy/tipsy.css", "static/lib/jquery.textext/jquery.textext.css", "static/lib/fontawesome/css/font-awesome.css", + "static/lib/bootstrap/css/bootstrap.css", "static/src/css/base.css", "static/src/css/data_export.css", "static/lib/cleditor/jquery.cleditor.css", @@ -89,5 +90,4 @@ This module provides the core of the OpenERP Web Client. "static/test/list-editable.js", "static/test/mutex.js" ], - 'bootstrap': True, } diff --git a/addons/web/static/lib/bootstrap/css/bootstrap-theme.css b/addons/web/static/lib/bootstrap/css/bootstrap-theme.css new file mode 100644 index 00000000000..c9c347e4160 --- /dev/null +++ b/addons/web/static/lib/bootstrap/css/bootstrap-theme.css @@ -0,0 +1,459 @@ +/*! + * Bootstrap v3.0.2 by @fat and @mdo + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn:active, +.btn.active { + background-image: none; +} + +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e0e0e0)); + background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} + +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} + +.btn-primary { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#2d6ca2)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); + background-repeat: repeat-x; + border-color: #2b669a; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus { + background-color: #2d6ca2; + background-position: 0 -15px; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #2d6ca2; + border-color: #2b669a; +} + +.btn-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#419641)); + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + background-repeat: repeat-x; + border-color: #3e8f3e; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} + +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} + +.btn-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#eb9316)); + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + background-repeat: repeat-x; + border-color: #e38d13; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} + +.btn-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c12e2a)); + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + background-repeat: repeat-x; + border-color: #b92c28; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} + +.btn-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#2aabd2)); + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + background-repeat: repeat-x; + border-color: #28a4c9; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} + +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} + +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.navbar-default { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8)); + background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%); + background-repeat: repeat-x; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); +} + +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f3f3f3)); + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); + background-image: -moz-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075); +} + +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.navbar-inverse { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222)); + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%); + background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#222222), to(#282828)); + background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%); + background-image: -moz-linear-gradient(top, #222222 0%, #282828 100%); + background-image: linear-gradient(to bottom, #222222 0%, #282828 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.alert-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc)); + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + background-repeat: repeat-x; + border-color: #b2dba1; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); +} + +.alert-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0)); + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + background-repeat: repeat-x; + border-color: #9acfea; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); +} + +.alert-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0)); + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + background-repeat: repeat-x; + border-color: #f5e79e; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); +} + +.alert-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3)); + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + background-repeat: repeat-x; + border-color: #dca7a7; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); +} + +.progress { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); +} + +.progress-bar { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.progress-bar-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.progress-bar-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.progress-bar-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.progress-bar-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + background-repeat: repeat-x; + border-color: #3278b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); +} + +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.panel-default > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.panel-primary > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.panel-success > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6)); + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); +} + +.panel-info > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3)); + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); +} + +.panel-warning > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc)); + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); +} + +.panel-danger > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc)); + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); +} + +.well { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + background-repeat: repeat-x; + border-color: #dcdcdc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); +} \ No newline at end of file diff --git a/addons/web/static/lib/bootstrap/css/bootstrap.css b/addons/web/static/lib/bootstrap/css/bootstrap.css new file mode 100644 index 00000000000..6aef1f6fd65 --- /dev/null +++ b/addons/web/static/lib/bootstrap/css/bootstrap.css @@ -0,0 +1,7098 @@ +/*! + * Bootstrap v3.0.2 by @fat and @mdo + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden], +template { + display: none; +} + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +a { + background: transparent; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + outline: 0; +} + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +mark { + color: #000; + background: #ff0; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +pre { + white-space: pre-wrap; +} + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} + +button, +input { + line-height: normal; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; + box-sizing: border-box; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +a { + color: #428bca; + text-decoration: none; +} + +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + height: auto; + max-width: 100%; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 200; + line-height: 1.4; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small, +.small { + font-size: 85%; +} + +cite { + font-style: normal; +} + +.text-muted { + color: #999999; +} + +.text-primary { + color: #428bca; +} + +.text-primary:hover { + color: #3071a9; +} + +.text-warning { + color: #c09853; +} + +.text-warning:hover { + color: #a47e3c; +} + +.text-danger { + color: #b94a48; +} + +.text-danger:hover { + color: #953b39; +} + +.text-success { + color: #468847; +} + +.text-success:hover { + color: #356635; +} + +.text-info { + color: #3a87ad; +} + +.text-info:hover { + color: #2d6987; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; + color: inherit; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h1 small, +h2 small, +h3 small, +h1 .small, +h2 .small, +h3 .small { + font-size: 65%; +} + +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +h4 small, +h5 small, +h6 small, +h4 .small, +h5 .small, +h6 .small { + font-size: 75%; +} + +h1, +.h1 { + font-size: 36px; +} + +h2, +.h2 { + font-size: 30px; +} + +h3, +.h3 { + font-size: 24px; +} + +h4, +.h4 { + font-size: 18px; +} + +h5, +.h5 { + font-size: 14px; +} + +h6, +.h6 { + font-size: 12px; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} + +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +.list-inline > li:first-child { + padding-left: 0; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 0; +} + +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote p:last-child { + margin-bottom: 0; +} + +blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small, +blockquote.pull-right .small { + text-align: right; +} + +blockquote.pull-right small:before, +blockquote.pull-right .small:before { + content: ''; +} + +blockquote.pull-right small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} + +blockquote:before, +blockquote:after { + content: ""; +} + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +kbd, +pre, +samp { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.col-xs-1, +.col-sm-1, +.col-md-1, +.col-lg-1, +.col-xs-2, +.col-sm-2, +.col-md-2, +.col-lg-2, +.col-xs-3, +.col-sm-3, +.col-md-3, +.col-lg-3, +.col-xs-4, +.col-sm-4, +.col-md-4, +.col-lg-4, +.col-xs-5, +.col-sm-5, +.col-md-5, +.col-lg-5, +.col-xs-6, +.col-sm-6, +.col-md-6, +.col-lg-6, +.col-xs-7, +.col-sm-7, +.col-md-7, +.col-lg-7, +.col-xs-8, +.col-sm-8, +.col-md-8, +.col-lg-8, +.col-xs-9, +.col-sm-9, +.col-md-9, +.col-lg-9, +.col-xs-10, +.col-sm-10, +.col-md-10, +.col-lg-10, +.col-xs-11, +.col-sm-11, +.col-md-11, +.col-lg-11, +.col-xs-12, +.col-sm-12, +.col-md-12, +.col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} + +.col-xs-1, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9, +.col-xs-10, +.col-xs-11 { + float: left; +} + +.col-xs-12 { + width: 100%; +} + +.col-xs-11 { + width: 91.66666666666666%; +} + +.col-xs-10 { + width: 83.33333333333334%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-8 { + width: 66.66666666666666%; +} + +.col-xs-7 { + width: 58.333333333333336%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-5 { + width: 41.66666666666667%; +} + +.col-xs-4 { + width: 33.33333333333333%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-2 { + width: 16.666666666666664%; +} + +.col-xs-1 { + width: 8.333333333333332%; +} + +.col-xs-pull-12 { + right: 100%; +} + +.col-xs-pull-11 { + right: 91.66666666666666%; +} + +.col-xs-pull-10 { + right: 83.33333333333334%; +} + +.col-xs-pull-9 { + right: 75%; +} + +.col-xs-pull-8 { + right: 66.66666666666666%; +} + +.col-xs-pull-7 { + right: 58.333333333333336%; +} + +.col-xs-pull-6 { + right: 50%; +} + +.col-xs-pull-5 { + right: 41.66666666666667%; +} + +.col-xs-pull-4 { + right: 33.33333333333333%; +} + +.col-xs-pull-3 { + right: 25%; +} + +.col-xs-pull-2 { + right: 16.666666666666664%; +} + +.col-xs-pull-1 { + right: 8.333333333333332%; +} + +.col-xs-pull-0 { + right: 0; +} + +.col-xs-push-12 { + left: 100%; +} + +.col-xs-push-11 { + left: 91.66666666666666%; +} + +.col-xs-push-10 { + left: 83.33333333333334%; +} + +.col-xs-push-9 { + left: 75%; +} + +.col-xs-push-8 { + left: 66.66666666666666%; +} + +.col-xs-push-7 { + left: 58.333333333333336%; +} + +.col-xs-push-6 { + left: 50%; +} + +.col-xs-push-5 { + left: 41.66666666666667%; +} + +.col-xs-push-4 { + left: 33.33333333333333%; +} + +.col-xs-push-3 { + left: 25%; +} + +.col-xs-push-2 { + left: 16.666666666666664%; +} + +.col-xs-push-1 { + left: 8.333333333333332%; +} + +.col-xs-push-0 { + left: 0; +} + +.col-xs-offset-12 { + margin-left: 100%; +} + +.col-xs-offset-11 { + margin-left: 91.66666666666666%; +} + +.col-xs-offset-10 { + margin-left: 83.33333333333334%; +} + +.col-xs-offset-9 { + margin-left: 75%; +} + +.col-xs-offset-8 { + margin-left: 66.66666666666666%; +} + +.col-xs-offset-7 { + margin-left: 58.333333333333336%; +} + +.col-xs-offset-6 { + margin-left: 50%; +} + +.col-xs-offset-5 { + margin-left: 41.66666666666667%; +} + +.col-xs-offset-4 { + margin-left: 33.33333333333333%; +} + +.col-xs-offset-3 { + margin-left: 25%; +} + +.col-xs-offset-2 { + margin-left: 16.666666666666664%; +} + +.col-xs-offset-1 { + margin-left: 8.333333333333332%; +} + +.col-xs-offset-0 { + margin-left: 0; +} + +@media (min-width: 768px) { + .container { + width: 750px; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-0 { + right: 0; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-0 { + left: 0; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} + +@media (min-width: 992px) { + .container { + width: 970px; + } + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-0 { + right: 0; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-0 { + left: 0; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-0 { + margin-left: 0; + } +} + +@media (min-width: 1200px) { + .container { + width: 1170px; + } + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-0 { + right: 0; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-0 { + left: 0; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} + +table { + max-width: 100%; + background-color: transparent; +} + +th { + text-align: left; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} + +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} + +.table > tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} + +.table-bordered { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} + +table col[class*="col-"] { + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + display: table-cell; + float: none; +} + +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} + +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} + +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} + +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} + +@media (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + -ms-overflow-style: -ms-autohiding-scrollbar; + -webkit-overflow-scrolling: touch; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + /* IE8-9 */ + + line-height: normal; +} + +input[type="file"] { + display: block; +} + +select[multiple], +select[size] { + height: auto; +} + +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} + +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.form-control:-moz-placeholder { + color: #999999; +} + +.form-control::-moz-placeholder { + color: #999999; +} + +.form-control:-ms-input-placeholder { + color: #999999; +} + +.form-control::-webkit-input-placeholder { + color: #999999; +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 15px; +} + +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.radio label, +.checkbox label { + display: inline; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} + +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +textarea.input-sm { + height: auto; +} + +.input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-lg { + height: 45px; + line-height: 45px; +} + +textarea.input-lg { + height: auto; +} + +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #c09853; +} + +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.has-warning .input-group-addon { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #b94a48; +} + +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.has-error .input-group-addon { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #468847; +} + +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.has-success .input-group-addon { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.form-control-static { + margin-bottom: 0; +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} + +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-control-static { + padding-top: 7px; +} + +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} + +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + border-color: #adadad; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} + +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + border-color: #d58512; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + border-color: #ac2925; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + border-color: #398439; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #269abc; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} + +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #999999; + text-decoration: none; +} + +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-sm, +.btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs { + padding: 1px 5px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + line-height: 1; + -moz-osx-font-smoothing: grayscale; +} + +.glyphicon:empty { + width: 1em; +} + +.glyphicon-asterisk:before { + content: "\2a"; +} + +.glyphicon-plus:before { + content: "\2b"; +} + +.glyphicon-euro:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-lock:before { + content: "\e033"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-bookmark:before { + content: "\e044"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-camera:before { + content: "\e046"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-fire:before { + content: "\e104"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-calendar:before { + content: "\e109"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-bell:before { + content: "\e123"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-wrench:before { + content: "\e136"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-briefcase:before { + content: "\e139"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-paperclip:before { + content: "\e142"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-pushpin:before { + content: "\e146"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-bottom: 0 dotted; + border-left: 4px solid transparent; +} + +.dropdown { + position: relative; +} + +.dropdown-toggle:focus { + outline: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + list-style: none; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open > .dropdown-menu { + display: block; +} + +.open > a { + outline: 0; +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } +} + +.btn-default .caret { + border-top-color: #333333; +} + +.btn-primary .caret, +.btn-success .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret { + border-top-color: #fff; +} + +.dropup .btn-default .caret { + border-bottom-color: #333333; +} + +.dropup .btn-primary .caret, +.dropup .btn-success .caret, +.dropup .btn-warning .caret, +.dropup .btn-danger .caret, +.dropup .btn-info .caret { + border-bottom-color: #fff; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} + +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} + +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar .btn-group { + float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +.btn-group > .btn:first-child { + margin-left: 0; +} + +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group > .btn-group { + float: left; +} + +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn-group:last-child > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group-xs > .btn { + padding: 5px 10px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} + +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn .caret { + margin-left: 0; +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group > .btn { + float: none; +} + +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + border-collapse: separate; + table-layout: fixed; +} + +.btn-group-justified .btn { + display: table-cell; + float: none; + width: 1%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group.col { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + width: 100%; + margin-bottom: 0; +} + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 45px; + line-height: 45px; +} + +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} + +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} + +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} + +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 4px; +} + +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} + +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} + +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + white-space: nowrap; +} + +.input-group-btn:first-child > .btn { + margin-right: -1px; +} + +.input-group-btn:last-child > .btn { + margin-left: -1px; +} + +.input-group-btn > .btn { + position: relative; +} + +.input-group-btn > .btn + .btn { + margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { + z-index: 2; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav > li { + position: relative; + display: block; +} + +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li.disabled > a { + color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} + +.nav .open > a .caret, +.nav .open > a:hover .caret, +.nav .open > a:focus .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} + +.nav > li > a > img { + max-width: none; +} + +.nav-tabs { + border-bottom: 1px solid #dddddd; +} + +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; +} + +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} + +.nav-tabs.nav-justified > li { + float: none; +} + +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} + +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} + +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} + +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} + +.nav-pills > li { + float: left; +} + +.nav-pills > li > a { + border-radius: 4px; +} + +.nav-pills > li + li { + margin-left: 2px; +} + +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #428bca; +} + +.nav-pills > li.active > a .caret, +.nav-pills > li.active > a:hover .caret, +.nav-pills > li.active > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} + +.nav-justified { + width: 100%; +} + +.nav-justified > li { + float: none; +} + +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} + +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} + +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} + +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; +} + +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} + +.nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: auto; + } + .navbar-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} + +.container > .navbar-header, +.container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} + +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +@media (min-width: 768px) { + .navbar > .container .navbar-brand { + margin-left: -15px; + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + border: 1px solid transparent; + border-radius: 4px; +} + +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} + +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} + +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} + +.navbar-nav { + margin: 7.5px -15px; +} + +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} + +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} + +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); +} + +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} + +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 768px) { + .navbar-text { + margin-right: 15px; + margin-left: 15px; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777777; +} + +.navbar-default .navbar-nav > li > a { + color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777777; +} + +.navbar-default .navbar-link:hover { + color: #333333; +} + +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} + +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; +} + +.breadcrumb > li + li:before { + padding: 0 5px; + color: #cccccc; + content: "/\00a0"; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} + +.pagination > li { + display: inline; +} + +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; +} + +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + background-color: #eeeeee; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; + border-color: #dddddd; +} + +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} + +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 6px; + border-top-left-radius: 6px; +} + +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} + +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} + +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.label-default { + background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} + +.label-primary { + background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} + +.label-success { + background-color: #5cb85c; +} + +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} + +.label-info { + background-color: #5bc0de; +} + +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} + +.label-warning { + background-color: #f0ad4e; +} + +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} + +.label-danger { + background-color: #d9534f; +} + +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} + +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} + +.jumbotron h1 { + line-height: 1; + color: inherit; +} + +.jumbotron p { + line-height: 1.4; +} + +.container .jumbotron { + border-radius: 6px; +} + +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: inline-block; + display: block; + height: auto; + max-width: 100%; + padding: 4px; + margin-bottom: 20px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.thumbnail > img { + display: block; + height: auto; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #428bca; +} + +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} + +.alert h4 { + margin-top: 0; + color: inherit; +} + +.alert .alert-link { + font-weight: bold; +} + +.alert > p, +.alert > ul { + margin-bottom: 0; +} + +.alert > p + p { + margin-top: 5px; +} + +.alert-dismissable { + padding-right: 35px; +} + +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #356635; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #2d6987; +} + +.alert-warning { + color: #c09853; + background-color: #fcf8e3; + border-color: #faebcc; +} + +.alert-warning hr { + border-top-color: #f7e1b5; +} + +.alert-warning .alert-link { + color: #a47e3c; +} + +.alert-danger { + color: #b94a48; + background-color: #f2dede; + border-color: #ebccd1; +} + +.alert-danger hr { + border-top-color: #e4b9c0; +} + +.alert-danger .alert-link { + color: #953b39; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} + +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar-success { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + padding-left: 0; + list-style: none; +} + +.list-group { + padding-left: 0; + margin-bottom: 20px; +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.list-group-item > .badge { + float: right; +} + +.list-group-item > .badge + .badge { + margin-right: 5px; +} + +a.list-group-item { + color: #555555; +} + +a.list-group-item .list-group-item-heading { + color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +a.list-group-item.active .list-group-item-heading, +a.list-group-item.active:hover .list-group-item-heading, +a.list-group-item.active:focus .list-group-item-heading { + color: inherit; +} + +a.list-group-item.active .list-group-item-text, +a.list-group-item.active:hover .list-group-item-text, +a.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} + +.panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel > .list-group { + margin-bottom: 0; +} + +.panel > .list-group .list-group-item { + border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.panel > .table, +.panel > .table-responsive { + margin-bottom: 0; +} + +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive { + border-top: 1px solid #dddddd; +} + +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} + +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} + +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} + +.panel > .table-bordered > thead > tr:last-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:last-child > th, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-bordered > thead > tr:last-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} + +.panel-title > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + border-radius: 4px; +} + +.panel-group .panel + .panel { + margin-top: 5px; +} + +.panel-group .panel-heading { + border-bottom: 0; +} + +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} + +.panel-default { + border-color: #dddddd; +} + +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} + +.panel-default > .panel-heading > .dropdown .caret { + border-color: #333333 transparent; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} + +.panel-primary { + border-color: #428bca; +} + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} + +.panel-primary > .panel-heading > .dropdown .caret { + border-color: #ffffff transparent; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} + +.panel-success > .panel-heading > .dropdown .caret { + border-color: #468847 transparent; +} + +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-warning { + border-color: #faebcc; +} + +.panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #faebcc; +} + +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #faebcc; +} + +.panel-warning > .panel-heading > .dropdown .caret { + border-color: #c09853 transparent; +} + +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #faebcc; +} + +.panel-danger { + border-color: #ebccd1; +} + +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #ebccd1; +} + +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #ebccd1; +} + +.panel-danger > .panel-heading > .dropdown .caret { + border-color: #b94a48 transparent; +} + +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #ebccd1; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} + +.panel-info > .panel-heading > .dropdown .caret { + border-color: #3a87ad transparent; +} + +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-lg { + padding: 24px; + border-radius: 6px; +} + +.well-sm { + padding: 9px; + border-radius: 3px; +} + +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: auto; + overflow-y: scroll; +} + +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog { + position: relative; + z-index: 1050; + width: auto; + padding: 10px; + margin-right: auto; + margin-left: auto; +} + +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} + +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 20px; +} + +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +@media screen and (min-width: 768px) { + .modal-dialog { + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; + content: " "; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; + content: " "; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; + content: " "; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; + content: " "; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + height: auto; + max-width: 100%; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.left { + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; +} + +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; +} + +.carousel-control .icon-prev:before { + content: '\2039'; +} + +.carousel-control .icon-next:before { + content: '\203a'; +} + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} + +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #ffffff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #ffffff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .glyphicons-chevron-left, + .carousel-control .glyphicons-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} + +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} + +.clearfix:after { + clear: both; +} + +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} + +.pull-right { + float: right !important; +} + +.pull-left { + float: left !important; +} + +.hide { + display: none !important; +} + +.show { + display: block !important; +} + +.invisible { + visibility: hidden; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } +} + +.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { + display: none !important; +} + +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } +} + +.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { + display: none !important; +} + +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } +} + +.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { + display: none !important; +} + +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} + +.hidden-xs { + display: block !important; +} + +tr.hidden-xs { + display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-xs, + tr.hidden-xs, + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm, + tr.hidden-xs.hidden-sm, + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md, + tr.hidden-xs.hidden-md, + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xs.hidden-lg, + tr.hidden-xs.hidden-lg, + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } +} + +.hidden-sm { + display: block !important; +} + +tr.hidden-sm { + display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-sm.hidden-xs, + tr.hidden-sm.hidden-xs, + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm, + tr.hidden-sm, + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md, + tr.hidden-sm.hidden-md, + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-sm.hidden-lg, + tr.hidden-sm.hidden-lg, + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } +} + +.hidden-md { + display: block !important; +} + +tr.hidden-md { + display: table-row !important; +} + +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-md.hidden-xs, + tr.hidden-md.hidden-xs, + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm, + tr.hidden-md.hidden-sm, + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md, + tr.hidden-md, + th.hidden-md, + td.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-md.hidden-lg, + tr.hidden-md.hidden-lg, + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } +} + +.hidden-lg { + display: block !important; +} + +tr.hidden-lg { + display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-lg.hidden-xs, + tr.hidden-lg.hidden-xs, + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm, + tr.hidden-lg.hidden-sm, + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md, + tr.hidden-lg.hidden-md, + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-lg, + tr.hidden-lg, + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} + +.visible-print, +tr.visible-print, +th.visible-print, +td.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print, + tr.hidden-print, + th.hidden-print, + td.hidden-print { + display: none !important; + } +} \ No newline at end of file diff --git a/addons/web/static/lib/bootstrap/js/bootstrap.js b/addons/web/static/lib/bootstrap/js/bootstrap.js new file mode 100644 index 00000000000..1c638ab4410 --- /dev/null +++ b/addons/web/static/lib/bootstrap/js/bootstrap.js @@ -0,0 +1,2002 @@ +/*! + * Bootstrap v3.0.2 by @fat and @mdo + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") } + +/* ======================================================================== + * Bootstrap: transition.js v3.0.2 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.0.2 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.2 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d); + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + .prop('checked', !this.$element.hasClass('active')) + .trigger('change') + if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') + } + + this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.2 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000 + , pause: 'hover' + , wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.2 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.2 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we we use a backdrop because click events don't delegate + $('