openerp-brazil-team team mailing list archive
-
openerp-brazil-team team
-
Mailing list archive
-
Message #00576
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