Add the section of prebookings

It is just the index of bookings in the created state, but we thought it
would make easier to understand the difference between a booking from
a customer not yet confirmed, from a booking confirmed or created by the
staff.
This commit is contained in:
jordi fita mas 2024-05-03 01:01:01 +02:00
parent 5d4fe15e88
commit c84b58a0d5
10 changed files with 573 additions and 270 deletions

View File

@ -41,6 +41,7 @@ type adminHandler struct {
location *location.AdminHandler
media *media.AdminHandler
payment *payment.AdminHandler
prebooking *booking.PrebookingHandler
season *season.AdminHandler
services *services.AdminHandler
surroundings *surroundings.AdminHandler
@ -60,6 +61,7 @@ func newAdminHandler(mediaDir string) *adminHandler {
location: location.NewAdminHandler(),
media: media.NewAdminHandler(mediaDir),
payment: payment.NewAdminHandler(),
prebooking: booking.NewPrebookingHandler(),
season: season.NewAdminHandler(),
services: services.NewAdminHandler(),
surroundings: surroundings.NewAdminHandler(),
@ -105,6 +107,8 @@ func (h *adminHandler) Handle(user *auth.User, company *auth.Company, conn *data
h.media.Handler(user, company, conn).ServeHTTP(w, r)
case "payments":
h.payment.Handler(user, company, conn).ServeHTTP(w, r)
case "prebookings":
h.prebooking.Handler(user, company, conn).ServeHTTP(w, r)
case "seasons":
h.season.Handler(user, company, conn).ServeHTTP(w, r)
case "services":

View File

@ -286,6 +286,7 @@ func mustGetBookingStatusOptions(ctx context.Context, conn *database.Conn, local
from booking_status
join booking_status_i18n isi18n using(booking_status)
where isi18n.lang_tag = $1
and booking_status <> 'created'
order by booking_status`, locale.Language)
}
@ -322,7 +323,11 @@ func (f *filterForm) BuildQuery(args []interface{}) (string, []interface{}) {
maybeAppendWhere("booking.holder_name ILIKE $%d", f.HolderName.Val, func(v string) interface{} {
return "%" + v + "%"
})
maybeAppendWhere("booking.booking_status = $%d", f.BookingStatus.String(), nil)
if len(f.BookingStatus.Selected) == 0 {
where = append(where, "booking.booking_status <> 'created'")
} else {
maybeAppendWhere("booking.booking_status = $%d", f.BookingStatus.String(), nil)
}
maybeAppendWhere("lower(stay) >= $%d", f.FromDate.Val, nil)
maybeAppendWhere("lower(stay) <= $%d", f.ToDate.Val, nil)
@ -360,6 +365,7 @@ type adminBookingForm struct {
*bookingForm
ID int
URL string
Status string
Campsites []*CampsiteEntry
selected []int
Months []*Month
@ -626,6 +632,7 @@ func (f *adminBookingForm) FillFromDatabase(ctx context.Context, conn *database.
row := conn.QueryRow(ctx, `
select booking_id
, '/admin/bookings/' || booking.slug
, booking_status
, array[campsite_type.slug::text]
, lower(booking.stay)::text
, upper(booking.stay)::text
@ -685,6 +692,7 @@ func (f *adminBookingForm) FillFromDatabase(ctx context.Context, conn *database.
if err := row.Scan(
&f.ID,
&f.URL,
&f.Status,
&f.CampsiteType.Selected,
&arrivalDate,
&departureDate,

67
pkg/booking/prebooking.go Normal file
View File

@ -0,0 +1,67 @@
package booking
import (
"net/http"
"dev.tandem.ws/tandem/camper/pkg/auth"
"dev.tandem.ws/tandem/camper/pkg/database"
httplib "dev.tandem.ws/tandem/camper/pkg/http"
"dev.tandem.ws/tandem/camper/pkg/template"
)
type PrebookingHandler struct {
}
func NewPrebookingHandler() *PrebookingHandler {
return &PrebookingHandler{}
}
func (h *PrebookingHandler) Handler(user *auth.User, company *auth.Company, conn *database.Conn) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var head string
head, r.URL.Path = httplib.ShiftPath(r.URL.Path)
switch head {
case "":
switch r.Method {
case http.MethodGet:
servePrebookingIndex(w, r, user, company, conn)
default:
httplib.MethodNotAllowed(w, r, http.MethodGet)
}
default:
http.NotFound(w, r)
}
})
}
func servePrebookingIndex(w http.ResponseWriter, r *http.Request, user *auth.User, company *auth.Company, conn *database.Conn) {
filters := newFilterForm(r.Context(), conn, company, user.Locale)
if err := filters.Parse(r); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
filters.BookingStatus.Selected = []string{"created"}
bookings, err := collectBookingEntries(r.Context(), conn, user.Locale.Language, filters)
if err != nil {
panic(err)
}
page := &prebookingIndex{
Bookings: filters.buildCursor(bookings),
Filters: filters,
}
page.MustRender(w, r, user, company)
}
type prebookingIndex struct {
Bookings []*bookingEntry
Filters *filterForm
}
func (page prebookingIndex) MustRender(w http.ResponseWriter, r *http.Request, user *auth.User, company *auth.Company) {
if httplib.IsHTMxRequest(r) && page.Filters.pagination {
template.MustRenderAdminNoLayout(w, r, user, company, "prebooking/results.gohtml", page)
} else {
template.MustRenderAdminFiles(w, r, user, company, page, "prebooking/index.gohtml", "prebooking/results.gohtml")
}
}

216
po/ca.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2024-04-28 22:32+0200\n"
"POT-Creation-Date: 2024-05-03 00:56+0200\n"
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
@ -80,7 +80,8 @@ msgstr "Pagament"
#: web/templates/mail/payment/details.gotxt:9
#: web/templates/admin/payment/index.gohtml:21
#: web/templates/admin/payment/details.gohtml:52
#: web/templates/admin/booking/index.gohtml:21
#: web/templates/admin/prebooking/index.gohtml:59
#: web/templates/admin/booking/index.gohtml:73
msgctxt "header"
msgid "Reference"
msgstr "Referència"
@ -88,7 +89,7 @@ msgstr "Referència"
#: web/templates/mail/payment/details.gotxt:10
#: web/templates/admin/payment/index.gohtml:22
#: web/templates/admin/payment/details.gohtml:56
#: web/templates/admin/booking/index.gohtml:25
#: web/templates/admin/booking/index.gohtml:77
msgctxt "header"
msgid "Status"
msgstr "Estat"
@ -178,7 +179,7 @@ msgstr "Nits"
#: web/templates/mail/payment/details.gotxt:22
#: web/templates/public/booking/fields.gohtml:60
#: web/templates/admin/payment/details.gohtml:98
#: web/templates/admin/booking/fields.gohtml:93 pkg/invoice/admin.go:1064
#: web/templates/admin/booking/fields.gohtml:93 pkg/invoice/admin.go:1062
msgctxt "input"
msgid "Adults aged 17 or older"
msgstr "Adults de 17 anys o més"
@ -186,7 +187,7 @@ msgstr "Adults de 17 anys o més"
#: web/templates/mail/payment/details.gotxt:23
#: web/templates/public/booking/fields.gohtml:71
#: web/templates/admin/payment/details.gohtml:102
#: web/templates/admin/booking/fields.gohtml:109 pkg/invoice/admin.go:1065
#: web/templates/admin/booking/fields.gohtml:109 pkg/invoice/admin.go:1063
msgctxt "input"
msgid "Teenagers from 11 to 16 years old"
msgstr "Adolescents dentre 11 i 16 anys"
@ -194,7 +195,7 @@ msgstr "Adolescents dentre 11 i 16 anys"
#: web/templates/mail/payment/details.gotxt:24
#: web/templates/public/booking/fields.gohtml:82
#: web/templates/admin/payment/details.gohtml:106
#: web/templates/admin/booking/fields.gohtml:125 pkg/invoice/admin.go:1066
#: web/templates/admin/booking/fields.gohtml:125 pkg/invoice/admin.go:1064
msgctxt "input"
msgid "Children from 2 to 10 years old"
msgstr "Nens dentre 2 i 10 anys"
@ -202,14 +203,14 @@ msgstr "Nens dentre 2 i 10 anys"
#: web/templates/mail/payment/details.gotxt:25
#: web/templates/public/booking/fields.gohtml:100
#: web/templates/admin/payment/details.gohtml:110
#: web/templates/admin/booking/fields.gohtml:140 pkg/invoice/admin.go:1067
#: web/templates/admin/booking/fields.gohtml:140 pkg/invoice/admin.go:1065
msgctxt "input"
msgid "Dogs"
msgstr "Gossos"
#: web/templates/mail/payment/details.gotxt:26
#: web/templates/admin/payment/details.gohtml:114
#: web/templates/admin/booking/fields.gohtml:167 pkg/invoice/admin.go:1068
#: web/templates/admin/booking/fields.gohtml:167 pkg/invoice/admin.go:1066
#: pkg/booking/cart.go:242
msgctxt "cart"
msgid "Tourist tax"
@ -945,7 +946,7 @@ msgstr "Menú"
#: web/templates/admin/campsite/type/option/form.gohtml:16
#: web/templates/admin/campsite/type/option/index.gohtml:10
#: web/templates/admin/campsite/type/index.gohtml:10
#: web/templates/admin/layout.gohtml:46 web/templates/admin/layout.gohtml:101
#: web/templates/admin/layout.gohtml:46 web/templates/admin/layout.gohtml:104
#: web/templates/admin/booking/fields.gohtml:266
msgctxt "title"
msgid "Campsites"
@ -1217,7 +1218,7 @@ msgstr "Contingut"
#: web/templates/admin/amenity/form.gohtml:91
#: web/templates/admin/home/index.gohtml:34
#: web/templates/admin/media/form.gohtml:39
#: web/templates/admin/booking/form.gohtml:48
#: web/templates/admin/booking/form.gohtml:52
msgctxt "action"
msgid "Update"
msgstr "Actualitza"
@ -1238,7 +1239,7 @@ msgstr "Actualitza"
#: web/templates/admin/amenity/feature/form.gohtml:67
#: web/templates/admin/amenity/carousel/form.gohtml:52
#: web/templates/admin/amenity/form.gohtml:93
#: web/templates/admin/booking/form.gohtml:50
#: web/templates/admin/booking/form.gohtml:54
msgctxt "action"
msgid "Add"
msgstr "Afegeix"
@ -1906,7 +1907,7 @@ msgid "Phone (optional)"
msgstr "Telèfon (opcional)"
#: web/templates/admin/customer/index.gohtml:6
#: web/templates/admin/layout.gohtml:95
#: web/templates/admin/layout.gohtml:98
msgctxt "title"
msgid "Customers"
msgstr "Clients"
@ -1976,7 +1977,7 @@ msgstr "Nova factura"
#: web/templates/admin/invoice/form.gohtml:15
#: web/templates/admin/invoice/index.gohtml:2
#: web/templates/admin/invoice/view.gohtml:6
#: web/templates/admin/layout.gohtml:98
#: web/templates/admin/layout.gohtml:101
msgctxt "title"
msgid "Invoices"
msgstr "Factures"
@ -2047,15 +2048,20 @@ msgid "All customers"
msgstr "Tots els clients"
#: web/templates/admin/invoice/index.gohtml:55
#: web/templates/admin/booking/index.gohtml:38
msgid "All statuses"
msgstr "Tots els estats"
#: web/templates/admin/invoice/index.gohtml:63
#: web/templates/admin/prebooking/index.gohtml:32
#: web/templates/admin/booking/index.gohtml:46
msgctxt "input"
msgid "From date"
msgstr "De la data"
#: web/templates/admin/invoice/index.gohtml:72
#: web/templates/admin/prebooking/index.gohtml:41
#: web/templates/admin/booking/index.gohtml:55
msgctxt "input"
msgid "To date"
msgstr "A la data"
@ -2071,6 +2077,8 @@ msgid "Filter"
msgstr "Filtra"
#: web/templates/admin/invoice/index.gohtml:94
#: web/templates/admin/prebooking/index.gohtml:51
#: web/templates/admin/booking/index.gohtml:65
msgctxt "action"
msgid "Reset"
msgstr "Restableix"
@ -2163,6 +2171,57 @@ msgctxt "title"
msgid "Tax Base"
msgstr "Base imposable"
#: web/templates/admin/prebooking/index.gohtml:6
#: web/templates/admin/layout.gohtml:92
#: web/templates/admin/booking/form.gohtml:20
msgctxt "title"
msgid "Prebookings"
msgstr "Pre-reserves"
#: web/templates/admin/prebooking/index.gohtml:23
#: web/templates/admin/booking/index.gohtml:25
msgctxt "input"
msgid "Holder name"
msgstr "Nom del titular"
#: web/templates/admin/prebooking/index.gohtml:54
#: web/templates/admin/layout.gohtml:95
#: web/templates/admin/booking/form.gohtml:22
#: web/templates/admin/booking/checkin.gohtml:10
#: web/templates/admin/booking/index.gohtml:6
#: web/templates/admin/booking/index.gohtml:68
msgctxt "title"
msgid "Bookings"
msgstr "Reserves"
#: web/templates/admin/prebooking/index.gohtml:60
#: web/templates/admin/booking/index.gohtml:74
msgctxt "header"
msgid "Arrival Date"
msgstr "Data darribada"
#: web/templates/admin/prebooking/index.gohtml:61
#: web/templates/admin/booking/index.gohtml:75
msgctxt "header"
msgid "Departure Date"
msgstr "Data de sortida"
#: web/templates/admin/prebooking/index.gohtml:62
#: web/templates/admin/booking/index.gohtml:76
msgctxt "header"
msgid "Holder Name"
msgstr "Nom del titular"
#: web/templates/admin/prebooking/index.gohtml:70
msgid "No prebooking found."
msgstr "No sha trobat cap pre-reserva."
#: web/templates/admin/prebooking/results.gohtml:20
#: web/templates/admin/booking/results.gohtml:23
msgctxt "action"
msgid "Load more"
msgstr "Carregan més"
#: web/templates/admin/login.gohtml:6 web/templates/admin/login.gohtml:18
msgctxt "title"
msgid "Login"
@ -2527,20 +2586,11 @@ msgctxt "action"
msgid "Logout"
msgstr "Surt"
#: web/templates/admin/layout.gohtml:92
#: web/templates/admin/booking/form.gohtml:19
#: web/templates/admin/booking/checkin.gohtml:10
#: web/templates/admin/booking/index.gohtml:6
#: web/templates/admin/booking/index.gohtml:16
msgctxt "title"
msgid "Bookings"
msgstr "Reserves"
#: web/templates/admin/layout.gohtml:107
#: web/templates/admin/layout.gohtml:110
msgid "Breadcrumb"
msgstr "Fil dAriadna"
#: web/templates/admin/layout.gohtml:119
#: web/templates/admin/layout.gohtml:122
msgid "Camper Version: %s"
msgstr "Camper versió: %s"
@ -2651,7 +2701,7 @@ msgctxt "header"
msgid "Decription"
msgstr "Descripció"
#: web/templates/admin/booking/fields.gohtml:81 pkg/invoice/admin.go:1063
#: web/templates/admin/booking/fields.gohtml:81 pkg/invoice/admin.go:1061
#: pkg/booking/cart.go:232
msgctxt "cart"
msgid "Night"
@ -2688,12 +2738,12 @@ msgctxt "title"
msgid "New Booking"
msgstr "Nova reserva"
#: web/templates/admin/booking/form.gohtml:25
#: web/templates/admin/booking/form.gohtml:30
msgctxt "action"
msgid "Check-in Booking"
msgstr "Registra la reserva"
#: web/templates/admin/booking/form.gohtml:28
#: web/templates/admin/booking/form.gohtml:31
msgctxt "action"
msgid "Invoice Booking"
msgstr "Factura la reserva"
@ -2728,22 +2778,12 @@ msgctxt "action"
msgid "Export Bookings"
msgstr "Exporta reserves"
#: web/templates/admin/booking/index.gohtml:22
msgctxt "header"
msgid "Arrival Date"
msgstr "Data darribada"
#: web/templates/admin/booking/index.gohtml:34
msgctxt "input"
msgid "Booking status"
msgstr "Estat de la reserva"
#: web/templates/admin/booking/index.gohtml:23
msgctxt "header"
msgid "Departure Date"
msgstr "Data de sortida"
#: web/templates/admin/booking/index.gohtml:24
msgctxt "header"
msgid "Holder Name"
msgstr "Nom del titular"
#: web/templates/admin/booking/index.gohtml:41
#: web/templates/admin/booking/index.gohtml:85
msgid "No booking found."
msgstr "No sha trobat cap reserva."
@ -2843,7 +2883,7 @@ msgctxt "order product name"
msgid "Campsite Booking"
msgstr "Reserva de càmping"
#: pkg/payment/public.go:374
#: pkg/payment/public.go:378
msgctxt "subject"
msgid "Booking payment successfully received"
msgstr "Rebut amb èxit el pagament de la reserva"
@ -2851,7 +2891,7 @@ msgstr "Rebut amb èxit el pagament de la reserva"
#: pkg/legal/admin.go:258 pkg/app/user.go:249 pkg/campsite/types/option.go:365
#: pkg/campsite/types/feature.go:272 pkg/campsite/types/admin.go:577
#: pkg/campsite/feature.go:269 pkg/season/admin.go:411
#: pkg/invoice/admin.go:1160 pkg/services/admin.go:316
#: pkg/invoice/admin.go:1158 pkg/services/admin.go:316
#: pkg/surroundings/admin.go:340 pkg/amenity/feature.go:269
#: pkg/amenity/admin.go:283
msgid "Name can not be empty."
@ -2893,7 +2933,7 @@ msgid "Email can not be empty."
msgstr "No podeu deixar el correu-e en blanc."
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/customer/admin.go:345
#: pkg/company/admin.go:225 pkg/booking/admin.go:441 pkg/booking/public.go:593
#: pkg/company/admin.go:225 pkg/booking/admin.go:582 pkg/booking/public.go:593
msgid "This email is not valid. It should be like name@domain.com."
msgstr "Aquest correu-e no és vàlid. Hauria de ser similar a nom@domini.com."
@ -2922,7 +2962,7 @@ msgstr "Lidioma escollit no és vàlid."
msgid "File must be a valid PNG or JPEG image."
msgstr "El fitxer has de ser una imatge PNG o JPEG vàlida."
#: pkg/app/admin.go:79
#: pkg/app/admin.go:81
msgid "Access forbidden"
msgstr "Accés prohibit"
@ -2950,15 +2990,15 @@ msgstr "El valor del màxim ha de ser un número enter."
msgid "Maximum must be equal or greater than minimum."
msgstr "El valor del màxim ha de ser igual o superir al del mínim."
#: pkg/campsite/types/option.go:382 pkg/invoice/admin.go:1161
#: pkg/campsite/types/option.go:382 pkg/invoice/admin.go:1159
msgid "Price can not be empty."
msgstr "No podeu deixar el preu en blanc."
#: pkg/campsite/types/option.go:383 pkg/invoice/admin.go:1162
#: pkg/campsite/types/option.go:383 pkg/invoice/admin.go:1160
msgid "Price must be a decimal number."
msgstr "El preu ha de ser un número decimal."
#: pkg/campsite/types/option.go:384 pkg/invoice/admin.go:1163
#: pkg/campsite/types/option.go:384 pkg/invoice/admin.go:1161
msgid "Price must be zero or greater."
msgstr "El preu ha de ser com a mínim zero."
@ -3104,7 +3144,7 @@ msgctxt "header"
msgid "Children (aged 2 to 10)"
msgstr "Mainada (entre 2 i 10 anys)"
#: pkg/campsite/admin.go:280 pkg/booking/admin.go:417 pkg/booking/public.go:177
#: pkg/campsite/admin.go:280 pkg/booking/admin.go:558 pkg/booking/public.go:177
#: pkg/booking/public.go:232
msgid "Selected campsite type is not valid."
msgstr "El tipus dallotjament escollit no és vàlid."
@ -3143,25 +3183,25 @@ msgid "End date must be a valid date."
msgstr "La data de fi ha de ser una data vàlida."
#: pkg/customer/admin.go:326 pkg/company/admin.go:207
#: pkg/booking/checkin.go:297 pkg/booking/public.go:577
#: pkg/booking/checkin.go:300 pkg/booking/public.go:577
msgid "Selected country is not valid."
msgstr "El país escollit no és vàlid."
#: pkg/customer/admin.go:330 pkg/booking/checkin.go:281
#: pkg/customer/admin.go:330 pkg/booking/checkin.go:284
msgid "Selected ID document type is not valid."
msgstr "El tipus de document didentitat escollit no és vàlid."
#: pkg/customer/admin.go:331 pkg/booking/checkin.go:282
#: pkg/customer/admin.go:331 pkg/booking/checkin.go:285
msgid "ID document number can not be empty."
msgstr "No podeu deixar el número document didentitat en blanc."
#: pkg/customer/admin.go:333 pkg/booking/checkin.go:288
#: pkg/booking/checkin.go:289 pkg/booking/admin.go:429
#: pkg/customer/admin.go:333 pkg/booking/checkin.go:291
#: pkg/booking/checkin.go:292 pkg/booking/admin.go:570
#: pkg/booking/public.go:581
msgid "Full name can not be empty."
msgstr "No podeu deixar el nom i els cognoms en blanc."
#: pkg/customer/admin.go:334 pkg/booking/admin.go:430 pkg/booking/public.go:582
#: pkg/customer/admin.go:334 pkg/booking/admin.go:571 pkg/booking/public.go:582
msgid "Full name must have at least one letter."
msgstr "El nom i els cognoms han de tenir com a mínim una lletra."
@ -3177,94 +3217,94 @@ msgstr "No podeu deixar la població en blanc."
msgid "Postcode can not be empty."
msgstr "No podeu deixar el codi postal en blanc."
#: pkg/customer/admin.go:340 pkg/company/admin.go:234 pkg/booking/admin.go:436
#: pkg/customer/admin.go:340 pkg/company/admin.go:234 pkg/booking/admin.go:577
#: pkg/booking/public.go:588
msgid "This postcode is not valid."
msgstr "Aquest codi postal no és vàlid."
#: pkg/customer/admin.go:348 pkg/company/admin.go:220
#: pkg/booking/checkin.go:301 pkg/booking/admin.go:446
#: pkg/booking/checkin.go:304 pkg/booking/admin.go:587
#: pkg/booking/public.go:596
msgid "This phone number is not valid."
msgstr "Aquest número de telèfon no és vàlid."
#: pkg/invoice/admin.go:681
#: pkg/invoice/admin.go:679
msgctxt "filename"
msgid "invoices.zip"
msgstr "factures.zip"
#: pkg/invoice/admin.go:696
#: pkg/invoice/admin.go:694
msgctxt "filename"
msgid "invoices.ods"
msgstr "factures.ods"
#: pkg/invoice/admin.go:698 pkg/invoice/admin.go:1360 pkg/invoice/admin.go:1367
#: pkg/invoice/admin.go:696 pkg/invoice/admin.go:1358 pkg/invoice/admin.go:1365
msgid "Invalid action"
msgstr "Acció invàlida"
#: pkg/invoice/admin.go:863
#: pkg/invoice/admin.go:861
msgid "Selected invoice status is not valid."
msgstr "Lestat de factura escollit no és vàlid."
#: pkg/invoice/admin.go:864
#: pkg/invoice/admin.go:862
msgid "Invoice date can not be empty."
msgstr "No podeu deixar la data de factura en blanc."
#: pkg/invoice/admin.go:865
#: pkg/invoice/admin.go:863
msgid "Invoice date must be a valid date."
msgstr "La data de factura ha de ser una data vàlida."
#: pkg/invoice/admin.go:1023
#: pkg/invoice/admin.go:1021
#, c-format
msgid "Re: booking #%s of %s%s"
msgstr "Ref: reserva núm. %s del %s-%s"
#: pkg/invoice/admin.go:1024
#: pkg/invoice/admin.go:1022
msgctxt "to_char"
msgid "MM/DD/YYYY"
msgstr "DD/MM/YYYY"
#: pkg/invoice/admin.go:1151
#: pkg/invoice/admin.go:1149
msgid "Invoice product ID must be an integer."
msgstr "LID de producte de factura ha de ser enter."
#: pkg/invoice/admin.go:1152
#: pkg/invoice/admin.go:1150
msgid "Invoice product ID one or greater."
msgstr "LID de producte de factura ha de ser com a mínim u."
#: pkg/invoice/admin.go:1156
#: pkg/invoice/admin.go:1154
msgid "Product ID must be an integer."
msgstr "LID de producte ha de ser un número enter."
#: pkg/invoice/admin.go:1157
#: pkg/invoice/admin.go:1155
msgid "Product ID must zero or greater."
msgstr "LID de producte ha de ser com a mínim zero."
#: pkg/invoice/admin.go:1166
#: pkg/invoice/admin.go:1164
msgid "Quantity can not be empty."
msgstr "No podeu deixar la quantitat en blanc."
#: pkg/invoice/admin.go:1167
#: pkg/invoice/admin.go:1165
msgid "Quantity must be an integer."
msgstr "La quantitat ha de ser un número enter."
#: pkg/invoice/admin.go:1168
#: pkg/invoice/admin.go:1166
msgid "Quantity must one or greater."
msgstr "La quantitat ha de ser com a mínim u."
#: pkg/invoice/admin.go:1171
#: pkg/invoice/admin.go:1169
msgid "Discount can not be empty."
msgstr "No podeu deixar el descompte en blanc."
#: pkg/invoice/admin.go:1172
#: pkg/invoice/admin.go:1170
msgid "Discount must be an integer."
msgstr "El descompte ha de ser un número enter."
#: pkg/invoice/admin.go:1173 pkg/invoice/admin.go:1174
#: pkg/invoice/admin.go:1171 pkg/invoice/admin.go:1172
msgid "Discount must be a percentage between 0 and 100."
msgstr "El descompte ha de ser un percentatge entre 0 i 100"
#: pkg/invoice/admin.go:1178
#: pkg/invoice/admin.go:1176
msgid "Selected tax is not valid."
msgstr "Limpost escollit no és vàlid."
@ -3403,27 +3443,27 @@ msgstr "No podeu deixar el fitxer del mèdia en blanc."
msgid "Filename can not be empty."
msgstr "No podeu deixar el nom del fitxer en blanc."
#: pkg/booking/checkin.go:284
#: pkg/booking/checkin.go:287
msgid "ID document issue date must be a valid date."
msgstr "La data dexpedició del document didentitat ha de ser una data vàlida."
#: pkg/booking/checkin.go:285
#: pkg/booking/checkin.go:288
msgid "ID document issue date must be in the past."
msgstr "La data dexpedició del document didentitat ha de ser al passat."
#: pkg/booking/checkin.go:290
#: pkg/booking/checkin.go:293
msgid "Selected sex is not valid."
msgstr "El sexe escollit no és vàlid."
#: pkg/booking/checkin.go:291
#: pkg/booking/checkin.go:294
msgid "Birthdate can not be empty"
msgstr "No podeu deixar la data de naixement en blanc."
#: pkg/booking/checkin.go:292
#: pkg/booking/checkin.go:295
msgid "Birthdate must be a valid date."
msgstr "La data de naixement ha de ser una data vàlida."
#: pkg/booking/checkin.go:293
#: pkg/booking/checkin.go:296
msgid "Birthdate must be in the past."
msgstr "La data de naixement ha de ser al passat."
@ -3447,24 +3487,24 @@ msgctxt "cart"
msgid "Dog"
msgstr "Gos"
#: pkg/booking/admin.go:218
#: pkg/booking/admin.go:236
msgctxt "filename"
msgid "bookings.ods"
msgstr "reserves.ods"
#: pkg/booking/admin.go:435
#: pkg/booking/admin.go:576
msgid "Country can not be empty to validate the postcode."
msgstr "No podeu deixar el país en blanc per validar el codi postal."
#: pkg/booking/admin.go:445
#: pkg/booking/admin.go:586
msgid "Country can not be empty to validate the phone."
msgstr "No podeu deixar el país en blanc per validar el telèfon."
#: pkg/booking/admin.go:452
#: pkg/booking/admin.go:593
msgid "You must select at least one accommodation."
msgstr "Heu descollir com a mínim un allotjament."
#: pkg/booking/admin.go:458
#: pkg/booking/admin.go:599
msgid "The selected accommodations have no available openings in the requested dates."
msgstr "Els allotjaments escollits no estan disponibles a les dates demanades."

216
po/es.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2024-04-28 22:32+0200\n"
"POT-Creation-Date: 2024-05-03 00:56+0200\n"
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
@ -80,7 +80,8 @@ msgstr "Pago"
#: web/templates/mail/payment/details.gotxt:9
#: web/templates/admin/payment/index.gohtml:21
#: web/templates/admin/payment/details.gohtml:52
#: web/templates/admin/booking/index.gohtml:21
#: web/templates/admin/prebooking/index.gohtml:59
#: web/templates/admin/booking/index.gohtml:73
msgctxt "header"
msgid "Reference"
msgstr "Referencia"
@ -88,7 +89,7 @@ msgstr "Referencia"
#: web/templates/mail/payment/details.gotxt:10
#: web/templates/admin/payment/index.gohtml:22
#: web/templates/admin/payment/details.gohtml:56
#: web/templates/admin/booking/index.gohtml:25
#: web/templates/admin/booking/index.gohtml:77
msgctxt "header"
msgid "Status"
msgstr "Estado"
@ -178,7 +179,7 @@ msgstr "Noches"
#: web/templates/mail/payment/details.gotxt:22
#: web/templates/public/booking/fields.gohtml:60
#: web/templates/admin/payment/details.gohtml:98
#: web/templates/admin/booking/fields.gohtml:93 pkg/invoice/admin.go:1064
#: web/templates/admin/booking/fields.gohtml:93 pkg/invoice/admin.go:1062
msgctxt "input"
msgid "Adults aged 17 or older"
msgstr "Adultos de 17 años o más"
@ -186,7 +187,7 @@ msgstr "Adultos de 17 años o más"
#: web/templates/mail/payment/details.gotxt:23
#: web/templates/public/booking/fields.gohtml:71
#: web/templates/admin/payment/details.gohtml:102
#: web/templates/admin/booking/fields.gohtml:109 pkg/invoice/admin.go:1065
#: web/templates/admin/booking/fields.gohtml:109 pkg/invoice/admin.go:1063
msgctxt "input"
msgid "Teenagers from 11 to 16 years old"
msgstr "Adolescentes de 11 a 16 años"
@ -194,7 +195,7 @@ msgstr "Adolescentes de 11 a 16 años"
#: web/templates/mail/payment/details.gotxt:24
#: web/templates/public/booking/fields.gohtml:82
#: web/templates/admin/payment/details.gohtml:106
#: web/templates/admin/booking/fields.gohtml:125 pkg/invoice/admin.go:1066
#: web/templates/admin/booking/fields.gohtml:125 pkg/invoice/admin.go:1064
msgctxt "input"
msgid "Children from 2 to 10 years old"
msgstr "Niños de 2 a 10 años"
@ -202,14 +203,14 @@ msgstr "Niños de 2 a 10 años"
#: web/templates/mail/payment/details.gotxt:25
#: web/templates/public/booking/fields.gohtml:100
#: web/templates/admin/payment/details.gohtml:110
#: web/templates/admin/booking/fields.gohtml:140 pkg/invoice/admin.go:1067
#: web/templates/admin/booking/fields.gohtml:140 pkg/invoice/admin.go:1065
msgctxt "input"
msgid "Dogs"
msgstr "Perros"
#: web/templates/mail/payment/details.gotxt:26
#: web/templates/admin/payment/details.gohtml:114
#: web/templates/admin/booking/fields.gohtml:167 pkg/invoice/admin.go:1068
#: web/templates/admin/booking/fields.gohtml:167 pkg/invoice/admin.go:1066
#: pkg/booking/cart.go:242
msgctxt "cart"
msgid "Tourist tax"
@ -945,7 +946,7 @@ msgstr "Menú"
#: web/templates/admin/campsite/type/option/form.gohtml:16
#: web/templates/admin/campsite/type/option/index.gohtml:10
#: web/templates/admin/campsite/type/index.gohtml:10
#: web/templates/admin/layout.gohtml:46 web/templates/admin/layout.gohtml:101
#: web/templates/admin/layout.gohtml:46 web/templates/admin/layout.gohtml:104
#: web/templates/admin/booking/fields.gohtml:266
msgctxt "title"
msgid "Campsites"
@ -1217,7 +1218,7 @@ msgstr "Contenido"
#: web/templates/admin/amenity/form.gohtml:91
#: web/templates/admin/home/index.gohtml:34
#: web/templates/admin/media/form.gohtml:39
#: web/templates/admin/booking/form.gohtml:48
#: web/templates/admin/booking/form.gohtml:52
msgctxt "action"
msgid "Update"
msgstr "Actualizar"
@ -1238,7 +1239,7 @@ msgstr "Actualizar"
#: web/templates/admin/amenity/feature/form.gohtml:67
#: web/templates/admin/amenity/carousel/form.gohtml:52
#: web/templates/admin/amenity/form.gohtml:93
#: web/templates/admin/booking/form.gohtml:50
#: web/templates/admin/booking/form.gohtml:54
msgctxt "action"
msgid "Add"
msgstr "Añadir"
@ -1906,7 +1907,7 @@ msgid "Phone (optional)"
msgstr "Teléfono (opcional)"
#: web/templates/admin/customer/index.gohtml:6
#: web/templates/admin/layout.gohtml:95
#: web/templates/admin/layout.gohtml:98
msgctxt "title"
msgid "Customers"
msgstr "Clientes"
@ -1976,7 +1977,7 @@ msgstr "Nueva factura"
#: web/templates/admin/invoice/form.gohtml:15
#: web/templates/admin/invoice/index.gohtml:2
#: web/templates/admin/invoice/view.gohtml:6
#: web/templates/admin/layout.gohtml:98
#: web/templates/admin/layout.gohtml:101
msgctxt "title"
msgid "Invoices"
msgstr "Facturas"
@ -2047,15 +2048,20 @@ msgid "All customers"
msgstr "Todos los clientes"
#: web/templates/admin/invoice/index.gohtml:55
#: web/templates/admin/booking/index.gohtml:38
msgid "All statuses"
msgstr "Todos los estados"
#: web/templates/admin/invoice/index.gohtml:63
#: web/templates/admin/prebooking/index.gohtml:32
#: web/templates/admin/booking/index.gohtml:46
msgctxt "input"
msgid "From date"
msgstr "De la fecha"
#: web/templates/admin/invoice/index.gohtml:72
#: web/templates/admin/prebooking/index.gohtml:41
#: web/templates/admin/booking/index.gohtml:55
msgctxt "input"
msgid "To date"
msgstr "A la fecha"
@ -2071,6 +2077,8 @@ msgid "Filter"
msgstr "Filtrar"
#: web/templates/admin/invoice/index.gohtml:94
#: web/templates/admin/prebooking/index.gohtml:51
#: web/templates/admin/booking/index.gohtml:65
msgctxt "action"
msgid "Reset"
msgstr "Restablecer"
@ -2163,6 +2171,57 @@ msgctxt "title"
msgid "Tax Base"
msgstr "Base imponible"
#: web/templates/admin/prebooking/index.gohtml:6
#: web/templates/admin/layout.gohtml:92
#: web/templates/admin/booking/form.gohtml:20
msgctxt "title"
msgid "Prebookings"
msgstr "Prereservas"
#: web/templates/admin/prebooking/index.gohtml:23
#: web/templates/admin/booking/index.gohtml:25
msgctxt "input"
msgid "Holder name"
msgstr "Nombre del titular"
#: web/templates/admin/prebooking/index.gohtml:54
#: web/templates/admin/layout.gohtml:95
#: web/templates/admin/booking/form.gohtml:22
#: web/templates/admin/booking/checkin.gohtml:10
#: web/templates/admin/booking/index.gohtml:6
#: web/templates/admin/booking/index.gohtml:68
msgctxt "title"
msgid "Bookings"
msgstr "Reservas"
#: web/templates/admin/prebooking/index.gohtml:60
#: web/templates/admin/booking/index.gohtml:74
msgctxt "header"
msgid "Arrival Date"
msgstr "Fecha de llegada"
#: web/templates/admin/prebooking/index.gohtml:61
#: web/templates/admin/booking/index.gohtml:75
msgctxt "header"
msgid "Departure Date"
msgstr "Fecha de salida"
#: web/templates/admin/prebooking/index.gohtml:62
#: web/templates/admin/booking/index.gohtml:76
msgctxt "header"
msgid "Holder Name"
msgstr "Nombre del titular"
#: web/templates/admin/prebooking/index.gohtml:70
msgid "No prebooking found."
msgstr "No se ha encontrado ninguna prereserva."
#: web/templates/admin/prebooking/results.gohtml:20
#: web/templates/admin/booking/results.gohtml:23
msgctxt "action"
msgid "Load more"
msgstr "Cargar más"
#: web/templates/admin/login.gohtml:6 web/templates/admin/login.gohtml:18
msgctxt "title"
msgid "Login"
@ -2527,20 +2586,11 @@ msgctxt "action"
msgid "Logout"
msgstr "Salir"
#: web/templates/admin/layout.gohtml:92
#: web/templates/admin/booking/form.gohtml:19
#: web/templates/admin/booking/checkin.gohtml:10
#: web/templates/admin/booking/index.gohtml:6
#: web/templates/admin/booking/index.gohtml:16
msgctxt "title"
msgid "Bookings"
msgstr "Reservas"
#: web/templates/admin/layout.gohtml:107
#: web/templates/admin/layout.gohtml:110
msgid "Breadcrumb"
msgstr "Migas de pan"
#: web/templates/admin/layout.gohtml:119
#: web/templates/admin/layout.gohtml:122
msgid "Camper Version: %s"
msgstr "Camper versión: %s"
@ -2651,7 +2701,7 @@ msgctxt "header"
msgid "Decription"
msgstr "Descripción"
#: web/templates/admin/booking/fields.gohtml:81 pkg/invoice/admin.go:1063
#: web/templates/admin/booking/fields.gohtml:81 pkg/invoice/admin.go:1061
#: pkg/booking/cart.go:232
msgctxt "cart"
msgid "Night"
@ -2688,12 +2738,12 @@ msgctxt "title"
msgid "New Booking"
msgstr "Nueva reserva"
#: web/templates/admin/booking/form.gohtml:25
#: web/templates/admin/booking/form.gohtml:30
msgctxt "action"
msgid "Check-in Booking"
msgstr "Registrar reserva"
#: web/templates/admin/booking/form.gohtml:28
#: web/templates/admin/booking/form.gohtml:31
msgctxt "action"
msgid "Invoice Booking"
msgstr "Facturar la reserva"
@ -2728,22 +2778,12 @@ msgctxt "action"
msgid "Export Bookings"
msgstr "Exportar reservas"
#: web/templates/admin/booking/index.gohtml:22
msgctxt "header"
msgid "Arrival Date"
msgstr "Fecha de llegada"
#: web/templates/admin/booking/index.gohtml:34
msgctxt "input"
msgid "Booking status"
msgstr "Estado de la reserva"
#: web/templates/admin/booking/index.gohtml:23
msgctxt "header"
msgid "Departure Date"
msgstr "Fecha de salida"
#: web/templates/admin/booking/index.gohtml:24
msgctxt "header"
msgid "Holder Name"
msgstr "Nombre del titular"
#: web/templates/admin/booking/index.gohtml:41
#: web/templates/admin/booking/index.gohtml:85
msgid "No booking found."
msgstr "No se ha encontrado ninguna reserva."
@ -2843,7 +2883,7 @@ msgctxt "order product name"
msgid "Campsite Booking"
msgstr "Reserva de camping"
#: pkg/payment/public.go:374
#: pkg/payment/public.go:378
msgctxt "subject"
msgid "Booking payment successfully received"
msgstr "Se ha recibido correctamente el pago de la reserva"
@ -2851,7 +2891,7 @@ msgstr "Se ha recibido correctamente el pago de la reserva"
#: pkg/legal/admin.go:258 pkg/app/user.go:249 pkg/campsite/types/option.go:365
#: pkg/campsite/types/feature.go:272 pkg/campsite/types/admin.go:577
#: pkg/campsite/feature.go:269 pkg/season/admin.go:411
#: pkg/invoice/admin.go:1160 pkg/services/admin.go:316
#: pkg/invoice/admin.go:1158 pkg/services/admin.go:316
#: pkg/surroundings/admin.go:340 pkg/amenity/feature.go:269
#: pkg/amenity/admin.go:283
msgid "Name can not be empty."
@ -2893,7 +2933,7 @@ msgid "Email can not be empty."
msgstr "No podéis dejar el correo-e en blanco."
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/customer/admin.go:345
#: pkg/company/admin.go:225 pkg/booking/admin.go:441 pkg/booking/public.go:593
#: pkg/company/admin.go:225 pkg/booking/admin.go:582 pkg/booking/public.go:593
msgid "This email is not valid. It should be like name@domain.com."
msgstr "Este correo-e no es válido. Tiene que ser parecido a nombre@dominio.com."
@ -2922,7 +2962,7 @@ msgstr "El idioma escogido no es válido."
msgid "File must be a valid PNG or JPEG image."
msgstr "El archivo tiene que ser una imagen PNG o JPEG válida."
#: pkg/app/admin.go:79
#: pkg/app/admin.go:81
msgid "Access forbidden"
msgstr "Acceso prohibido"
@ -2950,15 +2990,15 @@ msgstr "El valor del máximo tiene que ser un número entero."
msgid "Maximum must be equal or greater than minimum."
msgstr "El valor del máximo tiene que ser igual o mayor al del mínimo."
#: pkg/campsite/types/option.go:382 pkg/invoice/admin.go:1161
#: pkg/campsite/types/option.go:382 pkg/invoice/admin.go:1159
msgid "Price can not be empty."
msgstr "No podéis dejar el precio en blanco."
#: pkg/campsite/types/option.go:383 pkg/invoice/admin.go:1162
#: pkg/campsite/types/option.go:383 pkg/invoice/admin.go:1160
msgid "Price must be a decimal number."
msgstr "El precio tiene que ser un número decimal."
#: pkg/campsite/types/option.go:384 pkg/invoice/admin.go:1163
#: pkg/campsite/types/option.go:384 pkg/invoice/admin.go:1161
msgid "Price must be zero or greater."
msgstr "El precio tiene que ser como mínimo cero."
@ -3104,7 +3144,7 @@ msgctxt "header"
msgid "Children (aged 2 to 10)"
msgstr "Niños (de 2 a 10 años)"
#: pkg/campsite/admin.go:280 pkg/booking/admin.go:417 pkg/booking/public.go:177
#: pkg/campsite/admin.go:280 pkg/booking/admin.go:558 pkg/booking/public.go:177
#: pkg/booking/public.go:232
msgid "Selected campsite type is not valid."
msgstr "El tipo de alojamiento escogido no es válido."
@ -3143,25 +3183,25 @@ msgid "End date must be a valid date."
msgstr "La fecha final tiene que ser una fecha válida."
#: pkg/customer/admin.go:326 pkg/company/admin.go:207
#: pkg/booking/checkin.go:297 pkg/booking/public.go:577
#: pkg/booking/checkin.go:300 pkg/booking/public.go:577
msgid "Selected country is not valid."
msgstr "El país escogido no es válido."
#: pkg/customer/admin.go:330 pkg/booking/checkin.go:281
#: pkg/customer/admin.go:330 pkg/booking/checkin.go:284
msgid "Selected ID document type is not valid."
msgstr "El tipo de documento de identidad escogido no es válido."
#: pkg/customer/admin.go:331 pkg/booking/checkin.go:282
#: pkg/customer/admin.go:331 pkg/booking/checkin.go:285
msgid "ID document number can not be empty."
msgstr "No podéis dejar el número del documento de identidad en blanco."
#: pkg/customer/admin.go:333 pkg/booking/checkin.go:288
#: pkg/booking/checkin.go:289 pkg/booking/admin.go:429
#: pkg/customer/admin.go:333 pkg/booking/checkin.go:291
#: pkg/booking/checkin.go:292 pkg/booking/admin.go:570
#: pkg/booking/public.go:581
msgid "Full name can not be empty."
msgstr "No podéis dejar el nombre y los apellidos en blanco."
#: pkg/customer/admin.go:334 pkg/booking/admin.go:430 pkg/booking/public.go:582
#: pkg/customer/admin.go:334 pkg/booking/admin.go:571 pkg/booking/public.go:582
msgid "Full name must have at least one letter."
msgstr "El nombre y los apellidos tienen que tener como mínimo una letra."
@ -3177,94 +3217,94 @@ msgstr "No podéis dejar la población en blanco."
msgid "Postcode can not be empty."
msgstr "No podéis dejar el código postal en blanco."
#: pkg/customer/admin.go:340 pkg/company/admin.go:234 pkg/booking/admin.go:436
#: pkg/customer/admin.go:340 pkg/company/admin.go:234 pkg/booking/admin.go:577
#: pkg/booking/public.go:588
msgid "This postcode is not valid."
msgstr "Este código postal no es válido."
#: pkg/customer/admin.go:348 pkg/company/admin.go:220
#: pkg/booking/checkin.go:301 pkg/booking/admin.go:446
#: pkg/booking/checkin.go:304 pkg/booking/admin.go:587
#: pkg/booking/public.go:596
msgid "This phone number is not valid."
msgstr "Este teléfono no es válido."
#: pkg/invoice/admin.go:681
#: pkg/invoice/admin.go:679
msgctxt "filename"
msgid "invoices.zip"
msgstr "facturas.zip"
#: pkg/invoice/admin.go:696
#: pkg/invoice/admin.go:694
msgctxt "filename"
msgid "invoices.ods"
msgstr "facturas.ods"
#: pkg/invoice/admin.go:698 pkg/invoice/admin.go:1360 pkg/invoice/admin.go:1367
#: pkg/invoice/admin.go:696 pkg/invoice/admin.go:1358 pkg/invoice/admin.go:1365
msgid "Invalid action"
msgstr "Acción inválida"
#: pkg/invoice/admin.go:863
#: pkg/invoice/admin.go:861
msgid "Selected invoice status is not valid."
msgstr "El estado de factura escogida no es válido."
#: pkg/invoice/admin.go:864
#: pkg/invoice/admin.go:862
msgid "Invoice date can not be empty."
msgstr "No podéis dejar la fecha de factura en blanco."
#: pkg/invoice/admin.go:865
#: pkg/invoice/admin.go:863
msgid "Invoice date must be a valid date."
msgstr "La fecha de factura tiene que ser una fecha válida."
#: pkg/invoice/admin.go:1023
#: pkg/invoice/admin.go:1021
#, c-format
msgid "Re: booking #%s of %s%s"
msgstr "Ref.: reserva núm. %s del %s%s"
#: pkg/invoice/admin.go:1024
#: pkg/invoice/admin.go:1022
msgctxt "to_char"
msgid "MM/DD/YYYY"
msgstr "DD/MM/YYYY"
#: pkg/invoice/admin.go:1151
#: pkg/invoice/admin.go:1149
msgid "Invoice product ID must be an integer."
msgstr "El ID de producto de factura tiene que ser entero."
#: pkg/invoice/admin.go:1152
#: pkg/invoice/admin.go:1150
msgid "Invoice product ID one or greater."
msgstr "El ID de producto de factura tiene que ser como mínimo uno."
#: pkg/invoice/admin.go:1156
#: pkg/invoice/admin.go:1154
msgid "Product ID must be an integer."
msgstr "El ID de producto tiene que ser un número entero."
#: pkg/invoice/admin.go:1157
#: pkg/invoice/admin.go:1155
msgid "Product ID must zero or greater."
msgstr "El ID de producto tiene que ser como mínimo cero."
#: pkg/invoice/admin.go:1166
#: pkg/invoice/admin.go:1164
msgid "Quantity can not be empty."
msgstr "No podéis dejar la cantidad en blanco."
#: pkg/invoice/admin.go:1167
#: pkg/invoice/admin.go:1165
msgid "Quantity must be an integer."
msgstr "La cantidad tiene que ser un número entero."
#: pkg/invoice/admin.go:1168
#: pkg/invoice/admin.go:1166
msgid "Quantity must one or greater."
msgstr "La cantidad tiene que ser como mínimo uno."
#: pkg/invoice/admin.go:1171
#: pkg/invoice/admin.go:1169
msgid "Discount can not be empty."
msgstr "No podéis dejar el descuento en blanco."
#: pkg/invoice/admin.go:1172
#: pkg/invoice/admin.go:1170
msgid "Discount must be an integer."
msgstr "El descuento tiene que ser un número entero."
#: pkg/invoice/admin.go:1173 pkg/invoice/admin.go:1174
#: pkg/invoice/admin.go:1171 pkg/invoice/admin.go:1172
msgid "Discount must be a percentage between 0 and 100."
msgstr "El descuento tiene que ser un porcentaje entre 1 y 100."
#: pkg/invoice/admin.go:1178
#: pkg/invoice/admin.go:1176
msgid "Selected tax is not valid."
msgstr "El impuesto escogido no es válido."
@ -3403,27 +3443,27 @@ msgstr "No podéis dejar el archivo del medio en blanco."
msgid "Filename can not be empty."
msgstr "No podéis dejar el nombre del archivo en blanco."
#: pkg/booking/checkin.go:284
#: pkg/booking/checkin.go:287
msgid "ID document issue date must be a valid date."
msgstr "La fecha de expedición del documento de identidad tiene que ser una fecha válida."
#: pkg/booking/checkin.go:285
#: pkg/booking/checkin.go:288
msgid "ID document issue date must be in the past."
msgstr "La fecha de expedición del documento de identidad tiene que ser del pasado."
#: pkg/booking/checkin.go:290
#: pkg/booking/checkin.go:293
msgid "Selected sex is not valid."
msgstr "El sexo escogido no es válido."
#: pkg/booking/checkin.go:291
#: pkg/booking/checkin.go:294
msgid "Birthdate can not be empty"
msgstr "No podéis dejar la fecha de nacimiento en blanco."
#: pkg/booking/checkin.go:292
#: pkg/booking/checkin.go:295
msgid "Birthdate must be a valid date."
msgstr "La fecha de nacimiento tiene que ser una fecha válida."
#: pkg/booking/checkin.go:293
#: pkg/booking/checkin.go:296
msgid "Birthdate must be in the past."
msgstr "La fecha de nacimiento tiene que ser del pasado."
@ -3447,24 +3487,24 @@ msgctxt "cart"
msgid "Dog"
msgstr "Perro"
#: pkg/booking/admin.go:218
#: pkg/booking/admin.go:236
msgctxt "filename"
msgid "bookings.ods"
msgstr "reservas.ods"
#: pkg/booking/admin.go:435
#: pkg/booking/admin.go:576
msgid "Country can not be empty to validate the postcode."
msgstr "No podéis dejar el país en blanco para validar el código postal."
#: pkg/booking/admin.go:445
#: pkg/booking/admin.go:586
msgid "Country can not be empty to validate the phone."
msgstr "No podéis dejar el país en blanco para validar el teléfono."
#: pkg/booking/admin.go:452
#: pkg/booking/admin.go:593
msgid "You must select at least one accommodation."
msgstr "Tenéis que seleccionar como mínimo un alojamiento."
#: pkg/booking/admin.go:458
#: pkg/booking/admin.go:599
msgid "The selected accommodations have no available openings in the requested dates."
msgstr "Los alojamientos seleccionados no tienen disponibilidad en las fechas pedidas."

216
po/fr.po
View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: camper\n"
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
"POT-Creation-Date: 2024-04-28 22:32+0200\n"
"POT-Creation-Date: 2024-05-03 00:56+0200\n"
"PO-Revision-Date: 2024-02-06 10:05+0100\n"
"Last-Translator: Oriol Carbonell <info@oriolcarbonell.cat>\n"
"Language-Team: French <traduc@traduc.org>\n"
@ -80,7 +80,8 @@ msgstr "Paiement"
#: web/templates/mail/payment/details.gotxt:9
#: web/templates/admin/payment/index.gohtml:21
#: web/templates/admin/payment/details.gohtml:52
#: web/templates/admin/booking/index.gohtml:21
#: web/templates/admin/prebooking/index.gohtml:59
#: web/templates/admin/booking/index.gohtml:73
msgctxt "header"
msgid "Reference"
msgstr "Référence"
@ -88,7 +89,7 @@ msgstr "Référence"
#: web/templates/mail/payment/details.gotxt:10
#: web/templates/admin/payment/index.gohtml:22
#: web/templates/admin/payment/details.gohtml:56
#: web/templates/admin/booking/index.gohtml:25
#: web/templates/admin/booking/index.gohtml:77
msgctxt "header"
msgid "Status"
msgstr "Statut"
@ -178,7 +179,7 @@ msgstr "Nuits"
#: web/templates/mail/payment/details.gotxt:22
#: web/templates/public/booking/fields.gohtml:60
#: web/templates/admin/payment/details.gohtml:98
#: web/templates/admin/booking/fields.gohtml:93 pkg/invoice/admin.go:1064
#: web/templates/admin/booking/fields.gohtml:93 pkg/invoice/admin.go:1062
msgctxt "input"
msgid "Adults aged 17 or older"
msgstr "Adultes âgés 17 ans ou plus"
@ -186,7 +187,7 @@ msgstr "Adultes âgés 17 ans ou plus"
#: web/templates/mail/payment/details.gotxt:23
#: web/templates/public/booking/fields.gohtml:71
#: web/templates/admin/payment/details.gohtml:102
#: web/templates/admin/booking/fields.gohtml:109 pkg/invoice/admin.go:1065
#: web/templates/admin/booking/fields.gohtml:109 pkg/invoice/admin.go:1063
msgctxt "input"
msgid "Teenagers from 11 to 16 years old"
msgstr "Adolescents de 11 à 16 ans"
@ -194,7 +195,7 @@ msgstr "Adolescents de 11 à 16 ans"
#: web/templates/mail/payment/details.gotxt:24
#: web/templates/public/booking/fields.gohtml:82
#: web/templates/admin/payment/details.gohtml:106
#: web/templates/admin/booking/fields.gohtml:125 pkg/invoice/admin.go:1066
#: web/templates/admin/booking/fields.gohtml:125 pkg/invoice/admin.go:1064
msgctxt "input"
msgid "Children from 2 to 10 years old"
msgstr "Enfants de 2 à 10 ans"
@ -202,14 +203,14 @@ msgstr "Enfants de 2 à 10 ans"
#: web/templates/mail/payment/details.gotxt:25
#: web/templates/public/booking/fields.gohtml:100
#: web/templates/admin/payment/details.gohtml:110
#: web/templates/admin/booking/fields.gohtml:140 pkg/invoice/admin.go:1067
#: web/templates/admin/booking/fields.gohtml:140 pkg/invoice/admin.go:1065
msgctxt "input"
msgid "Dogs"
msgstr "Chiens"
#: web/templates/mail/payment/details.gotxt:26
#: web/templates/admin/payment/details.gohtml:114
#: web/templates/admin/booking/fields.gohtml:167 pkg/invoice/admin.go:1068
#: web/templates/admin/booking/fields.gohtml:167 pkg/invoice/admin.go:1066
#: pkg/booking/cart.go:242
msgctxt "cart"
msgid "Tourist tax"
@ -945,7 +946,7 @@ msgstr "Menu"
#: web/templates/admin/campsite/type/option/form.gohtml:16
#: web/templates/admin/campsite/type/option/index.gohtml:10
#: web/templates/admin/campsite/type/index.gohtml:10
#: web/templates/admin/layout.gohtml:46 web/templates/admin/layout.gohtml:101
#: web/templates/admin/layout.gohtml:46 web/templates/admin/layout.gohtml:104
#: web/templates/admin/booking/fields.gohtml:266
msgctxt "title"
msgid "Campsites"
@ -1217,7 +1218,7 @@ msgstr "Contenu"
#: web/templates/admin/amenity/form.gohtml:91
#: web/templates/admin/home/index.gohtml:34
#: web/templates/admin/media/form.gohtml:39
#: web/templates/admin/booking/form.gohtml:48
#: web/templates/admin/booking/form.gohtml:52
msgctxt "action"
msgid "Update"
msgstr "Mettre à jour"
@ -1238,7 +1239,7 @@ msgstr "Mettre à jour"
#: web/templates/admin/amenity/feature/form.gohtml:67
#: web/templates/admin/amenity/carousel/form.gohtml:52
#: web/templates/admin/amenity/form.gohtml:93
#: web/templates/admin/booking/form.gohtml:50
#: web/templates/admin/booking/form.gohtml:54
msgctxt "action"
msgid "Add"
msgstr "Ajouter"
@ -1906,7 +1907,7 @@ msgid "Phone (optional)"
msgstr "Téléphone (facultatif)"
#: web/templates/admin/customer/index.gohtml:6
#: web/templates/admin/layout.gohtml:95
#: web/templates/admin/layout.gohtml:98
msgctxt "title"
msgid "Customers"
msgstr "Clients"
@ -1976,7 +1977,7 @@ msgstr "Nouvelle facture"
#: web/templates/admin/invoice/form.gohtml:15
#: web/templates/admin/invoice/index.gohtml:2
#: web/templates/admin/invoice/view.gohtml:6
#: web/templates/admin/layout.gohtml:98
#: web/templates/admin/layout.gohtml:101
msgctxt "title"
msgid "Invoices"
msgstr "Factures"
@ -2047,15 +2048,20 @@ msgid "All customers"
msgstr "Tous les clients"
#: web/templates/admin/invoice/index.gohtml:55
#: web/templates/admin/booking/index.gohtml:38
msgid "All statuses"
msgstr "Tous les statuts"
#: web/templates/admin/invoice/index.gohtml:63
#: web/templates/admin/prebooking/index.gohtml:32
#: web/templates/admin/booking/index.gohtml:46
msgctxt "input"
msgid "From date"
msgstr "Partir de la date"
#: web/templates/admin/invoice/index.gohtml:72
#: web/templates/admin/prebooking/index.gohtml:41
#: web/templates/admin/booking/index.gohtml:55
msgctxt "input"
msgid "To date"
msgstr "À ce jour"
@ -2071,6 +2077,8 @@ msgid "Filter"
msgstr "Filtrer"
#: web/templates/admin/invoice/index.gohtml:94
#: web/templates/admin/prebooking/index.gohtml:51
#: web/templates/admin/booking/index.gohtml:65
msgctxt "action"
msgid "Reset"
msgstr "Réinitialiser"
@ -2163,6 +2171,57 @@ msgctxt "title"
msgid "Tax Base"
msgstr "Import imposable"
#: web/templates/admin/prebooking/index.gohtml:6
#: web/templates/admin/layout.gohtml:92
#: web/templates/admin/booking/form.gohtml:20
msgctxt "title"
msgid "Prebookings"
msgstr "Pré-réservations"
#: web/templates/admin/prebooking/index.gohtml:23
#: web/templates/admin/booking/index.gohtml:25
msgctxt "input"
msgid "Holder name"
msgstr "Nom du titulaire"
#: web/templates/admin/prebooking/index.gohtml:54
#: web/templates/admin/layout.gohtml:95
#: web/templates/admin/booking/form.gohtml:22
#: web/templates/admin/booking/checkin.gohtml:10
#: web/templates/admin/booking/index.gohtml:6
#: web/templates/admin/booking/index.gohtml:68
msgctxt "title"
msgid "Bookings"
msgstr "Réservations"
#: web/templates/admin/prebooking/index.gohtml:60
#: web/templates/admin/booking/index.gohtml:74
msgctxt "header"
msgid "Arrival Date"
msgstr "Date darrivée"
#: web/templates/admin/prebooking/index.gohtml:61
#: web/templates/admin/booking/index.gohtml:75
msgctxt "header"
msgid "Departure Date"
msgstr "Date de depart"
#: web/templates/admin/prebooking/index.gohtml:62
#: web/templates/admin/booking/index.gohtml:76
msgctxt "header"
msgid "Holder Name"
msgstr "Nom du titulaire"
#: web/templates/admin/prebooking/index.gohtml:70
msgid "No prebooking found."
msgstr "Aucune pré-réservation trouvée."
#: web/templates/admin/prebooking/results.gohtml:20
#: web/templates/admin/booking/results.gohtml:23
msgctxt "action"
msgid "Load more"
msgstr "Charger plus"
#: web/templates/admin/login.gohtml:6 web/templates/admin/login.gohtml:18
msgctxt "title"
msgid "Login"
@ -2527,20 +2586,11 @@ msgctxt "action"
msgid "Logout"
msgstr "Déconnexion"
#: web/templates/admin/layout.gohtml:92
#: web/templates/admin/booking/form.gohtml:19
#: web/templates/admin/booking/checkin.gohtml:10
#: web/templates/admin/booking/index.gohtml:6
#: web/templates/admin/booking/index.gohtml:16
msgctxt "title"
msgid "Bookings"
msgstr "Réservations"
#: web/templates/admin/layout.gohtml:107
#: web/templates/admin/layout.gohtml:110
msgid "Breadcrumb"
msgstr "Fil dAriane"
#: web/templates/admin/layout.gohtml:119
#: web/templates/admin/layout.gohtml:122
msgid "Camper Version: %s"
msgstr "Camper version: %s"
@ -2651,7 +2701,7 @@ msgctxt "header"
msgid "Decription"
msgstr "Description"
#: web/templates/admin/booking/fields.gohtml:81 pkg/invoice/admin.go:1063
#: web/templates/admin/booking/fields.gohtml:81 pkg/invoice/admin.go:1061
#: pkg/booking/cart.go:232
msgctxt "cart"
msgid "Night"
@ -2688,12 +2738,12 @@ msgctxt "title"
msgid "New Booking"
msgstr "Nouvelle réservation"
#: web/templates/admin/booking/form.gohtml:25
#: web/templates/admin/booking/form.gohtml:30
msgctxt "action"
msgid "Check-in Booking"
msgstr "Enregistrer réservation"
#: web/templates/admin/booking/form.gohtml:28
#: web/templates/admin/booking/form.gohtml:31
msgctxt "action"
msgid "Invoice Booking"
msgstr "Facturer la réservation"
@ -2728,22 +2778,12 @@ msgctxt "action"
msgid "Export Bookings"
msgstr "Exporter les réservations"
#: web/templates/admin/booking/index.gohtml:22
msgctxt "header"
msgid "Arrival Date"
msgstr "Date darrivée"
#: web/templates/admin/booking/index.gohtml:34
msgctxt "input"
msgid "Booking status"
msgstr "Statut de réservation"
#: web/templates/admin/booking/index.gohtml:23
msgctxt "header"
msgid "Departure Date"
msgstr "Date de depart"
#: web/templates/admin/booking/index.gohtml:24
msgctxt "header"
msgid "Holder Name"
msgstr "Nom du titulaire"
#: web/templates/admin/booking/index.gohtml:41
#: web/templates/admin/booking/index.gohtml:85
msgid "No booking found."
msgstr "Aucune réservation trouvée."
@ -2843,7 +2883,7 @@ msgctxt "order product name"
msgid "Campsite Booking"
msgstr "Réservation camping"
#: pkg/payment/public.go:374
#: pkg/payment/public.go:378
msgctxt "subject"
msgid "Booking payment successfully received"
msgstr "Paiement de réservation reçu avec succès"
@ -2851,7 +2891,7 @@ msgstr "Paiement de réservation reçu avec succès"
#: pkg/legal/admin.go:258 pkg/app/user.go:249 pkg/campsite/types/option.go:365
#: pkg/campsite/types/feature.go:272 pkg/campsite/types/admin.go:577
#: pkg/campsite/feature.go:269 pkg/season/admin.go:411
#: pkg/invoice/admin.go:1160 pkg/services/admin.go:316
#: pkg/invoice/admin.go:1158 pkg/services/admin.go:316
#: pkg/surroundings/admin.go:340 pkg/amenity/feature.go:269
#: pkg/amenity/admin.go:283
msgid "Name can not be empty."
@ -2893,7 +2933,7 @@ msgid "Email can not be empty."
msgstr "Le-mail ne peut pas être vide."
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/customer/admin.go:345
#: pkg/company/admin.go:225 pkg/booking/admin.go:441 pkg/booking/public.go:593
#: pkg/company/admin.go:225 pkg/booking/admin.go:582 pkg/booking/public.go:593
msgid "This email is not valid. It should be like name@domain.com."
msgstr "Cette adresse e-mail nest pas valide. Il devrait en être name@domain.com."
@ -2922,7 +2962,7 @@ msgstr "La langue sélectionnée nest pas valide."
msgid "File must be a valid PNG or JPEG image."
msgstr "Le fichier doit être une image PNG ou JPEG valide."
#: pkg/app/admin.go:79
#: pkg/app/admin.go:81
msgid "Access forbidden"
msgstr "Accès interdit"
@ -2950,15 +2990,15 @@ msgstr "Le maximum doit être un nombre entier."
msgid "Maximum must be equal or greater than minimum."
msgstr "Le maximum doit être égal ou supérieur au minimum."
#: pkg/campsite/types/option.go:382 pkg/invoice/admin.go:1161
#: pkg/campsite/types/option.go:382 pkg/invoice/admin.go:1159
msgid "Price can not be empty."
msgstr "Le prix ne peut pas être vide."
#: pkg/campsite/types/option.go:383 pkg/invoice/admin.go:1162
#: pkg/campsite/types/option.go:383 pkg/invoice/admin.go:1160
msgid "Price must be a decimal number."
msgstr "Le prix doit être un nombre décimal."
#: pkg/campsite/types/option.go:384 pkg/invoice/admin.go:1163
#: pkg/campsite/types/option.go:384 pkg/invoice/admin.go:1161
msgid "Price must be zero or greater."
msgstr "Le prix doit être égal ou supérieur à zéro."
@ -3104,7 +3144,7 @@ msgctxt "header"
msgid "Children (aged 2 to 10)"
msgstr "Enfants (de 2 à 10 anys)"
#: pkg/campsite/admin.go:280 pkg/booking/admin.go:417 pkg/booking/public.go:177
#: pkg/campsite/admin.go:280 pkg/booking/admin.go:558 pkg/booking/public.go:177
#: pkg/booking/public.go:232
msgid "Selected campsite type is not valid."
msgstr "Le type demplacement sélectionné nest pas valide."
@ -3143,25 +3183,25 @@ msgid "End date must be a valid date."
msgstr "La date de fin doit être une date valide."
#: pkg/customer/admin.go:326 pkg/company/admin.go:207
#: pkg/booking/checkin.go:297 pkg/booking/public.go:577
#: pkg/booking/checkin.go:300 pkg/booking/public.go:577
msgid "Selected country is not valid."
msgstr "Le pays sélectionné nest pas valide."
#: pkg/customer/admin.go:330 pkg/booking/checkin.go:281
#: pkg/customer/admin.go:330 pkg/booking/checkin.go:284
msgid "Selected ID document type is not valid."
msgstr "Le type de document didentité sélectionné nest pas valide."
#: pkg/customer/admin.go:331 pkg/booking/checkin.go:282
#: pkg/customer/admin.go:331 pkg/booking/checkin.go:285
msgid "ID document number can not be empty."
msgstr "Le numéro de documento didentité ne peut pas être vide."
#: pkg/customer/admin.go:333 pkg/booking/checkin.go:288
#: pkg/booking/checkin.go:289 pkg/booking/admin.go:429
#: pkg/customer/admin.go:333 pkg/booking/checkin.go:291
#: pkg/booking/checkin.go:292 pkg/booking/admin.go:570
#: pkg/booking/public.go:581
msgid "Full name can not be empty."
msgstr "Le nom complet ne peut pas être vide."
#: pkg/customer/admin.go:334 pkg/booking/admin.go:430 pkg/booking/public.go:582
#: pkg/customer/admin.go:334 pkg/booking/admin.go:571 pkg/booking/public.go:582
msgid "Full name must have at least one letter."
msgstr "Le nom complet doit comporter au moins une lettre."
@ -3177,94 +3217,94 @@ msgstr "La ville ne peut pas être vide."
msgid "Postcode can not be empty."
msgstr "Le code postal ne peut pas être vide."
#: pkg/customer/admin.go:340 pkg/company/admin.go:234 pkg/booking/admin.go:436
#: pkg/customer/admin.go:340 pkg/company/admin.go:234 pkg/booking/admin.go:577
#: pkg/booking/public.go:588
msgid "This postcode is not valid."
msgstr "Ce code postal nest pas valide."
#: pkg/customer/admin.go:348 pkg/company/admin.go:220
#: pkg/booking/checkin.go:301 pkg/booking/admin.go:446
#: pkg/booking/checkin.go:304 pkg/booking/admin.go:587
#: pkg/booking/public.go:596
msgid "This phone number is not valid."
msgstr "Ce numéro de téléphone nest pas valide."
#: pkg/invoice/admin.go:681
#: pkg/invoice/admin.go:679
msgctxt "filename"
msgid "invoices.zip"
msgstr "factures.zip"
#: pkg/invoice/admin.go:696
#: pkg/invoice/admin.go:694
msgctxt "filename"
msgid "invoices.ods"
msgstr "factures.ods"
#: pkg/invoice/admin.go:698 pkg/invoice/admin.go:1360 pkg/invoice/admin.go:1367
#: pkg/invoice/admin.go:696 pkg/invoice/admin.go:1358 pkg/invoice/admin.go:1365
msgid "Invalid action"
msgstr "Actin invalide"
#: pkg/invoice/admin.go:863
#: pkg/invoice/admin.go:861
msgid "Selected invoice status is not valid."
msgstr "Lstatut sélectionné nest pas valide."
#: pkg/invoice/admin.go:864
#: pkg/invoice/admin.go:862
msgid "Invoice date can not be empty."
msgstr "La date de facture ne peut pas être vide."
#: pkg/invoice/admin.go:865
#: pkg/invoice/admin.go:863
msgid "Invoice date must be a valid date."
msgstr "La date de facture doit être une date valide."
#: pkg/invoice/admin.go:1023
#: pkg/invoice/admin.go:1021
#, c-format
msgid "Re: booking #%s of %s%s"
msgstr "Réf. : réservation num. %s du %s%s"
#: pkg/invoice/admin.go:1024
#: pkg/invoice/admin.go:1022
msgctxt "to_char"
msgid "MM/DD/YYYY"
msgstr "DD/MM/YYYY"
#: pkg/invoice/admin.go:1151
#: pkg/invoice/admin.go:1149
msgid "Invoice product ID must be an integer."
msgstr "Le ID de produit de facture doit être un entier."
#: pkg/invoice/admin.go:1152
#: pkg/invoice/admin.go:1150
msgid "Invoice product ID one or greater."
msgstr "Le ID de produit de facture doit être égal ou supérieur à un."
#: pkg/invoice/admin.go:1156
#: pkg/invoice/admin.go:1154
msgid "Product ID must be an integer."
msgstr "Le ID de produit doit être un entier."
#: pkg/invoice/admin.go:1157
#: pkg/invoice/admin.go:1155
msgid "Product ID must zero or greater."
msgstr "Le ID de produit doit être égal ou supérieur à zéro."
#: pkg/invoice/admin.go:1166
#: pkg/invoice/admin.go:1164
msgid "Quantity can not be empty."
msgstr "La quantité ne peut pas être vide."
#: pkg/invoice/admin.go:1167
#: pkg/invoice/admin.go:1165
msgid "Quantity must be an integer."
msgstr "La quantité doit être un entier."
#: pkg/invoice/admin.go:1168
#: pkg/invoice/admin.go:1166
msgid "Quantity must one or greater."
msgstr "La quantité doit être égnal ou supérieur à zéro."
#: pkg/invoice/admin.go:1171
#: pkg/invoice/admin.go:1169
msgid "Discount can not be empty."
msgstr "Le rabais ne peut pas être vide."
#: pkg/invoice/admin.go:1172
#: pkg/invoice/admin.go:1170
msgid "Discount must be an integer."
msgstr "Le rabais doit être un entier."
#: pkg/invoice/admin.go:1173 pkg/invoice/admin.go:1174
#: pkg/invoice/admin.go:1171 pkg/invoice/admin.go:1172
msgid "Discount must be a percentage between 0 and 100."
msgstr "Le rabais doit être un pourcentage compris entre 0 et 100."
#: pkg/invoice/admin.go:1178
#: pkg/invoice/admin.go:1176
msgid "Selected tax is not valid."
msgstr "La taxe sélectionnée nest pas valide."
@ -3403,27 +3443,27 @@ msgstr "Le fichier téléchargé ne peut pas être vide."
msgid "Filename can not be empty."
msgstr "Le nom de fichier ne peut pas être vide."
#: pkg/booking/checkin.go:284
#: pkg/booking/checkin.go:287
msgid "ID document issue date must be a valid date."
msgstr "La date de délivrance du document didentité doit être une date valide."
#: pkg/booking/checkin.go:285
#: pkg/booking/checkin.go:288
msgid "ID document issue date must be in the past."
msgstr "La ate de délivrance du document didentité doit être du passé."
#: pkg/booking/checkin.go:290
#: pkg/booking/checkin.go:293
msgid "Selected sex is not valid."
msgstr "Le sexe sélectionné nest pas valide."
#: pkg/booking/checkin.go:291
#: pkg/booking/checkin.go:294
msgid "Birthdate can not be empty"
msgstr "La date de naissance ne peut pas être vide."
#: pkg/booking/checkin.go:292
#: pkg/booking/checkin.go:295
msgid "Birthdate must be a valid date."
msgstr "La date de naissance doit être une date valide."
#: pkg/booking/checkin.go:293
#: pkg/booking/checkin.go:296
msgid "Birthdate must be in the past."
msgstr "La date de naissance doit être du passé."
@ -3447,24 +3487,24 @@ msgctxt "cart"
msgid "Dog"
msgstr "Chien"
#: pkg/booking/admin.go:218
#: pkg/booking/admin.go:236
msgctxt "filename"
msgid "bookings.ods"
msgstr "reservations.ods"
#: pkg/booking/admin.go:435
#: pkg/booking/admin.go:576
msgid "Country can not be empty to validate the postcode."
msgstr "Le pays ne peut pas être vide pour valider le code postal."
#: pkg/booking/admin.go:445
#: pkg/booking/admin.go:586
msgid "Country can not be empty to validate the phone."
msgstr "Le pays ne peut pas être vide pour valider le téléphone."
#: pkg/booking/admin.go:452
#: pkg/booking/admin.go:593
msgid "You must select at least one accommodation."
msgstr "Vous devez sélectionner au moins un hébergement."
#: pkg/booking/admin.go:458
#: pkg/booking/admin.go:599
msgid "The selected accommodations have no available openings in the requested dates."
msgstr "Les hébergements sélectionnés nont pas de disponibilités aux dates demandées."

View File

@ -16,16 +16,20 @@
{{- end }}
{{ define "breadcrumb" -}}
<li><a href="./">{{( pgettext "Bookings" "title" )}}</a></li>
{{ if eq .Status "created" -}}
<li><a href="/admin/prebookings">{{( pgettext "Prebookings" "title" )}}</a></li>
{{- else -}}
<li><a href="./">{{( pgettext "Bookings" "title" )}}</a></li>
{{- end }}
{{- end }}
{{ define "content" -}}
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.adminBookingForm*/ -}}
{{ if .ID -}}
<a href="{{ .URL }}/check-in">{{( pgettext "Check-in Booking" "action" )}}</a>
{{- end }}
{{ if .ID -}}
<a href="/admin/invoices/new?booking={{ .ID }}">{{( pgettext "Invoice Booking" "action" )}}</a>
{{ if ne .Status "created" -}}
<a href="{{ .URL }}/check-in">{{( pgettext "Check-in Booking" "action" )}}</a>
<a href="/admin/invoices/new?booking={{ .ID }}">{{( pgettext "Invoice Booking" "action" )}}</a>
{{- end }}
{{- end }}
<h2>{{ template "title" .}}</h2>
<form id="booking-form"

View File

@ -88,6 +88,9 @@
<li>
<a href="/admin/">{{( pgettext "Dashboard" "title" )}}</a>
</li>
<li>
<a href="/admin/prebookings">{{( pgettext "Prebookings" "title" )}}</a>
</li>
<li>
<a href="/admin/bookings">{{( pgettext "Bookings" "title" )}}</a>
</li>

View File

@ -0,0 +1,72 @@
<!--
SPDX-FileCopyrightText: 2023 jordi fita mas <jordi@tandem.blog>
SPDX-License-Identifier: AGPL-3.0-only
-->
{{ define "title" -}}
{{( pgettext "Prebookings" "title" )}}
{{- end }}
{{ define "breadcrumb" -}}
{{- end }}
{{ define "content" -}}
{{- /*gotype: dev.tandem.ws/tandem/camper/pkg/booking.prebookingIndex*/ -}}
{{ template "filters-toggle" }}
<form class="filters" method="GET" action="/admin/prebookings"
data-hx-target="main" data-hx-boost="true" data-hx-trigger="change,search,submit"
aria-labelledby="filters-toggle"
>
{{ with .Filters }}
<fieldset>
{{ with .HolderName -}}
<label>
{{( pgettext "Holder name" "input" )}}<br>
<input type="text"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
{{ template "error-message" . }}
</label>
{{- end }}
{{ with .FromDate -}}
<label>
{{( pgettext "From date" "input" )}}<br>
<input type="date"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
{{ template "error-message" . }}
</label>
{{- end }}
{{ with .ToDate -}}
<label>
{{( pgettext "To date" "input" )}}<br>
<input type="date"
name="{{ .Name }}" value="{{ .Val }}" {{ template "error-attrs" . }}
><br>
{{ template "error-message" . }}
</label>
{{- end }}
</fieldset>
{{ end }}
{{ if .Filters.HasValue }}
<a href="/admin/prebookings" class="button">{{( pgettext "Reset" "action" )}}</a>
{{ end }}
</form>
<h2>{{( pgettext "Bookings" "title" )}}</h2>
{{ if .Bookings -}}
<table>
<thead>
<tr>
<th scope="col">{{( pgettext "Reference" "header" )}}</th>
<th scope="col">{{( pgettext "Arrival Date" "header" )}}</th>
<th scope="col">{{( pgettext "Departure Date" "header" )}}</th>
<th scope="col">{{( pgettext "Holder Name" "header" )}}</th>
</tr>
</thead>
<tbody>
{{ template "results.gohtml" . }}
</tbody>
</table>
{{ else -}}
<p>{{( gettext "No prebooking found." )}}</p>
{{- end }}
{{- end }}

View File

@ -0,0 +1,25 @@
{{ range .Bookings -}}
<tr>
<td><a href="{{ .URL }}">{{ .Reference }}</a></td>
<td>{{ .ArrivalDate | formatDate }}</td>
<td>{{ .DepartureDate | formatDate }}</td>
<td>{{ .HolderName }}</td>
</tr>
{{- end }}
{{ if .Filters.Cursor.Val }}
<tr>
<td colspan="4">
{{ with .Filters -}}
<form data-hx-get="/admin/prebookings" data-hx-target="closest tr" data-hx-swap="outerHTML">
{{ with .HolderName -}}<input type="hidden" name="{{ .Name }}"
value="{{ .Val }}">{{- end }}
{{ with .FromDate -}}<input type="hidden" name="{{ .Name }}"
value="{{ .Val }}">{{- end }}
{{ with .ToDate -}}<input type="hidden" name="{{ .Name }}" value="{{ .Val }}">{{- end }}
{{ with .Cursor -}}<input type="hidden" name="{{ .Name }}" value="{{ .Val }}">{{- end }}
<button type="submit">{{( pgettext "Load more" "action" )}}</button>
</form>
{{- end }}
<td>
</tr>
{{- end }}