From d30a59b46e90d21ab2f4176280173898fa665ca3 Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Wed, 17 Feb 2010 10:51:10 +0000 Subject: [PATCH] Bug #564380 Payment on bills doubles bill Patch by Mike Evans git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@18666 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/business/business-reports/invoice.scm | 26 ++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/business/business-reports/invoice.scm b/src/business/business-reports/invoice.scm index fb9fcd41f1..0518cbe98b 100644 --- a/src/business/business-reports/invoice.scm +++ b/src/business/business-reports/invoice.scm @@ -388,15 +388,31 @@ (define (add-payment-row table used-columns split total-collector) (let* ((t (xaccSplitGetParent split)) (currency (xaccTransGetCurrency t)) - ;; XXX Need to know when to reverse the value + (invoice (opt-val invoice-page invoice-name)) + (owner '()) (amt (gnc:make-gnc-monetary currency (xaccSplitGetValue split))) (payment-style "grand-total") (row '())) - - (total-collector 'add - (gnc:gnc-monetary-commodity amt) - (gnc:gnc-monetary-amount amt)) + ; Update to fix bug 564380, payment on bill doubles bill Mike Evans + ;; Reverse the value when needed + (if (not (null? invoice)) + (begin + (set! owner (gncInvoiceGetOwner invoice)) + (let ((type (gncOwnerGetType + (gncOwnerGetEndOwner owner)))) + (cond + ((eqv? type GNC-OWNER-CUSTOMER) + (total-collector 'add + (gnc:gnc-monetary-commodity amt) + (gnc:gnc-monetary-amount amt))) + ((eqv? type GNC-OWNER-VENDOR) + (total-collector 'add + (gnc:gnc-monetary-commodity amt) + (gnc:gnc-monetary-amount (gnc:monetary-neg amt)))) + )))) + + (if (date-col used-columns) (addto! row (gnc-print-date (gnc-transaction-get-date-posted t))))