Merge lp:~savoirfairelinux-openerp/account-invoice-report/invoice_print_report_balance_payment into lp:~account-core-editors/account-invoice-report/7.0
- invoice_print_report_balance_payment
- Merge into 7.0
Status: | Merged |
---|---|
Merged at revision: | 47 |
Proposed branch: | lp:~savoirfairelinux-openerp/account-invoice-report/invoice_print_report_balance_payment |
Merge into: | lp:~account-core-editors/account-invoice-report/7.0 |
Diff against target: |
722 lines (+681/-0) 8 files modified
invoice_print_report_balance_payment/__init__.py (+24/-0) invoice_print_report_balance_payment/__openerp__.py (+63/-0) invoice_print_report_balance_payment/account_invoice.py (+81/-0) invoice_print_report_balance_payment/partner.py (+46/-0) invoice_print_report_balance_payment/report/__init__.py (+22/-0) invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.py (+28/-0) invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.rml (+406/-0) invoice_print_report_balance_payment/reports.xml (+11/-0) |
To merge this branch: | bzr merge lp:~savoirfairelinux-openerp/account-invoice-report/invoice_print_report_balance_payment |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Guewen Baconnier @ Camptocamp | Approve | ||
Maxime Chambreuil (http://www.savoirfairelinux.com) | code review | Approve | |
Sandy Carter (http://www.savoirfairelinux.com) | Abstain | ||
Joël Grand-Guillaume @ camptocamp | code review, no tests | Approve | |
Review via email: mp+198457@code.launchpad.net |
Commit message
Description of the change
Prints invoices with balance payments (and other things)
Changes the default invoice layout to add a few things, the main of which is the balance payment
fields. Under the Total field, 3 new lines appear:
* Previous balance: The previous balance of the customer at the date of the previous invoice.
* Payments: The amount of payments that have been made between the date of the last invoice and
the date of the printed invoice.
* To Pay: The total amount owed by the customer at the date of this invoice.
Also, it changes two minor and unrelated aspects:
* Replaces "Source" by "Contract Number".
* Removes the Tax column in the invoice line table.
Joël Grand-Guillaume @ camptocamp (jgrandguillaume-c2c) wrote : | # |
Sandy Carter (http://www.savoirfairelinux.com) (sandy-carter) wrote : | # |
Missing "-------------" between l.81,82 this causes the markup to format strangely
l.73 There are some other funny formatting glitches in the description
There are also a lot of unused declarations of _logger
- 45. By Sandy Carter (http://www.savoirfairelinux.com)
-
Removed logger, fix markup formatting
Sandy Carter (http://www.savoirfairelinux.com) (sandy-carter) wrote : | # |
Reviewed my own MP...
Woops
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) wrote : | # |
l27 to l29, l262: Add "from . import ..."
- 46. By Sandy Carter (http://www.savoirfairelinux.com)
-
[FIX] Using local imports
- 47. By Sandy Carter (http://www.savoirfairelinux.com)
-
[FIX] Using local imports - take 2
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) : | # |
Sandy Carter (http://www.savoirfairelinux.com) (sandy-carter) wrote : | # |
Can someone merge this, please.
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) : | # |
Preview Diff
1 | === added directory 'invoice_print_report_balance_payment' | |||
2 | === added file 'invoice_print_report_balance_payment/__init__.py' | |||
3 | --- invoice_print_report_balance_payment/__init__.py 1970-01-01 00:00:00 +0000 | |||
4 | +++ invoice_print_report_balance_payment/__init__.py 2013-12-26 20:27:44 +0000 | |||
5 | @@ -0,0 +1,24 @@ | |||
6 | 1 | # -*- encoding: utf-8 -*- | ||
7 | 2 | ############################################################################### | ||
8 | 3 | # | ||
9 | 4 | # OpenERP, Open Source Management Solution | ||
10 | 5 | # Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). | ||
11 | 6 | # | ||
12 | 7 | # This program is free software: you can redistribute it and/or modify | ||
13 | 8 | # it under the terms of the GNU General Public License as | ||
14 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
15 | 10 | # License, or (at your option) any later version. | ||
16 | 11 | # | ||
17 | 12 | # This program is distributed in the hope that it will be useful, | ||
18 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | 15 | # GNU General Public License for more details. | ||
21 | 16 | # | ||
22 | 17 | # You should have received a copy of the GNU General Public License | ||
23 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
24 | 19 | # | ||
25 | 20 | ############################################################################### | ||
26 | 21 | |||
27 | 22 | from . import account_invoice | ||
28 | 23 | from . import partner | ||
29 | 24 | from . import report | ||
30 | 0 | 25 | ||
31 | === added file 'invoice_print_report_balance_payment/__openerp__.py' | |||
32 | --- invoice_print_report_balance_payment/__openerp__.py 1970-01-01 00:00:00 +0000 | |||
33 | +++ invoice_print_report_balance_payment/__openerp__.py 2013-12-26 20:27:44 +0000 | |||
34 | @@ -0,0 +1,63 @@ | |||
35 | 1 | # -*- encoding: utf-8 -*- | ||
36 | 2 | ############################################################################### | ||
37 | 3 | # | ||
38 | 4 | # OpenERP, Open Source Management Solution | ||
39 | 5 | # Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). | ||
40 | 6 | # | ||
41 | 7 | # This program is free software: you can redistribute it and/or modify | ||
42 | 8 | # it under the terms of the GNU General Public License as | ||
43 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
44 | 10 | # License, or (at your option) any later version. | ||
45 | 11 | # | ||
46 | 12 | # This program is distributed in the hope that it will be useful, | ||
47 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
48 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
49 | 15 | # GNU General Public License for more details. | ||
50 | 16 | # | ||
51 | 17 | # You should have received a copy of the GNU General Public License | ||
52 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
53 | 19 | # | ||
54 | 20 | ############################################################################### | ||
55 | 21 | |||
56 | 22 | { | ||
57 | 23 | "name": "Print invoices with balance payments", | ||
58 | 24 | 'version': '1.0', | ||
59 | 25 | 'author': 'Savoir-faire Linux', | ||
60 | 26 | 'maintainer': 'Savoir-faire Linux', | ||
61 | 27 | 'website': 'http://www.savoirfairelinux.com', | ||
62 | 28 | 'license': 'AGPL-3', | ||
63 | 29 | "category": "Accounting & Finance", | ||
64 | 30 | 'summary': "Prints invoices with balance payments (and other things)", | ||
65 | 31 | 'description': """ | ||
66 | 32 | Print invoices with balance payments | ||
67 | 33 | ==================================== | ||
68 | 34 | Changes the default invoice layout to add a few things, the main of which is the balance payment | ||
69 | 35 | fields. Under the Total field, 3 new lines appear: | ||
70 | 36 | |||
71 | 37 | * Previous balance: The previous balance of the customer at the date of the previous invoice. | ||
72 | 38 | * Payments: The amount of payments that have been made between the date of the last invoice and \ | ||
73 | 39 | the date of the printed invoice. | ||
74 | 40 | * To Pay: The total amount owed by the customer at the date of this invoice. | ||
75 | 41 | |||
76 | 42 | Also, it changes two minor and unrelated aspects: | ||
77 | 43 | |||
78 | 44 | * Replaces "Source" by "Contract Number". | ||
79 | 45 | * Removes the Tax column in the invoice line table. | ||
80 | 46 | |||
81 | 47 | Contributors: | ||
82 | 48 | ------------- | ||
83 | 49 | * Virgil Dupras (virgil.dupras@savoirfairelinux.com) | ||
84 | 50 | """, | ||
85 | 51 | "depends": ['account'], | ||
86 | 52 | 'external_dependencies': { | ||
87 | 53 | 'python': [], | ||
88 | 54 | }, | ||
89 | 55 | 'data': [], | ||
90 | 56 | 'update_xml': [ | ||
91 | 57 | 'reports.xml', | ||
92 | 58 | ], | ||
93 | 59 | 'demo': [], | ||
94 | 60 | 'test': [], | ||
95 | 61 | 'installable': True, | ||
96 | 62 | 'active': False, | ||
97 | 63 | } | ||
98 | 0 | 64 | ||
99 | === added file 'invoice_print_report_balance_payment/account_invoice.py' | |||
100 | --- invoice_print_report_balance_payment/account_invoice.py 1970-01-01 00:00:00 +0000 | |||
101 | +++ invoice_print_report_balance_payment/account_invoice.py 2013-12-26 20:27:44 +0000 | |||
102 | @@ -0,0 +1,81 @@ | |||
103 | 1 | # -*- encoding: utf-8 -*- | ||
104 | 2 | ############################################################################### | ||
105 | 3 | # | ||
106 | 4 | # OpenERP, Open Source Management Solution | ||
107 | 5 | # Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). | ||
108 | 6 | # | ||
109 | 7 | # This program is free software: you can redistribute it and/or modify | ||
110 | 8 | # it under the terms of the GNU General Public License as | ||
111 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
112 | 10 | # License, or (at your option) any later version. | ||
113 | 11 | # | ||
114 | 12 | # This program is distributed in the hope that it will be useful, | ||
115 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
116 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
117 | 15 | # GNU General Public License for more details. | ||
118 | 16 | # | ||
119 | 17 | # You should have received a copy of the GNU General Public License | ||
120 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
121 | 19 | # | ||
122 | 20 | ############################################################################### | ||
123 | 21 | |||
124 | 22 | from openerp.osv import orm, fields | ||
125 | 23 | |||
126 | 24 | |||
127 | 25 | class account_invoice(orm.Model): | ||
128 | 26 | _inherit = 'account.invoice' | ||
129 | 27 | |||
130 | 28 | def _previous_invoice_get(self, cr, uid, ids, field_names, arg, context=None): | ||
131 | 29 | res = {} | ||
132 | 30 | for invoice in self.browse(cr, uid, ids, context=context): | ||
133 | 31 | domain = [ | ||
134 | 32 | ('date_invoice', '<', invoice.date_invoice), | ||
135 | 33 | ('partner_id', '=', invoice.partner_id.id), | ||
136 | 34 | ] | ||
137 | 35 | search_result = self.search( | ||
138 | 36 | cr, uid, domain, limit=1, order='date_invoice desc') | ||
139 | 37 | res[invoice.id] = search_result[0] if search_result else False | ||
140 | 38 | return res | ||
141 | 39 | |||
142 | 40 | def _previous_balance_get(self, cr, uid, ids, field_names, arg, context=None): | ||
143 | 41 | res = {} | ||
144 | 42 | partner_obj = self.pool.get('res.partner') | ||
145 | 43 | for invoice in self.browse(cr, uid, ids, context=context): | ||
146 | 44 | if invoice.previous_invoice_id: | ||
147 | 45 | res[invoice.id] = partner_obj.get_balance_at_date( | ||
148 | 46 | cr, uid, invoice.partner_id.id, invoice.previous_invoice_id.date_invoice, | ||
149 | 47 | context=context | ||
150 | 48 | ) | ||
151 | 49 | else: | ||
152 | 50 | res[invoice.id] = 0.0 | ||
153 | 51 | return res | ||
154 | 52 | |||
155 | 53 | def _to_pay_get(self, cr, uid, ids, field_names, arg, context=None): | ||
156 | 54 | res = {} | ||
157 | 55 | partner_obj = self.pool.get('res.partner') | ||
158 | 56 | for invoice in self.browse(cr, uid, ids, context=context): | ||
159 | 57 | res[invoice.id] = partner_obj.get_balance_at_date( | ||
160 | 58 | cr, uid, invoice.partner_id.id, invoice.date_invoice, | ||
161 | 59 | context=context | ||
162 | 60 | ) | ||
163 | 61 | return res | ||
164 | 62 | |||
165 | 63 | def _payment_total_get(self, cr, uid, ids, field_names, arg, context=None): | ||
166 | 64 | res = {} | ||
167 | 65 | for invoice in self.browse(cr, uid, ids, context=context): | ||
168 | 66 | res[invoice.id] = invoice.previous_balance - \ | ||
169 | 67 | (invoice.to_pay - invoice.amount_total) | ||
170 | 68 | return res | ||
171 | 69 | |||
172 | 70 | _columns = { | ||
173 | 71 | 'previous_invoice_id': fields.function(_previous_invoice_get, type='many2one', relation='account.invoice'), | ||
174 | 72 | 'previous_balance': fields.function(_previous_balance_get, type='float'), | ||
175 | 73 | 'to_pay': fields.function(_to_pay_get, type='float'), | ||
176 | 74 | 'payment_total': fields.function(_payment_total_get, type='float'), | ||
177 | 75 | } | ||
178 | 76 | |||
179 | 77 | def invoice_print(self, cr, uid, ids, context=None): | ||
180 | 78 | result = super(account_invoice, self).invoice_print( | ||
181 | 79 | cr, uid, ids, context=context) | ||
182 | 80 | result['report_name'] = 'account.invoice.balance_payment' | ||
183 | 81 | return result | ||
184 | 0 | 82 | ||
185 | === added file 'invoice_print_report_balance_payment/partner.py' | |||
186 | --- invoice_print_report_balance_payment/partner.py 1970-01-01 00:00:00 +0000 | |||
187 | +++ invoice_print_report_balance_payment/partner.py 2013-12-26 20:27:44 +0000 | |||
188 | @@ -0,0 +1,46 @@ | |||
189 | 1 | # -*- encoding: utf-8 -*- | ||
190 | 2 | ############################################################################### | ||
191 | 3 | # | ||
192 | 4 | # OpenERP, Open Source Management Solution | ||
193 | 5 | # Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). | ||
194 | 6 | # | ||
195 | 7 | # This program is free software: you can redistribute it and/or modify | ||
196 | 8 | # it under the terms of the GNU General Public License as | ||
197 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
198 | 10 | # License, or (at your option) any later version. | ||
199 | 11 | # | ||
200 | 12 | # This program is distributed in the hope that it will be useful, | ||
201 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
202 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
203 | 15 | # GNU General Public License for more details. | ||
204 | 16 | # | ||
205 | 17 | # You should have received a copy of the GNU General Public License | ||
206 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
207 | 19 | # | ||
208 | 20 | ############################################################################### | ||
209 | 21 | |||
210 | 22 | import datetime | ||
211 | 23 | |||
212 | 24 | from openerp.osv import orm | ||
213 | 25 | |||
214 | 26 | |||
215 | 27 | class res_partner(orm.Model): | ||
216 | 28 | _inherit = 'res.partner' | ||
217 | 29 | |||
218 | 30 | def get_balance_at_date(self, cr, uid, id, date, context=None): | ||
219 | 31 | query = self.pool.get('account.move.line')._query_get( | ||
220 | 32 | cr, uid, context=context) | ||
221 | 33 | if isinstance(date, datetime.date): | ||
222 | 34 | date = date.strftime('%Y-%m-%d') | ||
223 | 35 | sql = """SELECT SUM(l.debit-l.credit) | ||
224 | 36 | FROM account_move_line l | ||
225 | 37 | JOIN account_move m ON (l.move_id=m.id) | ||
226 | 38 | LEFT JOIN account_account a ON (l.account_id=a.id) | ||
227 | 39 | WHERE a.type IN ('receivable','payable') | ||
228 | 40 | AND l.partner_id = %s | ||
229 | 41 | AND m.date <= '%s' | ||
230 | 42 | AND %s | ||
231 | 43 | """ % (id, date, query) | ||
232 | 44 | cr.execute(sql) | ||
233 | 45 | row = cr.fetchone() | ||
234 | 46 | return row[0] if row is not None else 0 | ||
235 | 0 | 47 | ||
236 | === added directory 'invoice_print_report_balance_payment/report' | |||
237 | === added file 'invoice_print_report_balance_payment/report/__init__.py' | |||
238 | --- invoice_print_report_balance_payment/report/__init__.py 1970-01-01 00:00:00 +0000 | |||
239 | +++ invoice_print_report_balance_payment/report/__init__.py 2013-12-26 20:27:44 +0000 | |||
240 | @@ -0,0 +1,22 @@ | |||
241 | 1 | # -*- encoding: utf-8 -*- | ||
242 | 2 | ############################################################################### | ||
243 | 3 | # | ||
244 | 4 | # OpenERP, Open Source Management Solution | ||
245 | 5 | # Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). | ||
246 | 6 | # | ||
247 | 7 | # This program is free software: you can redistribute it and/or modify | ||
248 | 8 | # it under the terms of the GNU General Public License as | ||
249 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
250 | 10 | # License, or (at your option) any later version. | ||
251 | 11 | # | ||
252 | 12 | # This program is distributed in the hope that it will be useful, | ||
253 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
254 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
255 | 15 | # GNU General Public License for more details. | ||
256 | 16 | # | ||
257 | 17 | # You should have received a copy of the GNU General Public License | ||
258 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
259 | 19 | # | ||
260 | 20 | ############################################################################### | ||
261 | 21 | |||
262 | 22 | from . import invoice_print_report_balance_payment | ||
263 | 0 | 23 | ||
264 | === added file 'invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.py' | |||
265 | --- invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.py 1970-01-01 00:00:00 +0000 | |||
266 | +++ invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.py 2013-12-26 20:27:44 +0000 | |||
267 | @@ -0,0 +1,28 @@ | |||
268 | 1 | # -*- encoding: utf-8 -*- | ||
269 | 2 | ############################################################################### | ||
270 | 3 | # | ||
271 | 4 | # OpenERP, Open Source Management Solution | ||
272 | 5 | # Copyright (C) 2013 Savoir-faire Linux (<http://www.savoirfairelinux.com>). | ||
273 | 6 | # | ||
274 | 7 | # This program is free software: you can redistribute it and/or modify | ||
275 | 8 | # it under the terms of the GNU General Public License as | ||
276 | 9 | # published by the Free Software Foundation, either version 3 of the | ||
277 | 10 | # License, or (at your option) any later version. | ||
278 | 11 | # | ||
279 | 12 | # This program is distributed in the hope that it will be useful, | ||
280 | 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
281 | 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
282 | 15 | # GNU General Public License for more details. | ||
283 | 16 | # | ||
284 | 17 | # You should have received a copy of the GNU General Public License | ||
285 | 18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
286 | 19 | # | ||
287 | 20 | ############################################################################### | ||
288 | 21 | |||
289 | 22 | from openerp.report import report_sxw | ||
290 | 23 | |||
291 | 24 | report_sxw.report_sxw( | ||
292 | 25 | 'report.account.invoice.balance_payment', | ||
293 | 26 | 'account.invoice', | ||
294 | 27 | 'addons/invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.rml', | ||
295 | 28 | ) | ||
296 | 0 | 29 | ||
297 | === added file 'invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.rml' | |||
298 | --- invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.rml 1970-01-01 00:00:00 +0000 | |||
299 | +++ invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.rml 2013-12-26 20:27:44 +0000 | |||
300 | @@ -0,0 +1,406 @@ | |||
301 | 1 | <?xml version="1.0"?> | ||
302 | 2 | <document filename="Invoices.pdf"> | ||
303 | 3 | <template title="Invoices" author="OpenERP S.A.(sales@openerp.com)" allowSplitting="20"> | ||
304 | 4 | <pageTemplate id="first"> | ||
305 | 5 | <frame id="first" x1="34.0" y1="28.0" width="530" height="786"/> | ||
306 | 6 | </pageTemplate> | ||
307 | 7 | </template> | ||
308 | 8 | <stylesheet> | ||
309 | 9 | <blockTableStyle id="Standard_Outline"> | ||
310 | 10 | <blockAlignment value="LEFT"/> | ||
311 | 11 | <blockValign value="TOP"/> | ||
312 | 12 | </blockTableStyle> | ||
313 | 13 | <blockTableStyle id="Table_Partner_Address"> | ||
314 | 14 | <blockAlignment value="LEFT"/> | ||
315 | 15 | <blockValign value="TOP"/> | ||
316 | 16 | </blockTableStyle> | ||
317 | 17 | <blockTableStyle id="Table_Invoice_General_Header"> | ||
318 | 18 | <blockAlignment value="LEFT"/> | ||
319 | 19 | <blockValign value="TOP"/> | ||
320 | 20 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/> | ||
321 | 21 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/> | ||
322 | 22 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/> | ||
323 | 23 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/> | ||
324 | 24 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/> | ||
325 | 25 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/> | ||
326 | 26 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/> | ||
327 | 27 | <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="2,0" stop="2,-1"/> | ||
328 | 28 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/> | ||
329 | 29 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/> | ||
330 | 30 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/> | ||
331 | 31 | <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/> | ||
332 | 32 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/> | ||
333 | 33 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/> | ||
334 | 34 | </blockTableStyle> | ||
335 | 35 | <blockTableStyle id="Table_General_Detail_Content"> | ||
336 | 36 | <blockAlignment value="LEFT"/> | ||
337 | 37 | <blockValign value="TOP"/> | ||
338 | 38 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="0,-1"/> | ||
339 | 39 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="0,0"/> | ||
340 | 40 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/> | ||
341 | 41 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="1,0" stop="1,-1"/> | ||
342 | 42 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="1,0" stop="1,0"/> | ||
343 | 43 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/> | ||
344 | 44 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="2,0" stop="2,-1"/> | ||
345 | 45 | <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="2,0" stop="2,-1"/> | ||
346 | 46 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="2,0" stop="2,0"/> | ||
347 | 47 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/> | ||
348 | 48 | <lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="3,0" stop="3,-1"/> | ||
349 | 49 | <lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="3,0" stop="3,-1"/> | ||
350 | 50 | <lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="3,0" stop="3,0"/> | ||
351 | 51 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/> | ||
352 | 52 | </blockTableStyle> | ||
353 | 53 | <blockTableStyle id="Table7"> | ||
354 | 54 | <blockAlignment value="LEFT"/> | ||
355 | 55 | <blockValign value="TOP"/> | ||
356 | 56 | <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/> | ||
357 | 57 | <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/> | ||
358 | 58 | <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/> | ||
359 | 59 | <lineStyle kind="LINEBELOW" colorName="#000000" start="3,-1" stop="3,-1"/> | ||
360 | 60 | <lineStyle kind="LINEBELOW" colorName="#000000" start="4,-1" stop="4,-1"/> | ||
361 | 61 | <lineStyle kind="LINEBELOW" colorName="#000000" start="5,-1" stop="5,-1"/> | ||
362 | 62 | </blockTableStyle> | ||
363 | 63 | <blockTableStyle id="Table8"> | ||
364 | 64 | <blockAlignment value="LEFT"/> | ||
365 | 65 | <blockValign value="TOP"/> | ||
366 | 66 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/> | ||
367 | 67 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/> | ||
368 | 68 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/> | ||
369 | 69 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="3,-1" stop="3,-1"/> | ||
370 | 70 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="4,-1" stop="4,-1"/> | ||
371 | 71 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="5,-1" stop="5,-1"/> | ||
372 | 72 | </blockTableStyle> | ||
373 | 73 | <blockTableStyle id="Table10"> | ||
374 | 74 | <blockAlignment value="LEFT"/> | ||
375 | 75 | <blockValign value="TOP"/> | ||
376 | 76 | <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/> | ||
377 | 77 | <lineStyle kind="LINEABOVE" colorName="#000000" start="2,0" stop="2,0"/> | ||
378 | 78 | <lineStyle kind="LINEABOVE" colorName="#000000" start="1,2" stop="1,2"/> | ||
379 | 79 | <lineStyle kind="LINEABOVE" colorName="#000000" start="2,2" stop="2,2"/> | ||
380 | 80 | </blockTableStyle> | ||
381 | 81 | <blockTableStyle id="Table9"> | ||
382 | 82 | <blockAlignment value="LEFT"/> | ||
383 | 83 | <blockValign value="TOP"/> | ||
384 | 84 | <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/> | ||
385 | 85 | <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/> | ||
386 | 86 | <lineStyle kind="LINEBELOW" colorName="#000000" start="2,-1" stop="2,-1"/> | ||
387 | 87 | </blockTableStyle> | ||
388 | 88 | <blockTableStyle id="Table2"> | ||
389 | 89 | <blockAlignment value="LEFT"/> | ||
390 | 90 | <blockValign value="TOP"/> | ||
391 | 91 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/> | ||
392 | 92 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/> | ||
393 | 93 | <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/> | ||
394 | 94 | </blockTableStyle> | ||
395 | 95 | <blockTableStyle id="Table1"> | ||
396 | 96 | <blockAlignment value="LEFT"/> | ||
397 | 97 | <blockValign value="TOP"/> | ||
398 | 98 | </blockTableStyle> | ||
399 | 99 | <initialize> | ||
400 | 100 | <paraStyle name="all" alignment="justify"/> | ||
401 | 101 | </initialize> | ||
402 | 102 | <paraStyle name="Standard"/> | ||
403 | 103 | <paraStyle name="Text body" spaceBefore="0.0" spaceAfter="6.0"/> | ||
404 | 104 | <paraStyle name="List" spaceBefore="0.0" spaceAfter="6.0"/> | ||
405 | 105 | <paraStyle name="Table Contents" spaceBefore="0.0" spaceAfter="6.0"/> | ||
406 | 106 | <paraStyle name="Caption" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/> | ||
407 | 107 | <paraStyle name="Index"/> | ||
408 | 108 | |||
409 | 109 | <paraStyle name="terp_header" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="12.0" spaceAfter="6.0"/> | ||
410 | 110 | <paraStyle name="terp_default_8" rightIndent="0.0" leftIndent="0.0" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
411 | 111 | <paraStyle name="Footer"/> | ||
412 | 112 | <paraStyle name="Horizontal Line" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/> | ||
413 | 113 | |||
414 | 114 | <paraStyle name="terp_tblheader_General" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> | ||
415 | 115 | <paraStyle name="terp_tblheader_Details" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/> | ||
416 | 116 | <paraStyle name="terp_tblheader_General_Centre" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> | ||
417 | 117 | <paraStyle name="terp_tblheader_General_Right" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> | ||
418 | 118 | <paraStyle name="terp_tblheader_Details_Centre" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/> | ||
419 | 119 | <paraStyle name="terp_tblheader_Details_Right" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/> | ||
420 | 120 | |||
421 | 121 | <paraStyle name="terp_default_Right_8" rightIndent="0.0" leftIndent="0.0" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
422 | 122 | <paraStyle name="terp_default_Centre_8" rightIndent="0.0" leftIndent="0.0" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> | ||
423 | 123 | <paraStyle name="terp_default_address" rightIndent="0.0" leftIndent="0.0" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
424 | 124 | <paraStyle name="terp_default_9" rightIndent="0.0" leftIndent="0.0" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
425 | 125 | <paraStyle name="terp_default_Bold_9" rightIndent="0.0" leftIndent="-3.0" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
426 | 126 | <paraStyle name="terp_default_Centre_9" rightIndent="0.0" leftIndent="0.0" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/> | ||
427 | 127 | <paraStyle name="terp_default_Right_9" rightIndent="0.0" leftIndent="0.0" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
428 | 128 | <paraStyle name="terp_default_Bold_Right_9" rightIndent="0.0" leftIndent="-3.0" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
429 | 129 | <paraStyle name="terp_default_2" rightIndent="0.0" leftIndent="0.0" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/> | ||
430 | 130 | <paraStyle name="terp_default_White_2" rightIndent="0.0" leftIndent="0.0" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0" textColor="#ffffff"/> | ||
431 | 131 | |||
432 | 132 | <paraStyle name="Table" fontSize="10.0" leading="13" spaceBefore="6.0" spaceAfter="6.0"/> | ||
433 | 133 | <paraStyle name="User Index 10" rightIndent="0.0" leftIndent="127.0"/> | ||
434 | 134 | <paraStyle name="Preformatted Text" fontSize="10.0" leading="13" spaceBefore="0.0" spaceAfter="0.0"/> | ||
435 | 135 | <images/> | ||
436 | 136 | </stylesheet> | ||
437 | 137 | <story> | ||
438 | 138 | <pto> | ||
439 | 139 | <para style="terp_default_8">[[ repeatIn(objects,'o') ]]</para> | ||
440 | 140 | <para style="terp_default_8">[[ setLang(o.partner_id.lang) ]]</para> | ||
441 | 141 | <pto_header><!-- Must be after setLang() --> | ||
442 | 142 | <blockTable colWidths="202.0,87.0,71.0,57.0,42.0,71.0" style="Table7"> | ||
443 | 143 | <tr> | ||
444 | 144 | <td><para style="terp_tblheader_Details"><b>Description</b></para></td> | ||
445 | 145 | <td><para style="terp_tblheader_Details_Centre"><b>Taxes</b></para></td> | ||
446 | 146 | <td><para style="terp_tblheader_Details_Centre"><b>Quantity</b></para></td> | ||
447 | 147 | <td><para style="terp_tblheader_Details_Right"><b>Unit Price</b></para></td> | ||
448 | 148 | <td><para style="terp_tblheader_Details_Right"><b>Disc.(%)</b></para></td> | ||
449 | 149 | <td><para style="terp_tblheader_Details_Right"><b>Price</b></para></td> | ||
450 | 150 | </tr> | ||
451 | 151 | </blockTable> | ||
452 | 152 | </pto_header> | ||
453 | 153 | <blockTable colWidths="297.0,233.0" style="Table_Partner_Address"> | ||
454 | 154 | <tr> | ||
455 | 155 | <td> | ||
456 | 156 | <para style="terp_default_8"> | ||
457 | 157 | <font color="white"> </font> | ||
458 | 158 | </para> | ||
459 | 159 | </td> | ||
460 | 160 | <td> | ||
461 | 161 | <para style="terp_default_8">[[ (o.partner_id and o.partner_id.title and o.partner_id.title.name) or '' ]] [[ (o.partner_id and o.partner_id.name) or '' ]]</para> | ||
462 | 162 | <para style="terp_default_8">[[ display_address(o.partner_id) ]]</para> | ||
463 | 163 | <para style="terp_default_8"> | ||
464 | 164 | <font color="white"> </font> | ||
465 | 165 | </para> | ||
466 | 166 | <para style="terp_default_8">Tel. : [[ (o.partner_id.phone) or removeParentNode('para') ]]</para> | ||
467 | 167 | <para style="terp_default_8">Fax : [[ (o.partner_id.fax) or removeParentNode('para') ]]</para> | ||
468 | 168 | <para style="terp_default_8">TIN : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para> | ||
469 | 169 | </td> | ||
470 | 170 | </tr> | ||
471 | 171 | </blockTable> | ||
472 | 172 | <para style="terp_header"><b>Invoice [[ ((o.type == 'out_invoice' and (o.state == 'open' or o.state == 'paid')) or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> | ||
473 | 173 | <para style="terp_header"><b>PRO-FORMA [[ ((o.type == 'out_invoice' and o.state == 'proforma2') or removeParentNode('para')) and '' ]]</b></para> | ||
474 | 174 | <para style="terp_header"><b>Draft Invoice [[ ((o.type == 'out_invoice' and o.state == 'draft') or removeParentNode('para')) and '' ]]</b></para> | ||
475 | 175 | <para style="terp_header"><b>Cancelled Invoice [[ ((o.type == 'out_invoice' and o.state == 'cancel') or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> | ||
476 | 176 | <para style="terp_header"><b>Refund [[ (o.type=='out_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> | ||
477 | 177 | <para style="terp_header"><b>Supplier Refund [[ (o.type=='in_refund' or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> | ||
478 | 178 | <para style="terp_header"><b>Supplier Invoice [[ (o.type=='in_invoice' or removeParentNode('para')) and '' ]] [[ o.number ]]</b></para> | ||
479 | 179 | <para style="terp_default_8"> | ||
480 | 180 | <font color="white"> </font> | ||
481 | 181 | </para> | ||
482 | 182 | <blockTable colWidths="132.50,132.50,132.50,132.50" style="Table_Invoice_General_Header"> | ||
483 | 183 | <tr> | ||
484 | 184 | <td> | ||
485 | 185 | <para style="terp_tblheader_General_Centre"><b>Description</b></para> | ||
486 | 186 | </td> | ||
487 | 187 | <td> | ||
488 | 188 | <para style="terp_tblheader_General_Centre"><b>Invoice Date</b></para> | ||
489 | 189 | </td> | ||
490 | 190 | <td> | ||
491 | 191 | <para style="terp_tblheader_General_Centre"><b>Contract Number</b></para> | ||
492 | 192 | </td> | ||
493 | 193 | <td> | ||
494 | 194 | <para style="terp_tblheader_General_Centre"><b>Customer Code</b></para> | ||
495 | 195 | </td> | ||
496 | 196 | </tr> | ||
497 | 197 | </blockTable> | ||
498 | 198 | <blockTable colWidths="132.50,132.50,132.50,132.50" style="Table_General_Detail_Content"> | ||
499 | 199 | <tr> | ||
500 | 200 | <td> | ||
501 | 201 | <para style="terp_default_Centre_9">[[ o.name or ' ' ]]</para> | ||
502 | 202 | </td> | ||
503 | 203 | <td> | ||
504 | 204 | <para style="terp_default_Centre_9">[[ formatLang(o.date_invoice,date=True) ]]</para> | ||
505 | 205 | </td> | ||
506 | 206 | <td> | ||
507 | 207 | <para style="terp_default_Centre_9">[[ o.origin or '' ]]</para> | ||
508 | 208 | </td> | ||
509 | 209 | <td> | ||
510 | 210 | <para style="terp_default_Centre_9">[[ (o.partner_id.ref) or ' ' ]]</para> | ||
511 | 211 | </td> | ||
512 | 212 | </tr> | ||
513 | 213 | </blockTable> | ||
514 | 214 | <para style="terp_default_8"> | ||
515 | 215 | <font color="white"> </font> | ||
516 | 216 | </para> | ||
517 | 217 | <blockTable colWidths="255.0,80.0,60.0,50.0,85.0" style="Table7"> | ||
518 | 218 | <tr> | ||
519 | 219 | <td> | ||
520 | 220 | <para style="terp_tblheader_General"><b>Description</b></para> | ||
521 | 221 | </td> | ||
522 | 222 | <td> | ||
523 | 223 | <para style="terp_tblheader_General_Right"><b>Quantity</b></para> | ||
524 | 224 | </td> | ||
525 | 225 | <td> | ||
526 | 226 | <para style="terp_tblheader_General_Right"><b>Unit Price</b></para> | ||
527 | 227 | </td> | ||
528 | 228 | <td> | ||
529 | 229 | <para style="terp_tblheader_General_Right"><b>Disc.(%)</b></para> | ||
530 | 230 | </td> | ||
531 | 231 | <td> | ||
532 | 232 | <para style="terp_tblheader_General_Right"><b>Price</b></para> | ||
533 | 233 | </td> | ||
534 | 234 | </tr> | ||
535 | 235 | </blockTable> | ||
536 | 236 | <section> | ||
537 | 237 | <para style="terp_default_2">[[ repeatIn(o.invoice_line,'l') ]]</para> | ||
538 | 238 | <blockTable colWidths="255.0,80.0,60.0,50.0,85.0" style="Table8"> | ||
539 | 239 | <tr> | ||
540 | 240 | <td> | ||
541 | 241 | <para style="terp_default_9">[[ format(l.name) ]]</para> | ||
542 | 242 | </td> | ||
543 | 243 | <td> | ||
544 | 244 | <para style="terp_default_Right_9">[[ formatLang(l.quantity)]] [[ (l.uos_id and l.uos_id.name) or '' ]]</para> | ||
545 | 245 | </td> | ||
546 | 246 | <td> | ||
547 | 247 | <para style="terp_default_Right_9">[[ formatLang(l.price_unit) ]]</para> | ||
548 | 248 | </td> | ||
549 | 249 | <td> | ||
550 | 250 | <para style="terp_default_Centre_9">[[ formatLang(l.discount, dp='Account') ]] </para> | ||
551 | 251 | </td> | ||
552 | 252 | <td> | ||
553 | 253 | <para style="terp_default_Right_9">[[ formatLang(l.price_subtotal, dp='Account', currency_obj=o.currency_id) ]]</para> | ||
554 | 254 | </td> | ||
555 | 255 | </tr> | ||
556 | 256 | </blockTable> | ||
557 | 257 | </section> | ||
558 | 258 | <blockTable colWidths="335.0,110.0,85.0" style="Table10"> | ||
559 | 259 | <tr> | ||
560 | 260 | <td> | ||
561 | 261 | <para style="terp_default_8"> | ||
562 | 262 | <font color="white"> </font> | ||
563 | 263 | </para> | ||
564 | 264 | </td> | ||
565 | 265 | <td> | ||
566 | 266 | <para style="terp_default_9">Net Total:</para> | ||
567 | 267 | </td> | ||
568 | 268 | <td> | ||
569 | 269 | <para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</para> | ||
570 | 270 | </td> | ||
571 | 271 | </tr> | ||
572 | 272 | <tr> | ||
573 | 273 | <td> | ||
574 | 274 | <para style="terp_default_8"> | ||
575 | 275 | <font color="white"> </font> | ||
576 | 276 | </para> | ||
577 | 277 | </td> | ||
578 | 278 | <td> | ||
579 | 279 | <para style="terp_default_9">Taxes:</para> | ||
580 | 280 | </td> | ||
581 | 281 | <td> | ||
582 | 282 | <para style="terp_default_Right_9">[[ formatLang(o.amount_tax, dp='Account', currency_obj=o.currency_id) ]]</para> | ||
583 | 283 | </td> | ||
584 | 284 | </tr> | ||
585 | 285 | <tr> | ||
586 | 286 | <td> | ||
587 | 287 | <para style="terp_default_8"> | ||
588 | 288 | <font color="white"> </font> | ||
589 | 289 | </para> | ||
590 | 290 | </td> | ||
591 | 291 | <td> | ||
592 | 292 | <para style="terp_default_9"><b>Total:</b></para> | ||
593 | 293 | </td> | ||
594 | 294 | <td> | ||
595 | 295 | <para style="terp_default_Right_9"><b>[[ formatLang(o.amount_total, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</b></para> | ||
596 | 296 | </td> | ||
597 | 297 | </tr> | ||
598 | 298 | <tr> | ||
599 | 299 | <td> | ||
600 | 300 | <para style="terp_default_8"> | ||
601 | 301 | <font color="white"> </font> | ||
602 | 302 | </para> | ||
603 | 303 | </td> | ||
604 | 304 | <td> | ||
605 | 305 | <para style="terp_default_9">Previous Balance:</para> | ||
606 | 306 | </td> | ||
607 | 307 | <td> | ||
608 | 308 | <para style="terp_default_Right_9">[[ formatLang(o.previous_balance, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</para> | ||
609 | 309 | </td> | ||
610 | 310 | </tr> | ||
611 | 311 | <tr> | ||
612 | 312 | <td> | ||
613 | 313 | <para style="terp_default_8"> | ||
614 | 314 | <font color="white"> </font> | ||
615 | 315 | </para> | ||
616 | 316 | </td> | ||
617 | 317 | <td> | ||
618 | 318 | <para style="terp_default_9">Payments:</para> | ||
619 | 319 | </td> | ||
620 | 320 | <td> | ||
621 | 321 | <para style="terp_default_Right_9">[[ formatLang(o.payment_total, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</para> | ||
622 | 322 | </td> | ||
623 | 323 | </tr> | ||
624 | 324 | <tr> | ||
625 | 325 | <td> | ||
626 | 326 | <para style="terp_default_8"> | ||
627 | 327 | <font color="white"> </font> | ||
628 | 328 | </para> | ||
629 | 329 | </td> | ||
630 | 330 | <td> | ||
631 | 331 | <para style="terp_default_9"><b>To Pay:</b></para> | ||
632 | 332 | </td> | ||
633 | 333 | <td> | ||
634 | 334 | <para style="terp_default_Right_9"><b>[[ formatLang(o.to_pay, digits=get_digits(dp='Account'), currency_obj=o.currency_id) ]]</b></para> | ||
635 | 335 | </td> | ||
636 | 336 | </tr> | ||
637 | 337 | </blockTable> | ||
638 | 338 | <para style="Text body"> | ||
639 | 339 | <font color="white"> </font> | ||
640 | 340 | </para> | ||
641 | 341 | <blockTable colWidths="205.0,71.0,71.0,183.0" style="Table9"> | ||
642 | 342 | <tr> | ||
643 | 343 | <td> | ||
644 | 344 | <para style="terp_tblheader_Details"><b>Tax [[ o.tax_line==[] and removeParentNode('blockTable') ]]</b></para> | ||
645 | 345 | </td> | ||
646 | 346 | <td> | ||
647 | 347 | <para style="terp_tblheader_Details_Right"><b>Base </b></para> | ||
648 | 348 | </td> | ||
649 | 349 | <td> | ||
650 | 350 | <para style="terp_tblheader_Details_Right"><b>Amount </b></para> | ||
651 | 351 | </td> | ||
652 | 352 | <td> | ||
653 | 353 | <para style="terp_default_8"> | ||
654 | 354 | <font color="white"> </font> | ||
655 | 355 | </para> | ||
656 | 356 | </td> | ||
657 | 357 | </tr> | ||
658 | 358 | </blockTable> | ||
659 | 359 | <section> | ||
660 | 360 | <para style="terp_default_2">[[ repeatIn(o.tax_line,'t') ]]</para> | ||
661 | 361 | <blockTable colWidths="205.0,71.0,71.0,184.0" style="Table2"> | ||
662 | 362 | <tr> | ||
663 | 363 | <td> | ||
664 | 364 | <para style="terp_default_8">[[ t.name ]]</para> | ||
665 | 365 | </td> | ||
666 | 366 | <td> | ||
667 | 367 | <para style="terp_default_Right_8">[[ formatLang(t.base, dp='Account', currency_obj=o.currency_id) ]]</para> | ||
668 | 368 | </td> | ||
669 | 369 | <td> | ||
670 | 370 | <para style="terp_default_Right_8">[[ (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) ]]</para> | ||
671 | 371 | </td> | ||
672 | 372 | <td> | ||
673 | 373 | <para style="terp_default_8"> | ||
674 | 374 | <font color="white"> </font> | ||
675 | 375 | </para> | ||
676 | 376 | </td> | ||
677 | 377 | </tr> | ||
678 | 378 | </blockTable> | ||
679 | 379 | </section> | ||
680 | 380 | <para style="terp_default_9"> | ||
681 | 381 | <font color="white"> </font> | ||
682 | 382 | </para> | ||
683 | 383 | <para style="terp_default_9">[[ (o.comment and format(o.comment )) or removeParentNode('para') ]]</para> | ||
684 | 384 | <para style="terp_default_8"> | ||
685 | 385 | <font color="white"> </font> | ||
686 | 386 | </para> | ||
687 | 387 | <para style="terp_default_9">[[ (o.payment_term and o.payment_term.note and format(o.payment_term and o.payment_term.note)) or removeParentNode('para') ]]</para> | ||
688 | 388 | <para style="terp_default_9"> | ||
689 | 389 | <font color="white"> </font> | ||
690 | 390 | </para> | ||
691 | 391 | <blockTable colWidths="120.0,410.0" style="Table1"> | ||
692 | 392 | <tr> | ||
693 | 393 | <td> | ||
694 | 394 | <para style="terp_default_Bold_9"><b>Fiscal Position Remark : </b></para> | ||
695 | 395 | </td> | ||
696 | 396 | <td> | ||
697 | 397 | <para style="terp_default_9">[[ (o.fiscal_position and o.fiscal_position.note and format(o.fiscal_position.note)) or removeParentNode('blockTable') ]]</para> | ||
698 | 398 | </td> | ||
699 | 399 | </tr> | ||
700 | 400 | </blockTable> | ||
701 | 401 | <para style="terp_default_2"> | ||
702 | 402 | <font color="white"> </font> | ||
703 | 403 | </para> | ||
704 | 404 | </pto> | ||
705 | 405 | </story> | ||
706 | 406 | </document> | ||
707 | 0 | 407 | ||
708 | === added file 'invoice_print_report_balance_payment/reports.xml' | |||
709 | --- invoice_print_report_balance_payment/reports.xml 1970-01-01 00:00:00 +0000 | |||
710 | +++ invoice_print_report_balance_payment/reports.xml 2013-12-26 20:27:44 +0000 | |||
711 | @@ -0,0 +1,11 @@ | |||
712 | 1 | <?xml version="1.0" encoding="utf-8"?> | ||
713 | 2 | <openerp> | ||
714 | 3 | <data> | ||
715 | 4 | <report auto="False" | ||
716 | 5 | id="invoice_print_report_payment_balance" | ||
717 | 6 | model="account.invoice" | ||
718 | 7 | name="account.invoice.balance_payment" | ||
719 | 8 | rml="invoice_print_report_balance_payment/report/invoice_print_report_balance_payment.rml" | ||
720 | 9 | string="Invoices (with balance payments)" /> | ||
721 | 10 | </data> | ||
722 | 11 | </openerp> |
LGTM