diff --git a/pkg/expenses.go b/pkg/expenses.go index e3d5efe..493e534 100644 --- a/pkg/expenses.go +++ b/pkg/expenses.go @@ -741,9 +741,10 @@ func HandleBatchExpenseAction(w http.ResponseWriter, r *http.Request, _ httprout return } entries := mustCollectExpenseEntries(r.Context(), conn, locale, filters) + vatin := mustCollectExpenseEntriesVATIN(r.Context(), conn, entries) taxes := mustCollectExpenseEntriesTaxes(r.Context(), conn, entries) taxColumns := mustCollectTaxColumns(r.Context(), conn, company) - ods := mustWriteExpensesOds(entries, taxes, taxColumns, locale, company) + ods := mustWriteExpensesOds(entries, vatin, taxes, taxColumns, locale, company) writeOdsResponse(w, ods, gettext("expenses.ods", locale)) default: http.Error(w, gettext("Invalid action", locale), http.StatusBadRequest) @@ -764,3 +765,16 @@ func mustCollectExpenseEntriesTaxes(ctx context.Context, conn *Conn, entries []* where expense_id = any ($1) `) } + +func mustCollectExpenseEntriesVATIN(ctx context.Context, conn *Conn, entries []*ExpenseEntry) map[int]string { + ids := mustMakeIDArray(entries, func(entry *ExpenseEntry) int { + return entry.ID + }) + return mustMakeVATINMap(ctx, conn, ids, ` + select expense_id + , vatin::text + from contact_tax_details as tax + join expense using (contact_id) + where expense_id = any ($1) + `) +} diff --git a/pkg/invoices.go b/pkg/invoices.go index 7cf0959..88d1984 100644 --- a/pkg/invoices.go +++ b/pkg/invoices.go @@ -776,13 +776,16 @@ func mustCollectInvoiceEntriesVATIN(ctx context.Context, conn *Conn, entries []* ids := mustMakeIDArray(entries, func(entry *InvoiceEntry) int { return entry.ID }) - sql := ` + return mustMakeVATINMap(ctx, conn, ids, ` select invoice_id , vatin::text from contact_tax_details join invoice using (contact_id) where invoice_id = any ($1) - ` + `) +} + +func mustMakeVATINMap(ctx context.Context, conn *Conn, ids *pgtype.Int4Array, sql string) map[int]string { rows, err := conn.Query(ctx, sql, ids) if err != nil { panic(err) diff --git a/pkg/ods.go b/pkg/ods.go index a876755..ad2460d 100644 --- a/pkg/ods.go +++ b/pkg/ods.go @@ -99,15 +99,16 @@ func mustWriteQuotesOds(quotes []*QuoteEntry, locale *Locale, company *Company) }) } -func mustWriteExpensesOds(expenses []*ExpenseEntry, taxes map[int]taxMap, taxColumns map[int]string, locale *Locale, company *Company) []byte { +func mustWriteExpensesOds(expenses []*ExpenseEntry, vatin map[int]string, taxes map[int]taxMap, taxColumns map[int]string, locale *Locale, company *Company) []byte { taxIDs := extractTaxIDs(taxColumns) - columns := make([]string, 7+len(taxIDs)) + columns := make([]string, 8+len(taxIDs)) columns[0] = "Contact" - columns[1] = "Invoice Date" - columns[2] = "Invoice Number" - columns[3] = "Status" - columns[4] = "Amount" - i := 5 + columns[1] = pgettext("title", "VAT number", locale) + columns[2] = "Invoice Date" + columns[3] = "Invoice Number" + columns[4] = "Status" + columns[5] = "Amount" + i := 6 for _, taxID := range taxIDs { columns[i] = taxColumns[taxID] i++ @@ -117,6 +118,7 @@ func mustWriteExpensesOds(expenses []*ExpenseEntry, taxes map[int]taxMap, taxCol return mustWriteTableOds(expenses, columns, locale, func(sb *strings.Builder, expense *ExpenseEntry) { writeCellString(sb, expense.InvoicerName) + writeCellString(sb, vatin[expense.ID]) writeCellDate(sb, expense.InvoiceDate) writeCellString(sb, expense.InvoiceNumber) writeCellString(sb, expense.StatusLabel) diff --git a/po/ca.po b/po/ca.po index 055b7d4..37f205b 100644 --- a/po/ca.po +++ b/po/ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: numerus\n" "Report-Msgid-Bugs-To: jordi@tandem.blog\n" -"POT-Creation-Date: 2024-07-20 22:40+0200\n" +"POT-Creation-Date: 2024-07-20 22:51+0200\n" "PO-Revision-Date: 2023-01-18 17:08+0100\n" "Last-Translator: jordi fita mas \n" "Language-Team: Catalan \n" @@ -731,7 +731,7 @@ msgctxt "title" msgid "Edit Product “%s”" msgstr "Edició del producte «%s»" -#: pkg/ods.go:62 +#: pkg/ods.go:62 pkg/ods.go:106 msgctxt "title" msgid "VAT number" msgstr "DNI / NIF" @@ -763,14 +763,14 @@ msgid "Invalid user or password." msgstr "Nom d’usuari o contrasenya incorrectes." #: pkg/products.go:172 pkg/products.go:276 pkg/quote.go:901 -#: pkg/invoices.go:1144 pkg/contacts.go:149 pkg/contacts.go:262 +#: pkg/invoices.go:1147 pkg/contacts.go:149 pkg/contacts.go:262 msgctxt "input" msgid "Name" msgstr "Nom" #: pkg/products.go:177 pkg/products.go:303 pkg/quote.go:174 pkg/quote.go:708 #: pkg/expenses.go:343 pkg/expenses.go:511 pkg/invoices.go:177 -#: pkg/invoices.go:874 pkg/invoices.go:1459 pkg/contacts.go:154 +#: pkg/invoices.go:877 pkg/invoices.go:1462 pkg/contacts.go:154 #: pkg/contacts.go:362 msgctxt "input" msgid "Tags" @@ -804,42 +804,42 @@ msgstr "Qualsevol" 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." -#: pkg/products.go:282 pkg/quote.go:915 pkg/invoices.go:1158 +#: pkg/products.go:282 pkg/quote.go:915 pkg/invoices.go:1161 msgctxt "input" msgid "Description" msgstr "Descripció" -#: pkg/products.go:287 pkg/quote.go:919 pkg/invoices.go:1162 +#: pkg/products.go:287 pkg/quote.go:919 pkg/invoices.go:1165 msgctxt "input" msgid "Price" msgstr "Preu" #: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:311 -#: pkg/invoices.go:1191 +#: pkg/invoices.go:1194 msgctxt "input" msgid "Taxes" msgstr "Imposts" -#: pkg/products.go:322 pkg/quote.go:997 pkg/profile.go:92 pkg/invoices.go:1240 +#: pkg/products.go:322 pkg/quote.go:997 pkg/profile.go:92 pkg/invoices.go:1243 #: pkg/contacts.go:412 msgid "Name can not be empty." msgstr "No podeu deixar el nom en blanc." -#: pkg/products.go:323 pkg/quote.go:998 pkg/invoices.go:1241 +#: pkg/products.go:323 pkg/quote.go:998 pkg/invoices.go:1244 msgid "Price can not be empty." msgstr "No podeu deixar el preu en blanc." -#: pkg/products.go:324 pkg/quote.go:999 pkg/invoices.go:1242 +#: pkg/products.go:324 pkg/quote.go:999 pkg/invoices.go:1245 msgid "Price must be a number greater than zero." msgstr "El preu ha de ser un número major a zero." #: pkg/products.go:326 pkg/quote.go:1007 pkg/expenses.go:379 -#: pkg/invoices.go:1250 +#: pkg/invoices.go:1253 msgid "Selected tax is not valid." msgstr "Heu seleccionat un impost que no és vàlid." #: pkg/products.go:327 pkg/quote.go:1008 pkg/expenses.go:380 -#: pkg/invoices.go:1251 +#: pkg/invoices.go:1254 msgid "You can only select a tax of each class." msgstr "Només podeu seleccionar un impost de cada classe." @@ -1048,7 +1048,7 @@ msgstr "No podeu deixar el nom del mètode de pagament en blanc." msgid "Payment instructions can not be empty." msgstr "No podeu deixar les instruccions de pagament en blanc." -#: pkg/quote.go:147 pkg/quote.go:686 pkg/invoices.go:150 pkg/invoices.go:857 +#: pkg/quote.go:147 pkg/quote.go:686 pkg/invoices.go:150 pkg/invoices.go:860 msgctxt "input" msgid "Customer" msgstr "Client" @@ -1098,8 +1098,8 @@ msgid "quotations.ods" msgstr "pressuposts.ods" #: pkg/quote.go:634 pkg/quote.go:1176 pkg/quote.go:1184 pkg/expenses.go:720 -#: pkg/expenses.go:749 pkg/invoices.go:684 pkg/invoices.go:1434 -#: pkg/invoices.go:1442 +#: pkg/expenses.go:750 pkg/invoices.go:684 pkg/invoices.go:1437 +#: pkg/invoices.go:1445 msgid "Invalid action" msgstr "Acció invàlida." @@ -1117,12 +1117,12 @@ msgctxt "input" msgid "Terms and conditions" msgstr "Condicions d’acceptació" -#: pkg/quote.go:703 pkg/invoices.go:869 +#: pkg/quote.go:703 pkg/invoices.go:872 msgctxt "input" msgid "Notes" msgstr "Notes" -#: pkg/quote.go:712 pkg/invoices.go:879 +#: pkg/quote.go:712 pkg/invoices.go:882 msgctxt "input" msgid "Payment Method" msgstr "Mètode de pagament" @@ -1135,7 +1135,7 @@ msgstr "Escolliu un mètode de pagament." msgid "Selected quotation status is not valid." msgstr "Heu seleccionat un estat de pressupost que no és vàlid." -#: pkg/quote.go:751 pkg/invoices.go:934 +#: pkg/quote.go:751 pkg/invoices.go:937 msgid "Selected customer is not valid." msgstr "Heu seleccionat un client que no és vàlid." @@ -1147,21 +1147,21 @@ msgstr "No podeu deixar la data del pressupost en blanc." msgid "Quotation date must be a valid date." msgstr "La data del pressupost ha de ser vàlida." -#: pkg/quote.go:757 pkg/invoices.go:938 +#: pkg/quote.go:757 pkg/invoices.go:941 msgid "Selected payment method is not valid." msgstr "Heu seleccionat un mètode de pagament que no és vàlid." -#: pkg/quote.go:891 pkg/quote.go:896 pkg/invoices.go:1134 pkg/invoices.go:1139 +#: pkg/quote.go:891 pkg/quote.go:896 pkg/invoices.go:1137 pkg/invoices.go:1142 msgctxt "input" msgid "Id" msgstr "Identificador" -#: pkg/quote.go:929 pkg/invoices.go:1172 +#: pkg/quote.go:929 pkg/invoices.go:1175 msgctxt "input" msgid "Quantity" msgstr "Quantitat" -#: pkg/quote.go:938 pkg/invoices.go:1181 +#: pkg/quote.go:938 pkg/invoices.go:1184 msgctxt "input" msgid "Discount (%)" msgstr "Descompte (%)" @@ -1170,23 +1170,23 @@ msgstr "Descompte (%)" msgid "Quotation product ID must be a number greater than zero." msgstr "L’ID del producte de pressupost ha de ser un número major a zero." -#: pkg/quote.go:995 pkg/invoices.go:1238 +#: pkg/quote.go:995 pkg/invoices.go:1241 msgid "Product ID must be a positive number or zero." msgstr "L’ID del producte ha de ser un número positiu o zero." -#: pkg/quote.go:1001 pkg/invoices.go:1244 +#: pkg/quote.go:1001 pkg/invoices.go:1247 msgid "Quantity can not be empty." msgstr "No podeu deixar la quantitat en blanc." -#: pkg/quote.go:1002 pkg/invoices.go:1245 +#: pkg/quote.go:1002 pkg/invoices.go:1248 msgid "Quantity must be a number greater than zero." msgstr "La quantitat ha de ser un número major a zero." -#: pkg/quote.go:1004 pkg/invoices.go:1247 +#: pkg/quote.go:1004 pkg/invoices.go:1250 msgid "Discount can not be empty." msgstr "No podeu deixar el descompte en blanc." -#: pkg/quote.go:1005 pkg/invoices.go:1248 +#: pkg/quote.go:1005 pkg/invoices.go:1251 msgid "Discount must be a percentage between 0 and 100." msgstr "El descompte ha de ser un percentatge entre 0 i 100." @@ -1267,7 +1267,7 @@ msgctxt "input" msgid "Invoice number" msgstr "Número de factura" -#: pkg/expenses.go:305 pkg/invoices.go:863 +#: pkg/expenses.go:305 pkg/invoices.go:866 msgctxt "input" msgid "Invoice Date" msgstr "Data de factura" @@ -1277,7 +1277,7 @@ msgctxt "input" msgid "Amount" msgstr "Import" -#: pkg/expenses.go:331 pkg/invoices.go:885 +#: pkg/expenses.go:331 pkg/invoices.go:888 msgctxt "input" msgid "File" msgstr "Fitxer" @@ -1291,7 +1291,7 @@ msgstr "Estat de la despesa" msgid "Selected contact is not valid." msgstr "Heu seleccionat un contacte que no és vàlid." -#: pkg/expenses.go:378 pkg/invoices.go:936 +#: pkg/expenses.go:378 pkg/invoices.go:939 msgid "Invoice date must be a valid date." msgstr "La data de facturació ha de ser vàlida." @@ -1316,11 +1316,11 @@ msgctxt "input" msgid "Invoice Number" msgstr "Número de factura" -#: pkg/expenses.go:747 +#: pkg/expenses.go:748 msgid "expenses.ods" msgstr "despeses.ods" -#: pkg/invoices.go:156 pkg/invoices.go:851 +#: pkg/invoices.go:156 pkg/invoices.go:854 msgctxt "input" msgid "Invoice Status" msgstr "Estat de la factura" @@ -1337,25 +1337,25 @@ msgstr "factures.zip" msgid "invoices.ods" msgstr "factures.ods" -#: pkg/invoices.go:933 +#: pkg/invoices.go:936 msgid "Selected invoice status is not valid." msgstr "Heu seleccionat un estat de factura que no és vàlid." -#: pkg/invoices.go:935 +#: pkg/invoices.go:938 msgid "Invoice date can not be empty." msgstr "No podeu deixar la data de la factura en blanc." -#: pkg/invoices.go:1071 +#: pkg/invoices.go:1074 #, c-format msgid "Re: quotation #%s of %s" msgstr "Ref: pressupost núm. %s del %s" -#: pkg/invoices.go:1072 +#: pkg/invoices.go:1075 msgctxt "to_char" msgid "MM/DD/YYYY" msgstr "DD/MM/YYYY" -#: pkg/invoices.go:1235 +#: pkg/invoices.go:1238 msgid "Invoice product ID must be a number greater than zero." msgstr "L’ID del producte de factura ha de ser un número major a zero." diff --git a/po/es.po b/po/es.po index b15fa91..6aeefd7 100644 --- a/po/es.po +++ b/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: numerus\n" "Report-Msgid-Bugs-To: jordi@tandem.blog\n" -"POT-Creation-Date: 2024-07-20 22:40+0200\n" +"POT-Creation-Date: 2024-07-20 22:51+0200\n" "PO-Revision-Date: 2023-01-18 17:45+0100\n" "Last-Translator: jordi fita mas \n" "Language-Team: Spanish \n" @@ -731,7 +731,7 @@ msgctxt "title" msgid "Edit Product “%s”" msgstr "Edición del producto «%s»" -#: pkg/ods.go:62 +#: pkg/ods.go:62 pkg/ods.go:106 msgctxt "title" msgid "VAT number" msgstr "DNI / NIF" @@ -763,14 +763,14 @@ msgid "Invalid user or password." msgstr "Nombre de usuario o contraseña inválido." #: pkg/products.go:172 pkg/products.go:276 pkg/quote.go:901 -#: pkg/invoices.go:1144 pkg/contacts.go:149 pkg/contacts.go:262 +#: pkg/invoices.go:1147 pkg/contacts.go:149 pkg/contacts.go:262 msgctxt "input" msgid "Name" msgstr "Nombre" #: pkg/products.go:177 pkg/products.go:303 pkg/quote.go:174 pkg/quote.go:708 #: pkg/expenses.go:343 pkg/expenses.go:511 pkg/invoices.go:177 -#: pkg/invoices.go:874 pkg/invoices.go:1459 pkg/contacts.go:154 +#: pkg/invoices.go:877 pkg/invoices.go:1462 pkg/contacts.go:154 #: pkg/contacts.go:362 msgctxt "input" msgid "Tags" @@ -804,42 +804,42 @@ msgstr "Cualquiera" msgid "Invoices must have at least one of the specified labels." msgstr "Las facturas deben tener como mínimo una de las etiquetas." -#: pkg/products.go:282 pkg/quote.go:915 pkg/invoices.go:1158 +#: pkg/products.go:282 pkg/quote.go:915 pkg/invoices.go:1161 msgctxt "input" msgid "Description" msgstr "Descripción" -#: pkg/products.go:287 pkg/quote.go:919 pkg/invoices.go:1162 +#: pkg/products.go:287 pkg/quote.go:919 pkg/invoices.go:1165 msgctxt "input" msgid "Price" msgstr "Precio" #: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:311 -#: pkg/invoices.go:1191 +#: pkg/invoices.go:1194 msgctxt "input" msgid "Taxes" msgstr "Impuestos" -#: pkg/products.go:322 pkg/quote.go:997 pkg/profile.go:92 pkg/invoices.go:1240 +#: pkg/products.go:322 pkg/quote.go:997 pkg/profile.go:92 pkg/invoices.go:1243 #: pkg/contacts.go:412 msgid "Name can not be empty." msgstr "No podéis dejar el nombre en blanco." -#: pkg/products.go:323 pkg/quote.go:998 pkg/invoices.go:1241 +#: pkg/products.go:323 pkg/quote.go:998 pkg/invoices.go:1244 msgid "Price can not be empty." msgstr "No podéis dejar el precio en blanco." -#: pkg/products.go:324 pkg/quote.go:999 pkg/invoices.go:1242 +#: pkg/products.go:324 pkg/quote.go:999 pkg/invoices.go:1245 msgid "Price must be a number greater than zero." msgstr "El precio tiene que ser un número mayor a cero." #: pkg/products.go:326 pkg/quote.go:1007 pkg/expenses.go:379 -#: pkg/invoices.go:1250 +#: pkg/invoices.go:1253 msgid "Selected tax is not valid." msgstr "Habéis escogido un impuesto que no es válido." #: pkg/products.go:327 pkg/quote.go:1008 pkg/expenses.go:380 -#: pkg/invoices.go:1251 +#: pkg/invoices.go:1254 msgid "You can only select a tax of each class." msgstr "Solo podéis escoger un impuesto de cada clase." @@ -1048,7 +1048,7 @@ msgstr "No podéis dejar el nombre del método de pago en blanco." msgid "Payment instructions can not be empty." msgstr "No podéis dejar las instrucciones de pago en blanco." -#: pkg/quote.go:147 pkg/quote.go:686 pkg/invoices.go:150 pkg/invoices.go:857 +#: pkg/quote.go:147 pkg/quote.go:686 pkg/invoices.go:150 pkg/invoices.go:860 msgctxt "input" msgid "Customer" msgstr "Cliente" @@ -1098,8 +1098,8 @@ msgid "quotations.ods" msgstr "presupuestos.ods" #: pkg/quote.go:634 pkg/quote.go:1176 pkg/quote.go:1184 pkg/expenses.go:720 -#: pkg/expenses.go:749 pkg/invoices.go:684 pkg/invoices.go:1434 -#: pkg/invoices.go:1442 +#: pkg/expenses.go:750 pkg/invoices.go:684 pkg/invoices.go:1437 +#: pkg/invoices.go:1445 msgid "Invalid action" msgstr "Acción inválida." @@ -1117,12 +1117,12 @@ msgctxt "input" msgid "Terms and conditions" msgstr "Condiciones de aceptación" -#: pkg/quote.go:703 pkg/invoices.go:869 +#: pkg/quote.go:703 pkg/invoices.go:872 msgctxt "input" msgid "Notes" msgstr "Notas" -#: pkg/quote.go:712 pkg/invoices.go:879 +#: pkg/quote.go:712 pkg/invoices.go:882 msgctxt "input" msgid "Payment Method" msgstr "Método de pago" @@ -1135,7 +1135,7 @@ msgstr "Escoged un método e pago." msgid "Selected quotation status is not valid." msgstr "Habéis escogido un estado de presupuesto que no es válido." -#: pkg/quote.go:751 pkg/invoices.go:934 +#: pkg/quote.go:751 pkg/invoices.go:937 msgid "Selected customer is not valid." msgstr "Habéis escogido un cliente que no es válido." @@ -1147,21 +1147,21 @@ msgstr "No podéis dejar la fecha del presupuesto en blanco." msgid "Quotation date must be a valid date." msgstr "La fecha de presupuesto debe ser válida." -#: pkg/quote.go:757 pkg/invoices.go:938 +#: pkg/quote.go:757 pkg/invoices.go:941 msgid "Selected payment method is not valid." msgstr "Habéis escogido un método de pago que no es válido." -#: pkg/quote.go:891 pkg/quote.go:896 pkg/invoices.go:1134 pkg/invoices.go:1139 +#: pkg/quote.go:891 pkg/quote.go:896 pkg/invoices.go:1137 pkg/invoices.go:1142 msgctxt "input" msgid "Id" msgstr "Identificador" -#: pkg/quote.go:929 pkg/invoices.go:1172 +#: pkg/quote.go:929 pkg/invoices.go:1175 msgctxt "input" msgid "Quantity" msgstr "Cantidad" -#: pkg/quote.go:938 pkg/invoices.go:1181 +#: pkg/quote.go:938 pkg/invoices.go:1184 msgctxt "input" msgid "Discount (%)" msgstr "Descuento (%)" @@ -1170,23 +1170,23 @@ msgstr "Descuento (%)" msgid "Quotation product ID must be a number greater than zero." msgstr "El ID de producto de presupuesto tiene que ser un número mayor a cero." -#: pkg/quote.go:995 pkg/invoices.go:1238 +#: pkg/quote.go:995 pkg/invoices.go:1241 msgid "Product ID must be a positive number or zero." msgstr "El ID de producto tiene que ser un número positivo o cero." -#: pkg/quote.go:1001 pkg/invoices.go:1244 +#: pkg/quote.go:1001 pkg/invoices.go:1247 msgid "Quantity can not be empty." msgstr "No podéis dejar la cantidad en blanco." -#: pkg/quote.go:1002 pkg/invoices.go:1245 +#: pkg/quote.go:1002 pkg/invoices.go:1248 msgid "Quantity must be a number greater than zero." msgstr "La cantidad tiene que ser un número mayor a cero." -#: pkg/quote.go:1004 pkg/invoices.go:1247 +#: pkg/quote.go:1004 pkg/invoices.go:1250 msgid "Discount can not be empty." msgstr "No podéis dejar el descuento en blanco." -#: pkg/quote.go:1005 pkg/invoices.go:1248 +#: pkg/quote.go:1005 pkg/invoices.go:1251 msgid "Discount must be a percentage between 0 and 100." msgstr "El descuento tiene que ser un porcentaje entre 0 y 100." @@ -1267,7 +1267,7 @@ msgctxt "input" msgid "Invoice number" msgstr "Número de factura" -#: pkg/expenses.go:305 pkg/invoices.go:863 +#: pkg/expenses.go:305 pkg/invoices.go:866 msgctxt "input" msgid "Invoice Date" msgstr "Fecha de factura" @@ -1277,7 +1277,7 @@ msgctxt "input" msgid "Amount" msgstr "Importe" -#: pkg/expenses.go:331 pkg/invoices.go:885 +#: pkg/expenses.go:331 pkg/invoices.go:888 msgctxt "input" msgid "File" msgstr "Archivo" @@ -1291,7 +1291,7 @@ msgstr "Estado del gasto" msgid "Selected contact is not valid." msgstr "Habéis escogido un contacto que no es válido." -#: pkg/expenses.go:378 pkg/invoices.go:936 +#: pkg/expenses.go:378 pkg/invoices.go:939 msgid "Invoice date must be a valid date." msgstr "La fecha de factura debe ser válida." @@ -1316,11 +1316,11 @@ msgctxt "input" msgid "Invoice Number" msgstr "Número de factura" -#: pkg/expenses.go:747 +#: pkg/expenses.go:748 msgid "expenses.ods" msgstr "gastos.ods" -#: pkg/invoices.go:156 pkg/invoices.go:851 +#: pkg/invoices.go:156 pkg/invoices.go:854 msgctxt "input" msgid "Invoice Status" msgstr "Estado de la factura" @@ -1337,25 +1337,25 @@ msgstr "facturas.zip" msgid "invoices.ods" msgstr "facturas.ods" -#: pkg/invoices.go:933 +#: pkg/invoices.go:936 msgid "Selected invoice status is not valid." msgstr "Habéis escogido un estado de factura que no es válido." -#: pkg/invoices.go:935 +#: pkg/invoices.go:938 msgid "Invoice date can not be empty." msgstr "No podéis dejar la fecha de la factura en blanco." -#: pkg/invoices.go:1071 +#: pkg/invoices.go:1074 #, c-format msgid "Re: quotation #%s of %s" msgstr "Ref: presupuesto n.º %s del %s" -#: pkg/invoices.go:1072 +#: pkg/invoices.go:1075 msgctxt "to_char" msgid "MM/DD/YYYY" msgstr "DD/MM/YYYY" -#: pkg/invoices.go:1235 +#: pkg/invoices.go:1238 msgid "Invoice product ID must be a number greater than zero." msgstr "El ID de producto de factura tiene que ser un número mayor a cero."