Merge lp:~openbig/bigconsulting/changes_in_mileston into lp:bigconsulting

Proposed by gpa(OpenERP)
Status: Superseded
Proposed branch: lp:~openbig/bigconsulting/changes_in_mileston
Merge into: lp:bigconsulting
Diff against target: 464 lines (+143/-97)
4 files modified
account_invoice_cash_discount/account_invoice_cash_discount.py (+41/-28)
account_invoice_cash_discount/wizard/account_pay_invoice.py (+64/-41)
account_invoice_cash_discount/wizard/account_pay_invoice_view.xml (+1/-1)
account_invoice_cash_discount/wizard/invoice_statement_payment.py (+37/-27)
To merge this branch: bzr merge lp:~openbig/bigconsulting/changes_in_mileston
Reviewer Review Type Date Requested Status
openbig Pending
Review via email: mp+31269@code.launchpad.net

This proposal has been superseded by a proposal from 2010-07-29.

Description of the change

changes in milestone1 and milestone2 functionality to calculate tax and discount

To post a comment you must log in.
61. By gpa(OpenERP)

added changes in milestone1

62. By gpa(OpenERP)

changes in the tax fied bas amount

63. By gpa(OpenERP)

changes in calculation of ratio

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'account_invoice_cash_discount/account_invoice_cash_discount.py'
--- account_invoice_cash_discount/account_invoice_cash_discount.py 2010-07-27 14:33:57 +0000
+++ account_invoice_cash_discount/account_invoice_cash_discount.py 2010-07-29 11:49:41 +0000
@@ -317,24 +317,30 @@
317 if amount_discount>0.0:317 if amount_discount>0.0:
318 for line in invoice.invoice_line:318 for line in invoice.invoice_line:
319 if line.invoice_line_tax_id:319 if line.invoice_line_tax_id:
320 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, amount_discount, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):320 total_tax_amount = 0.0
321 tax_amount = tax['amount']321 for tax_id in line.invoice_line_tax_id:
322 tax_total_amount += tax['amount']322 tax_data = tax_obj.browse(cr, uid, tax_id.id, context=context)
323 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax['name'])])323 tax_amt = amount_discount * tax_data.amount
324 tax_real_amt = tax_amt / (1 + tax_data.amount)
325 total_tax_amount += tax_real_amt
326 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax_data.name)])
327
324 for tax_id in tax_invoice_id:328 for tax_id in tax_invoice_id:
325 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)329 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)
326 tax_account_id = tax_value.account_id.id330 tax_account_id = tax_value.account_id.id
331 tax_code_id = tax_value.tax_code_id.id
332
327 l3 = {333 l3 = {
328 'debit': direction * tax_amount<0 and - direction * tax_amount,334 'debit': direction * tax_real_amt<0 and - direction * tax_real_amt,
329 'credit': direction * tax_amount>0 and direction * tax_amount,335 'credit': direction * tax_real_amt>0 and direction * tax_real_amt,
330 'account_id': tax_account_id,336 'account_id': tax_account_id,
331 'partner_id': invoice.partner_id.id,337 'partner_id': invoice.partner_id.id,
332 'ref':ref,338 'ref':ref,
333 'date': date,339 'date': date,
334 'currency_id':currency_id,340 'currency_id':currency_id,
335 'amount_currency':amount_currency and direction * amount_currency or 0.0,341 'amount_currency':amount_currency and direction * amount_currency or 0.0,
336 'tax_code_id':tax_value.tax_code_id.id,342 'tax_code_id':tax_code_id,
337 'tax_amount':tax_amount,343 'tax_amount':tax_real_amt,
338 }344 }
339 l3['name'] = name345 l3['name'] = name
340 lines.append((0, 0, l3))346 lines.append((0, 0, l3))
@@ -358,16 +364,12 @@
358 'tax_amount':move_line_data.tax_amount,364 'tax_amount':move_line_data.tax_amount,
359 }365 }
360 lines.append((0, 0, l4))366 lines.append((0, 0, l4))
361
362 else:367 else:
363 if amount_discount>0:368 if amount_discount>0:
364 account_id = False369 account_id = False
365 if 'account_id' in context and context['account_id']:370 if 'account_id' in context and context['account_id']:
366 account_id = context['account_id']371 account_id = context['account_id']
367# if tax_total_amount>0:372
368# amount_discount = (amount_discount - tax_total_amount)
369# else:
370# amount_discount = amount_discount
371 for line in invoice.invoice_line:373 for line in invoice.invoice_line:
372 line_tax_amount = 0.0374 line_tax_amount = 0.0
373 tax_amount = 0.0375 tax_amount = 0.0
@@ -379,20 +381,32 @@
379 invoice_res_amount = invoice.amount_total381 invoice_res_amount = invoice.amount_total
380 line_ratio = line_total / invoice_res_amount382 line_ratio = line_total / invoice_res_amount
381 383
382 discount = amount_discount * line_ratio384 discount_ratio = amount_discount * line_ratio
383 385 total_tax_amount = 0.0
384 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, amount_discount, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id): 386
385 tax_amount = tax['amount']387 for tax_id in line.invoice_line_tax_id:
386 388 tax_data = tax_obj.browse(cr, uid, tax_id.id, context=context)
389 tax_amt = discount_ratio * tax_data.amount
390 tax_real_amt = tax_amt / (1 + tax_data.amount)
391 total_tax_amount += tax_real_amt
392
393 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax_data.name)])
394 for tax_id in tax_invoice_id:
395 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)
396 tax_account_id = tax_value.account_id.id
397 base_code_id = tax_value.base_code_id.id
398
387 l4 = {399 l4 = {
388 'debit': direction * (discount - tax_amount)<0 and - direction * (discount - tax_amount),400 'debit': direction * (discount - total_tax_amount)<0 and - direction * (discount - total_tax_amount),
389 'credit': direction * (discount - tax_amount)>0 and direction * (discount - tax_amount),401 'credit': direction * (discount - total_tax_amount)>0 and direction * (discount - total_tax_amount),
390 'account_id': account_id,402 'account_id': account_id,
391 'partner_id': invoice.partner_id.id,403 'partner_id': invoice.partner_id.id,
392 'ref':ref,404 'ref':ref,
393 'date': date,405 'date': date,
394 'currency_id':currency_id,406 'currency_id':currency_id,
395 'amount_currency':amount_currency and direction * amount_currency or 0.0,407 'amount_currency':amount_currency and direction * amount_currency or 0.0,
408 'tax_code_id':base_code_id,
409 'tax_amount':line.price_unit,
396 }410 }
397 l4['name'] = name411 l4['name'] = name
398 lines.append((0, 0, l4))412 lines.append((0, 0, l4))
@@ -530,9 +544,9 @@
530 amount = res_currency_obj.compute(cr, uid, st.currency.id,544 amount = res_currency_obj.compute(cr, uid, st.currency.id,
531 company_currency_id, move.amount, context=context,545 company_currency_id, move.amount, context=context,
532 account=acc_cur)546 account=acc_cur)
533 if move.reconcile_id and move.reconcile_id.line_new_ids:547# if move.reconcile_id and move.reconcile_id.line_new_ids:
534 for newline in move.reconcile_id.line_new_ids:548# for newline in move.reconcile_id.line_new_ids:
535 amount += newline.amount549# amount += newline.amount
536550
537 val = {551 val = {
538 'name': move.name,552 'name': move.name,
@@ -569,9 +583,10 @@
569 val['amount_currency'] = amount_cur583 val['amount_currency'] = amount_cur
570584
571 torec.append(account_move_line_obj.create(cr, uid, val , context=context))585 torec.append(account_move_line_obj.create(cr, uid, val , context=context))
572586 newline_sum = 0.0
573 if move.reconcile_id and move.reconcile_id.line_new_ids:587 if move.reconcile_id and move.reconcile_id.line_new_ids:
574 for newline in move.reconcile_id.line_new_ids:588 for newline in move.reconcile_id.line_new_ids:
589 newline_sum += newline.amount
575 account_move_line_obj.create(cr, uid, {590 account_move_line_obj.create(cr, uid, {
576 'name': newline.name or move.name,591 'name': newline.name or move.name,
577 'date': move.date,592 'date': move.date,
@@ -673,8 +688,6 @@
673 'amount_currency': amount_currency,688 'amount_currency': amount_currency,
674 'currency_id': currency_id,689 'currency_id': currency_id,
675 }, context=context)690 }, context=context)
676 else:
677 continue
678691
679 account_move_line_obj.create(cr, uid, {692 account_move_line_obj.create(cr, uid, {
680 'name': move.name,693 'name': move.name,
@@ -683,8 +696,8 @@
683 'move_id': move_id,696 'move_id': move_id,
684 'partner_id': ((move.partner_id) and move.partner_id.id) or False,697 'partner_id': ((move.partner_id) and move.partner_id.id) or False,
685 'account_id': account_id,698 'account_id': account_id,
686 'credit': ((amount < 0) and -amount) or 0.0,699 'credit': (((amount-newline_sum) < 0) and -(amount-newline_sum)) or 0.0,
687 'debit': ((amount > 0) and amount) or 0.0,700 'debit': (((amount-newline_sum) > 0) and (amount-newline_sum)) or 0.0,
688 'statement_id': st.id,701 'statement_id': st.id,
689 'journal_id': st.journal_id.id,702 'journal_id': st.journal_id.id,
690 'period_id': st.period_id.id,703 'period_id': st.period_id.id,
691704
=== modified file 'account_invoice_cash_discount/wizard/account_pay_invoice.py'
--- account_invoice_cash_discount/wizard/account_pay_invoice.py 2010-07-27 14:33:57 +0000
+++ account_invoice_cash_discount/wizard/account_pay_invoice.py 2010-07-29 11:49:41 +0000
@@ -142,41 +142,45 @@
142 for line in invoice.invoice_line:142 for line in invoice.invoice_line:
143 tax_amount = 0.0143 tax_amount = 0.0
144 line_tax_amount = 0.0144 line_tax_amount = 0.0
145 145 ########
146 line_tax_amount = 0.0
146 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, line.price_subtotal, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id): 147 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, line.price_subtotal, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):
147 line_tax_amount = tax['amount']148 line_tax_amount += tax['amount']
148
149 line_total = line.price_subtotal + line_tax_amount149 line_total = line.price_subtotal + line_tax_amount
150 invoice_res_amount = invoice.amount_total150 invoice_res_amount = invoice.amount_total
151 line_ratio = line_total / invoice_res_amount151 line_ratio = line_total / invoice_res_amount
152 #####################################################
153 discount_pay = discount * line_ratio
152 154
153 if line.invoice_line_tax_id:155 if line.invoice_line_tax_id:
154 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, discount, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):156 total_tax_amount = 0.0
155 tax_amount = tax['amount']157 for tax_id in line.invoice_line_tax_id:
156 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax['name'])])158 tax_data = tax_obj.browse(cr, uid, tax_id.id, context=context)
159
160 tax_amt = discount_pay * tax_data.amount
161 tax_real_amt = tax_amt / (1 + tax_data.amount)
162 total_tax_amount += tax_real_amt
163 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax_data.name)])
164
157 for tax_id in tax_invoice_id:165 for tax_id in tax_invoice_id:
158 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)166 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)
159 tax_account_id = tax_value.account_id.id
160 base_code_id = tax_value.base_code_id.id167 base_code_id = tax_value.base_code_id.id
161 168
162 if invoice.company_id.currency_id.id<>invoice.currency_id.id:169
163 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, tax_amount, context=context)
164
165 discount_pay = discount * line_ratio
166 if invoice.company_id.currency_id.id<>invoice.currency_id.id:170 if invoice.company_id.currency_id.id<>invoice.currency_id.id:
167 discount_amount = discount - tax_amount171 discount_amount = discount - tax_real_amt
168 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, discount_amount, context=context)172 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, discount_amount, context=context)
169 173
170 l4 = {174 l4 = {
171 'debit': direction * (discount_pay - tax_amount)<0 and - direction * (discount_pay - tax_amount),175 'debit': direction * (discount_pay - total_tax_amount)<0 and - direction * (discount_pay - total_tax_amount),
172 'credit': direction * (discount_pay - tax_amount)>0 and direction * (discount_pay - tax_amount),176 'credit': direction * (discount_pay - total_tax_amount)>0 and direction * (discount_pay - total_tax_amount),
173 'account_id': discount_account_id,177 'account_id': discount_account_id,
174 'date': date,178 'date': date,
175 'name':name,179 'name':name,
176 'currency_id':invoice.currency_id.id or False,180 'currency_id':invoice.currency_id.id or False,
177 'journal_id':invoice.journal_id.id,181 'journal_id':invoice.journal_id.id,
178 'tax_code_id':base_code_id,182 'tax_code_id':base_code_id,
179 'tax_amount':tax_amount,183 'tax_amount':line.price_unit,
180 'amount_currency':amount and direction * amount or 0.0,184 'amount_currency':amount and direction * amount or 0.0,
181 'analytic_account_id':line.account_analytic_id.id or False,185 'analytic_account_id':line.account_analytic_id.id or False,
182 }186 }
@@ -206,33 +210,48 @@
206 line_ids = []210 line_ids = []
207211
208 tax_code_id = False212 tax_code_id = False
213 tax_account_id = False
209 discount = self._get_discount(cr, uid, context=context)214 discount = self._get_discount(cr, uid, context=context)
210 if discount>0.0:215 if discount>0.0:
211 for line in invoice.invoice_line:216 for line in invoice.invoice_line:
212 tax_amount = 0.0
213 line_tax_amount = 0.0217 line_tax_amount = 0.0
218 total_tax_amount = 0.0
219 ############# Ratio#####
220 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, line.price_subtotal, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):
221 line_tax_amount += tax['amount']
222 line_total = line.price_subtotal + line_tax_amount
223 invoice_res_amount = invoice.amount_total
224 line_ratio = line_total / invoice_res_amount
225 #############
226
227 ### discount for the invoice line
228 discount_pay = discount * line_ratio
229
214 if line.invoice_line_tax_id:230 if line.invoice_line_tax_id:
215 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, discount, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):231 for tax_id in line.invoice_line_tax_id:
216 tax_amount = tax['amount']232 tax_data = tax_obj.browse(cr, uid, tax_id.id, context=context)
217 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax['name'])])233 tax_amt = discount_pay * tax_data.amount
234 tax_real_amt = tax_amt / (1 + tax_data.amount)
235 total_tax_amount += tax_real_amt
236 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax_data.name)])
218 for tax_id in tax_invoice_id:237 for tax_id in tax_invoice_id:
219 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)238 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)
220 tax_account_id = tax_value.account_id.id239 tax_account_id = tax_value.account_id.id
221 tax_code_id = tax_value.tax_code_id.id240 tax_code_id = tax_value.tax_code_id.id
222 241
223 if invoice.company_id.currency_id.id<>invoice.currency_id.id:242 if invoice.company_id.currency_id.id<>invoice.currency_id.id:
224 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, tax_amount, context=context)243 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, tax_amount, context=context)
225 244
226 l3 = {245 l3 = {
227 'debit': direction * tax_amount<0 and - direction * tax_amount,246 'debit': direction * tax_real_amt<0 and - direction * tax_real_amt,
228 'credit': direction * tax_amount>0 and direction * tax_amount,247 'credit': direction * tax_real_amt>0 and direction * tax_real_amt,
229 'account_id': tax_account_id,248 'account_id': tax_account_id,
230 'date': date,249 'date': date,
231 'journal_id':invoice.journal_id.id or False,250 'journal_id':invoice.journal_id.id or False,
232 'name':name,251 'name':name,
233 'currency_id':invoice.currency_id.id or False,252 'currency_id':invoice.currency_id.id or False,
234 'tax_code_id':tax_value.tax_code_id.id,253 'tax_code_id':tax_code_id,
235 'tax_amount':-tax_amount,254 'tax_amount':discount_pay,
236 'amount_currency':amount and direction * amount or 0.0,255 'amount_currency':amount and direction * amount or 0.0,
237 'analytic_account_id':line.account_analytic_id.id or False,256 'analytic_account_id':line.account_analytic_id.id or False,
238 }257 }
@@ -315,18 +334,23 @@
315 for line in invoice.invoice_line:334 for line in invoice.invoice_line:
316 tax_amount = 0.0335 tax_amount = 0.0
317 line_tax_amount = 0.0336 line_tax_amount = 0.0
318 337 total_tax_amount = 0.0
319 #####get the ratio of the line in the total invoice amount 338 #####get the ratio of the line in the total invoice amount
320 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, line.price_subtotal, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id): 339 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, line.price_subtotal, line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):
321 line_tax_amount = tax['amount']340 line_tax_amount += tax['amount']
322 line_total = line.price_subtotal + line_tax_amount341 line_total = line.price_subtotal + line_tax_amount
323 invoice_res_amount = invoice.amount_total342 invoice_res_amount = invoice.amount_total
324 line_ratio = line_total / invoice_res_amount343 line_ratio = line_total / invoice_res_amount
325 ###########################344 ###########################
345 discount_pay = data['cash_amount'] * line_ratio
326 if line.invoice_line_tax_id:346 if line.invoice_line_tax_id:
327 for tax in tax_obj.compute(cr, uid, line.invoice_line_tax_id, data['cash_amount'], line.quantity, invoice.address_invoice_id.id, line.product_id, invoice.partner_id):347 for tax_id in line.invoice_line_tax_id:
328 tax_amount = tax['amount']348 tax_data = tax_obj.browse(cr, uid, tax_id.id, context=context)
329 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax['name'])])349 tax_amt = discount_pay * tax_data.amount
350 tax_real_amt = tax_amt / (1 + tax_data.amount)
351 total_tax_amount += tax_real_amt
352
353 tax_invoice_id = invoice_tax_obj.search(cr,uid,[('invoice_id','=',invoice.id),('name','=',tax_data.name)])
330 for tax_id in tax_invoice_id:354 for tax_id in tax_invoice_id:
331 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)355 tax_value = invoice_tax_obj.browse(cr, uid, tax_id)
332 tax_account_id = tax_value.account_id.id356 tax_account_id = tax_value.account_id.id
@@ -337,15 +361,15 @@
337 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, tax_amount, context=context)361 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, tax_amount, context=context)
338 362
339 l3 = {363 l3 = {
340 'debit': direction * tax_amount<0 and - direction * tax_amount,364 'debit': direction * tax_real_amt<0 and - direction * tax_real_amt,
341 'credit': direction * tax_amount>0 and direction * tax_amount,365 'credit': direction * tax_real_amt>0 and direction * tax_real_amt,
342 'account_id': tax_account_id,366 'account_id': tax_account_id,
343 'date': date,367 'date': date,
344 'journal_id':data.get('journal_id',False) ,368 'journal_id':data.get('journal_id',False) ,
345 'name':name,369 'name':name,
346 'currency_id':invoice.currency_id.id or False,370 'currency_id':invoice.currency_id.id or False,
347 'tax_code_id':tax_value.tax_code_id.id,371 'tax_code_id':tax_value.tax_code_id.id,
348 'tax_amount':-tax_amount,372 'tax_amount':discount_pay,
349 'amount_currency':amount and direction * amount or 0.0,373 'amount_currency':amount and direction * amount or 0.0,
350 'analytic_account_id':line.account_analytic_id.id or False,374 'analytic_account_id':line.account_analytic_id.id or False,
351 }375 }
@@ -368,21 +392,20 @@
368 else:392 else:
369 discount_account_id = data['account_id']393 discount_account_id = data['account_id']
370 394
371 discount = data['cash_amount'] * line_ratio
372 if invoice.company_id.currency_id.id<>invoice.currency_id.id:395 if invoice.company_id.currency_id.id<>invoice.currency_id.id:
373 discount_amount = discount - tax_amount396 discount_amount = discount_pay - tax_amount
374 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, discount_amount, context=context)397 amount = cur_obj.compute(cr, uid, invoice.currency_id.id, invoice.company_id.currency_id.id, discount_amount, context=context)
375 398
376 l4 = {399 l4 = {
377 'debit': direction * (discount - tax_amount)<0 and - direction * (discount - tax_amount),400 'debit': direction * (discount_pay - total_tax_amount)<0 and - direction * (discount_pay - total_tax_amount),
378 'credit': direction * (discount - tax_amount)>0 and direction * (discount - tax_amount),401 'credit': direction * (discount_pay - total_tax_amount)>0 and direction * (discount_pay - total_tax_amount),
379 'account_id': discount_account_id,402 'account_id': discount_account_id,
380 'date': date,403 'date': date,
381 'name':name,404 'name':name,
382 'currency_id':invoice.currency_id.id or False,405 'currency_id':invoice.currency_id.id or False,
383 'journal_id':data.get('journal_id',False),406 'journal_id':data.get('journal_id',False),
384 'tax_code_id':base_code_id,407 'tax_code_id':base_code_id,
385 'tax_amount':tax_amount,408 'tax_amount':line.price_unit,
386 'amount_currency':amount and direction * amount or 0.0,409 'amount_currency':amount and direction * amount or 0.0,
387 'analytic_account_id':line.account_analytic_id.id or False,410 'analytic_account_id':line.account_analytic_id.id or False,
388 }411 }
@@ -516,7 +539,7 @@
516 debit+=payment.debit539 debit+=payment.debit
517 credit+=payment.credit540 credit+=payment.credit
518 amount_paid+=abs(debit-credit)541 amount_paid+=abs(debit-credit)
519 542
520 if data['cash_residual_amount'] == 0.0 or self.pool.get('res.currency').is_zero(cr, uid, invoice.company_id.currency_id,543 if data['cash_residual_amount'] == 0.0 or self.pool.get('res.currency').is_zero(cr, uid, invoice.company_id.currency_id,
521 (amount_paid - inv_amount_company_currency)):544 (amount_paid - inv_amount_company_currency)):
522 return self.pay_and_reconcile(cr, uid, ids, context=context)545 return self.pay_and_reconcile(cr, uid, ids, context=context)
523546
=== modified file 'account_invoice_cash_discount/wizard/account_pay_invoice_view.xml'
--- account_invoice_cash_discount/wizard/account_pay_invoice_view.xml 2010-07-26 12:24:39 +0000
+++ account_invoice_cash_discount/wizard/account_pay_invoice_view.xml 2010-07-29 11:49:41 +0000
@@ -76,7 +76,7 @@
76 <field name="model">account.move.line.memory</field>76 <field name="model">account.move.line.memory</field>
77 <field name="type">tree</field>77 <field name="type">tree</field>
78 <field name="arch" type="xml">78 <field name="arch" type="xml">
79 <tree string="Account Move Line">79 <tree string="Account Move Line" editable="bottom">
80 <field name="date"/>80 <field name="date"/>
81 <field name="name"/>81 <field name="name"/>
82 <field name="account_id"/>82 <field name="account_id"/>
8383
=== modified file 'account_invoice_cash_discount/wizard/invoice_statement_payment.py'
--- account_invoice_cash_discount/wizard/invoice_statement_payment.py 2010-07-23 11:30:07 +0000
+++ account_invoice_cash_discount/wizard/invoice_statement_payment.py 2010-07-29 11:49:41 +0000
@@ -138,47 +138,57 @@
138 'line_ids': [(6, 0, [line.id])]138 'line_ids': [(6, 0, [line.id])]
139 }, context=context)139 }, context=context)
140 140
141 ######################################### Calculation for discount and taxes######141 ######################################### Calculation for discount and taxes######
142 if line.invoice.id:142 if line.invoice.id:
143 143
144 discount = 0.0144 discount = 0.0
145 account = False145 account = False
146 tax_total_amount = 0.0
147 total_discount = 0.0
148 invoice = obj_inv.browse(cursor, user, line.invoice.id, context=context)146 invoice = obj_inv.browse(cursor, user, line.invoice.id, context=context)
149
150 for invoice_line in invoice.invoice_line:147 for invoice_line in invoice.invoice_line:
148 line_tax_amount = 0.0
149 total_tax_amount = 0.0
150 #####get the ratio of the line in the total invoice amount
151 for tax in tax_obj.compute(cursor, user, invoice_line.invoice_line_tax_id, invoice_line.price_subtotal, invoice_line.quantity, invoice.address_invoice_id.id, invoice_line.product_id, invoice.partner_id):
152 line_tax_amount += tax['amount']
153 line_total = invoice_line.price_subtotal + line_tax_amount
154 invoice_res_amount = invoice.amount_total
155 line_ratio = line_total / invoice_res_amount
156 ###########################
157 amount = obj_inv._get_amount(cursor, user, [invoice.id] ,invoice.residual, invoice.payment_term.id, context=context)
158 invoice_amount = amount['amount']
159 discount = obj_inv._get_payment(cursor, user, [invoice.id] , invoice_amount, invoice.payment_term.id, context=context)
160 account = obj_inv._get_account(cursor, user, [invoice.id] , invoice.residual, invoice.payment_term.id, context=context)
161
162 ### discount for the invoice line
163 discount_pay = discount * line_ratio
151 if invoice_line.invoice_line_tax_id:164 if invoice_line.invoice_line_tax_id:
152 amount_invoice_line = obj_inv._get_amount(cursor, user, [invoice.id] , invoice_line.price_subtotal, invoice.payment_term.id, context=context)165 tax_real_amt = 0.0
153 line_amount = amount_invoice_line['amount']166 for tax_id in invoice_line.invoice_line_tax_id:
154 discount = obj_inv._get_payment(cursor, user, [invoice.id] , line_amount, invoice.payment_term.id, context=context)167 tax_data = tax_obj.browse(cursor, user, tax_id.id, context=context)
155 account = obj_inv._get_account(cursor, user, [invoice.id] , invoice.residual, invoice.payment_term.id, context=context)168 tax_amt = discount_pay * tax_data.amount
156169 tax_real_amt = tax_amt / (1 + tax_data.amount)
157 tax_amount = 0.0 170 total_tax_amount += tax_real_amt
158 for tax in tax_obj.compute(cursor, user, invoice_line.invoice_line_tax_id, discount, invoice_line.quantity, invoice.address_invoice_id.id, invoice_line.product_id, invoice.partner_id):171
159 tax_amount = tax['amount']172 tax_invoice_id = invoice_tax_obj.search(cursor, user,[('invoice_id','=',invoice.id),('name','=',tax_data.name)])
160 tax_total_amount += tax['amount']
161 tax_invoice_id = invoice_tax_obj.search(cursor,user,[('invoice_id','=',invoice.id),('name','=',tax['name'])])
162 for tax_id in tax_invoice_id:173 for tax_id in tax_invoice_id:
163 tax_value = invoice_tax_obj.browse(cursor, user, tax_id)174 tax_value = invoice_tax_obj.browse(cursor, user, tax_id)
164 tax_account_id = tax_value.account_id.id175 tax_account_id = tax_value.account_id.id
165 176
166 if tax_amount>0:177 if tax_real_amt>0:
167 statement_reconcile_line_obj.create(cursor, user, {178 statement_reconcile_line_obj.create(cursor, user, {
168 'name': line.name,179 'name': line.name,
169 'amount': tax_amount,180 'amount': tax_real_amt,
170 'account_id': tax_account_id,181 'account_id': tax_account_id,
171 'line_id': reconcile_id,182 'line_id': reconcile_id,
172 }, context=context)183 }, context=context)
173 184 if discount>0:
174 if discount>0:185 discount = discount * line_ratio
175 total_discount += discount 186 statement_reconcile_line_obj.create(cursor, user, {
176 statement_reconcile_line_obj.create(cursor, user, {187 'name': line.name,
177 'name': line.name,188 'amount': discount - total_tax_amount,
178 'amount': discount - tax_amount,189 'account_id': account,
179 'account_id': account,190 'line_id': reconcile_id,
180 'line_id': reconcile_id,191 }, context=context)
181 }, context=context)
182 ##########################################################################192 ##########################################################################
183 193
184 if line.journal_id.type == 'sale':194 if line.journal_id.type == 'sale':
@@ -190,7 +200,7 @@
190 200
191 statement_line_obj.create(cursor, user, {201 statement_line_obj.create(cursor, user, {
192 'name': line.name or '?',202 'name': line.name or '?',
193 'amount': amount,203 'amount': invoice_amount,
194 'type': type,204 'type': type,
195 'partner_id': line.partner_id.id,205 'partner_id': line.partner_id.id,
196 'account_id': line.account_id.id,206 'account_id': line.account_id.id,

Subscribers

People subscribed via source and target branches