- $ref->{remaining_amount} = $ref->{amount} - $ref->{billed_amount};
- $ref->{remaining_netamount} = $ref->{netamount} - $ref->{billed_netamount};
- $ref->{exchangerate} = 1 unless $ref->{exchangerate};
+ if ($ref->{billed_amount} < 0) { # case: credit note(s) higher than invoices
+ $ref->{remaining_amount} = $ref->{amount} + $ref->{billed_amount};
+ $ref->{remaining_netamount} = $ref->{netamount} + $ref->{billed_netamount};
+ } else {
+ $ref->{remaining_amount} = $ref->{amount} - $ref->{billed_amount};
+ $ref->{remaining_netamount} = $ref->{netamount} - $ref->{billed_netamount};
+ }
+ $ref->{exchangerate} ||= $ref->{daily_exchangerate};
+ $ref->{exchangerate} ||= 1;