diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index b48d4ab1606..aa2eaa40d1a 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -63,7 +63,7 @@ - + diff --git a/addons/account/account_report.xml b/addons/account/account_report.xml index 3fe2e12a138..83b186bddd1 100644 --- a/addons/account/account_report.xml +++ b/addons/account/account_report.xml @@ -3,6 +3,7 @@ + diff --git a/addons/account/report/account_balance.rml b/addons/account/report/account_balance.rml index 250c51840d9..fb8eb53c418 100644 --- a/addons/account/report/account_balance.rml +++ b/addons/account/report/account_balance.rml @@ -60,9 +60,7 @@ - - - + @@ -91,14 +89,14 @@ - + - - + + @@ -146,7 +144,7 @@ - [[ get_fiscalyear(data['form']) or removeParentNode('para') ]]: + [[ get_fiscalyear(data['form']) or removeParentNode('para') ]]: [[ get_periods(data['form']) or removeParentNode('para') ]] @@ -155,45 +153,21 @@ - + - - Code - - - Account - - - Debit - - - Credit - - - Balance - + Code + Account + Debit + Credit + Balance - [[ repeatIn(lines(data['form']), 'a') ]][[ a['code'] or removeParentNode('tr') ]] - - - [[ (a['level']<3 and setTag('tr','tr',{'style':'TrLevel'+str(a['level']), 'paraStyle':('Level'+str(a['level']))})) or removeParentNode('font') ]] - [[ (a['level']>2 and setTag('tr','tr',{'style':'TrLevel', 'paraStyle':('Level')})) or removeParentNode('font') ]] - [[ '...'*(a['level']) ]][[ a['name'] ]] - - - [[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['debit']) ]] - [[ a['type']<>'view' and removeParentNode('font') ]] [[formatLang(a['debit']) ]] - - - [[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['credit']) ]] - [[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['credit']) ]] - - - [[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance']) ]] - [[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance']) ]] - + [[ repeatIn(lines(data['form']), 'a') ]][[ a['level']>2 and setTag('para','para',{'fontName':"Helvetica"}) ]][[ a['code'] or removeParentNode('tr') ]] + [[ a['level']>2 and setTag('para','para',{'fontName':"Helvetica"}) ]][[ '..'*(a['level']-1) ]][[ a['name'] ]] + [[ a['level']>2 and setTag('para','para',{'fontName':"Helvetica"}) ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['debit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[formatLang(a['debit']) ]] + [[ a['level']>2 and setTag('para','para',{'fontName':"Helvetica"}) ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['credit']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['credit']) ]] + [[ a['level']>2 and setTag('para','para',{'fontName':"Helvetica"}) ]][[ a['type']=='view' and removeParentNode('font') ]][[ formatLang(a['balance']) ]][[ a['type']<>'view' and removeParentNode('font') ]] [[ formatLang(a['balance']) ]] - \ No newline at end of file + diff --git a/addons/account/report/account_journal.rml b/addons/account/report/account_journal.rml index 9e782e5bce3..2c8036ca82f 100644 --- a/addons/account/report/account_journal.rml +++ b/addons/account/report/account_journal.rml @@ -120,70 +120,31 @@ [[ repeatIn(objects, 'o') ]] - - Date - - - Voucher No - - - A/c No. - - - Third party - - - Entry label - - - Debit - - - Credit - + Date + Voucher No + A/c No. + Third party + Entry label + Debit + Credit - - [[o.period_id.name ]] - - - [[ o.journal_id.code ]] - - - - - [[ formatLang(sum_debit(o.period_id.id, o.journal_id.id)) ]] - - - [[ formatLang(sum_credit(o.period_id.id, o.journal_id.id)) ]] - + [[o.period_id.name ]] + [[ o.journal_id.code ]] + + + + [[ formatLang(sum_debit(o.period_id.id, o.journal_id.id)) ]] + [[ formatLang(sum_credit(o.period_id.id, o.journal_id.id)) ]] - - - [[ repeatIn(lines(o.period_id.id, o.journal_id.id), 'line') ]] - [[ formatLang(line.date,date=True) ]] - - - [[ line.ref ]] - - - [[ line.account_id.code ]] - - - [[ line.partner_id and line.partner_id.name ]] - - - [[ line.name ]] - - - [[ formatLang(line.debit) ]] - - - [[ formatLang(line.credit) ]] - - - - + + [[ repeatIn(lines(o.period_id.id, o.journal_id.id), 'line') ]][[ formatLang(line.date,date=True) ]] + [[ line.ref ]] + [[ line.account_id.code ]] + [[ line.partner_id and line.partner_id.name ]] + [[ line.name ]] + [[ formatLang(line.debit) ]] + [[ formatLang(line.credit) ]] diff --git a/addons/account/report/account_tax_code.py b/addons/account/report/account_tax_code.py index 972646c96cf..773e9541d79 100644 --- a/addons/account/report/account_tax_code.py +++ b/addons/account/report/account_tax_code.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -28,12 +28,37 @@ import re class account_tax_code_report(rml_parse.rml_parse): #_name = 'report.account.tax.code.entries' + def __init__(self, cr, uid, name, context): super(account_tax_code_report, self).__init__(cr, uid, name, context) self.localcontext.update({ 'time': time, + 'get_line':self.get_line, }) + + def get_line(self,obj): + res = {} + result = [] + line_ids = self.pool.get('account.move.line').search(self.cr,self.uid,[('tax_code_id','=',obj.id)]) + if line_ids: + move_line_objs = self.pool.get('account.move.line').browse(self.cr,self.uid,line_ids) + for line in move_line_objs: + res['date'] = line.date + res['ref'] = line.ref + res['acode'] = line.account_id.code + res['pname'] = '' + res['country'] = '' + if line.partner_id: + res['pname'] = line.partner_id.name + if line.partner_id.address and line.partner_id.address[0].country_id: + res['country'] = line.partner_id.address[0].country_id.code + res['name'] = line.name + res['debit'] = line.debit + res['credit'] = line.credit + result.append(res) + + return result report_sxw.report_sxw('report.account.tax.code.entries', 'account.tax.code', 'addons/account/report/account_tax_code.rml', parser=account_tax_code_report, header=False) diff --git a/addons/account/report/account_tax_code.rml b/addons/account/report/account_tax_code.rml index 72bbf56c9e9..e1dd6bdade9 100644 --- a/addons/account/report/account_tax_code.rml +++ b/addons/account/report/account_tax_code.rml @@ -41,7 +41,21 @@ - + + + + + + + + + + + + + + + @@ -69,6 +83,7 @@ + @@ -90,81 +105,44 @@ - - - + + + + + [[ o.name ]] + +
- - Date - - - Voucher Nb - - - Account Number - - - Third party (Country) - - - Entry label - - - Debit - - - Credit - - - - - - [[ repeatIn(objects, 'o') ]] - [[ repeatIn(o.line_ids, 'line') ]] - - - - [[ formatLang(line.date,date=True) ]] - - - [[ line.ref ]] - - - [[ line.account_id.code ]] - - - [[ line.partner_id and line.partner_id.name ]]([[ line.partner_id and line.partner_id.address and line.partner_id.address[0].country_id.code or removeParentNode('font') ]] ) - - - [[ line.name ]] - - - [[ formatLang(line.debit) ]] - - - [[ formatLang(line.credit) ]] - - - - + Date + Voucher Nb + Account Number + Third party (Country) + Entry label + Debit + Credit + + [[ repeatIn(get_line(o),'line') ]][[ not line and removeParentNode('tr') ]][[ formatLang(line['date'],date=True) ]] + [[ line['ref'] ]] + [[ line['acode'] ]] + [[ line['pname'] ]]([[ line['country'] ]] ) + [[ line['name'] ]] + [[ formatLang(line['debit']) ]] + [[ formatLang(line['credit']) ]] +
diff --git a/addons/account/report/central_journal.rml b/addons/account/report/central_journal.rml index d8f78bce8cb..1fe5b8be0f8 100644 --- a/addons/account/report/central_journal.rml +++ b/addons/account/report/central_journal.rml @@ -80,6 +80,7 @@ + @@ -103,79 +104,50 @@ - + - + - + [[ repeatIn(objects, 'o') ]] - - - - - - - Central Journal - - - - - + + Central Journal + - + - - Journal Code - - - Journal Name - - - Printing Date - + Journal Code + Journal Name + Printing Date - - [[ o.journal_id.code or '' ]] - - - [[ o.journal_id.name ]] - - - [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time = True) ]] - + [[ o.journal_id.code or '' ]] + [[ o.journal_id.name ]] + [[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time = True) ]] - + - - Account Num. - - - Account Name - - - Debit - - - Credit - + Account Num. + Account Name + Debit + Credit @@ -183,20 +155,10 @@ - - Total: - - - - - - - - [[ formatLang( sum_debit(o.period_id.id, o.journal_id.id)) ]] - - - [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)) ]] - + Total: + + [[ formatLang( sum_debit(o.period_id.id, o.journal_id.id)) ]] + [[ formatLang( sum_credit(o.period_id.id, o.journal_id.id)) ]] @@ -206,25 +168,17 @@ [[ repeatIn(lines(o.period_id.id,o.journal_id.id),'line') ]] - - [[ line['code'] ]] - - - [[ line['name'] ]] - - - [[ formatLang(line['debit']) ]] - - - [[ formatLang(line['credit'])]] - + [[ line['code'] ]] + [[ line['name'] ]] + [[ formatLang(line['debit']) ]] + [[ formatLang(line['credit'])]] - + diff --git a/addons/account/report/general_journal.rml b/addons/account/report/general_journal.rml index 5a9ccff4213..6c62d82eb88 100644 --- a/addons/account/report/general_journal.rml +++ b/addons/account/report/general_journal.rml @@ -52,6 +52,7 @@ + @@ -84,13 +85,10 @@ - + - - - - + @@ -110,10 +108,10 @@ - + - + Printing Date : @@ -123,60 +121,27 @@ - + - - - - + - - Code - - - Journal Name - - - Period - - - Debit Trans. - - - Credit Trans. - + Code + Journal Name + Period + Debit Trans. + Credit Trans. - - - - - Total: - - - - - - - - - - - - - [[ formatLang(sum_debit()) ]] - - - [[ formatLang( sum_credit()) ]] - + Total: + + + [[ formatLang(sum_debit()) ]] + [[ formatLang( sum_credit()) ]] - - -
[[ repeatIn( periods(objects), 'o') ]] @@ -228,7 +193,7 @@
- +
diff --git a/addons/account/report/invoice.rml b/addons/account/report/invoice.rml index f3acb1c3a54..876b6bc4813 100644 --- a/addons/account/report/invoice.rml +++ b/addons/account/report/invoice.rml @@ -206,6 +206,7 @@ + @@ -235,11 +236,7 @@ [[ setLang(o.partner_id.lang) ]] - - - - - + [[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] [[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]] @@ -248,9 +245,7 @@ [[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]] [[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]] [[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]] - - - + Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]] Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]] VAT : [[ o.partner_id.vat or removeParentNode('para') ]] @@ -264,131 +259,55 @@ Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]] - - - + - - Document - - - Invoice Date - - - Partner Ref. - + Document + Invoice Date + Partner Ref. - - [[ o.name ]] - - - [[ formatLang(o.date_invoice,date=True) ]] - - - [[ o.address_invoice_id.partner_id.ref or '' ]] - + [[ o.name ]] + [[ formatLang(o.date_invoice,date=True) ]] + [[ o.address_invoice_id.partner_id.ref or '' ]] - - - - + + + - - Description - - - Taxes - - - Quantity - - - Unit Price - - - Disc. (%) - - - Price - + Description + Taxes + Quantity + Unit Price + Disc.(%) + Price
[[ repeatIn(o.invoice_line,'l') ]] - - [[ l.name ]] - - - [[ ', '.join([ lt.description or '' for lt in l.invoice_line_tax_id ]) ]] - - - [[ formatLang(l.quantity)]] - - - [[ (l.uos_id and l.uos_id.name) or '' ]] - - - [[ formatLang(l.price_unit) ]] - - - [[ formatLang(l.discount) ]] - - - [[ formatLang(l.price_subtotal) ]] - - - [[ o.currency_id.code ]] - + [[ l.name ]] + [[ ', '.join([ lt.description or '' for lt in l.invoice_line_tax_id ]) ]] + [[ formatLang(l.quantity)]] + [[ (l.uos_id and l.uos_id.name) or '' ]] + [[ formatLang(l.price_unit) ]] + [[ formatLang(l.discount) ]] + [[ formatLang(l.price_subtotal) ]] + [[ o.currency_id.code ]] - - [[ format(l.note or removeParentNode('tr')) ]] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + [[ format(l.note or removeParentNode('tr')) ]] + + + + + + +
@@ -397,63 +316,31 @@ - - - - - - - - - - + + - - Net Total: - - - [[ formatLang(o.amount_untaxed) ]] - - - [[ o.currency_id.code ]] - + Net Total: + [[ formatLang(o.amount_untaxed) ]] + [[ o.currency_id.code ]] - - - - - Taxes: - - - [[ formatLang(o.amount_tax) ]] - - - [[ o.currency_id.code ]] - + Taxes: + [[ formatLang(o.amount_tax) ]] + [[ o.currency_id.code ]] - - - - - Total: - - - [[ formatLang(o.amount_total) ]] - - - [[ o.currency_id.code ]] - + Total: + [[ formatLang(o.amount_total) ]] + [[ o.currency_id.code ]] @@ -462,25 +349,13 @@ - - - - - Tax - - - Base - - - Amount - + Tax + Base + Amount - - - @@ -488,15 +363,9 @@ [[ repeatIn(o.tax_line,'t') ]] - - [[ t.name ]] - - - [[ formatLang(t.base) ]] - - - [[ t.tax_code_id.notprintable and removeParentNode('blockTable') or '' ]][[ formatLang(t.amount) ]] - + [[ t.name ]] + [[ formatLang(t.base) ]] + [[ t.tax_code_id.notprintable and removeParentNode('blockTable') or '' ]][[ formatLang(t.amount) ]] @@ -505,21 +374,9 @@ - - - - - - - - - - - - - - - + + + @@ -527,23 +384,13 @@ - - - - - - - - - - + + - - [[ format(o.comment or removeParentNode('blockTable')) ]] - + [[ format(o.comment or removeParentNode('blockTable')) ]] @@ -551,9 +398,7 @@ - - [[ format((o.payment_term and o.payment_term.note) or removeParentNode('blockTable')) ]] - + [[ format((o.payment_term and o.payment_term.note) or removeParentNode('blockTable')) ]] diff --git a/addons/account/report/partner_balance.rml b/addons/account/report/partner_balance.rml index a096b5a2412..ff6e1214a1b 100644 --- a/addons/account/report/partner_balance.rml +++ b/addons/account/report/partner_balance.rml @@ -57,11 +57,10 @@
- - - + + + + @@ -88,21 +87,16 @@ - - - - - - - - + + + - - - + + + @@ -110,7 +104,7 @@ - + @@ -289,96 +283,42 @@ fontName="Times-Italic" leading="5" alignment="RIGHT" spaceBefore="0.0" spaceAfter="6.0" /> - + - - [[ setTag('tr','tr',{'style':'Line1'}) ]] Code - - - Partner name - - - Débit - - - Crédit - - - Balance - - - In dispute - + Code + (Account/Partner) Name + Debit + Credit + Balance + In dispute - - [[ setTag('tr','tr',{'style':'Line2'}) ]] Grand total - - - - - - [[ formatLang(sum_debit(data)) ]] - - - [[ formatLang(sum_credit(data)) ]] - - - [[ formatLang((solde_debit(data)-solde_credit(data))) ]] - - - [[ formatLang(sum_litige(data)) ]] - + Grand total + + [[ formatLang(sum_debit(data)) ]] + [[ formatLang(sum_credit(data)) ]] + [[ formatLang((solde_debit(data)-solde_credit(data))) ]] + [[ formatLang(sum_litige(data)) ]] - - - [[ repeatIn(lines(data), 'a') ]][[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]] [[ a['ref'] ]] [[ a['type']==3 and a['code'] ]] - - - [[ a['type']==3 and ( setTag('tr','tr',{'style':'TrLevel0'})) ]] [[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]] [[ a['type']==1 and ( setTag('blockTable','blockTable',{'style':'LineLevel1'})) ]] [[ a['name'] ]] - - - - [[ (a['type']==3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica-Bold'}) ]] [[ formatLang(a['debit']) ]] - [[ (a['type']!=3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica'}) ]] [[ formatLang(a['debit']) ]] - - - - - [[ (a['type']==3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica-Bold'}) ]] [[ formatLang(a['credit']) ]] - [[ (a['type']!=3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica'}) ]] [[ formatLang(a['credit']) ]] - - - - - [[ (a['type']==3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica-Bold'}) ]] [[ formatLang(a['balance']) ]] - [[ (a['type']!=3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica'}) ]] [[ formatLang(a['balance']) ]] - - - - - [[ (a['type']==3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica-Bold'}) ]] [[ formatLang(a['enlitige'] or 0.00) ]] - [[ (a['type']!=3 or removeParentNode('font')) and setTag('para','para',{'fontName':'Helvetica'}) ]] [[ formatLang(a['enlitige'] or 0.00) ]] - - + Balance + + [[ formatLang(solde_debit(data)) ]] + [[ formatLang(solde_credit(data)) ]] + + + + + [[ repeatIn(lines(data), 'a') ]][[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]][[ a['ref'] ]] [[ a['type']==3 and a['code'] ]] + [[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]][[ a['name'] ]] + [[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]][[ formatLang(a['debit']) ]] + [[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]][[ formatLang(a['credit']) ]] + [[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]][[ formatLang(a['balance']) ]] + [[ a['type']==3 and ( setTag('para','para',{'fontName':'Helvetica-Bold'})) ]][[ formatLang(a['enlitige'] or 0.00) ]] - \ No newline at end of file + diff --git a/addons/account/report/tax_report.py b/addons/account/report/tax_report.py index d82f9ab99bd..79e59959d12 100644 --- a/addons/account/report/tax_report.py +++ b/addons/account/report/tax_report.py @@ -58,7 +58,7 @@ class tax_report(rml_parse.rml_parse): else: return self.comma_me(new) def _get_lines(self, based_on,period_list,company_id=False, parent=False, level=0): - res = self._get_codes(based_on,parent,level,period_list) + res = self._get_codes(based_on,company_id,parent,level,period_list) if period_list[0][2] : res = self._add_codes(based_on,res,period_list) @@ -157,15 +157,15 @@ class tax_report(rml_parse.rml_parse): i+=1 return res - def _get_codes(self, based_on, parent=False, level=0,period_list=[]): + def _get_codes(self,based_on, company_id, parent=False, level=0,period_list=[]): tc = self.pool.get('account.tax.code') - ids = tc.search(self.cr, self.uid, [('parent_id','=',parent)]) + ids = tc.search(self.cr, self.uid, [('parent_id','=',parent),('company_id','=',company_id)]) res = [] for code in tc.browse(self.cr, self.uid, ids, {'based_on': based_on}): res.append(('.'*2*level,code)) - res += self._get_codes(based_on, code.id, level+1) + res += self._get_codes(based_on, company_id, code.id, level+1) return res def _add_codes(self,based_on, account_list=[],period_list=[]): diff --git a/addons/account/report/tax_report.rml b/addons/account/report/tax_report.rml index 9cdba22c43f..eecf76f7551 100644 --- a/addons/account/report/tax_report.rml +++ b/addons/account/report/tax_report.rml @@ -54,10 +54,10 @@ - - - - + + + + @@ -88,7 +88,7 @@ - + @@ -116,61 +116,20 @@ - - - - - - - - Code - - - Debit - - - Credit - - - Tax Amount - - - - - - - [[ repeatIn(get_lines(data['form']['based_on'],data['form']['periods'],data['form']['company_id']), 'o') ]] - - [[ '...'*len(o['level']) ]] - [[o['type']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))]] - - [[ o['code'] ]] [[ o['name'] ]] - - - - - - [[ len(o['level'])>3 and removeParentNode('font') ]][[ formatLang(o['debit']) ]] - [[ len(o['level'])<4 and removeParentNode('font') ]][[ formatLang(o['debit']) ]] - - - - [[ len(o['level'])>3 and removeParentNode('font') ]][[ formatLang(o['credit'])]] - [[ len(o['level'])<4 and removeParentNode('font') ]][[ formatLang(o['credit'])]] - - - - - [[ len(o['level'])>3 and removeParentNode('font') ]][[ formatLang(o['tax_amount']) ]] - [[ len(o['level'])<4 and removeParentNode('font') ]][[ formatLang(o['tax_amount']) ]] - - - - - - - - - + + + + Tax Name + Debit + Credit + Tax Amount + + + [[ repeatIn(get_lines(data['form']['based_on'],data['form']['periods'],data['form']['company_id']), 'o') ]][[ '...'*len(o['level']) ]] [[o['type']==1 and ( setTag('para','para',{'fontName':'Helvetica-Bold'}))]][[ o['code'] ]] [[ o['name'] ]] + [[ len(o['level'])<3 and setTag('para','para',{'fontName':"Helvetica-Bold"}) ]][[ formatLang(o['debit']) ]] + [[ len(o['level'])<3 and setTag('para','para',{'fontName':"Helvetica-Bold"}) ]][[ formatLang(o['credit'])]] + [[ len(o['level'])<3 and setTag('para','para',{'fontName':"Helvetica-Bold"}) ]][[ formatLang(o['tax_amount']) ]] + + diff --git a/addons/account/report/third_party_ledger.py b/addons/account/report/third_party_ledger.py index 3004beddd7e..9828fdfbd63 100644 --- a/addons/account/report/third_party_ledger.py +++ b/addons/account/report/third_party_ledger.py @@ -447,4 +447,8 @@ report_sxw.report_sxw('report.account.third_party_ledger', 'res.partner', 'addons/account/report/third_party_ledger.rml',parser=third_party_ledger, header=False) +report_sxw.report_sxw('report.account.third_party_ledger_other', 'res.partner', + 'addons/account/report/third_party_ledger_other.rml',parser=third_party_ledger, + header=False) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account/report/third_party_ledger.rml b/addons/account/report/third_party_ledger.rml index 91a9b67d7ca..82d14a6ef94 100644 --- a/addons/account/report/third_party_ledger.rml +++ b/addons/account/report/third_party_ledger.rml @@ -124,117 +124,54 @@ - - - [[ data['form']['page_split'] == True or removeParentNode('para') ]] - [[ repeatIn(objects, 'p') ]] [[ setLang(p.partner_id.lang) ]] - - + [[ repeatIn(objects, 'p') ]] [[ setLang(p.partner_id.lang) ]] - - - Date - - - JNRL - - - Ref. - - - Entry label - - - Debit - - - Credit - - - Balance - - - + Date + JNRL + Ref. + Entry label + Debit + Credit + Balance - + - - Balance brought forward - - - [[ formatLang((sum_debit(data))) ]] - - - [[ formatLang((sum_credit(data))) ]] - - - [[ formatLang((sum_debit(data) - sum_credit(data))) ]] - + Balance brought forward + [[ formatLang((sum_debit(data))) ]] + [[ formatLang((sum_credit(data))) ]] + [[ formatLang((sum_debit(data) - sum_credit(data))) ]] - - [[ data['form']['page_split'] == False or removeParentNode('para') ]] - [[ repeatIn(objects, 'p') ]] - - - [[ p.ref ]] - [[ p.name ]] - - - - - - [[ formatLang((sum_debit_partner(p,data))) ]] - - - [[ formatLang((sum_credit_partner(p,data))) ]] - - - [[ formatLang((sum_debit_partner(p,data) - sum_credit_partner(p,data))) ]] - + [[ p.ref ]] - [[ p.name ]] + + [[ formatLang((sum_debit_partner(p,data))) ]] + [[ formatLang((sum_credit_partner(p,data))) ]] + [[ formatLang((sum_debit_partner(p,data) - sum_credit_partner(p,data))) ]] - - [[ repeatIn(lines(p,data), 'line') ]][[ formatLang(line['date'],date=True) ]] - - - [[ line['code'] ]] - - - [[ line['ref'] ]] / [[ line['name'] ]] - - - - - - [[ formatLang((line['debit'])) ]] - - - [[ formatLang((line['credit'])) ]] - - - [[ formatLang((line['progress'])) ]] - + [[ repeatIn(lines(p,data), 'line') ]][[ formatLang(line['date'],date=True) ]] + [[ line['code'] ]] + [[ line['ref'] ]] / [[ line['name'] ]] + + [[ formatLang((line['debit'])) ]] + [[ formatLang((line['credit'])) ]] + [[ formatLang((line['progress'])) ]] - - - - - \ No newline at end of file diff --git a/addons/account/report/third_party_ledger_other.rml b/addons/account/report/third_party_ledger_other.rml new file mode 100644 index 00000000000..36a208d1206 --- /dev/null +++ b/addons/account/report/third_party_ledger_other.rml @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Date + JNRL + Ref. + Entry label + Debit + Credit + Balance + + + + + + Balance brought forward + [[ formatLang((sum_debit(data))) ]] + [[ formatLang((sum_credit(data))) ]] + [[ formatLang((sum_debit(data) - sum_credit(data))) ]] + + + + + + + [[ repeatIn(objects, 'p') ]] + + + [[ p.ref ]] - [[ p.name ]] + + [[ formatLang((sum_debit_partner(p,data))) ]] + [[ formatLang((sum_credit_partner(p,data))) ]] + [[ formatLang((sum_debit_partner(p,data) - sum_credit_partner(p,data))) ]] + + + + + [[ repeatIn(lines(p,data), 'line') ]][[ formatLang(line['date'],date=True) ]] + [[ line['code'] ]] + [[ line['ref'] ]] / [[ line['name'] ]] + + [[ formatLang((line['debit'])) ]] + [[ formatLang((line['credit'])) ]] + [[ formatLang((line['progress'])) ]] + + + + + + + \ No newline at end of file diff --git a/addons/account/wizard/wizard_general_ledger_report.py b/addons/account/wizard/wizard_general_ledger_report.py index 47191fa1d2b..c03171f8e61 100644 --- a/addons/account/wizard/wizard_general_ledger_report.py +++ b/addons/account/wizard/wizard_general_ledger_report.py @@ -120,10 +120,10 @@ def _check_state(self, cr, uid, data, context): if data['form']['state'] == 'bydate': _check_date(self, cr, uid, data, context) - data['form']['fiscalyear'] = 0 - else : - - data['form']['fiscalyear'] = 1 +# data['form']['fiscalyear'] = 0 +# else : +# +# data['form']['fiscalyear'] = 1 return data['form'] @@ -138,8 +138,8 @@ class wizard_report(wizard.interface): fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear') data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid) - periods_obj=pooler.get_pool(cr.dbname).get('account.period') - data['form']['periods'] =periods_obj.search(cr, uid, [('fiscalyear_id','=',data['form']['fiscalyear'])]) + #periods_obj=pooler.get_pool(cr.dbname).get('account.period') + #data['form']['periods'] =periods_obj.search(cr, uid, [('fiscalyear_id','=',data['form']['fiscalyear'])]) data['form']['sortbydate'] = 'sort_date' data['form']['display_account']='bal_all' data['form']['landscape']=True diff --git a/addons/account/wizard/wizard_third_party_ledger.py b/addons/account/wizard/wizard_third_party_ledger.py index 8d7a46868ed..5693b54da77 100755 --- a/addons/account/wizard/wizard_third_party_ledger.py +++ b/addons/account/wizard/wizard_third_party_ledger.py @@ -105,6 +105,12 @@ class wizard_report(wizard.interface): data['form']['soldeinit'] = True return data['form'] + def _check(self, cr, uid, data, context): + if data['form']['page_split']: + return 'report' + else: + return 'report_other' + def _check_date(self, cr, uid, data, context): sql = """ @@ -134,12 +140,21 @@ class wizard_report(wizard.interface): states = { 'init': { 'actions': [_get_defaults], - 'result': {'type':'form', 'arch':period_form, 'fields':period_fields, 'state':[('end','Cancel','gtk-cancel'),('report','Print','gtk-print')]} + 'result': {'type':'form', 'arch':period_form, 'fields':period_fields, 'state':[('end','Cancel','gtk-cancel'),('checkreport','Print','gtk-print')]} + }, + 'checkreport': { + 'actions': [], + 'result': {'type':'choice','next_state':_check} }, 'report': { 'actions': [_check_state], 'result': {'type':'print', 'report':'account.third_party_ledger', 'state':'end'} + }, + 'report_other': { + 'actions': [_check_state], + 'result': {'type':'print', 'report':'account.third_party_ledger_other', 'state':'end'} } + } wizard_report('account.third_party_ledger.report') diff --git a/addons/account_invoice_layout/report/report_account_invoice_layout.rml b/addons/account_invoice_layout/report/report_account_invoice_layout.rml index f9166f00104..5fabe670f81 100644 --- a/addons/account_invoice_layout/report/report_account_invoice_layout.rml +++ b/addons/account_invoice_layout/report/report_account_invoice_layout.rml @@ -17,16 +17,20 @@ - - - - - - + + + + + + + + + + @@ -35,89 +39,88 @@ - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + [[ repeatIn(objects,'o') ]] [[ setLang(o.partner_id.lang) ]] - - - - - - - -[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] -[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]] -[[ o.address_invoice_id.street ]] -[[ o.address_invoice_id.street2 or '' ]] -[[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]] -[[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]] -[[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]] - - - -Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]] -Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]] -VAT : [[ o.partner_id.vat or removeParentNode('para') ]] - - + + + + [[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] + [[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]] + [[ o.address_invoice_id.street ]] + [[ o.address_invoice_id.street2 or '' ]] + [[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]] + [[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]] + [[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]] + + Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]] + Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]] + VAT : [[ o.partner_id.vat or removeParentNode('para') ]] + + - - + + Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]] PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma') or removeParentNode('para')) and '' ]] @@ -125,190 +128,142 @@ Canceled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] - -Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] -[[ o.number ]] +Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]][[ o.number ]] + + - - +Document:[[ o.name ]] + +Invoice Date: [[ formatLang(o.date_invoice,date=True) ]] +Customer Ref:[[ o.address_invoice_id.partner_id.ref or '/' ]] + + - -Document:[[ o.name ]] - - -Invoice Date: [[ formatLang(o.date_invoice,date=True) ]] - - -Customer Ref: [[ o.address_invoice_id.partner_id.ref or '/' ]] - - - - - - - + - -Description - - -Taxes - - -Quantity - - -Unit Price - - -Disc. (%) - - -Price - +Description +Taxes +Quantity +Unit Price +Disc. (%) +Price
[[ repeatIn(invoice_lines(o), 'a') ]] - + - - [[ a['type']=='text' and removeParentNode('blockTable')]] - - - [[ (a['type']=='title' or a['type']=='subtotal') and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['name'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['tax_types'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['quantity'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['uos'] ]] - - - - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['price_unit'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['discount'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['price_subtotal'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['currency'] ]] - + [[ a['type']=='text' and removeParentNode('blockTable')]] + [[ (a['type']=='title' or a['type']=='subtotal') and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['name'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['tax_types'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['quantity'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['uos'] ]] + + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_unit'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['discount'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_subtotal'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['currency'] ]] + + + + [[ format(a['note'] or removeParentNode('tr')) ]] + + + + + + + + - - [[ a['type']=='text' and a['name'] or removeParentNode('blockTable') ]] - - - [[ a['type']=='text' and '' or removeParentNode('blockTable') ]] - - - - - - - [[ a['note']=='' and removeParentNode('blockTable') ]][[ repeatIn(( a['note'] and a['note'].splitlines()) or [], 'note') ]] - - - [[ note or removeParentNode('blockTable') ]] - + [[ a['type']=='text' and a['name'] or removeParentNode('blockTable') ]] + [[ a['type']=='text' and '' or removeParentNode('blockTable') ]] [[ a['type']!='break' and removeParentNode('pageBreak')]] - + - - Description [[ a['type']!='break' and removeParentNode('blockTable')]] - - - Taxes - - - Quantity - - - Unit Price - - - Disc. (%) - - - Price - + Description [[ a['type']!='break' and removeParentNode('blockTable')]] + Taxes + Quantity + Unit Price + Disc. (%) + Price
- - + + + + + + + + + + + + + + + + + + + + Total (Excl. taxes): + [[ '%.2f' % o.amount_untaxed ]] [[o.currency_id.code ]] + + + Taxes: + [[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] + + + Total (Incl. taxes): + [[ '%.2f' % o.amount_total ]] [[o.currency_id.code ]] + + + + + + - - -Tax - - -Base - - -Amount - - - - -[[ repeatIn(o.tax_line,'t') ]] [[ t.name ]] - - -[[ '%.2f' % t.base ]] - - -[[ '%.2f' % t.amount]] - - + + Tax + Base + Amount + + + [[ repeatIn(o.tax_line,'t') ]][[ t.name ]] + [[ '%.2f' % t.base ]] + [[ '%.2f' % t.amount]] + - - - -Total (excl. taxes): - - -[[ '%.2f' % o.amount_untaxed ]] [[o.currency_id.code ]] + + + + + + + + + + + + - - -Taxes: - - -[[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] - - - - -Total (incl. taxes): + + + - - -[[ '%.2f' % o.amount_total ]] [[o.currency_id.code ]] - - - - - - - [[ format(o.comment) or '' ]] [[ format(o.payment_term and o.payment_term.note) or '' ]]
diff --git a/addons/account_invoice_layout/report/special_message_invoice.rml b/addons/account_invoice_layout/report/special_message_invoice.rml index 4878163a1b8..16deca9e70c 100644 --- a/addons/account_invoice_layout/report/special_message_invoice.rml +++ b/addons/account_invoice_layout/report/special_message_invoice.rml @@ -17,16 +17,20 @@ - - - - - - + + + + + + + + + + @@ -35,87 +39,89 @@ - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + [[ repeatIn(objects,'o') ]] [[ setLang(o.partner_id.lang) ]] - - - - - - - -[[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] -[[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]] -[[ o.address_invoice_id.street ]] -[[ o.address_invoice_id.street2 or '' ]] -[[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]] -[[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]] -[[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]] - - - -Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]] -Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]] -VAT : [[ o.partner_id.vat or removeParentNode('para') ]] - - + + + + [[ o.partner_id.title or '' ]] [[ o.partner_id.name ]] + [[ o.address_invoice_id.title or '' ]] [[ o.address_invoice_id.name ]] + [[ o.address_invoice_id.street ]] + [[ o.address_invoice_id.street2 or '' ]] + [[ o.address_invoice_id.zip or '' ]] [[ o.address_invoice_id.city or '' ]] + [[ o.address_invoice_id.state_id and o.address_invoice_id.state_id.name or '' ]] + [[ o.address_invoice_id.country_id and o.address_invoice_id.country_id.name or '' ]] + + + + Tel. : [[ o.address_invoice_id.phone or removeParentNode('para') ]] + Fax : [[ o.address_invoice_id.fax or removeParentNode('para') ]] + VAT : [[ o.partner_id.vat or removeParentNode('para') ]] + + - + Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]] @@ -124,189 +130,145 @@ Canceled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]] - -Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] -[[ o.number ]] - - +Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]][[ o.number ]] + - -Document:[[o.name]] - - -Invoice Date: [[ formatLang(o.date_invoice,date=True) ]] - - -Customer Ref: [[ o.address_invoice_id.partner_id.ref or '/' ]] - - - - - - -Description - - -Taxes - - -Quantity - - -Unit Price - - -Disc. (%) - - -Price - - +Document:[[o.name]] + +Invoice Date: [[ formatLang(o.date_invoice,date=True) ]] +Customer Ref: [[ o.address_invoice_id.partner_id.ref or '/' ]] + + + + Description + Taxes + Quantity + Unit Price + Disc. (%) + Price +
[[ repeatIn(invoice_lines(o), 'a') ]] - + - - [[ a['type']=='text' and removeParentNode('blockTable')]] - - - [[ (a['type']=='title' or a['type']=='subtotal') and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['name'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['tax_types'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['quantity'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['uos'] ]] - - - - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['price_unit'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['discount'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['price_subtotal'] ]] - - - [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Times-bold'})) ]][[ a['currency'] ]] - + [[ a['type']=='text' and removeParentNode('blockTable')]] + [[ (a['type']=='title' or a['type']=='subtotal') and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['name'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['tax_types'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['quantity'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['uos'] ]] + + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_unit'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['discount'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['price_subtotal'] ]] + [[ a['type']=='subtotal' and ( setTag('para','para',{'fontName':'Helvetica-bold'})) ]][[ a['currency'] ]] + + + + [[ format(a['note'] or '') ]] + + + + + + + + - - [[ a['type']=='text' and a['name'] or removeParentNode('blockTable') ]] - - - [[ a['type']=='text' and '' or removeParentNode('blockTable') ]] - - - - - - - [[ a['note']=='' and removeParentNode('blockTable') ]][[ repeatIn(( a['note'] and a['note'].splitlines()) or [], 'note') ]] - - - [[ note or removeParentNode('blockTable') ]] - + [[ a['type']=='text' and a['name'] or removeParentNode('blockTable') ]] + [[ a['type']=='text' and '' or removeParentNode('blockTable') ]] [[ a['type']!='break' and removeParentNode('pageBreak')]] - + - - Description [[ a['type']!='break' and removeParentNode('blockTable')]] - - - Taxes - - - Quantity - - - Unit Price - - - Disc. (%) - - - Price - + Description [[ a['type']!='break' and removeParentNode('blockTable')]] + Taxes + Quantity + Unit Price + Disc. (%) + Price
- - + - - - -Tax + + + + + + + + + + + + -Base - - -Amount - - - - -[[ repeatIn(o.tax_line,'t') ]] [[ t.name ]] - - -[[ '%.2f' % t.base ]] - - -[[ '%.2f' % t.amount]] + + + Total (Excl. taxes): + [[ '%.2f' % o.amount_untaxed ]] [[o.currency_id.code ]] + + + Taxes: + [[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] + + + Total (Incl. taxes): + [[ '%.2f' % o.amount_total ]] [[o.currency_id.code ]] + + - - - + -Total (excl. taxes): + + + Tax + Base + Amount + + + [[ repeatIn(o.tax_line,'t') ]][[ t.name ]] + [[ '%.2f' % t.base ]] + [[ '%.2f' % t.amount]] + + -[[ '%.2f' % o.amount_untaxed ]] [[o.currency_id.code ]] + + + + + + + + + + + + - - -Taxes: - - -[[ '%.2f' % o.amount_tax ]] [[o.currency_id.code ]] - - - - -Total (incl. taxes): + + + - - -[[ '%.2f' % o.amount_total ]] [[o.currency_id.code ]] - - - - - - - [[ format(o.comment) or '' ]] [[ format(o.payment_term and o.payment_term.note) or '' ]] + + +
[[ repeatIn((spcl_msg(data['form']) and spcl_msg(data['form']).splitlines()) or [], 'note') ]] [[ note or removeParentNode('para') ]] diff --git a/addons/hr/hr.py b/addons/hr/hr.py index 5489735db29..3fe64ea6bba 100644 --- a/addons/hr/hr.py +++ b/addons/hr/hr.py @@ -22,6 +22,7 @@ from mx import DateTime import time +import math from osv import fields, osv from tools.translate import _ @@ -34,50 +35,57 @@ class hr_timesheet_group(osv.osv): 'timesheet_id' : fields.one2many('hr.timesheet', 'tgroup_id', 'Working Time'), 'manager' : fields.many2one('res.users', 'Workgroup manager'), } - # - # TODO: improve; very slow ! - # bug if transition to another period - # + def interval_min_get(self, cr, uid, id, dt_from, hours): + if not id: + return [(dt_from-DateTime.RelativeDateTime(hours=int(hours)*3), dt_from)] + todo = hours + cycle = 0 + result = [] + maxrecur = 100 + current_hour = dt_from.hour + while (todo>0) and maxrecur: + cr.execute("select hour_from,hour_to from hr_timesheet where dayofweek='%s' and tgroup_id=%s order by hour_from desc", (dt_from.day_of_week,id)) + for (hour_from,hour_to) in cr.fetchall(): + if (hour_from0): + m = min(hour_to, current_hour) + if (m-hour_from)>todo: + hour_from = m-todo + d1 = DateTime.DateTime(dt_from.year,dt_from.month,dt_from.day,int(math.floor(hour_from)),int((hour_from%1) * 60)) + d2 = DateTime.DateTime(dt_from.year,dt_from.month,dt_from.day,int(math.floor(m)),int((m%1) * 60)) + result.append((d1, d2)) + current_hour = hour_from + todo -= (m-hour_from) + dt_from -= DateTime.RelativeDateTime(days=1) + current_hour = 24 + maxrecur -= 1 + result.reverse() + return result + def interval_get(self, cr, uid, id, dt_from, hours, byday=True): if not id: return [(dt_from,dt_from+DateTime.RelativeDateTime(hours=int(hours)*3))] todo = hours cycle = 0 result = [] - while todo>0: + maxrecur = 100 + current_hour = dt_from.hour + while (todo>0) and maxrecur: cr.execute("select hour_from,hour_to from hr_timesheet where dayofweek='%s' and tgroup_id=%s order by hour_from", (dt_from.day_of_week,id)) for (hour_from,hour_to) in cr.fetchall(): - - import math - - hour_from = '%02d:%02d' % (math.floor(abs(hour_from)),round(abs(hour_from)%1+0.01,2) * 60) - hour_to = '%02d:%02d' % (math.floor(abs(hour_to)),round(abs(hour_to)%1+0.01,2) * 60) - - h1,m1 = map(int,hour_from.split(':')) - h2,m2 = map(int,hour_to.split(':')) - d1 = DateTime.DateTime(dt_from.year,dt_from.month,dt_from.day,h1,m1) - d2 = DateTime.DateTime(dt_from.year,dt_from.month,dt_from.day,h2,m2) - if dt_from7 and todo==hours: - return [(dt_from,dt_from+DateTime.RelativeDateTime(hours=hours*3))] - if byday: - i = 1 - while icurrent_hour) and (todo>0): + m = max(hour_from, current_hour) + if (hour_to-m)>todo: + hour_to = m+todo + d1 = DateTime.DateTime(dt_from.year,dt_from.month,dt_from.day,int(math.floor(m)),int((m%1) * 60)) + d2 = DateTime.DateTime(dt_from.year,dt_from.month,dt_from.day,int(math.floor(hour_to)),int((hour_to%1) * 60)) + result.append((d1, d2)) + current_hour = hour_to + todo -= (hour_to - m) + dt_from += DateTime.RelativeDateTime(days=1) + current_hour = 0 + maxrecur -= 1 return result + hr_timesheet_group() diff --git a/addons/membership/membership_demo.xml b/addons/membership/membership_demo.xml index dba3e44abc3..35b04539ce3 100644 --- a/addons/membership/membership_demo.xml +++ b/addons/membership/membership_demo.xml @@ -26,7 +26,7 @@ membership - 0 + Membership-0 @@ -36,7 +36,7 @@ membership account - 1254 + Membership-1254 diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index 726b7c0325f..e1f02ec39a6 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -380,6 +380,12 @@ class mrp_production(osv.osv): result[prod.id]['cycle_total'] += wc.cycle return result + def _production_date_end(self, cr, uid, ids, prop, unknow_none, context={}): + result = {} + for prod in self.browse(cr, uid, ids, context=context): + result[prod.id] = prod.date_planned + return result + def _production_date(self, cr, uid, ids, prop, unknow_none, context={}): result = {} for prod in self.browse(cr, uid, ids, context=context): @@ -408,7 +414,8 @@ class mrp_production(osv.osv): 'location_dest_id': fields.many2one('stock.location', 'Finished Products Location', required=True, help="Location where the system will stock the finished products."), - 'date_planned_date': fields.function(_production_date, method=True, type='date', string='Planned Date'), + 'date_planned_end': fields.function(_production_date_end, method=True, type='date', string='Scheduled End'), + 'date_planned_date': fields.function(_production_date, method=True, type='date', string='Scheduled Date'), 'date_planned': fields.datetime('Scheduled date', required=True, select=1), 'date_start': fields.datetime('Start Date'), 'date_finnished': fields.datetime('End Date'), @@ -456,7 +463,8 @@ class mrp_production(osv.osv): default.update({ 'name': self.pool.get('ir.sequence').get(cr, uid, 'mrp.production'), 'move_lines' : [], - 'move_created_ids': [] + 'move_created_ids': [], + 'state': 'draft' }) return super(mrp_production, self).copy(cr, uid, id, default, context) @@ -722,9 +730,10 @@ stock_move() class mrp_production_workcenter_line(osv.osv): _name = 'mrp.production.workcenter.line' - _description = 'Production workcenters used' + _description = 'Work Orders' + _order = 'sequence' _columns = { - 'name': fields.char('Name', size=64, required=True), + 'name': fields.char('Work Order', size=64, required=True), 'workcenter_id': fields.many2one('mrp.workcenter', 'Workcenter', required=True), 'cycle': fields.float('Nbr of cycle', digits=(16,2)), 'hour': fields.float('Nbr of hour', digits=(16,2)), diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index c2f8d94eaac..5ae97154a42 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -409,9 +409,9 @@ mrp.production gantt - + - + diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py index 94a265c6bfb..94f1460ca1c 100644 --- a/addons/mrp_operations/mrp_operations.py +++ b/addons/mrp_operations/mrp_operations.py @@ -2,7 +2,7 @@ ############################################################################## # # OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved +# dmr Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved # $Id$ # # This program is free software: you can redistribute it and/or modify @@ -39,22 +39,53 @@ from tools.translate import _ # TODO: Work Center may be recursive ? # +class stock_move(osv.osv): + _inherit = 'stock.move' + _columns = { + 'move_dest_id_lines': fields.one2many('stock.move','move_dest_id', 'Children Moves') + } +stock_move() + class mrp_production_workcenter_line(osv.osv): + def _get_date_date(self, cr, uid, ids, field_name, arg, context): + res={} + for op in self.browse(cr, uid, ids, context=context): + if op.date_start: + res[op.id] = op.date_start[:10] + else: + res[op.id]=False + return res + def _get_date_end(self, cr, uid, ids, field_name, arg, context): + res={} + for op in self.browse(cr, uid, ids, context=context): + d = DateTime.strptime(op.date_planned,'%Y-%m-%d %H:%M:%S') + i = self.pool.get('hr.timesheet.group').interval_get(cr, uid, op.workcenter_id.timesheet_id.id or False, d, op.hour or 0.0) + if i: + res[op.id] = i[-1][1].strftime('%Y-%m-%d %H:%M:%S') + else: + res[op.id] = op.date_planned + return res _inherit = 'mrp.production.workcenter.line' _columns = { 'state': fields.selection([('draft','Draft'),('startworking', 'In Progress'),('pause','Pause'),('cancel','Canceled'),('done','Finished')],'Status', readonly=True), - 'date_planned': fields.related('production_id', 'date_planned', type='datetime', string='Date Planned'), + 'date_start_date': fields.function(_get_date_date, method=True, string='Start Date', type='date'), + 'date_planned': fields.datetime('Scheduled Date'), + 'date_planned_end': fields.function(_get_date_end, method=True, string='End Date', type='datetime'), 'date_start': fields.datetime('Start Date'), 'date_finnished': fields.datetime('End Date'), - 'delay': fields.char('Delay',size=128,help="This is delay between operation start and stop in this workcenter",readonly=True), - 'production_state':fields.related('production_id','state',type='char',string='Prod.State'), - 'product':fields.related('production_id','product_id',type='many2one',relation='product.product',string='Product'), - 'qty':fields.related('production_id','product_qty',type='float',string='Qty'), - 'uom':fields.related('production_id','product_uom',type='many2one',relation='product.uom',string='UOM'), + 'delay': fields.float('Working Hours',help="This is delay between operation start and stop in this workcenter",readonly=True), + 'production_state':fields.related('production_id','state', + type='selection', + selection=[('draft','Draft'),('picking_except', 'Packing Exception'),('confirmed','Waiting Goods'),('ready','Ready to Produce'),('in_production','In Production'),('cancel','Canceled'),('done','Done')], + string='Prod.State', readonly=True), + 'product':fields.related('production_id','product_id',type='many2one',relation='product.product',string='Product', + readonly=True), + 'qty':fields.related('production_id','product_qty',type='float',string='Qty',readonly=True), + 'uom':fields.related('production_id','product_uom',type='many2one',relation='product.uom',string='UOM',readonly=True), } _defaults = { 'state': lambda *a: 'draft', - 'delay': lambda *a: '0 Days 0 hrs and 0 mins' + 'delay': lambda *a: 0.0 } def modify_production_order_state(self,cr,uid,ids,action): @@ -82,17 +113,28 @@ class mrp_production_workcenter_line(osv.osv): wf_service.trg_validate(uid, 'mrp.production', oper_obj.production_id.id, 'button_produce_done', cr) return + def write(self, cr, uid, ids, vals, context={}, update=True): + result = super(mrp_production_workcenter_line, self).write(cr, uid, ids, vals, context=context) + if vals.get('date_planned', False) and update: + pids = {} + pids2 = {} + for prod in self.browse(cr, uid, ids, context=context): + if prod.production_id.workcenter_lines: + dstart = min(vals['date_planned'], prod.production_id.workcenter_lines[0]['date_planned']) + self.pool.get('mrp.production').write(cr, uid, [prod.production_id.id], {'date_start':dstart}, context=context, mini=False) + return result + def action_draft(self, cr, uid, ids): self.write(cr, uid, ids, {'state':'draft'}) return True def action_start_working(self, cr, uid, ids): self.modify_production_order_state(cr,uid,ids,'start') - self.write(cr, uid, ids, {'state':'startworking'}) + self.write(cr, uid, ids, {'state':'startworking', 'date_start': time.strftime('%Y-%m-%d %H:%M:%S')}) return True def action_done(self, cr, uid, ids): - self.write(cr, uid, ids, {'state':'done'}) + self.write(cr, uid, ids, {'state':'done', 'date_finnished': time.strftime('%Y-%m-%d %H:%M:%S')}) self.modify_production_order_state(cr,uid,ids,'done') return True @@ -111,9 +153,18 @@ class mrp_production_workcenter_line(osv.osv): mrp_production_workcenter_line() class mrp_production(osv.osv): - _name = 'mrp.production' _inherit = 'mrp.production' - _description = 'Production' + _columns = { + 'allow_reorder': fields.boolean('Free Serialisation', help="Check this to be able to move independently all production orders, without moving dependent ones."), + } + + def _production_date_end(self, cr, uid, ids, prop, unknow_none, context={}): + result = {} + for prod in self.browse(cr, uid, ids, context=context): + result[prod.id] = prod.date_planned + for line in prod.workcenter_lines: + result[prod.id] = max(line.date_planned_end, result[prod.id]) + return result def action_production_end(self, cr, uid, ids): obj=self.browse(cr,uid,ids)[0] @@ -127,6 +178,108 @@ class mrp_production(osv.osv): tmp=self.pool.get('mrp.production.workcenter.line').action_cancel(cr,uid,[workcenter_line.id]) return super(mrp_production,self).action_cancel(cr,uid,ids) + def _compute_planned_workcenter(self, cr, uid, ids, context={}, mini=False): + dt_end = DateTime.now() + for po in self.browse(cr, uid, ids, context=context): + dt_end = DateTime.strptime(po.date_start or po.date_planned, '%Y-%m-%d %H:%M:%S') + if not po.date_start: + self.write(cr, uid, [po.id], { + 'date_start': po.date_planned + }, context=context, update=False) + old = None + for wci in range(len(po.workcenter_lines)): + wc = po.workcenter_lines[wci] + if (old is None) or (wc.sequence>old): + dt = dt_end + if context.get('__last_update'): + del context['__last_update'] + if (wc.date_planneddt): + if l.production_id.state not in ('done','cancel'): + for wc in l.production_id.workcenter_lines: + i = self.pool.get('hr.timesheet.group').interval_min_get( + cr, + uid, + wc.workcenter_id.timesheet_id.id or False, + dt, wc.hour or 0.0 + ) + dt = i[0][0] + if l.production_id.date_start>dt.strftime('%Y-%m-%d %H:%M:%S'): + self.write(cr, uid, [l.production_id.id], {'date_start':dt.strftime('%Y-%m-%d %H:%M:%S')}, mini=True) + return True + + def _move_futur(self, cr, uid, ids, context={}): + for po in self.browse(cr, uid, ids, context): + if po.allow_reorder: + continue + for line in po.move_created_ids: + l = line + while l.move_dest_id: + l = l.move_dest_id + if l.state in ('done','cancel','draft'): + break + if l.production_id.state in ('done','cancel'): + break + if l.production_id and (l.production_id.date_start=60: - m+=1 - s=0 - if m>=60: - h+=1 - m=0 - if h>=24: - days+=1 - h=0 - delay=str(days) +" Days "+ str(h) + " hrs and " + str(m)+ " mins" - return delay + a = datetime.datetime.strptime(time_lst[i-1],'%Y:%m:%d %H:%M:%S') + b = datetime.datetime.strptime(time_lst[i],'%Y:%m:%d %H:%M:%S') + diff += (b-a).days * 24 + diff += (b-a).seconds / (60*60) + return diff def check_operation(self,cr,uid,vals): code_ids=self.pool.get('mrp_operations.operation.code').search(cr,uid,[('id','=',vals['code_id'])]) @@ -300,8 +439,8 @@ class mrp_operations_operation(osv.osv): 'order_date': fields.function(_get_order_date,method=True,string='Order Date',type='date',store={'mrp.production':(_order_date_search_production,['date_planned'], 10)}), } _defaults={ - 'date_start': lambda *a:DateTime.now().strftime('%Y-%m-%d %H:%M:%S') - } + 'date_start': lambda *a:DateTime.now().strftime('%Y-%m-%d %H:%M:%S') + } mrp_operations_operation() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/mrp_operations/mrp_operations_view.xml b/addons/mrp_operations/mrp_operations_view.xml index 6d0ac9bcee3..7f248929dd5 100644 --- a/addons/mrp_operations/mrp_operations_view.xml +++ b/addons/mrp_operations/mrp_operations_view.xml @@ -10,6 +10,7 @@ + @@ -31,22 +32,52 @@
- - - - - - - - - -