← Back to team overview

openerp-brazil-team team mailing list archive

Re: melhoras no sistem de reconciliação de pagamentos, o que e préciso?

 


Com jeito voçe resolve este bug no caminho(?) relativo ao valor residual, quando fazemos pagamentos parciais de faturas.

Para meu uso eu resolvi, reescrevendo o metodo _amount_residual assim:
-----------------------
def _amount_residual(self, cr, uid, ids, name, args, context=None):
residual = {}
str_ids = ','.join([ str(i) for i in ids])
cr.execute( """SELECT COALESCE(ml.reconcile_id, ml.reconcile_partial_id)  FROM account_move_line ml 
INNER JOIN account_move mov ON mov.id = ml.move_id
INNER JOIN account_invoice inv ON inv.move_id = mov.id
WHERE inv.account_id = ml.account_id AND inv.id in (%s) """ %str_ids )
res = cr.fetchall()
rec_ids = tuple( set( [i[0] for i in res ]))
for rec_id in rec_ids:
if not rec_id : continue
cr.execute("""SELECT COALESCE(inv.id, 0) AS invoice, SUM(debit), SUM(credit)
FROM account_move_line ml   LEFT JOIN account_invoice inv  ON  inv.move_id = ml.move_id
WHERE ml.reconcile_id = %d OR ml.reconcile_partial_id = %d 
GROUP BY inv.id ORDER BY invoice""" % (rec_id, rec_id) )
amount_paid = cr.fetchone()[2]
for inv, inv_amount, n in cr.fetchall() :
if amount_paid < inv_amount :
residual[inv] = inv_amount - amount_paid

else : 
residual[inv] = 0
amount_paid = max(0, amount_paid - inv_amount)
# only invoices reconciled total or partially were handled. need to set residual = total for invoices not reconciled 
# remaining ids 
rem_ids = [ i for i in ids if i not in residual.keys() ]
for inv in self.read(cr, uid, rem_ids, ['id','amount_total']):
residual[inv['id']] = inv['amount_total']
return residual
-------------------------

Há outro problema que encontrei (mas não reportei bug sobre isso) relativo ao campo payment_ids do objecto invoice.
Quando reconcilio 2 ou mais facturas com 1 pagamento, ao consultar as linhas de pagamento associadas a uma factura, encontro lá o pagamento e as demais faturas.

Para o usuário é confuso, uma fatura foi paga com outras faturas???

Se voçê vai mexer nas reconciliações, pode tentar dar uma olhada

Paulino

Citando Raphaël Valyi <rvalyi@xxxxxxxxx>: 

> Ola pessoal,   so vou avisando que tenho um cliente (Anevia.com)  que quer que eu faço umas melhoras simples no atual sistema de reconciliação de pagamentos e faturas do OpenERP. Queremos depois que isso vai dentro do trunco do OpenERP para deixa ele mais competitivo. 
>  Basicamente ele quer que na popup de reconciliaçao, tem 3 campos a mais: - data da escritura de "write-off" (optional, senao data do dia) - titualo da escritura de write-off, com valor por padrao - campo de conta analytica para associar ume escritura analityca do mesmo valor (optional) 
>  
>  Ai tem gente que quer ainda mais coisas e vai que os cara sao especialista em contabilidade. Dai pergunto, voces vem outras coisas simples que podem melhorar muito o uso? sao citados coisas como: - opçao para facilitar a recuperaçao de taxas VAT sobre o diferential entre fatura e pagemento caso vc desisitir do resto - o que o write-off pode ser de varios tipos, dependente das coisas a reconciliar (VAT, moeda estrangeras...)
> Vejà o topico frances sobre o assunto http://openerp.com/forum/topic12918.html?sid=00557af572983d4117f804807747c07e
>  
>  Os dois ultimos pontos, principlamente o ultimo nao sao trivaiais de implementar e nao ia dar botar nao versao 5.0.x ainda porque ia alterar muito o existente.  Agora pretendo implementar os 3 primeiros e pedir que Tiny integra essa branch na versao 5.0.x. Alias meu cliente (Anevia.com) acabou
> de falar que o caso de recuperar VAT e muito raro e que basta criar outra escritura finaceira no caso. Tratamento diferenciado dos writ-off em caso de reconciliação massiva nao seria util tambem no caso dele.
>    
>  Agora, aproveito para perguntar, na opiniao de voces, sera que precisa de outra coisa para reconciliaçãoes para uso brasileiro?  Como que voces acham o atual sistema?
> 
> 
> Abraço
> 
> 
> Raphaël Valyi
> http://www.akretion.com 

References