Add tax base to invoices exported ODS file

Accountants asks for that information, too.
This commit is contained in:
jordi fita mas 2024-10-12 03:04:56 +02:00
parent f1534e6cd2
commit 01807de5ca
2 changed files with 7 additions and 3 deletions

View File

@ -28,6 +28,7 @@ type InvoiceEntry struct {
Slug string
Date time.Time
Number string
Subtotal string
Total string
CustomerName string
Tags []string
@ -71,6 +72,7 @@ func mustCollectInvoiceEntries(ctx context.Context, conn *Conn, locale *Locale,
, invoice.tags
, invoice.invoice_status
, isi18n.name
, to_price(subtotal, decimal_digits)
, to_price(total, decimal_digits)
from invoice
join contact using (contact_id)
@ -86,7 +88,7 @@ func mustCollectInvoiceEntries(ctx context.Context, conn *Conn, locale *Locale,
var entries []*InvoiceEntry
for rows.Next() {
entry := &InvoiceEntry{}
if err := rows.Scan(&entry.ID, &entry.Slug, &entry.Date, &entry.Number, &entry.CustomerName, &entry.Tags, &entry.Status, &entry.StatusLabel, &entry.Total); err != nil {
if err := rows.Scan(&entry.ID, &entry.Slug, &entry.Date, &entry.Number, &entry.CustomerName, &entry.Tags, &entry.Status, &entry.StatusLabel, &entry.Subtotal, &entry.Total); err != nil {
panic(err)
}
entries = append(entries, entry)

View File

@ -55,14 +55,15 @@ func extractTaxIDs(taxColumns map[int]string) []int {
func mustWriteInvoicesOds(invoices []*InvoiceEntry, vatin map[int]string, lastCollectionDate map[int]time.Time, taxes map[int]taxMap, taxColumns map[int]string, locale *Locale, company *Company) []byte {
taxIDs := extractTaxIDs(taxColumns)
columns := make([]string, 8+len(taxIDs))
columns := make([]string, 9+len(taxIDs))
columns[0] = "Date"
columns[1] = "Invoice Num."
columns[2] = "Customer"
columns[3] = pgettext("title", "VAT number", locale)
columns[4] = "Payment Date"
columns[5] = "Status"
i := 6
columns[6] = "Tax Base"
i := 7
for _, taxID := range taxIDs {
columns[i] = taxColumns[taxID]
i++
@ -80,6 +81,7 @@ func mustWriteInvoicesOds(invoices []*InvoiceEntry, vatin map[int]string, lastCo
writeCellString(sb, "")
}
writeCellString(sb, invoice.StatusLabel)
writeCellFloat(sb, invoice.Subtotal, locale, company)
writeTaxes(sb, taxes[invoice.ID], taxIDs, locale, company)
writeCellFloat(sb, invoice.Total, locale, company)
writeCellString(sb, strings.Join(invoice.Tags, ","))