odoo / odoo

Odoo. Open Source Apps To Grow Your Business.
https://www.odoo.com
Other
37.18k stars 24.2k forks source link

Difference Amount in "Register Payment" is not displayed properly #1892

Closed inetplus closed 6 years ago

inetplus commented 10 years ago

Version 8

Steps: 1) Create invoice 2) click on button "Register Payment" 3) enter in the field "Paid Amount" an amount which is less than total amount in my example from test data: Customer: Think Big Systems Paid Amount: 750,00 Euro -> entered 250 Euro Payment Method: Bank(EUR) selected

4) Difference Amount: As soon as any kind of Payment Method is selected than difference amount is always zero. which is wrong when entered an amount which is less/more than paid amount

Expected Result: 1) invoice created 2) modal window is opened 3) paid amoun is changable 4) difference is displayed

Actual Result 1) OK 2) OK 3) OK 4) 0 Euro is displayed instead 500 Euro

orchidinfosys commented 10 years ago

Total Payable is 750,00 Euro ? And Paid amount is 250,00 Euro ? In this case there will be no difference will show, because the payable is higher than actually paid. If you enter 800 Euro against payable of 750 Euro then 50 will show as difference. This you can keep it in supplier account (open) or write off to any account like Bank Charges or Exchange rate..

mylbco commented 10 years ago

OK

inetplus commented 10 years ago

i used the term which is in odoo. But please below the explanation.

750,00 Euro is the invoice amount which i need to pay. 250,00 euro is the amount that i paid.

The difference that i have to pay (that is still open) is 500 Euro. 500 Euro must be paid

paymen01 paymen02

orchidinfosys commented 10 years ago

First understand the concept of difference amount, Its not the balance Payable/receivable from/to the partner. Its excess paid or received to/from the partner. Use case : Your company base currency is Euro and your partner currency is USD. While making the payment there is deference due to exchange rate. Eg: USD 500 (In USD 500 * 1.32 = Euro 660 ) payable and from bank statement is showing Euro 700 deducted, Euro 40 as bank charges or exchange difference. This Euro 40 will show as difference and you can set off this amount with any other account other than Receivable/Payable account Like : Bank Charges / Exchange gain /loss etc...

inetplus commented 10 years ago

ok regarding my understanding it is no bug or? if it is no bug then i need to close it

msteinfeld-intero commented 10 years ago

I cannot fully apply with orchidinfosys. Old Behavior was, that i could write off difference amount. So for inetplus' first example, i should be able to write off this amount. no matter, it is exchange difference or discount for cash. At version 6.1 and early 7, i could write off the difference amount, when the customer pays too few. Actually that is not possible. So for inetplus' first, there should be the difference amount 500/-500

Below in pic, you can also see an actual example from me.

kus9

Maybe there was some functional change also? That we have to write off in another place?

thomich commented 9 years ago

There is a bug in register payment, which also exists in Odoo 7. For Odoo 8 you can test that on latest 8.0 runbot on http://runbot.odoo.com/runbot.

  1. go to Accounting
  2. take any open invoice
  3. register payment
  4. change the amount to a fewer value then the original invoice total
  5. select payment method, i used Bank Journal - (Odoo Be) (EUR)

No difference will be calculated or no write off option will be activated...

Checkout attached screenshot of code inspection... the write off options are hidden, cause difference calculation is missed/wrong/buggy...

shot-selection-166

DiegoLelis commented 9 years ago

Same problem here

thomich commented 9 years ago

We created a fix for this issue, check it out here: https://bitbucket.org/thomi/odoo-tools-8.0/src

deepa4lok commented 9 years ago

@inetplus :+1: I agree with it.. I too have noticed this issue, it happens when Register payment is selected from Invoice .. when I traced back the logic behind it I realised.. in newer version, [ receipts/payments] lines are having a field for allocation amount, when once it is filled the evalution happens and which is working fine receipts/payment screen.. But in register payment wizard, no such concepts comes across, as the lines are not displayed, so unfortunately the allocated amount is Zero, hence the diferrence is not caculated... It is a bug in the Logic.....

thomich commented 9 years ago

Whats about this? Longtime issue for a logic, that is important? How you guys register payments, if it does not work properly? Would be nice, if this can bi fixed soon, so we don't need to install a bug fix module...

Last test on runbot: http://26782-8-0-95e79c.runbot.odoo.com/web with invoice SAJ/2014/005

If customer pays correct, no problem: shot-selection-018

If customer pays less then open balance, we can't write off or do anything else: shot-selection-019

If customer pays more then open balance, we are able to choose what to do whit the extra amount shot-selection-020

Thanks

voltivo commented 9 years ago

This problem still exists.

One needs to be able to write off an underpayment.

meetai commented 9 years ago

I just did. Seems to be working from the payments form, not from the popup created from the invoice. Can confirm right now, though.

richard-willdooit commented 9 years ago

Any movement on this? Was very embarrassed when demonstrating to client that wanted to accept a short payment and write the difference off and not given an option to do so.

sfaraujo commented 9 years ago

SOLVED With the default Chart of accounts there is no problem. But with my custom charts account for Portugal I had the same problem. So, I solved it just comparing the charts involved in this process, and I realized that the Receivable Account wasn't able to reconcile.

Accounts -> Templates -> Accounts -> Charts of Accounts Templates Click on the Receivable Account and turn on the Allow Reconciliation

AlmustafaNET commented 9 years ago

I solved it!

The problem exist when I used the custom Charts of Accounts.

  1. Change Clients Accounts. In my case: '1.01.02.05.01.01 - Clientes' set both Types to: 'Por cobrar ' And '2.02.02.01.01. - Proveedores' set to: 'A pagar' AND checked 'Allow Reconciliation'
  2. Set a correct account in "Account Journal" in 'Journals', for default this account is incorrect.

And BINGO!

richard-willdooit commented 9 years ago

@thomich - I just tried your module. It seems that with that installed, it only allows a write off if there is an overpayment, not if there is an underpayment? It reverses the original problem.

thomich commented 9 years ago

@richard-willowit do you have setup your receivable accounts correctly? as above comments the receivable account (account on customer invoice) has to be set to allow reconciliation... same for supplier invoices...

if i try that on any odoo 8 runbot (http://runbot.odoo.com/runbot) i can't get it running as above comments described... if i do a underpayment for a invoice, difference amount for me is not calculated... even if runbot's are using default CoA.

As you described about reverse the problem, for me on runbot's if you register a overpayment it calculates the difference amount, which is wrong...

As i know from accounting, a overpayment can't be done in this way, for this you have to create a own journal entry.. register full amoutn of invoice/payment and for overpayment create a own journal entry...

richard-willdooit commented 9 years ago

@thomich Yes, Receivable and Payables set correctly.

We want to allow under and overpayments this way. The variances are there for every payment this particular client invoice payment, because there is a currency variation every time. I have just bitten the bullet, written my own module that is a complete copy of their code, with two dummy hooks in it, and then I change the apply amount in those hooks to stop it from reaching the ceiling of applies, and it then always shows the full variance on the pop-up, and allows under and overpayments to be written off then.

thomich commented 9 years ago

@richard-willowit normaly, over payment can be registered with customer payments wizard (NOT register payment from invoice)... there you can also make bulk payments for partners...

richard-willdooit commented 9 years ago

@thomich Yes, I realise that, but why make people do it in two steps when they can do it in one. Register payment from invoice is just as logical. "Here is your invoice for 199.99". "Here is 200 dollars". Hmmm, better go to a different screen to process this...

wpichler commented 9 years ago

i do have the same problem here i can see a fix for version 7 which was never merged https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-1202127-ssh

I will try this fix on my 8.0 branch

Troublicious commented 8 years ago

This bug is still present in the Version 8.0-20151109 , nobody use this feature in Odoo ? Nobody uses seriously Odoo in fact ??

thomich commented 8 years ago

our customers use it.. we have done a fix for it, see above comments... if underpayment it works fine... for overpayment, you have to go to customer payments and make the payment from there...

Troublicious commented 8 years ago

Thank you thomich for your answer and your fix that i tried: indeed it's not a real solution as it inverse the problem . I can't understand how sfaraujo and AlmustafaNET solved the problem, as nothing as to deal with reconciliation in my testing DB. I really don't understand how such a bug can stay in Odoo during more than 15 months ...

thomich commented 8 years ago

i also don't know, why this still exists.. and i think it also exists in v9...

you say it inverts problem.. now, we here in switzerland normally not having customers that pay more then the invoiced amount ;) for us, if invoice amount is eg. 105 and customer pays 100, we can make the write off and difference will be calculated correctly... if invoice amount is eg. 95 and customer pays 100, then we have to go trough customer payment OR normally register 95 trough register payment wizard an make a manual journal entry with the extra 5 to the needed account...

Troublicious commented 8 years ago

LOL =) it seems that the end user for whom i try to find a solution has some customers who pay more! (cause they use paper order forms, maybe they just don't know about abacus, or calculator ;). In any case, thank you for your suggestions thomich, i'll post again if i find something convincing !

thomich commented 8 years ago

thanks ;)

if i find time and maybe a contributor, we will enhance the fix that it also can handle over payments in payment registration wizard...

ysoler commented 8 years ago

Hi thomich, your fix is good enought for me with Customer Payments, but with Supplier Payments when i try to register partial payments, payments are registering fully. Do you have the same issue?

lapagept commented 8 years ago

The fix from thomic has many lines. We already have a custom module who overrides account_voucher class. It seems dangerous to install his fix. More, in his fix, we don't really see the differences with original files.

rossasa commented 8 years ago

I'm having the same issue, It's still not solved?

thomich commented 8 years ago

please check our latest version of account_voucher_payment_fix, for us on odoo 8 we can solve the issue, under and over payment...

important is, correct configuration of accounts, as usual...

rossasa commented 8 years ago

thomich, You mean that it's a configuration problem? Becouse I check my receivable accounts it's with the option Allow Reconciliation checked and still having this error, I check even with the default Belgium chart of accounts I have this same error. Could be other configuration?

rossasa commented 8 years ago

I installed you module and works great with the company currency, in multi-currency is where I have problems the fix doesn't works correctly. For example: If I have an invoice of 200USD and try paid 5000PYG(1USD) the Difference Amount gives me -4800PYG instread of 995000PYG witch will be the correct

rossasa commented 8 years ago

This only happends if the value of the Paid Amount is bigger than the Invoice residual value

afrikanovic commented 7 years ago

Does anyone fixed this ? it seems i have the same problem on V8

ehanuise commented 7 years ago

I have this issue on odoo.com, how can I apply your fix on the saas odoo ? Don't find it in the modules list.

thomich commented 7 years ago

you can't use tht module/repository on saas odoo.. you have to use standalone odoo..

contact me, if you need support for standalone odoo.

ehanuise commented 7 years ago

oh, ok... Any chances this get fixed on saas someday ? It's quite a problem :)

thomich commented 7 years ago

hey @ehanuise

see, this bug is open since aug 2014 and we just have made a fix, but seams odoo is not interested to implement or fix it in base..

go with your own odoo is best way to get fast fixes ;)..

Yenthe666 commented 6 years ago

Hi @inetplus ,

Thank you for your bug report. At this point Odoo 8 is no longer supported as Odoo only supports three versions (9.0, 10.0, 11.0 at the moment). If you can still reproduce this issue on Odoo 9, Odoo 10 or Odoo 11 we encourage you to create a new bug report. P.S: Sorry it wasn't ever handled fully.

Regards, Yenthe