Compare commits
3 Commits
b10f0dcb3f
...
d941adcdfe
Author | SHA1 | Date |
---|---|---|
jordi fita mas | d941adcdfe | |
jordi fita mas | 86ccbbe830 | |
jordi fita mas | 43fffb6848 |
|
@ -753,6 +753,7 @@ type invoiceProductForm struct {
|
|||
}
|
||||
|
||||
func newInvoiceProductForm(index int, company *Company, locale *Locale, taxOptions []*SelectOption) *invoiceProductForm {
|
||||
triggerRecompute := template.HTMLAttr(`data-hx-on="change: this.dispatchEvent(new CustomEvent('recompute', {bubbles: true}))"`)
|
||||
form := &invoiceProductForm{
|
||||
locale: locale,
|
||||
company: company,
|
||||
|
@ -790,6 +791,7 @@ func newInvoiceProductForm(index int, company *Company, locale *Locale, taxOptio
|
|||
Type: "number",
|
||||
Required: true,
|
||||
Attributes: []template.HTMLAttr{
|
||||
triggerRecompute,
|
||||
`min="0"`,
|
||||
template.HTMLAttr(fmt.Sprintf(`step="%v"`, company.MinCents())),
|
||||
},
|
||||
|
@ -799,6 +801,7 @@ func newInvoiceProductForm(index int, company *Company, locale *Locale, taxOptio
|
|||
Type: "number",
|
||||
Required: true,
|
||||
Attributes: []template.HTMLAttr{
|
||||
triggerRecompute,
|
||||
`min="0"`,
|
||||
},
|
||||
},
|
||||
|
@ -807,6 +810,7 @@ func newInvoiceProductForm(index int, company *Company, locale *Locale, taxOptio
|
|||
Type: "number",
|
||||
Required: true,
|
||||
Attributes: []template.HTMLAttr{
|
||||
triggerRecompute,
|
||||
`min="0"`,
|
||||
`max="100"`,
|
||||
},
|
||||
|
@ -815,6 +819,9 @@ func newInvoiceProductForm(index int, company *Company, locale *Locale, taxOptio
|
|||
Label: pgettext("input", "Taxes", locale),
|
||||
Multiple: true,
|
||||
Options: taxOptions,
|
||||
Attributes: []template.HTMLAttr{
|
||||
triggerRecompute,
|
||||
},
|
||||
},
|
||||
}
|
||||
form.Rename()
|
||||
|
|
277
po/ca.po
277
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: 2023-04-18 20:59+0200\n"
|
||||
"POT-Creation-Date: 2023-04-28 00:05+0200\n"
|
||||
"PO-Revision-Date: 2023-01-18 17:08+0100\n"
|
||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||
|
@ -47,53 +47,53 @@ msgctxt "title"
|
|||
msgid "New Invoice"
|
||||
msgstr "Nova factura"
|
||||
|
||||
#: web/template/invoices/products.gohtml:49
|
||||
#: web/template/products/index.gohtml:25
|
||||
#: web/template/invoices/products.gohtml:48
|
||||
#: web/template/products/index.gohtml:38
|
||||
msgctxt "product"
|
||||
msgid "All"
|
||||
msgstr "Tots"
|
||||
|
||||
#: web/template/invoices/products.gohtml:50
|
||||
#: web/template/products/index.gohtml:26
|
||||
#: web/template/invoices/products.gohtml:49
|
||||
#: web/template/products/index.gohtml:39
|
||||
msgctxt "title"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: web/template/invoices/products.gohtml:51
|
||||
#: web/template/invoices/view.gohtml:62 web/template/products/index.gohtml:28
|
||||
#: web/template/invoices/products.gohtml:50
|
||||
#: web/template/invoices/view.gohtml:62 web/template/products/index.gohtml:41
|
||||
msgctxt "title"
|
||||
msgid "Price"
|
||||
msgstr "Preu"
|
||||
|
||||
#: web/template/invoices/products.gohtml:65
|
||||
#: web/template/products/index.gohtml:48
|
||||
#: web/template/invoices/products.gohtml:64
|
||||
#: web/template/products/index.gohtml:61
|
||||
msgid "No products added yet."
|
||||
msgstr "No hi ha cap producte."
|
||||
|
||||
#: web/template/invoices/products.gohtml:73 web/template/invoices/new.gohtml:67
|
||||
#: web/template/invoices/edit.gohtml:68
|
||||
#: web/template/invoices/products.gohtml:72 web/template/invoices/new.gohtml:62
|
||||
#: web/template/invoices/edit.gohtml:62
|
||||
msgctxt "action"
|
||||
msgid "Add products"
|
||||
msgstr "Afegeix productes"
|
||||
|
||||
#: web/template/invoices/new.gohtml:48 web/template/invoices/view.gohtml:67
|
||||
#: web/template/invoices/edit.gohtml:49
|
||||
#: web/template/invoices/new.gohtml:39 web/template/invoices/view.gohtml:67
|
||||
#: web/template/invoices/edit.gohtml:39
|
||||
msgctxt "title"
|
||||
msgid "Subtotal"
|
||||
msgstr "Subtotal"
|
||||
|
||||
#: web/template/invoices/new.gohtml:58 web/template/invoices/view.gohtml:71
|
||||
#: web/template/invoices/view.gohtml:111 web/template/invoices/edit.gohtml:59
|
||||
#: web/template/invoices/new.gohtml:49 web/template/invoices/view.gohtml:71
|
||||
#: web/template/invoices/view.gohtml:111 web/template/invoices/edit.gohtml:49
|
||||
msgctxt "title"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: web/template/invoices/new.gohtml:70 web/template/invoices/edit.gohtml:71
|
||||
#: web/template/invoices/new.gohtml:66 web/template/invoices/edit.gohtml:66
|
||||
msgctxt "action"
|
||||
msgid "Update"
|
||||
msgstr "Actualitza"
|
||||
|
||||
#: web/template/invoices/new.gohtml:72 web/template/invoices/index.gohtml:21
|
||||
#: web/template/invoices/new.gohtml:68 web/template/invoices/index.gohtml:20
|
||||
msgctxt "action"
|
||||
msgid "New invoice"
|
||||
msgstr "Nova factura"
|
||||
|
@ -103,73 +103,73 @@ msgctxt "action"
|
|||
msgid "Download invoices"
|
||||
msgstr "Descarrega factures"
|
||||
|
||||
#: web/template/invoices/index.gohtml:41
|
||||
#: web/template/invoices/index.gohtml:40 web/template/products/index.gohtml:32
|
||||
msgctxt "action"
|
||||
msgid "Filter"
|
||||
msgstr "Filtra"
|
||||
|
||||
#: web/template/invoices/index.gohtml:47
|
||||
#: web/template/invoices/index.gohtml:46
|
||||
msgctxt "invoice"
|
||||
msgid "All"
|
||||
msgstr "Totes"
|
||||
|
||||
#: web/template/invoices/index.gohtml:48 web/template/invoices/view.gohtml:34
|
||||
#: web/template/invoices/index.gohtml:47 web/template/invoices/view.gohtml:34
|
||||
msgctxt "title"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
#: web/template/invoices/index.gohtml:49
|
||||
#: web/template/invoices/index.gohtml:48
|
||||
msgctxt "title"
|
||||
msgid "Invoice Num."
|
||||
msgstr "Núm. factura"
|
||||
|
||||
#: web/template/invoices/index.gohtml:50 web/template/contacts/index.gohtml:26
|
||||
#: web/template/invoices/index.gohtml:49 web/template/contacts/index.gohtml:25
|
||||
msgctxt "title"
|
||||
msgid "Customer"
|
||||
msgstr "Client"
|
||||
|
||||
#: web/template/invoices/index.gohtml:51
|
||||
#: web/template/invoices/index.gohtml:50
|
||||
msgctxt "title"
|
||||
msgid "Status"
|
||||
msgstr "Estat"
|
||||
|
||||
#: web/template/invoices/index.gohtml:52 web/template/contacts/index.gohtml:29
|
||||
#: web/template/products/index.gohtml:27
|
||||
#: web/template/invoices/index.gohtml:51 web/template/contacts/index.gohtml:28
|
||||
#: web/template/products/index.gohtml:40
|
||||
msgctxt "title"
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetes"
|
||||
|
||||
#: web/template/invoices/index.gohtml:53
|
||||
#: web/template/invoices/index.gohtml:52
|
||||
msgctxt "title"
|
||||
msgid "Amount"
|
||||
msgstr "Import"
|
||||
|
||||
#: web/template/invoices/index.gohtml:54
|
||||
#: web/template/invoices/index.gohtml:53
|
||||
msgctxt "title"
|
||||
msgid "Download"
|
||||
msgstr "Descàrrega"
|
||||
|
||||
#: web/template/invoices/index.gohtml:55
|
||||
#: web/template/invoices/index.gohtml:54
|
||||
msgctxt "title"
|
||||
msgid "Actions"
|
||||
msgstr "Accions"
|
||||
|
||||
#: web/template/invoices/index.gohtml:62
|
||||
#: web/template/invoices/index.gohtml:61
|
||||
msgctxt "action"
|
||||
msgid "Select invoice %v"
|
||||
msgstr "Selecciona factura %v"
|
||||
|
||||
#: web/template/invoices/index.gohtml:117 web/template/invoices/view.gohtml:19
|
||||
#: web/template/invoices/index.gohtml:116 web/template/invoices/view.gohtml:19
|
||||
msgctxt "action"
|
||||
msgid "Edit"
|
||||
msgstr "Edita"
|
||||
|
||||
#: web/template/invoices/index.gohtml:125 web/template/invoices/view.gohtml:16
|
||||
#: web/template/invoices/index.gohtml:124 web/template/invoices/view.gohtml:16
|
||||
msgctxt "action"
|
||||
msgid "Duplicate"
|
||||
msgstr "Duplica"
|
||||
|
||||
#: web/template/invoices/index.gohtml:135
|
||||
#: web/template/invoices/index.gohtml:134
|
||||
msgid "No invoices added yet."
|
||||
msgstr "No hi ha cap factura."
|
||||
|
||||
|
@ -208,7 +208,7 @@ msgctxt "title"
|
|||
msgid "Edit Invoice “%s”"
|
||||
msgstr "Edició de la factura «%s»"
|
||||
|
||||
#: web/template/invoices/edit.gohtml:73
|
||||
#: web/template/invoices/edit.gohtml:68
|
||||
msgctxt "action"
|
||||
msgid "Edit invoice"
|
||||
msgstr "Edita factura"
|
||||
|
@ -265,27 +265,27 @@ msgctxt "title"
|
|||
msgid "Contacts"
|
||||
msgstr "Contactes"
|
||||
|
||||
#: web/template/contacts/new.gohtml:36 web/template/contacts/index.gohtml:15
|
||||
#: web/template/contacts/new.gohtml:36 web/template/contacts/index.gohtml:14
|
||||
msgctxt "action"
|
||||
msgid "New contact"
|
||||
msgstr "Nou contacte"
|
||||
|
||||
#: web/template/contacts/index.gohtml:25
|
||||
#: web/template/contacts/index.gohtml:24
|
||||
msgctxt "contact"
|
||||
msgid "All"
|
||||
msgstr "Tots"
|
||||
|
||||
#: web/template/contacts/index.gohtml:27
|
||||
#: web/template/contacts/index.gohtml:26
|
||||
msgctxt "title"
|
||||
msgid "Email"
|
||||
msgstr "Correu-e"
|
||||
|
||||
#: web/template/contacts/index.gohtml:28
|
||||
#: web/template/contacts/index.gohtml:27
|
||||
msgctxt "title"
|
||||
msgid "Phone"
|
||||
msgstr "Telèfon"
|
||||
|
||||
#: web/template/contacts/index.gohtml:50
|
||||
#: web/template/contacts/index.gohtml:49
|
||||
msgid "No contacts added yet."
|
||||
msgstr "No hi ha cap contacte."
|
||||
|
||||
|
@ -415,22 +415,26 @@ msgctxt "title"
|
|||
msgid "Products"
|
||||
msgstr "Productes"
|
||||
|
||||
#: web/template/products/new.gohtml:32 web/template/products/index.gohtml:15
|
||||
#: web/template/products/new.gohtml:30 web/template/products/index.gohtml:14
|
||||
msgctxt "action"
|
||||
msgid "New product"
|
||||
msgstr "Nou producte"
|
||||
|
||||
#: web/template/products/search.gohtml:12
|
||||
msgid "No products found."
|
||||
msgstr "No s’ha trobat cap producte."
|
||||
|
||||
#: web/template/products/edit.gohtml:3 web/template/products/edit.gohtml:20
|
||||
msgctxt "title"
|
||||
msgid "Edit Product “%s”"
|
||||
msgstr "Edició del producte «%s»"
|
||||
|
||||
#: web/template/products/edit.gohtml:36
|
||||
#: web/template/products/edit.gohtml:34
|
||||
msgctxt "action"
|
||||
msgid "Update product"
|
||||
msgstr "Actualitza producte"
|
||||
|
||||
#: pkg/login.go:36 pkg/profile.go:40 pkg/contacts.go:211
|
||||
#: pkg/login.go:36 pkg/profile.go:40 pkg/contacts.go:199
|
||||
msgctxt "input"
|
||||
msgid "Email"
|
||||
msgstr "Correu-e"
|
||||
|
@ -440,11 +444,11 @@ msgctxt "input"
|
|||
msgid "Password"
|
||||
msgstr "Contrasenya"
|
||||
|
||||
#: pkg/login.go:69 pkg/profile.go:89 pkg/contacts.go:308
|
||||
#: pkg/login.go:69 pkg/profile.go:89 pkg/contacts.go:296
|
||||
msgid "Email can not be empty."
|
||||
msgstr "No podeu deixar el correu-e en blanc."
|
||||
|
||||
#: pkg/login.go:70 pkg/profile.go:90 pkg/contacts.go:309
|
||||
#: pkg/login.go:70 pkg/profile.go:90 pkg/contacts.go:297
|
||||
msgid "This value is not a valid email. It should be like name@domain.com."
|
||||
msgstr "Aquest valor no és un correu-e vàlid. Hauria de ser similar a nom@domini.cat."
|
||||
|
||||
|
@ -456,49 +460,72 @@ msgstr "No podeu deixar la contrasenya en blanc."
|
|||
msgid "Invalid user or password."
|
||||
msgstr "Nom d’usuari o contrasenya incorrectes."
|
||||
|
||||
#: pkg/products.go:204 pkg/invoices.go:732
|
||||
#: pkg/products.go:161 pkg/products.go:260 pkg/invoices.go:771
|
||||
msgctxt "input"
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: pkg/products.go:210 pkg/invoices.go:737
|
||||
msgctxt "input"
|
||||
msgid "Description"
|
||||
msgstr "Descripció"
|
||||
|
||||
#: pkg/products.go:215 pkg/invoices.go:741
|
||||
msgctxt "input"
|
||||
msgid "Price"
|
||||
msgstr "Preu"
|
||||
|
||||
#: pkg/products.go:225 pkg/invoices.go:767
|
||||
msgctxt "input"
|
||||
msgid "Taxes"
|
||||
msgstr "Imposts"
|
||||
|
||||
#: pkg/products.go:231 pkg/invoices.go:187 pkg/invoices.go:582
|
||||
#: pkg/invoices.go:964 pkg/contacts.go:268
|
||||
#: pkg/products.go:166 pkg/products.go:287 pkg/invoices.go:187
|
||||
#: pkg/invoices.go:597 pkg/invoices.go:1031 pkg/contacts.go:256
|
||||
msgctxt "input"
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetes"
|
||||
|
||||
#: pkg/products.go:250 pkg/profile.go:92 pkg/invoices.go:806
|
||||
#: pkg/products.go:170 pkg/invoices.go:191
|
||||
msgctxt "input"
|
||||
msgid "Tags Condition"
|
||||
msgstr "Condició de les etiquetes"
|
||||
|
||||
#: pkg/products.go:174 pkg/invoices.go:195
|
||||
msgctxt "tag condition"
|
||||
msgid "All"
|
||||
msgstr "Totes"
|
||||
|
||||
#: pkg/products.go:175 pkg/invoices.go:196
|
||||
msgid "Invoices must have all the specified labels."
|
||||
msgstr "Les factures han de tenir totes les etiquetes."
|
||||
|
||||
#: pkg/products.go:179 pkg/invoices.go:200
|
||||
msgctxt "tag condition"
|
||||
msgid "Any"
|
||||
msgstr "Qualsevol"
|
||||
|
||||
#: pkg/products.go:180 pkg/invoices.go:201
|
||||
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:266 pkg/invoices.go:785
|
||||
msgctxt "input"
|
||||
msgid "Description"
|
||||
msgstr "Descripció"
|
||||
|
||||
#: pkg/products.go:271 pkg/invoices.go:789
|
||||
msgctxt "input"
|
||||
msgid "Price"
|
||||
msgstr "Preu"
|
||||
|
||||
#: pkg/products.go:281 pkg/invoices.go:815
|
||||
msgctxt "input"
|
||||
msgid "Taxes"
|
||||
msgstr "Imposts"
|
||||
|
||||
#: pkg/products.go:306 pkg/profile.go:92 pkg/invoices.go:856
|
||||
msgid "Name can not be empty."
|
||||
msgstr "No podeu deixar el nom en blanc."
|
||||
|
||||
#: pkg/products.go:251 pkg/invoices.go:807
|
||||
#: pkg/products.go:307 pkg/invoices.go:857
|
||||
msgid "Price can not be empty."
|
||||
msgstr "No podeu deixar el preu en blanc."
|
||||
|
||||
#: pkg/products.go:252 pkg/invoices.go:808
|
||||
#: pkg/products.go:308 pkg/invoices.go:858
|
||||
msgid "Price must be a number greater than zero."
|
||||
msgstr "El preu ha de ser un número major a zero."
|
||||
|
||||
#: pkg/products.go:254 pkg/invoices.go:816
|
||||
#: pkg/products.go:310 pkg/invoices.go:866
|
||||
msgid "Selected tax is not valid."
|
||||
msgstr "Heu seleccionat un impost que no és vàlid."
|
||||
|
||||
#: pkg/products.go:255 pkg/invoices.go:817
|
||||
#: pkg/products.go:311 pkg/invoices.go:867
|
||||
msgid "You can only select a tax of each class."
|
||||
msgstr "Només podeu seleccionar un impost de cada classe."
|
||||
|
||||
|
@ -606,7 +633,7 @@ msgstr "La confirmació no és igual a la contrasenya."
|
|||
msgid "Selected language is not valid."
|
||||
msgstr "Heu seleccionat un idioma que no és vàlid."
|
||||
|
||||
#: pkg/invoices.go:160 pkg/invoices.go:565
|
||||
#: pkg/invoices.go:160 pkg/invoices.go:580
|
||||
msgctxt "input"
|
||||
msgid "Customer"
|
||||
msgstr "Client"
|
||||
|
@ -615,7 +642,7 @@ msgstr "Client"
|
|||
msgid "All customers"
|
||||
msgstr "Tots els clients"
|
||||
|
||||
#: pkg/invoices.go:166 pkg/invoices.go:559
|
||||
#: pkg/invoices.go:166 pkg/invoices.go:574
|
||||
msgctxt "input"
|
||||
msgid "Invoice Status"
|
||||
msgstr "Estat de la factura"
|
||||
|
@ -639,213 +666,193 @@ msgctxt "input"
|
|||
msgid "To Date"
|
||||
msgstr "Fins la data"
|
||||
|
||||
#: pkg/invoices.go:191
|
||||
msgctxt "input"
|
||||
msgid "Tags Condition"
|
||||
msgstr "Condició de les etiquetes"
|
||||
|
||||
#: pkg/invoices.go:195
|
||||
msgctxt "tag condition"
|
||||
msgid "All"
|
||||
msgstr "Totes"
|
||||
|
||||
#: pkg/invoices.go:196
|
||||
msgid "Invoices must have all the specified labels."
|
||||
msgstr "Les factures han de tenir totes les etiquetes."
|
||||
|
||||
#: pkg/invoices.go:200
|
||||
msgctxt "tag condition"
|
||||
msgid "Any"
|
||||
msgstr "Qualsevol"
|
||||
|
||||
#: pkg/invoices.go:201
|
||||
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/invoices.go:405
|
||||
#: pkg/invoices.go:423
|
||||
msgid "Select a customer to bill."
|
||||
msgstr "Escolliu un client a facturar."
|
||||
|
||||
#: pkg/invoices.go:504
|
||||
#: pkg/invoices.go:524
|
||||
msgid "invoices.zip"
|
||||
msgstr "factures.zip"
|
||||
|
||||
#: pkg/invoices.go:510 pkg/invoices.go:950
|
||||
#: pkg/invoices.go:530 pkg/invoices.go:1017
|
||||
msgid "Invalid action"
|
||||
msgstr "Acció invàlida."
|
||||
|
||||
#: pkg/invoices.go:571
|
||||
#: pkg/invoices.go:586
|
||||
msgctxt "input"
|
||||
msgid "Invoice Date"
|
||||
msgstr "Data de factura"
|
||||
|
||||
#: pkg/invoices.go:577
|
||||
#: pkg/invoices.go:592
|
||||
msgctxt "input"
|
||||
msgid "Notes"
|
||||
msgstr "Notes"
|
||||
|
||||
#: pkg/invoices.go:587
|
||||
#: pkg/invoices.go:602
|
||||
msgctxt "input"
|
||||
msgid "Payment Method"
|
||||
msgstr "Mètode de pagament"
|
||||
|
||||
#: pkg/invoices.go:624
|
||||
#: pkg/invoices.go:638
|
||||
msgid "Selected invoice status is not valid."
|
||||
msgstr "Heu seleccionat un estat de factura que no és vàlid."
|
||||
|
||||
#: pkg/invoices.go:625
|
||||
#: pkg/invoices.go:639
|
||||
msgid "Selected customer is not valid."
|
||||
msgstr "Heu seleccionat un client que no és vàlid."
|
||||
|
||||
#: pkg/invoices.go:626
|
||||
#: pkg/invoices.go:640
|
||||
msgid "Invoice date can not be empty."
|
||||
msgstr "No podeu deixar la data de la factura en blanc."
|
||||
|
||||
#: pkg/invoices.go:627
|
||||
#: pkg/invoices.go:641
|
||||
msgid "Invoice date must be a valid date."
|
||||
msgstr "La data de facturació ha de ser vàlida."
|
||||
|
||||
#: pkg/invoices.go:629
|
||||
#: pkg/invoices.go:643
|
||||
msgid "Selected payment method is not valid."
|
||||
msgstr "Heu seleccionat un mètode de pagament que no és vàlid."
|
||||
|
||||
#: pkg/invoices.go:722 pkg/invoices.go:727
|
||||
#: pkg/invoices.go:761 pkg/invoices.go:766
|
||||
msgctxt "input"
|
||||
msgid "Id"
|
||||
msgstr "Identificador"
|
||||
|
||||
#: pkg/invoices.go:750
|
||||
#: pkg/invoices.go:798
|
||||
msgctxt "input"
|
||||
msgid "Quantity"
|
||||
msgstr "Quantitat"
|
||||
|
||||
#: pkg/invoices.go:758
|
||||
#: pkg/invoices.go:806
|
||||
msgctxt "input"
|
||||
msgid "Discount (%)"
|
||||
msgstr "Descompte (%)"
|
||||
|
||||
#: pkg/invoices.go:805
|
||||
msgid "Product ID can not be empty."
|
||||
msgstr "No podeu deixar l’identificador del producte en blanc."
|
||||
#: pkg/invoices.go:854
|
||||
msgid "Product ID must be a number greater than zero."
|
||||
msgstr "L’ID del producte ha de ser un número major a zero."
|
||||
|
||||
#: pkg/invoices.go:810
|
||||
#: pkg/invoices.go:860
|
||||
msgid "Quantity can not be empty."
|
||||
msgstr "No podeu deixar la quantitat en blanc."
|
||||
|
||||
#: pkg/invoices.go:811
|
||||
#: pkg/invoices.go:861
|
||||
msgid "Quantity must be a number greater than zero."
|
||||
msgstr "La quantitat ha de ser un número major a zero."
|
||||
|
||||
#: pkg/invoices.go:813
|
||||
#: pkg/invoices.go:863
|
||||
msgid "Discount can not be empty."
|
||||
msgstr "No podeu deixar el descompte en blanc."
|
||||
|
||||
#: pkg/invoices.go:814
|
||||
#: pkg/invoices.go:864
|
||||
msgid "Discount must be a percentage between 0 and 100."
|
||||
msgstr "El descompte ha de ser un percentatge entre 0 i 100."
|
||||
|
||||
#: pkg/contacts.go:181
|
||||
#: pkg/contacts.go:169
|
||||
msgctxt "input"
|
||||
msgid "Business name"
|
||||
msgstr "Nom i cognoms"
|
||||
|
||||
#: pkg/contacts.go:191
|
||||
#: pkg/contacts.go:179
|
||||
msgctxt "input"
|
||||
msgid "VAT number"
|
||||
msgstr "DNI / NIF"
|
||||
|
||||
#: pkg/contacts.go:197
|
||||
#: pkg/contacts.go:185
|
||||
msgctxt "input"
|
||||
msgid "Trade name"
|
||||
msgstr "Nom comercial"
|
||||
|
||||
#: pkg/contacts.go:202
|
||||
#: pkg/contacts.go:190
|
||||
msgctxt "input"
|
||||
msgid "Phone"
|
||||
msgstr "Telèfon"
|
||||
|
||||
#: pkg/contacts.go:220
|
||||
#: pkg/contacts.go:208
|
||||
msgctxt "input"
|
||||
msgid "Web"
|
||||
msgstr "Web"
|
||||
|
||||
#: pkg/contacts.go:228
|
||||
#: pkg/contacts.go:216
|
||||
msgctxt "input"
|
||||
msgid "Address"
|
||||
msgstr "Adreça"
|
||||
|
||||
#: pkg/contacts.go:237
|
||||
#: pkg/contacts.go:225
|
||||
msgctxt "input"
|
||||
msgid "City"
|
||||
msgstr "Població"
|
||||
|
||||
#: pkg/contacts.go:243
|
||||
#: pkg/contacts.go:231
|
||||
msgctxt "input"
|
||||
msgid "Province"
|
||||
msgstr "Província"
|
||||
|
||||
#: pkg/contacts.go:249
|
||||
#: pkg/contacts.go:237
|
||||
msgctxt "input"
|
||||
msgid "Postal code"
|
||||
msgstr "Codi postal"
|
||||
|
||||
#: pkg/contacts.go:258
|
||||
#: pkg/contacts.go:246
|
||||
msgctxt "input"
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#: pkg/contacts.go:296
|
||||
#: pkg/contacts.go:284
|
||||
msgid "Selected country is not valid."
|
||||
msgstr "Heu seleccionat un país que no és vàlid."
|
||||
|
||||
#: pkg/contacts.go:300
|
||||
#: pkg/contacts.go:288
|
||||
msgid "Business name can not be empty."
|
||||
msgstr "No podeu deixar el nom i els cognoms en blanc."
|
||||
|
||||
#: pkg/contacts.go:301
|
||||
#: pkg/contacts.go:289
|
||||
msgid "Business name must have at least two letters."
|
||||
msgstr "Nom i cognoms han de tenir com a mínim dues lletres."
|
||||
|
||||
#: pkg/contacts.go:302
|
||||
#: pkg/contacts.go:290
|
||||
msgid "VAT number can not be empty."
|
||||
msgstr "No podeu deixar el DNI o NIF en blanc."
|
||||
|
||||
#: pkg/contacts.go:303
|
||||
#: pkg/contacts.go:291
|
||||
msgid "This value is not a valid VAT number."
|
||||
msgstr "Aquest valor no és un DNI o NIF vàlid."
|
||||
|
||||
#: pkg/contacts.go:305
|
||||
#: pkg/contacts.go:293
|
||||
msgid "Phone can not be empty."
|
||||
msgstr "No podeu deixar el telèfon en blanc."
|
||||
|
||||
#: pkg/contacts.go:306
|
||||
#: pkg/contacts.go:294
|
||||
msgid "This value is not a valid phone number."
|
||||
msgstr "Aquest valor no és un telèfon vàlid."
|
||||
|
||||
#: pkg/contacts.go:312
|
||||
#: pkg/contacts.go:300
|
||||
msgid "This value is not a valid web address. It should be like https://domain.com/."
|
||||
msgstr "Aquest valor no és una adreça web vàlida. Hauria de ser similar a https://domini.cat/."
|
||||
|
||||
#: pkg/contacts.go:314
|
||||
#: pkg/contacts.go:302
|
||||
msgid "Address can not be empty."
|
||||
msgstr "No podeu deixar l’adreça en blanc."
|
||||
|
||||
#: pkg/contacts.go:315
|
||||
#: pkg/contacts.go:303
|
||||
msgid "City can not be empty."
|
||||
msgstr "No podeu deixar la població en blanc."
|
||||
|
||||
#: pkg/contacts.go:316
|
||||
#: pkg/contacts.go:304
|
||||
msgid "Province can not be empty."
|
||||
msgstr "No podeu deixar la província en blanc."
|
||||
|
||||
#: pkg/contacts.go:317
|
||||
#: pkg/contacts.go:305
|
||||
msgid "Postal code can not be empty."
|
||||
msgstr "No podeu deixar el codi postal en blanc."
|
||||
|
||||
#: pkg/contacts.go:318
|
||||
#: pkg/contacts.go:306
|
||||
msgid "This value is not a valid postal code."
|
||||
msgstr "Aquest valor no és un codi postal vàlid."
|
||||
|
||||
#~ msgid "Product ID can not be empty."
|
||||
#~ msgstr "No podeu deixar l’identificador del producte en blanc."
|
||||
|
||||
#~ msgctxt "input"
|
||||
#~ msgid "Number"
|
||||
#~ msgstr "Número"
|
||||
|
|
277
po/es.po
277
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: 2023-04-18 20:59+0200\n"
|
||||
"POT-Creation-Date: 2023-04-28 00:05+0200\n"
|
||||
"PO-Revision-Date: 2023-01-18 17:45+0100\n"
|
||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||
"Language-Team: Spanish <es@tp.org.es>\n"
|
||||
|
@ -47,53 +47,53 @@ msgctxt "title"
|
|||
msgid "New Invoice"
|
||||
msgstr "Nueva factura"
|
||||
|
||||
#: web/template/invoices/products.gohtml:49
|
||||
#: web/template/products/index.gohtml:25
|
||||
#: web/template/invoices/products.gohtml:48
|
||||
#: web/template/products/index.gohtml:38
|
||||
msgctxt "product"
|
||||
msgid "All"
|
||||
msgstr "Todos"
|
||||
|
||||
#: web/template/invoices/products.gohtml:50
|
||||
#: web/template/products/index.gohtml:26
|
||||
#: web/template/invoices/products.gohtml:49
|
||||
#: web/template/products/index.gohtml:39
|
||||
msgctxt "title"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: web/template/invoices/products.gohtml:51
|
||||
#: web/template/invoices/view.gohtml:62 web/template/products/index.gohtml:28
|
||||
#: web/template/invoices/products.gohtml:50
|
||||
#: web/template/invoices/view.gohtml:62 web/template/products/index.gohtml:41
|
||||
msgctxt "title"
|
||||
msgid "Price"
|
||||
msgstr "Precio"
|
||||
|
||||
#: web/template/invoices/products.gohtml:65
|
||||
#: web/template/products/index.gohtml:48
|
||||
#: web/template/invoices/products.gohtml:64
|
||||
#: web/template/products/index.gohtml:61
|
||||
msgid "No products added yet."
|
||||
msgstr "No hay productos."
|
||||
|
||||
#: web/template/invoices/products.gohtml:73 web/template/invoices/new.gohtml:67
|
||||
#: web/template/invoices/edit.gohtml:68
|
||||
#: web/template/invoices/products.gohtml:72 web/template/invoices/new.gohtml:62
|
||||
#: web/template/invoices/edit.gohtml:62
|
||||
msgctxt "action"
|
||||
msgid "Add products"
|
||||
msgstr "Añadir productos"
|
||||
|
||||
#: web/template/invoices/new.gohtml:48 web/template/invoices/view.gohtml:67
|
||||
#: web/template/invoices/edit.gohtml:49
|
||||
#: web/template/invoices/new.gohtml:39 web/template/invoices/view.gohtml:67
|
||||
#: web/template/invoices/edit.gohtml:39
|
||||
msgctxt "title"
|
||||
msgid "Subtotal"
|
||||
msgstr "Subtotal"
|
||||
|
||||
#: web/template/invoices/new.gohtml:58 web/template/invoices/view.gohtml:71
|
||||
#: web/template/invoices/view.gohtml:111 web/template/invoices/edit.gohtml:59
|
||||
#: web/template/invoices/new.gohtml:49 web/template/invoices/view.gohtml:71
|
||||
#: web/template/invoices/view.gohtml:111 web/template/invoices/edit.gohtml:49
|
||||
msgctxt "title"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: web/template/invoices/new.gohtml:70 web/template/invoices/edit.gohtml:71
|
||||
#: web/template/invoices/new.gohtml:66 web/template/invoices/edit.gohtml:66
|
||||
msgctxt "action"
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: web/template/invoices/new.gohtml:72 web/template/invoices/index.gohtml:21
|
||||
#: web/template/invoices/new.gohtml:68 web/template/invoices/index.gohtml:20
|
||||
msgctxt "action"
|
||||
msgid "New invoice"
|
||||
msgstr "Nueva factura"
|
||||
|
@ -103,73 +103,73 @@ msgctxt "action"
|
|||
msgid "Download invoices"
|
||||
msgstr "Descargar facturas"
|
||||
|
||||
#: web/template/invoices/index.gohtml:41
|
||||
#: web/template/invoices/index.gohtml:40 web/template/products/index.gohtml:32
|
||||
msgctxt "action"
|
||||
msgid "Filter"
|
||||
msgstr "Filtrar"
|
||||
|
||||
#: web/template/invoices/index.gohtml:47
|
||||
#: web/template/invoices/index.gohtml:46
|
||||
msgctxt "invoice"
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: web/template/invoices/index.gohtml:48 web/template/invoices/view.gohtml:34
|
||||
#: web/template/invoices/index.gohtml:47 web/template/invoices/view.gohtml:34
|
||||
msgctxt "title"
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: web/template/invoices/index.gohtml:49
|
||||
#: web/template/invoices/index.gohtml:48
|
||||
msgctxt "title"
|
||||
msgid "Invoice Num."
|
||||
msgstr "Nº factura"
|
||||
|
||||
#: web/template/invoices/index.gohtml:50 web/template/contacts/index.gohtml:26
|
||||
#: web/template/invoices/index.gohtml:49 web/template/contacts/index.gohtml:25
|
||||
msgctxt "title"
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#: web/template/invoices/index.gohtml:51
|
||||
#: web/template/invoices/index.gohtml:50
|
||||
msgctxt "title"
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: web/template/invoices/index.gohtml:52 web/template/contacts/index.gohtml:29
|
||||
#: web/template/products/index.gohtml:27
|
||||
#: web/template/invoices/index.gohtml:51 web/template/contacts/index.gohtml:28
|
||||
#: web/template/products/index.gohtml:40
|
||||
msgctxt "title"
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetes"
|
||||
|
||||
#: web/template/invoices/index.gohtml:53
|
||||
#: web/template/invoices/index.gohtml:52
|
||||
msgctxt "title"
|
||||
msgid "Amount"
|
||||
msgstr "Importe"
|
||||
|
||||
#: web/template/invoices/index.gohtml:54
|
||||
#: web/template/invoices/index.gohtml:53
|
||||
msgctxt "title"
|
||||
msgid "Download"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: web/template/invoices/index.gohtml:55
|
||||
#: web/template/invoices/index.gohtml:54
|
||||
msgctxt "title"
|
||||
msgid "Actions"
|
||||
msgstr "Acciones"
|
||||
|
||||
#: web/template/invoices/index.gohtml:62
|
||||
#: web/template/invoices/index.gohtml:61
|
||||
msgctxt "action"
|
||||
msgid "Select invoice %v"
|
||||
msgstr "Seleccionar factura %v"
|
||||
|
||||
#: web/template/invoices/index.gohtml:117 web/template/invoices/view.gohtml:19
|
||||
#: web/template/invoices/index.gohtml:116 web/template/invoices/view.gohtml:19
|
||||
msgctxt "action"
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
#: web/template/invoices/index.gohtml:125 web/template/invoices/view.gohtml:16
|
||||
#: web/template/invoices/index.gohtml:124 web/template/invoices/view.gohtml:16
|
||||
msgctxt "action"
|
||||
msgid "Duplicate"
|
||||
msgstr "Duplicar"
|
||||
|
||||
#: web/template/invoices/index.gohtml:135
|
||||
#: web/template/invoices/index.gohtml:134
|
||||
msgid "No invoices added yet."
|
||||
msgstr "No hay facturas."
|
||||
|
||||
|
@ -208,7 +208,7 @@ msgctxt "title"
|
|||
msgid "Edit Invoice “%s”"
|
||||
msgstr "Edición del la factura «%s»"
|
||||
|
||||
#: web/template/invoices/edit.gohtml:73
|
||||
#: web/template/invoices/edit.gohtml:68
|
||||
msgctxt "action"
|
||||
msgid "Edit invoice"
|
||||
msgstr "Editar factura"
|
||||
|
@ -265,27 +265,27 @@ msgctxt "title"
|
|||
msgid "Contacts"
|
||||
msgstr "Contactos"
|
||||
|
||||
#: web/template/contacts/new.gohtml:36 web/template/contacts/index.gohtml:15
|
||||
#: web/template/contacts/new.gohtml:36 web/template/contacts/index.gohtml:14
|
||||
msgctxt "action"
|
||||
msgid "New contact"
|
||||
msgstr "Nuevo contacto"
|
||||
|
||||
#: web/template/contacts/index.gohtml:25
|
||||
#: web/template/contacts/index.gohtml:24
|
||||
msgctxt "contact"
|
||||
msgid "All"
|
||||
msgstr "Todos"
|
||||
|
||||
#: web/template/contacts/index.gohtml:27
|
||||
#: web/template/contacts/index.gohtml:26
|
||||
msgctxt "title"
|
||||
msgid "Email"
|
||||
msgstr "Correo-e"
|
||||
|
||||
#: web/template/contacts/index.gohtml:28
|
||||
#: web/template/contacts/index.gohtml:27
|
||||
msgctxt "title"
|
||||
msgid "Phone"
|
||||
msgstr "Teléfono"
|
||||
|
||||
#: web/template/contacts/index.gohtml:50
|
||||
#: web/template/contacts/index.gohtml:49
|
||||
msgid "No contacts added yet."
|
||||
msgstr "No hay contactos."
|
||||
|
||||
|
@ -415,22 +415,26 @@ msgctxt "title"
|
|||
msgid "Products"
|
||||
msgstr "Productos"
|
||||
|
||||
#: web/template/products/new.gohtml:32 web/template/products/index.gohtml:15
|
||||
#: web/template/products/new.gohtml:30 web/template/products/index.gohtml:14
|
||||
msgctxt "action"
|
||||
msgid "New product"
|
||||
msgstr "Nuevo producto"
|
||||
|
||||
#: web/template/products/search.gohtml:12
|
||||
msgid "No products found."
|
||||
msgstr "No se ha encontrado ningún producto."
|
||||
|
||||
#: web/template/products/edit.gohtml:3 web/template/products/edit.gohtml:20
|
||||
msgctxt "title"
|
||||
msgid "Edit Product “%s”"
|
||||
msgstr "Edición del producto «%s»"
|
||||
|
||||
#: web/template/products/edit.gohtml:36
|
||||
#: web/template/products/edit.gohtml:34
|
||||
msgctxt "action"
|
||||
msgid "Update product"
|
||||
msgstr "Actualizar producto"
|
||||
|
||||
#: pkg/login.go:36 pkg/profile.go:40 pkg/contacts.go:211
|
||||
#: pkg/login.go:36 pkg/profile.go:40 pkg/contacts.go:199
|
||||
msgctxt "input"
|
||||
msgid "Email"
|
||||
msgstr "Correo-e"
|
||||
|
@ -440,11 +444,11 @@ msgctxt "input"
|
|||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: pkg/login.go:69 pkg/profile.go:89 pkg/contacts.go:308
|
||||
#: pkg/login.go:69 pkg/profile.go:89 pkg/contacts.go:296
|
||||
msgid "Email can not be empty."
|
||||
msgstr "No podéis dejar el correo-e en blanco."
|
||||
|
||||
#: pkg/login.go:70 pkg/profile.go:90 pkg/contacts.go:309
|
||||
#: pkg/login.go:70 pkg/profile.go:90 pkg/contacts.go:297
|
||||
msgid "This value is not a valid email. It should be like name@domain.com."
|
||||
msgstr "Este valor no es un correo-e válido. Tiene que ser parecido a nombre@dominio.es."
|
||||
|
||||
|
@ -456,49 +460,72 @@ msgstr "No podéis dejar la contraseña en blanco."
|
|||
msgid "Invalid user or password."
|
||||
msgstr "Nombre de usuario o contraseña inválido."
|
||||
|
||||
#: pkg/products.go:204 pkg/invoices.go:732
|
||||
#: pkg/products.go:161 pkg/products.go:260 pkg/invoices.go:771
|
||||
msgctxt "input"
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: pkg/products.go:210 pkg/invoices.go:737
|
||||
msgctxt "input"
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: pkg/products.go:215 pkg/invoices.go:741
|
||||
msgctxt "input"
|
||||
msgid "Price"
|
||||
msgstr "Precio"
|
||||
|
||||
#: pkg/products.go:225 pkg/invoices.go:767
|
||||
msgctxt "input"
|
||||
msgid "Taxes"
|
||||
msgstr "Impuestos"
|
||||
|
||||
#: pkg/products.go:231 pkg/invoices.go:187 pkg/invoices.go:582
|
||||
#: pkg/invoices.go:964 pkg/contacts.go:268
|
||||
#: pkg/products.go:166 pkg/products.go:287 pkg/invoices.go:187
|
||||
#: pkg/invoices.go:597 pkg/invoices.go:1031 pkg/contacts.go:256
|
||||
msgctxt "input"
|
||||
msgid "Tags"
|
||||
msgstr "Etiquetes"
|
||||
|
||||
#: pkg/products.go:250 pkg/profile.go:92 pkg/invoices.go:806
|
||||
#: pkg/products.go:170 pkg/invoices.go:191
|
||||
msgctxt "input"
|
||||
msgid "Tags Condition"
|
||||
msgstr "Condición de las etiquetas"
|
||||
|
||||
#: pkg/products.go:174 pkg/invoices.go:195
|
||||
msgctxt "tag condition"
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: pkg/products.go:175 pkg/invoices.go:196
|
||||
msgid "Invoices must have all the specified labels."
|
||||
msgstr "Las facturas deben tener todas las etiquetas."
|
||||
|
||||
#: pkg/products.go:179 pkg/invoices.go:200
|
||||
msgctxt "tag condition"
|
||||
msgid "Any"
|
||||
msgstr "Cualquiera"
|
||||
|
||||
#: pkg/products.go:180 pkg/invoices.go:201
|
||||
msgid "Invoices must have at least one of the specified labels."
|
||||
msgstr "Las facturas debent tener como mínimo una de las etiquetas."
|
||||
|
||||
#: pkg/products.go:266 pkg/invoices.go:785
|
||||
msgctxt "input"
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#: pkg/products.go:271 pkg/invoices.go:789
|
||||
msgctxt "input"
|
||||
msgid "Price"
|
||||
msgstr "Precio"
|
||||
|
||||
#: pkg/products.go:281 pkg/invoices.go:815
|
||||
msgctxt "input"
|
||||
msgid "Taxes"
|
||||
msgstr "Impuestos"
|
||||
|
||||
#: pkg/products.go:306 pkg/profile.go:92 pkg/invoices.go:856
|
||||
msgid "Name can not be empty."
|
||||
msgstr "No podéis dejar el nombre en blanco."
|
||||
|
||||
#: pkg/products.go:251 pkg/invoices.go:807
|
||||
#: pkg/products.go:307 pkg/invoices.go:857
|
||||
msgid "Price can not be empty."
|
||||
msgstr "No podéis dejar el precio en blanco."
|
||||
|
||||
#: pkg/products.go:252 pkg/invoices.go:808
|
||||
#: pkg/products.go:308 pkg/invoices.go:858
|
||||
msgid "Price must be a number greater than zero."
|
||||
msgstr "El precio tiene que ser un número mayor a cero."
|
||||
|
||||
#: pkg/products.go:254 pkg/invoices.go:816
|
||||
#: pkg/products.go:310 pkg/invoices.go:866
|
||||
msgid "Selected tax is not valid."
|
||||
msgstr "Habéis escogido un impuesto que no es válido."
|
||||
|
||||
#: pkg/products.go:255 pkg/invoices.go:817
|
||||
#: pkg/products.go:311 pkg/invoices.go:867
|
||||
msgid "You can only select a tax of each class."
|
||||
msgstr "Solo podéis escoger un impuesto de cada clase."
|
||||
|
||||
|
@ -606,7 +633,7 @@ msgstr "La confirmación no corresponde con la contraseña."
|
|||
msgid "Selected language is not valid."
|
||||
msgstr "Habéis escogido un idioma que no es válido."
|
||||
|
||||
#: pkg/invoices.go:160 pkg/invoices.go:565
|
||||
#: pkg/invoices.go:160 pkg/invoices.go:580
|
||||
msgctxt "input"
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
@ -615,7 +642,7 @@ msgstr "Cliente"
|
|||
msgid "All customers"
|
||||
msgstr "Todos los clientes"
|
||||
|
||||
#: pkg/invoices.go:166 pkg/invoices.go:559
|
||||
#: pkg/invoices.go:166 pkg/invoices.go:574
|
||||
msgctxt "input"
|
||||
msgid "Invoice Status"
|
||||
msgstr "Estado de la factura"
|
||||
|
@ -639,213 +666,193 @@ msgctxt "input"
|
|||
msgid "To Date"
|
||||
msgstr "Hasta la fecha"
|
||||
|
||||
#: pkg/invoices.go:191
|
||||
msgctxt "input"
|
||||
msgid "Tags Condition"
|
||||
msgstr "Condición de las etiquetas"
|
||||
|
||||
#: pkg/invoices.go:195
|
||||
msgctxt "tag condition"
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: pkg/invoices.go:196
|
||||
msgid "Invoices must have all the specified labels."
|
||||
msgstr "Las facturas deben tener todas las etiquetas."
|
||||
|
||||
#: pkg/invoices.go:200
|
||||
msgctxt "tag condition"
|
||||
msgid "Any"
|
||||
msgstr "Cualquiera"
|
||||
|
||||
#: pkg/invoices.go:201
|
||||
msgid "Invoices must have at least one of the specified labels."
|
||||
msgstr "Las facturas debent tener como mínimo una de las etiquetas."
|
||||
|
||||
#: pkg/invoices.go:405
|
||||
#: pkg/invoices.go:423
|
||||
msgid "Select a customer to bill."
|
||||
msgstr "Escoged un cliente a facturar."
|
||||
|
||||
#: pkg/invoices.go:504
|
||||
#: pkg/invoices.go:524
|
||||
msgid "invoices.zip"
|
||||
msgstr "facturas.zip"
|
||||
|
||||
#: pkg/invoices.go:510 pkg/invoices.go:950
|
||||
#: pkg/invoices.go:530 pkg/invoices.go:1017
|
||||
msgid "Invalid action"
|
||||
msgstr "Acción inválida."
|
||||
|
||||
#: pkg/invoices.go:571
|
||||
#: pkg/invoices.go:586
|
||||
msgctxt "input"
|
||||
msgid "Invoice Date"
|
||||
msgstr "Fecha de factura"
|
||||
|
||||
#: pkg/invoices.go:577
|
||||
#: pkg/invoices.go:592
|
||||
msgctxt "input"
|
||||
msgid "Notes"
|
||||
msgstr "Notas"
|
||||
|
||||
#: pkg/invoices.go:587
|
||||
#: pkg/invoices.go:602
|
||||
msgctxt "input"
|
||||
msgid "Payment Method"
|
||||
msgstr "Método de pago"
|
||||
|
||||
#: pkg/invoices.go:624
|
||||
#: pkg/invoices.go:638
|
||||
msgid "Selected invoice status is not valid."
|
||||
msgstr "Habéis escogido un estado de factura que no es válido."
|
||||
|
||||
#: pkg/invoices.go:625
|
||||
#: pkg/invoices.go:639
|
||||
msgid "Selected customer is not valid."
|
||||
msgstr "Habéis escogido un cliente que no es válido."
|
||||
|
||||
#: pkg/invoices.go:626
|
||||
#: pkg/invoices.go:640
|
||||
msgid "Invoice date can not be empty."
|
||||
msgstr "No podéis dejar la fecha de la factura en blanco."
|
||||
|
||||
#: pkg/invoices.go:627
|
||||
#: pkg/invoices.go:641
|
||||
msgid "Invoice date must be a valid date."
|
||||
msgstr "La fecha de factura debe ser válida."
|
||||
|
||||
#: pkg/invoices.go:629
|
||||
#: pkg/invoices.go:643
|
||||
msgid "Selected payment method is not valid."
|
||||
msgstr "Habéis escogido un método de pago que no es válido."
|
||||
|
||||
#: pkg/invoices.go:722 pkg/invoices.go:727
|
||||
#: pkg/invoices.go:761 pkg/invoices.go:766
|
||||
msgctxt "input"
|
||||
msgid "Id"
|
||||
msgstr "Identificador"
|
||||
|
||||
#: pkg/invoices.go:750
|
||||
#: pkg/invoices.go:798
|
||||
msgctxt "input"
|
||||
msgid "Quantity"
|
||||
msgstr "Cantidad"
|
||||
|
||||
#: pkg/invoices.go:758
|
||||
#: pkg/invoices.go:806
|
||||
msgctxt "input"
|
||||
msgid "Discount (%)"
|
||||
msgstr "Descuento (%)"
|
||||
|
||||
#: pkg/invoices.go:805
|
||||
msgid "Product ID can not be empty."
|
||||
msgstr "No podéis dejar el identificador de producto en blanco."
|
||||
#: pkg/invoices.go:854
|
||||
msgid "Product ID must be a number greater than zero."
|
||||
msgstr "El ID de producto tiene que ser un número mayor a cero."
|
||||
|
||||
#: pkg/invoices.go:810
|
||||
#: pkg/invoices.go:860
|
||||
msgid "Quantity can not be empty."
|
||||
msgstr "No podéis dejar la cantidad en blanco."
|
||||
|
||||
#: pkg/invoices.go:811
|
||||
#: pkg/invoices.go:861
|
||||
msgid "Quantity must be a number greater than zero."
|
||||
msgstr "La cantidad tiene que ser un número mayor a cero."
|
||||
|
||||
#: pkg/invoices.go:813
|
||||
#: pkg/invoices.go:863
|
||||
msgid "Discount can not be empty."
|
||||
msgstr "No podéis dejar el descuento en blanco."
|
||||
|
||||
#: pkg/invoices.go:814
|
||||
#: pkg/invoices.go:864
|
||||
msgid "Discount must be a percentage between 0 and 100."
|
||||
msgstr "El descuento tiene que ser un porcentaje entre 0 y 100."
|
||||
|
||||
#: pkg/contacts.go:181
|
||||
#: pkg/contacts.go:169
|
||||
msgctxt "input"
|
||||
msgid "Business name"
|
||||
msgstr "Nombre y apellidos"
|
||||
|
||||
#: pkg/contacts.go:191
|
||||
#: pkg/contacts.go:179
|
||||
msgctxt "input"
|
||||
msgid "VAT number"
|
||||
msgstr "DNI / NIF"
|
||||
|
||||
#: pkg/contacts.go:197
|
||||
#: pkg/contacts.go:185
|
||||
msgctxt "input"
|
||||
msgid "Trade name"
|
||||
msgstr "Nombre comercial"
|
||||
|
||||
#: pkg/contacts.go:202
|
||||
#: pkg/contacts.go:190
|
||||
msgctxt "input"
|
||||
msgid "Phone"
|
||||
msgstr "Teléfono"
|
||||
|
||||
#: pkg/contacts.go:220
|
||||
#: pkg/contacts.go:208
|
||||
msgctxt "input"
|
||||
msgid "Web"
|
||||
msgstr "Web"
|
||||
|
||||
#: pkg/contacts.go:228
|
||||
#: pkg/contacts.go:216
|
||||
msgctxt "input"
|
||||
msgid "Address"
|
||||
msgstr "Dirección"
|
||||
|
||||
#: pkg/contacts.go:237
|
||||
#: pkg/contacts.go:225
|
||||
msgctxt "input"
|
||||
msgid "City"
|
||||
msgstr "Población"
|
||||
|
||||
#: pkg/contacts.go:243
|
||||
#: pkg/contacts.go:231
|
||||
msgctxt "input"
|
||||
msgid "Province"
|
||||
msgstr "Provincia"
|
||||
|
||||
#: pkg/contacts.go:249
|
||||
#: pkg/contacts.go:237
|
||||
msgctxt "input"
|
||||
msgid "Postal code"
|
||||
msgstr "Código postal"
|
||||
|
||||
#: pkg/contacts.go:258
|
||||
#: pkg/contacts.go:246
|
||||
msgctxt "input"
|
||||
msgid "Country"
|
||||
msgstr "País"
|
||||
|
||||
#: pkg/contacts.go:296
|
||||
#: pkg/contacts.go:284
|
||||
msgid "Selected country is not valid."
|
||||
msgstr "Habéis escogido un país que no es válido."
|
||||
|
||||
#: pkg/contacts.go:300
|
||||
#: pkg/contacts.go:288
|
||||
msgid "Business name can not be empty."
|
||||
msgstr "No podéis dejar el nombre y los apellidos en blanco."
|
||||
|
||||
#: pkg/contacts.go:301
|
||||
#: pkg/contacts.go:289
|
||||
msgid "Business name must have at least two letters."
|
||||
msgstr "El nombre y los apellidos deben contener como mínimo dos letras."
|
||||
|
||||
#: pkg/contacts.go:302
|
||||
#: pkg/contacts.go:290
|
||||
msgid "VAT number can not be empty."
|
||||
msgstr "No podéis dejar el DNI o NIF en blanco."
|
||||
|
||||
#: pkg/contacts.go:303
|
||||
#: pkg/contacts.go:291
|
||||
msgid "This value is not a valid VAT number."
|
||||
msgstr "Este valor no es un DNI o NIF válido."
|
||||
|
||||
#: pkg/contacts.go:305
|
||||
#: pkg/contacts.go:293
|
||||
msgid "Phone can not be empty."
|
||||
msgstr "No podéis dejar el teléfono en blanco."
|
||||
|
||||
#: pkg/contacts.go:306
|
||||
#: pkg/contacts.go:294
|
||||
msgid "This value is not a valid phone number."
|
||||
msgstr "Este valor no es un teléfono válido."
|
||||
|
||||
#: pkg/contacts.go:312
|
||||
#: pkg/contacts.go:300
|
||||
msgid "This value is not a valid web address. It should be like https://domain.com/."
|
||||
msgstr "Este valor no es una dirección web válida. Tiene que ser parecida a https://dominio.es/."
|
||||
|
||||
#: pkg/contacts.go:314
|
||||
#: pkg/contacts.go:302
|
||||
msgid "Address can not be empty."
|
||||
msgstr "No podéis dejar la dirección en blanco."
|
||||
|
||||
#: pkg/contacts.go:315
|
||||
#: pkg/contacts.go:303
|
||||
msgid "City can not be empty."
|
||||
msgstr "No podéis dejar la población en blanco."
|
||||
|
||||
#: pkg/contacts.go:316
|
||||
#: pkg/contacts.go:304
|
||||
msgid "Province can not be empty."
|
||||
msgstr "No podéis dejar la provincia en blanco."
|
||||
|
||||
#: pkg/contacts.go:317
|
||||
#: pkg/contacts.go:305
|
||||
msgid "Postal code can not be empty."
|
||||
msgstr "No podéis dejar el código postal en blanco."
|
||||
|
||||
#: pkg/contacts.go:318
|
||||
#: pkg/contacts.go:306
|
||||
msgid "This value is not a valid postal code."
|
||||
msgstr "Este valor no es un código postal válido válido."
|
||||
|
||||
#~ msgid "Product ID can not be empty."
|
||||
#~ msgstr "No podéis dejar el identificador de producto en blanco."
|
||||
|
||||
#~ msgctxt "input"
|
||||
#~ msgid "Number"
|
||||
#~ msgstr "Número"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -197,9 +197,12 @@ class Multiselect extends HTMLDivElement {
|
|||
if (!option) {
|
||||
return;
|
||||
}
|
||||
option.selected = selected;
|
||||
this.toSearch = this.search.value = '';
|
||||
this.rebuild();
|
||||
if (option.selected !== selected) {
|
||||
option.selected = selected;
|
||||
this.select.dispatchEvent(new Event('change', {bubbles: true}));
|
||||
this.toSearch = this.search.value = '';
|
||||
this.rebuild();
|
||||
}
|
||||
}
|
||||
|
||||
selectHighlighted() {
|
||||
|
@ -532,20 +535,132 @@ class ProductSearch extends HTMLDivElement {
|
|||
this.init();
|
||||
}
|
||||
}
|
||||
if (this.initialized) {
|
||||
this.onSearchKeydownHandler = (e) => {
|
||||
switch (e.code) {
|
||||
case "Enter":
|
||||
e.preventDefault();
|
||||
this.selectHighlighted();
|
||||
break;
|
||||
case "ArrowDown":
|
||||
if (e.altKey) {
|
||||
this.open();
|
||||
} else {
|
||||
e.preventDefault();
|
||||
this.highlightNext();
|
||||
}
|
||||
break;
|
||||
case "ArrowUp":
|
||||
if (e.altKey) {
|
||||
this.close();
|
||||
} else {
|
||||
e.preventDefault();
|
||||
this.highlightPrev();
|
||||
}
|
||||
break;
|
||||
case "Escape":
|
||||
this.close();
|
||||
break;
|
||||
}
|
||||
};
|
||||
this.input.addEventListener('keydown', this.onSearchKeydownHandler);
|
||||
this.onFocusOutHandler = (e) => {
|
||||
if (this.contains(e.target)) return;
|
||||
if (!e.target.isConnected) return;
|
||||
this.close();
|
||||
}
|
||||
window.addEventListener('focusin', this.onFocusOutHandler);
|
||||
document.addEventListener('click', this.onFocusOutHandler);
|
||||
}
|
||||
}
|
||||
|
||||
disconnectedCallback() {
|
||||
if (this.initialized) {
|
||||
document.removeEventListener('click', this.onFocusOutHandler);
|
||||
window.removeEventListener('focusin', this.onFocusOutHandler);
|
||||
this.onFocusOutHandler = null;
|
||||
this.input.removeEventListener('keydown', this.onSearchKeydownHandler);
|
||||
this.onSearchKeydownHandler = null;
|
||||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
this.initialized = true;
|
||||
|
||||
const list = document.createElement('ul');
|
||||
list.classList.add('options')
|
||||
list.setAttribute('role', 'listbox')
|
||||
this.append(list);
|
||||
|
||||
this.input.setAttribute('spellcheck', 'false');
|
||||
this.input.setAttribute('autocomplete', 'false');
|
||||
this.input.setAttribute('role', 'combobox');
|
||||
|
||||
this.options = document.createElement('ul');
|
||||
this.append(this.options);
|
||||
this.options.classList.add('options')
|
||||
this.options.setAttribute('role', 'listbox')
|
||||
this.options.dataset.hxOn = "htmx:afterSettle: this.parentNode.settled()";
|
||||
|
||||
const indicator = document.createElement('img');
|
||||
this.append(indicator);
|
||||
indicator.classList.add('htmx-indicator');
|
||||
indicator.src = '/static/bars.svg';
|
||||
this.append(indicator);
|
||||
|
||||
this.close();
|
||||
}
|
||||
|
||||
settled() {
|
||||
this.open();
|
||||
}
|
||||
|
||||
open() {
|
||||
this.options.removeAttribute('style');
|
||||
this.input.setAttribute('aria-expanded', 'true');
|
||||
const products = this.options.querySelectorAll('li[id]');
|
||||
if (products.length > 0) {
|
||||
this.highlight(this.currentHighlighted(), products.item(0));
|
||||
}
|
||||
}
|
||||
|
||||
close() {
|
||||
this.input.removeAttribute('aria-activedescendant');
|
||||
this.input.setAttribute('aria-expanded', 'false');
|
||||
this.options.style.display = 'none';
|
||||
}
|
||||
|
||||
highlightNext() {
|
||||
const current = this.currentHighlighted();
|
||||
if (!current) {
|
||||
return;
|
||||
}
|
||||
this.highlight(current, current.nextElementSibling);
|
||||
}
|
||||
|
||||
highlightPrev() {
|
||||
const current = this.currentHighlighted();
|
||||
if (!current) {
|
||||
return;
|
||||
}
|
||||
this.highlight(current, current.previousElementSibling);
|
||||
}
|
||||
|
||||
highlight(current, upcoming) {
|
||||
if (!upcoming) {
|
||||
return;
|
||||
}
|
||||
if (current) {
|
||||
current.classList.remove('highlight');
|
||||
}
|
||||
this.input.setAttribute('aria-activedescendant', upcoming.id);
|
||||
this.highlighted = upcoming.dataset.index;
|
||||
upcoming.classList.add('highlight');
|
||||
}
|
||||
|
||||
selectHighlighted() {
|
||||
const highlighted = this.currentHighlighted();
|
||||
if (highlighted) {
|
||||
highlighted.click();
|
||||
}
|
||||
}
|
||||
|
||||
currentHighlighted() {
|
||||
return document.getElementById(this.input.getAttribute('aria-activedescendant'));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -602,12 +717,10 @@ htmx.on(document, 'alpine:init', () => {
|
|||
htmx.on('htmx:error', (error) => {
|
||||
this.showError(error.detail.errorInfo.error);
|
||||
});
|
||||
},
|
||||
showError(message) {
|
||||
}, showError(message) {
|
||||
this.toasts.push(message);
|
||||
this.popUp();
|
||||
},
|
||||
popUp() {
|
||||
}, popUp() {
|
||||
if (this.toasts.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
@ -622,8 +735,7 @@ htmx.on(document, 'alpine:init', () => {
|
|||
this.toast = this.toasts[0];
|
||||
this.show = true;
|
||||
this.timeoutId = setTimeout(this.dismiss.bind(this), 4000);
|
||||
},
|
||||
dismiss() {
|
||||
}, dismiss() {
|
||||
if (!this.show) {
|
||||
// already dismissed
|
||||
return;
|
||||
|
@ -631,8 +743,7 @@ htmx.on(document, 'alpine:init', () => {
|
|||
this.show = false;
|
||||
clearTimeout(this.timeoutId);
|
||||
this.timeoutId = setTimeout(this.remove.bind(this), 350);
|
||||
},
|
||||
remove() {
|
||||
}, remove() {
|
||||
clearTimeout(this.timeoutId);
|
||||
this.toasts.splice(0, 1);
|
||||
this.toast = "";
|
||||
|
|
|
@ -2,10 +2,13 @@
|
|||
{{- /*gotype: []dev.tandem.ws/tandem/numerus/pkg.ProductEntry*/ -}}
|
||||
{{- range $product := . }}
|
||||
<li
|
||||
id="product-option-{{ .Slug }}"
|
||||
data-hx-get="{{ companyURI "/invoices/product-form" }}?slug={{ .Slug }}"
|
||||
data-hx-target="closest fieldset"
|
||||
data-hx-swap="outerHTML"
|
||||
data-hx-trigger="click"
|
||||
>{{ .Name }}</li>
|
||||
{{ else }}
|
||||
<li>{{( gettext "No products found." )}}</li>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
Loading…
Reference in New Issue