diff --git a/addons/account/account.py b/addons/account/account.py index 61e1fb021a9..38ed96d4aac 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -139,7 +139,7 @@ class account_account_type(osv.osv): 'Balance' will generally be used for cash accounts. 'Detail' will copy each existing journal item of the previous year, even the reconciled ones. 'Unreconciled' will copy only the journal items that were unreconciled on the first day of the new fiscal year."""), - 'sign': fields.selection([(-1, 'Negative'), (1, 'Positive')], 'Sign on Reports', required=True, help='Allows you to change the sign of the balance amount displayed in the reports, so that you can see positive figures instead of negative ones in expenses accounts.'), + 'sign': fields.selection([(-1, 'Reverse balance sign'), (1, 'Preserve balance sign')], 'Sign on Reports', required=True, help='For accounts that are typically more debited than credited and that you would like to print as negative amounts in your reports, you should reverse the sign of the balance; e.g.: Expense account. The same applies for accounts that are typically more credited than debited and that you would like to print as positive amounts in your reports; e.g.: Income account.'), 'report_type':fields.selection([ ('none','/'), ('income','Profit & Loss (Income Accounts)'), @@ -2637,6 +2637,10 @@ class account_fiscal_position_account_template(osv.osv): account_fiscal_position_account_template() +# --------------------------------------------------------- +# Account Financial Report +# --------------------------------------------------------- + class account_financial_report(osv.osv): _name = "account.financial.report" _description = "Account Report" @@ -2691,17 +2695,19 @@ class account_financial_report(osv.osv): 'parent_id': fields.many2one('account.financial.report', 'Parent'), 'children_ids': fields.one2many('account.financial.report', 'parent_id', 'Account Report'), 'sequence': fields.integer('Sequence'), + 'note': fields.text('Notes'), + 'balance': fields.function(_get_balance, 'Balance'), + 'level': fields.function(_get_level, string='Level', store=True, type='integer'), 'type': fields.selection([ - ('sum','Sum'), + ('sum','View'), ('accounts','Accounts'), - ('account_report','Account Report'), + ('account_type','Account Type'), + ('account_report','Report Value'), ],'Type'), 'account_ids': fields.many2many('account.account', 'account_account_financial_report', 'report_line_id', 'account_id', 'Accounts'), - 'note': fields.text('Notes'), - 'account_report_id': fields.many2one('account.financial.report', 'Account Report'), - 'balance': fields.function(_get_balance, 'Balance'), - 'display_detail': fields.boolean('Display the account list'), - 'level': fields.function(_get_level, string='Level', store=True, type='integer'), + 'display_detail': fields.boolean('Display details', help='Display every account with its balance instead of the sum.'), + 'account_report_id': fields.many2one('account.financial.report', 'Report Value'), + 'account_type_ids': fields.many2many('account.account.type', 'account_account_financial_report_type', 'report_id', 'account_type_id', 'Account Types'), } _defaults = { @@ -2710,7 +2716,9 @@ class account_financial_report(osv.osv): account_financial_report() - # Multi charts of Accounts wizard +# --------------------------------------------------------- +# Account generation from template wizards +# --------------------------------------------------------- class wizard_multi_charts_accounts(osv.osv_memory): """ diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 1055a4a164a..b22274f4546 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -749,6 +749,7 @@ + @@ -2713,16 +2714,27 @@ action = pool.get('res.config').next(cr, uid, [], context) form
- - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -2763,7 +2775,7 @@ action = pool.get('res.config').next(cr, uid, [], context) - Account Reports + Financial Reports ir.actions.act_window account.financial.report form @@ -2790,7 +2802,7 @@ action = pool.get('res.config').next(cr, uid, [], context) - Account Reports Hierarchy + Financial Reports Hierarchy account.financial.report tree diff --git a/addons/account/i18n/ar.po b/addons/account/i18n/ar.po index c0c60f617c3..d8dcf40a2d3 100644 --- a/addons/account/i18n/ar.po +++ b/addons/account/i18n/ar.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-09-05 23:09+0000\n" +"PO-Revision-Date: 2011-09-22 02:55+0000\n" "Last-Translator: Majed Majbour \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-09-17 04:55+0000\n" -"X-Generator: Launchpad (build 13955)\n" +"X-Launchpad-Export-Date: 2011-09-22 04:48+0000\n" +"X-Generator: Launchpad (build 13996)\n" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -48,7 +48,7 @@ msgstr "" #. module: account #: field:account.installer.modules,account_voucher:0 msgid "Voucher Management" -msgstr "" +msgstr "إدارة القسائم" #. module: account #: view:account.account:0 @@ -68,7 +68,7 @@ msgstr "متبقي" #: code:addons/account/invoice.py:785 #, python-format msgid "Please define sequence on invoice journal" -msgstr "" +msgstr "يرجى تحديد تسلسل على الفاتورة" #. module: account #: constraint:account.period:0 @@ -134,7 +134,7 @@ msgstr "المدخلات المحاسبية -" #: code:addons/account/account.py:1291 #, python-format msgid "You can not delete posted movement: \"%s\"!" -msgstr "" +msgstr "لا يمكنك حذف حركة تم ترحيلها: \"%s\"!" #. module: account #: report:account.invoice:0 @@ -173,6 +173,8 @@ msgid "" "If the active field is set to False, it will allow you to hide the payment " "term without removing it." msgstr "" +"إذا تم تعيين الحقل النشط إلى خطأ ، فإنه سيسمح لك بإخفاء مدة السداد دون " +"إزالتها." #. module: account #: code:addons/account/invoice.py:1421 diff --git a/addons/account/partner.py b/addons/account/partner.py index 6ff3879889c..36fd88183f2 100644 --- a/addons/account/partner.py +++ b/addons/account/partner.py @@ -28,12 +28,17 @@ class account_fiscal_position(osv.osv): _description = 'Fiscal Position' _columns = { 'name': fields.char('Fiscal Position', size=64, required=True), + 'active': fields.boolean('Active', help="By unchecking the active field, you may hide a fiscal position without deleting it."), 'company_id': fields.many2one('res.company', 'Company'), 'account_ids': fields.one2many('account.fiscal.position.account', 'position_id', 'Account Mapping'), 'tax_ids': fields.one2many('account.fiscal.position.tax', 'position_id', 'Tax Mapping'), 'note': fields.text('Notes', translate=True), } + _defaults = { + 'active': True, + } + def map_tax(self, cr, uid, fposition_id, taxes, context=None): if not taxes: return [] diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml index fbee97875ae..706fa4683cb 100644 --- a/addons/account/partner_view.xml +++ b/addons/account/partner_view.xml @@ -8,8 +8,11 @@ form
- - + + + + + diff --git a/addons/account/report/account_aged_partner_balance.rml b/addons/account/report/account_aged_partner_balance.rml index ace66af0584..fb79ab0d199 100644 --- a/addons/account/report/account_aged_partner_balance.rml +++ b/addons/account/report/account_aged_partner_balance.rml @@ -196,25 +196,25 @@ Account Total - [[ formatLang(get_direction('6')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_direction('6'), currency_obj=company.currency_id) ]] - [[ formatLang(get_for_period('4')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_for_period('4'), currency_obj=company.currency_id) ]] - [[ formatLang(get_for_period('3')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_for_period('3'), currency_obj=company.currency_id) ]] - [[ formatLang(get_for_period('2')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_for_period('2'), currency_obj=company.currency_id) ]] - [[ formatLang(get_for_period('1')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_for_period('1'), currency_obj=company.currency_id) ]] - [[ formatLang(get_for_period('0')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_for_period('0'), currency_obj=company.currency_id) ]] - [[ formatLang(get_total('5')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_total('5'), currency_obj=company.currency_id) ]] @@ -224,25 +224,25 @@ [[ partner['name'] ]] - [[ formatLang(partner['direction']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['direction'], currency_obj=company.currency_id) ]] - [[ formatLang(partner['4'])]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['4'], currency_obj=company.currency_id) ]] - [[ formatLang(partner['3'])]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['3'], currency_obj=company.currency_id) ]] - [[ formatLang(partner['2']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['2'], currency_obj=company.currency_id) ]] - [[ formatLang(partner['1']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['1'], currency_obj=company.currency_id) ]] - [[ formatLang(partner['0']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['0'], currency_obj=company.currency_id) ]] - [[ formatLang(partner['total']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(partner['total'], currency_obj=company.currency_id) ]] @@ -251,25 +251,25 @@ [[ not_partner['name'] ]] - [[ formatLang(not_partner['direction']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['direction'], currency_obj=company.currency_id) ]] - [[ formatLang(not_partner['4'])]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['4'], currency_obj=company.currency_id) ]] - [[ formatLang(not_partner['3'])]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['3'], currency_obj=company.currency_id) ]] - [[ formatLang(not_partner['2']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['2'], currency_obj=company.currency_id) ]] - [[ formatLang(not_partner['1']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['1'], currency_obj=company.currency_id) ]] - [[ formatLang(not_partner['0']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['0'], currency_obj=company.currency_id) ]] - [[ formatLang(not_partner['total']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(not_partner['total'], currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_balance.rml b/addons/account/report/account_balance.rml index fac964eb46d..b7e729a738e 100644 --- a/addons/account/report/account_balance.rml +++ b/addons/account/report/account_balance.rml @@ -296,7 +296,7 @@ [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ '..'*(a['level']-1) ]][[ a['name'] ]] [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['debit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[formatLang(a['debit']) ]] [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font')]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['credit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['credit']) ]] - [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]] + [[ (a['type']<>'view' and setTag('para','para',{'fontName':"Helvetica"})) or removeParentNode('font') ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance'], currency_obj=company.currency_id) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance'], currency = company.currency_id) ]] diff --git a/addons/account/report/account_balance_sheet.py b/addons/account/report/account_balance_sheet.py index b1e51e6fc46..ce9e3c51f06 100644 --- a/addons/account/report/account_balance_sheet.py +++ b/addons/account/report/account_balance_sheet.py @@ -136,7 +136,7 @@ class report_balancesheet_horizontal(report_sxw.rml_parse, common_report_header) 'code': account.code, 'name': account.name, 'level': account.level, - 'balance':account.balance, + 'balance': account.balance != 0 and account.balance * account.user_type.sign or account.balance, 'type': account.type, } currency = account.currency_id and account.currency_id or account.company_id.currency_id diff --git a/addons/account/report/account_balance_sheet.rml b/addons/account/report/account_balance_sheet.rml index 8b9f6d1b5a3..11b37af6abe 100644 --- a/addons/account/report/account_balance_sheet.rml +++ b/addons/account/report/account_balance_sheet.rml @@ -240,8 +240,8 @@ [[ setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']))}) ]] [[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_code'}) ]][[ a['code'] ]] [[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a['level']))+'_name'}) ]][[ a['name'] ]] - [[ (a['level'] <>2) or removeParentNode('td') ]][[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]] - [[ a['level'] == 2 or removeParentNode('td') ]][[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]] + [[ (a['level'] <>2) or removeParentNode('td') ]][[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance'], currency = company.currency_id) ]] + [[ a['level'] == 2 or removeParentNode('td') ]][[ formatLang(a['balance'], currency = company.currency_id) ]] @@ -250,7 +250,7 @@ Balance: - [[ formatLang(sum_cr()) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_cr(), currency = company.currency_id) ]] @@ -282,8 +282,8 @@ [[ setTag('tr','tr',{'style': 'Table'+str(min(3,a['level']))}) ]] [[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_code'}) ]][[ a['code'] ]] [[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a['level']))+'_name'}) ]][[ a['name'] ]] - [[ (a['level'] <>2) or removeParentNode('td') ]][[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]] - [[ a['level'] == 2 or removeParentNode('td') ]][[ formatLang(a['balance']) ]] [[company.currency_id.symbol ]] + [[ (a['level'] <>2) or removeParentNode('td') ]][[ (a['type'] =='view' and a['level'] >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a['level']))+'_balance'}) ]][[ formatLang(a['balance'], currency = company.currency_id) ]] + [[ a['level'] == 2 or removeParentNode('td') ]][[ formatLang(a['balance'], currency = company.currency_id) ]] @@ -292,7 +292,7 @@ Balance: - [[ formatLang(sum_dr()) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_dr(), currency = company.currency_id) ]] diff --git a/addons/account/report/account_balance_sheet_horizontal.rml b/addons/account/report/account_balance_sheet_horizontal.rml index 0ecc907e0b4..ce442b7b136 100644 --- a/addons/account/report/account_balance_sheet_horizontal.rml +++ b/addons/account/report/account_balance_sheet_horizontal.rml @@ -207,7 +207,7 @@ - [[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(a['balance1']) ]] [[ company.currency_id.symbol ]] + [[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(a['balance1'], currency_obj=company.currency_id) ]] @@ -224,7 +224,7 @@ [[ ( a['level']<4 or a['name']=='Net Profit') and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]] - [[(a['code'] and a['name']) and formatLang(a['balance']) or removeParentNode('font')]] [[ company.currency_id.symbol ]] + [[(a['code'] and a['name']) and formatLang(a['balance'], currency_obj=company.currency_id) or removeParentNode('font')]] @@ -235,13 +235,13 @@ Balance: - [[ formatLang(sum_cr()) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_cr(), currency_obj=company.currency_id) ) ]] Balance: - [[ formatLang(sum_dr()) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_dr(), currency_obj=company.currency_id) ) ]] diff --git a/addons/account/report/account_central_journal.rml b/addons/account/report/account_central_journal.rml index fe064132cbc..534baf05abe 100644 --- a/addons/account/report/account_central_journal.rml +++ b/addons/account/report/account_central_journal.rml @@ -298,7 +298,7 @@ [[ formatLang( sum_debit(o.period_id.id, o.journal_id.id)) ]] [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)) ]] - [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)-sum_debit(o.period_id.id, o.journal_id.id) ) ]] [[ company.currency_id.symbol ]] + [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)-sum_debit(o.period_id.id, o.journal_id.id), currency_obj=company.currency_id ) ]] [[ display_currency(data) or removeParentNode('blockTable') ]] @@ -307,7 +307,7 @@ [[ formatLang( sum_debit(o.period_id.id, o.journal_id.id)) ]] [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)) ]] - [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)-sum_debit(o.period_id.id, o.journal_id.id) ) ]] [[ company.currency_id.symbol ]] + [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)-sum_debit(o.period_id.id, o.journal_id.id), currency_obj=company.currency_id ) ]] @@ -319,7 +319,7 @@ [[ line['name'] ]] [[ formatLang(line['debit']) ]] [[ formatLang(line['credit'])]] - [[ formatLang(line['credit']-line['debit']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['credit']-line['debit'], currency_obj=company.currency_id ) ]] [[ display_currency(data) or removeParentNode('blockTable') ]] @@ -328,7 +328,7 @@ [[ line['name'] ]] [[ formatLang(line['debit']) ]] [[ formatLang(line['credit'])]] - [[ formatLang(line['credit']-line['debit']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['credit']-line['debit'], currency_obj=company.currency_id ) ]] [[ (line['currency_id']==None or line['amount_currency']==None) and removeParentNode('font') ]] [[ formatLang(line['amount_currency'] ) ]] [[ line['currency_code'] or '' ]] diff --git a/addons/account/report/account_financial_report.py b/addons/account/report/account_financial_report.py index 6b0ada74708..6b42bb1875d 100644 --- a/addons/account/report/account_financial_report.py +++ b/addons/account/report/account_financial_report.py @@ -63,14 +63,18 @@ class report_account_common(report_sxw.rml_parse, common_report_header): if data['form']['enable_filter']: vals['balance_cmp'] = self.pool.get('account.financial.report').browse(self.cr, self.uid, report.id, context=data['form']['comparison_context']).balance lines.append(vals) + account_ids = [] if report.type == 'accounts' and report.display_detail and report.account_ids: account_ids = account_obj._get_children_and_consol(self.cr, self.uid, [x.id for x in report.account_ids]) + elif report.type == 'account_type' and report.account_type_ids: + account_ids = account_obj.search(self.cr, self.uid, [('user_type','in', [x.id for x in report.account_type_ids])]) + if account_ids: for account in account_obj.browse(self.cr, self.uid, account_ids, context=data['form']['used_context']): if account.type != 'view': flag = False vals = { 'name': account.code + ' ' + account.name, - 'balance': account.balance, + 'balance': account.balance != 0 and account.balance * account.user_type.sign or account.balance, 'type': 'account', 'level': 6, 'account_type': account.type, diff --git a/addons/account/report/account_general_journal.rml b/addons/account/report/account_general_journal.rml index 6424a24f8aa..5ca6e828e49 100644 --- a/addons/account/report/account_general_journal.rml +++ b/addons/account/report/account_general_journal.rml @@ -273,7 +273,7 @@ [[ formatLang(sum_debit()) ]] [[ formatLang( sum_credit()) ]] - [[ formatLang( sum_debit()- sum_credit()) ]] [[ company.currency_id.symbol ]] + [[ formatLang( sum_debit()- sum_credit(), currency_obj=company.currency_id) ]] [[ display_currency(data) or removeParentNode('blockTable') ]] @@ -290,7 +290,7 @@ [[ formatLang(sum_debit()) ]] [[ formatLang( sum_credit()) ]] - [[ formatLang( sum_credit()- sum_debit()) ]] [[ company.currency_id.symbol ]] + [[ formatLang( sum_credit()- sum_debit(), currency_obj=company.currency_id) ]] @@ -311,7 +311,7 @@ [[ formatLang(sum_credit_period(o.id)) ]] - [[ formatLang(sum_credit_period(o.id)-sum_debit_period(o.id)) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_credit_period(o.id)-sum_debit_period(o.id), currency_obj=company.currency_id) ]] @@ -337,7 +337,7 @@ [[ formatLang(sum_credit_period(o.id)) ]] - [[ formatLang(sum_credit_period(o.id)-sum_debit_period(o.id)) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_credit_period(o.id)-sum_debit_period(o.id), currency_obj=company.currency_id) ]] @@ -358,7 +358,7 @@ [[ formatLang(line['credit']) ]] - [[ formatLang(line['credit']-line['debit'] ) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['credit']-line['debit'], currency_obj=company.currency_id ) ]] @@ -371,7 +371,7 @@ [[ line['name'] ]] [[ formatLang(line['debit'] )]] [[ formatLang(line['credit']) ]] - [[ formatLang(line['credit']-line['debit'] ) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['credit']-line['debit'], currency_obj=company.currency_id ) ]] [[ (line['currency_id']==None or line['amount_currency']==None) and removeParentNode('font') ]] [[ formatLang(line['amount_currency'] ) ]] [[ line['currency_code'] or '' ]] diff --git a/addons/account/report/account_general_ledger.rml b/addons/account/report/account_general_ledger.rml index 7a8454d714a..d19afed52aa 100644 --- a/addons/account/report/account_general_ledger.rml +++ b/addons/account/report/account_general_ledger.rml @@ -476,10 +476,10 @@ [[ formatLang(sum_credit_account(o), digits=get_digits(dp='Account')) ]] - [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account'),currency_obj=company.currency_id) ]] - [[ o.currency_id and formatLang(sum_currency_amount_account(o), digits=get_digits(dp='Account')) + o.currency_id.symbol or '' ]] + [[ o.currency_id and formatLang(sum_currency_amount_account(o), digits=get_digits(dp='Account'),currency_obj=o.currency_id) or '' ]] @@ -515,7 +515,7 @@ [[ formatLang(line['credit'], digits=get_digits(dp='Account')) ]] - [[ formatLang(line['progress'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['progress'], digits=get_digits(dp='Account'),currency_obj=company.currency_id) ]] [[ (line.has_key('currency_id') and line['currency_id']==None or line['amount_currency']==None) and removeParentNode('font') ]] [[ formatLang(line['amount_currency'])]] [[ line['currency_code'] or '']] @@ -572,7 +572,7 @@ [[ formatLang(sum_credit_account(o), digits=get_digits(dp='Account')) ]] - [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account'),currency_obj=company.currency_id) ]] @@ -608,7 +608,7 @@ [[ formatLang(line['credit'], digits=get_digits(dp='Account')) ]] - [[ formatLang(line['progress'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['progress'], digits=get_digits(dp='Account'),currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_general_ledger_landscape.rml b/addons/account/report/account_general_ledger_landscape.rml index 96a78b5fd9b..7495d889b52 100644 --- a/addons/account/report/account_general_ledger_landscape.rml +++ b/addons/account/report/account_general_ledger_landscape.rml @@ -505,10 +505,10 @@ [[ formatLang(sum_credit_account(o), digits=get_digits(dp='Account')) ]] - [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account'), currency = company.currency_id) ]] - [[ o.currency_id and formatLang(sum_currency_amount_account(o), digits=get_digits(dp='Account')) + o.currency_id.symbol or '' ]] + [[ o.currency_id and formatLang(sum_currency_amount_account(o), digits=get_digits(dp='Account'),currency_obj=o.currency_id) or '' ]] @@ -547,7 +547,7 @@ [[ formatLang(line['credit'], digits=get_digits(dp='Account')) ]] - [[ formatLang(line['progress'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['progress'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] [[ (line.has_key('currency_id') and line['currency_id']==None or line['amount_currency']==None) and removeParentNode('font') ]] [[ formatLang(line['amount_currency'])]] [[ line['currency_code'] or '']] @@ -607,7 +607,7 @@ [[ formatLang(sum_credit_account(o), digits=get_digits(dp='Account')) ]] - [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_balance_account(o), digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] @@ -646,7 +646,7 @@ [[ formatLang(line['credit'], digits=get_digits(dp='Account')) ]] - [[ formatLang(line['progress'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line['progress'], digits=get_digits(dp='Account'),currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_journal.rml b/addons/account/report/account_journal.rml index 3825eb58d76..76bf1bb4bfa 100644 --- a/addons/account/report/account_journal.rml +++ b/addons/account/report/account_journal.rml @@ -247,8 +247,8 @@ - [[ formatLang(sum_debit(o.period_id.id, o.journal_id.id)) ]] [[ company.currency_id.symbol ]] - [[ formatLang(sum_credit(o.period_id.id, o.journal_id.id)) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_debit(o.period_id.id, o.journal_id.id), currency_obj=company.currency_id) ]] + [[ formatLang(sum_credit(o.period_id.id, o.journal_id.id), currency_obj=company.currency_id) ]] [[lines(o.period_id.id, o.journal_id.id) or removeParentNode('story') ]] @@ -258,8 +258,8 @@ [[ line.account_id.code ]] [[ line.partner_id and strip_name(line.partner_id.name,17) ]] [[ strip_name(line.name,27) ]] - [[ formatLang(line.debit) ]] [[ company.currency_id.symbol ]] - [[ formatLang(line.credit) ]] [[ company.currency_id.symbol ]] + [[ formatLang(line.debit, currency_obj=company.currency_id) ]] + [[ formatLang(line.credit, currency_obj=company.currency_id) ]] @@ -282,8 +282,8 @@ - [[ formatLang(sum_debit(o.period_id.id, o.journal_id.id)) ]] [[ company.currency_id.symbol ]] - [[ formatLang(sum_credit(o.period_id.id, o.journal_id.id)) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_debit(o.period_id.id, o.journal_id.id), currency_obj=company.currency_id) ]] + [[ formatLang(sum_credit(o.period_id.id, o.journal_id.id), currency_obj=company.currency_id) ]] @@ -295,9 +295,9 @@ [[ line.account_id.code ]] [[ line.partner_id and strip_name(line.partner_id.name,15) ]] [[ strip_name(line.name,17) ]] - [[ formatLang(line.debit) ]] [[ company.currency_id.symbol ]] - [[ formatLang(line.credit) ]] [[ company.currency_id.symbol ]] - [[ line.currency_id and formatLang(line.amount_currency) or '' ]] [[ line.currency_id.symbol or '']] + [[ formatLang(line.debit, currency_obj=company.currency_id) ]] + [[ formatLang(line.credit, currency_obj=company.currency_id) ]] + [[ line.currency_id and formatLang(line.amount_currency, currency_obj=line.currency_id) or '' ]] diff --git a/addons/account/report/account_partner_balance.rml b/addons/account/report/account_partner_balance.rml index baf43435a44..8953aa8d1cf 100644 --- a/addons/account/report/account_partner_balance.rml +++ b/addons/account/report/account_partner_balance.rml @@ -241,16 +241,16 @@ [[ formatLang(sum_debit()) ]] [[ formatLang(sum_credit()) ]] - [[ formatLang((sum_debit()-sum_credit())) ]] [[ company.currency_id.symbol ]] - [[ formatLang(sum_litige()) ]] [[ company.currency_id.symbol ]] + [[ formatLang((sum_debit()-sum_credit()), currency_obj=company.currency_id) ]] + [[ formatLang(sum_litige(), currency_obj=company.currency_id) ]] [[ repeatIn(lines(), 'a') ]][[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ a['ref'] ]] [[ a['type']==3 and a['code'] ]] [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ a['name'] ]] [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ formatLang(a['debit']) ]] [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ formatLang(a['credit']) ]] - [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ formatLang(a['balance']) ]] [[ company.currency_id.symbol ]] - [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ formatLang(a['enlitige'] or 0.0) ]] [[ company.currency_id.symbol ]] + [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ formatLang(a['balance'], currency_obj=company.currency_id) ]] + [[ (a['type']==3 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ formatLang(a['enlitige'] or 0.0, currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_partner_ledger.rml b/addons/account/report/account_partner_ledger.rml index b1fc8ae712f..11d9f6eff1b 100644 --- a/addons/account/report/account_partner_ledger.rml +++ b/addons/account/report/account_partner_ledger.rml @@ -477,7 +477,7 @@ [[ formatLang((sum_credit_partner(p))) ]] - [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p))) ]] [[ company.currency_id.symbol ]] + [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p)), currency_obj=company.currency_id) ]] @@ -497,7 +497,7 @@ [[ formatLang(get_intial_balance(p)[0][1]) ]] - [[ formatLang(get_intial_balance(p)[0][2]) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_intial_balance(p)[0][2], currency_obj=company.currency_id) ]] @@ -528,7 +528,7 @@ [[ formatLang((line['credit'])) ]] - [[ formatLang((line['progress'])) ]] [[ company.currency_id.symbol ]] + [[ formatLang((line['progress']), currency_obj=company.currency_id) ]] @@ -581,7 +581,7 @@ [[ formatLang((sum_credit_partner(p))) ]] - [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p))) ]] [[ company.currency_id.symbol ]] + [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p)), currency_obj=company.currency_id) ]] @@ -604,7 +604,7 @@ [[ formatLang(get_intial_balance(p)[0][1]) ]] - [[ formatLang(get_intial_balance(p)[0][2]) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_intial_balance(p)[0][2], currency_obj=company.currency_id) ]] @@ -640,7 +640,7 @@ [[ formatLang((line['credit'])) ]] - [[ formatLang((line['progress'])) ]] [[ company.currency_id.symbol ]] + [[ formatLang((line['progress']), currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_partner_ledger_other.rml b/addons/account/report/account_partner_ledger_other.rml index 7c134270c5c..54842096496 100644 --- a/addons/account/report/account_partner_ledger_other.rml +++ b/addons/account/report/account_partner_ledger_other.rml @@ -482,7 +482,7 @@ [[ formatLang((sum_credit_partner(p))) ]] - [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p))) ]] [[ company.currency_id.symbol ]] + [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p)), currency_obj=company.currency_id) ]] @@ -502,7 +502,7 @@ [[ formatLang(get_intial_balance(p)[0][1]) ]] - [[ formatLang(get_intial_balance(p)[0][2]) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_intial_balance(p)[0][2], currency_obj=company.currency_id) ]] @@ -533,7 +533,7 @@ [[ formatLang((line['credit'])) ]] - [[ formatLang((line['progress'])) ]] [[ company.currency_id.symbol ]] + [[ formatLang((line['progress']), currency_obj=company.currency_id) ]] @@ -590,7 +590,7 @@ [[ formatLang((sum_credit_partner(p))) ]] - [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p))) ]] [[ company.currency_id.symbol ]] + [[ formatLang((sum_debit_partner(p) - sum_credit_partner(p)), currency_obj=company.currency_id) ]] @@ -613,7 +613,7 @@ [[ formatLang(get_intial_balance(p)[0][1]) ]] - [[ formatLang(get_intial_balance(p)[0][2]) ]] [[ company.currency_id.symbol ]] + [[ formatLang(get_intial_balance(p)[0][2], currency_obj=company.currency_id) ]] @@ -649,7 +649,7 @@ [[ formatLang((line['credit'])) ]] - [[ formatLang((line['progress'])) ]] [[ company.currency_id.symbol ]] + [[ formatLang((line['progress']), currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_print_invoice.rml b/addons/account/report/account_print_invoice.rml index 0350fbf7379..db8f752a56d 100644 --- a/addons/account/report/account_print_invoice.rml +++ b/addons/account/report/account_print_invoice.rml @@ -263,7 +263,7 @@ [[ formatLang(l.discount, dp='Account') ]] - [[ formatLang(l.price_subtotal, dp='Account') ]] [[ o.currency_id.symbol ]] + [[ formatLang(l.price_subtotal, dp='Account', currency_obj=o.currency_id) ]] @@ -309,7 +309,7 @@ Net Total: - [[ formatLang(o.amount_untaxed, digits=get_digits(dp='Account')) ]] [[ o.currency_id.symbol ]] + [[ formatLang(o.amount_untaxed, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]] @@ -322,7 +322,7 @@ Taxes: - [[ formatLang(o.amount_tax, dp='Account') ]] [[ o.currency_id.symbol ]] + [[ formatLang(o.amount_tax, dp='Account', currency_obj=o.currency_id) ]] @@ -335,7 +335,7 @@ Total: - [[ formatLang(o.amount_total, digits=get_digits(dp='Account')) ]] [[ o.currency_id.symbol ]] + [[ formatLang(o.amount_total, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]] @@ -368,10 +368,10 @@ [[ t.name ]] - [[ formatLang(t.base, dp='Account') ]] [[ o.currency_id.symbol ]] + [[ formatLang(t.base, dp='Account', currency_obj=o.currency_id) ]] - [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount, digits=get_digits(dp='Account')) ]] [[ o.currency_id.symbol ]] + [[ (t.tax_code_id and t.tax_code_id.notprintable) and removeParentNode('blockTable') or '' ]] [[ formatLang(t.amount, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]] diff --git a/addons/account/report/account_print_overdue.rml b/addons/account/report/account_print_overdue.rml index 0797d544f9b..25ccad25377 100644 --- a/addons/account/report/account_print_overdue.rml +++ b/addons/account/report/account_print_overdue.rml @@ -219,7 +219,7 @@ [[ (line['account_id']['type'] == 'receivable' and formatLang(line['credit']) or 0) or (line['account_id']['type'] == 'payable' and formatLang(line['debit'] * -1) or 0) ]] - [[ formatLang((line['date_maturity'] < time.strftime('%Y-%m-%d'))) and formatLang(line['debit'] - line['credit']) ]] [[ company.currency_id.symbol ]] + [[ formatLang((line['date_maturity'] < time.strftime('%Y-%m-%d'))) and formatLang(line['debit'] - line['credit'], currency_obj=company.currency_id) ] [[ line['blocked'] and 'X' or '' ]] @@ -244,7 +244,7 @@ [[ formatLang((reduce(lambda x, y: x + ((y['account_id']['type'] == 'receivable' and y['credit'] or 0) or (y['account_id']['type'] == 'payable' and y['debit'] * -1 or 0)), getLines(o), 0))) ]] - [[ formatLang((reduce(lambda x, y: x + (y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0))) ]] [[ company.currency_id.symbol ]] + [[ formatLang((reduce(lambda x, y: x + (y['debit'] - y['credit']), filter(lambda x: x['date_maturity'] < time.strftime('%Y-%m-%d'), getLines(o)), 0)), currency_obj=company.currency_id) ]] @@ -264,7 +264,7 @@ Balance : - [[ formatLang((reduce(lambda x, y: x +(y['debit'] - y['credit']), getLines(o), 0))) ]] [[ company.currency_id.symbol ]] + [[ formatLang((reduce(lambda x, y: x +(y['debit'] - y['credit']), getLines(o), 0)), currency_obj=company.currency_id) ]] @@ -279,10 +279,10 @@ - Total amount due: [[ formatLang((reduce(lambda x, y: x + (y['debit'] - y['credit']), getLines(o), 0))) ]] [[ company.currency_id.symbol ]]. + Total amount due: [[ formatLang((reduce(lambda x, y: x + (y['debit'] - y['credit']), getLines(o), 0)), currency_obj=company.currency_id) ]]. - \ No newline at end of file + diff --git a/addons/account/report/account_profit_horizontal.rml b/addons/account/report/account_profit_horizontal.rml index bf19d0b61fc..e4ed9139fa0 100644 --- a/addons/account/report/account_profit_horizontal.rml +++ b/addons/account/report/account_profit_horizontal.rml @@ -221,7 +221,7 @@ - [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(abs(a['balance'])) ]] [[ company.currency_id.symbol ]] + [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[ formatLang(abs(a['balance']), currency_obj=company.currency_id) ]] @@ -234,7 +234,7 @@ - [[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[(a['code1'] and a['name1']) and formatLang(abs(a['balance1'])) or removeParentNode('font') ]] [[ company.currency_id.symbol ]] + [[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Right_9_Bold'})) or removeParentNode('font') ]][[(a['code1'] and a['name1']) and formatLang(abs(a['balance1']), currency_obj=company.currency_id) or removeParentNode('font') ]] @@ -247,7 +247,7 @@ [[ final_result()['type'] == 'Net Profit' and final_result()['type'] or '' ]] - [[ final_result()['balance'] and final_result()['type'] == 'Net Profit' and formatLang(abs(final_result()['balance'])) ]] [[ company.currency_id.symbol ]] + [[ final_result()['balance'] and final_result()['type'] == 'Net Profit' and formatLang(abs(final_result()['balance']), currency_obj=company.currency_id) ]] @@ -256,7 +256,7 @@ [[ final_result()['type'] == 'Net Loss' and final_result()['type'] or '' ]] - [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and formatLang(abs(final_result()['balance'])) ]] [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and company.currency_id.symbol ]] + [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and formatLang(abs(final_result()['balance']), currency_obj=company.currency_id) ]] @@ -267,13 +267,13 @@ Total: - [[ formatLang(abs(sum_dr())) ]] [[ company.currency_id.symbol ]] + [[ formatLang(abs(sum_dr()), currency_obj=company.currency_id) ]] Total: - [[ formatLang(abs(sum_cr())) ]] [[ company.currency_id.symbol ]] + [[ formatLang(abs(sum_cr()), currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_profit_loss.py b/addons/account/report/account_profit_loss.py index 4c8896ee630..27182cdbd21 100644 --- a/addons/account/report/account_profit_loss.py +++ b/addons/account/report/account_profit_loss.py @@ -141,11 +141,15 @@ class report_pl_account_horizontal(report_sxw.rml_parse, common_report_header): 'code': cal_list['expense'][i].code, 'name': cal_list['expense'][i].name, 'level': cal_list['expense'][i].level, - 'balance':cal_list['expense'][i].balance, + 'balance': cal_list['expense'][i].balance != 0 and \ + cal_list['expense'][i].balance * cal_list['expense'][i].user_type.sign or \ + cal_list['expense'][i].balance, 'code1': cal_list['income'][i].code, 'name1': cal_list['income'][i].name, 'level1': cal_list['income'][i].level, - 'balance1':cal_list['income'][i].balance, + 'balance1': cal_list['income'][i].balance != 0 and \ + cal_list['income'][i].balance * cal_list['income'][i].user_type.sign or \ + cal_list['income'][i].balance, } self.result_temp.append(temp) else: @@ -158,7 +162,9 @@ class report_pl_account_horizontal(report_sxw.rml_parse, common_report_header): 'code1': cal_list['income'][i].code, 'name1': cal_list['income'][i].name, 'level1': cal_list['income'][i].level, - 'balance1':cal_list['income'][i].balance, + 'balance1': cal_list['income'][i].balance != 0 and \ + cal_list['income'][i].balance * cal_list['income'][i].user_type.sign \ + or cal_list['income'][i].balance, } self.result_temp.append(temp) if i < len(cal_list['expense']): @@ -166,7 +172,9 @@ class report_pl_account_horizontal(report_sxw.rml_parse, common_report_header): 'code': cal_list['expense'][i].code, 'name': cal_list['expense'][i].name, 'level': cal_list['expense'][i].level, - 'balance':cal_list['expense'][i].balance, + 'balance': cal_list['expense'][i].balance != 0 and \ + cal_list['expense'][i].balance * cal_list['expense'][i].user_type.sign \ + or cal_list['expense'][i].balance, 'code1': '', 'name1': '', 'level1': False, diff --git a/addons/account/report/account_profit_loss.rml b/addons/account/report/account_profit_loss.rml index f0c549e7412..362381be6a8 100644 --- a/addons/account/report/account_profit_loss.rml +++ b/addons/account/report/account_profit_loss.rml @@ -228,8 +228,8 @@ [[ setTag('tr','tr',{'style': 'Table'+str(min(3,a.level))}) ]] [[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_code'}) ]][[ a.code ]] [[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a.level))+'_name'}) ]][[ a.name ]] - [[ (a.level <>2) or removeParentNode('td') ]][[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_balance'}) ]][[ formatLang(a.balance) ]] [[company.currency_id.symbol ]] - [[ a.level == 2 or removeParentNode('td') ]][[ formatLang(a.balance) ]] [[company.currency_id.symbol ]] + [[ (a.level <>2) or removeParentNode('td') ]][[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_balance'}) ]][[ formatLang(a.balance * a.user_type.sign, currency_obj=company.currency_id.symbol) + [[ a.level == 2 or removeParentNode('td') ]][[ formatLang(a.balance * a.user_type.sign, currency_obj=company.currency_id) ]] @@ -241,7 +241,7 @@ [[ final_result()['type'] == 'Net Profit' and final_result()['type'] or removeParentNode('blockTable') ]] - [[ final_result()['balance'] and final_result()['type'] == 'Net Profit' and formatLang(final_result()['balance']) ]] [[ final_result()['balance'] and final_result()['type'] == 'Net Profit' and company.currency_id.symbol ]] + [[ final_result()['balance'] and final_result()['type'] == 'Net Profit' and formatLang(final_result()['balance'], currency_obj=company.currency_id) ]] @@ -251,7 +251,7 @@ Total: - [[ formatLang(sum_dr()) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_dr(), currency_obj=company.currency_id) ]] @@ -277,8 +277,8 @@ [[ setTag('tr','tr',{'style': 'Table'+str(min(3,a.level))}) ]] [[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_3_code_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_code'}) ]][[ a.code ]] [[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_name_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(4,a.level))+'_name'}) ]][[ a.name ]] - [[ (a.level <>2) or removeParentNode('td') ]][[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_balance'}) ]][[ formatLang(a.balance) ]] [[company.currency_id.symbol ]] - [[ a.level == 2 or removeParentNode('td') ]][[ formatLang(a.balance) ]] [[company.currency_id.symbol ]] + [[ (a.level <>2) or removeParentNode('td') ]][[ (a.type =='view' and a.level >= 3) and setTag('para','para',{'style': 'terp_level_3_balance_bold'}) or setTag('para','para',{'style': 'terp_level_'+str(min(3,a.level))+'_balance'}) ]][[ formatLang(a.balance * a.user_type.sign, currency_obj=company.currency_id) ]] + [[ a.level == 2 or removeParentNode('td') ]][[ formatLang(a.balance * a.user_type.sign, currency_obj=company.currency_id) ]] @@ -290,7 +290,7 @@ [[ final_result()['type'] == 'Net Loss' and final_result()['type'] or removeParentNode('blockTable') ]] - [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and formatLang(final_result()['balance']) ]] [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and company.currency_id.symbol ]] + [[ final_result()['balance'] and final_result()['type'] == 'Net Loss' and formatLang(final_result()['balance'], currency_obj=company.currency_id) ]] @@ -300,7 +300,7 @@ Total: - [[ formatLang(sum_cr()) ]] [[ company.currency_id.symbol ]] + [[ formatLang(sum_cr(), currency_obj=company.currency_id) ]] diff --git a/addons/account/report/account_tax_code.rml b/addons/account/report/account_tax_code.rml index 7489ac72a39..10a7c76a821 100644 --- a/addons/account/report/account_tax_code.rml +++ b/addons/account/report/account_tax_code.rml @@ -129,10 +129,10 @@ [[ line['name'] ]] - [[ formatLang(line['debit']) ]] [[ company.currency_id.symbol]] + [[ formatLang(line['debit'], currency_obj=company.currency_id) ]] - [[ formatLang(line['credit']) ]] [[ company.currency_id.symbol]] + [[ formatLang(line['credit'], currency_obj=company.currency_id) ]] @@ -141,4 +141,4 @@ - \ No newline at end of file + diff --git a/addons/account/report/account_tax_report.rml b/addons/account/report/account_tax_report.rml index de4aa415fef..f489ee1143e 100644 --- a/addons/account/report/account_tax_report.rml +++ b/addons/account/report/account_tax_report.rml @@ -153,7 +153,7 @@ [[ repeatIn(get_lines(data['form']['based_on'], data['form']['company_id']), 'o') ]][[ (o['level']) ]] [[ (len(o['level'])<5 and setTag('para','para',{'fontName':'Helvetica-Bold'})) or removeParentNode('font') ]][[ o['code'] ]] [[ o['name'] ]] [[ len(o['level'])<5 and setTag('para','para',{'fontName':"Helvetica-Bold"}) or removeParentNode('font')]][[ o['type']=='view' and removeParentNode('font') ]][[ formatLang(o['debit']) ]][[ o['type']<>'view' and removeParentNode('font') ]][[ formatLang(o['debit']) ]] [[ len(o['level'])<5 and setTag('para','para',{'fontName':"Helvetica-Bold"}) or removeParentNode('font')]][[ o['type']=='view' and removeParentNode('font') ]][[ formatLang(o['credit']) ]][[ o['type']<>'view' and removeParentNode('font') ]][[ formatLang(o['credit'])]] - [[ len(o['level'])<5 and setTag('para','para',{'fontName':"Helvetica-Bold"}) or removeParentNode('font')]][[ o['type']=='view' and removeParentNode('font') ]][[ formatLang(o['tax_amount']) ]] [[ company.currency_id.symbol ]][[ o['type']<>'view' and removeParentNode('font') ]][[ formatLang(o['tax_amount']) ]] [[ company.currency_id.symbol ]] + [[ len(o['level'])<5 and setTag('para','para',{'fontName':"Helvetica-Bold"}) or removeParentNode('font')]][[ o['type']=='view' and removeParentNode('font') ]][[ formatLang(o['tax_amount'], currency_obj=company.currency_id) ]][[ o['type']<>'view' and removeParentNode('font') ]][[ formatLang(o['tax_amount'], currency_obj=company.currency_id) ]] diff --git a/addons/account/wizard/account_financial_report_view.xml b/addons/account/wizard/account_financial_report_view.xml index 2083fd0ed53..1472da4ba87 100644 --- a/addons/account/wizard/account_financial_report_view.xml +++ b/addons/account/wizard/account_financial_report_view.xml @@ -31,7 +31,7 @@ - Financial Report + Financial Reports accounting.report ir.actions.act_window form diff --git a/addons/account_analytic_plans/report/crossovered_analytic.rml b/addons/account_analytic_plans/report/crossovered_analytic.rml index 6e331ed1b83..f374aa5a2c2 100644 --- a/addons/account_analytic_plans/report/crossovered_analytic.rml +++ b/addons/account_analytic_plans/report/crossovered_analytic.rml @@ -240,7 +240,7 @@ [[ formatLang(a['ref_qty']) ]] - [[ formatLang(a['ref_amt']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(a['ref_amt'], currency_obj=company.currency_id) ]] 100.00% @@ -288,7 +288,7 @@ [[formatLang(a['qty']) ]] - [[ formatLang(a['amt']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(a['amt'], currency_obj=company.currency_id) ]] [[ formatLang(a['perc']) ]]% diff --git a/addons/account_budget/report/analytic_account_budget_report.rml b/addons/account_budget/report/analytic_account_budget_report.rml index a8b957f52a5..ba89c7ed1ea 100644 --- a/addons/account_budget/report/analytic_account_budget_report.rml +++ b/addons/account_budget/report/analytic_account_budget_report.rml @@ -185,13 +185,13 @@ [['.....' *(a['status']-1) ]] [[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo']) ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln']) ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac']) ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], currency_obj=company.currency_id) ]] [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc']) ]]% @@ -205,13 +205,13 @@ [[ repeatIn(funct_total(data['form']),'b') ]] Total: - [[ formatLang(b['tot_theo']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_theo'], currency_obj=company.currency_id) ]] - [[ formatLang(b['tot_pln']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_pln'], currency_obj=company.currency_id) ]] - [[ formatLang(b['tot_prac']) ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_prac'], currency_obj=company.currency_id) ]] [[ formatLang(b['tot_perc']) ]]% @@ -223,4 +223,4 @@ - \ No newline at end of file + diff --git a/addons/account_budget/report/budget_report.rml b/addons/account_budget/report/budget_report.rml index 0533042822a..4d82e8d8c1d 100644 --- a/addons/account_budget/report/budget_report.rml +++ b/addons/account_budget/report/budget_report.rml @@ -148,13 +148,13 @@ [['.....' *(a['status']-1) ]][[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc'], digits=2) ]]% @@ -168,13 +168,13 @@ [[ repeatIn(funct_total(data['form']),'b') ]]Total: - [[ formatLang(b['tot_theo'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_theo'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ formatLang(b['tot_pln'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_pln'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] - [[ formatLang(b['tot_prac'], digits=get_digits(dp='Account')) ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_prac'], digits=get_digits(dp='Account'), currency_obj=company.currency_id) ]] [[ formatLang(b['tot_perc'], digits=2) ]]% diff --git a/addons/account_budget/report/crossovered_budget_report.rml b/addons/account_budget/report/crossovered_budget_report.rml index 63db53ab5ce..b4e8e963b7d 100644 --- a/addons/account_budget/report/crossovered_budget_report.rml +++ b/addons/account_budget/report/crossovered_budget_report.rml @@ -163,13 +163,13 @@ [['.....' *(a['status']-1) ]][[ (a['status']==1 and (setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ a['name'] ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], dp='Account') ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['theo'], dp='Account', currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], dp='Account') ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['pln'], dp='Account', currency_obj=company.currency_id) ]] - [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], dp='Account') ]] [[ company.currency_id.symbol ]] + [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['prac'], dp='Account', currency_obj=company.currency_id) ]] [[ (a['status']==1 and ( setTag('para','para',{'fontName':'Helvetica-bold'}))) or removeParentNode('font') ]] [[ formatLang(a['perc'],digits=2) ]]% @@ -183,13 +183,13 @@ [[ repeatIn(funct_total(data['form']),'b') ]] Total : - [[ formatLang(b['tot_theo'], dp='Account') ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_theo'], dp='Account', currency_obj=company.currency_id) ]] - [[ formatLang(b['tot_pln'], dp='Account') ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_pln'], dp='Account', currency_obj=company.currency_id) ]] - [[ formatLang(b['tot_prac'], dp='Account') ]] [[ company.currency_id.symbol ]] + [[ formatLang(b['tot_prac'], dp='Account', currency_obj=company.currency_id) ]] [[ formatLang(b['tot_perc'],digits=2) ]]% diff --git a/addons/analytic/i18n/ar.po b/addons/analytic/i18n/ar.po index ee7a5f9319e..036a3ef8c46 100644 --- a/addons/analytic/i18n/ar.po +++ b/addons/analytic/i18n/ar.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-01-11 11:14+0000\n" -"PO-Revision-Date: 2011-09-05 23:03+0000\n" -"Last-Translator: Majed Majbour \n" +"PO-Revision-Date: 2011-09-22 02:41+0000\n" +"Last-Translator: kifcaliph \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-09-07 04:35+0000\n" -"X-Generator: Launchpad (build 13861)\n" +"X-Launchpad-Export-Date: 2011-09-22 04:48+0000\n" +"X-Generator: Launchpad (build 13996)\n" #. module: analytic #: field:account.analytic.account,child_ids:0 @@ -25,7 +25,7 @@ msgstr "حساب فرعي" #. module: analytic #: field:account.analytic.account,name:0 msgid "Account Name" -msgstr "" +msgstr "اسم الحساب" #. module: analytic #: help:account.analytic.line,unit_amount:0 @@ -44,12 +44,12 @@ msgstr "" #. module: analytic #: field:account.analytic.account,state:0 msgid "State" -msgstr "" +msgstr "المحافظة / الولاية" #. module: analytic #: field:account.analytic.account,user_id:0 msgid "Account Manager" -msgstr "" +msgstr "مدير المحاسبة" #. module: analytic #: selection:account.analytic.account,state:0 @@ -114,7 +114,7 @@ msgstr "وصف" #. module: analytic #: selection:account.analytic.account,type:0 msgid "Normal" -msgstr "" +msgstr "عادي" #. module: analytic #: field:account.analytic.account,company_id:0 @@ -185,7 +185,7 @@ msgstr "جهة الإتصال" msgid "" "Error! The currency has to be the same as the currency of the selected " "company" -msgstr "" +msgstr "خطأ! العملة لابد و أن تكون مثل العملة للشركة المختارة" #. module: analytic #: selection:account.analytic.account,state:0 @@ -208,11 +208,13 @@ msgid "" "If you select the View Type, it means you won't allow to create journal " "entries using that account." msgstr "" +"اذا اخترت نوع العرض، فذلك يعني انك لن تسمح بإنشاء قيود اليومية بإستخدام ذلك " +"الحساب." #. module: analytic #: field:account.analytic.account,date:0 msgid "Date End" -msgstr "" +msgstr "نهاية التاريخ" #. module: analytic #: field:account.analytic.account,code:0 diff --git a/addons/base_vat/__init__.py b/addons/base_vat/__init__.py index e1999d38b87..43dbd0c1418 100644 --- a/addons/base_vat/__init__.py +++ b/addons/base_vat/__init__.py @@ -21,5 +21,4 @@ import base_vat -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/base_vat/__openerp__.py b/addons/base_vat/__openerp__.py index 92af5664336..29f402aa286 100644 --- a/addons/base_vat/__openerp__.py +++ b/addons/base_vat/__openerp__.py @@ -18,26 +18,34 @@ # along with this program. If not, see . # ############################################################################## + { - 'name': 'Base VAT', + 'name': 'VAT Number Validation', 'version': '1.0', - 'category': 'Tools', - 'category': 'Generic Modules/Base', + 'category': 'Finance', 'complexity': "easy", 'description': """ -Enable VAT Number for a partner and check its validity. -======================================================= +VAT validation for Partners' VAT numbers +======================================== + +After installing this module, values entered in the VAT field of Partners will +be validated for all supported countries. The country is inferred from the +2-letter country code that prefixes the VAT number, e.g. ``BE0477472701`` +will be validated using the Belgian rules. + +Supported countries currently include EU countries, and a few non-EU countries +such as Chile, Colombia, Mexico, Norway or Russia. For unsupported countries, +only the country code will be validated. -This module follows the methods stated at http://sima-pc.com/nif.php for -checking the validity of VAT Number assigned to partners in European countries. """, 'author': 'OpenERP SA', 'depends': ['account'], 'website': 'http://www.openerp.com', - 'update_xml': ['base_vat_view.xml'], + 'data': ['base_vat_view.xml'], 'installable': True, 'active': False, 'certificate': '0084849360989', 'images': ['images/1_partner_vat.jpeg'], } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/base_vat/base_vat.py b/addons/base_vat/base_vat.py index 58e5670b589..ba858d10e64 100644 --- a/addons/base_vat/base_vat.py +++ b/addons/base_vat/base_vat.py @@ -2,8 +2,7 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (). All Rights Reserved -# Copyright (C) 2008-2009 B2CK, Cedric Krier, Bertrand Chenal (the methods "check_vat_[a-z]{2}" +# Copyright (C) 2004-2011 OpenERP SA () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,13 +18,22 @@ # along with this program. If not, see . # ############################################################################## + +import logging import string +import datetime +import re + +try: + import vatnumber +except ImportError: + logging.getLogger('base_vat').warning("VAT validation partially unavailable because the `vatnumber` Python library cannot be found. " + "Install it to support more countries, for example with `easy_install vatnumber`.") + vatnumber = None from osv import osv, fields -from tools.translate import _ from tools.misc import ustr -import re -import datetime +from tools.translate import _ _ref_vat = { 'be': 'BE0477472701', 'at': 'ATU12345675', @@ -42,13 +50,9 @@ _ref_vat = { 'pt': 'PT123456789', 'ro': 'RO1234567897', 'se': 'SE123456789701', 'si': 'SI12345679', 'sk': 'SK0012345675', 'el': 'EL12345670', - 'mx': 'MXABC123456T1B', 'no': 'NO123456785' - - } - -def mult_add(i, j): - """Sum each digits of the multiplication of i and j.""" - return reduce(lambda x, y: x + int(y), str(i*j), 0) + 'mx': 'MXABC123456T1B', 'no': 'NO123456785', + 'hr': 'HR01234567896', # Croatia, contributed by Milan Tribuson +} class res_partner(osv.osv): _inherit = 'res.partner' @@ -67,16 +71,17 @@ class res_partner(osv.osv): if not partner.vat: continue vat_country, vat_number = self._split_vat(partner.vat) - if not hasattr(self, 'check_vat_' + vat_country): - #We didn't find the validation method for the country code. If that country code can be found in openerp, this means that it is a valid country code - #and we simply didn't have implemented that function. In that case we continue. + check_func_name = 'check_vat_' + vat_country + check_func = getattr(self, check_func_name, None) or \ + getattr(vatnumber, check_func_name, None) + if not check_func: + # No VAT validation available, default to check that the country code + # exists. if country_obj.search(cr, uid, [('code', 'ilike', vat_country)], context=context): continue - #Otherwise, it means that the country code isn't valid and we return False. - return False - check = getattr(self, 'check_vat_' + vat_country) - if not check(vat_number): + # Country code not found, considered invalid return False + return check_func(vat_number) return True def vat_change(self, cr, uid, ids, value, context=None): @@ -93,997 +98,24 @@ class res_partner(osv.osv): # has more than 3 characters return cn[0] in string.ascii_lowercase and cn[1] in string.ascii_lowercase vat_country, vat_number = self._split_vat(self.browse(cr, uid, ids)[0].vat) + vat_no = "'CC##' (CC=Country Code, ##=VAT Number)" if default_vat_check(vat_country, vat_number): - vat_no = vat_country in _ref_vat and _ref_vat[vat_country] or 'Country Code + Vat Number' - return _('The Vat does not seems to be correct. You should have entered something like this %s'), (vat_no) - return _('The VAT is invalid, It should begin with the country code'), () + vat_no = _ref_vat[vat_country] if vat_country in _ref_vat else vat_no + return '\n' + _('This VAT number does not seem to be valid.\nNote: the expected format is %s') % vat_no _constraints = [(check_vat, _construct_constraint_msg, ["vat"])] - # code from the following methods come from Tryton (B2CK) - # http://www.tryton.org/hgwebdir.cgi/modules/relationship/file/544d1de586d9/party.py - def check_vat_at(self, vat): - ''' - Check Austria VAT number. - ''' - if len(vat) != 9: - return False - if vat[0] != 'U': - return False - num = vat[1:] - try: - int(num) - except: - return False - sum = int(num[0]) + mult_add(2, int(num[1])) + \ - int(num[2]) + mult_add(2, int(num[3])) + \ - int(num[4]) + mult_add(2, int(num[5])) + \ - int(num[6]) - check = 10 - ((sum + 4) % 10) - if check == 10: - check = 0 - if int(vat[-1:]) != check: - return False - return True - - def check_vat_be(self, vat): - ''' - Check Belgium VAT number. - ''' - if len(vat) != 10: - return False - try: - int(vat) - except: - return False - if int(vat[-2:]) != \ - 97 - (int(vat[:8]) % 97): - return False - return True - - def check_vat_bg(self, vat): - ''' - Check Bulgaria VAT number. - ''' - if len(vat) not in [9,10]: - return False - try: - int(vat) - except: - return False - if int(vat[0]) in (2, 3) and \ - int(vat[1:2]) != 22: - return False - sum = 4 * int(vat[0]) + 3 * int(vat[1]) + 2 * int(vat[2]) + \ - 7 * int(vat[3]) + 6 * int(vat[4]) + 5 * int(vat[5]) + \ - 4 * int(vat[6]) + 3 * int(vat[7]) + 2 * int(vat[8]) - check = 11 - (sum % 11) - if check == 11: - check = 0 - return True - - def check_vat_cy(self, vat): - ''' - Check Cyprus VAT number. - ''' - if len(vat) != 9: - return False - try: - int(vat[:8]) - except: - return False - n0 = int(vat[0]) - n1 = int(vat[1]) - n2 = int(vat[2]) - n3 = int(vat[3]) - n4 = int(vat[4]) - n5 = int(vat[5]) - n6 = int(vat[6]) - n7 = int(vat[7]) - - def conv(x): - if x == 0: - return 1 - elif x == 1: - return 0 - elif x == 2: - return 5 - elif x == 3: - return 7 - elif x == 4: - return 9 - elif x == 5: - return 13 - elif x == 6: - return 15 - elif x == 7: - return 17 - elif x == 8: - return 19 - elif x == 9: - return 21 - return x - n0 = conv(n0) - n2 = conv(n2) - n4 = conv(n4) - n6 = conv(n6) - - sum = n0 + n1 + n2 + n3 + n4 + n5 + n6 + n7 - check = chr(sum % 26 + 65) - if check != vat[8]: - return False - return True - - def check_vat_cz(self, vat): - ''' - Check Czech Republic VAT number. - ''' - if len(vat) not in (8, 9, 10): - return False - try: - int(vat) - except: - return False - - if len(vat) == 8: - if int(vat[0]) not in (0, 1, 2, 3, 4, 5, 6, 7, 8): - return False - sum = 8 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \ - 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \ - 2 * int(vat[6]) - check = 11 - (sum % 11) - if check == 10: - check = 0 - if check == 11: - check = 1 - if check != int(vat[7]): - return False - elif len(vat) == 9 and int(vat[0]) == 6: - sum = 8 * int(vat[1]) + 7 * int(vat[2]) + 6 * int(vat[3]) + \ - 5 * int(vat[4]) + 4 * int(vat[5]) + 3 * int(vat[6]) + \ - 2 * int(vat[7]) - check = 9 - ((11 - (sum % 11)) % 10) - if check != int(vat[8]): - return False - elif len(vat) == 9: - if int(vat[0:2]) > 53 and int(vat[0:2]) < 80: - return False - if int(vat[2:4]) < 1: - return False - if int(vat[2:4]) > 12 and int(vat[2:4]) < 51: - return False - if int(vat[2:4]) > 62: - return False - if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 > 0: - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 28: - return False - if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 == 0: - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 29: - return False - if int(vat[2:4]) in (4, 6, 9, 11, 54, 56, 59, 61): - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 30: - return False - if int(vat[2:4]) in (1, 3, 5, 7, 8, 10, 12, 51, - 53, 55, 57, 58, 60, 62): - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 31: - return False - elif len(vat) == 10: - if int(vat[0:2]) < 54: - return False - if int(vat[2:4]) < 1: - return False - if int(vat[2:4]) > 12 and int(vat[2:4]) < 51: - return False - if int(vat[2:4]) > 62: - return False - if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 > 0: - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 28: - return False - if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 == 0: - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 29: - return False - if int(vat[2:4]) in (4, 6, 9, 11, 54, 56, 59, 61): - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 30: - return False - if int(vat[2:4]) in (1, 3, 5, 7, 8, 10, 12, 51, - 53, 55, 57, 58, 60, 62): - if int(vat[4:6]) < 1: - return False - if int(vat[4:6]) > 31: - return False - if (int(vat[0:2]) + int(vat[2:4]) + int(vat[4:6]) + int(vat[6:8]) + - int(vat[8:10])) % 11 != 0: - return False - if int(vat[0:10]) % 11 != 0: - return False - return True - - def check_vat_de(self, vat): - ''' - Check Germany VAT number. - ''' - if len(vat) != 9: - return False - try: - int(vat) - except: - return False - if int(vat[0:7]) <= 0: - return False - sum = 0 - for i in range(8): - sum = (2 * ((int(vat[i]) + sum + 9) % 10 + 1)) % 11 - check = 11 - sum - if check == 10: - check = 0 - if int(vat[8]) != check: - return False - return True - - def check_vat_dk(self, vat): - ''' - Check Denmark VAT number. - ''' - if len(vat) != 8: - return False - try: - int(vat) - except: - return False - if int(vat[0]) <= 0: - return False - sum = 2 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \ - 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \ - 2 * int(vat[6]) + int(vat[7]) - if sum % 11 != 0: - return False - return True - - def check_vat_ee(self, vat): - ''' - Check Estonia VAT number. - ''' - if len(vat) != 9: - return False - try: - int(vat) - except: - return False - sum = 3 * int(vat[0]) + 7 * int(vat[1]) + 1 * int(vat[2]) + \ - 3 * int(vat[3]) + 7 * int(vat[4]) + 1 * int(vat[5]) + \ - 3 * int(vat[6]) + 7 * int(vat[7]) - check = 10 - (sum % 10) - if check == 10: - check = 0 - if check != int(vat[8]): - return False - return True - - def check_vat_es(self, vat): - ''' - Check Spain VAT number. - ''' - if len(vat) != 9: - return False - - conv = { - 1: 'T', - 2: 'R', - 3: 'W', - 4: 'A', - 5: 'G', - 6: 'M', - 7: 'Y', - 8: 'F', - 9: 'P', - 10: 'D', - 11: 'X', - 12: 'B', - 13: 'N', - 14: 'J', - 15: 'Z', - 16: 'S', - 17: 'Q', - 18: 'V', - 19: 'H', - 20: 'L', - 21: 'C', - 22: 'K', - 23: 'E', - } - #Legal persons with profit aim - if vat[0] in ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'U', 'V'): - try: - int(vat[1:8]) - except: - return False - sum = mult_add(2, int(vat[1])) + int(vat[2]) + \ - mult_add(2, int(vat[3])) + int(vat[4]) + \ - mult_add(2, int(vat[5])) + int(vat[6]) + \ - mult_add(2, int(vat[7])) - check = 10 - (sum % 10) - if check == 10: - check = 0 - return True - #Legal persons with non-profit aim - elif vat[0] in ('N', 'P', 'Q', 'R', 'S', 'W'): - try: - int(vat[1:8]) - except: - return False - sum = mult_add(2, int(vat[1])) + int(vat[2]) + \ - mult_add(2, int(vat[3])) + int(vat[4]) + \ - mult_add(2, int(vat[5])) + int(vat[6]) + \ - mult_add(2, int(vat[7])) - check = 10 - (sum % 10) - check = chr(check + 64) - if check != vat[8]: - return False - return True - #Foreign natural persons, under age 14 or non-residents - elif vat[0] in ('K', 'L', 'M', 'X', 'Y', 'Z'): - if vat[0] == 'Y': - check_value = '1' + vat[1:8] - elif vat[0] == 'Z': - check_value = '2' + vat[1:8] - else: - check_value = vat[1:8] - - try: - int(check_value) - except: - return False - check = 1 + (int(check_value) % 23) - - check = conv[check] - if check != vat[8]: - return False - return True - #Spanish natural persons - else: - try: - int(vat[:8]) - except: - return False - check = 1 + (int(vat[:8]) % 23) - - check = conv[check] - if check != vat[8]: - return False - return True - - def check_vat_fi(self, vat): - ''' - Check Finland VAT number. - ''' - if len(vat) != 8: - return False - try: - int(vat) - except: - return False - sum = 7 * int(vat[0]) + 9 * int(vat[1]) + 10 * int(vat[2]) + \ - 5 * int(vat[3]) + 8 * int(vat[4]) + 4 * int(vat[5]) + \ - 2 * int(vat[6]) - check = 11 - (sum % 11) - if check == 11: - check = 0 - if check == 10: - return False - if check != int(vat[7]): - return False - return True - - def check_vat_fr(self, vat): - ''' - Check France VAT number. - ''' - if len(vat) != 11: - return False - - try: - int(vat[2:11]) - except: - return False - - system = None - try: - int(vat[0:2]) - system = 'old' - except: - system = 'new' - - if system == 'old': - check = ((int(vat[2:11]) * 100) + 12) % 97 - if check != int(vat[0:2]): - return False - return True - else: - conv = ['0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', - 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', - 'U', 'V', 'W', 'X', 'Y', 'Z'] - if vat[0] not in conv \ - or vat[1] not in conv: - return False - c1 = conv.index(vat[0]) - c2 = conv.index(vat[1]) - - if c1 < 10: - sum = c1 * 24 + c2 - 10 - else: - sum = c1 * 34 + c2 - 100 - - x = sum % 11 - sum = (int(sum) / 11) + 1 - y = (int(vat[2:11]) + sum) % 11 - if x != y: - return False - return True - - def check_vat_gb(self, vat): - ''' - Check United Kingdom VAT number. - ''' - - if len(vat) == 5: - try: - int(vat[2:5]) - except: - return False - - if vat[0:2] == 'GD': - if int(vat[2:5]) >= 500: - return False - return True - if vat[0:2] == 'HA': - if int(vat[2:5]) < 500: - return False - return True - return False - elif len(vat) in (9, 10): - try: - int(vat) - except: - return False - - if int(vat[0:7]) < 1: - return False - if int(vat[0:7]) > 19999 and int(vat[0:7]) < 1000000: - return False - if int(vat[7:9]) > 97: - return False - if len(vat) == 10 and int(vat[9]) != 3: - return False - - sum = 8 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \ - 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \ - 2 * int(vat[6]) + 10 * int(vat[7]) + int(vat[8]) - if int(vat[0:3]) > 100: - if sum % 97 not in (0, 55, 42): - return False - else: - if sum % 97 != 0: - return False - return True - elif len(vat) in (12, 13): - try: - int(vat) - except: - return False - - if int(vat[0:3]) not in (0, 1): - return False - - if int(vat[3:10]) < 1: - return False - if int(vat[3:10]) > 19999 and int(vat[3:10]) < 1000000: - return False - if int(vat[10:12]) > 97: - return False - if len(vat) == 13 and int(vat[12]) != 3: - return False - - sum = 8 * int(vat[3]) + 7 * int(vat[4]) + 6 * int(vat[5]) + \ - 5 * int(vat[6]) + 4 * int(vat[7]) + 3 * int(vat[8]) + \ - 2 * int(vat[9]) + 10 * int(vat[10]) + int(vat[11]) - if sum % 97 != 0: - return False - return True - return False - - def check_vat_gr(self, vat): - ''' - Check Greece VAT number. - ''' - try: - int(vat) - except: - return False - if len(vat) == 8: - sum = 128 * int(vat[0]) + 64 * int(vat[1]) + 32 * int(vat[2]) + \ - 16 * int(vat[3]) + 8 * int(vat[4]) + 4 * int(vat[5]) + \ - 2 * int(vat[6]) - check = sum % 11 - if check == 10: - check = 0 - if check != int(vat[7]): - return False - return True - elif len(vat) == 9: - sum = 256 * int(vat[0]) + 128 * int(vat[1]) + 64 * int(vat[2]) + \ - 32 * int(vat[3]) + 16 * int(vat[4]) + 8 * int(vat[5]) + \ - 4 * int(vat[6]) + 2 * int(vat[7]) - check = sum % 11 - if check == 10: - check = 0 - if check != int(vat[8]): - return False - return True - return False - - def check_vat_el(self, vat): - return self.check_vat_gr(vat) - - def check_vat_hu(self, vat): - ''' - Check Hungary VAT number. - ''' - if len(vat) != 8: - return False - try: - int(vat) - except: - return False - if int(vat[0]) <= 0: - return False - sum = 9 * int(vat[0]) + 7 * int(vat[1]) + 3 * int(vat[2]) + \ - 1 * int(vat[3]) + 9 * int(vat[4]) + 7 * int(vat[5]) + \ - 3 * int(vat[6]) - check = 10 - (sum % 10) - if check == 10: - check = 0 - if check != int(vat[7]): - return False - return True - - def check_vat_ie(self, vat): - ''' - Check Ireland VAT number. - ''' - if len(vat) != 8: - return False - if (ord(vat[1]) >= 65 and ord(vat[1]) <= 90) \ - or vat[1] in ('+', '*'): - try: - int(vat[0]) - int(vat[2:7]) - except: - return False - - if int(vat[0]) <= 6: - return False - - sum = 7 * int(vat[2]) + 6 * int(vat[3]) + 5 * int(vat[4]) + \ - 4 * int(vat[5]) + 3 * int(vat[6]) + 2 * int(vat[0]) - check = sum % 23 - if check == 0: - check = 'W' - else: - check = chr(check + 64) - if check != vat[7]: - return False - return True - else: - try: - int(vat[0:7]) - except: - return False - - sum = 8 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \ - 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \ - 2 * int(vat[6]) - check = sum % 23 - if check == 0: - check = 'W' - else: - check = chr(check + 64) - if check != vat[7]: - return False - return True - - def check_vat_it(self, vat): - ''' - Check Italy VAT number. - ''' - if len(vat) != 11: - return False - try: - int(vat) - except: - return False - if int(vat[0:7]) <= 0: - return False - if int(vat[7:10]) <= 0: - return False - if int(vat[7:10]) > 100 and int(vat[7:10]) < 120: - return False - - sum = int(vat[0]) + mult_add(2, int(vat[1])) + int(vat[2]) + \ - mult_add(2, int(vat[3])) + int(vat[4]) + \ - mult_add(2, int(vat[5])) + int(vat[6]) + \ - mult_add(2, int(vat[7])) + int(vat[8]) + \ - mult_add(2, int(vat[9])) - check = 10 - (sum % 10) - if check == 10: - check = 0 - if check != int(vat[10]): - return False - return True - - def check_vat_lt(self, vat): - ''' - Check Lithuania VAT number. - ''' - try: - int(vat) - except: - return False - - if len(vat) == 9: - if int(vat[7]) != 1: - return False - sum = 1 * int(vat[0]) + 2 * int(vat[1]) + 3 * int(vat[2]) + \ - 4 * int(vat[3]) + 5 * int(vat[4]) + 6 * int(vat[5]) + \ - 7 * int(vat[6]) + 8 * int(vat[7]) - if sum % 11 == 10: - sum = 3 * int(vat[0]) + 4 * int(vat[1]) + 5 * int(vat[2]) + \ - 6 * int(vat[3]) + 7 * int(vat[4]) + 8 * int(vat[5]) + \ - 9 * int(vat[6]) + 1 * int(vat[7]) - check = sum % 11 - if check == 10: - check = 0 - if check != int(vat[8]): - return False - return True - elif len(vat) == 12: - if int(vat[10]) != 1: - return False - sum = 1 * int(vat[0]) + 2 * int(vat[1]) + 3 * int(vat[2]) + \ - 4 * int(vat[3]) + 5 * int(vat[4]) + 6 * int(vat[5]) + \ - 7 * int(vat[6]) + 8 * int(vat[7]) + 9 * int(vat[8]) + \ - 1 * int(vat[9]) + 2 * int(vat[10]) - if sum % 11 == 10: - sum = 3 * int(vat[0]) + 4 * int(vat[1]) + 5 * int(vat[2]) + \ - 6 * int(vat[3]) + 7 * int(vat[4]) + 8 * int(vat[5]) + \ - 9 * int(vat[6]) + 1 * int(vat[7]) + 2 * int(vat[8]) + \ - 3 * int(vat[9]) + 4 * int(vat[10]) - check = sum % 11 - if check == 10: - check = 0 - if check != int(vat[11]): - return False - return True - return False - - def check_vat_lu(self, vat): - ''' - Check Luxembourg VAT number. - ''' - if len(vat) != 8: - return False - try: - int(vat) - except: - return False - if int(vat[0:6]) <= 0: - return False - check = int(vat[0:6]) % 89 - if check != int(vat[6:8]): - return False - return True - - def check_vat_lv(self, vat): - ''' - Check Latvia VAT number. - ''' - if len(vat) != 11: - return False - try: - int(vat) - except: - return False - if int(vat[0]) >= 4: - sum = 9 * int(vat[0]) + 1 * int(vat[1]) + 4 * int(vat[2]) + \ - 8 * int(vat[3]) + 3 * int(vat[4]) + 10 * int(vat[5]) + \ - 2 * int(vat[6]) + 5 * int(vat[7]) + 7 * int(vat[8]) + \ - 6 * int(vat[9]) - if sum % 11 == 4 and int(vat[0]) == 9: - sum = sum - 45 - if sum % 11 == 4: - check = 4 - (sum % 11) - elif sum % 11 > 4: - check = 14 - (sum % 11) - elif sum % 11 < 4: - check = 3 - (sum % 11) - if check != int(vat[10]): - return False - return True - else: - if int(vat[2:4]) == 2 and int(vat[4:6]) % 4 > 0: - if int(vat[0:2]) < 1 or int(vat[0:2]) > 28: - return False - if int(vat[2:4]) == 2 and int(vat[4:6]) % 4 == 0: - if int(vat[0:2]) < 1 or int(vat[0:2]) > 29: - return False - if int(vat[2:4]) in (4, 6, 9, 11): - if int(vat[0:2]) < 1 or int(vat[0:2]) > 30: - return False - if int(vat[2:4]) in (1, 3, 5, 7, 8, 10, 12): - if int(vat[0:2]) < 1 or int(vat[0:2]) > 31: - return False - if int(vat[2:4]) < 1 or int(vat[2:4]) > 12: - return False - return True - - def check_vat_mt(self, vat): - ''' - Check Malta VAT number. - ''' - if len(vat) != 8: - return False - try: - int(vat) - except: - return False - - if int(vat[0:6]) < 100000: - return False - - sum = 3 * int(vat[0]) + 4 * int(vat[1]) + 6 * int(vat[2]) + \ - 7 * int(vat[3]) + 8 * int(vat[4]) + 9 * int(vat[5]) - check = 37 - (sum % 37) - if check != int(vat[6:8]): - return False - return True - - def check_vat_nl(self, vat): - ''' - Check Netherlands VAT number. - ''' - if len(vat) != 12: - return False - try: - int(vat[0:9]) - int(vat[10:12]) - except: - return False - if int(vat[0:8]) <= 0: - return False - if vat[9] != 'B': - return False - - sum = 9 * int(vat[0]) + 8 * int(vat[1]) + 7 * int(vat[2]) + \ - 6 * int(vat[3]) + 5 * int(vat[4]) + 4 * int(vat[5]) + \ - 3 * int(vat[6]) + 2 * int(vat[7]) - - check = sum % 11 - if check == 10: - return False - if check != int(vat[8]): - return False - return True - - def check_vat_pl(self, vat): - ''' - Check Poland VAT number. - ''' - if len(vat) != 10: - return False - try: - int(vat) - except: - return False - - sum = 6 * int(vat[0]) + 5 * int(vat[1]) + 7 * int(vat[2]) + \ - 2 * int(vat[3]) + 3 * int(vat[4]) + 4 * int(vat[5]) + \ - 5 * int(vat[6]) + 6 * int(vat[7]) + 7 * int(vat[8]) - check = sum % 11 - if check == 10: - return False - if check != int(vat[9]): - return False - return True - - def check_vat_pt(self, vat): - ''' - Check Portugal VAT number. - ''' - if len(vat) != 9: - return False - try: - int(vat) - except: - return False - - if int(vat[0]) <= 0: - return False - - sum = 9 * int(vat[0]) + 8 * int(vat[1]) + 7 * int(vat[2]) + \ - 6 * int(vat[3]) + 5 * int(vat[4]) + 4 * int(vat[5]) + \ - 3 * int(vat[6]) + 2 * int(vat[7]) - check = 11 - (sum % 11) - if check == 10 or check == 11: - check = 0 - return True - - def check_vat_ro(self, vat): - ''' - Check Romania VAT number. - ''' - try: - int(vat) - except: - return False - - if len(vat) >= 2 and len(vat) <= 10: - vat = (10 - len(vat)) * '0' + vat - sum = 7 * int(vat[0]) + 5 * int(vat[1]) + 3 * int(vat[2]) + \ - 2 * int(vat[3]) + 1 * int(vat[4]) + 7 * int(vat[5]) + \ - 5 * int(vat[6]) + 3 * int(vat[7]) + 2 * int(vat[8]) - check = (sum * 10) % 11 - if check == 10: - check = 0 - if check != int(vat[9]): - return False - return True - elif len(vat) == 13: - if int(vat[0]) not in (1, 2, 3, 4, 6): - return False - if int(vat[3:5]) < 1 or int(vat[3:5]) > 12: - return False - if int(vat[3:5]) == 2 and int(vat[1:3]) % 4 > 0: - if int(vat[5:7]) < 1 or int(vat[5:7]) > 28: - return False - if int(vat[3:5]) == 2 and int(vat[1:3]) % 4 == 0: - if int(vat[5:7]) < 1 or int(vat[5:7]) > 29: - return False - if int(vat[3:5]) in (4, 6, 9, 11): - if int(vat[5:7]) < 1 or int(vat[5:7]) > 30: - return False - if int(vat[3:5]) in (1, 3, 5, 7, 8, 10, 12): - if int(vat[5:7]) < 1 or int(vat[5:7]) > 31: - return False - - sum = 2 * int(vat[0]) + 7 * int(vat[1]) + 9 * int(vat[2]) + \ - 1 * int(vat[3]) + 4 * int(vat[4]) + 6 * int(vat[5]) + \ - 3 * int(vat[6]) + 5 * int(vat[7]) + 8 * int(vat[8]) + \ - 2 * int(vat[9]) + 7 * int(vat[10]) + 9 * int(vat[11]) - check = sum % 11 - if check == 10: - check = 1 - if check != int(vat[12]): - return False - return True - return False - - def check_vat_se(self, vat): - ''' - Check Sweden VAT number. - ''' - if len(vat) != 12: - return False - try: - int(vat) - except: - return False - - if int(vat[9:11]) < 0: - return False - - sum = mult_add(2, int(vat[0])) + int(vat[1]) + \ - mult_add(2, int(vat[2])) + int(vat[3]) + \ - mult_add(2, int(vat[4])) + int(vat[5]) + \ - mult_add(2, int(vat[6])) + int(vat[7]) + \ - mult_add(2, int(vat[8])) - check = 10 - (sum % 10) - if check == 10: - check = 0 - if check != int(vat[9]): - return False - return True - - def check_vat_si(self, vat): - ''' - Check Slovenia VAT number. - ''' - if len(vat) != 8: - return False - try: - int(vat) - except: - return False - if int(vat[0:7]) <= 999999: - return False - - sum = 8 * int(vat[0]) + 7 * int(vat[1]) + 6 * int(vat[2]) + \ - 5 * int(vat[3]) + 4 * int(vat[4]) + 3 * int(vat[5]) + \ - 2 * int(vat[6]) - check = 11 - (sum % 11) - if check == 10: - check = 0 - if check == 11: - check = 1 - if check != int(vat[7]): - return False - return True - - def check_vat_sk(self, vat): - ''' - Check Slovakia VAT number. - ''' - try: - int(vat) - except: - return False - if len(vat) not in(9, 10): - return False - - if int(vat[0:2]) in (0, 10, 20) and len(vat) == 10: - return True - - if len(vat) == 10: - if int(vat[0:2]) < 54 or int(vat[0:2]) > 99: - return False - - if len(vat) == 9: - if int(vat[0:2]) > 53 : - return False - - if int(vat[2:4]) < 1: - return False - if int(vat[2:4]) > 12 and int(vat[2:4]) < 51: - return False - if int(vat[2:4]) > 62: - return False - if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 > 0: - if int(vat[4:6]) < 1 or int(vat[4:6]) > 28: - return False - if int(vat[2:4]) in (2, 52) and int(vat[0:2]) % 4 == 0: - if int(vat[4:6]) < 1 or int(vat[4:6]) > 29: - return False - if int(vat[2:4]) in (4, 6, 9, 11, 54, 56, 59, 61): - if int(vat[4:6]) < 1 or int(vat[4:6]) > 30: - return False - if int(vat[2:4]) in (1, 3, 5, 7, 8, 10, 12, - 51, 53, 55, 57, 58, 60, 62): - if int(vat[4:6]) < 1 or int(vat[4:6]) > 31: - return False - return True + # Mexican VAT verification, contributed by + # and Panos Christeas __check_vat_mx_re = re.compile(r"(?P[A-Za-z\xd1\xf1&]{3,4})" \ r"[ \-_]?" \ r"(?P[0-9]{2})(?P[01][0-9])(?P[0-3][0-9])" \ r"[ \-_]?" \ r"(?P[A-Za-z0-9&\xd1\xf1]{3})$") - def check_vat_mx(self, vat): ''' Mexican VAT verification - + Verificar RFC México ''' # we convert to 8-bit encoding, to help the regex parse only bytes @@ -1101,12 +133,12 @@ class res_partner(osv.osv): datetime.date(ano, int(m.group('mes')), int(m.group('dia'))) except ValueError: return False - + #Valid format and valid date return True - # check_vat_no contributed by Rolv Råen (adEgo) + # Norway VAT validation, contributed by Rolv Råen (adEgo) def check_vat_no(self, vat): ''' Check Norway VAT number.See http://www.brreg.no/english/coordination/number.html diff --git a/addons/base_vat/base_vat_view.xml b/addons/base_vat/base_vat_view.xml index 6e00fc61ae0..69a1870ea72 100644 --- a/addons/base_vat/base_vat_view.xml +++ b/addons/base_vat/base_vat_view.xml @@ -1,21 +1,21 @@ - + - - res.partner.vat.inherit - res.partner - - - - - - - - - - + + res.partner.vat.inherit + res.partner + + + + + + + + + + - + diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml index e1366266c0a..390932c9e0a 100644 --- a/addons/crm/crm_lead_demo.xml +++ b/addons/crm/crm_lead_demo.xml @@ -44,7 +44,6 @@ - @@ -266,12 +265,17 @@ - + + BalmerInc S.A. + Rue des Palais 51, bte 33 + Bruxelles + + @@ -282,15 +286,65 @@ - + + Lucie Vonck + Chaussée de Namur + Grand-Rosière + + + + + + opportunity + + + + + + + + + + + + + + + Université de Liège + Place du 20Août + Liège + + + + + + opportunity + + + + + + + + + + + + + + Bank Wealthy and sons + 1 rue Rockfeller + Paris + + - + opportunity @@ -308,7 +362,7 @@ - + opportunity @@ -324,6 +378,11 @@ + Dubois sprl + Avenue de la Liberté 56 + Brussels + + @@ -370,6 +429,82 @@ + Axelor + 12 rue Albert Einstein + Champs sur Marne + + + + + + + + opportunity + + + + + + + + + + + + Thymbra + Palermo, Capital Federal + C1414CMS Capital Federal + Buenos Aires + + + + + + + + opportunity + + + + + + + + + + + + Eric Dubois + Chaussée de Binche, 27 + Mons + + + + + + + opportunity + + + + + + + + + + + + + opportunity + + + + + + + + diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 118bf117035..1a2e1f706ac 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -341,7 +341,6 @@
- diff --git a/addons/hr_contract/i18n/cs.po b/addons/hr_contract/i18n/cs.po index ff63ed93a37..493196fe014 100644 --- a/addons/hr_contract/i18n/cs.po +++ b/addons/hr_contract/i18n/cs.po @@ -4,119 +4,120 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" +"Project-Id-Version: openeobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2009-02-03 06:25+0000\n" -"Last-Translator: <>\n" -"Language-Team: \n" +"PO-Revision-Date: 2011-09-20 07:48+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-09-05 05:31+0000\n" -"X-Generator: Launchpad (build 13830)\n" +"X-Launchpad-Export-Date: 2011-09-21 04:50+0000\n" +"X-Generator: Launchpad (build 13996)\n" +"X-Poedit-Language: Czech\n" #. module: hr_contract #: view:hr.contract.wage.type:0 msgid "Hourly cost computation" -msgstr "" +msgstr "Výpočet hodinové ceny" #. module: hr_contract #: selection:hr.contract.wage.type,type:0 msgid "Gross" -msgstr "" +msgstr "Hrubého" #. module: hr_contract #: view:hr.contract:0 msgid "Trial Period" -msgstr "" +msgstr "Zkušební období" #. module: hr_contract #: field:hr.contract,trial_date_start:0 msgid "Trial Start Date" -msgstr "" +msgstr "Zkušební počáteční datum" #. module: hr_contract #: view:hr.contract:0 msgid "Passport" -msgstr "" +msgstr "Pas" #. module: hr_contract #: view:hr.employee:0 msgid "Medical Examination" -msgstr "" +msgstr "Zdravotní vyšetření" #. module: hr_contract #: field:hr.employee,vehicle:0 msgid "Company Vehicle" -msgstr "" +msgstr "Firemní vozidlo" #. module: hr_contract #: field:hr.contract.wage.type,name:0 msgid "Wage Type Name" -msgstr "" +msgstr "Jméno typu mzdy" #. module: hr_contract #: view:hr.employee:0 msgid "Miscellaneous" -msgstr "" +msgstr "Různé" #. module: hr_contract #: view:hr.contract:0 msgid "Current" -msgstr "" +msgstr "Aktuální" #. module: hr_contract #: field:hr.contract.wage.type,factor_type:0 msgid "Factor for hour cost" -msgstr "" +msgstr "Koeficient pro cenu hodiny" #. module: hr_contract #: view:hr.contract:0 msgid "Overpassed" -msgstr "" +msgstr "Uplynulý" #. module: hr_contract #: view:hr.contract.wage.type:0 msgid "Wage Types" -msgstr "" +msgstr "Typ mzdy" #. module: hr_contract #: field:hr.contract,department_id:0 msgid "Department" -msgstr "" +msgstr "Oddělení" #. module: hr_contract #: selection:hr.contract.wage.type,type:0 msgid "Basic" -msgstr "" +msgstr "Základní" #. module: hr_contract #: view:hr.contract:0 #: field:hr.contract,employee_id:0 #: model:ir.model,name:hr_contract.model_hr_employee msgid "Employee" -msgstr "" +msgstr "Zaměstnanec" #. module: hr_contract #: selection:hr.contract.wage.type,type:0 msgid "Net" -msgstr "" +msgstr "Čistého" #. module: hr_contract #: model:ir.module.module,shortdesc:hr_contract.module_meta_information msgid "Human Resources Contracts" -msgstr "" +msgstr "Smlouvy lidských zdrojů" #. module: hr_contract #: field:hr.contract.wage.type.period,factor_days:0 msgid "Hours in the period" -msgstr "" +msgstr "Hodin v období" #. module: hr_contract #: field:hr.employee,vehicle_distance:0 msgid "Home-Work Distance" -msgstr "" +msgstr "Vzdálenost z domu do práce" #. module: hr_contract #: view:hr.contract:0 @@ -125,32 +126,32 @@ msgstr "" #: model:ir.actions.act_window,name:hr_contract.action_hr_contract #: model:ir.ui.menu,name:hr_contract.hr_menu_contract msgid "Contracts" -msgstr "" +msgstr "Smlouvy" #. module: hr_contract #: view:hr.employee:0 msgid "Personal Info" -msgstr "" +msgstr "Osobní informace" #. module: hr_contract #: view:hr.contract:0 msgid "Job" -msgstr "" +msgstr "Práce" #. module: hr_contract #: view:hr.contract:0 msgid "Search Contract" -msgstr "" +msgstr "Hledat smlouvu" #. module: hr_contract #: help:hr.employee,contract_id:0 msgid "Latest contract of the employee" -msgstr "" +msgstr "Poslední smlouva zaměstnance" #. module: hr_contract #: field:hr.contract,advantages_net:0 msgid "Deductions" -msgstr "" +msgstr "Odpočty" #. module: hr_contract #: model:ir.module.module,description:hr_contract.module_meta_information @@ -163,33 +164,40 @@ msgid "" " You can assign several contracts per employee.\n" " " msgstr "" +"\n" +" Přidává všechny informace zaměstnance ke správě smluv:\n" +" * Rodinný stav,\n" +" * Bezpečnostní číslo,\n" +" * Místo narození, datum narození, ...\n" +" Ke každému zaměstnanci můžete přiřadit několik smluv.\n" +" " #. module: hr_contract #: view:hr.contract:0 #: field:hr.contract,advantages:0 msgid "Advantages" -msgstr "" +msgstr "Výhody" #. module: hr_contract #: view:hr.contract:0 msgid "Valid for" -msgstr "" +msgstr "Platné pro" #. module: hr_contract #: view:hr.contract:0 msgid "Work Permit" -msgstr "" +msgstr "Pracovní povolení" #. module: hr_contract #: field:hr.employee,children:0 msgid "Number of Children" -msgstr "" +msgstr "Počet dětí" #. module: hr_contract #: model:ir.actions.act_window,name:hr_contract.action_hr_contract_type #: model:ir.ui.menu,name:hr_contract.hr_menu_contract_type msgid "Contract Types" -msgstr "" +msgstr "Typy smluv" #. module: hr_contract #: field:hr.contract,wage_type_id:0 @@ -198,44 +206,44 @@ msgstr "" #: model:ir.model,name:hr_contract.model_hr_contract_wage_type #: model:ir.ui.menu,name:hr_contract.hr_menu_contract_wage_type msgid "Wage Type" -msgstr "" +msgstr "Typ mzdy" #. module: hr_contract #: constraint:hr.employee:0 msgid "Error ! You cannot create recursive Hierarchy of Employees." -msgstr "" +msgstr "Chyba ! Nemůžete vytvořit rekurzivní Hiearchii zaměstnanců" #. module: hr_contract #: field:hr.contract,date_end:0 msgid "End Date" -msgstr "" +msgstr "Datum ukončení" #. module: hr_contract #: field:hr.contract,wage:0 msgid "Wage" -msgstr "" +msgstr "Mzda" #. module: hr_contract #: field:hr.contract,name:0 msgid "Contract Reference" -msgstr "" +msgstr "Odkaz smlouvy" #. module: hr_contract #: help:hr.employee,vehicle_distance:0 msgid "In kilometers" -msgstr "" +msgstr "V kilometrech" #. module: hr_contract #: view:hr.contract:0 #: field:hr.contract,notes:0 msgid "Notes" -msgstr "" +msgstr "Poznámky" #. module: hr_contract #: constraint:hr.employee:0 msgid "" "Error ! You cannot select a department for which the employee is the manager." -msgstr "" +msgstr "Chyba ! Nemůžete vybrat oddělení, kterého je zaměstnance vedoucí." #. module: hr_contract #: view:hr.contract:0 @@ -243,7 +251,7 @@ msgstr "" #: model:ir.model,name:hr_contract.model_hr_contract #: model:ir.ui.menu,name:hr_contract.next_id_56 msgid "Contract" -msgstr "" +msgstr "Smlouva" #. module: hr_contract #: view:hr.contract:0 @@ -252,92 +260,92 @@ msgstr "" #: field:hr.contract.type,name:0 #: model:ir.model,name:hr_contract.model_hr_contract_type msgid "Contract Type" -msgstr "" +msgstr "Typ smlouvy" #. module: hr_contract #: view:hr.contract.wage.type.period:0 msgid "Search Wage Period" -msgstr "" +msgstr "Hledat mzdové období" #. module: hr_contract #: view:hr.contract:0 #: field:hr.contract,working_hours:0 msgid "Working Schedule" -msgstr "" +msgstr "Pracovní plán" #. module: hr_contract #: view:hr.employee:0 msgid "Job Info" -msgstr "" +msgstr "Pracovní informace" #. module: hr_contract #: field:hr.contract.wage.type,period_id:0 #: view:hr.contract.wage.type.period:0 #: model:ir.model,name:hr_contract.model_hr_contract_wage_type_period msgid "Wage Period" -msgstr "" +msgstr "Mzdové období" #. module: hr_contract #: field:hr.contract,job_id:0 msgid "Job Title" -msgstr "" +msgstr "Název pozice" #. module: hr_contract #: field:hr.employee,manager:0 msgid "Is a Manager" -msgstr "" +msgstr "Je vedoucí" #. module: hr_contract #: field:hr.contract,date_start:0 msgid "Start Date" -msgstr "" +msgstr "Počáteční datum" #. module: hr_contract #: constraint:hr.contract:0 msgid "Error! contract start-date must be lower then contract end-date." -msgstr "" +msgstr "Chyba! Počáteční datum smlouvy musí být nižší než konečné datum." #. module: hr_contract #: view:hr.contract.wage.type:0 msgid "Search Wage Type" -msgstr "" +msgstr "Hledat typ mzdy" #. module: hr_contract #: field:hr.contract.wage.type,type:0 msgid "Type" -msgstr "" +msgstr "Typ" #. module: hr_contract #: field:hr.contract,trial_date_end:0 msgid "Trial End Date" -msgstr "" +msgstr "Zkušební koncové datum" #. module: hr_contract #: view:hr.contract:0 #: view:hr.contract.wage.type:0 msgid "Group By..." -msgstr "" +msgstr "Seskupit podle..." #. module: hr_contract #: field:hr.contract.wage.type.period,name:0 msgid "Period Name" -msgstr "" +msgstr "Název období" #. module: hr_contract #: view:hr.contract.wage.type:0 msgid "Period" -msgstr "" +msgstr "Období" #. module: hr_contract #: field:hr.employee,place_of_birth:0 msgid "Place of Birth" -msgstr "" +msgstr "Místo narození" #. module: hr_contract #: model:ir.actions.act_window,name:hr_contract.action_hr_contract_wage_type_period #: model:ir.ui.menu,name:hr_contract.hr_menu_contract_wage_type_period msgid "Wage period" -msgstr "" +msgstr "Mzdové období" #. module: hr_contract #: help:hr.contract.wage.type,factor_type:0 @@ -346,28 +354,30 @@ msgid "" "This field is used by the timesheet system to compute the price of an hour " "of work wased on the contract of the employee" msgstr "" +"Toto pole je použito časovým rozvrhem systému pro výpočet ceny za hodinu " +"práce vynaložené na smlouvu zaměstnance" #. module: hr_contract #: view:hr.contract:0 msgid "Duration" -msgstr "" +msgstr "Trvání" #. module: hr_contract #: field:hr.employee,medic_exam:0 msgid "Medical Examination Date" -msgstr "" +msgstr "Datum zdravotní prohlídky" #. module: hr_contract #: field:hr.contract,advantages_gross:0 msgid "Allowances" -msgstr "" +msgstr "Dávky" #. module: hr_contract #: view:hr.contract:0 msgid "Main Data" -msgstr "" +msgstr "Hlavní data" #. module: hr_contract #: view:hr.contract.type:0 msgid "Search Contract Type" -msgstr "" +msgstr "Hledat typ smlouvy" diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index 4b04b566e35..9ca68bdb55e 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -204,14 +204,17 @@ class hr_holidays(osv.osv): def onchange_sec_id(self, cr, uid, ids, status, context=None): warning = {} + double_validation = False + obj_holiday_status = self.pool.get('hr.holidays.status') if status: - brows_obj = self.pool.get('hr.holidays.status').browse(cr, uid, status, context=context) - if brows_obj.categ_id and brows_obj.categ_id.section_id and not brows_obj.categ_id.section_id.allow_unlink: + holiday_status = obj_holiday_status.browse(cr, uid, status, context=context) + double_validation = holiday_status.double_validation + if holiday_status.categ_id and holiday_status.categ_id.section_id and not holiday_status.categ_id.section_id.allow_unlink: warning = { 'title': "Warning for ", 'message': "You won\'t be able to cancel this leave request because the CRM Sales Team of the leave type disallows." } - return {'warning': warning} + return {'warning': warning, 'value': {'double_validation': double_validation}} def set_to_draft(self, cr, uid, ids, *args): self.write(cr, uid, ids, { diff --git a/addons/hr_timesheet/i18n/cs.po b/addons/hr_timesheet/i18n/cs.po index c6dd897c9a0..089a96b1d85 100644 --- a/addons/hr_timesheet/i18n/cs.po +++ b/addons/hr_timesheet/i18n/cs.po @@ -4,45 +4,46 @@ # msgid "" msgstr "" -"Project-Id-Version: OpenERP Server 5.0.4\n" +"Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2011-01-11 11:15+0000\n" -"PO-Revision-Date: 2009-02-03 20:59+0000\n" -"Last-Translator: Fabien (Open ERP) \n" -"Language-Team: \n" +"PO-Revision-Date: 2011-09-20 08:48+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2011-09-05 05:24+0000\n" -"X-Generator: Launchpad (build 13830)\n" +"X-Launchpad-Export-Date: 2011-09-21 04:50+0000\n" +"X-Generator: Launchpad (build 13996)\n" +"X-Poedit-Language: Czech\n" #. module: hr_timesheet #: model:product.template,name:hr_timesheet.product_consultant_product_template msgid "Service on Timesheet" -msgstr "" +msgstr "SLužby v časovém rozvrhu" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Wed" -msgstr "" +msgstr "St" #. module: hr_timesheet #: view:hr.sign.out.project:0 msgid "(Keep empty for current_time)" -msgstr "" +msgstr "(Nechejte prázdné pro aktuální čas)" #. module: hr_timesheet #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "No employee defined for your user !" -msgstr "" +msgstr "Pro vašeho uživatele nebyl určen zaměstnanec !" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Group By..." -msgstr "" +msgstr "Seskupit podle..." #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.action_hr_timesheet_sign_in @@ -52,16 +53,20 @@ msgid "" "analytic account. This feature allows to record at the same time the " "attendance and the timesheet." msgstr "" +"Zaměstnanci mohou vkládat své časy strávené na různých projektech. Projekt " +"je analytický účet a čas strávený na projektu generuje ceny na na " +"analytickém účtu. Tato funkce umožňuje zaznamenat ve stejný čas docházku a " +"časový rozvrh." #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Today" -msgstr "" +msgstr "Dnes" #. module: hr_timesheet #: field:hr.employee,journal_id:0 msgid "Analytic Journal" -msgstr "" +msgstr "Analytický deník" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -72,31 +77,31 @@ msgstr "Ukončit práci" #: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_employee #: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_employee msgid "Employee Timesheet" -msgstr "" +msgstr "Časový rozvrh zaměstnance" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Work done stats" -msgstr "" +msgstr "Statistika dokončené práce" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 #: model:ir.ui.menu,name:hr_timesheet.menu_hr_reporting_timesheet msgid "Timesheet" -msgstr "" +msgstr "Časový rozvrh" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "janvier" -msgstr "" +msgstr "leden" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Mon" -msgstr "" +msgstr "Po" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -111,27 +116,31 @@ msgid "" "project generates costs on the analytic account. This feature allows to " "record at the same time the attendance and the timesheet." msgstr "" +"Zaměstnanci mohou vkládat své časy strávené na různých projektech, ke kterým " +"jsou přiřazeni. Projekt je analytický účet a čas strávený na projektu " +"generuje ceny na na analytickém účtu. Tato funkce umožňuje zaznamenat ve " +"stejný čas docházku a časový rozvrh." #. module: hr_timesheet #: field:hr.sign.out.project,analytic_amount:0 msgid "Minimum Analytic Amount" -msgstr "" +msgstr "Minimální analytická částka" #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 msgid "Monthly Employee Timesheet" -msgstr "" +msgstr "Měsíční časový rozvrh zaměstnance" #. module: hr_timesheet #: view:hr.sign.out.project:0 msgid "Work done in the last period" -msgstr "" +msgstr "Dokončená práce v minulém období" #. module: hr_timesheet #: constraint:hr.employee:0 msgid "" "Error ! You cannot select a department for which the employee is the manager." -msgstr "" +msgstr "Chyba ! Nemůžete vybrat oddělení, kterého je zaměstnance vedoucí." #. module: hr_timesheet #: field:hr.sign.in.project,state:0 @@ -143,39 +152,39 @@ msgstr "Současné datum" #: field:hr.sign.in.project,name:0 #: field:hr.sign.out.project,name:0 msgid "Employees name" -msgstr "" +msgstr "Jméno zaměstnance" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_users msgid "Print Employees Timesheet" -msgstr "" +msgstr "Tisknou časový rozvrh zaměstnance" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:174 #: code:addons/hr_timesheet/hr_timesheet.py:176 #, python-format msgid "Warning !" -msgstr "" +msgstr "Varování !" #. module: hr_timesheet #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "UserError" -msgstr "" +msgstr "UserError" #. module: hr_timesheet #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:77 #, python-format msgid "No cost unit defined for this employee !" -msgstr "" +msgstr "Pro tohoto zaměstnance nebyla určena cenová jednotka !" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Tue" -msgstr "" +msgstr "Út" #. module: hr_timesheet #: field:hr.sign.out.project,account_id:0 @@ -186,32 +195,32 @@ msgstr "Analytický účet" #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:42 #, python-format msgid "Warning" -msgstr "" +msgstr "Varování" #. module: hr_timesheet #: model:ir.module.module,shortdesc:hr_timesheet.module_meta_information msgid "Human Resources (Timesheet encoding)" -msgstr "" +msgstr "Lidské zdroje (Kódování časových rozvrhů)" #. module: hr_timesheet #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "Sign In/Out By Project" -msgstr "" +msgstr "Přihlášení/Odhlášení podle projektu" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Sat" -msgstr "" +msgstr "So" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Sun" -msgstr "" +msgstr "Ne" #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 @@ -222,18 +231,18 @@ msgstr "Tisk" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Timesheet Lines" -msgstr "" +msgstr "Řádky časového rozvrhu" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "juillet" -msgstr "" +msgstr "červenec" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Monthly Employees Timesheet" -msgstr "" +msgstr "Měsíční časový rozvrh zaměstnance" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -242,7 +251,7 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "July" -msgstr "" +msgstr "Červenec" #. module: hr_timesheet #: field:hr.sign.in.project,date:0 @@ -253,13 +262,13 @@ msgstr "Počáteční datum" #. module: hr_timesheet #: view:hr.employee:0 msgid "Categories" -msgstr "" +msgstr "Kategorie" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "novembre" -msgstr "" +msgstr "listopad" #. module: hr_timesheet #: model:ir.actions.act_window,help:hr_timesheet.act_hr_timesheet_line_evry1_all_form @@ -267,6 +276,8 @@ msgid "" "Through Working Hours you can register your working hours by project every " "day." msgstr "" +"Pomocí pracovních hodin můžete každý den registrovat vaše pracovní hodiny " +"podle projektu." #. module: hr_timesheet #: model:ir.module.module,description:hr_timesheet.module_meta_information @@ -283,6 +294,18 @@ msgid "" "to set up a management by affair.\n" " " msgstr "" +"\n" +"Tento modul realizuje systém časového rozvrhu. Každý zaměstnanec může " +"zadávat a\n" +"sledovat svůj čas strávený na různých projektech. Projekt je \n" +"analytický účet a čas strávený na projektu generuje ceny na\n" +"analytickém účtu.\n" +"\n" +"Je poskytováno mnoho vykazování nad časem a sledováním zaměstnanců.\n" +"\n" +"Je celkově integrováno s module účtování cen. Umožňuje vám\n" +"nastavit správu podle poměru.\n" +" " #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -291,18 +314,18 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "March" -msgstr "" +msgstr "Březen" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Total cost" -msgstr "" +msgstr "Celková cena" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "décembre" -msgstr "" +msgstr "prosinec" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -311,22 +334,22 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "September" -msgstr "" +msgstr "Září" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_analytic_timesheet msgid "Timesheet Line" -msgstr "" +msgstr "Řádek časového rozvrhu" #. module: hr_timesheet #: field:hr.analytical.timesheet.users,employee_ids:0 msgid "employees" -msgstr "" +msgstr "zaměstnanci" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Stats by month" -msgstr "" +msgstr "Statistika podle měsíce" #. module: hr_timesheet #: view:account.analytic.account:0 @@ -343,25 +366,25 @@ msgstr "Popis práce" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "To be invoiced" -msgstr "" +msgstr "K fakturaci" #. module: hr_timesheet #: model:ir.actions.report.xml,name:hr_timesheet.report_user_timesheet msgid "Employee timesheet" -msgstr "" +msgstr "Časový rozvrh zaměstnance" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_in #: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_sign_out msgid "Sign in / Sign out by project" -msgstr "" +msgstr "Přihlášení / Odhlášení podle projektu" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Fri" -msgstr "" +msgstr "Pá" #. module: hr_timesheet #: view:hr.sign.in.project:0 @@ -375,27 +398,29 @@ msgid "" "Analytic journal is not defined for employee %s \n" "Define an employee for the selected user and assign an analytic journal!" msgstr "" +"Pro zaměstnance %s není určen Analytický deník \n" +"Určete zaměstnance pro vybraného uživatele a přiřaďte analxtický deník!" #. module: hr_timesheet #: view:hr.sign.in.project:0 msgid "(Keep empty for current time)" -msgstr "" +msgstr "(Nechejte prázdné pro aktuální čas)" #. module: hr_timesheet #: view:hr.employee:0 msgid "Timesheets" -msgstr "" +msgstr "Časové rozvrhy" #. module: hr_timesheet #: help:hr.employee,product_id:0 msgid "Specifies employee's designation as a product with type 'service'." -msgstr "" +msgstr "Určuje zařazení zaměstnance jako výrobek s typem 'služba'." #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "août" -msgstr "" +msgstr "srpen" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -404,7 +429,7 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "August" -msgstr "" +msgstr "Srpen" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -413,23 +438,23 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "June" -msgstr "" +msgstr "Červen" #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 msgid "Print My Timesheet" -msgstr "" +msgstr "Tisknout můj časový rozvrh" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "mars" -msgstr "" +msgstr "březen" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Date" -msgstr "" +msgstr "Datum" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -438,12 +463,12 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "November" -msgstr "" +msgstr "Listopad" #. module: hr_timesheet #: constraint:hr.employee:0 msgid "Error ! You cannot create recursive Hierarchy of Employees." -msgstr "" +msgstr "Chyba ! Nemůžete vytvořit rekurzivní Hierarchii zaměstnanců" #. module: hr_timesheet #: field:hr.sign.out.project,date:0 @@ -457,7 +482,7 @@ msgstr "Koncové datum" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "October" -msgstr "" +msgstr "Říjen" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -466,35 +491,35 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "January" -msgstr "" +msgstr "Leden" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Key dates" -msgstr "" +msgstr "Klíčové dny" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 #: code:addons/hr_timesheet/report/users_timesheet.py:77 #, python-format msgid "Thu" -msgstr "" +msgstr "Čt" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Analysis stats" -msgstr "" +msgstr "Statistiká analýza" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_analytical_timesheet_employee msgid "Print Employee Timesheet & Print My Timesheet" -msgstr "" +msgstr "Tisknout Časový rozvrh zaměstnance & Tisknou můj časový rozvrh" #. module: hr_timesheet #: field:hr.sign.in.project,emp_id:0 #: field:hr.sign.out.project,emp_id:0 msgid "Employee ID" -msgstr "" +msgstr "ID zaměstnance" #. module: hr_timesheet #: view:hr.sign.out.project:0 @@ -504,12 +529,12 @@ msgstr "Obecné informace" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_my msgid "My Timesheet" -msgstr "" +msgstr "Moje časové rozvrhy" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Analysis summary" -msgstr "" +msgstr "Souhrn analýzy" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -518,7 +543,7 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "December" -msgstr "" +msgstr "Prosinec" #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 @@ -526,7 +551,7 @@ msgstr "" #: view:hr.sign.in.project:0 #: view:hr.sign.out.project:0 msgid "Cancel" -msgstr "Storno" +msgstr "Zrušit" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.action_hr_timesheet_users @@ -534,30 +559,30 @@ msgstr "Storno" #: model:ir.actions.wizard,name:hr_timesheet.wizard_hr_timesheet_users #: model:ir.ui.menu,name:hr_timesheet.menu_hr_timesheet_users msgid "Employees Timesheet" -msgstr "" +msgstr "Časové rozvrhy zaměstnanců" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "février" -msgstr "" +msgstr "únor" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Information" -msgstr "" +msgstr "Informace" #. module: hr_timesheet #: field:hr.analytical.timesheet.employee,employee_id:0 #: model:ir.model,name:hr_timesheet.model_hr_employee msgid "Employee" -msgstr "" +msgstr "Zaměstnanec" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "avril" -msgstr "" +msgstr "duben" #. module: hr_timesheet #: field:hr.sign.in.project,server_date:0 @@ -568,23 +593,23 @@ msgstr "Současné datum" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Anlytic account" -msgstr "" +msgstr "Analytický účet" #. module: hr_timesheet #: view:hr.analytical.timesheet.employee:0 msgid "This wizard will print monthly timesheet" -msgstr "" +msgstr "Tento průvodce bude tisknout měsíční časový rozvrh" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 #: field:hr.employee,product_id:0 msgid "Product" -msgstr "" +msgstr "Výrobek" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Invoicing" -msgstr "" +msgstr "Fakturace" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -593,34 +618,34 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "May" -msgstr "" +msgstr "Květen" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Total time" -msgstr "" +msgstr "Celkový čas" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "juin" -msgstr "" +msgstr "červen" #. module: hr_timesheet #: view:hr.sign.in.project:0 msgid "(local time on the server side)" -msgstr "(lokální čas na serveru)" +msgstr "(místní čas na straně serveru)" #. module: hr_timesheet #: model:ir.actions.act_window,name:hr_timesheet.act_hr_timesheet_line_evry1_all_form #: model:ir.ui.menu,name:hr_timesheet.menu_hr_working_hours msgid "Working Hours" -msgstr "" +msgstr "Pracovní hodiny" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_sign_in_project msgid "Sign In By Project" -msgstr "" +msgstr "Přihlášení podle projektu" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -629,28 +654,28 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "February" -msgstr "" +msgstr "Únor" #. module: hr_timesheet #: field:hr.analytic.timesheet,line_id:0 msgid "Analytic line" -msgstr "" +msgstr "Analytický řádek" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_sign_out_project msgid "Sign Out By Project" -msgstr "" +msgstr "Odhlášení podle projektu" #. module: hr_timesheet #: view:hr.analytical.timesheet.users:0 msgid "Employees" -msgstr "" +msgstr "Zaměstnanci" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "octobre" -msgstr "" +msgstr "říjen" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:40 @@ -659,7 +684,7 @@ msgstr "" #: selection:hr.analytical.timesheet.users,month:0 #, python-format msgid "April" -msgstr "" +msgstr "Duben" #. module: hr_timesheet #: code:addons/hr_timesheet/hr_timesheet.py:176 @@ -668,12 +693,14 @@ msgid "" "No analytic account defined on the project.\n" "Please set one or we can not automatically fill the timesheet." msgstr "" +"U projektu nebyl určen analytický účet.\n" +"Prosíme nastavte jej nebo nemůžeme automaticky vyplnit časový rozvrh." #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "mai" -msgstr "" +msgstr "květen" #. module: hr_timesheet #: view:account.analytic.account:0 @@ -689,13 +716,13 @@ msgstr "Začít pracovat" #. module: hr_timesheet #: view:account.analytic.account:0 msgid "Stats by user" -msgstr "" +msgstr "Statistiky podle uživatele" #. module: hr_timesheet #: code:addons/hr_timesheet/wizard/hr_timesheet_print_employee.py:42 #, python-format msgid "No employee defined for this user" -msgstr "" +msgstr "Pro tohoto uživatele nebyl určen zaměstnanec" #. module: hr_timesheet #: field:hr.analytical.timesheet.employee,year:0 @@ -706,23 +733,23 @@ msgstr "Rok" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 msgid "Accounting" -msgstr "" +msgstr "Účetnictví" #. module: hr_timesheet #: field:hr.analytic.timesheet,partner_id:0 msgid "Partner Id" -msgstr "" +msgstr "Id partnera" #. module: hr_timesheet #: view:hr.sign.out.project:0 msgid "Change Work" -msgstr "" +msgstr "Změnit práci" #. module: hr_timesheet #: selection:hr.analytical.timesheet.employee,month:0 #: selection:hr.analytical.timesheet.users,month:0 msgid "septembre" -msgstr "" +msgstr "září" #~ msgid "Choose Users" #~ msgstr "Uživatelé" diff --git a/addons/l10n_br/i18n/ar.po b/addons/l10n_br/i18n/ar.po new file mode 100644 index 00000000000..11efed7ca5f --- /dev/null +++ b/addons/l10n_br/i18n/ar.po @@ -0,0 +1,36 @@ +# Arabic translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-07 06:40+0000\n" +"PO-Revision-Date: 2011-09-22 02:56+0000\n" +"Last-Translator: kifcaliph \n" +"Language-Team: Arabic \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-09-22 04:48+0000\n" +"X-Generator: Launchpad (build 13996)\n" + +#. module: l10n_br +#: model:ir.actions.todo,note:l10n_br.config_call_account_template_brazilian_localization +msgid "" +"Generate Chart of Accounts from a Chart Template. You will be asked to pass " +"the name of the company, the chart template to follow, the no. of digits to " +"generate the code for your accounts and Bank account, currency to create " +"Journals. Thus,the pure copy of chart Template is generated.\n" +" This is the same wizard that runs from Financial " +"Management/Configuration/Financial Accounting/Financial Accounts/Generate " +"Chart of Accounts from a Chart Template." +msgstr "" + +#. module: l10n_br +#: model:ir.module.module,description:l10n_br.module_meta_information +#: model:ir.module.module,shortdesc:l10n_br.module_meta_information +msgid "Brazilian Localization" +msgstr "النظام للبرازيل" diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index 6e66fb57f25..a8dc4aecc89 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -46,6 +46,7 @@ class StockMove(osv.osv): procurement_obj = self.pool.get('procurement.order') product_obj = self.pool.get('product.product') wf_service = netsvc.LocalService("workflow") + processed_ids = [move.id] if move.product_id.supply_method == 'produce' and move.product_id.procure_method == 'make_to_order': bis = bom_obj.search(cr, uid, [ ('product_id','=',move.product_id.id), @@ -55,11 +56,10 @@ class StockMove(osv.osv): factor = move.product_qty bom_point = bom_obj.browse(cr, uid, bis[0], context=context) res = bom_obj._bom_explode(cr, uid, bom_point, factor, []) - dest = move.product_id.product_tmpl_id.property_stock_production.id state = 'confirmed' if move.state == 'assigned': state = 'assigned' - for line in res[0]: + for line in res[0]: valdef = { 'picking_id': move.picking_id.id, 'product_id': line['product_id'], @@ -70,12 +70,12 @@ class StockMove(osv.osv): 'move_dest_id': move.id, 'state': state, 'name': line['name'], - 'location_dest_id': dest, 'move_history_ids': [(6,0,[move.id])], 'move_history_ids2': [(6,0,[])], 'procurements': [], } mid = move_obj.copy(cr, uid, move.id, default=valdef) + processed_ids.append(mid) prodobj = product_obj.browse(cr, uid, line['product_id'], context=context) proc_id = procurement_obj.create(cr, uid, { 'name': (move.picking_id.origin or ''), @@ -92,7 +92,7 @@ class StockMove(osv.osv): }) wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr) move_obj.write(cr, uid, [move.id], { - 'location_id': move.location_dest_id.id, + 'location_dest_id': move.location_id.id, # dummy move for the kit 'auto_validate': True, 'picking_id': False, 'state': 'confirmed' @@ -100,7 +100,7 @@ class StockMove(osv.osv): for m in procurement_obj.search(cr, uid, [('move_id','=',move.id)], context): wf_service.trg_validate(uid, 'procurement.order', m, 'button_confirm', cr) wf_service.trg_validate(uid, 'procurement.order', m, 'button_wait_done', cr) - return True + return processed_ids def action_consume(self, cr, uid, ids, product_qty, location_id=False, context=None): """ Consumed product with specific quatity from specific source location. @@ -156,16 +156,13 @@ class StockPicking(osv.osv): # # Explode picking by replacing phantom BoMs # - def action_explode(self, cr, uid, picks, *args): - """ Explodes picking by replacing phantom BoMs - @param picks: Picking ids. - @param *args: Arguments - @return: Picking ids. - """ + def action_explode(self, cr, uid, move_ids, *args): + """Explodes moves by expanding kit components""" move_obj = self.pool.get('stock.move') - for move in move_obj.browse(cr, uid, picks): - move_obj._action_explode(cr, uid, move) - return picks + todo = move_ids[:] + for move in move_obj.browse(cr, uid, move_ids): + todo.extend(move_obj._action_explode(cr, uid, move)) + return list(set(todo)) StockPicking() diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py index 3a6e3336472..d72651ed55a 100644 --- a/addons/procurement/schedulers.py +++ b/addons/procurement/schedulers.py @@ -77,7 +77,7 @@ class procurement_order(osv.osv): report_later += 1 for proc in procurement_obj.browse(cr, uid, ids, context=context): if proc.state == 'exception': - report.append('PROC %d: on order - %3.2f %-5s - %s' % \ + report.append(_('PROC %d: on order - %3.2f %-5s - %s') % \ (proc.id, proc.product_qty, proc.product_uom.name, proc.product_id.name)) report_except += 1 @@ -100,7 +100,7 @@ class procurement_order(osv.osv): report_total += 1 for proc in procurement_obj.browse(cr, uid, report_ids, context=context): if proc.state == 'exception': - report.append('PROC %d: from stock - %3.2f %-5s - %s' % \ + report.append(_('PROC %d: from stock - %3.2f %-5s - %s') % \ (proc.id, proc.product_qty, proc.product_uom.name, proc.product_id.name,)) report_except += 1 @@ -111,15 +111,15 @@ class procurement_order(osv.osv): end_date = time.strftime('%Y-%m-%d, %Hh %Mm %Ss') if uid: request = self.pool.get('res.request') - summary = '''Here is the procurement scheduling report. + summary = _("""Here is the procurement scheduling report. - Start Time: %s - End Time: %s - Total Procurements processed: %d - Procurements with exceptions: %d - Skipped Procurements (scheduled date outside of scheduler range) %d + Start Time: %s + End Time: %s + Total Procurements processed: %d + Procurements with exceptions: %d + Skipped Procurements (scheduled date outside of scheduler range) %d - Exceptions:\n'''% (start_date, end_date, report_total, report_except, report_later) + Exceptions:\n""") % (start_date, end_date, report_total, report_except, report_later) summary += '\n'.join(report) request.create(cr, uid, {'name': "Procurement Processing Report.", diff --git a/addons/purchase/report/order.rml b/addons/purchase/report/order.rml index 4b143d0f961..188f969e07c 100644 --- a/addons/purchase/report/order.rml +++ b/addons/purchase/report/order.rml @@ -293,7 +293,7 @@ [[ formatLang(line.price_unit, digits=get_digits(dp='Purchase Price') ) ]] - [[ formatLang(line.price_subtotal, digits=get_digits(dp='Purchase Price') ) ]] [[ o.pricelist_id.currency_id.symbol ]] + [[ formatLang(line.price_subtotal, digits=get_digits(dp='Purchase Price'), currency_obj=o.pricelist_id.currency_id ) ]] @@ -339,7 +339,7 @@ Net Total : - [[ formatLang(o.amount_untaxed, digits=get_digits(dp='Purchase Price') ) ]] [[ o.pricelist_id.currency_id. symbol ]] + [[ formatLang(o.amount_untaxed, digits=get_digits(dp='Purchase Price'), currency_obj=o.pricelist_id.currency_id ) ]] @@ -352,7 +352,7 @@ Taxes : - [[ formatLang(o.amount_tax, dp='Purchase Price') ]] [[ o.pricelist_id.currency_id. symbol ]] + [[ formatLang(o.amount_tax, dp='Purchase Price', currency_obj=o.pricelist_id.currency_id) ]] @@ -365,7 +365,7 @@ Total : - [[ formatLang(o.amount_total, digits=get_digits(dp='Purchase Price') ) ]] [[ o.pricelist_id.currency_id. symbol ]] + [[ formatLang(o.amount_total, digits=get_digits(dp='Purchase Price') , currency_obj=o.pricelist_id.currency_id) ]] diff --git a/addons/sale/report/sale_order.rml b/addons/sale/report/sale_order.rml index 00ebb50472e..a6902f79047 100644 --- a/addons/sale/report/sale_order.rml +++ b/addons/sale/report/sale_order.rml @@ -283,7 +283,7 @@ [[ formatLang(line.discount) ]] - [[ formatLang(line.price_subtotal, digits=get_digits(dp='Sale Price')) ]] [[ o.pricelist_id.currency_id.symbol ]] + [[ formatLang(line.price_subtotal, digits=get_digits(dp='Sale Price'), currency_obj=o.pricelist_id.currency_id) ]] @@ -329,7 +329,7 @@ Net Total : - [[ formatLang(o.amount_untaxed, dp='Sale Price') ]] [[ o.pricelist_id.currency_id.symbol ]] + [[ formatLang(o.amount_untaxed, dp='Sale Price', currency_obj=o.pricelist_id.currency_id) ]] @@ -342,7 +342,7 @@ Taxes : - [[ formatLang(o.amount_tax, dp='Sale Price') ]] [[ o.pricelist_id.currency_id.symbol ]] + [[ formatLang(o.amount_tax, dp='Sale Price', currency_obj=o.pricelist_id.currency_id) ]] @@ -355,7 +355,7 @@ Total : - [[ formatLang(o.amount_total, dp='Sale Price') ]] [[ o.pricelist_id.currency_id.symbol ]] + [[ formatLang(o.amount_total, dp='Sale Price', currency_obj=o.pricelist_id.currency_id) ]] diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 9c585801ffa..12c27c197ed 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -322,6 +322,16 @@ class sale_order(osv.osv): self.log(cr, uid, id, message) return True + def onchange_pricelist_id(self, cr, uid, ids, pricelist_id, order_lines, context={}): + print order_lines + if (not pricelist_id) or (not order_lines): + return {} + warning = { + 'title': _('Pricelist Warning!'), + 'message' : _('If you change the pricelist of this order (and eventually the currency), prices of existing order lines will not be updated.') + } + return {'warning': warning} + def onchange_partner_id(self, cr, uid, ids, part): if not part: return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'partner_order_id': False, 'payment_term': False, 'fiscal_position': False}} diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 75cbf6b7182..a12a4c566f5 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -112,7 +112,7 @@ - + @@ -492,7 +492,7 @@ - +