diff --git a/addons/account/__openerp__.py b/addons/account/__openerp__.py
index d4731fa0215..cea696f590f 100644
--- a/addons/account/__openerp__.py
+++ b/addons/account/__openerp__.py
@@ -107,8 +107,11 @@ module named account_voucherss
'company_view.xml',
'account_installer.xml',
'report/account_invoice_report_view.xml',
+ 'report/account_entries_report_view.xml',
'report/account_report_view.xml',
'report/account_analytic_report_view.xml',
+ 'report/account_account_report_view.xml',
+ 'report/account_analytic_entries_report_view.xml'
],
'demo_xml': [
#'demo/price_accuracy00.yml',
diff --git a/addons/account/account_menuitem.xml b/addons/account/account_menuitem.xml
index 37d539a4b25..a2d18095618 100644
--- a/addons/account/account_menuitem.xml
+++ b/addons/account/account_menuitem.xml
@@ -22,6 +22,7 @@
groups="group_account_user"/>
+
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 6c5be231657..1edb56d6044 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -351,7 +351,7 @@
-
+
diff --git a/addons/account/i18n/eu.po b/addons/account/i18n/eu.po
index 68344247171..84652c621ae 100644
--- a/addons/account/i18n/eu.po
+++ b/addons/account/i18n/eu.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-05-17 13:10+0000\n"
-"Last-Translator: Jon A. Ortuondo (Euskotec) \n"
+"PO-Revision-Date: 2010-05-23 09:59+0000\n"
+"Last-Translator: ninaiz \n"
"Language-Team: Basque \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-05-19 05:12+0000\n"
+"X-Launchpad-Export-Date: 2010-05-24 03:46+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -236,7 +236,7 @@ msgstr ""
#: field:account.tax.template,amount:0
#: xsl:account.transfer:0
msgid "Amount"
-msgstr ""
+msgstr "Kopurua"
#. module: account
#: model:ir.actions.report.xml,name:account.account_3rdparty_ledger
@@ -338,7 +338,7 @@ msgstr ""
#: field:account.invoice,amount_tax:0
#: field:account.move.line,account_tax_id:0
msgid "Tax"
-msgstr ""
+msgstr "Zerga"
#. module: account
#: rml:account.general.journal:0
@@ -465,7 +465,7 @@ msgstr ""
#. module: account
#: rml:account.invoice:0
msgid "Disc.(%)"
-msgstr ""
+msgstr "Desk. (%)"
#. module: account
#: rml:account.general.ledger:0
diff --git a/addons/account/i18n/fr.po b/addons/account/i18n/fr.po
index 1785d79bf38..e6bddde1647 100644
--- a/addons/account/i18n/fr.po
+++ b/addons/account/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-02-18 09:24+0000\n"
-"Last-Translator: Olivier Dony (OpenERP) \n"
+"PO-Revision-Date: 2010-05-21 17:48+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:06+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -2495,7 +2495,8 @@ msgid "Analytic Entry"
msgstr "Ecriture analytique"
#. module: account
-#: view:res.company:0 field:res.company,overdue_msg:0
+#: view:res.company:0
+#: field:res.company,overdue_msg:0
msgid "Overdue Payments Message"
msgstr "Message pour les paiements en retard"
@@ -2784,7 +2785,7 @@ msgstr "Ouvrir journal"
#. module: account
#: rml:account.analytic.account.journal:0
msgid "KI"
-msgstr ""
+msgstr "KI"
#. module: account
#: model:ir.actions.wizard,name:account.action_account_analytic_line
@@ -3034,7 +3035,7 @@ msgstr "-"
#. module: account
#: rml:account.analytic.account.journal:0
msgid "asgfas"
-msgstr ""
+msgstr "asgfas"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_account_tree2
@@ -6082,3 +6083,6 @@ msgid ""
msgstr ""
"Cochez cette case si l'utilisateur peut réconcilier les entrées dans ce "
"compte."
+
+#~ msgid "account.config.wizard"
+#~ msgstr "account.config.wizard"
diff --git a/addons/account/report/__init__.py b/addons/account/report/__init__.py
index 09ff866d1a8..b411e404cac 100644
--- a/addons/account/report/__init__.py
+++ b/addons/account/report/__init__.py
@@ -37,6 +37,8 @@ import compare_account_balance
import account_invoice_report
import account_report
import account_analytic_report
-
+import account_account_report
+import account_entries_report
+import account_analytic_entries_report
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/report/account_account_report.py b/addons/account/report/account_account_report.py
new file mode 100644
index 00000000000..55e5d7030c7
--- /dev/null
+++ b/addons/account/report/account_account_report.py
@@ -0,0 +1,86 @@
+# -*- 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 .
+#
+##############################################################################
+
+import tools
+from osv import fields,osv
+
+class account_account_report(osv.osv):
+ _name = "account.account.report"
+ _description = "Account Report"
+ _auto = False
+ _columns = {
+ 'name': fields.char('Name', size=128, readonly=True),
+ 'code': fields.char('Code', size=64, readonly=True),
+ 'type': fields.selection([
+ ('receivable', 'Receivable'),
+ ('payable', 'Payable'),
+ ('view', 'View'),
+ ('consolidation', 'Consolidation'),
+ ('other', 'Others'),
+ ('closed', 'Closed'),
+ ], 'Internal Type', readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', required=True),
+ 'currency_mode': fields.selection([('current', 'At Date'), ('average', 'Average Rate')], 'Outgoing Currencies Rate',readonly=True),
+ 'user_type': fields.many2one('account.account.type', 'Account Type',readonly=True),
+ 'quantity': fields.float('Quantity', readonly=True),
+ 'amount_total': fields.float('Total Amount', readonly=True),
+ 'credit': fields.float('Credit', readonly=True),
+ 'debit': fields.float('Debit', readonly=True),
+ 'balance': fields.float('Balance', readonly=True),
+ 'nbr': fields.integer('#Accounts', readonly=True),
+ 'parent_account_id': fields.many2one('account.account', 'Parent Account', required=True),
+ }
+ def init(self, cr):
+ tools.drop_view_if_exists(cr, 'account_account_report')
+ cr.execute("""
+ create or replace view account_account_report as (
+ select
+ min(a.id) as id,
+ count(distinct a.id) as nbr,
+ a.name,
+ a.code,
+ a.type as type,
+ a.company_id as company_id,
+ a.currency_mode as currency_mode,
+ a.user_type as user_type,
+ a.parent_id as parent_account_id,
+ sum(ail.quantity) as quantity,
+ sum(ail.price_subtotal) as amount_total,
+ sum(m.credit) as credit,
+ sum(m.debit) as debit,
+ (sum(m.credit)-sum(m.debit)) as balance
+ from
+ account_account as a
+ left join account_move_line as m on m.account_id=a.id
+ left join account_invoice_line as ail on ail.account_id=a.id
+ left join account_invoice as ai on ai.account_id=a.id
+ group by
+ a.name,
+ a.code,
+ a.type,
+ a.company_id,
+ a.currency_mode,
+ a.user_type,
+ m.account_id,
+ a.parent_id
+ )
+ """)
+account_account_report()
diff --git a/addons/account/report/account_account_report_view.xml b/addons/account/report/account_account_report_view.xml
new file mode 100644
index 00000000000..32e77be341f
--- /dev/null
+++ b/addons/account/report/account_account_report_view.xml
@@ -0,0 +1,92 @@
+
+
+
+
+ account.account.report.tree
+ account.account.report
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ account.account.report.graph
+ account.account.report
+ graph
+
+
+
+
+
+
+
+
+
+
+
+ account.account.report.search
+ account.account.report
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Accounts
+ account.account.report
+ form
+ tree,graph
+ {"search_default_Account":1,"search_default_At Date":1,'group_by_no_leaf':1,'group_by':[]}
+
+
+
+
+
+
+
diff --git a/addons/account/report/account_analytic_entries_report.py b/addons/account/report/account_analytic_entries_report.py
new file mode 100644
index 00000000000..2a1b4ad993b
--- /dev/null
+++ b/addons/account/report/account_analytic_entries_report.py
@@ -0,0 +1,83 @@
+# -*- 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 .
+#
+##############################################################################
+
+import tools
+from osv import fields,osv
+
+class analytic_entries_report(osv.osv):
+ _name = "analytic.entries.report"
+ _description = "Analytic Entries Statistics"
+ _auto = False
+ _columns = {
+ 'date': fields.date('Date', readonly=True),
+ 'year': fields.char('Year', size=4, readonly=True),
+ 'day': fields.char('Day', size=128, readonly=True),
+ 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
+ ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
+ ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
+ 'user_id' : fields.many2one('res.users', 'User',readonly=True),
+ 'name': fields.char('Description', size=64, readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', required=True),
+ 'currency_id': fields.many2one('res.currency', 'Currency', required=True),
+ 'account_id': fields.many2one('account.analytic.account', 'Account', required=True),
+ 'general_account_id': fields.many2one('account.account', 'General Account', required=True),
+ 'journal_id': fields.many2one('account.analytic.journal', 'Journal', required=True),
+ 'move_id': fields.many2one('account.move.line', 'Move', required=True),
+ 'product_id': fields.many2one('product.product', 'Product', required=True),
+ 'product_uom_id': fields.many2one('product.uom', 'Product UOM', required=True),
+ 'amount': fields.float('Amount', readonly=True),
+ 'unit_amount': fields.float('Unit Amount', readonly=True),
+ 'amount_currency': fields.float('Amount Currency', readonly=True),
+ 'nbr': fields.integer('#Entries', readonly=True),
+ }
+ def init(self, cr):
+ tools.drop_view_if_exists(cr, 'analytic_entries_report')
+ cr.execute("""
+ create or replace view analytic_entries_report as (
+ select
+ min(a.id) as id,
+ count(distinct a.id) as nbr,
+ a.create_date as date,
+ to_char(a.create_date, 'YYYY') as year,
+ to_char(a.create_date, 'MM') as month,
+ to_char(a.create_date, 'YYYY-MM-DD') as day,
+ a.user_id as user_id,
+ a.name as name,
+ a.company_id as company_id,
+ a.currency_id as currency_id,
+ a.account_id as account_id,
+ a.general_account_id as general_account_id,
+ a.journal_id as journal_id,
+ a.move_id as move_id,
+ a.product_id as product_id,
+ a.product_uom_id as product_uom_id,
+ sum(a.amount) as amount,
+ sum(a.unit_amount) as unit_amount,
+ sum(a.amount_currency) as amount_currency
+ from
+ account_analytic_line a
+ group by
+ a.create_date, a.user_id,a.name,company_id,a.currency_id,
+ a.account_id,a.general_account_id,a.journal_id,
+ a.move_id,a.product_id,a.product_uom_id
+ )
+ """)
+analytic_entries_report()
diff --git a/addons/account/report/account_analytic_entries_report_view.xml b/addons/account/report/account_analytic_entries_report_view.xml
new file mode 100644
index 00000000000..41d9c0976f2
--- /dev/null
+++ b/addons/account/report/account_analytic_entries_report_view.xml
@@ -0,0 +1,112 @@
+
+
+
+
+ analytic.entries.report.tree
+ analytic.entries.report
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ analytic.entries.report.search
+ analytic.entries.report
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ account.analytic.entries.graph
+ analytic.entries.report
+ graph
+
+
+
+
+
+
+
+
+
+
+ Analytic Entries
+ analytic.entries.report
+ form
+ tree,graph
+ {'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}
+
+
+
+
+
+
+
diff --git a/addons/account/report/account_analytic_report.py b/addons/account/report/account_analytic_report.py
index 45057d950bd..87912b4a3ef 100644
--- a/addons/account/report/account_analytic_report.py
+++ b/addons/account/report/account_analytic_report.py
@@ -35,7 +35,7 @@ class analytic_report(osv.osv):
'parent_id': fields.many2one('account.analytic.account', 'Parent Analytic Account', readonly=True),
'user_id' : fields.many2one('res.users', 'Account Manager',readonly=True),
'product_id' : fields.many2one('product.product', 'Product',readonly=True),
- 'quantity': fields.float('Quantity',readonly=True),
+ 'total_quantity': fields.float('# Total Quantity',readonly=True),
'debit' : fields.float('Debit',readonly=True),
'credit' : fields.float('Credit',readonly=True),
'balance' : fields.float('Balance',readonly=True),
@@ -43,6 +43,11 @@ class analytic_report(osv.osv):
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
+ 'day': fields.char('Day', size=128, readonly=True),
+ 'nbr':fields.integer('# of Lines', readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', readonly=True),
+ 'type': fields.selection([('view','View'), ('normal','Normal')], 'Account Type'),
+
'state': fields.selection([('draft','Draft'),
('open','Open'),
('pending','Pending'),
@@ -50,6 +55,7 @@ class analytic_report(osv.osv):
('close','Close'),
('template', 'Template')],
'State', readonly=True),
+
}
_order = 'date_start desc'
def init(self, cr):
@@ -60,15 +66,18 @@ class analytic_report(osv.osv):
min(s.id) as id,
to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month,
+ to_char(s.create_date, 'YYYY-MM-DD') as day,
l.journal_id,
l.product_id,
s.parent_id,
s.date_start,
s.date as date_end,
s.user_id,
+ s.company_id,
+ s.type,
s.name,
s.partner_id,
- s.quantity,
+ sum(s.quantity) as total_quantity,
s.debit,
s.credit,
s.balance,
@@ -77,7 +86,8 @@ class analytic_report(osv.osv):
from account_analytic_account s
left join account_analytic_line l on (s.id=l.account_id)
GROUP BY s.create_date,s.state,l.journal_id,s.name,
- s.partner_id,s.date_start,s.date,s.user_id,s.quantity,
+ s.partner_id,s.date_start,s.date,s.user_id,
+ s.company_id,s.type,
s.debit,s.credit,s.balance,s.parent_id,l.product_id
)
""")
diff --git a/addons/account/report/account_analytic_report_view.xml b/addons/account/report/account_analytic_report_view.xml
index e9336cd1393..838cefe5898 100644
--- a/addons/account/report/account_analytic_report_view.xml
+++ b/addons/account/report/account_analytic_report_view.xml
@@ -9,23 +9,26 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
+
-
analytic.report.search
analytic.report
@@ -38,18 +41,15 @@
domain="[('year','=',time.strftime('%%Y'))]"/>
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -65,40 +77,59 @@
string="Template"
domain="[('state','=','template')]"/>
+
-
-
+
+
+
+
-
-
+
+
+
+
+
+
-
-
+
+
-
+
+ account.analytic.report.graph
+ analytic.report
+ graph
+
+
+
+
+
+
+
+
+
+
Analytic Accounts
analytic.report
form
- tree
- {'search_default_User':1,'search_default_user_id':uid}
+ tree,graph
+ {'search_default_This Month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}
-
-
+
diff --git a/addons/account/report/account_entries_report.py b/addons/account/report/account_entries_report.py
new file mode 100644
index 00000000000..85ba8a058f7
--- /dev/null
+++ b/addons/account/report/account_entries_report.py
@@ -0,0 +1,123 @@
+# -*- 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 .
+#
+##############################################################################
+
+import tools
+from osv import fields,osv
+
+class account_entries_report(osv.osv):
+ _name = "account.entries.report"
+ _description = "Entries"
+ _auto = False
+ _rec_name = 'date'
+ _columns = {
+ 'date': fields.date('Effective Date', readonly=True),
+ 'date_created': fields.date('Date Created', readonly=True),
+ 'date_maturity': fields.date('Date Maturity', readonly=True),
+ 'nbr':fields.integer('# of Entries', readonly=True),
+ 'nbl':fields.integer('# of Lines', readonly=True),
+ 'amount': fields.float('Amount',readonly=True),
+ 'year': fields.char('Year', size=4, readonly=True),
+ 'day': fields.char('Day', size=128, readonly=True),
+ 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
+ ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
+ ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
+ 'ref': fields.char('Reference', size=64,readonly=True),
+ 'period_id': fields.many2one('account.period', 'Period', readonly=True),
+ 'account_id': fields.many2one('account.account', 'Account', readonly=True),
+ 'journal_id': fields.many2one('account.journal', 'Journal', readonly=True),
+ 'product_id': fields.many2one('product.product', 'Product', readonly=True),
+ 'state': fields.selection([('draft','Draft'), ('posted','Posted')], 'State',readonly=True,
+ help='When new account move is created the state will be \'Draft\'. When all the payments are done it will be in \'Posted\' state.'),
+ 'state_2': fields.selection([('draft','Draft'), ('valid','Valid')], 'State of Move Line', readonly=True,
+ help='When new move line is created the state will be \'Draft\'.\n* When all the payments are done it will be in \'Valid\' state.'),
+ 'partner_id': fields.many2one('res.partner','Partner', readonly=True),
+ 'period_id2': fields.many2one('account.period', 'Move Line Period', readonly=True),
+ 'analytic_account_id' : fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
+ 'journal_id2': fields.many2one('account.journal', 'Move Line Journal', readonly=True),
+ 'type': fields.selection([
+ ('pay_voucher','Cash Payment'),
+ ('bank_pay_voucher','Bank Payment'),
+ ('rec_voucher','Cash Receipt'),
+ ('bank_rec_voucher','Bank Receipt'),
+ ('cont_voucher','Contra'),
+ ('journal_sale_vou','Journal Sale'),
+ ('journal_pur_voucher','Journal Purchase'),
+ ('journal_voucher','Journal Voucher'),
+ ],'Type',readonly=True),
+ 'quantity': fields.float('Products Quantity', digits=(16,2), readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', readonly=True),
+ }
+ _order = 'date desc'
+
+ def init(self, cr):
+ tools.drop_view_if_exists(cr, 'account_entries_report')
+ cr.execute("""
+ create or replace view account_entries_report as (
+ select
+ min(l.id) as id,
+ am.ref as ref,
+ sum(l.quantity) as quantity,
+ am.state as state,
+ l.state as state_2,
+ am.date as date,
+ count(l.id) as nbr,
+ count(distinct am.id) as nbl,
+ l.debit as amount,
+ to_char(am.date, 'YYYY') as year,
+ to_char(am.date, 'MM') as month,
+ to_char(am.date, 'YYYY-MM-DD') as day,
+ am.company_id as company_id,
+ l.account_id as account_id,
+ l.analytic_account_id as analytic_account_id,
+ l.date_created as date_created,
+ l.date_maturity as date_maturity,
+ am.journal_id as journal_id,
+ l.journal_id as journal_id2,
+ l.period_id as period_id2,
+ am.period_id as period_id,
+ l.partner_id as partner_id,
+ l.product_id as product_id,
+ am.type as type
+ from
+ account_move_line l
+ left join
+ account_move am on (am.id=l.move_id)
+ group by am.ref,
+ am.state,
+ am.date,
+ am.company_id,
+ am.journal_id,
+ l.journal_id,
+ am.period_id,
+ l.period_id,
+ am.type,
+ l.partner_id,
+ l.analytic_account_id,
+ l.product_id,
+ l.date_created,
+ l.date_maturity,
+ l.account_id,
+ l.state,
+ l.debit
+ )
+ """)
+
+account_entries_report()
diff --git a/addons/account/report/account_entries_report_view.xml b/addons/account/report/account_entries_report_view.xml
new file mode 100644
index 00000000000..c6308ec9928
--- /dev/null
+++ b/addons/account/report/account_entries_report_view.xml
@@ -0,0 +1,127 @@
+
+
+
+
+ account.entries.report.tree
+ account.entries.report
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ account.entries.report.graph
+ account.entries.report
+ graph
+
+
+
+
+
+
+
+
+ account.entries.report.search
+ account.entries.report
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Entries
+ account.entries.report
+ form
+ tree,graph
+ {'search_default_This Month':1,'search_default_Journal':1,'group_by_no_leaf':1,'group_by':[]}
+
+
+
+
+
diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py
index 36fa5a0d132..cd1477e79cf 100644
--- a/addons/account/report/account_invoice_report.py
+++ b/addons/account/report/account_invoice_report.py
@@ -61,6 +61,13 @@ class account_invoice_report(osv.osv):
('paid','Done'),
('cancel','Cancelled')
], 'Order State', readonly=True),
+ 'date_due': fields.date('Due Date', readonly=True),
+ 'address_contact_id': fields.many2one('res.partner.address', 'Contact Address Name', readonly=True),
+ 'address_invoice_id': fields.many2one('res.partner.address', 'Invoice Address Name', readonly=True),
+ 'account_id': fields.many2one('account.account', 'Account',readonly=True),
+ 'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',readonly=True),
+ 'residual':fields.float('Total Residual', readonly=True),
+ 'delay_to_pay':fields.float('Avg. Delay To Pay', readonly=True, group_operator="avg"),
}
_order = 'date desc'
def init(self, cr):
@@ -87,12 +94,24 @@ class account_invoice_report(osv.osv):
(sum(l.quantity*l.price_unit)/sum(l.quantity * u.factor))::decimal(16,2) as price_average,
count(*) as nbr,
s.type as type,
- s.state
- from
+ s.state,
+ s.date_due as date_due,
+ s.address_contact_id as address_contact_id,
+ s.address_invoice_id as address_invoice_id,
+ s.account_id as account_id,
+ s.partner_bank as partner_bank,
+ s.residual as residual,
+ case when s.state != 'paid' then null else
+ extract(epoch from avg(am.date_created-l.create_date))/(24*60*60)::decimal(16,2)
+ end as delay_to_pay
+ from
account_invoice_line l
left join
account_invoice s on (s.id=l.invoice_id)
- left join product_uom u on (u.id=l.uos_id)
+ left join product_uom u on (u.id=l.uos_id),
+ account_move_line am left join account_invoice i on (i.move_id=am.move_id)
+ where
+ am.account_id=i.account_id
group by
s.type,
s.date_invoice,
@@ -101,12 +120,18 @@ class account_invoice_report(osv.osv):
l.uos_id,
s.user_id,
s.state,
+ s.residual,
s.company_id,
s.payment_term,
s.period_id,
s.fiscal_position,
s.currency_id,
- s.journal_id
+ s.journal_id,
+ s.date_due,
+ s.address_contact_id,
+ s.address_invoice_id,
+ s.account_id,
+ s.partner_bank
)
""")
account_invoice_report()
diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml
index 33d3442ddbb..b974afdb8a3 100644
--- a/addons/account/report/account_invoice_report_view.xml
+++ b/addons/account/report/account_invoice_report_view.xml
@@ -17,7 +17,6 @@
-
@@ -27,6 +26,13 @@
+
+
+
+
+
+
+
@@ -49,14 +55,14 @@
search
-
-
+
-
+
+ help="Invoices of last 30 days"/>
+
-
-
-
+
+
-
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
-
+
-
+
@@ -141,7 +151,7 @@
-
+
diff --git a/addons/account/report/account_report_view.xml b/addons/account/report/account_report_view.xml
index f0f67b477e3..9b1688730aa 100644
--- a/addons/account/report/account_report_view.xml
+++ b/addons/account/report/account_report_view.xml
@@ -47,7 +47,7 @@
form
tree,graph
-
+
@@ -116,7 +116,7 @@
-
+
report.account.sales.tree
@@ -169,7 +169,7 @@
graph,tree
-
+
@@ -237,7 +237,7 @@
graph,tree
-
+
diff --git a/addons/account_coda/__init__.py b/addons/account_coda/__init__.py
new file mode 100644
index 00000000000..af866f5dc70
--- /dev/null
+++ b/addons/account_coda/__init__.py
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 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 .
+#
+##############################################################################
+
+import coda
+import wizard
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/account_coda/__openerp__.py b/addons/account_coda/__openerp__.py
new file mode 100644
index 00000000000..306098d137b
--- /dev/null
+++ b/addons/account_coda/__openerp__.py
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 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 .
+#
+##############################################################################
+
+{
+ "name":"Account CODA - import bank statements from coda file",
+ "version":"1.0",
+ "author":"Tiny",
+ "category":"Account CODA",
+ "description":"""Module provides functionality to import
+ bank statements from coda files.
+ """,
+ "depends":["base", "account"],
+ "demo_xml":["coda_demo.xml"],
+ "init_xml":[],
+ "update_xml" : ["security/ir.model.access.csv","coda_wizard.xml","coda_view.xml"],
+ "active":False,
+ "installable":True,
+
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/account_coda/coda.py b/addons/account_coda/coda.py
new file mode 100644
index 00000000000..f37b563c245
--- /dev/null
+++ b/addons/account_coda/coda.py
@@ -0,0 +1,50 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 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 .
+#
+##############################################################################
+
+import time
+from osv import osv,fields
+
+class account_coda(osv.osv):
+ _name = "account.coda"
+ _description = "coda for an Account"
+ _columns = {
+ 'name': fields.binary('Coda file', readonly=True),
+ 'statement_ids': fields.one2many('account.bank.statement','coda_id','Generated Bank Statement', readonly=True),
+ 'note': fields.text('Import log', readonly=True),
+ 'journal_id': fields.many2one('account.journal','Bank Journal', readonly=True,select=True),
+ 'date': fields.date('Import Date', readonly=True,select=True),
+ 'user_id': fields.many2one('res.users','User', readonly=True, select=True),
+ }
+ _defaults = {
+ 'date': lambda *a: time.strftime('%Y-%m-%d'),
+ 'user_id': lambda self,cr,uid,context: uid,
+ }
+account_coda()
+
+class account_bank_statement(osv.osv):
+ _inherit = "account.bank.statement"
+ _columns = {
+ 'coda_id':fields.many2one('account.coda','Coda'),
+ }
+account_bank_statement()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/account_coda/coda_demo.xml b/addons/account_coda/coda_demo.xml
new file mode 100644
index 00000000000..f91d34d4cbc
--- /dev/null
+++ b/addons/account_coda/coda_demo.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/addons/account_coda/coda_view.xml b/addons/account_coda/coda_view.xml
new file mode 100644
index 00000000000..3813fe40bf0
--- /dev/null
+++ b/addons/account_coda/coda_view.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+ account.coda.form
+ account.coda
+ form
+
+
+
+
+
+
+
+ account.coda.tree
+ account.coda
+ tree
+
+
+
+
+
+
+
+
+
+
+ Coda import
+ ir.actions.act_window
+ account.coda
+ form
+ tree,form
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_coda/coda_wizard.xml b/addons/account_coda/coda_wizard.xml
new file mode 100644
index 00000000000..ecd8eb65913
--- /dev/null
+++ b/addons/account_coda/coda_wizard.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/addons/account_coda/i18n/account_coda.pot b/addons/account_coda/i18n/account_coda.pot
new file mode 100644
index 00000000000..348fb035c0d
--- /dev/null
+++ b/addons/account_coda/i18n/account_coda.pot
@@ -0,0 +1,163 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_coda
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-11-24 13:11:29+0000\n"
+"PO-Revision-Date: 2009-11-24 13:11:29+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_coda
+#: field:account.coda,journal_id:0
+#: wizard_field:account.coda_import,init,journal_id:0
+msgid "Bank Journal"
+msgstr ""
+
+#. module: account_coda
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,extraction,note:0
+msgid "Log"
+msgstr ""
+
+#. module: account_coda
+#: wizard_button:account.coda_import,extraction,open:0
+msgid "_Open Statement"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.module.module,shortdesc:account_coda.module_meta_information
+msgid "Account CODA"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,name:0
+msgid "Coda file"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,init:0
+msgid "Clic on 'New' to select your file :"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.actions.wizard,name:account_coda.wizard_account_coda_import
+msgid "Import Coda File"
+msgstr ""
+
+#. module: account_coda
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,note:0
+msgid "Import log"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,init,def_receivable:0
+msgid "Default receivable Account"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.module.module,description:account_coda.module_meta_information
+msgid "Module provides functionality to import\n"
+" bank statements from .csv file.\n"
+" Import coda file wizard is used to import bank statements."
+msgstr ""
+
+#. module: account_coda
+#: wizard_button:account.coda_import,extraction,end:0
+msgid "_Close"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,statement_id:0
+msgid "Generated Bank Statement"
+msgstr ""
+
+#. module: account_coda
+#: view:account.coda:0
+#: model:ir.actions.act_window,name:account_coda.act_account_payment_account_bank_statement
+#: model:ir.actions.act_window,name:account_coda.action_account_coda
+msgid "Coda import"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,user_id:0
+msgid "User"
+msgstr ""
+
+#. module: account_coda
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.model,name:account_coda.model_account_coda
+msgid "coda for an Account"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,init,def_payable:0
+msgid "Default Payable Account"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.ui.menu,name:account_coda.menu_account_coda
+msgid "Coda Statements"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.ui.menu,name:account_coda.menu_account_coda_wizard
+msgid "Import Coda Statements"
+msgstr ""
+
+#. module: account_coda
+#: wizard_button:account.coda_import,init,extraction:0
+msgid "_Ok"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,extraction:0
+#: wizard_view:account.coda_import,init:0
+msgid "Import Coda Statement"
+msgstr ""
+
+#. module: account_coda
+#: field:account.bank.statement,coda_id:0
+msgid "Coda"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,extraction:0
+msgid "Results :"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,init,coda:0
+msgid "Coda File"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,date:0
+msgid "Import Date"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,init:0
+msgid "Select your bank journal :"
+msgstr ""
+
diff --git a/addons/account_coda/i18n/fr_BE.po b/addons/account_coda/i18n/fr_BE.po
new file mode 100644
index 00000000000..348fb035c0d
--- /dev/null
+++ b/addons/account_coda/i18n/fr_BE.po
@@ -0,0 +1,163 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_coda
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-11-24 13:11:29+0000\n"
+"PO-Revision-Date: 2009-11-24 13:11:29+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: account_coda
+#: field:account.coda,journal_id:0
+#: wizard_field:account.coda_import,init,journal_id:0
+msgid "Bank Journal"
+msgstr ""
+
+#. module: account_coda
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,extraction,note:0
+msgid "Log"
+msgstr ""
+
+#. module: account_coda
+#: wizard_button:account.coda_import,extraction,open:0
+msgid "_Open Statement"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.module.module,shortdesc:account_coda.module_meta_information
+msgid "Account CODA"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,name:0
+msgid "Coda file"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,init:0
+msgid "Clic on 'New' to select your file :"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.actions.wizard,name:account_coda.wizard_account_coda_import
+msgid "Import Coda File"
+msgstr ""
+
+#. module: account_coda
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,note:0
+msgid "Import log"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,init,def_receivable:0
+msgid "Default receivable Account"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.module.module,description:account_coda.module_meta_information
+msgid "Module provides functionality to import\n"
+" bank statements from .csv file.\n"
+" Import coda file wizard is used to import bank statements."
+msgstr ""
+
+#. module: account_coda
+#: wizard_button:account.coda_import,extraction,end:0
+msgid "_Close"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,statement_id:0
+msgid "Generated Bank Statement"
+msgstr ""
+
+#. module: account_coda
+#: view:account.coda:0
+#: model:ir.actions.act_window,name:account_coda.act_account_payment_account_bank_statement
+#: model:ir.actions.act_window,name:account_coda.action_account_coda
+msgid "Coda import"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,user_id:0
+msgid "User"
+msgstr ""
+
+#. module: account_coda
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.model,name:account_coda.model_account_coda
+msgid "coda for an Account"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,init,def_payable:0
+msgid "Default Payable Account"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.ui.menu,name:account_coda.menu_account_coda
+msgid "Coda Statements"
+msgstr ""
+
+#. module: account_coda
+#: model:ir.ui.menu,name:account_coda.menu_account_coda_wizard
+msgid "Import Coda Statements"
+msgstr ""
+
+#. module: account_coda
+#: wizard_button:account.coda_import,init,extraction:0
+msgid "_Ok"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,extraction:0
+#: wizard_view:account.coda_import,init:0
+msgid "Import Coda Statement"
+msgstr ""
+
+#. module: account_coda
+#: field:account.bank.statement,coda_id:0
+msgid "Coda"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,extraction:0
+msgid "Results :"
+msgstr ""
+
+#. module: account_coda
+#: wizard_field:account.coda_import,init,coda:0
+msgid "Coda File"
+msgstr ""
+
+#. module: account_coda
+#: field:account.coda,date:0
+msgid "Import Date"
+msgstr ""
+
+#. module: account_coda
+#: wizard_view:account.coda_import,init:0
+msgid "Select your bank journal :"
+msgstr ""
+
diff --git a/addons/account_coda/security/ir.model.access.csv b/addons/account_coda/security/ir.model.access.csv
new file mode 100644
index 00000000000..9c1e0a486dc
--- /dev/null
+++ b/addons/account_coda/security/ir.model.access.csv
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_account_coda","account.coda","model_account_coda","account.group_account_user",1,0,0,0
+"access_account_coda_manager","account.coda","model_account_coda","account.group_account_manager",1,1,1,1
\ No newline at end of file
diff --git a/addons/account_coda/statement_coda.txt b/addons/account_coda/statement_coda.txt
new file mode 100644
index 00000000000..44fe70220ca
--- /dev/null
+++ b/addons/account_coda/statement_coda.txt
@@ -0,0 +1,10 @@
+0000006060712505 00000CPH CODA TINY 0047747270100477472701 00000 1
+1 049126201326907 EUR0BE 0000000015632900050607TINY COMPTE COURANT ORDINAIRE 049
+2100010000 0000000001150000060607001500000INVOICE OF 2006-12-19 0606070020100
+2200010000 EUR000000001150000 100
+2300010000301915554082 PROLIBRE SARL CAROUGE GE 000
+2100020000 0000000000500000060607001500000CONTRACT PARTNER ERREUR ECART YEA 0606070030100
+2200020000RTY CONTRACT PARTNER EUR000000000500000 100
+2300020000050000000017 SEDNACOM 43 ALLEE DES FOUGERES 9522 0 HERBLAY 000
+8049126201326907 0000000017282900060607
+9 000008000000000000000000000001650000 2
diff --git a/addons/account_coda/wizard/__init__.py b/addons/account_coda/wizard/__init__.py
new file mode 100644
index 00000000000..72d3b950cf7
--- /dev/null
+++ b/addons/account_coda/wizard/__init__.py
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 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 .
+#
+##############################################################################
+
+import coda_import
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/account_coda/wizard/coda_import.py b/addons/account_coda/wizard/coda_import.py
new file mode 100644
index 00000000000..5e1ffa365e8
--- /dev/null
+++ b/addons/account_coda/wizard/coda_import.py
@@ -0,0 +1,339 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 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 .
+#
+##############################################################################
+
+import pooler
+import time
+import datetime
+import wizard
+import netsvc
+import base64
+from osv import osv
+from tools.translate import _
+
+codawiz_form = """
+
+"""
+
+codawiz_fields = {
+ 'journal_id' : {
+ 'string':'Bank Journal',
+ 'type':'many2one',
+ 'relation':'account.journal',
+ 'required':True,
+
+ },
+ 'coda' : {
+ 'string':'Coda File',
+ 'type':'binary',
+ 'required':True,
+ },
+ 'def_payable' : {
+ 'string' : 'Default Payable Account',
+ 'type' : 'many2one',
+ 'relation': 'account.account',
+ 'required':True,
+ 'domain':[('type','=','payable')],
+ 'help': 'Set here the payable account that will be used, by default, if the partner is not found',
+ },
+ 'def_receivable' : {
+ 'string' : 'Default receivable Account',
+ 'type' : 'many2one',
+ 'relation': 'account.account',
+ 'required':True,
+ 'domain':[('type','=','receivable')],
+ 'help': 'Set here the receivable account that will be used, by default, if the partner is not found',
+ },
+ 'awaiting_account' : {
+ 'string' : 'Default Account for Unrecognized Movement',
+ 'type' : 'many2one',
+ 'relation': 'account.account',
+ 'required':True,
+ 'help': 'Set here the default account that will be used, if the partner is found but does not have the bank account , or if he is domiciled',
+
+ }
+
+}
+
+result_form = """
+
+"""
+
+result_fields = {
+
+ 'note' : {'string':'Log','type':'text'}
+
+}
+
+
+def _coda_parsing(self, cr, uid, data, context):
+ pool = pooler.get_pool(cr.dbname)
+ codafile = data['form']['coda']
+ journal_code = pool.get('account.journal').browse(cr, uid, data['form']['journal_id'], context).code
+ def_pay_acc = data['form']['def_payable']
+ def_rec_acc = data['form']['def_receivable']
+
+ str_log = ""
+ err_log = "Errors:\n------\n"
+ nb_err=0
+ std_log=''
+ str_log1 = "Coda File is Imported : "
+ str_not=''
+ str_not1=''
+
+ bank_statements=[]
+ recordlist = base64.decodestring(codafile).split('\n')
+ recordlist.pop()
+ for line in recordlist:
+ if line[0] == '0':
+ # header data
+ bank_statement = {}
+ bank_statement["bank_statement_line"]={}
+ bank_statement_lines = {}
+ bank_statement['date'] = str2date(line[5:11])
+ bank_statement['journal_id']=data['form']['journal_id']
+ period_id = pool.get('account.period').search(cr,uid,[('date_start','<=',time.strftime('%Y-%m-%d',time.strptime(bank_statement['date'],"%y/%m/%d"))),('date_stop','>=',time.strftime('%Y-%m-%d',time.strptime(bank_statement['date'],"%y/%m/%d")))])
+ bank_statement['period_id'] = period_id[0]
+ bank_statement['state']='draft'
+ elif line[0] == '1':
+ # old balance data
+ bal_start = list2float(line[43:58])
+ if line[42] == '1':
+ bal_start = - bal_start
+ bank_statement["balance_start"]= bal_start
+ bank_statement["acc_number"]=line[5:17]
+ bank_statement["acc_holder"]=line[64:90]
+ bank_statement['name'] = journal_code + ' ' + str(line[2:5])
+
+ elif line[0]=='2':
+ # movement data record 2
+ if line[1]=='1':
+ # movement data record 2.1
+ if bank_statement_lines.has_key(line[2:6]):
+ continue
+ st_line = {}
+ st_line['extra_note'] = ''
+ st_line['statement_id']=0
+ st_line['ref'] = line[2:10]
+ st_line['date'] = time.strftime('%Y-%m-%d',time.strptime(str2date(line[115:121]),"%y/%m/%d")),
+ st_line_amt = list2float(line[32:47])
+
+ if line[61]=='1':
+ st_line['toreconcile'] = True
+ st_line['name']=line[65:77]
+ else:
+ st_line['toreconcile'] = False
+ st_line['name']=line[62:115]
+
+ st_line['free_comm'] = st_line['name']
+ st_line['val_date']=time.strftime('%Y-%m-%d',time.strptime(str2date(line[47:53]),"%y/%m/%d")),
+ st_line['entry_date']=time.strftime('%Y-%m-%d',time.strptime(str2date(line[115:121]),"%y/%m/%d")),
+ st_line['partner_id']=0
+ if line[31] == '1':
+ st_line_amt = - st_line_amt
+ st_line['account_id'] = def_pay_acc
+ else:
+ st_line['account_id'] = def_rec_acc
+ st_line['amount'] = st_line_amt
+ bank_statement_lines[line[2:6]]=st_line
+ bank_statement["bank_statement_line"]=bank_statement_lines
+ elif line[1] == '2':
+ st_line_name = line[2:6]
+ bank_statement_lines[st_line_name].update({'account_id': data['form']['awaiting_account']})
+
+ elif line[1] == '3':
+ # movement data record 3.1
+ st_line_name = line[2:6]
+ st_line_partner_acc = str(line[10:47]).strip()
+ cntry_number=line[10:47].strip()
+ contry_name=line[47:125].strip()
+ bank_ids = pool.get('res.partner.bank').search(cr,uid,[('acc_number','=',st_line_partner_acc)])
+ bank_statement_lines[st_line_name].update({'cntry_number': cntry_number, 'contry_name': contry_name})
+ if bank_ids:
+ bank = pool.get('res.partner.bank').browse(cr,uid,bank_ids[0],context)
+ if line and bank.partner_id:
+ bank_statement_lines[st_line_name].update({'partner_id': bank.partner_id.id})
+ if bank_statement_lines[st_line_name]['amount'] < 0 :
+ bank_statement_lines[st_line_name].update({'account_id': bank.partner_id.property_account_payable.id})
+ else :
+ bank_statement_lines[st_line_name].update({'account_id': bank.partner_id.property_account_receivable.id})
+ else:
+ nb_err += 1
+ err_log += _('The bank account %s is not defined for the partner %s.\n')%(cntry_number,contry_name)
+ bank_statement_lines[st_line_name].update({'account_id': data['form']['awaiting_account']})
+
+ bank_statement["bank_statement_line"]=bank_statement_lines
+ elif line[0]=='3':
+ if line[1] == '1':
+ st_line_name = line[2:6]
+ bank_statement_lines[st_line_name]['extra_note'] += '\n' + line[40:113]
+ elif line[1] == '2':
+ st_line_name = line[2:6]
+ bank_statement_lines[st_line_name]['extra_note'] += '\n' + line[10:115]
+ elif line[1] == '3':
+ st_line_name = line[2:6]
+ bank_statement_lines[st_line_name]['extra_note'] += '\n' + line[10:100]
+ elif line[0]=='8':
+ # new balance record
+ bal_end = list2float(line[42:57])
+ if line[41] == '1':
+ bal_end = - bal_end
+ bank_statement["balance_end_real"]= bal_end
+
+ elif line[0]=='9':
+ # footer record
+ bank_statements.append(bank_statement)
+ #end for
+ bkst_list=[]
+ for statement in bank_statements:
+ try:
+ bk_st_id = pool.get('account.bank.statement').create(cr,uid,{
+ 'journal_id': statement['journal_id'],
+ 'date':time.strftime('%Y-%m-%d',time.strptime(statement['date'],"%y/%m/%d")),
+ 'period_id':statement['period_id'],
+ 'balance_start': statement["balance_start"],
+ 'balance_end_real': statement["balance_end_real"],
+ 'state': 'draft',
+ 'name': statement['name'],
+ })
+ lines=statement["bank_statement_line"]
+ for value in lines:
+ line=lines[value]
+ reconcile_id = False
+ if line['toreconcile']:
+ rec_id = pool.get('account.move.line').search(cr, uid, [('name','=',line['name']),('reconcile_id','=',False),('account_id.reconcile','=',True)])
+ if rec_id:
+ reconcile_id = pool.get('account.bank.statement.reconcile').create(cr, uid, {
+ 'line_ids': [(6, 0, rec_id)]
+ }, context=context)
+ str_not1 = ''
+ if line.has_key('contry_name') and line.has_key('cntry_number'):
+ str_not1="Partner name:%s \n Partner Account Number:%s \n Communication:%s \n Value Date:%s \n Entry Date:%s \n"%(line["contry_name"],line["cntry_number"],line["free_comm"]+line['extra_note'],line["val_date"][0],line["entry_date"][0])
+ id=pool.get('account.bank.statement.line').create(cr,uid,{
+ 'name':line['name'],
+ 'date': line['date'],
+ 'amount': line['amount'],
+ 'partner_id':line['partner_id'] or 0,
+ 'account_id':line['account_id'],
+ 'statement_id': bk_st_id,
+ 'reconcile_id': reconcile_id,
+ 'note':str_not1,
+ 'ref':line['ref'],
+ })
+
+ str_not= "\n \n Account Number: %s \n Account Holder Name: %s " %(statement["acc_number"],statement["acc_holder"])
+ std_log += "\nStatement : %s , Date : %s, Starting Balance : %.2f , Ending Balance : %.2f \n"\
+ %(statement['name'], statement['date'], float(statement["balance_start"]), float(statement["balance_end_real"]))
+ bkst_list.append(bk_st_id)
+
+ except osv.except_osv, e:
+ cr.rollback()
+ nb_err+=1
+ err_log += '\n Application Error : ' + str(e)
+ raise # REMOVEME
+
+ except Exception, e:
+ cr.rollback()
+ nb_err+=1
+ err_log += '\n System Error : '+str(e)
+ raise # REMOVEME
+ except :
+ cr.rollback()
+ nb_err+=1
+ err_log += '\n Unknown Error'
+ raise
+ err_log += '\n\nNumber of statements : '+ str(len(bkst_list))
+ err_log += '\nNumber of error :'+ str(nb_err) +'\n'
+
+ pool.get('account.coda').create(cr, uid,{
+ 'name':codafile,
+ 'statement_ids': [(6, 0, bkst_list,)],
+ 'note':str_log1+str_not+std_log+err_log,
+ 'journal_id':data['form']['journal_id'],
+ 'date':time.strftime("%Y-%m-%d"),
+ 'user_id':uid,
+ })
+
+ return {'note':str_log1 + std_log + err_log ,'journal_id': data['form']['journal_id'], 'coda': data['form']['coda'],'statment_ids':bkst_list}
+
+
+def str2date(date_str):
+ return time.strftime("%y/%m/%d",time.strptime(date_str,"%d%m%y"))
+
+def str2float(str):
+ try:
+ return float(str)
+ except:
+ return 0.0
+
+def list2float(lst):
+ try:
+ return str2float((lambda s : s[:-3] + '.' + s[-3:])(lst))
+ except:
+ return 0.0
+
+class coda_import(wizard.interface):
+ def _action_open_window(self, cr, uid, data, context):
+ form=data['form']
+ return {
+ 'domain':"[('id','in',%s)]"%(form['statment_ids']),
+ 'name': 'Statement',
+ 'view_type': 'form',
+ 'view_mode': 'tree,form',
+ 'res_model': 'account.bank.statement',
+ 'view_id': False,
+ 'type': 'ir.actions.act_window',
+ }
+ states = {
+ 'init' : {
+ 'actions' : [],
+ 'result' : {'type' : 'form',
+ 'arch' : codawiz_form,
+ 'fields' : codawiz_fields,
+ 'state' : [('end', '_Close'),('extraction', '_Ok') ]}
+ },
+ 'extraction' : {
+ 'actions' : [_coda_parsing],
+ 'result' : {'type' : 'form',
+ 'arch' : result_form,
+ 'fields' : result_fields,
+ 'state' : [('end', '_Close'),('open', '_Open Statement')]}
+ },
+ 'open': {
+ 'actions': [],
+ 'result': {'type': 'action', 'action': _action_open_window, 'state': 'end'}
+
+ },
+
+ }
+coda_import("account.coda_import")
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/audittrail/i18n/fr.po b/addons/audittrail/i18n/fr.po
index 12c15bb34f4..fbe01ff7c9b 100644
--- a/addons/audittrail/i18n/fr.po
+++ b/addons/audittrail/i18n/fr.po
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 14:56+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-21 17:51+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:17+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: audittrail
#: model:ir.module.module,shortdesc:audittrail.module_meta_information
msgid "Audit Trail"
-msgstr ""
+msgstr "Rapport de l' audit"
#. module: audittrail
#: constraint:ir.model:0
@@ -72,7 +72,7 @@ msgstr "Ancienne valeur"
#. module: audittrail
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nom de modèle invalide pour la définition de l'action"
#. module: audittrail
#: model:ir.actions.wizard,name:audittrail.wizard_audittrail_log
@@ -143,7 +143,7 @@ msgstr "Règle AuditTrail"
#. module: audittrail
#: wizard_field:audittrail.view.log,init,to:0
msgid "Log To"
-msgstr ""
+msgstr "Connecter à"
#. module: audittrail
#: view:audittrail.log:0
@@ -158,6 +158,10 @@ msgid ""
" Subscribe Rules for read, write, create and delete on objects and check "
"logs"
msgstr ""
+"Autorise un administrateur à tracer toutes les manipulations des "
+"utilisateurs sur tous les objets du système.\n"
+" Règles d'abonnement pour la lecture, l'écriture, la création, la "
+"suppression des objets et la consultation des journaux"
#. module: audittrail
#: field:audittrail.log,timestamp:0
diff --git a/addons/base_calendar/__openerp__.py b/addons/base_calendar/__openerp__.py
index 44c36997495..de44f6e0333 100644
--- a/addons/base_calendar/__openerp__.py
+++ b/addons/base_calendar/__openerp__.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,34 +15,35 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
{
- "name" : "Basic Calendar Functionality",
- "version" : "1.0",
- "depends" : ["base"],
+ "name" : "Basic Calendar Functionality",
+ "version" : "1.0",
+ "depends" : ["base"],
'description': """Full featured calendar system that support:
- Alerts (create requests)
- Recurring events (*)
- - Invitations to others people""",
- "author" : "Tiny",
- 'category': 'Generic Modules/Others',
- 'website': 'http://www.openerp.com',
+ - Invitations to others people""",
+ "author" : "Tiny",
+ 'category': 'Generic Modules/Others',
+ 'website': 'http://www.openerp.com',
"init_xml" : [
'base_calendar_data.xml'
- ],
- "demo_xml" : [],
+ ],
+ "demo_xml" : [],
"update_xml" : [
'security/ir.model.access.csv',
- 'wizard/calendar_event_edit_all_view.xml',
- 'wizard/base_calendar_invite_attendee_view.xml',
+ 'wizard/calendar_event_edit_all_view.xml',
+ 'wizard/base_calendar_invite_attendee_view.xml',
+ 'wizard/base_calendar_set_exrule_view.xml',
'base_calendar_view.xml'
- ],
- "test" : ['test/base_calendar_test.yml'],
- "installable" : True,
- "active" : False,
+ ],
+ # "test" : ['test/base_calendar_test.yml'],
+ "installable" : True,
+ "active" : False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index c53bf131002..4c3940301b3 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -44,7 +44,6 @@ def get_recurrent_dates(rrulestring, exdate, startdate=None, exrule=None):
@param startdate: Startdate for computing recurrent dates
@return: List of Recurrent dates
"""
-
def todate(date):
val = parser.parse(''.join((re.compile('\d')).findall(date)))
return val
@@ -97,7 +96,7 @@ def real_id2base_calendar_id(real_id, recurrent_date):
return '%d-%s' % (real_id, recurrent_date)
return real_id
-def _links_get(self, cr, uid, context={}):
+def _links_get(self, cr, uid, context=None):
"""
Get request link.
@param cr: the current row, from the database cursor,
@@ -213,7 +212,9 @@ class calendar_attendee(osv.osv):
def _get_address(self, name=None, email=None):
"""
- Get Email Address
+ Gives email information in ical CAL-ADDRESS type format
+ @param name: Name for CAL-ADDRESS value
+ @param email: Email address for CAL-ADDRESS value
"""
if name and email:
name += ':'
@@ -221,7 +222,7 @@ class calendar_attendee(osv.osv):
def _compute_data(self, cr, uid, ids, name, arg, context):
"""
- Compute data on field.
+ Compute data on function fields for attendee values .
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar attendee’s IDs.
@@ -241,6 +242,7 @@ class calendar_attendee(osv.osv):
else:
result[id][name] = self._get_address(attdata.sent_by_uid.name, \
attdata.sent_by_uid.address_id.email)
+
if name == 'cn':
if attdata.user_id:
result[id][name] = attdata.user_id.name
@@ -248,40 +250,47 @@ class calendar_attendee(osv.osv):
result[id][name] = attdata.partner_address_id.name or attdata.partner_id.name
else:
result[id][name] = attdata.email or ''
+
if name == 'delegated_to':
todata = []
for child in attdata.child_ids:
if child.email:
todata.append('MAILTO:' + child.email)
result[id][name] = ', '.join(todata)
+
if name == 'delegated_from':
fromdata = []
for parent in attdata.parent_ids:
if parent.email:
fromdata.append('MAILTO:' + parent.email)
result[id][name] = ', '.join(fromdata)
+
if name == 'event_date':
if attdata.ref:
result[id][name] = attdata.ref.date
else:
result[id][name] = False
+
if name == 'event_end_date':
if attdata.ref:
result[id][name] = attdata.ref.date_deadline
else:
result[id][name] = False
+
if name == 'sent_by_uid':
if attdata.ref:
result[id][name] = (attdata.ref.user_id.id, attdata.ref.user_id.name)
else:
result[id][name] = uid
+
if name == 'language':
user_obj = self.pool.get('res.users')
lang = user_obj.read(cr, uid, uid, ['context_lang'], context=context)['context_lang']
result[id][name] = lang.replace('_', '-')
+
return result
- def _links_get(self, cr, uid, context={}):
+ def _links_get(self, cr, uid, context=None):
"""
Get request link for ref field in calendar attendee.
@param cr: the current row, from the database cursor,
@@ -297,7 +306,7 @@ class calendar_attendee(osv.osv):
def _lang_get(self, cr, uid, context={}):
"""
- Get language for language function field.
+ Get language for language selection field.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param context: A standard dictionary for contextual values
@@ -313,60 +322,60 @@ class calendar_attendee(osv.osv):
'cutype': fields.selection([('individual', 'Individual'), \
('group', 'Group'), ('resource', 'Resource'), \
('room', 'Room'), ('unknown', '') ], \
- 'Invite Type', help="Specify the type of Invitation"),
- 'member': fields.char('Member', size=124,
- help="Indicate the groups that the attendee belongs to"),
+ 'Invite Type', help="Specify the type of Invitation"),
+ 'member': fields.char('Member', size=124,
+ help="Indicate the groups that the attendee belongs to"),
'role': fields.selection([('req-participant', 'Participation required'), \
('chair', 'Chair Person'), \
('opt-participant', 'Optional Participation'), \
('non-participant', 'For information Purpose')], 'Role', \
- help='Participation role for the calendar user'),
- 'state': fields.selection([('tentative', 'Tentative'),
- ('needs-action', 'Needs Action'),
- ('accepted', 'Accepted'),
- ('declined', 'Declined'),
+ help='Participation role for the calendar user'),
+ 'state': fields.selection([('tentative', 'Tentative'),
+ ('needs-action', 'Needs Action'),
+ ('accepted', 'Accepted'),
+ ('declined', 'Declined'),
('delegated', 'Delegated')], 'State', readonly=True, \
- help="Status of the attendee's participation"),
- 'rsvp': fields.boolean('Required Reply?',
- help="Indicats whether the favor of a reply is requested"),
+ help="Status of the attendee's participation"),
+ 'rsvp': fields.boolean('Required Reply?',
+ help="Indicats whether the favor of a reply is requested"),
'delegated_to': fields.function(_compute_data, method=True, \
string='Delegated To', type="char", size=124, store=True, \
multi='delegated_to', help="The users that the original \
-request was delegated to"),
+request was delegated to"),
'delegated_from': fields.function(_compute_data, method=True, string=\
- 'Delegated From', type="char", store=True, size=124, multi='delegated_from'),
+ 'Delegated From', type="char", store=True, size=124, multi='delegated_from'),
'parent_ids': fields.many2many('calendar.attendee', 'calendar_attendee_parent_rel', \
- 'attendee_id', 'parent_id', 'Delegrated From'),
+ 'attendee_id', 'parent_id', 'Delegrated From'),
'child_ids': fields.many2many('calendar.attendee', 'calendar_attendee_child_rel', \
- 'attendee_id', 'child_id', 'Delegrated To'),
+ 'attendee_id', 'child_id', 'Delegrated To'),
'sent_by': fields.function(_compute_data, method=True, string='Sent By', \
type="char", multi='sent_by', store=True, size=124, \
- help="Specify the user that is acting on behalf of the calendar user"),
+ help="Specify the user that is acting on behalf of the calendar user"),
'sent_by_uid': fields.function(_compute_data, method=True, string='Sent By User', \
- type="many2one", relation="res.users", multi='sent_by_uid'),
+ type="many2one", relation="res.users", multi='sent_by_uid'),
'cn': fields.function(_compute_data, method=True, string='Common name', \
- type="char", size=124, multi='cn', store=True),
+ type="char", size=124, multi='cn', store=True),
'dir': fields.char('URI Reference', size=124, help="Reference to the URI\
-that points to the directory information corresponding to the attendee."),
+that points to the directory information corresponding to the attendee."),
'language': fields.function(_compute_data, method=True, string='Language', \
type="selection", selection=_lang_get, multi='language', \
store=True, help="To specify the language for text values in a\
-property or property parameter."),
- 'user_id': fields.many2one('res.users', 'User'),
- 'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
+property or property parameter."),
+ 'user_id': fields.many2one('res.users', 'User'),
+ 'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', \
- relation='res.partner', string='Partner', help="Partner related to contact"),
- 'email': fields.char('Email', size=124, help="Email of Invited Person"),
+ relation='res.partner', string='Partner', help="Partner related to contact"),
+ 'email': fields.char('Email', size=124, help="Email of Invited Person"),
'event_date': fields.function(_compute_data, method=True, string='Event Date', \
- type="datetime", multi='event_date'),
+ type="datetime", multi='event_date'),
'event_end_date': fields.function(_compute_data, method=True, \
string='Event End Date', type="datetime", \
- multi='event_end_date'),
- 'ref': fields.reference('Event Ref', selection=_links_get, size=128),
- 'availability': fields.selection([('free', 'Free'), ('busy', 'Busy')], 'Free/Busy', readonly="True"),
+ multi='event_end_date'),
+ 'ref': fields.reference('Event Ref', selection=_links_get, size=128),
+ 'availability': fields.selection([('free', 'Free'), ('busy', 'Busy')], 'Free/Busy', readonly="True"),
}
_defaults = {
- 'state': lambda *x: 'needs-action',
+ 'state': lambda *x: 'needs-action',
}
def get_ics_file(self, cr, uid, event_obj, context=None):
@@ -401,7 +410,7 @@ property or property parameter."),
event.add('location').value = event_obj.location
if event_obj.rrule:
event.add('rrule').value = event_obj.rrule
-
+
if event_obj.alarm_id:
# computes alarm data
valarm = event.add('valarm')
@@ -422,10 +431,10 @@ property or property parameter."),
if interval == 'minutes':
delta = timedelta(minutes=duration)
trigger.value = delta
-
+
# Compute other details
valarm.add('DESCRIPTION').value = alarm_data['name'] or 'OpenERP'
-
+
for attendee in event_obj.attendee_ids:
attendee_add = event.add('attendee')
attendee_add.params['CUTYPE'] = [str(attendee.cutype)]
@@ -435,15 +444,18 @@ property or property parameter."),
res = cal.serialize()
return res
- def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context={}):
+ def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context=None):
"""
- Send mail for calendar attendee.
+ Send mail for event invitation to event attendees.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param ids: List of calendar attendee’s IDs.
+ @param ids: List of attendee’s IDs.
+ @param email_from: Email address for user sending the mail
@param context: A standard dictionary for contextual values
@return: True
"""
+ if not context:
+ context = {}
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.name
for att in self.browse(cr, uid, ids, context=context):
@@ -457,26 +469,26 @@ property or property parameter."),
att_infos.append(((att2.user_id and att2.user_id.name) or \
(att2.partner_id and att2.partner_id.name) or \
att2.email) + ' - Status: ' + att2.state.title())
- body_vals = {'name': res_obj.name,
- 'start_date': res_obj.date,
- 'end_date': res_obj.date_deadline or False,
- 'description': res_obj.description or '-',
- 'location': res_obj.location or '-',
- 'attendees': '
'.join(att_infos),
- 'user': res_obj.user_id and res_obj.user_id.name or 'OpenERP User',
- 'sign': sign,
+ body_vals = {'name': res_obj.name,
+ 'start_date': res_obj.date,
+ 'end_date': res_obj.date_deadline or False,
+ 'description': res_obj.description or '-',
+ 'location': res_obj.location or '-',
+ 'attendees': '
'.join(att_infos),
+ 'user': res_obj.user_id and res_obj.user_id.name or 'OpenERP User',
+ 'sign': sign,
'company': company
}
body = html_invitation % body_vals
attach = self.get_ics_file(cr, uid, res_obj, context=context)
if mail_to and email_from:
tools.email_send(
- email_from,
- mail_to,
- sub,
- body,
- attach=attach and [('invitation.ics', attach)] or None,
- subtype='html',
+ email_from,
+ mail_to,
+ sub,
+ body,
+ attach=attach and [('invitation.ics', attach)] or None,
+ subtype='html',
reply_to=email_from
)
return True
@@ -487,7 +499,7 @@ property or property parameter."),
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar attendee’s IDs.
- @param user_id: User id
+ @param user_id: Changed value of User id
@return: dictionary of value. which put value in email and availability fields.
"""
@@ -498,24 +510,27 @@ property or property parameter."),
return {'value': {'email': user.address_id.email, 'availability':user.availability}}
def do_tentative(self, cr, uid, ids, context=None, *args):
- """ @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of calendar attendee’s IDs
- @param *args: Get Tupple value
- @param context: A standard dictionary for contextual values """
+ """ Makes event invitation as Tentative
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param ids: List of calendar attendee’s IDs
+ @param *args: Get Tupple value
+ @param context: A standard dictionary for contextual values
+ """
self.write(cr, uid, ids, {'state': 'tentative'}, context)
def do_accept(self, cr, uid, ids, context=None, *args):
"""
- Update state which value is accepted.
+ Update state of invitation as Accepted and
+ if the invited user is other then event user it will make a copy of this event for invited user
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar attendee’s IDs.
+ @param context: A standard dictionary for contextual values
@return: True
"""
-
if not context:
context = {}
@@ -532,21 +547,23 @@ property or property parameter."),
return True
def do_decline(self, cr, uid, ids, context=None, *args):
- """ @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of calendar attendee’s IDs
- @param *args: Get Tupple value
- @param context: A standard dictionary for contextual values """
+ """ Marks event invitation as Declined
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param ids: List of calendar attendee’s IDs
+ @param *args: Get Tupple value
+ @param context: A standard dictionary for contextual values """
self.write(cr, uid, ids, {'state': 'declined'}, context)
def create(self, cr, uid, vals, context=None):
- """ @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param vals: Get Values
- @param context: A standard dictionary for contextual values """
+ """ Overrides orm create method.
+ @param self: The object pointer
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param vals: Get Values
+ @param context: A standard dictionary for contextual values """
if not context:
context = {}
@@ -561,46 +578,50 @@ property or property parameter."),
calendar_attendee()
class res_alarm(osv.osv):
+ """Resource Alarm """
_name = 'res.alarm'
_description = 'Basic Alarm Information'
+
_columns = {
- 'name':fields.char('Name', size=256, required=True),
+ 'name':fields.char('Name', size=256, required=True),
'trigger_occurs': fields.selection([('before', 'Before'), \
('after', 'After')], \
- 'Triggers', required=True),
+ 'Triggers', required=True),
'trigger_interval': fields.selection([('minutes', 'Minutes'), \
('hours', 'Hours'), \
('days', 'Days')], 'Interval', \
- required=True),
- 'trigger_duration': fields.integer('Duration', required=True),
+ required=True),
+ 'trigger_duration': fields.integer('Duration', required=True),
'trigger_related': fields.selection([('start', 'The event starts'), \
('end', 'The event ends')], \
- 'Related to', required=True),
+ 'Related to', required=True),
'duration': fields.integer('Duration', help="""Duration' and 'Repeat' \
-are both optional, but if one occurs, so MUST the other"""),
- 'repeat': fields.integer('Repeat'),
+are both optional, but if one occurs, so MUST the other"""),
+ 'repeat': fields.integer('Repeat'),
'active': fields.boolean('Active', help="If the active field is set to \
true, it will allow you to hide the event alarm information without removing it.")
}
_defaults = {
- 'trigger_interval': lambda *x: 'minutes',
- 'trigger_duration': lambda *x: 5,
- 'trigger_occurs': lambda *x: 'before',
- 'trigger_related': lambda *x: 'start',
- 'active': lambda *x: 1,
+ 'trigger_interval': lambda *x: 'minutes',
+ 'trigger_duration': lambda *x: 5,
+ 'trigger_occurs': lambda *x: 'before',
+ 'trigger_related': lambda *x: 'start',
+ 'active': lambda *x: 1,
}
- def do_alarm_create(self, cr, uid, ids, model, date, context={}):
+ def do_alarm_create(self, cr, uid, ids, model, date, context=None):
"""
- Create Alarm for meeting.
+ Create Alarm for event.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of res alarm’s IDs.
@param model: Model name.
+ @param date: Event date
@param context: A standard dictionary for contextual values
@return: True
"""
-
+ if not context:
+ context = {}
alarm_obj = self.pool.get('calendar.alarm')
ir_obj = self.pool.get('ir.model')
model_id = ir_obj.search(cr, uid, [('model', '=', model)])[0]
@@ -615,20 +636,20 @@ true, it will allow you to hide the event alarm information without removing it.
self.do_alarm_unlink(cr, uid, [data.id], model)
if basic_alarm:
vals = {
- 'action': 'display',
- 'description': data.description,
- 'name': data.name,
- 'attendee_ids': [(6, 0, map(lambda x:x.id, data.attendee_ids))],
- 'trigger_related': basic_alarm.trigger_related,
- 'trigger_duration': basic_alarm.trigger_duration,
- 'trigger_occurs': basic_alarm.trigger_occurs,
- 'trigger_interval': basic_alarm.trigger_interval,
- 'duration': basic_alarm.duration,
- 'repeat': basic_alarm.repeat,
- 'state': 'run',
- 'event_date': data[date],
- 'res_id': data.id,
- 'model_id': model_id,
+ 'action': 'display',
+ 'description': data.description,
+ 'name': data.name,
+ 'attendee_ids': [(6, 0, map(lambda x:x.id, data.attendee_ids))],
+ 'trigger_related': basic_alarm.trigger_related,
+ 'trigger_duration': basic_alarm.trigger_duration,
+ 'trigger_occurs': basic_alarm.trigger_occurs,
+ 'trigger_interval': basic_alarm.trigger_interval,
+ 'duration': basic_alarm.duration,
+ 'repeat': basic_alarm.repeat,
+ 'state': 'run',
+ 'event_date': data[date],
+ 'res_id': data.id,
+ 'model_id': model_id,
'user_id': uid
}
alarm_id = alarm_obj.create(cr, uid, vals)
@@ -638,16 +659,17 @@ true, it will allow you to hide the event alarm information without removing it.
cr.commit()
return True
- def do_alarm_unlink(self, cr, uid, ids, model, context={}):
+ def do_alarm_unlink(self, cr, uid, ids, model, context=None):
"""
Delete alarm specified in ids
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of res alarm’s IDs.
- @param model: Model name.
+ @param model: Model name for which alarm is to be cleared.
@return: True
"""
-
+ if not context:
+ context = {}
alarm_obj = self.pool.get('calendar.alarm')
ir_obj = self.pool.get('ir.model')
model_id = ir_obj.search(cr, uid, [('model', '=', model)])[0]
@@ -670,51 +692,53 @@ class calendar_alarm(osv.osv):
__attribute__ = {}
_columns = {
- 'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
+ 'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
'name': fields.char('Summary', size=124, help="""Contains the text to be \
used as the message subject for email \
- or contains the text to be used for display"""),
+ or contains the text to be used for display"""),
'action': fields.selection([('audio', 'Audio'), ('display', 'Display'), \
('procedure', 'Procedure'), ('email', 'Email') ], 'Action', \
- required=True, help="Defines the action to be invoked when an alarm is triggered"),
+ required=True, help="Defines the action to be invoked when an alarm is triggered"),
'description': fields.text('Description', help='Provides a more complete \
description of the calendar component, than that \
- provided by the "SUMMARY" property'),
+ provided by the "SUMMARY" property'),
'attendee_ids': fields.many2many('calendar.attendee', 'alarm_attendee_rel', \
- 'alarm_id', 'attendee_id', 'Attendees', readonly=True),
+ 'alarm_id', 'attendee_id', 'Attendees', readonly=True),
'attach': fields.binary('Attachment', help="""* Points to a sound resource,\
which is rendered when the alarm is triggered for audio,
* File which is intended to be sent as message attachments for email,
* Points to a procedure resource, which is invoked when\
- the alarm is triggered for procedure."""),
- 'res_id': fields.integer('Resource ID'),
- 'model_id': fields.many2one('ir.model', 'Model'),
- 'user_id': fields.many2one('res.users', 'Owner'),
- 'event_date': fields.datetime('Event Date'),
- 'event_end_date': fields.datetime('Event End Date'),
- 'trigger_date': fields.datetime('Trigger Date', readonly="True"),
+ the alarm is triggered for procedure."""),
+ 'res_id': fields.integer('Resource ID'),
+ 'model_id': fields.many2one('ir.model', 'Model'),
+ 'user_id': fields.many2one('res.users', 'Owner'),
+ 'event_date': fields.datetime('Event Date'),
+ 'event_end_date': fields.datetime('Event End Date'),
+ 'trigger_date': fields.datetime('Trigger Date', readonly="True"),
'state':fields.selection([
- ('draft', 'Draft'),
- ('run', 'Run'),
- ('stop', 'Stop'),
- ('done', 'Done'),
- ], 'State', select=True, readonly=True),
+ ('draft', 'Draft'),
+ ('run', 'Run'),
+ ('stop', 'Stop'),
+ ('done', 'Done'),
+ ], 'State', select=True, readonly=True),
}
_defaults = {
- 'action': lambda *x: 'email',
- 'state': lambda *x: 'run',
+ 'action': lambda *x: 'email',
+ 'state': lambda *x: 'run',
}
- def create(self, cr, uid, vals, context={}):
+
+ def create(self, cr, uid, vals, context=None):
"""
- create new record.
+ Overrides orm create method.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param vals: dictionary of fields value.{‘name_of_the_field’: value, ...}
@param context: A standard dictionary for contextual values
@return: new record id for calendar_alarm.
"""
-
+ if not context:
+ context = {}
event_date = vals.get('event_date', False)
if event_date:
dtstart = datetime.strptime(vals['event_date'], "%Y-%m-%d %H:%M:%S")
@@ -731,7 +755,7 @@ class calendar_alarm(osv.osv):
def do_run_scheduler(self, cr, uid, automatic=False, use_new_cursor=False, \
context=None):
- """
+ """Scheduler for event reminder
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -754,11 +778,11 @@ class calendar_alarm(osv.osv):
for alarm in self.browse(cr, uid, alarm_ids):
if alarm.action == 'display':
value = {
- 'name': alarm.name,
- 'act_from': alarm.user_id.id,
- 'act_to': alarm.user_id.id,
- 'body': alarm.description,
- 'trigger_date': alarm.trigger_date,
+ 'name': alarm.name,
+ 'act_from': alarm.user_id.id,
+ 'act_to': alarm.user_id.id,
+ 'body': alarm.description,
+ 'trigger_date': alarm.trigger_date,
'ref_doc1': '%s,%s' % (alarm.model_id.model, alarm.res_id)
}
request_id = request_obj.create(cr, uid, value)
@@ -788,9 +812,9 @@ class calendar_alarm(osv.osv):
mail_to.append(att.user_id.address_id.email)
if mail_to:
tools.email_send(
- tools.config.get('email_from', False),
- mail_to,
- sub,
+ tools.config.get('email_from', False),
+ mail_to,
+ sub,
body
)
self.write(cr, uid, [alarm.id], {'state':'done'})
@@ -808,7 +832,7 @@ class calendar_event(osv.osv):
return [(x.lower(), x) for x in pytz.all_timezones]
def onchange_allday(self, cr, uid, ids, allday, context={}):
- """
+ """Sets duration as 24 Hours if event is selcted for all day
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -820,23 +844,23 @@ class calendar_event(osv.osv):
return {}
event = self.browse(cr, uid, ids, context=context)[0]
value = {
- 'date': event.date and event.date[:11] + '00:00:00',
- 'date_deadline': event.date_deadline and event.date_deadline[:11] + '00:00:00',
'duration': 24
}
return {'value': value}
- def onchange_dates(self, cr, uid, ids, start_date, duration=False, end_date=False, allday=False, context={}):
- """
+ def onchange_dates(self, cr, uid, ids, start_date, duration=False, end_date=False, allday=False, context=None):
+ """Returns duration and/or end date based on values passed
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of calendar event’s IDs.
- @param start_date: Get starting date
- @param duration: Get Duration between start date and end date or False
- @param end_date: Get Ending Date or False
+ @param start_date: Starting date
+ @param duration: Duration between start date and end date
+ @param end_date: Ending Datee
@param context: A standard dictionary for contextual values
"""
+ if not context:
+ context = {}
value = {}
if not start_date:
return value
@@ -845,10 +869,7 @@ class calendar_event(osv.osv):
value['duration'] = duration
if allday: # For all day event
- start = start_date[:11] + '00:00:00'
value = {
- 'date': start,
- 'date_deadline': start,
'duration': 24
}
return {'value': value}
@@ -865,19 +886,21 @@ class calendar_event(osv.osv):
return {'value': value}
- def _set_rrulestring(self, cr, uid, id, name, value, arg, context):
+ def _set_rrulestring(self, cr, uid, id, name, value, arg, context=None):
"""
- Set rule string.
+ Sets values of fields that defines event recurrence from the value of rrule string
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param id: List of calendar event's ids.
@param context: A standard dictionary for contextual values
@return: dictionary of rrule value.
"""
+ if not context:
+ context = {}
cr.execute("UPDATE %s set freq='None',interval=0,count=0,end_date=Null,\
mo=False,tu=False,we=False,th=False,fr=False,sa=False,su=False,\
day=0,select1='date',month_list=Null ,byday=Null where id=%s" % (self._table, id))
-
+
if not value:
cr.execute("UPDATE %s set rrule_type='none' where id=%s" % (self._table, id))
return True
@@ -906,19 +929,19 @@ class calendar_event(osv.osv):
for day in val['byday'].split(','):
new_val[day] = True
val.pop('byday')
-
+
if val.get('until'):
until = parser.parse(''.join((re.compile('\d')).findall(val.get('until'))))
new_val['end_date'] = until.strftime('%Y-%m-%d')
val.pop('until')
new_val.pop('until')
-
+
if val.get('bymonthday'):
new_val['day'] = val.get('bymonthday')
val.pop('bymonthday')
new_val['select1'] = 'date'
new_val.pop('bymonthday')
-
+
if val.get('byday'):
d = val.get('byday')
if '-' in d:
@@ -928,12 +951,12 @@ class calendar_event(osv.osv):
new_val['byday'] = d[:1]
new_val['week_list'] = d[1:3].upper()
new_val['select1'] = 'day'
-
+
if val.get('bymonth'):
new_val['month_list'] = val.get('bymonth')
val.pop('bymonth')
new_val.pop('bymonth')
-
+
for k, v in new_val.items():
temp = ", %s='%s'" % (k, v)
qry += temp
@@ -941,16 +964,16 @@ class calendar_event(osv.osv):
whr = " where id=%(id)s"
qry = qry + whr
val.update({
- 'table': self._table,
- 'rule_type': rrule_type,
- 'id': id,
+ 'table': self._table,
+ 'rule_type': rrule_type,
+ 'id': id,
})
cr.execute(qry % val)
return True
def _get_rulestring(self, cr, uid, ids, name, arg, context=None):
"""
- Get rule string.
+ Gets Recurrence rule string according to value type RECUR of iCalendar from the values given.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param id: List of calendar event's ids.
@@ -968,7 +991,7 @@ class calendar_event(osv.osv):
raise osv.except_osv('Warning!', 'Interval can not be Negative')
if datas.get('count', 0) < 0:
raise osv.except_osv('Warning!', 'Count can not be Negative')
- rrule_custom = self.compute_rule_string(cr, uid, datas,\
+ rrule_custom = self.compute_rule_string(cr, uid, datas, \
context=context)
result[event] = rrule_custom
else:
@@ -977,40 +1000,40 @@ class calendar_event(osv.osv):
return result
_columns = {
- 'id': fields.integer('ID'),
- 'sequence': fields.integer('Sequence'),
- 'name': fields.char('Description', size=64, required=True),
- 'date': fields.datetime('Date'),
- 'date_deadline': fields.datetime('Deadline'),
- 'create_date': fields.datetime('Created', readonly=True),
- 'duration': fields.float('Duration'),
- 'description': fields.text('Your action'),
+ 'id': fields.integer('ID'),
+ 'sequence': fields.integer('Sequence'),
+ 'name': fields.char('Description', size=64, required=False),
+ 'date': fields.datetime('Date'),
+ 'date_deadline': fields.datetime('Deadline'),
+ 'create_date': fields.datetime('Created', readonly=True),
+ 'duration': fields.float('Duration'),
+ 'description': fields.text('Your action'),
'class': fields.selection([('public', 'Public'), ('private', 'Private'), \
- ('confidential', 'Confidential')], 'Mark as'),
- 'location': fields.char('Location', size=264, help="Location of Event"),
+ ('confidential', 'Confidential')], 'Mark as'),
+ 'location': fields.char('Location', size=264, help="Location of Event"),
'show_as': fields.selection([('free', 'Free'), ('busy', 'Busy')], \
- 'Show as'),
- 'base_calendar_url': fields.char('Caldav URL', size=264),
+ 'Show as'),
+ 'base_calendar_url': fields.char('Caldav URL', size=264),
'exdate': fields.text('Exception Date/Times', help="This property \
-defines the list of date/time exceptions for arecurring calendar component."),
+defines the list of date/time exceptions for arecurring calendar component."),
'exrule': fields.char('Exception Rule', size=352, help="defines a \
-rule or repeating pattern for an exception to a recurrence set"),
+rule or repeating pattern for an exception to a recurrence set"),
'rrule': fields.function(_get_rulestring, type='char', size=124, method=True, \
string='Recurrent Rule', store=True, \
fnct_inv=_set_rrulestring, help='Defines a\
rule or repeating pattern for recurring events\n\
e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
- FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU'),
+ FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=-1SU'),
'rrule_type': fields.selection([('none', ''), ('daily', 'Daily'), \
('weekly', 'Weekly'), ('monthly', 'Monthly'), \
- ('yearly', 'Yearly'), ('custom', 'Custom')], 'Recurrency'),
- 'alarm_id': fields.many2one('res.alarm', 'Alarm'),
- 'base_calendar_alarm_id': fields.many2one('calendar.alarm', 'Alarm'),
- 'recurrent_uid': fields.integer('Recurrent ID'),
- 'recurrent_id': fields.datetime('Recurrent ID date'),
+ ('yearly', 'Yearly'), ('custom', 'Custom')], 'Recurrency'),
+ 'alarm_id': fields.many2one('res.alarm', 'Alarm'),
+ 'base_calendar_alarm_id': fields.many2one('calendar.alarm', 'Alarm'),
+ 'recurrent_uid': fields.integer('Recurrent ID'),
+ 'recurrent_id': fields.datetime('Recurrent ID date'),
'vtimezone': fields.related('user_id', 'context_tz', type='char', size=24, \
- string='Timezone', store=True),
- 'user_id': fields.many2one('res.users', 'Responsible'),
+ string='Timezone', store=True),
+ 'user_id': fields.many2one('res.users', 'Responsible'),
'freq': fields.selection([('None', 'No Repeat'), \
('secondly', 'Secondly'), \
('minutely', 'Minutely'), \
@@ -1018,44 +1041,44 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
('daily', 'Daily'), \
('weekly', 'Weekly'), \
('monthly', 'Monthly'), \
- ('yearly', 'Yearly')], 'Frequency'),
- 'interval': fields.integer('Interval'),
- 'count': fields.integer('Count'),
- 'mo': fields.boolean('Mon'),
- 'tu': fields.boolean('Tue'),
- 'we': fields.boolean('Wed'),
- 'th': fields.boolean('Thu'),
- 'fr': fields.boolean('Fri'),
- 'sa': fields.boolean('Sat'),
- 'su': fields.boolean('Sun'),
+ ('yearly', 'Yearly')], 'Frequency'),
+ 'interval': fields.integer('Interval'),
+ 'count': fields.integer('Count'),
+ 'mo': fields.boolean('Mon'),
+ 'tu': fields.boolean('Tue'),
+ 'we': fields.boolean('Wed'),
+ 'th': fields.boolean('Thu'),
+ 'fr': fields.boolean('Fri'),
+ 'sa': fields.boolean('Sat'),
+ 'su': fields.boolean('Sun'),
'select1': fields.selection([('date', 'Date of month'), \
- ('day', 'Day of month')], 'Option'),
- 'day': fields.integer('Date of month'),
+ ('day', 'Day of month')], 'Option'),
+ 'day': fields.integer('Date of month'),
'week_list': fields.selection([('MO', 'Monday'), ('TU', 'Tuesday'), \
('WE', 'Wednesday'), ('TH', 'Thursday'), \
('FR', 'Friday'), ('SA', 'Saturday'), \
- ('SU', 'Sunday')], 'Weekday'),
+ ('SU', 'Sunday')], 'Weekday'),
'byday': fields.selection([('1', 'First'), ('2', 'Second'), \
('3', 'Third'), ('4', 'Fourth'), \
('5', 'Fifth'), ('-1', 'Last')], 'By day'),
'month_list': fields.selection(months.items(), 'Month'),
'end_date': fields.date('Repeat Until'),
- 'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel',\
- 'event_id', 'attendee_id', 'Attendees'),
+ 'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel', \
+ 'event_id', 'attendee_id', 'Attendees'),
'allday': fields.boolean('All Day'),
'active': fields.boolean('Active', help="If the active field is set to \
true, it will allow you to hide the event alarm information without removing it.")
}
_defaults = {
- 'class': lambda *a: 'public',
- 'show_as': lambda *a: 'busy',
- 'freq': lambda *x: 'None',
- 'select1': lambda *x: 'date',
- 'interval': lambda *x: 1,
- 'active': lambda *x: 1,
+ 'class': lambda *a: 'public',
+ 'show_as': lambda *a: 'busy',
+ 'freq': lambda *x: 'None',
+ 'select1': lambda *x: 'date',
+ 'interval': lambda *x: 1,
+ 'active': lambda *x: 1,
}
-
+
def open_event(self, cr, uid, ids, context=None):
"""
Open Event From for Editing
@@ -1067,11 +1090,11 @@ true, it will allow you to hide the event alarm information without removing it.
"""
if not context:
context = {}
-
+
data_obj = self.pool.get('ir.model.data')
-
+
value = {}
-
+
id2 = data_obj._get_id(cr, uid, 'base_calendar', 'event_form_view')
id3 = data_obj._get_id(cr, uid, 'base_calendar', 'event_tree_view')
id4 = data_obj._get_id(cr, uid, 'base_calendar', 'event_calendar_view')
@@ -1088,32 +1111,32 @@ true, it will allow you to hide the event alarm information without removing it.
'view_mode': 'form,tree',
'res_model': 'calendar.event',
'view_id': False,
- 'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
+ 'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
'type': 'ir.actions.act_window',
'res_id': base_calendar_id2real_id(id),
'nodestroy': True
}
-
+
return value
def modify_this(self, cr, uid, event_id, defaults, real_date, context=None, *args):
- """
+ """Modifies only one event record out of virtual recurrent events
+ and creates new event as a specific instance of a Recurring Event",
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param event_id: Get Event_id
- @param real_date: Get Real Date
+ @param event_id: Id of Recurring Event
+ @param real_date: Date of event recurrence that is being modified
@param context: A standard dictionary for contextual values
- @param *args: Get Tuppel Value
-
+ @param *args: Get Tupple Value
"""
event_id = base_calendar_id2real_id(event_id)
datas = self.read(cr, uid, event_id, context=context)
defaults.update({
- 'recurrent_uid': base_calendar_id2real_id(datas['id']),
- 'recurrent_id': defaults.get('date') or real_date,
- 'rrule_type': 'none',
+ 'recurrent_uid': base_calendar_id2real_id(datas['id']),
+ 'recurrent_id': defaults.get('date') or real_date,
+ 'rrule_type': 'none',
'rrule': ''
})
exdate = datas['exdate'] and datas['exdate'].split(',') or []
@@ -1125,13 +1148,14 @@ true, it will allow you to hide the event alarm information without removing it.
def modify_all(self, cr, uid, event_ids, defaults, context=None, *args):
"""
- Modify name, date, date_deadline fields.
+ Modifies the recurring event
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param event_ids: List of crm meeting’s IDs.
+ @param context: A standard dictionary for contextual values
@return: True
"""
-
+
for event_id in event_ids:
event_id = base_calendar_id2real_id(event_id)
@@ -1146,11 +1170,12 @@ true, it will allow you to hide the event alarm information without removing it.
qry += ", location = '%(location)s'"
qry += "WHERE id = %s" % (event_id)
cr.execute(qry %(defaults))
-
+
return True
def get_recurrent_ids(self, cr, uid, select, base_start_date, base_until_date, limit=100):
- """
+ """Gives virtual event ids for recurring events based on value of Recurrence Rule
+ This method gives ids of dates that comes between start date and end date of calendar views
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -1167,7 +1192,7 @@ true, it will allow you to hide the event alarm information without removing it.
result = []
if ids and (base_start_date or base_until_date):
cr.execute("select m.id, m.rrule, m.date, m.date_deadline, \
- m.exdate from " + self._table + \
+ m.exdate, m.exrule from " + self._table + \
" m where m.id in ("\
+ ','.join(map(lambda x: str(x), ids))+")")
@@ -1214,7 +1239,7 @@ true, it will allow you to hide the event alarm information without removing it.
new_rule = '%s=%s' % (name, value)
new_rrule_str.append(new_rule)
new_rrule_str = ';'.join(new_rrule_str)
- rdates = get_recurrent_dates(str(new_rrule_str), exdate, start_date)
+ rdates = get_recurrent_dates(str(new_rrule_str), exdate, start_date, data['exrule'])
for rdate in rdates:
r_date = datetime.strptime(rdate, "%Y-%m-%d %H:%M:%S")
if start_date and r_date < start_date:
@@ -1229,15 +1254,16 @@ true, it will allow you to hide the event alarm information without removing it.
if isinstance(select, (str, int, long)):
return ids and ids[0] or False
return ids
-
+
def compute_rule_string(self, cr, uid, datas, context=None, *args):
"""
- Compute rule string.
+ Compute rule string according to value type RECUR of iCalendar from the values given.
@param self: the object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param datas: dictionary of freq and interval value.
- @return: string value which compute FREQILY;INTERVAL
+ @param context: A standard dictionary for contextual values
+ @return: String value of the format RECUR of iCalendar
"""
weekdays = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su']
@@ -1248,9 +1274,9 @@ true, it will allow you to hide the event alarm information without removing it.
freq = datas.get('freq')
if freq == 'None':
return ''
-
+
interval_srting = datas.get('interval') and (';INTERVAL=' + str(datas.get('interval'))) or ''
-
+
if freq == 'weekly':
byday = map(lambda x: x.upper(), filter(lambda x: datas.get(x) and x in weekdays, datas))
@@ -1286,7 +1312,7 @@ true, it will allow you to hide the event alarm information without removing it.
return rrule_string
- def search(self, cr, uid, args, offset=0, limit=100, order=None,
+ def search(self, cr, uid, args, offset=0, limit=100, order=None,
context=None, count=False):
"""
Overrides orm search method.
@@ -1295,6 +1321,8 @@ true, it will allow you to hide the event alarm information without removing it.
@param args: list of tuples of form [(‘name_of_the_field’, ‘operator’, value), ...].
@param offset: The Number of Results to Pass
@param limit: The Number of Results to Return
+ @param context: A standard dictionary for contextual values
+ @param count: If its True the method returns number of records instead of ids
@return: List of id
"""
args_without_date = []
@@ -1317,14 +1345,16 @@ true, it will allow you to hide the event alarm information without removing it.
return self.get_recurrent_ids(cr, uid, res, start_date, until_date, limit)
+
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
"""
- Writes values in one or several fields.
+ Overrides orm write method.
@param self: the object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of crm meeting's ids
@param vals: Dictionary of field value.
+ @param context: A standard dictionary for contextual values
@return: True
"""
if not context:
@@ -1348,7 +1378,7 @@ true, it will allow you to hide the event alarm information without removing it.
event_id = base_calendar_id2real_id(event_id)
if not event_id in new_ids:
new_ids.append(event_id)
-
+
res = super(calendar_event, self).write(cr, uid, new_ids, vals, context=context)
if vals.has_key('alarm_id') or vals.has_key('base_calendar_alarm_id'):
alarm_obj = self.pool.get('res.alarm')
@@ -1364,6 +1394,7 @@ true, it will allow you to hide the event alarm information without removing it.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of crm meeting's ids
+ @param context: A standard dictionary for contextual values
@return: the object list.
"""
if isinstance(ids, (str, int, long)):
@@ -1378,15 +1409,19 @@ true, it will allow you to hide the event alarm information without removing it.
return res
- def read(self, cr, uid, ids, fields=None, context={}, load='_classic_read'):
+ def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
"""
Overrides orm Read method.Read List of fields for calendar event.
@param cr: the current row, from the database cursor,
@param user: the current user’s ID for security checks,
@param ids: List of calendar event's id.
@param fields: List of fields.
+ @param context: A standard dictionary for contextual values
@return: List of Dictionary of form [{‘name_of_the_field’: value, ...}, ...]
"""
+ if not context:
+ context = {}
+
if isinstance(ids, (str, int, long)):
select = [ids]
else:
@@ -1408,14 +1443,17 @@ true, it will allow you to hide the event alarm information without removing it.
return result and result[0] or False
return result
- def copy(self, cr, uid, id, default=None, context={}):
+ def copy(self, cr, uid, id, default=None, context=None):
"""
Duplicate record on specified id.
@param self: the object pointer.
@param cr: the current row, from the database cursor,
@param id: id of record from which we duplicated.
+ @param context: A standard dictionary for contextual values
@return: Duplicate record id.
"""
+ if not context:
+ context = {}
res = super(calendar_event, self).copy(cr, uid, base_calendar_id2real_id(id), default, context)
alarm_obj = self.pool.get('res.alarm')
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date')
@@ -1428,6 +1466,7 @@ true, it will allow you to hide the event alarm information without removing it.
@param self: the object pointer.
@param cr: the current row, from the database cursor,
@param id: List of calendar event's id.
+ @param context: A standard dictionary for contextual values
@return: True
"""
res = False
@@ -1454,15 +1493,18 @@ true, it will allow you to hide the event alarm information without removing it.
alarm_obj.do_alarm_unlink(cr, uid, ids, self._name)
return res
- def create(self, cr, uid, vals, context={}):
+ def create(self, cr, uid, vals, context=None):
"""
Create new record.
@param self: the object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param vals: dictionary of every field value.
+ @param context: A standard dictionary for contextual values
@return: new created record id.
"""
+ if not context:
+ context = {}
res = super(calendar_event, self).create(cr, uid, vals, context)
alarm_obj = self.pool.get('res.alarm')
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date')
@@ -1478,7 +1520,7 @@ class calendar_todo(osv.osv):
_description = "Calendar Task"
def _get_date(self, cr, uid, ids, name, arg, context):
- """
+ """
Get Date
@param self: The object pointer
@param cr: the current row, from the database cursor,
@@ -1494,7 +1536,7 @@ class calendar_todo(osv.osv):
return res
def _set_date(self, cr, uid, id, name, value, arg, context):
- """
+ """
Set Date
@param self: The object pointer
@param cr: the current row, from the database cursor,
@@ -1512,8 +1554,8 @@ class calendar_todo(osv.osv):
_columns = {
'date': fields.function(_get_date, method=True, fnct_inv=_set_date, \
- string='Duration', store=True, type='datetime'),
- 'duration': fields.integer('Duration'),
+ string='Duration', store=True, type='datetime'),
+ 'duration': fields.integer('Duration'),
}
__attribute__ = {}
@@ -1526,7 +1568,7 @@ class ir_attachment(osv.osv):
_inherit = 'ir.attachment'
def search_count(self, cr, user, args, context=None):
- """
+ """
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param user: the current user’s ID for security checks,
@@ -1539,9 +1581,9 @@ class ir_attachment(osv.osv):
args1.append(map(lambda x:str(x).split('-')[0], arg))
return super(ir_attachment, self).search_count(cr, user, args1, context)
- def search(self, cr, uid, args, offset=0, limit=None, order=None,
+ def search(self, cr, uid, args, offset=0, limit=None, order=None,
context=None, count=False):
- """
+ """
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -1555,8 +1597,8 @@ class ir_attachment(osv.osv):
for i, arg in enumerate(new_args):
if arg[0] == 'res_id':
new_args[i] = (arg[0], arg[1], base_calendar_id2real_id(arg[2]))
- return super(ir_attachment, self).search(cr, uid, new_args, offset=offset,
- limit=limit, order=order,
+ return super(ir_attachment, self).search(cr, uid, new_args, offset=offset,
+ limit=limit, order=order,
context=context, count=False)
ir_attachment()
@@ -1565,12 +1607,12 @@ class ir_values(osv.osv):
def set(self, cr, uid, key, key2, name, models, value, replace=True, \
isobject=False, meta=False, preserve_user=False, company=False):
- """
+ """
Set IR Values
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param model: Get The Model
+ @param model: Get The Model
"""
new_model = []
@@ -1582,16 +1624,17 @@ class ir_values(osv.osv):
return super(ir_values, self).set(cr, uid, key, key2, name, new_model, \
value, replace, isobject, meta, preserve_user, company)
- def get(self, cr, uid, key, key2, models, meta=False, context={}, \
+ def get(self, cr, uid, key, key2, models, meta=False, context=None, \
res_id_req=False, without_user=True, key2_req=True):
- """
+ """
Get IR Values
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
- @param model: Get The Model
+ @param model: Get The Model
"""
-
+ if not context:
+ context = {}
new_model = []
for data in models:
if type(data) in (list, tuple):
@@ -1607,20 +1650,19 @@ class ir_model(osv.osv):
_inherit = 'ir.model'
- def read(self, cr, uid, ids, fields=None, context={},
+ def read(self, cr, uid, ids, fields=None, context=None,
load='_classic_read'):
"""
- Read IR Model
+ Overrides orm read method.
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of IR Model’s IDs.
- @param context: A standard dictionary for contextual values
+ @param context: A standard dictionary for contextual values
"""
-
- new_ids = isinstance(ids, (str, int, long)) and [ids] or ids
-
- data = super(ir_model, self).read(cr, uid, new_ids, fields=fields, \
+ if not context:
+ context = {}
+ data = super(ir_model, self).read(cr, uid, ids, fields=fields, \
context=context, load=load)
if data:
for val in data:
@@ -1632,12 +1674,12 @@ ir_model()
class virtual_report_spool(web_services.report_spool):
def exp_report(self, db, uid, object, ids, datas=None, context=None):
- """
+ """
Export Report
@param self: The object pointer
@param db: get the current database,
@param uid: the current user’s ID for security checks,
- @param context: A standard dictionary for contextual values
+ @param context: A standard dictionary for contextual values
"""
if object == 'printscreen.list':
@@ -1657,19 +1699,19 @@ class res_users(osv.osv):
def _get_user_avail(self, cr, uid, ids, context=None):
"""
- Get USer Availability
+ Get User Availability
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of res user’s IDs.
- @param context: A standard dictionary for contextual values
+ @param context: A standard dictionary for contextual values
"""
current_datetime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
res = {}
attendee_obj = self.pool.get('calendar.attendee')
attendee_ids = attendee_obj.search(cr, uid, [
- ('event_date', '<=', current_datetime), ('event_end_date', '<=', current_datetime),
+ ('event_date', '<=', current_datetime), ('event_end_date', '<=', current_datetime),
('state', '=', 'accepted'), ('user_id', 'in', ids)
])
@@ -1688,12 +1730,12 @@ class res_users(osv.osv):
def _get_user_avail_fun(self, cr, uid, ids, name, args, context=None):
"""
- Get USer Availability Function
+ Get User Availability Function
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of res user’s IDs.
- @param context: A standard dictionary for contextual values
+ @param context: A standard dictionary for contextual values
"""
return self._get_user_avail(cr, uid, ids, context=context)
@@ -1701,8 +1743,9 @@ class res_users(osv.osv):
_columns = {
'availability': fields.function(_get_user_avail_fun, type='selection', \
selection=[('free', 'Free'), ('busy', 'Busy')], \
- string='Free/Busy', method=True),
+ string='Free/Busy', method=True),
}
+
res_users()
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index 0c8a52260ef..d31266c9090 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -1,6 +1,8 @@
+
+
calendar.attendee.form
@@ -65,6 +67,8 @@
+
+
calendar.attendee.tree
@@ -77,10 +81,14 @@
+
+
-
+
+
+
calendar.attendee.search
calendar.attendee
@@ -99,11 +107,26 @@
+
+
+
+
+
+
+
+
+
-
+
+
Event Invitations
ir.actions.act_window
@@ -115,10 +138,12 @@
+
+
@@ -138,9 +163,6 @@
-
-
-
@@ -162,7 +184,8 @@
-
+
+
Available Alarms
ir.actions.act_window
@@ -170,6 +193,8 @@
form
tree,form
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/addons/event/security/event_security.xml b/addons/event/security/event_security.xml
index db731e1ccd3..e80f0eeae0c 100644
--- a/addons/event/security/event_security.xml
+++ b/addons/event/security/event_security.xml
@@ -2,11 +2,11 @@
diff --git a/addons/event/wizard/event_confirm_registration.py b/addons/event/wizard/event_confirm_registration.py
index f8a9d02de7d..0e64c0abe53 100644
--- a/addons/event/wizard/event_confirm_registration.py
+++ b/addons/event/wizard/event_confirm_registration.py
@@ -27,21 +27,23 @@ class event_confirm_registration(osv.osv_memory):
"""
_name = "event.confirm.registration"
_description = "Event Registraion"
+
_columns = {
- 'msg': fields.text('Message', readonly=True),
+ 'msg': fields.text('Message', readonly=True),
}
_defaults={
- 'msg':lambda *a:'The event limit is reached. What do you want to do?'
+ 'msg':lambda *a:'The event limit is reached. What do you want to do?'
}
def confirm(self, cr, uid, ids, context):
registration_obj = self.pool.get('event.registration')
reg_id = context.get('reg_id', False) or context.get('active_id', False)
if reg_id:
- registration_obj.write(cr, uid, [reg_id], {'state':'open',})
+ registration_obj.write(cr, uid, [reg_id], {'state':'open', })
registration_obj._history(cr, uid, [reg_id], 'Open', history=True)
- registration_obj.mail_user(cr,uid,[reg_id])
+ registration_obj.mail_user(cr, uid, [reg_id])
return {}
event_confirm_registration()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/event/wizard/event_registration.py b/addons/event/wizard/event_registration.py
index d8087b7a569..4803d118610 100644
--- a/addons/event/wizard/event_registration.py
+++ b/addons/event/wizard/event_registration.py
@@ -36,10 +36,8 @@ class event_registration_list(osv.osv_memory):
'type': 'ir.actions.act_window'
}
- cr.execute('SELECT section_id FROM event_event WHERE id = %s', (context['active_id'],))
- res = cr.fetchone()
return {
- 'domain': [('section_id', '=', res[0])],
+ 'domain': [('section_id', '=', context['active_id'])],
'name': 'Event Registrations',
'view_type': 'form',
'view_mode': 'tree,form',
diff --git a/addons/event_project/i18n/fr.po b/addons/event_project/i18n/fr.po
index 356357e877b..1e87919bf74 100644
--- a/addons/event_project/i18n/fr.po
+++ b/addons/event_project/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 16:09+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-21 21:05+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:18+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: event_project
@@ -24,7 +24,7 @@ msgstr "XML non valide pour l'architecture de la vue"
#. module: event_project
#: model:ir.actions.wizard,name:event_project.wizard_event_task
msgid "Tasks"
-msgstr ""
+msgstr "Tâches"
#. module: event_project
#: wizard_button:event.project,init,done:0
@@ -39,6 +39,10 @@ msgid ""
" This module allow you to create retro planning for managing your "
"events.\n"
msgstr ""
+"Organisation et gestion des évènements.\n"
+"\n"
+" Ce module vous autorise à créer un rétro-planning pour gérer vos "
+"évènements.\n"
#. module: event_project
#: view:event.event:0
@@ -48,7 +52,7 @@ msgstr "Tâches Restantes"
#. module: event_project
#: model:ir.module.module,shortdesc:event_project.module_meta_information
msgid "Event - Project"
-msgstr ""
+msgstr "Évènement - Projet"
#. module: event_project
#: field:event.event,project_id:0
diff --git a/addons/hr/i18n/pl.po b/addons/hr/i18n/pl.po
index 11884c53d2f..35ec30cc260 100644
--- a/addons/hr/i18n/pl.po
+++ b/addons/hr/i18n/pl.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-05-12 20:04+0000\n"
+"PO-Revision-Date: 2010-05-21 19:41+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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: 2010-05-13 04:36+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr
@@ -42,7 +42,7 @@ msgstr ""
#: model:ir.module.module,shortdesc:hr.module_meta_information
#: model:ir.ui.menu,name:hr.menu_hr_root
msgid "Human Resources"
-msgstr "Zasoby ludzkie"
+msgstr "Zasoby kadrowe"
#. module: hr
#: selection:hr.timesheet,dayofweek:0
@@ -263,7 +263,7 @@ msgstr ""
#. module: hr
#: field:hr.employee,user_id:0
msgid "Related User"
-msgstr ""
+msgstr "Powiązany użytkownik"
#. module: hr
#: field:hr.employee,category_id:0
diff --git a/addons/hr_expense/report/hr_expense_report.py b/addons/hr_expense/report/hr_expense_report.py
index cc3f282e9fa..2b0f6b4addf 100644
--- a/addons/hr_expense/report/hr_expense_report.py
+++ b/addons/hr_expense/report/hr_expense_report.py
@@ -45,9 +45,13 @@ class hr_expense_report(osv.osv):
'department_id':fields.many2one('hr.department','Department',readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
+ 'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),
'price_total':fields.float('Total Price', readonly=True),
+ 'analytic_account': fields.many2one('account.analytic.account','Analytic account',readonly=True),
'price_average':fields.float('Average Price', readonly=True),
'nbr':fields.integer('# of Lines', readonly=True),
+ 'no_of_products':fields.integer('# of Products', readonly=True),
+ 'no_of_account':fields.integer('# of Accounts', readonly=True),
'state': fields.selection([
('draft', 'Draft'),
('confirm', 'Waiting confirmation'),
@@ -67,6 +71,7 @@ class hr_expense_report(osv.osv):
date_trunc('day',s.create_date) as date,
s.employee_id,
s.journal_id,
+ s.currency_id,
to_date(to_char(s.date_confirm, 'dd-MM-YYYY'),'dd-MM-YYYY') as date_confirm,
to_date(to_char(s.date_valid, 'dd-MM-YYYY'),'dd-MM-YYYY') as date_valid,
s.invoice_id,
@@ -75,27 +80,33 @@ class hr_expense_report(osv.osv):
to_char(date_trunc('day',s.create_date), 'MM') as month,
to_char(date_trunc('day',s.create_date), 'YYYY-MM-DD') as day,
l.product_id as product_id,
+ l.analytic_account as analytic_account,
sum(l.unit_quantity * u.factor) as product_qty,
s.user_id as user_id,
s.company_id as company_id,
sum(l.unit_quantity*l.unit_amount) as price_total,
(sum(l.unit_quantity*l.unit_amount)/sum(l.unit_quantity * u.factor))::decimal(16,2) as price_average,
count(*) as nbr,
+ (select unit_quantity from hr_expense_line where id=l.id and product_id is not null) as no_of_products,
+ (select count(analytic_account) from hr_expense_line where id=l.id and analytic_account is not null) as no_of_account,
s.state
- from
- hr_expense_line l
- left join
- hr_expense_expense s on (s.id=l.expense_id)
- left join product_uom u on (u.id=l.uom_id)
+ from hr_expense_line l
+ left join hr_expense_expense s on (s.id=l.expense_id)
+ left join product_uom u on (u.id=l.uom_id)
group by
date_trunc('day',s.create_date),
+ to_char(date_trunc('day',s.create_date), 'YYYY'),
+ to_char(date_trunc('day',s.create_date), 'MM'),
to_char(date_trunc('day',s.create_date), 'YYYY-MM-DD'),
to_date(to_char(s.date_confirm, 'dd-MM-YYYY'),'dd-MM-YYYY'),
to_date(to_char(s.date_valid, 'dd-MM-YYYY'),'dd-MM-YYYY'),
l.product_id,
+ l.analytic_account,
s.invoice_id,
+ s.currency_id,
s.department_id,
l.uom_id,
+ l.id,
s.user_id,
s.state,
s.journal_id,
diff --git a/addons/hr_expense/report/hr_expense_report_view.xml b/addons/hr_expense/report/hr_expense_report_view.xml
index 6e7e6beb218..7a50cb71140 100644
--- a/addons/hr_expense/report/hr_expense_report_view.xml
+++ b/addons/hr_expense/report/hr_expense_report_view.xml
@@ -14,12 +14,16 @@
+
+
+
+
@@ -47,7 +51,7 @@
-
+
+
@@ -95,13 +101,11 @@
domain="[('state','=','cancelled')]"
help = "Cancelled Expenses"/>
-
-
-
+
-
+
@@ -111,13 +115,16 @@
+
+
+
-
+
diff --git a/addons/hr_holidays/report/available_holidays.py b/addons/hr_holidays/report/available_holidays.py
index 4a1972f1f7d..5499a914f6c 100644
--- a/addons/hr_holidays/report/available_holidays.py
+++ b/addons/hr_holidays/report/available_holidays.py
@@ -25,8 +25,9 @@ class available_holidays_report(osv.osv):
_name = "available.holidays.report"
_auto = False
_columns = {
- 'date': fields.datetime('Date', readonly=True),
+ 'date': fields.date('Date', readonly=True),
'year': fields.char('Year', size=4, readonly=True),
+ 'day': fields.char('Day', size=15, readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
@@ -35,6 +36,7 @@ class available_holidays_report(osv.osv):
'max_leave': fields.float('Allocated Leaves', readonly=True),
'taken_leaves': fields.float('Taken Leaves', readonly=True),
'remaining_leave': fields.float('Remaining Leaves',readonly=True),
+ 'department_id':fields.many2one('hr.department','Department',readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
}
def init(self, cr):
@@ -46,8 +48,10 @@ class available_holidays_report(osv.osv):
date_trunc('day',h.create_date) as date,
to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month,
+ to_char(s.create_date, 'YYYY-MM-DD') as day,
h.employee_id as employee_id,
h.user_id as user_id,
+ h.department_id,
h.state as state,
h.holiday_status_id as holiday_status_id,
sum(number_of_days) as remaining_leave,
@@ -68,7 +72,8 @@ class available_holidays_report(osv.osv):
and s.active <> 'f'
group by h.holiday_status_id, h.employee_id,
date_trunc('day',h.create_date),to_char(s.create_date, 'YYYY'),
- to_char(s.create_date, 'MM'),h.user_id,h.state
+ to_char(s.create_date, 'MM'),to_char(s.create_date, 'YYYY-MM-DD'),h.user_id,
+ h.state,h.department_id
)""")
available_holidays_report()
diff --git a/addons/hr_holidays/report/available_holidays_view.xml b/addons/hr_holidays/report/available_holidays_view.xml
index c05e7817236..a89655b503c 100644
--- a/addons/hr_holidays/report/available_holidays_view.xml
+++ b/addons/hr_holidays/report/available_holidays_view.xml
@@ -10,40 +10,32 @@
tree
-
-
-
-
+
+
+
+
+
-
+
+
-
- available.holidays.report.form
- available.holidays.report
- form
-
-
-
-
-
-
-
-
available.holidays.report.graph
available.holidays.report
graph
-
+
+
+
-
+
@@ -55,27 +47,47 @@
-
-
+
+
+
+<<<<<<< TREE
+
+
+
+
+
+
+
+
+
+=======
+>>>>>>> MERGE-SOURCE
+
-
+
-
-
+
+
+
@@ -88,7 +100,7 @@
available.holidays.report
form
tree,graph
- {"search_default_user_id":uid}
+ {'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}
diff --git a/addons/hr_holidays/report/hr_holidays_report.py b/addons/hr_holidays/report/hr_holidays_report.py
index 87f01cfb17c..29127922dac 100644
--- a/addons/hr_holidays/report/hr_holidays_report.py
+++ b/addons/hr_holidays/report/hr_holidays_report.py
@@ -28,16 +28,19 @@ class hr_holidays_report(osv.osv):
_auto = False
_rec_name = 'date'
_columns = {
- 'date': fields.datetime('Date', readonly=True),
+ 'date': fields.date('Date', readonly=True),
'year': fields.char('Year', size=4, readonly=True),
+ 'day': fields.char('Day', size=15, readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
- 'date_from' : fields.datetime('Start Date', readonly=True),
- 'date_to' : fields.datetime('End Date', readonly=True),
- 'number_of_days_temp': fields.float('Number of Days', readonly=True),
+ 'date_from' : fields.date('Start Date', readonly=True),
+ 'date_to' : fields.date('End Date', readonly=True),
+ 'number_of_days_temp': fields.float('#Days', readonly=True),
'employee_id' : fields.many2one('hr.employee', "Employee's Name",readonly=True),
'user_id':fields.many2one('res.users', 'User', readonly=True),
+ 'holiday_status_id' : fields.many2one("hr.holidays.status", "Leave Type",readonly=True),
+ 'department_id':fields.many2one('hr.department','Department',readonly=True),
'state': fields.selection([('draft', 'Draft'),
('confirm', 'Waiting Validation'),
('refuse', 'Refused'),
@@ -52,14 +55,17 @@ class hr_holidays_report(osv.osv):
create or replace view hr_holidays_report as (
select
min(s.id) as id,
- date_trunc('seconds',s.create_date) as date,
+ date_trunc('day',s.create_date) as date,
date_trunc('day',s.date_from) as date_from,
date_trunc('day',s.date_to) as date_to,
- s.number_of_days_temp,
+ sum(s.number_of_days_temp) as number_of_days_temp,
s.employee_id,
s.user_id as user_id,
to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month,
+ to_char(s.create_date, 'YYYY-MM-DD') as day,
+ s.holiday_status_id,
+ s.department_id,
s.state
from
hr_holidays s
@@ -67,7 +73,8 @@ class hr_holidays_report(osv.osv):
s.employee_id is not null
group by
s.create_date,s.state,s.date_from,s.date_to,
- s.number_of_days_temp,s.employee_id,s.user_id
+ s.employee_id,s.user_id,s.holiday_status_id,
+ s.department_id
)
""")
hr_holidays_report()
diff --git a/addons/hr_holidays/report/hr_holidays_report_view.xml b/addons/hr_holidays/report/hr_holidays_report_view.xml
index 382a5704585..e508e242827 100644
--- a/addons/hr_holidays/report/hr_holidays_report_view.xml
+++ b/addons/hr_holidays/report/hr_holidays_report_view.xml
@@ -7,14 +7,18 @@
tree
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
@@ -27,6 +31,7 @@
+
@@ -37,40 +42,71 @@
search
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
+
+
+
@@ -81,7 +117,7 @@
hr.holidays.report
form
tree,graph
- {'search_default_employee': 1, "search_default_user_id":uid}
+ {'search_default_month':1,'search_default_Employee':1,'group_by_no_leaf':1,'group_by':[]}
diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py
index 5875f813dfe..42d643f165d 100644
--- a/addons/hr_recruitment/hr_recruitment.py
+++ b/addons/hr_recruitment/hr_recruitment.py
@@ -57,11 +57,13 @@ class hr_applicant(osv.osv, crm.crm_case):
_name = "hr.applicant"
_description = "Applicant"
_order = "id desc"
- _inherit ='mailgate.thread'
+ _inherits = {'mailgate.thread': 'thread_id'}
_columns = {
- 'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the case without removing it."),
- 'description': fields.text('Description'),
+ 'thread_id': fields.many2one('mailgate.thread', 'Thread', required=False),
+ 'name': fields.char('Name', size=128, required=True),
+ 'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the case without removing it."),
+ 'description': fields.text('Description'),
'section_id': fields.many2one('crm.case.section', 'Sales Team', \
select=True, help='Sales team to which Case belongs to.\
Define Responsible user and Email account for mail gateway.'),
@@ -103,6 +105,16 @@ class hr_applicant(osv.osv, crm.crm_case):
'survey' : fields.related('job_id', 'survey_id', type='many2one', relation='survey', string='Survey'),
'response' : fields.integer("Response"),
}
+
+ _defaults = {
+ 'active': lambda *a: 1,
+ 'user_id': crm.crm_case._get_default_user,
+ 'email_from': crm.crm_case. _get_default_email,
+ 'state': lambda *a: 'draft',
+ 'section_id': crm.crm_case. _get_section,
+ 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
+ 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
+ }
def onchange_job(self,cr, uid, ids, job, context={}):
result = {}
diff --git a/addons/hr_recruitment/report/hr_recruitment_report.py b/addons/hr_recruitment/report/hr_recruitment_report.py
index 49c33084412..00d15ef3f21 100644
--- a/addons/hr_recruitment/report/hr_recruitment_report.py
+++ b/addons/hr_recruitment/report/hr_recruitment_report.py
@@ -105,6 +105,8 @@ class hr_recruitment_report(osv.osv):
'priority': fields.selection(hr_recruitment.AVAILABLE_PRIORITIES, 'Appreciation'),
'salary_prop' : fields.float("Salary Proposed"),
'salary_exp' : fields.float("Salary Expected"),
+ 'partner_id': fields.many2one('res.partner', 'Partner',readonly=True),
+ 'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact Name',readonly=True),
'available' : fields.float("Availability")
}
@@ -121,7 +123,9 @@ class hr_recruitment_report(osv.osv):
to_char(s.create_date, 'MM') as month,
to_char(s.create_date, 'YYYY-MM-DD') as day,
s.state,
+ s.partner_id,
s.company_id,
+ s.partner_address_id,
s.user_id,
s.job_id,
s.type_id,
@@ -140,6 +144,8 @@ class hr_recruitment_report(osv.osv):
date_trunc('day',s.create_date),
date_trunc('day',s.date_closed),
s.state,
+ s.partner_id,
+ s.partner_address_id,
s.company_id,
s.user_id,
s.stage_id,
diff --git a/addons/hr_recruitment/report/hr_recruitment_report_view.xml b/addons/hr_recruitment/report/hr_recruitment_report_view.xml
index 6d3eee8fe68..2315e707911 100644
--- a/addons/hr_recruitment/report/hr_recruitment_report_view.xml
+++ b/addons/hr_recruitment/report/hr_recruitment_report_view.xml
@@ -10,9 +10,11 @@
-
+
+
+
@@ -96,29 +98,36 @@
string="Hired"
name="done"
domain="[('state','=','done')]"/>
-
+
+
-
-
+
+
+
+
+
+
-
+
+
-
-
-
-
+
+
+
+
+
diff --git a/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml b/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml
index 86995aab44c..07d37b270ef 100644
--- a/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml
+++ b/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml
@@ -99,7 +99,7 @@
{'search_default_month':1,'search_default_User':1,'search_default_user_id':uid,'group_by_no_leaf':1,'group_by':[]}
-
+
diff --git a/addons/hr_timesheet_sheet/report/timesheet_report.py b/addons/hr_timesheet_sheet/report/timesheet_report.py
index ee016df56d7..3dd8d161c5f 100644
--- a/addons/hr_timesheet_sheet/report/timesheet_report.py
+++ b/addons/hr_timesheet_sheet/report/timesheet_report.py
@@ -33,7 +33,11 @@ class timesheet_report(osv.osv):
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'name': fields.char('Description', size=64,readonly=True),
+ 'product_id' : fields.many2one('product.product', 'Product'),
+ 'general_account_id' : fields.many2one('account.account', 'General Account', readonly=True),
'user_id': fields.many2one('res.users', 'User',readonly=True),
+ 'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Type of Invoicing',readonly=True),
+ 'account_id': fields.many2one('account.analytic.account', 'Analytic Account',readonly=True),
'nbr': fields.integer('#Nbr',readonly=True),
'company_id': fields.many2one('res.company', 'Company',readonly=True),
'department_id':fields.many2one('hr.department','Department',readonly=True),
@@ -45,9 +49,8 @@ class timesheet_report(osv.osv):
('draft','Draft'),
('confirm','Confirmed'),
('done','Done')], 'State', readonly=True),
- 'total_att': fields.float('Total Timesheet',readonly=True),
- 'total_ts': fields.float('Total Attendance',readonly=True),
- 'total_diff': fields.float('Difference', readonly=True),
+ 'quantity': fields.float('#Quantity',readonly=True),
+ 'cost': fields.float('#Cost',readonly=True),
}
def init(self, cr):
@@ -64,10 +67,12 @@ class timesheet_report(osv.osv):
to_char(htss.date_current,'MM') as month,
to_char(htss.date_current, 'YYYY-MM-DD') as day,
count(*) as nbr,
- sum(day.total_attendance) as total_att,
- sum(day.total_timesheet) as total_ts,
- sum(day.total_difference) as total_diff,
+ sum(aal.unit_amount) as quantity,
+ sum(aal.amount) as cost,
aal.account_id,
+ aal.product_id,
+ aal.to_invoice,
+ aal.general_account_id,
htss.user_id,
htss.company_id,
htss.department_id,
@@ -75,7 +80,6 @@ class timesheet_report(osv.osv):
from account_analytic_line as aal
left join hr_analytic_timesheet as hat ON (hat.line_id=aal.id)
left join hr_timesheet_sheet_sheet as htss ON (hat.line_id=htss.id)
- left join hr_timesheet_sheet_sheet_day AS day ON (htss.id = day.sheet_id)
group by
to_char(htss.date_current,'YYYY'),
to_char(htss.date_current,'MM'),
@@ -84,6 +88,9 @@ class timesheet_report(osv.osv):
htss.date_from,
htss.date_to,
htss.date_current,
+ aal.to_invoice,
+ aal.product_id,
+ aal.general_account_id,
htss.name,
htss.company_id,
htss.state,
diff --git a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml
index 8358df4cc9e..517937848ff 100644
--- a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml
+++ b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml
@@ -7,10 +7,9 @@
graph
-
-
-
-
+
+
+
@@ -25,12 +24,15 @@
-
-
-
+
+
+
+
+
+
@@ -43,7 +45,7 @@
search
-
+
@@ -63,10 +65,8 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
-
+
diff --git a/addons/l10n_be/__openerp__.py b/addons/l10n_be/__openerp__.py
index 6c13990fc45..c8fdb530a45 100644
--- a/addons/l10n_be/__openerp__.py
+++ b/addons/l10n_be/__openerp__.py
@@ -45,7 +45,8 @@
'account_report',
'base_vat',
'base_iban',
- 'account_chart'
+ 'account_chart',
+ 'account_coda',
],
'init_xml': [],
'update_xml': [
diff --git a/addons/l10n_fr/i18n/fr.po b/addons/l10n_fr/i18n/fr.po
index f70b913fd88..1e9727d4785 100644
--- a/addons/l10n_fr/i18n/fr.po
+++ b/addons/l10n_fr/i18n/fr.po
@@ -7,34 +7,34 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-07-27 16:34+0000\n"
-"Last-Translator: Christian Draux - reseaucerta.org \n"
+"PO-Revision-Date: 2010-05-21 17:47+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:04+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Redevances de crédit-bail immobilier"
-msgstr ""
+msgstr "Redevances de crédit-bail immobilier"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "période du"
-msgstr ""
+msgstr "période du"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Autres réserves"
-msgstr ""
+msgstr "Autres réserves"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "ACTIF IMMOBILISÉ"
-msgstr ""
+msgstr "ACTIF IMMOBILISÉ"
#. module: l10n_fr
#: model:ir.actions.todo,note:l10n_fr.config_call_account_template_fr_pcg
@@ -58,23 +58,23 @@ msgstr ""
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Capital [dont versé...]"
-msgstr ""
+msgstr "Capital [dont versé...]"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Réserves statutaires ou contractuelles"
-msgstr ""
+msgstr "Réserves statutaires ou contractuelles"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "nstallations techniques,matériel et outillage"
-msgstr ""
+msgstr "installations techniques,matériel et outillage"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid "TOTAL III"
-msgstr ""
+msgstr "TOTAL III"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_asset
@@ -89,12 +89,12 @@ msgstr "Produits"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Charges sociales"
-msgstr ""
+msgstr "Charges sociales"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "PRODUITS EXCEPTIONNELS"
-msgstr ""
+msgstr "PRODUITS EXCEPTIONNELS"
#. module: l10n_fr
#: wizard_view:l10n.fr.bilan.report,init:0
@@ -104,18 +104,18 @@ msgstr "Sélectionner l'année"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Différences négatives de change"
-msgstr ""
+msgstr "Différences négatives de change"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Autres charges"
-msgstr ""
+msgstr "Autres charges"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid "Tenue de Compte :"
-msgstr ""
+msgstr "Tenue de Compte :"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_payable
@@ -125,72 +125,72 @@ msgstr "À payer"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "( IV )"
-msgstr ""
+msgstr "( IV )"
#. module: l10n_fr
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_4
msgid "Hors Euro"
-msgstr ""
+msgstr "Hors Euro"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Fonds commercial"
-msgstr ""
+msgstr "Fonds commercial"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "isponibilités"
-msgstr ""
+msgstr "Disponibilités"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "+ IV+ V+ VI"
-msgstr ""
+msgstr "+ IV+ V+ VI"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "De participation"
-msgstr ""
+msgstr "De participation"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "TOTAL IV"
-msgstr ""
+msgstr "TOTAL IV"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "D"
-msgstr ""
+msgstr "D"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "PROVISIONS"
-msgstr ""
+msgstr "PROVISIONS"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "vances et acomptes"
-msgstr ""
+msgstr "Avances et acomptes"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Autres dettes"
-msgstr ""
+msgstr "Autres dettes"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "articipations"
-msgstr ""
+msgstr "Participations"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "atières premières et autres approvisionnements"
-msgstr ""
+msgstr "Matières premières et autres approvisionnements"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "P"
-msgstr ""
+msgstr "P"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_stocks
@@ -200,17 +200,17 @@ msgstr "Actif circulant"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "T"
-msgstr ""
+msgstr "T"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Dettes fournisseurs et comptes rattachés"
-msgstr ""
+msgstr "Dettes fournisseurs et comptes rattachés"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Provisions pour charges"
-msgstr ""
+msgstr "Provisions pour charges"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_dettes
@@ -225,12 +225,12 @@ msgstr "Sélectionner une période"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "RÉSERVES"
-msgstr ""
+msgstr "RÉSERVES"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "TOTAL GÉNÉRAL (I + II + III + IV)"
-msgstr ""
+msgstr "TOTAL GÉNÉRAL (I + II + III + IV)"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_tax
@@ -240,74 +240,74 @@ msgstr "Taxe"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Dotations aux amortissements, aux dépréciations et aux provisions"
-msgstr ""
+msgstr "Dotations aux amortissements, aux dépréciations et aux provisions"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Achats de matières premières et autres approvisionnements"
-msgstr ""
+msgstr "Achats de matières premières et autres approvisionnements"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Avances et acomptes reçus sur commandes en cours"
-msgstr ""
+msgstr "Avances et acomptes reçus sur commandes en cours"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Quotes-parts de résultat sur opérations faites en commun (II)"
-msgstr ""
+msgstr "Quotes-parts de résultat sur opérations faites en commun (II)"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "VALEURS MOBILIÈRES DE PLACEMENT"
-msgstr ""
+msgstr "VALEURS MOBILIÈRES DE PLACEMENT"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid "TOTAL I"
-msgstr ""
+msgstr "TOTAL I"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Autres intérêts et produits assimilés"
-msgstr ""
+msgstr "Autres intérêts et produits assimilés"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Dettes sur immobilisations et comptes rattachés"
-msgstr ""
+msgstr "Dettes sur immobilisations et comptes rattachés"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Créances clients et comptes rattachés"
-msgstr ""
+msgstr "Créances clients et comptes rattachés"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Report à nouveau"
-msgstr ""
+msgstr "Report à nouveau"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "IMMOBILISATIONS INCORPORELLES"
-msgstr ""
+msgstr "IMMOBILISATIONS INCORPORELLES"
#. module: l10n_fr
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_1
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_5
msgid "France"
-msgstr ""
+msgstr "France"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "rêts"
-msgstr ""
+msgstr "Prêts"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sous-total A - Montant net du chiffre d'affaires"
-msgstr ""
+msgstr "Sous-total A - Montant net du chiffre d'affaires"
#. module: l10n_fr
#: wizard_button:l10n.fr.bilan.report,init,report:0
@@ -318,32 +318,32 @@ msgstr "Imprimer"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Amortissements et dépréciations"
-msgstr ""
+msgstr "Amortissements et dépréciations"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Net"
-msgstr ""
+msgstr "Net"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "TOTAL I ( A + B )"
-msgstr ""
+msgstr "TOTAL I ( A + B )"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "itres immobilisés de l'activité de portefeuille"
-msgstr ""
+msgstr "Titres immobilisés de l'activité de portefeuille"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "( VI )"
-msgstr ""
+msgstr "( VI )"
#. module: l10n_fr
#: constraint:account.account.template:0
msgid "Error ! You can not create recursive account templates."
-msgstr ""
+msgstr "Erreur ! Vous ne pouvez pas créer de modèles de compte récursifs"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_provision
@@ -353,7 +353,7 @@ msgstr "Provisions"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Variation des stocks"
-msgstr ""
+msgstr "Variation des stocks"
#. module: l10n_fr
#: model:ir.actions.report.xml,name:l10n_fr.l10n_fr_pcg_bilan
@@ -365,22 +365,22 @@ msgstr "Bilan"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Emprunts obligataires convertibles"
-msgstr ""
+msgstr "Emprunts obligataires convertibles"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "TOTAL ACTIF ("
-msgstr ""
+msgstr "TOTAL ACTIF ("
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "CHARGES ( hors taxes )"
-msgstr ""
+msgstr "CHARGES ( hors taxes )"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Produits nets sur cessions de valeurs mobilières de placement"
-msgstr ""
+msgstr "Produits nets sur cessions de valeurs mobilières de placement"
#. module: l10n_fr
#: field:l10n.fr.line,report_id:0
@@ -400,27 +400,27 @@ msgstr "Engagements"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Avances et acomptes"
-msgstr ""
+msgstr "Avances et acomptes"
#. module: l10n_fr
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_7
msgid "TVA sur les encaissements"
-msgstr ""
+msgstr "TVA sur les encaissements"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sous-total B"
-msgstr ""
+msgstr "Sous-total B"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "C"
-msgstr ""
+msgstr "C"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "M"
-msgstr ""
+msgstr "M"
#. module: l10n_fr
#: model:ir.module.module,description:l10n_fr.module_meta_information
@@ -433,17 +433,17 @@ msgstr ""
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Concessions, brevets, licences,..., droits et valeurs similaires"
-msgstr ""
+msgstr "Concessions, brevets, licences,..., droits et valeurs similaires"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Instruments de trésorerie"
-msgstr ""
+msgstr "Instruments de trésorerie"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Écarts de conversion passif"
-msgstr ""
+msgstr "Écarts de conversion passif"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_expense
@@ -453,37 +453,37 @@ msgstr "Charges"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "ACTIF"
-msgstr ""
+msgstr "ACTIF"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "DETTES"
-msgstr ""
+msgstr "DETTES"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sur immobilisations : dotations aux amortissements"
-msgstr ""
+msgstr "Sur immobilisations : dotations aux amortissements"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "mmobilisations corporelles en cours"
-msgstr ""
+msgstr "Immobilisations corporelles en cours"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Autres"
-msgstr ""
+msgstr "Autres"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Dotation aux amortissements et aux dépréciations"
-msgstr ""
+msgstr "Dotation aux amortissements et aux dépréciations"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "PRODUITS D'EXPLOITATION"
-msgstr ""
+msgstr "PRODUITS D'EXPLOITATION"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
@@ -491,136 +491,138 @@ msgid ""
"Reprises sur provisions, dépréciations (et amortissements) et transferts de "
"charges"
msgstr ""
+"Reprises sur provisions, dépréciations (et amortissements) et transferts de "
+"charges"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "PRODUITS - CHARGES"
-msgstr ""
+msgstr "PRODUITS - CHARGES"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "RÉSULTAT DE L'EXERCICE [bénéfice ou perte]"
-msgstr ""
+msgstr "RÉSULTAT DE L'EXERCICE [bénéfice ou perte]"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Impôts, taxes et versements assimilés"
-msgstr ""
+msgstr "Impôts, taxes et versements assimilés"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "roduits intermédiaires et finis"
-msgstr ""
+msgstr "Produits intermédiaires et finis"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "utres"
-msgstr ""
+msgstr "Autres"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Avances et acomptes versés sur commandes"
-msgstr ""
+msgstr "Avances et acomptes versés sur commandes"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "onstructions"
-msgstr ""
+msgstr "Constructions"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Reprises sur provisions, dépréciations et transferts de charges"
-msgstr ""
+msgstr "Reprises sur provisions, dépréciations et transferts de charges"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "réances rattachées à des participations"
-msgstr ""
+msgstr "Créances rattachées à des participations"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Dotations aux provisions"
-msgstr ""
+msgstr "Dotations aux provisions"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "vous sur votre structure juridique et son fonctionnement comptable."
-msgstr ""
+msgstr "vous sur votre structure juridique et son fonctionnement comptable."
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sur opérations en capital"
-msgstr ""
+msgstr "Sur opérations en capital"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Charges constatés d'avance"
-msgstr ""
+msgstr "Charges constatés d'avance"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "TOTAL II"
-msgstr ""
+msgstr "TOTAL II"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "CAPITAUX PROPRES"
-msgstr ""
+msgstr "CAPITAUX PROPRES"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Frais d'établissement"
-msgstr ""
+msgstr "Frais d'établissement"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Charges à répartir sur plusieurs exercices"
-msgstr ""
+msgstr "Charges à répartir sur plusieurs exercices"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Subventions d'exploitation"
-msgstr ""
+msgstr "Subventions d'exploitation"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Provisions réglementées"
-msgstr ""
+msgstr "Provisions réglementées"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "PRODUITS (hors taxes)"
-msgstr ""
+msgstr "PRODUITS (hors taxes)"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Écart d'équivalence"
-msgstr ""
+msgstr "Écart d'équivalence"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Primes d'émission, de fusion, d'apport"
-msgstr ""
+msgstr "Primes d'émission, de fusion, d'apport"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "utres titres immobilisés"
-msgstr ""
+msgstr "Autres titres immobilisés"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Réserves réglementées"
-msgstr ""
+msgstr "Réserves réglementées"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "CHARGES D'EXPLOITATION"
-msgstr ""
+msgstr "CHARGES D'EXPLOITATION"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "I + II + III + IV + V"
-msgstr ""
+msgstr "I + II + III + IV + V"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
@@ -629,11 +631,14 @@ msgid ""
"120 ou 129 (Résultat de l'exercice précédant) dans un compte de report à "
"nouveau (compte 110 ou 119) ou dans le compte 108. Renseignez"
msgstr ""
+"Attention, pour que votre bilan soit correct, vous devez solder les comptes "
+"120 ou 129 (Résultat de l'exercice précédant) dans un compte de report à "
+"nouveau (compte 110 ou 119) ou dans le compte 108. Renseignez"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Vente de marchandises"
-msgstr ""
+msgstr "Vente de marchandises"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
@@ -678,7 +683,7 @@ msgstr ""
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "apital souscrit - non appelé"
-msgstr ""
+msgstr "Capital souscrit - non appelé"
#. module: l10n_fr
#: model:ir.model,name:l10n_fr.model_l10n_fr_report
@@ -688,27 +693,27 @@ msgstr "Rapport pour l10n_fr"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Compte de résultat"
-msgstr ""
+msgstr "Compte de résultat"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "CRÉANCES"
-msgstr ""
+msgstr "CRÉANCES"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sur opérations de gestion"
-msgstr ""
+msgstr "Sur opérations de gestion"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Redevances de crédit-bail mobilier"
-msgstr ""
+msgstr "Redevances de crédit-bail mobilier"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Primes de remboursement des emprunts"
-msgstr ""
+msgstr "Primes de remboursement des emprunts"
#. module: l10n_fr
#: field:l10n.fr.report,code:0
@@ -718,27 +723,27 @@ msgstr "Code"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Autres produits"
-msgstr ""
+msgstr "Autres produits"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Participation des salariés aux résultats"
-msgstr ""
+msgstr "Participation des salariés aux résultats"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Subventions d'investissement"
-msgstr ""
+msgstr "Subventions d'investissement"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "STOCK EN COURS"
-msgstr ""
+msgstr "STOCK EN COURS"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Autres achats et charges externes"
-msgstr ""
+msgstr "Autres achats et charges externes"
#. module: l10n_fr
#: wizard_field:l10n.fr.bilan.report,init,fiscalyear:0
@@ -749,17 +754,17 @@ msgstr "Année fiscale"
#. module: l10n_fr
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_3
msgid "DOM-TOM"
-msgstr ""
+msgstr "DOM-TOM"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Intérêts et charges assimilées"
-msgstr ""
+msgstr "Intérêts et charges assimilées"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Immobilisations incorporelles en cours"
-msgstr ""
+msgstr "Immobilisations incorporelles en cours"
#. module: l10n_fr
#: wizard_button:l10n.fr.bilan.report,init,end:0
@@ -771,17 +776,17 @@ msgstr "Annuler"
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid "au"
-msgstr ""
+msgstr "au"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Production immobilisée"
-msgstr ""
+msgstr "Production immobilisée"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sur actif circulant : dotations aux dépréciations"
-msgstr ""
+msgstr "Sur actif circulant : dotations aux dépréciations"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_receivable
@@ -791,13 +796,13 @@ msgstr "Recevable"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Capital souscrit - appelé , non versé"
-msgstr ""
+msgstr "Capital souscrit - appelé , non versé"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid "( V )"
-msgstr ""
+msgstr "( V )"
#. module: l10n_fr
#: constraint:ir.model:0
@@ -815,17 +820,17 @@ msgstr "Définition"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Différences positives de change"
-msgstr ""
+msgstr "Différences positives de change"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "errains"
-msgstr ""
+msgstr "Terrains"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Brut"
-msgstr ""
+msgstr "Brut"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_immobilisations
@@ -835,23 +840,23 @@ msgstr "Immobilisations"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "PASSIF"
-msgstr ""
+msgstr "PASSIF"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Écarts de réévaluation"
-msgstr ""
+msgstr "Écarts de réévaluation"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Production stockée"
-msgstr ""
+msgstr "Production stockée"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid "Imprimé le :"
-msgstr ""
+msgstr "Imprimé le :"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_equity
@@ -861,38 +866,38 @@ msgstr "Capitaux propres"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Impôts sur les bénéfices"
-msgstr ""
+msgstr "Impôts sur les bénéfices"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "TOTAL DES PRODUITS ( I + II + III + IV )"
-msgstr ""
+msgstr "TOTAL DES PRODUITS ( I + II + III + IV )"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Salaires et traitements"
-msgstr ""
+msgstr "Salaires et traitements"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
#: rml:l10n.fr.cdr:0
msgid ")"
-msgstr ""
+msgstr ")"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Provisions pour risques"
-msgstr ""
+msgstr "Provisions pour risques"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "n-cours de production [biens et services]"
-msgstr ""
+msgstr "En-cours de production [biens et services]"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Sur immobilisations : dotations aux dépréciations"
-msgstr ""
+msgstr "Sur immobilisations : dotations aux dépréciations"
#. module: l10n_fr
#: field:l10n.fr.line,code:0
@@ -902,7 +907,7 @@ msgstr "Nom de la variable"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "TOTAL CHARGES ( I + II + III"
-msgstr ""
+msgstr "TOTAL CHARGES ( I + II + III"
#. module: l10n_fr
#: model:ir.actions.report.xml,name:l10n_fr.l10n_fr_pcg_cdr
@@ -918,17 +923,17 @@ msgstr "Lignes de rapport pour l10n_fr"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "A"
-msgstr ""
+msgstr "A"
#. module: l10n_fr
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_2
msgid "Zone Euro"
-msgstr ""
+msgstr "Zone Euro"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "E"
-msgstr ""
+msgstr "E"
#. module: l10n_fr
#: field:l10n.fr.line,name:0
@@ -939,7 +944,7 @@ msgstr "Nom"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "I"
-msgstr ""
+msgstr "I"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_stock
@@ -964,27 +969,27 @@ msgstr "Comptes spéciaux"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Emprunts et dettes financières diverses"
-msgstr ""
+msgstr "Emprunts et dettes financières diverses"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Produits constatés d'avance"
-msgstr ""
+msgstr "Produits constatés d'avance"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Charges nettes sur cessions de valeurs mobilières de placement"
-msgstr ""
+msgstr "Charges nettes sur cessions de valeurs mobilières de placement"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "archandises"
-msgstr ""
+msgstr "Marchandises"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Emprunts et dettes auprès des établissements de crédit"
-msgstr ""
+msgstr "Emprunts et dettes auprès des établissements de crédit"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_view
@@ -994,47 +999,47 @@ msgstr "Vue"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "CHARGES FINANCIÈRES"
-msgstr ""
+msgstr "CHARGES FINANCIÈRES"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Quotes-parts de résultat sur opérations faites en commun ( II )"
-msgstr ""
+msgstr "Quotes-parts de résultat sur opérations faites en commun ( II )"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "IMMOBILISATIONS CORPORELLES"
-msgstr ""
+msgstr "IMMOBILISATIONS CORPORELLES"
#. module: l10n_fr
#: model:account.fiscal.position.template,name:l10n_fr.fiscal_position_template_6
msgid "TVA sur le débits"
-msgstr ""
+msgstr "TVA sur le débits"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "Achat de marchandises"
-msgstr ""
+msgstr "Achat de marchandises"
#. module: l10n_fr
#: model:ir.module.module,shortdesc:l10n_fr.module_meta_information
msgid "France - Plan Comptable Général"
-msgstr ""
+msgstr "France - Plan Comptable Général"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Écarts de conversion actif"
-msgstr ""
+msgstr "Écarts de conversion actif"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Autres emprunts obligataires"
-msgstr ""
+msgstr "Autres emprunts obligataires"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Réserve légale"
-msgstr ""
+msgstr "Réserve légale"
#. module: l10n_fr
#: model:account.account.type,name:l10n_fr.account_type_cloture
@@ -1044,14 +1049,14 @@ msgstr "Cloture"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "IMMOBILISATIONS FINANCIÉRES"
-msgstr ""
+msgstr "IMMOBILISATIONS FINANCIÉRES"
#. module: l10n_fr
#: rml:l10n.fr.cdr:0
msgid "CHARGES EXCEPTIONNELLES"
-msgstr ""
+msgstr "CHARGES EXCEPTIONNELLES"
#. module: l10n_fr
#: rml:l10n.fr.bilan:0
msgid "Dettes fiscales et sociales"
-msgstr ""
+msgstr "Dettes fiscales et sociales"
diff --git a/addons/mail_gateway/__openerp__.py b/addons/mail_gateway/__openerp__.py
index 27f596a53b6..b5e56a03ee1 100644
--- a/addons/mail_gateway/__openerp__.py
+++ b/addons/mail_gateway/__openerp__.py
@@ -32,7 +32,7 @@
* Easy Integration with any Module""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
- 'depends': ['base','fetchmail'],
+ 'depends': ['base'],
'init_xml': [],
'update_xml': [
"mail_gateway_view.xml"
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index 81f32d12f60..8534c32c510 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -22,60 +22,38 @@
from osv import osv, fields
import time
+class one2many_domain(fields.one2many):
+ def set(self, cr, obj, id, field, values, user=None, context=None):
+ if not values:
+ return
+ return super(one2many_domain, self).set(cr, obj, id, field, values,
+ user=user, context=context)
+ def get(self, cr, obj, ids, name, user=None, offset=0, context=None, values=None):
+ if not context:
+ context = {}
+ res = {}
+ msg_obj = obj.pool.get('mailgate.message')
+ for thread in obj.browse(cr, user, ids, context=context):
+ final = msg_obj.search(cr, user, self._domain + [('thread_id', '=', thread.id)], context=context)
+ res[thread.id] = final
+ return res
+
+
class mailgate_thread(osv.osv):
'''
Mailgateway Thread
'''
_name = 'mailgate.thread'
_description = 'Mailgateway Thread'
-
- def _get_log_ids(self, cr, uid, ids, field_names, arg, context=None):
- """Gets id for case log from history of particular case
- @param self: The object pointer
- @param cr: the current row, from the database cursor,
- @param uid: the current user’s ID for security checks,
- @param ids: List of Case IDs
- @param context: A standard dictionary for contextual values
- @return:Dictionary of History Ids
- """
- if not context:
- context = {}
-
- result = {}
- domain = []
- history_obj = False
- model_obj = self.pool.get('ir.model')
- history_obj = self.pool.get('mailgate.message')
-
- if 'message_ids' in field_names:
- name = 'message_ids'
- domain += [('email_to', '!=', False)]
-
- if 'log_ids' in field_names:
- name = 'log_ids'
- domain += [('email_to', '=', False)]
-
- model_ids = model_obj.search(cr, uid, [('model', '=', self._name)])
- domain += [('model_id', '=', model_ids[0])]
- for case in self.browse(cr, uid, ids, context):
- domain1 = domain + [('res_id', '=', case.id)]
- history_ids = history_obj.search(cr, uid, domain1, context=context)
- if history_ids:
- result[case.id] = {name: history_ids}
- else:
- result[case.id] = {name: []}
- return result
+ _rec_name = 'thread'
_columns = {
- 'name':fields.char('Name', size=64),
- 'active': fields.boolean('Active'),
- 'message_ids': fields.function(_get_log_ids, method=True, type='one2many', \
- multi="message_ids", relation="mailgate.message", string="Messages"),
- 'log_ids': fields.function(_get_log_ids, method=True, type='one2many', \
- multi="log_ids", relation="mailgate.message", string="Logs"),
- }
-
+ 'thread': fields.char('Thread', size=32, required=False),
+ 'message_ids': one2many_domain('mailgate.message', 'thread_id', 'Messages', domain=[('history', '=', True)], required=False),
+ 'log_ids': one2many_domain('mailgate.message', 'thread_id', 'Logs', domain=[('history', '=', False)], required=False),
+ }
+
def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, email_from=False, message_id=False, context={}):
"""
@param self: The object pointer
@@ -89,7 +67,6 @@ class mailgate_thread(osv.osv):
@param context: A standard dictionary for contextual values"""
if not context:
context = {}
-
# The mailgate sends the ids of the cases and not the object list
if all(isinstance(case_id, (int, long)) for case_id in cases) and context.get('model'):
cases = self.pool.get(context['model']).browse(cr, uid, cases, context=context)
@@ -102,21 +79,19 @@ class mailgate_thread(osv.osv):
data = {
'name': keyword,
'user_id': uid,
- 'date': time.strftime('%Y-%m-%d %H:%M:%S'),
'model_id' : model_ids and model_ids[0] or False,
- 'res_id': case.id,
- 'section_id': case.section_id.id,
- 'message_id':message_id
+ 'date': time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'thread_id': case.thread_id.id,
+ 'message_id': message_id
}
if history:
+ data['history'] = True
data['description'] = details or case.description
data['email_to'] = email or \
- (case.section_id and case.section_id.reply_to) or \
(case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from', False)
data['email_from'] = email_from or \
- (case.section_id and case.section_id.reply_to) or \
(case.user_id and case.user_id.address_id and \
case.user_id.address_id.email) or tools.config.get('email_from', False)
res = obj.create(cr, uid, data, context)
@@ -138,10 +113,10 @@ class mailgate_message(osv.osv):
_columns = {
'name':fields.char('Message', size=64),
+ 'model_id': fields.many2one('ir.model', 'Model'),
'thread_id':fields.many2one('mailgate.thread', 'Thread'),
'date': fields.datetime('Date'),
- 'model_id': fields.many2one('ir.model', "Model"),
- 'res_id': fields.integer('Resource ID'),
+ 'history': fields.boolean('Is History?', required=False),
'user_id': fields.many2one('res.users', 'User Responsible', readonly=True),
'message': fields.text('Description'),
'email_from': fields.char('Email From', size=84),
diff --git a/addons/mail_gateway/mail_gateway_view.xml b/addons/mail_gateway/mail_gateway_view.xml
index e735f75b7f0..8b26d5ee47a 100644
--- a/addons/mail_gateway/mail_gateway_view.xml
+++ b/addons/mail_gateway/mail_gateway_view.xml
@@ -9,9 +9,8 @@
-
+
+
+
+
+
+
@@ -138,14 +143,19 @@
-
+
-
+
-
+
+
+
+
+
+
diff --git a/addons/marketing_campaign/marketing_campaign_workflow.xml b/addons/marketing_campaign/marketing_campaign_workflow.xml
new file mode 100644
index 00000000000..a31515efd58
--- /dev/null
+++ b/addons/marketing_campaign/marketing_campaign_workflow.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+ marketing.campaign.basic
+ marketing.campaign
+ True
+
+
+
+
+
+ True
+ draft
+
+
+
+
+ running
+ function
+ state_running_set()
+
+
+
+
+ done
+ function
+ state_done_set()
+
+
+
+
+ cancel
+ True
+ function
+ state_cancel_set()
+
+
+
+
+
+
+ state_running_set
+
+
+
+
+
+ state_done_set
+
+
+
+
+
+ state_cancel_set
+
+
+
+
+
+ marketing.campaign.segment.basic
+ marketing.campaign.segment
+ True
+
+
+
+
+
+ True
+ draft
+
+
+
+
+ running
+ function
+ state_running_set()
+
+
+
+
+ done
+ function
+ state_done_set()
+
+
+
+
+ cancel
+ True
+ function
+ state_cancel_set()
+
+
+
+
+
+
+ state_running_set
+
+
+
+
+
+ state_done_set
+
+
+
+
+
+ state_cancel_set
+
+
+
diff --git a/addons/marketing_campaign/report/campaign_analysis.py b/addons/marketing_campaign/report/campaign_analysis.py
index 6ed57efa1ad..590a1b47bc0 100644
--- a/addons/marketing_campaign/report/campaign_analysis.py
+++ b/addons/marketing_campaign/report/campaign_analysis.py
@@ -36,7 +36,7 @@ class campaign_analysis(osv.osv): #{{{
result = {}
for ca_obj in self.browse(cr, uid, ids, context):
wi_ids = self.pool.get('marketing.campaign.workitem').search(cr, uid,
- [('segment_id.campaign_id', '=', ca_obj.campaign_id.id)])
+ [('segment_id.campaign_id', '=', ca_obj.campaign_id.id)])
total_cost = ca_obj.activity_id.variable_cost + \
(ca_obj.campaign_id.fixed_cost / len(wi_ids))
result[ca_obj.id] = total_cost
@@ -58,14 +58,12 @@ class campaign_analysis(osv.osv): #{{{
readonly=True),
'partner_id': fields.many2one('res.partner', 'Partner', readonly=True),
'country_id': fields.related('partner_id','address', 'country_id',
- type='many2one', relation='res.country',
- string='Country'),
-# 'case_id': fields.many2one('crm.lead', 'Opportunity', readonly=True),
-# 'count' : fields.integer('Count', readonly=True),
- 'total_cost': fields.function(_total_cost, string='Cost', method=True,
- type="float"),
+ type='many2one', relation='res.country',string='Country'),
+ 'total_cost' : fields.function(_total_cost, string='Cost', method=True,
+ type="float" ),
'revenue': fields.float('Revenue',readonly=True),
-
+# 'case_id': fields.many2one('crm.lead', 'Opportunity', readonly=True),
+# 'count' : fields.integer('Count', readonly=True),
}
def init(self, cr):
@@ -87,7 +85,7 @@ class campaign_analysis(osv.osv): #{{{
marketing_campaign_workitem wi
left join res_partner p on (p.id=wi.partner_id)
left join marketing_campaign_segment s on (s.id=wi.segment_id)
- left join marketing_campaign_activity act on (act.id= wi.activity_id),
+ left join marketing_campaign_activity act on (act.id= wi.activity_id)
group by
to_char(wi.date, 'YYYY'),to_char(wi.date, 'MM'),
s.campaign_id,wi.activity_id,wi.segment_id,wi.partner_id,revenue,
diff --git a/addons/marketing_campaign/report/campaign_analysis_view.xml b/addons/marketing_campaign/report/campaign_analysis_view.xml
index 8cf0aa9ab46..b66ec89ca6b 100644
--- a/addons/marketing_campaign/report/campaign_analysis_view.xml
+++ b/addons/marketing_campaign/report/campaign_analysis_view.xml
@@ -6,19 +6,19 @@
campaign.analysis
tree
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -46,8 +46,16 @@
-
+
+
+
+
+
+
+
+
+
@@ -57,7 +65,7 @@
campaign.analysis
form
tree
- {'group_by': [], 'search_default_group_campaign': 1, 'search_default_group_segment': 1}
+ {'group_by': [], 'search_default_Campaign': 1, 'search_default_Segment': 1}
diff --git a/addons/mrp/i18n/fr.po b/addons/mrp/i18n/fr.po
index 34e0d2ef7aa..5db458c1c57 100644
--- a/addons/mrp/i18n/fr.po
+++ b/addons/mrp/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-03-30 14:06+0000\n"
-"Last-Translator: TeMPO \n"
+"PO-Revision-Date: 2010-05-21 21:09+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 03:57+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
@@ -388,7 +388,7 @@ msgstr "Processus des Approvisionnements"
#. module: mrp
#: field:mrp.production,date_planned_date:0
msgid "Scheduled Date"
-msgstr ""
+msgstr "Date planifiée"
#. module: mrp
#: selection:mrp.procurement,priority:0
@@ -1179,7 +1179,7 @@ msgstr "Approvisionnement"
#. module: mrp
#: model:ir.actions.wizard,name:mrp.product_procurement_wizard
msgid "Procurement Request"
-msgstr ""
+msgstr "Demande d'approvisionnement"
#. module: mrp
#: model:ir.actions.wizard,name:mrp.wizard_price
@@ -1680,7 +1680,7 @@ msgstr "Arrondi de produit"
#. module: mrp
#: field:mrp.production.workcenter.line,name:0
msgid "Work Order"
-msgstr ""
+msgstr "Ordre de fabrication"
#. module: mrp
#: view:mrp.production:0
@@ -1995,7 +1995,7 @@ msgstr ""
#. module: mrp
#: field:mrp.production,date_planned_end:0
msgid "Scheduled End"
-msgstr ""
+msgstr "Planification terminée"
#. module: mrp
#: selection:mrp.bom,method:0
diff --git a/addons/mrp/i18n/pl.po b/addons/mrp/i18n/pl.po
index 59e69651b19..130d6a803dc 100644
--- a/addons/mrp/i18n/pl.po
+++ b/addons/mrp/i18n/pl.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-11-17 07:35+0000\n"
-"Last-Translator: Piotr Strębski \n"
+"PO-Revision-Date: 2010-05-21 08:19+0000\n"
+"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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: 2010-04-17 03:58+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
@@ -105,7 +105,7 @@ msgstr "Konfiguracja"
#. module: mrp
#: field:mrp.production,name:0
msgid "Reference"
-msgstr "Odnośnik"
+msgstr "Numer"
#. module: mrp
#: view:mrp.production:0
diff --git a/addons/mrp/report/mrp_production_order.py b/addons/mrp/report/mrp_production_order.py
index 7f48b111d43..d754d6a50ad 100644
--- a/addons/mrp/report/mrp_production_order.py
+++ b/addons/mrp/report/mrp_production_order.py
@@ -27,12 +27,16 @@ class mrp_production_order(osv.osv):
_description = "Production Order Report"
_auto = False
_columns = {
- 'name': fields.char('Year',size=64,required=False, readonly=True),
+ 'year': fields.char('Year',size=64,readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
+ 'day': fields.char('Day',size=64,readonly=True),
'origin': fields.char('Source Document', size=64),
'nbr': fields.integer('# of Orders', readonly=True),
- 'product_id': fields.many2one('product.product', 'Product', readonly=True, domain=[('type','<>','service')]),
+ 'products_to_consume': fields.integer('Products to Consume', readonly=True),
+ 'consumed_products': fields.integer('Consumed Products', readonly=True),
+ 'date': fields.date('Date', readonly=True),
+ 'product_id': fields.many2one('product.product', 'Product', readonly=True),
'product_qty': fields.float('Product Qty', readonly=True),
'state': fields.selection([('draft','Draft'),
('picking_except', 'Picking Exception'),
@@ -43,14 +47,15 @@ class mrp_production_order(osv.osv):
('done','Done')],
'State', readonly=True),
'date_planned':fields.date('Scheduled Date'),
- 'location_src_id': fields.many2one('stock.location', 'Raw Materials Location', required=True),
+ 'location_src_id': fields.many2one('stock.location', 'Raw Materials Location', readonly=True),
'date_start': fields.datetime('Start Date',readonly=True),
'date_finnished': fields.datetime('End Date',readonly=True),
- 'location_dest_id': fields.many2one('stock.location', 'Finished Products Location', required=True),
+ 'location_dest_id': fields.many2one('stock.location', 'Finished Products Location', readonly=True),
'company_id': fields.many2one('res.company','Company',readonly=True),
- 'bom_id': fields.many2one('mrp.bom', 'Bill of Material', domain=[('bom_id','=',False)],readonly=True),
- 'routing_id': fields.many2one('mrp.routing', string='Routing', on_delete='set null',readonly=True),
+ 'bom_id': fields.many2one('mrp.bom', 'Bill of Material',readonly=True),
+ 'routing_id': fields.many2one('mrp.routing', string='Routing',readonly=True),
'picking_id': fields.many2one('stock.picking', 'Picking list', readonly=True),
+ 'product_uom': fields.many2one('product.uom', 'Product UOM', readonly=True),
'priority': fields.selection([('0','Not urgent'),
('1','Normal'),
('2','Urgent'),
@@ -65,12 +70,27 @@ class mrp_production_order(osv.osv):
create or replace view mrp_production_order as (
select
min(l.id) as id,
- to_char(s.create_date, 'YYYY') as name,
+ to_date(to_char(s.create_date, 'MM-dd-YYYY'),'MM-dd-YYYY') as date,
+ to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month,
+ to_char(s.create_date, 'YYYY-MM-DD') as day,
l.product_id as product_id,
+ l.product_uom,
sum(l.product_qty * u.factor) as product_qty,
s.company_id as company_id,
count(*) as nbr,
+ (select sum(sm.product_qty) from stock_move as sm
+ left join mrp_production_move_ids as mv on (sm.id=mv.move_id)
+ left join mrp_production_product_line as ll on (ll.production_id=mv.production_id)
+ where sm.product_id=ll.product_id and ll.id=l.id
+ and sm.state not in ('done','cancel')
+ group by sm.product_id) as products_to_consume,
+ (select sum(sm.product_qty)/2 from stock_move as sm
+ left join mrp_production_move_ids as mv on (sm.id=mv.move_id)
+ left join mrp_production_product_line as ll on (ll.production_id=mv.production_id)
+ where sm.product_id=ll.product_id and ll.id=l.id
+ and sm.state in ('done','cancel')
+ group by sm.product_id) as consumed_products,
s.location_src_id,
s.location_dest_id,
s.bom_id,
@@ -82,16 +102,18 @@ class mrp_production_order(osv.osv):
s.origin,
s.priority,
s.state
- from
- mrp_production_product_line l
- left join
- mrp_production s on (s.id=l.production_id)
- left join product_uom u on (u.id=l.product_uom)
+ from mrp_production_product_line l
+ left join mrp_production s on (s.id=l.production_id)
+ left join product_uom u on (u.id=l.product_uom)
group by
to_char(s.create_date, 'YYYY'),
to_char(s.create_date, 'MM'),
+ to_char(s.create_date, 'YYYY-MM-DD'),
+ to_date(to_char(s.create_date, 'MM-dd-YYYY'),'MM-dd-YYYY'),
l.product_id,
l.product_uom,
+ s.id,
+ l.id,
s.bom_id,
s.routing_id,
s.picking_id,
diff --git a/addons/mrp/report/mrp_production_order_view.xml b/addons/mrp/report/mrp_production_order_view.xml
index 1ae2e6b32bb..c9c7a3d4400 100644
--- a/addons/mrp/report/mrp_production_order_view.xml
+++ b/addons/mrp/report/mrp_production_order_view.xml
@@ -21,7 +21,7 @@
-
+
@@ -48,8 +48,8 @@
-
-
+
+
@@ -89,7 +89,7 @@
-
+
@@ -101,8 +101,8 @@
tree,graph
- {'search_default_Product': 1,'search_default_this_year':1,'search_default_this_month':1}
-
+ {'search_default_Product': 1}
+
diff --git a/addons/multi_company/i18n/fr.po b/addons/multi_company/i18n/fr.po
index 0f63c32dd30..535e5a56cf0 100644
--- a/addons/multi_company/i18n/fr.po
+++ b/addons/multi_company/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-12-08 11:46+0000\n"
-"PO-Revision-Date: 2010-05-20 14:21+0000\n"
+"PO-Revision-Date: 2010-05-21 10:24+0000\n"
"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-05-21 03:38+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: multi_company
@@ -87,27 +87,27 @@ msgstr ""
#. module: multi_company
#: field:multi_company.default,company_id:0
msgid "Main Company"
-msgstr ""
+msgstr "Société Principale"
#. module: multi_company
#: view:multi_company.default:0
msgid "Condition"
-msgstr ""
+msgstr "Condition"
#. module: multi_company
#: help:multi_company.default,company_dest_id:0
msgid "Company to store the current record"
-msgstr ""
+msgstr "Société physique ou sera stocké cet enregistrement"
#. module: multi_company
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
-msgstr ""
+msgstr "XML non valide pour l'architecture de la vue !"
#. module: multi_company
#: field:multi_company.default,name:0
msgid "Name"
-msgstr ""
+msgstr "Nom"
#. module: multi_company
#: constraint:product.template:0
@@ -117,80 +117,80 @@ msgstr ""
#. module: multi_company
#: model:product.category,name:multi_company.Odoo1
msgid "Odoo Offers"
-msgstr ""
+msgstr "Offre Odoo"
#. module: multi_company
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
-msgstr ""
+msgstr "Erreur ! Vous ne pouvez pas créer de sociétés récursives"
#. module: multi_company
#: help:multi_company.default,name:0
msgid "Name it to easily find a record"
-msgstr ""
+msgstr "Nommer le facilement pour trouver l'enregistrement"
#. module: multi_company
#: model:ir.ui.menu,name:multi_company.menu_custom_multicompany
msgid "Multi company"
-msgstr ""
+msgstr "Multi société"
#. module: multi_company
#: model:ir.model,name:multi_company.model_multi_company_default
msgid "multi_company.default"
-msgstr ""
+msgstr "multi_company.default"
#. module: multi_company
#: help:multi_company.default,company_id:0
msgid "Company where the user is connected"
-msgstr ""
+msgstr "Société ou l'utilisateur sera connecté"
#. module: multi_company
#: model:ir.actions.act_window,name:multi_company.action_inventory_form
msgid "Default Company per Object"
-msgstr ""
+msgstr "Société par défaut par objet"
#. module: multi_company
#: field:multi_company.default,expression:0
msgid "Expression"
-msgstr ""
+msgstr "Expression"
#. module: multi_company
#: model:product.template,name:multi_company.product_product_odoo1_product_template
msgid "Odoo Offer"
-msgstr ""
+msgstr "Offre Odoo"
#. module: multi_company
#: field:multi_company.default,sequence:0
msgid "Sequence"
-msgstr ""
+msgstr "Séquence"
#. module: multi_company
#: constraint:product.category:0
msgid "Error ! You can not create recursive categories."
-msgstr ""
+msgstr "Erreur ! Vous ne pouvez pas créer de catégories récursives"
#. module: multi_company
#: constraint:product.product:0
msgid "Error: Invalid ean code"
-msgstr ""
+msgstr "Erreur: code EAN non valide"
#. module: multi_company
#: help:multi_company.default,expression:0
msgid "Expression, must be True to match"
-msgstr ""
+msgstr "Expression, doit être Vrai pour correspondre"
#. module: multi_company
#: model:ir.ui.menu,name:multi_company.menu_action_inventory_form
msgid "Default company per Object"
-msgstr ""
+msgstr "Société par défaut par Objet"
#. module: multi_company
#: code:addons/multi_company/multi_company.py:0
#, python-format
msgid " (copy)"
-msgstr ""
+msgstr " (copie)"
#. module: multi_company
#: view:multi_company.default:0
msgid "Matching"
-msgstr ""
+msgstr "Correspondance"
diff --git a/addons/olap/i18n/fr.po b/addons/olap/i18n/fr.po
new file mode 100644
index 00000000000..e9c187a4eda
--- /dev/null
+++ b/addons/olap/i18n/fr.po
@@ -0,0 +1,1402 @@
+# French translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2009-11-26 05:24+0000\n"
+"PO-Revision-Date: 2010-05-21 14:51+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n"
+"Language-Team: French \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: olap
+#: view:olap.database.columns:0
+#: view:olap.database.tables:0
+msgid "Hide"
+msgstr "Masquer"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_saved_query_form
+#: model:ir.ui.menu,name:olap.menu_action_olap_saved_query_form
+#: view:olap.saved.query:0
+msgid "Olap Saved Query"
+msgstr ""
+
+#. module: olap
+#: field:olap.query.logs,time:0
+#: field:olap.saved.query,time:0
+msgid "Time"
+msgstr "Temps"
+
+#. module: olap
+#: view:bi.auto.configure.wizard:0
+msgid "Auto Configure Structure"
+msgstr ""
+
+#. module: olap
+#: view:olap.fact.database:0
+msgid "Olap fact database"
+msgstr ""
+
+#. module: olap
+#: help:olap.measure,value_sql:0
+msgid ""
+"You can provide valid sql expression. Make sure it have function with fully "
+"qualified column name like (sum,avg ...)(tablename.columnname (+,- ...) "
+"tablename.columnname)"
+msgstr ""
+
+#. module: olap
+#: field:olap.cube.table,schema_id:0
+msgid "Schema id"
+msgstr ""
+
+#. module: olap
+#: field:olap.schema,database_id:0
+msgid "Database Connection"
+msgstr "Connexion à une base de données"
+
+#. module: olap
+#: selection:olap.fact.database,type:0
+msgid "MySQL"
+msgstr "MySQL"
+
+#. module: olap
+#: field:olap.fact.database,db_password:0
+msgid "Database password"
+msgstr "Mot de passe de la base de données"
+
+#. module: olap
+#: view:olap.database.tables:0
+msgid "Olap database tables"
+msgstr ""
+
+#. module: olap
+#: view:olap.fact.database:0
+msgid "Connection url"
+msgstr "URL de connexion"
+
+#. module: olap
+#: view:olap.application.table:0
+msgid "Olap Application Table"
+msgstr ""
+
+#. module: olap
+#: field:olap.parameters.config.wizard,host_name:0
+msgid "Server Name"
+msgstr "Nom du serveur"
+
+#. module: olap
+#: help:olap.fact.database,db_password:0
+msgid "Password for the login."
+msgstr "Mot de passe pour le login"
+
+#. module: olap
+#: field:olap.application.field,application_id:0
+#: field:olap.application.table,application_id:0
+msgid "Application Id"
+msgstr "ID de l'application"
+
+#. module: olap
+#: model:ir.actions.todo,note:olap.config_auto_directory
+msgid "This wizard will configure the URL of the web client"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_view_olap_fact_database_form
+#: model:ir.ui.menu,name:olap.menu_bi_conf_fact
+msgid "Fact Databases"
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_browser_url
+msgid "Cube Browser"
+msgstr "Explorer le Cube"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_action_olap_dimension_form
+msgid "Olap Dimension"
+msgstr "Dimension du cube Olap"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_database_columns
+msgid "Olap Database Columns"
+msgstr ""
+
+#. module: olap
+#: view:olap.parameters.config.wizard:0
+msgid "BI Web Client."
+msgstr ""
+
+#. module: olap
+#: help:olap.fact.database,db_port:0
+msgid " Port to be used in connection"
+msgstr " Port utilisé par la connexion"
+
+#. module: olap
+#: field:olap.database.columns,primary_key:0
+msgid "Primary Key"
+msgstr "Clé primaire"
+
+#. module: olap
+#: field:olap.database.columns,table_id:0
+msgid "Table Id"
+msgstr "ID de la table"
+
+#. module: olap
+#: view:olap.parameters.config.wizard:0
+msgid "This wizard will automatically configure the web client for BI."
+msgstr "Cet assistant configurera automatiquement le client Web pour la BI"
+
+#. module: olap
+#: field:olap.fact.database,type:0
+msgid "Database type"
+msgstr "Type de base de données"
+
+#. module: olap
+#: wizard_view:olap.query_builder,back:0
+#: wizard_view:olap.query_builder,init:0
+msgid "Cube Fetcher"
+msgstr ""
+
+#. module: olap
+#: wizard_view:olap.load.table,info:0
+#: wizard_view:olap.load.table,ok:0
+msgid "Your database structure has been correctly loaded"
+msgstr ""
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_parameters_config_wizard
+msgid "Olap Server Parameters"
+msgstr "Paramètres du serveur Olap"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_cube_table_form
+msgid "Olap Cube Tables"
+msgstr ""
+
+#. module: olap
+#: field:olap.measure,formatstring:0
+msgid "Format string"
+msgstr "Foramtage de chaîne"
+
+#. module: olap
+#: wizard_button:olap.query_builder,exec,exec:0
+#: wizard_button:olap.query_builder,ok,exec:0
+msgid "Execute"
+msgstr "Exécuter"
+
+#. module: olap
+#: wizard_button:olap.application.configuration,configure,end:0
+#: wizard_button:olap.fact.database.test_connection,init,end:0
+#: wizard_button:olap.load.table,info,end:0
+#: wizard_button:olap.query.logs.clear,info,end:0
+#: wizard_button:olap.query.logs.clear,ok,end:0
+#: view:olap.warehouse.wizard:0
+msgid "Ok"
+msgstr "Ok"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_bi_conf_known_application
+msgid "Known Application"
+msgstr "Application connue"
+
+#. module: olap
+#: wizard_field:olap.query_builder,exec,level:0
+#: wizard_field:olap.query_builder,ok,level:0
+msgid "Level"
+msgstr "Niveau"
+
+#. module: olap
+#: field:olap.level,column_id_name:0
+#: field:olap.measure,value_column_id_name:0
+msgid "Column ID"
+msgstr "ID de la colonne"
+
+#. module: olap
+#: view:bi.load.db.wizard:0
+msgid ""
+"We will load the complete structure of the database by introspection, so "
+"that you will be able to work on it, and specify a better structure "
+"according to your reporting needs."
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_view_olap_application_form
+msgid "Olap Applicatiion"
+msgstr "Application Olap"
+
+#. module: olap
+#: field:olap.saved.query,name:0
+msgid "Query Name"
+msgstr "Nom de la requête"
+
+#. module: olap
+#: wizard_field:olap.query_builder,exec,mdx_query:0
+#: wizard_field:olap.query_builder,ok,mdx_query:0
+msgid "MDX Query"
+msgstr "Requête MDX"
+
+#. module: olap
+#: model:ir.model,name:olap.model_bi_auto_configure_wizard
+msgid "bi.auto.configure.wizard"
+msgstr "bi.auto.configure.wizard"
+
+#. module: olap
+#: field:olap.hierarchy,primary_key:0
+msgid "Primary key"
+msgstr "Clé primaire"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.act_bi_auto_configure
+msgid "Auto Configuration"
+msgstr "Configuration automatique"
+
+#. module: olap
+#: field:olap.schema,note:0
+msgid "Schema description"
+msgstr "Description du schéma"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.act_bi_load_db_wizard
+msgid "Load database Structure"
+msgstr "Chargement de la structure de base de données"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_level
+#: view:olap.level:0
+msgid "Olap level"
+msgstr "Niveau Olap"
+
+#. module: olap
+#: selection:olap.measure,formatstring:0
+msgid "None (0000.00)"
+msgstr "Aucun (0000.00)"
+
+#. module: olap
+#: field:olap.fact.database,db_host:0
+msgid "Database host"
+msgstr "Nom d'hôte de la base de données"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_fact_database
+msgid "Olap Fact Database"
+msgstr ""
+
+#. module: olap
+#: view:bi.auto.configure.wizard:0
+msgid "Auto Congifuring Tables"
+msgstr "Configuration automatique des tables"
+
+#. module: olap
+#: field:olap.application,name:0
+msgid "Application name"
+msgstr "Nom de l'application"
+
+#. module: olap
+#: field:olap.cube.table,column_link_id:0
+msgid "Relational Column"
+msgstr "Colonne relationnelle"
+
+#. module: olap
+#: field:olap.level,type:0
+msgid "Level class"
+msgstr ""
+
+#. module: olap
+#: field:olap.cube,name:0
+msgid "Cube name"
+msgstr "Nom du cube"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_view_olap_application_table_form
+msgid "Olap Applicatiion Table"
+msgstr ""
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_saved_query
+msgid "olap.saved.query"
+msgstr "olap.saved.query"
+
+#. module: olap
+#: field:olap.level,column_name:0
+msgid "Columns Name"
+msgstr "Nom des colonnes"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_hierarchy_form
+msgid "Olap Hierarchies"
+msgstr "Hiérarchies Olap"
+
+#. module: olap
+#: field:olap.schema,ready:0
+msgid "Ready"
+msgstr "Prêt"
+
+#. module: olap
+#: selection:olap.measure,measure_type:0
+#: field:olap.measure,value_column:0
+msgid "Fact Table Column"
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_view_olap_database_tables_form
+#: field:olap.application,table_ids:0
+#: view:olap.fact.database:0
+#: field:olap.fact.database,table_ids:0
+msgid "Tables"
+msgstr "Tables"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_application
+msgid "Olap application"
+msgstr "Application Olap"
+
+#. module: olap
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nom de modèle invalide pour la définition de l'action"
+
+#. module: olap
+#: selection:olap.schema,state:0
+msgid "Schema is ready to use"
+msgstr "Le schéma est prêt a être utilisé"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_designer_url
+msgid "Cube Designer"
+msgstr "Cube Designer"
+
+#. module: olap
+#: field:olap.fact.database,db_login:0
+msgid "Database login"
+msgstr "Connexion à la base de données"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_view_olap_application_table_form
+msgid "Application Table"
+msgstr ""
+
+#. module: olap
+#: wizard_view:olap.query.logs.clear,info:0
+#: wizard_view:olap.query.logs.clear,ok:0
+msgid "Logs Cleared successfully"
+msgstr "Les fichiers journaux ont été effacés avec succès"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_schema
+#: model:ir.ui.menu,name:olap.menu_action_olap_schema_form
+#: view:olap.schema:0
+msgid "Olap Schema"
+msgstr "Schéma Olap"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_view_olap_application_form
+msgid "Application"
+msgstr "Application"
+
+#. module: olap
+#: wizard_field:olap.query_builder,exec,mdx_query_output:0
+#: wizard_field:olap.query_builder,ok,mdx_query_output:0
+msgid "MDX Query Output"
+msgstr "Requête MDX en sortie"
+
+#. module: olap
+#: field:olap.hierarchy,primary_key_table:0
+msgid "Primary key table"
+msgstr "Table de la clé primaire"
+
+#. module: olap
+#: help:olap.measure,table_name:0
+msgid ""
+"The name of the table on which the column is defined. If False, take the "
+"table from the cube."
+msgstr ""
+
+#. module: olap
+#: view:olap.warehouse.wizard:0
+msgid "Warehouse"
+msgstr "Entrepôt"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_dimension_form
+msgid "Olap Dimensions"
+msgstr "Dimensions Olap"
+
+#. module: olap
+#: field:olap.query.logs,user_id:0
+msgid "Tiny ERP User"
+msgstr "Utilisateur Tiny ERP"
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_application_configuration
+msgid "Configure from Application"
+msgstr ""
+
+#. module: olap
+#: field:olap.fact.database,db_port:0
+msgid "Database port"
+msgstr "Port de connexion à la base"
+
+#. module: olap
+#: help:olap.parameters.config.wizard,host_port:0
+msgid ""
+"Put the port for the server. Put 8080 if its not clear."
+msgstr ""
+"Mettre le port du server. Mettre 8080 if ce n'est pas clair pour vous"
+
+#. module: olap
+#: selection:olap.schema,state:0
+msgid "The Structure is Loaded"
+msgstr "La structure est chargée"
+
+#. module: olap
+#: field:olap.dimension,cube_id:0
+#: field:olap.measure,cube_id:0
+#: field:olap.query.logs,cube_id:0
+#: field:olap.saved.query,cube_id:0
+msgid "Cube"
+msgstr "Cube"
+
+#. module: olap
+#: field:olap.cube.table,available_table_ids:0
+msgid "Available Tables"
+msgstr "Tables disponibles"
+
+#. module: olap
+#: view:olap.schema:0
+msgid "Configure Manually"
+msgstr "Coonfigurer manuellement"
+
+#. module: olap
+#: field:olap.database.columns,related_to:0
+msgid "Related To"
+msgstr "Lié à"
+
+#. module: olap
+#: view:olap.database.columns:0
+#: view:olap.database.tables:0
+msgid "Olap database columns"
+msgstr "Colonne Olap dans la base de données"
+
+#. module: olap
+#: field:olap.cube.table.line,field_id:0
+msgid "Link Field"
+msgstr "Lien du champ"
+
+#. module: olap
+#: view:olap.schema:0
+msgid "Mark as Configured"
+msgstr ""
+
+#. module: olap
+#: view:olap.application.field:0
+msgid "Olap Application Field"
+msgstr ""
+
+#. module: olap
+#: selection:olap.measure,formatstring:0
+msgid "Comma Seperator (0,000)"
+msgstr "Séparateur décimal (0,000)"
+
+#. module: olap
+#: field:olap.measure,agregator:0
+msgid "Agregator"
+msgstr "Agregateur"
+
+#. module: olap
+#: wizard_view:olap.application.configuration,configure:0
+msgid "Your database structure (Open ERP) has been sucessfully configured."
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_bi_configuration
+msgid "Configuration"
+msgstr "Configuration"
+
+#. module: olap
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML non valide pour l'architecture de la vue !"
+
+#. module: olap
+#: help:olap.parameters.config.wizard,host_name:0
+msgid ""
+"Put here the server address or IP Put localhost if its not "
+"clear."
+msgstr ""
+
+#. module: olap
+#: view:olap.database.tables:0
+msgid "Database tables"
+msgstr ""
+
+#. module: olap
+#: view:olap.schema:0
+msgid "Reload Structure"
+msgstr "Recharger la structure"
+
+#. module: olap
+#: wizard_view:olap.application.configuration,init:0
+msgid "This will Auto Configure Application"
+msgstr ""
+
+#. module: olap
+#: view:bi.load.db.wizard:0
+msgid "Load Data Structure"
+msgstr "Charger la structure de données"
+
+#. module: olap
+#: view:bi.auto.configure.wizard:0
+#: view:bi.load.db.wizard:0
+#: wizard_button:olap.application.configuration,init,end:0
+#: wizard_button:olap.load.table,init,end:0
+#: view:olap.parameters.config.wizard:0
+#: wizard_button:olap.query.logs.clear,init,end:0
+#: wizard_button:olap.query_builder,exec,end:0
+#: wizard_button:olap.query_builder,ok,end:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: olap
+#: view:bi.load.db.wizard:0
+msgid ""
+"After having loaded the structure, you will be able to hide/show or rename "
+"tables and columns to simplify end-users interface. The following database "
+"will be loaded:"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_level_form
+#: model:ir.ui.menu,name:olap.menu_action_olap_level_form
+#: view:olap.level:0
+msgid "Olap Level"
+msgstr "Niveau Olap"
+
+#. module: olap
+#: field:olap.fact.database,loaded:0
+msgid "Loaded"
+msgstr "Chargé"
+
+#. module: olap
+#: help:olap.fact.database,db_name:0
+msgid "Name of the database to be used for analysis."
+msgstr "Nom de la base de données pour l'analyse."
+
+#. module: olap
+#: help:olap.fact.database,db_login:0
+msgid "Login for the database name specified."
+msgstr ""
+
+#. module: olap
+#: field:olap.hierarchy,dimension_id:0
+#: wizard_field:olap.query_builder,exec,dimension:0
+#: wizard_field:olap.query_builder,ok,dimension:0
+msgid "Dimension"
+msgstr "Dimension"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_application_table
+msgid "Olap application table"
+msgstr ""
+
+#. module: olap
+#: wizard_view:olap.load.table,init:0
+msgid ""
+"We will load the complete structure of the database by introspection, "
+"so that you will be able to work on it, and specify a better structure "
+"according to your reporting needs."
+msgstr ""
+
+#. module: olap
+#: field:olap.saved.query,axis_keys:0
+msgid "Axis Keys"
+msgstr "Axe clé"
+
+#. module: olap
+#: field:olap.cube,query_log:0
+msgid "Query Logging"
+msgstr "Enregistrer les requêtes"
+
+#. module: olap
+#: field:olap.measure,measure_type:0
+msgid "Measure Type"
+msgstr "Type de mesure"
+
+#. module: olap
+#: field:olap.database.tables,fact_database_id:0
+msgid "Database Id"
+msgstr "ID de la base de données"
+
+#. module: olap
+#: help:olap.fact.database,db_host:0
+msgid "Give hostname to make connection to the database."
+msgstr ""
+
+#. module: olap
+#: field:olap.level,hierarchy_id:0
+msgid "Hierarchy"
+msgstr "Hiérarchie"
+
+#. module: olap
+#: selection:olap.schema,state:0
+msgid "The Structure is Configured."
+msgstr "La structure est configurée"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_schema_form
+msgid "Olap Schemas"
+msgstr "Schéma Olap"
+
+#. module: olap
+#: field:olap.cube,table_id:0
+msgid "Fact table"
+msgstr ""
+
+#. module: olap
+#: view:bi.auto.configure.wizard:0
+msgid ""
+"This will Auto Configure Application. This will help to increase the "
+"readability of the tables and columns by giving it meaningful and easy to "
+"comprehend name. You can hides particular data and columns by reconfiguring "
+"the structure option."
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_view_olap_application_field_form
+msgid "Olap Applicatiion Field"
+msgstr ""
+
+#. module: olap
+#: field:olap.query.logs,query:0
+#: field:olap.saved.query,query:0
+#: view:olap.warehouse.wizard:0
+#: field:olap.warehouse.wizard,query:0
+msgid "Query"
+msgstr "Requête"
+
+#. module: olap
+#: view:olap.schema:0
+msgid "Auto Application Configuration"
+msgstr ""
+
+#. module: olap
+#: selection:olap.measure,formatstring:0
+msgid "Postfix Default Currency(0000.00 EUR)"
+msgstr ""
+
+#. module: olap
+#: field:bi.load.db.wizard,db_name:0
+#: wizard_field:olap.load.table,init,db_name:0
+msgid "Database Name"
+msgstr ""
+
+#. module: olap
+#: field:olap.cube,measure_ids:0
+msgid "Measures"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_conf_cube_query_builder
+#: wizard_view:olap.query_builder,exec:0
+#: wizard_view:olap.query_builder,ok:0
+msgid "Query Builder"
+msgstr ""
+
+#. module: olap
+#: field:olap.cube,dimension_ids:0
+msgid "Dimensions"
+msgstr ""
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_cube
+#: view:olap.cube:0
+msgid "Olap cube"
+msgstr "Cube Olap"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_warehouse
+#: model:ir.model,name:olap.model_olap_warehouse_wizard
+#: model:ir.ui.menu,name:olap.menu_bi_warehouse
+msgid "Olap Warehouse"
+msgstr "Entrepôt Olap"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_view_olap_application_field_form
+msgid "Application Field"
+msgstr "Champ d'application"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_dimension
+#: view:olap.dimension:0
+msgid "Olap dimension"
+msgstr "Dimension Olap"
+
+#. module: olap
+#: field:olap.application.field,name:0
+msgid "Application field name"
+msgstr "Nom du champ de l'application"
+
+#. module: olap
+#: view:olap.fact.database:0
+msgid "Connection parameters"
+msgstr "Paramètres de connexion"
+
+#. module: olap
+#: field:bi.auto.configure.wizard,name:0
+#: field:bi.load.db.wizard,fact_table:0
+#: wizard_field:olap.load.table,init,fact_table:0
+msgid "Fact Name"
+msgstr ""
+
+#. module: olap
+#: view:olap.database.columns:0
+msgid "Database columns"
+msgstr "Colonnes de la base de données"
+
+#. module: olap
+#: field:olap.application.table,table_name:0
+#: field:olap.cube.table,name:0
+#: field:olap.level,table_name:0
+#: field:olap.measure,table_name:0
+msgid "Table name"
+msgstr "Nom de la table"
+
+#. module: olap
+#: help:olap.measure,measure_type:0
+msgid "Select between auto column or sql expression for the measures"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_load_column
+msgid "Open Columns"
+msgstr "Colonnes ouvertes"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_view_olap_database_columns_form
+#: field:olap.database.tables,columns:0
+msgid "Columns"
+msgstr "Colonnes"
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_test_connection
+#: view:olap.fact.database:0
+msgid "Test Connection"
+msgstr "Test de connexion"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_measure_form
+#: model:ir.ui.menu,name:olap.menu_action_olap_measure_form
+msgid "Olap Measures"
+msgstr "Mesures Olap"
+
+#. module: olap
+#: wizard_button:olap.application.configuration,init,configure:0
+#: view:olap.parameters.config.wizard:0
+msgid "Configure"
+msgstr ""
+
+#. module: olap
+#: wizard_view:olap.load.table,init:0
+msgid ""
+"After having loaded the structure, you will be able to hide/show or "
+"rename tables and columns to simplify end-users interface. The following "
+"database will be loaded:"
+msgstr ""
+
+#. module: olap
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Le nom de l'objet doit commencer par x_ et ne doit pas contenir de "
+"caractères spéciaux !"
+
+#. module: olap
+#: wizard_field:olap.query_builder,exec,hierarchy:0
+#: wizard_field:olap.query_builder,ok,hierarchy:0
+msgid "Hiearchy"
+msgstr "Hiérarchie"
+
+#. module: olap
+#: selection:olap.measure,measure_type:0
+#: field:olap.measure,value_sql:0
+msgid "SQL Expression"
+msgstr "Expression SQL"
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_menu_olap_load_table
+msgid "Load Tables"
+msgstr "Chargements des tables"
+
+#. module: olap
+#: field:olap.hierarchy,level_ids:0
+msgid "Levels"
+msgstr "Niveaux"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_application_field
+msgid "Olap application field"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_view_olap_database_columns_form
+msgid "Database Columns"
+msgstr "Colonnes de base de données"
+
+#. module: olap
+#: field:olap.database.columns,active:0
+#: field:olap.database.tables,active:0
+msgid "Active"
+msgstr "Actif"
+
+#. module: olap
+#: selection:olap.measure,datatype:0
+msgid "Integer"
+msgstr "Entier"
+
+#. module: olap
+#: wizard_view:olap.application.configuration,init:0
+msgid " Auto Configure "
+msgstr ""
+
+#. module: olap
+#: selection:olap.measure,agregator:0
+msgid "Sum"
+msgstr "Somme"
+
+#. module: olap
+#: wizard_field:olap.query.logs.clear,init,user_name:0
+#: field:olap.saved.query,user_id:0
+msgid "User"
+msgstr "Utilisateur"
+
+#. module: olap
+#: field:olap.query.logs,count:0
+msgid "Count"
+msgstr "Compter"
+
+#. module: olap
+#: field:olap.database.tables,name:0
+msgid "End-User Name"
+msgstr ""
+
+#. module: olap
+#: selection:olap.measure,formatstring:0
+msgid "Postfix Default Currency with comma seperator (0,000.00 EUR)"
+msgstr ""
+
+#. module: olap
+#: field:olap.measure,datatype:0
+msgid "Datatype"
+msgstr "Type de données"
+
+#. module: olap
+#: wizard_button:olap.query_builder,back,ok:0
+#: wizard_button:olap.query_builder,init,ok:0
+msgid "Fetch Data"
+msgstr "Récupérer les données"
+
+#. module: olap
+#: selection:olap.measure,formatstring:0
+msgid "Prefix Default Currency with comma seperator (EUR 0,000.00)"
+msgstr ""
+
+#. module: olap
+#: wizard_view:olap.load.table,info:0
+#: wizard_view:olap.load.table,ok:0
+#: wizard_view:olap.query.logs.clear,info:0
+#: wizard_view:olap.query.logs.clear,ok:0
+msgid "Load Data"
+msgstr "Charger les données"
+
+#. module: olap
+#: field:olap.cube,query_ids:0
+msgid "Queries"
+msgstr "Requêtes"
+
+#. module: olap
+#: selection:olap.fact.database,type:0
+msgid "Oracle"
+msgstr "Oracle"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_cube_form
+#: model:ir.ui.menu,name:olap.menu_action_olap_cube_form
+#: model:ir.ui.menu,name:olap.menu_bi_conf_cubes
+msgid "Olap Cubes"
+msgstr "Cubes Olap"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_action_olap_cube_table_form
+msgid "Olap Cubes Table"
+msgstr "Tables des Cubes Olap"
+
+#. module: olap
+#: field:olap.measure,name:0
+msgid "Measure name"
+msgstr "Nom de la mesure"
+
+#. module: olap
+#: selection:olap.fact.database,connection_type:0
+msgid "Socket"
+msgstr ""
+
+#. module: olap
+#: field:olap.fact.database,connection_type:0
+msgid "Connection type"
+msgstr "Type de connexion"
+
+#. module: olap
+#: selection:olap.measure,agregator:0
+msgid "count"
+msgstr "nombre"
+
+#. module: olap
+#: field:olap.fact.database,db_name:0
+msgid "Database name"
+msgstr "Nom de la base de données"
+
+#. module: olap
+#: field:olap.database.columns,type:0
+msgid "Type"
+msgstr "Type"
+
+#. module: olap
+#: view:olap.database.columns:0
+#: view:olap.database.tables:0
+msgid "Show"
+msgstr "Montrer"
+
+#. module: olap
+#: wizard_button:olap.query_builder,exec,back:0
+#: wizard_button:olap.query_builder,ok,back:0
+msgid "Change cube"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_view_olap_database_tables_form
+#: view:olap.cube.table:0
+#: field:olap.cube.table,line_ids:0
+msgid "Database Tables"
+msgstr ""
+
+#. module: olap
+#: help:olap.level,table_name:0
+msgid ""
+"The name of the table on which the column is defined. If False, take the "
+"table from the hierarchy."
+msgstr ""
+
+#. module: olap
+#: selection:olap.schema,state:0
+msgid "Nothing has been Configured"
+msgstr ""
+
+#. module: olap
+#: field:olap.dimension,name:0
+msgid "Dimension name"
+msgstr ""
+
+#. module: olap
+#: wizard_button:olap.load.table,ok,end:0
+msgid "Continue and Configure Structure"
+msgstr ""
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_measure
+#: view:olap.measure:0
+msgid "Olap measure"
+msgstr ""
+
+#. module: olap
+#: help:olap.cube,table_id:0
+msgid "Table(s) for cube."
+msgstr "Table(s) pour le cube"
+
+#. module: olap
+#: wizard_field:olap.query_builder,exec,measure:0
+#: wizard_field:olap.query_builder,ok,measure:0
+msgid "Measure"
+msgstr ""
+
+#. module: olap
+#: field:olap.database.columns,column_db_name:0
+msgid "Column DBName"
+msgstr ""
+
+#. module: olap
+#: selection:olap.schema,state:0
+msgid "We Can Start building Cube"
+msgstr ""
+
+#. module: olap
+#: field:olap.cube.table.line,table_id:0
+msgid "Database Table"
+msgstr ""
+
+#. module: olap
+#: field:olap.schema,name:0
+msgid "Schema name"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_query_logs_my_form
+#: model:ir.ui.menu,name:olap.menu_action_olap_query_logs_my_form
+#: view:olap.query.logs:0
+msgid "My Logs"
+msgstr "Mes journaux"
+
+#. module: olap
+#: view:olap.fact.database:0
+msgid "Information"
+msgstr "Information"
+
+#. module: olap
+#: wizard_field:olap.query_builder,back,cube_schema:0
+#: wizard_field:olap.query_builder,init,cube_schema:0
+msgid "Select Cube"
+msgstr "Sélectionner le Cube"
+
+#. module: olap
+#: field:olap.hierarchy,table_id:0
+msgid "Fact table(s)"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.url,name:olap.menu_url_cube_designer
+msgid "name_menu_url_cube_designer"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_config_bi_parameters
+msgid "Parameters Configuration"
+msgstr ""
+
+#. module: olap
+#: view:olap.schema:0
+msgid "Connect to Database"
+msgstr "Connexion à la base de données"
+
+#. module: olap
+#: selection:olap.schema,state:0
+msgid "Database Connected"
+msgstr "Connecté à la base de données"
+
+#. module: olap
+#: field:olap.application.field,table_name:0
+#: field:olap.application.table,name:0
+msgid "Application table name"
+msgstr ""
+
+#. module: olap
+#: help:olap.hierarchy,table_id:0
+msgid "Table(s) to make hierarchy on the cube."
+msgstr ""
+
+#. module: olap
+#: view:olap.fact.database:0
+msgid "General information"
+msgstr "Informations générales"
+
+#. module: olap
+#: field:olap.application,query:0
+msgid "Application Query"
+msgstr ""
+
+#. module: olap
+#: help:olap.cube,query_log:0
+msgid "Enabling this will log all the queries in the browser"
+msgstr ""
+
+#. module: olap
+#: field:olap.saved.query,mdx_id:0
+msgid "Module"
+msgstr "Module"
+
+#. module: olap
+#: field:olap.application.field,is_hidden:0
+#: field:olap.application.table,is_hidden:0
+#: field:olap.database.columns,hide:0
+#: field:olap.database.tables,hide:0
+msgid "Hidden"
+msgstr "Masquer"
+
+#. module: olap
+#: field:olap.dimension,hierarchy_ids:0
+msgid "Hierarchies"
+msgstr "Hiérarchies"
+
+#. module: olap
+#: field:olap.query.logs,result_size:0
+msgid "Result Size"
+msgstr ""
+
+#. module: olap
+#: view:olap.application:0
+msgid "Olap Application"
+msgstr ""
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_database_tables
+msgid "Olap Database Tables"
+msgstr ""
+
+#. module: olap
+#: selection:olap.measure,formatstring:0
+msgid "Prefix Default Currency (EUR 0000.00)"
+msgstr ""
+
+#. module: olap
+#: view:olap.cube.table:0
+msgid "Olap cube_table"
+msgstr ""
+
+#. module: olap
+#: view:olap.parameters.config.wizard:0
+msgid "Parameters Configure"
+msgstr "Configurer les paramètres"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_hierarchy
+#: view:olap.hierarchy:0
+msgid "Olap hierarchy"
+msgstr "Hiérarchie Olap"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_cube_table
+#: model:ir.model,name:olap.model_olap_cube_table_line
+msgid "Olap cube table"
+msgstr ""
+
+#. module: olap
+#: field:olap.application.field,field_name:0
+msgid "Field name"
+msgstr "Nom du champ"
+
+#. module: olap
+#: model:ir.model,name:olap.model_olap_query_logs
+msgid "Olap query logs"
+msgstr ""
+
+#. module: olap
+#: field:olap.fact.database,name:0
+msgid "Fact name"
+msgstr ""
+
+#. module: olap
+#: help:olap.measure,formatstring:0
+msgid " Let you specify how the measure to be displayed in cube browser"
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_bi_server_parameters
+msgid "Server Parameters"
+msgstr "Paramètres serveur"
+
+#. module: olap
+#: wizard_view:olap.load.table,init:0
+#: wizard_button:olap.load.table,init,ok:0
+#: view:olap.schema:0
+msgid "Load Database Structure"
+msgstr "Charger la structure de la base de données"
+
+#. module: olap
+#: field:olap.level,name:0
+msgid "Level name"
+msgstr "Nom du niveau"
+
+#. module: olap
+#: field:olap.cube,schema_id:0
+#: field:olap.query.logs,schema_id:0
+#: field:olap.saved.query,schema_id:0
+msgid "Schema"
+msgstr "Schéma"
+
+#. module: olap
+#: field:olap.fact.database,connection_url:0
+#: field:olap.schema,app_detect:0
+msgid "Connection URL"
+msgstr "URL de connexion"
+
+#. module: olap
+#: field:olap.schema,cube_ids:0
+msgid "Cubes"
+msgstr "Cubes"
+
+#. module: olap
+#: view:olap.schema:0
+msgid "ReConfigure Structure"
+msgstr ""
+
+#. module: olap
+#: field:olap.application,field_ids:0
+msgid "Fields"
+msgstr "Champs"
+
+#. module: olap
+#: selection:olap.measure,agregator:0
+msgid "Average"
+msgstr "Moyenne"
+
+#. module: olap
+#: view:bi.load.db.wizard:0
+msgid "Load Database Tables"
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_action_olap_hierarchy_form
+msgid "Olap Hierarchy"
+msgstr ""
+
+#. module: olap
+#: field:olap.cube.table.line,cube_table_id:0
+msgid "Cube Table"
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_bi
+msgid "Businesss Intelligence"
+msgstr ""
+
+#. module: olap
+#: model:ir.model,name:olap.model_bi_load_db_wizard
+msgid "bi.load.db.wizard"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.url,name:olap.menu_url_cube_browser
+msgid "name_menu_url_cube_browser"
+msgstr ""
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_view_olap_fact_database_form
+msgid "Databases"
+msgstr "Bases de données"
+
+#. module: olap
+#: field:olap.hierarchy,name:0
+msgid "Hierarchy name"
+msgstr ""
+
+#. module: olap
+#: model:ir.module.module,description:olap.module_meta_information
+msgid ""
+"\n"
+" Base module to manage Olap schemas. Cube designer.\n"
+" "
+msgstr ""
+
+#. module: olap
+#: view:olap.cube.table:0
+msgid "Joined Tables"
+msgstr "Tables jointes"
+
+#. module: olap
+#: field:olap.schema,loaded:0
+msgid "Loading Datastructure"
+msgstr ""
+
+#. module: olap
+#: view:olap.cube.table:0
+msgid "Joined Table"
+msgstr "Tables jointes"
+
+#. module: olap
+#: selection:olap.fact.database,type:0
+msgid "PostgreSQL"
+msgstr "PostgreSQL"
+
+#. module: olap
+#: wizard_view:olap.query.logs.clear,init:0
+msgid " To Load Data"
+msgstr ""
+
+#. module: olap
+#: field:olap.hierarchy,sequence:0
+#: field:olap.level,sequence:0
+msgid "Sequence"
+msgstr "Séquence"
+
+#. module: olap
+#: model:ir.ui.menu,name:olap.menu_bi_conf_tools
+msgid "Tools"
+msgstr "Outils"
+
+#. module: olap
+#: field:olap.schema,state:0
+msgid "Schema State"
+msgstr ""
+
+#. module: olap
+#: selection:olap.measure,datatype:0
+msgid "Float"
+msgstr "Décimal"
+
+#. module: olap
+#: model:ir.actions.act_window,name:olap.action_olap_query_logs_form
+#: model:ir.ui.menu,name:olap.menu_action_olap_query_logs_form
+#: view:olap.query.logs:0
+msgid "All Logs"
+msgstr ""
+
+#. module: olap
+#: selection:olap.fact.database,connection_type:0
+#: field:olap.parameters.config.wizard,host_port:0
+msgid "Port"
+msgstr "Port"
+
+#. module: olap
+#: view:olap.fact.database:0
+msgid "Fact database"
+msgstr ""
+
+#. module: olap
+#: model:ir.module.module,shortdesc:olap.module_meta_information
+msgid "olap"
+msgstr "olap"
+
+#. module: olap
+#: field:olap.database.columns,name:0
+msgid "Column Name"
+msgstr "Nom de colonne"
+
+#. module: olap
+#: field:olap.database.tables,table_db_name:0
+msgid "Table Name"
+msgstr "Nom de la table"
+
+#. module: olap
+#: wizard_view:olap.application.configuration,configure:0
+msgid "Auto Configure"
+msgstr "Configuration auto"
+
+#. module: olap
+#: field:olap.schema,configure:0
+msgid "Configuring Datastructure"
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_load_configuration_table
+msgid "Open Configuration"
+msgstr ""
+
+#. module: olap
+#: view:olap.schema:0
+msgid "Configure Automatically "
+msgstr ""
+
+#. module: olap
+#: model:ir.actions.wizard,name:olap.bi_clear_logs
+#: model:ir.ui.menu,name:olap.menu_bi_clear_logs
+#: wizard_button:olap.query.logs.clear,init,ok:0
+msgid "Clear Logs"
+msgstr "Effacer les journaux"
diff --git a/addons/olap_crm/i18n/fr.po b/addons/olap_crm/i18n/fr.po
new file mode 100644
index 00000000000..034219dcdcd
--- /dev/null
+++ b/addons/olap_crm/i18n/fr.po
@@ -0,0 +1,34 @@
+# French translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2009-11-26 05:29+0000\n"
+"PO-Revision-Date: 2010-05-21 14:53+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n"
+"Language-Team: French \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: olap_crm
+#: model:ir.module.module,description:olap_crm.module_meta_information
+msgid ""
+"\n"
+" Sale module will load the data in olap tables\n"
+" "
+msgstr ""
+"\n"
+" Module de vente qui chargera les données dans les tables olap\n"
+" "
+
+#. module: olap_crm
+#: model:ir.module.module,shortdesc:olap_crm.module_meta_information
+msgid "olap_crm"
+msgstr "olap_crm"
diff --git a/addons/olap_extract/i18n/fr.po b/addons/olap_extract/i18n/fr.po
new file mode 100644
index 00000000000..ec38bffe470
--- /dev/null
+++ b/addons/olap_extract/i18n/fr.po
@@ -0,0 +1,59 @@
+# French translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2009-11-26 05:29+0000\n"
+"PO-Revision-Date: 2010-05-21 14:54+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n"
+"Language-Team: French \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: olap_extract
+#: model:ir.module.module,shortdesc:olap_extract.module_meta_information
+msgid "olap_extract"
+msgstr "olap_extract"
+
+#. module: olap_extract
+#: wizard_button:olap.extract.schema,init,ok:0
+msgid "OK"
+msgstr "OK"
+
+#. module: olap_extract
+#: model:ir.actions.wizard,name:olap_extract.bi_olap_extract_schema
+msgid "Olap Extract"
+msgstr "Extraction Olap"
+
+#. module: olap_extract
+#: model:ir.module.module,description:olap_extract.module_meta_information
+msgid ""
+"\n"
+" Extracts the schema structure.\n"
+" "
+msgstr ""
+"\n"
+" Extraire la structure du schéma.\n"
+" "
+
+#. module: olap_extract
+#: wizard_field:olap.extract.schema,init,module_name:0
+msgid "Module Name"
+msgstr "Nom du module"
+
+#. module: olap_extract
+#: wizard_button:olap.extract.schema,init,end:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: olap_extract
+#: wizard_view:olap.extract.schema,init:0
+msgid "New Module Name"
+msgstr "Nouveau nom de module"
diff --git a/addons/olap_sale/i18n/fr.po b/addons/olap_sale/i18n/fr.po
new file mode 100644
index 00000000000..2a4e7c47c93
--- /dev/null
+++ b/addons/olap_sale/i18n/fr.po
@@ -0,0 +1,34 @@
+# French translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2009-11-26 05:29+0000\n"
+"PO-Revision-Date: 2010-05-21 15:14+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n"
+"Language-Team: French \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: olap_sale
+#: model:ir.module.module,description:olap_sale.module_meta_information
+msgid ""
+"\n"
+" Sale module will load the data in olap tables\n"
+" "
+msgstr ""
+"\n"
+" Module de ventes qui chargera les données dans les tables olap\n"
+" "
+
+#. module: olap_sale
+#: model:ir.module.module,shortdesc:olap_sale.module_meta_information
+msgid "olap_sale"
+msgstr "olap_sale"
diff --git a/addons/point_of_sale/i18n/fr.po b/addons/point_of_sale/i18n/fr.po
index 6ae0cfda0bb..c3eea52b8d2 100644
--- a/addons/point_of_sale/i18n/fr.po
+++ b/addons/point_of_sale/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-11-09 18:58+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-21 10:26+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:00+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: point_of_sale
@@ -52,7 +52,7 @@ msgstr "Numéro de pièce"
#. module: point_of_sale
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nom du Modèle non valide dans la définition de l'action."
#. module: point_of_sale
#: field:pos.order,name:0
@@ -92,7 +92,7 @@ msgstr "Ventes (résumé)"
#. module: point_of_sale
#: help:pos.order,user_id:0
msgid "This is the logged in user (not necessarily the salesman)."
-msgstr ""
+msgstr "Ceci est l'utilisateur connecté (pas nécessairement le vendeur)."
#. module: point_of_sale
#: wizard_view:pos.sale.get,init:0
@@ -142,7 +142,7 @@ msgstr "Réf. Partenaire"
#. module: point_of_sale
#: rml:pos.receipt:0
msgid "Tel : + 32 (0) 2 231 04 35"
-msgstr ""
+msgstr "Tél : + 32 (0) 2 231 04 35"
#. module: point_of_sale
#: field:pos.order.line,name:0
@@ -242,7 +242,7 @@ msgstr "Qté"
#. module: point_of_sale
#: field:pos.order,user_id:0
msgid "Logged in User"
-msgstr ""
+msgstr "Connecté en tant qu'utilisateur"
#. module: point_of_sale
#: rml:pos.details:0
@@ -350,7 +350,7 @@ msgstr "Lignes de la commande"
#. module: point_of_sale
#: rml:pos.invoice:0
msgid "Disc.(%)"
-msgstr ""
+msgstr "Rem.(%)"
#. module: point_of_sale
#: model:ir.module.module,shortdesc:point_of_sale.module_meta_information
@@ -385,7 +385,7 @@ msgstr "Configuration des Journaux utilisés par les Points de Vente."
#. module: point_of_sale
#: rml:pos.receipt:0
msgid "Total :"
-msgstr ""
+msgstr "Total :"
#. module: point_of_sale
#: wizard_field:pos.config.journal,init,default_journal:0
@@ -447,7 +447,7 @@ msgstr "Ristourne (%)"
#. module: point_of_sale
#: rml:pos.invoice:0
msgid "Fiscal Position Remark :"
-msgstr ""
+msgstr "Indiquer la position fiscale :"
#. module: point_of_sale
#: model:ir.actions.wizard,name:point_of_sale.pos_add_product
@@ -487,7 +487,7 @@ msgstr "Point de Vente"
#. module: point_of_sale
#: field:pos.order,salesman_id:0
msgid "Salesman"
-msgstr ""
+msgstr "Vendeur"
#. module: point_of_sale
#: rml:pos.details:0
@@ -929,7 +929,7 @@ msgstr "Actions"
#. module: point_of_sale
#: help:pos.order,salesman_id:0
msgid "This is the salesman actually making the order."
-msgstr ""
+msgstr "Indiquer le vendeur de cette vente"
#. module: point_of_sale
#: rml:pos.details:0
@@ -957,7 +957,7 @@ msgstr "Date d'Impression"
#. module: point_of_sale
#: rml:pos.receipt:0
msgid "OPERATION N° :"
-msgstr ""
+msgstr "OPÉRATION N° :"
#. module: point_of_sale
#: rml:pos.lines:0
diff --git a/addons/project/report/project_report.py b/addons/project/report/project_report.py
index e099b4544aa..128bdb39378 100644
--- a/addons/project/report/project_report.py
+++ b/addons/project/report/project_report.py
@@ -30,17 +30,16 @@ class report_project_task_user(osv.osv):
'name': fields.char('Task Summary', size=128, readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'year': fields.char('Year',size=64,required=False, readonly=True),
- 'user_id':fields.many2one('res.users', 'User', readonly=True),
- 'date_start': fields.datetime('Starting Date',readonly=True),
+ 'user_id':fields.many2one('res.users', 'Assigned To', readonly=True),
+ 'date_start': fields.date('Starting Date',readonly=True),
'no_of_days': fields.integer('#Days', size=128, readonly=True),
'description': fields.text('Description',readonly=True),
- 'date_end': fields.datetime('Ending Date',readonly=True),
+ 'date_end': fields.date('Ending Date',readonly=True),
'date_deadline': fields.date('Deadline',readonly=True),
'project_id':fields.many2one('project.project', 'Project', readonly=True),
'hours_planned': fields.float('Planned Hours', readonly=True),
'hours_effective': fields.float('Effective Hours', readonly=True),
'hours_delay': fields.float('Avg. Plan.-Eff.', readonly=True),
-# 'closing_days': fields.char('Avg Closing Delay', size=64, readonly=True),
'closing_days': fields.float('Avg Closing Delay', digits=(16,2), readonly=True, group_operator="avg",
help="Number of Days to close the task"),
@@ -102,7 +101,6 @@ class report_project_task_user(osv.osv):
t.state,
date_trunc('day',t.date_end),
to_date(to_char(t.date_deadline, 'dd-MM-YYYY'),'dd-MM-YYYY'),
- date_trunc('day',t.date_start),
t.company_id,
t.partner_id,
t.type,
diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml
index 9cca4f556e4..d4443e7ed5c 100644
--- a/addons/project/report/project_report_view.xml
+++ b/addons/project/report/project_report_view.xml
@@ -52,13 +52,13 @@
-
-
+
+ help="Tasks performed in last 30 days"/>
+
+
-
@@ -94,25 +102,21 @@
help ="Non assigned tasks to projects"
domain="[('project_id','=',False"/>
+
-
-
-
-
-
+
+
-
+
+
+
+
@@ -139,7 +143,7 @@
form
tree,graph
- {'search_default_month':1,'search_default_User':1,'search_default_user_id':uid,'group_by_no_leaf':1,'group_by':[]}
+ {'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}
diff --git a/addons/project_gtd/i18n/fr.po b/addons/project_gtd/i18n/fr.po
index 27f868fbae5..abbd2e8dec7 100644
--- a/addons/project_gtd/i18n/fr.po
+++ b/addons/project_gtd/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 14:56+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-21 10:32+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:14+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project_gtd
@@ -78,7 +78,7 @@ msgstr "Projet par défaut"
#. module: project_gtd
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nom de modèle invalide pour la définition de l'action"
#. module: project_gtd
#: field:project.gtd.timebox,context4_id:0
@@ -110,12 +110,12 @@ msgstr "Feuilles de temps"
#. module: project_gtd
#: model:ir.module.module,shortdesc:project_gtd.module_meta_information
msgid "Getting Things Done - Time Management Module"
-msgstr ""
+msgstr "Getting Things Done - Module de Gestion du Temps"
#. module: project_gtd
#: model:ir.actions.act_window,name:project_gtd.act_timebox_tasks
msgid "Timebox Tasks"
-msgstr ""
+msgstr "Tâche de la Timebox"
#. module: project_gtd
#: wizard_view:project.gtd.timebox.fill,init:0
@@ -181,7 +181,7 @@ msgstr "Contexte 3"
#. module: project_gtd
#: wizard_button:project.gtd.timebox.fill,init,process:0
msgid "Add to Timebox"
-msgstr ""
+msgstr "Ajouter une Timebox"
#. module: project_gtd
#: field:project.gtd.timebox,context5_id:0
@@ -277,7 +277,7 @@ msgstr "Séquence"
#. module: project_gtd
#: field:project.gtd.timebox,child_ids:0
msgid "Child Timeboxes"
-msgstr ""
+msgstr "Timeboxes enfant"
#. module: project_gtd
#: model:ir.ui.menu,name:project_gtd.menu_open_time_allinbox
diff --git a/addons/project_issue/__openerp__.py b/addons/project_issue/__openerp__.py
index b990142e1ea..513bae085bd 100644
--- a/addons/project_issue/__openerp__.py
+++ b/addons/project_issue/__openerp__.py
@@ -31,8 +31,8 @@
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': [
- 'crm',
'project',
+ 'hr_timesheet_sheet',
],
'init_xml': [
'project_issue_data.xml'
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 2de1b9f6b59..f67986526cd 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -36,7 +36,7 @@ class project_issue(osv.osv, crm.crm_case):
_name = "project.issue"
_description = "Project Issue"
_order = "priority, id desc"
- _inherit = 'mailgate.thread'
+ _inherits = {'mailgate.thread': 'thread_id'}
def case_open(self, cr, uid, ids, *args):
"""
@@ -110,6 +110,10 @@ class project_issue(osv.osv, crm.crm_case):
return res
_columns = {
+ 'thread_id': fields.many2one('mailgate.thread', 'Thread', required=False),
+ 'id': fields.integer('ID'),
+ 'name': fields.char('Name', size=128, required=True),
+ 'active': fields.boolean('Active', required=False),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Update Date' , readonly=True),
'date_deadline': fields.date('Deadline'),
@@ -138,9 +142,6 @@ class project_issue(osv.osv, crm.crm_case):
'email_cc': fields.text('Watchers Emails', size=252 , help="These people\
will receive a copy of the future" \
" communication between partner and users by email"),
- 'stage_id': fields.many2one('crm.case.stage', 'Stage', \
- domain="[('section_id','=',section_id),\
- ('object_id.model', '=', 'crm.phonecall')]"),
'date_open': fields.datetime('Opened', readonly=True),
# Project Issue fields
'date_closed': fields.datetime('Closed', readonly=True),
@@ -164,13 +165,26 @@ class project_issue(osv.osv, crm.crm_case):
method=True, multi='day_close', type="float", store=True),
'assigned_to' : fields.many2one('res.users', 'Assigned to'),
}
-
+
def _get_project(self, cr, uid, context):
user = self.pool.get('res.users').browse(cr,uid,uid, context=context)
if user.context_project_id:
return user.context_project_id.id
return False
+ _defaults = {
+ 'active': lambda *a: 1,
+ 'user_id': crm.crm_case._get_default_user,
+ 'partner_id': crm.crm_case._get_default_partner,
+ 'partner_address_id': crm.crm_case._get_default_partner_address,
+ 'email_from': crm.crm_case. _get_default_email,
+ 'state': lambda *a: 'draft',
+ 'section_id': crm.crm_case. _get_section,
+ 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
+ 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
+ 'project_id':_get_project,
+ }
+
def convert_issue_task(self, cr, uid, ids, context=None):
case_obj = self.pool.get('project.issue')
data_obj = self.pool.get('ir.model.data')
@@ -249,9 +263,5 @@ class project_issue(osv.osv, crm.crm_case):
return {'value':{}}
return {'value':{}}
- _defaults = {
- 'project_id':_get_project,
- }
-
project_issue()
diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml
index 7c7764a2e37..ed031672360 100644
--- a/addons/project_issue/project_issue_demo.xml
+++ b/addons/project_issue/project_issue_demo.xml
@@ -22,7 +22,7 @@
-
+
diff --git a/addons/project_issue/report/project_issue_report.py b/addons/project_issue/report/project_issue_report.py
index 16dc2eb6ae2..70a08e2c7b4 100644
--- a/addons/project_issue/report/project_issue_report.py
+++ b/addons/project_issue/report/project_issue_report.py
@@ -66,7 +66,7 @@ class project_issue_report(osv.osv):
('11', 'November'), ('12', 'December')], 'Month', readonly=True),
'company_id': fields.many2one('res.company', 'Company', readonly=True),
'create_date': fields.datetime('Create Date', readonly=True),
- 'day': fields.char('Day', size=128, readonly=True),
+ 'day': fields.char('Day', size=128, readonly=True),
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'project.issue')]"),
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('object_id.model', '=', 'project.issue')]"),
'nbr': fields.integer('# of Issues', readonly=True),
diff --git a/addons/project_planning/project_planning_view.xml b/addons/project_planning/project_planning_view.xml
index 0ebbcd8e519..7dbf2195c16 100644
--- a/addons/project_planning/project_planning_view.xml
+++ b/addons/project_planning/project_planning_view.xml
@@ -112,7 +112,11 @@
+<<<<<<< TREE
+
+=======
+>>>>>>> MERGE-SOURCE
diff --git a/addons/project_timesheet/report/task_report_view.xml b/addons/project_timesheet/report/task_report_view.xml
index ce5a86b13a7..7093582d7fc 100644
--- a/addons/project_timesheet/report/task_report_view.xml
+++ b/addons/project_timesheet/report/task_report_view.xml
@@ -74,10 +74,6 @@
-
-
-
-
diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py
index 76d018680d2..cf177319ea5 100644
--- a/addons/purchase/report/purchase_report.py
+++ b/addons/purchase/report/purchase_report.py
@@ -54,6 +54,12 @@ class purchase_report(osv.osv):
'location_id': fields.many2one('stock.location', 'Destination', readonly=True),
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position',readonly=True),
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
+ 'partner_address_id':fields.many2one('res.partner.address', 'Address Contact Name', readonly=True),
+ 'dest_address_id':fields.many2one('res.partner.address', 'Dest. Address Contact Name',readonly=True),
+ 'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', readonly=True),
+ 'date_approve':fields.date('Date Approved', readonly=True),
+ 'expected_date':fields.date('Expected Date', readonly=True),
+ 'validator' : fields.many2one('res.users', 'Validated by', readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
'user_id':fields.many2one('res.users', 'Responsible', readonly=True),
'quantity': fields.float('# of Products', readonly=True),
@@ -76,6 +82,12 @@ class purchase_report(osv.osv):
to_char(s.date_order, 'MM') as month,
to_char(s.date_order, 'YYYY-MM-DD') as day,
s.state,
+ s.date_approve,
+ date_trunc('day',s.minimum_planned_date) as expected_date,
+ s.partner_address_id,
+ s.dest_address_id,
+ s.pricelist_id,
+ s.validator,
s.warehouse_id as warehouse_id,
s.partner_id as partner_id,
s.fiscal_position,
@@ -97,6 +109,12 @@ class purchase_report(osv.osv):
s.create_uid,
s.partner_id,
s.location_id,
+ s.date_approve,
+ date_trunc('day',s.minimum_planned_date),
+ s.partner_address_id,
+ s.pricelist_id,
+ s.validator,
+ s.dest_address_id,
l.product_id,
s.date_order,
to_char(s.date_order, 'YYYY'),
diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml
index 6f923c0440e..49caced7a6b 100644
--- a/addons/purchase/report/purchase_report_view.xml
+++ b/addons/purchase/report/purchase_report_view.xml
@@ -21,6 +21,8 @@
+
+
@@ -32,6 +34,10 @@
+
+
+
+
@@ -46,7 +52,7 @@
search
-
+
@@ -71,44 +77,60 @@
domain="[('state','=','manual')]"/>
+
+
-
-
-
+
+
+
+
-
+
+
+
+
+
-
-
+
+
+
+
+
-
+
+
+
+
+
+
-
+
+
-
+
diff --git a/addons/sale/i18n/fr.po b/addons/sale/i18n/fr.po
index 3d9f2727a80..c81d4b09f23 100644
--- a/addons/sale/i18n/fr.po
+++ b/addons/sale/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-11-17 10:31+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-22 09:28+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:09+0000\n"
+"X-Launchpad-Export-Date: 2010-05-23 03:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale
@@ -210,7 +210,7 @@ msgstr "Politique d'expédition"
#. module: sale
#: selection:sale.order,state:0 selection:sale.order.line,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Annuler"
#. module: sale
#: selection:sale.order,state:0
diff --git a/addons/sale/i18n/pl.po b/addons/sale/i18n/pl.po
index 2016f908fe8..5a29059512f 100644
--- a/addons/sale/i18n/pl.po
+++ b/addons/sale/i18n/pl.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-05-17 14:08+0000\n"
+"PO-Revision-Date: 2010-05-21 08:21+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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: 2010-05-19 05:12+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale
@@ -222,7 +222,7 @@ msgstr "Wydawanie produktów"
#. module: sale
#: view:sale.order:0
msgid "Reference"
-msgstr "Odnośnik"
+msgstr "Numer"
#. module: sale
#: selection:sale.config.picking_policy,picking_policy:0
diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py
index d1081a4b21f..c8b616ced78 100644
--- a/addons/sale/report/sale_report.py
+++ b/addons/sale/report/sale_report.py
@@ -57,6 +57,12 @@ class sale_report(osv.osv):
('done', 'Done'),
('cancel', 'Cancelled')
], 'Order State', readonly=True),
+ 'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address Name', readonly=True),
+ 'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact Name', readonly=True),
+ 'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address Name', readonly=True),
+ 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True),
+ 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
+ 'date_confirm': fields.date('Confirmation Date', readonly=True)
}
_order = 'date desc'
def init(self, cr):
@@ -81,7 +87,13 @@ class sale_report(osv.osv):
sum(l.product_uom_qty*l.price_unit) as price_total,
(sum(l.product_uom_qty*l.price_unit)/sum(l.product_uom_qty * u.factor))::decimal(16,2) as price_average,
count(*) as nbr,
- s.state
+ s.state,
+ s.partner_invoice_id as partner_invoice_id,
+ s.partner_order_id as partner_order_id,
+ s.partner_shipping_id as partner_shipping_id,
+ s.pricelist_id as pricelist_id,
+ s.project_id as analytic_account_id,
+ s.date_confirm as date_confirm
from
sale_order_line l
left join
@@ -97,7 +109,13 @@ class sale_report(osv.osv):
s.shop_id,
s.company_id,
s.fiscal_position,
- s.payment_term
+ s.payment_term,
+ s.partner_invoice_id,
+ s.partner_order_id,
+ s.partner_shipping_id,
+ s.pricelist_id,
+ s.project_id,
+ s.date_confirm
)
""")
sale_report()
@@ -167,10 +185,14 @@ class product_bought_by_sale_order(osv.osv):
_name = "product.bought.by.sale.order"
_description = "Product bought by sale order"
_auto = False
- _rec_name = 'partner'
+ _rec_name = 'month'
_columns = {
'total_products': fields.integer('Total Products', readonly=True),
- 'name': fields.char('Sale order', size=64, readonly=True)
+ 'product_id':fields.many2one('product.product', 'Product', readonly=True),
+ 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
+ ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
+ ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
+ 'year': fields.char('Year', size=64, readonly=True)
}
_order = 'total_products desc'
def init(self, cr):
@@ -179,8 +201,10 @@ class product_bought_by_sale_order(osv.osv):
create or replace view product_bought_by_sale_order as (
select
min(s.id) as id,
- count(*) as total_products,
- s.name as name
+ l.product_id as product_id,
+ to_char(l.create_date, 'MM') as month,
+ to_char(l.create_date, 'YYYY') as year,
+ count(*) as total_products
from
sale_order_line l
left join
@@ -188,7 +212,7 @@ class product_bought_by_sale_order(osv.osv):
where
s.state='manual' or s.state='progress'
group by
- s.name
+ l.product_id, to_char(l.create_date, 'MM'), to_char(l.create_date, 'YYYY')
)
""")
product_bought_by_sale_order()
diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml
index fdfb1b5d2c9..fe88fa33555 100644
--- a/addons/sale/report/sale_report_view.xml
+++ b/addons/sale/report/sale_report_view.xml
@@ -24,6 +24,12 @@
+
+
+
+
+
+
@@ -93,8 +99,16 @@
+
+
+
+
+
+
+
+
@@ -108,9 +122,16 @@
+
+
+
+
+
+
+
-
+
@@ -201,7 +222,9 @@
tree
-
+
+
+
@@ -213,8 +236,9 @@
graph
-
-
+
+
+
@@ -223,7 +247,8 @@
Product bought by sale order
product.bought.by.sale.order
form
- tree,graph
+ graph,tree
+ [('year','=', time.strftime('%Y'))]
diff --git a/addons/scrum/i18n/fr.po b/addons/scrum/i18n/fr.po
index 5dd1943ab4a..9d1982fc341 100644
--- a/addons/scrum/i18n/fr.po
+++ b/addons/scrum/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 13:49+0000\n"
-"Last-Translator: nel \n"
+"PO-Revision-Date: 2010-05-22 09:49+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 03:59+0000\n"
+"X-Launchpad-Export-Date: 2010-05-23 03:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: scrum
@@ -29,7 +29,7 @@ msgstr "Nom du Rendez-vous"
#. module: scrum
#: model:process.transition,note:scrum.process_transition_backlogtask0
msgid "From backlog create task."
-msgstr ""
+msgstr "Créer une tâche à partir du référentiel"
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task4
@@ -46,17 +46,17 @@ msgstr "Mes Sprints Ouverts (Directeur de Produit)"
#. module: scrum
#: model:process.node,note:scrum.process_node_productbacklog0
msgid "Create task from backlogs"
-msgstr ""
+msgstr "Créer une tâche à partir des référentiels"
#. module: scrum
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nom de modèle invalide pour la définition de l'action"
#. module: scrum
#: model:ir.module.module,shortdesc:scrum.module_meta_information
msgid "Scrum, Agile Development Method"
-msgstr ""
+msgstr "Scrum, méthode de développement agile"
#. module: scrum
#: field:scrum.project,progress_rate:0
@@ -69,6 +69,8 @@ msgid ""
"Total remaining time, can be re-estimated periodically by the assignee of "
"the task."
msgstr ""
+"Le temps restant total peut être réévalué périodiquement par le prescripteur "
+"de la tâche."
#. module: scrum
#: field:scrum.project,child_id:0
@@ -88,7 +90,7 @@ msgstr "Est-ce que l'estimation du Retard du Sprint est correcte ?"
#. module: scrum
#: field:scrum.project,members:0
msgid "Project Members"
-msgstr ""
+msgstr "Membres du projet"
#. module: scrum
#: view:scrum.project:0
@@ -106,6 +108,8 @@ msgid ""
"Header added at the beginning of the email for the warning message sent to "
"the customer when a task is closed."
msgstr ""
+"L'entête est ajouté au début de l'email pour que le message d'avertissement "
+"soit envoyer au client lorsque la tâche est fermé."
#. module: scrum
#: field:scrum.task,priority:0
@@ -127,6 +131,8 @@ msgstr "Voir le Retard du Projet"
msgid ""
"Project's member. Not used in any computation, just for information purpose."
msgstr ""
+"Membre du projet. Non utilisé dans aucun calcul, juste proposer à titre "
+"d'information"
#. module: scrum
#: selection:scrum.product.backlog,priority:0
@@ -150,6 +156,8 @@ msgid ""
"Estimated time to do the task, usually set by the project manager when the "
"task is in draft state."
msgstr ""
+"Temps estimé pour réaliser la tâche, habituellement fixé par le responsable "
+"du projet quand la tâche est à l'état brouillon"
#. module: scrum
#: field:scrum.project,notes:0
@@ -175,6 +183,8 @@ msgid ""
"If you check this field, the project manager will receive a request each "
"time a task is completed by his team."
msgstr ""
+"Si vous cochez ce champs, le responsable du projet recevra une requête "
+"chaque fois qu'une tâche est completé par son équipe."
#. module: scrum
#: selection:scrum.project,state:0
@@ -190,7 +200,7 @@ msgstr "Nom de l'équipe"
#. module: scrum
#: field:scrum.project,warn_header:0
msgid "Mail Header"
-msgstr ""
+msgstr "En-tête de courrier"
#. module: scrum
#: field:scrum.project,sprint_size:0
@@ -205,7 +215,7 @@ msgstr "Date de fin"
#. module: scrum
#: help:scrum.task,effective_hours:0
msgid "Computed using the sum of the task work done."
-msgstr ""
+msgstr "Calculé en utilisant la somme du travail de tâche effectuée."
#. module: scrum
#: help:scrum.project,warn_customer:0
@@ -213,6 +223,8 @@ msgid ""
"If you check this, the user will have a popup when closing a task that "
"propose a message to send by email to the customer."
msgstr ""
+"Si vous cochez la case, l'utilisateur verra un menu surgissant quand une "
+"tâche sera fermé proposant un message pour envoyer un mail au client."
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_task_open
@@ -239,7 +251,7 @@ msgstr "Date limite"
#: field:scrum.project,partner_id:0
#: field:scrum.task,partner_id:0
msgid "Partner"
-msgstr ""
+msgstr "Partenaire"
#. module: scrum
#: field:scrum.product.backlog,planned_hours:0
@@ -251,7 +263,7 @@ msgstr "Heures planifiés"
#. module: scrum
#: selection:scrum.project,state:0
msgid "Template"
-msgstr ""
+msgstr "Modèle"
#. module: scrum
#: field:scrum.product.backlog,priority:0
@@ -268,11 +280,12 @@ msgstr "État"
#: help:scrum.project,progress_rate:0
msgid "Percent of tasks closed according to the total of tasks todo."
msgstr ""
+"Pourcentage des tâches fermés en accord avec le total des tâches à faire."
#. module: scrum
#: help:scrum.project,notes:0
msgid "Internal description of the project."
-msgstr ""
+msgstr "Description interne du projet"
#. module: scrum
#: field:scrum.sprint,meetings_id:0
@@ -282,7 +295,7 @@ msgstr "Scrum Journalier"
#. module: scrum
#: help:scrum.task,total_hours:0
msgid "Computed as: Time Spent + Remaining Time."
-msgstr ""
+msgstr "Calculer comme: Temps passé + Temps restant"
#. module: scrum
#: field:scrum.task,type:0
@@ -292,7 +305,7 @@ msgstr "Type"
#. module: scrum
#: view:scrum.project:0
msgid "Scrum Data"
-msgstr ""
+msgstr "Données Scrum"
#. module: scrum
#: selection:scrum.product.backlog,priority:0
@@ -303,7 +316,7 @@ msgstr "Moyenne"
#. module: scrum
#: field:scrum.project,total_hours:0
msgid "Total Time"
-msgstr ""
+msgstr "Temps Total"
#. module: scrum
#: model:ir.ui.menu,name:scrum.next_id_67
@@ -356,7 +369,7 @@ msgstr "Voir les tâches du projet"
#. module: scrum
#: field:scrum.task,delay_hours:0
msgid "Delay Hours"
-msgstr ""
+msgstr "Delais en heures"
#. module: scrum
#: field:scrum.project,contact_id:0
@@ -392,18 +405,18 @@ msgstr "Créer tâches"
#. module: scrum
#: field:scrum.task,progress:0
msgid "Progress (%)"
-msgstr ""
+msgstr "Progression (%)"
#. module: scrum
#: help:scrum.task,progress:0
msgid "Computed as: Time Spent / Total Time."
-msgstr ""
+msgstr "Calculer comme: Temps passé / Temps total"
#. module: scrum
#: field:scrum.project,scrum:0
#: field:scrum.task,scrum:0
msgid "Is Scrum"
-msgstr ""
+msgstr "Est Scrum"
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_product_backlog_form_draft
@@ -482,7 +495,7 @@ msgstr "Mes Tâches Ouvertes"
#. module: scrum
#: field:scrum.project,manager:0
msgid "Project Manager"
-msgstr ""
+msgstr "Responsable du projet"
#. module: scrum
#: selection:scrum.project,state:0
@@ -511,13 +524,13 @@ msgstr "Sprints Ouverts"
#. module: scrum
#: field:scrum.project,effective_hours:0
msgid "Time Spent"
-msgstr ""
+msgstr "Temps écoulé"
#. module: scrum
#: field:scrum.project,complete_name:0
#: field:scrum.project,name:0
msgid "Project Name"
-msgstr ""
+msgstr "Nom du Projet"
#. module: scrum
#: field:scrum.project,product_owner_id:0
@@ -561,6 +574,9 @@ msgid ""
"Computed as: Total Time - Estimated Time. It gives the difference of the "
"time estimated by the project manager and the real time to close the task."
msgstr ""
+"Calculer comme: Temps total - Temps estimé. Cela donne la différence de "
+"temps estimé par le responsable projet et le temps réel pour fermer cette "
+"tâche."
#. module: scrum
#: field:scrum.task,timebox_id:0
@@ -576,7 +592,7 @@ msgstr "Sprints Brouillon"
#. module: scrum
#: field:scrum.project,timesheet_id:0
msgid "Working Time"
-msgstr ""
+msgstr "Temps de travail"
#. module: scrum
#: field:scrum.task,work_ids:0
@@ -591,7 +607,7 @@ msgstr "Voir les retards du sprint"
#. module: scrum
#: field:scrum.task,delegated_user_id:0
msgid "Delegated To"
-msgstr ""
+msgstr "Déléguer à"
#. module: scrum
#: field:scrum.task,date_close:0
@@ -611,7 +627,7 @@ msgstr "Retard Correct"
#. module: scrum
#: help:scrum.project,effective_hours:0
msgid "Sum of spent hours of all tasks related to this project."
-msgstr ""
+msgstr "Total des heures passés de toutes les tâches reliés à ce projet"
#. module: scrum
#: help:scrum.task,project_id:0
@@ -619,16 +635,18 @@ msgid ""
"If you have [?] in the project name, it means there are no analytic account "
"linked to this project."
msgstr ""
+"Si vous avez [?] dans le nom du projet, cela signifie que vous n'avez pas de "
+"compte analytique lié à ce projet"
#. module: scrum
#: help:scrum.project,planned_hours:0
msgid "Sum of planned hours of all tasks related to this project."
-msgstr ""
+msgstr "Somme des tâches planifiés de toutes les tâches relier à ce projet."
#. module: scrum
#: field:scrum.project,warn_customer:0
msgid "Warn Partner"
-msgstr ""
+msgstr "Avertir le partenaire"
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree4
@@ -648,6 +666,10 @@ msgid ""
"projects. It enables you to connect projects with budgets, planning, cost "
"and revenue analysis, timesheets on projects, etc."
msgstr ""
+"Lier ce projet à un compte analytique si vous souhaitez une gestion "
+"financière sur les projets. Il vous active la gestion des projets avec les "
+"budgets, agenda, coût, analyse de revenu, feuilles de temps sur le projet, "
+"etc."
#. module: scrum
#: selection:scrum.product.backlog,state:0
@@ -680,12 +702,12 @@ msgstr "Heures effectives"
#. module: scrum
#: field:scrum.project,warn_manager:0
msgid "Warn Manager"
-msgstr ""
+msgstr "Avertir le responsable"
#. module: scrum
#: selection:scrum.task,state:0
msgid "In Progress"
-msgstr ""
+msgstr "En cours"
#. module: scrum
#: field:scrum.sprint,review:0
diff --git a/addons/smtpclient/i18n/fr.po b/addons/smtpclient/i18n/fr.po
new file mode 100644
index 00000000000..ceed71ebce5
--- /dev/null
+++ b/addons/smtpclient/i18n/fr.po
@@ -0,0 +1,871 @@
+# French translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2009-11-26 06:00+0000\n"
+"PO-Revision-Date: 2010-05-22 09:14+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \n"
+"Language-Team: French \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2010-05-23 03:57+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,bcc:0
+msgid "BCC to"
+msgstr "Copie cachée à"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "__number__ for Invoice / Sales Number"
+msgstr "__number__ pour la facture / Numéro de vente"
+
+#. module: smtpclient
+#: field:email.smtpclient,ssl:0
+msgid "Use SSL?"
+msgstr "Utiliser SSL?"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Start Server"
+msgstr "Démarrer le serveur"
+
+#. module: smtpclient
+#: model:ir.actions.wizard,name:smtpclient.wizard_email_verifycode
+msgid "Verify Server"
+msgstr "Vérifier le serveur"
+
+#. module: smtpclient
+#: field:email.smtpclient,priority:0
+msgid "Server Priority"
+msgstr "Priorité du serveur"
+
+#. module: smtpclient
+#: help:email.sendcode,init,emailto:0
+msgid "Enter the address Email where you want to get the Verification Code"
+msgstr ""
+"Saisir l'adresse email à laquelle vous voulez envoyer le code de vérification"
+
+#. module: smtpclient
+#: selection:email.smtpclient,auth_type:0
+msgid "Other Mail Servers"
+msgstr "Autres serveurs de courrier"
+
+#. module: smtpclient
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nom de modèle invalide pour la définition de l'action"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,to:0
+msgid "Mail to"
+msgstr "Envoyer par email à"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Message Error!"
+msgstr "Erreur de message!"
+
+#. module: smtpclient
+#: field:email.smtpclient,name:0
+msgid "Server Name"
+msgstr "Nom du serveur"
+
+#. module: smtpclient
+#: field:email.smtpclient,header_ids:0
+msgid "Default Headers"
+msgstr "Entêtes de courrier par défaut"
+
+#. module: smtpclient
+#: wizard_button:email.testemail,init,send:0
+msgid "Send Email"
+msgstr "Envoyer un email"
+
+#. module: smtpclient
+#: field:res.company.address,company_id:0
+msgid "Company"
+msgstr "Société"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Set to Draft"
+msgstr "Mettre en brouillon"
+
+#. module: smtpclient
+#: code:addons/smtpclient/wizard/verifycode.py:0
+#, python-format
+msgid "Server already verified!"
+msgstr "Serveur déjà vérifié!"
+
+#. module: smtpclient
+#: code:addons/smtpclient/wizard/sendcode.py:0
+#: code:addons/smtpclient/wizard/testemail.py:0
+#, python-format
+msgid "Verification Failed. Please check the Server Configuration!"
+msgstr ""
+"Échec de vérification. Merci de vérifier le serveur de configuration!"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "SMTP Server Error!"
+msgstr "Erreur du serveur SMTP!"
+
+#. module: smtpclient
+#: field:email.smtpclient,auth_type:0
+#: field:email.smtpclient,type:0
+msgid "Server Type"
+msgstr "Type de serveur"
+
+#. module: smtpclient
+#: field:email.smtpclient,from_email:0
+msgid "Email From"
+msgstr "Email de"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "User Information"
+msgstr "Information utilisateur"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "OpenERP SMTP server Email Registration Code!"
+msgstr "Code d'enregistrement email du serveur SMTP OpenERP!"
+
+#. module: smtpclient
+#: model:ir.model,name:smtpclient.model_report_smtp_server
+#: view:report.smtp.server:0
+msgid "Server Statistics"
+msgstr "Statistiques du serveur"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Messages"
+msgstr "Messages"
+
+#. module: smtpclient
+#: selection:email.smtpclient,type:0
+#: selection:res.company.address,name:0
+msgid "Sale"
+msgstr "Vente"
+
+#. module: smtpclient
+#: field:email.headers,value:0
+msgid "Value"
+msgstr "Valeur"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Access Permission"
+msgstr "Permission d'accès"
+
+#. module: smtpclient
+#: model:ir.model,name:smtpclient.model_email_headers
+msgid "Email Headers"
+msgstr "Entêtes de courrier"
+
+#. module: smtpclient
+#: field:email.smtpclient,delete_queue:0
+msgid "Queue Option"
+msgstr "Option de file d'attente"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Please configure Email Server Messages [Verification / Test]"
+msgstr ""
+"Merci de configurer les messages du serveur email [Vérification / Test]"
+
+#. module: smtpclient
+#: code:addons/smtpclient/wizard/verifycode.py:0
+#, python-format
+msgid "Verification failed. Invalid Verification Code!"
+msgstr "Échec de vérification. Code de vérification non valide!"
+
+#. module: smtpclient
+#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_history
+msgid "Email History"
+msgstr "Historique des emails"
+
+#. module: smtpclient
+#: view:email.smtpclient.history:0
+msgid "Server History"
+msgstr "Historique du serveur"
+
+#. module: smtpclient
+#: selection:email.smtpclient,auth_type:0
+msgid "Yahoo!!! Server"
+msgstr "Serveur Yahoo!"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+#: field:email.smtpclient,test_email:0
+msgid "Test Message"
+msgstr "Message de test"
+
+#. module: smtpclient
+#: field:report.smtp.server,server_id:0
+msgid "Server ID"
+msgstr "ID du serveur"
+
+#. module: smtpclient
+#: help:email.smtpclient,delete_queue_period:0
+msgid "delete emails/contents from email queue after specified no of days"
+msgstr ""
+"effacer les emails/contenu placé en attente après le nombre de jours spécifié"
+
+#. module: smtpclient
+#: field:report.smtp.server,no:0
+msgid "Total No."
+msgstr "Nombre total"
+
+#. module: smtpclient
+#: help:email.smtpclient,process_id:0
+msgid "Mail Transport Agent Process"
+msgstr "Processus d'agent de transport email"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "__user__ for User Name"
+msgstr "__user__ pour le nom d'utilisateur"
+
+#. module: smtpclient
+#: field:email.smtpclient,date_create:0
+msgid "Date Create"
+msgstr "Date de création"
+
+#. module: smtpclient
+#: field:email.smtpclient,state:0
+msgid "Server Status"
+msgstr "État du serveur"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,error:0
+msgid "Last Error"
+msgstr "Dernière erreur"
+
+#. module: smtpclient
+#: wizard_view:email.sendcode,init:0
+#: wizard_button:email.sendcode,init,send:0
+msgid "Send Code"
+msgstr "Envoyer un code"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,name:0
+msgid "Subject"
+msgstr "Sujet"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Read Error!"
+msgstr "Erreur de lecture!"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Unable to read Server Settings"
+msgstr "Impossible de lire les paramètres du serveur"
+
+#. module: smtpclient
+#: field:email.smtpclient,server_statistics:0
+msgid "Statistics"
+msgstr "Statistiques"
+
+#. module: smtpclient
+#: wizard_view:email.testemail,init:0
+msgid "Test Email"
+msgstr "Email de test"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,server_id:0
+msgid "Smtp Server"
+msgstr "Serveur SMTP"
+
+#. module: smtpclient
+#: field:res.company,addresses:0
+msgid "Email Addresses"
+msgstr "Adresses email"
+
+#. module: smtpclient
+#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_history_tree
+#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server_history
+msgid "Email Server History"
+msgstr "Historique du serveur email"
+
+#. module: smtpclient
+#: selection:email.smtpclient.queue,state:0
+msgid "Waiting"
+msgstr "En attente"
+
+#. module: smtpclient
+#: help:email.testemail,init,emailto:0
+msgid "Enter the address Email where you want to get the Test Email"
+msgstr ""
+"Saisir l'adresse email à laquelle vous voulez recevoir l'email de test"
+
+#. module: smtpclient
+#: selection:email.smtpclient,state:0
+msgid "Not Verified"
+msgstr "Non vérifié"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,email:0
+msgid "Email"
+msgstr "Email"
+
+#. module: smtpclient
+#: selection:email.smtpclient.queue,state:0
+msgid "Sent"
+msgstr "Envoyé"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,user_id:0
+msgid "Username"
+msgstr "Nom d'utilisateur"
+
+#. module: smtpclient
+#: field:res.company.address,name:0
+msgid "Address Type"
+msgstr "Type d'adresse"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Permission"
+msgstr "Permission"
+
+#. module: smtpclient
+#: view:email.smtpclient.queue:0
+msgid "Message with All Headers"
+msgstr "Message avec entêtes complètes"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Message Headers"
+msgstr "Entêtes de message"
+
+#. module: smtpclient
+#: field:ir.actions.server,report_id:0
+msgid "Report"
+msgstr "Rapport"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Other Information"
+msgstr "Autre information"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Configuration"
+msgstr "Configuration"
+
+#. module: smtpclient
+#: constraint:ir.cron:0
+msgid "Invalid arguments"
+msgstr "Paramètres non valides"
+
+#. module: smtpclient
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML non valide pour l'architecture de la vue !"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+#: field:email.smtpclient,disclaimers:0
+msgid "Disclaimers"
+msgstr "Avertissement de responsabilité limitée"
+
+#. module: smtpclient
+#: field:report.smtp.server,name:0
+msgid "Server"
+msgstr "Serveur"
+
+#. module: smtpclient
+#: view:res.company:0
+msgid "SMTP Settings"
+msgstr "Paramètres SMTP"
+
+#. module: smtpclient
+#: help:email.smtpclient,body:0
+msgid ""
+"The message text that will be send along with the email which is send "
+"through this server"
+msgstr "Le message texte qui sera envoyé avec l'email envoyé par ce serveur"
+
+#. module: smtpclient
+#: model:ir.actions.wizard,name:smtpclient.wizard_email_testemail
+msgid "Send Test Email"
+msgstr "Envoyer email de test"
+
+#. module: smtpclient
+#: model:ir.model,name:smtpclient.model_email_smtpclient_queue
+msgid "Email Queue"
+msgstr "File d'attente email"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Server Information"
+msgstr "Information sur le serveur"
+
+#. module: smtpclient
+#: help:email.verifycode,init,code:0
+msgid "Enter the verification code thay you get in your verification Email"
+msgstr ""
+"Saisir le code de vérification que vous avez reçu dans votre email de "
+"vérification"
+
+#. module: smtpclient
+#: model:ir.model,name:smtpclient.model_email_smtpclient_history
+msgid "Email Client History"
+msgstr "Historique du client email"
+
+#. module: smtpclient
+#: selection:email.smtpclient,delete_queue:0
+msgid "Never Delete Message"
+msgstr "Ne jamais effacer le message"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "OpenERP Test Email!"
+msgstr "Email de test OpenERP!"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+#: field:email.smtpclient,body:0
+#: view:email.smtpclient.queue:0
+#: field:email.smtpclient.queue,serialized_message:0
+msgid "Message"
+msgstr "Message"
+
+#. module: smtpclient
+#: field:email.smtpclient,process_id:0
+msgid "MTA Process"
+msgstr "Processus MTA"
+
+#. module: smtpclient
+#: field:email.headers,server_id:0
+#: view:email.smtpclient:0
+#: field:email.smtpclient,server:0
+#: field:email.smtpclient.queue,server_id:0
+#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server
+msgid "SMTP Server"
+msgstr "Serveur SMTP"
+
+#. module: smtpclient
+#: selection:email.smtpclient,auth_type:0
+msgid "Google Server"
+msgstr "Serveur Google"
+
+#. module: smtpclient
+#: selection:email.smtpclient,state:0
+msgid "Verified"
+msgstr "Vérifié"
+
+#. module: smtpclient
+#: help:email.smtpclient,priority:0
+msgid ""
+"Priority between 0 to 10, will be used to define the MTA process priotiry"
+msgstr ""
+"Priorité de 0 à 10, utilisé pour définir les priorités des processus MTA"
+
+#. module: smtpclient
+#: field:email.smtpclient,port:0
+msgid "SMTP Port"
+msgstr "Port SMTP"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Email TO Address not Defined !"
+msgstr "Adresse d'envoi non définie!"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "SMTP Server Error !"
+msgstr "Erreur de serveur SMTP!"
+
+#. module: smtpclient
+#: field:email.smtpclient,auth:0
+msgid "Use Auth"
+msgstr "Utiliser l'authentification"
+
+#. module: smtpclient
+#: field:email.smtpclient,pstate:0
+msgid "Server Statue"
+msgstr "État du serveur"
+
+#. module: smtpclient
+#: field:email.smtpclient,user:0
+msgid "User Name"
+msgstr "Nom d'utilisateur"
+
+#. module: smtpclient
+#: field:email.smtpclient,verify_email:0
+msgid "Verify Message"
+msgstr "Vérifiez le message"
+
+#. module: smtpclient
+#: model:ir.model,name:smtpclient.model_email_smtpclient
+#: model:ir.module.module,shortdesc:smtpclient.module_meta_information
+msgid "Email Client"
+msgstr "Client email"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Disclaimers Message"
+msgstr "Message sur la limitation de garantie"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "__code__ for Verification Code"
+msgstr "__code__ pour le Code de Vérification"
+
+#. module: smtpclient
+#: selection:email.smtpclient.queue,state:0
+msgid "Queued"
+msgstr "File d'attente"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,date_create:0
+#: field:email.smtpclient.queue,date_create:0
+msgid "Date"
+msgstr "Date"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,cc:0
+msgid "CC to"
+msgstr "En copie à"
+
+#. module: smtpclient
+#: model:email.smtpclient,verify_email:smtpclient.email_smtpclient_sendmailserver0
+msgid ""
+"Verification Message. This is the code\n"
+"__code__ \n"
+"you must copy in the OpenERP Email Server (Verify Server wizard).\n"
+"Created by user __user__"
+msgstr ""
+"Message de vérification. Ceci est le code\n"
+"__code__ \n"
+"que vous devez saisir dans le serveur email OpenERP (assistant Vérification "
+"du Serveur).\n"
+"Créé par utilisateur __utilisateur__"
+
+#. module: smtpclient
+#: view:email.smtpclient.queue:0
+#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_queue_tree
+#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_smtp_server_queue
+msgid "Message Queue"
+msgstr "File d'attente des messages"
+
+#. module: smtpclient
+#: selection:email.smtpclient,type:0
+#: selection:res.company.address,name:0
+msgid "Default"
+msgstr "Défaut"
+
+#. module: smtpclient
+#: selection:email.smtpclient,delete_queue:0
+msgid "Delete Content After"
+msgstr "Effacer le contenu après"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "You have no permission to access SMTP Server : %s "
+msgstr "Vous n'avez aucune permission d'accès au serveur SMTP : %s "
+
+#. module: smtpclient
+#: field:email.smtpclient,active:0
+msgid "Active"
+msgstr "Actif"
+
+#. module: smtpclient
+#: model:ir.actions.act_window,name:smtpclient.act_mail_server_2_mail_queue
+msgid "Message Queus"
+msgstr "File d'attente des messages"
+
+#. module: smtpclient
+#: code:addons/smtpclient/wizard/sendcode.py:0
+#: code:addons/smtpclient/wizard/testemail.py:0
+#: code:addons/smtpclient/wizard/verifycode.py:0
+#: view:email.smtpclient.queue:0
+#: selection:email.smtpclient.queue,state:0
+#, python-format
+msgid "Error"
+msgstr "Erreur"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Server Error!"
+msgstr "Erreur serveur !"
+
+#. module: smtpclient
+#: selection:email.smtpclient,delete_queue:0
+msgid "Clear All After"
+msgstr "Tout effacer après"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid ""
+"Please verify Email Server, without verification you can not send Email(s)."
+msgstr ""
+"Merci de vérifier votre serveur email, sans vérification vous ne pouvez pas "
+"envoyer d'email(s)."
+
+#. module: smtpclient
+#: field:email.smtpclient,history_line:0
+#: field:report.smtp.server,history:0
+msgid "History"
+msgstr "Historique"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,priority:0
+msgid "Message Priority"
+msgstr "Priorité du message"
+
+#. module: smtpclient
+#: field:ir.actions.server,file_ids:0
+msgid "Attachments"
+msgstr "Fichiers attachés"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "__name__ for Customer Name"
+msgstr "__name__ pour le Nom du Client"
+
+#. module: smtpclient
+#: view:email.smtpclient.queue:0
+msgid "General"
+msgstr "Général"
+
+#. module: smtpclient
+#: field:email.headers,key:0
+msgid "Header"
+msgstr "Entête"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid ""
+"Verification Message. This is the code\n"
+"\n"
+"__code__\n"
+"\n"
+"you must copy in the OpenERP Email Server (Verify Server wizard).\n"
+"\n"
+"Created by user __user__"
+msgstr ""
+"Message de vérification. Voici le code\n"
+"\n"
+"__code__\n"
+"\n"
+"Vous devez le copier dans le serveur de couriel d'Open ERP (Assistant de "
+"vérification).\n"
+"\n"
+"Créer par l'utilisateur __user__"
+
+#. module: smtpclient
+#: selection:res.company.address,name:0
+msgid "Invoice"
+msgstr "Facture"
+
+#. module: smtpclient
+#: wizard_view:email.verifycode,init:0
+#: wizard_button:email.verifycode,init,check:0
+msgid "Verify Code"
+msgstr "Code de vérification"
+
+#. module: smtpclient
+#: wizard_button:email.sendcode,init,end:0
+#: wizard_button:email.testemail,init,end:0
+#: wizard_button:email.verifycode,init,end:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: smtpclient
+#: field:email.smtpclient,delete_queue_period:0
+msgid "Delete after"
+msgstr "Effacer après"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Server is not Verified, Please Verify the Server !"
+msgstr "Le serveur n'est pas vérifié, merci de vérifier le serveur!"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,resource_id:0
+msgid "Resource ID"
+msgstr "ID de la ressource"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "SMTP Data Error !"
+msgstr "Erreur de données SMTP !"
+
+#. module: smtpclient
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Le nom de l'objet doit commencer par x_ et ne doit pas contenir de "
+"caractères spéciaux !"
+
+#. module: smtpclient
+#: selection:email.smtpclient,delete_queue:0
+msgid "Delete when Email Sent"
+msgstr "Effacer une fois l'email envoyé"
+
+#. module: smtpclient
+#: selection:email.smtpclient,type:0
+msgid "Account"
+msgstr "Compte"
+
+#. module: smtpclient
+#: model:ir.module.module,description:smtpclient.module_meta_information
+msgid ""
+"Email Client module that provides:\n"
+" Sending Email\n"
+" Use Multiple Server\n"
+" Multi Threading\n"
+" Multi Attachment\n"
+" "
+msgstr ""
+"Module de client email qui permet d' :\n"
+" Envoyer des emails\n"
+" Utiliser plusieurs serveurs\n"
+" Utiliser plusieurs files d'envoi (multi-threading)\n"
+" Envoyer plusieurs fichiers attachés\n"
+" "
+
+#. module: smtpclient
+#: selection:email.smtpclient,type:0
+msgid "Stock"
+msgstr "Stock"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,name:0
+msgid "Description"
+msgstr "Description"
+
+#. module: smtpclient
+#: field:email.smtpclient,code:0
+#: wizard_field:email.verifycode,init,code:0
+msgid "Verification Code"
+msgstr "Code de vérifcation"
+
+#. module: smtpclient
+#: selection:email.smtpclient,pstate:0
+msgid "Stop"
+msgstr "Arrêter"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,body:0
+msgid "Email Text"
+msgstr "Texte de l'email"
+
+#. module: smtpclient
+#: selection:res.company.address,name:0
+msgid "Delivery"
+msgstr "Livraison"
+
+#. module: smtpclient
+#: selection:email.smtpclient,pstate:0
+msgid "Running"
+msgstr "En cours"
+
+#. module: smtpclient
+#: view:email.smtpclient.queue:0
+msgid "Last Error occured"
+msgstr "Dernière erreur apparu"
+
+#. module: smtpclient
+#: selection:email.smtpclient,state:0
+msgid "Waiting for Verification"
+msgstr "En attente de vérification"
+
+#. module: smtpclient
+#: field:email.smtpclient,password:0
+msgid "Password"
+msgstr "Mot de passe"
+
+#. module: smtpclient
+#: field:email.smtpclient,users_id:0
+msgid "Users Allowed"
+msgstr "Utilisateurs authorisés"
+
+#. module: smtpclient
+#: code:addons/smtpclient/wizard/sendcode.py:0
+#, python-format
+msgid "Verification Code Already Generated !"
+msgstr "Génération du code de vérification déjà effectuée!"
+
+#. module: smtpclient
+#: wizard_field:email.sendcode,init,emailto:0
+#: field:email.smtpclient,email:0
+#: wizard_field:email.testemail,init,emailto:0
+#: view:res.company:0
+#: field:res.company.address,email:0
+msgid "Email Address"
+msgstr "Adresse courriel"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Verification Message"
+msgstr "Message de vérification"
+
+#. module: smtpclient
+#: view:email.smtpclient:0
+msgid "Stop Server"
+msgstr "Arrêter le serveur"
+
+#. module: smtpclient
+#: model:ir.ui.menu,name:smtpclient.menu_smtpclient_administration_server
+msgid "Email Servers"
+msgstr "Serveurs email"
+
+#. module: smtpclient
+#: model:ir.actions.wizard,name:smtpclient.wizard_email_sendcode
+msgid "Send Verification Code"
+msgstr "Envoyer le code de vérification"
+
+#. module: smtpclient
+#: field:email.smtpclient.history,model:0
+msgid "Model"
+msgstr "Modèle"
+
+#. module: smtpclient
+#: model:ir.actions.act_window,name:smtpclient.action_email_smtpclient_tree
+#: field:ir.actions.server,email_server:0
+msgid "Email Server"
+msgstr "Serveur de couriel"
+
+#. module: smtpclient
+#: code:addons/smtpclient/smtpclient.py:0
+#, python-format
+msgid "Permission Error!"
+msgstr "Erreur de permission !"
+
+#. module: smtpclient
+#: model:ir.model,name:smtpclient.model_res_company_address
+msgid "res.company.address"
+msgstr "res.company.address"
+
+#. module: smtpclient
+#: field:email.smtpclient.queue,state:0
+msgid "Message Status"
+msgstr "État du message"
diff --git a/addons/stock/i18n/fr.po b/addons/stock/i18n/fr.po
index 6b82ef00f96..26c85ca75c7 100644
--- a/addons/stock/i18n/fr.po
+++ b/addons/stock/i18n/fr.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-05-20 06:22+0000\n"
-"Last-Translator: Olivier (Open ERP) \n"
+"PO-Revision-Date: 2010-05-21 10:35+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-05-21 03:37+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: stock
@@ -66,7 +66,7 @@ msgstr "Nom de modèle non valide dans la définition de l'action."
#: model:ir.module.module,shortdesc:stock.module_meta_information
#: model:ir.ui.menu,name:stock.menu_stock_root
msgid "Inventory Management"
-msgstr ""
+msgstr "Gestion des inventaires"
#. module: stock
#: selection:stock.location,icon:0
@@ -86,7 +86,7 @@ msgstr "STOCK_MEDIA_FORWARD"
#. module: stock
#: rml:lot.location:0
msgid "Total :"
-msgstr ""
+msgstr "Total :"
#. module: stock
#: selection:stock.location,icon:0
@@ -300,7 +300,7 @@ msgstr "Commande(Origine)"
#: rml:lot.stock.overview:0
#: rml:lot.stock.overview_all:0
msgid "Grand Total:"
-msgstr ""
+msgstr "Total:"
#. module: stock
#: view:stock.location:0
@@ -744,7 +744,7 @@ msgstr "Depuis"
#. module: stock
#: rml:stock.picking.list:0
msgid "weight"
-msgstr ""
+msgstr "poids"
#. module: stock
#: rml:stock.picking.list:0
@@ -1391,7 +1391,7 @@ msgstr "État de la facturation"
#. module: stock
#: rml:lot.location:0
msgid "Units"
-msgstr ""
+msgstr "Unités"
#. module: stock
#: selection:stock.location,icon:0
@@ -1641,7 +1641,7 @@ msgstr "Incoterms"
#: rml:lot.stock.overview:0
#: rml:lot.stock.overview_all:0
msgid "Total:"
-msgstr ""
+msgstr "Total:"
#. module: stock
#: selection:stock.location,icon:0
@@ -2275,6 +2275,8 @@ msgid ""
"Scheduled date for the movement of the products or real date if the move is "
"done."
msgstr ""
+"Date prévisionnelle pour le mouvement du produit ou la date réelle si le "
+"mouvement est terminé."
#. module: stock
#: view:stock.picking:0
diff --git a/addons/stock/i18n/pl.po b/addons/stock/i18n/pl.po
index 942cb5d0730..a4406384e8e 100644
--- a/addons/stock/i18n/pl.po
+++ b/addons/stock/i18n/pl.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-02-26 17:56+0000\n"
+"PO-Revision-Date: 2010-05-21 08:22+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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: 2010-04-17 03:56+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: stock
@@ -126,7 +126,7 @@ msgstr "Przyjmowanie produktów"
#: field:stock.picking,name:0
#: field:stock.tracking,serial:0
msgid "Reference"
-msgstr "Odnośnik"
+msgstr "Numer"
#. module: stock
#: wizard_field:stock.invoice_onshipping,init,group:0
diff --git a/addons/stock/report/report_stock_picking.py b/addons/stock/report/report_stock_picking.py
index 7f4ac801399..b6e2a3d3373 100644
--- a/addons/stock/report/report_stock_picking.py
+++ b/addons/stock/report/report_stock_picking.py
@@ -30,17 +30,30 @@ class report_stock_picking(osv.osv):
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
'day': fields.char('Day', size=128, readonly=True),
- 'reference': fields.char('Reference', size=64, select=True),
'nbr': fields.integer('# of Lines', readonly=True),
'nbp': fields.integer('# of Picking', readonly=True),
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
'product_qty': fields.float('# of Products', readonly=True),
+ 'product_uos_qty': fields.float('# of Products', readonly=True),
+ 'product_id': fields.many2one('product.product', 'Product', readonly=True),
'date': fields.date('Date', readonly=True),
'avg_days_to_deliver': fields.float('Avg Days to Deliver', digits=(16,2), readonly=True, group_operator="avg",
help="Number of Avg Days to deliver"),
- 'origin': fields.char('Origin', size=64),
'state': fields.selection([('draft', 'Draft'),('auto', 'Waiting'),('confirmed', 'Confirmed'),('assigned', 'Available'),('done', 'Done'),('cancel', 'Cancelled')], 'State'),
'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', required=True),
+ 'company_id': fields.many2one('res.company', 'Company', readonly=True),
+ 'invoice_state': fields.selection([
+ ("invoiced", "Invoiced"),
+ ("2binvoiced", "To Be Invoiced"),
+ ("none", "Not from Picking")], "Invoice Status",readonly=True),
+ 'min_date': fields.date('Expected Date',help="Expected date for Picking. Default it takes current date"),
+ 'order_date': fields.date('Order Date', help="Date of Order"),
+ 'date_done': fields.date('Date Done', help="Date of completion"),
+ 'location_id': fields.many2one('stock.location', 'Source Location', help="Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations."),
+ 'location_dest_id': fields.many2one('stock.location', 'Dest. Location', help="Location where the system will stock the finished products."),
+ 'max_date': fields.date('Max.Expected Date'),
+ 'product_uos': fields.many2one('product.uom', 'Product UOS'),
+ 'product_uom': fields.many2one('product.uom', 'Product UOM'),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_stock_picking')
@@ -48,6 +61,10 @@ class report_stock_picking(osv.osv):
create or replace view report_stock_picking as (
select
min(sm.id) as id,
+ date_trunc('day',sp.min_date) as min_date,
+ date_trunc('day',sp.date) as order_date,
+ date_trunc('day',sp.date_done) as date_done,
+ date_trunc('day',sp.max_date) as max_date,
to_char(sp.create_date, 'YYYY') as year,
to_char(sp.create_date, 'MM') as month,
to_char(sp.create_date, 'YYYY-MM-DD') as day,
@@ -56,19 +73,37 @@ class report_stock_picking(osv.osv):
count(sm.id) as nbr,
count(distinct sp.id) as nbp,
sum(sm.product_qty) as product_qty,
+ sum(sm.product_uos_qty) as product_uos_qty,
+ sm.product_id as product_id,
+ sm.location_dest_id as location_dest_id,
+ sm.location_id as location_id,
sp.type,
- sp.name as reference,
- sp.origin,
+ sm.product_uos,
+ sm.product_uom,
+ sp.invoice_state,
+ sp.company_id as company_id,
avg(extract('epoch' from (sp.date_done-sp.create_date)))/(3600*24) as avg_days_to_deliver,
sp.state
from stock_move as sm
left join stock_picking as sp ON (sm.picking_id=sp.id)
group by sp.type,
- sp.create_date,
- sp.address_id,
- sp.name,
- sp.origin,
- sp.state
+ sp.create_date,
+ sp.address_id,
+ sm.product_id,
+ to_char(sp.create_date, 'YYYY'),
+ sm.location_dest_id,
+ sm.location_id,
+ to_char(sp.create_date, 'MM'),
+ to_char(sp.create_date, 'YYYY-MM-DD'),
+ sm.product_uos,
+ sm.product_uom,
+ date_trunc('day',sp.min_date),
+ date_trunc('day',sp.date),
+ date_trunc('day',sp.date_done),
+ date_trunc('day',sp.max_date),
+ sp.invoice_state,
+ sp.company_id,
+ sp.state
)""")
report_stock_picking()
diff --git a/addons/stock/report/report_stock_picking_view.xml b/addons/stock/report/report_stock_picking_view.xml
index d4116313a7e..62d1b06fd19 100644
--- a/addons/stock/report/report_stock_picking_view.xml
+++ b/addons/stock/report/report_stock_picking_view.xml
@@ -15,15 +15,20 @@
-
+
-
+
+
+
+
+
+
-
+
@@ -49,29 +54,43 @@
-
-
+
+ help="Picking in last 30 days"/>
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
-
+
+
+
diff --git a/addons/stock_invoice_directly/i18n/fr.po b/addons/stock_invoice_directly/i18n/fr.po
index 3467771b8bb..a7092e8621f 100644
--- a/addons/stock_invoice_directly/i18n/fr.po
+++ b/addons/stock_invoice_directly/i18n/fr.po
@@ -7,16 +7,16 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 14:34+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-21 10:33+0000\n"
+"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ \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: 2010-04-17 04:20+0000\n"
+"X-Launchpad-Export-Date: 2010-05-22 04:00+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: stock_invoice_directly
#: model:ir.module.module,shortdesc:stock_invoice_directly.module_meta_information
msgid "Invoice Picking Directly"
-msgstr ""
+msgstr "Facture la livraison directement"