Add field to update default payment method

It is only shown if there is more than one payment method, otherwise
it seems useless as there are nothing to change.

This closes #72.
This commit is contained in:
jordi fita mas 2024-08-28 11:10:03 +02:00
parent 0b74c7a91c
commit e8a44e480e
5 changed files with 361 additions and 263 deletions

View File

@ -3,6 +3,7 @@ package pkg
import ( import (
"context" "context"
"errors" "errors"
"fmt"
"github.com/julienschmidt/httprouter" "github.com/julienschmidt/httprouter"
"html/template" "html/template"
"math" "math"
@ -82,6 +83,7 @@ type PaymentMethod struct {
Id int Id int
Name string Name string
Instructions string Instructions string
IsDefault bool
} }
type taxDetailsForm struct { type taxDetailsForm struct {
@ -700,6 +702,7 @@ func servePaymentMethods(w http.ResponseWriter, r *http.Request, _ httprouter.Pa
type PaymentMethodsPage struct { type PaymentMethodsPage struct {
PaymentMethods []*PaymentMethod PaymentMethods []*PaymentMethod
UpdateDefaultError error
Form *paymentMethodForm Form *paymentMethodForm
} }
@ -720,7 +723,16 @@ func (page *PaymentMethodsPage) MustRender(w http.ResponseWriter, r *http.Reques
} }
func mustCollectPaymentMethods(ctx context.Context, conn *Conn, company *Company) []*PaymentMethod { func mustCollectPaymentMethods(ctx context.Context, conn *Conn, company *Company) []*PaymentMethod {
rows, err := conn.Query(ctx, "select payment_method_id, name, instructions from payment_method where company_id = $1 order by name", company.Id) rows, err := conn.Query(ctx, `
select payment_method_id
, name
, instructions
, payment_method_id = default_payment_method_id
from payment_method
join company using (company_id)
where company_id = $1
order by name
`, company.Id)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -729,7 +741,7 @@ func mustCollectPaymentMethods(ctx context.Context, conn *Conn, company *Company
var methods []*PaymentMethod var methods []*PaymentMethod
for rows.Next() { for rows.Next() {
method := &PaymentMethod{} method := &PaymentMethod{}
err = rows.Scan(&method.Id, &method.Name, &method.Instructions) err = rows.Scan(&method.Id, &method.Name, &method.Instructions, &method.IsDefault)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -805,6 +817,39 @@ func HandleAddPaymentMethod(w http.ResponseWriter, r *http.Request, _ httprouter
htmxRedirect(w, r, companyURI(company, "/payment-methods")) htmxRedirect(w, r, companyURI(company, "/payment-methods"))
} }
func HandleUpdatePaymentMethod(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
if params[0].Value == "default" {
HandleUpdateDefaultPaymentMethod(w, r)
return
}
http.NotFound(w, r)
return
}
func HandleUpdateDefaultPaymentMethod(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if err := verifyCsrfTokenValid(r); err != nil {
http.Error(w, err.Error(), http.StatusForbidden)
return
}
locale := getLocale(r)
conn := getConn(r)
company := mustGetCompany(r)
defaultPaymentId, err := strconv.Atoi(r.FormValue("default_payment_id"))
if err != nil {
w.WriteHeader(http.StatusUnprocessableEntity)
page := newPaymentMethodsPage(r.Context(), conn, company, locale)
page.UpdateDefaultError = fmt.Errorf(gettext("Selected payment method is not valid.", locale))
page.MustRender(w, r)
return
}
conn.MustExec(r.Context(), "update company set default_payment_method_id = $1 where company_id = $2", defaultPaymentId, company.Id)
htmxRedirect(w, r, companyURI(company, "/payment-methods"))
}
func HandleDeletePaymentMethod(w http.ResponseWriter, r *http.Request, params httprouter.Params) { func HandleDeletePaymentMethod(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
paymentMethodId, err := strconv.Atoi(params[0].Value) paymentMethodId, err := strconv.Atoi(params[0].Value)
if err != nil { if err != nil {

View File

@ -20,6 +20,7 @@ func NewRouter(db *Db, demo bool) http.Handler {
companyRouter.DELETE("/taxes/:taxId", HandleDeleteCompanyTax) companyRouter.DELETE("/taxes/:taxId", HandleDeleteCompanyTax)
companyRouter.GET("/payment-methods", servePaymentMethods) companyRouter.GET("/payment-methods", servePaymentMethods)
companyRouter.POST("/payment-methods", HandleAddPaymentMethod) companyRouter.POST("/payment-methods", HandleAddPaymentMethod)
companyRouter.PUT("/payment-methods/:paymentMethodId", HandleUpdatePaymentMethod)
companyRouter.DELETE("/payment-methods/:paymentMethodId", HandleDeletePaymentMethod) companyRouter.DELETE("/payment-methods/:paymentMethodId", HandleDeletePaymentMethod)
companyRouter.GET("/contacts", IndexContacts) companyRouter.GET("/contacts", IndexContacts)
companyRouter.POST("/contacts", HandleAddContact) companyRouter.POST("/contacts", HandleAddContact)

268
po/ca.po
View File

@ -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: 2024-08-26 14:46+0200\n" "POT-Creation-Date: 2024-08-28 11:05+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"
@ -701,7 +701,7 @@ msgid "Class"
msgstr "Classe" msgstr "Classe"
#: web/template/company/taxes.gohtml:29 #: web/template/company/taxes.gohtml:29
#: web/template/company/payment_methods.gohtml:28 #: web/template/company/payment_methods.gohtml:29
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Nesteu segur?" msgstr "Nesteu segur?"
@ -736,24 +736,34 @@ msgstr "Configuració fiscal"
#: web/template/company/payment_methods.gohtml:23 #: web/template/company/payment_methods.gohtml:23
msgctxt "title" msgctxt "title"
msgid "Default"
msgstr "Per defecte"
#: web/template/company/payment_methods.gohtml:24
msgctxt "title"
msgid "Payment Method" msgid "Payment Method"
msgstr "Mètode de pagament" msgstr "Mètode de pagament"
#: web/template/company/payment_methods.gohtml:24 #: web/template/company/payment_methods.gohtml:25
msgctxt "title" msgctxt "title"
msgid "Instructions" msgid "Instructions"
msgstr "Instruccions" msgstr "Instruccions"
#: web/template/company/payment_methods.gohtml:48 #: web/template/company/payment_methods.gohtml:59
msgid "No payment methods added yet." msgid "No payment methods added yet."
msgstr "No hi ha cap mètode de pagament." msgstr "No hi ha cap mètode de pagament."
#: web/template/company/payment_methods.gohtml:55 #: web/template/company/payment_methods.gohtml:77
msgctxt "action"
msgid "Set"
msgstr "Estableix"
#: web/template/company/payment_methods.gohtml:87
msgctxt "title" msgctxt "title"
msgid "New Payment Method" msgid "New Payment Method"
msgstr "Nou mètode de pagament" msgstr "Nou mètode de pagament"
#: web/template/company/payment_methods.gohtml:64 #: web/template/company/payment_methods.gohtml:96
msgctxt "action" msgctxt "action"
msgid "Add new payment method" msgid "Add new payment method"
msgstr "Afegeix nou mètode de pagament" msgstr "Afegeix nou mètode de pagament"
@ -903,7 +913,7 @@ msgctxt "title"
msgid "VAT number" msgid "VAT number"
msgstr "DNI / NIF" msgstr "DNI / NIF"
#: pkg/login.go:38 pkg/company.go:122 pkg/profile.go:40 pkg/contacts.go:276 #: pkg/login.go:38 pkg/company.go:124 pkg/profile.go:40 pkg/contacts.go:274
msgctxt "input" msgctxt "input"
msgid "Email" msgid "Email"
msgstr "Correu-e" msgstr "Correu-e"
@ -913,11 +923,11 @@ msgctxt "input"
msgid "Password" msgid "Password"
msgstr "Contrasenya" msgstr "Contrasenya"
#: pkg/login.go:76 pkg/company.go:238 pkg/profile.go:89 #: pkg/login.go:76 pkg/company.go:240 pkg/profile.go:89
msgid "Email can not be empty." msgid "Email can not be empty."
msgstr "No podeu deixar el correu-e en blanc." msgstr "No podeu deixar el correu-e en blanc."
#: pkg/login.go:77 pkg/company.go:239 pkg/profile.go:90 pkg/contacts.go:420 #: pkg/login.go:77 pkg/company.go:241 pkg/profile.go:90 pkg/contacts.go:418
msgid "This value is not a valid email. It should be like name@domain.com." 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." msgstr "Aquest valor no és un correu-e vàlid. Hauria de ser similar a nom@domini.cat."
@ -929,196 +939,196 @@ msgstr "No podeu deixar la contrasenya en blanc."
msgid "Invalid user or password." msgid "Invalid user or password."
msgstr "Nom dusuari o contrasenya incorrectes." msgstr "Nom dusuari o contrasenya incorrectes."
#: pkg/products.go:172 pkg/products.go:276 pkg/quote.go:901 pkg/accounts.go:140 #: pkg/products.go:168 pkg/products.go:272 pkg/quote.go:899 pkg/accounts.go:140
#: pkg/invoices.go:1132 pkg/contacts.go:149 pkg/contacts.go:262 #: pkg/invoices.go:1130 pkg/contacts.go:147 pkg/contacts.go:260
msgctxt "input" msgctxt "input"
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
#: pkg/products.go:177 pkg/products.go:303 pkg/tags.go:37 pkg/quote.go:174 #: pkg/products.go:173 pkg/products.go:299 pkg/tags.go:37 pkg/quote.go:174
#: pkg/quote.go:708 pkg/payments.go:420 pkg/expenses.go:335 pkg/expenses.go:485 #: pkg/quote.go:706 pkg/payments.go:420 pkg/expenses.go:335 pkg/expenses.go:483
#: pkg/invoices.go:177 pkg/invoices.go:868 pkg/contacts.go:154 #: pkg/invoices.go:177 pkg/invoices.go:866 pkg/contacts.go:152
#: pkg/contacts.go:362 #: pkg/contacts.go:360
msgctxt "input" msgctxt "input"
msgid "Tags" msgid "Tags"
msgstr "Etiquetes" msgstr "Etiquetes"
#: pkg/products.go:181 pkg/quote.go:178 pkg/expenses.go:495 pkg/invoices.go:181 #: pkg/products.go:177 pkg/quote.go:178 pkg/expenses.go:493 pkg/invoices.go:181
#: pkg/contacts.go:158 #: pkg/contacts.go:156
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:499 pkg/invoices.go:185 #: pkg/products.go:181 pkg/quote.go:182 pkg/expenses.go:497 pkg/invoices.go:185
#: pkg/contacts.go:162 #: pkg/contacts.go:160
msgctxt "tag condition" msgctxt "tag condition"
msgid "All" msgid "All"
msgstr "Totes" msgstr "Totes"
#: pkg/products.go:186 pkg/expenses.go:500 pkg/invoices.go:186 #: pkg/products.go:182 pkg/expenses.go:498 pkg/invoices.go:186
#: pkg/contacts.go:163 #: pkg/contacts.go:161
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:504 pkg/invoices.go:190 #: pkg/products.go:186 pkg/quote.go:187 pkg/expenses.go:502 pkg/invoices.go:190
#: pkg/contacts.go:167 #: pkg/contacts.go:165
msgctxt "tag condition" msgctxt "tag condition"
msgid "Any" msgid "Any"
msgstr "Qualsevol" msgstr "Qualsevol"
#: pkg/products.go:191 pkg/expenses.go:505 pkg/invoices.go:191 #: pkg/products.go:187 pkg/expenses.go:503 pkg/invoices.go:191
#: pkg/contacts.go:168 #: pkg/contacts.go:166
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."
#: pkg/products.go:282 pkg/quote.go:915 pkg/payments.go:387 #: pkg/products.go:278 pkg/quote.go:913 pkg/payments.go:387
#: pkg/invoices.go:1146 #: pkg/invoices.go:1144
msgctxt "input" msgctxt "input"
msgid "Description" msgid "Description"
msgstr "Descripció" msgstr "Descripció"
#: pkg/products.go:287 pkg/quote.go:919 pkg/invoices.go:1150 #: pkg/products.go:283 pkg/quote.go:917 pkg/invoices.go:1148
msgctxt "input" msgctxt "input"
msgid "Price" msgid "Price"
msgstr "Preu" msgstr "Preu"
#: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:310 #: pkg/products.go:293 pkg/quote.go:946 pkg/expenses.go:310
#: pkg/invoices.go:1179 #: pkg/invoices.go:1177
msgctxt "input" msgctxt "input"
msgid "Taxes" msgid "Taxes"
msgstr "Imposts" msgstr "Imposts"
#: pkg/products.go:322 pkg/quote.go:997 pkg/profile.go:92 pkg/invoices.go:1228 #: pkg/products.go:318 pkg/quote.go:995 pkg/profile.go:92 pkg/invoices.go:1226
#: pkg/contacts.go:412 #: pkg/contacts.go:410
msgid "Name can not be empty." msgid "Name can not be empty."
msgstr "No podeu deixar el nom en blanc." msgstr "No podeu deixar el nom en blanc."
#: pkg/products.go:323 pkg/quote.go:998 pkg/invoices.go:1229 #: pkg/products.go:319 pkg/quote.go:996 pkg/invoices.go:1227
msgid "Price can not be empty." msgid "Price can not be empty."
msgstr "No podeu deixar el preu en blanc." msgstr "No podeu deixar el preu en blanc."
#: pkg/products.go:324 pkg/quote.go:999 pkg/invoices.go:1230 #: pkg/products.go:320 pkg/quote.go:997 pkg/invoices.go:1228
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:370 #: pkg/products.go:322 pkg/quote.go:1005 pkg/expenses.go:370
#: pkg/invoices.go:1238 #: pkg/invoices.go:1236
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:371 #: pkg/products.go:323 pkg/quote.go:1006 pkg/expenses.go:371
#: pkg/invoices.go:1239 #: pkg/invoices.go:1237
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."
#: pkg/company.go:108 #: pkg/company.go:110
msgctxt "input" msgctxt "input"
msgid "Trade name" msgid "Trade name"
msgstr "Nom comercial" msgstr "Nom comercial"
#: pkg/company.go:113 pkg/contacts.go:268 #: pkg/company.go:115 pkg/contacts.go:266
msgctxt "input" msgctxt "input"
msgid "Phone" msgid "Phone"
msgstr "Telèfon" msgstr "Telèfon"
#: pkg/company.go:131 pkg/contacts.go:284 #: pkg/company.go:133 pkg/contacts.go:282
msgctxt "input" msgctxt "input"
msgid "Web" msgid "Web"
msgstr "Web" msgstr "Web"
#: pkg/company.go:139 pkg/contacts.go:296 #: pkg/company.go:141 pkg/contacts.go:294
msgctxt "input" msgctxt "input"
msgid "Business name" msgid "Business name"
msgstr "Nom i cognoms" msgstr "Nom i cognoms"
#: pkg/company.go:149 pkg/contacts.go:306 #: pkg/company.go:151 pkg/contacts.go:304
msgctxt "input" msgctxt "input"
msgid "VAT number" msgid "VAT number"
msgstr "DNI / NIF" msgstr "DNI / NIF"
#: pkg/company.go:155 pkg/contacts.go:312 #: pkg/company.go:157 pkg/contacts.go:310
msgctxt "input" msgctxt "input"
msgid "Address" msgid "Address"
msgstr "Adreça" msgstr "Adreça"
#: pkg/company.go:164 pkg/contacts.go:321 #: pkg/company.go:166 pkg/contacts.go:319
msgctxt "input" msgctxt "input"
msgid "City" msgid "City"
msgstr "Població" msgstr "Població"
#: pkg/company.go:170 pkg/contacts.go:327 #: pkg/company.go:172 pkg/contacts.go:325
msgctxt "input" msgctxt "input"
msgid "Province" msgid "Province"
msgstr "Província" msgstr "Província"
#: pkg/company.go:176 pkg/contacts.go:333 #: pkg/company.go:178 pkg/contacts.go:331
msgctxt "input" msgctxt "input"
msgid "Postal code" msgid "Postal code"
msgstr "Codi postal" msgstr "Codi postal"
#: pkg/company.go:185 pkg/contacts.go:342 #: pkg/company.go:187 pkg/contacts.go:340
msgctxt "input" msgctxt "input"
msgid "Country" msgid "Country"
msgstr "País" msgstr "País"
#: pkg/company.go:195 #: pkg/company.go:197
msgctxt "input" msgctxt "input"
msgid "Currency" msgid "Currency"
msgstr "Moneda" msgstr "Moneda"
#: pkg/company.go:226 pkg/contacts.go:394 #: pkg/company.go:228 pkg/contacts.go:392
msgid "Selected country is not valid." msgid "Selected country is not valid."
msgstr "Heu seleccionat un país que no és vàlid." msgstr "Heu seleccionat un país que no és vàlid."
#: pkg/company.go:230 pkg/contacts.go:397 #: pkg/company.go:232 pkg/contacts.go:395
msgid "Business name can not be empty." msgid "Business name can not be empty."
msgstr "No podeu deixar el nom i els cognoms en blanc." msgstr "No podeu deixar el nom i els cognoms en blanc."
#: pkg/company.go:231 pkg/contacts.go:398 #: pkg/company.go:233 pkg/contacts.go:396
msgid "Business name must have at least two letters." msgid "Business name must have at least two letters."
msgstr "Nom i cognoms han de tenir com a mínim dues lletres." msgstr "Nom i cognoms han de tenir com a mínim dues lletres."
#: pkg/company.go:232 pkg/contacts.go:400 #: pkg/company.go:234 pkg/contacts.go:398
msgid "VAT number can not be empty." msgid "VAT number can not be empty."
msgstr "No podeu deixar el DNI o NIF en blanc." msgstr "No podeu deixar el DNI o NIF en blanc."
#: pkg/company.go:233 pkg/contacts.go:401 #: pkg/company.go:235 pkg/contacts.go:399
msgid "This value is not a valid VAT number." msgid "This value is not a valid VAT number."
msgstr "Aquest valor no és un DNI o NIF vàlid." msgstr "Aquest valor no és un DNI o NIF vàlid."
#: pkg/company.go:235 #: pkg/company.go:237
msgid "Phone can not be empty." msgid "Phone can not be empty."
msgstr "No podeu deixar el telèfon en blanc." msgstr "No podeu deixar el telèfon en blanc."
#: pkg/company.go:236 pkg/contacts.go:417 #: pkg/company.go:238 pkg/contacts.go:415
msgid "This value is not a valid phone number." msgid "This value is not a valid phone number."
msgstr "Aquest valor no és un telèfon vàlid." msgstr "Aquest valor no és un telèfon vàlid."
#: pkg/company.go:242 pkg/contacts.go:423 #: pkg/company.go:244 pkg/contacts.go:421
msgid "This value is not a valid web address. It should be like https://domain.com/." 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/." msgstr "Aquest valor no és una adreça web vàlida. Hauria de ser similar a https://domini.cat/."
#: pkg/company.go:244 pkg/contacts.go:403 #: pkg/company.go:246 pkg/contacts.go:401
msgid "Address can not be empty." msgid "Address can not be empty."
msgstr "No podeu deixar ladreça en blanc." msgstr "No podeu deixar ladreça en blanc."
#: pkg/company.go:245 pkg/contacts.go:404 #: pkg/company.go:247 pkg/contacts.go:402
msgid "City can not be empty." msgid "City can not be empty."
msgstr "No podeu deixar la població en blanc." msgstr "No podeu deixar la població en blanc."
#: pkg/company.go:246 pkg/contacts.go:405 #: pkg/company.go:248 pkg/contacts.go:403
msgid "Province can not be empty." msgid "Province can not be empty."
msgstr "No podeu deixar la província en blanc." msgstr "No podeu deixar la província en blanc."
#: pkg/company.go:247 pkg/contacts.go:407 #: pkg/company.go:249 pkg/contacts.go:405
msgid "Postal code can not be empty." msgid "Postal code can not be empty."
msgstr "No podeu deixar el codi postal en blanc." msgstr "No podeu deixar el codi postal en blanc."
#: pkg/company.go:248 pkg/contacts.go:408 #: pkg/company.go:250 pkg/contacts.go:406
msgid "This value is not a valid postal code." msgid "This value is not a valid postal code."
msgstr "Aquest valor no és un codi postal vàlid." msgstr "Aquest valor no és un codi postal vàlid."
#: pkg/company.go:250 #: pkg/company.go:252
msgid "Selected currency is not valid." msgid "Selected currency is not valid."
msgstr "Heu seleccionat una moneda que no és vàlida." msgstr "Heu seleccionat una moneda que no és vàlida."
@ -1163,60 +1173,64 @@ msgstr "No podeu deixar el format del número de pressupost en blanc."
msgid "Next quotation number must be a number greater than zero." msgid "Next quotation number must be a number greater than zero."
msgstr "El següent número de pressupost ha de ser un número major a zero." msgstr "El següent número de pressupost ha de ser un número major a zero."
#: pkg/company.go:614 #: pkg/company.go:612
msgctxt "input" msgctxt "input"
msgid "Tax name" msgid "Tax name"
msgstr "Nom impost" msgstr "Nom impost"
#: pkg/company.go:620 #: pkg/company.go:618
msgctxt "input" msgctxt "input"
msgid "Tax Class" msgid "Tax Class"
msgstr "Classe dimpost" msgstr "Classe dimpost"
#: pkg/company.go:623 #: pkg/company.go:621
msgid "Select a tax class" msgid "Select a tax class"
msgstr "Escolliu una classe dimpost" msgstr "Escolliu una classe dimpost"
#: pkg/company.go:627 #: pkg/company.go:625
msgctxt "input" msgctxt "input"
msgid "Rate (%)" msgid "Rate (%)"
msgstr "Percentatge" msgstr "Percentatge"
#: pkg/company.go:650 #: pkg/company.go:648
msgid "Tax name can not be empty." msgid "Tax name can not be empty."
msgstr "No podeu deixar el nom de limpost en blanc." msgstr "No podeu deixar el nom de limpost en blanc."
#: pkg/company.go:651 #: pkg/company.go:649
msgid "Selected tax class is not valid." msgid "Selected tax class is not valid."
msgstr "Heu seleccionat una classe dimpost que no és vàlida." msgstr "Heu seleccionat una classe dimpost que no és vàlida."
#: pkg/company.go:652 #: pkg/company.go:650
msgid "Tax rate can not be empty." msgid "Tax rate can not be empty."
msgstr "No podeu deixar percentatge en blanc." msgstr "No podeu deixar percentatge en blanc."
#: pkg/company.go:653 #: pkg/company.go:651
msgid "Tax rate must be an integer between -99 and 99." msgid "Tax rate must be an integer between -99 and 99."
msgstr "El percentatge ha de ser entre -99 i 99." msgstr "El percentatge ha de ser entre -99 i 99."
#: pkg/company.go:762 #: pkg/company.go:768
msgctxt "input" msgctxt "input"
msgid "Payment method name" msgid "Payment method name"
msgstr "Nom del mètode de pagament" msgstr "Nom del mètode de pagament"
#: pkg/company.go:768 #: pkg/company.go:774
msgctxt "input" msgctxt "input"
msgid "Instructions" msgid "Instructions"
msgstr "Instruccions" msgstr "Instruccions"
#: pkg/company.go:786 #: pkg/company.go:792
msgid "Payment method name can not be empty." msgid "Payment method name can not be empty."
msgstr "No podeu deixar el nom del mètode de pagament en blanc." msgstr "No podeu deixar el nom del mètode de pagament en blanc."
#: pkg/company.go:787 #: pkg/company.go:793
msgid "Payment instructions can not be empty." msgid "Payment instructions can not be empty."
msgstr "No podeu deixar les instruccions de pagament en blanc." 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:851 #: pkg/company.go:845 pkg/quote.go:755 pkg/invoices.go:928
msgid "Selected payment method is not valid."
msgstr "Heu seleccionat un mètode de pagament que no és vàlid."
#: pkg/quote.go:147 pkg/quote.go:684 pkg/invoices.go:150 pkg/invoices.go:849
msgctxt "input" msgctxt "input"
msgid "Customer" msgid "Customer"
msgstr "Client" msgstr "Client"
@ -1225,12 +1239,12 @@ msgstr "Client"
msgid "All customers" msgid "All customers"
msgstr "Tots els clients" msgstr "Tots els clients"
#: pkg/quote.go:153 pkg/quote.go:680 #: pkg/quote.go:153 pkg/quote.go:678
msgctxt "input" msgctxt "input"
msgid "Quotation Status" msgid "Quotation Status"
msgstr "Estat del pressupost" msgstr "Estat del pressupost"
#: pkg/quote.go:154 pkg/expenses.go:490 pkg/invoices.go:157 #: pkg/quote.go:154 pkg/expenses.go:488 pkg/invoices.go:157
msgid "All status" msgid "All status"
msgstr "Tots els estats" msgstr "Tots els estats"
@ -1239,12 +1253,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:475 pkg/invoices.go:167 #: pkg/quote.go:164 pkg/expenses.go:473 pkg/invoices.go:167
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:480 pkg/invoices.go:172 #: pkg/quote.go:169 pkg/expenses.go:478 pkg/invoices.go:172
msgctxt "input" msgctxt "input"
msgid "To Date" msgid "To Date"
msgstr "Fins la data" msgstr "Fins la data"
@ -1257,104 +1271,100 @@ msgstr "Els pressuposts han de tenir totes les etiquetes."
msgid "Quotations must have at least one of the specified labels." msgid "Quotations must have at least one of the specified labels."
msgstr "Els pressuposts han de tenir com a mínim una de les etiquetes." msgstr "Els pressuposts han de tenir com a mínim una de les etiquetes."
#: pkg/quote.go:618 #: pkg/quote.go:616
msgid "quotations.zip" msgid "quotations.zip"
msgstr "pressuposts.zip" msgstr "pressuposts.zip"
#: pkg/quote.go:632 #: pkg/quote.go:630
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:645 #: pkg/quote.go:632 pkg/quote.go:1172 pkg/quote.go:1180 pkg/expenses.go:641
#: pkg/expenses.go:675 pkg/invoices.go:683 pkg/invoices.go:1413 #: pkg/expenses.go:671 pkg/invoices.go:681 pkg/invoices.go:1409
#: pkg/invoices.go:1421 #: pkg/invoices.go:1417
msgid "Invalid action" msgid "Invalid action"
msgstr "Acció invàlida." msgstr "Acció invàlida."
#: pkg/quote.go:687 #: pkg/quote.go:685
msgid "Select a customer to quote." msgid "Select a customer to quote."
msgstr "Escolliu un client a pressupostar." msgstr "Escolliu un client a pressupostar."
#: pkg/quote.go:692 #: pkg/quote.go:690
msgctxt "input" msgctxt "input"
msgid "Quotation Date" msgid "Quotation Date"
msgstr "Data del pressupost" msgstr "Data del pressupost"
#: pkg/quote.go:698 #: pkg/quote.go:696
msgctxt "input" msgctxt "input"
msgid "Terms and conditions" msgid "Terms and conditions"
msgstr "Condicions dacceptació" msgstr "Condicions dacceptació"
#: pkg/quote.go:703 pkg/invoices.go:863 #: pkg/quote.go:701 pkg/invoices.go:861
msgctxt "input" msgctxt "input"
msgid "Notes" msgid "Notes"
msgstr "Notes" msgstr "Notes"
#: pkg/quote.go:712 pkg/invoices.go:873 #: pkg/quote.go:710 pkg/invoices.go:871
msgctxt "input" msgctxt "input"
msgid "Payment Method" msgid "Payment Method"
msgstr "Mètode de pagament" msgstr "Mètode de pagament"
#: pkg/quote.go:713 #: pkg/quote.go:711
msgid "Select a payment method." msgid "Select a payment method."
msgstr "Escolliu un mètode de pagament." msgstr "Escolliu un mètode de pagament."
#: pkg/quote.go:749 #: pkg/quote.go:747
msgid "Selected quotation status is not valid." msgid "Selected quotation status is not valid."
msgstr "Heu seleccionat un estat de pressupost que no és vàlid." msgstr "Heu seleccionat un estat de pressupost que no és vàlid."
#: pkg/quote.go:751 pkg/invoices.go:926 #: pkg/quote.go:749 pkg/invoices.go:924
msgid "Selected customer is not valid." msgid "Selected customer is not valid."
msgstr "Heu seleccionat un client que no és vàlid." msgstr "Heu seleccionat un client que no és vàlid."
#: pkg/quote.go:753 #: pkg/quote.go:751
msgid "Quotation date can not be empty." msgid "Quotation date can not be empty."
msgstr "No podeu deixar la data del pressupost en blanc." msgstr "No podeu deixar la data del pressupost en blanc."
#: pkg/quote.go:754 #: pkg/quote.go:752
msgid "Quotation date must be a valid date." msgid "Quotation date must be a valid date."
msgstr "La data del pressupost ha de ser vàlida." msgstr "La data del pressupost ha de ser vàlida."
#: pkg/quote.go:757 pkg/invoices.go:930 #: pkg/quote.go:889 pkg/quote.go:894 pkg/invoices.go:1120 pkg/invoices.go:1125
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:1122 pkg/invoices.go:1127
msgctxt "input" msgctxt "input"
msgid "Id" msgid "Id"
msgstr "Identificador" msgstr "Identificador"
#: pkg/quote.go:929 pkg/invoices.go:1160 #: pkg/quote.go:927 pkg/invoices.go:1158
msgctxt "input" msgctxt "input"
msgid "Quantity" msgid "Quantity"
msgstr "Quantitat" msgstr "Quantitat"
#: pkg/quote.go:938 pkg/invoices.go:1169 #: pkg/quote.go:936 pkg/invoices.go:1167
msgctxt "input" msgctxt "input"
msgid "Discount (%)" msgid "Discount (%)"
msgstr "Descompte (%)" msgstr "Descompte (%)"
#: pkg/quote.go:992 #: pkg/quote.go:990
msgid "Quotation product ID must be a number greater than zero." msgid "Quotation product ID must be a number greater than zero."
msgstr "LID del producte de pressupost ha de ser un número major a zero." msgstr "LID del producte de pressupost ha de ser un número major a zero."
#: pkg/quote.go:995 pkg/invoices.go:1226 #: pkg/quote.go:993 pkg/invoices.go:1224
msgid "Product ID must be a positive number or zero." msgid "Product ID must be a positive number or zero."
msgstr "LID del producte ha de ser un número positiu o zero." msgstr "LID del producte ha de ser un número positiu o zero."
#: pkg/quote.go:1001 pkg/invoices.go:1232 #: pkg/quote.go:999 pkg/invoices.go:1230
msgid "Quantity can not be empty." msgid "Quantity can not be empty."
msgstr "No podeu deixar la quantitat en blanc." msgstr "No podeu deixar la quantitat en blanc."
#: pkg/quote.go:1002 pkg/invoices.go:1233 #: pkg/quote.go:1000 pkg/invoices.go:1231
msgid "Quantity must be a number greater than zero." msgid "Quantity must be a number greater than zero."
msgstr "La quantitat ha de ser un número major a zero." msgstr "La quantitat ha de ser un número major a zero."
#: pkg/quote.go:1004 pkg/invoices.go:1235 #: pkg/quote.go:1002 pkg/invoices.go:1233
msgid "Discount can not be empty." msgid "Discount can not be empty."
msgstr "No podeu deixar el descompte en blanc." msgstr "No podeu deixar el descompte en blanc."
#: pkg/quote.go:1005 pkg/invoices.go:1236 #: pkg/quote.go:1003 pkg/invoices.go:1234
msgid "Discount must be a percentage between 0 and 100." msgid "Discount must be a percentage between 0 and 100."
msgstr "El descompte ha de ser un percentatge entre 0 i 100." msgstr "El descompte ha de ser un percentatge entre 0 i 100."
@ -1426,7 +1436,7 @@ msgctxt "input"
msgid "Amount" msgid "Amount"
msgstr "Import" msgstr "Import"
#: pkg/payments.go:415 pkg/expenses.go:330 pkg/invoices.go:879 #: pkg/payments.go:415 pkg/expenses.go:330 pkg/invoices.go:877
msgctxt "input" msgctxt "input"
msgid "File" msgid "File"
msgstr "Fitxer" msgstr "Fitxer"
@ -1463,7 +1473,7 @@ msgstr "No podeu deixar limport en blanc."
msgid "Amount must be a number greater than zero." msgid "Amount must be a number greater than zero."
msgstr "Limport ha de ser un número major a zero." msgstr "Limport ha de ser un número major a zero."
#: pkg/accounts.go:146 pkg/contacts.go:352 #: pkg/accounts.go:146 pkg/contacts.go:350
msgctxt "input" msgctxt "input"
msgid "IBAN" msgid "IBAN"
msgstr "IBAN" msgstr "IBAN"
@ -1553,7 +1563,7 @@ msgstr "Any anterior"
msgid "Select a contact." msgid "Select a contact."
msgstr "Escolliu un contacte." msgstr "Escolliu un contacte."
#: pkg/expenses.go:293 pkg/expenses.go:464 #: pkg/expenses.go:293 pkg/expenses.go:462
msgctxt "input" msgctxt "input"
msgid "Contact" msgid "Contact"
msgstr "Contacte" msgstr "Contacte"
@ -1563,7 +1573,7 @@ msgctxt "input"
msgid "Invoice number" msgid "Invoice number"
msgstr "Número de factura" msgstr "Número de factura"
#: pkg/expenses.go:304 pkg/invoices.go:857 #: pkg/expenses.go:304 pkg/invoices.go:855
msgctxt "input" msgctxt "input"
msgid "Invoice Date" msgid "Invoice Date"
msgstr "Data de factura" msgstr "Data de factura"
@ -1572,25 +1582,25 @@ msgstr "Data de factura"
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:369 pkg/invoices.go:928 #: pkg/expenses.go:369 pkg/invoices.go:926
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:465 #: pkg/expenses.go:463
msgid "All contacts" msgid "All contacts"
msgstr "Tots els contactes" msgstr "Tots els contactes"
#: pkg/expenses.go:470 pkg/invoices.go:162 #: pkg/expenses.go:468 pkg/invoices.go:162
msgctxt "input" msgctxt "input"
msgid "Invoice Number" msgid "Invoice Number"
msgstr "Número de factura" msgstr "Número de factura"
#: pkg/expenses.go:489 #: pkg/expenses.go:487
msgctxt "input" msgctxt "input"
msgid "Expense Status" msgid "Expense Status"
msgstr "Estat de la despesa" msgstr "Estat de la despesa"
#: pkg/expenses.go:673 #: pkg/expenses.go:669
msgid "expenses.ods" msgid "expenses.ods"
msgstr "despeses.ods" msgstr "despeses.ods"
@ -1603,55 +1613,55 @@ msgstr "Estat de la factura"
msgid "Select a customer to bill." msgid "Select a customer to bill."
msgstr "Escolliu un client a facturar." msgstr "Escolliu un client a facturar."
#: pkg/invoices.go:663 #: pkg/invoices.go:661
msgid "invoices.zip" msgid "invoices.zip"
msgstr "factures.zip" msgstr "factures.zip"
#: pkg/invoices.go:681 #: pkg/invoices.go:679
msgid "invoices.ods" msgid "invoices.ods"
msgstr "factures.ods" msgstr "factures.ods"
#: pkg/invoices.go:927 #: pkg/invoices.go:925
msgid "Invoice date can not be empty." msgid "Invoice date can not be empty."
msgstr "No podeu deixar la data de la factura en blanc." msgstr "No podeu deixar la data de la factura en blanc."
#: pkg/invoices.go:1059 #: pkg/invoices.go:1057
#, c-format #, c-format
msgid "Re: quotation #%s of %s" msgid "Re: quotation #%s of %s"
msgstr "Ref: pressupost núm. %s del %s" msgstr "Ref: pressupost núm. %s del %s"
#: pkg/invoices.go:1060 #: pkg/invoices.go:1058
msgctxt "to_char" msgctxt "to_char"
msgid "MM/DD/YYYY" msgid "MM/DD/YYYY"
msgstr "DD/MM/YYYY" msgstr "DD/MM/YYYY"
#: pkg/invoices.go:1223 #: pkg/invoices.go:1221
msgid "Invoice product ID must be a number greater than zero." msgid "Invoice product ID must be a number greater than zero."
msgstr "LID del producte de factura ha de ser un número major a zero." msgstr "LID del producte de factura ha de ser un número major a zero."
#: pkg/contacts.go:292 #: pkg/contacts.go:290
msgctxt "input" msgctxt "input"
msgid "Need to input tax details" msgid "Need to input tax details"
msgstr "Necessito poder facturar aquest contacte" msgstr "Necessito poder facturar aquest contacte"
#: pkg/contacts.go:357 #: pkg/contacts.go:355
msgctxt "bic" msgctxt "bic"
msgid "BIC" msgid "BIC"
msgstr "BIC" msgstr "BIC"
#: pkg/contacts.go:413 #: pkg/contacts.go:411
msgid "Name must have at least two letters." msgid "Name must have at least two letters."
msgstr "El nom ha de tenir com a mínim dues lletres." msgstr "El nom ha de tenir com a mínim dues lletres."
#: pkg/contacts.go:426 #: pkg/contacts.go:424
msgid "This values is not a valid IBAN." msgid "This values is not a valid IBAN."
msgstr "Aquest valor no és un IBAN vàlid." msgstr "Aquest valor no és un IBAN vàlid."
#: pkg/contacts.go:429 #: pkg/contacts.go:427
msgid "This values is not a valid BIC." msgid "This values is not a valid BIC."
msgstr "Aquest valor no és un BIC vàlid." msgstr "Aquest valor no és un BIC vàlid."
#: pkg/contacts.go:518 #: pkg/contacts.go:516
msgctxt "input" msgctxt "input"
msgid "Holded Excel file" msgid "Holded Excel file"
msgstr "Fitxer Excel del Holded" msgstr "Fitxer Excel del Holded"

268
po/es.po
View File

@ -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: 2024-08-26 14:46+0200\n" "POT-Creation-Date: 2024-08-28 11:05+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"
@ -701,7 +701,7 @@ msgid "Class"
msgstr "Clase" msgstr "Clase"
#: web/template/company/taxes.gohtml:29 #: web/template/company/taxes.gohtml:29
#: web/template/company/payment_methods.gohtml:28 #: web/template/company/payment_methods.gohtml:29
msgid "Are you sure?" msgid "Are you sure?"
msgstr "¿Estáis seguro?" msgstr "¿Estáis seguro?"
@ -736,24 +736,34 @@ msgstr "Configuración fiscal"
#: web/template/company/payment_methods.gohtml:23 #: web/template/company/payment_methods.gohtml:23
msgctxt "title" msgctxt "title"
msgid "Default"
msgstr "Por defecto"
#: web/template/company/payment_methods.gohtml:24
msgctxt "title"
msgid "Payment Method" msgid "Payment Method"
msgstr "Método de pago" msgstr "Método de pago"
#: web/template/company/payment_methods.gohtml:24 #: web/template/company/payment_methods.gohtml:25
msgctxt "title" msgctxt "title"
msgid "Instructions" msgid "Instructions"
msgstr "Instrucciones" msgstr "Instrucciones"
#: web/template/company/payment_methods.gohtml:48 #: web/template/company/payment_methods.gohtml:59
msgid "No payment methods added yet." msgid "No payment methods added yet."
msgstr "No hay métodos de pago." msgstr "No hay métodos de pago."
#: web/template/company/payment_methods.gohtml:55 #: web/template/company/payment_methods.gohtml:77
msgctxt "action"
msgid "Set"
msgstr "Establecer"
#: web/template/company/payment_methods.gohtml:87
msgctxt "title" msgctxt "title"
msgid "New Payment Method" msgid "New Payment Method"
msgstr "Nuevo método de pago" msgstr "Nuevo método de pago"
#: web/template/company/payment_methods.gohtml:64 #: web/template/company/payment_methods.gohtml:96
msgctxt "action" msgctxt "action"
msgid "Add new payment method" msgid "Add new payment method"
msgstr "Añadir nuevo método de pago" msgstr "Añadir nuevo método de pago"
@ -903,7 +913,7 @@ msgctxt "title"
msgid "VAT number" msgid "VAT number"
msgstr "DNI / NIF" msgstr "DNI / NIF"
#: pkg/login.go:38 pkg/company.go:122 pkg/profile.go:40 pkg/contacts.go:276 #: pkg/login.go:38 pkg/company.go:124 pkg/profile.go:40 pkg/contacts.go:274
msgctxt "input" msgctxt "input"
msgid "Email" msgid "Email"
msgstr "Correo-e" msgstr "Correo-e"
@ -913,11 +923,11 @@ msgctxt "input"
msgid "Password" msgid "Password"
msgstr "Contraseña" msgstr "Contraseña"
#: pkg/login.go:76 pkg/company.go:238 pkg/profile.go:89 #: pkg/login.go:76 pkg/company.go:240 pkg/profile.go:89
msgid "Email can not be empty." msgid "Email can not be empty."
msgstr "No podéis dejar el correo-e en blanco." msgstr "No podéis dejar el correo-e en blanco."
#: pkg/login.go:77 pkg/company.go:239 pkg/profile.go:90 pkg/contacts.go:420 #: pkg/login.go:77 pkg/company.go:241 pkg/profile.go:90 pkg/contacts.go:418
msgid "This value is not a valid email. It should be like name@domain.com." 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." msgstr "Este valor no es un correo-e válido. Tiene que ser parecido a nombre@dominio.es."
@ -929,196 +939,196 @@ msgstr "No podéis dejar la contraseña en blanco."
msgid "Invalid user or password." msgid "Invalid user or password."
msgstr "Nombre de usuario o contraseña inválido." msgstr "Nombre de usuario o contraseña inválido."
#: pkg/products.go:172 pkg/products.go:276 pkg/quote.go:901 pkg/accounts.go:140 #: pkg/products.go:168 pkg/products.go:272 pkg/quote.go:899 pkg/accounts.go:140
#: pkg/invoices.go:1132 pkg/contacts.go:149 pkg/contacts.go:262 #: pkg/invoices.go:1130 pkg/contacts.go:147 pkg/contacts.go:260
msgctxt "input" msgctxt "input"
msgid "Name" msgid "Name"
msgstr "Nombre" msgstr "Nombre"
#: pkg/products.go:177 pkg/products.go:303 pkg/tags.go:37 pkg/quote.go:174 #: pkg/products.go:173 pkg/products.go:299 pkg/tags.go:37 pkg/quote.go:174
#: pkg/quote.go:708 pkg/payments.go:420 pkg/expenses.go:335 pkg/expenses.go:485 #: pkg/quote.go:706 pkg/payments.go:420 pkg/expenses.go:335 pkg/expenses.go:483
#: pkg/invoices.go:177 pkg/invoices.go:868 pkg/contacts.go:154 #: pkg/invoices.go:177 pkg/invoices.go:866 pkg/contacts.go:152
#: pkg/contacts.go:362 #: pkg/contacts.go:360
msgctxt "input" msgctxt "input"
msgid "Tags" msgid "Tags"
msgstr "Etiquetes" msgstr "Etiquetes"
#: pkg/products.go:181 pkg/quote.go:178 pkg/expenses.go:495 pkg/invoices.go:181 #: pkg/products.go:177 pkg/quote.go:178 pkg/expenses.go:493 pkg/invoices.go:181
#: pkg/contacts.go:158 #: pkg/contacts.go:156
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:499 pkg/invoices.go:185 #: pkg/products.go:181 pkg/quote.go:182 pkg/expenses.go:497 pkg/invoices.go:185
#: pkg/contacts.go:162 #: pkg/contacts.go:160
msgctxt "tag condition" msgctxt "tag condition"
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#: pkg/products.go:186 pkg/expenses.go:500 pkg/invoices.go:186 #: pkg/products.go:182 pkg/expenses.go:498 pkg/invoices.go:186
#: pkg/contacts.go:163 #: pkg/contacts.go:161
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:504 pkg/invoices.go:190 #: pkg/products.go:186 pkg/quote.go:187 pkg/expenses.go:502 pkg/invoices.go:190
#: pkg/contacts.go:167 #: pkg/contacts.go:165
msgctxt "tag condition" msgctxt "tag condition"
msgid "Any" msgid "Any"
msgstr "Cualquiera" msgstr "Cualquiera"
#: pkg/products.go:191 pkg/expenses.go:505 pkg/invoices.go:191 #: pkg/products.go:187 pkg/expenses.go:503 pkg/invoices.go:191
#: pkg/contacts.go:168 #: pkg/contacts.go:166
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."
#: pkg/products.go:282 pkg/quote.go:915 pkg/payments.go:387 #: pkg/products.go:278 pkg/quote.go:913 pkg/payments.go:387
#: pkg/invoices.go:1146 #: pkg/invoices.go:1144
msgctxt "input" msgctxt "input"
msgid "Description" msgid "Description"
msgstr "Descripción" msgstr "Descripción"
#: pkg/products.go:287 pkg/quote.go:919 pkg/invoices.go:1150 #: pkg/products.go:283 pkg/quote.go:917 pkg/invoices.go:1148
msgctxt "input" msgctxt "input"
msgid "Price" msgid "Price"
msgstr "Precio" msgstr "Precio"
#: pkg/products.go:297 pkg/quote.go:948 pkg/expenses.go:310 #: pkg/products.go:293 pkg/quote.go:946 pkg/expenses.go:310
#: pkg/invoices.go:1179 #: pkg/invoices.go:1177
msgctxt "input" msgctxt "input"
msgid "Taxes" msgid "Taxes"
msgstr "Impuestos" msgstr "Impuestos"
#: pkg/products.go:322 pkg/quote.go:997 pkg/profile.go:92 pkg/invoices.go:1228 #: pkg/products.go:318 pkg/quote.go:995 pkg/profile.go:92 pkg/invoices.go:1226
#: pkg/contacts.go:412 #: pkg/contacts.go:410
msgid "Name can not be empty." msgid "Name can not be empty."
msgstr "No podéis dejar el nombre en blanco." msgstr "No podéis dejar el nombre en blanco."
#: pkg/products.go:323 pkg/quote.go:998 pkg/invoices.go:1229 #: pkg/products.go:319 pkg/quote.go:996 pkg/invoices.go:1227
msgid "Price can not be empty." msgid "Price can not be empty."
msgstr "No podéis dejar el precio en blanco." msgstr "No podéis dejar el precio en blanco."
#: pkg/products.go:324 pkg/quote.go:999 pkg/invoices.go:1230 #: pkg/products.go:320 pkg/quote.go:997 pkg/invoices.go:1228
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:370 #: pkg/products.go:322 pkg/quote.go:1005 pkg/expenses.go:370
#: pkg/invoices.go:1238 #: pkg/invoices.go:1236
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:371 #: pkg/products.go:323 pkg/quote.go:1006 pkg/expenses.go:371
#: pkg/invoices.go:1239 #: pkg/invoices.go:1237
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."
#: pkg/company.go:108 #: pkg/company.go:110
msgctxt "input" msgctxt "input"
msgid "Trade name" msgid "Trade name"
msgstr "Nombre comercial" msgstr "Nombre comercial"
#: pkg/company.go:113 pkg/contacts.go:268 #: pkg/company.go:115 pkg/contacts.go:266
msgctxt "input" msgctxt "input"
msgid "Phone" msgid "Phone"
msgstr "Teléfono" msgstr "Teléfono"
#: pkg/company.go:131 pkg/contacts.go:284 #: pkg/company.go:133 pkg/contacts.go:282
msgctxt "input" msgctxt "input"
msgid "Web" msgid "Web"
msgstr "Web" msgstr "Web"
#: pkg/company.go:139 pkg/contacts.go:296 #: pkg/company.go:141 pkg/contacts.go:294
msgctxt "input" msgctxt "input"
msgid "Business name" msgid "Business name"
msgstr "Nombre y apellidos" msgstr "Nombre y apellidos"
#: pkg/company.go:149 pkg/contacts.go:306 #: pkg/company.go:151 pkg/contacts.go:304
msgctxt "input" msgctxt "input"
msgid "VAT number" msgid "VAT number"
msgstr "DNI / NIF" msgstr "DNI / NIF"
#: pkg/company.go:155 pkg/contacts.go:312 #: pkg/company.go:157 pkg/contacts.go:310
msgctxt "input" msgctxt "input"
msgid "Address" msgid "Address"
msgstr "Dirección" msgstr "Dirección"
#: pkg/company.go:164 pkg/contacts.go:321 #: pkg/company.go:166 pkg/contacts.go:319
msgctxt "input" msgctxt "input"
msgid "City" msgid "City"
msgstr "Población" msgstr "Población"
#: pkg/company.go:170 pkg/contacts.go:327 #: pkg/company.go:172 pkg/contacts.go:325
msgctxt "input" msgctxt "input"
msgid "Province" msgid "Province"
msgstr "Provincia" msgstr "Provincia"
#: pkg/company.go:176 pkg/contacts.go:333 #: pkg/company.go:178 pkg/contacts.go:331
msgctxt "input" msgctxt "input"
msgid "Postal code" msgid "Postal code"
msgstr "Código postal" msgstr "Código postal"
#: pkg/company.go:185 pkg/contacts.go:342 #: pkg/company.go:187 pkg/contacts.go:340
msgctxt "input" msgctxt "input"
msgid "Country" msgid "Country"
msgstr "País" msgstr "País"
#: pkg/company.go:195 #: pkg/company.go:197
msgctxt "input" msgctxt "input"
msgid "Currency" msgid "Currency"
msgstr "Moneda" msgstr "Moneda"
#: pkg/company.go:226 pkg/contacts.go:394 #: pkg/company.go:228 pkg/contacts.go:392
msgid "Selected country is not valid." msgid "Selected country is not valid."
msgstr "Habéis escogido un país que no es válido." msgstr "Habéis escogido un país que no es válido."
#: pkg/company.go:230 pkg/contacts.go:397 #: pkg/company.go:232 pkg/contacts.go:395
msgid "Business name can not be empty." msgid "Business name can not be empty."
msgstr "No podéis dejar el nombre y los apellidos en blanco." msgstr "No podéis dejar el nombre y los apellidos en blanco."
#: pkg/company.go:231 pkg/contacts.go:398 #: pkg/company.go:233 pkg/contacts.go:396
msgid "Business name must have at least two letters." msgid "Business name must have at least two letters."
msgstr "El nombre y los apellidos deben contener como mínimo dos letras." msgstr "El nombre y los apellidos deben contener como mínimo dos letras."
#: pkg/company.go:232 pkg/contacts.go:400 #: pkg/company.go:234 pkg/contacts.go:398
msgid "VAT number can not be empty." msgid "VAT number can not be empty."
msgstr "No podéis dejar el DNI o NIF en blanco." msgstr "No podéis dejar el DNI o NIF en blanco."
#: pkg/company.go:233 pkg/contacts.go:401 #: pkg/company.go:235 pkg/contacts.go:399
msgid "This value is not a valid VAT number." msgid "This value is not a valid VAT number."
msgstr "Este valor no es un DNI o NIF válido." msgstr "Este valor no es un DNI o NIF válido."
#: pkg/company.go:235 #: pkg/company.go:237
msgid "Phone can not be empty." msgid "Phone can not be empty."
msgstr "No podéis dejar el teléfono en blanco." msgstr "No podéis dejar el teléfono en blanco."
#: pkg/company.go:236 pkg/contacts.go:417 #: pkg/company.go:238 pkg/contacts.go:415
msgid "This value is not a valid phone number." msgid "This value is not a valid phone number."
msgstr "Este valor no es un teléfono válido." msgstr "Este valor no es un teléfono válido."
#: pkg/company.go:242 pkg/contacts.go:423 #: pkg/company.go:244 pkg/contacts.go:421
msgid "This value is not a valid web address. It should be like https://domain.com/." 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/." msgstr "Este valor no es una dirección web válida. Tiene que ser parecida a https://dominio.es/."
#: pkg/company.go:244 pkg/contacts.go:403 #: pkg/company.go:246 pkg/contacts.go:401
msgid "Address can not be empty." msgid "Address can not be empty."
msgstr "No podéis dejar la dirección en blanco." msgstr "No podéis dejar la dirección en blanco."
#: pkg/company.go:245 pkg/contacts.go:404 #: pkg/company.go:247 pkg/contacts.go:402
msgid "City can not be empty." msgid "City can not be empty."
msgstr "No podéis dejar la población en blanco." msgstr "No podéis dejar la población en blanco."
#: pkg/company.go:246 pkg/contacts.go:405 #: pkg/company.go:248 pkg/contacts.go:403
msgid "Province can not be empty." msgid "Province can not be empty."
msgstr "No podéis dejar la provincia en blanco." msgstr "No podéis dejar la provincia en blanco."
#: pkg/company.go:247 pkg/contacts.go:407 #: pkg/company.go:249 pkg/contacts.go:405
msgid "Postal code can not be empty." msgid "Postal code can not be empty."
msgstr "No podéis dejar el código postal en blanco." msgstr "No podéis dejar el código postal en blanco."
#: pkg/company.go:248 pkg/contacts.go:408 #: pkg/company.go:250 pkg/contacts.go:406
msgid "This value is not a valid postal code." msgid "This value is not a valid postal code."
msgstr "Este valor no es un código postal válido válido." msgstr "Este valor no es un código postal válido válido."
#: pkg/company.go:250 #: pkg/company.go:252
msgid "Selected currency is not valid." msgid "Selected currency is not valid."
msgstr "Habéis escogido una moneda que no es válida." msgstr "Habéis escogido una moneda que no es válida."
@ -1163,60 +1173,64 @@ msgstr "No podéis dejar el formato del número de presupuesto en blanco."
msgid "Next quotation number must be a number greater than zero." msgid "Next quotation number must be a number greater than zero."
msgstr "El siguiente número de presupuesto tiene que ser un número mayor a cero." msgstr "El siguiente número de presupuesto tiene que ser un número mayor a cero."
#: pkg/company.go:614 #: pkg/company.go:612
msgctxt "input" msgctxt "input"
msgid "Tax name" msgid "Tax name"
msgstr "Nombre impuesto" msgstr "Nombre impuesto"
#: pkg/company.go:620 #: pkg/company.go:618
msgctxt "input" msgctxt "input"
msgid "Tax Class" msgid "Tax Class"
msgstr "Clase de impuesto" msgstr "Clase de impuesto"
#: pkg/company.go:623 #: pkg/company.go:621
msgid "Select a tax class" msgid "Select a tax class"
msgstr "Escoged una clase de impuesto" msgstr "Escoged una clase de impuesto"
#: pkg/company.go:627 #: pkg/company.go:625
msgctxt "input" msgctxt "input"
msgid "Rate (%)" msgid "Rate (%)"
msgstr "Porcentaje" msgstr "Porcentaje"
#: pkg/company.go:650 #: pkg/company.go:648
msgid "Tax name can not be empty." msgid "Tax name can not be empty."
msgstr "No podéis dejar el nombre del impuesto en blanco." msgstr "No podéis dejar el nombre del impuesto en blanco."
#: pkg/company.go:651 #: pkg/company.go:649
msgid "Selected tax class is not valid." msgid "Selected tax class is not valid."
msgstr "Habéis escogido una clase impuesto que no es válida." msgstr "Habéis escogido una clase impuesto que no es válida."
#: pkg/company.go:652 #: pkg/company.go:650
msgid "Tax rate can not be empty." msgid "Tax rate can not be empty."
msgstr "No podéis dejar el porcentaje en blanco." msgstr "No podéis dejar el porcentaje en blanco."
#: pkg/company.go:653 #: pkg/company.go:651
msgid "Tax rate must be an integer between -99 and 99." msgid "Tax rate must be an integer between -99 and 99."
msgstr "El porcentaje tiene que estar entre -99 y 99." msgstr "El porcentaje tiene que estar entre -99 y 99."
#: pkg/company.go:762 #: pkg/company.go:768
msgctxt "input" msgctxt "input"
msgid "Payment method name" msgid "Payment method name"
msgstr "Nombre del método de pago" msgstr "Nombre del método de pago"
#: pkg/company.go:768 #: pkg/company.go:774
msgctxt "input" msgctxt "input"
msgid "Instructions" msgid "Instructions"
msgstr "Instrucciones" msgstr "Instrucciones"
#: pkg/company.go:786 #: pkg/company.go:792
msgid "Payment method name can not be empty." msgid "Payment method name can not be empty."
msgstr "No podéis dejar el nombre del método de pago en blanco." msgstr "No podéis dejar el nombre del método de pago en blanco."
#: pkg/company.go:787 #: pkg/company.go:793
msgid "Payment instructions can not be empty." msgid "Payment instructions can not be empty."
msgstr "No podéis dejar las instrucciones de pago en blanco." 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:851 #: pkg/company.go:845 pkg/quote.go:755 pkg/invoices.go:928
msgid "Selected payment method is not valid."
msgstr "Habéis escogido un método de pago que no es válido."
#: pkg/quote.go:147 pkg/quote.go:684 pkg/invoices.go:150 pkg/invoices.go:849
msgctxt "input" msgctxt "input"
msgid "Customer" msgid "Customer"
msgstr "Cliente" msgstr "Cliente"
@ -1225,12 +1239,12 @@ msgstr "Cliente"
msgid "All customers" msgid "All customers"
msgstr "Todos los clientes" msgstr "Todos los clientes"
#: pkg/quote.go:153 pkg/quote.go:680 #: pkg/quote.go:153 pkg/quote.go:678
msgctxt "input" msgctxt "input"
msgid "Quotation Status" msgid "Quotation Status"
msgstr "Estado del presupuesto" msgstr "Estado del presupuesto"
#: pkg/quote.go:154 pkg/expenses.go:490 pkg/invoices.go:157 #: pkg/quote.go:154 pkg/expenses.go:488 pkg/invoices.go:157
msgid "All status" msgid "All status"
msgstr "Todos los estados" msgstr "Todos los estados"
@ -1239,12 +1253,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:475 pkg/invoices.go:167 #: pkg/quote.go:164 pkg/expenses.go:473 pkg/invoices.go:167
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:480 pkg/invoices.go:172 #: pkg/quote.go:169 pkg/expenses.go:478 pkg/invoices.go:172
msgctxt "input" msgctxt "input"
msgid "To Date" msgid "To Date"
msgstr "Hasta la fecha" msgstr "Hasta la fecha"
@ -1257,104 +1271,100 @@ msgstr "Los presupuestos deben tener todas las etiquetas."
msgid "Quotations must have at least one of the specified labels." msgid "Quotations must have at least one of the specified labels."
msgstr "Los presupuestos deben tener como mínimo una de las etiquetas." msgstr "Los presupuestos deben tener como mínimo una de las etiquetas."
#: pkg/quote.go:618 #: pkg/quote.go:616
msgid "quotations.zip" msgid "quotations.zip"
msgstr "presupuestos.zip" msgstr "presupuestos.zip"
#: pkg/quote.go:632 #: pkg/quote.go:630
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:645 #: pkg/quote.go:632 pkg/quote.go:1172 pkg/quote.go:1180 pkg/expenses.go:641
#: pkg/expenses.go:675 pkg/invoices.go:683 pkg/invoices.go:1413 #: pkg/expenses.go:671 pkg/invoices.go:681 pkg/invoices.go:1409
#: pkg/invoices.go:1421 #: pkg/invoices.go:1417
msgid "Invalid action" msgid "Invalid action"
msgstr "Acción inválida." msgstr "Acción inválida."
#: pkg/quote.go:687 #: pkg/quote.go:685
msgid "Select a customer to quote." msgid "Select a customer to quote."
msgstr "Escoged un cliente a presupuestar." msgstr "Escoged un cliente a presupuestar."
#: pkg/quote.go:692 #: pkg/quote.go:690
msgctxt "input" msgctxt "input"
msgid "Quotation Date" msgid "Quotation Date"
msgstr "Fecha del presupuesto" msgstr "Fecha del presupuesto"
#: pkg/quote.go:698 #: pkg/quote.go:696
msgctxt "input" msgctxt "input"
msgid "Terms and conditions" msgid "Terms and conditions"
msgstr "Condiciones de aceptación" msgstr "Condiciones de aceptación"
#: pkg/quote.go:703 pkg/invoices.go:863 #: pkg/quote.go:701 pkg/invoices.go:861
msgctxt "input" msgctxt "input"
msgid "Notes" msgid "Notes"
msgstr "Notas" msgstr "Notas"
#: pkg/quote.go:712 pkg/invoices.go:873 #: pkg/quote.go:710 pkg/invoices.go:871
msgctxt "input" msgctxt "input"
msgid "Payment Method" msgid "Payment Method"
msgstr "Método de pago" msgstr "Método de pago"
#: pkg/quote.go:713 #: pkg/quote.go:711
msgid "Select a payment method." msgid "Select a payment method."
msgstr "Escoged un método e pago." msgstr "Escoged un método e pago."
#: pkg/quote.go:749 #: pkg/quote.go:747
msgid "Selected quotation status is not valid." msgid "Selected quotation status is not valid."
msgstr "Habéis escogido un estado de presupuesto que no es válido." msgstr "Habéis escogido un estado de presupuesto que no es válido."
#: pkg/quote.go:751 pkg/invoices.go:926 #: pkg/quote.go:749 pkg/invoices.go:924
msgid "Selected customer is not valid." msgid "Selected customer is not valid."
msgstr "Habéis escogido un cliente que no es válido." msgstr "Habéis escogido un cliente que no es válido."
#: pkg/quote.go:753 #: pkg/quote.go:751
msgid "Quotation date can not be empty." msgid "Quotation date can not be empty."
msgstr "No podéis dejar la fecha del presupuesto en blanco." msgstr "No podéis dejar la fecha del presupuesto en blanco."
#: pkg/quote.go:754 #: pkg/quote.go:752
msgid "Quotation date must be a valid date." msgid "Quotation date must be a valid date."
msgstr "La fecha de presupuesto debe ser válida." msgstr "La fecha de presupuesto debe ser válida."
#: pkg/quote.go:757 pkg/invoices.go:930 #: pkg/quote.go:889 pkg/quote.go:894 pkg/invoices.go:1120 pkg/invoices.go:1125
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:1122 pkg/invoices.go:1127
msgctxt "input" msgctxt "input"
msgid "Id" msgid "Id"
msgstr "Identificador" msgstr "Identificador"
#: pkg/quote.go:929 pkg/invoices.go:1160 #: pkg/quote.go:927 pkg/invoices.go:1158
msgctxt "input" msgctxt "input"
msgid "Quantity" msgid "Quantity"
msgstr "Cantidad" msgstr "Cantidad"
#: pkg/quote.go:938 pkg/invoices.go:1169 #: pkg/quote.go:936 pkg/invoices.go:1167
msgctxt "input" msgctxt "input"
msgid "Discount (%)" msgid "Discount (%)"
msgstr "Descuento (%)" msgstr "Descuento (%)"
#: pkg/quote.go:992 #: pkg/quote.go:990
msgid "Quotation product ID must be a number greater than zero." 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." msgstr "El ID de producto de presupuesto tiene que ser un número mayor a cero."
#: pkg/quote.go:995 pkg/invoices.go:1226 #: pkg/quote.go:993 pkg/invoices.go:1224
msgid "Product ID must be a positive number or zero." msgid "Product ID must be a positive number or zero."
msgstr "El ID de producto tiene que ser un número positivo o cero." msgstr "El ID de producto tiene que ser un número positivo o cero."
#: pkg/quote.go:1001 pkg/invoices.go:1232 #: pkg/quote.go:999 pkg/invoices.go:1230
msgid "Quantity can not be empty." msgid "Quantity can not be empty."
msgstr "No podéis dejar la cantidad en blanco." msgstr "No podéis dejar la cantidad en blanco."
#: pkg/quote.go:1002 pkg/invoices.go:1233 #: pkg/quote.go:1000 pkg/invoices.go:1231
msgid "Quantity must be a number greater than zero." msgid "Quantity must be a number greater than zero."
msgstr "La cantidad tiene que ser un número mayor a cero." msgstr "La cantidad tiene que ser un número mayor a cero."
#: pkg/quote.go:1004 pkg/invoices.go:1235 #: pkg/quote.go:1002 pkg/invoices.go:1233
msgid "Discount can not be empty." msgid "Discount can not be empty."
msgstr "No podéis dejar el descuento en blanco." msgstr "No podéis dejar el descuento en blanco."
#: pkg/quote.go:1005 pkg/invoices.go:1236 #: pkg/quote.go:1003 pkg/invoices.go:1234
msgid "Discount must be a percentage between 0 and 100." msgid "Discount must be a percentage between 0 and 100."
msgstr "El descuento tiene que ser un porcentaje entre 0 y 100." msgstr "El descuento tiene que ser un porcentaje entre 0 y 100."
@ -1426,7 +1436,7 @@ msgctxt "input"
msgid "Amount" msgid "Amount"
msgstr "Importe" msgstr "Importe"
#: pkg/payments.go:415 pkg/expenses.go:330 pkg/invoices.go:879 #: pkg/payments.go:415 pkg/expenses.go:330 pkg/invoices.go:877
msgctxt "input" msgctxt "input"
msgid "File" msgid "File"
msgstr "Archivo" msgstr "Archivo"
@ -1463,7 +1473,7 @@ msgstr "No podéis dejar el importe en blanco."
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/accounts.go:146 pkg/contacts.go:352 #: pkg/accounts.go:146 pkg/contacts.go:350
msgctxt "input" msgctxt "input"
msgid "IBAN" msgid "IBAN"
msgstr "IBAN" msgstr "IBAN"
@ -1553,7 +1563,7 @@ msgstr "Año anterior"
msgid "Select a contact." msgid "Select a contact."
msgstr "Escoged un contacto" msgstr "Escoged un contacto"
#: pkg/expenses.go:293 pkg/expenses.go:464 #: pkg/expenses.go:293 pkg/expenses.go:462
msgctxt "input" msgctxt "input"
msgid "Contact" msgid "Contact"
msgstr "Contacto" msgstr "Contacto"
@ -1563,7 +1573,7 @@ msgctxt "input"
msgid "Invoice number" msgid "Invoice number"
msgstr "Número de factura" msgstr "Número de factura"
#: pkg/expenses.go:304 pkg/invoices.go:857 #: pkg/expenses.go:304 pkg/invoices.go:855
msgctxt "input" msgctxt "input"
msgid "Invoice Date" msgid "Invoice Date"
msgstr "Fecha de factura" msgstr "Fecha de factura"
@ -1572,25 +1582,25 @@ msgstr "Fecha de factura"
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:369 pkg/invoices.go:928 #: pkg/expenses.go:369 pkg/invoices.go:926
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:465 #: pkg/expenses.go:463
msgid "All contacts" msgid "All contacts"
msgstr "Todos los contactos" msgstr "Todos los contactos"
#: pkg/expenses.go:470 pkg/invoices.go:162 #: pkg/expenses.go:468 pkg/invoices.go:162
msgctxt "input" msgctxt "input"
msgid "Invoice Number" msgid "Invoice Number"
msgstr "Número de factura" msgstr "Número de factura"
#: pkg/expenses.go:489 #: pkg/expenses.go:487
msgctxt "input" msgctxt "input"
msgid "Expense Status" msgid "Expense Status"
msgstr "Estado del gasto" msgstr "Estado del gasto"
#: pkg/expenses.go:673 #: pkg/expenses.go:669
msgid "expenses.ods" msgid "expenses.ods"
msgstr "gastos.ods" msgstr "gastos.ods"
@ -1603,55 +1613,55 @@ msgstr "Estado de la factura"
msgid "Select a customer to bill." msgid "Select a customer to bill."
msgstr "Escoged un cliente a facturar." msgstr "Escoged un cliente a facturar."
#: pkg/invoices.go:663 #: pkg/invoices.go:661
msgid "invoices.zip" msgid "invoices.zip"
msgstr "facturas.zip" msgstr "facturas.zip"
#: pkg/invoices.go:681 #: pkg/invoices.go:679
msgid "invoices.ods" msgid "invoices.ods"
msgstr "facturas.ods" msgstr "facturas.ods"
#: pkg/invoices.go:927 #: pkg/invoices.go:925
msgid "Invoice date can not be empty." msgid "Invoice date can not be empty."
msgstr "No podéis dejar la fecha de la factura en blanco." msgstr "No podéis dejar la fecha de la factura en blanco."
#: pkg/invoices.go:1059 #: pkg/invoices.go:1057
#, c-format #, c-format
msgid "Re: quotation #%s of %s" msgid "Re: quotation #%s of %s"
msgstr "Ref: presupuesto n.º %s del %s" msgstr "Ref: presupuesto n.º %s del %s"
#: pkg/invoices.go:1060 #: pkg/invoices.go:1058
msgctxt "to_char" msgctxt "to_char"
msgid "MM/DD/YYYY" msgid "MM/DD/YYYY"
msgstr "DD/MM/YYYY" msgstr "DD/MM/YYYY"
#: pkg/invoices.go:1223 #: pkg/invoices.go:1221
msgid "Invoice product ID must be a number greater than zero." 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." msgstr "El ID de producto de factura tiene que ser un número mayor a cero."
#: pkg/contacts.go:292 #: pkg/contacts.go:290
msgctxt "input" msgctxt "input"
msgid "Need to input tax details" msgid "Need to input tax details"
msgstr "Necesito facturar este contacto" msgstr "Necesito facturar este contacto"
#: pkg/contacts.go:357 #: pkg/contacts.go:355
msgctxt "bic" msgctxt "bic"
msgid "BIC" msgid "BIC"
msgstr "BIC" msgstr "BIC"
#: pkg/contacts.go:413 #: pkg/contacts.go:411
msgid "Name must have at least two letters." msgid "Name must have at least two letters."
msgstr "El nombre debe contener como mínimo dos letras." msgstr "El nombre debe contener como mínimo dos letras."
#: pkg/contacts.go:426 #: pkg/contacts.go:424
msgid "This values is not a valid IBAN." msgid "This values is not a valid IBAN."
msgstr "Este valor no es un IBAN válido." msgstr "Este valor no es un IBAN válido."
#: pkg/contacts.go:429 #: pkg/contacts.go:427
msgid "This values is not a valid BIC." msgid "This values is not a valid BIC."
msgstr "Este valor no es un BIC válido." msgstr "Este valor no es un BIC válido."
#: pkg/contacts.go:518 #: pkg/contacts.go:516
msgctxt "input" msgctxt "input"
msgid "Holded Excel file" msgid "Holded Excel file"
msgstr "Archivo Excel de Holded" msgstr "Archivo Excel de Holded"

View File

@ -20,6 +20,7 @@
<table> <table>
<thead> <thead>
<tr> <tr>
<th>{{( pgettext "Default" "title" )}}</th>
<th>{{( pgettext "Payment Method" "title" )}}</th> <th>{{( pgettext "Payment Method" "title" )}}</th>
<th>{{( pgettext "Instructions" "title" )}}</th> <th>{{( pgettext "Instructions" "title" )}}</th>
<th></th> <th></th>
@ -30,6 +31,16 @@
{{ with .PaymentMethods }} {{ with .PaymentMethods }}
{{- range $method := . }} {{- range $method := . }}
<tr> <tr>
<td>
<span class="description-text"></span>
<input type="radio"
form="default_payment_form"
aria-label="{{ pgettext "Set as default" "action" }}"
name="default_payment_id"
value="{{ .Id }}"
{{ if .IsDefault }} checked{{ end}}
>
</td>
<td>{{ .Name }}</td> <td>{{ .Name }}</td>
<td>{{ .Instructions }}</td> <td>{{ .Instructions }}</td>
<td> <td>
@ -45,10 +56,31 @@
{{- end }} {{- end }}
{{ else }} {{ else }}
<tr> <tr>
<td colspan="3">{{( gettext "No payment methods added yet." )}}</td> <td colspan="4">{{( gettext "No payment methods added yet." )}}</td>
</tr> </tr>
{{ end }} {{ end }}
</tbody> </tbody>
{{ if gt (len .PaymentMethods) 1 -}}
<tfoot>
<tr>
<td>
<form id="default_payment_form"
method="POST"
action="{{ companyURI "/payment-methods" }}/default"
data-hx-boost="true"
>
{{ csrfToken }}
{{ putMethod }}
{{ if .UpdateDefaultError -}}
<p>{{ .UpdateDefaultError}}</p>
{{- end }}
<button>{{( pgettext "Set" "action")}}</button>
</form>
</td>
<td colspan="3"></td>
</tr>
</tfoot>
{{- end }}
</table> </table>
<form method="POST" action="{{ companyURI "/payment-methods" }}" data-hx-boost="true"> <form method="POST" action="{{ companyURI "/payment-methods" }}" data-hx-boost="true">