parent
60ec335769
commit
831becf6fd
|
@ -17,6 +17,8 @@ type ExpenseEntry struct {
|
||||||
InvoiceDate time.Time
|
InvoiceDate time.Time
|
||||||
InvoiceNumber string
|
InvoiceNumber string
|
||||||
Amount string
|
Amount string
|
||||||
|
Taxes map[string]string
|
||||||
|
Total string
|
||||||
InvoicerName string
|
InvoicerName string
|
||||||
OriginalFileName string
|
OriginalFileName string
|
||||||
Tags []string
|
Tags []string
|
||||||
|
@ -28,6 +30,7 @@ type expensesIndexPage struct {
|
||||||
Expenses []*ExpenseEntry
|
Expenses []*ExpenseEntry
|
||||||
TotalAmount string
|
TotalAmount string
|
||||||
Filters *expenseFilterForm
|
Filters *expenseFilterForm
|
||||||
|
TaxClasses []string
|
||||||
ExpenseStatuses map[string]string
|
ExpenseStatuses map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +47,7 @@ func IndexExpenses(w http.ResponseWriter, r *http.Request, _ httprouter.Params)
|
||||||
Expenses: mustCollectExpenseEntries(r.Context(), conn, locale, filters),
|
Expenses: mustCollectExpenseEntries(r.Context(), conn, locale, filters),
|
||||||
TotalAmount: mustComputeExpensesTotalAmount(r.Context(), conn, filters),
|
TotalAmount: mustComputeExpensesTotalAmount(r.Context(), conn, filters),
|
||||||
ExpenseStatuses: mustCollectExpenseStatuses(r.Context(), conn, locale),
|
ExpenseStatuses: mustCollectExpenseStatuses(r.Context(), conn, locale),
|
||||||
|
TaxClasses: mustCollectTaxClasses(r.Context(), conn, company),
|
||||||
Filters: filters,
|
Filters: filters,
|
||||||
}
|
}
|
||||||
mustRenderMainTemplate(w, r, "expenses/index.gohtml", page)
|
mustRenderMainTemplate(w, r, "expenses/index.gohtml", page)
|
||||||
|
@ -55,7 +59,9 @@ func mustCollectExpenseEntries(ctx context.Context, conn *Conn, locale *Locale,
|
||||||
select expense.slug
|
select expense.slug
|
||||||
, invoice_date
|
, invoice_date
|
||||||
, invoice_number
|
, invoice_number
|
||||||
, to_price(expense.amount + coalesce(sum(tax.amount)::integer, 0), decimal_digits) as total
|
, to_price(expense.amount, decimal_digits) as amount
|
||||||
|
, array_agg(array[tax_class.name, to_price(coalesce(expense_tax.amount, 0), decimal_digits)]) filter (where tax_class.name is not null)
|
||||||
|
, to_price(expense.amount + coalesce(sum(expense_tax.amount)::integer, 0), decimal_digits) as total
|
||||||
, contact.name
|
, contact.name
|
||||||
, coalesce(attachment.original_filename, '')
|
, coalesce(attachment.original_filename, '')
|
||||||
, expense.tags
|
, expense.tags
|
||||||
|
@ -63,7 +69,9 @@ func mustCollectExpenseEntries(ctx context.Context, conn *Conn, locale *Locale,
|
||||||
, esi18n.name
|
, esi18n.name
|
||||||
from expense
|
from expense
|
||||||
left join expense_attachment as attachment using (expense_id)
|
left join expense_attachment as attachment using (expense_id)
|
||||||
left join expense_tax_amount as tax using (expense_id)
|
left join expense_tax_amount as expense_tax using (expense_id)
|
||||||
|
left join tax using (tax_id)
|
||||||
|
left join tax_class using (tax_class_id)
|
||||||
join contact using (contact_id)
|
join contact using (contact_id)
|
||||||
join expense_status_i18n esi18n on expense.expense_status = esi18n.expense_status and esi18n.lang_tag = $1
|
join expense_status_i18n esi18n on expense.expense_status = esi18n.expense_status and esi18n.lang_tag = $1
|
||||||
join currency using (currency_code)
|
join currency using (currency_code)
|
||||||
|
@ -84,10 +92,16 @@ func mustCollectExpenseEntries(ctx context.Context, conn *Conn, locale *Locale,
|
||||||
|
|
||||||
var entries []*ExpenseEntry
|
var entries []*ExpenseEntry
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
entry := &ExpenseEntry{}
|
entry := &ExpenseEntry{
|
||||||
if err := rows.Scan(&entry.Slug, &entry.InvoiceDate, &entry.InvoiceNumber, &entry.Amount, &entry.InvoicerName, &entry.OriginalFileName, &entry.Tags, &entry.Status, &entry.StatusLabel); err != nil {
|
Taxes: make(map[string]string),
|
||||||
|
}
|
||||||
|
var taxes [][]string
|
||||||
|
if err := rows.Scan(&entry.Slug, &entry.InvoiceDate, &entry.InvoiceNumber, &entry.Amount, &taxes, &entry.Total, &entry.InvoicerName, &entry.OriginalFileName, &entry.Tags, &entry.Status, &entry.StatusLabel); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
for _, tax := range taxes {
|
||||||
|
entry.Taxes[tax[0]] = tax[1]
|
||||||
|
}
|
||||||
entries = append(entries, entry)
|
entries = append(entries, entry)
|
||||||
}
|
}
|
||||||
if rows.Err() != nil {
|
if rows.Err() != nil {
|
||||||
|
@ -143,6 +157,21 @@ func mustComputeExpensesTotalAmount(ctx context.Context, conn *Conn, filters *ex
|
||||||
`, where), args...)
|
`, where), args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func mustCollectTaxClasses(ctx context.Context, conn *Conn, company *Company) []string {
|
||||||
|
rows := conn.MustQuery(ctx, "select name from tax_class where company_id = $1", company.Id)
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var taxClasses []string
|
||||||
|
for rows.Next() {
|
||||||
|
var taxClass string
|
||||||
|
if err := rows.Scan(&taxClass); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
taxClasses = append(taxClasses, taxClass)
|
||||||
|
}
|
||||||
|
return taxClasses
|
||||||
|
}
|
||||||
|
|
||||||
func ServeExpenseForm(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
|
func ServeExpenseForm(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
|
||||||
locale := getLocale(r)
|
locale := getLocale(r)
|
||||||
conn := getConn(r)
|
conn := getConn(r)
|
||||||
|
|
75
po/ca.po
75
po/ca.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: numerus\n"
|
"Project-Id-Version: numerus\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2023-07-18 13:12+0200\n"
|
"POT-Creation-Date: 2023-10-02 12:11+0200\n"
|
||||||
"PO-Revision-Date: 2023-01-18 17:08+0100\n"
|
"PO-Revision-Date: 2023-01-18 17:08+0100\n"
|
||||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||||
|
@ -105,7 +105,8 @@ msgstr "Subtotal"
|
||||||
#: web/template/invoices/view.gohtml:115 web/template/invoices/edit.gohtml:75
|
#: web/template/invoices/view.gohtml:115 web/template/invoices/edit.gohtml:75
|
||||||
#: web/template/quotes/new.gohtml:74 web/template/quotes/view.gohtml:82
|
#: web/template/quotes/new.gohtml:74 web/template/quotes/view.gohtml:82
|
||||||
#: web/template/quotes/view.gohtml:122 web/template/quotes/edit.gohtml:75
|
#: web/template/quotes/view.gohtml:122 web/template/quotes/edit.gohtml:75
|
||||||
#: web/template/expenses/new.gohtml:47 web/template/expenses/edit.gohtml:49
|
#: web/template/expenses/new.gohtml:47 web/template/expenses/index.gohtml:74
|
||||||
|
#: web/template/expenses/edit.gohtml:49
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Total"
|
msgstr "Total"
|
||||||
|
@ -197,13 +198,13 @@ msgid "Amount"
|
||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:73 web/template/quotes/index.gohtml:73
|
#: web/template/invoices/index.gohtml:73 web/template/quotes/index.gohtml:73
|
||||||
#: web/template/expenses/index.gohtml:71
|
#: web/template/expenses/index.gohtml:75
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Descàrrega"
|
msgstr "Descàrrega"
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:74 web/template/quotes/index.gohtml:74
|
#: web/template/invoices/index.gohtml:74 web/template/quotes/index.gohtml:74
|
||||||
#: web/template/contacts/index.gohtml:51 web/template/expenses/index.gohtml:72
|
#: web/template/contacts/index.gohtml:51 web/template/expenses/index.gohtml:76
|
||||||
#: web/template/products/index.gohtml:48
|
#: web/template/products/index.gohtml:48
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
|
@ -225,7 +226,7 @@ msgstr "Accions per la factura %s"
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:138 web/template/invoices/view.gohtml:19
|
#: web/template/invoices/index.gohtml:138 web/template/invoices/view.gohtml:19
|
||||||
#: web/template/quotes/index.gohtml:137 web/template/quotes/view.gohtml:22
|
#: web/template/quotes/index.gohtml:137 web/template/quotes/view.gohtml:22
|
||||||
#: web/template/contacts/index.gohtml:82 web/template/expenses/index.gohtml:134
|
#: web/template/contacts/index.gohtml:82 web/template/expenses/index.gohtml:143
|
||||||
#: web/template/products/index.gohtml:78
|
#: web/template/products/index.gohtml:78
|
||||||
msgctxt "action"
|
msgctxt "action"
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
|
@ -242,7 +243,7 @@ msgid "No invoices added yet."
|
||||||
msgstr "No hi ha cap factura."
|
msgstr "No hi ha cap factura."
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:163 web/template/quotes/index.gohtml:170
|
#: web/template/invoices/index.gohtml:163 web/template/quotes/index.gohtml:170
|
||||||
#: web/template/expenses/index.gohtml:151
|
#: web/template/expenses/index.gohtml:160
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Total"
|
msgstr "Total"
|
||||||
|
|
||||||
|
@ -590,11 +591,11 @@ msgctxt "title"
|
||||||
msgid "Invoice Number"
|
msgid "Invoice Number"
|
||||||
msgstr "Número de factura"
|
msgstr "Número de factura"
|
||||||
|
|
||||||
#: web/template/expenses/index.gohtml:126
|
#: web/template/expenses/index.gohtml:135
|
||||||
msgid "Actions for expense %s"
|
msgid "Actions for expense %s"
|
||||||
msgstr "Accions per la despesa %s"
|
msgstr "Accions per la despesa %s"
|
||||||
|
|
||||||
#: web/template/expenses/index.gohtml:144
|
#: web/template/expenses/index.gohtml:153
|
||||||
msgid "No expenses added yet."
|
msgid "No expenses added yet."
|
||||||
msgstr "No hi ha cap despesa."
|
msgstr "No hi ha cap despesa."
|
||||||
|
|
||||||
|
@ -734,37 +735,37 @@ msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: pkg/products.go:177 pkg/products.go:303 pkg/quote.go:174 pkg/quote.go:708
|
#: pkg/products.go:177 pkg/products.go:303 pkg/quote.go:174 pkg/quote.go:708
|
||||||
#: pkg/expenses.go:278 pkg/expenses.go:442 pkg/invoices.go:174
|
#: pkg/expenses.go:307 pkg/expenses.go:471 pkg/invoices.go:174
|
||||||
#: pkg/invoices.go:746 pkg/invoices.go:1331 pkg/contacts.go:154
|
#: pkg/invoices.go:746 pkg/invoices.go:1331 pkg/contacts.go:154
|
||||||
#: pkg/contacts.go:362
|
#: pkg/contacts.go:362
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr "Etiquetes"
|
msgstr "Etiquetes"
|
||||||
|
|
||||||
#: pkg/products.go:181 pkg/quote.go:178 pkg/expenses.go:452 pkg/invoices.go:178
|
#: pkg/products.go:181 pkg/quote.go:178 pkg/expenses.go:481 pkg/invoices.go:178
|
||||||
#: pkg/contacts.go:158
|
#: pkg/contacts.go:158
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Tags Condition"
|
msgid "Tags Condition"
|
||||||
msgstr "Condició de les etiquetes"
|
msgstr "Condició de les etiquetes"
|
||||||
|
|
||||||
#: pkg/products.go:185 pkg/quote.go:182 pkg/expenses.go:456 pkg/invoices.go:182
|
#: pkg/products.go:185 pkg/quote.go:182 pkg/expenses.go:485 pkg/invoices.go:182
|
||||||
#: pkg/contacts.go:162
|
#: pkg/contacts.go:162
|
||||||
msgctxt "tag condition"
|
msgctxt "tag condition"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Totes"
|
msgstr "Totes"
|
||||||
|
|
||||||
#: pkg/products.go:186 pkg/expenses.go:457 pkg/invoices.go:183
|
#: pkg/products.go:186 pkg/expenses.go:486 pkg/invoices.go:183
|
||||||
#: pkg/contacts.go:163
|
#: pkg/contacts.go:163
|
||||||
msgid "Invoices must have all the specified labels."
|
msgid "Invoices must have all the specified labels."
|
||||||
msgstr "Les factures han de tenir totes les etiquetes."
|
msgstr "Les factures han de tenir totes les etiquetes."
|
||||||
|
|
||||||
#: pkg/products.go:190 pkg/quote.go:187 pkg/expenses.go:461 pkg/invoices.go:187
|
#: pkg/products.go:190 pkg/quote.go:187 pkg/expenses.go:490 pkg/invoices.go:187
|
||||||
#: pkg/contacts.go:167
|
#: pkg/contacts.go:167
|
||||||
msgctxt "tag condition"
|
msgctxt "tag condition"
|
||||||
msgid "Any"
|
msgid "Any"
|
||||||
msgstr "Qualsevol"
|
msgstr "Qualsevol"
|
||||||
|
|
||||||
#: pkg/products.go:191 pkg/expenses.go:462 pkg/invoices.go:188
|
#: pkg/products.go:191 pkg/expenses.go:491 pkg/invoices.go:188
|
||||||
#: pkg/contacts.go:168
|
#: pkg/contacts.go:168
|
||||||
msgid "Invoices must have at least one of the specified labels."
|
msgid "Invoices must have at least one of the specified labels."
|
||||||
msgstr "Les factures han de tenir com a mínim una de les etiquetes."
|
msgstr "Les factures han de tenir com a mínim una de les etiquetes."
|
||||||
|
@ -779,7 +780,7 @@ msgctxt "input"
|
||||||
msgid "Price"
|
msgid "Price"
|
||||||
msgstr "Preu"
|
msgstr "Preu"
|
||||||
|
|
||||||
#: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:246
|
#: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:275
|
||||||
#: pkg/invoices.go:1063
|
#: pkg/invoices.go:1063
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Taxes"
|
msgid "Taxes"
|
||||||
|
@ -798,12 +799,12 @@ msgstr "No podeu deixar el preu en blanc."
|
||||||
msgid "Price must be a number greater than zero."
|
msgid "Price must be a number greater than zero."
|
||||||
msgstr "El preu ha de ser un número major a zero."
|
msgstr "El preu ha de ser un número major a zero."
|
||||||
|
|
||||||
#: pkg/products.go:326 pkg/quote.go:1007 pkg/expenses.go:314
|
#: pkg/products.go:326 pkg/quote.go:1007 pkg/expenses.go:343
|
||||||
#: pkg/invoices.go:1122
|
#: pkg/invoices.go:1122
|
||||||
msgid "Selected tax is not valid."
|
msgid "Selected tax is not valid."
|
||||||
msgstr "Heu seleccionat un impost que no és vàlid."
|
msgstr "Heu seleccionat un impost que no és vàlid."
|
||||||
|
|
||||||
#: pkg/products.go:327 pkg/quote.go:1008 pkg/expenses.go:315
|
#: pkg/products.go:327 pkg/quote.go:1008 pkg/expenses.go:344
|
||||||
#: pkg/invoices.go:1123
|
#: pkg/invoices.go:1123
|
||||||
msgid "You can only select a tax of each class."
|
msgid "You can only select a tax of each class."
|
||||||
msgstr "Només podeu seleccionar un impost de cada classe."
|
msgstr "Només podeu seleccionar un impost de cada classe."
|
||||||
|
@ -1027,7 +1028,7 @@ msgctxt "input"
|
||||||
msgid "Quotation Status"
|
msgid "Quotation Status"
|
||||||
msgstr "Estat del pressupost"
|
msgstr "Estat del pressupost"
|
||||||
|
|
||||||
#: pkg/quote.go:154 pkg/expenses.go:447 pkg/invoices.go:154
|
#: pkg/quote.go:154 pkg/expenses.go:476 pkg/invoices.go:154
|
||||||
msgid "All status"
|
msgid "All status"
|
||||||
msgstr "Tots els estats"
|
msgstr "Tots els estats"
|
||||||
|
|
||||||
|
@ -1036,12 +1037,12 @@ msgctxt "input"
|
||||||
msgid "Quotation Number"
|
msgid "Quotation Number"
|
||||||
msgstr "Número de pressupost"
|
msgstr "Número de pressupost"
|
||||||
|
|
||||||
#: pkg/quote.go:164 pkg/expenses.go:432 pkg/invoices.go:164
|
#: pkg/quote.go:164 pkg/expenses.go:461 pkg/invoices.go:164
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "From Date"
|
msgid "From Date"
|
||||||
msgstr "A partir de la data"
|
msgstr "A partir de la data"
|
||||||
|
|
||||||
#: pkg/quote.go:169 pkg/expenses.go:437 pkg/invoices.go:169
|
#: pkg/quote.go:169 pkg/expenses.go:466 pkg/invoices.go:169
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "To Date"
|
msgid "To Date"
|
||||||
msgstr "Fins la data"
|
msgstr "Fins la data"
|
||||||
|
@ -1062,8 +1063,8 @@ msgstr "pressuposts.zip"
|
||||||
msgid "quotations.ods"
|
msgid "quotations.ods"
|
||||||
msgstr "pressuposts.ods"
|
msgstr "pressuposts.ods"
|
||||||
|
|
||||||
#: pkg/quote.go:634 pkg/quote.go:1176 pkg/quote.go:1184 pkg/expenses.go:651
|
#: pkg/quote.go:634 pkg/quote.go:1176 pkg/quote.go:1184 pkg/expenses.go:680
|
||||||
#: pkg/expenses.go:677 pkg/invoices.go:677 pkg/invoices.go:1306
|
#: pkg/expenses.go:706 pkg/invoices.go:677 pkg/invoices.go:1306
|
||||||
#: pkg/invoices.go:1314
|
#: pkg/invoices.go:1314
|
||||||
msgid "Invalid action"
|
msgid "Invalid action"
|
||||||
msgstr "Acció invàlida."
|
msgstr "Acció invàlida."
|
||||||
|
@ -1218,70 +1219,70 @@ msgctxt "period option"
|
||||||
msgid "Previous year"
|
msgid "Previous year"
|
||||||
msgstr "Any anterior"
|
msgstr "Any anterior"
|
||||||
|
|
||||||
#: pkg/expenses.go:172
|
#: pkg/expenses.go:201
|
||||||
msgid "Select a contact."
|
msgid "Select a contact."
|
||||||
msgstr "Escolliu un contacte."
|
msgstr "Escolliu un contacte."
|
||||||
|
|
||||||
#: pkg/expenses.go:229 pkg/expenses.go:421
|
#: pkg/expenses.go:258 pkg/expenses.go:450
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Contact"
|
msgid "Contact"
|
||||||
msgstr "Contacte"
|
msgstr "Contacte"
|
||||||
|
|
||||||
#: pkg/expenses.go:235
|
#: pkg/expenses.go:264
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Invoice number"
|
msgid "Invoice number"
|
||||||
msgstr "Número de factura"
|
msgstr "Número de factura"
|
||||||
|
|
||||||
#: pkg/expenses.go:240 pkg/invoices.go:735
|
#: pkg/expenses.go:269 pkg/invoices.go:735
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Invoice Date"
|
msgid "Invoice Date"
|
||||||
msgstr "Data de factura"
|
msgstr "Data de factura"
|
||||||
|
|
||||||
#: pkg/expenses.go:255
|
#: pkg/expenses.go:284
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
|
|
||||||
#: pkg/expenses.go:266 pkg/invoices.go:757
|
#: pkg/expenses.go:295 pkg/invoices.go:757
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "File"
|
msgid "File"
|
||||||
msgstr "Fitxer"
|
msgstr "Fitxer"
|
||||||
|
|
||||||
#: pkg/expenses.go:272 pkg/expenses.go:446
|
#: pkg/expenses.go:301 pkg/expenses.go:475
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Expense Status"
|
msgid "Expense Status"
|
||||||
msgstr "Estat de la despesa"
|
msgstr "Estat de la despesa"
|
||||||
|
|
||||||
#: pkg/expenses.go:312
|
#: pkg/expenses.go:341
|
||||||
msgid "Selected contact is not valid."
|
msgid "Selected contact is not valid."
|
||||||
msgstr "Heu seleccionat un contacte que no és vàlid."
|
msgstr "Heu seleccionat un contacte que no és vàlid."
|
||||||
|
|
||||||
#: pkg/expenses.go:313 pkg/invoices.go:808
|
#: pkg/expenses.go:342 pkg/invoices.go:808
|
||||||
msgid "Invoice date must be a valid date."
|
msgid "Invoice date must be a valid date."
|
||||||
msgstr "La data de facturació ha de ser vàlida."
|
msgstr "La data de facturació ha de ser vàlida."
|
||||||
|
|
||||||
#: pkg/expenses.go:316
|
#: pkg/expenses.go:345
|
||||||
msgid "Amount can not be empty."
|
msgid "Amount can not be empty."
|
||||||
msgstr "No podeu deixar l’import en blanc."
|
msgstr "No podeu deixar l’import en blanc."
|
||||||
|
|
||||||
#: pkg/expenses.go:317
|
#: pkg/expenses.go:346
|
||||||
msgid "Amount must be a number greater than zero."
|
msgid "Amount must be a number greater than zero."
|
||||||
msgstr "L’import ha de ser un número major a zero."
|
msgstr "L’import ha de ser un número major a zero."
|
||||||
|
|
||||||
#: pkg/expenses.go:319
|
#: pkg/expenses.go:348
|
||||||
msgid "Selected expense status is not valid."
|
msgid "Selected expense status is not valid."
|
||||||
msgstr "Heu seleccionat un estat de despesa que no és vàlid."
|
msgstr "Heu seleccionat un estat de despesa que no és vàlid."
|
||||||
|
|
||||||
#: pkg/expenses.go:422
|
#: pkg/expenses.go:451
|
||||||
msgid "All contacts"
|
msgid "All contacts"
|
||||||
msgstr "Tots els contactes"
|
msgstr "Tots els contactes"
|
||||||
|
|
||||||
#: pkg/expenses.go:427 pkg/invoices.go:159
|
#: pkg/expenses.go:456 pkg/invoices.go:159
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Invoice Number"
|
msgid "Invoice Number"
|
||||||
msgstr "Número de factura"
|
msgstr "Número de factura"
|
||||||
|
|
||||||
#: pkg/expenses.go:675
|
#: pkg/expenses.go:704
|
||||||
msgid "expenses.ods"
|
msgid "expenses.ods"
|
||||||
msgstr "despeses.ods"
|
msgstr "despeses.ods"
|
||||||
|
|
||||||
|
|
75
po/es.po
75
po/es.po
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: numerus\n"
|
"Project-Id-Version: numerus\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2023-07-18 13:12+0200\n"
|
"POT-Creation-Date: 2023-10-02 12:11+0200\n"
|
||||||
"PO-Revision-Date: 2023-01-18 17:45+0100\n"
|
"PO-Revision-Date: 2023-01-18 17:45+0100\n"
|
||||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||||
"Language-Team: Spanish <es@tp.org.es>\n"
|
"Language-Team: Spanish <es@tp.org.es>\n"
|
||||||
|
@ -105,7 +105,8 @@ msgstr "Subtotal"
|
||||||
#: web/template/invoices/view.gohtml:115 web/template/invoices/edit.gohtml:75
|
#: web/template/invoices/view.gohtml:115 web/template/invoices/edit.gohtml:75
|
||||||
#: web/template/quotes/new.gohtml:74 web/template/quotes/view.gohtml:82
|
#: web/template/quotes/new.gohtml:74 web/template/quotes/view.gohtml:82
|
||||||
#: web/template/quotes/view.gohtml:122 web/template/quotes/edit.gohtml:75
|
#: web/template/quotes/view.gohtml:122 web/template/quotes/edit.gohtml:75
|
||||||
#: web/template/expenses/new.gohtml:47 web/template/expenses/edit.gohtml:49
|
#: web/template/expenses/new.gohtml:47 web/template/expenses/index.gohtml:74
|
||||||
|
#: web/template/expenses/edit.gohtml:49
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Total"
|
msgstr "Total"
|
||||||
|
@ -197,13 +198,13 @@ msgid "Amount"
|
||||||
msgstr "Importe"
|
msgstr "Importe"
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:73 web/template/quotes/index.gohtml:73
|
#: web/template/invoices/index.gohtml:73 web/template/quotes/index.gohtml:73
|
||||||
#: web/template/expenses/index.gohtml:71
|
#: web/template/expenses/index.gohtml:75
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "Descargar"
|
msgstr "Descargar"
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:74 web/template/quotes/index.gohtml:74
|
#: web/template/invoices/index.gohtml:74 web/template/quotes/index.gohtml:74
|
||||||
#: web/template/contacts/index.gohtml:51 web/template/expenses/index.gohtml:72
|
#: web/template/contacts/index.gohtml:51 web/template/expenses/index.gohtml:76
|
||||||
#: web/template/products/index.gohtml:48
|
#: web/template/products/index.gohtml:48
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Actions"
|
msgid "Actions"
|
||||||
|
@ -225,7 +226,7 @@ msgstr "Acciones para la factura %s"
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:138 web/template/invoices/view.gohtml:19
|
#: web/template/invoices/index.gohtml:138 web/template/invoices/view.gohtml:19
|
||||||
#: web/template/quotes/index.gohtml:137 web/template/quotes/view.gohtml:22
|
#: web/template/quotes/index.gohtml:137 web/template/quotes/view.gohtml:22
|
||||||
#: web/template/contacts/index.gohtml:82 web/template/expenses/index.gohtml:134
|
#: web/template/contacts/index.gohtml:82 web/template/expenses/index.gohtml:143
|
||||||
#: web/template/products/index.gohtml:78
|
#: web/template/products/index.gohtml:78
|
||||||
msgctxt "action"
|
msgctxt "action"
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
|
@ -242,7 +243,7 @@ msgid "No invoices added yet."
|
||||||
msgstr "No hay facturas."
|
msgstr "No hay facturas."
|
||||||
|
|
||||||
#: web/template/invoices/index.gohtml:163 web/template/quotes/index.gohtml:170
|
#: web/template/invoices/index.gohtml:163 web/template/quotes/index.gohtml:170
|
||||||
#: web/template/expenses/index.gohtml:151
|
#: web/template/expenses/index.gohtml:160
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "Total"
|
msgstr "Total"
|
||||||
|
|
||||||
|
@ -590,11 +591,11 @@ msgctxt "title"
|
||||||
msgid "Invoice Number"
|
msgid "Invoice Number"
|
||||||
msgstr "Número de factura"
|
msgstr "Número de factura"
|
||||||
|
|
||||||
#: web/template/expenses/index.gohtml:126
|
#: web/template/expenses/index.gohtml:135
|
||||||
msgid "Actions for expense %s"
|
msgid "Actions for expense %s"
|
||||||
msgstr "Acciones para el gasto %s"
|
msgstr "Acciones para el gasto %s"
|
||||||
|
|
||||||
#: web/template/expenses/index.gohtml:144
|
#: web/template/expenses/index.gohtml:153
|
||||||
msgid "No expenses added yet."
|
msgid "No expenses added yet."
|
||||||
msgstr "No hay gastos."
|
msgstr "No hay gastos."
|
||||||
|
|
||||||
|
@ -734,37 +735,37 @@ msgid "Name"
|
||||||
msgstr "Nombre"
|
msgstr "Nombre"
|
||||||
|
|
||||||
#: pkg/products.go:177 pkg/products.go:303 pkg/quote.go:174 pkg/quote.go:708
|
#: pkg/products.go:177 pkg/products.go:303 pkg/quote.go:174 pkg/quote.go:708
|
||||||
#: pkg/expenses.go:278 pkg/expenses.go:442 pkg/invoices.go:174
|
#: pkg/expenses.go:307 pkg/expenses.go:471 pkg/invoices.go:174
|
||||||
#: pkg/invoices.go:746 pkg/invoices.go:1331 pkg/contacts.go:154
|
#: pkg/invoices.go:746 pkg/invoices.go:1331 pkg/contacts.go:154
|
||||||
#: pkg/contacts.go:362
|
#: pkg/contacts.go:362
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
msgstr "Etiquetes"
|
msgstr "Etiquetes"
|
||||||
|
|
||||||
#: pkg/products.go:181 pkg/quote.go:178 pkg/expenses.go:452 pkg/invoices.go:178
|
#: pkg/products.go:181 pkg/quote.go:178 pkg/expenses.go:481 pkg/invoices.go:178
|
||||||
#: pkg/contacts.go:158
|
#: pkg/contacts.go:158
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Tags Condition"
|
msgid "Tags Condition"
|
||||||
msgstr "Condición de las etiquetas"
|
msgstr "Condición de las etiquetas"
|
||||||
|
|
||||||
#: pkg/products.go:185 pkg/quote.go:182 pkg/expenses.go:456 pkg/invoices.go:182
|
#: pkg/products.go:185 pkg/quote.go:182 pkg/expenses.go:485 pkg/invoices.go:182
|
||||||
#: pkg/contacts.go:162
|
#: pkg/contacts.go:162
|
||||||
msgctxt "tag condition"
|
msgctxt "tag condition"
|
||||||
msgid "All"
|
msgid "All"
|
||||||
msgstr "Todas"
|
msgstr "Todas"
|
||||||
|
|
||||||
#: pkg/products.go:186 pkg/expenses.go:457 pkg/invoices.go:183
|
#: pkg/products.go:186 pkg/expenses.go:486 pkg/invoices.go:183
|
||||||
#: pkg/contacts.go:163
|
#: pkg/contacts.go:163
|
||||||
msgid "Invoices must have all the specified labels."
|
msgid "Invoices must have all the specified labels."
|
||||||
msgstr "Las facturas deben tener todas las etiquetas."
|
msgstr "Las facturas deben tener todas las etiquetas."
|
||||||
|
|
||||||
#: pkg/products.go:190 pkg/quote.go:187 pkg/expenses.go:461 pkg/invoices.go:187
|
#: pkg/products.go:190 pkg/quote.go:187 pkg/expenses.go:490 pkg/invoices.go:187
|
||||||
#: pkg/contacts.go:167
|
#: pkg/contacts.go:167
|
||||||
msgctxt "tag condition"
|
msgctxt "tag condition"
|
||||||
msgid "Any"
|
msgid "Any"
|
||||||
msgstr "Cualquiera"
|
msgstr "Cualquiera"
|
||||||
|
|
||||||
#: pkg/products.go:191 pkg/expenses.go:462 pkg/invoices.go:188
|
#: pkg/products.go:191 pkg/expenses.go:491 pkg/invoices.go:188
|
||||||
#: pkg/contacts.go:168
|
#: pkg/contacts.go:168
|
||||||
msgid "Invoices must have at least one of the specified labels."
|
msgid "Invoices must have at least one of the specified labels."
|
||||||
msgstr "Las facturas deben tener como mínimo una de las etiquetas."
|
msgstr "Las facturas deben tener como mínimo una de las etiquetas."
|
||||||
|
@ -779,7 +780,7 @@ msgctxt "input"
|
||||||
msgid "Price"
|
msgid "Price"
|
||||||
msgstr "Precio"
|
msgstr "Precio"
|
||||||
|
|
||||||
#: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:246
|
#: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:275
|
||||||
#: pkg/invoices.go:1063
|
#: pkg/invoices.go:1063
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Taxes"
|
msgid "Taxes"
|
||||||
|
@ -798,12 +799,12 @@ msgstr "No podéis dejar el precio en blanco."
|
||||||
msgid "Price must be a number greater than zero."
|
msgid "Price must be a number greater than zero."
|
||||||
msgstr "El precio tiene que ser un número mayor a cero."
|
msgstr "El precio tiene que ser un número mayor a cero."
|
||||||
|
|
||||||
#: pkg/products.go:326 pkg/quote.go:1007 pkg/expenses.go:314
|
#: pkg/products.go:326 pkg/quote.go:1007 pkg/expenses.go:343
|
||||||
#: pkg/invoices.go:1122
|
#: pkg/invoices.go:1122
|
||||||
msgid "Selected tax is not valid."
|
msgid "Selected tax is not valid."
|
||||||
msgstr "Habéis escogido un impuesto que no es válido."
|
msgstr "Habéis escogido un impuesto que no es válido."
|
||||||
|
|
||||||
#: pkg/products.go:327 pkg/quote.go:1008 pkg/expenses.go:315
|
#: pkg/products.go:327 pkg/quote.go:1008 pkg/expenses.go:344
|
||||||
#: pkg/invoices.go:1123
|
#: pkg/invoices.go:1123
|
||||||
msgid "You can only select a tax of each class."
|
msgid "You can only select a tax of each class."
|
||||||
msgstr "Solo podéis escoger un impuesto de cada clase."
|
msgstr "Solo podéis escoger un impuesto de cada clase."
|
||||||
|
@ -1027,7 +1028,7 @@ msgctxt "input"
|
||||||
msgid "Quotation Status"
|
msgid "Quotation Status"
|
||||||
msgstr "Estado del presupuesto"
|
msgstr "Estado del presupuesto"
|
||||||
|
|
||||||
#: pkg/quote.go:154 pkg/expenses.go:447 pkg/invoices.go:154
|
#: pkg/quote.go:154 pkg/expenses.go:476 pkg/invoices.go:154
|
||||||
msgid "All status"
|
msgid "All status"
|
||||||
msgstr "Todos los estados"
|
msgstr "Todos los estados"
|
||||||
|
|
||||||
|
@ -1036,12 +1037,12 @@ msgctxt "input"
|
||||||
msgid "Quotation Number"
|
msgid "Quotation Number"
|
||||||
msgstr "Número de presupuesto"
|
msgstr "Número de presupuesto"
|
||||||
|
|
||||||
#: pkg/quote.go:164 pkg/expenses.go:432 pkg/invoices.go:164
|
#: pkg/quote.go:164 pkg/expenses.go:461 pkg/invoices.go:164
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "From Date"
|
msgid "From Date"
|
||||||
msgstr "A partir de la fecha"
|
msgstr "A partir de la fecha"
|
||||||
|
|
||||||
#: pkg/quote.go:169 pkg/expenses.go:437 pkg/invoices.go:169
|
#: pkg/quote.go:169 pkg/expenses.go:466 pkg/invoices.go:169
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "To Date"
|
msgid "To Date"
|
||||||
msgstr "Hasta la fecha"
|
msgstr "Hasta la fecha"
|
||||||
|
@ -1062,8 +1063,8 @@ msgstr "presupuestos.zip"
|
||||||
msgid "quotations.ods"
|
msgid "quotations.ods"
|
||||||
msgstr "presupuestos.ods"
|
msgstr "presupuestos.ods"
|
||||||
|
|
||||||
#: pkg/quote.go:634 pkg/quote.go:1176 pkg/quote.go:1184 pkg/expenses.go:651
|
#: pkg/quote.go:634 pkg/quote.go:1176 pkg/quote.go:1184 pkg/expenses.go:680
|
||||||
#: pkg/expenses.go:677 pkg/invoices.go:677 pkg/invoices.go:1306
|
#: pkg/expenses.go:706 pkg/invoices.go:677 pkg/invoices.go:1306
|
||||||
#: pkg/invoices.go:1314
|
#: pkg/invoices.go:1314
|
||||||
msgid "Invalid action"
|
msgid "Invalid action"
|
||||||
msgstr "Acción inválida."
|
msgstr "Acción inválida."
|
||||||
|
@ -1218,70 +1219,70 @@ msgctxt "period option"
|
||||||
msgid "Previous year"
|
msgid "Previous year"
|
||||||
msgstr "Año anterior"
|
msgstr "Año anterior"
|
||||||
|
|
||||||
#: pkg/expenses.go:172
|
#: pkg/expenses.go:201
|
||||||
msgid "Select a contact."
|
msgid "Select a contact."
|
||||||
msgstr "Escoged un contacto"
|
msgstr "Escoged un contacto"
|
||||||
|
|
||||||
#: pkg/expenses.go:229 pkg/expenses.go:421
|
#: pkg/expenses.go:258 pkg/expenses.go:450
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Contact"
|
msgid "Contact"
|
||||||
msgstr "Contacto"
|
msgstr "Contacto"
|
||||||
|
|
||||||
#: pkg/expenses.go:235
|
#: pkg/expenses.go:264
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Invoice number"
|
msgid "Invoice number"
|
||||||
msgstr "Número de factura"
|
msgstr "Número de factura"
|
||||||
|
|
||||||
#: pkg/expenses.go:240 pkg/invoices.go:735
|
#: pkg/expenses.go:269 pkg/invoices.go:735
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Invoice Date"
|
msgid "Invoice Date"
|
||||||
msgstr "Fecha de factura"
|
msgstr "Fecha de factura"
|
||||||
|
|
||||||
#: pkg/expenses.go:255
|
#: pkg/expenses.go:284
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr "Importe"
|
msgstr "Importe"
|
||||||
|
|
||||||
#: pkg/expenses.go:266 pkg/invoices.go:757
|
#: pkg/expenses.go:295 pkg/invoices.go:757
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "File"
|
msgid "File"
|
||||||
msgstr "Archivo"
|
msgstr "Archivo"
|
||||||
|
|
||||||
#: pkg/expenses.go:272 pkg/expenses.go:446
|
#: pkg/expenses.go:301 pkg/expenses.go:475
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Expense Status"
|
msgid "Expense Status"
|
||||||
msgstr "Estado del gasto"
|
msgstr "Estado del gasto"
|
||||||
|
|
||||||
#: pkg/expenses.go:312
|
#: pkg/expenses.go:341
|
||||||
msgid "Selected contact is not valid."
|
msgid "Selected contact is not valid."
|
||||||
msgstr "Habéis escogido un contacto que no es válido."
|
msgstr "Habéis escogido un contacto que no es válido."
|
||||||
|
|
||||||
#: pkg/expenses.go:313 pkg/invoices.go:808
|
#: pkg/expenses.go:342 pkg/invoices.go:808
|
||||||
msgid "Invoice date must be a valid date."
|
msgid "Invoice date must be a valid date."
|
||||||
msgstr "La fecha de factura debe ser válida."
|
msgstr "La fecha de factura debe ser válida."
|
||||||
|
|
||||||
#: pkg/expenses.go:316
|
#: pkg/expenses.go:345
|
||||||
msgid "Amount can not be empty."
|
msgid "Amount can not be empty."
|
||||||
msgstr "No podéis dejar el importe en blanco."
|
msgstr "No podéis dejar el importe en blanco."
|
||||||
|
|
||||||
#: pkg/expenses.go:317
|
#: pkg/expenses.go:346
|
||||||
msgid "Amount must be a number greater than zero."
|
msgid "Amount must be a number greater than zero."
|
||||||
msgstr "El importe tiene que ser un número mayor a cero."
|
msgstr "El importe tiene que ser un número mayor a cero."
|
||||||
|
|
||||||
#: pkg/expenses.go:319
|
#: pkg/expenses.go:348
|
||||||
msgid "Selected expense status is not valid."
|
msgid "Selected expense status is not valid."
|
||||||
msgstr "Habéis escogido un estado de gasto que no es válido."
|
msgstr "Habéis escogido un estado de gasto que no es válido."
|
||||||
|
|
||||||
#: pkg/expenses.go:422
|
#: pkg/expenses.go:451
|
||||||
msgid "All contacts"
|
msgid "All contacts"
|
||||||
msgstr "Todos los contactos"
|
msgstr "Todos los contactos"
|
||||||
|
|
||||||
#: pkg/expenses.go:427 pkg/invoices.go:159
|
#: pkg/expenses.go:456 pkg/invoices.go:159
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Invoice Number"
|
msgid "Invoice Number"
|
||||||
msgstr "Número de factura"
|
msgstr "Número de factura"
|
||||||
|
|
||||||
#: pkg/expenses.go:675
|
#: pkg/expenses.go:704
|
||||||
msgid "expenses.ods"
|
msgid "expenses.ods"
|
||||||
msgstr "gastos.ods"
|
msgstr "gastos.ods"
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,11 @@
|
||||||
<th>{{( pgettext "Invoice Number" "title" )}}</th>
|
<th>{{( pgettext "Invoice Number" "title" )}}</th>
|
||||||
<th>{{( pgettext "Status" "title" )}}</th>
|
<th>{{( pgettext "Status" "title" )}}</th>
|
||||||
<th>{{( pgettext "Tags" "title" )}}</th>
|
<th>{{( pgettext "Tags" "title" )}}</th>
|
||||||
<th>{{( pgettext "Amount" "title" )}}</th>
|
<th class="numeric">{{( pgettext "Amount" "title" )}}</th>
|
||||||
|
{{ range $class := .TaxClasses -}}
|
||||||
|
<th class="numeric">{{ . }}</th>
|
||||||
|
{{ end -}}
|
||||||
|
<th class="numeric">{{( pgettext "Total" "title" )}}</th>
|
||||||
<th>{{( pgettext "Download" "title" )}}</th>
|
<th>{{( pgettext "Download" "title" )}}</th>
|
||||||
<th>{{( pgettext "Actions" "title" )}}</th>
|
<th>{{( pgettext "Actions" "title" )}}</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -113,6 +117,11 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</td>
|
</td>
|
||||||
<td class="numeric">{{ .Amount | formatPrice }}</td>
|
<td class="numeric">{{ .Amount | formatPrice }}</td>
|
||||||
|
{{ range $class := $.TaxClasses -}}
|
||||||
|
{{ $tax := index $expense.Taxes $class }}
|
||||||
|
<td class="numeric">{{ if $tax }}{{ $tax | formatPrice }}{{ end }}</td>
|
||||||
|
{{- end }}
|
||||||
|
<td class="numeric">{{ .Total | formatPrice }}</td>
|
||||||
<td class="invoice-download">
|
<td class="invoice-download">
|
||||||
{{ if .OriginalFileName }}
|
{{ if .OriginalFileName }}
|
||||||
<a href="{{ companyURI "/expenses/"}}{{ .Slug }}/download/{{.OriginalFileName}}"
|
<a href="{{ companyURI "/expenses/"}}{{ .Slug }}/download/{{.OriginalFileName}}"
|
||||||
|
@ -141,14 +150,14 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7">{{( gettext "No expenses added yet." )}}</td>
|
<td colspan="{{ add 9 (len .TaxClasses) }}">{{( gettext "No expenses added yet." )}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
{{ if .Expenses }}
|
{{ if .Expenses }}
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row" colspan="5">{{( gettext "Total" )}}</th>
|
<th scope="row" colspan="{{ add 6 (len .TaxClasses) }}">{{( gettext "Total" )}}</th>
|
||||||
<td class="numeric">{{ .TotalAmount|formatPrice }}</td>
|
<td class="numeric">{{ .TotalAmount|formatPrice }}</td>
|
||||||
<td colspan="2"></td>
|
<td colspan="2"></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
Loading…
Reference in New Issue