diff --git a/api/src/services/captain-bill.js b/api/src/services/captain-bill.js index 8ca62d3b..6a15a650 100644 --- a/api/src/services/captain-bill.js +++ b/api/src/services/captain-bill.js @@ -5,6 +5,37 @@ const { snapshotFrom } = require('./guest-bill.service'); const Money = require('../utils/currency'); const { ObjectId } = require('mongodb'); +function confirmedPaidProjection(sale, total, monetary) { + if ( + sale.payment_status !== 'Paid' || + sale.payment_correction_pending || + !Number.isInteger(sale.captain_payment_version) || + sale.captain_payment_version < 1 || + ['balance', 'payment_pending'].some( + (key) => sale[key] == null || !Number.isFinite(Number(sale[key])) || Number(sale[key]) !== 0 + ) || + !Number.isFinite(Number(sale.paid_amount)) || + Money.toMinor(sale.paid_amount, monetary) !== total || + !Array.isArray(sale.captain_payments) || + !sale.captain_payments.length + ) + return false; + const ids = new Set(); + let sum = 0; + for (const payment of sale.captain_payments) { + if ( + !payment.id || + ids.has(payment.id) || + !Number.isFinite(Number(payment.amount)) || + Number(payment.amount) <= 0 + ) + return false; + ids.add(payment.id); + sum += Money.toMinor(payment.amount, monetary); + } + return Number.isSafeInteger(sum) && sum === total; +} + async function read(req) { if (!req.user || !allowed(req.user, 'sales')) fail('Permission is required.', 403); const c = await context(req); @@ -57,21 +88,28 @@ async function read(req) { if (plans.some((plan) => plan.purpose === 'order-restructure')) fail('This order is being updated. Please retry.', 409); let paidMinor = 0; + let projectedReceipt = false; for (const sale of sales) { const total = snapshotFrom([sale], c.branch, table.trim(), { allowZero: true }).totalMinor; let paid; if (sale.captain_payment_plan) { // The journal is authoritative even if a payment's sale projection was interrupted. const plan = plans.find((row) => String(row._id) === String(sale.captain_payment_plan)); - if (!plan) + if (!plan && confirmedPaidProjection(sale, total, monetary)) { + // Journals remain at the payment authority. Synced completed receipts + // are readable, but must never enable collection on another server. + paid = total; + projectedReceipt = true; + } else if (!plan) fail( 'Payment status is not confirmed. Retry this request; do not collect the money again.', 409 ); - paid = (plan.payments || []).reduce( - (sum, payment) => sum + Number(payment.allocations?.[String(sale._id)] || 0), - 0 - ); + if (plan) + paid = (plan.payments || []).reduce( + (sum, payment) => sum + Number(payment.allocations?.[String(sale._id)] || 0), + 0 + ); } else paid = sale.payment_status === 'Paid' @@ -85,7 +123,8 @@ async function read(req) { ...snapshot, paidMinor, dueMinor: snapshot.totalMinor - paidMinor, - collectEnabled: !receipt && require('./captain-payments').settings(c.branch).enabled, + collectEnabled: + !receipt && !projectedReceipt && require('./captain-payments').settings(c.branch).enabled, orderIds: sales.map((sale) => String(sale._id)), serverTime: new Date().toISOString(), }; diff --git a/api/src/services/seating-claims.js b/api/src/services/seating-claims.js index 8e42390d..12580989 100644 --- a/api/src/services/seating-claims.js +++ b/api/src/services/seating-claims.js @@ -1241,7 +1241,35 @@ async function forEdit(db, scope, order, next, { settling = false, cancelling = ); return own || null; } - if (order.seating_request_id && !own) fail('The seating group changed. Refresh this order.', 409); + if (order.seating_request_id && !own) { + // Reservation journals are local to their authority. Editing dishes on a + // synced open sale consumes no seats when the complete seating is unchanged. + const unchanged = + destination === String(order.table_number || '') && + (!next.dine_type || next.dine_type === (order.dine_type || 'Dine-in')) && + (next.guests == null || + next.guests === '' || + Number(next.guests) === Number(order.person_count || 0)); + const knownClaim = claims.some((claim) => claim.order_id === String(order._id)); + const conflictingOperation = claims.some( + (claim) => + !terminal(claim) && + capacityChanging(claim) && + (claim.tables || []).some((table) => + (order.seating_table_ids || []).map(String).includes(String(table)) + ) + ); + if ( + unchanged && + !knownClaim && + !conflictingOperation && + !order.floor_closed_at && + order.payment_status === 'Unpaid' && + order.sale_process === 'KOT' + ) + return null; + fail('The seating group changed. Refresh this order.', 409); + } if ( own && (destination !== String(order.table_number || '') || diff --git a/api/tests/unit/services/captain-bill.test.js b/api/tests/unit/services/captain-bill.test.js index 6c319a6f..793f5a42 100644 --- a/api/tests/unit/services/captain-bill.test.js +++ b/api/tests/unit/services/captain-bill.test.js @@ -216,3 +216,45 @@ test('completed paid receipts target one sale and reprint its payment without mo service.read({ ...r, tenantContext: { branchId: new ObjectId(), licenseId: license } }) ).rejects.toMatchObject({ status: 403 }); }); + +test('remote paid projections allow read-only bills and reject inconsistent amounts', async () => { + const projection = { + dine_type: 'Take away', + floor_lifecycle: true, + payment_status: 'Paid', + captain_payment_plan: 'remote', + captain_payment_version: 1, + paid_amount: 105, + balance: 0, + payment_pending: 0, + captain_payments: [{ id: 'p1', amount: 105 }], + }; + const request = { ...req(), query: { saleId: String(sale._id), receipt: 'true' } }; + await db + .collection('sales') + .updateOne({ _id: sale._id }, { $set: { ...projection, floor_closed_at: new Date() } }); + expect(await service.read(request)).toMatchObject({ + paidMinor: 10500, + dueMinor: 0, + collectEnabled: false, + }); + for (const change of [ + { paid_amount: 100 }, + { balance: 1 }, + { payment_pending: 1 }, + { captain_payment_version: 0 }, + { captain_payments: [{ id: 'p1', amount: 100 }] }, + { + captain_payments: [ + { id: 'same', amount: 50 }, + { id: 'same', amount: 55 }, + ], + }, + ]) { + await db + .collection('sales') + .updateOne({ _id: sale._id }, { $set: { ...projection, ...change } }); + await expect(service.read(request)).rejects.toMatchObject({ status: 409 }); + } + expect(await db.collection('captain_payment_plans').countDocuments()).toBe(0); +}); diff --git a/api/tests/unit/services/seating-claims.test.js b/api/tests/unit/services/seating-claims.test.js index 8fd16a9e..3dde4af1 100644 --- a/api/tests/unit/services/seating-claims.test.js +++ b/api/tests/unit/services/seating-claims.test.js @@ -2983,3 +2983,32 @@ test.each([ seating.forEdit(db, scope, order, { table: 'T1', guests: 2 }, { settling: true }) ).rejects.toMatchObject({ status: 409 }); }); + +test('remote unpaid dish edits preserve seating and cannot reopen closed sales', async () => { + const order = { + _id: new ObjectId(), + seating_request_id: 'remote', + seating_table_ids: [ids[0]], + table_number: 'T1', + person_count: 2, + dine_type: 'Dine-in', + sale_process: 'KOT', + payment_status: 'Unpaid', + }; + const next = { table: 'T1', guests: 2, dine_type: 'Dine-in', sale_process: 'KOT' }; + await expect(seating.forEdit(db, scope, order, next)).resolves.toBeNull(); + await expect(seating.reserveEditCapacity(db, scope, order, next)).resolves.toBeNull(); + for (const change of [{ table: 'T2' }, { guests: 3 }, { guests: 1 }, { dine_type: 'Take away' }]) + await expect(seating.forEdit(db, scope, order, { ...next, ...change })).rejects.toMatchObject({ + status: 409, + }); + for (const change of [ + { payment_status: 'Paid' }, + { floor_closed_at: new Date() }, + { sale_process: 'Hold' }, + ]) + await expect(seating.forEdit(db, scope, { ...order, ...change }, next)).rejects.toMatchObject({ + status: 409, + }); + expect(await db.collection('table_seating').countDocuments()).toBe(0); +}); diff --git a/frontend/modules/ask_posnic.html b/frontend/modules/ask_posnic.html index ae049fea..2af373f1 100644 --- a/frontend/modules/ask_posnic.html +++ b/frontend/modules/ask_posnic.html @@ -1,6 +1,6 @@
' + esc(P.i18n.t('lang_submission_resolve_first', 'Resolve the previous submission before sending changes.')) + '
', + const modal = dialog(P.i18n.t('lang_review_this_round', 'Review this round'), + '' + esc(P.i18n.t('lang_submission_resolve_first', 'Resolve the previous submission before sending changes.')) + '
' + + (state.draft.saleId ? button('Review latest order', 'reviewPendingOrder') : ''), async (_, modal) => { await send(); if (state.draft?.intent) return; modal.close(); if (afterRecovery) afterRecovery(); }, P.i18n.t('lang_retry_saved_send', 'Retry saved send')); + const review = modal.querySelector('[data-action=reviewPendingOrder]'); + if (review) review.onclick = () => { + if (modal.querySelector('[type=submit]').disabled) return; + modal.close(); + run(reviewLatestOrder); + }; return true; } function customer() { @@ -810,7 +829,7 @@ notify(error.message); return; } - if (d.saleId && error.message === 'order_changed') { + if (d.saleId && ['order_changed', 'The seating group changed. Refresh this order.'].includes(error.message)) { // This is an explicit refusal, not an unknown network outcome. // Reconcile accepted line IDs before unlocking the remaining draft. const latest = await api('get', 'sales/' + d.saleId); @@ -1252,16 +1271,7 @@ default: return text; } }; else if (a === 'offmenu') await offmenu(); else if (a === 'send') await send(); else if (a === 'rebase') { - const d = state.draft; - if (!d.saleId) { pendingSendReview(); return; } - const latest = await api('get', 'sales/' + d.saleId); - const accepted = new Set((latest.items || []).map((l) => l.line_id)); - d.items = d.items.filter((l) => !accepted.has(l.line_id)); - delete d.intent; - state.sale = latest; - persist(); - render(); - notify('Latest order loaded. Review the remaining dishes before sending.'); + await reviewLatestOrder(); } else if (a === 'discard') { if (state.draft.intent) throw new Error( diff --git a/languages/_english.json b/languages/_english.json index d82bd039..5adafd9e 100644 --- a/languages/_english.json +++ b/languages/_english.json @@ -282,7 +282,6 @@ "lang_an_hour_ago": "1 hour ago", "lang_an_item_needs_a_name": "An item needs a name.", "lang_an_item_price_overrides_the_percentage_adj": "An item price overrides the percentage adjustment.", - "lang_an_owner_can_enable_ask_posnic_in_settings": "An owner can enable Ask Posnic in Settings → Features. Your normal POS workflows remain available.", "lang_and_begin_your_service": "and begin your service!", "lang_another_posnic_account": "Another posnic account ?", "lang_any": "Any", @@ -361,7 +360,6 @@ "lang_ask_posnic": "Ask Posnic", "lang_ask_posnic_about_your_shop": "Ask Posnic about your shop…", "lang_ask_posnic_is_off": "Ask Posnic is off", - "lang_ask_posnic_is_off_enable_it_in": "Ask Posnic is off. Enable it in", "lang_ask_prepare_sale": "Prepare sale for checkout", "lang_ask_provider_hint": "With your own provider account, usage is billed directly by that provider. Managed AI uses your Posnic subscription and allowance. Keys are stored on the server and never shown again after saving.", "lang_ask_provider_off": "Off - direct reports and local help remain available", @@ -1439,7 +1437,6 @@ "lang_empty_return": "Return Items Order Empty", "lang_en_in": "en-IN", "lang_en_us": "en_US", - "lang_enable_ask_posnic": "Enable Ask Posnic", "lang_enable_cashback": "Enable cashback", "lang_enable_disable_stock_log": "Enable/Disable Stock Log", "lang_enable_expiry_reminders": "Enable expiry reminders", @@ -2868,7 +2865,6 @@ "lang_optional_dietary_label_serving_periods_and": "Optional · dietary label, serving periods and modifiers", "lang_optional_for_own_key_accounts_sends_publis": "Optional for own-key accounts. Sends published knowledge and help questions to OpenAI for embeddings, billed to your key. Vectors stay in this installation. Supports up to 5,000 published passages. Cloud managed search uses your managed allowance.", "lang_optional_for_the_payout_report": "(optional - for the payout report)", - "lang_optional_help_shop_insights_and_confirmed": "Optional help, shop insights and confirmed actions. Off by default. Enable it to show Ask Posnic; manage its knowledge and access in AI settings.", "lang_optional_printed_on_the_invoice": "Optional - printed on the invoice", "lang_optional_swipe_to_clock_in_approve": "(optional - swipe to clock in / approve)", "lang_options": "Options", @@ -4589,7 +4585,6 @@ "lang_to_3": " To : ", "lang_to_date": "To date", "lang_to_email_address": "To email address", - "lang_to_use_questions_insights_actions_and_sche": "to use questions, insights, actions and schedules.", "lang_today_and_upcoming": "Today and upcoming", "lang_token": "Token", "lang_token_copied": "Token copied", diff --git a/languages/server/ar.json b/languages/server/ar.json index 21b97fc3..d6b681d2 100644 --- a/languages/server/ar.json +++ b/languages/server/ar.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "راجع تصحيح الفاتورة المدفوعة قبل الحفظ.", "Choose a saved customer for customer credit.": "اختر عميلًا محفوظًا للحصول على رصيد العميل.", "Exact numeric search must be on or off": "يجب تشغيل البحث الرقمي الدقيق أو إيقاف تشغيله", - "Item not found or selling price is held. Review it in Edit prices.": "لم يتم العثور على السلعة أو تم الاحتفاظ بسعر البيع. قم بمراجعتها في تحرير الأسعار." + "Item not found or selling price is held. Review it in Edit prices.": "لم يتم العثور على السلعة أو تم الاحتفاظ بسعر البيع. قم بمراجعتها في تحرير الأسعار.", + "Password must contain between 5 and 20 characters": "يجب أن تحتوي كلمة المرور على ما بين 5 و 20 حرفًا" } diff --git a/languages/server/bg.json b/languages/server/bg.json index 41e626d2..0459eb45 100644 --- a/languages/server/bg.json +++ b/languages/server/bg.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Прегледайте корекцията на платената сметка, преди да спестите.", "Choose a saved customer for customer credit.": "Изберете запазен клиент за клиентски кредит.", "Exact numeric search must be on or off": "Точното числово търсене трябва да е включено или изключено", - "Item not found or selling price is held. Review it in Edit prices.": "Артикулът не е намерен или се задържа продажната цена. Прегледайте го в Редактиране на цените." + "Item not found or selling price is held. Review it in Edit prices.": "Артикулът не е намерен или се задържа продажната цена. Прегледайте го в Редактиране на цените.", + "Password must contain between 5 and 20 characters": "Паролата трябва да съдържа между 5 и 20 знака" } diff --git a/languages/server/bn.json b/languages/server/bn.json index 5f9bc5d4..2205f3f3 100644 --- a/languages/server/bn.json +++ b/languages/server/bn.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "সঞ্চয় করার আগে প্রদত্ত বিল সংশোধন পর্যালো", "Choose a saved customer for customer credit.": "গ্রাহক ক্রেডিটের জন্য সংরক্ষিত গ্রাহক চয়ন করুন।", "Exact numeric search must be on or off": "সঠিক সংখ্যাগত অনুসন্ধান অবশ্যই চালু বা বন্ধ থাকতে হবে", - "Item not found or selling price is held. Review it in Edit prices.": "আইটেম পাওয়া যায় নি বা বিক্রয় মূল্য ধরে রাখা হয়। সম্পাদনা মূল্যে এটি পর্যালোচনা করুন।" + "Item not found or selling price is held. Review it in Edit prices.": "আইটেম পাওয়া যায় নি বা বিক্রয় মূল্য ধরে রাখা হয়। সম্পাদনা মূল্যে এটি পর্যালোচনা করুন।", + "Password must contain between 5 and 20 characters": "পাসওয়ার্ডে অবশ্যই 5 থেকে 20 অক্ষরের মধ্যে থাকতে হবে" } diff --git a/languages/server/bs.json b/languages/server/bs.json index 67519650..33d4ddd4 100644 --- a/languages/server/bs.json +++ b/languages/server/bs.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pregledajte ispravljanje plaćenog računa prije uštede.", "Choose a saved customer for customer credit.": "Odaberite sačuvanog kupca za kredit klijenta.", "Exact numeric search must be on or off": "Tačna numerička pretraga mora biti uključena ili isključena", - "Item not found or selling price is held. Review it in Edit prices.": "Artikal nije pronađen ili se održava prodajna cijena. Pregledajte ga u Uredi cijene." + "Item not found or selling price is held. Review it in Edit prices.": "Artikal nije pronađen ili se održava prodajna cijena. Pregledajte ga u Uredi cijene.", + "Password must contain between 5 and 20 characters": "Lozinka mora sadržavati između 5 i 20 znakova" } diff --git a/languages/server/cs.json b/languages/server/cs.json index 10283db9..244d434f 100644 --- a/languages/server/cs.json +++ b/languages/server/cs.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Před uložením zkontrolujte opravu zaplaceného účtu.", "Choose a saved customer for customer credit.": "Vyberte uloženého zákazníka pro zákaznický kredit.", "Exact numeric search must be on or off": "Přesné číselné vyhledávání musí být zapnuto nebo vypnuto", - "Item not found or selling price is held. Review it in Edit prices.": "Položka nenalezena nebo je zachována prodejní cena. Zkontrolujte to v Upravit ceny." + "Item not found or selling price is held. Review it in Edit prices.": "Položka nenalezena nebo je zachována prodejní cena. Zkontrolujte to v Upravit ceny.", + "Password must contain between 5 and 20 characters": "Heslo musí obsahovat 5 až 20 znaků" } diff --git a/languages/server/da.json b/languages/server/da.json index dec28ef0..4c94d4e9 100644 --- a/languages/server/da.json +++ b/languages/server/da.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Gennemgå den betalte regningskorrektion, før du gemmer.", "Choose a saved customer for customer credit.": "Vælg en gemt kunde til kundekredit.", "Exact numeric search must be on or off": "Præcis numerisk søgning skal være slået til eller fra", - "Item not found or selling price is held. Review it in Edit prices.": "Varen blev ikke fundet, eller salgsprisen holdes. Gennemgå det i Rediger priser." + "Item not found or selling price is held. Review it in Edit prices.": "Varen blev ikke fundet, eller salgsprisen holdes. Gennemgå det i Rediger priser.", + "Password must contain between 5 and 20 characters": "Adgangskoden skal indeholde mellem 5 og 20 tegn" } diff --git a/languages/server/de.json b/languages/server/de.json index 5fc7a5ca..64eb8f03 100644 --- a/languages/server/de.json +++ b/languages/server/de.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Überprüfen Sie die Korrektur der bezahlten Rechnung, bevor Sie speichern.", "Choose a saved customer for customer credit.": "Wählen Sie einen gespeicherten Kunden für die Kundengutschrift aus.", "Exact numeric search must be on or off": "Die exakte numerische Suche muss aktiviert oder deaktiviert sein", - "Item not found or selling price is held. Review it in Edit prices.": "Der Artikel wurde nicht gefunden oder der Verkaufspreis wurde nicht gefunden. Überprüfe es unter Preise bearbeiten." + "Item not found or selling price is held. Review it in Edit prices.": "Der Artikel wurde nicht gefunden oder der Verkaufspreis wurde nicht gefunden. Überprüfe es unter Preise bearbeiten.", + "Password must contain between 5 and 20 characters": "Das Passwort muss zwischen 5 und 20 Zeichen lang sein" } diff --git a/languages/server/el.json b/languages/server/el.json index 79ec1efd..36397780 100644 --- a/languages/server/el.json +++ b/languages/server/el.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Ελέγξτε τη διόρθωση του πληρωμένου λογαριασμού πριν από την αποθήκευση.", "Choose a saved customer for customer credit.": "Επιλέξτε έναν αποθηκευμένο πελάτη για πίστωση πελάτη.", "Exact numeric search must be on or off": "Η ακριβής αριθμητική αναζήτηση πρέπει να είναι ενεργοποιημένη ή απενεργοποιημένη", - "Item not found or selling price is held. Review it in Edit prices.": "Το αντικείμενο δεν βρέθηκε ή διατηρείται η τιμή πώλησης. Ελέγξτε το στην Επεξεργασία τιμών." + "Item not found or selling price is held. Review it in Edit prices.": "Το αντικείμενο δεν βρέθηκε ή διατηρείται η τιμή πώλησης. Ελέγξτε το στην Επεξεργασία τιμών.", + "Password must contain between 5 and 20 characters": "Ο κωδικός πρόσβασης πρέπει να περιέχει μεταξύ 5 και 20 χαρακτήρων" } diff --git a/languages/server/es.json b/languages/server/es.json index d0da00d0..af03bcec 100644 --- a/languages/server/es.json +++ b/languages/server/es.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Revisa la corrección de las facturas pagadas antes de ahorrar.", "Choose a saved customer for customer credit.": "Elige un cliente guardado para el crédito del cliente.", "Exact numeric search must be on or off": "La búsqueda numérica exacta debe estar activada o desactivada", - "Item not found or selling price is held. Review it in Edit prices.": "No se encontró el artículo o se retuvo el precio de venta. Revísalo en Editar precios." + "Item not found or selling price is held. Review it in Edit prices.": "No se encontró el artículo o se retuvo el precio de venta. Revísalo en Editar precios.", + "Password must contain between 5 and 20 characters": "La contraseña debe contener entre 5 y 20 caracteres" } diff --git a/languages/server/et.json b/languages/server/et.json index 7e0b92dc..5a436d82 100644 --- a/languages/server/et.json +++ b/languages/server/et.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Enne säästmist vaadake üle tasutud arve korrigeerimine.", "Choose a saved customer for customer credit.": "Valige kliendikrediidi saamiseks salvestatud klient.", "Exact numeric search must be on or off": "Täpne numbriline otsing peab olema sisse või välja lülitatud", - "Item not found or selling price is held. Review it in Edit prices.": "Kauba ei leitud või müügihinda hoitakse. Vaadake see üle jaotises Muuda hindu." + "Item not found or selling price is held. Review it in Edit prices.": "Kauba ei leitud või müügihinda hoitakse. Vaadake see üle jaotises Muuda hindu.", + "Password must contain between 5 and 20 characters": "Parool peab sisaldama 5-20 tähemärki" } diff --git a/languages/server/fa.json b/languages/server/fa.json index 6c9fd1e3..b9b458fe 100644 --- a/languages/server/fa.json +++ b/languages/server/fa.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "قبل از صرفه جویی، اصلاح قبض پرداخت شده را بررسی کنید.", "Choose a saved customer for customer credit.": "مشتری ذخیره شده را برای اعتبار مشتری انتخاب کنید.", "Exact numeric search must be on or off": "جستجوی عددی دقیق باید روشن یا خاموش باشد", - "Item not found or selling price is held. Review it in Edit prices.": "مورد یافت نشد یا قیمت فروش حفظ شده است. آن را در ویرایش قیمت ها مرور کنید." + "Item not found or selling price is held. Review it in Edit prices.": "مورد یافت نشد یا قیمت فروش حفظ شده است. آن را در ویرایش قیمت ها مرور کنید.", + "Password must contain between 5 and 20 characters": "رمز عبور باید حاوی بین 5 تا 20 کاراکتر باشد" } diff --git a/languages/server/fi.json b/languages/server/fi.json index 9fc06abf..935405e2 100644 --- a/languages/server/fi.json +++ b/languages/server/fi.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Tarkista maksetun laskun korjaus ennen tallentamista.", "Choose a saved customer for customer credit.": "Valitse tallennettu asiakas asiakasluottoa varten.", "Exact numeric search must be on or off": "Tarkan numeerisen haun on oltava käytössä tai pois päältä", - "Item not found or selling price is held. Review it in Edit prices.": "Tuotetta ei löydy tai myyntihinta pidetään voimassa. Tarkista se kohdassa Muokkaa hintoja." + "Item not found or selling price is held. Review it in Edit prices.": "Tuotetta ei löydy tai myyntihinta pidetään voimassa. Tarkista se kohdassa Muokkaa hintoja.", + "Password must contain between 5 and 20 characters": "Salasanan tulee sisältää 5-20 merkkiä" } diff --git a/languages/server/fr.json b/languages/server/fr.json index bb898251..5a1f25ba 100644 --- a/languages/server/fr.json +++ b/languages/server/fr.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Vérifiez la correction de la facture payée avant d'économiser.", "Choose a saved customer for customer credit.": "Choisissez un client enregistré pour obtenir un crédit client.", "Exact numeric search must be on or off": "La recherche numérique exacte doit être activée ou désactivée", - "Item not found or selling price is held. Review it in Edit prices.": "L'article n'a pas été trouvé ou le prix de vente est maintenu. Regardez-le dans Modifier les prix." + "Item not found or selling price is held. Review it in Edit prices.": "L'article n'a pas été trouvé ou le prix de vente est maintenu. Regardez-le dans Modifier les prix.", + "Password must contain between 5 and 20 characters": "Le mot de passe doit contenir entre 5 et 20 caractères" } diff --git a/languages/server/ga.json b/languages/server/ga.json index 35835e69..f5c0002f 100644 --- a/languages/server/ga.json +++ b/languages/server/ga.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Déan athbhreithniú ar an gceartú bille íoctha", "Choose a saved customer for customer credit.": "Roghnaigh custaiméir shábháilte le haghaidh creidmheasa", "Exact numeric search must be on or off": "Caithfidh cuardach uimhriúil cruinn a bheith ar nó as", - "Item not found or selling price is held. Review it in Edit prices.": "Mír nach bhfuarthas nó coimeádtar praghas díola. Déan athbhreithniú air i Eagar praghsanna" + "Item not found or selling price is held. Review it in Edit prices.": "Mír nach bhfuarthas nó coimeádtar praghas díola. Déan athbhreithniú air i Eagar praghsanna", + "Password must contain between 5 and 20 characters": "Caithfidh idir 5 agus 20 carachtar a bheith i bhfocal faire" } diff --git a/languages/server/gu.json b/languages/server/gu.json index c4c6883a..4428fa15 100644 --- a/languages/server/gu.json +++ b/languages/server/gu.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "બચત કરતા પહેલા ચૂકવેલ બિલ સુધારાની સમીક્ષા કરો.", "Choose a saved customer for customer credit.": "ગ્રાહક ક્રેડિટ માટે સાચવેલા ગ્રાહક પસંદ કરો.", "Exact numeric search must be on or off": "ચોક્કસ આંકડાકીય શોધ ચાલુ અથવા બંધ હોવી આવશ્યક છે", - "Item not found or selling price is held. Review it in Edit prices.": "આઇટમ મળી નથી અથવા વેચાણની કિંમત રાખવામાં આવી છે. કિંમતોમાં તેની સમીક્ષા કરો." + "Item not found or selling price is held. Review it in Edit prices.": "આઇટમ મળી નથી અથવા વેચાણની કિંમત રાખવામાં આવી છે. કિંમતોમાં તેની સમીક્ષા કરો.", + "Password must contain between 5 and 20 characters": "પાસવર્ડમાં 5 થી 20 અક્ષરો હોવા આવશ્યક છે" } diff --git a/languages/server/he.json b/languages/server/he.json index 46f29f78..e2ec7f1a 100644 --- a/languages/server/he.json +++ b/languages/server/he.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "בדוק את תיקון החשבון ששולם לפני השמירה.", "Choose a saved customer for customer credit.": "בחר לקוח שנשמר עבור אשראי לקוח.", "Exact numeric search must be on or off": "חיפוש מספרי מדויק חייב להיות מופעל או כבוי", - "Item not found or selling price is held. Review it in Edit prices.": "הפריט לא נמצא או מחיר המכירה מוחזק. סקור אותו בעריכת מחירים." + "Item not found or selling price is held. Review it in Edit prices.": "הפריט לא נמצא או מחיר המכירה מוחזק. סקור אותו בעריכת מחירים.", + "Password must contain between 5 and 20 characters": "הסיסמה חייבת להכיל בין 5 ל -20 תווים" } diff --git a/languages/server/hi.json b/languages/server/hi.json index 39380106..3b6bd83e 100644 --- a/languages/server/hi.json +++ b/languages/server/hi.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "बचत करने से पहले भुगतान किए गए बिल सुधार की समीक्षा करें।", "Choose a saved customer for customer credit.": "ग्राहक क्रेडिट के लिए सहेजा गया ग्राहक चुनें।", "Exact numeric search must be on or off": "सटीक संख्यात्मक खोज चालू या बंद होनी चाहिए।", - "Item not found or selling price is held. Review it in Edit prices.": "आइटम नहीं मिला या बिक्री मूल्य होल्ड किया गया है। कीमतों को संपादित करें में इसकी समीक्षा करें।" + "Item not found or selling price is held. Review it in Edit prices.": "आइटम नहीं मिला या बिक्री मूल्य होल्ड किया गया है। कीमतों को संपादित करें में इसकी समीक्षा करें।", + "Password must contain between 5 and 20 characters": "पासवर्ड में 5 से 20 अक्षर होने चाहिए" } diff --git a/languages/server/hr.json b/languages/server/hr.json index f8bf186d..046bf4c4 100644 --- a/languages/server/hr.json +++ b/languages/server/hr.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pregledajte ispravljanje plaćenog računa prije spremanja.", "Choose a saved customer for customer credit.": "Odaberite spremljenog kupca za kredit kupca.", "Exact numeric search must be on or off": "Točno numeričko pretraživanje mora biti uključeno ili isključeno", - "Item not found or selling price is held. Review it in Edit prices.": "Artikal nije pronađen ili se zadržava prodajna cijena. Pregledajte ga u Uredi cijene." + "Item not found or selling price is held. Review it in Edit prices.": "Artikal nije pronađen ili se zadržava prodajna cijena. Pregledajte ga u Uredi cijene.", + "Password must contain between 5 and 20 characters": "Lozinka mora sadržavati između 5 i 20 znakova" } diff --git a/languages/server/hu.json b/languages/server/hu.json index 5683606b..b4e6a1e8 100644 --- a/languages/server/hu.json +++ b/languages/server/hu.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Megtakarítás előtt tekintse át a fizetett számla korrekcióját.", "Choose a saved customer for customer credit.": "Válasszon egy mentett ügyfelet az ügyfélhitelhez.", "Exact numeric search must be on or off": "A pontos numerikus keresésnek be- vagy kikapcsolva kell lennie", - "Item not found or selling price is held. Review it in Edit prices.": "A tétel nem található, vagy az eladási ár megmarad. Tekintse át az Árak szerkesztése menüpontban." + "Item not found or selling price is held. Review it in Edit prices.": "A tétel nem található, vagy az eladási ár megmarad. Tekintse át az Árak szerkesztése menüpontban.", + "Password must contain between 5 and 20 characters": "A jelszónak 5 és 20 karaktert kell tartalmaznia" } diff --git a/languages/server/id.json b/languages/server/id.json index 3b978654..2c1a5b11 100644 --- a/languages/server/id.json +++ b/languages/server/id.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Tinjau koreksi tagihan berbayar sebelum menabung.", "Choose a saved customer for customer credit.": "Pilih pelanggan yang disimpan untuk kredit pelanggan.", "Exact numeric search must be on or off": "Pencarian numerik yang tepat harus aktif atau nonaktif", - "Item not found or selling price is held. Review it in Edit prices.": "Barang tidak ditemukan atau harga jual dipegang. Tinjau di Edit harga." + "Item not found or selling price is held. Review it in Edit prices.": "Barang tidak ditemukan atau harga jual dipegang. Tinjau di Edit harga.", + "Password must contain between 5 and 20 characters": "Kata sandi harus berisi antara 5 dan 20 karakter" } diff --git a/languages/server/is.json b/languages/server/is.json index 29d8004c..b017bd44 100644 --- a/languages/server/is.json +++ b/languages/server/is.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Farið yfir leiðréttingu greidds reiknings áður en vistað er.", "Choose a saved customer for customer credit.": "Veldu vistaðan viðskiptavin fyrir inneign viðskiptavina.", "Exact numeric search must be on or off": "Nákvæm talnaleit verður að vera kveikt eða slökkt", - "Item not found or selling price is held. Review it in Edit prices.": "Hlutur fannst ekki eða söluverð er haldið. Skoðaðu það í Breyta verði." + "Item not found or selling price is held. Review it in Edit prices.": "Hlutur fannst ekki eða söluverð er haldið. Skoðaðu það í Breyta verði.", + "Password must contain between 5 and 20 characters": "Lykilorð verður að innihalda á milli 5 og 20 stafi" } diff --git a/languages/server/it.json b/languages/server/it.json index 5e0b1974..88fe7460 100644 --- a/languages/server/it.json +++ b/languages/server/it.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Controlla la correzione della fattura pagata prima di salvare.", "Choose a saved customer for customer credit.": "Scegli un cliente salvato per il credito cliente.", "Exact numeric search must be on or off": "La ricerca numerica esatta deve essere attivata o disattivata", - "Item not found or selling price is held. Review it in Edit prices.": "L'articolo non è stato trovato o il prezzo di vendita è stato trattenuto. Rivedilo in Modifica prezzi." + "Item not found or selling price is held. Review it in Edit prices.": "L'articolo non è stato trovato o il prezzo di vendita è stato trattenuto. Rivedilo in Modifica prezzi.", + "Password must contain between 5 and 20 characters": "La password deve contenere da 5 a 20 caratteri" } diff --git a/languages/server/ja.json b/languages/server/ja.json index 7bffdb57..25e32b3a 100644 --- a/languages/server/ja.json +++ b/languages/server/ja.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "保存する前に、支払い済み請求書の修正を確認してください。", "Choose a saved customer for customer credit.": "顧客クレジット用の保存済み顧客を選択してください。", "Exact numeric search must be on or off": "完全数値検索はオンまたはオフにする必要があります", - "Item not found or selling price is held. Review it in Edit prices.": "商品が見つからない、または販売価格が保留になっています。「価格の編集」で確認してください。" + "Item not found or selling price is held. Review it in Edit prices.": "商品が見つからない、または販売価格が保留になっています。「価格の編集」で確認してください。", + "Password must contain between 5 and 20 characters": "パスワードは5文字から20文字以内でなければなりません" } diff --git a/languages/server/kn.json b/languages/server/kn.json index 36d25d7b..f7a0bc58 100644 --- a/languages/server/kn.json +++ b/languages/server/kn.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "ಉಳಿಸುವ ಮೊದಲು ಪಾವತಿಸಿದ ಬಿಲ್ ತಿದ್ದುಪಡಿಯನ್ನು ಪರಿಶೀಲಿಸಿ.", "Choose a saved customer for customer credit.": "ಗ್ರಾಹಕ ಕ್ರೆಡಿಟ್ಗಾಗಿ ಉಳಿಸಿದ ಗ್ರಾಹಕರನ್ನು ಆರಿಸಿ.", "Exact numeric search must be on or off": "ನಿಖರವಾದ ಸಂಖ್ಯಾ ಹುಡುಕಾಟ ಆನ್ ಅಥವಾ ಆಫ್ ಆಗಿರಬೇಕು", - "Item not found or selling price is held. Review it in Edit prices.": "ಐಟಂ ಕಂಡುಬಂದಿಲ್ಲ ಅಥವಾ ಮಾರಾಟದ ಬೆಲೆ ನಡೆಯುತ್ತದೆ. ಸಂಪಾದಿಸಿ ಬೆಲೆಗಳಲ್ಲಿ ಅದನ್ನು ಪರಿಶೀಲಿಸಿ." + "Item not found or selling price is held. Review it in Edit prices.": "ಐಟಂ ಕಂಡುಬಂದಿಲ್ಲ ಅಥವಾ ಮಾರಾಟದ ಬೆಲೆ ನಡೆಯುತ್ತದೆ. ಸಂಪಾದಿಸಿ ಬೆಲೆಗಳಲ್ಲಿ ಅದನ್ನು ಪರಿಶೀಲಿಸಿ.", + "Password must contain between 5 and 20 characters": "ಪಾಸ್ವರ್ಡ್ 5 ರಿಂದ 20 ಅಕ್ಷರಗಳ ನಡುವೆ ಇರಬೇಕು" } diff --git a/languages/server/ko.json b/languages/server/ko.json index 9d4fee68..9429c0d4 100644 --- a/languages/server/ko.json +++ b/languages/server/ko.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "저장하기 전에 지불 청구서 수정을 검토하십시오.", "Choose a saved customer for customer credit.": "고객 크레딧으로 사용할 저장된 고객을 선택합니다.", "Exact numeric search must be on or off": "정확한 숫자 검색을 켜거나 꺼야 합니다.", - "Item not found or selling price is held. Review it in Edit prices.": "아이템을 찾을 수 없거나 판매 가격이 보류되었습니다.가격 편집에서 검토하세요." + "Item not found or selling price is held. Review it in Edit prices.": "아이템을 찾을 수 없거나 판매 가격이 보류되었습니다.가격 편집에서 검토하세요.", + "Password must contain between 5 and 20 characters": "비밀번호는 5~20자 사이여야 합니다." } diff --git a/languages/server/lt.json b/languages/server/lt.json index 1140c83d..f3ecf2df 100644 --- a/languages/server/lt.json +++ b/languages/server/lt.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Prieš taupydami peržiūrėkite apmokėtos sąskaitos korekciją.", "Choose a saved customer for customer credit.": "Pasirinkite išsaugotą klientą kliento kreditui gauti.", "Exact numeric search must be on or off": "Tiksli skaitinė paieška turi būti įjungta arba išjungta", - "Item not found or selling price is held. Review it in Edit prices.": "Prekė nerasta arba pardavimo kaina laikoma. Peržiūrėkite jį skiltyje Redaguoti kainas." + "Item not found or selling price is held. Review it in Edit prices.": "Prekė nerasta arba pardavimo kaina laikoma. Peržiūrėkite jį skiltyje Redaguoti kainas.", + "Password must contain between 5 and 20 characters": "Slaptažodyje turi būti nuo 5 iki 20 simbolių" } diff --git a/languages/server/lv.json b/languages/server/lv.json index ac6e12e1..221c5516 100644 --- a/languages/server/lv.json +++ b/languages/server/lv.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pirms ietaupīšanas pārskatiet apmaksāto rēķina korekciju.", "Choose a saved customer for customer credit.": "Izvēlieties saglabātu klientu klientu kredītam.", "Exact numeric search must be on or off": "Precīzai skaitliskajai meklēšanai jābūt ieslēgtai vai izslēgtai", - "Item not found or selling price is held. Review it in Edit prices.": "Prece nav atrasta vai pārdošanas cena tiek turēta. Pārskatiet to sadaļā Rediģēt cenas." + "Item not found or selling price is held. Review it in Edit prices.": "Prece nav atrasta vai pārdošanas cena tiek turēta. Pārskatiet to sadaļā Rediģēt cenas.", + "Password must contain between 5 and 20 characters": "Parolē jābūt no 5 līdz 20 rakstzīmēm" } diff --git a/languages/server/mk.json b/languages/server/mk.json index 5d680796..0d244ddf 100644 --- a/languages/server/mk.json +++ b/languages/server/mk.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Прегледајте ја исправката на платената сметка пред да заштедите.", "Choose a saved customer for customer credit.": "Изберете зачуван клиент за кредит на клиентите.", "Exact numeric search must be on or off": "Точното нумеричко пребарување мора да биде вклучено или исклучено", - "Item not found or selling price is held. Review it in Edit prices.": "Предметот не е пронајден или продажната цена се одржува. Прегледајте го во Уреди цени." + "Item not found or selling price is held. Review it in Edit prices.": "Предметот не е пронајден или продажната цена се одржува. Прегледајте го во Уреди цени.", + "Password must contain between 5 and 20 characters": "Лозинката мора да содржи помеѓу 5 и 20 знаци" } diff --git a/languages/server/ml.json b/languages/server/ml.json index c9acab0f..ea32883b 100644 --- a/languages/server/ml.json +++ b/languages/server/ml.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "സേവ് ചെയ്യുന്നതിന് മുമ്പ് പണമടച്ച ബിൽ തിരുത്തൽ അവലോകനം ചെയ്യുക.", "Choose a saved customer for customer credit.": "ഉപഭോക്തൃ ക്രെഡിറ്റിനായി സംരക്ഷിച്ച ഉപഭോക്താവിനെ തിരഞ്ഞെടുക്കുക.", "Exact numeric search must be on or off": "കൃത്യമായ സംഖ്യാ തിരയൽ ഓണോ ഓഫോ ആയിരിക്കണം", - "Item not found or selling price is held. Review it in Edit prices.": "ഇനം കണ്ടെത്തുകയോ വിൽപന വില കൈവശം വയ്ക്കുകയോ ചെയ്തിട്ടില്ല. വിലകൾ എഡിറ്റ് ചെയ്യുന്നതിൽ ഇത് അവലോകനം ചെയ്യുക." + "Item not found or selling price is held. Review it in Edit prices.": "ഇനം കണ്ടെത്തുകയോ വിൽപന വില കൈവശം വയ്ക്കുകയോ ചെയ്തിട്ടില്ല. വിലകൾ എഡിറ്റ് ചെയ്യുന്നതിൽ ഇത് അവലോകനം ചെയ്യുക.", + "Password must contain between 5 and 20 characters": "പാസ്വേഡിൽ 5 മുതൽ 20 വരെ പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കണം" } diff --git a/languages/server/mr.json b/languages/server/mr.json index cad69030..e2528a25 100644 --- a/languages/server/mr.json +++ b/languages/server/mr.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "बचत करण्यापूर्वी पेड बिल दुरुस्तीचे", "Choose a saved customer for customer credit.": "ग्राहक क्रेडिटसाठी जतन केलेले ग्राहक", "Exact numeric search must be on or off": "अचूक संख्याशी शोध चालू किंवा बंद असणे", - "Item not found or selling price is held. Review it in Edit prices.": "आयटम सापडला नाही किंवा विक्री किंमत ठेवली आहे संपादित किंमती मध्ये त्याचे पुनरावलोक" + "Item not found or selling price is held. Review it in Edit prices.": "आयटम सापडला नाही किंवा विक्री किंमत ठेवली आहे संपादित किंमती मध्ये त्याचे पुनरावलोक", + "Password must contain between 5 and 20 characters": "संकेतशब्दामध्ये 5 ते 20 वर्ण असणे आवश्यक आहे" } diff --git a/languages/server/ms.json b/languages/server/ms.json index 790b8f30..df8e5268 100644 --- a/languages/server/ms.json +++ b/languages/server/ms.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Semak pembetulan bil yang dibayar sebelum menyimpan.", "Choose a saved customer for customer credit.": "Pilih pelanggan yang disimpan untuk kredit pelanggan.", "Exact numeric search must be on or off": "Carian angka yang tepat mesti dihidupkan atau dimatikan", - "Item not found or selling price is held. Review it in Edit prices.": "Item tidak dijumpai atau harga jualan dipegang. Semak semula dalam Edit harga." + "Item not found or selling price is held. Review it in Edit prices.": "Item tidak dijumpai atau harga jualan dipegang. Semak semula dalam Edit harga.", + "Password must contain between 5 and 20 characters": "Kata laluan mesti mengandungi antara 5 dan 20 aksara" } diff --git a/languages/server/mt.json b/languages/server/mt.json index 4032c0e7..ce2bdf73 100644 --- a/languages/server/mt.json +++ b/languages/server/mt.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Irrevedi l-korrezzjoni tal-kont imħallas qabel tiffranka.", "Choose a saved customer for customer credit.": "Agħżel klijent ffrankat għall-kreditu tal-klijent.", "Exact numeric search must be on or off": "It-tfittxija numerika eżatta trid tkun mixgħula jew mitfija", - "Item not found or selling price is held. Review it in Edit prices.": "Oġġett li ma jinstabx jew jinżamm il-prezz tal-bejgħ. Irreveduha f'Editja l-prezzijiet." + "Item not found or selling price is held. Review it in Edit prices.": "Oġġett li ma jinstabx jew jinżamm il-prezz tal-bejgħ. Irreveduha f'Editja l-prezzijiet.", + "Password must contain between 5 and 20 characters": "Il-password għandu jkun fiha bejn 5 u 20 karattru" } diff --git a/languages/server/nb.json b/languages/server/nb.json index 7de15e79..7247b585 100644 --- a/languages/server/nb.json +++ b/languages/server/nb.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Gjennomgå korrigeringen av den betalte regningen før du lagrer.", "Choose a saved customer for customer credit.": "Velg en lagret kunde for kundekreditt.", "Exact numeric search must be on or off": "Eksakt numerisk søk må være på eller av", - "Item not found or selling price is held. Review it in Edit prices.": "Varen ble ikke funnet eller salgsprisen holdes. Gjennomgå det i Rediger priser." + "Item not found or selling price is held. Review it in Edit prices.": "Varen ble ikke funnet eller salgsprisen holdes. Gjennomgå det i Rediger priser.", + "Password must contain between 5 and 20 characters": "Passordet må inneholde mellom 5 og 20 tegn" } diff --git a/languages/server/nl.json b/languages/server/nl.json index 5896655f..862cb337 100644 --- a/languages/server/nl.json +++ b/languages/server/nl.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Controleer de correctie van de betaalde factuur voordat u gaat sparen.", "Choose a saved customer for customer credit.": "Kies een opgeslagen klant voor klantenkrediet.", "Exact numeric search must be on or off": "Exact numeriek zoeken moet aan of uit staan", - "Item not found or selling price is held. Review it in Edit prices.": "Het item is niet gevonden of de verkoopprijs is beperkt. Bekijk het in Prijzen bewerken." + "Item not found or selling price is held. Review it in Edit prices.": "Het item is niet gevonden of de verkoopprijs is beperkt. Bekijk het in Prijzen bewerken.", + "Password must contain between 5 and 20 characters": "Het wachtwoord moet tussen de 5 en 20 tekens bevatten" } diff --git a/languages/server/pa.json b/languages/server/pa.json index 05578162..8ff38db3 100644 --- a/languages/server/pa.json +++ b/languages/server/pa.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "ਬਚਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਭੁਗਤਾਨ ਕੀਤੇ ਬਿੱਲ ਸੁਧਾਰ ਦੀ", "Choose a saved customer for customer credit.": "ਗਾਹਕ ਕ੍ਰੈਡਿਟ ਲਈ ਇੱਕ ਸੁਰੱਖਿਅਤ ਗਾਹਕ ਦੀ ਚੋਣ ਕਰੋ।", "Exact numeric search must be on or off": "ਸਹੀ ਸੰਖਿਆਤਮਕ ਖੋਜ ਚਾਲੂ ਜਾਂ ਬੰਦ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ", - "Item not found or selling price is held. Review it in Edit prices.": "ਆਈਟਮ ਨਹੀਂ ਮਿਲੀ ਜਾਂ ਵੇਚਣ ਦੀ ਕੀਮਤ ਰੱਖੀ ਜਾਂਦੀ ਹੈ. ਸੰਪਾਦਿਤ ਕੀਮਤਾਂ ਵਿੱਚ ਇਸਦੀ ਸਮੀਖਿਆ ਕਰੋ।" + "Item not found or selling price is held. Review it in Edit prices.": "ਆਈਟਮ ਨਹੀਂ ਮਿਲੀ ਜਾਂ ਵੇਚਣ ਦੀ ਕੀਮਤ ਰੱਖੀ ਜਾਂਦੀ ਹੈ. ਸੰਪਾਦਿਤ ਕੀਮਤਾਂ ਵਿੱਚ ਇਸਦੀ ਸਮੀਖਿਆ ਕਰੋ।", + "Password must contain between 5 and 20 characters": "ਪਾਸਵਰਡ ਵਿੱਚ 5 ਤੋਂ 20 ਅੱਖਰਾਂ ਦੇ ਵਿਚਕਾਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ" } diff --git a/languages/server/pl.json b/languages/server/pl.json index dfb8a577..30a0751d 100644 --- a/languages/server/pl.json +++ b/languages/server/pl.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Przejrzyj opłaconą korektę rachunku przed zapisaniem.", "Choose a saved customer for customer credit.": "Wybierz zapisanego klienta do kredytu klienta.", "Exact numeric search must be on or off": "Dokładne wyszukiwanie numeryczne musi być włączone lub wyłączone", - "Item not found or selling price is held. Review it in Edit prices.": "Przedmiot nie został znaleziony lub cena sprzedaży jest utrzymywana. Przejrzyj to w Edytuj ceny." + "Item not found or selling price is held. Review it in Edit prices.": "Przedmiot nie został znaleziony lub cena sprzedaży jest utrzymywana. Przejrzyj to w Edytuj ceny.", + "Password must contain between 5 and 20 characters": "Hasło musi zawierać od 5 do 20 znaków" } diff --git a/languages/server/pt.json b/languages/server/pt.json index f7c3c9ac..62eb27c6 100644 --- a/languages/server/pt.json +++ b/languages/server/pt.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Revise a correção da fatura paga antes de salvar.", "Choose a saved customer for customer credit.": "Escolha um cliente salvo para obter crédito ao cliente.", "Exact numeric search must be on or off": "A pesquisa numérica exata deve estar ativada ou desativada", - "Item not found or selling price is held. Review it in Edit prices.": "O item não foi encontrado ou o preço de venda foi mantido. Revise-o em Editar preços." + "Item not found or selling price is held. Review it in Edit prices.": "O item não foi encontrado ou o preço de venda foi mantido. Revise-o em Editar preços.", + "Password must contain between 5 and 20 characters": "A senha deve conter entre 5 e 20 caracteres" } diff --git a/languages/server/ro.json b/languages/server/ro.json index 6e7e82a6..40c16387 100644 --- a/languages/server/ro.json +++ b/languages/server/ro.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Examinați corecția facturii plătite înainte de a salva.", "Choose a saved customer for customer credit.": "Alegeți un client salvat pentru creditul clientului.", "Exact numeric search must be on or off": "Căutarea numerică exactă trebuie să fie activată sau dezactivată", - "Item not found or selling price is held. Review it in Edit prices.": "Articolul nu a fost găsit sau prețul de vânzare este menținut. Examinați-l în Editați prețurile." + "Item not found or selling price is held. Review it in Edit prices.": "Articolul nu a fost găsit sau prețul de vânzare este menținut. Examinați-l în Editați prețurile.", + "Password must contain between 5 and 20 characters": "Parola trebuie să conțină între 5 și 20 de caractere" } diff --git a/languages/server/ru.json b/languages/server/ru.json index 6acb72cd..f287113a 100644 --- a/languages/server/ru.json +++ b/languages/server/ru.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Ознакомьтесь с исправлением оплаченного счета, прежде чем экономить.", "Choose a saved customer for customer credit.": "Выберите сохраненного клиента для получения клиентского кредита.", "Exact numeric search must be on or off": "Точный числовой поиск должен быть включен или выключен", - "Item not found or selling price is held. Review it in Edit prices.": "Товар не найден или цена продажи сохранена. Ознакомьтесь с ним в разделе Редактирование цен." + "Item not found or selling price is held. Review it in Edit prices.": "Товар не найден или цена продажи сохранена. Ознакомьтесь с ним в разделе Редактирование цен.", + "Password must contain between 5 and 20 characters": "Пароль должен содержать от 5 до 20 символов" } diff --git a/languages/server/si.json b/languages/server/si.json index 6adf2c98..fbf0a73f 100644 --- a/languages/server/si.json +++ b/languages/server/si.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "ඉතිරි කිරීමට පෙර ගෙවූ බිල්පත් නිවැරදි කිරීම සමාලෝචනය කරන්න.", "Choose a saved customer for customer credit.": "පාරිභෝගික ණය සඳහා සුරකින ගනුදෙනුකරුවෙකු තෝරන්න.", "Exact numeric search must be on or off": "නිශ්චිත සංඛ්යාත්මක සෙවීම සක්රිය හෝ අක්රිය කළ යුතුය", - "Item not found or selling price is held. Review it in Edit prices.": "අයිතමය සොයාගත නොහැකි හෝ විකුණුම් මිල රඳවා ඇත. මිල ගණන් සංස්කරණය කිරීමේ දී එය සමාලෝචනය කරන්න." + "Item not found or selling price is held. Review it in Edit prices.": "අයිතමය සොයාගත නොහැකි හෝ විකුණුම් මිල රඳවා ඇත. මිල ගණන් සංස්කරණය කිරීමේ දී එය සමාලෝචනය කරන්න.", + "Password must contain between 5 and 20 characters": "මුරපදය අක්ෂර 5 ත් 20 ත් අතර ප්රමාණයක් අඩංගු විය යුතුය" } diff --git a/languages/server/sk.json b/languages/server/sk.json index a6fe48d0..7cd18efd 100644 --- a/languages/server/sk.json +++ b/languages/server/sk.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pred uložením skontrolujte zaplatenú opravu účtu.", "Choose a saved customer for customer credit.": "Vyberte si uloženého zákazníka pre zákaznícky kredit.", "Exact numeric search must be on or off": "Presné číselné vyhľadávanie musí byť zapnuté alebo vypnuté", - "Item not found or selling price is held. Review it in Edit prices.": "Položka nebola nájdená alebo je držaná predajná cena. Pozrite si to v časti Upraviť ceny." + "Item not found or selling price is held. Review it in Edit prices.": "Položka nebola nájdená alebo je držaná predajná cena. Pozrite si to v časti Upraviť ceny.", + "Password must contain between 5 and 20 characters": "Heslo musí obsahovať 5 až 20 znakov" } diff --git a/languages/server/sl.json b/languages/server/sl.json index 317e0740..8e270bb3 100644 --- a/languages/server/sl.json +++ b/languages/server/sl.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pred varčevanjem preglejte popravek plačanega računa.", "Choose a saved customer for customer credit.": "Izberite shranjeno stranko za kredit stranke.", "Exact numeric search must be on or off": "Natančno številsko iskanje mora biti vklopljeno ali izklopljeno", - "Item not found or selling price is held. Review it in Edit prices.": "Artikel ni najden ali prodajna cena je zadržana. Preglejte ga v Uredi cene." + "Item not found or selling price is held. Review it in Edit prices.": "Artikel ni najden ali prodajna cena je zadržana. Preglejte ga v Uredi cene.", + "Password must contain between 5 and 20 characters": "Geslo mora vsebovati od 5 do 20 znakov" } diff --git a/languages/server/sq.json b/languages/server/sq.json index 6d1acb03..8b26721d 100644 --- a/languages/server/sq.json +++ b/languages/server/sq.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Rishikoni korrigjimin e faturës së paguar para kursimit", "Choose a saved customer for customer credit.": "Zgjidhni një klient të ruajtur për kredi të klientit.", "Exact numeric search must be on or off": "Kërkimi numerik i saktë duhet të jetë i ndezur ose i fikur", - "Item not found or selling price is held. Review it in Edit prices.": "Artikulli nuk gjendet ose çmimi i shitjes mbahet. Rishikoni atë në Redakto çmimet." + "Item not found or selling price is held. Review it in Edit prices.": "Artikulli nuk gjendet ose çmimi i shitjes mbahet. Rishikoni atë në Redakto çmimet.", + "Password must contain between 5 and 20 characters": "Fjalëkalimi duhet të përmbajë nga 5 deri në 20 karaktere" } diff --git a/languages/server/sr.json b/languages/server/sr.json index 89230071..a44a8806 100644 --- a/languages/server/sr.json +++ b/languages/server/sr.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pregledajte ispravljanje plaćenog računa pre uštede.", "Choose a saved customer for customer credit.": "Izaberite sačuvanog kupca za kredit klijenta.", "Exact numeric search must be on or off": "Tačna numerička pretraga mora biti uključena ili isključena", - "Item not found or selling price is held. Review it in Edit prices.": "Artikal nije pronađen ili se održava prodajna cena. Pregledajte ga u Uredi cene." + "Item not found or selling price is held. Review it in Edit prices.": "Artikal nije pronađen ili se održava prodajna cena. Pregledajte ga u Uredi cene.", + "Password must contain between 5 and 20 characters": "Lozinka mora da sadrži između 5 i 20 znakova" } diff --git a/languages/server/sv.json b/languages/server/sv.json index 4828a3b7..714c9058 100644 --- a/languages/server/sv.json +++ b/languages/server/sv.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Granska korrigeringen av betalda räkningar innan du sparar.", "Choose a saved customer for customer credit.": "Välj en sparad kund för kundkredit.", "Exact numeric search must be on or off": "Exakt numerisk sökning måste vara på eller av", - "Item not found or selling price is held. Review it in Edit prices.": "Varan hittades inte eller försäljningspriset hålls. Granska det i Redigera priser." + "Item not found or selling price is held. Review it in Edit prices.": "Varan hittades inte eller försäljningspriset hålls. Granska det i Redigera priser.", + "Password must contain between 5 and 20 characters": "Lösenordet måste innehålla mellan 5 och 20 tecken" } diff --git a/languages/server/sw.json b/languages/server/sw.json index 4e3ce004..ac90ec3b 100644 --- a/languages/server/sw.json +++ b/languages/server/sw.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Pitia marekebisho ya bili iliyolipwa kabla ya kuokoa.", "Choose a saved customer for customer credit.": "Chagua mteja aliyehifadhiwa kwa mkopo wa wateja.", "Exact numeric search must be on or off": "Utafutaji halisi wa nambari lazima uwe wawa au kuzima", - "Item not found or selling price is held. Review it in Edit prices.": "Bidhaa haijapatikana au bei ya kuuza kinashikiliwa. Ipitia katika Hariri bei." + "Item not found or selling price is held. Review it in Edit prices.": "Bidhaa haijapatikana au bei ya kuuza kinashikiliwa. Ipitia katika Hariri bei.", + "Password must contain between 5 and 20 characters": "Nenosiri lazima iwe na kati ya herufi 5 na 20" } diff --git a/languages/server/ta.json b/languages/server/ta.json index 40bcf666..3305dc00 100644 --- a/languages/server/ta.json +++ b/languages/server/ta.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "சேமிப்பதற்கு முன் கட்டண பில் திருத்தத்தை மதிப்பாய்வு செய்யவும்.", "Choose a saved customer for customer credit.": "வாடிக்கையாளர் கடனுக்கு சேமிக்கப்பட்ட வாடிக்கையாளரைத் தேர்வு", "Exact numeric search must be on or off": "சரியான எண் தேடல் இயக்கப்பட்டிருக்க வேண்டும் அல்லது முடக்கப்பட வேண்டும்", - "Item not found or selling price is held. Review it in Edit prices.": "பொருள் கண்டுபிடிக்கப்படவில்லை அல்லது விற்பனை விலை நடைபெறுகிறது. விலைகளைத் திருத்து இல் மதிப்பாய்வு செய்யவும்." + "Item not found or selling price is held. Review it in Edit prices.": "பொருள் கண்டுபிடிக்கப்படவில்லை அல்லது விற்பனை விலை நடைபெறுகிறது. விலைகளைத் திருத்து இல் மதிப்பாய்வு செய்யவும்.", + "Password must contain between 5 and 20 characters": "கடவுச்சொல்லில் 5 முதல் 20 எழுத்துக்கள் வரை இருக்க வேண்டும்" } diff --git a/languages/server/te.json b/languages/server/te.json index 188261a7..9ec8cff3 100644 --- a/languages/server/te.json +++ b/languages/server/te.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "ఆదా చేయడానికి ముందు చెల్లించిన బిల్లు దిద్దుబాటును సమీక్షించండి.", "Choose a saved customer for customer credit.": "కస్టమర్ క్రెడిట్ కోసం సేవ్ చేసిన కస్టమర్ను ఎంచుకోండి.", "Exact numeric search must be on or off": "ఖచ్చితమైన సంఖ్యా శోధన తప్పనిసరిగా ఆన్ లేదా ఆఫ్ ఉండాలి", - "Item not found or selling price is held. Review it in Edit prices.": "వస్తువు కనుగొనబడలేదు లేదా అమ్మకపు ధర జరుగుతుంది. ధరలను సవరించడంలో సమీక్షించండి." + "Item not found or selling price is held. Review it in Edit prices.": "వస్తువు కనుగొనబడలేదు లేదా అమ్మకపు ధర జరుగుతుంది. ధరలను సవరించడంలో సమీక్షించండి.", + "Password must contain between 5 and 20 characters": "పాస్వర్డ్లో 5 నుండి 20 అక్షరాల మధ్య ఉండాలి" } diff --git a/languages/server/th.json b/languages/server/th.json index 2c87f4f7..e0014b1c 100644 --- a/languages/server/th.json +++ b/languages/server/th.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "ตรวจสอบการแก้ไขบิลที่ชำระแล้วก่อนบันทึก", "Choose a saved customer for customer credit.": "เลือกลูกค้าที่บันทึกไว้สำหรับเครดิตของลูกค้า", "Exact numeric search must be on or off": "การค้นหาตัวเลขที่แน่นอนจะต้องเปิดหรือปิด", - "Item not found or selling price is held. Review it in Edit prices.": "ไม่พบสินค้า หรือราคาขายถูกเก็บไว้ตรวจสอบในแก้ไขราคา" + "Item not found or selling price is held. Review it in Edit prices.": "ไม่พบสินค้า หรือราคาขายถูกเก็บไว้ตรวจสอบในแก้ไขราคา", + "Password must contain between 5 and 20 characters": "รหัสผ่านต้องมีอักขระหว่าง 5 ถึง 20 อักขระ" } diff --git a/languages/server/tl.json b/languages/server/tl.json index ead6c62a..ee33e414 100644 --- a/languages/server/tl.json +++ b/languages/server/tl.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Suriin ang bayad na pagwawasto ng bayad na bayad bago i-save", "Choose a saved customer for customer credit.": "Pumili ng isang naka-save na customer para sa kredito ng customer.", "Exact numeric search must be on or off": "Dapat na naka-on o off ang eksaktong paghahanap sa numero", - "Item not found or selling price is held. Review it in Edit prices.": "Hindi natagpuan ang item o ang presyo ng pagbebenta ay hawakan. Suriin ito sa I-edit ang mga presyo." + "Item not found or selling price is held. Review it in Edit prices.": "Hindi natagpuan ang item o ang presyo ng pagbebenta ay hawakan. Suriin ito sa I-edit ang mga presyo.", + "Password must contain between 5 and 20 characters": "Dapat maglaman ng password sa pagitan ng 5 at 20 character" } diff --git a/languages/server/tr.json b/languages/server/tr.json index 5c1c632e..b5f8fd1e 100644 --- a/languages/server/tr.json +++ b/languages/server/tr.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Kaydetmeden önce ödenen fatura düzeltmesini gözden geçirin.", "Choose a saved customer for customer credit.": "Müşteri kredisi için kaydedilmiş bir müşteri seçin.", "Exact numeric search must be on or off": "Tam sayısal arama açık veya kapalı olmalıdır", - "Item not found or selling price is held. Review it in Edit prices.": "Ürün bulunamadı veya satış fiyatı tutuldu. Fiyatları düzenle bölümünde inceleyin." + "Item not found or selling price is held. Review it in Edit prices.": "Ürün bulunamadı veya satış fiyatı tutuldu. Fiyatları düzenle bölümünde inceleyin.", + "Password must contain between 5 and 20 characters": "Şifre 5 ile 20 karakter arasında olmalıdır" } diff --git a/languages/server/uk.json b/languages/server/uk.json index 64b3ec08..b6a12388 100644 --- a/languages/server/uk.json +++ b/languages/server/uk.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Перегляньте виправлення оплаченого рахунку перед збереженням.", "Choose a saved customer for customer credit.": "Виберіть збереженого клієнта для кредиту клієнта.", "Exact numeric search must be on or off": "Точний числовий пошук повинен бути увімкненим або вимкненим", - "Item not found or selling price is held. Review it in Edit prices.": "Товар не знайдено або ціна продажу збережена. Перегляньте його в розділі Редагувати ціни." + "Item not found or selling price is held. Review it in Edit prices.": "Товар не знайдено або ціна продажу збережена. Перегляньте його в розділі Редагувати ціни.", + "Password must contain between 5 and 20 characters": "Пароль повинен містити від 5 до 20 символів" } diff --git a/languages/server/ur.json b/languages/server/ur.json index 30647334..593ab9e2 100644 --- a/languages/server/ur.json +++ b/languages/server/ur.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "بچت سے پہلے ادا شدہ بل اصلاح کا جائزہ لیں۔", "Choose a saved customer for customer credit.": "کسٹمر کریڈٹ کے لئے محفوظ کردہ گاہک کا انتخاب", "Exact numeric search must be on or off": "عین مطابق عددی تلاش آن یا بند ہونی چاہئے", - "Item not found or selling price is held. Review it in Edit prices.": "آئٹم نہیں ملا یا فروخت کی قیمت رکھی گئی ہے۔ قیمتیں ترمیم میں اس کا جائزہ لیں۔" + "Item not found or selling price is held. Review it in Edit prices.": "آئٹم نہیں ملا یا فروخت کی قیمت رکھی گئی ہے۔ قیمتیں ترمیم میں اس کا جائزہ لیں۔", + "Password must contain between 5 and 20 characters": "پاس ورڈ میں 5 سے 20 حروف کے درمیان ہونا ضروری ہے" } diff --git a/languages/server/vi.json b/languages/server/vi.json index 772cc23b..a35f8f65 100644 --- a/languages/server/vi.json +++ b/languages/server/vi.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "Xem lại việc chỉnh sửa hóa đơn đã thanh toán trước khi tiết kiệm.", "Choose a saved customer for customer credit.": "Chọn một khách hàng đã lưu cho tín dụng khách hàng.", "Exact numeric search must be on or off": "Tìm kiếm số chính xác phải được bật hoặc tắt", - "Item not found or selling price is held. Review it in Edit prices.": "Không tìm thấy mặt hàng hoặc giá bán được giữ. Xem lại nó trong Chỉnh sửa giá." + "Item not found or selling price is held. Review it in Edit prices.": "Không tìm thấy mặt hàng hoặc giá bán được giữ. Xem lại nó trong Chỉnh sửa giá.", + "Password must contain between 5 and 20 characters": "Mật khẩu phải chứa từ 5 đến 20 ký tự" } diff --git a/languages/server/zh-CN.json b/languages/server/zh-CN.json index ac3c47df..8b8afa96 100644 --- a/languages/server/zh-CN.json +++ b/languages/server/zh-CN.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "在保存之前,请查看已付账单的更正。", "Choose a saved customer for customer credit.": "选择已保存的客户作为客户积分。", "Exact numeric search must be on or off": "精确数字搜索必须开启或关闭", - "Item not found or selling price is held. Review it in Edit prices.": "未找到商品或保留销售价格。在 “编辑价格” 中查看。" + "Item not found or selling price is held. Review it in Edit prices.": "未找到商品或保留销售价格。在 “编辑价格” 中查看。", + "Password must contain between 5 and 20 characters": "密码必须包含 5 到 20 个字符" } diff --git a/languages/server/zh-TW.json b/languages/server/zh-TW.json index 50df3fed..4692af5a 100644 --- a/languages/server/zh-TW.json +++ b/languages/server/zh-TW.json @@ -959,5 +959,6 @@ "Review the paid bill correction before saving.": "儲存前,請先檢閱已付帳單更正。", "Choose a saved customer for customer credit.": "選擇已儲存的客戶以供客戶信用。", "Exact numeric search must be on or off": "確切的數字搜尋必須開啟或關閉", - "Item not found or selling price is held. Review it in Edit prices.": "未找到商品或保留售價。在「編輯價格」中檢閱它。" + "Item not found or selling price is held. Review it in Edit prices.": "未找到商品或保留售價。在「編輯價格」中檢閱它。", + "Password must contain between 5 and 20 characters": "密碼必須包含 5 至 20 個字元之間" } diff --git a/tests/features-page-groups.test.js b/tests/features-page-groups.test.js index e4d39eaf..ce625595 100644 --- a/tests/features-page-groups.test.js +++ b/tests/features-page-groups.test.js @@ -49,7 +49,7 @@ const SWITCHES = [ 'module_online_ordering_enable', 'module_kiosk_enable', 'module_delivery_partners_enable', 'module_webshop_enable', 'staff_shifts_enable', 'till_lock_enable', - 'module_themes_enable', 'ai_enabled', 'ask_posnic_enabled', 'module_recyclebin_enable', 'module_demo_data_enable', + 'module_themes_enable', 'ai_enabled', 'module_recyclebin_enable', 'module_demo_data_enable', ]; const groups = () => PANE.split('