From 996b94b1efad7e2388fd848321e80695ec5fd9aa Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Mon, 4 Jun 2018 20:54:15 +0800 Subject: [PATCH] [invoice] move invoice-details-table to its own function --- gnucash/report/business-reports/invoice.scm | 161 ++++++++++---------- 1 file changed, 82 insertions(+), 79 deletions(-) diff --git a/gnucash/report/business-reports/invoice.scm b/gnucash/report/business-reports/invoice.scm index 9cab23aa58..8bce6aabd3 100644 --- a/gnucash/report/business-reports/invoice.scm +++ b/gnucash/report/business-reports/invoice.scm @@ -453,6 +453,66 @@ (loop (cdr list-of-substrings) (cons* (gnc:html-markup-br) (car list-of-substrings) result))))) +(define (make-invoice-details-table invoice billing-id? billing-terms? job?) + (let* ((invoice-details-table (gnc:make-html-table)) + (book (gncInvoiceGetBook invoice)) + (date-format (gnc:options-fancy-date book)) + (jobnumber (gncJobGetID (gncOwnerGetJob (gncInvoiceGetOwner invoice)))) + (jobname (gncJobGetName (gncOwnerGetJob (gncInvoiceGetOwner invoice))))) + + (gnc:html-table-set-style! invoice-details-table "table" + 'attribute (list "class" "date-table") + 'attribute (list "align" "right") + 'attribute (list "cellspacing" 0) + 'attribute (list "cellpadding" 1)) + + (if (gncInvoiceIsPosted invoice) + (let ((post-date (gncInvoiceGetDatePosted invoice)) + (due-date (gncInvoiceGetDateDue invoice))) + (make-date-row! invoice-details-table (_ "Date") post-date date-format) + (make-date-row! invoice-details-table (_ "Due Date") due-date date-format)) + (gnc:html-table-append-row! invoice-details-table + (gnc:make-html-text + (_ "Invoice in progress...")))) + + (if billing-id? + (let ((billing-id (gncInvoiceGetBillingID invoice))) + (if (and billing-id (not (string-null? billing-id))) + (begin + (gnc:html-table-append-row! invoice-details-table + (list + (_ "Reference") + billing-id)) + (gnc:html-table-append-row! invoice-details-table '()))))) + + (if billing-terms? + (let* ((term (gncInvoiceGetTerms invoice)) + (terms (gncBillTermGetDescription term))) + (if (and terms (not (string-null? terms))) + (begin + (gnc:html-table-append-row! invoice-details-table + (list + (_ "Terms") + terms)) + (gnc:html-table-append-row! invoice-details-table '()))))) + + ;; Add job number and name to invoice if requested and if it exists + (if (and job? + (not (string-null? jobnumber))) + (begin + (gnc:html-table-append-row! invoice-details-table + (list + (_ "Job number") + jobnumber)) + (gnc:html-table-append-row! invoice-details-table '()) + (gnc:html-table-append-row! invoice-details-table + (list + (_ "Job name") + jobname)) + (gnc:html-table-append-row! invoice-details-table '()) + (gnc:html-table-append-row! invoice-details-table '()))) + invoice-details-table)) + (define (make-client-table owner orders) (let ((table (gnc:make-html-table))) (gnc:html-table-set-style! table "table" @@ -489,17 +549,6 @@ (strftime date-format (localtime date))))) -(define (make-date-table) - (let ((table (gnc:make-html-table))) - (gnc:html-table-set-style! table "table" - 'attribute (list "border" 0) - 'attribute (list "cellpadding" 0)) - - (gnc:html-table-set-last-row-style! table "td" - 'attribute (list "valign" "top")) - - table)) - (define (make-myname-table book date-format) (let* ((table (gnc:make-html-table)) (name (gnc:company-info book gnc:*company-name*)) @@ -539,8 +588,10 @@ (invoice (opt-val gnc:pagename-general gnc:optname-invoice-number)) (references? (opt-val "Display" "References")) (job? (opt-val "Display" "Job Details")) - (jobnumber (gncJobGetID (gncOwnerGetJob (gncInvoiceGetOwner invoice)))) - (jobname (gncJobGetName (gncOwnerGetJob (gncInvoiceGetOwner invoice)))) + (billing-id? (opt-val "Display" "Billing ID")) + (billing-terms? (opt-val "Display" "Billing Terms")) + (book (gncInvoiceGetBook invoice)) + (date-format (gnc:options-fancy-date book)) (custom-title (opt-val gnc:pagename-general "Custom Title"))) (if (null? invoice) @@ -550,7 +601,6 @@ (_ "No valid invoice selected. Click on the Options button and select the invoice to use."))) (let* ((book (gncInvoiceGetBook invoice)) - (date-format (gnc:options-fancy-date book)) (owner (gncInvoiceGetOwner invoice)) (type (gncInvoiceGetType invoice)) (orders (if references? (delete-duplicates (map gncEntryGetOrder (gncInvoiceGetEntries invoice))) '())) @@ -576,76 +626,29 @@ (gnc:html-document-set-style-text! document invoice-css) - (gnc:html-table-set-style! table "table" - 'attribute (list "border" 1) - 'attribute (list "cellspacing" 0) - 'attribute (list "cellpadding" 4)) + (let ((main-table (gnc:make-html-table))) - (gnc:html-document-add-object! document - (make-myname-table book date-format)) + (gnc:html-table-append-row! main-table + (list "BLABLA" + (make-invoice-details-table + invoice billing-id? + billing-terms? job?))) - (if (gncInvoiceIsPosted invoice) - (let ((date-table (make-date-table)) - (post-date (gncInvoiceGetDatePosted invoice)) - (due-date (gncInvoiceGetDateDue invoice))) - (make-date-row! date-table (string-append title " " (_ "Date")) post-date date-format) - (make-date-row! date-table (_ "Due Date") due-date date-format) - (gnc:html-document-add-object! document date-table)) - (gnc:html-document-add-object! document - (gnc:make-html-text - (_ "Invoice in progress...")))) + (gnc:html-table-append-row! main-table + (list (make-client-table owner orders) + (make-myname-table book date-format))) - (make-break! document) - (make-break! document) + ;; entries-table + (gnc:html-table-set-style! table "table" + 'attribute (list "class" "entries-table") + 'attribute (list "border" 1) + 'attribute (list "cellspacing" 0) + 'attribute (list "cellpadding" 4)) - (gnc:html-document-add-object! document - (make-client-table owner orders)) + (gnc:html-table-append-row! main-table + (gnc:make-html-table-cell/size 1 2 table)) - (make-break! document) - (make-break! document) - - (if (opt-val "Display" "Billing ID") - (let ((billing-id (gncInvoiceGetBillingID invoice))) - (if (and billing-id (not (string-null? billing-id))) - (begin - (gnc:html-document-add-object! document - (multiline-to-html-text - (string-append - (_ "Reference") ": " - billing-id))) - (make-break! document))))) - - (if (opt-val "Display" "Billing Terms") - (let* ((term (gncInvoiceGetTerms invoice)) - (terms (gncBillTermGetDescription term))) - (if (and terms (not (string-null? terms))) - (begin - (gnc:html-document-add-object! document - (multiline-to-html-text - (string-append - (_ "Terms") ": " - terms))) - (make-break! document))))) - - ;; Add job number and name to invoice if requested and if it exists - (if (and job? - (not (string-null? jobnumber))) - (begin - (gnc:html-document-add-object! document - (multiline-to-html-text - (string-append - (_ "Job number") ": " - jobnumber))) - (make-break! document) - (gnc:html-document-add-object! document - (multiline-to-html-text - (string-append - (_ "Job name") ": " - jobname))) - (make-break! document) - (make-break! document))) - - (gnc:html-document-add-object! document table) + (gnc:html-document-add-object! document main-table)) (make-break! document) (make-break! document)