{"SectionSettingsResources":{"concurrentCapacity":"Concurrent capacity","concurrentCapacityPlaceholder":"Unlimited","concurrentCapacityHelp":"How many sessions can be booked here at the same time. A booking beyond it is refused unless overbooking is allowed. Leave empty for unlimited.","detail":{"entityPlural":"Resources","resourceActions":"Resource actions","basics":"Basics","name":"Name","branch":"Branch","type":"Type","services":"Services","allServices":"All services","status":"Status","note":"Note"},"enums":{"type":{"S":"Service","C":"Consultation","T":"Telehealth","H":"Homecare"}},"entity":"Resource","title":"Resources","validation":{"capacityMin":"Must be at least 1"},"form":{"basicsTitle":"Basics","name":"{label} Name","namePlaceholder":"e.g. {label} 1","branch":"Branch","branchPlaceholder":"Select branch","type":"Type","detailsTitle":"Details","active":"Active","note":"Note","notePlaceholder":"Notes about this {label}"},"columns":{"name":"Name","type":"Type","branch":"Branch","services":"Services","all":"All","status":"Status"},"list":{"add":"Add {label}","emptyTitle":"No {label} yet","emptyDescription":"Add your first {label} to get started.","searchPlaceholder":"Search {label}..."}},"SectionSettingsPaymentTerms":{"basicsTitle":"Basics","basicsCaption":"A short name and an optional description. Shown on invoices and the term picker.","name":"Name","namePlaceholder":"e.g. 50% now / 50% in 30 days","description":"Description","descriptionPlaceholder":"Optional. Internal note about when to use this term.","linesTitle":"Instalment lines","linesCaption":"Each line is one instalment. Percent lines must total 100% unless a Balance line absorbs the remainder.","addInstalment":"Add instalment","days":"Days","type":"Type","typePercent":"Percent of total","typeBalance":"Balance (remainder)","typeFixed":"Fixed amount","value":"Value","valueNa":"Value (n/a)","previewTitle":"Preview schedule","previewCaption":"Enter an example invoice amount to see how this term splits it into instalments.","exampleAmount":"Example amount","noPreview":"No preview","noPreviewDescription":"Adjust the example amount to preview.","colSeq":"#","colDueDate":"Due date","colAmount":"Amount","detail":{"entityPlural":"Payment Terms","paymentTermActions":"Payment term actions","basics":"Basics","lines":"Lines"},"entity":"Payment term","title":"Payment Terms","help":{"name":"Displayed wherever this payment term is selected.","days":"Days after invoice date.","valueBalance":"Absorbs the remainder."},"validation":{"required":"Required","twoDecimals":"Use a number with up to 2 decimals","daysMin":"Days must be 0 or more","nameRequired":"Name is required","linesMin":"Add at least one instalment line","percentTotal":"Percent lines must total exactly 100% unless a Balance line is present."},"columns":{"name":"Name","instalmentCount":"{count, plural, one {# instalment} other {# instalments}}","lines":"# Lines","description":"Description","status":"Status"},"list":{"description":"Instalment schedules (e.g. 50% now / 50% in 30 days) applied to invoices and vendor bills.","add":"Add payment term","emptyTitle":"No payment terms yet","emptyDescription":"Add a payment term to define how an invoice total is split into instalments and when each is due."}},"SectionAccountingBills":{"listTitle":"Bills","listDescription":"Track and manage purchase invoices from your vendors.","addNew":"Add New","searchPlaceholder":"Search bills...","filters":"Filters","entityName":"Bills","noDataTitle":"No bills yet","noDataDescription":"Record your first vendor bill to start tracking payables.","dueToday":"Today","dueTomorrow":"Tomorrow","dueYesterday":"Yesterday","dueInDays":"In {count} days","dueDaysAgo":"{count} days ago","colBillNumber":"Bill Number","colReference":"Reference","colVendor":"Vendor","colBillDate":"Bill Date","colGross":"Gross","colDiscount":"Discount","colTaxable":"Taxable","colVat":"VAT","colTotal":"Total","colPayment":"Payment","colStatus":"Status","colAttachments":"Attachments","due":"due","filterBills":"Filter Bills","status":"Status","all":"All","statusDraft":"Draft","statusPosted":"Posted","statusPartiallyPaid":"Partially Paid","statusPaid":"Paid","vendor":"Vendor","billDateRange":"Bill Date Range","fromDate":"From Date","toDate":"To Date","datePresetThisMonth":"This Month","datePreset3Months":"3 Months","datePresetThisYear":"This Year","datePresetAllTime":"All Time","billType":"Bill Type","typePurchase":"Purchase","typeRefund":"Refund","payableOnly":"Payable Only","payableOnlyLabel":"Show only open / unpaid bills","metaTotal":"Total","metaBillDate":"Bill date","kindBill":"Bill","kindRefund":"Refund","kindRecurringBill":"Recurring Bill","sectionInformation":"{name} Information","loadError":"We couldn't load this record. Please try again.","billNumber":"Bill Number","refundNumber":"Refund Number","billDate":"Bill Date","refundDate":"Refund Date","nextDate":"Next Date","dueDate":"Due Date","total":"Total","amount":"Amount","outstanding":"Outstanding","paid":"Paid","fullyPaid":"Fully Paid","reference":"Reference","paymentMethod":"Payment Method","originalBill":"Original Bill","purchaseOrder":"Purchase Order","lineItems":"Line Items","noLineItems":"No line items on this bill.","item":"Item","quantity":"Quantity","unitPrice":"Unit Price","subtotal":"Subtotal","tax":"Tax","totalDue":"Total Due","attachments":"Attachments","overview":"Overview","payments":"Payments","billActions":"Bill actions","addPayment":"Add Payment","recordPayment":"Record Payment","postToGl":"Post to GL","postFirstTooltip":"Post the bill before recording a payment.","postBeforePaymentHint":"Post this bill first, then record a payment.","postBillTitle":"Post this bill?","postBillContent":"Posting creates the journal entry (debit expense / credit accounts payable) and locks the bill from editing. Continue?","billPosted":"Bill posted to the ledger.","failedToPostBill":"Couldn't post the bill.","billActionResetToDraft":"Reset to draft","billResetToDraftTitle":"Reset this bill to draft?","billResetToDraftBody":"This bill will return to draft so you can edit it and re-post it.","billResetToDraftBodyNamed":"{number} will return to draft so you can edit it and re-post it.","billResetToDraftWarning":"The earlier posted values will only remain in history, not on the ledger, so this keeps a weaker audit trail than a reversal.","billResetToDraftConfirm":"Reset to draft","billResetToDraftSuccess":"Bill reset to draft. You can now edit it and re-post.","billResetToDraftFailed":"Couldn't reset the bill to draft.","billResetReplaceEntryImported":"Journal entry {name} was imported from another system. Resetting voids it, and re-posting the bill creates a new entry built from the bill. Its accounts may differ.","billResetReplaceEntryEdited":"Journal entry {name} was edited by hand. Resetting voids it, and re-posting the bill creates a new entry built from the bill. The manual changes will be lost.","billResetReplaceEntryConfirm":"Void entry and reset","postRefundTitle":"Post this refund?","postRefundContent":"Posting creates the mirror journal entry (debit accounts payable / credit expense) for this refund. Continue?","noBillDetails":"No bill details available.","noRefundDetails":"No refund details available.","noRecurringDetails":"No recurring bill details available.","journalEntries":"Journal Entries","history":"History","viewJournalEntry":"View Journal Entry","journalName":"Journal","account":"Account","debit":"Debit","credit":"Credit","D MMM YYYY":"D MMM YYYY","accounting":"Accounting","accountingDate":"Accounting Date","active":"Active","addItem":"Add Item","addVendorBill":"Add Vendor Bill","advancedOptions":"Advanced Options","affectBaseOfSubsequentTaxes":"Affect Base of Subsequent Taxes","analytic":"Analytic","apply":"Apply","autoPost":"Auto-post","bankAccountNumber":"Bank Account {id}","basedOn":"Based On","billItems":"Bill Items","billReference":"Bill Reference Number","company":"Company","country":"Country","createDefaultTaxes":"Create Default Taxes","currency":"Currency","defaultFromAccountingSettings":"Default from Accounting Settings","definition":"Definition","deliveryDate":"Delivery Date","description":"Description","dirhamAed":"Dirham (AED)","discard":"Discard","discount":"Discount","distributionForRefunds":"Distribution for Refunds","distributionForSales":"Distribution for Sales","enterAccountCode":"Enter account code","enterAllowedJournals":"Enter Allowed Journals","enterAnalytic":"Enter analytic","enterAutoPostAmount":"Enter auto-post amount","enterBillReference":"Enter bill reference","enterBillReferenceNumber":"Enter bill reference number","enterCompanyName":"Enter company name","enterCreditAmount":"Enter credit amount","enterCurrency":"Enter currency","enterDebitAmount":"Enter debit amount","enterDefaultTax":"Enter Default tax","enterDescriptionHere":"Enter description here","enterExpenseName":"Enter expense name","enterFiscalPosition":"Enter fiscal position","enterIncoterm":"Enter incoterm","enterIncotermLocation":"Enter incoterm location","enterJournal":"Enter journal","enterJournalItemLabel":"Enter journal item label","enterNoteHere":"Enter note here","enterNotes":"Enter notes","enterPaymentMethod":"Enter payment method","enterPaymentReference":"Enter payment reference","enterPaymentTerms":"Enter payment terms","enterTags":"Enter Tags","enterTaxGridAmount":"Enter tax grid amount","enterUnitPrice":"Enter unit price","expenseAccount":"Default Expense Account","expenseAccountHelper":"Fills every line's account. Change a line to post it elsewhere","fiscalPosition":"Fiscal Position","includeInAnalyticCost":"Include in Analytic Cost","includedInPrice":"Included In Price","incoterm":"Incoterm","incotermLocation":"Incoterm Location","internalNotesForThisBill":"Internal notes for this bill…","itemNumber":"Item-{number}","items":"Items","journalItem":"Journal Item","label":"Label","labelOnSales":"Label on Sales","legalNotes":"Legal Notes","name":"Name","newVendorBill":"New Vendor Bill","no":"No","noBillDataAvailable":"No bill data available","notes":"Notes","otherInfo":"Other Info","paymentMethodNumber":"Payment Method {id}","paymentReference":"Payment Reference","paymentTerms":"Payment Terms","product":"Product","quickAdd":"Quick Add","recipientBank":"Recipient Bank","resetFilter":"Reset filter","saleLine":"Sale Line","saleRequest":"Sale Request","salesperson":"Salesperson","save":"Save","addExpenseLine":"Add Expense Line","searchAndAddProductsOrServices":"Search and add the products or services on this bill","select":"Select","selectAccount":"Select Account","selectAccountType":"Select account type","selectAccountTypeCap":"Select Account type","selectBankAccount":"Select bank account","selectCurrency":"Select Currency","selectIncoterm":"Select incoterm","selectPaymentMethod":"Select payment method","selectPaymentMethodCap":"Select Payment Method","selectProduct":"Select product","selectPurchaseOrder":"Select a purchase order","selectSaleRequest":"Select a sale request","selectSalesperson":"Select salesperson","selectStatus":"Select Status","selectTaxRule":"Select tax rule","selectUnit":"Select unit","selectUnitType":"Select unit type","selectVendor":"Select vendor","service":"Service","supplierBillInvoiceNumber":"Supplier's bill / invoice number","taxComputation":"Tax Computation","taxGrids":"Tax Grids","taxGroup":"Tax Group","taxName":"Tax Name","taxRule":"Tax Rule","taxRuleHelper":"Applied to the subtotal when the bill is posted","lineTotal":"Line Total","taxRuleVat":"Tax Rule (VAT)","lineExpenseAccount":"Account","lineExpenseAccountPlaceholder":"From product / category","taxScope":"Tax Scope","taxType":"Tax Type","totalRange":"Total Range","unitOfMeasure":"Unit of Measure","unitType":"Unit Type","updateBill":"Update Bill","usd":"USD","vendorAndDates":"Vendor & Dates","paymentTerm":"Payment Terms","selectPaymentTerm":"Select payment term","paymentTermHelper":"Auto-fills the due date from the bill date.","vendorNumber":"Vendor {id}","yes":"Yes","billActionReverse":"Reverse","billActionUnpost":"Unpost","billReverseTitle":"Reverse this bill?","billReverseBody":"A reversing entry will be posted to cancel this bill's ledger impact. The bill stays posted for the audit trail.","billReverseBodyNamed":"A reversing entry will be posted to cancel the ledger impact of {number}. The bill stays posted for the audit trail.","billReverseReasonLabel":"Reason","billReverseReasonPlaceholder":"Why is this bill being reversed?","billReverseReasonRequired":"Please provide a reason for the reversal.","billReverseConfirm":"Reverse bill","billReverseSuccess":"Reversing entry posted.","billReverseFailed":"Couldn't reverse the bill.","billResetKeepPaymentsInfo":"{count} settled payment(s) will stay attached and re-apply when the bill is re-posted.","billResetKeepPaymentsNote":"No payment reversal entries are created and linked cheques stay live. To actually cancel a payment, void it from the Payments screen.","cancel":"Cancel","applyToBill":"Apply","outstandingPaymentsBanner":"This vendor has {count} outstanding payment(s) to apply:","applyPaymentDialogTitle":"Apply payment to bill","applyPaymentDialogDescription":"Reconcile an existing vendor payment against this bill.","applyPaymentNote":"This only links the payment to the bill. No new payment is created and the bank is never debited twice.","applyAmountHelp":"Remaining on payment: {remaining} · Bill outstanding: {outstanding}","applySelectPayment":"Payment","applyPaymentOption":"{date} · {name} · remaining {residual}","applyAmountToApply":"Amount to apply","applyAmountRequired":"Enter an amount greater than zero.","applyExceedsResidual":"Amount exceeds the payment's remaining balance.","applyExceedsBillOutstanding":"Amount exceeds the bill's outstanding balance.","applyPaymentToast":"Payment applied to the bill.","applyPaymentError":"Could not apply the payment.","appliedKindJournal":"Journal entry","appliedKindBank":"Bank / cash","appliedKindDebitNote":"Debit note","appliedKindOther":"Entry","unapplyPayment":"Unapply","unapplyPaymentDialogTitle":"Remove from this bill?","unapplyPaymentDialogContent":"{entry} ({amount}) will no longer settle this bill. The journal entry stays posted and can be applied again.","unapplyPaymentToast":"Entry removed from the bill.","unapplyPaymentError":"Could not remove the entry.","matchVendorTotal":"Round off to match the vendor","roundOffAmount":"Round off","roundOffAmountHelper":"Minus is credited, plus is debited.","roundOffAccount":"Round-off account","matchVendorTotalHelper":"Turn on when the vendor's printed total differs from the total calculated here. This is usually a few fils, because the vendor rounds VAT differently.","roundOffAccountHelper":"Pre-filled from Accounting Settings. Change it only for this bill.","chargesSummary":"Charges & Summary","chargesSummaryHelper":"Updates live as you edit the lines. Confirm the total before submitting.","taxIncluded":"included","matchesVendor":"Matches vendor","linesCount":"{count, plural, one {# line} other {# lines}}","roundOff":"Round Off","statusInProcess":"In Process","detail":{"entityPluralBills":"Vendor bills","entityPluralRefunds":"Vendor refunds","entityPluralRecurringBills":"Recurring bills"},"workflow":{"postToGl":"Post to GL","postPrompt":"Post this bill to the general ledger? This writes the accrual entry (DR Expense / CR AP)."},"validation":{"quantityMustBeGreaterThan0":"Quantity must be greater than 0","priceMustBePositive":"Price must be positive","descriptionIsRequiredWhenNoProduct":"Description is required when no product is selected","accountIsRequiredForAnExpense":"Account is required for an expense line","billDateIsRequired":"Bill date is required"}},"SectionAccountingPayments":{"replaceEntryTitle":"Replace the journal entry?","replaceEntryImported":"Journal entry {name} was imported from another system. Saving rebuilds its lines from this payment, so its accounts may change.","replaceEntryEdited":"Journal entry {name} was edited by hand. Saving rebuilds its lines from this payment, so the manual changes will be lost.","replaceEntryConfirm":"Replace and save","listTitle":"Payments","listDescription":"Vendor payments recorded against your bills.","addPayment":"Add Payment","searchPlaceholder":"Search payments...","filters":"Filters","filterTitle":"Filter Payments","entityName":"Payments","noDataTitle":"No payments yet","noDataDescription":"Record a payment against a vendor bill to see it here.","colPaymentNumber":"Payment Number","colAttachments":"Attachments","colVendor":"Vendor","colBill":"Bill","colAmount":"Amount","colPaymentDate":"Payment Date","colPaymentMethod":"Payment Method","colStatus":"Status","colJournal":"Journal","journalBank":"Bank","journalPdc":"PDC","journalCash":"Cash","journalOther":"Other","settlementInProcess":"In Process","multiBillPayment":"Multi-bill payment","kindPayment":"Payment","kindAdvance":"Advance","idLabel":"#ID {id}","actions":"Actions","paymentActions":"Payment actions","voidPayment":"Void Payment","keepPayment":"Keep Payment","voidConfirmTitle":"Void this payment?","voidConfirmBody":"The posted journal entry is reversed and the settled bill(s) reopen as unpaid. This cannot be undone.","voidCancelsCheque":"Its cheque #{number} is cancelled with it.","voidedToast":"Payment voided. The bill has been reopened.","voidError":"Could not void the payment.","selectPayment":"Select a payment from the list to see its details.","paymentInformation":"Payment Information","paymentNumber":"Payment Number","vendor":"Vendor","amount":"Amount","paymentDate":"Payment Date","paymentMethod":"Payment Method","reference":"Reference","status":"Status","billsPaid":"Bills Paid","noBillsLinked":"No bills linked to this payment.","viewJournalEntry":"View Journal Entry","viewReversalEntry":"View Reversal Entry","billFallback":"Bill #{id}","all":"All","fromDate":"From","toDate":"To","datePresetThisMonth":"This Month","datePreset3Months":"3 Months","datePresetThisYear":"This Year","datePresetAllTime":"All Time","methodFallback":"Method {id}","statusPaid":"Paid","statusPartiallyPaid":"Partially Paid","statusOpen":"Open","statusVoided":"Voided","stepBillsTitle":"Vendor & Bills","stepBillsCaption":"Select a vendor then add one row per open bill with the amount to pay.","stepBillsDesc":"Pick the vendor and the bills to pay","stepDetailsTitle":"Payment Details","stepDetailsCaption":"How and when the payment was made.","stepDetailsDesc":"Method, date, and reference","stepReviewTitle":"Review","stepReviewCaption":"Confirm the payment before recording it.","stepReviewDesc":"Confirm before recording","nonePayableAlert":"This vendor has bills, but none can be paid yet. They are still drafts or already fully paid. Post a draft bill (from the Bills page) before recording a payment.","addBill":"Add bill","bill":"Bill","dueLabel":"Due {amount}","overdue":"⚠ Overdue","selectVendorFirst":"Select a vendor first","selectVendorFirstHint":"Select a vendor first.","allBillsDraftOrPaid":"All this vendor's bills are drafts or fully paid. Post a bill first","noOpenBills":"No open bills for this vendor","exceedsOutstanding":"Exceeds outstanding","outstanding":"Outstanding","total":"Total","selectPaymentMethod":"Select payment method","referencePlaceholder":"Cheque / transfer / external ID (optional)","notes":"Notes","notesPlaceholder":"Internal notes (optional)","amountPlaceholder":"0.00","recordPayment":"Record payment","recordedToast":"Payment recorded across the selected bills.","recordError":"Could not record the payment.","updatePayment":"Update Payment","editPayment":"Edit Payment","fillDetailsCaption":"Fill in the payment details.","selectVendorToast":"Select a vendor","addBillToast":"Add at least one bill with an amount","overAllocatedToast":"One row pays more than the bill's outstanding balance.","YYYY-MM-DD":"YYYY-MM-DD","billHelperText":"Choose the vendor bill this payment settles.","paidFrom":"Paid From","selectPaidFrom":"Select cash / bank account","paidFromHelperText":"The treasury the money leaves from. Leave empty to use the payment method's default account.","payingBill":"Paying bill","dueDate":"Due {date}","paymentAccount":"Payment Account","chequeNumber":"Cheque Number","chequeNumberPlaceholder":"e.g. 000123","chequeNumberHelper":"This cheque will be tracked in the Issued Cheques register.","chequeNumberEditHelper":"Changing the number also renames the cheque in the Issued Cheques register.","chequeLockedHelper":"This cheque is {status}. Its number, due date, amount, date and payment method can no longer change.","noRegisteredChequeHint":"Paid through the PDC Cheques source, but no cheque is registered for this payment in Issued Cheques.","paidFromLocked":"A cheque payment keeps the account it was paid from. To change it, void it and re-issue the cheque.","chequeDueDate":"Cheque Due Date","printVoucher":"Print Voucher","cheque":"Cheque","unlinkedChequesForVendor":"This vendor has {count} registered cheque(s) not yet linked to a payment. Pick one to link it instead of creating a duplicate:","willLinkToCheque":"Will link to registered cheque #{number}.","noBillYetToggle":"Advance payment (no bill yet)","noBillYetHelper":"Record money paid to a vendor before any bill exists. It stays as an open advance you can apply to future bills or refund.","advanceDate":"Advance Date","selectVendor":"Select vendor","advanceRecorded":"Advance recorded. Find it in Payments by setting Type to Advances.","recordAdvance":"Record Advance","stepAdvanceTitle":"Vendor & Advance","stepAdvanceCaption":"Money paid to the vendor before any bill exists: the amount and the branch whose books it is recorded in.","branch":"Branch","selectBranch":"Select a branch","advanceBranchHelper":"The advance and its cheque are recorded in this branch's books, so pick the branch whose bank pays it.","tabPayments":"Payments","tabAdvances":"Advances","advanceRow":"Advance","correctPayment":"Correct Payment","correctSave":"Save Correction","correctedToast":"Payment corrected.","correctError":"Could not correct the payment.","correctBillsFixedHint":"The bills this payment settles are fixed. Correct their amounts, the date or the payment details; to pay other bills, void it and record a new payment.","chequeTreasuryLocked":"Paid by cheque {number}, so it stays on its post-dated-cheque account. Void it and record a new payment to pay from another account.","voidAndReenter":"Void & Re-enter","voidAndReenterHint":"Voids this payment (a reversing journal entry is posted) and immediately reopens the payment form prefilled so you can record the corrected one.","recordType":"Record type","refund":"Refund","refundedToast":"Advance refunded","refundError":"Could not refund the advance","refundConfirmTitle":"Refund advance?","refundConfirmDescription":"This posts a reversing entry for the remaining balance and closes the advance.","billPrefilledCaption":"Amount is pre-filled from the bill total. Adjust it for partial payments.","chequeAmountMismatch":"Cheque #{number} is registered for {amount}. Match the payment amount to link it.","paidFromAdvanceLocked":"This payment draws down vendor advance #{id}. No cash moves here. It left when the advance was recorded, so change the account on the advance itself.","paidFromChequeOnlyPdc":"A registered cheque can only move between post-dated-cheque accounts. The bank is chosen when it clears.","paymentMethodChequeLocked":"This payment is settled by cheque {number}, so its method is fixed. Void it and record a new payment to pay it another way.","paidFromNoChequeConversion":"Paying by cheque is recorded as a new payment, not as an account change here.","overview":"Overview","attachments":"Attachments","history":"History","journalEntries":"Journal Entries","noJournalEntries":"No journal entry is linked to this payment yet.","detail":{"entityPlural":"Vendor payments"},"multiBillValidation":{"max100Characters":"Max 100 characters","enterTheChequeDueDate":"Enter the cheque due date","theDueDateCannotBeBefore":"The due date cannot be before the payment date","amountMustBeGreaterThanZero":"Amount must be greater than zero","selectABranch":"Select a branch","selectAPaymentMethod":"Select a payment method","addAtLeastOneBill":"Add at least one bill","selectABill":"Select a bill"},"validation":{"amountIsRequired":"Amount is required","amountMustBeGreaterThanZero":"Amount must be greater than zero","selectAPaymentMethod":"Select a payment method","max100Characters":"Max 100 characters","enterTheChequeDueDate":"Enter the cheque due date","theDueDateCannotBeBefore":"The due date cannot be before the payment date","selectTheVendor":"Select the vendor","selectTheBillToPay":"Select the bill to pay"}},"SectionAccountingAdvances":{"actions":"Actions","advanceActionsAria":"Advance actions","entityName":"Vendor Advances","noDataTitle":"No advances yet","noDataDescription":"Use “Record Advance” to pay a vendor before a bill exists.","searchPlaceholder":"Search advances...","filters":"Filters","filterTitle":"Filter Advances","all":"All","vendor":"Vendor","status":"Status","colAdvanceDate":"Date","colVendor":"Vendor","colAmount":"Amount","colApplied":"Applied","colRemaining":"Remaining","colPaidFrom":"Paid From","colReference":"Reference","colStatus":"Status","statusOpen":"Open","statusApplied":"Applied","statusRefunded":"Refunded","refund":"Refund","printVoucher":"Print voucher","viewCheque":"View cheque","blockedByChequeHint":"The cheque that paid this advance is still open. Clear or cancel it in Issued Cheques first.","refundConfirmTitle":"Refund this advance?","refundConfirmBody":"The remaining balance is returned by the vendor and the advance is closed. This cannot be undone.","refundedToast":"Advance refunded.","refundError":"Could not refund the advance.","overview":"Overview","cheque":"Cheque","attachments":"Attachments","journalEntries":"Journal Entries","noJournalEntries":"No journal entry is linked to this advance yet.","history":"History","advanceInformation":"Advance Information","amount":"Amount","appliedAmount":"Applied","remainingAmount":"Remaining","advanceDate":"Advance Date","paidFrom":"Paid From","reference":"Reference","branch":"Branch","notes":"Notes","draws":"Applied to bills","noDraws":"Not applied to any bill yet.","billFallback":"Bill #{id}","applyDialogTitle":"Apply Advance","applyDialogDescription":"Use an open advance to settle part of this bill.","selectAdvance":"Advance","advanceOption":"{date} · {remaining} remaining","amountToApply":"Amount to apply","amountRequired":"Amount must be greater than zero","exceedsRemaining":"Exceeds the advance's remaining balance","apply":"Apply","cancel":"Cancel","appliedToast":"Advance applied to the bill.","applyError":"Could not apply the advance.","openAdvancesBanner":"This vendor has {count} open advance(s) totalling","applyToBill":"Apply to this bill","refundConfirmDescription":"The remaining balance will be returned to the original treasury and the advance will be closed. This cannot be undone.","statusCancelled":"Cancelled","advanceOptionLabel":"{date} · remaining","exceedsBillDue":"Exceeds the bill's outstanding balance","changeSource":"Change Paid From","changeSourceTitle":"Change the account this advance was paid from","changeSourceDescription":"Corrects the advance's own entry. Payments that draw on this advance do not change.","changeSourceConfirm":"Change account","changeSourceHint":"Only the advance's creation entry moves: its credit goes to the new account, and the Advances balance stays exactly as it is.","sourceChangedToast":"Paid From updated","sourceChangeError":"Could not change the account","selectPaidFrom":"Select account","detail":{"entityPlural":"Vendor advances"}},"SectionAccountingVendors":{"address":"Address","addressPlaceholder":"Street, building, area","city":"City","selectCity":"Select city","country":"Country","selectCountry":"Select country","listTitle":"Vendors","listDescription":"Manage supplier profiles, bills, and payment history.","addNew":"Add New","searchPlaceholder":"Search vendors...","filters":"Filters","filterTitle":"Filter Vendors","entityName":"Vendors","noDataTitle":"No vendors yet","noDataDescription":"Add your first vendor to get started.","colVendor":"Vendor","colType":"Type","colLocation":"Location","colBills":"Bills","colPayments":"Payments","idLabel":"#ID {id}","typeCompany":"Company","typeIndividual":"Individual","typeCompanyDesc":"Businesses and organizations.","typeIndividualDesc":"People acting as vendors.","filterType":"Type","filterIndustry":"Industry","filterCity":"City","industries":"Industries","anyIndustry":"Any industry","cities":"Cities","anyCity":"Any city","vendorActions":"Vendor actions","actions":"Actions","tabOverview":"Overview","tabBasics":"Basics","tabPayments":"Payments","tabBills":"Bills","tabHistory":"History","outstandingBalance":"Outstanding Balance","accountSummary":"Account Summary","openBills":"Open Bills","recentPayments":"Recent Payments","refunds":"Refunds","noOpenBills":"No open bills","noOpenBillsDesc":"Posted bills with an outstanding balance appear here.","noRecentPayments":"No payments yet","noRecentPaymentsDesc":"Payments recorded against this vendor's bills appear here.","noRefunds":"No refunds","noRefundsDesc":"Vendor credit notes and refunds appear here.","billFallback":"Bill #{id}","refundFallback":"Refund #{id}","paymentFallback":"Payment #{id}","due":"Due","viewAllBills":"View all bills","viewAllPayments":"View all payments","viewAllRefunds":"View all refunds","loadError":"We couldn’t load this. Please try again.","identity":"Identity","contact":"Contact","additional":"Additional","compliance":"Compliance","name":"Name","type":"Type","title":"Title","jobPosition":"Job Position","industry":"Industry","tags":"Tags","id":"ID","phone":"Phone","email":"Email","website":"Website","vatNumber":"VAT Number","taxNumber":"Tax number","trn":"TRN","vatType":"VAT Type","fiscalPosition":"Fiscal Position","invoiceSending":"Invoice Sending","einvoiceFormat":"E-Invoice Format","autoPostBills":"Auto-Post Bills","reference":"Reference","notes":"Notes","tradeLicense":"Trade License","tradeLicenseExpiry":"Trade License Expiry","drugLicense":"Drug License","drugLicenseExpiry":"Drug License Expiry","gln":"GLN","mohap":"MOHAP Registration","paymentsCaption":"All payments recorded against this vendor.","billsCaption":"All purchase bills issued to this vendor.","noBills":"No bills yet","noBillsDesc":"Purchase bills posted for this vendor appear here.","statusPaid":"Paid","statusPartial":"Partial","statusOpen":"Open","amount":"Amount","method":"Method","identityCaption":"Who this vendor is, and how they appear in lists.","vendorType":"Vendor type","companyName":"Company name","companyNamePlaceholder":"Enter company name","firstName":"First name","lastName":"Last name","selectTitle":"Select title","jobPositionPlaceholder":"Enter job position","vendorPhoto":"Vendor photo","selectVendorPhoto":"Select vendor photo","titleGpDoctor":"GP Doctor","titleMadam":"Madam","titleMiss":"Miss","titleMister":"Mister","titleProfessor":"Professor","contactCaption":"How to reach this vendor.","phonePlaceholder":"Enter phone number","mobile":"Mobile","mobilePlaceholder":"Enter mobile number","emailPlaceholder":"Enter email address","additionalCaption":"Tax, tagging, and free-form notes.","vatNumberPlaceholder":"Enter VAT number","trnPlaceholder":"15-digit Tax Registration Number","trnHelper":"Required for vendors issuing UAE e-invoices","tagsPlaceholder":"Select or create tags","notesPlaceholder":"Any extra context about this vendor","complianceCaption":"UAE regulatory licences. Fill in for pharmaceutical or regulated suppliers.","tradeLicensePlaceholder":"Enter trade license number","drugLicensePlaceholder":"Enter drug license number","glnPlaceholder":"13-digit GS1 Global Location Number","glnHelper":"Used for Tatmeen supply-chain tracking","mohapPlaceholder":"Enter MOHAP registration number","similarVendorHint":"A vendor with a similar name already exists: {names}","payableAccountSaved":"Payable account updated","payableAccountDefault":"Default ({name})","payableAccountNotSet":"Not set","payableAccountLabel":"Payable Account","payableAccountChange":"Change payable account","payableAccountSectionTitle":"Accounts Payable","payableAccountDialogTitle":"Change Payable Account","payableAccountDialogDescription":"Bills and payments for this vendor post to this account. Leave empty to use the workspace default.","payableAccountSave":"Save","payableAccountCancel":"Cancel","payableAccountHelper":"Leave empty to use the workspace default payable account","colAttachments":"Attachments","detail":{"entityPlural":"Vendors"},"validation":{"companyNameIsRequired":"Company name is required","firstNameIsRequired":"First name is required","lastNameIsRequired":"Last name is required"},"form":{"sections":{"identity":"Identity","contact":"Contact","additional":"Additional","compliance":"Compliance"}}},"SectionAccountingCommissions":{"title":"Commissions","description":"Commission earned by staff on invoices and consultations. Rows are generated automatically, so review and reconcile them here.","searchPlaceholder":"Search by beneficiary...","filters":"Filters","export":"Export","exportFailed":"Export failed. Please try again.","noDataTitle":"No commissions yet","noDataDescription":"Commission rows appear here once invoices or consultations generate them.","approveSelected":"Approve selected","approveSelectedCount":"Approve selected ({count})","bulkApproveTitle":"Approve Commissions","bulkApproveContent":"Approve {count} selected commission(s)? Each is marked approved with you as the approver, then paid out through the next payroll pay-run.","bulkApprovedToast":"Approved {count} commission(s)","bulkApproveFailed":"Failed to approve commissions","colBeneficiary":"Beneficiary","colRule":"Rule","colAmount":"Amount","colRate":"Rate","colDate":"Date","colStatus":"Status","colActions":"Actions","actions":"Actions","actionsAria":"Commission actions","approve":"Approve","overrideAmount":"Override Amount","loadingStatus":"Loading status…","approveTitle":"Approve Commission","approveContent":"Approve this commission? This marks it as approved and records you as the approver. It is then paid out through the next payroll pay-run.","approvedToast":"Commission approved","approveFailed":"Failed to approve commission","overrideTitle":"Override Amount","overrideDescription":"Set a corrected commission amount. The original calculated amount is kept for audit.","saveOverride":"Save override","cancel":"Cancel","originalAmount":"Original amount","newAmount":"New amount","reason":"Reason","reasonPlaceholder":"e.g. corrected wrong auto-calculated rate","reasonRequired":"A reason is required","overrideSuccess":"Commission amount overridden","overrideFailed":"Failed to override commission","filterTitle":"Filter Commissions","filterStatus":"Status","filterRule":"Rule","filterAll":"All","filterDate":"Calculation date","filterDateFrom":"Date from","filterDateTo":"Date to","statusPendingPayment":"Pending Payment","statusPending":"Pending","statusApproved":"Approved","statusPaid":"Paid","statusCancelled":"Cancelled","statusReversed":"Reversed","detailsTab":"Details","fieldBeneficiary":"Beneficiary","fieldRule":"Rule","fieldAmount":"Amount","fieldRate":"Rate","fieldCalculationDate":"Calculation date","fieldStatus":"Status","fieldSource":"Source","fieldSplitAmong":"Split among","fieldApprovedBy":"Approved by","fieldApprovedAt":"Approved at","fieldManuallyAdjusted":"Manually adjusted","fieldOriginalAmount":"Original amount","fieldAdjustmentReason":"Adjustment reason","fieldAdjustedAt":"Adjusted at","fieldReversalReason":"Reversal reason","fieldReversedAt":"Reversed at","fieldCreated":"Created","adjustedBy":"by {name}","yes":"Yes","sourceInvoiceLine":"Invoice line #{id}","sourceSession":"Session #{id}","sourceProduct":"Product #{id}","filterSalesperson":"Salesperson","filterSalespersonPlaceholder":"Any salesperson","filterPayrun":"Pay run","filterPayrunPlaceholder":"Any pay run","filterPayrunHelp":"Commissions carried into this pay run.","statusHintPending":"Pending: earned, waiting for approval or the next pay run.","statusHintPendingPayment":"Pending payment: the invoice is not fully paid yet, so the commission is not earned.","statusHintGeneral":"Pending = earned, awaiting approval or payroll. Pending payment = invoice not fully paid yet.","selectAllMatching":"Select all {count}","allMatchingSelected":"All {count} selected","fieldPaidInPayrun":"Paid in pay run","fieldPaidAt":"Paid at","payrunEntryRef":"Pay run entry #{id}","payrunRef":"Pay run #{id}","statementOpen":"Agent statement","statementTitle":"Commission statement","statementSubtitle":"One team member's commissions for a period","statementCsv":"CSV","statementPdf":"PDF","statementPickAgent":"Pick a team member","statementPickAgentDescription":"The statement lists every commission they earned in the chosen dates, totalled by status.","statementTotals":"Totals by status","statementTotal":"Total ({count} commissions)","statementEmpty":"No commissions in this period","statementEmptyDescription":"Widen the dates or pick another team member.","detail":{"entityPlural":"Commissions"},"enums":{"ruleType":{"earn_new_invoice_sales_consultant":"New sale: Consultant","earn_new_invoice_supervisor":"New sale: Supervisor","earn_upsell_invoice_sales_consultant":"Upsell: Consultant","earn_upsell_invoice_supervisor":"Upsell: Supervisor","earn_cross_sell_invoice_sales_consultant":"Cross-sell: Consultant","earn_cross_sell_invoice_supervisor":"Cross-sell: Supervisor","earn_arrived_consultation_50pct_agent":"Arrived consultation (≥50%): Agent","earn_arrived_consultation_low_rate_agent":"Arrived consultation (<50%): Agent","earn_arrived_consultation_50pct_supervisor":"Arrived consultation (≥50%): Supervisor","earn_arrived_consultation_low_rate_supervisor":"Arrived consultation (<50%): Supervisor","earn_paid_consultation_agent":"Paid consultation: Agent","earn_paid_consultation_supervisor":"Paid consultation: Supervisor","earn_membership_services":"Membership services","deduct_cashback":"Deduct cashback","deduct_discounts":"Deduct discounts","deduct_taxes":"Deduct taxes (VAT)","deduct_service_cost":"Deduct service cost","deduct_product_cost":"Deduct product cost","apply_only_fully_paid":"Only fully paid invoices"},"reversedReason":{"invoice_void":"Invoice voided","invoice_deleted":"Invoice deleted","refund_full":"Full refund","refund_partial":"Partial refund","session_cancelled":"Session cancelled","session_missed":"Session missed","manual":"Manual"},"roleHint":{"consultant":"Consultant","supervisor":"Supervisor","co_consultant":"Co-consultant"}}},"CampaignReport":{"title":"Campaign Results","messages":"Messages","colPhone":"Phone","colEmail":"Email","colStatus":"Status","colReason":"Reason","colSentAt":"Sent at","searchPhone":"Search phone…","messagesEmptyTitle":"No messages yet","messagesEmptyDescription":"Recipients appear here once the campaign starts sending.","failureReasons":"Why messages failed","failureUnknown":"Unknown error","billingByCategory":"Billing by category","billableOf":"{billable} of {total} billed","templateHealth":"Template health (Meta)","templateStatus":"Status","templateQuality":"Quality rating","templateCategory":"Category","previousCategory":"Previous category","templateRejected":"Template rejected by Meta","categoryChangePending":"Meta will re-categorize this template as {category}","categoryChangePendingDescription":"Expected around {when}. Marketing category messages cost more and may reach fewer people.","quality_GREEN":"High","quality_YELLOW":"Medium","quality_RED":"Low","failure_131026":"Number can't receive WhatsApp messages","failure_131049":"Meta limited marketing messages to this person","failure_131047":"Outside the 24-hour reply window","failure_130429":"Sending rate limit reached","failure_131048":"Spam rate limit hit","failure_131056":"Too many messages to the same number","failure_132000":"Template parameters don't match","failure_132001":"Template doesn't exist or isn't approved","failure_132015":"Template is paused","failure_132016":"Template is disabled","results":"Results","details":"Details","type":"Type","channel":"Channel","identifier":"Identifier","createdBy":"Created by","createdAt":"Created at","startTime":"Started","endTime":"Finished","duration":"Duration","batches":"Batches","messageContent":"Message","recipients":"Recipients","delivered":"Delivered","read":"Read","notDelivered":"Not delivered","replies":"Replies","conversions":"Conversions","optOuts":"Opt-outs","cost":"Cost","roas":"ROAS","perRecipient":"Per recipient","revenue":"Revenue","count":"Count","close":"Close","roasTooltip":"Attributed revenue ÷ cost. Align the campaign cost currency with the tenant currency for a like-for-like ratio.","clicks":"Clicks","templatePaused":"Template paused by Meta","templatePausedDescription":"Meta paused this WhatsApp template due to quality issues. No messages will be delivered while it is paused. Contact Meta to restore the template.","templateFlagged":"Template flagged by Meta","templateFlaggedDescription":"Meta has flagged this WhatsApp template for quality review. Delivery may be limited until the review is complete.","detail":{"entityPlural":"Campaigns"},"failure_remote_template_unsupported":"Uses an old MailerSend template; rebuild the content in the campaign editor","failure_quiet_hours_deferred":"Held until quiet hours end","failure_opt_out_suppression":"Address opted out, bounced or complained","failure_demo_tenant":"Demo workspace: only allow-listed addresses receive email"},"LeadAvatar":{"chooseAvatar":"Choose Avatar","chooseAvatarDescription":"Pick an avatar for this patient.","gallery":"Gallery","upload":"Upload","uploadHint":"PNG or JPG. The photo is cropped to a square.","male":"Male","female":"Female","save":"Save","cancel":"Cancel","avatarUpdated":"Avatar updated","avatarUpdateFailed":"Failed to update avatar","editAvatar":"Edit avatar"},"SalesSettings":{"section_prescriptions":"Prescription medicines","section_prescriptions_caption":"Medicines that need a doctor's prescription (e.g. Mounjaro, Botox) and the services that give them.","prescription_check_label":"How they are sold","prescription_check_helper":"One prescription per sale: the patient's signed prescription is linked to the invoice automatically. Start with Warn while staff learn the flow, then switch to Block.","prescription_check_off":"Off: no check","prescription_check_warn":"Warn: sell, and flag sales without a signed prescription","prescription_check_block":"Block: sell only against the patient's signed prescription","title":"Sales defaults","subtitle":"Org-wide sales behaviour applied across all branches.","section_payments":"Payments","section_payments_caption":"How cash and bank-transfer payments are confirmed.","auto_mark_cash_paid_label":"Auto-mark cash payments as paid","auto_mark_cash_paid_helper":"Cash and bank-transfer payments are created as PAID (one-click cashier confirm). Card/POS payments still wait on the terminal.","section_refunds":"Refunds","section_refunds_caption":"When a refund needs a manager override: past the refund window, or over the amount threshold.","refund_window_days_label":"Refund window (days)","refund_window_days_helper":"Days after a payment during which a refund can be issued without manager override. Set 0 to allow refunds at any time.","refund_override_amount_threshold_enabled_label":"Require override above an amount","refund_override_amount_threshold_enabled_helper":"Off: only the refund window rule applies. On: a refund over the threshold below always needs a manager override.","refund_override_amount_threshold_label":"Override amount threshold","refund_override_amount_threshold_helper":"Refunds above this amount (in the workspace currency) need a manager override reason, whatever the refund window.","section_receipts":"Receipts","section_receipts_caption":"Automatic receipt delivery when an invoice is paid.","auto_send_receipt_on_paid_label":"Auto-send receipt on PAID","auto_send_receipt_on_paid_helper":"Send the receipt to the patient when the invoice flips to PAID. Requires a configured receipt template.","receipt_channel_priority_label":"Receipt channels","receipt_channel_priority_helper":"Channels tried in order; the first one the patient has on file is used.","channel_whatsapp":"WhatsApp","channel_email":"Email","channel_sms":"SMS","vat_note":"VAT (inclusive/exclusive + rate) is configured on the branch tax rule, not here.","saved":"Sales settings saved"},"MarketingSettings":{"title":"Lead Ownership","subtitle":"Who may take, hand off and change a lead.","saved":"Lead ownership settings saved","section_leads":"Lead ownership","section_leads_caption":"Off: every role with leads access can change and assign every lead. On: leads are assigned by the system or a supervisor.","lead_ownership_enforced_label":"Only the system or a supervisor assigns leads","lead_ownership_enforced_helper":"Agents then change only the leads assigned to them and cannot claim, hand off or release one. Turn on auto-assignment too, so new leads do not wait unassigned."},"MaintenanceView":{"default_title":"App is unavailable","default_description":"There was a problem loading your account data. You can try again or check back later.","footer_hint":"Your workspace is temporarily unavailable. It will be back online shortly.","try_again":"Try again","retrying":"Retrying…","app_version":"App version"},"SubscriptionLockScreen":{"no_plan_title":"Activate your plan to continue","no_plan_description":"To access this workspace, activate a subscription plan for your clinic.","past_due_title":"Payment required","past_due_description":"Your last payment didn’t go through. Update your billing details or retry the payment to restore access.","expired_title":"Your subscription has expired","expired_description":"Renew your plan to restore full access to your workspace and resume operations.","trial_ended_title":"Your trial has ended","trial_ended_description":"Pick a plan to keep using your workspace. All your data is preserved.","unknown_title":"Subscription required","unknown_description":"Your workspace is not currently active. Activate a plan to continue.","activate_plan":"Activate plan","update_billing":"Update billing","contact_owner":"Contact your workspace owner to restore access.","footer_hint_manager":"Once payment is received your workspace will unlock automatically.","footer_hint_staff":"Your workspace owner has been notified and can resolve this from Settings → Billing.","app_version":"App version","suspended_title":"Your workspace has been suspended","suspended_description":"This was an administrative action, so paying will not restore access. Reply to your last email from us and we will sort it out.","pending_activation_title":"Your workspace is being set up","pending_activation_description":"We are finishing your configuration. Nothing is wrong and there is nothing to pay. We will email you the moment it is ready.","contact_us":"Contact us"},"AppUnavailable":{"title_timeout":"Taking longer than usual","description_timeout":"The app is taking longer than expected to load your data. This is usually a temporary network hiccup.","hint_timeout":"Try tapping \"Try again\". If this keeps happening, check your internet connection or close and reopen the app.","title_network":"No internet connection","description_network":"It looks like your device is offline. Please check your Wi-Fi or mobile data and try again.","hint_network":"Once your connection is restored, tap \"Try again\" to reload.","title_error":"Something went wrong","description_error":"There was a problem loading your account data. This is usually temporary, please try again in a moment.","hint_error":"If the problem persists after retrying, contact support and share your reference code.","title_default":"App is unavailable","description_default":"There was a problem loading your account data. You can try again or check back later.","hint_default":"If the problem persists, please check your internet connection or try again later.","try_again":"Try again","retrying":"Retrying…","log_out":"Log out","need_help":"Need help?","reference_code":"Reference code","app_version":"App version","copy_code":"Copy code","copied":"Copied!","support_note":"Share the reference code with support, it helps locate the exact error in our system logs."},"SettingsEInvoicing":{"readiness_title":"Compliance readiness","readiness_description":"Computed from this workspace's live data: branches, customers, products and tax rules. Close these gaps before emission is switched on.","readiness_ready":"Ready","readiness_not_ready":"Not ready","readiness_score":"Readiness score","readiness_score_value":"{score}/100","readiness_retry":"Retry","readiness_error":"Could not load the readiness report. It is computed on request, so this is usually temporary.","readiness_no_findings":"No gaps found. Every record this check covers is ready for e-invoicing.","readiness_affected":"{affected} of {total} affected","readiness_fix_hint":"How to fix:","severity_blocker":"Blocker","severity_per_document":"Per document","severity_advisory":"Advisory","coming_soon_banner":"E-invoicing ships one country at a time; UAE FTA Phase 2 comes first. Until the accredited ASP is contracted it stays off, but you can already complete your seller details and close the readiness gaps below.","master_switch_title":"Master switch","master_switch_description":"Off by default for every existing tenant. Turning it on activates the per-branch regime selected on the Branches page and starts building EInvoice records when invoices are paid.","go_live_warning":"Going live means invoices will be transmitted to the tax authority through the configured channel. Ensure the ASP / Fatoora / ETA credentials are correct before disabling sandbox.","regimes_title":"Supported regimes","chip_available":"Available","chip_coming_soon":"Coming soon","regimeCards":{"uae_fta":{"title":"UAE FTA (PINT-AE)","checklist":{"trn":"Tenant + branch TRN (15 digits) filled.","emirate":"Branch emirate code set (AZ / DU / SH / AJ / UQ / RK / FU).","productCodes":"Every product carries an HS or UNSPSC code.","asp":"Accredited ASP contracted (e.g. Avalara / Pagero / ClearTax)."}},"ksa_zatca":{"title":"KSA ZATCA Phase 2","checklist":{"csid":"Production CSID + X.509 certificate from ZATCA.","numbering":"Numbering policy set to \"Per tenant, gapless\" (ICV + PIH).","qr":"TLV QR generator enabled for B2C."}},"egypt_eta":{"title":"Egypt ETA","checklist":{"oauth":"ETA OAuth client credentials + eSeal certificate.","productCodes":"GS1 / EGS product code mapping per item.","acceptWindow":"Buyer 72h accept window respected on credit notes."}},"peppol_bis":{"title":"Peppol BIS Billing 3.0","checklist":{"accessPoint":"Peppol Access Point (AS4) credentials.","participantId":"Buyer Peppol Participant ID with scheme."}}},"page_title":"E-Invoicing","page_description":"Seller identity, compliance readiness and the tax-authority regimes your invoices will be submitted to.","entity_name":"E-invoicing settings","status_enabled":"E-invoicing","status_mode":"Submissions","mode_sandbox":"Sandbox: nothing is sent to the tax authority","mode_live":"Live: invoices are transmitted","seller_title":"Seller details","seller_description":"Printed on every e-invoice as the issuing party. Use the name and address exactly as they appear on your VAT certificate.","seller_legal_name":"Legal name","seller_city":"City","seller_address_line1":"Address line 1","seller_address_line2":"Address line 2","seller_emirate_state":"Emirate / state","seller_postal_code":"Postal code","regimes_description":"What each country requires before invoices can be submitted. Each branch picks its regime on the Branches page."},"SettingsInsurance":{"actions":"Actions","status_active":"Active","status_inactive":"Inactive","payer_entity":"Insurance Payer","payer_plural":"Insurance Payers","payer_add":"Add Payer","payer_page_description":"The insurers this clinic bills. A patient policy can only point at a payer listed here.","payer_search_placeholder":"Search payers...","payer_empty_title":"No payers yet","payer_empty_description":"Add the first insurer so reception can record patient policies against it.","payer_col_name":"Payer","payer_col_license":"Licence No.","payer_col_type":"Type","payer_col_status":"Status","payer_section_details":"Details","payer_name":"Name","payer_name_placeholder":"e.g. Daman National Health Insurance","payer_code":"Code","payer_code_placeholder":"e.g. DAMAN","payer_code_help":"How this payer is matched across regulator files. Leave blank if unknown.","payer_license_number":"Licence Number","payer_license_number_placeholder":"e.g. 1234567","payer_type":"Type","payer_type_placeholder":"e.g. TPA, Insurer","payer_type_help":"Free text. How your team refers to this payer.","payer_active":"Active","payer_options_aria":"Insurance payer options","plan_entity":"Insurance Plan","plan_plural":"Insurance Plans","plan_add":"Add Plan","plan_page_description":"The plans each payer offers. This is what a patient policy actually points at.","plan_search_placeholder":"Search plans...","plan_empty_title":"No plans yet","plan_empty_description":"Add a plan so patient policies can reference the right level of cover.","plan_col_name":"Plan","plan_col_payer":"Payer","plan_col_type":"Plan Type","plan_section_details":"Details","plan_name":"Name","plan_name_placeholder":"e.g. Enhanced Silver","plan_payer":"Payer","plan_payer_placeholder":"Choose the insurer","plan_type":"Plan Type","plan_type_none":"(None)","plan_code":"Code","plan_code_placeholder":"e.g. ENH-S","plan_code_help":"Short code used on claims. Max 10 characters.","plan_options_aria":"Insurance plan options"},"SettingsInsuranceGateway":{"page_title":"Insurance Gateway","page_description":"How each payer transacts, what still blocks going live, and every round-trip on the wire.","save":"Save","cancel":"Cancel","retry":"Retry","readiness_title":"Regulatory readiness","readiness_description":"What this clinic still needs before it can go live. Scoped to the records a future claim would touch, not your whole history.","readiness_error":"Could not load the readiness report.","readiness_blocked":"Blocked","readiness_clear":"Clear","readiness_advisory":"Advisory","readiness_no_sections":"No readiness tracks apply to this workspace yet.","readiness_scoped":"{missing} of {required} still missing","readiness_raw":"{rawTotal} across all records","payers_title":"Payer routing","payers_caption":"Change how one payer transacts. There is no bulk action on purpose, because this is what turns real claim filing on.","payers_entity":"Payers","payers_empty_title":"No payers configured","payers_empty_description":"Add a payer under Insurance Payers first, then set how it transacts here.","col_payer":"Payer","col_mode":"Mode","col_claim_transport":"Claims via","col_capabilities":"Automated","col_credentials":"Credentials","col_state":"State","col_attempts":"Attempts","col_error":"Error","col_when":"When","capabilities_none_automated":"Nothing automated","capabilities_manual":"By hand: {list}","credentials_ready":"Configured","credentials_missing":"Missing","credentials_not_required":"Not required","credentials_not_required_hint":"This pack has no wire, so it needs no credentials. That is not the same as missing.","routing_edit":"Edit routing","routing_title":"Routing: {payer}","routing_description":"Only this payer changes. Nothing about the payer's name or licence is edited here.","routing_saved":"Routing updated.","routing_tier_hint":"The capability tier caps which transports are legal. Options outside the tier are disabled.","routing_server_authority":"The server validates this same rule and the database enforces it, so a rejected combination is reported per field.","capability_mode":"Capability mode","capability_mode_offline":"Offline (insurance UI hidden)","capability_mode_record_only":"Record only (no transactions)","capability_mode_manual_portal":"Manual portal (biller works the payer portal)","capability_mode_partial_auto":"Partially automated","capability_mode_full_auto":"Fully automated","transport_eligibility_transport":"Eligibility via","transport_preauth_transport":"Pre-authorisation via","transport_claim_transport":"Claims via","transport_remittance_transport":"Remittance via","transport_value_none":"None (disabled)","transport_value_manual":"Manual (biller task queue)","transport_value_internal_tpa":"Internal TPA (mock gateway)","transport_value_dhpo_eclaim":"DHPO / eClaimLink (DHA)","transport_value_shafafiya":"Shafafiya (DoH)","transport_value_generic_fhir":"Generic FHIR R4","country_pack":"Jurisdiction pack","country_pack_offline":"Offline","country_pack_manual":"Manual","country_pack_uae_dha":"UAE: DHA (eClaimLink / DHPO)","country_pack_uae_doh":"UAE: DoH Abu Dhabi (Shafafiya)","country_pack_uae_mohap":"UAE: MOHAP (Riayati)","country_pack_ksa_nphies":"KSA: NPHIES","country_pack_generic_fhir":"Generic FHIR R4","country_pack_generic_x12":"Generic X12 EDI","country_pack_internal_tpa":"Internal TPA","adapter_environment":"Environment","adapter_environment_sandbox":"Sandbox","adapter_environment_prod":"Production","secrets_ref":"Secrets reference","secrets_ref_placeholder":"e.g. dhpo-main","secrets_ref_help":"A pointer into the deployment secret store. Never put a credential here.","eligibility_ttl":"Eligibility validity (minutes)","eligibility_ttl_help":"How long an eligibility answer stays trusted before it is re-checked.","shortfall_policy":"Shortfall policy","shortfall_policy_patient_ar":"Bill the patient","shortfall_policy_write_off":"Write off","shortfall_policy_flag_for_review":"Flag for review","requires_preauth_default":"Require pre-authorisation by default","txn_eligibility":"Eligibility","txn_preauth":"Pre-authorisation","txn_claim":"Claim","txn_remittance":"Remittance","messages_title":"Wire audit","messages_caption":"What we sent and what the payer said. Read-only, because these rows are evidence for a regulator.","messages_entity":"Messages","messages_empty_title":"Nothing on the wire yet","messages_empty_description":"Round-trips appear here once a payer is switched on.","messages_needs_attention":"Only rows needing attention","msg_state_pending":"Pending","msg_state_sending":"Sending","msg_state_sent":"Sent","msg_state_ack_ok":"Acknowledged","msg_state_ack_error":"Rejected","msg_state_failed":"Failed","msg_dead_lettered":"Retries exhausted","msg_transaction":"Transaction","msg_transport":"Transport","msg_idempotency_key":"Idempotency key","msg_external_reference":"External reference","msg_latency":"Latency (ms)","msg_next_retry":"Next retry","msg_view_summary":"Summary","msg_view_payload":"Payload","msg_error_report":"Payer's error report","msg_request_body":"Request","msg_response_body":"Response","msg_empty_body":"(empty)"},"SettingsInterop":{"page_title":"Health Data Exchange","page_description":"Enrol each branch with its health authority and watch the outbox that proves you are reporting.","save":"Save","cancel":"Cancel","retry":"Retry","registrations_title":"Enrollments","registrations_caption":"Which branch is registered with which authority, and what stands between it and a live send.","registrations_entity":"Enrollments","registrations_empty_title":"No branch is enrolled yet","registrations_empty_description":"Enrol a branch with NABIDH or Malaffi to start reporting.","registration_add":"Enrol a branch","registration_edit":"Edit enrollment","registration_add_title":"Enrol a branch","registration_edit_title":"Update enrollment","registration_description":"Enrolling a facility with a health regulator is a legal act with a licence attached to it.","registration_created":"Branch enrolled.","registration_updated":"Enrollment updated.","registration_locked_keys":"Branch and authority are fixed for an existing enrollment. Changing either would create a second one instead of moving this one.","col_branch":"Branch","col_status":"Status","col_dispatchable":"Sending","col_identifiers":"Identifiers","col_notes":"Notes","col_authority":"Authority","col_attempts":"Attempts","col_detail":"What to do","col_when":"When","status_not_started":"Not started","status_onboarding":"Onboarding requested","status_security_assessment":"Security assessment","status_sit":"SIT / sandbox testing","status_live":"Live","status_suspended":"Suspended","dispatch_live":"Sending","dispatch_quiet":"Quiet","branch":"Branch","branch_placeholder":"Choose a branch","authority":"Health authority","facility_id":"Facility ID","facility_id_placeholder":"e.g. DHA Sheryan ID","provider_code":"Provider code","assigning_authority":"Assigning authority","assigning_authority_help":"Namespace qualifying patient identifiers in outbound payloads (HL7 PID-3.4 / MSH-4).","identifier_help":"Issued by the authority. Leave blank until they give it to you. An empty field is left untouched on save.","notes":"Notes","missing_fields":"Waiting on: {list}","legacy_pipeline":"Own pipeline","legacy_pipeline_hint":"This authority's dispatch is owned by its own pipeline. A row here is record-keeping only and changes nothing about how those messages are sent.","no_spec":"No spec yet","no_spec_hint":"We hold no Interface Specification for this authority yet. Enrollment is still tracked, but messages record a build error instead of being sent, so the gap is visible rather than silent.","readiness_title":"Patient identity","readiness_caption":"Whether we can identify patients well enough to report them. Counted over patients who actually arrived, since no one else is ever reported.","readiness_error":"Could not load patient-identity readiness.","readiness_empty":"No arrived patients in the window yet.","readiness_ready_of":"{ready} of {patients} reportable","readiness_nothing_to_measure":"Nothing to measure yet","readiness_gaps":"{blocked} blocked · {missingDob} missing date of birth","health_title":"Outbox health","health_caption":"Per authority, not blended. One regulator being down says nothing about another.","health_error":"Could not load outbox health.","health_empty":"No messages in this window.","health_success_rate":"{pct}% acknowledged","health_nothing_settled":"Nothing settled yet","health_total":"Total","health_in_flight":"In flight","health_ack_ok":"Acknowledged","health_ack_error":"Rejected","health_build_error":"Build errors","health_dead_letter":"Abandoned","health_build_error_hint":"Build errors are our gap, not the authority's: the payload could not be produced.","window_hours":"{hours}h","messages_title":"Outbox","messages_caption":"Individual messages. Read-only except requeue, which only makes a message eligible again. It never changes the payload.","messages_entity":"Messages","messages_empty_title":"Nothing in the outbox","messages_empty_description":"Messages appear here once a branch is live with an authority.","msg_status_pending":"Pending","msg_status_claimed":"Claimed for sending","msg_status_sent":"Sent, awaiting acknowledgement","msg_status_ack_ok":"Acknowledged","msg_status_ack_error":"Rejected by the authority","msg_status_build_error":"Could not be built","msg_status_dead_letter":"Abandoned after repeated failures","requeue":"Requeue","requeue_title":"Requeue this message?","requeue_body":"The message becomes eligible for another attempt. The payload is not changed and nothing is re-generated.","requeue_done":"Message requeued.","nabidh_title":"NABIDH (DHA) messages","nabidh_caption":"Every message sent to Dubai's health exchange and what happened to it. Fix the patient file, then resend the visit.","nabidh_entity":"NABIDH messages","nabidh_empty_title":"No messages","nabidh_empty_description":"Nothing matches this filter.","nabidh_preset_all":"All","nabidh_outcome_accepted":"Accepted","nabidh_outcome_rejected":"Rejected by DHA","nabidh_outcome_refused":"Not sent: file incomplete","nabidh_outcome_pending":"Waiting","nabidh_outcome_failed":"Failed","nabidh_outcome_superseded":"Replaced by a resend","nabidh_col_message":"Patient · message","nabidh_col_outcome":"Outcome","nabidh_col_error":"Reason","nabidh_patient_unknown":"Unknown patient","nabidh_resend":"Resend visit","nabidh_resend_title":"Resend this visit to DHA?","nabidh_resend_body":"The visit's messages are rebuilt from the patient file as it is now. Messages DHA already accepted are not sent again, and the old rows are kept as history.","nabidh_resend_queued":"The visit is being resent. Check back in a few minutes.","nabidh_resend_blocked":"The visit cannot be sent yet."},"BranchInventoryOverrides":{"title":"Per-branch overrides","description":"Every branch inherits the org defaults above. Customize a branch only when it genuinely needs different rules, like commission settings.","customizeButton":"Customize a branch","emptyTitle":"No branch overrides yet","emptyDescription":"All branches use the org-wide inventory defaults configured above. Click \"Customize a branch\" to override for a specific clinic.","noFieldsOverridden":"No fields overridden, entire row inherits the tenant default. Consider deleting.","editAria":"Edit override","revertAria":"Revert to tenant defaults","revertTitle":"Revert branch to tenant defaults?","revertDescription":"The branch will inherit every setting from the org-wide defaults again.","revertButton":"Revert","reverted":"Branch reverted to tenant defaults.","revertFailed":"Revert failed.","field":{"lowStock":"Low-stock threshold","expiry":"Expiry warning days","costSync":"Cost sync mode","requireStock":"Require stock for invoice","capacity":"Warehouse capacity warning %"},"dialog":{"createTitle":"Customize a branch's inventory settings","editTitle":"Edit branch overrides","description":"Toggle a field to override the tenant default. Leave a field off to keep inheriting.","inheritanceHint":"Fields you do not toggle stay inherited from the org-wide defaults. You can come back and override more fields later.","branchLabel":"Branch","branchRequired":"Pick a branch before saving.","valueLabel":"Custom value","field":{"lowStock":"Low-stock threshold","lowStockHelper":"Days-of-cover before a low-stock alert fires. Stricter (smaller) is good for controlled drugs.","expiry":"Expiry warning days","expiryHelper":"How many days before expiry to flag a batch.","costSync":"Cost sync mode","costSyncHelper":"How product_cost is updated when a GRN confirms.","requireStock":"Require stock for invoice","requireStockHelper":"When on, sales of zero-stock products are blocked unless the user has the oversell permission.","capacity":"Warehouse capacity warning %","capacityHelper":"Warn once a warehouse passes this fraction of its capacity."},"costSyncManual":"Manual","costSyncLastPurchase":"Last purchase price","costSyncWeightedAverage":"Weighted average","enabled":"Enabled","disabled":"Disabled","loading":"Loading override…","saved":"Branch overrides saved.","failed":"Save failed.","cancelButton":"Cancel","saveButton":"Save","savingButton":"Saving…"},"entityName":"Branch override"},"EmployeeFloatActions":{"topup":"Topup","settle":"Settle","reconcile":"Reconcile","topupDialog":{"title":"Topup employee float","description":"Move cash from a source account into the employee's float.","amountLabel":"Amount","sourceAccountLabel":"Source account id","sourceAccountHelper":"Account where the cash is debited from (typically a branch Cash account).","journalLabel":"Posting journal id","journalHelper":"Posting journal for the JE, usually the General journal.","notesLabel":"Notes","submit":"Topup","submitting":"Posting…","success":"Float topped up.","failure":"Topup failed."},"settleDialog":{"title":"Settle float","description":"Employee returns cash. Optionally close the float on full settlement.","amountLabel":"Amount returned","destinationAccountLabel":"Destination account id","destinationAccountHelper":"Account where the returned cash is debited (typically the branch Cash account).","journalLabel":"Posting journal id","journalHelper":"Posting journal for the JE, usually the General journal.","notesLabel":"Notes","closeFloatLabel":"Close float after settlement","submit":"Settle","submitting":"Posting…","success":"Float settled.","successAndClose":"Float settled and closed.","failure":"Settlement failed."},"reconcileDialog":{"title":"Reconcile float","description":"Count the employee's physical cash and post the variance.","countedLabel":"Counted amount","countedHelper":"Physical cash counted in the employee's possession.","varianceAccountLabel":"Variance account id","varianceAccountHelper":"GL account for the variance (typically Cost Variance).","journalLabel":"Posting journal id","journalHelper":"Posting journal for the JE.","reasonLabel":"Reason / notes","reasonPlaceholder":"e.g. petty receipt missing, change discrepancy","submit":"Reconcile","submitting":"Posting…","success":"Reconciliation complete.","failure":"Reconciliation failed."},"optionsLabel":"Actions","editLabel":"Edit float","deleteLabel":"Delete float"},"GrnRejectionDialog":{"title":"Confirm with rejections","description":"Capture rejected qty + reason per line before flipping this GRN to CONFIRMED.","helperText":"Leave the row blank to accept the full received qty. Otherwise, enter the rejected qty and a reason, both are required.","receivedLabel":"Received: {qty}","rejectQtyLabel":"Reject qty","reasonLabel":"Rejection reason","reasonPlaceholder":"e.g. broken seal, missing batch label, wrong SKU","qtyRequired":"Reject qty must be greater than zero.","reasonRequired":"Reason is required for every rejected line.","confirmed":"GRN confirmed with rejections. Vendor return draft has been queued.","failed":"Confirmation failed.","cancelButton":"Cancel","confirmButton":"Confirm with rejections","savingButton":"Saving…"},"OutOfStockDialog":{"title":"Insufficient stock","descriptionDefault":"One or more items do not have enough on-hand stock to bill.","descriptionAllDone":"All shortages resolved. You can close this dialog and resubmit the sale.","availableLabel":"Available {available} · Needed {needed}","productFallback":"Product #{id}","askManagerHint":"Ask a manager to receive stock for this product before billing.","overrideButton":"Override with note","quickReceiveButton":"Quick receive","justificationLabel":"Justification note","justificationPlaceholder":"e.g. emergency walk-in, vendor restock pending","justificationRequired":"Justification note is required.","quantityLabel":"Quantity","quantityRequired":"Quantity must be greater than zero.","unitCostLabel":"Unit cost (optional)","receiptNoteLabel":"Receipt note","receiptNotePlaceholder":"e.g. emergency restock from cabinet, walk-in delivery","receiptNoteRequired":"Receipt note is required.","cancelButton":"Cancel","confirmOverrideButton":"Confirm override","savingButton":"Saving…","receiveNowButton":"Receive now","receivingButton":"Receiving…","overrideFailed":"Override failed.","quickReceiveFailed":"Quick-receive failed.","closeResubmit":"Close and resubmit","cancelSale":"Cancel sale"},"CreditDiagnosis":{"titleExhausted":"This package is fully consumed","titleProductMismatch":"This package doesn't match the service","titleInvoiceTerminal":"Invoice no longer carries credit","titleMissing":"Selected package item is no longer available","bodyExhausted":"Pick an alternative package below, or resolve a pending session that's holding the credit.","bodyProductMismatch":"Choose a package whose service product matches the booked service.","bodyInvoiceTerminal":"The invoice has been canceled or voided. Issue a new invoice or pick a different package.","bodyMissing":"The selected package item was deleted or is unreachable. Pick another package from the list.","itemSummary":"Invoice #{invoice} · {delivered}/{quantity} used","alternativesHeader":"Available alternatives ({count})","pendingHoldsHeader":"Sessions holding this credit ({count})","consumedByHeader":"Sessions that already consumed this credit ({count})","alternativeRowTitle":"Invoice #{invoice}","alternativeRowSubtitle":"Remaining: {remaining}","sessionRowTitle":"Session #{id}","useThis":"Use this","openSessionAria":"Open session #{id}","dismissAria":"Dismiss diagnosis","noContextHint":"No related sessions or alternatives were found on this invoice."},"Common":{"delete":{"reasonLabel":"Reason","reasonPlaceholder":"Why is this being deleted?","reasonHelper":"At least {min} characters. Kept on the record and in its history.","cannotDelete":"Cannot delete {entity}","deleteAndRelated":"Delete {entity} and related records?","deleteConfirm":"Delete {entity}?","checking":"Checking {entity}...","deletingEntity":"Delete {entity}","checkingRelated":"Checking for related records...","unableToCheck":"Unable to check for related records","moreRecords":"{count} more related record(s) not shown","isReferencedBy":"is referenced by other records and cannot be deleted. Remove or reassign the following related items first.","namedIsReferencedBy":"{entity} is referenced by other records and cannot be deleted. Remove or reassign the related items below first.","willAlsoRemove":"will also remove the following related records.","willUnlink":"The following records reference this item; deleting it will clear that link. The records themselves are kept.","cannotUndo":"This action cannot be undone.","scrollToReview":"Scroll to the bottom to review all affected records before deleting","areYouSure":"Are you sure you want to delete {entity}? This action cannot be undone.","deleting":"Deleting...","deleteAll":"Delete all","delete":"Delete","close":"Close","cancel":"Cancel","thisEntity":"this {entity}","thisEntityStart":"This {entity}"},"errors":{"serverHeading":"Something went wrong","serverDescription":"We hit a snag on our end. Our team has been notified, give it a moment and try again.","networkHeading":"No connection","networkDescription":"You appear to be offline. Check your internet connection and try again.","permissionHeading":"You can't view {entity}","permissionDescription":"You don't have access to this page. If you think this is a mistake, reach out to your admin.","notFoundHeading":"{entity} not found","notFoundDescription":"This page doesn't exist or may have been removed. Try going back.","unknownHeading":"Something went wrong","unknownDescription":"An unexpected error occurred. Try refreshing the page, if it keeps happening, contact support.","goBack":"Go back","tryAgain":"Try again","listLoadFailed":"Could not load this list","nothingHere":"Nothing here yet","recordEntity":"This record"},"table":{"noMatchesFor":"No matches for \"{search}\"","noMatches":"No matches","nothingToShow":"Nothing to show","tryDifferentSearch":"Try a different search term.","listEmpty":"This list is empty right now.","addNew":"Add New","noDataYet":"No {entity} yet","addFirst":"Add your first {entity} to get started.","searchPlaceholder":"Search {entity}...","filters":"Filters","history":"History","compact":"Compact view","comfortable":"Comfortable view","refresh":"Refresh","view":"View","listView":"List view","boardView":"Board view","viewMode":"View mode","tryClearFilters":"Try changing or clearing the filters.","selectedCount":"{count, number} selected","deselect":"Deselect","clearSelection":"Clear selection","selectAll":"Select all","selectAllRows":"Select all rows","selectRow":"Select row","expandRow":"Expand row","collapseRow":"Collapse row","filterColumn":"Filter {column}","editFilterHint":"Click to change this filter","rowsPerPage":"Per page:","displayedRows":"{from}-{to} of {count}","displayedRowsMore":"{from}-{to} of more than {to}","closeDetails":"Close details","details":"Details","records":"Records","loadMoreFailed":"Couldn't load more rows.","retry":"Retry","viewDetails":"View details","clearSearch":"Clear search","columns":"Columns","columnsHidden":"Columns ({count} hidden)","showColumns":"Show columns","showAllColumns":"Show all columns"},"offline":{"bannerTitle":"You're offline","bannerDescription":"Some actions may be unavailable until you reconnect.","saveBlocked":"Changes can't be saved until you reconnect.","backOnline":"Back online","backOnlineDescription":"You can save changes again.","modalOfflineTitle":"No internet connection","modalOfflineDescription":"Waiting for the connection to resume…","modalRestoredTitle":"Connection restored","modalRestoredDescription":"You're back online."},"discard":{"title":"Discard changes?","description":"Are you sure you want to discard this form? This action cannot be undone.","confirm":"Discard","cancel":"Keep editing","eyebrow":"Unsaved edits","goingBackDescription":"You have unsaved changes. Going back now will discard them.","unsavedDescription":"Your recent edits have not been saved. If you leave now, those changes will be lost.","confirmChanges":"Discard changes"},"import":{"entityName":"Import {resource}","howItWorks":"How it works","instructions":"Upload a CSV, we'll validate it first and show a preview. Existing rows are matched by code (SKU); new rows are created. Nothing is saved until you confirm.","downloadTemplate":"Download sample template","downloading":"Downloading…","fileSection":"File","dropzone":"Drag & drop a CSV here, or click to browse","dropzoneDrop":"Drop the file here","dropzoneHint":"Only .csv files are accepted · Max {size} MB","remove":"Remove","validating":"Validating…","csvOnly":"Please upload a .csv file. If you have an Excel file, export it as CSV first (File → Save As → CSV).","tooLarge":"File is too large. Maximum size is {size} MB.","validateFile":"Validate file","previewSection":"Preview","totalRows":"{count} total rows","toCreate":"{count} to create","toUpdate":"{count} to update","skipped":"{count} skipped","errors":"{count, plural, one {# error} other {# errors}}","allErrorsTitle":"All rows have errors","allErrorsDesc":"Fix the problems in your file and re-upload to proceed.","someErrorsTitle":"Some rows have problems","someErrorsDesc":"Rows with errors will be skipped on import. Fix them in your file and re-upload, or proceed to import the valid rows.","rowHeader":"Row","columnHeader":"Column","problemHeader":"Problem","moreErrors":"Showing first {count} errors, fix these and re-upload to see more.","useDifferentFile":"Use a different file","importing":"Importing…","importRows":"{count, plural, one {Import # row} other {Import # rows}}","importComplete":"{resource} import complete, {created} created, {updated} updated.","importCompleteSkipped":"{resource} import complete, {created} created, {updated} updated, {skipped} skipped.","importCompleteDeactivated":"{resource} import complete, {created} created, {updated} updated, {deactivated} deactivated.","failedToValidate":"Failed to validate file.","failedToImport":"Failed to import file.","deactivated":"{count} deactivated","syncModeLabel":"Deactivate items missing from this file","syncModeHint":"Only new/matched rows are affected by default. Nothing else changes.","syncModeWarning":"Any active row not present in this file will be set inactive on import. Review the preview counts carefully before committing."},"account":{"personalInfo":"Personal Info","personalInfoDesc":"Manage your profile details","security":"Security","securityDesc":"Password & authentication","preferences":"Preferences","preferencesDesc":"Language, currency & display","accountSection":"Account","displaySection":"Display","darkMode":"Dark Mode","darkModeOn":"On","darkModeOff":"Off","logOut":"Log Out"},"actions":{"back":"Back","backTo":"Back to {name}","openInNewTab":"Open in new tab","save":"Save","update":"Update","next":"Next","quickAdd":"Quick add","copy":"Copy","cancel":"Cancel","confirm":"Confirm","close":"Close","search":"Search","searchEllipsis":"Search...","createNew":"Create new","createTerm":"Create \"{term}\"","noOptions":"No options available","noResultsFor":"No results for \"{term}\"","askAdminToCreate":"Ask an administrator to add one.","edit":"Edit","delete":"Delete","remove":"Remove","add":"Add","addAll":"Add all","removeAll":"Remove all","done":"Done","clear":"Clear","available":"Available","selected":"Selected","nothingLeftToAdd":"Nothing left to add","nothingSelectedYet":"Nothing selected yet","enterName":"Enter name","enterText":"Enter text","loading":"Loading...","refreshing":"Refreshing…","upload_photo":"Upload Photo","requestCallBack":"Request a call-back","requestCall":"Request call","callRequested":"Call requested","callRequestFailed":"Could not request the call","noteOptional":"Note (optional)","noteForCaller":"Add a note for the caller…","actions":"Actions","recordActions":"Record actions","undo":"Undo","removeImage":"Remove image","open":"Open","share":"Share","expand":"Expand","refresh":"Refresh","download":"Download","moreOptions":"More options","previous":"Previous","post":"Post","expandMenu":"Expand menu","deviceInfo":"Device info","retry":"Try again","reply":"Reply","print":"Print","play":"Play","pause":"Pause","recording":"Recording","fullscreen":"Toggle full screen","select":"Select","decrease":"Decrease","increase":"Increase","filter":"Filter","menu":"Menu","viewDetails":"View details","showPassword":"Show password","hidePassword":"Hide password","collapse":"Collapse","call":"Call","whatsapp":"WhatsApp","email":"Email","duplicate":"Duplicate","view":"View","entityActions":"{entity} actions","viewEntity":"View {entity}","addEntity":"Add {entity}","editEntity":"Edit {entity}","systemRecord":"System value","systemHint":"Set up by the platform. It can't be renamed or deleted."},"status":{"active":"Active","inactive":"Inactive"},"filters":{"title":"All Filters","apply":"Apply","clear":"Clear filters","clearAll":"Clear all","editHint":"Click to change this filter","close":"Close filters","filter":"Filter"},"feedback":{"saved":"Changes saved successfully","settingsSaved":"Settings saved","copiedToClipboard":"Copied to clipboard","copyFailed":"Failed to copy","saveFailed":"Failed to save","entityActivated":"{entity} activated","entityDeactivated":"{entity} deactivated","entityCreated":"{entity} created","entityUpdated":"{entity} saved"},"bulkExport":{"attachmentsEmailPromise":"You can leave this page. We'll email you a download link when the archive is ready.","attachmentsReadyTitle":"Your attachments are ready","attachmentsExpired":"This archive is no longer available. Archives are kept for a few days, so please run the download again.","attachmentsNoneSelected":"None of the selected records has an attachment.","downloadAttachments":"Attachments (.zip)","attachmentsConfirmTitle":"Download attachments","attachmentsConfirmSync":"Download {files} file(s) from {rows} selected record(s)? About {size}.","attachmentsConfirmQueued":"{files} file(s) from {rows} selected record(s), about {size}. This is too large to download instantly, so we will prepare the archive and the download will start on its own. Keep this page open.","attachmentsConfirmAction":"Download","attachmentsPreparing":"Preparing your archive…","attachmentsDownloaded":"Attachments downloaded.","attachmentsStillPreparing":"Still being prepared. It will finish in the background. Try again in a few minutes.","attachmentsDownloadFailed":"Could not download the attachments.","attachmentsPreviewFailed":"Could not check the attachments for this selection.","export":"Export","selectAll":"Select all {count}","allSelected":"All {count} selected","loadError":"Selected rows could not be loaded. Please try again.","partialLoadError":"Some selected rows could not be loaded. Please reselect and try again.","pdfLimit":"PDF export supports up to {limit} rows. Use Excel or CSV for larger selections.","exported":"{count, plural, one {Exported # row.} other {Exported # rows.}}","exportFailed":"Export failed.","noRowsFound":"No rows found for this selection.","selectedCount":"{count, plural, one {Selected # row.} other {Selected # rows.}}","selectAllError":"Could not select all rows.","selectionTotal":"Total","partialTotal":"Showing {resolved} of {selected} selected rows. Loading the rest.","selectedRows":"{count, plural, one {# selected} other {# selected}}","selectAllLabel":"Select all","excel":"Excel","pdf":"PDF","csv":"CSV","clearSelection":"Clear selection","selectAllRows":"Select all rows","attachmentsNotFoundTitle":"This download isn't available to you","attachmentsNotFound":"Only the person who started a download can open it. Sign in with that account, or run the download again yourself.","attachmentsBuildFailed":"The archive could not be prepared. Please run the download again.","attachmentsNetworkError":"The download was interrupted. Check your connection and try again.","attachmentsRetry":"Try again"},"bulkActions":{"labels":{"post":"Post","reset_to_draft":"Reset to draft","unpost":"Un-post","reverse":"Reverse","void":"Void","delete":"Delete","change_account":"Change account"},"actions":"Actions","confirmAction":"Confirm ({count})","checking":"Checking what this will affect…","moreRows":"+{count} more","confirmTitle":"{action}?","eligibleSummary":"{eligible} of {selected} selected rows can be processed.","skippedTitle":"{count, plural, one {# row will be skipped} other {# rows will be skipped}}","destructiveWarning":"This cannot be undone.","reasonLabel":"Reason","reasonHelp":"Recorded against every entry in this batch.","notPermitted":"Your role does not have this action.","notAvailable":"This action is switched off for your workspace.","overCap":"{selected} selected, but this action accepts at most {max} at a time.","previewFailed":"Could not check the selection. Please try again.","runFailed":"The bulk action could not be run. Please try again.","allSucceeded":"{count, plural, one {# row: {action} done.} other {# rows: {action} done.}}","partialSummary":"{ok} done, {failed} skipped.","resultTitle":"Result","resultSummary":"{ok} processed, {failed} skipped.","cancel":"Cancel","close":"Close"},"attachments":{"previewCount":"Preview {count} attachment(s)","none":"No attachments","columnLabel":"Attachments","title":"Attachments","entity":"Attachment","removed":"Attachment removed","tooLarge":"Larger than the {mb} MB limit, even after compression.","upload":"Upload","takePhoto":"Take photo","uploadingCount":"{count, plural, one {Uploading # file…} other {Uploading # files…}}","switchToGrid":"Switch to grid view","switchToList":"Switch to list view","loadMore":"{count, plural, other {Load more (# remaining)}}","dropTitle":"Drop files to upload","dropHint":"PDF, images, Word and Excel","emptyTitle":"No attachments yet","emptyTitleReadOnly":"No attachments","emptyDescription":"Drag files here, paste with Ctrl+V, or click Upload to add PDFs, photos or scans.","emptyDescriptionReadOnly":"No files have been attached to this record.","uploadFailed":"Upload failed","retry":"Retry","cancel":"Cancel","saved":"saved {size}","document":"Document","preview":"Preview","print":"Print","download":"Download","remove":"Remove","rename":"Rename","nameRequired":"A name is required","noCategory":"Files cannot be filed here yet: no document category is set up for this area.","typeNotAllowed":"{name}: this file type is not allowed in \"{category}\".","overLimit":"{name}: larger than the {mb} MB limit.","previewNotAvailable":"Preview is not available for this file type.","openInNewTab":"Open in new tab","close":"Close","previous":"Previous","next":"Next","loadingPreview":"Loading preview…","previewUnavailable":"Preview unavailable.","quickViewLoading":"Loading attachments…","quickViewError":"Could not load attachments.","quickViewEmpty":"No attachments on this record.","printFailed":"Could not print {name}"},"journalEntries":{"open":"Open journal entry","total":"Total","debit":"Debit","credit":"Credit","label":"Label","matched":"Matched","matchBill":"Bill {number} · {amount}","matchInvoice":"Invoice {number} · {amount}","matchEntry":"Entry {name} · {amount}","superseded":"Superseded","noLines":"No lines","empty":"No journal entries yet."},"duration":{"placeholder":"Select duration","atLeast":"Must be at least {value}","atMost":"Must be at most {value}","minutesShort":"{count} min","hoursShort":"{count} h"},"statusToggle":{"completeFirst":"Complete \"{status}\" first","notAvailableFrom":"Not available from \"{status}\"","notAllowed":"Not allowed from the current status","noStatus":"No status found","customStatus":"Custom status"},"dynamicForm":{"notConfigured":"This record has no form set up yet. Choose another category or ask an admin to configure it.","entityName":"This form","validation":{"required":"{label} is required","atLeastOne":"Add at least one {label}","atLeastOneItem":"Add at least one item","validNumber":"Enter a valid number","validDate":"Pick a valid date","validTime":"Pick a valid time","fixErrors":"Some fields need attention before saving."},"discard":"Discard","saveRecord":"Save record"},"list":{"noResultTitle":"No results","noResultDescription":"We couldn't find anything matching.","people":"People","noMore":"No more results","all":"All"},"detail":{"idLabel":"#ID {id}","yes":"Yes","no":"No","enabled":"Enabled","disabled":"Disabled","minutes":"{count} min","days":"{count, plural, one {# day} other {# days}}","percent":"{value}%"},"avatar":{"statusOnline":"Online","statusAway":"Away","statusBusy":"Busy","nameWithStatus":"{name} ({status})","more":"{count} more","moreNamed":"{count} more: {names}","andMore":"and {count} more"},"banner":{"dismiss":"Dismiss"},"periodLock":{"title":"Accounting period {period} is closed","description":"New entries dated in this period are blocked by the general ledger. Reopen the period from Accounting → Month-End to make corrections, or change the date to an open period."},"duplicatePhone":{"lead":"This number is already on file for {name}{others, plural, =0 {} one { and 1 other lead} other { and # other leads}}.","patient":"This number already belongs to {name} (#{id}){others, plural, =0 {} one { and 1 other patient} other { and # other patients}}. Open that patient instead of creating a second record.","addAsFamily":"Add as family member"},"unassigned":"Unassigned","unassign":"Unassign","audioPlayer":{"play":"Play","pause":"Pause","retry":"Retry","position":"Playback position","speed":"Playback speed","cantPlay":"Can't play this audio here.","download":"Download"},"whatsappTemplate":{"category":{"MARKETING":"Marketing","UTILITY":"Utility","AUTHENTICATION":"Authentication"},"notApproved":"Waiting for Meta approval, can't be sent yet","rejected":"Rejected by Meta, can't be sent"},"splash":{"slow":"Taking longer than expected...","retry":"Retry"},"workspace":{"currentWorkspace":"Current workspace","switchBranch":"Switch branch","selectBranch":"Select branch"},"dualListPicker":{"addItem":"Add {name}","removeItem":"Remove {name}","addGroup":"Add all in {group}","removeGroup":"Remove all in {group}","addShown":"Add {count} shown","removeShown":"Remove {count} shown","addedCount":"{count, plural, one {# item added} other {# items added}}","removedCount":"{count, plural, one {# item removed} other {# items removed}}","selectedSummary":"{count, plural, =0 {Nothing selected} one {# selected} other {# selected}}"},"weeklySchedule":{"closed":"Closed","noBreak":"No break","notWorking":"Not working","addSlot":"Add another","removeSlot":"Remove","copyToAll":"Copy to the other open days","copyToAllDay":"Copy {day} to the other open days","copiedToAll":"{day}'s times copied","presetApplied":"Week filled in","presets":{"label":"Quick fill","monFri":"Mon-Fri · 9-5","sunThu":"Sun-Thu · 8-4","everyDay":"Every day · 9-9"},"summary":{"hours":"Open {count, plural, one {# day} other {# days}} · {total} a week","breaks":"Breaks on {count, plural, one {# day} other {# days}} · {total} a week","noDays":"Closed every day. Switch on the days you open","noBreaks":"No breaks set"},"issues":{"required":"Set both a start and an end time","endAfterStart":"End time must be after the start time","overlap":"Overlaps another time on this day"},"warnings":{"outsideHours":"Outside working hours ({range})","dayClosed":"Closed this day, so this break won't apply"},"duration":{"hours":"{h} h","hoursMinutes":"{h} h {m} min","minutes":"{m} min"}},"pageDescriptions":{"whatsappAccounts":"Connect and manage the WhatsApp Business numbers your team messages patients from.","advertisementCategories":"Group your advertising sources so lead and campaign reports roll up by category.","advertisementSources":"The channels leads come from. Used to attribute every lead and booking.","bookingStatuses":"The steps a booking moves through, and the colour each status shows on the calendar.","brands":"Product brands used across the catalog and inventory.","categories":"Categories that organise your services and products.","devices":"Clinic devices and machines that services can be booked on.","firstMessageTemplates":"Opening messages sent automatically when a new conversation starts.","fiscalYears":"Your accounting years. Each one opens, closes and locks its periods.","attendanceRules":"Rules for late arrival, early leave and overtime applied to attendance.","breakTypes":"Kinds of breaks staff can take, and whether each one is paid.","departments":"Departments your staff belong to, used in HR reports and permissions.","holidays":"Public and clinic holidays. No shifts are scheduled and attendance isn't expected.","jobTitles":"Job titles you assign to staff profiles.","leaveTypes":"Kinds of leave staff can request, with their yearly allowance.","shiftTemplates":"Reusable working-hour patterns you assign to staff schedules.","paymentMethods":"How patients can pay. Each method maps to an account in your ledger.","resources":"Rooms and other bookable resources that sessions can be scheduled in.","integrationApiKeys":"Keys outside systems use to reach this clinic. Each key opens one integration of this clinic only.","webhooks":"Signed events this clinic sends to its own systems."},"zoom":{"zoomIn":"Zoom in","zoomOut":"Zoom out"},"allBranches":"All branches"},"View403":{"title":"No permission","description":"The page you’re trying to access has restricted access. Please refer to your system administrator.","go_to_home":"Go to home","back":"Back"},"View500":{"title":"500 Internal server error","description":"There was an error, please try again later.","go_to_home":"Go to home"},"ViewNotFound":{"title":"Sorry, Page not found","description":"We couldn’t find the page you’re looking for. Perhaps you’ve mistyped the URL? Be sure to check your spelling","go_to_home":"Go home"},"ViewCompleteAvatar":{"or":"OR","choose_avatar":"Choose your avatar","save":"Save","skip":"Skip","personalize_desc":"Personalize your profile with a photo or choose from our avatars","continue":"Continue","skip_for_now":"Skip for now"},"ViewMyPanel":{"list":{"bodyArea":"Body area","packageCredit":"Package","title":"My Panel","description":"Your visits for the day. Open one for booking info, records and status.","entity":"Visit","entityPlural":"visits","search":"Search patient or service…","filters":"Filters","clearFilters":"Clear all","refresh":"Refresh","filterTitle":"Filter visits","filterRooms":"Room / Source","filterStatus":"Status","colTime":"Time","colPatient":"Patient","colService":"Service","colEncounter":"Visit","colStatus":"Status","mrn":"MRN","moreServices":"+{count}","credit":"{delivered} of {total} {unit}","childOf":"Part of the day's visit","encounterSessions":"{count, plural, one {Visit · # session} other {Visit · # sessions}}","medicalRecord":"Medical record","history":"History","treatmentPlan":"Treatment plan","patientProfile":"Patient profile","openParent":"Open main session #{id}","sessionsCount":"{count, plural, one {# session} other {# sessions}}"},"empty_title":"No bookings assigned yet","empty_description":"You don't have any sessions to display","empty_switch_branch_hint":"Nothing in this branch for this day. You work in other branches too, so switch branch from the workspace menu at the top.","empty_other_branch_visits":"{count, plural, one {# visit is} other {# visits are}} booked for you in your other branches on this day. Switch branch from the workspace menu at the top to see {count, plural, one {it} other {them}}."},"ViewStaffDashboardHome":{"title":"Your day","visits_today":"You have {count, plural, one {# visit} other {# visits}} today in this branch.","no_visits_today":"No visits for you today in this branch. Check My Panel for other days.","panel_description":"Your visits, medical records and prescriptions live in My Panel.","no_panel_description":"Use the menu to open the modules you work in.","open_my_panel":"Open My Panel"},"ViewProfileSecurity":{"credentials_title":"Professional credentials","credentials_caption":"Your licence identifiers as recorded by HR. They print on your prescriptions; ask HR to correct them.","sheryan_id":"Sheryan ID","license_number":"Licence number"},"ViewForgotPassword":{"forgot_title":"Forgot your password?","forgot_description":"Enter your mobile number or email to receive a verification code","otp_title":"Enter Verification Code","otp_description":"If an account exists, a verification code has been sent to {mobileValue}","new_password_title":"Enter New Password","method_phone":"Mobile","method_email":"Email","phone_label":"Mobile number","phone_placeholder":"Mobile number...","email_label":"Email address","email_placeholder":"name@clinic.com","send_code":"Send Code","return_to_signin":"Return to sign-in","no_code":"Didn't receive a code?","resend_code":"Resend code","verify":"Verify","change_number":"Change number","new_password_label":"New Password","confirm_password_label":"Confirm new password","password_min_length":"6+ characters"},"ViewOnboarding":{"step_of":"Step {current} of {total}","step_avatar":"Choose Your Avatar","step_passkey":"Set Up Passkey","step_notifications":"Enable Notifications","step_biometric":"Enable Biometric Login","passkey_title":"Set Up Passkey Login","passkey_desc":"Use your device's built-in security (fingerprint, face, or PIN) for fast, password-free sign-in.","passkey_registered_title":"Passkey Registered!","passkey_registered_desc":"You can now sign in quickly using your passkey","passkey_setup":"Set Up Passkey","passkey_setting_up":"Setting up...","passkey_try_again":"Try Again","passkey_skip":"Skip for now","passkey_cancelled":"Passkey setup was cancelled. You can try again or skip for now.","passkey_failed":"Passkey registration failed. Try again or skip for now.","push_title":"Enable Push Notifications","push_desc":"Stay informed with real-time alerts for appointments, messages, and important updates.","push_enabled_title":"Notifications Enabled!","push_enabled_desc":"You'll receive important updates and reminders","push_enable":"Enable Notifications","push_enabling":"Enabling...","push_try_again":"Try Again","push_skip":"Skip for now","push_error_generic":"We could not finish enabling notifications. Check your connection and try again.","push_error_unexpected":"Unexpected error enabling notifications."},"ViewCustomerProfile":{"phone":"Phone","email":"Email","username":"Username","accountDetails":"Account details"},"ViewLogin":{"title":"Sign In","description":"Welcome back! Please sign in to continue","invalid_credentials":"Invalid username or password","unknown_error":"An error occurred","server_unavailable":"Server is unavailable. Please check your connection.","server_timeout":"Server is not responding. Please try again.","server_error":"Something went wrong on our end. Please try again in a moment.","sign_in":"Sign In","signing_in":"Signing in…","username_label":"Email, phone, or username","username_placeholder":"Enter your email, phone, or username","password_label":"Password","password_placeholder":"Enter your password","forgot_password":"Forgot password?","show_password":"Show password","hide_password":"Hide password","method_password":"Password","method_otp":"Verification code","signed_in_to":"Signing in to {tenant}","or_continue_with":"or continue with","or":"or","otp_phone_label":"Phone number","otp_phone_placeholder":"e.g. +971501234567","otp_phone_helper":"Include the country code (e.g. +971 for UAE).","otp_change":"Change","otp_delivery_method":"Send code via","otp_delivery_whatsapp":"WhatsApp","otp_delivery_sms":"SMS","otp_send_code":"Send code","otp_sending":"Sending…","otp_code_label":"Verification code","otp_code_sent_to":"Code sent to {phone} via {method}.","otp_code_sent_heading":"We sent a code to","otp_code_sent_via":"via {method}","otp_wrong_number":"Wrong number?","otp_try_sms_instead":"Get code via SMS instead","otp_try_whatsapp_instead":"Get code via WhatsApp instead","otp_change_number":"Change number","otp_resend_code":"Resend code","otp_resend_in":"Resend in {seconds}s","otp_verify":"Verify & sign in","otp_verifying":"Verifying…","otp_could_not_send":"Could not send the code. Try again.","otp_invalid_code":"Invalid or expired code.","otp_tokens_missing":"Could not verify the code. Try again.","footer_help":"Need help?","footer_privacy":"Privacy","footer_terms":"Terms","footer_version":"v{version}","login_request_interrupted":"The request was interrupted. Please try signing in again.","validation":{"usernameRequired":"Please enter your username or email","usernameBlank":"Username cannot be empty","passwordRequired":"Please enter your password","passwordTooShort":"Password must be at least 6 characters long"}},"LayoutAuth":{"support":"Support"},"NativeBiometric":{"sign_in_with":"Sign in with {name}","authenticating":"Authenticating…","enable_with":"Enable {name} login","prompt_title":"Authenticate","prompt_negative_button":"Use Password","name_face_id":"Face ID","name_touch_id":"Touch ID","name_fingerprint":"fingerprint","name_face_recognition":"face recognition","name_iris":"iris recognition","name_biometrics":"biometrics","error_lockout":"Too many failed attempts. Use your device passcode or sign in with your password.","error_not_enrolled":"{name} is not set up on this device. Go to device Settings to enable it.","error_unavailable":"{name} is not available on this device.","error_invalidated":"Your biometric login has been reset because a new biometric was added. Please sign in with your password to re-enable it.","error_failed":"{name} authentication failed. Please try again.","error_default":"Biometric authentication failed. Please try again.","error_no_credential":"Biometric login is not set up. Please sign in with your password.","error_transient":"Could not sign in with biometrics right now. Please use your password, we will try biometrics again next time.","error_expired_session":"Your session has expired. Please sign in with your password.","error_account_disabled":"Your account has been disabled. Contact your administrator.","error_network":"Could not connect to the server. Please check your connection and try again."},"BiometricSetup":{"title":"Enable {name} Login","description":"Sign in faster next time using {name}. Your credentials are stored securely on this device.","enabled_title":"{name} Enabled!","enabled_description":"You can now sign in quickly using {name}","enable_button":"Enable {name}","setting_up":"Setting up…","skip_button":"Not now","section_title":"Biometric Login","section_caption":"Use {name} on this device to sign in instantly.","section_enabled_for":"Enabled for {username}","section_not_enrolled":"Sign in with your password, then return here to enable {name}.","section_device_unavailable":"Biometric login is not available on this device.","disable_button":"Disable biometric login","disabled_toast":"Biometric login disabled","enabled_toast":"Biometric login enabled","reauth_required_toast":"Sign in again with your password, then enable {name} within 15 minutes.","setup_failed_toast":"Could not enable {name}. Please try again."},"PasskeyButton":{"sign_in":"Sign in with passkey","authenticating":"Authenticating…","no_passkey_setup":"You haven't set up a passkey on this browser yet. You can add one in Profile → Security.","attempts_remaining":"{count, plural, =1 {1 attempt remaining} other {# attempts remaining}}"},"PasskeyErrors":{"not_supported":"Passkeys are not supported on this device or browser.","user_cancelled":"Passkey prompt was cancelled.","invalid_state":"A passkey is already registered on this device.","not_allowed":"Passkeys are not available on this domain. Please use password login.","timeout":"The passkey prompt timed out. Please try again.","network_error":"Network error. Please check your connection.","unknown":"Something went wrong. Please try again.","not_registered":"No passkey is registered for this account. Sign in with your password, then set up a passkey in settings.","verification_failed":"Passkey verification failed. Please try again.","login_failed":"No passkey found for your account. Please sign in with your password first, then set up a passkey in your account settings.","rate_limited":"Too many attempts. Please try again later.","challenge_expired":"Your session expired. Please try again.","challenge_reused":"This passkey response was already used. Please try again.","credential_cloned":"This passkey has been disabled for security. Register a new one.","credential_not_found":"This passkey is no longer recognized. Please register a new one.","step_up_required":"Please verify with your passkey to continue.","locked_out":"Too many failed attempts. Please wait 15 minutes and try again.","insecure_origin":"Passkeys require a secure connection (HTTPS).","aborted":"Passkey request was interrupted.","no_passkeys_registered":"You haven't set up a passkey yet. You can register one from Profile → Security.","registration_failed":"Passkey registration failed. Please try again.","credential_locked_out":"This passkey is temporarily locked due to too many failed attempts. Please try again later or use another login method.","user_inactive":"This account is disabled. Please contact support.","invalid_credential":"Invalid passkey data received. Please try again.","rp_id_mismatch":"Domain security mismatch. Please try again from the correct domain.","origin_mismatch":"Origin security mismatch. Please try again from the correct domain.","invalid_host":"Invalid request origin. Please try again from a supported domain.","missing_technical_product":"Passkeys are not available for this app. Please use another login method."},"ViewTelehealthConsentConfirmed":{"title":"Thank You","description_1":"We’re delighted to have you with us at our clinic. Your consent has been successfully recorded. We hope you have a positive and comfortable experience during your time with us. Our team is here to support you every step of the way.","description_2":"Thank you again, and we wish you a great journey with us!"},"ViewTelehealthSignature":{"expired_link":"Link has expired","title":"Telehealth Consent Form","go_to_section":"Go to Section","accept_prefix":"By signing, I accept the ","privacy_policy":"Privacy Policy","and":" and ","terms_conditions":"Terms & Conditions","accept_suffix":" .","sign_here":"Sign Here","remove":"Remove","draw":"Draw","submit":"Submit"},"ViewUserDelete":{"title":"Delete Account","step0_desc":"We'll send a verification code to this number to confirm account ownership.","step1_desc":"We’ve sent code to {phoneNumber}","step2_desc":"Deleting your account will remove your profile, history, and personal data. This action cannot be undone.","phone_label":"Enter your phone number","send_code":"Send code","verify":"Verify","resend_prefix":"Didn’t receive a code? ","resend_timer":" Resend code in {time}","resend_action":" Resend code","cancel":"Cancel","delete_confirm":"Delete account","support_prefix":"We respect your privacy. If you need help, contact support via ","whatsapp":"WhatsApp","support_suffix":".","success_delete":"Account deleted successfully"},"ViewReviewForm":{"rate_title":"Rate this Session","feedback_desc":"Your feedback helps us create better sessions.","rating_label":"Rating","message_label":"Message","message_placeholder":"Write your message here","submit":"Submit","booking_date":"Booking Date","operator":"Operator","time":"Time","start":"Start","end":"End","service":"Service","ratingRequired":"Please provide a rating.","ratingMax":"Rating cannot exceed 5.","submitFailed":"Failed to submit review. Please try again.","submitting":"Submitting…","submitSuccess":"Thank you! Your review was submitted.","logoAlt":"Clinic logo"},"ViewAdsSource":{"title":"Ads Source","error_fallback":"Ads Source error"},"GoLiveChecklist":{"title":"Get ready to go live","description":"Finish these steps before you take real patients. Each one ticks itself once your data is in place.","pageTitle":"Go-live checklist","pageSubtitle":"What is left before your clinic takes real patients. Nothing here blocks you from using the system.","complete":"Your clinic is ready. Every go-live step is done.","entity":"go-live checklist","steps":{"branch_hours":{"title":"Set your branch opening hours","description":"Add your branch and the hours it is open, so bookings only land in real working time.","action":"Open branches"},"services":{"title":"Add services with prices","description":"List what patients can book and what each one costs.","action":"Open services"},"team":{"title":"Invite your team","description":"Add at least one more staff login and give each person a role that controls what they can see.","action":"Open staff"},"payment_methods":{"title":"Take your first payment","description":"Check the payment methods you accept. This step completes when the first payment is recorded.","action":"Open payment methods"},"tax":{"title":"Set up tax","description":"Add the tax rate your clinic charges so invoices show the right amounts.","action":"Open tax rates"},"messaging":{"title":"Connect your messaging provider","description":"Connect your own WhatsApp or SMS sender for reminders and marketing messages.","action":"Open integrations"},"consent":{"title":"Create your consent form","description":"Write the consent form your patients sign before treatment. The built-in templates are a starting point.","action":"Open consent forms"},"first_booking":{"title":"Make your first booking","description":"Book a real appointment on the calendar.","action":"Open calendar"},"first_invoice":{"title":"Issue your first invoice","description":"Issue an invoice for a visit. Drafts and voided invoices do not count.","action":"Open sales"}}},"ViewHrSetup":{"title":"HR Setup","subtitle":"Walk through these steps to get your HR module ready for use.","step":"Step {number}","comingSoon":"Coming soon","checklistTitle":"Get HR ready","complete":"HR is set up. Every step has at least one record.","policiesTitle":"Policies","items":{"branches":{"title":"Branches","description":"Where your clinic operates. Add each physical location."},"departments":{"title":"Departments","description":"Group staff into departments like Reception, Clinical, Admin."},"jobTitles":{"title":"Job Titles","description":"Define the positions employees can hold (Receptionist, Nurse, …)."},"teams":{"title":"Teams","description":"Cross-departmental teams. Assign staff and branches."},"leaveTypes":{"title":"Leave Types","description":"Annual, sick, unpaid, maternity … with default entitlements."},"shiftTemplates":{"title":"Shift Templates","description":"Reusable working shifts (Morning, Late, …). Set a default and assign to staff."},"holidays":{"title":"Holiday Calendar","description":"Public and clinic-specific non-working days."},"attendancePolicy":{"title":"Attendance Policy","description":"Clock-in rules, geofence, auto clock-out, reminders."},"payroll":{"title":"Payroll","description":"Pay frequency, payday, overtime, statutory deductions."},"permissions":{"title":"Permissions","description":"Role-based access: who can do what."}}},"ViewBookingPerOperator":{"title":"Bookings Per Operator","error_fallback":"Bookings Per Operator error"},"ViewConsultationBookings":{"title":"Consultation Bookings","error_fallback":"Consultation Bookings error"},"ViewOccupancy":{"title":"Occupancy Rate"},"ViewOperatorBookings":{"title":"Operator Bookings"},"ViewOperatorReportStatus":{"title":"Operator Report Status"},"ViewOperatorReports":{"title":"Operator Reports"},"ViewDashboardOverview":{"revenueReport":"Revenue Report","summary":"Summary","paymentMethod":"Payment Method","totalAmount":"Total Amount","nsr":"NSR","grossProfit":"Gross Profit","cogs":"Cost of Goods Sold","netProfit":"Net Profit","vat":"VAT","commission":"Commission","discount":"Discount","paid":"Paid","outstanding":"Outstanding","consultationBookings":"Consultation Bookings","paymentsAndSales":"Payments & Sales","occupancyRate":"Occupancy Rate","adsSource":"Ads Source","operatorBookings":"Operator Bookings","receiptsVsInvoices":"Receipts vs Invoices","emptyChartTitle":"No data for this period","emptyChartDescription":"Try adjusting the date range or check back later.","emptyConsultationsTitle":"No consultations in this period","emptyConsultationsDescription":"Once bookings come in, the chart will populate automatically.","emptyEarningsTitle":"No earnings in this period","emptyEarningsDescription":"Commissions will appear here once your team starts logging sessions.","emptyOperatorBookingsTitle":"No operator bookings yet","emptyOperatorBookingsDescription":"As your call center logs bookings, they will appear here.","occupancyCrashTitle":"Something went wrong","occupancyCrashDescription":"The occupancy view crashed. Try reloading the page.","showAll":"Show all","showLess":"Show less","totalLabel":"Total","operatorsLabel":"operators","salesLabel":"sales","bookingsLabel":"bookings","consultationBookingsByOperator":"Consultation Bookings by Operator","consultationsByTeamMember":"Consultations by Team Member","bookedLabel":"booked","conversionLabel":"conversion","noShowLabel":"no-show","cancelledLabel":"cancelled","successfulLabel":"successful","purchasedLabel":"purchased","unsuccessfulLabel":"unsuccessful","pendingLabel":"pending","salesByOperator":"Sales by Team Member","salesByOperatorSubtitle":"Sales value per team member","invoicesCountLabel":"invoices","commissionLabel":"commission","consultationsSubtitle":"New consultations, follow-up tagged sessions excluded","invoicesRaisedSeries":"Invoices raised","paymentsReceivedSeries":"Payments received","averageInvoiceValue":"Average invoice value","averagePaymentValue":"Average payment value","teamMembersLabel":"team members","avgLabel":"avg","salesReport":"Sales Report","revenueReportTooltip":"Money collected (payments received) in the selected period, and how it was paid.","salesReportTooltip":"What was invoiced in the selected period (from total down to net profit) and how much is paid or still outstanding.","utilizationLabel":"Utilization","bookedHoursLabel":"Booked","availableHoursLabel":"Available","hoursShort":"{hours}h","occupancyRooms":"Rooms","occupancyDevices":"Devices","occupancyStaff":"Staff","sellerPerformanceTooltip":"Invoiced sales per team member in the selected period, with invoice count and commission earned.","operatorBookingsTooltip":"Consultations booked by each team member (follow-ups, no-shows and cancellations excluded), split into arrived and pending. The % is the share that arrived.","receiptsVsInvoicesTooltip":"How many invoices were raised and payments received each day. Are you collecting at the pace you bill?","consultationBookingsTooltip":"Consultation bookings per day by status, with the key rates for the selected period.","occupancyTooltip":"Booked hours as a share of available working hours for rooms, devices and staff.","pointsChange":"{value} pp","billingVsCollection":"Billing vs collection","billingVsCollectionTooltip":"Invoices billed in the period (excl. VAT), split into what is already paid and what is still owed today. Same “still unpaid” figure as the Telegram owner report.","collectedSeries":"Collected","unpaidSeries":"Still unpaid","collectedShare":"Paid of billed","billedTotal":"Billed","occupancySetupTitle":"Working hours not set","occupancySetupDescription":"Occupancy compares booked time with working time. Set working hours for your rooms, devices and staff to see how full they are.","occupancySetupAction":"Set working hours","occupancyUnconfigured":"{count, plural, one {# more has no working hours yet} other {# more have no working hours yet}}","consultationKpi":{"no_show_rate":{"title":"No-show rate","tooltip":"Of consultations that reached their slot (arrived, done or missed), the share the patient missed. Lower is better."},"cancellation_rate":{"title":"Cancellation rate","tooltip":"Of resolved consultations (arrived, done, missed or cancelled), the share that was cancelled. Lower is better."},"paid_conversion_rate":{"title":"Consultation → paid","tooltip":"Of consultations the patient attended, the share that became a paid consultation."}},"consultationSeries":{"booked_all":"All bookings","booked_new":"New-patient consultations","telehealth":"Telehealth","homecare":"Homecare","arrived_all":"Arrived","paid_all":"Paid"}},"ViewReceiptsInvoices":{"title":"Receipts & Invoices"},"ViewSalesPayments":{"title":"Payments & Sales"},"ViewSellerPerformance":{"title":"Sales by Team Member"},"ViewAccessDenied":{"invalid_link_title":"Invalid Link","invalid_link_description":"This link is invalid or missing required information. Please check the link and try again.","expired_link_title":"Link Expired","expired_link_description":"This link has expired or is no longer valid. Please request a new link.","unauthorized_title":"Access Denied","unauthorized_description":"You don't have permission to access this page. Please verify your credentials.","generic_title":"Something Went Wrong","generic_description":"An error occurred while loading this page. Please try again later.","contact_support":"Contact Support"},"ViewAppServiceSales":{"title":"Service Sales","data_shown_for":"Data shown for: ","totals_revenue":"Invoiced","totals_count":"Units sold","totals_avg":"Avg","search_placeholder":"Search categories…","no_results_title":"No matching categories","no_results_description":"Try a different search term.","tooltip":"Invoiced amount (VAT included) per service category for the selected period. Cancelled invoices are excluded, unpaid ones included. Expand a row to see its services.","vs_previous_period":"vs previous period","empty_title":"No service sales in this period","empty_description":"Nothing was invoiced for the selected dates. Try a wider date range.","row_units":"{count, plural, one {# unit} other {# units}}","trend_tooltip":"Completed days compared with the same number of days just before","totals_net_sales":"Net sales","tooltip_net":"Net sales (excluding VAT, after discounts) per service category for the selected period. Cancelled invoices are excluded. Expand a row to see its services."},"ViewAppSellerPerformance":{"data_shown_for":"Data shown for: "},"ViewOwnerDashboard":{"allBranches":"All branches","dataShownFor":"Data shown for:","selectRange":"Select a date range","maskTooltip":"Hide sensitive values","controls":{"tooltip":"Dashboard controls","maskTitle":"Hide sensitive values","maskDescription":"Mask money and counts on this dashboard.","globalRangeTitle":"Apply one range to every widget","globalRangeDescription":"Override every widget's own default with the date range below.","showValues":"Show values","viewReport":"View report","hideValues":"Hide values","hiddenValue":"Hidden value"},"reports":{"performance":{"title":"Performance snapshot","description":"Revenue, appointments, new clients, average rating."},"revenue":{"title":"Financial pulse","description":"Collected vs. outstanding, payment method mix, trend."},"bookings":{"title":"Bookings health","description":"Utilisation, cancellation rate, peak hours."},"operations":{"title":"Operations pulse","description":"Staff utilisation, service rankings, ratings."},"leadFunnel":{"title":"Lead funnel & conversion","description":"Lead-to-paid conversion by channel.","tooltip":"The leads that came in during the period, by source, and how many of them have since booked, arrived and paid. Use the channel breakdown to see which spend actually converts. Clinic-wide bookings and visits are in Clinic at a glance."}}},"ViewAppKPIMetrics":{"title":"Clinic at a glance","tooltip":"How the clinic is running: consultations, visits and paying customers. The same figures as the Telegram owner report, each compared with the previous period and the same period last year (completed days only). Internal and wholesale accounts are excluded.","vs_previous_short":"vs previous period","vs_last_year_short":"vs last year","no_comparison":"Nothing to compare with. There was no activity in that period.","vs_previous_compact":"vs prev.","vs_last_year_compact":"vs last yr","points":"pp","metrics":{"consultations_booked":{"title":"Consultations booked","tooltip":"New consultation bookings made in the period, from any source. Follow-ups are not counted."},"consultations_attended":{"title":"Consultations attended","tooltip":"New consultations due in the period that the patient attended."},"show_rate":{"title":"Show rate","tooltip":"Share of new consultations due in the period that the patient attended. Cancelled and rescheduled bookings are left out; missed and still-open ones count against it."},"customers_arrived":{"title":"Patient visits","tooltip":"Patients who came to the clinic for any appointment, counted once per day."},"paying_customers":{"title":"Paying customers","tooltip":"Customers who paid in the period, counted once per day."},"new_paying_customers":{"title":"New paying customers","tooltip":"Customers whose first-ever payment fell in this period, from any source."}}},"ComponentChangeLogContent":{"title":"Change Log","recently_logs":"Recently Logs","log_count":"{count} Log"},"AppDashboardAccountingBillsLayout":{"vendors":"Vendors"},"AppDashboardAccountingBillsNoItemPage":{"metadata_title":"Bills","title":"Select a Bill","description":"Choose a bill from the list to manage details and records"},"AppDashboardAccountingBillsIdRootPage":{"metadata_title":"Bill {id}"},"AppDashboardAccountingCommissionsIdRootPage":{"metadata_title":"Commission {id}"},"AppDashboardAccountingPaymentsLayout":{"vendors":"Vendors"},"AppDashboardAccountingPaymentsIdRootPage":{"metadata_title":"Payment {id}"},"AppDashboardAccountingPaymentsNoItemPage":{"metadata_title":"Vendor Payments","title":"Select a Vendor Payment","description":"Choose a vendor payment from the list to manage details and records"},"AppDashboardAccountingRecurringBillLayout":{"title":"Recurring Bills"},"AppDashboardAccountingRecurringBillIdRootPage":{"metadata_title":"Recurring Bill {id}"},"AppDashboardAccountingRecurringBillNoItemPage":{"metadata_title":"Recurring Bills","title":"Select a Recurring Bill","description":"Choose a recurring bill from the list to manage details"},"AppDashboardAccountingRefundsLayout":{"title":"Vendors"},"AppDashboardAccountingRefundsIdRootPage":{"metadata_title":"Refund {id}"},"AppDashboardAccountingRefundsNoItemPage":{"metadata_title":"Refunds","title":"Select a Refund","description":"Choose a refund from the list to manage details and records"},"AppDashboardAccountingVendorsLayout":{"title":"Vendors"},"AppDashboardAccountingVendorsNoItemPage":{"metadata_title":"Vendors","title":"Select a Vendor","description":"Choose a vendor from the list to manage details"},"AppDashboardAccountingVendorsIdActionDefault":{"more_options":"More Options","option_1":"option 1","delete":"Delete","delete_vendor_title":"Delete Vendor?","delete_vendor_description":"Deleting this vendor will erase all associated data.\nAre you sure you want to continue?","cancel":"Cancel"},"AppDashboardBookingDayPage":{"metadata_title":"Booking"},"AppDashboardBusinessCashbackLoyaltyPage":{"metadata_title":"Cashback & Loyalty | Business Dashboard"},"AppDashboardBusinessConsentFormsPage":{"metadata_title":"Consent Forms | Business Dashboard"},"AppDashboardBusinessInfoSettingsPage":{"metadata_title":"Business Info & Settings | Business Dashboard"},"AppDashboardBusinessProductTypesPage":{"metadata_title":"Products Types | Business Dashboard"},"AppDashboardBusinessProductsServicesPage":{"metadata_title":"Products & Services | Business Dashboard"},"AppDashboardBusinessProductsServicesIdPage":{"metadata_title":"Products & Services | Business Dashboard"},"AppDashboardBusinessResourcesSchedulingPage":{"metadata_title":"Resources & Scheduling | Business Dashboard"},"AppDashboardBusinessInfoSettingsBranchIdAvailabilityPage":{"metadata_title":"Branch Availability | Business Dashboard"},"AppDashboardBusinessInfoSettingsBranchIdFinancialInfoPage":{"metadata_title":"Branch Financial Info | Business Dashboard"},"AppDashboardBusinessInfoSettingsBranchIdPermissionsPage":{"metadata_title":"Branch Permissions | Business Dashboard"},"AppDashboardBusinessInfoSettingsBranchIdProfilePage":{"metadata_title":"Branch Profile | Business Dashboard"},"SectionBusinessComponentsInfoSettingsResourcesResourceItems":{"title":"Resources","no_resources_configured":"No resources configured for this branch yet.","add_resource_hint":"Tap 'Add Resource' to start building your workspace inventory.","unnamed_resource":"Unnamed Resource"},"AppDashboardBusinessInfoSettingsBranchIdRoomsPage":{"metadata_title":"Branch Rooms | Business Dashboard"},"AppDashboardBusinessInfoSettingsBranchIdRoomsRoomIdPage":{"metadata_title":"Room | Branch Rooms | Business Dashboard"},"SectionBusinessComponentsBranchInfoSettingsLayout":{"profile":"Profile","resource":"Resource","financial_info":"Financial Info","availability":"Availability","permissions":"Permissions"},"SectionBusinessViewInfoSettingsView":{"select_branch":"Select a Branch","select_branch_desc":"Choose a branch from the list to manage their details and records"},"AppDashboardCatalogMembershipsPage":{"metadata_title":"Memberships"},"AppDashboardCatalogProductsPage":{"metadata_title":"Products"},"AppDashboardCatalogServicesPage":{"metadata_title":"Services"},"AppDashboardDevComponentsPage":{"search_placeholder":"Search components...","categories":"Categories","all_components":"All Components","component_count":"{count} {count, plural, =0 {components} =1 {component} other {components}} available","updating":"updating...","no_components_found":"No components found","no_components_found_desc":"Try adjusting your search or category filter","back_to_components":"Back to Components","no_description":"No description provided","preview":"Preview:","desktop":"Desktop","mobile":"Mobile","open_demo":"Open Demo","close":"Close","variants":"Variants","select_variant":"Select Variant","interactive_controls":"Interactive Controls","usage":"Usage","no_usage":"No usage guidance provided yet.","props":"Props","source":"Source","no_props":"No props documented yet.","prop":"Prop","type":"Type","required":"Required","default":"Default","description":"Description","yes":"Yes","no":"No","preview_environment":"Preview environment","brand":"Brand","color_mode":"Mode","light":"Light","dark":"Dark","language":"Language"},"AppDashboardDocumentsFoldersSlugPage":{"metadata_title":"Documents"},"AppDashboardHrEmployeeManagementPage":{"metadata_title":"Team Management"},"AppDashboardHrTimesheetsPage":{"metadata_title":"Timesheets"},"AppDashboardHrPayslipsPage":{"metadata_title":"Payslips"},"AppDashboardInventoryConfigurationLocationsPage":{"metadata_title":"Inventory Locations"},"AppDashboardInventoryConfigurationProductCategoriesPage":{"metadata_title":"Product Categories"},"AppDashboardInventoryConfigurationUnitOfMeasuredPage":{"metadata_title":"Units of Measure"},"AppDashboardInventoryConfigurationWarehousesPage":{"metadata_title":"Warehouses"},"AppDashboardLeadsPiplinePage":{"metadata_title":"Leads Pipeline"},"AppDashboardMessagingCampaignsPage":{"metadata_title":"Campaigns"},"AppDashboardMessagingChannelsPage":{"metadata_title":"Channels","colChannelId":"Channel ID","copyChannelId":"Copy channel ID","colApplicationName":"Application name","colPhoneNumber":"Phone Number","colChatbot":"Chatbot","botBuilder":"Bot builder","colStatus":"Status","noDataTitle":"No channel accounts yet","noDataDescription":"Connect an account to start messaging through this channel.","searchPlaceholder":"Search...","filters":"Filters","addNew":"Create New Account","templatesTitle":"Templates","templatesDescription":"Message templates will be displayed here.","verifiedAccountDetails":"Verified account details","changeVerifiedDetails":"Want to change the verified details?","accountInfo":"Account Info","displayName":"Display Name","numberQuality":"Number Quality","numberStatus":"Number Status","tierLimit":"Tier Limit","unlimitedPerDay":"Unlimited message/day","profileDetails":"Profile Details","edit":"Edit","accountProfilePhoto":"Account Profile Photo","selectProfilePicture":"Select profile picture from your device","removePhoto":"Remove photo","resetToOriginal":"Reset to original","activateApplication":"Activate Application","aiAutoReply":"AI auto-reply","aiAutoReplyNumberHint":"When off, the AI never replies on this number, regardless of team settings.","validationApplicationNameRequired":"Application name is required","validationInvalidEmail":"Invalid email address","validationInvalidUrl":"Invalid URL","aiAutoReplyInstagramHint":"When off, the AI never replies on this Instagram account, regardless of team settings.","aiAutoReplyFacebookHint":"When off, the AI never replies on this Facebook page, regardless of team settings.","businessEmail":"Business Email","primaryWebsite":"Primary Website","secondaryWebsites":"Secondary Websites","removeWebsite":"Remove website","addAnotherWebsite":"Add Another Website","businessAddress":"Business Address","businessVertical":"Business Vertical","businessVerticalPlaceholder":"e.g., Medical and health","cancel":"Cancel","saveChanges":"Save Changes","fixValidationErrors":"Please fix the validation errors before submitting.","authenticate":"Authenticate","configureAgain":"Configure Again","configureAgainHint":"This action will cancel the existing authentication and add the newly configured account.","setupProblems":"Do you have any problems with Messenger setup?","contactUsAt":"We can help you! Contact us at","usageDetail":"Usage Detail","usageChannel":"Channel","usageType_utility":"Utility","usageType_marketing":"Marketing","usageType_marketing_lite":"Marketing Lite","usageType_authentication":"Authentication","usageType_service":"Service","usageMessagesSent":"Messages Sent","usageMessagesReceived":"Messages Received","usageMessagesDelivered":"Messages Delivered","usageSpendingBi":"Estimated Spending (BI)","usageSpendingUi":"Estimated Spending (UI)","usageLastDays":"Last {days} days","action":"Action","removeChannel":"Remove Channel","removeChannelConfirm":"Are you sure you want to remove <strong>{name}</strong>?","thisChannel":"this channel","removeChannelWarning":"This action cannot be undone and will permanently delete all channel data and conversations.","remove":"Remove"},"AppDashboardMessagingDashboardPage":{"dataShownFor":"Data shown for: {period}","kpiMessagesReceived":"Messages Received","kpiNewMessages":"New Messages","kpiTotalConversations":"Total Conversations","kpiCustomerConversations":"Customer Conversations","kpiLeadConversations":"Lead Conversations","channelDistributionTitle":"Message Distribution Over Channel","senderDistributionTitle":"Conversation Distribution By Sender","overTimeTitle":"Distribution Over Time","total":"Total","conversations":"Conversations","messagesCount":"{count} messages","senderSystem":"System","senderAi":"AI","senderAgent":"Agent","senderUser":"User","metadata_title":"Messages Dashboard","page_title":"Messages Dashboard"},"AppDashboardMessagingMessagesLayout":{"metadata_default":"Messaging"},"AppDashboardMessagingMessagesPage":{"metadata_title":"Messaging"},"AppDashboardMessagingMessagesIdPage":{"metadata_title":"Chat #{id}"},"AppDashboardMessagingSettingAutomationPage":{"page_content":"Automation"},"AppDashboardMessagingSettingTeamsPage":{"page_content":"Teams"},"AppDashboardMyPanelPage":{"metadata_title":"My Panel"},"AppDashboardMyPanelIdPage":{"metadata_title":"Booking List {id}"},"AppDashboardMyPanelIdLayout":{"back":"Back","visitEntity":"Visit","tabs":{"bookingInfo":"Booking info","medicalRecord":"Medical record","clinicalResults":"Clinical results"},"encounterSessions":"{count} sessions in this visit","encounterRootHint":"This visit has several sessions. Vitals, problems and discharge are filed on this one.","encounterChildHint":"Part of a multi-session visit. Vitals, problems and discharge are filed on its main session."},"AppDashboardPackagePage":{"metadata_title":"Service Credits"},"AppDashboardPackageIdPage":{"metadata_title":"Service Credit {id}"},"AppDashboardPalettePage":{"metadata_title":"Palette"},"SectionPatientsComponentsEmptyPatient":{"title":"Select a Patient","description":"Choose a patient from the list to manage their details and records"},"AppDashboardPermissionPage":{"metadata_title":"Permissions","hello_master":"hello master"},"AppDashboardPortalPage":{"metadata_title":"Portal"},"AppDashboardProfileRootPage":{"metadata_title":"Profile"},"AppDashboardSalesPaymentsPage":{"metadata_title":"Sales Payments"},"AppDashboardSalesSalesListPage":{"metadata_title":"Sales"},"AppDashboardSalesSalesListPrintIdPage":{"metadata_title":"Print invoice {id}"},"AppDashboardSalesSalesListNewPage":{"metadata_title":"New Invoice"},"AppDashboardSalesSalesListEditIdPage":{"metadata_title":"Edit Invoice {id}"},"AppDashboardSalesSalesListIdPage":{"metadata_title":"Sale #{id}"},"AppDashboardSettingsPage":{"metadata_title":"Workspace Settings","metadata_description":"Set up your workspace, team, and system defaults.","view_title":"Workspace Settings","view_description":"Manage your tenant, every clinic-wide policy lives here.","locked_card_caption":"Not available for your organization","empty_title":"No settings available","empty_description":"Your account doesn't have access to any workspace settings. Ask a workspace owner or administrator to grant access.","descriptions":{"subscription":"Manage your subscription plan, usage analytics, and estimated charges.","go-live":"What is left before your clinic takes real patients: branch hours, services, team, payments, tax, messaging, consent, first booking and invoice.","business":"Manage your business profile details, contact information, and links.","date-display":"The calendar, digits and first day of the week dates are shown in.","branches":"Create and manage branches, including addresses and operating settings.","brand-management":"Manage your workspace logo, colors, and brand identity.","online-branding":"Upload booking logo, cover, colors, hero copy, support contact, and social links for the customer-facing booking page.","resources":"Bookable rooms and equipment per branch: how many sessions run at once and which services use them.","devices":"Manage connected devices and assign them to branches or staff for daily operations.","permissions":"Configure access permissions and define what each role can manage.","einvoicing":"UAE FTA Phase 2, KSA ZATCA, Egypt ETA, Peppol BIS. Off by default. Turn on per regime when the ASP is contracted.","catalog":"Create and manage products and services available for sale.","categories":"Organize products and services into categories for easier management.","consent":"Create and manage consent forms to collect required client approvals.","hr-setup-hub":"Guided checklist: branches, departments, job titles, teams, leave types, shifts and holidays, plus links to attendance, payroll and permissions.","attendance-policy":"Tenant-wide defaults for staff clock-in/out: location enforcement, geofence radius, reminders, auto clock-out.","attendance-rules":"Late, early-leave and overtime rules applied to clock-ins.","break-types":"Paid and unpaid break types staff can clock during a shift.","payroll":"Pay frequency, payday, overtime, statutory deductions, and posting behaviour for pay runs.","commissions":"Turn commissions on or off, set default percentages for products and services, and toggle who earns what.","booking-defaults":"Slot length, consultation fee, no-show grace, cancellation window, and auto-confirm rules.","booking-statuses":"Manage custom workflow statuses (booking, invoice, payment) alongside system-locked ones.","medical-record-categories":"Choose which record categories your clinic uses. Switched-off ones leave the medical record page.","sales-defaults":"Org-wide sales behaviour: auto-mark cash paid, refund window, and auto-receipt on payment. VAT lives on the branch tax rule.","finance-defaults":"Delivery and service fees, the free-delivery threshold, and when orders count as delivered. VAT lives on the branch tax rule.","insurance-payers":"The insurers this clinic bills. Reception cannot record a patient policy against a payer that does not exist here.","insurance-plans":"The plans each payer offers. This is what a patient policy actually points at.","insurance-claims":"Every claim from queue to payment: send it, record what the payer answered, and resubmit a corrected one.","payment-methods":"Set up accepted payment methods for sales and invoices.","payment-gateways":"Credentials for processors that move real money (Stripe, Tap, Network International). Encrypted at rest, never shown after save.","meta-ad-accounts":"Connect Meta (Facebook/Instagram) ad accounts so leads resolve to the exact campaign and ad, and daily spend feeds CAC. Tokens stored encrypted.","tax-rates":"Create and manage tax rates to apply automatically to invoices.","payment-terms":"Define instalment schedules (e.g. 50% now / 50% in 30 days) applied to invoices and vendor bills.","fiscal-years":"Accounting fiscal-year windows. Month-end close and financial reports run on them.","accounting-settings":"Configure posting behavior, approval thresholds, and expense conversion settings.","inventory-warehouses":"Manage warehouse locations, storage, and receiving points.","inventory-uom":"Define measurement units to keep stock movements consistent.","inventory-categories":"Organize inventory products into categories for reporting and rules.","inventory-alerts":"Stock check on invoices, the low-stock threshold, and how product costs sync and post.","branch-inventory-overrides":"Per-branch exceptions to the inventory settings: low-stock threshold, stock check on invoices and cost sync.","notification-providers":"Connect WhatsApp, SMS, Email, and Push providers. Routes automation notifications to the right sender account.","message-templates":"Build and edit WhatsApp templates and push them to Meta for approval; anything created in Meta Business Suite is pulled back in automatically.","messaging-defaults":"Quiet hours, marketing cooldown days, and custom unsubscribe keywords. Applied to every outbound message.","campaign-replies":"What happens when someone answers a WhatsApp campaign: which replies become leads, which bookings the campaign gets credit for, and how a \"not interested\" is respected.","inbox-automation":"When conversations close by themselves: after days with no messages, or when the lead is marked Lost / Not qualified. Keeps inbox and workload numbers live.","notification-preferences":"Manage the suppression list: phones / emails of customers who opted out, plus bulk CSV import for receptionist workflows.","notifications-health":"Monitor outbound send volume, block-rate breakdown, opt-out adoption, and provider status.","email-domain":"Send patient emails from your own domain, signed so they reach the inbox.","email-copy":"Your own wording for review and appointment emails, with a live preview.","messages-teams":"Manage teams and assign agents to organize workloads and responsibilities.","quick-reply":"Create and manage predefined responses for faster replies.","messages-settings":"Chat routing, AI behaviour, agent privileges, service level and working hours for each inbox team.","gift-cards":"Customer cashback rate, referral rewards, minimum spend, and wallet expiry. Pause or adjust without code.","loyalty-program":"Bronze / Silver / Gold tier benefits, points economy, anniversary & birthday rewards, gift-card limits.","marketing-settings":"Who may take, hand off and change a lead: everyone, or only the system and team supervisors.","lead-sources":"The channels a lead can come from (Meta Ads, Google, referral, walk-in…) and the order they win in attribution.","lead-source-categories":"Group lead sources (Paid Social, Referral, Direct & Offline…) for reports.","first-message-rules":"Match the first WhatsApp message (\"saw your ad on TikTok\") to a lead source, so chats are attributed automatically.","google-ads":"Send bookings, leads, and paid invoices to Google Ads as conversions (offline conversion import via gclid).","meta-ads":"Connect the Meta Pixel + Conversions API to measure Facebook/Instagram ad conversions from online bookings.","nabidh":"Enrol each branch with NABIDH (Dubai) or Malaffi (Abu Dhabi), and watch the outbox that proves you are reporting.","integration-api-keys":"Issue and revoke the keys outside systems use to reach this clinic: voice agent, telehealth, affiliate partners and report senders.","insurance-gateway":"How each payer transacts, what still blocks going live, and every round-trip on the wire. The only place real claim filing can be switched on.","webhooks":"Send signed events to your own systems when a booking is created, an invoice is paid or a lead arrives."}},"AppDashboardSettingsResourcesPage":{"metadata_title":"Resources","metadata_description":"Manage shared resources used by teams and branches."},"AppDashboardSettingsProductTypesPage":{"metadata_title":"Product Types","metadata_description":"Define how product types are categorized and billed."},"AppDashboardSettingsPermissionsPage":{"metadata_title":"Permissions","metadata_description":"Control role access across modules and actions."},"AppDashboardSettingsDevicesPage":{"metadata_title":"Devices","metadata_description":"Manage connected devices and branch assignments."},"AppDashboardSettingsDeviceModelsPage":{"metadata_title":"Device Models","metadata_description":"Manage device model templates for your inventory."},"AppDashboardSettingsConsentFormsPage":{"metadata_title":"Consent Forms","metadata_description":"Create and maintain client consent forms."},"AppDashboardSettingsCommissionsPage":{"metadata_title":"Commissions"},"AppDashboardSettingsCategoriesPage":{"metadata_title":"Categories","metadata_description":"Group products and services for better organization."},"AppDashboardSettingsCatalogPage":{"metadata_title":"Catalog","metadata_description":"Manage products and services available for sale."},"AppDashboardSettingsCatalogIdPage":{"metadata_title":"Catalog Item","metadata_description":"Review and update item details."},"AppDashboardSettingsCashbackLoyaltyPage":{"metadata_title":"Gift Cards","metadata_description":"Configure gift card sales and redemption rules."},"AppDashboardSettingsBusinessPage":{"metadata_title":"Business Profile","metadata_description":"Manage business details, contacts, and links."},"AppDashboardSettingsBrandManagementPage":{"metadata_title":"Brand Management","metadata_description":"Manage brands linked to your product catalog."},"AppDashboardSettingsBranchesPage":{"metadata_title":"Branches","metadata_description":"Manage branch locations and operating settings."},"AppDashboardSettingsTeamsPage":{"metadata_title":"Teams","metadata_description":"Manage teams and their members."},"AppDashboardStaffBookingPage":{"metadata_title":"Staff Bookings"},"AppDashboardStaffManagementPage":{"metadata_title":"Team Management"},"AppDashboardTasksPiplinePage":{"metadata_title":"Tasks Pipeline"},"AppDashboardTasksRootPage":{"metadata_title":"Tasks"},"AppDashboardTreatmentPlanPage":{"metadata_title":"Treatment Plans"},"AppDashboardTypographyPage":{"hero":"Hero","heading_1":"Heading 1","heading_2":"Heading 2","heading_3":"Heading 3","heading_4":"Heading 4","heading_5":"Heading 5","heading_6":"Heading 6","body_1":"body 1","body_2":"body 2","subtitle_1":"subtitle 1","subtitle_2":"subtitle 2","caption":"Caption","overline":"Overline","rights_freedoms":"Whereas a common understanding of these rights and freedoms is","hero_all_headings":"Hero Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 ","text_field_components":"Text Field Components ","outlined_pure_field":"Outlined pure field","shrink":"Shrink","placeholder_shrink":"show place holder when shrink ","disabled":"Disabled","this_is_disable":"this is disable ","with_value":"with value","helper_disable":"this is helper disable","error":"Error","helper_error":"show error in here","focused_no_label":"without label focused","caption_asghar":"caption & asghar"},"AppDashboardTypographyReportPage":{"placeholder":"Enter new report"},"AppTabletConsultantPage":{"metadata_title":"Consultant"},"AppTabletConsultantRoomIdPage":{"metadata_title":"Consultant - Room {id}"},"AppTabletConsultantRoomIdPatientIdPage":{"metadata_title":"Consultant - Patient {id}"},"AppTabletReceptionPage":{"metadata_title":"Reception"},"AppTabletReceptionMagazinePage":{"metadata_title":"Magazine"},"AppTabletReceptionDigitalContractPatientIdPage":{"metadata_title":"Digital contract - Patient {id}"},"AppTabletReceptionBookingServicePage":{"metadata_title":"Booking a service"},"AppTabletServicePage":{"metadata_title":"Services"},"AppTabletServiceRoomIdPage":{"metadata_title":"Services - Room {id}"},"AppTabletServiceRoomIdPatientIdPage":{"metadata_title":"Room - Patient {id}"},"AppTabletUploadDocumentPage":{"metadata_title":"Upload documents"},"AppAuthLoginPage":{"metadata_title":"Login"},"AppAuthForgotPasswordPage":{"metadata_title":"Forgot password"},"AppAuthCompleteAvatarPage":{"metadata_title":"Complete Profile"},"AppCampaignTelehealthConsentPage":{"metadata_title":"Telehealth consent"},"AppReferralPage":{"metadata_title":"Referral"},"AppUserReferralSignupPage":{"metadata_title":"Signup"},"AppUserReferralPage":{"metadata_title":"User referral"},"AppError403Page":{"metadata_title":"403 Forbidden! | Error"},"AppError404Page":{"metadata_title":"404 Page not found! | Error"},"AppError500Page":{"metadata_title":"500 Internal server error! | Error"},"AppForbiddenPage":{"metadata_title":"403 Forbidden! | Error"},"AppRootLayout":{"tenant_not_found":"Tenant not found"},"AppNotFoundPage":{"metadata_title":"404 Page not found! | Error"},"Clock":{"title":"My Time","status_not_clocked_in":"Not clocked in","status_clocked_in":"On shift","status_on_break":"On break","status_clocked_out":"Clocked out","status_on_leave":"On leave","started_at":"Started at {time}","ended_at":"Ended at {time}","started_short":"In","ended_short":"Out","break_minutes":"{minutes} min on break","clock_in":"Clock In","clock_out":"Clock Out","start_break":"Start break","end_break":"End break","clock_out_blocked_title":"Finish your break first","clock_out_blocked_body":"You're currently on a break. End your break before clocking out of your shift.","clock_out_blocked_end_break":"End break now","clock_out_blocked_cancel":"Stay on break","already_checked_in_title":"Already clocked in","already_checked_in_body":"You already have an active clock-in session. Check out first before clocking in again.","already_checked_in_body_branch":"You already have an active clock-in at {branchName}. Check out first before clocking in again.","already_checked_in_check_out":"Check out now","already_checked_in_cancel":"Cancel","break_type_title":"Start a break","break_type_body":"Pick the type of break you're taking. Your timesheet will record it.","break_type_default_duration":"{minutes} min default","break_type_minutes":"{minutes}min","break_type_paid":"Paid","break_type_unpaid":"Unpaid","break_type_continue":"Start break","break_type_cancel":"Cancel","break_type_loading":"Loading break types…","break_type_empty":"No break types are configured. Ask your manager to set them up.","break_type_skip":"Skip, start a generic break","break_type_manager_title":"Start a break for this team member","break_type_manager_body":"Pick the break to assign. Meetings and training are recorded here, not by the staff member.","break_type_reason_body":"Tell us briefly why you need this {name} break.","break_type_reason_label":"Reason","break_type_reason_placeholder":"e.g. Pharmacy run, phone call","break_type_reason_required":"A reason is required for this break.","break_type_max_per_day":"max {count}/day","break_type_back":"Back","break_countdown_toast":"Your break starts in {minutes} min","view_history":"View history","continue":"Continue","close":"Close","ready_to_start":"Ready to clock in","elapsed_label":"On shift","worked_today_label":"Worked today","on_leave_hint":"You are on leave today. No clock actions needed.","shift_starts_at":"Shift starts at {time}","shift_late_by":"Late by {duration}, shift was at {time}","shift_early_clock_in":"You clocked in {duration} early, shift was at {time}","shift_ends_at":"Shift ends at {time}","shift_overtime":"{duration} past scheduled end","retry":"Retry","history_error":"Couldn't load attendance. Check your connection and try again.","col_date":"Date","col_check_in":"Check-in","col_check_out":"Check-out","col_break":"Break (min)","col_hours":"Hours","col_status":"Status","no_branch_selected":"Select a branch to clock in","needs_location":"Location is required by your workspace settings.","location_denied":"Location permission denied. Please enable it in your browser settings.","location_unavailable":"Could not get your location. Try again.","acquiring_location":"Getting location…","too_far_from_branch":"You are too far from the branch to clock in.","too_far_title_check_in":"You're too far to clock in","too_far_title_check_out":"You're too far to clock out","too_far_title_start_break":"You're too far to start your break","too_far_title_end_break":"You're too far to end your break","too_far_distance_away":"{distance} away","too_far_info":"You need to be within {maxDistance}m of {branchName} to complete this action.","too_far_try_again":"Try again","location_unavailable_title":"Couldn't get your location","location_unavailable_body_gps_failed":"Your device couldn't determine its location. Make sure Location Services are turned on for your device and browser in your system settings, then try again. You can also continue without location.","location_unavailable_body_permission_denied":"Your browser blocked the location request. Enable it in browser settings, or continue without location.","location_unavailable_body_unsupported":"Your browser doesn't support geolocation. Continue without location to record your attendance.","location_unavailable_body_timeout":"The location request timed out. You can try again, or continue without location.","location_unavailable_review_notice":"Your check-in will be marked for HR review.","location_unavailable_try_again":"Try again","location_unavailable_continue":"Continue without location","check_in_success":"You're clocked in.","check_out_success":"You're clocked out.","force_clock_in_success":"Team member clocked in.","force_clock_out_success":"Team member clocked out.","force_end_break_success":"Break ended for team member.","force_start_break_success":"Break started for team member.","event_update_success":"Attendance event updated.","event_delete_success":"Attendance event deleted.","event_add_success":"Attendance event added.","event_add_title":"Add Attendance Event","event_add_type_label":"Event type","review_approved_success":"Attendance entry approved.","review_rejected_success":"Attendance entry rejected.","event_edit_title":"Edit Attendance Event","event_edit_time_label":"Event Time","event_edit_notes_label":"Notes","event_edit_section":"Event details","event_delete_confirm_title":"Delete attendance event?","event_delete_confirm_content":"This will permanently remove this event. Daily totals will recalculate.","break_start_success":"Break started.","break_end_success":"Break ended.","history_title":"Attendance History","history_empty":"No attendance records yet.","export_csv":"Export CSV","settings_title":"Attendance Policy","settings_subtitle":"Tenant-wide defaults for staff clock-in / clock-out. Individual team members can override the location restriction via their compensation record.","settings_save":"Save","settings_saved":"Attendance policy saved.","settings_save_error":"Failed to save attendance policy.","settings_section_location":"Location","settings_section_location_caption":"How strictly to enforce branch geofencing on staff check-in.","settings_section_auto_clock_out":"Auto clock-out","settings_section_auto_clock_out_caption":"Optional safety net for staff who forget to clock out.","settings_section_reminders":"Reminders","settings_section_reminders_caption":"Push notifications fire before and after each scheduled shift.","settings_section_breaks":"Breaks","settings_section_breaks_caption":"Defaults applied in the staff clock card.","settings_location_default_label":"Default location restriction","settings_location_default_enabled":"Enabled, staff must be near a branch","settings_location_default_disabled":"Disabled, accept any location","settings_geofence_label":"Geofence radius (m)","settings_geofence_helper":"Used when a branch has no Branch.max_distance_meters override.","settings_auto_clock_out_label":"Auto clock-out after (minutes)","settings_auto_clock_out_helper":"Leave empty to disable. Common values: 480 (8h), 720 (12h).","settings_max_shift_hours_label":"Max shift length (hours)","settings_max_shift_hours_helper":"Safety cap for flexible/floating staff with no scheduled end. Leave empty to disable. Common values: 12, 16.","settings_reminder_before_label":"Clock-in reminder (min before shift)","settings_reminder_after_label":"Clock-out reminder (min after shift)","settings_notify_hr_label":"Notify HR managers on late check-ins","settings_break_duration_label":"Default break duration (min)","settings_not_seeded":"HR setting line not seeded, run import_settings --section hr on the backend.","location_title_check_in":"Location required to clock in","location_title_check_out":"Location required to clock out","location_title_start_break":"Location required to start break","location_title_end_break":"Location required to end break","location_required_body":"Your workspace requires location access for this action. Please allow location access and try again.","location_permission_blocked_title":"Location access is blocked","location_permission_blocked_body":"Location has been blocked for this site. Click the lock icon in your browser's address bar, enable Location, then try again.","location_accuracy_poor_warning":"Weak GPS signal ({accuracy}m). Move outdoors for better accuracy.","location_accuracy_blocked":"GPS signal too poor to verify location ({accuracy}m). Move outdoors and try again.","timesheet_title":"Timesheet","timesheet_today":"Today","timesheet_hours_worked":"Hours worked","timesheet_paid_breaks":"Paid breaks","timesheet_unpaid_breaks":"Unpaid breaks","timesheet_overrun_breaks":"Over allowance (unpaid)","timesheet_start_break":"Start break","timesheet_end_break":"End break","timesheet_total_breaks":"Total breaks","timesheet_no_events":"No attendance events for this day","timesheet_load_error":"Failed to load timesheet","timesheet_late":"Late","timesheet_time_off":"Time off","timesheet_leave_all_day":"All day","timesheet_early_checkout":"Early checkout","history_status_absent":"Absent","action_failed":"Something went wrong. Please try again.","early_checkout_title":"Leaving early?","early_checkout_ends_at":"{time} at {branch}","early_checkout_no_branch_ends_at":"Ends at {time}","early_checkout_confirm":"Check out","early_checkout_cancel":"Cancel","early_checkout_heading":"Your shift is scheduled to end in","break_starts_in":"Break in {minutes} min","location_unavailable_recorded":"Couldn't get your location. Your punch was recorded and sent for HR review.","location_denied_recorded":"Location permission is off. Your punch was recorded and sent for HR review.","location_unverified_recorded":"Your punch was recorded, but your location couldn't be verified. It was sent for HR review.","card":{"nextShift":"Next shift"},"history_summary_total":"Days","history_summary_present":"Present","history_summary_absent":"Absent","history_summary_break":"Total break","last_shift":"Last shift {from} - {to}","ready_when_you_are":"Ready when you are","clocked_in_at":"Clocked in at {time}","break_started_at":"Break started at {time}"},"BottomNav":{"menu":"Menu","my_panel":"My Panel","dashboard":"Dashboard","booking":"Booking","profile":"Profile"},"Payslip":{"section_title":"My Payslips","section_caption":"Your pay history. Download or regenerate the PDF for any pay period.","empty_title":"No payslips yet","empty_description":"Payslips are generated automatically once your pay run is posted to accounting. They will appear here as soon as they are ready.","list_empty_admin":"No payslips for this pay run yet.","error_title":"Couldn't load payslips","retry":"Retry","period_label":"Pay period","generated_at":"Generated {date}","download_pdf":"Download PDF","download_pdf_disabled":"PDF not generated yet, click regenerate","regenerate_pdf":"Regenerate PDF","regenerate_success":"Payslip regenerated","regenerate_error":"Failed to regenerate payslip","payslip_count":"{count, plural, =0 {0 payslips} one {# payslip} other {# payslips}}","generate_all":"Generate all","regenerate_all":"Regenerate all","col_team_member":"Team member","col_total":"Total","col_generated":"Generated","col_pdf":"PDF","pdf_ready":"Ready","pdf_not_generated":"Not generated","generated_on_post":"Payslips are generated automatically when the pay run is posted.","nothing_to_regenerate":"No payslips to regenerate yet.","regenerate_partial":"Regenerated {done}/{total} payslips. {failed} failed.","regenerate_all_success":"Regenerated {count} payslips"},"PayRun":{"title":"Pay Runs","entity":"Pay Run","description":"Manage payroll runs and track team compensation periods.","status_draft":"Draft","status_pending_approval":"Pending Approval","status_approved":"Approved","status_posted":"Posted","status_paid":"Paid","status_closed":"Closed","status_reversed":"Reversed","status_cancelled":"Cancelled","filters_title":"Filter Pay Runs","filter_status":"Status","filter_branch":"Branch","filter_period":"Period","filter_period_start":"From","filter_period_end":"To","filter_apply":"Apply","filter_reset":"Reset","empty_title":"No pay runs yet","empty_description":"Create a pay run to manage payroll for a period.","period_label":"Pay period","all_branches":"All branches","actions":"Actions","options_aria":"Pay run options","tab_basics":"Basics","tab_entries":"Entries","tab_payslips":"Payslips","details_title":"Details","summary_title":"Summary","label_period":"Period","label_branch":"Branch","label_status":"Status","label_notes":"Notes","total_earnings":"Total earnings","paid_so_far":"Paid so far","earnings_label":"Earnings (wages + commissions)","other_label":"Other (tips + adjustments)","search_placeholder":"Search pay runs...","no_pay_runs_title":"No pay runs yet","no_pay_runs_description":"Create a pay run to manage payroll for a period.","remaining":"Remaining","new_pay_run":"New Pay Run","col_total":"Total","col_paid":"Paid","filters":"Filters","filter_any_status":"Any status","field_period_start":"Period start","field_period_end":"Period end","field_branch_optional":"Branch (optional)","edit_caption":"Update the period, branch, or notes for this pay run.","create_caption":"Pick a period and optionally a branch. Next you will see what each team member would be paid.","step_period":"Period","step_preview":"Preview","step_confirm":"Confirm","confirm_caption":"Creating the pay run pulls the previewed wages, commissions, tips and deductions into entries you can still adjust.","submit_for_approval":"Submit for approval right away","submit_for_approval_help":"Leave off to keep the run as a draft and review the entries first.","create_and_populate":"Create pay run","create_failed":"Could not create the pay run","created":"Pay run created","submitted_for_approval":"Pay run submitted for approval","preview_totals":"Totals","preview_employees":"Team members","preview_col_team_member":"Team member","preview_col_wage":"Wages","preview_col_commission":"Commissions","preview_col_tips":"Tips","preview_col_deductions":"Deductions","preview_col_carry_forward":"Carried forward","preview_col_net":"Net pay","preview_manual_adjustments":"Manual adjustments","preview_total_net":"Total net pay","preview_warnings":"Needs attention","preview_empty_title":"Nobody to pay in this period","preview_empty_description":"Add salaries in each team member's compensation, or check the period and branch.","warning_no_compensation":"No salary set","warning_negative_net":"Negative net","warning_in_overlapping_payrun":"Already in an overlapping pay run","warning_pending_commissions":"Pending commissions","warning_manual_calculation":"Manual calculation","warning_zero_net":"Nothing to pay","pay_type_label":"What to pay","pay_type_help":"Deductions, loan instalments and carry-forward are always applied.","pay_type_both":"Salary and commission","pay_type_commission":"Commission only","pay_type_salary":"Salary / hourly only","preview_col_allowance":"Allowances","preview_col_loans":"Loan repayments","preview_prorated_pct":"Prorated: {pct}% of the period","warning_prorated":"Prorated (joined or left mid-period)","label_submitted_by":"Submitted by","label_approved_by":"Approved by","wps_title":"WPS salary file","wps_description":"Checks every employee's bank details, then builds the SIF file to upload to your bank.","wps_download":"Download SIF","wps_close":"Close","wps_download_failed":"Could not build the WPS file.","wps_validate_failed":"Could not check the WPS file.","wps_salary_month":"Salary month","wps_employer_id":"Employer ID","wps_records":"Employees in file","wps_total":"Total salaries","wps_blocked":"Fix the errors below before the file can be generated.","wps_errors":"Errors","wps_warnings":"Warnings","wps_employees":"Employees","wps_fixed":"Fixed","wps_variable":"Variable","wps_leave_days":"{days} leave days"},"EmployeeDocuments":{"title":"Documents","action_add":"Add document","action_edit_details":"Edit details","action_delete_file":"Delete file","action_download":"Download","action_preview":"Preview","search_placeholder":"Search...","filter_all":"All Documents","empty_title":"No documents found","empty_description":"No documents have been uploaded for this team member yet","empty_category_title":"No {category} found","empty_category_description":"No {category} has been uploaded for this team member yet","quick_view_loading":"Loading documents…","quick_view_error":"Could not load documents.","quick_view_empty":"No documents on this team member."},"Compensation":{"bank_section_title_plain":"Bank details","bank_section_helper_plain":"Where salary is paid.","title":"Compensations","entity":"Compensation","description":"Configure pay type, salary, and commission settings per team member.","pay_type_commission":"Commission","pay_type_salary":"Salary","pay_type_hourly":"Hourly pay","calc_automatic":"Automatic","calc_manual":"Manual","workspace_default":"Workspace default","enabled":"Enabled","disabled":"Disabled","payment_manually":"Manually","payment_bank_transfer":"Bank transfer","payment_cash":"Cash","empty_title":"No compensation set up","empty_description":"Add wages and commissions to start including this team member in pay runs.","section_basics":"Basics","section_attendance":"Attendance","section_commission":"Commission","section_deductions":"Deductions","wages_section_title":"Wages and timesheets","wages_section_helper":"Automate wage calculations and track your team's hours, breaks, and attendance with timesheets.","commissions_section_title":"Commissions","commissions_section_helper_workspace":"Using your workspace's default commission rules. Switch to Custom to set rates specific to this team member.","commissions_section_helper_custom":"Custom commission rates apply to this team member only.","payment_section_title":"Payment","payslips_section_title":"Payslips","payment_section_helper":"Choose how this team member is paid and which fees are deducted from their earnings.","field_compensation_type":"Compensation type","field_base_salary":"Base salary","field_hourly_rate":"Hourly rate","field_track_attendance":"Track attendance","field_track_attendance_helper":"Automatically create a timesheet when this team member clocks in.","field_location_restrictions":"Location restrictions","field_auto_clock_in":"Auto clock in","field_auto_clock_out":"Auto clock out","field_auto_breaks":"Auto start and end breaks","field_commission_rules":"Commission rules","commission_rules_workspace":"Workspace defaults","commission_rules_custom":"Custom","field_default_rate":"Default rate","field_new_invoice_consultant":"New invoice, consultant rate","field_new_invoice_supervisor":"New invoice, supervisor rate","field_upsell_consultant":"Upsell, consultant rate","field_upsell_supervisor":"Upsell, supervisor rate","field_payment_method":"Payment method","field_calculation_method":"Calculation method","field_deduct_payment_processing":"Deduct payment processing fees","field_deduct_new_client":"Deduct new client fees","field_deduct_booking":"Deduct booking fees","field_record_cash_as_paid":"Record cash payments as paid","action_edit":"Edit","edit_wages_title":"Edit wages and timesheets","edit_commissions_title":"Edit commissions","edit_payment_title":"Edit payment","allowances_title":"Monthly allowances","allowances_helper":"Paid every month on top of the base salary and prorated for joiners and leavers. Counted as the fixed part of the WPS salary.","field_housing_allowance":"Housing allowance","field_transport_allowance":"Transport allowance","field_other_allowance":"Other allowance","bank_section_title":"Bank & WPS","bank_section_helper":"Where salary is paid. These details go into the WPS salary file (SIF) sent to the bank.","bank_read_only":"Only users who can manage payroll can change bank details.","field_bank_name":"Bank name","field_bank_name_placeholder":"e.g. Emirates NBD","field_bank_iban":"IBAN","field_bank_iban_help":"UAE IBAN: AE followed by 21 digits.","field_bank_routing_code":"Bank routing code","field_bank_routing_code_help":"9-digit Central Bank routing (agent) code of the employee's bank.","field_labour_card_number":"Labour card number","field_wps_person_code":"WPS person code","field_wps_person_code_help":"14-digit MOHRE personal number printed on the labour card.","bank_iban_on_file":"IBAN on file:","bank_iban_changed":"will be replaced when you save"},"PackageSelect":{"loading":"Loading…","membership":"Membership","coveredByMembership":"Covered by membership","sheetTitle":"Select a package","selectPatientFirst":"Select a patient first to see their packages","noActivePackages":"No matching packages for this service","noActivePackagesAll":"This patient has no packages with remaining credit","noActivePackagesBody":"Sell this service to the patient now, or show all their packages to check other credit.","showAllPackages":"Show all patient's packages","showingAllPackages":"Showing all patient's packages","showAllPackagesAction":"Show all packages","viewAllInvoices":"View all invoices","viewPatientSessions":"View patient sessions","openInvoiceInNewTab":"Open invoice in new tab","noMatch":"No packages match your filter","forThisServiceOnly":"For this service only · {service}","invoiceShort":"Inv #{number}","itemsLeft":"{count, plural, one {# item left} other {# items left}}","materialUsedUp":"Material used up","baseUnitsLeft":"{amount} {unit} left","usedCount":"used {count}","pkgCode":"Pkg {code}","match":"Match","paidChip":"Paid","partialChip":"Partial","unpaidChip":"Unpaid","amountDue":"<amount></amount> due","cancelledChip":"Cancelled","newSale":"New sale","bookedFree":"{booked} booked · {free} free","allBooked":"All booked ({booked})"},"nav":{"Management":"Management","Messaging":"Messaging","Franchise":"Franchise","Other":"Other","Dashboard":"Dashboard","Patients":"Patients","Bookings":"Bookings","Sales":"Sales","Service Credits":"Service Credits","My Panel":"My Panel","Tasks":"Tasks","Leads":"Leads","Catalog":"Catalog","Inventory":"Inventory","Accounting":"Accounting","HR":"HR","Team":"Team","Reports":"Reports","Campaigns":"Campaigns","Inbox":"Inbox","Messages":"Messages","Settings":"Settings","Support":"Support","Sales List":"Sales List","Payments":"Payments","Services":"Services","Products":"Products","Memberships":"Memberships","Gift Cards":"Gift Cards","Sales Packages":"Sales Packages","Overview":"Overview","Purchase Orders":"Purchase Orders","Receiving":"Receiving","Goods Receipt Notes":"Goods Receipt Notes","Returns":"Returns","Stock":"Stock","Stock Records":"Stock Records","Stock Takes":"Stock Takes","Stock Transfers":"Stock Transfers","Configuration":"Configuration","Warehouses":"Warehouses","Locations":"Locations","Product Categories":"Product Categories","Units of Measure":"Units of Measure","Vendors":"Vendors","Posting Queue":"Posting Queue","Chart of Accounts":"Chart of Accounts","Counterparties":"Counterparties","Issued Cheques":"Issued Cheques","Payment Terms":"Payment Terms","Journal Entries":"Journal Entries","Journal Items":"Journal Items","Quick Replies":"Quick Replies","Recurring Journals":"Recurring Journals","Currency Rates":"Currency Rates","Expenses":"Expenses","Bank Reconciliation":"Bank Reconciliation","Bank Rules":"Bank Rules","Reconciliation Exceptions":"Reconciliation Exceptions","Allocations":"Allocations","Templates":"Templates","History":"History","Period Close":"Period Close","Bills":"Bills","Refunds":"Refunds","Recurring Bills":"Recurring Bills","Commissions":"Commissions","Marketing Spend":"Marketing Spend","Recurring Templates":"Recurring Templates","Campaign Insights":"Campaign Insights","Import":"Import","Reconciliation":"Reconciliation","Platform Accounts":"Platform Accounts","Team Members":"Team Members","Pay Runs":"Pay Runs","Payslips":"Payslips","Timesheets":"Timesheets","Finance · Trial Balance":"Finance · Trial Balance","Finance · General Ledger":"Finance · General Ledger","SMS":"SMS","WhatsApp":"WhatsApp","Email":"Email","Automation":"Automation","Push Notification":"Push Notification","Channels":"Channels","Comments":"Comments","Audiences":"Audiences","Static Groups":"Static Groups","Dynamic Groups":"Dynamic Groups","Contacts":"Contacts","Portal":"Portal","Documents":"Documents","Quotations":"Quotations","Credit Notes":"Credit Notes","AI Workforce":"AI Workforce","Loans & Advances":"Loans & Advances","End of Service":"End of Service","Reviews":"Reviews","Automations":"Automations","Ready-made":"Ready-made","My automations":"My automations","Built-in":"Built-in","Activity":"Activity","Billing":"Billing","Business":"Business","Catalog & Products":"Catalog & Products","HR & Staff":"HR & Staff","Booking":"Booking","Sales & Finance":"Sales & Finance","Messaging & Automations":"Messaging & Automations","Marketing":"Marketing","Integrations":"Integrations","Localization":"Localization","Subscription & Billing":"Subscription & Billing","Go-live Checklist":"Go-live Checklist","Calendar & Dates":"Calendar & Dates","Branches":"Branches","Branding":"Branding","Online Booking Page":"Online Booking Page","Resources":"Resources","Devices":"Devices","Permissions":"Permissions","E-Invoicing":"E-Invoicing","Categories":"Categories","Consent Forms":"Consent Forms","HR Setup":"HR Setup","Attendance Policy":"Attendance Policy","Attendance Rules":"Attendance Rules","Break Types":"Break Types","Payroll Settings":"Payroll Settings","Booking Defaults":"Booking Defaults","Statuses":"Statuses","Medical Record Categories":"Medical Record Categories","Sales Defaults":"Sales Defaults","Finance Defaults":"Finance Defaults","Insurance Payers":"Insurance Payers","Insurance Plans":"Insurance Plans","Insurance Claims":"Insurance Claims","Payment Methods":"Payment Methods","Payment Gateways":"Payment Gateways","Meta Ad Accounts":"Meta Ad Accounts","Tax Rates":"Tax Rates","Fiscal Years":"Fiscal Years","Accounting Settings":"Accounting Settings","Inventory Alerts":"Inventory Alerts","Branch Inventory Overrides":"Branch Inventory Overrides","Notification Providers":"Notification Providers","Message Templates":"Message Templates","Messaging Defaults":"Messaging Defaults","Campaign Replies":"Campaign Replies","Inbox Automation":"Inbox Automation","Opt-Out List":"Opt-Out List","Notifications Health":"Notifications Health","Email Sending Domain":"Email Sending Domain","Email Wording":"Email Wording","Inbox Teams":"Inbox Teams","Inbox Settings":"Inbox Settings","Cashback & Loyalty":"Cashback & Loyalty","Loyalty Program":"Loyalty Program","Lead Ownership":"Lead Ownership","Lead Sources":"Lead Sources","Lead Source Categories":"Lead Source Categories","First-Message Rules":"First-Message Rules","Google Ads":"Google Ads","Meta Ads":"Meta Ads","Health Data Exchange":"Health Data Exchange","API Keys":"API Keys","Insurance Gateway":"Insurance Gateway","Alerts":"Alerts","Allocation History":"Allocation History","Allocation Templates":"Allocation Templates","Analytic Accounts":"Analytic Accounts","Analytic Tags":"Analytic Tags","Banking":"Banking","Budgets":"Budgets","Daily Close":"Daily Close","Expense Categories":"Expense Categories","Expiry Alerts":"Expiry Alerts","Fixed Assets":"Fixed Assets","Journals":"Journals","Low Stock":"Low Stock","My Expenses":"My Expenses","Payment Sources":"Payment Sources","Period-End":"Period-End","Transactions":"Transactions","Webhooks":"Webhooks"},"SectionReceipts":{"title":"Payments","description":"Record, track, and reconcile customer payments across branches.","newPayment":"New Payment","newReceipt":"New receipt","searchPayments":"Search any column: ID, invoice, patient, amount…","searchPayment":"Search payment...","searchSale":"Search sale...","filters":"Filters","filtersLabel":"Filters:","filterPayments":"Filter Payments","paymentsFilter":"Payments Filter","dateLabel":"Date","from":"From","to":"To","dateRange":"Date Range","status":"Status","selectStatus":"Select status","paymentMethod":"Payment Method","paymentMethods":"Payment Methods","selectPaymentMethod":"Select payment method","resetFilter":"Reset filter","apply":"Apply","columnId":"ID","columnInvoiceNumber":"Invoice Number","columnPatient":"Patient","columnAmount":"Amount","columnReferenceNumber":"Reference Number","columnPaymentDate":"Payment Date","tooltipOverview":"Overview","tooltipEdit":"Edit","tooltipDeletePayment":"Delete Payment","payment":"Payment","paymentViaPos":"Payment via POS","paymentSuccessful":"Payment Successful!","paymentCompletedSuccessfully":"Payment completed successfully","paymentMissingMetadata":"Payment status not updated, POS transaction details were incomplete","paymentStatusUpdateFailed":"Card payment approved, but saving its status failed. Check the invoice before charging again.","paymentCompleted":"Completed","paymentPending":"Pending","paymentPendingTitle":"Payment Pending","paymentFailedTitle":"Payment Failed!","paymentStillPending":"Still pending, check again.","patient":"Patient","paymentId":"Payment ID","billingDate":"Billing Date","referenceNumber":"Reference Number","paidAmount":"Paid amount","note":"Note","ok":"Ok","cancel":"Cancel","back":"Back","send":"Send","backAndEdit":"Back & Edit","tryAgain":"Try Again","saleDetails":"Sale Details","saleDetailsDescription":"Select invoice, amount, date, and notes","paymentMethodStep":"Payment Method","paymentMethodStepDescription":"Choose how to pay","saleId":"Sale ID","paymentAmount":"Payment Amount","paymentDate":"Payment Date","taxIncluded":"(Tax included)","paymentMethodTitle":"Payment method","walletBalance":"Wallet Balance","available":"available","referenceNumberFieldLabel":"Reference Number","chequeNumberFieldLabel":"Cheque Number","chequeDueDateFieldLabel":"Cheque Due Date","paymentUpdatedSuccessfully":"Payment Updated Successfully","paymentAddedSuccessfully":"Payment Added Successfully","invoiceNumber":"Invoice Number","paymentDetails":"Payment Details","downloadInvoice":"Download Invoice","errorSelectSale":"Please select a sale","errorEnterAmount":"Please enter an amount","unableProcessPos":"Unable to process POS payment","payments":"Payments","noPaymentYet":"No payment yet","addAPaymentToGetStarted":"Add a payment to get started","reference":"Reference","edit":"Edit","recordPayment":"Record Payment","recordingPayment":"Recording payment…","updatingInvoice":"Updating invoice…","paymentRecorded":"Payment recorded","paymentUpdated":"Payment updated","posPaymentTitle":"POS Terminal Payment","next":"Next","submit":"Submit","discardChanges":"Discard changes?","discardChangesQuestion":"You have unsaved changes. Are you sure you want to discard them?","continueEditing":"Continue editing","discard":"Discard","updatePayment":"Update Payment","updatingPayment":"Updating payment…","applyGiftCard":"Apply gift card","applyGiftCardDescription":"Enter the claim code and the amount to redeem on this invoice.","applyGiftCardConfirm":"Apply","applyGiftCardCancel":"Cancel","applyGiftCardSuccess":"Gift card applied successfully","applyGiftCardError":"Could not apply the gift card","applyGiftCardClaimCodeRequired":"Claim code is required","claimCodeLabel":"Claim code","claimCodePlaceholder":"e.g. ABC-1234","redeemAmountLabel":"Amount to redeem","remainingDue":"Remaining due","refund":"Refund","tipOptional":"Tip (optional)","tipAmountLabel":"Tip amount","tipRecipientLabel":"Team member","selectedCount":"{count} selected","selectedTotal":"Selected total","clearSelection":"Clear selection","columnAttachment":"Attachment","attachments":"Attachments","history":"History","invoiceStatus":"Invoice status","viewAttachments":"View attachments","noAttachments":"No attachments","creditNote":"Credit Note","creditApplied":"Credit {number}","creditRefund":"Refund of {number}","voidPayment":"Void payment","voidPaymentTitle":"Void this receipt?","voidingPayment":"Voiding receipt…","reversingJournalEntry":"Reversing its journal entry…","paymentVoided":"Receipt voided","voidPaymentFailed":"Failed to void receipt","cannotVoidThisReceipt":"This receipt cannot be voided","voidPaymentReasonPlaceholder":"Why is this receipt being voided?","reason":"Reason","reasonMinChars":"At least {count} characters","listEntityPlural":"Payments","branch":"Branch","selectBranch":"Select branch"},"SectionInvoices":{"rxAddToSale":"Add to sale","rxOnSale":"On this sale","rxReadyTitle":"Signed prescription ready for this sale","rxSignedOn":"signed {date}","rxValidUntil":"valid until {date}","rxOutside":"outside","rxMissingWarnTitle":"{count, plural, one {# item needs} other {# items need}} a signed prescription","rxMissingBlockTitle":"{count, plural, one {# item can't be sold} other {# items can't be sold}} without a signed prescription","rxMissingHint":"Ask the doctor from here, or record a prescription the patient brought from outside.","rxUsedTitle":"{count, plural, one {This patient's signed prescription is} other {This patient's signed prescriptions are}} already used by another sale","rxUsedBy":"used by invoice {invoice}","rxUsedHint":"One prescription covers one sale. Void that sale to free it, or ask the doctor to sign a new prescription in the visit (Medical record → Medication).","productNotAvailable":"This product is unavailable and cannot be selected at the moment.","rxChooseHowTitle":"How is this medicine given?","rxChooseHowCaption":"Pick the service when the dose is given in the clinic, or the medicine itself when the patient takes it home.","rxTakeHome":"Take home: {name}","rxGivenAsService":"Given in clinic: {name}","lineUnitChip":"per {unit}","lineUnitTooltip":"The quantity is counted in this unit ({unit}): 1 means one {unit}.","itemRxCovered":"Prescription","itemRxMissing":"No prescription","itemRxRequired":"Prescription medicine","summaryTitle":"Summary","summarySubtotal":"Subtotal","summaryDiscount":"Discount","summaryMembershipDiscount":"Membership discount","summaryTax":"Tax","summaryTotal":"Total","summaryWalletDeduction":"Wallet deduction","summaryPaid":"Paid","summaryRefunded":"Refunded","summaryBalanceDue":"Balance due","summaryChange":"Change","detailAddPayment":"Add payment","listViewAria":"Sales list view","listViewAll":"All sales","listViewAwaitingHandover":"Awaiting hand-over","handoverChip":"{count} to hand over","handoverChipTooltip":"{count, plural, one {# item is} other {# items are}} waiting to be handed over. Open the invoice to mark it delivered.","rxLoadError":"Couldn't load this patient's prescriptions, so prescription medicines can't be checked yet.","rxRetry":"Try again","rxOverTitle":"More than the prescription allows","rxOverLine":"{name}: prescribed {allowed}, on this sale {count}.","rxOverHint":"Lower the quantity, or ask the doctor to change the prescription (Medical record → Medication).","handoverUnpaid":"Not paid yet, balance due","handoverUnpaidHint":"You can still hand it over; collect the payment at the desk.","handoverNoPrescription":"This sale has no signed prescription, so the prescription medicine can't be handed over yet.","handoverEmptyTitle":"Nothing waiting to be handed over","handoverEmptyDescription":"Every medicine and product sold has been handed over. New ones appear here as soon as they are sold.","listDue":"Due","listEntityPlural":"Sales","listPageTitle":"Sales","listPageDescription":"Track invoices, monitor payment progress, and manage new sales.","listNewInvoice":"New Invoice","listSearchPlaceholder":"Search invoices...","listFilters":"Filters","listFiltersApplied":"Filters:","listFilterTitle":"Filter Invoices","filterBillingDate":"Billing Date","filterCreatedDate":"Created Date","filterStatus":"Status","filterStatusPlaceholder":"Select status","filterBranch":"Branch","filterBranchPlaceholder":"Select branch","filterGpDoctor":"GP Doctor","filterDoctor":"Doctor","filterDoctorPlaceholder":"Select doctor","filterSeller":"Sales Consultant","filterSellerPlaceholder":"Select sales consultant","filterAttachments":"Attachments","filterHasAttachments":"Has attachments","filterNoAttachments":"No attachments","chipBillingDate":"Billing date","chipCreated":"Created","formUpdateInvoice":"Update Invoice","formCreateInvoice":"Create Invoice","paidBannerTitle":"Invoice is paid","paidBannerLocked":"This invoice is settled, so billing fields are locked to protect the accounting records. You can still update the note on each item.","paidBannerHowToCorrect":"To correct the billing, issue a credit note. Or refund the payments first, then void the invoice and create a new one.","paidBannerFinance":"This invoice is settled. With finance access you can edit billing fields, and the accounting entries, stock and commissions are updated to match. Pick a correction reason so the audit log records why.","correctionTitle":"Correction reason","correctionCaption":"Required when editing a paid invoice. Recorded on every line that changes.","correctionReasonLabel":"Reason","correctionReasonPlaceholder":"Select a reason","correctionNoteLabel":"Note","correctionNotePlaceholder":"Add context. Required when the reason is Other","voidTitle":"Void invoice {number}?","voidConfirm":"Void invoice","voidCancel":"Cancel","voidReasonLabel":"Reason","voidReasonPlaceholder":"Why is this invoice being voided?","voidReasonHelper":"At least {min} characters, kept on the audit record","voidConsequences":"Voiding reverses this invoice in the accounts and returns its stock. The invoice stays on record as void with your reason. It cannot be reopened.","voidLoadingVoiding":"Voiding invoice…","voidLoadingReversing":"Reversing the accounts and stock…","voidFailed":"Could not void the invoice","voidRefundTitle":"Refund the payment first","voidRefundBody":"This invoice has settled payments. Refund every paid payment before voiding.","voidCreditNoteTitle":"Use a credit note","voidCreditNoteBody":"This invoice is VAT-finalized. The correct legal correction is a credit note.","voidCreditNoteAction":"Issue credit note","voidLockedTitle":"Accounting period is closed","voidLockedBody":"Ask the Finance Manager to re-open the period before voiding this invoice.","voidReasonRequired":"A reason is required.","voidSectionTitle":"Voided","voidReasonRow":"Reason","voidedAtRow":"Voided on","voidedByRow":"Voided by","actionAddPayment":"Add Payment","actionPostToAccounting":"Post to Accounting","actionEdit":"Edit","actionPrint":"Print","actionShare":"Share","actionVoid":"Void","actionCreditNote":"Credit Note","actionRecompute":"Recompute snapshot","actionDelete":"Delete","actionsMenu":"Actions","actionsMenuAria":"Invoice actions","detailEntityName":"Invoice","itemsTitle":"Items","itemsColItem":"Item","itemsColQty":"Quantity","itemsColUnitPrice":"Unit price","itemsColTotal":"Total","itemsColNotes":"Notes","itemsEmpty":"No items.","itemsPackageFallback":"Package #{id}","itemsCount":"{count, plural, one {# item} other {# items}}","colSaleId":"Sale ID","colPatient":"Patient","colStatus":"Status","colSalesConsultant":"Consultant","colAmount":"Amount","colCreatedAt":"Created","colBillingDate":"Billing date","colPayment":"Payment","colAttachments":"Attachments","colActions":"Actions","paymentPaid":"Paid","paymentRemaining":"Remaining","rowCorrectedChip":"{count, plural, one {Corrected} other {Corrected #×}}","rowCorrectedHint":"{count, plural, one {Items on this invoice have been corrected once.} other {Items on this invoice have been corrected # times.}} Open the invoice to see the change history.","detail":{"customerFallback":"Customer #{id}","tabs":{"details":"Details","payments":"Payments","creditNotes":"Credit notes","journalEntries":"Journal entries","history":"History"},"titleWithNumber":"Invoice {number}","customer":"Customer","viewCustomer":"View customer details","saleInfo":"Sale info","invoiceNumber":"Invoice number","status":"Status","branch":"Branch","created":"Created","billingDate":"Billing date","dueDate":"Due date","salesConsultant":"Sales consultant","gpDoctor":"GP doctor","treatmentPlan":"Treatment plan","note":"Note","journalEntries":"Journal entries","postedToAccounting":"Posted to accounting","itemsEmpty":"No items on this invoice","netSales":"Net sales (ex-VAT)","totalCommission":"Total commission","cogs":"Cost of goods (COGS)","grossProfit":"Gross profit","netProfit":"Net profit","marginCaption":"{percent} margin","planFallback":"Plan #{id}"},"refund":{"availableToRefund":"<amount></amount> available to refund"},"taxRuleExclusive":"{rate}% VAT","taxRuleInclusive":"{rate}% VAT, included in prices","taxNoActiveRule":"No active tax rule","taxLockedHint":"Set by the branch. Only finance can change it","quickLook":{"title":"Sale Package","print":"Print","items":"Items","payments":"Payments","noPaymentTitle":"No payment yet","noPaymentDescription":"Add a payment to get started","saleSummary":"Sale Summary","subtotal":"Subtotal","discount":"Discount","tax":"Tax","totalCommission":"Total commission","paidAmount":"Paid amount","consumableCosts":"Consumable Costs","netRevenue":"Net Revenue","walletDeductionTotal":"Wallet deduction total","totalDue":"Total Due","ok":"OK","showAmount":"Show amount","hideAmount":"Hide amount"},"emiratesIdOrPassport":"Emirates ID or passport","checkInGapsTitle":"Needed before check-in","checkInGapsDescription":"You can save now. The patient cannot be checked in until these are filled: {fields}.","moreDetails":"More details","moreDetailsCaption":"Optional: marital status, language, religion, profession and tags.","form":{"correctionReasons":{"item_swap":"Patient swapped for a different product / service","qty_adjust":"Quantity adjustment","price_fix":"Price correction","data_entry_error":"Operator data-entry error","refund_partial":"Partial refund / item returned","patient_no_show":"Patient no-show / item never delivered","other":"Other (free-text note required)"},"customerTitle":"Customer & sale","customerCaption":"Search for the patient, set the billing dates, and assign the staff involved.","customer":"Customer","customerPlaceholder":"Search by name or phone","branch":"Branch","branchPlaceholder":"Select branch","seller":"Sales consultant","sellerPlaceholder":"Select staff","billingDate":"Billing date","dueDate":"Due date","doctor":"Doctor","doctorPlaceholder":"Select doctor","consultant":"Consultant","consultantPlaceholder":"Select consultant","treatmentPlan":"Treatment plan (optional)","treatmentPlanPlaceholder":"Attach a treatment plan for this patient","treatmentPlanNeedsCustomer":"Pick a customer first","treatmentPlanHelper":"Shown in the patient portal under the plan's linked invoices. Every line that doesn't already point at another plan takes this plan on save.","note":"Note","notePlaceholder":"Internal note: staff only, not printed on the invoice","itemsTitle":"Items","itemsCaption":"Add services or products. Expand a row to apply a discount or assign a seller to that line.","itemsEmptyTitle":"No items yet","itemsEmptyDescription":"Add a service or product, or use More to import from a package, booking or prescription.","removeItem":"Remove item","addItem":"Add item","more":"More","addFromPackage":"Add from package","addFromBookings":"Add from bookings","addFromPrescriptions":"Add from prescriptions","loadFromTreatmentPlan":"Load from treatment plan","needsPatient":"Select a patient first","noBookingsToBill":"No completed bookings waiting to be billed","noPrescriptionsToBill":"No signed prescriptions waiting to be billed","needsTreatmentPlan":"Link a treatment plan above first","scanIncremented":"+1 {name}","scanAdded":"Added: {name}","scanItemFallback":"item","packageFallback":"Package","packageSaleFallback":"Package sale #{id}","packageSummary":"{count, plural, one {# item} other {# items}} · subtotal","packageRemove":"Remove package","packageRemoveTooltip":"Remove every item from this package","lineLocked":"Locked","linePaid":"Paid","lineCheck":"Check","linePickPlaceholder":"Pick a service or product","kinds":{"service":"Service","physical":"Product","digital":"Digital","package":"Package"},"discountTitle":"Discount","discountCaptionManual":"Apply a coupon code or set a manual amount or percent (audit-logged).","discountCaptionCoupon":"Apply a coupon code. It is checked live against the current subtotal.","discountModeAria":"Discount type","discountModeCoupon":"Coupon code","discountModeManual":"Manual","manualDiscountLocked":"A manual discount was applied by a user allowed to give discounts. Only they can change or remove it.","summaryTitle":"Charges & summary","summaryCaption":"Set tax and cashback, then confirm the total before saving.","applyTax":"Apply tax","cashback":"Cashback eligible","cashbackCaption":"Reward points on payment","discountWithCoupon":"Discount · {code}","taxWithRate":"Tax · {rate}%","line":{"packageLocked":"This item comes from a package, so its price is fixed. Use “Remove package” on the group to change it. You can still edit the note.","packageSwappable":"This item comes from a package. You can switch it to one of the allowed products below; quantity and price stay fixed by the package.","item":"Item","itemPlaceholder":"Select a service or product","swapHelper":"Swappable package item. Choose which product to deliver.","productFallback":"Product #{id}","qty":"Qty","unit":"Unit","unitPrice":"Unit price","total":"Total","priceHintBase":"Base {amount}","priceHintMin":"Minimum {amount}","belowFloorAddReason":"Below the minimum ({amount}). Add a reason","belowFloor":"Minimum: {amount}. Going lower needs the discount permission","floorOverrideAuthorized":"Approved below the minimum ({amount})","membershipFree":"Use membership (covered in full)","membershipPct":"Use membership ({pct}% off)","floorReason":"Reason for selling below the minimum","floorReasonPlaceholder":"e.g. loyal patient, manager-approved campaign","floorReasonHelper":"Selling below the floor is a discount. Your name and this reason are saved on the line for audit.","note":"Note","unitConversion":"1 {unit} = {qty} {base}","addDiscount":"Add discount","discountNegative":"Discount can't be negative","discountMax100":"Maximum 100%","discountOverPrice":"Discount is more than the original price","discountBelowFloorReason":"Brings the price below the minimum ({amount}). Add a reason above.","discountHint":"Taken off the original price. The minimum price still applies.","perItemSeller":"Seller for this item","sellerOverride":"Seller","sellerOverridePlaceholder":"Same as the invoice seller","sellerOverrideHelper":"Commission for this item goes to this person instead of the invoice seller.","stockOut":"Out of stock","stockLow":"Low: {qty}","stockIn":"In stock: {qty}","stockOutStrictHint":"Out of stock. Tenant settings require stock to invoice this product.","stockOutWarnHint":"Sale will reduce stock to negative. This may indicate a sync lag. Reconcile from Inventory → Stock Takes if you suspect drift.","location":"Location","locationPlaceholder":"Pick where the stock is taken from","locationHelper":"The place in this branch the stock leaves from.","locationOption":"{name} · {qty} available","locationLocked":"Stock already left this place — correct it with a credit note."},"discountLabel":"Discount","discountUnitAria":"Discount unit","percent":"Percent","coupon":{"label":"Coupon code","placeholder":"e.g. WELCOME10","hint":"Apply a promo code to reduce the total.","apply":"Apply","notFound":"Coupon not found or expired.","empty":"Enter a coupon code first.","percentOff":"{value}% off","amountOff":"{value} off","capped":"Capped","cappedTooltip":"Limited by the coupon's maximum discount","belowMin":"The subtotal is below the {amount} minimum, so no discount applies.","preview":"Discount preview:","remove":"Remove coupon"},"manual":{"amountInvalid":"Enter an amount of 0 or more","percentInvalid":"Enter a percent between 0 and 100","amountHint":"Capped at the subtotal","percentHint":"Of the subtotal, before tax","applied":"Discount applied","fromSubtotal":"− from subtotal","reason":"Reason","reasonPlaceholder":"e.g. loyalty gesture · staff comp · negotiated rate","reasonRequired":"A reason is required. The discount isn't applied without one","reasonHint":"Saved in the audit log with who applied the discount and when."},"packages":{"title":"Select a package","description":"Pick a package. Its items are added to the invoice.","search":"Search packages by name or code…","emptySearchTitle":"No packages match your search","emptyTitle":"No active packages","emptySearch":"Try a different keyword or clear the search.","empty":"Create a sales package in the catalog to use it on invoices.","clearSearch":"Clear search","loading":"Loading…","add":"Add to invoice","count":"{shown} of {total} packages","countMatching":"{shown} of {total} packages matching “{search}”","items":"{count, plural, one {# item} other {# items}}","loadingItems":"Loading items…","itemsError":"Couldn't load the items.","retry":"Retry","included":"Items included","productFallback":"Product #{id}","swappable":"Swappable","swappableHint":"Swappable items can be changed on the invoice after adding.","pricing":{"manual":"Manual","proportional":"Proportional","header_discount":"Header discount"}},"bookings":{"title":"Load from booking","description":"Select sessions to add to this invoice","today":"Today","week":"This week","all":"Last 30 days","periodAria":"Period","emptyTitle":"No billable sessions for this period","empty":"Try a different period, or check that the patient has confirmed sessions.","showAll":"Show last 30 days","add":"{count, plural, =0 {Add sessions} one {Add # session} other {Add # sessions}}","serviceFallback":"Service"},"prescriptions":{"title":"Signed prescriptions","description":"Pick the prescription to put on the sale. What is already on the sale is not added twice.","emptyTitle":"No signed prescriptions to add","empty":"This patient has no signed prescription with anything left to sell.","add":"{count, plural, =0 {Add} other {Add #}}","remaining":"{count, plural, one {# unit left} other {# units left}}","doctor":"Dr. {name}"},"barcode":{"placeholder":"Scan or type a barcode to add a product…","notFound":"No product matches this barcode","failed":"Barcode lookup failed. Please try again."},"treatmentFallback":"Treatment","validation":{"customerRequired":"Customer is required","branchRequired":"Choose the branch this sale belongs to","serviceRequired":"Service is required","quantityMin":"Quantity must be at least 1","unitPriceMin":"Unit price must be ≥ 0","belowFloor":"Below the minimum price ({min})","onlyAvailable":"Only {qty} available","itemsMin":"Add at least one item","manualReasonRequired":"A reason is required for manual discounts","correctionNoteRequired":"Describe the correction when the reason is Other","taxRateNotLoaded":"Tax settings are still loading. Try again in a moment.","locationRequired":"Pick the location the stock is taken from"},"quickReceive":{"received":"Received {qty} for {product}","productFallback":"product #{id}"},"prescriptionsLoadError":"Couldn't load this patient's prescriptions"},"recompute":{"title":"Recompute snapshot","titleWithInvoice":"Recompute snapshot: {invoice}","intro":"Recompute refreshes the per-line snapshot that reports and accounting read. Run a dry run first; applying bumps the snapshot version and records an audit row.","options":"Options","scope":"Scope","reason":"Reason","notes":"Notes","notesPlaceholder":"Why (saved in the audit trail)","scopes":{"all":"All snapshots","cost":"Cost only","tax":"Tax only","discount":"Discount only","commission":"Commission only"},"scopeHelp":{"all":"Cost, tax, discount and commission","cost":"Product cost / total cost on each line","tax":"Tax rate / amount / net / NSR","discount":"Allocated discount / net / NSR","commission":"Base / rate / amount per line"},"reasons":{"cost_correction":"Product cost correction","tax_rule_change":"Tax rule changed","commission_rule_change":"Commission rule changed","data_quality":"Data quality cleanup","other":"Other"},"close":"Close","runDryRun":"Run dry run","running":"Running…","tweak":"Change inputs","apply":"Apply changes","applying":"Applying…","diffTitle":"Dry-run changes","noChanges":"No changes. The snapshot is already current","itemsWouldChange":"{count, plural, one {# line would change} other {# lines would change}}","itemLabel":"Line #{id}","loadingApply":"Applying snapshot…","loadingGl":"Updating ledger and commission…","applied":"Snapshot v{version} applied","appliedPlain":"Snapshot applied","failed":"Recompute failed","unexpectedStatus":"Recompute returned status: {status}"},"share":{"title":"Share invoice","message":"Message","shareTo":"Share to","whatsapp":"WhatsApp","sms":"SMS","email":"Email","copyMessage":"Copy message","copyLink":"Copy link","copiedMessage":"Message copied","copiedLink":"Link copied","greetingNamed":"Dear {name},","greeting":"Hello,","body":"Please find your invoice #{number} below.","amount":"Amount: {amount}","view":"View invoice:","tel":"Tel: {phone}","subject":"Invoice #{number}","subjectWithBusiness":"Invoice #{number}: {business}"},"listFullyPaid":"Fully paid","inProcess":"In Process","costBreakdown":{"commission":"Commission","estimated":"(est.)","base":"Base","bom":"BOM","overhead":"Overhead","estimate":"Estimate","variance":"Variance"},"itemCard":{"qty":"Qty","unitPrice":"Unit price","total":"Total","note":"Note","packageItem":"Package item"},"document":{"taxInvoice":"Tax Invoice","taxCreditNote":"Tax Credit Note","invoiceRef":"Invoice #{number}","creditNoteRef":"Credit Note #{number}","printTitle":"Print {docType}","pricesInclude":"Prices include VAT.","pricesExclude":"Prices exclude VAT. VAT is charged separately.","customer":"Customer","invoiceDetails":"Invoice Details","name":"Name","gpDoctor":"GP Doctor","consultant":"Consultant","provider":"Provider","facility":"Facility","facilityLicense":"Facility License","licenseNo":"License No.","dueDate":"Due Date","prescriptionNo":"Prescription No.","insurer":"Insurer","memberNo":"Member No.","insuranceShare":"Insurance Share","patientShare":"Patient Share","phoneNumber":"Phone Number","mrn":"MRN","invoiceNo":"Invoice No","issueDate":"Issue Date","dateOfSupply":"Date of Supply","vatRate":"VAT Rate","itemsTitle":"Items ({count})","paymentsTitle":"Payments ({count})","colDescription":"Description","colQty":"Qty","colUnitPrice":"Unit Price","colVatPercent":"VAT %","colVat":"VAT","colTotal":"Total","colPaymentNo":"Payment #","colPaymentMethod":"Payment Method","colDate":"Date","colAmount":"Amount","noItems":"No items.","youSaved":"You saved","discount":"Discount","packageItem":"Package Item","packageHeading":"Package: {name}","packageFallback":"Package #{id}","vatSummary":"VAT Summary","colRate":"Rate","colTaxableAmount":"Taxable Amount","colVatAmount":"VAT Amount","subtotal":"Subtotal","vatBand":"VAT @ {rate}% (on {base})","vatAmount":"VAT Amount","walletDeduction":"Wallet Deduction","paidAmount":"Paid Amount","refundedAmount":"Refunded","totalInclVat":"Total (Incl. VAT)","balanceDue":"Balance Due","change":"Change","invoiceSummary":"Invoice Summary","creditNoteSummary":"Credit Note Summary","verifyCaption":"Scan to verify this invoice"},"export":{"columns":{"invoiceId":"Invoice ID","patient":"Patient","status":"Status","salesConsultant":"Sales Consultant","currency":"Currency","discount":"Discount","taxableAmount":"Taxable Amount","totalTax":"Total Tax","totalAmount":"Total Amount","amountDue":"Amount Due","paidAmount":"Paid Amount","billingDate":"Billing Date","createdAt":"Created At","hasAttachments":"Has Attachments","pendingDelivery":"Pending Delivery","corrections":"Corrections"},"yes":"Yes","no":"No","sheetName":"Invoices","pdf":{"docType":"Invoice Export","selectedCount":"{count} selected","subject":"Selected invoice export","selection":"Selection","invoices":"Invoices","generated":"Generated","tableTitle":"Selected invoices","empty":"No invoices selected.","columns":{"invoice":"Invoice","patient":"Patient","status":"Status","total":"Total","due":"Due","billingDate":"Billing Date"}}},"listViewAwaitingPrescription":"Awaiting prescription","rxOverMatch":"Match the prescription","rxMissingPackageTitle":"{count, plural, one {# package item needs} other {# package items need}} a signed prescription before the dose is given","rxMissingPackageHint":"The package can be sold now. The medicine is handed over or given only against the patient's signed prescription.","rxFix":{"link":"Link prescription","request":"Ask the doctor","external":"Outside prescription","linkTitle":"Link a signed prescription","linkDescription":"One prescription covers one sale. Pick the patient's prescription that covers the medicines on this sale.","linkEmpty":"No free signed prescription for this patient","linked":"Prescription linked to the sale","linkFailed":"Couldn't link the prescription","requestTitle":"Ask the doctor for a prescription","requestDescription":"The doctor gets a task and a notification. When they sign, the prescription is linked to this sale by itself.","requestFor":"Needed for: {medicines}","doctorLabel":"Doctor","doctorPlaceholder":"Pick the doctor","doctorRequired":"Pick the doctor to ask","noteLabel":"Note for the doctor","notePlaceholder":"e.g. The patient is waiting at reception","requestConfirm":"Send to doctor","requested":"{name} has been asked. The prescription links to the sale when signed.","requestFailed":"Couldn't send the request","externalTitle":"Record an outside prescription","externalDescription":"A prescription the patient brought from another clinic or hospital. It is valid for 30 days from its date.","prescriberLabel":"Prescribing doctor","prescriberPlaceholder":"e.g. Dr. Sara Ahmed","prescriberRequired":"Enter the doctor's name","licenseLabel":"Doctor's licence number","licensePlaceholder":"e.g. DHA-P-0012345","licenseRequired":"Enter the licence number","facilityLabel":"Clinic or hospital","trackingLabel":"External tracking code","trackingPlaceholder":"e.g. 4471-2209","trackingHelper":"Optional. Recorded as written, not checked with any system","facilityPlaceholder":"e.g. City Hospital","issuedLabel":"Prescription date","issuedHelper":"The date written on the prescription","issuedRequired":"Enter the prescription date","drugLabel":"Medicine","drugPlaceholder":"Search medicine","drugRequired":"Pick the medicine","quantityLabel":"Packs","addDrug":"Add medicine","documentHelper":"Photo or scan of the prescription (image or PDF, up to 10 MB)","documentRequired":"Attach the prescription","documentTooLarge":"The file is larger than 10 MB","externalConfirm":"Save prescription","externalSaved":"Prescription saved. Add the medicine to the sale from the prescription bar.","externalLinked":"Prescription saved and linked to the sale","externalSavedNotLinked":"Prescription saved, but it could not be linked to this sale","externalFailed":"Couldn't save the prescription","sectionTitle":"Prescription","linkedLabel":"Signed prescription","externalCaption":"An outside doctor's prescription. Open the scan the patient brought.","externalLabel":"Outside prescription","validUntilLabel":"Valid until","expiredHint":"Expired: no longer valid for a new sale","pdfCaption":"Opens the signed prescription. Print or save it from the PDF viewer.","missingTitle":"No signed prescription on this sale","missingWarnHint":"The sale is saved. Link the prescription, ask the doctor, or record an outside one.","missingBlockHint":"The medicine can't be handed over or given until a signed prescription is linked.","issuedTooOld":"Older than 30 days. An outside prescription is valid for 30 days.","documentLabel":"Prescription scan *","quantityRange":"Enter a whole number from 1 to 99","textTooLong":"Use at most {max} characters","linkedPrescriberLabel":"Prescribed by","linkedIssuedLabel":"Issued","cancelledTitle":"{number} was cancelled by the doctor","cancelledBody":"Cancelled on {date}. Reason: {reason}. Nothing more is handed over against it: link a new prescription, ask the doctor, or record an outside one.","controlledLabel":"Controlled medicine","controlledValue":"Always needs a valid signed prescription","missingControlledTitle":"Controlled medicine without a prescription"},"rxMissingHintAskOnly":"Ask the doctor from here."},"SectionBooking":{"groupByResource":"Group by Resource","groupByStaff":"Group by Staff","calendarGroupBy":"Calendar group by","refresh":"Refresh","columnsTooltip":"Show or hide columns","columnsTitle":"Columns","showAllColumns":"Show all","noColumnsAvailable":"No columns available","groupByResourceAria":"Group by resource","groupByStaffAria":"Group by staff","filterAppointments":"Filter Appointments","resources":"Resources","status":"Status","anyResource":"Any resource","noBookingAvailable":"No booking available","patientBookingDescription":"The patient's booking will be displayed here","addNewBooking":"Add New Booking","calendarView":"Calendar View","calendarViewDescription":"Manage your bookings and appointments","today":"Today","all":"All","filters":"Filters","moveWholeVisitTitle":"Move whole visit?","moveWholeVisitDescription":"Every session of this visit will shift by the same amount, keeping the encounter together. Operators and services on each session stay as-is.","moveWholeVisitAction":"Move whole visit","noStaffAvailable":"No staff available","noRoomAvailable":"No room available","untitledSession":"Untitled Session","unavailableNotBookable":"Not bookable","technicalIssue":"Technical issue","toastSuccess":"Success","visitMoved":"Visit moved","visitUpdated":"Visit updated","noRoomDescription":"No bookable rooms in this branch yet. An admin adds them in Settings → Resources.","noStaffDescription":"No bookable staff in this branch yet. An admin marks staff as bookable in their profile.","calendarRefreshFailed":"Couldn't refresh the calendar. You may be looking at older bookings.","previousDay":"Previous day","nextDay":"Next day","customerId":"ID {id}","offGridTitle":"{count, plural, one {# session is not on the grid} other {# sessions are not on the grid}}","offGridDescription":"They have no room, a room that isn't shown, or a time outside the calendar hours.","offGridShow":"Show","offGridListLabel":"Sessions not on the grid","offGridNoRoom":"No room","offGridNoStaff":"No staff assigned","offGridRoomNotShown":"Room not shown on the calendar","offGridStaffNotShown":"Staff not shown on the calendar","offGridOutsideHours":"Outside the calendar hours","emptyDayDescription":"Nothing is booked on this day yet.","todayWithDate":"Today · {date}","goToDate":"Go to {date}","goToToday":"Go to today","encounterMoveFallback":"This session is the main session of a multi-session visit. Moving it would orphan the other sessions in the visit.","sessionLocked":"This session is closed. Only managers can change it.","visitSessions":"{count, plural, one {Visit · # session} other {Visit · # sessions}}"},"SectionPatients":{"heldStockView":{"title":"Held for this patient","emptyTitle":"Nothing held for this patient","emptyHint":"When a patient buys something the clinic keeps for them (a pen drawn down over several sessions), the remaining balance appears here.","closed":"Closed","entity":"Held stock","patient":"Patient","handOver":"Hand over","remaining":"{remaining} of {total} {unit} left","units":"units","boughtOn":"Bought on invoice {number}","status":{"open":"Open","exhausted":"Fully used","handed_over":"Handed over","expired":"Expired","reversed":"Reversed"},"source":{"session":"Session","handover":"Handed to the patient","expiry":"Written off at expiry"},"dialogTitle":"Hand the remainder to the patient","dialogDescription":"{remaining} {unit} of {product} leaves the clinic with the patient. This closes the balance and posts no journal entry, because the cost was already recorded when the invoice was paid.","cancel":"Cancel","why":"Why","whyPlaceholder":"e.g. Patient is travelling and took the pen home","handedOver":"Remaining balance handed to the patient"},"patient":"Patient","patientCaption":"Essential information to get started.","personal":"Personal","personalCaption":"Name, gender and demographics.","contact":"Contact","contactCaption":"Phone, email and language.","documents":"Documents","documentsCaption":"Identity, nationality, ID and passport.","background":"Background","backgroundCaption":"Religion and profession.","servicesAndTags":"Services & Tags","address":"Address","firstName":"First name","lastName":"Last name","gender":"Gender","adsSource":"Ads source","selectAdsSource":"Select ads source","mobileNumber":"Mobile number","email":"Email","preferredLanguages":"Preferred Languages","note":"Note","enterNoteHere":"Enter note here","identity":"Identity","selectIdentity":"Select Identity","nationality":"Nationality","chooseNationality":"Choose a nationality","emiratesId":"Emirates ID","enterEmiratesId":"Enter Emirates ID","duplicateNationalId":"This {idLabel} already belongs to {name} (#{id}). Open that patient instead of creating a second record.","passportNumber":"Passport Number","enterPassportNumber":"Enter passport number","religion":"Religion","selectReligion":"Select Religion","profession":"Profession","selectProfession":"Select profession","serviceTag":"Service Tag","selectServiceTag":"Select service tag","birthDate":"Birth date","maritalStatus":"Marital Status","unidentifiedPatient":"Unidentified Patient","privateDataFromCache":"Private data retrieved from cache!","privateDataRetrieved":"Private data retrieved successfully!","failedToggleVisibility":"Failed to toggle visibility","sessionType":"Session Type","selectPatient":"Select Patient","staff":"Staff","room":"Room","service":"Service","startTime":"Start Time","endTime":"End Time","duration":"Duration","date":"Date","price":"Price","status":"Status","searchByName":"Search by name","branch":"Branch","stage":"Stage","assignedTo":"Assigned To","active":"Active","inactive":"Inactive","all":"All","apply":"Apply","reset":"Reset","filters":"Filters","filterPatients":"Filter Patients","filterPatientsTooltip":"Filter patients","photo":{"title":"Profile picture","selectFromDevice":"Choose a picture from your device","completion":"Profile completion","fileHint":"JPG, PNG or WEBP · max 2 MB · square images look best"},"cardReader":{"readCard":"Read Emirates ID card","title":"Emirates ID card","importAction":"Import","selectAll":"Select all","loadingTitle":"Reading the card…","loadingDescription":"Keep the card in the reader.","noCardTitle":"No card in the reader","noCardDescription":"Insert the Emirates ID card into the reader, then try again.","errorTitle":"Card reader software isn't responding","errorDescription":"Start the card reader app on this computer, or contact support."},"listSearchPlaceholder":"Search by name, MRN or phone…","dateJoined":"Date Joined","lastBooking":"Last Booking","history":"History","from":"From","to":"To","genderFilter":"Gender","selectGender":"Select gender","city":"City","selectCity":"Select city","selectStage":"Select stage","level":"Level","selectLevel":"Select level","adsSourceFilter":"Ads Source","ageRange":"Age Range","totalPurchase":"Total Purchase","walletBalance":"Wallet Balance","clubPoints":"Club Points","appointment":"Appointment","appointmentCaption":"Patient, doctor, service and resource.","doctor":"Doctor","resource":"Resource","selectPatientFirstPackages":"Select a patient first to see their active packages","package":"Package","patientCategory":"Patient Category","tag":"Tag","schedule":"Schedule","scheduleCaption":"Date, time and length of the visit.","bookingDate":"Booking Date","startTimeReq":"Start Time *","endTimeReq":"End Time *","link":"Link","enterLink":"Enter link","noteSection":"Note","enterAdminNote":"Enter admin note here","clinical":"Clinical","clinicalCaption":"Admission details and insurance.","admissionType":"Admission Type","admitSource":"Admit Source","patientClass":"Patient Class","selectPatientFirstInsurance":"Select a patient first to see their insurance","insurance":"Insurance","generalInfo":"General info","generalInfoCaption":"Patient and appointment essentials","selectPatientClass":"Select Patient Class","phoneNumber":"Phone number","time":"Time","tags":"Tags","selectBranch":"Select branch","selectResource":"Select Resource","enterNote":"Enter note","bookingDetails":"Booking details","bookingDetailsCaption":"Provider, service, and billing","selectDoctor":"Select Doctor","selectAdmissionType":"Select Admission Type","selectAdmitSource":"Select Admit Source","selectInsurance":"Select Insurance","selectServiceOpt":"Select service","selectPackage":"Select Package","selectPatientCategory":"Select Patient Category","currentSessionStatus":"Current session status","actions":"Actions","actionsCaption":"Quick access to patient docs","medicalRecord":"Medical Record","viewPatientRecords":"View patient records","telehealth":"Telehealth","meetingLink":"Meeting link","homeCare":"Home Care","visitAddress":"Visit address","enterFirstName":"Enter first name","enterLastName":"Enter last name","enterMobileNumber":"Enter mobile number","enterEmailAddress":"Enter email address","dateOfBirth":"Date of Birth","avatarDeletedSuccess":"Avatar deleted successfully","avatarDeleteFailed":"Failed to delete avatar","profileUpdatedSuccess":"Profile updated successfully","profileUpdateFailed":"Failed to update profile","patientUpdateFailed":"Failed to update patient","createSuccess":"Created successfully","mergeFailed":"Failed to merge patients","mergeAccessDeniedTitle":"Merge patient is restricted","mergeAccessDeniedDescription":"Only Owner and System Administrator roles can merge patient records by default. Ask your workspace admin to grant the patient.merge action to your role.","close":"Close","patientInfoUpdatedSuccess":"Patient information updated successfully","patientInfoUpdateFailed":"Failed to update patient information","replySent":"Reply sent","emiratesIdUploaded":"Emirates ID uploaded successfully","emiratesIdUploadFailed":"Failed to upload Emirates ID","serverConnectionFailed":"Could not connect to the server","updateSuccess":"Updated successfully","fillRequiredFields":"Please fill in all required fields","switchedToAlternativePackage":"Switched to alternative package","referralCodeCopied":"Referral code copied","referralCopyFailed":"Copy failed, please copy manually","branchSelectRequired":"Please select a branch before sending consent","contractCreateFailed":"Failed to create contract","entityNamePatient":"Patient","entityNameAppointment":"Appointment","entityNamePointsHistory":"Points history","entityNameWalletHistory":"Wallet history","entityNameReferrals":"Referrals","hieReady":"DHA ready","hieMissing":"{count, plural, one {DHA: # item missing} other {DHA: # items missing}}","bookingInfoTitle":"Booking Info","bookingDiscard":"Discard","bookingSaveChanges":"Save Changes","bookingViewOnlyTooltip":"You don’t have permission to edit this booking. Showing details in read-only mode.","bookingEntityName":"Booking","newAppointmentTitle":"New Appointment","appointmentSubmit":"Submit","sessionTypeConsultation":"Consultation","sessionTypeService":"Service","sessionTypeTelemedicine":"Telemedicine","sessionTypeHomeVisit":"Home Visit","bookingsEmptyTitle":"No bookings yet","bookingsEmptyDescription":"This patient’s bookings will show here.","bookingsNoMatchTitle":"No bookings match these filters","patientNotFound":"This patient was not found. It may have been removed.","profileUpdate":"Update","patientsTitle":"Patients","invoicesNoMatchTitle":"No invoices match these filters","invoicesEmptyTitle":"No sales yet","invoicesEmptyDescription":"This patient's invoices will show here.","paymentsNoMatchTitle":"No payments match these filters","paymentsEmptyTitle":"No payments yet","paymentsEmptyDescription":"This patient's payments will show here.","paymentsEntityName":"Payments","listNoMatchDescription":"Change or clear the filters to see more.","chipDate":"Date: {value}","chipStatus":"Status: {count}","chipBranches":"Branches: {count}","chipDoctors":"Doctors: {count}","chipSellers":"Sellers: {count}","chipMethod":"Method: {value}","bookingTable":{"colService":"Service","colDate":"Date","colTime":"Time","colStatus":"Status","colBranch":"Branch","colOperator":"Operator","colContract":"Contract","colBookingType":"Booking type","colType":"Type","contractSigned":"Signed","contractNone":"None","medicalRecord":"Medical record","viewDetails":"View details","changeLog":"Change log","changeLogTitle":"Booking change log","noTime":"No time","visitSessions":"{count, plural, one {Visit · # session} other {Visit · # sessions}}","colVisit":"Visit","sessionsCount":"{count, plural, one {# session} other {# sessions}}"},"bookingFilters":{"title":"Filter bookings","dateRange":"Date range","from":"From","to":"To","branch":"Branch","anyBranch":"Any branch","operator":"Operator","anyOperator":"Any operator","service":"Service","anyService":"Any service","status":"Status","creditSource":"Credit source","any":"Any","withCredit":"With credit","withoutCredit":"Without credit","invoice":"Invoice #","invoicePlaceholder":"e.g. 1042","creditSession":"Session credit #","creditSessionPlaceholder":"e.g. 17","invoiceRef":"Invoice #{id}","creditRef":"Credit #{id}"},"invoicesSearchPlaceholder":"Search invoices...","paymentsSearchPlaceholder":"Search payments...","bookingsSearchPlaceholder":"Search bookings...","filtersLabel":"Filters:","invoicesFilterTitle":"Filter invoices","paymentsFilterTitle":"Filter payments","patientsLoadMoreFailed":"Couldn't load more patients.","patientsNoMatchTitle":"No patients match","patientsEmptyTitle":"No patients yet","patientsEmptyDescription":"Add the first patient with the + button.","editPatientTitle":"Edit patient","addPatientTitle":"Add new patient","updatePatientSubmit":"Update patient","addPatientSubmit":"Add patient","detail":{"entityPlural":"Patients","patientActions":"Patient actions","editProfile":"Edit profile","mrnValue":"MRN: {mrn}","openFullProfile":"Open full profile","mrn":"MRN","personalInformation":"Personal information","identityDocuments":"Identity & documents","additionalInformation":"Additional information","referralCode":"Referral code","preferredLanguage":"Preferred language","nationalIdFront":"National ID front","nationalIdBack":"National ID back","tabs":{"generalInfo":"General info","sessionCredits":"Session credits","booking":"Booking","billing":"Billing"}},"enums":{"gender":{"m":"Male","f":"Female"},"identity":{"o":"Resident","t":"Tourist","v":"VIP"},"maritalStatus":{"single":"Single","married":"Married","divorced":"Divorced","unknown":"Unknown"}},"selectPreferredLanguage":"Select a language","overviewPanel":{"title":"Overview","totalSales":"Total Sales","services":"Services","noShow":"No Show","points":"Points","manualTag":"Manual Tag","referred":"Referred","systemTag":"System Tag","policyContract":"Policy Contract","sign":"Sign","signed":"Signed","consents":"Consents","consentCount":"{count, plural, one {# consent} other {# consents}}","customerClub":"Customer Club","customerClubHint":"Wallet · Points · Referrals","membership":"Membership","manageMembership":"Manage membership","wallet":"Wallet","levelNumber":"Level {number}","bronze":"Bronze","silver":"Silver","gold":"Gold","unlockAttribution":"Verified ad attribution. Unlock to override","tags":"Tags"},"portalTabs":{"generalInfo":"General info","booking":"Booking","sales":"Sales","payments":"Payments","statement":"Statement","sessionCredits":"Session credits","heldStock":"Held stock","leads":"Leads","prescriptions":"Prescriptions"},"loadingPatient":"Loading patient","openPatientList":"Open patient list","notificationHistory":{"selectDate":"Select date"},"merge":{"destinationPatient":"Destination patient","searchPlaceholder":"Search by name, MRN or phone…","swapPatients":"Swap source and destination","warning":"The <strong>source</strong> patient will be merged into the <strong>destination</strong>. All records transfer to the destination and the source is soft-deleted. This cannot be undone.","mergePatients":"Merge patients","source":"Source","destination":"Destination","noPatientSelected":"No patient selected","patientId":"ID: {id}","currentPatient":"Current patient","pickFromField":"Pick from the field above"},"sidebar":{"addEmployee":"Add employee","employees":"Employees","peopleCount":"{count, plural, one {# person} other {# people}}"},"newTag":"New tag","dialogs":{"ok":"OK","settlementRequests":"Settlement requests","commentsNote":"Comments / Note"},"consents":{"title":"Consents","cancelConsent":"Cancel consent","stepSelectType":"Select type","stepSelectService":"Select service","stepSelectTablet":"Select tablet","selectTypeTitle":"Select consent type","selectTypeDescription":"Choose the consent type to continue","consent":"Consent","typeService":"Service","typeGeneral":"General","deliveryTitle":"Contract delivery options","deliveryDescription":"Please choose the appropriate delivery method for this contract","deliveryNewTab":"New tab","selectServiceTitle":"Select service","selectServiceDescription":"Select the service for consent creation","noServicesTitle":"No services available","noServicesDescription":"This patient has no services available for consent creation.","signed":"Signed","unsigned":"Unsigned","selectTabletTitle":"Select tablet","selectTabletDescription":"Choose a tablet to send the consent","noTabletsTitle":"No tablets available","noTabletsDescription":"No tablets are available for consent delivery in this branch.","deviceNotReady":"This tablet is offline. Make sure it is turned on and logged in to the kiosk, then try again.","successTitle":"Consent sent successfully","successDescription":"The consent has been sent to {recipient}. Below are the details","successType":"Type","successTablet":"Tablet","successRecipient":"Recipient","successDate":"Date","successService":"Service","tabletNumber":"Tablet {id}","sessionNumber":"Session #{id}","notAvailable":"N/A","unknownName":"Unknown name","addConsent":"Add consent","consentCount":"{count, plural, one {# consent} other {# consents}}","emptyTitle":"No consents found","emptyDescription":"There are no consent forms for this patient yet.","tabAll":"All","tabPolicy":"Policy","tabService":"Service","filter":"Filter","filterTitle":"Filter consents","resetFilter":"Reset filter","detailsTitle":"Consent details","selectContract":"Select a consent","detailId":"ID","signedDate":"Signed date","signedTime":"Signed time","serviceConsent":"Service consent","download":"Download","time":"Time","freeTabletTitle":"Free tablet {number}?","freeTabletDescription":"This tablet is holding a contract that has not been signed yet. Freeing it closes that contract and sends the tablet back to its home screen, so you can send this one.","freeTabletConfirm":"Free tablet","tabletFreed":"The tablet is free. You can send the contract now.","freeTabletFailed":"The tablet could not be freed. Please try again.","tabletStatus":{"available":"Ready","busy":"In use","offline":"Offline"},"freeTabletHint":"Tap to free it"},"patientDocuments":{"fileName":"File name","print":"Print","copyId":"Copy ID","id":"ID","weight":"Weight","noFileSelected":"No file selected.","download":"Download","document":"Document","selectTypeTitle":"Select document type","selectTypeDescription":"Choose the document type to continue","submitTitle":"Submit document","submitDescription":"Review the document details, and if everything looks correct, submit.","patientAvatar":"Patient avatar","patientId":"Patient ID: #{id}","patient":"Patient","attachments":"Attachments","documentType":"Document type","searchId":"Search ID","selectType":"Select type","addDocument":"Add new document","documentCount":"{count, plural, one {# document} other {# documents}}","filteredCount":"{filtered} of {count, plural, one {# document} other {# documents}}","loadFailed":"Failed to load documents"},"moreDetails":"More details","moreDetailsCaption":"Optional: marital status, language, religion, profession and tags.","sessionForm":{"patientFileIncomplete":"The patient file is missing what DHA needs for check-in","openPatientFile":"Open patient file","earliestTime":"Earliest is {time}","latestTime":"Latest is {time}","stepBack":"−{minutes} min","stepForward":"+{minutes} min","editPatient":"Edit patient","packageLeft":"{count} left","packageInvoice":"Inv #{number}","packageDifferentService":"different service","startTime":"Start","endTime":"End","confirmPatientChange":"Confirm change","openPatientDetails":"Open patient details","editPatientDetails":"Edit patient details","changePatient":"Change patient","unknownPatient":"Unknown patient","mrn":"MRN: {mrn}","duration":"Duration","durationPreset":"{count} min","durationCustom":"Custom duration","endAfterStart":"End time must be after the start time.","outsideBranchHours":"Outside the branch's opening hours ({open}-{close}). The session can still be saved.","serviceDefaultDuration":"Service length: {duration}","showPhone":"Show number","hidePhone":"Hide number","patientAndClinical":"Patient & clinical","patientAndClinicalCaption":"Contact, admission and insurance.","cancelReason":"Reason","cancelReasonPlaceholder":"Why was the visit cancelled or missed?","cancelReasonNote":"Describe the reason","cancelReasonNotePlaceholder":"What happened?","cancelReasons":{"patient_schedule":"Patient's schedule","patient_sick":"Patient unwell","price":"Price","went_elsewhere":"Went to another clinic","no_answer":"No answer / did not come","clinic_cancelled":"Cancelled by the clinic","doctor_unavailable":"Doctor unavailable","duplicate":"Duplicate booking","weather_travel":"Weather or travel","not_recorded":"Not recorded (closed by the system)","other":"Other","schedule_change":"Schedule change","weather_condition":"Weather condition","unexpected_work":"Unexpected work","childcare_issue":"Childcare issue","travel_delay":"Travel delay","sickness":"Sickness"},"newSale":"New sale"},"sessionLocked":{"title":"Session closed","description":"This session is closed. Only managers can change it.","statusOnly":"This visit is from a past day. You can still mark it Done or Missed; any other change needs a manager.","discharged":"This visit has been discharged and is locked.","labelsHint":"Tags can still be changed."},"leadsTab":{"emptyTitle":"No leads yet","emptyDescription":"This patient has no leads linked to them.","quickLook":"Open lead"},"insuranceDeleted":"Insurance deleted","contractsFilter":{"searchId":"Search ID"},"customerClubView":{"member":"Customer Club member","tabs":{"wallet":"Wallet","points":"Points","referrals":"Referrals"},"filterAll":"All","filterLabel":"Show","tabsLabel":"Customer Club sections","tiers":{"bronze":"Bronze","silver":"Silver","gold":"Gold"},"wallet":{"balance":"Current balance","history":"Wallet history","types":{"cashback":"Cashback","referral":"Referral reward","gift":"Gift","purchase":"Used on a purchase","refunded":"Refund","correction":"Correction"},"expiresToday":"Expires today","expiresIn":"Expires in {days, plural, one {# day} other {# days}}","emptyTitle":"No wallet activity yet","emptyDescription":"Cashback, gifts, referral rewards and purchases will show here."},"points":{"balance":"Current points","history":"Points history","earned":"Earned","redeemed":"Redeemed","fallback":"Points transaction","emptyTitle":"No points yet","emptyDescription":"Points earned and redeemed will show here."},"referrals":{"title":"Referrals","totalEarned":"Total earned rewards","converted":"Service taken","pending":"Pending","unknownName":"Unknown","emptyTitle":"No referrals yet","emptyDescription":"Share the referral code to start earning rewards."},"ladder":{"title":"Progress to {tier}","caption":"Meeting any one goal moves the member up.","points":"Points","referrals":"Referrals","sessions":"Sessions"},"share":{"codeLabel":"Referral code","copy":"Copy code","whatsapp":"Share on WhatsApp","sms":"Share by SMS","more":"More ways to share","title":"Join the club","yourFriend":"your friend","message":"Join our clinic's loyalty club with {who}'s referral code {code} and get a welcome reward!"}},"visitActions":{"serviceConsent":"Service consent","policyContract":"Policy contract","emiratesId":"Emirates ID","signed":"Signed","notSigned":"Not signed","uploaded":"Uploaded","notUploaded":"Not uploaded","sendToSign":"Send to sign","sendAgain":"Send again","upload":"Upload","signedHistoryHint":"Open to see signed versions"},"neededForCheckIn":"Needed for check-in","showMobileNumber":"Show mobile number","showEmail":"Show email","tableFilters":{"dateRange":"Date range","from":"From","to":"To","status":"Status","statusPlaceholder":"Select status","branch":"Branch","branchPlaceholder":"Select branch","gpDoctor":"GP doctor","doctor":"Doctor","doctorPlaceholder":"Select doctor","seller":"Seller","sellerPlaceholder":"Select seller","stage":"Stage","stagePlaceholder":"Select stage","assignedTo":"Assigned to","assignedToPlaceholder":"Select operator","source":"Source","sourcePlaceholder":"Select source","paymentMethod":"Payment method","allMethods":"All methods"},"prescriptionsView":{"patient":"Patient","entity":"Prescriptions","current":"Valid prescriptions","past":"Expired and cancelled","emptyTitle":"No valid prescription","emptyHint":"Signed prescriptions and the outside ones recorded at reception show here. The doctor prescribes in the medical record.","trackingCode":"Tracking code: {code}","outsideBy":"{name} ({facility}), outside","signedOn":"Signed {date}","validUntil":"Valid until {date}","cancelledOn":"Cancelled {date}: {reason}","soldOn":"Sold on {invoice}","notSold":"Not sold yet","status":{"valid":"Valid","expired":"Expired","cancelled":"Cancelled"}},"familyPhone":{"title":"Uses {name}'s phone number","description":"This person gets their own file. Reminders and messages go to {name}'s number.","relation":"Relation to {name}","useOwnNumber":"Use own number","relations":{"spouse":"Spouse","child":"Child","mother":"Mother","father":"Father","other":"Other"}},"contractAlreadySigned":"This patient has already signed this contract. Nothing was sent to the tablet.","addPatientTooltip":"Add Patient"},"TextFieldVariantsDemo":{"label":"Label","placeholderText":"Placeholder text","withValue":"With value","helloWorld":"Hello World","errorState":"Error state","invalidInput":"Invalid input","errorHelper":"This field has an error","disabled":"Disabled","cantEdit":"Can't edit this","glassmorphismTitle":"Glassmorphism on gradient background","email":"Email","emailPlaceholder":"you@example.com","password":"Password","enterPassword":"Enter password","search":"Search","searchAnything":"Search anything...","stackedTitle":"Stacked variant - Label above input","fullName":"Full Name","fullNamePlaceholder":"John Doe","emailAddress":"Email Address","emailAddressPlaceholder":"john@example.com","city":"City","cityPlaceholder":"New York","zipCode":"Zip Code","zipPlaceholder":"10001","notes":"Notes","notesPlaceholder":"Any additional notes...","sizeComparison":"Size comparison","sizeLabel":"size: \"{size}\"","placeholder":"Placeholder","withAdornments":"With adornments","searchPlaceholder":"Search...","default":"Default","typeSomething":"Type something...","error":"Error","invalid":"Invalid","disabledValue":"Disabled value","withIcon":"With icon","multiline":"Multiline","multilinePlaceholder":"Write something longer..."},"SectionInventory":{"lineCalc":{"subtotal":"Subtotal","discount":"Discount","tax":"Tax ({rate}%)","taxIncluded":"Tax ({rate}% · included)","lineTotal":"Line total","taxRule":"Tax","headerTaxRule":"Header tax rule"},"voidRecordTitle":"Void stock record","voidRecordDescription":"This posts an equal-and-opposite manual adjustment to reverse this record. On-hand quantity from receipts, transfers or consumption is preserved.","voidRecordReasonLabel":"Reason for voiding","voidRecordReasonPlaceholder":"Explain why this stock record is being voided (min 10 characters)","voidRecordConfirm":"Void record","voidRecordCancel":"Cancel","voidRecordSuccess":"Stock record voided","voidRecordError":"Failed to void stock record","settingsUpdated":"Inventory settings updated","settingsExpiryAlertDaysPerWarehouse":"Expiry alert lead time is set on each warehouse (Warehouses → Expiry Alert Lead Time).","ibtCreated":"Inter-branch transfer created successfully","ibtCreateFailed":"Failed to create inter-branch transfer","sourceBranchRequired":"Please select a source branch","destinationBranchRequired":"Please select a destination branch","branchesMustDiffer":"Source and destination branches must be different","addAtLeastOneProduct":"Please add at least one product to transfer","allItemsNeedValidQty":"All items must have a valid quantity greater than 0","allItemsNeedUom":"Select a unit of measure for every product","transferDispatched":"Transfer dispatched","transferCancelled":"Transfer cancelled","transferApproved":"Transfer approved","transferApproveFailed":"Failed to approve transfer","transferReceived":"Transfer received successfully","receiptConfirmFailed":"Failed to confirm receipt","transferCreated":"Transfer created successfully","transferCreateFailed":"Failed to create transfer","transferApprovedSuccess":"Transfer approved successfully","transferCancelTitle":"Cancel transfer {number}?","transferCancelConfirm":"Cancel transfer","transferCancelKeep":"Keep transfer","transferCancelReason":"Reason for cancelling","transferCancelReasonPlaceholder":"Why is this transfer being cancelled?","transferCancelReasonHelper":"At least {min} characters, kept on the transfer for the audit trail.","transferCancelLoading":"Cancelling the transfer…","transferCancelFailed":"Could not cancel the transfer","transferReceiveFailed":"Failed to receive transfer","transferReceiveTitle":"Receive transfer {number}?","transferReceiveDescription":"Every remaining item will be added to {location}. To receive part of it, use the Scan tab instead.","transferReceiveConfirm":"Receive all","transferReceiveMenu":"Receive Goods","vendorBillCreated":"Vendor bill created","vendorBillCreateFailed":"Failed to create vendor bill","supplierRequired":"Please select a supplier","returnCustomerRequired":"Please select a customer","addAtLeastOneProductPO":"Please add at least one product","allItemsNeedValidQtyPO":"All items must have a valid quantity greater than 0","addAtLeastOneLineItem":"Add at least one line item","warehouseRequired":"Please select a warehouse","destinationLocationRequired":"Please select a destination location","grnConfirmed":"GRN confirmed. Stock has been updated.","grnConfirmFailed":"Cannot confirm GRN without line items","grnConvertedToBill":"Vendor bill created from GRN","grnResetToDraft":"Reset to Draft","grnResetToDraftSuccess":"GRN reset to draft. Edit and re-confirm it","grnStatusUpdated":"GRN status updated","poResetToDraftSuccess":"Purchase order reset to draft. Edit and re-approve it","grnScanCaption":"One scan = +1 received for the matching product. The Received Items tab shows the canonical server quantities (read-only).","stockRecordCreated":"Stock record created successfully","stockRecordUpdated":"Stock record adjusted successfully","stockRecordCreateFailed":"Failed to create stock record","productRequired":"Please select a product","locationRequired":"Please select a location","validQtyRequired":"Please enter a valid quantity","reasonRequired":"Please select a reason","lotNumber":"Lot number","noLot":"No lot","lotNumberHelp":"Pick a lot this product already has, or type a new batch number (e.g. printed on the box). Leave empty for stock without a lot.","selectLocationForQty":"Select a location to adjust. Current stock of this product:","noStockForProduct":"This product has no stock yet.","lotExpiryDate":"Expiry date","lotExpiryHelp":"Saved on the lot. Drives expiry alerts and first-expiry-first-out picking.","lotExpiryNoBatchHelp":"No batch number? Just pick the date — a lot named after it (EXP-date) is used.","lotExpiryDatesUndatedHelp":"This date goes on the {qty} here that has no lot — same stock, now dated.","lotExpiryLockedHelp":"This lot's expiry date. A different date needs a new lot number.","unitCost":"Unit cost","unitCostHelp":"Cost of ONE unit in the product's unit of measure. Pre-filled from this product's latest stock cost, or its Purchase Cost; check it before saving.","unitCostRequired":"Enter the unit cost: it sets the value of this new stock in the books.","journalEntriesTab":"Journal Entries","noStockJournalEntries":"No journal entries for this stock yet. Manual adjustments, stock counts and goods receipts post here. Cost of goods sold is posted from the invoice.","typeNewBatch":"Type the batch number from the box","entryUnitHelp":"Count and price in this unit. Stock is kept in {unit}.","entryUnitQtyEquals":"= {qty} {unit} in stock","entryUnitCostEquals":"{cost} per {unit}","accountingDate":"Accounting date","accountingDateHelp":"The day this adjustment is booked in the accounts. It can't be in the future or in a locked period.","accountingDateRequired":"Pick the accounting date for this adjustment","accountingDateFuture":"The accounting date cannot be in the future","unitCostPer":"Unit cost (per {unit})","warehouse":"Warehouse","selectWarehouse":"Select warehouse","unitOfMeasure":"Unit of measure","unitOfMeasureHelp":"The unit this product is stocked in. Quantities and unit cost below are in this unit.","noActiveBranch":"No active branch selected","selectSourceBranch":"Select a source branch","selectDestinationBranch":"Select a destination branch","selectSourceWarehouse":"Select a source warehouse","selectSourceLocation":"Select a source location","selectDestinationWarehouse":"Select a destination warehouse","selectDestinationLocation":"Select a destination location","locationsMustDiffer":"Source and destination locations must be different","addAtLeastOneProductTransfer":"Add at least one product to transfer","allItemsNeedQtyTransfer":"All items must have a quantity greater than 0","uomRequired":"Select a unit of measure for each item","alertAcknowledged":"Alert acknowledged successfully","alertAcknowledgeFailed":"Failed to acknowledge alert","branchNotSelectedOrder":"Unable to create order: Branch not selected","branchNotSelected":"Branch not selected","stocktakeStarted":"Stocktake started","stocktakeCreateFailed":"Failed to create stocktake","stocktakeSaveCountFailed":"Failed to save count data","stocktakeSavedDraft":"Stocktake saved as draft","stocktakeSaveDraftFailed":"Failed to save draft","stocktakeCompleted":"Stocktake completed successfully","stocktakeCompleteFailed":"Failed to complete stocktake","stocktakeCancelled":"Stocktake cancelled","stocktakeCancelFailed":"Failed to cancel stocktake","stockTakePosted":"Stock take posted, stock adjustments created","stockTakePostFailed":"Failed to post stock take","stockTakeStarted":"Stock take started","stockTakeStartFailed":"Failed to start stock take","stockTakeSubmittedReview":"Submitted for review","stockTakeSubmitReviewFailed":"Failed to submit for review","stockTakeDeleted":"Stock take deleted","stockTakeDeleteFailed":"Failed to delete stock take","stockTakeReopenAction":"Reopen (revert to draft)","stockTakeReverseAction":"Reverse posting (void)","stockTakePostTitle":"Post stock take?","stockTakePostDescription":"The counted quantities are applied to stock. All of this count's stock movements and journal entries are booked on the accounting date.","stockTakePostDateHelp":"The day this count is booked on. It can't be in the future or in a locked period.","stockTakePostDateRequired":"Pick the accounting date for this count","stockTakePostOnDate":"This count is booked on {date}. To change the date, edit the stock take.","confirmPost":"Post Count","stockTakeReopenTitle":"Reopen stock take?","stockTakeReopenDescription":"This reverses the stock adjustments and accounting entries this count posted, then returns it to Draft so you can correct the counted items and post it again.","stockTakeReverseTitle":"Reverse (void) stock take?","stockTakeReverseDescription":"This reverses the stock adjustments and accounting entries this count posted and marks it Reversed. Use this when the count was posted by mistake and should not be re-posted.","stockTakeReopened":"Stock take reopened. You can correct and post it again","stockTakeReopenFailed":"Failed to reopen stock take","stockTakeReversed":"Stock take reversed","stockTakeReverseFailed":"Failed to reverse stock take","reverseReasonLabel":"Reason","reverseReasonPlaceholder":"Why is this posted count being undone? (recorded in history)","reverseReasonRequired":"A reason is required","confirmReopen":"Reopen","confirmReverse":"Reverse","selectBranchBeforeSave":"Select a branch before saving the stock take","stockTakeFinalised":"This stock take is already finalised and cannot be edited. Create a new count instead.","stockTakeUpdated":"Stock take updated successfully","stockTakeCreated":"Stock take created successfully","productAlreadyAdded":"Product already added","returnOrderCreated":"Return order created successfully","returnOrderUpdated":"Return order updated successfully","returnSaveFailed":"Failed to save return order","inspectionCompleted":"Inspection completed","inspectionCompleteFailed":"Failed to complete inspection","returnProcessed":"Return processed successfully","returnProcessFailed":"Failed to process return","returnCancelled":"Return order cancelled","returnCancelFailed":"Failed to cancel return","entityNameIBT":"Inter-Branch Transfer","entityNameStockRecord":"Stock Record","entityNameReturnOrder":"Return Order","alertDisposed":"Expired stock disposed and alert resolved","alertDisposeFailed":"Failed to dispose expired stock","disposeExpiredStock":"Dispose Expired Stock","disposeExpiredStockConfirm":"Write off the remaining expired stock of {product}? Stock will be decremented and a disposal entry posted to accounting.","disposeConfirmAction":"Dispose","expiryAlerts":{"detail":{"entityPlural":"Expiry alerts","alertActions":"Expiry alert actions","unknownProduct":"Unknown Product","expired":"Expired","daysLeft":"{count, plural, one {# day left} other {# days left}}","daysShort":"{count}d","pending":"Pending","acknowledged":"Acknowledged","done":"Done","acknowledgeAlert":"Acknowledge Alert","createTransfer":"Create Transfer","createReturnOrder":"Create Return Order","addDiscount":"Add Discount","untilExpiry":"Until Expiry","qtyAtRisk":"Quantity at Risk","status":"Status","productDetails":"Product Details","product":"Product","expiryDate":"Expiry Date","lotLocation":"Lot & Location","lotBatch":"Lot / Batch","warehouse":"Warehouse","location":"Location","alertStatus":"Alert Status","acknowledgedOn":"Acknowledged On","acknowledgedBy":"Acknowledged By","quickActions":"Quick Actions","acknowledgeHint":"Acknowledging confirms you are aware of this expiring product","suggestedActions":"Suggested Actions","suggestDiscount":"Create Discount Promotion","suggestDiscountDescription":"Offer discount to sell before expiry","suggestTransfer":"Transfer to Another Branch","suggestTransferDescription":"Move stock where needed","suggestReturn":"Create Return Order","suggestReturnDescription":"Return to supplier if possible","actionHistory":"Action History","noActionsYet":"No actions recorded yet","historyCreated":"Alert Created","historyCreatedDescription":"Expiry alert was generated","historyAcknowledged":"Acknowledged","historyAcknowledgedDescription":"Alert was acknowledged by user","tabs":{"productInfo":"Product Info","actions":"Actions"}},"list":{"description":"Stock approaching its expiry date. Open an alert to acknowledge it or act on it.","searchPlaceholder":"Search product or lot","lot":"Lot","emptyTitle":"Nothing is about to expire","emptyDescription":"Stock nearing its expiry date shows up here."}},"grn":{"detail":{"entityPlural":"Goods Receipts","entitySingular":"Goods Receipt Note","grnActions":"Goods receipt actions","tabs":{"basicDetails":"Basic Details","scan":"Scan","receivedItems":"Received Items","history":"History"},"grnInformation":"GRN Information","grnNumber":"GRN Number","grnId":"GRN ID","receiptDate":"Receipt Date","status":"Status","vendorBillId":"Vendor Bill ID","totalLineItems":"Total Line Items","locationUserInformation":"Location & User Information","warehouse":"Warehouse","destinationLocation":"Destination Location","sourceLocation":"Source Location","receivedBy":"Received By","timestampsNotes":"Timestamps & Notes","createdAt":"Created At","updatedAt":"Updated At","notes":"Notes","receivedItemsTitle":"Received Items ({count})","unknownProduct":"Unknown Product","noItemsReceived":"No items received","batchLot":"Batch / Lot","tax":"Tax","taxReference":"Tax (reference)","totalNet":"Total (net)","expectedVat":"Expected VAT","expectedTotal":"Expected Total (incl. VAT)","scanToReceive":"Scan to Receive","scanPlaceholder":"Scan barcode to receive product…","productFallback":"Product","scanReceivedQty":"{product}: received {qty}","scanReceivedOne":"Received: {product}","scanLocked":{"loading":"Loading…","confirmed":"This GRN is confirmed and locked. Scanning is no longer possible.","cancelled":"This GRN was cancelled. Scanning is disabled."}},"workflow":{"confirmAndUpdateStock":"Confirm & update stock","confirmPrompt":"This will update stock levels. Continue?","cancelGrn":"Cancel GRN"},"list":{"searchPlaceholder":"Search GRNs…","rowActions":{"print":"Print","printAria":"Print GRN","view":"View","viewAria":"View GRN"},"description":"Receive and verify incoming inventory from suppliers and purchase orders.","newGrn":"New GRN","emptyTitle":"No goods receipts yet","emptyDescription":"Create a GRN to record incoming inventory.","columns":{"grn":"GRN","status":"Status","destination":"Destination","purchaseOrder":"Purchase Order","lines":"Lines","receiptDate":"Receipt Date","created":"Created","attachments":"Attachments"},"filters":{"title":"Filter Goods Receipts","status":"Status","dateRange":"Date range","from":"From","to":"To"}},"form":{"poNoOptions":"No purchase orders found. You can receive without one","purchaseOrder":"Purchase Order","purchaseOrderHelp":"Optional. Link this receipt to a purchase order to auto-fill the warehouse and items.","poUnavailable":"Purchase orders are not available on this account","poPlaceholder":"Select a purchase order (optional)","warehouseRequiredLabel":"Warehouse *","warehousePlaceholder":"Select warehouse","destinationRequiredLabel":"Destination Location *","destinationPlaceholder":"Select destination","selectWarehouseFirst":"Select a warehouse first","receiptDate":"Receipt Date","notes":"Notes","notesPlaceholder":"Additional notes or instructions for this receipt…","linesEmptyHint":"Search and add products to this receipt","ordered":"Ordered: {qty}","previouslyReceived":"Previously received: {qty}","tax":"Tax: {tax}","warehouse":"Warehouse","destinationLocation":"Destination Location","sourceLocation":"Source Location","notSet":"Not set","receiptInformation":"Receipt Information","lineItemsCount":"Line Items ({count})","productRef":"Product #{id}","lineReceived":"Received: {qty}","lineOrdered":" / Ordered: {qty}","lineRejected":" · Rejected: {qty}","linePrice":" · Price: {price}","lineExpiry":" · Exp: {date}","qtyChip":"Qty {qty}","noLines":"No line items added. You can add them after creating the GRN","summary":"Summary","totalItems":"Total Items","steps":{"receipt":"Receipt Details","receiptDescription":"Select warehouse, location, and receipt date","lines":"Line Items","linesDescription":"Add products with received quantities and prices","review":"Review","reviewDescription":"Confirm all details before saving"},"submitUpdate":"Update GRN","submitCreate":"Create GRN","validation":{"branchRequired":"Branch is required","warehouseRequired":"Warehouse is required","destinationRequired":"Destination location is required"},"warehouseSection":"Warehouse & location"}},"locations":{"detail":{"entityPlural":"Locations","locationActions":"Location actions","details":"Details","name":"Location Name","code":"Code","fullName":"Full Name","warehouse":"Warehouse","type":"Type","parentLocation":"Parent Location","status":"Status","coldStorage":"Cold Storage","coldStorageFridge":"Cold Storage / Fridge","minTemperature":"Min Temperature","maxTemperature":"Max Temperature","temperatureValue":"{value} °C","operations":"Operations","removalStrategy":"Removal Strategy","noStockRecords":"No stock records","noStockMatch":"No products match your search.","noStockYet":"This location has no stock yet.","lotLabel":"Lot: {lot}","expiryLabel":"Exp: {date}","onHand":"On hand:","tabs":{"details":"Details","operations":"Operations","currentStocks":"Current Stocks","history":"History"}},"list":{"searchPlaceholder":"Search location...","putawaySearchPlaceholder":"Search putaway rules","productsSearchPlaceholder":"Search products","filters":{"title":"Filter Locations","warehouse":"Warehouse","anyWarehouse":"Any warehouse","type":"Type","status":"Status","active":"Active","inactive":"Inactive","typeRef":"Type #{id}"},"description":"Organize storage areas within your warehouses.","emptyTitle":"No locations yet","emptyDescription":"Add your first location to get started.","columns":{"location":"Location","code":"Code","warehouse":"Warehouse","type":"Type","status":"Status","active":"Active","inactive":"Inactive"}},"form":{"help":{"name":"Human-readable label for the bin / rack / aisle. Printed on pick lists and move receipts (e.g. \"Aisle A1, Shelf 3\").","code":"Short code printed on labels and barcodes (e.g. A1-S3). Must be unique inside the warehouse.","warehouse":"The parent warehouse this location belongs to. Stock at this location rolls up to the warehouse for reporting and replenishment.","location_type":"Classifies how the location behaves: internal storage, supplier dock, customer delivery, scrap, etc. Drives the default move flows and which transactions are allowed.","parent_location":"Optional parent for nested locations (e.g. a shelf inside an aisle). Used to build the full-name path (\"Main Warehouse / Aisle A1 / Shelf 3\") shown on lists and pick tickets.","removal_strategy":"How the system picks stock from this location when fulfilling moves. Leave empty to inherit the parent warehouse’s default strategy. Only set a value here to override it for this specific location. FEFO (First Expiry First Out) is the medical standard; FIFO suits non-perishable stock; LIFO is rarely used in clinics.","is_fridge":"Mark this location as a refrigerator or cold-storage unit. Enables temperature range configuration to help staff identify items that require controlled-temperature storage.","temperature_min":"Minimum acceptable temperature in degrees Celsius (e.g. 2 for a standard vaccine fridge). Used for compliance labelling and cold-chain audit reports.","temperature_max":"Maximum acceptable temperature in degrees Celsius (e.g. 8 for a standard vaccine fridge). Must be greater than the minimum temperature."},"typeDescriptions":{"internal_location":"Physical storage inside the warehouse (aisles, racks, shelves, bins). Counted as on-hand stock.","view":"Grouping / folder node used purely for hierarchy. Holds no stock directly; child locations do.","customer_location":"Virtual destination representing stock that has left the clinic to a patient or customer. Drives sales / dispense flows.","vendor_location":"Virtual source representing a vendor. Incoming receipts (GRN) move stock from a vendor location into an internal one.","transit_location":"In-transit location used during inter-warehouse transfers while stock is on the move between sites.","scrap":"Destination for damaged, expired, or written-off stock before disposal. Removes items from sellable on-hand inventory.","quarantine":"Holds incoming or returned stock pending inspection. Outbound moves are blocked until the items are cleared.","custom":"Custom location type defined for your organization."},"typeRef":"Type #{id}","fields":{"locationType":"Location Type","loadingTypes":"Loading location types…","locationTypePlaceholder":"Select location type","name":"Location Name","code":"Code","warehouse":"Warehouse","warehousePlaceholder":"Select warehouse","parentLocation":"Parent Location","parentLocationPlaceholder":"Select parent location (optional)","temperatureMin":"Min Temperature (°C)","temperatureMax":"Max Temperature (°C)","removalStrategy":"Removal Strategy","removalStrategyPlaceholder":"Inherit warehouse default","isFridge":"Cold Storage / Fridge"},"sections":{"basics":"Basics","basicsCaption":"Identify the location, attach it to a warehouse, classify it, and optionally nest it under a parent.","operations":"Operations","operationsCaption":"Removal strategy and cold-storage settings."},"optionsAria":"Location options","submitAdd":"Add Location","submitUpdate":"Update Location","validation":{"nameRequired":"Location name is required","nameMax":"Location name must be 200 characters or less","codeRequired":"Code is required","codeMax":"Code must be 50 characters or less","warehouseRequired":"Warehouse is required"}}},"logUsage":{"detail":{"entityPlural":"Consumption logs","consumptionRecord":"Consumption Record","material":"Material","product":"Product","quantity":"Quantity","lotBatch":"Lot / Batch","notes":"Notes","sourceSection":"Source","source":"Source","invoice":"Invoice","sessionId":"Session ID","service":"Service","patient":"Patient","auditTrail":"Audit Trail","performedBy":"Performed By","witnessedBy":"Witnessed By","occurredAt":"Occurred At","createdAt":"Created At","branchId":"Branch ID","tabs":{"details":"Details","audit":"Audit"}},"enums":{"source":{"session":"Session","invoice":"Invoice","manual":"Manual","patient_stock":"Patient stock"}},"list":{"searchPlaceholder":"Search by product…","filters":{"chipSession":"Session #{id}","chipSource":"Source: {value}","chipStock":"Stock: {value}","date":"Date","product":"Product","performedBy":"Performed by","branch":"Branch","source":{"session":"Session","invoice":"Invoice","manual":"Manual"},"sourceDescription":{"session":"Consumed while delivering a booking.","invoice":"Consumed against a sold invoice line.","manual":"Logged by hand, outside a session or sale."},"stockImpact":{"deferred":"Stock not reduced","applied":"Stock reduced"},"stockImpactDescription":{"deferred":"Usage recorded but stock never decremented, so on-hand is overstated.","applied":"Usage recorded and stock decremented normally."},"title":"Filter Usage Log","dateRange":"Date Range","sourceTitle":"Source","stockImpactTitle":"Stock Impact","anyProduct":"Any product","performedByTitle":"Performed By","anyone":"Anyone","anyBranch":"Any branch"},"columns":{"product":"Product","qty":"Qty","source":"Source","performedBy":"Performed By","witnessedBy":"Witnessed By","date":"Date"},"title":"Consumption Logs","emptyTitle":"No consumption logs yet","emptyDescription":"No materials have been consumed matching the current filters."}},"productCategories":{"detail":{"entityPlural":"Product categories","categoryActions":"Product category actions","basics":"Basics","name":"Category Name","fullTitle":"Full Title","parentCategory":"Parent Category","branchScope":"Branch Scope","allBranches":"All branches","operations":"Operations","forceRemovalStrategy":"Force Removal Strategy","accounting":"Accounting","inventoryAccount":"Inventory Account","cogsAccount":"COGS Account","adjustmentAccount":"Adjustment Account","noCategorySelected":"No category selected","productsInCategory":"Products in this Category","tabs":{"basics":"Basics","operations":"Operations","accounting":"Accounting","products":"Products","history":"History"}},"list":{"searchPlaceholder":"Search category...","productsSearchPlaceholder":"Search products...","filters":{"title":"Filter Product Categories","parent":"Parent Category","anyParent":"Any parent","removalStrategy":"Force Removal Strategy","anyStrategy":"Any strategy"},"description":"Group products for easier filtering and reporting.","emptyTitle":"No product categories yet","emptyDescription":"Add your first product category to get started.","columns":{"categoryName":"Category Name","id":"ID","stockHistory":"Stock History","usedInStock":"Used in stock","noStockYet":"No stock yet"}},"form":{"sections":{"basics":"Basics","basicsCaption":"Set the category name and optionally place it under a parent so your catalog stays easy to scan.","operations":"Operations","operationsCaption":"Default picking behavior for products in this category (e.g. consume nearest-expiry stock first).","accounting":"Accounting","accountingCaption":"Default ledger accounts used for inventory valuation, COGS, and stock adjustments. A warehouse-level account, when set, takes precedence over the category account."},"fields":{"name":"Category Name","parent":"Parent Category","optional":"Optional","removalStrategy":"Force Removal Strategy","removalStrategyPlaceholder":"Select a strategy","removalStrategyHelper":"Choose how stock should be consumed by default when the warehouse can decide automatically.","costMethod":"Costing Method","costMethodPlaceholder":"Select a method","costMethodHelper":"How stock consumption is costed (COGS): standard price, average cost, FIFO, or the actual lot price. Locked once stock history exists for this category.","costMethodLocked":"Costing method is locked because stock movements exist for this category.","inventoryAccount":"Inventory Account","selectAccount":"Select an account","inventoryAccountHelper":"Asset account that carries the on-hand inventory value for this category.","cogsAccount":"COGS Account","cogsAccountHelper":"Expense account used when stock is recognized as cost of goods sold.","adjustmentAccount":"Adjustment Account","adjustmentAccountHelper":"Offset account used for inventory adjustments, corrections, or recount differences."},"optionsAria":"Category options","submitAdd":"Add Product Category","submitUpdate":"Update Product Category","validation":{"nameRequired":"Category name is required","nameMax":"Category name must be 255 characters or less"}}},"purchaseOrders":{"review":{"orderInformation":"Order information","status":"Status","supplier":"Supplier","warehouse":"Delivery warehouse","expectedArrival":"Expected arrival","vendorReference":"Vendor reference","items":"Order items","noItems":"No items added yet","productFallback":"Product #{id}","qty":"Qty {qty}","summary":"Order summary","totalItems":"Products","totalQuantity":"Total quantity","untaxedAmount":"Untaxed amount","vat":"VAT","vatWithRate":"VAT ({rate}%)","totalAmount":"Total amount","notes":"Notes"},"detail":{"entityPlural":"Purchase Orders","entitySingular":"Purchase Order","purchaseOrderActions":"Purchase order actions","entityPayment":"Payment","actions":{"receiveGoods":"Receive Goods","convertToVendorBill":"Convert to Vendor Bill","resetToDraft":"Reset to Draft","recordPayment":"Record Payment"},"tabs":{"basicDetails":"Basic Details","orderLines":"Order Lines","delivery":"Delivery","financial":"Financial","receipts":"Receipts","bills":"Bills","payments":"Payments","history":"History"},"orderInformation":"Order Information","supplierInformation":"Supplier Information","reference":"Reference","status":"Status","created":"Created","expectedArrival":"Expected Arrival","sourceDocument":"Source Document","fiscalPosition":"Fiscal Position","supplier":"Supplier","vendorReference":"Vendor Reference","buyer":"Buyer","confirmedBy":"Confirmed By","deliveryInformation":"Delivery Information","trackingSummary":"Tracking Summary","deliveryWarehouse":"Delivery Warehouse","actualArrival":"Actual Arrival","receiptStatus":"Receipt Status","totalItems":"Total Items","totalQuantity":"Total Quantity","received":"Received","pending":"Pending","fulfillment":"Fulfillment","orderSummary":"Order Summary","paymentInformation":"Payment Information","itemBreakdown":"Item Breakdown","subtotalExclVat":"Subtotal (excl. VAT)","vat":"VAT","vatPercent":"VAT %","totalAmount":"Total Amount","currency":"Currency","paymentTerms":"Payment Terms","billingStatus":"Billing Status","totalLineItems":"Total Line Items","totalUnits":"Total Units","receivedUnits":"Received Units","pendingUnits":"Pending Units","orderItemsTitle":"Order Items ({count})","noProductsInOrder":"No products in this order","receivedOfOrdered":"{received} / {ordered} units","unitsRemaining":"{count} units remaining","lineFulfillment":"Line Fulfillment","noLinesToTrack":"No lines to track.","orderedReceived":"Ordered <ordered></ordered> · Received <received></received>","qtyPending":"<qty></qty> pending","lineReceived":"Received","goodsReceipts":"Goods Receipts","noGoodsReceipts":"No goods receipts linked to this order yet.","noGoodsReceiptsCanReceive":"Start by receiving goods for this order.","noGoodsReceiptsHint":"Receive Goods from the options menu once the order is confirmed.","noDate":"No date","lineCount":"{count, plural, one {# line} other {# lines}}","vendorBills":"Vendor Bills","noVendorBills":"No vendor bills linked to this order yet.","noVendorBillsHint":"Convert this purchase order to a vendor bill to start tracking payments.","addPayment":"Add Payment","pay":"Pay","dueOn":"Due {date}","paid":"Paid","outstanding":"Outstanding","noPaymentsRecorded":"No payments recorded yet.","noPaymentsHint":"Convert this PO to a vendor bill first to start recording payments.","paymentHistory":"Payment history","recordPaymentTooltip":"Record a payment against one of this PO's bills","paymentSummary":"Payment Summary","purchaseOrderTotal":"Purchase Order total","billed":"Billed","outstandingBilledUnpaid":"Outstanding (billed, unpaid)","unbilledBalance":"Unbilled balance","noPaymentsForBill":"No payments recorded for this bill.","edit":"Edit","delete":"Delete","recordingPayment":"Recording payment…","updatingBillStatus":"Updating bill status…","paymentRecorded":"Payment recorded","bill":"Bill","noBillsToPay":"No bills available to pay.","creatingGoodsReceipt":"Creating goods receipt…","updatingStock":"Updating stock…","goodsReceiptCreated":"Goods Receipt Created","nextReceiptDetails":"Next: Receipt Details","back":"Back","createReceipt":"Create Receipt","stepLineItems":"Line items","stepReceiptDetails":"Receipt details","grnTarget":"Goods receipt","openGrn":"Open goods receipt","summaryWarehouse":"Warehouse","summaryLocation":"Location","summaryReceiveValue":"Value at PO price (excl. VAT)"},"enums":{"billingStatus":{"not_billed":"Not Billed","partially_billed":"Partially Billed","fully_billed":"Fully Billed"},"receiptStatus":{"not_received":"Not Received","partially_received":"Partially Received","fully_received":"Fully Received","closed":"Closed"}},"workflow":{"confirmOrder":"Confirm order","confirmOrderPrompt":"Confirm this purchase order?","closeOrder":"Close order","closeOrderPrompt":"Close this order without full receipt?","reopenAsDraft":"Reopen as draft","reopenAsDraftPrompt":"Reopen this cancelled order as a draft?","cancelOrder":"Cancel order"},"form":{"supplier":"Supplier","supplierPlaceholder":"Select supplier","deliveryWarehouse":"Delivery Warehouse","warehousePlaceholder":"Select warehouse","expectedArrival":"Expected Arrival","tax":"Tax","taxPlaceholder":"Select tax rule","orderDetails":"Order Details","vendorReference":"Vendor Reference","vendorReferenceHelper":"Supplier's own reference number for this order","notes":"Notes","notesPlaceholder":"Additional notes or instructions for this order…","orderItems":"Order Items","itemsEmptyHint":"Search and add products to this order","steps":{"basic":"Basic Information","basicDescription":"Select supplier, delivery warehouse, and reference details","items":"Order Items","itemsDescription":"Search and add products with quantities and prices","review":"Review","reviewDescription":"Confirm all order details before submission"},"receiveGoods":"Receive Goods","actionsAria":"Purchase Order actions","submitUpdate":"Update Purchase Order","submitCreate":"Create Purchase Order","validation":{"productRequired":"Product is required","quantityMin":"Quantity must be at least 1","pricePositive":"Price must be positive","supplierRequired":"Supplier is required"}},"rowActions":{"print":"Print","printAria":"Print purchase order","view":"View","viewAria":"View purchase order","actions":"Actions"},"list":{"description":"Create and manage purchase orders to suppliers for inventory replenishment.","newPurchaseOrder":"New Purchase Order","emptyTitle":"No purchase orders yet","emptyDescription":"Create your first purchase order to get started.","columns":{"order":"Order","supplier":"Supplier","status":"Status","created":"Created","expected":"Expected","total":"Total","attachments":"Attachments"},"filters":{"title":"Filter Purchase Orders","status":"Status","dateRange":"Date range","from":"From","to":"To"}}},"returns":{"detail":{"entityPlural":"Return orders","returnActions":"Return actions","returnFallbackTitle":"Return order","tabs":{"basicDetails":"Basic Details","items":"Items","status":"Status","history":"History"},"returnInformation":"Return Information","returnId":"Return ID","returnReason":"Return Reason","createdDate":"Created Date","totalValue":"Total Value","warehouseSection":"Warehouse","warehouse":"Warehouse","creatorInformation":"Creator Information","createdBy":"Created By","notes":"Notes","returnItems":"Return Items","noItems":"No items in this return order.","unknownProduct":"Unknown product","qty":"Qty","restocked":"Restocked","scrapped":"Scrapped","value":"Value","inspectionNotes":"Inspection Notes","currentStatus":"Current Status","status":"Status","approvalWorkflow":"Approval Workflow","noWorkflowActivity":"No workflow activity recorded yet","timeline":{"created":{"title":"Created","description":"Return order was created"},"inspected":{"title":"Inspected","description":"Items were inspected"},"processed":{"title":"Processed","description":"Return was processed"}},"inspectionDetails":"Inspection Details","inspectedAt":"Inspected At","inspectedBy":"Inspected By","processingDetails":"Processing Details","processedAt":"Processed At"},"enums":{"reason":{"DEFECTIVE":"Defective/Damaged","EXPIRED":"Expired","WRONG_ITEM":"Wrong Item Shipped","QUALITY_ISSUE":"Quality Issue","OVERSTOCK":"Overstock","RECALL":"Product Recall","OTHER":"Other"},"inspectionResult":{"RESTOCK":"Restock (good condition)","SCRAP":"Scrap (unusable)","RETURN_TO_VENDOR":"Return to vendor","REWORK":"Requires rework"},"returnType":{"VENDOR_RETURN":"Return to Vendor","CUSTOMER_RETURN":"Return from Customer"}},"list":{"searchPlaceholder":"Search returns...","filters":{"title":"Filter Returns","status":"Status","reason":"Reason","dateRange":"Date Range","from":"From","to":"To"},"description":"Return defective or excess inventory to suppliers and track RMA requests.","newReturn":"New Return","emptyTitle":"No return orders yet","emptyDescription":"Create a return order to send defective or excess inventory back to your supplier.","columns":{"return":"Return","status":"Status","reason":"Reason","type":"Type","lines":"Lines","created":"Created"},"title":"Supplier Returns"},"form":{"supplierWarehouse":"Supplier & Warehouse","customerWarehouse":"Customer & Warehouse","warehousePlaceholder":"Select warehouse","supplierPlaceholder":"Select supplier","customerPlaceholder":"Select customer","returnDetails":"Return Details","returnTypePlaceholder":"Select type","returnReasonPlaceholder":"Select reason","reasonDetail":"Reason Detail","reasonDetailPlaceholder":"Describe why the items are being returned...","notes":"Notes","notesPlaceholder":"Additional notes for this return...","steps":{"basic":"Basic Information","basicDescription":"Select warehouse, supplier, and return reason","items":"Return Items","itemsDescription":"Add products being returned with quantities and details","review":"Review","reviewDescription":"Confirm all return details before submission"},"submitUpdate":"Update Return Order","submitCreate":"Create Return Order","review":{"missingUom":"{count, plural, one {# item is} other {# items are}} missing a unit of measure. Go back to the Return Items step and select one for each highlighted product before submitting.","productRef":"Product #{id}","qty":"Qty {qty}","uomRequired":"Unit of measure required","totalItems":"Products","totalValue":"Total value","noItems":"No items added","notes":"Notes","returnInformation":"Return information","items":"Return items","summary":"Return summary","totalQuantity":"Total quantity"},"validation":{"productRequired":"Product is required","quantityMin":"Quantity must be at least 1","uomRequired":"Unit of measure is required","warehouseRequired":"Warehouse is required","returnReasonRequired":"Return reason is required","itemsMin":"At least one product is required","supplierRequired":"Supplier is required","customerRequired":"Customer is required"},"warehouse":"Warehouse","supplier":"Supplier","customer":"Customer","returnType":"Return type","returnReason":"Return reason","itemsEmptyHint":"Search and add the products being returned"},"options":{"completeInspection":"Complete Inspection","process":"Process Return","cancel":"Cancel Return"},"rowActions":{"print":"Print","printAria":"Print return","view":"View","viewAria":"View return"}},"stockRecords":{"detail":{"entityPlural":"Stock records","stockRecordActions":"Stock record actions","voidAction":"Void Stock Record","voided":"Voided","adjustment":"Adjustment","productInformation":"Product Information","productName":"Product Name","productReference":"Product Reference","location":"Location","warehouse":"Warehouse","lotSerialInformation":"Lot & Serial Information","lotCode":"Lot Code","serialCode":"Serial Code","adjustmentInformation":"Adjustment Information","reason":"Reason","accountingDate":"Accounting Date","supplyPrice":"Supply Price","vendor":"Vendor","currentStock":"Current Stock","qtyOnHand":"Quantity on Hand","qtyReserved":"Quantity Reserved","qtyAvailable":"Quantity Available","adjustmentDetails":"Adjustment Details","newQty":"New Quantity","qtyDiff":"Quantity Difference","creationInformation":"Creation Information","createdBy":"Created By","createdAt":"Created At","updateInformation":"Update Information","updatedBy":"Updated By","updatedAt":"Updated At","additionalInformation":"Additional Information","notes":"Notes","history":{"empty":"No stock movement recorded yet","balanceAfter":"Balance after","reference":"Reference","note":"Note","by":"By","from":"From {location}","to":"To {location}","openingGap":"The quantity changed by {qty} with no movement recorded behind it, before the events below.","unlocated":"{count} usage events in this branch are not listed: the product is stocked in more than one location here, and usage is recorded per branch, not per location. The Stock Ledger report shows them.","kinds":{"RECEIPT":"Goods received","RETURN_IN":"Returned in","RETURN_OUT":"Returned to vendor","ADJUSTMENT_IN":"Adjustment in","ADJUSTMENT_OUT":"Adjustment out","DISPOSAL":"Disposed","DELIVERY":"Delivered","INTERNAL_TRANSFER":"Internal transfer","INTER_BRANCH_IN":"Transfer from another branch","INTER_BRANCH_OUT":"Transfer to another branch","CONSUMPTION_SESSION":"Used in a session","CONSUMPTION_INVOICE":"Sold on an invoice","CONSUMPTION_MANUAL":"Used (manual)","other":"Stock movement"}},"tabs":{"basicDetails":"Basic Details","quantities":"Quantities","auditTrail":"Audit Trail","history":"History"}},"list":{"searchPlaceholder":"Search by product, location, lot...","filters":{"title":"Filter Stock Records","dateRange":"Date Range","from":"From","to":"To","quantityRange":"Quantity Range","quantityHint":"Filter by quantity on hand","min":"Min","max":"Max"},"description":"Monitor current stock levels across all warehouses and locations.","adjustStock":"Adjust Stock","emptyTitle":"No stock records yet","emptyDescription":"Adjust stock to create your first record.","columns":{"product":"Product","location":"Location","qtyAvailable":"Qty Available","qtyReserved":"Qty Reserved","qtyOnHand":"Qty On Hand","updated":"Updated","lastMovement":"Last movement"},"title":"Stock Records"},"mobile":{"outOfStock":"Out of stock","hasReservations":"Has reservations","inStock":"In stock","productRef":"Product #{id}","lot":"Lot","location":"Location","available":"Available","onHand":"On hand","reserved":"Reserved"}},"stockTakes":{"detail":{"entityPlural":"Stock takes","stockTakeActions":"Stock take actions","countFallbackTitle":"Count #{id}","stockTakeFallbackTitle":"Stock Take","tabs":{"basicDetails":"Basic Details","scan":"Scan","countedItems":"Counted Items","discrepancies":"Discrepancies","history":"History"},"generalInformation":"General Information","stockTakeName":"Stock Take Name","reference":"Reference #","status":"Status","warehouse":"Warehouse","totalItems":"Total Items","timeline":"Timeline","created":"Created","started":"Started","completed":"Completed","accountingDate":"Accounting date","auditTrail":"Audit Trail","countedBy":"Counted by","receivedBy":"Confirmed / received by","notes":"Notes","noItemsCounted":"No items counted yet.","noItemsCountedHint":"Start counting products to see them here.","discrepancies":{"noneTitle":"No Discrepancies","noneDescription":"All counted items match expected quantities","linesWithVariance":"<strong>{count}</strong> lines with variance","shortage":"Shortage: <strong>{count}</strong>","excess":"Excess: <strong>{count}</strong>","unknownProduct":"Unknown product","sku":"SKU: {sku}","lot":"Lot: {lot}","expiry":"Exp: {date}","system":"System","counted":"Counted","variance":"Variance","reason":"Reason: {note}"},"scan":{"loading":"Loading…","lockedPosted":"This stocktake is posted and locked. Scanning is no longer possible.","lockedCancelled":"This stocktake was cancelled. Scanning is disabled.","productFallback":"Product","countedQty":"{product}: count {qty}","counted":"Counted: {product}","title":"Scan to Count","placeholder":"Scan barcode to count product…","caption":"One scan = +1 count for the matching product (auto-resolves location). Switch to the <strong>Counted Items</strong> tab to see the canonical server count and adjust quantities manually."},"summary":{"totalProducts":"Total Products","counted":"Counted","matched":"Matched","shortageLines":"Shortage Lines","excessLines":"Excess Lines","excluded":"Excluded","varianceSummary":"Variance Summary","netUnitVariance":"Net unit variance","shortageValue":"Shortage value","excessValue":"Excess value","netStockValue":"Net stock value","accuracy":"Accuracy","matchedOf":"{matched} of {total} items matched expected quantities"},"activity":{"created":"Created","started":"Started","completed":"Completed","createdDescription":"Stock take was created","startedDescription":"Counting started","completedDescription":"Stock take completed and posted","title":"Activity Log","unknownUser":"Unknown user","empty":"No activity recorded yet"}},"list":{"searchPlaceholder":"Search stock takes...","searchStockTakes":"Search Stock Takes...","searchByName":"Search by stocktake name...","productSearchPlaceholder":"Search name or barcode","description":"Conduct physical inventory counts and reconcile discrepancies with system records.","newCount":"New Count","emptyTitle":"No stock takes yet","emptyDescription":"Start a new physical count to reconcile your inventory.","columns":{"stockTake":"Stock Take","status":"Status","countedBy":"Counted By","items":"Items","started":"Started","accountingDate":"Accounting date","countRef":"Count #{id}"},"detailList":{"status":{"counted":"Counted","unmatched":"Unmatched","matched":"Matched","excluded":"Excluded","all":"All"},"summaryTitle":"Product list summary","columns":{"product":"Product","user":"User","expected":"Expected","actual":"Actual","difference":"Difference","value":"Value","actions":"Actions"},"drawer":{"basicInfo":"Basic Info","productBarcode":"Product barcode","brand":"Brand","productCategory":"Product category","supplier":"Supplier","amount":"Amount","shortDescription":"Short description","productDescription":"Product description","primarySku":"Primary SKU","stockOnHand":"Stock on Hand","retailPrice":"Retail Price","totalRetailValue":"Total Retail Value","supplyPrice":"Supply Price","totalSupplyValue":"Total Supply Value","averageCost":"Average Cost","totalCost":"Total Cost","stockInfo":"Stock Info","recentLogs":"Recent logs","date":"Date","navProductDetail":"Product detail","navStockOrders":"Stock Orders","navSales":"Sales","navStockHistory":"Stock History","inStock":"{qty} in stock","action":"Action"},"emptyTitle":"No items available","emptyDescription":"The stock take detail items will be displayed here","salesEmptyTitle":"No sales here yet","salesEmptyDescription":"Your sales will appear here","filterTitle":"Stock take filter","filterStatus":"Status","resetFilter":"Reset filter"},"title":"Stock Takes","filters":{"title":"Filter Stock Takes","status":"Status"}},"form":{"basics":"Stock Take Basics","basicsCaption":"Set where and why this count is happening. These values can be adjusted before posting.","warehouse":"Warehouse","warehousePlaceholder":"Select warehouse","responsibleStaff":"Responsible Staff","responsibleStaffPlaceholder":"Select staff member","countName":"Count Name","countNamePlaceholder":"e.g. Monthly Main Warehouse Count","countNameHelper":"Use a recognizable name so managers can find this count quickly.","notes":"Notes","notesPlaceholder":"Instructions for counters, scope details, or reconciliation notes","location":"Location","locationPlaceholder":"Select location","selectWarehouseFirst":"Select a warehouse first","countLines":"Count Lines","countLinesCaption":"Add products to count. You can also add items after creation from the detail view.","countLinesEmpty":"Search and add products to start counting","addProduct":"Add Product","notSelected":"Not selected","staffRef":"ID #{id}","untitled":"Untitled stock take","itemsCount":"{count, plural, one {# item} other {# items}}","review":"Review","itemsToCount":"Items to Count","itemRef":"Item #{number}","qty":"Qty: {quantity}","submitUpdate":"Update Stock Take","submitCreate":"Create Stock Take","steps":{"basicInfo":"Basic Info","basicInfoDescription":"Warehouse, owner, and naming details","countLines":"Count Lines","countLinesDescription":"Add products and counted quantities","review":"Review","reviewDescription":"Confirm before saving"}},"options":{"edit":"Edit Stock Take","post":"Post Count","start":"Start Counting","submitReview":"Submit for Review","cancel":"Cancel Stock Take","delete":"Delete Stock Take"}},"transfers":{"detail":{"entityPlural":"Transfers","transferActions":"Transfer actions","transferFallbackTitle":"Transfer","tabs":{"basicDetails":"Basic Details","scan":"Scan","items":"Items","status":"Status","history":"History"},"transferInformation":"Transfer Information","transferNumber":"Transfer #","status":"Status","created":"Created","notes":"Notes","source":"Source","destination":"Destination","warehouse":"Warehouse","location":"Location","createdBy":"Created By","requestedBy":"Requested By","noProducts":"No products in this transfer.","totals":"Totals","products":"Products","requested":"Requested","dispatched":"Dispatched","received":"Received","unknownProduct":"Unknown product","uomLabel":"UoM: {uom}","fulfilled":"Fulfilled","pending":"Pending","lot":"Lot","currentStatus":"Current Status","approvalWorkflow":"Approval Workflow","noWorkflowActivity":"No workflow activity recorded yet","unknownUser":"Unknown user","timeline":{"created":{"title":"Created","description":"Transfer request was created"},"approved":{"title":"Approved","description":"Transfer was approved"},"dispatched":{"title":"Dispatched","description":"Products were dispatched"},"received":{"title":"Received","description":"Products were received"},"cancelled":{"title":"Cancelled","description":"Transfer was cancelled"}},"scan":{"loading":"Loading…","lockedCompleted":"This transfer is fully received. Scanning is no longer possible.","lockedCancelled":"This transfer was cancelled. Scanning is disabled.","productFallback":"Product","dispatchRequested":"{product}: requested {qty}","dispatchAdded":"Added: {product}","receiveFull":"{product}: fully received ({qty} / {dispatched})","receivePartial":"{product}: received {qty} / {dispatched}","dispatch":{"title":"Scan to Dispatch","placeholder":"Scan barcode to add to transfer…","caption":"One scan = +1 requested for the matching product. When the line list is ready, click <strong>Dispatch</strong> on the Status tab to reduce source stock and mark the transfer as Sent."},"receive":{"title":"Scan to Receive","placeholder":"Scan barcode at destination warehouse…","caption":"One scan = +1 received for the matching product (clamped to dispatched qty). When all dispatched units are scanned, the transfer auto-transitions to <strong>Completed</strong>."}},"transferDate":"Transfer date","transferDateToday":"Day of dispatch"},"workflow":{"dispatch":"Dispatch transfer","cancel":"Cancel transfer"},"list":{"searchPlaceholder":"Search transfers…","description":"Move inventory between warehouses and branches.","newTransfer":"New Transfer","emptyTitle":"No transfers yet","emptyDescription":"Create your first transfer to move stock between locations.","columns":{"reference":"Reference","status":"Status","created":"Created","transferDate":"Transfer date"},"title":"Stock Transfers","filters":{"title":"Filter Transfers","status":"Status","transferType":"Transfer type","typeInternal":"Internal transfer","typeInterBranch":"Inter-branch transfer"}},"form":{"internal":"Internal Transfer","interBranch":"Inter-Branch Transfer","branchSelection":"Branch Selection","branchSelectionCaption":"Select source and destination branches.","sourceBranch":"Source Branch","sourceBranchPlaceholder":"Select source branch","destinationBranch":"Destination Branch","destinationBranchPlaceholder":"Select destination branch","source":"Source","sourceCaption":"Where the stock is coming from.","sourceWarehouse":"Source Warehouse","selectWarehouse":"Select warehouse","sourceLocation":"Source Location","selectLocation":"Select location","selectWarehouseFirst":"Select warehouse first","destination":"Destination","destinationCaption":"Where the stock is going to.","destinationWarehouse":"Destination Warehouse","destinationLocation":"Destination Location","notes":"Notes","notesOptional":"Notes (Optional)","notesPlaceholder":"Add any relevant notes…","items":"Transfer Items","itemsCaption":"Add products with quantities and units of measure.","itemsEmptyHint":"Search and add products to transfer","transferType":"Transfer Type","type":"Type","route":"Source → Destination","fromWarehouse":"From Warehouse","fromLocation":"From Location","toWarehouse":"To Warehouse","toLocation":"To Location","itemsCount":"Items ({count})","productRef":"Product #{id}","units":"units","steps":{"setup":"Setup","setupInternal":"Select source and destination warehouses within this branch","setupInterBranch":"Select source and destination warehouses across branches","items":"Items","itemsDescription":"Add products with quantities to transfer","review":"Review","reviewDescription":"Confirm transfer details before submitting"},"submitCreate":"Create Transfer","validation":{"productRequired":"Product is required","quantityPositive":"Quantity must be greater than 0","sourceBranchRequired":"Source branch is required","sourceWarehouseRequired":"Source warehouse is required","sourceLocationRequired":"Source location is required","destinationBranchRequired":"Destination branch is required","destinationWarehouseRequired":"Destination warehouse is required","destinationLocationRequired":"Destination location is required","itemsMin":"At least one item is required","transferDateFuture":"The transfer date cannot be in the future"},"transferDate":"Transfer date","transferDateCaption":"The day the dispatch is booked in the stock ledger and the accounts","transferDateHelp":"Leave empty to use the day it is dispatched. It cannot be in the future or in a locked period.","newHeading":"New Transfer","newInterBranchHeading":"New Inter-Branch Transfer","editHeading":"Edit Transfer {number}","cancel":"Cancel","creating":"Creating…","createTransfer":"Create Transfer","saving":"Saving…","saveChanges":"Save changes","notEditable":"Only draft transfers can be edited. To change a transfer that has been sent, cancel it (this reverses the dispatch) and create a new one."}},"uom":{"detail":{"entityPlural":"Units of measure","uomActions":"Unit of measure actions","generalInformation":"General Information","name":"Name","code":"Code","unitType":"Unit Type","ratio":"Ratio","roundingPrecision":"Rounding Precision","status":"Status","tabs":{"details":"Details","history":"History"}},"list":{"searchPlaceholder":"Search units…","filters":{"title":"Filter Units of Measure","status":"Status","active":"Active","activeDescription":"Units currently in use.","inactive":"Inactive","inactiveDescription":"Archived units hidden from pickers."},"description":"Define units of measure used across inventory and products.","emptyTitle":"No units of measure yet","emptyDescription":"Create units like kg, ml, or pcs to associate with your inventory items.","columns":{"name":"Name","type":"Type","ratio":"Ratio","status":"Status","active":"Active","inactive":"Inactive"}},"form":{"validation":{"nameRequired":"Name is required","codeMax":"Code must be 50 characters or less","mustBeNumber":"Must be a number","ratioPositive":"Ratio must be greater than 0","minZero":"Must be 0 or greater"}}},"warehouses":{"detail":{"entityPlural":"Warehouses","warehouseActions":"Warehouse actions","basics":"Basics","name":"Warehouse Name","status":"Status","code":"Code","branch":"Branch","manager":"Manager","type":"Type","slug":"Slug","staffRef":"Staff #{id}","locationContact":"Location & Contact","address":"Address","city":"City","phone":"Phone","email":"Email","timezone":"Timezone","storageColdChain":"Storage & Cold Chain","defaultStorageCondition":"Default Storage Condition","batchExpiryPolicy":"Batch & Expiry Policy","tracksBatches":"Tracks Batches","tracksExpiry":"Tracks Expiry","expiryAlertLeadTime":"Expiry Alert Lead Time","blockExpiredDispense":"Block Expired Dispense","pickStrategyAuto":"Pick Strategy (auto-derived)","capacityApprovals":"Capacity & Approvals","capacityUnit":"Capacity Unit","capacityValue":"Capacity Value","requireApprovalOnTransferOut":"Require Approval on Transfer Out","transferApprovalThreshold":"Transfer Approval Threshold","allowNegativeStock":"Allow Negative Stock","cycleCountFrequency":"Cycle Count Frequency","abcClassification":"ABC Classification","complianceSecurity":"Compliance & Security","holdsControlledSubstances":"Holds Controlled Substances","controlledClass":"Controlled Class","licenseNumber":"License Number","licenseExpiry":"License Expiry","restrictedAccess":"Restricted Access","allowedRoles":"Allowed Roles","defaultLocations":"Default Locations","locationRef":"Location #{id}","receivingLocation":"Receiving Location","quarantineLocation":"Quarantine Location","dispatchLocation":"Dispatch Location","damagedLocation":"Damaged / Scrap Location","accounting":"Accounting","costCenter":"Cost Center","costCenterRef":"Cost Center #{id}","costCenterOrgDefault":"Cost Center #{id} (org default)","inheritingFromSettings":"Inheriting from org-wide Inventory Settings","inherited":"Inherited","tabs":{"basics":"Basics","location":"Location & Contact","storage":"Storage","batch-expiry":"Batch & Expiry","capacity":"Capacity & Approvals","compliance":"Compliance","default-locations":"Default Locations","accounting":"Accounting","history":"History"}},"enums":{"warehouseType":{"main":"Main Store","pharmacy":"Pharmacy","controlled_substances":"Controlled Substances","consumables":"Consumables","equipment":"Equipment","cold_chain":"Cold Chain","quarantine":"Quarantine","scrap":"Scrap / Disposal"},"controlledClass":{"narcotic":"Narcotic","psychotropic":"Psychotropic","precursor":"Precursor"},"storageCondition":{"AMBIENT":"Ambient (15-25°C)","COOL":"Cool (8-15°C)","COLD":"Cold / Refrigerated (2-8°C)","FROZEN":"Frozen (≤ −15°C)","PROTECTED_FROM_LIGHT":"Protected From Light"},"pickStrategy":{"fefo":"FEFO: First Expiry First Out","fifo":"FIFO: First In First Out","lifo":"LIFO: Last In First Out","closest_location":"Closest Location","least_packages":"Least Packages"},"capacityUnit":{"none":"Not tracked","m3":"Cubic meters (m³)","pallets":"Pallets","shelves":"Shelves","items":"Items"},"cycleCountFrequency":{"none":"None","daily":"Daily","weekly":"Weekly","monthly":"Monthly","quarterly":"Quarterly","yearly":"Yearly"}},"list":{"searchPlaceholder":"Search warehouse...","description":"Manage storage facilities and their settings.","emptyTitle":"No warehouses yet","emptyDescription":"Add your first warehouse to get started.","columns":{"warehouse":"Warehouse","branch":"Branch","type":"Type","manager":"Manager","status":"Status"},"filters":{"title":"Filter Warehouses","branch":"Branch","anyBranch":"Any branch","status":"Status","active":"Active","inactive":"Inactive","activeDescription":"Warehouses currently in use.","inactiveDescription":"Archived warehouses hidden from pickers and reports."}},"form":{"sections":{"basics":"Basics","basicsCaption":"The minimum needed to create a warehouse. Everything else has sensible defaults.","location":"Location & Contact","locationCaption":"Where the warehouse lives and how to reach it.","storage":"Storage & Cold Chain","storageCaption":"Default storage conditions. Pre-filled with safe ambient defaults.","batchExpiry":"Batch & Expiry Policy","batchExpiryCaption":"Lot tracking and expiry handling. Defaults are pre-set by warehouse type.","capacity":"Capacity & Approvals","capacityCaption":"Capacity limits, approval thresholds, and counting cadence.","compliance":"Compliance & Security","complianceCaption":"Required for controlled substances and other regulated stock.","defaultLocations":"Default Locations","defaultLocationsCaption":"Bin locations used by GRN, transfers, and disposal flows.","accounting":"Accounting","accountingCaptionOn":"Per-warehouse cost center. GL accounts (inventory, COGS, adjustment) are set on the Product Category.","accountingCaptionOff":"Inheriting cost center from the org-wide Inventory Settings. Turn on to set a custom cost center for this warehouse."},"fields":{"name":"Warehouse Name","namePlaceholder":"e.g. Main Pharmacy","code":"Code","codePlaceholder":"e.g. MAIN-PHARMACY","type":"Type","typeHelper":"Drives compliance rules, default policies, and reports. Picking Pharmacy, Cold Chain, or Controlled Substances will pre-fill safe defaults for you.","typePlaceholder":"Select type","branch":"Branch","branchPlaceholder":"Select branch","manager":"Manager","managerPlaceholder":"Select manager","address":"Address","addressPlaceholder":"Street, building, etc.","city":"City","cityPlaceholder":"Select city","phone":"Phone","email":"Email","timezone":"Timezone","timezonePlaceholder":"Select timezone","defaultStorageCondition":"Default Storage Condition","tracksBatches":"Track Batches / Lots","tracksExpiry":"Track Expiry Dates","expiryAlertDays":"Expiry Alert Lead Time (days)","blockExpiredDispense":"Block Expired Dispense","capacityUnit":"Capacity Unit","capacityValue":"Capacity Value","requiresApprovalOnTransferOut":"Require Approval on Transfer Out","transferApprovalThresholdAmount":"Transfer Approval Threshold Amount","allowNegativeStock":"Allow Negative Stock","cycleCountFrequency":"Cycle Count Frequency","cycleCountInherit":"(Inherit from settings)","abcClassification":"Enable ABC Classification","isControlledSubstance":"Holds Controlled Substances","controlledClass":"Controlled Class","licenseNumber":"License Number","licenseExpiry":"License Expiry","restrictedAccess":"Restrict Access by Role","defaultReceivingLocation":"Default Receiving Location","defaultQuarantineLocation":"Default Quarantine Location","defaultDispatchLocation":"Default Dispatch Location","defaultDamagedLocation":"Default Damaged / Scrap Location","costCenter":"Cost Center"},"typeDescriptions":{"main":"General-purpose warehouse. No special compliance or storage rules.","consumables":"Fast-moving low-value items (gloves, syringes). Light tracking.","pharmacy":"Tracks batches & expiry, blocks expired dispense, picks by FEFO.","controlled_substances":"Enables compliance section, dual sign-off, restricted access.","cold_chain":"Refrigerated 2-8°C. Set per-location temperature ranges on each cold-storage location.","equipment":"Durable assets and devices. No expiry tracking.","quarantine":"Holds items pending inspection or recall.","scrap":"Damaged, expired, or written-off stock."},"help":{"code":"Short code printed on labels and barcodes (e.g. PHARM-01). Auto-generated from the name if you leave it blank.","license_number":"Government-issued license number for handling controlled substances.","is_controlled_substance":"Enable for any store holding narcotics, psychotropics, or precursors. Forces stricter audit, dual-signoff, and access rules.","controlled_class":"Regulatory class of the controlled stock (narcotic / psychotropic / precursor). Recorded for compliance and reporting.","default_storage_condition":"Default environmental class for items kept in this warehouse. Used to validate that incoming products match the storage they need.","tracks_batches":"Track stock by lot/batch. Required for medical and most regulated items.","tracks_expiry":"Track expiry dates so the system can warn and block dispense for expired stock.","expiry_alert_days":"Lead time (days) before expiry that triggers warnings. Common medical default: 90.","block_expired_dispense":"Hard-block dispense of expired lots instead of just warning.","default_receiving_location":"Default destination bin used by GRN when no destination is specified, e.g. an inbound dock.","default_quarantine_location":"Default bin where returned or under-inspection stock is held until cleared.","default_dispatch_location":"Default outbound bin for picks, transfers, and dispense.","default_damaged_location":"Default bin where damaged or expired stock is moved before disposal.","capacity_unit":"Set to Items to cap this warehouse by total item count. Leave \"Not tracked\" for no cap.","capacity_value":"Maximum total item quantity. A goods receipt is rejected when current stock + incoming would exceed this.","requires_approval_on_transfer_out":"Outgoing transfers must be approved by a manager before they ship.","transfer_approval_threshold_amount":"Only transfers at or above this monetary value require approval. Leave empty to require approval for all transfers.","allow_negative_stock":"Allow stock to go below zero. Strongly discouraged for regulated stores.","cost_center":"Analytic account / cost center this warehouse rolls up into for reporting. GL accounts (inventory, COGS, adjustment) are set on the Product Category.","phone":"Contact phone for the warehouse staff.","email":"Contact email for the warehouse. Reference only.","timezone":"Local time of this warehouse, for reference only. Scheduling and alerts currently follow the branch timezone.","city":"City where this warehouse is located. Reference only.","restricted_access":"Only allowed roles can transact in this warehouse.","cycle_count_frequency":"How often this warehouse must be cycle-counted. Hospitals typically count narcotics daily and high-value items weekly.","abc_classification_enabled":"Enable ABC analysis to drive cycle-count priority by item value/turnover."},"validation":{"nameRequired":"Warehouse name is required","nameMax":"Warehouse name must be 200 characters or less","emailInvalid":"Invalid email address","branchRequired":"Branch is required"},"submitAdd":"Add Warehouse","submitUpdate":"Update Warehouse","optionsAria":"Warehouse options"}},"stockTakeStartLabel":"Start:","stockTakeCompleteLabel":"Complete:","stockAdjust":{"units":"{count, plural, one {unit} other {units}}","reasons":{"ADJUSTMENT":"Adjustment","RETURN":"Return","TRANSFER":"Transfer","OTHER":"Other"},"quantityAdjustment":"Quantity Adjustment","currentQuantity":"Current Quantity","currentQuantityHelper":"Read-only: Current stock level","newQuantity":"New Quantity","newQuantityHelper":"The adjusted stock quantity","differenceIncrease":"Quantity Difference: {qty} {unit} (Increase)","differenceDecrease":"Quantity Difference: {qty} {unit} (Decrease)","adjustmentDetails":"Adjustment Details","barcodeNotFound":"No product matches this barcode","barcodeSelected":"Selected: {title}","productSelected":"Product selected","barcodeFailed":"Barcode lookup failed. Please try again.","barcodePlaceholder":"Scan barcode to select product…","productLabel":"Product","productPlaceholder":"Select product","locationLabel":"Location","locationPlaceholder":"Select storage location","review":{"productDetails":"Product Details","product":"Product","lot":"Lot","location":"Location","summary":"Stock Adjustment Summary","currentQuantity":"Current Quantity","newQuantity":"New Quantity","difference":"Difference","reason":"Reason"},"steps":{"detailsTitle":"Stock Adjustment","detailsDescription":"Select product, location, and enter new quantity","reviewTitle":"Review","reviewDescription":"Confirm before submission"},"validation":{"productRequired":"Product is required","locationRequired":"Location is required","qtyMin":"Quantity must be 0 or greater","reasonRequired":"Reason is required","accountingDateRequired":"Accounting date is required","accountingDateFuture":"The accounting date cannot be in the future"},"selection":{"productLot":"Product & Lot","storageLocation":"Storage Location","currentStock":"Current Stock Information","stockHere":"Stock at this location — pick the lot to adjust","currentQuantity":"Current Quantity"},"submit":"Adjust stock","reasonLabel":"Reason"},"settingsPage":{"valuation":{"FIFO":"FIFO: First In First Out (recommended)","LIFO":"LIFO: Last In First Out","WEIGHTED_AVERAGE":"Weighted Average","SPECIFIC":"Specific Identification"},"cycleCount":{"daily":"Daily","weekly":"Weekly","monthly":"Monthly","quarterly":"Quarterly","yearly":"Yearly","none":"None"},"title":"Inventory Settings","description":"Org-wide defaults applied to every warehouse. Each warehouse can override any field via its own settings. Leaving a warehouse field blank inherits from here.","stockPolicy":"Stock policy","stockPolicyDescription":"What sales and goods receipts may do when stock or paperwork does not line up.","allowNegativeStock":"Allow negative stock","allowNegativeStockHelper":"A sale may go ahead when on-hand stock is short; the balance goes negative instead of blocking the sale.","allowOverReceipt":"Allow over-receipt","allowOverReceiptHelper":"A goods receipt may take in more than the quantity still open on the purchase order.","requirePoForGrn":"Require a purchase order to receive goods","requirePoForGrnHelper":"A goods receipt cannot be confirmed without a purchase order. Point-of-sale quick receipts are exempt.","stockDefaults":"Stock Tracking Defaults","valuationMethod":"Default Valuation Method","valuationMethodHelper":"Costing method used for accounting and COGS.","cycleCountFrequency":"Default Cycle Count Frequency","cycleCountFrequencyHelper":"How often new warehouses should cycle-count.","abc":"Enable ABC Classification","abcHelper":"Org-wide default for ABC analysis on warehouses.","blockExpired":"Block Expired Dispense by Default","blockExpiredHelper":"Default value for new warehouses that track expiry.","accountingRouting":"Default Accounting Routing","accountingRoutingDescription":"Chart-of-accounts entries used by inventory postings (GRN, COGS, adjustments). Per-warehouse overrides take precedence.","inventoryAccount":"Inventory Account","cogsAccount":"COGS Account","adjustmentAccount":"Adjustment Account","costCenter":"Cost Center","saveChanges":"Save Changes"},"dashboard":{"title":"Inventory Dashboard","description":"Overview of inventory for {branch}","allBranches":"all branches","newStockTake":"New Stock Take","links":{"stockRecords":"Stock Records","stockTakes":"Stock Takes","receiveGoods":"Receive Goods","transfers":"Transfers","stockOrders":"Stock Orders","configuration":"Configuration"},"lowStock":{"title":"Running out","subtitle":"Below this branch's low-stock threshold","daysLeft":"{count, plural, one {~# day of stock left} other {~# days of stock left}}","noConsumption":"No consumption data","runsOut":"Runs out {date}","critical":"Critical","stockOrders":"Stock orders","viewAll":"Low stock report","empty":"Nothing running out","emptyDescription":"Every product has more stock than its low-stock threshold."},"expiry":{"title":"Expiring","subtitle":"Open expiry alerts at this branch","expired":"Expired","expiresToday":"Expires today","expiresIn":"{count, plural, one {Expires in # day} other {Expires in # days}}","expiredAgo":"{count, plural, one {Expired # day ago} other {Expired # days ago}}","lot":"Lot {code}","viewAll":"Expiry report","empty":"Nothing expiring","emptyDescription":"No open expiry alerts for this branch."},"pendingTransfers":{"title":"Transfers to handle","subtitle":"Drafts to dispatch and arrivals to receive","outgoing":"To {branch}","incoming":"From {branch}","lines":"{count, plural, one {# item} other {# items}}","empty":"Nothing to handle","emptyDescription":"No drafts waiting to be sent and nothing on its way to this branch.","viewAll":"View all transfers"}},"transferEditMenu":"Edit transfer","transferApproveMenu":"Approve transfer","transferUpdated":"Transfer updated","transferUpdateFailed":"Could not update the transfer","transferReceiveDate":"Receive date","transferReceiveDateHelp":"The day the goods are booked in at the destination. Empty means the transfer date, or today.","transferReceiveDateBefore":"The receive date cannot be before the transfer date ({date}).","transferCancelReversesDispatch":"This transfer has been dispatched. Cancelling it reverses the dispatch: the stock goes back to the source location, anything already received is taken out of the destination, and the in-transit journal entry is reversed. There is no reset to draft — to change a sent transfer, cancel it and create a new one.","cancel":"Cancel"},"SectionSettings":{"hrBankDetails":"Bank details","usedMaterialsAddBatch":"Add batch","usedMaterialsBatchExpires":"Expires {date}","invoiceMarkDeliveredBatchLabel":"Batch","invoiceMarkDeliveredBatchHint":"The batch you hand over (expiry shown). Required for a prescription medicine.","recurringFilterAria":"Status","reportSelectDateRange":"Select a date range to run this report","reportPickStartEndDate":"Pick a start and end date in the toolbar above.","reportGenerating":"Generating report…","reportGenerateFailed":"Failed to generate report. Please try again.","reportNoDataForFilters":"No data for the selected filters.","reportNoDataAvailable":"No data available.","showAll":"Show all","showLess":"Show less","accountingSettingsUpdated":"Accounting settings updated","accountingSettingsUpdateFailed":"Failed to update accounting settings","accountingSettingsTitle":"Accounting Settings","accountingSettingsEditButton":"Edit","accountingSettingsLoading":"Loading…","accountingSettingsEmpty":"No accounting settings configured yet.","accountingSettingsPeriodLockTitle":"Period Lock","accountingSettingsLockDateLabel":"Global Lock Date","accountingSettingsLockDateNone":"None","accountingSettingsFiscalYearLabel":"Fiscal Year Start Month","accountingSettingsPostingTitle":"Posting Behavior","accountingSettingsRevenueRecognitionLabel":"Revenue Recognition Basis","accountingSettingsRevenueAccrual":"Accrual (recognise at invoice, AR on the books)","accountingSettingsRevenueCash":"Cash (recognise at payment)","accountingSettingsAutoPostSalesLabel":"Auto-post Sales","accountingSettingsAutoPostCogsLabel":"Auto-post COGS","accountingSettingsAutoPostPaymentsLabel":"Auto-post Payments","accountingSettingsYes":"Yes","accountingSettingsNo":"No","accountingSettingsMappingsTitle":"Configured Mappings","accountingSettingsDefaultAccountsLabel":"Default Accounts","accountingSettingsDefaultJournalsLabel":"Default Journals","accountingSettingsMappingsValue":"{configured} / {total} configured","accountingSettingsExpenseTitle":"Expense Posting","accountingSettingsPostingPermissionLabel":"Posting Permission","accountingSettingsPostingPermissionFinanceAndApprover":"Finance + Approver","accountingSettingsPostingPermissionFinanceOnly":"Finance Only","accountingSettingsExpenseToVendorBillLabel":"Enable Expense → Vendor Bill","accountingSettingsApprovalTitle":"Approval","accountingSettingsApprovalRequiredLabel":"Require Approval by Default","accountingSettingsAutoApprovalThresholdLabel":"Auto-Approval Threshold","accountingSettingsPettyCashTitle":"Petty Cash","accountingSettingsNegativeBalanceLabel":"Allow Negative Balance","accountingSettingsMarketingTitle":"Marketing Spend","accountingSettingsWhtLabel":"Withholding Tax (WHT)","accountingSettingsWhtEnabled":"Enabled","accountingSettingsWhtDisabled":"Disabled","accountingSettingsWhtRateLabel":"Default WHT Rate","accountingSettingsReconciliationThresholdLabel":"Reconciliation Variance Threshold","accountingSettingsMarketingAccountLabel":"Default Marketing GL Account","accountingSettingsWhtPayableAccountLabel":"WHT Payable Account","automationCreated":"Automation created","bulkImportFailed":"Bulk import failed","automationUpdated":"Automation updated","automationUpdateFailed":"Failed to update automation","automationDeleted":"Automation deleted","automationDeleteFailed":"Failed to delete automation","automationSaveFirst":"Save the automation first, then test fire","automationDisabled":"Automation disabled","automationDisableFailed":"Failed to disable automation","automationEnabled":"Automation enabled","automationEnableFailed":"Failed to enable automation","leaveTypeUpdated":"Leave type updated","leaveTypeCreated":"Leave type created","shiftTemplateUpdated":"Shift template updated","shiftTemplateCreated":"Shift template created","failedToSaveShiftTemplate":"Failed to save shift template","failedToUpdateShiftTemplate":"Failed to update shift template","integrationUpdated":"Integration updated","integrationCreated":"Integration created","integrationConnectionSuccess":"Connection successful","integrationConnectionFailed":"Connection test failed","integrationDefaultUpdated":"Default updated","integrationDefaultUpdateFailed":"Failed to update default","integrationRemoved":"Integration removed","integrationRemoveFailed":"Failed to remove integration","saved":"Saved","removedFromMarketingBlockList":"Removed from marketing block list","blockedFromMarketing":"Blocked from marketing. Transactional messages still allowed.","blockMarketing":"Block marketing","marketingBlocked":"Marketing blocked","enterPhoneOrEmail":"Enter a phone number or email","contactAddedToSuppressionList":"Contact added to suppression list","onlineBrandingSaved":"Online branding saved","defaultGatewayUpdated":"Default gateway updated","gatewayTestPassed":"Test passed","payrollSettingsSaved":"Payroll settings saved","receiptsPaymentCreated":"Payment recorded successfully","receiptsPaymentUpdated":"Payment updated successfully","uaeVatPresetsConfigured":"UAE VAT presets are already configured.","tenantAutomationCreated":"Automation created.","tenantAutomationUpdated":"Automation updated.","tenantAutomationSaveFirst":"Save the automation first, then test fire.","tenantAutomationDeleted":"Automation deleted.","tenantAutomationDeleteFailed":"Failed to delete automation.","automations":{"_comment":"Automation Studio CHROME only: section titles, buttons, empty states. Every trigger/action/field/recipe label and help string is owned by the BACKEND catalogue and arrives already translated (apps/automation/selectors/automation_catalog_selectors.py). Do NOT mirror catalogue keys here: adding a field to the action catalogue is a backend-JSON-only change by design, and a copy here would silently re-couple the repos.","pageTitle":"Automations","pageDescription":"Ready-made automations, your own trigger and action flows, and the built-in reminders and alerts.","tabReadyMade":"Ready-made","tabBuildYourOwn":"Build your own","tabBuiltIn":"Built-in","noRecipesTitle":"No recipes available","noRecipesDescription":"The automation catalogue could not be loaded. Try again, or build your own.","chipOn":"On","chipAddedOff":"Added · Off","running":"Running","switchedOff":"Switched off","runningHint":"Patients are receiving this. Changes here take effect on the next run.","switchedOffHint":"Nothing is being sent. Preview it, then switch it on.","switchOn":"Switch on","switchOff":"Switch off","turnedOn":"{name} is on. It will run the next time its trigger happens.","turnedOff":"{name} is off. Nothing further will be sent.","toggleFailed":"Could not switch {name}. Try again.","toggleRefused":"Could not switch {name} on: {reason}","addAutomation":"Add automation","saveChanges":"Save changes","installedOff":"This is added switched <b>off</b>. Review the wording, preview it against a sample, then turn it on.","installSuccess":"{name} added. Review it, then switch it on.","reconfigureSuccess":"{name} updated.","saveFailed":"Could not save {name}. Check the fields and try again.","connectWhatsappFirst":"Connect a WhatsApp number in Settings → Integrations before using this automation.","unitDays":"days","unitHours":"hours","unitMinutes":"minutes","sendFrom":"Send from","sendFromHelp":"You have more than one WhatsApp number. Pick the one this automation uses.","templateHelp":"Approved WhatsApp templates from Settings → Message Templates.","sectionWhen":"When this happens","sectionOnlyWhen":"Only when…","sectionAdvanced":"Advanced","nameIt":"Name it","nameLabel":"Name","namePlaceholder":"e.g. Welcome on arrival","enabledLabel":"Switched on","enabledHelp":"Off means nothing is sent. Preview it first, then switch it on.","whenCaption":"The moment in the clinic that starts this automation.","doThis":"Do this","doThisCaption":"Steps run in order, top to bottom.","onlyWhenCaption":"Optional. Leave empty and it runs every time the trigger happens.","schedule":"Schedule","rateLimit":"Rate limit","rateLimitCaption":"A safety net. Leave it as it is unless you know you need more.","rateLimitCountLabel":"Max runs per period","rateLimitCountHelp":"0 removes the limit entirely. A mistake elsewhere can then message the same patient hundreds of times.","rateLimitPeriodLabel":"Period (minutes)","notes":"Notes","descriptionLabel":"Description (optional)","newAutomation":"New automation","newAutomationSubtitle":"Pick what starts it, then what it does. It stays off until you switch it on.","preview":"Preview","previewCaption":"Renders every step against a sample patient. Nothing is sent.","previewBeforeSave":"Save this automation and you can preview it against a sample patient before switching it on, without sending anything.","runPreview":"Run preview","running_":"Running…","history":"History","previewNothingSent":"Nothing was sent. This is what would happen for a sample patient.","previewNothingHappens":"Nothing would happen for this sample.","didNotResolve":"didn’t resolve, check the variable name","statusWouldRun":"Would run","statusSent":"Sent","statusBranchTaken":"Branch taken","statusWaitsHere":"Waits here","statusSkipped":"Skipped","statusFailed":"Failed","colName":"Name","colTrigger":"Trigger","colSteps":"Steps","colStatus":"Status","customAutomationsTitle":"Custom automations","customAutomationsDescription":"Build your own trigger → action flows without involving engineering.","noCustomTitle":"No automations yet","noCustomDescription":"Add a ready-made one or build your own.","deleteAction":"Delete","patientsReceiving":"Patients are receiving this.","nothingBeingSent":"Nothing is being sent.","runSent":"Sent","runPartlySent":"Partly sent","runFailed":"Failed","runSkipped":"Skipped","runRateLimited":"Rate limited","runQuotaReached":"Quota reached","runPreviewLabel":"Preview","runWaiting":"Waiting","runStarted":"Started","skipConditionsNotMet":"The conditions did not match, so nothing was sent.","skipBranchFiltered":"This automation is limited to other branches.","skipNoActions":"This automation has no actions yet.","skipRateLimited":"The rate limit for this automation was already reached.","skipQuotaExhausted":"Your plan’s automation runs for this period are used up.","skipBudgetExceeded":"This run was stopped for safety. It tried to do more than one automation is allowed to do at once.","skipWaiting":"Paused on a wait step. It will carry on when the timer is due.","historyLoadFailed":"Could not load this automation’s history.","neverRanTitle":"It hasn’t run yet","neverRanDescription":"Once this automation is switched on and its trigger happens, every run shows up here, including what each step did.","waitingToContinue":"Waiting to continue","recentRuns":"Recent runs","continuesAt":"Continues {when}","stepsLeft":"{count, plural, one {# step left} other {# steps left}}","steps":"Steps","addStep":"Add step","noStepsWarning":"Add at least one step. An automation with no steps has nothing to do.","noSettings":"This step has no settings.","moreOptions":"More options","fewerOptions":"Fewer options","moveUp":"Move up","moveDown":"Move down","removeStep":"Remove step","remove":"Remove","add":"Add","fieldLabel":"Field","operatorLabel":"Operator","valueLabel":"Value","blankLabel":"Blank {key}","variableHelperCaption":"Click to drop a patient detail into whichever box you were typing in.","scheduleWhenLabel":"When does this automation run?","scheduleAlways":"Always active","scheduleWorkingHours":"Working hours only","scheduleCustom":"Custom schedule (cron)","startHourLabel":"Start hour (0-23)","startHourHelp":"Default 9 (Mon-Fri).","endHourLabel":"End hour (1-24, exclusive)","endHourHelp":"Default 18.","cronLabel":"Cron expression","cronHelp":"5 fields: minute hour day-of-month month day-of-week. e.g. */30 * * * * runs every 30 minutes.","cronNeedsSchedule":"A scheduled automation runs on its own timetable. Enter a cron expression below.","matchAll":"Match ALL","matchAny":"Match ANY","removeRule":"Remove rule","triggerLabel":"Trigger event","triggerPlaceholder":"Pick what starts this automation","triggerHelp":"What has to happen for this automation to run.","codeSubtitle":"Code: {code}","noConditions":"No conditions. The automation runs on every matching event.","conditionFieldHelp":"Path into the event data. Must start with “payload.”.","conditionFieldRequired":"Required. An empty condition never matches, so the automation would never run.","addCondition":"Add condition","noOperators":"Conditions can’t be added right now because the list of operators didn’t load. Reload the page and try again.","resolvedEmpty":"resolved to nothing, check the variable name (optional, so it will be left blank)","durationUnit":"ms","skipFeatureNotInPlan":"Your plan doesn't include the Automation Studio, so this run was skipped.","skipAllActionsSkipped":"Nothing was sent. Every step was blocked by the patient's messaging preferences or had no provider.","validationRequired":"Required.","validationOneOf":"Set at least one of: {fields}.","validationWaitTooLong":"A wait cannot be longer than one year.","validationNameRequired":"Name is required.","validationTriggerRequired":"Pick a trigger.","validationStepsRequired":"Add at least one step.","validationScheduleNeedsCron":"A scheduled automation needs a custom (cron) schedule.","validationCronRequired":"Enter a cron expression.","conditionFieldPlaceholder":"payload.customer.first_name","catalogLoadFailed":"The list of steps couldn’t be loaded, so steps can’t be edited right now.","previewIdle":"Run a preview to see what each step would do for a sample patient.","stepTitle":"Step {index} · {label}","stepTypeLabel":"Step type","entity":"Automation","insertVariable":"Insert a patient or visit detail","insertVariableHeading":"Insert detail","triggerCatalogFailed":"The list of triggers could not be loaded. Reload the page and try again.","triggerUnknown":"This trigger is no longer offered. Pick another one.","change":"Change","keepCurrentTrigger":"Keep the current trigger","conditionFieldPick":"Pick a detail","conditionFieldNoOptions":"Pick a trigger first","valueExample":"e.g. {example}","keyLabel":"Name","keyRequired":"Give it a name.","keyInvalid":"Use letters, numbers, dashes or underscores.","keyTaken":"That name is already used.","valuePlaceholder":"Value or a patient detail","durationDays":"{count, plural, one {# day} other {# days}}","durationHours":"{count, plural, one {# hour} other {# hours}}","durationMinutes":"{count, plural, one {# minute} other {# minutes}}","waitSummary":"Wait {duration}","stepOptions":"Step options","duplicateStep":"Duplicate","noBranchSteps":"No steps on this side yet.","validationConditionField":"Pick a detail, or remove this condition.","switchOnAfterSave":"Switch on as soon as it is saved","advancedCaption":"Schedule, safety limit and notes. Most automations never need these.","summaryTitle":"In plain words","summaryWhen":"When","summaryNoTrigger":"Pick what starts it","summaryOnlyIf":"Only if","summaryEveryTime":"Every time","summaryRules":"{count, plural, one {# condition matches} other {# conditions match}}","summaryThen":"Then","summaryNoSteps":"No steps yet","editSubtitle":"Changes take effect on the next run after you save.","saveBeforeSwitching":"Save your changes first","createAutomation":"Create automation","studioNotInPlanTitle":"Your own automations are not part of your plan","studioNotInPlanDescription":"Ready-made and custom automations come with Automation Studio. The built-in reminders and alerts are always available.","openBuiltIn":"Open built-in automations","readyMadeTitle":"Ready-made automations","readyMadeDescription":"Proven clinic automations. Answer a few questions, preview, then switch it on.","buildYourOwn":"Build your own","buildYourOwnDescription":"Pick what starts it, add conditions and steps. No code needed.","notWhatYouNeed":"Not what you need?","myAutomationsTitle":"My automations","myAutomationsDescription":"The automations your clinic added or built. See what is on and whether it ran.","browseReadyMade":"Browse ready-made","colLastRun":"Last run","neverRan":"Has not run yet","waitingCount":"{count, plural, one {# patient waiting for the next step} other {# patients waiting for the next step}}","fromRecipe":"Ready-made","openInBuilder":"Edit steps in the builder","triggerRetired":"This trigger no longer exists, so it never runs. Pick a new one.","unknownVariables":"This trigger does not provide {paths}, so it will be left blank. Pick a detail from the list instead."},"entityNameAccountingSettings":"Accounting Settings","entityNameAdvertisementCategories":"Advertisement Categories","entityNameAdvertisementSources":"Advertisement Sources","entityNameBookingSettings":"Booking Settings","entityNameBranch":"Branch","entityNameBusiness":"Business","entityNameCashbackSettings":"Cashback Settings","entityNameCustomerClubSettings":"Customer Club Settings","entityNameCommissionSettings":"Commission Settings","entityNameFinanceSettings":"Finance Settings","entityNameFirstMessageTemplates":"First Message Templates","entityNameInventorySettings":"Inventory Settings","entityNameLoyaltyProgramSettings":"Loyalty Program Settings","entityNameTeamSettings":"Team Settings","entityNameOnlineBranding":"Online Branding","onlineBrandingAccentAdjusted":"Buttons use a slightly darker shade of this colour so their text stays readable.","onlineBrandingAccentRejected":"This colour can't be used for buttons, so your default colour is shown instead.","entityNamePaymentGateways":"Payment Gateways","entityNamePaymentMethods":"Payment Methods","entityNamePayrollSettings":"Payroll Settings","entityNameTaxRates":"Tax Rates","entityNameCustomAutomations":"Custom Automations","failedToSaveCustomerClubSettings":"Failed to save Customer Club settings","failedToSaveOnlineBranding":"Failed to save online branding","failedToSaveBookingSettings":"Failed to save booking settings","failedToSaveTeamSettings":"Failed to save team settings","failedToSetDefaultGateway":"Failed to set default","gatewayTestFailed":"Test connection failed","failedToSaveLoyaltySettings":"Failed to save loyalty settings","failedToSeedUaeVatPresets":"Failed to seed UAE VAT presets","failedToSaveLeaveType":"Failed to save leave type","failedToUpdateLeaveType":"Failed to update leave type","failedToSaveCashbackSettings":"Failed to save cashback settings","failedToSaveFinanceSettings":"Failed to save finance settings","failedToSavePayrollSettings":"Failed to save payroll settings","keywordAlreadyInList":"\"{kw}\" is already in your list","seededUaeVatPresets":"Seeded {count, plural, one {# UAE VAT preset} other {# UAE VAT presets}}.","monthClosedSuccessfully":"Month closed successfully","monthAuthorizedSuccessfully":"Month authorized for close","failedToAuthorizeMonth":"Failed to authorize month","entityNameYearEndClose":"Year-End Close","yearClosedSuccessfully":"Fiscal year closed successfully","failedToCloseYear":"Failed to close fiscal year","yearReopenedSuccessfully":"Fiscal year reopened successfully","failedToReopenYear":"Failed to reopen fiscal year","failedToCloseMonth":"Failed to close month","monthReopenedSuccessfully":"Month reopened successfully","failedToReopenMonth":"Failed to reopen month","loadingChecklist":"Loading checklist…","authorizedOnBy":"Authorized on {date} by {name}. Finance can now close the period.","authorizedOn":"Authorized on {date}. Finance can now close the period.","closedOnBy":"Closed on {date} by {name}.","closedOn":"Closed on {date}.","notesLabel":"Notes","notesPlaceholder":"Optional notes for the audit log","reopeningMonth":"Reopening…","reopenMonth":"Reopen Month","authorizingMonth":"Authorizing…","authorized":"Authorized","authorizeClose":"Authorize Close","closingMonth":"Closing…","closeMonth":"Close Month","statusClosed":"Closed","statusOpen":"Open","closeMonthConfirmTitle":"Close this month?","closeMonthConfirmBody":"All posted journal entries in this period will be locked against backdated edits. This can be undone via Reopen Month.","reopenMonthConfirmTitle":"Reopen this month?","reopenMonthConfirmBody":"The period will be unlocked. Previously locked journal entries can be edited again. Use with caution.","authorizeMonthDisabledBlockers":"Resolve all blockers before authorizing","closeMonthDisabledNoAuth":"Authorize the close first","closeMonthDisabledBlockers":"Resolve all blockers before closing","yearEndClosePageTitle":"Year-End Close","yearEndClosePageDescription":"Close a fiscal year: zero revenue and expense accounts into Retained Earnings, lock the year, and open the next one.","fiscalYearLabel":"Fiscal Year","selectFiscalYearToContinue":"Select a fiscal year to preview its year-end close.","loadingPreview":"Loading preview…","summaryRowTotalRevenue":"Total Revenue","summaryRowTotalCogs":"Total COGS","summaryRowTotalExpenses":"Total Expenses","summaryRowNetIncome":"Net Income","netResultPostsTo":"Net result posts to {code} ({name}).","noRetainedEarningsAccount":"No Retained Earnings account configured.","fiscalYearClosedAndLocked":"This fiscal year is closed and locked.","reopeningYear":"Reopening…","reopenYear":"Reopen Year","closeYear":"Close Year","closeFiscalYearConfirmTitle":"Close fiscal year?","closeFiscalYearConfirmBody":"This posts a closing entry that zeroes revenue and expense accounts into Retained Earnings, locks the year, and opens the next one. It can be reversed via Reopen.","reopenFiscalYearConfirmTitle":"Reopen this fiscal year?","reopenFiscalYearConfirmBody":"This reverses the year-end closing entry and unlocks the fiscal year. Revenue and expense accounts will reopen. Proceed?","closeYearDisabledBlockers":"Resolve all blockers before closing the year","blockerDraftEntries":"{count} draft journal {count, plural, one {entry} other {entries}} must be posted or deleted","blockerOpenMonths":"{count} monthly {count, plural, one {period} other {periods}} still open","blockerNothingToClose":"No revenue or expense activity to close","blockerChipLabel":"Blocker","blockersNone":"No blockers. The period can be closed.","blockersHardHeader":"Must be resolved before closing:","blockersWarningHeader":"Warnings (do not block close):","blockersGroupDraftEntries":"Draft Journal Entries","blockersGroupUnresolvedExceptions":"Unresolved Reconciliation Exceptions","blockersGroupMissingReceipts":"Missing Receipts","blockersGroupUnpaidReimbursements":"Unpaid Reimbursements","blockersGroupOverdueVendorBills":"Overdue Vendor Bills","dailyClosePageTitle":"Daily Close","dailyClosePageDescription":"Today's branch shifts. Count cash at handover and clear any variance before closing.","dailyCloseNoShiftsTitle":"No shifts today","dailyCloseNoShiftsDescription":"No branch shifts are scheduled for today in your branches.","dailyCloseShiftApprovedSuccess":"Shift report approved.","dailyCloseActionClose":"Close","dailyCloseActionApprove":"Approve","dailyCloseEntityName":"Daily close","dailyCloseColBranch":"Branch","dailyCloseColShift":"Shift","dailyCloseColExpectedCash":"Expected cash","dailyCloseColCounted":"Counted","dailyCloseColVariance":"Variance","dailyCloseColStatus":"Status","dailyCloseColClosedBy":"Closed by","dailyCloseStatusOpen":"Open","dailyCloseStatusAwaiting":"Awaiting approval","dailyCloseStatusClosed":"Closed","closeShiftTitle":"Close shift & count cash","closeShiftExpectedCash":"Expected cash","closeShiftCountedCash":"Counted cash","closeShiftCountedCashHelper":"Physical cash counted at handover. Any difference is recorded as a variance.","closeShiftNoteLabel":"Note (optional)","closeShiftConfirmButton":"Close shift","closeShiftSuccess":"Shift closed","closeShiftFailed":"Failed to close shift","currencyRateAllFieldsRequired":"All fields are required.","currencyRatesMustDiffer":"From and To currencies must differ.","currencyRateMustBePositive":"Rate must be greater than zero.","currencyRateUpdated":"Rate updated.","currencyRateCreated":"Rate created.","currencyRateRefreshed":"Refreshed {count, plural, one {# pair} other {# pairs}} from feed.","currencyRateRefreshFailed":"Refresh failed.","currencyRateDeleted":"Rate deleted.","currencyRateDeleteFailed":"Delete failed.","entityNameCurrencyRates":"Currency rates","revaluationJeCreated":"Revaluation JE #{moveId} created (DRAFT).","nothingToRevalue":"Nothing to revalue on this date.","revaluationFailed":"Revaluation failed.","currencyRatesTitle":"Currency Rates","currencyRatesDescription":"Exchange rates used for multi-currency posting. Pull the latest on demand with “Refresh from feed” (exchangerate-api.com), or add manual overrides such as central-bank fixings, contracted rates, or period-end corrections.","currencyRateRefreshing":"Refreshing…","currencyRateRefreshFromFeed":"Refresh from feed","currencyRateManualOverride":"Manual override","currencyRateNewRate":"New rate","currencyRateRunRevaluation":"Run Revaluation","currencyRateNoDataTitle":"No rates yet","currencyRateNoDataDescription":"Add a rate (e.g. USD → AED) so multi-currency posting can convert amounts.","currencyRateSearchPlaceholder":"Search by code…","currencyRateColDate":"Effective date","currencyRateDetailBasics":"Basics","currencyRateDetailFromCurrency":"From currency","currencyRateDetailToCurrency":"To currency","currencyRateColPair":"Pair","currencyRateColRate":"Rate","currencyRateColSource":"Source","currencyRateSectionTitle":"Rate","currencyRateSectionCaption":"Units of the To currency per 1 unit of the From currency. Manual entries override the daily feed.","currencyRateFromLabel":"From","currencyRateFromPlaceholder":"e.g. USD","currencyRateToLabel":"To","currencyRateToPlaceholder":"e.g. AED","currencyRateDateLabel":"Date","currencyRateRateLabel":"Rate","currencyRateRatePlaceholder":"e.g. 3.6725","currencyRateSourceLabel":"Source","currencyRateSourcePlaceholder":"manual / central_bank / oanda","currencyRateSourceHelper":"Optional tag identifying where this rate came from.","currencyRateAddSubmit":"Add rate","currencyRateUpdateSubmit":"Update rate","fxRevaluationTitle":"FX Revaluation","fxRevaluationDescription":"Running the revaluation creates a DRAFT journal entry. Review and post it manually.","fxRevalColAccount":"Account","fxRevalColCurrency":"Curr","fxRevalColForeignBalance":"Foreign Bal.","fxRevalColHistJournal":"Hist. Journal","fxRevalColRate":"Rate","fxRevalColTodayValue":"Today's Value","fxRevalColDiff":"Diff","fxRevalValuationDate":"Valuation Date","fxRevalSelectBranch":"Select a branch from the header first.","fxRevalCreateJe":"Create JE","fxRevalCreateJeCount":"Create JE for {count, plural, one {# bucket} other {# buckets}}","fxRevalGainLabel":"Gain:","fxRevalLossLabel":"Loss:","fxRevalBucketCount":"{count, plural, one {# bucket} other {# buckets}}","fxRevalNoDataTitle":"Nothing to revalue","fxRevalNoDataDescription":"No foreign-currency balances to revalue on this date.","journalSourceLabel":"Source","journalSourceKindInvoice":"Customer Invoice","journalSourceKindBill":"Vendor Bill","journalViewSourceDocument":"View source document","journalEntryPosted":"Journal entry posted.","failedToPostEntry":"Failed to post entry.","recurringJournalNameRequired":"Name, business, and journal are required.","journalLinesMustBalance":"Lines must be balanced (total debits = total credits).","journalTotal":"Total","journalTotalDebit":"Total Debit","journalTotalCredit":"Total Credit","journalBalanced":"Balanced","journalDifference":"Difference","recurringTemplateUpdated":"Template updated.","recurringTemplateCreated":"Template created.","exceptionResolved":"Exception resolved.","exceptionIgnored":"Exception ignored.","reconciliationActionFailed":"Action failed.","expenseConvertedToBill":"Expense converted to vendor bill.","cancelButton":"Cancel","vendorBillCreated":"Vendor bill created successfully","entityNameMonthEndChecklist":"Month-end checklist","entityNameMonthEndChecklistTitle":"Month-End Checklist","recurringJournalGenerated":"Generated journal entry #{moveId} (DRAFT).","failedToRunTemplate":"Failed to run template.","runNow":"Run now","runNowConfirmTitle":"Run this template now?","runNowConfirmBody":"This will generate a DRAFT journal entry immediately from this template's lines. Continue?","templateDeleted":"Template deleted.","failedToDeleteTemplate":"Failed to delete.","entityNameRecurringJournalTemplates":"Recurring journal templates","bankJournalAndCsvRequired":"Select a bank journal and a CSV/XLSX file.","bankStatementImported":"Bank statement imported. Rules applied to new lines.","bankImportFailed":"Import failed.","atLeastOneRowRequired":"Select at least one row.","acceptedSuggestionsForLines":"Accepted suggestions for {count, plural, one {# line} other {# lines}}.","failedToAcceptSuggestions":"Failed to accept suggestions.","cardLinesPostedToLedger":"Confirmed card lines posted to ledger.","failedToPostLines":"Failed to post lines.","rulesReapplied":"Rules re-applied to open lines.","failedToReapplyRules":"Failed to reapply rules.","bankRecon":{"detail":{"tab":"Details","transaction":"Transaction","posting":"Posting","amount":"Amount","statement":"Statement","autoResolved":"Resolved automatically","suggestedCategory":"Suggested category","suggestedCheque":"Suggested cheque","actions":"Bank line actions"},"title":"Bank Reconciliation","description":"Match imported bank/card lines to expense categories and post them to the general ledger.","actions":"Actions","importCsv":"Import Bank/Card Statement","reapplyRules":"Reapply Rules","acceptSuggestions":"Accept Suggestions","acceptSuggestionsCount":"Accept Suggestions ({count})","postConfirmedLines":"Post All Ready","selectLinesFirst":"Select one or more lines to accept their suggested category.","selectSuggestionsFirst":"Select lines that have a suggestion first","summaryTotalLines":"Total lines","summaryUnmatched":"Unmatched (page)","summarySelected":"Selected","summarySelectedTotal":"Selected total","summaryCaption":"Select lines to accept their suggested category. The selected total updates live as you pick.","colDate":"Date","colReference":"Reference","colDescription":"Description","colCategory":"Category","colBankAmt":"Bank Amt","colStatus":"Status","colCounterparty":"Counterparty","colPartnerName":"Statement Payee","colMappedAccount":"GL Account","colDebit":"Debit","colCredit":"Credit","assign":"Assign","postConfirmTitle":"Post mapped lines?","postConfirmDescription":"Creates a journal entry for every mapped, unposted bank line in this business and posts it to the general ledger.","postConfirmAction":"Post","statusPosted":"Posted","statusOpen":"Open","suggestedPrefix":"Suggested: {name}","acceptRow":"Accept suggestion","selectedCount":"{count} selected","acceptRowNamed":"Accept category: {name}","acceptRowNoSuggestion":"This line has no suggested category yet.","acceptRowPosted":"This line is already posted.","searchPlaceholder":"Search reference / description…","filters":"Filters","noDataTitle":"No bank lines yet","queueEmptyTitle":"Nothing left to reconcile","queueEmptyDescription":"Every line here is posted or matched. Import a statement to add lines, or clear the filters to see them.","noMatchTitle":"No lines match these filters","noMatchDescription":"Clear a filter to see more lines.","noDataDescription":"Import a bank statement CSV to start matching.","importTitle":"Import Bank Statement","importDescription":"Upload a CSV or Excel bank statement. You'll review every row before anything is imported.","importJournal":"Bank Journal","importJournalPlaceholder":"Select a bank journal","importNoJournals":"No bank journals available","importFileHint":"CSV or XLSX · Debit/Credit columns or a signed Amount column","importSubmit":"Import","filterTitle":"Filter Bank Lines","fReconciled":"Reconciled","fReconciledYes":"Reconciled","fReconciledYesDesc":"Matched to a GL entry.","fReconciledNo":"Unreconciled","fReconciledNoDesc":"Not yet matched.","fPosted":"Posted","fPostedYes":"Posted","fPostedYesDesc":"Booked: posted here, or matched to an existing entry or cheque.","fPostedNo":"Not posted","fPostedNoDesc":"Still waiting to be posted or matched.","fSuggestions":"Suggestions","fSuggestionYes":"Has suggestion","fSuggestionYesDesc":"Auto-match proposed a category.","fSuggestionNo":"No suggestion","fSuggestionNoDesc":"No auto-match found yet.","fCounterparty":"Counterparty","fCounterpartyYes":"Has counterparty","fCounterpartyYesDesc":"POS/BNPL/cheque matched.","fCounterpartyNo":"No counterparty","fCounterpartyNoDesc":"No counterparty linked.","fDateRange":"Date range","fDateFrom":"Date from","fDateTo":"Date to","clearCheques":"Clear Matched Cheques","clearChequesCount":"Clear Matched Cheques ({count})","chequesClearedCount":"{count} cheque(s) cleared","failedToClearCheques":"Failed to clear cheques","selectMatchedChequesFirst":"Select lines with a matched cheque first","suggestedCheque":"→ Cheque {number}","statusReconciled":"Reconciled","importDownloadSample":"Download a sample:","importSampleDebitCredit":"Debit / Credit columns","importSampleSignedAmount":"Signed amount column","chequesDueThisWeek":"Cheques due this week","chequesDueThisWeekDescription":"Issued cheques due in the next 7 days, including overdue ones.","clearThisCheque":"Clear this cheque","lineEntityLabel":"Bank line","footerUpdate":"Update Bank Line","mapToAccount":"Map to account","mapToAccountTitle":"Map line to a GL account","mapToAccountDescription":"Choose the account this bank line posts against. Leave empty to clear the mapping.","glAccount":"GL account","mappingSaved":"Account mapping saved","lineSaved":"Bank line saved","mappingFailed":"Failed to save the account mapping","validateCount":"Validate Selected ({count})","validateNoneReady":"None of the selected lines are ready to post. Resolve their blockers first (account mapping, cheque/settlement match, locked period)","validatedCount":"Validated: {posted} posted, {skipped} skipped","failedToValidate":"Failed to validate lines","matchToBill":"Match to vendor bill","matchToBillTitle":"Match line to a vendor bill","matchToBillDescription":"Records a payment against the chosen bill from this bank account. The bill's balance updates automatically.","vendorBill":"Vendor bill","paymentMethod":"Payment method","matchedToBill":"Line matched to the vendor bill","matchFailed":"Failed to match the line","matchBillFieldsRequired":"Select a vendor bill and a payment method.","unmatch":"Un-match","unmatched":"Line un-matched","unmatchFailed":"Failed to un-match the line","clearCounterparty":"Clear counterparty","resetToQueue":"Back to open lines","counterparty":"Counterparty","deleteLine":"Delete line","deleteLineConfirmTitle":"Delete this bank line?","deleteLineConfirmContent":"This removes the line from the statement. Only an unmatched, unposted line that has not cleared a cheque can be deleted.","deleteLineConfirmAction":"Delete line","deleteLineDone":"Line deleted","deleteLineFailed":"Failed to delete the line","deleteStatement":"Delete whole statement","deleteStatementConfirmTitle":"Delete the entire statement?","deleteStatementConfirmContent":"Deletes the imported statement \"{label}\" and all its lines so you can re-import. Refused if any line is posted, matched, or has cleared a cheque.","deleteStatementConfirmAction":"Delete statement","deleteStatementDone":"Statement deleted","deleteStatementFailed":"Failed to delete the statement","editLine":"Edit line","editLineTitle":"Edit bank line","editLineDescription":"Set the GL account this line posts against and its counterparty. Leave either empty to clear it.","deleteSelected":"Delete {count}","deleteSelectedConfirmTitle":"Delete the selected lines?","deleteSelectedConfirmContent":"Soft-deletes the selected bank lines. Lines that are posted, matched, or have cleared a cheque are skipped and reported.","deleteSelectedConfirmAction":"Delete","deleteSelectedDone":"{deleted} deleted, {skipped} skipped","selectedLinesDisplay":"{count, plural, one {# selected bank line} other {# selected bank lines}}","importValidate":"Validate","importConfirm":"Import {count}","importValidateFailed":"Could not validate the file.","importValidatedToast":"{ready} ready · {duplicates} duplicate · {skipped} skipped","importReviewCaption":"Review the rows below, then import. Duplicate and unreadable rows are skipped automatically.","importReady":"Ready: {count}","importDuplicates":"Duplicates: {count}","importSkipped":"Skipped: {count}","importErrorsTitle":"Review before importing","importPreviewEmpty":"No new rows to import in this file.","importStartOver":"Choose another file","importColAccount":"Account","importColumnGuideTitle":"Column guide (* = required)","importColGuideDate":"Transaction date: YYYY-MM-DD, DD/MM/YYYY, or DD-MM-YYYY","importColGuideAmount":"Negative = outgoing payment, positive = incoming deposit","importColGuideReference":"Cheque number or bank reference, used for auto-cheque matching","importColGuideDescription":"Free-text narration from the bank","importColGuideCounterparty":"Other party name. Drives Counterparty Directory matching when configured","importColGuideGlAccount":"GL account code (e.g. 201002). Resolves to the mapped account. Use 'gl_account' not 'account'","importColGuideCategory":"Expense category name (case-insensitive). Leave blank to categorise inside the app","postingStatus":{"posted":"Posted","matched":"Matched","cheque_matched":"Settles via cheque","settlement_matched":"Matched to a card/BNPL batch. Un-match to book by hand","ready":"Ready to post","needs_account":"Needs account","zero_amount":"Zero amount","account_not_postable":"Account not postable","account_is_bank":"Mapped to bank account","journal_unconfigured":"Journal has no bank account","period_locked":"Period locked","journal_foreign_currency":"Journal currency mismatch","cheque_cleared":"Cheque cleared","entry_in_draft":"Journal entry in draft","cheque_named_on_line":"Paid by a cheque","account_is_cheque_clearing":"Cheque account: match the cheque"},"skipReason":{"already_posted":"already posted","cheque_cleared":"Cleared a cheque (un-match it first)","reconciled":"Reconciled (un-match it first)","cheque_matched":"settles via cheque","settlement_matched":"matched to a card/BNPL batch, un-match it first","matched":"matched to a document","zero_amount":"zero amount","no_account_mapped":"no account mapped","counter_account_not_postable":"account not postable","counter_account_is_bank":"mapped to the bank account","journal_no_credit_account":"journal has no bank account","journal_no_debit_account":"journal has no bank account","period_locked":"period locked","not_found":"not found","cheque_named_on_line":"names a cheque that already paid it","journal_foreign_currency":"journal currency mismatch","counter_account_is_cheque_clearing":"mapped to a cheque account, match the cheque","account_is_cheque_clearing":"a cheque account, match the cheque instead"},"viewJournalEntry":"View journal entry","fJournal":"Bank journal","fJournalLabel":"Journal","chipYes":"Yes","chipNo":"No","summaryTotal":"Lines","summarySettled":"Settled","summaryOpen":"Open","summaryNeedsAccount":"Needs account","summaryOpenAmount":"Open amount","summaryGlBalance":"GL bank balance","dismissSuggestion":"Dismiss suggestion","suggestionDismissed":"Suggestion dismissed. The line can post now","dismissFailed":"Failed to dismiss the suggestion","importJournalsLoading":"Loading bank journals…","importJournalsFailed":"Failed to load bank journals","importedCount":"{count} lines imported ({duplicates} duplicates skipped)","cardCreateNew":"Create a new batch for a payment period","cardCreateHint":"Creates the batch for {branch} from its card payments in this period (refunds netted). The fee comes from the payout statement below.","cardCreateFieldsRequired":"Payment period is required","cardFamilyMismatch":"This narration names a BNPL provider, not a card acquirer. Use “Settle BNPL payout” unless you know otherwise.","more":"More","less":"Less","colSourceFile":"File","matchToCheque":"Match to cheque","matchToChequeTitle":"Match this line to a cheque","matchToChequeDescription":"Pick the cheque this bank line settles. Use this when the statement does not name the cheque number in a way we can read. Clearing it posts the cheque's own entry. A bounced cheque coming back is matched to its returned entry.","matchChequeFieldsRequired":"Select a cheque first.","matchToJournalEntry":"Match to journal entry","matchToJournalEntryTitle":"Match this line to a journal entry","matchToJournalEntryDescription":"Pick the posted entry that already booked this bank line, such as a manual or migrated entry. Nothing new is posted; the line is marked as settled by that entry and Validate skips it.","journalEntry":"Journal entry","matchedToJournalEntry":"Line matched to the journal entry.","matchEntryFieldsRequired":"Select a journal entry first.","matchedToCheque":"Line matched to the cheque.","cheque":"Cheque","cardStatementHint":"Check the figures against Network's settlement report for this deposit."},"bankRule":{"title":"Bank Rules","description":"Auto-categorise bank lines by keyword match against description, reference, or partner name.","addRule":"Add Rule","searchPlaceholder":"Search keyword / name…","noDataTitle":"No rules yet","noDataDescription":"Add your first rule to start auto-categorising bank lines.","colRule":"Rule","colMatchOn":"Match On","colCategory":"Category","colPriority":"Priority","colStatus":"Status","matchDescription":"Description","matchReference":"Reference","matchPartnerName":"Partner Name","moveUp":"Increase priority","moveDown":"Decrease priority","priorityHighest":"Already the highest priority.","priorityLowest":"Already the lowest priority.","priorityUpdated":"Priority updated.","priorityUpdateFailed":"Failed to update priority.","sectionTitle":"Rule","sectionCaption":"When a new bank line matches the keyword, this expense category is suggested.","ruleName":"Rule Name","ruleNamePlaceholder":"e.g. Google Ads","keyword":"Keyword","keywordPlaceholder":"e.g. GOOGLE","keywordHelp":"Stored uppercase. Substring match against the chosen field.","matchOn":"Match On","expenseCategory":"Expense Category","journalOptional":"Journal (optional)","priority":"Priority","priorityPlaceholder":"0","priorityHelp":"Higher priority rules are evaluated first when several match a line.","active":"Active","testTitle":"Test Rule","testSubtitle":"Testing rule: {name}","testFailed":"Failed to run test. Please try again.","testRunning":"Running test…","testMatchCount":"{count, plural, one {# match} other {# matches}}","testScanned":"{count, plural, one {# line scanned} other {# lines scanned}}","testNoMatchTitle":"No matches","testNoMatchDescription":"No bank lines matched this rule's keyword.","testPosted":"Posted","sectionMatchTitle":"Match Conditions","sectionMatchCaption":"Define when this rule applies to a transaction.","matchOnHelp":"Choose which transaction fields to match against.","sectionCategorizeTitle":"Categorization","sectionCategorizeCaption":"Set the account and details applied when the rule matches.","formEditTitle":"Edit Bank Rule","formNewTitle":"New Bank Rule","formSaving":"Saving…","testAction":"Test rule"},"reconExc":{"title":"Reconciliation Exceptions","description":"Bank lines that the auto-match couldn't resolve. Review and clear them.","resolve":"Resolve","ignore":"Ignore","resolveTitle":"Resolve Exception","ignoreTitle":"Ignore Exception","resolutionType":"Resolution Type","notes":"Notes","resolveNotesPlaceholder":"How was this exception resolved?","ignoreNotesPlaceholder":"Why is this exception being ignored?","cancel":"Cancel","colDate":"Date","colBankLine":"Bank Line","colReason":"Reason","colBank":"Bank","colExpected":"Expected","colDiff":"Diff","colAging":"Aging","colStatus":"Status","colResolution":"Resolution","searchPlaceholder":"Search description…","filters":"Filters","noDataTitle":"No exceptions","noDataDescription":"All bank lines are matched. Nice work.","alreadySettled":"This exception is already {status}.","reasonAmountMismatch":"Amount Mismatch","reasonNoSuggestedMatch":"No Suggested Match","reasonDuplicate":"Duplicate","reasonSplitDeposit":"Split Deposit","reasonDateMismatch":"Date Mismatch","reasonUnknown":"Unknown","resTypeManualMatch":"Manual Match","resTypeAdjustedDateRange":"Adjusted Date Range","resTypeSplit":"Split","resTypeMarkedUnknown":"Marked as Unknown","resTypeIgnored":"Ignored","filterTitle":"Filter Exceptions","fStatus":"Status","fReason":"Reason","fStatusPending":"Pending","fStatusResolved":"Resolved","fStatusIgnored":"Ignored","fAllStatuses":"All statuses","fAllReasons":"All reasons"},"expenseAndTemplateRequired":"Select an expense and a template.","allocationApplied":"Allocation applied.","failedToApplyAllocationTemplate":"Failed to apply template.","marketingPreviewReady":"Preview ready, review and confirm to commit","marketingPreviewFailed":"Preview failed, check the file format","marketingImportCommitted":"Import committed successfully","marketingCommitFailed":"Commit failed","marketingImportsTitle":"Marketing Spend Import","marketingImportsDescription":"Upload Excel or CSV files to import campaign insights or purchase invoices.","marketingImportsUploadSectionTitle":"Upload File","marketingImportsUploadSectionCaption":"Preview the file before committing it to marketing spend history.","marketingImportsModeLabel":"Import type","marketingImportsModeInsights":"Campaign Insights (operational)","marketingImportsModeInvoices":"Purchase Invoices (ledger)","marketingImportsFileLabel":"CSV or Excel file","marketingImportsPreviewButton":"Preview","marketingImportsConfirmButton":"Confirm Import","marketingImportsPreviewSummary":"Preview: {total} rows. {created} new, {updated} updated, {skipped} skipped, {failed} failed","marketingImportsHistoryTitle":"Import History","marketingImportsHistoryEmptyTitle":"No imports yet","marketingImportsHistoryEmptyDescription":"Import history will appear here after your first upload.","marketingImportsColDate":"Date","marketingImportsColMode":"Mode","marketingImportsColSource":"Source","marketingImportsColRows":"Rows","marketingImportsRowsAdded":"added","marketingImportsRowsUpdated":"updated","marketingImportsRowsFailed":"failed","marketingImportsRowsTooltip":"{created} added · {updated} updated · {failed} failed (of {total} rows)","marketingImportsSourceDownload":"Download the original uploaded file","marketingImportsColUploadedBy":"Uploaded By","marketingImportsUploadedByProfileTooltip":"View this employee's profile","marketingImportsColType":"Type","marketingImportsTypePreview":"Preview","marketingImportsTypeCommitted":"Committed","marketingImportsTypeReverted":"Reverted","marketingImportsEntityName":"Marketing Spend Imports","marketingImportsDownloadTemplate":"Download Template","marketingTemplateDownloadFailed":"Failed to download template","marketingImportsRevert":"Revert","marketingImportsRevertConfirmTitle":"Revert this import?","marketingImportsRevertConfirmBody":"This soft-deletes the daily insight rows created by this import. Only operational insights are affected; the ledger is untouched.","marketingImportsRevertConfirmButton":"Revert import","marketingImportsRevertSuccess":"Import reverted","marketingImportsRevertFailed":"Failed to revert import","marketingImportsPreviewRowsTitle":"Rows to import","marketingImportsPreviewStatusCol":"Status","marketingImportsPreviewStatusOk":"OK","marketingImportsPreviewStatusError":"Error","billGeneratedSuccessfully":"Bill generated successfully","generateNow":"Generate Now","acceptVariance":"Accept Variance","markResolved":"Mark Resolved","failedToGenerateBill":"Failed to generate bill","varianceAccepted":"Variance accepted","failedToAcceptVariance":"Failed to accept variance","flagResolved":"Flag resolved","failedToResolveFlag":"Failed to resolve flag","reconciliationRunStarted":"Reconciliation run started","failedToStartReconciliation":"Failed to start reconciliation run","runReconciliation":"Run Reconciliation","runReconciliationDescription":"Recompute variance flags for a month. Defaults to the previous month; pick an earlier month to re-run after correcting data.","reconciliationMonth":"Reconciliation month","selectAMonth":"Select a month first","statusAll":"All","statusAccepted":"Accepted","statusResolved":"Resolved","statusTemplateFailed":"Template Failed","reopenFlag":"Reopen","reopenFlagDescription":"Reopening returns this flag to the open queue and clears the resolution record. Add an optional note.","flagReopened":"Flag reopened","failedToReopenFlag":"Failed to reopen flag","reconciliationDescription":"Monthly variance flags between operational spend and ledger totals.","reconciliationColPeriod":"Period","reconciliationColAdSource":"Ad Source","reconciliationColCampaign":"Campaign","reconciliationColOperational":"Operational","reconciliationColLedger":"Ledger","reconciliationColVariance":"Variance","reconciliationColVarianceTooltip":"Variance = |Ledger − Operational| ÷ max(Operational, Ledger)","reconciliationColStatus":"Status","reconciliationDetailTitle":"Flag Details","reconciliationRowPeriod":"Period","reconciliationRowAdSource":"Ad Source","reconciliationRowCampaign":"Campaign","reconciliationRowOperationalTotal":"Operational Total","reconciliationRowLedgerTotal":"Ledger Total","reconciliationRowVariance":"Variance","reconciliationRowVariancePct":"Variance %","reconciliationRowNote":"Note","reconciliationRowStatus":"Status","reconciliationRowResolvedBy":"Resolved By","reconciliationRowResolvedAt":"Resolved At","insightsDescription":"Daily campaign metrics from all advertising channels.","insightsNoDataTitle":"No campaign insights yet","insightsNoDataDescription":"Upload a campaign insights file or connect an ad platform to see daily spend data here.","insightsSearchPlaceholder":"Search insights…","insightsColDate":"Date","insightsColAdSource":"Ad Source","insightsColPlatform":"Platform","insightsColCampaign":"Campaign","insightsColSpend":"Spend","insightsColImpressions":"Impressions","insightsColClicks":"Clicks","insightsColConversions":"Conversions","insightsDetailTitle":"Insight Details","insightsRowDate":"Date","insightsRowAdSource":"Ad Source","insightsRowPlatform":"Platform","insightsRowCampaign":"Campaign","insightsRowAdSet":"Ad Set","insightsRowAd":"Ad","insightsRowSpend":"Spend","insightsRowOriginalSpend":"Original Spend","insightsRowFxRate":"FX Rate","insightsRowImpressions":"Impressions","insightsRowClicks":"Clicks","insightsRowConversions":"Conversions","insightsRowSource":"Source","platformAccountsDescription":"Connect Google Ads, Meta Ads, and other platforms to pull spend data automatically.","platformAccountsConnectAccount":"Connect Account","platformAccountsNoDataTitle":"No platform accounts connected","platformAccountsNoDataDescription":"Connect an ad platform account to enable automatic daily spend imports.","platformAccountsSearchPlaceholder":"Search accounts…","platformAccountsColAccount":"Account","platformAccountsColPlatform":"Platform","platformAccountsColDefaultAdSource":"Default Ad Source","platformAccountsColLastPulled":"Last Pulled","platformAccountsColStatus":"Status","platformAccountsNeverPulled":"Never","platformAccountsStatusActive":"Active","platformAccountsStatusInactive":"Inactive","platformAccountsDetailTitle":"Account Details","platformAccountsRowLabel":"Label","platformAccountsRowPlatform":"Platform","platformAccountsRowExternalId":"External Account ID","platformAccountsRowDefaultAdSource":"Default Ad Source","platformAccountsRowLastPulled":"Last Pulled","platformAccountsRowLastPullError":"Last Pull Error","platformAccountsRowTokenExpires":"Token Expires","platformAccountsRowStatus":"Status","recurringDescription":"Automate monthly vendor bills for recurring marketing spend.","recurringNewTemplateAction":"New Template","recurringNoDataTitle":"No recurring templates yet","recurringNoDataDescription":"Create a template to auto-generate monthly bills from Google, Meta, or any other vendor.","recurringSearchPlaceholder":"Search templates…","recurringQuickFilterAll":"All","recurringQuickFilterActive":"Active","recurringQuickFilterInactive":"Inactive","recurringColVendor":"Vendor","recurringColCampaign":"Campaign","recurringColAmount":"Amount","recurringColGeneratesOn":"Generates on","recurringColLastGenerated":"Last Generated","recurringColNextRun":"Next Run","recurringColStatus":"Status","recurringDetailTitle":"Template Details","recurringRowVendor":"Vendor","recurringRowAdSource":"Ad Source","recurringRowCampaign":"Campaign","recurringRowCategory":"Category","recurringRowAmount":"Amount","recurringRowTaxRule":"Tax Rule","recurringRowCadence":"Cadence","recurringRowGeneratesOnDay":"Generates on Day","recurringRowLastGenerated":"Last Generated","recurringRowNextRun":"Next Run","recurringRowNotes":"Notes","recurringRowStatus":"Status","searchFlags":"Search flags…","noReconciliationFlags":"No reconciliation flags","reconciliationFlagsEmptyHint":"Flags are generated automatically on the 5th of each month for the prior period.","details":"Details","acceptVarianceDescription":"Accepting this variance marks it as a known and approved difference. Add an optional note.","markResolvedDescription":"Marking as resolved indicates the variance has been corrected upstream. Add an optional note.","notePlaceholder":"Add a note explaining this decision...","relatedExpenses":"Related expenses","viewInExpenses":"View in Expenses","confirm":"Confirm","cancel":"Cancel","noteOptional":"Note (optional)","variance":"Variance","actions":"Actions","paymentUpdated":"Payment updated","paymentRecorded":"Payment recorded","entityNameAllocationHistory":"Allocation History","entityNamePostingQueue":"Posting Queue","entityNamePayment":"Payment","entityNameTrialBalance":"Trial Balance","entityNameProfitAndLoss":"Profit & Loss","entityNameCashFlow":"Cash Flow Statement","failedToCreateVendorBill":"Failed to create vendor bill","vendorBillUpdated":"Vendor bill updated successfully","failedToUpdateVendorBill":"Failed to update vendor bill","entityNameLedgerEntries":"Ledger entries","entityNameApAgingReport":"A/P Aging Report","entityNameArAgingReport":"A/R Aging Report","entityNameVatReturn":"VAT Return","entityNameBudgetVsActual":"Budget vs Actual","entityNameBalanceSheet":"Balance Sheet","hrNoPendingEntries":"No pending entries in the selection.","hrSubmittedForApproval":"Submitted for approval","hrFailedToSubmitForApproval":"Failed to submit for approval","hrPayRunCreated":"Pay run created","hrEntryRefreshedFromCommissions":"Entry refreshed from commissions","hrFailedToRefreshEntry":"Failed to refresh entry","hrRefreshFromCommissions":"Refresh from commissions","hrNoPermissionToPayRun":"You do not have permission to pay this run. Paying the team requires payroll approval access on a posted run.","hrPayRunMarkedPaid":"Pay run marked paid","hrFailedToMarkPayRunPaid":"Failed to mark pay run paid","hrNoEntriesFoundPopulateFirst":"No entries found. Populate the pay run first.","hrFailedToGeneratePayslips":"Failed to generate payslips","hrFailedToRegeneratePayslips":"Failed to regenerate payslips","hrStatusUpdateFailed":"Status update failed","hrDownloadFailed":"Download failed","hrEntryUpdated":"Entry updated","hrFailedToUpdateEntry":"Failed to update entry","hrPopulatingEntries":"Populating entries… list will refresh shortly.","hrFailedToPopulate":"Failed to populate","hrPayrunSubmitForReview":"Submit for review","hrPayrunApprove":"Approve","hrPayrunApproveDirectly":"Approve directly","hrPayrunPostToAccounting":"Post to accounting","hrPayrunPayTeam":"Pay team","hrPayrunCancel":"Cancel","hrPayrunSendBackToDraft":"Send back to draft","hrPayrunReverse":"Reverse","hrPayrunClose":"Close","hrPayrunPostConfirm":"A journal entry will be created and the pay run will be locked.","hrPaySelected":"Pay selected","hrPayTeamMembersToPay":"{count, plural, one {# team member} other {# team members}}","hrAutoCreatePayruns":"Auto-create pay runs","hrAutoCreatePayrunsHelp":"Automatically open a draft pay run each period so you never miss a cycle.","hrPayPeriodAnchorDate":"Pay period anchor date","hrPayPeriodAnchorDateHelp":"The first day of a pay cycle. Weekly and bi-weekly periods are counted from here.","hrConfirm":"Confirm","hrDownloadAllPayslips":"Download all payslips (PDF)","hrDownloadingPayslips":"Downloading…","hrTeamMember":"Team member","hrWages":"Wages","hrCommissions":"Commissions","hrCommission":"Commission","hrTips":"Tips","hrAdjustments":"Adjustments","hrAdjustment":"Adjustment","hrAddAdjustment":"Add adjustment","hrNoAdjustmentsYet":"No adjustments yet","hrAdjustmentLabel":"Label","hrAdjustmentAmount":"Amount","hrAdjustmentType":"Type","hrAdjustmentAdd":"Add","hrAdjustmentDeduct":"Deduct","hrAdjustmentTypeBonus":"Bonus","hrAdjustmentTypeDeduction":"Deduction","hrAdjustmentTypeTax":"Tax","hrAdjustmentTypeSalary":"Salary","hrAdjustmentTypeOther":"Other","hrAdjustmentAdded":"Adjustment added","hrAdjustmentRemoved":"Adjustment removed","hrAdjustmentDelete":"Delete adjustment","hrFailedToAddAdjustment":"Failed to add adjustment","hrFailedToRemoveAdjustment":"Failed to remove adjustment","hrCommissionAdjustment":"Commission adjustment","hrTotal":"Total","hrToPay":"To pay","hrStatus":"Status","hrPayment":"Payment","hrPaymentMethodBankTransfer":"Bank transfer","hrPaymentMethodCash":"Cash","hrPaymentMethodCheque":"Cheque","hrPaymentMethodOther":"Other","hrEditAdjustmentAndNotes":"Edit adjustment & notes","hrPopulate":"Populate","hrNoEntriesYet":"No entries yet","hrNoEntriesDescription":"Use Populate to pull eligible commissions and attendance for this period.","hrHoursWorked":"{hours} hrs worked","hrDaysPresent":"{days} days present","hrViewTimesheet":"View timesheet","hrSourcesUpdated":"Sources updated successfully","hrServicesUpdated":"Services updated successfully","hrBreaksSaved":"Breaks saved successfully","hrFailedToSaveBreaks":"Failed to save breaks","hrAvailabilitySaved":"Availability saved successfully","hrFailedToSaveAvailability":"Failed to save availability","hrTimeOffAdded":"Time off added successfully","hrFailedToAddTimeOff":"Failed to add time off","hrTimeOffUpdated":"Time off updated successfully","hrFailedToUpdateTimeOff":"Failed to update time off","hrTimeOffDeleted":"Time off deleted","hrDocumentDeleted":"Document deleted","hrFailedToDeleteDocument":"Failed to delete document","hrDocumentUpdated":"Document updated","hrDocumentUploaded":"Document uploaded","hrTimeOffSubmitted":"Time-off submitted for approval","hrMyLeaveTitle":"My Leave","hrMyLeaveEmpty":"No leave requests yet.","hrApplyForLeave":"Apply for leave","hrLeaveApplied":"Leave request submitted for approval","hrTimeOffApproved":"Time-off approved","hrTimeOffRejected":"Time-off rejected","hrPasswordGenerated":"Password generated, saved to both fields","hrAllSessionsInvalidated":"All user sessions invalidated","entityNamePayslips":"Payslips","entityNamePayRun":"Pay Run","entityNamePayRunLower":"Pay run","entityNameTimeOffRequest":"Time-off request","entityNameDocument":"Document","entityNameDocuments":"Documents","entityNameTeamMember":"Team Member","entityNameTeamMembers":"Team Members","teamMembersNoDataTitle":"No team members found","teamMembersNoDataDescription":"Adjust your search or filters, or add a new team member.","seatLimitUpsellTitle":"Staff limit reached","seatLimitUpsellContact":"Contact us to upgrade your plan and add more team members.","businessAttributeDeleted":"Attribute deleted successfully","businessConsentDeleted":"Consent deleted successfully","businessConsentNotFound":"Consent not found, please select a consent to delete","businessHistoryComingSoon":"History feature coming soon","businessConsentAdded":"Consent added successfully","businessConsentUpdated":"Consent updated successfully","businessStoreIdDeleted":"Store ID deleted successfully","businessProductServiceDeleted":"Product service deleted successfully!","businessProductTypeDeleted":"Product type deleted successfully!","businessWorkingHoursSaved":"Working hours saved successfully","businessBranchCreated":"Branch created successfully","businessFailedToCreateBranch":"Failed to create branch","businessFailedToGetAddressId":"Failed to get address ID","businessFailedToCreateAddress":"Failed to create address","businessTimeOffCreated":"Time off created successfully","businessTimeOffUpdated":"Time off updated successfully","businessTimeOffDateRequired":"Please select start and end dates","businessBranchIconUpdated":"Branch icon updated successfully","businessFailedToUpdateBranchIcon":"Failed to update branch icon","branchRetire":"Retire branch","branchRetireTitle":"Retire this branch?","branchRetireContent":"The branch will be closed: it takes no new bookings and sends no reminders or messages. All its past records are kept, and it will no longer appear in this list.","branchRetired":"Branch retired","businessFailedToConvertImage":"Failed to convert image","businessFinancialInfoUpdated":"Financial info updated successfully","businessFailedToUpdateFinancialInfo":"Failed to update financial info","businessBreaksSaved":"Breaks saved successfully","businessFailedToSaveBreaks":"Failed to save breaks","businessProfileUpdated":"Profile updated successfully","businessFailedToUpdateProfile":"Failed to update profile","businessFailedToUpdateAddress":"Failed to update address","entityNameInvoice":"Invoice","invoiceCreated":"Invoice created","invoiceFailedToCreate":"Failed to create invoice","invoiceUpdated":"Invoice updated","invoiceFailedToUpdate":"Failed to update invoice","invoicePickBranchFirst":"Pick a branch before receiving stock.","invoiceNoWarehouseConfigured":"No warehouse configured for this branch.","invoiceSavedAsDraft":"Sale saved as draft.","invoiceSaleCancelled":"Sale cancelled.","invoiceNoDefaultTaxRule":"No default tax rule found. Configure one in Settings → Taxes.","invoiceRewardAdded":"Reward added","invoiceNotCreatedYet":"Invoice has not been created yet. Add items to the cart first.","invoiceFixHighlightedFields":"Please fix the highlighted fields before continuing.","invoiceSelectClient":"Please select a client","invoiceCartEmpty":"Cart is empty","invoiceUnableToCopy":"Unable to copy. Please copy manually.","invoiceItemDelivered":"Item marked delivered.","invoiceDeliveryDelivered":"Delivered","invoiceDeliveryPartial":"Partial","invoiceDeliveryPending":"Pending","invoiceDeliveryProgress":"{delivered, number}/{total, number} delivered","invoiceMarkDelivered":"Mark delivered","invoiceMarkDeliveredTitle":"Confirm handover","invoiceMarkDeliveredCaption":"Confirm the physical handover so stock and accounting reflect the actual delivery.","invoiceMarkDeliveredQuantityLabel":"Quantity to hand over","invoiceMarkDeliveredMax":"Up to {remaining, number} remaining","invoiceMarkDeliveredNotesLabel":"Note (optional)","invoiceMarkDeliveredConfirm":"Confirm delivery","invoiceMarkDeliveredError":"Could not mark the item delivered.","invoiceUndoDelivery":"Undo delivery","invoiceUndoDeliveryTitle":"Undo handover","invoiceUndoDeliveryCaption":"Reverse this handover. The stock the delivery consumed is restored.","invoiceUndoDeliveryQuantityLabel":"Quantity to undo","invoiceUndoDeliveryMax":"Up to {delivered, number} delivered","invoiceUndoDeliveryConfirm":"Undo delivery","invoiceItemDeliveryReversed":"Delivery reversed.","invoiceUndoDeliveryError":"Could not undo the delivery.","invoiceMarkDeliveredDateLabel":"Handed over on","invoiceUndoDeliveryReasonLabel":"Reason","invoiceUndoDeliveryReasonRequired":"Say why the delivery is being undone.","invoiceItemsPendingDelivery":"{count, plural, one {# item pending physical delivery} other {# items pending physical delivery}}","invoiceDeliveryNoPermission":"Reception staff with the Mark Delivered permission can confirm the handover.","invoiceVoided":"Invoice voided","invoiceCreditNoteAction":"Issue credit note","invoiceVoidUseCreditNote":"Issue credit note","invoiceCreditNoteTitle":"Issue credit note for invoice {number}?","invoiceCreditNoteCaption":"The legal way to correct a VAT-finalized invoice.","invoiceCreditNoteBody":"A credit note books a negative document (381) that offsets this invoice. It reverses the posted GL entry and commissions and, when goods came back, restocks inventory. The original invoice stays in the audit ledger.","invoiceCreditNoteReasonLabel":"Reason","invoiceCreditNoteReasonPlaceholder":"Why is a credit note being issued?","invoiceCreditNoteReasonHelp":"Captured on the audit row. Minimum {min} characters.","invoiceCreditNoteReasonMin":"At least {min} characters","invoiceCreditNoteRestockLabel":"Restore stock","invoiceCreditNoteRestockHelp":"On = the goods came back (restock). Off = value/VAT-only correction, the patient kept the product.","invoiceCreditNoteConfirm":"Issue credit note","invoiceCreditNoteCancel":"Cancel","invoiceCreditNoteIssued":"Credit note issued","invoiceCreditNoteError":"Could not issue the credit note.","invoiceCreditNoteNotBillableTitle":"Only a paid invoice can be credited","invoiceCreditNoteNotBillableBody":"A credit note offsets a settled invoice. For an unpaid invoice, edit or void it instead.","invoiceCreditNoteAlreadyTitle":"Already credited","invoiceCreditNoteAlreadyBody":"A credit note has already been issued for this invoice.","invoiceCreditNoteIsNoteBody":"This document is itself a credit note. Credit the original invoice instead.","entityNameReports":"Reports","entityNameReport":"Report","reportsSavedViewUpdated":"Saved view updated","reportsViewSaved":"View saved","reportsViewDeleted":"View deleted","reportsCouldNotDeleteView":"Could not delete view","reportsSavedViewsPersonalTab":"My views","reportsSavedViewsTenantTab":"Shared in tenant","reportsSavedViewsSearchPlaceholder":"Search views","reportsSavedViewsNoPersonal":"No personal views yet","reportsSavedViewsNoTenant":"No shared views in this tenant yet","reportsLockedPreset":"Locked preset","reportsUpdateWithCurrent":"Update with current settings","reportsRenameView":"Rename view","reportsDeleteView":"Delete view","reportsViewUpdated":"View updated","reportsCouldNotUpdateView":"Could not update view","reportsDrillDownExportFailed":"Export failed. This report may not support drill-down export.","reportsInsightCopied":"Insight copied","reportsCopyFailed":"Copy failed, long-press to select instead","reportsAiTitle":"AI Insights","reportsAiIntro":"Generate 2-3 short insights from this report: what changed, what to act on, what to ignore.","reportsAiGenerate":"Generate insight","reportsAiRegenerate":"Regenerate from latest data","reportsAiHide":"Hide","reportsAiCollapse":"Collapse","reportsAiCollapseAria":"Collapse AI insights","reportsAiExpandAria":"Expand AI insights","reportsAiCopy":"Copy to share","reportsAiCached":"cached","reportsAiChatHint":"Ask anything about this report. The AI sees only the numbers you see right now.","reportsAiStartOver":"Start over","reportsAiPlaceholder":"Ask about this report…","reportsAiPlaceholderExhausted":"AI credit exhausted","reportsAiInputAria":"Ask AI a question","reportsAiSendAria":"Send question","reportsAiAnswerFallback":"This report doesn't contain the data to answer that. Try widening the date range or filters, then ask again.","reportsAiAnswerUnclear":"Could not answer this one. Try rephrasing.","reportsAiError":"Something went wrong. Please try again.","reportsAiOffTopic":"Outside this report's data","reportsAiThinking":"Thinking…","reportsAiQuotaTitle":"AI credit exhausted","reportsAiQuotaBody":"You have used all included AI tokens for this billing period. Upgrade your plan or wait for the next period.","reportsAiUnlimited":"Unlimited","reportsAiUnlimitedTip":"Unlimited AI credit on this plan","reportsAiCreditLeft":"{remaining} left","reportsAiCreditTip":"AI credit: {used} / {limit} tokens this period","reportsAiInsightUnavailable":"Insight unavailable for this report.","reportsCopyShareLink":"Copy share link","reportsShareLinkCopied":"Share link copied","reportsShareLinkFailed":"Could not copy link","reportsCopyViewLink":"Copy link to this view","reportsRowDisplayTitle":"Row display","reportsHideEmptyRowsLabel":"Hide empty rows","reportsCustomize":"Customize","reportsCustomizeTooltip":"Choose breakdowns and metrics for this report","reportsSearchPlaceholder":"Search entries…","reportsSearchTruncated":"Showing the first {count} matching lines. Refine the search to see the rest.","reportsCustomizeTitle":"Customize report","reportsCustomizeTabGeneral":"General","reportsCustomizeTabBreakdown":"Breakdown","reportsCustomizeTabMetrics":"Metrics","reportsCustomizePreviewTitle":"Table preview","reportsCustomizeDisplayTitle":"Display","reportsCustomizeDisplayCaption":"Choose whether each metric becomes its own column or its own row.","reportsRowCapNotice":"Showing the first {count} rows. Refine your filters or use Export to get the full data set.","reportsLoadingMore":"Loading more…","reportsCustomizeBreakdowns":"Breakdowns","reportsCustomizeMetrics":"Metrics","reportsCustomizeSelectedBreakdowns":"Selected (outermost first)","reportsCustomizeNoBreakdowns":"No breakdowns selected. Pick one below.","reportsCustomizeNoMetrics":"No metrics selected. Pick one below.","reportsCustomizeSearchBreakdowns":"Search breakdowns…","reportsCustomizeSearchMetrics":"Search metrics…","reportsCustomizePopular":"Popular","reportsCustomizeGeneralCategory":"General","reportsCustomizeNoMatches":"No matches.","reportsCustomizeMaxBreakdowns":"Max {max} breakdowns. Remove one to swap","reportsCompatRequiresBreakdown":"Group by {breakdowns} to use this metric","reportsCompatIncompatibleBreakdown":"Not available when grouped by {breakdowns}","reportsCompatRequiresFilter":"Requires the {filters} filter","reportsCompatIncompatibleMetric":"Remove {metrics} to group by this","reportsSaveAsNewReport":"Save as new report…","reportsCreateCustomReportTitle":"Save as new report","reportsCreateCustomReportConfirm":"Create report","reportsCustomReportHint":"Creates a new report in your catalog from the current metrics, breakdowns, and filters.","reportsCustomReportNotAvailable":"This report can't be saved as a custom report.","reportsCustomReportNameLabel":"Report name","reportsCustomReportNamePlaceholder":"e.g. My Campaign ROAS","reportsCustomReportDescriptionLabel":"Description (optional)","reportsCustomReportCreated":"Custom report created","reportsCustomReportCreateFailed":"Could not create the report","reportsDeleteCustomReport":"Delete report","reportsCustomReportDeleted":"Report deleted","reportsCancel":"Cancel","reportsCustomizeMoveUp":"Move up","reportsCustomizeMoveDown":"Move down","reportsCustomizeDragToReorder":"Drag to reorder","reportsCustomizeRemove":"Remove","reportsCustomizeApply":"Apply","reportsCustomizeResetDefault":"Reset to default","reportsCustomizeTimeColumns":"Advanced: time as columns","reportsCustomizeTimeColumnsHint":"Spread time periods across the columns (classic layout).","reportsCustomizeTimeColumnsHintTimeInRows":"Time is currently a row breakdown. Picking a period here moves it to the columns.","reportsCustomizeTimePosition":"Time position","reportsCustomizeTimeInRows":"Time in Rows","reportsCustomizeTimeInColumns":"Time in Columns","reportsCustomizeTimeNone":"None","reportsCustomizeWrapText":"Wrap text","reportsCustomizeWrapTextCaption":"Wrap long cell text onto multiple lines instead of cutting it off. When off, hover a clipped cell to see the full value.","reportsCustomizeHeaderLayoutTitle":"Column header layout","reportsCustomizeHeaderTimeFirst":"Time on top","reportsCustomizeHeaderMetricFirst":"Metric on top","reportsLockedPresetLabel":"Preset","reportsLockedPresetHint":"Built-in preset, read only. Use “Save current view…” to make an editable copy.","reportsCustomizeAxisLabel":"Show metrics in","reportsCustomizeAxisRows":"Rows","reportsCustomizeAxisColumns":"Columns","reportsCustomizeRowsTitle":"Breakdown","reportsCustomizeRowsCaption":"Group the report down the left side. The first is the outermost group. Reorder with the arrows.","reportsCustomizeColumnsTitle":"Columns","reportsCustomizeColumnsCaption":"Optionally spread a time period across the top of the table.","reportsCustomizeColumnsCaptionTimeInRows":"Time is a row breakdown now. Pick a period here to move it to the columns.","reportsCustomizeMetricsTitle":"Metrics","reportsCustomizeMetricsCaption":"The numbers calculated in each cell. Choose whether they run down the rows or across the columns.","reportsCustomizePreviewRows":"Rows","reportsCustomizePreviewColumns":"Columns","reportsCustomizePreviewMetrics":"Metrics","reportsCustomizeValuesPill":"Metrics · {count}","reportsCustomizeMetricsSelectedCount":"{count} selected","reportsCustomizeMetricsPreview":"{count} metrics as {axis}","reportsViewModeLabel":"Report view","reportsViewModePivot":"Pivot","reportsViewModeTrend":"Trend","reportsViewModeBar":"Bar","reportsViewModeTrendDisabledHint":"Add a time breakdown or time columns to see a trend","reportsViewModeBarDisabledHint":"Add a breakdown and a metric to compare as bars","reportsChartNoData":"No data to chart.","reportsChartUnavailableTitle":"Chart unavailable","reportsChartUnavailableDescription":"This layout can't be charted. Adjust breakdowns or metrics, or switch back to Pivot.","reportsExportStartedEmail":"Export started. You will receive an email when it is ready.","reportsExportPreparing":"Preparing your export… it will download here when ready.","reportsExportReady":"Export ready. Downloading now.","reportsExportFailed":"Export failed. Please try again.","reportsExportStillRunningEmail":"The export is taking longer than usual. You will receive it by email when it is ready.","reportsExportFiltersSummaryPrefix":"Exporting:","reportsExportFiltersSummaryCount":"{count, plural, one {# filter applied} other {# filters applied}}","reportsExportFiltersSummaryNow":"now","reportsExportEstimateRows":"{count, plural, one {~# row} other {~# rows}}","reportsExportEstimateWillEmail":"prepared in the background, downloads when ready","reportsExportHistoryTitle":"Recent exports","reportsExportHistoryLoading":"Loading…","reportsExportHistoryEmpty":"No exports yet","reportsExportHistoryStatePending":"processing","reportsExportHistoryStateReady":"ready, click to download","reportsExportHistoryStateFailed":"failed","reportsExportCurrentGroup":"Current report (pivot)","reportsExportRawGroup":"All raw data (pivot)","reportsExportRawComingSoon":"All raw data (coming soon)","reportsExportFormatExcel":"Excel (.xlsx)","reportsExportFormatCsv":"CSV","reportsExportRawExcelMobile":"All raw data: Excel (.xlsx)","reportsExportRawCsvMobile":"All raw data: CSV","reportsExportExcelMobile":"Export as Excel (.xlsx)","reportsExportCsvMobile":"Export as CSV","reportsExportSectionLabel":"Export","reportsMoreOptions":"More options","reportsFilters":"Filters","reportsView":"View","reportsRefreshData":"Refresh data","reportsSelectDateRange":"Please select a date range before exporting.","reportsExportStartedShortly":"Export started. You will receive it shortly.","reportsExportFailedRetry":"Export failed. Please try again.","reportsFilterSearch":"Search…","reportsFilterSearchLabel":"Search {label}…","reportsFilterNoResults":"No results for \"{query}\"","reportsFilterNoOptions":"No options available","reportsFilterSelectAll":"Select all","reportsFilterClear":"Clear","reportsFilterSelectedCount":"Selected ({count})","reportsFilterSelectAllError":"Couldn't select all options. Please try again.","reportsDrillDownRetry":"Try again","reportsFormatRulesNone":"No rules yet. Build one below to start colour-coding this report.","reportsDrillDownEmptyDescription":"The cell value was likely zero or formed by background data.","reportsDrillDownUnsupportedDescription":"This report does not support cell drill-down yet.","reportsDrillDownUnsupportedTitle":"Drill-down not available","documentsFolderEntity":"Folder","reportsFilterRemove":"Remove {label}","reportsAllFilters":"All filters","reportsNoAdditionalFilters":"This report has no additional filters.","reportsColumnMenuOpenAria":"Column options","reportsColumnMenuSortAsc":"Sort lowest → highest","reportsColumnMenuSortDesc":"Sort highest → lowest","reportsColumnMenuFormat":"Format…","reportsColumnMenuFilter":"Filter…","reportsCellDrillHint":"Click to view underlying records","reportsColumnMenuResizeToFit":"Resize to fit","reportsColumnMenuHide":"Hide column","reportsColumnMenuRemove":"Remove","reportsHiddenColumnsChip":"{count} hidden columns, show","reportsFormatTabSingle":"Single color","reportsFormatTabScale":"Color scale","reportsFormatOpEmpty":"Is empty","reportsFormatOpNotEmpty":"Is not empty","reportsFormatScopeLabel":"Apply on","reportsFormatScopeData":"Data rows only","reportsFormatScopeTotals":"Include subtotals & totals","reportsFormatScaleIntro":"Paint each cell along a color ramp based on where its value sits in the column's range.","reportsFormatScaleActive":"Active scales","reportsFormatScaleNone":"No color scales yet. Set one below to shade a column by value.","reportsFormatScaleApplyTo":"Apply to","reportsFormatScalePalette":"Palette","reportsFormatScalePaletteProfit":"Profit (green) / Loss (red)","reportsFormatScalePaletteGreen":"Green","reportsFormatScalePaletteRedGreen":"Red → Green","reportsFormatScalePaletteBlue":"Blue","reportsFormatScalePaletteRed":"Red","reportsFormatScaleAutoMinMax":"Auto min/max from the data","reportsFormatScaleMin":"Min","reportsFormatScaleMid":"Mid","reportsFormatScaleMax":"Max","reportsFormatScaleSet":"Set scale","reportsFormatScaleRemove":"Remove scale","reportsFormatScaleHint":"One scale per column. Setting a new scale replaces the previous one. Hit Apply to save.","customerPortalOfferClaimed":"Offer claimed","customerPortalCouldNotClaimOffer":"Could not claim this offer.","customerPortalLinkCopied":"Link copied","customerPortalCouldNotCopy":"Could not copy","customerPortalAvatarUpdated":"Avatar updated","customerPortalCouldNotUpdatePreference":"Could not update preference","customerPortalPasswordChanged":"Password changed","customerPortalCouldNotChangePassword":"Could not change password, check your current password","customerPortalCouldNotSignOutDevice":"Could not sign out device","customerPortalSignedOutAllDevices":"Signed out of all other devices","customerPortalDeviceSignedOut":"Device signed out","customerPortalProfileUpdated":"Profile updated","customerPortalCouldNotSaveChanges":"Could not save changes","customerPortalSessionBooked":"Session booked","entityNameChannel":"Channel","channelFailedToUpdateStatus":"Failed to update channel status","channelWebsiteAdded":"Website added successfully","channelFailedToAddWebsite":"Failed to add website","channelRemovedSuccessfully":"Channel removed successfully","channelFailedToRemove":"Failed to remove channel","channelProfileDetailsUpdated":"Profile details updated successfully","channelFailedToUpdateProfileDetails":"Failed to update profile details. Please try again.","channelSelectPageToContinue":"Please select a page to continue.","channelAuthenticateWhatsappFirst":"Please authenticate with WhatsApp first.","channelSelectFacebookPage":"Please select a Facebook page / Instagram account.","entityNameContact":"Contact","entityNameImportContacts":"Import Contacts","entityNameCreateChannel":"Create Channel","messagingChannelDetailsUpdated":"Channel details updated successfully","messagingFailedToUpdateChannelDetails":"Failed to update channel details","messagingChatAssignedToYou":"Chat assigned to you","messagingCouldNotPickUpChat":"Could not pick up this chat","messagingCouldNotAssignChat":"Could not assign this chat","messagingAuthSuccessful":"Authentication successful! Please select an account.","messagingSelectAccountFirst":"Please select an account first","profilePasswordChanged":"Password changed successfully","profileSignatureUpdated":"Signature updated","profileSignatureSaved":"Signature saved","profileFailedToSendVerificationCode":"Failed to send verification code","profileInvalidVerificationCode":"Invalid verification code","profileEmailUpdated":"Email address updated successfully","profileCouldNotUpdateEmail":"Could not update email address","profilePhoneUpdated":"Phone number updated successfully","profileCouldNotUpdatePhone":"Could not update phone number","profileCouldNotDeleteAccount":"Could not delete account","staffPanelCouldNotUpdateStatus":"Could not update status","staffPanelSessionUpdated":"Session updated successfully!","staffPanelFillRequiredFields":"Please fill in all required fields","staffPanelFailedToDeleteMedicalRecord":"Failed to delete medical record","staffPanelImportedFromHistory":"Imported from history successfully","staffPanelFailedToImportFromHistory":"Failed to import from history","staffPanelFailedToDeleteMedication":"Failed to delete medication","staffPanelFailedToSaveMedication":"Failed to save medication","staffPanelMedicalRecordNotFound":"Medical record not found","staffPanelReportSaved":"Report saved successfully","staffPanelFailedToSaveReport":"Failed to save report","staffPanelConsumePartialFailure":"Report saved, but some materials could not be recorded: {items}","entityNameSubscription":"Subscription","billingSubscriptionRenewed":"Subscription renewed successfully.","billingFailedToInitiateRenewal":"Failed to initiate renewal. Please try again.","billingUnableToOpenPortal":"Unable to open the billing portal right now. Please try again.","billingCouldNotOpenPortal":"We couldn't open the billing portal. Please try again in a moment.","billingFailedToCancelSubscription":"Failed to cancel subscription. Please try again or contact support.","billingSubscriptionActivated":"Subscription activated successfully.","entityNameConsentTemplate":"Consent Template","tabletPreviousHistoryApplied":"Previous history applied successfully","tabletFailedToApplyHistory":"Failed to apply previous history. Please try again.","tabletOtpSent":"OTP sent successfully","tabletOtpVerified":"OTP verified successfully","tabletRequestIdMissing":"Request ID is missing. Please try again.","tabletInvalidOtp":"Please enter a valid 4-digit OTP code","tabletUnableToContinue":"Unable to continue. Please try again.","tabletUnableToOpenSection":"Unable to open the selected section.","entityNameBookings":"Bookings","commonCouldNotAccessCamera":"Could not access the camera. Please check your permissions.","commonCouldNotConnectServer":"Could not connect to the server.","commonInsuranceUpdated":"Insurance updated successfully","commonEmiratesCardUploaded":"Emirates Card uploaded successfully","commonEmiratesCardUploadFailed":"Emirates Card upload failed. Please try again.","treatmentPlanStillLoading":"Still loading plan…","treatmentPlanCouldNotLoad":"Could not load plan into cart. Try again.","treatmentPlanFileTooLarge":"File too large (max 15 MB).","treatmentPlanFileUploaded":"File uploaded.","treatmentPlanUploadFailed":"Upload failed.","entityNameGiftCard":"Gift Card","catalogProductDuplicated":"Product duplicated","catalogCouldNotDuplicateProduct":"Could not duplicate the product","catalogPackageAddedToInvoice":"Package added to invoice","catalogServiceDuplicated":"Service duplicated","catalogCouldNotDuplicateService":"Could not duplicate the service","entityNameTask":"Task","taskCreated":"Task successfully created","taskEdited":"Task successfully edited","entityNameLead":"Lead","entityNameAutomations":"Automations","receiptPaymentUpdated":"Payment updated successfully","receiptPaymentCreated":"Payment created successfully","documentFileNotAvailable":"File not available for download.","documentLinkNotAvailable":"Link not available.","entityNameAutomationExecutions":"Automation executions","entityNameCxMarketingInsight":"CX & Marketing Insight","staffPanelStatusChanged":"Status updated","staffPanelDischarged":"Discharged","staffPanelDischargedLocked":"This visit is discharged and locked. It can no longer be edited.","staffPanelDischargedEncounter":"All sessions in this visit are discharged.","postingQueuePageTitle":"Sales Posting Queue","postingQueuePageDescription":"Paid invoices not yet posted to accounting","actionsColumn":"Actions","reviewAndPost":"Review & post to accounting","postSelected":"Post Selected","postSelectedWithCount":"Post Selected ({count})","postAll":"Post All","postAllWithCount":"Post All ({count})","noInvoicesPendingTitle":"No invoices pending posting","noInvoicesPendingDescription":"All paid invoices have been posted to accounting.","searchInvoiceOrCustomer":"Search by invoice number or customer…","invoicesPostedDefault":"Invoices posted to accounting.","reviewAllPendingPostings":"Review all pending postings","postAllConfirmTitle":"Post all queued invoices?","postAllConfirmContentWithCount":"This will post {count} paid invoice(s) in the current view to accounting. Invoices missing GL configuration are skipped and reported.","postAllConfirmContent":"This will post all paid invoices in the current view to accounting. Invoices missing GL configuration are skipped and reported.","postingInProgress":"Posting…","accountingOverviewTitle":"Accounting Overview","accountingOverviewEntityName":"Accounting overview","accountingOverviewLoading":"Loading items that need your attention…","accountingOverviewAttention":"{count} item(s) need your attention across accounting","paymentSourcesDescription":"How expenses are funded: cash, card, bank, or employee-paid. Each company-paid source credits a GL cash/bank account when an expense posts.","paymentSourceNewLabel":"New Payment Source","paymentSourceNoDataTitle":"No payment sources yet","paymentSourceNoDataDescription":"Create your first payment source so it can be selected on expenses.","paymentSourceSearchPlaceholder":"Search payment sources…","paymentSourceDetailBasics":"Basics","paymentSourceLabelName":"Name","paymentSourceLabelCode":"Code","paymentSourceLabelSourceType":"Source type","paymentSourceLabelGlAccount":"GL account","paymentSourceLabelBranch":"Branch","paymentSourceLabelBranchAll":"All branches","paymentSourceLabelReceiptThreshold":"Receipt required above","paymentSourceLabelStatus":"Status","paymentSourceLabelCreated":"Created","paymentSourceLabelUpdated":"Updated","employeeFloatDescription":"Per-employee petty cash floats. Topup, consume against expenses, settle, and reconcile.","metaBillingTitle":"Meta Billing Review","metaBillingDescription":"Automatically captured Meta ad spend awaiting your review. Approve to create a draft vendor bill.","metaBillingApprove":"Approve","metaBillingApproved":"Draft bill created","metaBillingApproveFailed":"Could not approve. Please try again.","periodClosePageTitle":"Period Close","periodClosePageDescription":"Close monthly accounting periods to lock journal entries against backdated changes.","selectBranchToContinue":"Select a branch from the header to continue.","yearLabel":"Year","monthLabel":"Month","allocationHistoryPageTitle":"Allocation History","allocationHistoryPageDescription":"Audit trail of expense allocations across branches.","applyTemplate":"Apply Template","noAllocationsTitle":"No allocations yet","noAllocationsDescription":"Allocations appear here after running a template against an expense.","allocationTemplatesDescription":"Reusable rules for splitting an expense between branches by percentage or fixed amount.","newTemplate":"New Template","noTemplatesTitle":"No templates yet","noTemplatesDescription":"Create your first split template to streamline allocation runs.","searchByTemplateName":"Search by name…","entityNameAllocationTemplate":"Allocation Template","applyAllocationTemplateDialogTitle":"Apply Allocation Template","applyAllocationTemplateDialogDescription":"The expense will be split between branches according to the chosen template.","expenseFieldLabel":"Expense","searchExpensePlaceholder":"Search by number or description","allocationTemplateFieldLabel":"Allocation Template","pickAllocationTemplatePlaceholder":"Pick a saved split rule","allocationPreviewTitle":"Split preview","allocationPreviewNoItems":"No items configured in this template.","newBudget":"New Budget","budgetsListDescription":"Planned spend per branch, expense category, and month. Compare against actuals in the Budget vs Actual report.","noBudgetsTitle":"No budgets yet","noBudgetsDescription":"Set a planned amount per expense category to start tracking your spend.","searchBudgets":"Search budgets…","filtersLabel":"Filters","postingQueueFilterBranch":"Branch","postingQueueFilterDateRange":"Date Range","postingQueueFilterDateFrom":"From date","postingQueueFilterDateTo":"To date","postingQueueFilterAnyBranch":"Any branch","postingQueueFiltersTitle":"Filters","journalMustBalanceToSave":"Debits must equal credits","journalMustBalanceBeforePost":"Entry must be balanced before posting.","journalActionPost":"Post","journalActionVoid":"Void","journalStateVoided":"Voided","journalActionReverse":"Reverse","journalActionUnpost":"Un-post","journalActionResetToDraft":"Reset to draft","journalActionReconcile":"Reconcile","journalActionWriteOff":"Write Off","journalActionsLabel":"Actions","journalViewAttachments":"View attachments","journalEntryActionsAria":"Journal entry actions","journalPostConfirmTitle":"Post this entry?","journalPostConfirmBody":"Posting writes it to the general ledger and locks it. It can't be edited or deleted afterwards, only reversed.","journalNewEntry":"New Entry","journalNewEntryFallback":"New Entry","journalEntriesListDescription":"Manual journal entries: adjustments, reclasses, accruals, prepaid amortisation.","journalNoEntriesTitle":"No journal entries yet","journalNoEntriesDescription":"Create your first adjustment to see it here.","journalSearchByRef":"Search by reference…","journalFilters":"Filters","journalRefLabel":"Reference","journalJournal":"Journal","journalDateLabel":"Date","journalBranchLabel":"Branch","journalStatusLabel":"Status","journalBalancedLabel":"Balanced","journalYes":"Yes","journalNo":"No","journalHeaderSection":"Header","journalTotalsSection":"Totals","journalAuditSection":"Audit","journalCreatedBy":"Created By","journalCreatedAt":"Created At","journalPostedBy":"Posted By","journalNarration":"Narration","journalReference":"Reference","journalVendorLabel":"Vendor","journalNoLines":"No lines on this entry","journalLineDebit":"Debit","journalLineCredit":"Credit","journalLinesSection":"Journal Lines","journalLineAccount":"Account","journalLineAccountCode":"Account Code","journalLineLabel":"Label","journalExportCsv":"Export CSV","journalLinesExported":"Lines exported","journalTypeLabel":"Journal Type","journalTypeSale":"Sales","journalTypePurchase":"Purchases","journalTypeCash":"Cash","journalTypeBank":"Bank","journalTypeGeneral":"General","journalTypeDepreciation":"Depreciation","journalTypeStaffSalary":"Staff Salary","journalReferenceLabel":"Reference","journalPaymentMethodLabel":"Payment Method","journalReversesLabel":"Reverses Entry","journalReversedLabel":"Reversed","journalReversedYes":"Yes","journalDuplicated":"Journal entry duplicated","journalDuplicateFailed":"Failed to duplicate entry","journalLineAnalytic":"Analytic","journalLineAnalyticTags":"Analytic Tags","recurringRunNowActionsAria":"Recurring template actions","runDisabledInactive":"Activate the template to run it now.","recurringTemplateFallback":"Template #{id}","recurringNewTemplate":"New Template","recurringNameLabel":"Name","recurringCadenceLabel":"Cadence","recurringStartsLabel":"Starts","recurringStartsImmediately":"Immediately","recurringLastRunLabel":"Last Run","recurringLastRunNever":"Never","recurringNextRunLabel":"Next Run","recurringNotesSection":"Notes","recurringTemplateSection":"Template","recurringOnMonthEnd":"last day of month","recurringOnDay":"day {day}","weekdayMonday":"Monday","weekdayTuesday":"Tuesday","weekdayWednesday":"Wednesday","weekdayThursday":"Thursday","weekdayFriday":"Friday","weekdaySaturday":"Saturday","weekdaySunday":"Sunday","monthJanuary":"January","monthFebruary":"February","monthMarch":"March","monthApril":"April","monthMay":"May","monthJune":"June","monthJuly":"July","monthAugust":"August","monthSeptember":"September","monthOctober":"October","monthNovember":"November","monthDecember":"December","journalFormHeaderTitle":"Header","journalFormHeaderCaption":"Journal, date, and a short narration.","journalOptionalPlaceholder":"Optional","journalFormLinesTitle":"Lines","journalFormLinesCaption":"Every entry must net to zero (sum of debits = sum of credits).","journalAddLine":"Add line","journalAccountLabel":"Account","journalDescriptionLabel":"Description","journalCounterpartyLabel":"Counterparty","journalLineMatchLabel":"Matched","journalLineMatchBill":"Bill {number} · {amount}","journalLineMatchInvoice":"Invoice {number} · {amount}","journalLineMatchEntry":"Entry {name} · {amount}","journalMatchedBillsSection":"Matched Bills","journalMatchedBillEntry":"Journal entry","journalMatchedBillReference":"Vendor reference","journalMatchedBillAmount":"Amount","journalApplyToBillBanner":"This entry can settle {count} open vendor bill(s).","journalApplyToBill":"Apply to bill","journalApplyDialogTitle":"Apply to a vendor bill","journalApplyDialogDescription":"Links this entry's payable line to the bill. No new entry is posted.","journalApplySelectBill":"Bill","journalApplyBillOption":"{number} · {date} · open {open}","journalApplyAmount":"Amount to apply","journalApplyAmountHelp":"Up to {max}","journalApplyAmountRequired":"Enter an amount greater than zero.","journalApplyExceeds":"Amount exceeds what is still open on the line or the bill.","journalApplyConfirm":"Apply","journalApplyToast":"Entry applied to the bill.","journalApplyError":"Could not apply the entry.","journalUnapply":"Unapply","journalUnapplyTitle":"Remove from bill {number}?","journalUnapplyContent":"This entry will no longer settle the bill. Both entries stay posted and it can be applied again.","journalUnapplyToast":"Entry removed from the bill.","journalUnapplyError":"Could not remove the entry.","journalCounterpartyPlaceholder":"Link a vendor / staff / patient (optional)","journalTaxOptional":"Tax (optional)","journalTaxVat":"VAT","journalTaxBase":"Base","journalTaxLineTotal":"Line total","recurringFormBasicsCaption":"Name the template, pick a journal, and set the cadence.","recurringNamePlaceholder":"e.g. Monthly Rent Accrual","cadenceDaily":"Daily","cadenceWeekly":"Weekly","cadenceMonthly":"Monthly","cadenceQuarterly":"Quarterly","cadenceYearly":"Yearly","recurringDayOfWeek":"Day of Week","recurringStartingMonth":"Starting Month","recurringQuarterlyHelper":"Fires this month, then every 3 months (e.g. Jan → Jan/Apr/Jul/Oct).","recurringMonthLabel":"Month","recurringFireLastDay":"Fire on last day of month","recurringFireLastDayHelper":"Use the actual month-end (28-31) instead of a fixed day. Ideal for rent, depreciation and month-end accruals.","recurringDayOfMonthLabel":"Day of Month (1-28)","recurringDayOfMonthHelper":"Day the entry is generated. Capped at 28 so it fires every period, February included.","recurringStartDateLabel":"Start date (optional)","recurringStartDateHelper":"The template won't generate before this date. Leave empty to start on the next due day.","recurringNotesLabel":"Notes","recurringNotesPlaceholder":"Internal notes","recurringActiveLabel":"Active","recurringFormLinesCaption":"Every generated entry nets to zero (sum of debits = sum of credits).","recurringFilterAll":"All","recurringFilterActive":"Active","recurringFilterInactive":"Inactive","statusAuthorized":"Authorized","authorizeMonthConfirmTitle":"Authorize this month?","authorizeMonthConfirmBody":"Authorizing locks the period from further edits. Continue?","editTemplate":"Edit Template","saveButton":"Save","dailyCloseActions":"Daily close actions","dailyCloseApproveConfirmTitle":"Approve daily close?","dailyCloseCancel":"Cancel","dailyCloseApproveConfirmDescription":"Approve the daily close for {branch}? This locks the day’s transactions.","reconciliationRowOperational":"Operational","reconciliationRowLedger":"Ledger","contactSalesFailed":"We couldn't send your request. Please try again, or email us directly at sales@clinicwave.com.","billingPlanUpdated":"Plan updated successfully.","billingPreviewFailed":"We could not work out what this change would cost. Nothing has been changed.","billingPlanChangeFailed":"We could not change your plan. Nothing has been charged.","msgTemplatesTitle":"Message Templates","msgTemplatesDescription":"WhatsApp templates stay in sync with Meta both ways: build or edit here and we push it to Meta for approval; anything you create in Meta Business Suite is pulled in automatically.","msgTemplatesSyncFromMeta":"Sync from Meta","msgTemplatesSyncing":"Syncing…","msgTemplatesSyncStarted":"Sync started. The list refreshes shortly.","msgTemplatesSyncFailed":"Sync failed","msgTemplatesBuild":"Build template","msgTemplatesEditOnMeta":"Edit on Meta","msgTemplatesSendingToMeta":"Sending to Meta…","msgTemplatesSubmitToMeta":"Submit to Meta","msgTemplatesSaveToMeta":"Save to Meta","msgTemplatesSubmitted":"Template submitted to Meta, pending approval.","msgTemplatesUpdated":"Template updated on Meta. It returns to pending until re-approved.","msgTemplatesSubmitFailed":"Failed to submit template.","msgTemplatesDeleteOnMeta":"Also delete on Meta","msgTemplatesDeleteOnMetaHint":"Leave this off to remove it only from this clinic. The next sync will bring it back from Meta.","msgTemplatesNoneTitle":"No templates yet","msgTemplatesNoneDescription":"Build your first WhatsApp template, or sync the ones already on your WhatsApp Business account.","msgTemplatesColKey":"Template","msgTemplatesColChannel":"Channel","msgTemplatesColLanguage":"Language","msgTemplatesColSource":"Source","msgTemplatesColStatus":"Meta status","msgTemplatesColQuality":"Quality","msgTemplatesColUpdated":"Updated","msgTemplatesSourceManual":"Manual","msgTemplatesSourceMeta":"Meta","msgTemplatesSourcePlatform":"Platform","msgTemplatesRejectionReason":"Rejection reason","msgTemplatesNotSendable":"Not usable for sending until Meta approves it.","msgTemplatesEditBlocked":"Meta only allows edits once a template is approved, rejected or paused.","msgTemplatesWhatsappNumber":"WhatsApp number","msgTemplatesName":"Template name","msgTemplatesNameHint":"Lowercase letters, numbers and underscores only.","msgTemplatesNameLocked":"Meta does not allow renaming a template. Create a new one instead.","msgTemplatesCategory":"Category","msgTemplatesLanguage":"Language","msgTemplatesHeader":"Header","msgTemplatesHeaderText":"Header text","msgTemplatesBody":"Body","msgTemplatesBodyHint":"Use {'{{1}}'} {'{{2}}'} for variables.","msgTemplatesSamples":"Sample values (one per line)","msgTemplatesSamplesHint":"Meta requires one example value per body variable. Put each on its own line; a value may contain commas.","msgTemplatesFooter":"Footer (optional)","msgTemplatesEntityName":"WhatsApp template","msgTemplatesSectionBasics":"Message","msgTemplatesSectionBasicsCaption":"Everything Meta needs to review the template.","msgTemplatesSectionPresentation":"Header & footer","msgTemplatesSectionPresentationCaption":"Optional framing around the message body.","msgTemplatesSectionButtonsCaption":"Up to 10 buttons. Quick replies start a chat; URL and phone buttons act outside it.","msgTemplatesBodyPlaceholder":"Hi '{{1}}', your appointment is confirmed for '{{2}}'.","msgTemplatesHeaderTextHint":"No emoji, line breaks or formatting. Meta rejects those in a header.","msgTemplatesFooterHint":"Marketing templates should offer a way to opt out.","msgTemplatesButtonUrl":"URL","msgTemplatesButtonUrlHint":"A fixed URL is baked into the approved template. Use '{{1}}' to fill it per message.","msgTemplatesButtonPhone":"Phone number","msgTemplatesHeaderMediaLocked":"This header is an uploaded file. It is kept as-is; change it in WhatsApp Manager.","msgTemplatesButtonsPreserved":"{types} button(s) are kept unchanged. This form cannot edit them.","msgTemplatesButtons":"Buttons","msgTemplatesAddButton":"Add button","msgTemplatesButtonType":"Type","msgTemplatesButtonText":"Button text","msgTemplatesBuilderTitle":"Build WhatsApp template","msgTemplatesBuilderEditTitle":"Edit WhatsApp template","msgTemplatesBuilderDescription":"Compose a template and submit it to Meta for approval. It appears here as pending until approved.","msgTemplatesBuilderEditDescription":"Meta keeps the name and language fixed. Editing the content sends it back for approval.","msgTemplatesFilterSource":"Source","msgTemplatesFilterStatus":"Meta status","msgTemplatesFilterChannel":"Channel","msgTemplatesLocalEntityName":"Message copy","msgTemplatesLocalSectionTitle":"Template copy","msgTemplatesMessageSection":"Message","msgTemplatesLocalSectionCaption":"For SMS, email and push we render the body ourselves. For WhatsApp, Meta renders it, so point the key at an approved template name instead.","msgTemplatesKey":"Template key","msgTemplatesKeyHint":"The logical name the system asks for, e.g. booking_reminder.","msgTemplatesLanguageHint":"ISO code. Meta locales such as en_US are kept exactly as Meta stores them.","msgTemplatesProviderName":"Meta template name","msgTemplatesProviderNameHint":"Must match a template that already exists and is approved on your WhatsApp Business account.","msgTemplatesSubject":"Subject","msgTemplatesNotes":"Notes","msgTemplatesActive":"Active","msgTemplatesBodyLocalHint":"The text we send. Use {'{{1}}'} {'{{2}}'} for values filled in at send time.","msgTemplatesBodyWhatsappHint":"Reference copy only. Meta renders the approved template. Edit the real content with Edit on Meta.","msgTemplatesAddLocal":"Add message copy","msgTemplatesEditCopy":"Edit copy","msgTemplatesDetailsTab":"Details","msgTemplatesActions":"Actions","msgTemplatesChannelEmail":"Email","msgTemplatesChannelPush":"Push","msgTemplatesChannelSms":"SMS","msgTemplatesChannelTelegram":"Telegram","msgTemplatesChannelWhatsapp":"WhatsApp","msgTemplatesClearFilters":"Clear all","msgTemplatesFilterTitle":"Filter templates","msgTemplatesRefresh":"Refresh","msgTemplatesStatusApproved":"Approved","msgTemplatesStatusDisabled":"Disabled","msgTemplatesStatusPaused":"Paused","msgTemplatesStatusPending":"Pending review","msgTemplatesStatusRejected":"Rejected","msgTemplatesStatusUnknown":"Unknown","msgTemplatesSyncDone":"Sync finished. The list is up to date.","msgTemplatesSyncRunning":"Syncing from Meta…","msgTemplatesSyncStillRunning":"Meta is still responding. The list updates on its own, so you can carry on working.","msgTemplatesChannelAdsConversion":"Ad conversion","msgTemplatesAccessLoading":"Checking your permissions…","msgTemplatesNoWriteAccess":"Your role can view message templates but not change them.","msgTemplatesSyncLocked":"A sync is already running. The button unlocks when it finishes or after a minute.","quickRepliesTitle":"Quick Replies","quickRepliesDescription":"Saved answers agents insert in the inbox with \"/\". Assign them to teams, or leave them open to everyone.","quickRepliesAdd":"Add quick reply","quickRepliesNoneTitle":"No quick replies yet","quickRepliesNoneDescription":"Add the answers your team types most often, so they are one keystroke away in the inbox.","quickRepliesSearch":"Search title, message or author…","quickRepliesFilterTitle":"Filter quick replies","quickRepliesFilterTeams":"Teams","quickRepliesTeamsPlaceholder":"Pick teams…","quickRepliesColTitle":"Title","quickRepliesColMessage":"Message","quickRepliesColTeams":"Teams","quickRepliesAllTeams":"All teams","quickRepliesAttachment":"Attachment","quickRepliesColCreatedBy":"Created by","quickRepliesColUpdated":"Last updated","quickRepliesSectionContent":"Reply","quickRepliesSectionContentCaption":"What the agent sees in the picker, and what gets sent.","quickRepliesTitlePlaceholder":"e.g. Opening hours","quickRepliesTitleHint":"Shown in the inbox picker. Keep it short and searchable.","quickRepliesMessagePlaceholder":"e.g. We are open every day from 10:00 to 22:00.","quickRepliesMessageHint":"Required unless the reply carries an attachment.","quickRepliesSectionAudience":"Visibility","quickRepliesSectionAudienceCaption":"Who can use this reply, and which words bring it up.","quickRepliesSectionAi":"AI","quickRepliesSectionAiCaption":"How the AI assistant may use this reply.","quickRepliesTeamsHint":"Leave empty to offer it to every team.","quickRepliesTeamsHintOwnTeams":"Pick at least one of your teams. Only supervisors can offer a reply to every team.","quickRepliesOtherTeam":"This reply is shared with a team you don't manage.","quickRepliesKeywords":"Keywords","quickRepliesKeywordsPlaceholder":"Type a keyword and press Enter","quickRepliesKeywordsHint":"Topics this reply answers. Up to 20, each up to 60 characters.","quickRepliesAiEnabled":"AI can send this reply","quickRepliesAiEnabledHint":"Lets the AI assistant send this reply's attachment on its own.","quickRepliesAiKey":"Used by the AI as","quickRepliesAiKeyHint":"The AI sends this card word for word whenever a customer asks that price, so it must contain the price in AED.","quickRepliesAiKeyNone":"Not used by the AI","quickRepliesAiKeyUsedBy":"on “{title}”","quickRepliesEntityName":"Quick Reply","quickRepliesDetailsTab":"Details","quickRepliesActions":"Actions","quickRepliesYes":"Yes","quickRepliesNo":"No","quickRepliesSupervisorOnly":"Only supervisors of a messaging team can add, edit or delete quick replies.","quickRepliesAccessLoading":"Checking your permissions…","quickRepliesNoWriteAccess":"Your role can view quick replies but not change them.","quickRepliesAccessUnavailable":"Couldn't confirm your supervisor status. Reload the page to try again.","quickRepliesMessageAsSent":"Shown exactly as the customer receives it.","quickRepliesAuthorLine":"Created by {author} · Last updated {date}","purchaseExpenseMappingTitle":"Purchase Expense Mapping","purchaseExpenseMappingDescription":"Which expense account each product category's purchases are booked to. A category with no mapping (its own or inherited from a parent) falls back to the General Expense account above, which is why unmapped purchases all land on one P&L line.","purchaseExpenseMappingUnmappedCount":"{count} categories have no expense account and fall back to the default.","purchaseExpenseMappingUnmappedOnly":"Unmapped only","purchaseExpenseMappingEmpty":"No product categories yet.","purchaseExpenseMappingInherited":"Inherited from {name}","purchaseExpenseMappingDefaultPlaceholder":"Default expense account","purchaseExpenseMappingAccountHelper":"Leave empty to inherit from the parent category, or fall back to the workspace default.","purchaseExpenseMappingSaved":"Expense account mapping updated","purchaseExpenseMappingLoadError":"We couldn't load the category coverage. Please try again.","purchaseExpenseMappingRetry":"Retry","platformAutomations":{"pageTitle":"Built-in automations","pageDescription":"Reminders, alerts and follow-ups that come with every plan. Switch each one on or off and tune it for your clinic.","colName":"Name","colCategory":"Category","colDescription":"Description","colStatus":"Status","emptyTitle":"No automations configured","emptyDescription":"Automations are registered by the platform. Contact support to enable new ones.","configure":"Configure","metaSchedule":"Schedule","metaBranches":"Branches","branchesAll":"All branches","branchesCount":"{count, plural, one {# branch} other {# branches}}","metaRateLimit":"Rate limit","rateLimitValue":"{count} per {minutes} min","metaLastRun":"Last run","entityName":"Automation","sectionDetails":"Details","lockedHint":"Locked. Only the switch and a few settings can be changed","triggerLabel":"Trigger","sectionStatus":"Status","statusCaption":"Switch this automation on or off for your clinic.","enabledLabel":"Active","senderTitle":"Sender account","senderCaption":"Which connected WhatsApp or SMS account this automation sends from. Manage accounts in Settings → Integrations.","senderLabel":"Sender account","senderNone":"No accounts are connected for this channel. Add one in Settings → Integrations.","senderDefaultHelp":"Leave blank to use the clinic’s default account for this channel.","senderUseDefault":"Use the default account","senderDefaultSuffix":"(default)","sectionSchedule":"Schedule","scheduleCaption":"When should this automation run?","scheduleTypeLabel":"Schedule type","sectionRateLimit":"Rate limit","rateLimitCaption":"Limit how often this automation runs (0 = no limit).","maxRunsLabel":"Max runs","maxRunsHelp":"Maximum runs per period. 0 = no limit.","periodLabel":"Period (minutes)","periodHelp":"Length of the rate-limit window in minutes. 0 = no limit.","sectionSettings":"Settings","settingsCaption":"Options this automation offers for your clinic.","tabBasics":"Basics","fieldCode":"Code","fieldStatus":"Status","fieldSchedule":"Schedule","options":"Options","editAutomation":"Edit automation","idLabel":"ID {id}","executionsTitle":"Activity","executionsDescription":"Every time an automation ran: when, what happened, and why it did nothing when it did nothing.","colAutomation":"Automation","colStarted":"Started","colDuration":"Duration","colTrigger":"Trigger","colCorrelation":"Correlation ID","colError":"Error","filterCode":"Automation code","filterStatus":"Status","filterAll":"All","durationUnit":"ms","noExecutionsTitle":"No runs to show","noExecutionsDescription":"Runs appear here once a switched-on automation is triggered. Try another automation or status.","statusStarted":"Started","statusSuccess":"Succeeded","statusPartialSuccess":"Partly succeeded","statusFailed":"Failed","statusSkipped":"Skipped","statusRateLimited":"Rate limited","statusQuotaBlocked":"Quota reached","statusDryRun":"Preview","statusWaiting":"Waiting","remindersTitle":"Appointment reminders","remindersCaption":"Automatic WhatsApp reminders so patients don't miss their visit. A reminder that fails for a temporary reason is re-sent automatically, and nobody gets the same reminder twice.","remindersTurnOnAll":"Turn on all reminders","remindersAllOn":"All reminders are on","reminderMorning":"Morning of the visit","reminderMorningHint":"Today's consultations","reminderTelehealth":"Video visits","reminderTelehealthHint":"Today's telehealth visits, with the meeting link","reminderService":"Day before a treatment","reminderServiceHint":"Tomorrow's treatments and services","reminderEvening":"Evening before the visit","reminderEveningHint":"Tomorrow's consultations","reminderSendsAt":"Sends at","reminderLastRunNever":"Not run yet","reminderLastRunNothing":"Last run: no visits to remind","reminderLastRunSummary":"Last run: {sent} sent · {notSent} not sent","reminderLastRunWaiting":"Last run: sending…","reminderLastRunFailed":"Last run failed","reminderSkipReasons":"Not sent","reminderSendErrors":"Failed to send","skipAlreadySent":"Already reminded today","skipBookedAfterSendHour":"Booked after the reminder went out","skipNoPhone":"No phone number","skipNoTimeslot":"No appointment time","skipNoServiceProduct":"No service on the booking","skipIncompletePayload":"Booking details incomplete","skipDuplicateMessage":"Same message already sent","skipInFlight":"Being sent by another pass","skipDemoTenant":"Demo clinic, number not allowed","skipSessionUnavailable":"Visit no longer available","skipSendingDisabled":"Sending is turned off","colDetails":"Details","filterAllAutomations":"All automations","category":{"booking":"Bookings","sales":"Sales","payment":"Payments","marketing":"Marketing","messaging":"Messaging","notification":"Notifications","accounting":"Accounting","inventory":"Inventory","clinical":"Clinical","custom":"Custom"}},"paymentMethodSettlementTitle":"Card & BNPL accounts","paymentMethodSettlementDescription":"Where each card / BNPL method's sales wait until the acquirer, Tabby or Tamara pays out. The sale debits this account gross; when the payout lands, map the bank line to the same account and journal the fee out of it. This card shows the account posting actually uses today and which rule supplied it.","paymentMethodSettlementOrderTitle":"Resolution order","paymentMethodSettlementOrderIntro":"For every deferred-settlement method the account is resolved in this order; the first tier that answers wins:","paymentMethodSettlementTierBranchMapping":"Branch-scoped mapping on the method (per-branch override)","paymentMethodSettlementTierLegacyMapping":"Business-wide legacy mapping on the method (frozen, retire it here)","paymentMethodSettlementTierMethod":"The method's own settlement account (set here)","paymentMethodSettlementTierParentMethod":"Inherited from the parent method (Card / BNPL template)","paymentMethodSettlementTierAnchor":"POS / BNPL clearing fallback in Payment Clearing Accounts","paymentMethodSettlementTierHeuristic":"Card only: an account named “…clearing…” on the chart (last resort)","paymentMethodSettlementEmpty":"No card or BNPL payment methods yet.","paymentMethodSettlementFamilyCard":"Card","paymentMethodSettlementFamilyBnpl":"BNPL","paymentMethodSettlementClearing":"Settlement account","paymentMethodSettlementUnresolved":"Not resolved. Sales with this method are refused until an account is set","paymentMethodSettlementSource":"via {tier}","paymentMethodSettlementWarnLegacy":"A legacy mapping overrides the method's own setting. Retire it to make the setting below the single source of truth. The resolved account stays exactly the same.","paymentMethodSettlementWarnUnpostable":"The resolved account is deprecated or a control account; postings will be refused.","paymentMethodSettlementWarnHeuristic":"Resolved by name guessing. Set the account explicitly.","paymentMethodSettlementRetire":"Retire legacy mapping","paymentMethodSettlementRetired":"Legacy mapping retired. The method's own setting now answers","paymentMethodSettlementEdit":"Change account","paymentMethodSettlementDialogTitle":"Account for {name}","paymentMethodSettlementDialogDescription":"Sales with this method are debited to this account. Clear it from the bank statement when the payout lands. Clear the field to inherit from the parent method or fall back to the clearing defaults.","paymentMethodSettlementClearingLabel":"Settlement (clearing) account","paymentMethodSettlementClearingHelper":"Asset: a receivable from the acquirer or provider. Never a bank or cash account.","paymentMethodSettlementSave":"Save","paymentMethodSettlementCancel":"Cancel","paymentMethodSettlementSaved":"Account updated","paymentMethodSettlementLoadError":"We couldn't load the settlement accounts. Please try again.","paymentMethodSettlementRetry":"Retry","settingsCardNeedsLedger":"Hidden. Changing GL routing needs the Accounting Ledger permission.","messagingPickUpChat":"Pick up chat","messagingTakeOverFromAi":"Take this chat over from the AI","messagingAssignToAgent":"Assign to agent","hrCommissionMultiplier":"Commission multiplier","hrCommissionMultiplierHelp":"Applied to the resolved commission rate: 1.00 = full, 0.50 = half, 1.50 = 150%. Leave empty for 1.00.","hrBreakdown":"Breakdown","hrInvoiceRef":"Invoice #{id}","hrExclusionReason":"Excluded: {reason}","hrCarryForwardLine":"{label} (carried forward)","hrAdjustmentTypeCarryForward":"Carried forward","hrNoCommissionsInEntry":"No commissions in this entry.","hrExcludedCommissions":"Excluded commissions","hrExcludeCommission":"Exclude from this pay run","hrIncludeCommission":"Include in this pay run","hrExcludeCommissionDescription":"The commission stays pending and becomes eligible again in the next pay run.","hrCommissionExcluded":"Commission excluded from the pay run","hrCommissionExcludeFailed":"Could not exclude the commission","hrCommissionIncluded":"Commission included in the pay run","hrCommissionIncludeFailed":"Could not include the commission","hrReason":"Reason","hrReasonPlaceholder":"Briefly explain why…","hrReasonRequired":"Please provide a reason","hrPaymentDetails":"Payment details","hrPaymentDetailsCaption":"The entries being paid are marked as paid, and a salary transfer is recorded against the default settlement account when accounting is configured.","hrPaymentMethod":"Payment method","hrPaymentMethodBankTransferBatch":"Bank transfer (batch)","hrPaymentReference":"Reference","hrPaymentReferencePlaceholder":"Bank batch ID, cheque number, etc.","hrPaymentReferenceHelp":"Optional. Stored on every entry for reconciliation.","hrBankAndWps":"Bank & WPS","hrAllowances":"Allowances","hrAdjustmentTypeLoan":"Loan repayment","hrAdjustmentTypeFine":"Fine","hrAdjustmentTypeUnpaidLeave":"Unpaid leave","hrAdjustmentSystemLine":"Added automatically. Change it from the loan or the previous pay run.","hrUnpaidLeaveDays":"Unpaid leave days","hrUnpaidLeaveLabelHelp":"Optional. A label is generated from the days if left empty.","hrUnpaidLeaveRateLoading":"Loading the daily rate…","hrUnpaidLeaveDailyRate":"Daily rate ({days}-day period):","hrUnpaidLeaveDeduction":"Deduction:","hrWpsFile":"WPS file","hrMakerCheckerForbidden":"You submitted this pay run, so someone else (e.g. Finance) must approve it.","hrNoPermissionToApprovePayRun":"Your role can't make this change to the pay run.","channelsTitleWhatsapp":"WhatsApp Business Accounts","channelsTitleFacebook":"Facebook Pages","channelsTitleInstagram":"Instagram Accounts","channelsAddNew":"Add channel","channelsSearchPlaceholder":"Search channels...","channelInfoSection":"Channel info","channelNameLabel":"Channel name","channelNamePlaceholder":"e.g. Reception WhatsApp","channelAuthenticate":"Connect account","channelConnectWhatsapp":"Connect WhatsApp","channelConnectFacebook":"Connect with Facebook","channelConnectInstagram":"Connect with Instagram","channelConnected":"Connected","channelSelectAccountLabel":"Account","channelSelectAccountPlaceholder":"Select an account","channelNoAccountsFound":"No accounts were found for this Meta login. Make sure you are an admin of the Page or Instagram account and allowed all requested permissions.","channelLoadingAccounts":"Loading your accounts...","channelHelpTitle":"Having trouble connecting?","channelHelpBody":"We can help. Contact us at","channelConnectedSuccess":"Channel connected successfully","channelReconnectedSuccess":"Channel reconnected successfully","channelConnectedElsewhere":"This account is already connected to another workspace. Disconnect it there first, or contact support.","channelMetaErrorCancelled":"Connection cancelled.","channelMetaErrorExpired":"The connection took too long. Please try again.","channelMetaErrorGeneric":"Couldn't connect to Meta. Please try again.","channelMetaErrorNotConfigured":"Meta connection isn't available right now. Please contact support.","channelMetaErrorAccounts":"We couldn't read your accounts from Meta. Please try again.","channelMetaErrorAccountMismatch":"Choose the same account this channel is connected to. To connect a different one, add a new channel.","channelMetaErrorSession":"Your Meta sign-in expired. Please connect again.","channelWhatsappConfigMissing":"WhatsApp connection isn't configured. Please contact support.","channelWhatsappPopupError":"WhatsApp setup didn't finish. Please try again.","channelReconnectTitle":"Connection","channelReconnectButton":"Reconnect account","channelReconnectRedirecting":"Redirecting to Meta...","channelReconnectHint":"Sign in again to refresh this channel's connection. Choose the same account it is connected to.","channelSelectAccountTitle":"Select the account","channelUpdate":"Update","channelMetaErrorManaged":"This channel runs on your business System User and can't be reconnected with a personal login. Contact support if it stopped working.","channelTokenStatusInvalid":"Connection broken","channelTokenStatusExpiring":"Expires soon","channelTokenStatusMissingScopes":"Missing permissions","channelTokenStatusHint":"Meta access for this channel needs attention. Reconnect it to keep messages flowing.","channelManagedNote":"This channel runs on your business's permanent Meta connection. It doesn't depend on anyone's personal login and doesn't need reconnecting.","reportsPivTotal":"Total","reportsPivMetric":"Metric","reportsPivGroup":"Group","reportsPivExpandAll":"Expand all","reportsPivCollapseAll":"Collapse all","reportsPivExpandRow":"Expand {label}","reportsPivCollapseRow":"Collapse {label}","reportsPivFormatMetric":"Format {label}","reportsPivNoMetrics":"Select at least one metric to see values.","reportsPivSortBy":"Sort by {metric} ({period})","reportsPivExpandGroup":"Expand {name}","reportsPivCollapseGroup":"Collapse {name}","reportsPivViewAllIn":"View all items in {name}","reportsTblTotal":"Total","reportsTblTotalOf":"Total {label}","reportsTblGroupTotal":"{group} · Total","reportsTblGroupFallback":"Group","reportsTblThisGroup":"this group","reportsTblViewGroupItems":"View all items in {group}","reportsTblOpenJournalEntry":"Open journal entry","reportsTblViewRowRecords":"Click to view all records for this row","reportsTblExpandRow":"Expand row","reportsTblCollapseRow":"Collapse row","reportsTblExpandAccount":"Expand account","reportsTblCollapseAccount":"Collapse account","reportsTblMetric":"Metric","reportsTblNoData":"No data available.","reportsTblAllColumnsHidden":"All {count} value columns are hidden.","reportsTblShowAllColumns":"Show all columns","reportsTblLoadMoreFailed":"Could not load more rows.","reportsTblRetry":"Retry","staffPanelDischargeTitle":"Discharge Patient","staffPanelDischargeNotReady":"Discharge opens once the patient is marked Arrived (or the visit is Done). Set the status to Arrived and save first.","staffPanelDischargeBack":"Back","staffPanelDischargeSubmit":"Discharge","staffPanelDischargeReady":"Everything needed to close this visit is in place.","staffPanelDischargeBlockedTitle":"Complete these before discharging","staffPanelDischargeFailed":"The visit could not be discharged. Check the items above and try again.","staffPanelOpenVisitsTitle":"{count, plural, one {# visit from an earlier day is still open} other {# visits from earlier days are still open}}","staffPanelOpenVisitsHint":"Patients who were checked in but never discharged. Close each visit, or complete what it is missing.","staffPanelOpenVisitsReview":"Review","staffPanelOpenVisitsDialogTitle":"Open visits","staffPanelOpenVisitsEmpty":"No open visits","staffPanelOpenVisitsEmptyHint":"Every visit from earlier days has been discharged.","staffPanelOpenVisitsPatient":"Patient","staffPanelOpenVisitsVisit":"Visit","staffPanelOpenVisitsDaysOpen":"{count, plural, one {# day open} other {# days open}}","staffPanelOpenVisitsMissing":"Missing","staffPanelOpenVisitsReady":"Ready to discharge","staffPanelOpenVisitsDischarge":"Discharge","staffPanelOpenVisitsEntity":"Open visits","serviceReportStepReport":"Service report","serviceReportStepUsedMaterials":"Used materials","serviceReportSwapStepOrder":"Do the other step first","serviceReportSaveAndContinue":"Save & continue","invoiceDeliveryNoDispensePermission":"A prescription medicine is handed over by staff with the Hand Over Prescription Medicine permission (reception, nurses, pharmacy).","staffPanelExactQtyRequired":"Enter the amount actually used. This material is tracked exactly.","staffPanelExactQtyRequiredToast":"Enter the amount of {name} actually used before saving.","staffPanelDischargeCheckFailed":"We couldn’t check what still blocks this discharge. Try again before discharging.","messageTemplates":{"detail":{"entityPlural":"Message templates"},"names":{"entity":"Message template","title":"Message Templates"},"form":{"footerPlaceholder":"Reply STOP to opt out"},"validation":{"required":"Required","maxChars":"Max {max} characters","keyFormat":"Lowercase letters, numbers, dots and underscores only","providerNameRequired":"WhatsApp templates must reference a Meta-approved template name","bodyRequiredForChannel":"This channel renders the body itself, so a body is required","nameFormat":"Lowercase letters, numbers and underscores only","nameUnderscore":"Cannot start or end with an underscore","bodyRequired":"Body is required","maxButtons":"Maximum 10 buttons","headerTextRequired":"Text header requires header text","channelRequired":"Select a WhatsApp number"}},"messagingTeams":{"detail":{"entityPlural":"Teams","teamActions":"Team actions","basics":"Basics","name":"Name","members":"Members","supervisors":"Supervisors"},"list":{"searchPlaceholder":"Search teams...","staffSearchPlaceholder":"Search staff…","description":"Group agents into inbox teams. Routing mode, SLA and working hours are set per team under Routing & Hours.","routingHours":"Routing & Hours","add":"Add inbox team","emptyTitle":"No inbox teams yet","emptyDescription":"Create a team to route WhatsApp, Instagram and Facebook conversations to a group of agents.","memberCount":"{count, plural, one {# member} other {# members}}"},"assignmentModes":{"auto_online":"Auto-assign to least busy online agent","supervisor_manual":"Manual: supervisor distributes","open_pool":"Open pool: anyone can pick up","full_ai":"Full AI: escalate to team when needed"},"settingsPage":{"title":"Messaging teams","description":"Per-team rules for chat routing, AI behaviour, agent privileges and working hours. Settings apply only to the selected team.","emptyTitle":"No inbox teams yet","emptyDescription":"Routing, SLA and working-hours rules are set per team. Create a team first.","createTeam":"Create a team","team":{"title":"Team","caption":"Choose which messaging team you want to configure. Each team has its own rules.","active":"Active team"},"assignment":{"title":"Chat assignment","caption":"How new conversations are distributed to this team.","mode":"Routing mode","modesHelp":"Open pool: every member sees and picks up any chat. Auto-assign: least busy online agent. Supervisor: only the supervisor distributes. Full AI: answers automatically and escalates when it can't help.","aiSuggestions":"AI reply suggestions","aiSuggestionsHelp":"Let the AI draft suggested replies for agents to review and send. Applies to human assignment modes only."},"privileges":{"title":"Agent privileges","caption":"What individual agents can see and do within this team.","privacy":"Privacy mode","privacyHelp":"Agents only see their own chats. There is no All assigned tab, and Closed shows only chats last assigned to them.","contactDirectly":"Allow agents to contact customers directly","contactDirectlyHelp":"Agents can start a new conversation with a customer using your message templates.","voiceMemos":"Allow voice memos on WhatsApp","voiceMemosHelp":"Agents can record and send voice memos in real time on WhatsApp chats."},"capacity":{"title":"Auto-assign capacity","caption":"Per-agent load and retry policy for chats that remain unassigned.","maxChats":"Max chats per agent","maxChatsHelp":"0 removes the cap.","retryHours":"Retry every (hours)","retryMinutes":"Retry every (minutes)"},"sla":{"title":"Service level","caption":"Response deadline for a new chat (no agent has replied yet), used for the overdue badge, the overdue filter and, on auto-assign teams, handing an unanswered chat to another agent.","minutes":"Target response (minutes)","seconds":"Target response (seconds)","activeChat":"Separate deadline for active chats","activeChatHelp":"Once an agent has replied, the customer's next message gets this deadline instead, so follow-ups can take a little longer.","activeChatMinutes":"Active chat deadline (minutes)"},"hours":{"title":"Working hours","caption":"Weekly availability of this team. Bots can hand chats over to agents only during these windows.","start":"Start","end":"End","closed":"Closed all day"},"days":{"sunday":"Sunday","monday":"Monday","tuesday":"Tuesday","wednesday":"Wednesday","thursday":"Thursday","friday":"Friday","saturday":"Saturday"}},"names":{"entity":"Inbox team","title":"Inbox Teams"},"form":{"basicsTitle":"Basics","basicsCaption":"Name the team the way agents will see it in the inbox filters and assignment menus.","name":"Team Name","namePlaceholder":"e.g. Call Center","active":"Active","activeHelp":"Inactive teams stop receiving new conversations but keep their history.","membersTitle":"Members","membersCaption":"Agents who can see and answer this team's conversations.","members":"Members","supervisors":"Supervisors","supervisorsPlaceholder":"Pick from the members above…","addMembersFirst":"Add members first","supervisorsHelp":"Supervisors can reassign chats and see every conversation in the team."},"columns":{"name":"Name","members":"Members","activeCount":"({count} active)","status":"Status"}},"paymentMethods":{"detail":{"paymentMethodActions":"Payment method actions","basics":"Basics","name":"Name","code":"Code","type":"Type"},"enums":{"methodType":{"cash":"Cash","card":"Card","bank_transfer":"Bank Transfer","bnpl":"Buy Now Pay Later","wallet":"Wallet","gift_card":"Gift Card","cheque":"Cheque","insurance":"Insurance","pos":"POS Terminal","other":"Other","customer_credit":"Customer Credit"}},"entity":"Payment method","title":"Payment Methods","form":{"detailsTitle":"Details","name":"Name","namePlaceholder":"e.g. Visa Card","code":"Code","codePlaceholder":"e.g. visa","codeLocked":"Code cannot be changed after creation","methodType":"Method Type","methodTypePlaceholder":"Select type","order":"Display Order","orderPlaceholder":"e.g. 1","requiresReference":"Requires Reference Number"},"columns":{"name":"Name","code":"Code","type":"Type","order":"Order","status":"Status"},"list":{"add":"Add payment method","emptyTitle":"No payment methods","emptyDescription":"No payment methods have been configured yet.","codeSubtitle":"Code: {code}"}},"quickReplies":{"detail":{"entityPlural":"Quick replies"},"names":{"entity":"Quick reply","title":"Quick Replies"},"validation":{"required":"Required","messageRequired":"A quick reply needs a message","aiNeedsAttachment":"Only a reply with an attachment can be sent by the AI"}},"taxRates":{"detail":{"taxRateActions":"Tax rate actions","basics":"Basics","name":"Name","rate":"Rate","type":"Type","scope":"Scope","inclusive":"Inclusive","status":"Status"},"enums":{"taxType":{"vat":"VAT","withholding":"Withholding","excise":"Excise","other":"Other"},"scope":{"sales":"Sales","purchase":"Purchase","both":"Both"}},"entity":"Tax rate","title":"Tax Rates","form":{"identityTitle":"Identity","identityCaption":"A short label and the percentage to apply. Shown on invoices and the VAT return.","name":"Name","namePlaceholder":"e.g. VAT 5%","nameHelp":"Displayed on invoice lines and the tax-rule dropdown.","rate":"Rate","rateHelp":"Percentage applied to the line base amount. Use 0 for zero-rated supplies.","classificationTitle":"Classification","classificationCaption":"How the tax is categorized and where it appears in the app.","taxType":"Tax Type","taxTypeHelp":"Used for tax reports and the VAT return. VAT is the default for most clinics.","scope":"Scope","scopeHelp":"Drives which documents the rate is offered on: Sales → customer invoices, Purchase → vendor bills, Both → either.","behaviorTitle":"Behavior","behaviorCaption":"How the rate is interpreted at invoice time.","inclusive":"Tax-inclusive","inclusiveHelp":"When on, the price already includes the tax and is split into base + tax at posting. When off, tax is added on top of the price.","active":"Active","activeHelp":"Inactive rules stay on historical invoices but are hidden from new ones."},"columns":{"name":"Name","rateCaption":"Rate: {rate}","rate":"Rate","type":"Type","scope":"Scope","inclusive":"Inclusive","exclusive":"Exclusive"},"list":{"description":"Per-tenant VAT and withholding-tax rules. Used by invoices and the VAT-return report.","seeding":"Seeding…","seedUae":"Seed UAE VAT","add":"Add tax rate","emptyTitle":"No tax rates yet","emptyDescription":"Add a rate manually, or click \"Seed UAE VAT\" in the header to bootstrap the standard 5% + zero-rated + exempt presets recognised by the UAE Federal Tax Authority."},"readOnly":{"title":"Tax Rates","banner":"Tax rates are system-managed. Contact support to add or modify tax rates.","name":"Name","ratePercent":"Rate (%)","inclusive":"Inclusive","emptyTitle":"No tax rates","emptyDescription":"No tax rates have been configured yet."}},"staffPanelOpenVisitsOpen":"Open visit","staffPanelOpenVisitsMineEmptyHint":"Nothing is waiting on you.","staffPanelOpenVisitsMineDialogTitle":"Visits waiting on you","staffPanelOpenVisitsMineHint":"Reception cannot close these visits until you record what is missing.","staffPanelOpenVisitsMineTitle":"{count, plural, one {# of your visits needs your record} other {# of your visits need your record}}","staffPanelOpenVisitsWaitingOnClinician":"for the treating clinician","staffPanelOpenVisitsViewBacklog":"Older","staffPanelOpenVisitsViewQueue":"Past week","staffPanelOpenVisitsBacklogEmptyHint":"No visit older than a week is open.","staffPanelDischargeFormTitle":"Discharge information","staffPanelDischargeFormIntro":"Discharging closes and completes every session of this visit for the patient today. The discharge summary is generated automatically. Add a note or plan of care only if needed, then confirm and submit.","staffPanelDischargeNoteLabel":"Discharge note (optional)","staffPanelDischargeNotePlaceholder":"Enter note here","staffPanelPlanOfCareLabel":"Plan of care (optional)","staffPanelPlanOfCarePlaceholder":"Plan of care","staffPanelGenerateDischargeSummary":"Generate discharge summary","staffPanelUploadPdfRequired":"Upload PDF *","staffPanelUploadFile":"Upload file","staffPanelDischargeConfirm":"I confirm that all submitted clinical data, medical records, and related information for this patient have been accurately completed, thoroughly reviewed, and approved by me","staffPanelOpenVisitsBacklogHint":"Open for more than a week. These no longer raise a warning, but each one stays open at DHA, with its package credit unused, until it is closed.","staffPanelOpenVisitsBacklogLink":"{count, plural, one {# older visit is still open} other {# older visits are still open}}","paymentMethodSettlementSharedTemplate":"Shared by every business in this workspace, so it takes no account: set it under Payment Clearing Accounts, or on a business-specific method.","business":{"title":"Business Management","description":"The identity of your clinic: profile, contact, currency, and the areas that define how it operates.","formSection":"Business details","profile":"Profile","name":"Name","industry":"Industry","about":"About","contactLocale":"Contact & locale","primaryEmail":"Primary Email","primaryPhone":"Primary Phone","currency":"Currency","timeZone":"Time Zone","legalTax":"Legal & tax identity","registeredAddress":"Registered Address","taxNumber":"Tax number","trn":"TRN","links":"Your links","noLinks":"No links added yet","website":"Website","instagram":"Instagram","facebook":"Facebook","tiktok":"TikTok","youtube":"YouTube","linkedin":"LinkedIn","keyAreas":"Key areas","areas":{"branches":{"title":"Branches & locations","description":"Addresses, working hours, per-branch currency & VAT"},"booking":{"title":"Booking rules","description":"Slot length, consultation fee, cancellation & no-show policy"},"resources":{"title":"Resources & rooms","description":"Rooms and equipment that gate online availability"},"branding":{"title":"Branding","description":"Logo, colours and the customer-facing booking page"}},"gallery":"Gallery","galleryImageAlt":"Gallery image {index}","logoUploadAria":"Upload or change brand logo","brandLogo":"Brand logo","logoChange":"Change","logoUpload":"Upload","clinicFallback":"Your clinic","logoSpec":"Square logo recommended · 512×512 · PNG, JPG or SVG · max 2 MB","generalInfo":"General info","namePlaceholder":"Enter the business name","industryPlaceholder":"Choose an industry","aboutPlaceholder":"A short description of your clinic","contactDetails":"Contact details","emailPlaceholder":"Enter email address","phonePlaceholder":"Enter mobile number","legalTaxCaption":"Printed on the letterhead of every invoice, receipt and voucher.","addressPlaceholder":"e.g. Office 101, Main Street, City","addressHelper":"The company address as it should appear on printed documents.","trnPlaceholder":"e.g. 100123456789003","trnHelper":"Tax Registration Number. Required on UAE tax invoices.","linkPlaceholder":"Enter the {name} address","uploadImage":"Upload image","galleryHint":"Recommended: JPG / PNG · max 2 MB · additional service images (1:1)","documents":"Printed documents","documentsCaption":"The languages prescriptions, invoices, consent forms and payslips are printed in.","documentLanguages":"Document languages","documentLanguagesPlaceholder":"Automatic ({languages})","documentLanguagesHelper":"Leave empty to follow the clinic's country. Now: {languages}.","defaultDocumentLanguage":"Default language","defaultDocumentLanguageHelper":"The language a document opens in unless another is chosen."},"paymentMethodSettlementSharedChip":"Shared by all businesses","savedView":{"saveTitle":"Save current view","updateTitle":"Update saved view","name":"Name","namePlaceholder":"e.g. Main branches, this month","description":"Description (optional)","descriptionPlaceholder":"e.g. Meta only, one row per campaign","descriptionHint":"A short one-liner, shown on hover in the views list.","scope":"Who can see this?","scopePersonal":"Only me","scopeTenant":"Everyone in the clinic","scopePersonalHint":"Visible only to you.","scopeTenantHint":"Visible to everyone in the clinic. Only you can edit or delete it, and it can't be a personal default.","makeDefault":"Open this report with this view by default","cancel":"Cancel","save":"Save view","update":"Update","saveFailed":"Could not save the view. Please try again."},"channelEntity":"Channel","channelRemove":"Remove channel","businessProductServiceEntity":"Product / service","businessProductTypeEntity":"Product type","cashbackRuleEntity":"Category rule","cashbackRuleDelete":"Delete rule","cashbackRuleDeleted":"Rule removed","galleryImageEntity":"Image","galleryImageRemoved":"Image removed","roleEntity":"Role","hrSettingsSearch":{"shiftTemplates":"Search shift templates...","jobTitles":"Search job titles...","holidays":"Search holidays...","departments":"Search departments...","breakTypes":"Search break types...","leaveTypes":"Search leave types...","teams":"Search teams...","staff":"Search staff…"},"rolePermissionsViewer":{"searchUsersPlaceholder":"Search users by name or email…","title":"Role details","tabs":{"overview":"Overview","users":"Users"},"lockedBanner":"This is a system role managed centrally. Clone it to create an editable copy.","cloneToCustomize":"Clone to customise","stats":{"users":"Users","features":"Features","menus":"Menu items","lookups":"Lookups","actions":"Actions","reports":"Reports"},"menuNote":"Each granted feature automatically appears in this role's sidebar menu. There is no separate menu picker; menu visibility follows feature access.","noOps":"no ops","sections":{"features":{"title":"Features","caption":"What this role can read / create / update / delete","empty":"No features granted."},"lookups":{"title":"Lookups","caption":"Cross-module read-only endpoints (e.g. dropdowns)","empty":"No cross-module lookups granted."},"actions":{"title":"Actions","caption":"Granular custom actions (e.g. patient.discharge)","empty":"No custom actions granted."},"reports":{"title":"Reports","empty":"No reports granted."},"permissions":{"title":"Raw permissions","caption":"Low-level permission codes (advanced)","empty":"No raw permissions assigned."}},"usersNoMatch":"No users match \"{search}\"","usersEmpty":"No users currently have this role","inactive":"Inactive","entityPlural":"Role","access":{"full":"Full access","none":"No access"},"ops":{"create":"Create","read":"View","update":"Edit","delete":"Delete"}},"campaignEventOverrides":{"searchPlaceholder":"Search by campaign name or id","title":"Per-campaign conversion events","description":"Override the conversion mapping for a single Meta campaign. Useful for A/B testing a different optimization signal. Campaigns without an override use the tenant-wide mapping above.","campaign":"Campaign","divergenceWarning":"This campaign's conversion definition differs from the tenant-wide default, so comparing its lead / CAC numbers directly against other campaigns may not be apples-to-apples."},"drillToolbar":{"searchPlaceholder":"Search in these records…","clearSearch":"Clear search","filteredBy":"Filtered by:","editHint":"Click to change this column filter","containsPlaceholder":"Contains…","equalsPlaceholder":"Exact value","rangeInvalid":"Must not be before the first value","filterByColumn":"Filter by column","clearColumn":"Clear"},"channelTemplates":{"searchPlaceholder":"Search template","title":"Templates","addNew":"Add new","emptyTitle":"No templates yet","emptyDescription":"Approved templates from WhatsApp Manager appear here."},"allocationTemplatesTitle":"Allocation templates","channelsEmpty":{"title":"No channels connected yet","description":"Connect your first account to start receiving messages here."},"reportsCatalogAll":"All reports","columns":{"paymentSource":"Payment source","type":"Type","glAccount":"GL account","status":"Status","name":"Name","cadence":"Cadence","lastRun":"Last Run","employee":"Employee","floatAmount":"Float amount","currentBalance":"Current balance","template":"Template","method":"Method","branches":"Branches","category":"Category","month":"Month","planned":"Planned","alertAt":"Alert at"},"treatmentPlanCouldNotLoadCart":"Could not add the treatment plan to the cart.","loyalty":{"title":"Loyalty program","description":"Tier benefits, points economy, anniversary & birthday rewards, and gift-card limits. Pause the whole program with one switch or fine-tune any rate.","master":{"title":"Master switch","caption":"Pause loyalty entirely. Customers earn no points and tier benefits stop applying until this is back on.","on":"Loyalty program is active","off":"Loyalty program is paused"},"purchase":{"title":"Points on purchase","caption":"How customers accumulate points by spending.","pointsPerUnit":"Points per 1 unit of currency","pointsPerUnitHelp":"Example: 0.5 means a 1000 AED invoice earns 500 points.","minInvoice":"Minimum invoice to earn points","minInvoiceHelp":"Invoices below this amount earn no points. Set 0 to reward every sale."},"lifecycle":{"title":"Referral & life-cycle rewards","caption":"Reward referrers when their friends buy, plus once-a-year anniversary and birthday treats.","referrerPoints":"Referrer points per 1 unit of spend","anniversaryPoints":"Anniversary points (per year)","anniversaryPointsHelp":"Awarded on each yearly signup anniversary.","birthdayDiscount":"Birthday discount","birthdayDiscountHelp":"Off the invoice when a customer buys on their birthday."},"giftCards":{"title":"Gift cards","caption":"Allowed range when a customer purchases a gift card from the customer app.","min":"Minimum gift card amount","max":"Maximum gift card amount"},"tiers":{"bronze":{"name":"Bronze","title":"Bronze tier","badge":"Entry tier","caption":"Every customer joins as Bronze on signup. There are no criteria. Set the baseline discount and how long points stay valid."},"silver":{"name":"Silver","title":"Silver tier","badge":"Mid tier","caption":"Reached by meeting any of the criteria below. Adjust the thresholds to match your customer base."},"gold":{"name":"Gold","title":"Gold tier","badge":"Top tier","caption":"The most loyal customers. Make Gold genuinely rewarding to drive long-term retention."}},"tierFields":{"discount":"Discount on services","pointsExpiryDays":"Points expiry (days)","pointsRequired":"Points required","referralsRequired":"Referrals required","sessionsRequired":"Sessions required","anyCriteria":"A customer reaches {tier} when they meet any of the three criteria.","benefits":"Benefits description (shown to customers)"}},"cashback":{"title":"Cashback","description":"Reward customers with wallet credit on every purchase. Tune rates, minimum spend and referral bonuses.","customer":{"title":"Customer cashback","caption":"Earn rate on customer purchases. Turn off to pause all cashback program-wide.","enabled":"Reward customers with cashback on purchases","rate":"Cashback rate","rateHelp":"Percentage of every invoice credited to the customer's wallet.","minPurchase":"Minimum purchase amount","minPurchaseHelp":"Invoices below this amount earn no cashback. Set 0 to reward every sale."},"basis":{"title":"Calculation basis","caption":"Whether cashback is computed on the gross (pre-discount) or net (post-discount) amount. Affects every invoice from the moment you save.","label":"Revenue basis","help":"NSR rewards customers on what they actually paid. GSR rewards them on the full price regardless of promotions. Use it if loyalty should be unaffected by discounts.","options":{"NSR":"NSR: Net sales revenue (after discounts)","GSR":"GSR: Gross sales revenue (before discounts)"}},"rules":{"title":"Per-category rates","caption":"Override the default {rate}% rate for specific product categories (e.g. injectables 5%, retail 2%). Items in categories without a rule use the default. Set the rate to 0% to disable cashback for a category.","emptyTitle":"No per-category overrides yet","emptyDescription":"All items use the default {rate}% rate.","addTitle":"Add a new rule","category":"Product category","categoryRequired":"Pick a category first","rate":"Rate","minAmount":"Min. item amount","add":"Add rule","added":"Category rule added","columns":{"category":"Category","rate":"Rate","minAmount":"Min. item amount"}},"referral":{"title":"Referral cashback","caption":"Reward the person who referred a customer when that customer buys. Independent from customer cashback above.","enabled":"Credit the referrer on qualifying purchases","rate":"Referrer reward rate","rateHelp":"Percentage of the referred customer's invoice credited to the referrer."},"wallet":{"title":"Wallet rules","caption":"What happens to credited cashback over time.","expiryDays":"Cashback expiry (days)","expiryDaysHelp":"Days before unspent cashback expires. Leave blank for never.","autoCredit":"Credit cashback automatically when an invoice is marked paid","autoCreditHelp":"Turn off to require a manager to approve each cashback credit before it lands in the customer's wallet."}},"club":{"title":"Customer Club","description":"Single hub for your loyalty program: master switch, cashback and tiers. Everything here applies to your clinic only.","tabs":{"general":{"label":"General","description":"Master kill-switch for the entire Customer Club product."},"cashback":{"label":"Cashback","description":"Wallet cashback on purchases plus referral cashback rules."},"loyalty":{"label":"Loyalty & tiers","description":"Points economy, Bronze / Silver / Gold tiers, anniversary and birthday rewards."}},"master":{"title":"Customer Club master switch","caption":"Turning this off hides the entire Customer Club from staff and customers: no points, no cashback, no referral rewards, no club screens. Existing wallets and history are kept; switch it back on any time to resume.","active":"Active","disabled":"Disabled","on":"Customer Club is active","off":"Customer Club is disabled","offWarning":"While disabled, no new club effects fire (no points earned, no cashback credited, no automations triggered). Customers don't see the club in their app."},"where":{"title":"What lives where","cashback":"Cashback tab: wallet cashback rate, referral cashback rate, expiry and auto-credit rules.","loyalty":"Loyalty & tiers tab: points earn rate, anniversary and birthday rewards, Bronze / Silver / Gold criteria and benefits."}},"inventoryAlerts":{"title":"Inventory alerts","description":"When the system warns you about low stock, expiring batches and warehouse capacity. Tune to match your reorder cadence.","invoice":{"title":"Invoice behaviour","caption":"Controls how product availability affects invoice creation.","requireStock":"Require available stock to add a product to an invoice","requireStockHelp":"Out-of-stock products still appear in the invoice product search but cannot be selected. Turn off if your clinic does not track inventory."},"lowStock":{"title":"Low-stock alerts","caption":"Triggered by the consumption forecast. Alerts you when days of cover drop below your threshold.","enabled":"Send low-stock alerts","threshold":"Low-stock threshold (days of cover)","thresholdHelp":"Alert when remaining stock will run out within this many days."},"expiry":{"title":"Expiry alerts","caption":"Two thresholds (warning and critical) for medication and consumable batches.","enabled":"Send batch-expiry alerts","warning":"Warning (days before expiry)","critical":"Critical (days before expiry)","criticalHelp":"Flag as urgent when batches are this close to expiry."},"forecast":{"title":"Forecast tuning","caption":"How the reorder forecast calculates average daily use. Lengthen the look-back for steady businesses; shorten it for fast-changing demand.","lookback":"Look-back (days of history)","window":"Forecast window (days ahead)"},"cost":{"title":"Cost integrity","caption":"How product cost updates when goods are received, and whether the ledger records the difference.","syncMode":"Cost sync mode","syncModes":{"manual":{"label":"Manual: keep historical behaviour","help":"Product cost stays whatever an admin sets. Confirming a goods receipt does not change it."},"last_purchase":{"label":"Last purchase price","help":"Overwrite product cost with the unit price of the most recent goods receipt."},"weighted_average":{"label":"Weighted average","help":"Blend the current cost with the new purchase, weighted by remaining and received quantity."}},"postVariance":"Post cost variance journal entry","postVarianceHelp":"When a session is finalised and the actual material cost differs from the frozen consumed-cost snapshot, post a journal entry for the variance. Requires the cost variance account below.","allowPaidCogs":"Allow re-posting COGS on paid invoices","allowPaidCogsHelp":"When an admin recompute rewrites the cost snapshot of an already-paid invoice, allow the COGS entry to be re-posted. Off by default, because paid invoices are normally frozen in the ledger.","varianceAccount":"Cost variance account","varianceAccountHelp":"Account used for cost variance postings.","varianceAccountDisabled":"Turn on \"Post cost variance\" above to pick an account."},"warehouse":{"title":"Warehouse capacity & compliance","caption":"When to start warning about full warehouses and expiring licences.","capacity":"Capacity warning","capacityHelp":"Warn when a warehouse passes this fill level.","licenceLead":"Licence renewal lead time (days)","licenceLeadHelp":"Days before a warehouse licence expires to start reminding staff."}},"permissions":{"title":"Permissions","description":"Manage roles and what each role can access.","addRole":"Add role","bulkAssign":"Bulk assign role","rolesEntity":"Roles","search":"Search roles","emptyTitle":"No roles yet","emptyDescription":"Add a role to decide what a group of staff can see and do.","lockedReason":"System role. Clone it to make an editable copy.","clone":"Clone","delete":"Delete role","usersCount":"{count, plural, =0 {No users} one {# user} other {# users}}","columns":{"role":"Role","kind":"Type","users":"Users"},"kind":{"system":"System","custom":"Custom"},"form":{"addSubtitle":"Add a role and choose what it can see and do.","editSubtitle":"Name the role, then choose what it can see and do.","submitAdd":"Create role","submitEdit":"Save changes","details":"Role details","lockedWarning":"This is a system role. Clone it first to create an editable copy.","loadingExisting":"Loading current features and permissions…","name":"Role name","namePlaceholder":"e.g. Branch manager","nameRequired":"Role name is required","nameTooLong":"Role name must be 150 characters or less","description":"Description","descriptionPlaceholder":"Brief description of this role","descriptionTooLong":"Description must be 500 characters or less","access":"Access","accessCaption":"Each feature you grant also appears in this role's sidebar menu. Menu visibility follows feature access.","features":"Features & menu","featuresHint":"Areas this role can use (Booking, Patients, …). Also drives the sidebar menu","pickFeatures":"Pick features","permissions":"Raw permissions (advanced)","permissionsHint":"Optional. Low-level permission codes for fine-grained control. Most roles don't need this.","pickPermissions":"Pick permissions","featurePicker":{"title":"Select features","available":"Available features","selected":"Granted features","search":"Search features","emptyAvailable":"No more features to grant","emptySelected":"No features granted yet"},"permissionPicker":{"title":"Select permissions","available":"Available permissions","selected":"Granted permissions","search":"Search permissions","emptyAvailable":"No more permissions to grant","emptySelected":"No permissions granted yet"},"advanced":"Advanced","matrix":{"feature":"Feature","ops":{"read":"View","create":"Create","update":"Edit","delete":"Delete"},"summary":"{count, plural, one {# feature} other {# features}} · {restricted} limited","addFeatures":"Add features","hint":"Every granted feature can be viewed. Untick what this role must not do, per feature, per module, or for all.","search":"Search granted features","tableLabel":"Access per feature","toggleAria":"{op}: {scope}","all":"all features","restricted":"Limited","removeAria":"Remove {name}","emptyTitle":"No features granted yet","emptyDescription":"Add the areas this role works in, then choose what it can create, edit or delete.","required":"Grant at least one feature. A role without features can't be saved, because it would not restrict anything.","scope":{"label":"Records:","all":"All records","branch":"Their branches","own":"Only their own","custom":"Custom (system rule)","aria":"Which records this role sees in {name}","own_created":"Made by them","own_assigned":"Assigned to them","ownSeller":"Sold by them","ownSellerPayments":"On their sales"},"level":{"view":"View","edit":"Edit","full":"Full","custom":"Custom"},"levelAria":"Access level for {name}","levelHint":"View: see only · Edit: add and change · Full: also delete.","setAll":"Set all to"},"actions":{"title":"Special actions","caption":"Sensitive one-off actions beyond create / edit / delete, e.g. discharge a patient or reopen a visit.","summary":"{count} of {total} granted","search":"Search actions","needsFeature":"Grant the {feature} feature first","suggested":"Suggested · {count}","all":"All"}},"cloneDialog":{"title":"Clone role","titleNamed":"Clone role: {name}","copyName":"{name} (copy)","description":"Creates an editable copy with the same features, menus, lookups, actions, reports and permissions. You can trim it down afterwards.","name":"New role name","descriptionLabel":"Description (optional)","cloning":"Cloning…","submit":"Clone","failed":"Failed to clone role."},"bulkAssignDialog":{"title":"Bulk assign role","description":"Pick a role, then add or remove users. Each user keeps their other role memberships.","role":"Role","pickRole":"Pick a role to start assigning users.","available":"All employees","selected":"Users with this role","search":"Search by name, phone","emptySelected":"No users in this role yet","emptyAvailable":"Everyone already has this role","done":"Done"}},"integrations":{"connections":{"title":"Connections","caption":"Regulated systems this clinic is really connected to","export":{"open":"Download file","title":"Export invoices","description":"A plain file of the invoices billed in this period, for your accountant. It is not filed with any authority.","from":"From","to":"To","branch":"Branch","allBranches":"All branches","format":"File format","formatCsv":"CSV (spreadsheet)","formatJson":"JSON","confirm":"Download","failed":"Could not export the invoices. Try again.","dateRequired":"Choose a date","rangeReversed":"The end date cannot be before the start date","rangeTooLong":"Export at most one year at a time"},"states":{"connected":"Connected","not_connected":"Not connected yet"},"fallbacks":{"manual_queue":"Claims wait in the manual queue for your biller","file_export":"Invoices are exported as a file for your accountant","manual_record":"Staff record prescriptions and their tracking codes by hand","none":"Nothing is sent"},"capabilities":{"insurance":"Insurance claims","e_invoicing":"E-invoicing","e_prescription":"E-prescriptions","interop":"Health information exchange"}},"providers":{"title":"Available providers","caption":"Switch off a provider this clinic should not use. It disappears from the pickers and cannot be connected again. A connection already saved keeps working until you remove it.","toggle":"Offer {name} to this clinic","toggleFailed":"Could not update this provider.","capabilities":{"chat_messaging":"Chat messaging","sms":"SMS","email":"Email","push":"Push notifications","lead_source":"Lead sources and ad platforms","payments":"Payments"}},"form":{"entity":"Integration","editTitle":"Edit {name}","connectTitle":"Connect a {channel} provider","connection":"Connection","provider":"Provider","pickProvider":"Pick a provider first.","youWillNeed":"What you'll need for {provider}","accountName":"Account name","accountNameHelp":"Used by automations to pick this account (e.g. 'main', 'reception').","googleLoading":"Loading accessible Google Ads accounts…","googleHelp":"Select the Google Ads account this connection should use.","storedSecret":"Stored: {value}. Leave blank to keep","isDefault":"Use as default for {channel}","isDefaultHelp":"Exactly one default per channel. Promoting this one demotes the previous default.","testMode":"Test mode","testModeHelp":"When on, notifications log a record but skip the actual send. Use for staging.","save":"Save","connect":"Connect","saveFailed":"Save failed"},"list":{"title":"Notification Providers","description":"Connect WhatsApp, SMS, Email, and Push notification providers. Each channel can have multiple named accounts; one is the default.","intro":"Until you configure a provider here, automations send through the platform's default sender. Configure one and mark it as default to take over routing.","entity":"Integration","entityPlural":"Integrations","channels":{"whatsapp":"WhatsApp","sms":"SMS","email":"Email","push":"Push Notifications","ads_conversion":"Ad Platform Conversion"},"googleConnected":"Google Ads connected. Add your developer token and customer id to finish.","googleConnectFailed":"Google Ads connection failed: {error}","googleStartFailed":"Could not start the Google connection. Please try again.","accountCount":"{count, plural, one {# account} other {# accounts}}","connectProvider":"Connect a provider","emptyTitle":"Connect your own {channel} sender","emptyDescription":"Until you do, important messages still go out on the platform sender, so you won't block your patients.","emptyAction":"Connect {channel}","reconnectGoogle":"Reconnect Google","connectWithGoogle":"Connect with Google","connectionFailedWith":"Connection failed: {error}","provisionDone":"Conversion actions ready ({created}/3): Booking Lead, Sales, Revenue.","provisionFailed":"Could not auto-create conversion actions.","testing":"Testing…","testConnection":"Test connection","creating":"Creating…","autoCreate":"Auto-create conversion actions","autoCreateDescription":"Booking Lead / Sales / Revenue","setting":"Setting…","setDefault":"Set as default","chips":{"default":"Default","testMode":"Test mode","connected":"Connected","notConnected":"Not connected","notConnectedHint":"No Google account is linked yet. Use “Connect with Google”.","verified":"Verified","testFailed":"Test failed"}},"audiences":{"title":"Customer audiences → Meta","description":"Consent-gated CRM segments pushed to Meta Custom Audiences for retargeting, exclusion, and lookalike seeding. Provision the audiences once, then enable the nightly sync in the Meta connection settings.","provision":"Provision audiences","tosNotAccepted":"Accept the Customer List terms in Meta Ads Manager, then provision again.","partialErrors":"Some audiences could not be provisioned. Check the ad account setup.","provisioned":"{count, plural, one {Provisioned # audience on Meta.} other {Provisioned # audiences on Meta.}}","alreadyProvisioned":"Audiences are already provisioned.","provisionFailed":"Could not provision audiences.","kpi":{"synced":"Audiences synced","matched":"Members matched","matchedTooltip":"Total members Meta received across audiences on their last sync.","tos":"Terms of service","tosActionNeeded":"Action needed","tosAccepted":"Accepted","tosHint":"Accept the Customer List terms in Ads Manager"},"byAudience":"By audience","unnamed":"(unnamed)","valueBased":"value-based","matchedCount":"{count} matched","tosNeeded":"TOS needed","syncStatus":{"success":"Success","failed":"Failed","skipped":"Skipped"},"empty":"No audiences synced yet. Provision them, then enable buyer-audience sync on the Meta connection to start the nightly push."},"delivery":{"platforms":{"meta":{"title":"Meta conversion delivery (last 7 days)","blurb":"Server-side events sent to Meta, per portfolio. Higher acceptance + match quality means Meta can optimise your ads toward real buyers.","match":"Match quality (EMQ)","group":"By dataset / portfolio"},"google":{"title":"Google Ads conversion delivery (last 7 days)","blurb":"Server-side conversions uploaded to Google Ads, per account. Higher acceptance + match-key coverage lets Smart Bidding optimise toward buyers.","match":"Match-key coverage","group":"By account / conversion action"}},"kpi":{"acceptance":"Acceptance rate","acceptanceTooltip":"Share of decided sends the platform accepted (7d).","matchTooltipGoogle":"Share of sends carrying ≥1 click id or hashed identifier.","matchTooltipMeta":"Share of sends carrying ≥3 hashed match keys.","totalSends":"Total sends","topRejection":"Top rejection","none":"None","eventCount":"{count, plural, one {# event} other {# events}}","withheld":"Withheld for consent","withheldTooltip":"Conversions not uploaded because the customer declined ad tracking (7d)."},"coverage":{"title":"Consult bookings → Meta leads","description":"Of {eligible} consults booked, {covered} sent a lead to Meta. The rest are organic / walk-in (no ad click) and correctly send nothing. Only a real delivery gap is a problem.","gap":"{count, plural, one {# consult from an ad click did not send a lead to Meta.} other {# consults from an ad click did not send a lead to Meta.}} Investigate the delivery pipeline for these bookings."},"counts":{"sent":"{count} sent","organic":"{count} organic","noClickId":"{count} no click id","notDelivered":"{count} not delivered","failed":"{count} failed","pending":"{count} pending"},"unrouted":"(unrouted)","recentRejections":"Recent rejections","rejected":"Rejected"},"events":{"title":"Conversion events","description":"What Meta optimizes your ads for. Pick a strategy and every milestone below is set for you, or override a single milestone if you need to. Meta receives the route-valid name per source, so a website booking sends Schedule and a lead-ad form sends Lead.","decidedBy":{"campaign_override":"This campaign","campaign_profile":"Campaign strategy","tenant_override":"You overrode this","tenant_profile":"Your strategy","code_default":"Built-in default"},"updated":"Conversion event updated","updateFailed":"Could not update the conversion event","notSentToMeta":"Not sent to Meta","custom":"Custom","customMapping":"Custom mapping","notSent":"Not sent","dontSend":"Don’t send to Meta"},"strategy":{"title":"Optimization strategy","recommended":"Recommended","noneSelected":"No strategy selected, so each milestone uses the built-in default. Pick a strategy to set them all at once.","choose":"Choose strategy","reset":"Reset to built-in default","apply":"Apply","updated":"Optimization strategy updated","resetDone":"Reset to inherited defaults","updateFailed":"Could not update the optimization strategy","recommendedBanner":"Recommended for most clinics: <strong>{name}</strong>. {description}"},"readiness":{"title":"Delivery readiness","description":"Check which funnel stages are actually wired for each connected provider before you trust campaign optimization on them. <strong>Check configuration</strong> inspects your settings locally; <strong>Verify with Google</strong> calls the provider API for real to validate the conversion without recording it.","stagesReady":"{ready}/{total} stages ready","verifiedWithProvider":"verified with provider","checking":"Checking…","checkConfiguration":"Check configuration","verifying":"Verifying…","verifyWith":"Verify with {provider}","dataManagerPermission":"Data Manager permission","dataManagerHint":"reconnect with Google to grant it; uploads return 403 without it","granted":"Granted","notGranted":"Not granted","stage":{"ready":"Ready","notWired":"Not wired","verified":"Verified","skipped":"Skipped","failed":"Failed"}},"adsView":{"title":"Conversion Tracking & Ads","description":"Connect your Meta and Google Ads accounts so online bookings, new leads, and paid invoices are reported back as conversions, server-side, per branch. One booking site serves every branch; secrets stay encrypted on the server.","guideTitle":"What you need","guideMeta":"your Pixel / dataset id and a Conversions API access token (from Meta Events Manager).","guideGoogle":"customer id, conversion action ids, a developer token, and an OAuth refresh token.","guideSteps":"Connect a provider, run “Test connection”, then “Set as default”. Tracking fires automatically on bookings, leads, and payments. No per-campaign setup needed."}},"onlineBranding":{"gallery":{"title":"Gallery & portfolio","caption":"Upload photos, drag to reorder and add captions. Each tab is shown as its own section on your public booking page.","kinds":{"gallery":{"label":"Gallery","caption":"General photos of your clinic, rooms and atmosphere."},"portfolio":{"label":"Portfolio","caption":"Showcase of your work and results."},"before_after":{"label":"Before / after","caption":"Paired transformation photos (use consent-cleared images only)."},"cover":{"label":"Cover","caption":"Extra above-the-fold banners shown at the top of the page."}},"imageAlt":"Gallery image","dragToReorder":"Drag to reorder","captionPlaceholder":"Caption (optional)","captionLabel":"Image caption","dropHere":"Drop images here or click to upload","emptyTitle":"No images yet","emptyDescription":"Upload your first image to start building this section.","uploaded":"{count, plural, one {Image uploaded} other {# images uploaded}}","uploadFailed":"Upload failed","reorderFailed":"Reorder failed","captionFailed":"Could not save caption","kindLabel":"Image section"},"payments":{"title":"Online payment","caption":"Connect a payment provider to take deposits and sell memberships, packages and gift cards online. Without a connected provider, customers pay at the clinic.","providers":{"none":"Not connected","stripe":"Stripe Connect"},"connectedAt":"Connected {date}","connected":"Connected","notConnected":"Not connected","accept":"Accept online payment","acceptLive":"Live: customers can pay online.","acceptOff":"Turn on to let customers pay online.","acceptNeedsProvider":"Connect a provider to enable this.","manage":"Manage connection","connectStripe":"Connect Stripe","refresh":"Refresh status","disconnect":"Disconnect","payoutNote":"Online payments are deposited straight into your own Stripe account. Each paid purchase is recorded for reconciliation. Automatic delivery of memberships, packages and gift cards is rolling out; until then, activate the customer's purchase from their profile after payment.","connectionUpdated":"Stripe connection updated","enabled":"Online payment enabled","disabled":"Online payment disabled","updateFailed":"Could not update payment settings","connectFailed":"Could not start Stripe onboarding","refreshed":"Stripe status refreshed","refreshFailed":"Could not refresh Stripe status","disconnected":"Stripe disconnected","disconnectFailed":"Could not disconnect Stripe","disconnectConfirmTitle":"Disconnect Stripe?","disconnectConfirmContent":"Patients will no longer be able to pay online on your booking site; bookings fall back to pay-at-clinic until you connect again."},"team":{"title":"Team","caption":"Pick the staff shown in your public booking page's Team section, and give each a customer-facing title and bio. Photos reuse each staff member's profile avatar.","show":"Show","publicTitle":"Public title","publicTitlePlaceholder":"e.g. Senior dermatologist","publicBio":"Public bio","publicBioPlaceholder":"A short bio shown on the public team profile.","updateFailed":"Could not update team member","emptyTitle":"No staff yet","emptyDescription":"Add staff in the HR module. They'll appear here to feature on your booking page.","searchPlaceholder":"Search staff","filterLabel":"Which staff to list","filterAll":"All staff","filterShown":"Shown on page","shownCount":"{count, plural, =0 {Nobody is shown on your page yet} one {# person shown on your page} other {# people shown on your page}}","noTitle":"Add a public title","noBio":"Add a short bio","showLabel":"Show {name} on the booking page"},"page":{"title":"Online booking page","description":"How your public booking page looks: logo, cover, colours, hero copy and which sections show. Contact, socials and location are managed per branch and on the Business profile.","colours":{"title":"Brand colours","caption":"Pick a colour or type a 6-digit hex value. Used for buttons, links and the page header. The preview updates as you edit.","primary":"Primary colour","secondary":"Secondary colour","placeholder":"6-digit hex, leading #","primaryHelp":"Buttons, links, accents.","secondaryHelp":"Headers, secondary surfaces.","pick":"Pick {label}"},"hero":{"title":"Hero content","caption":"The headline and supporting copy shown above the fold on the microsite.","heading":"Hero title","headingPlaceholder":"Wellness, on your schedule.","subtitle":"Hero subtitle","subtitlePlaceholder":"Book any service across our branches in seconds."},"about":{"title":"About","caption":"A short description shown in the About section of your microsite. Plain text or light HTML.","label":"About","placeholder":"Tell customers what makes your clinic special: services, expertise, what to expect."},"sections":{"title":"Sections shown on the microsite","caption":"Choose which sections appear on your public booking page. Gallery and team content is managed in their own tabs.","reviews":"Show reviews & ratings","team":"Show team / staff profiles","gallery":"Show gallery / portfolio"},"related":{"title":"Related settings","caption":"Contact, hours and location live on the branch; booking rules and services are managed separately.","locations":"Locations & contact","bookingRules":"Booking rules"},"tabs":{"look":"Brand & look","content":"Page content","gallery":"Gallery","team":"Team","payments":"Payments"},"tabsLabel":"Online booking page settings","autoSave":"Changes here save automatically","galleryHidden":"The gallery is turned off, so customers don't see these images yet.","teamHidden":"The team section is turned off, so customers don't see these profiles yet.","turnOn":"Turn on in Page content"},"assets":{"title":"Tenant booking assets","caption":"The clinic's customer-facing booking assets. Images are cropped and optimised in the browser before Save uploads them.","logo":"Logo","logoHint":"Square · 800×800 PNG, JPG, WEBP or SVG","favicon":"Favicon","faviconHint":"Square · exports 800×800 PNG","hero":"Hero image","heroHint":"Wide background · crop to 16:9 · optimised WebP","cover":"Cover image","coverHint":"Above-the-fold cover · crop to 16:7 · optimised WebP","coverCropTitle":"Crop booking cover","replace":"Replace","upload":"Upload","choose":"Choose image","cropTitle":"Crop {label}","marksTitle":"Logo & browser icon","marksCaption":"Shown in the page header and the browser tab. Square images work best.","imagesTitle":"Background images","imagesCaption":"The large images behind your headline. You crop each one before it is saved.","remove":"Remove"},"links":{"title":"Your booking link","caption":"Share this with customers. Put it in your Instagram bio, your Google listing and your reply templates.","primary":"Booking page","primaryCaption":"Your own domain. This is the one to share and the one search engines index.","backup":"Backup link","backupCaption":"Always works, even while your own domain is being set up or changed. It points search engines at the link above, so the two never compete."},"preview":{"title":"Booking page preview","caption":"A compact preview of how your assets and colours shape the public booking page.","yourPage":"Your booking page","tagline":"Clinic-branded online booking","defaultTitle":"Book your visit online","defaultSubtitle":"Choose a service, select a branch and reserve an available time.","chooseService":"Choose a service","liveAvailability":"Live availability"}},"booking":{"title":"Booking","description":"How your clinic schedules and prices appointments: slot length, consultation fee, no-show rules and which bookings are auto-confirmed.","timeGrid":{"title":"Time grid","caption":"The base unit your calendar uses. Most clinics keep 15-minute slots.","slot":"Slot length (minutes)","slotHelp":"The calendar grid step. Appointments are multiples of this.","minutes":"{minutes} minutes"},"pricing":{"title":"Consultation pricing","caption":"The fallback fee charged when a service does not specify its own consultation price.","fee":"Default consultation fee","feeHelp":"Set 0 to make consultations free by default."},"policy":{"title":"Cancellation & no-show policy","caption":"Protect the calendar from last-minute drops.","cancellationWindow":"Cancellation window (hours)","cancellationWindowHelp":"Cancellations later than this are flagged for review.","noShowGrace":"No-show grace (minutes)","noShowGraceHelp":"How late a patient can arrive before the session is marked no-show."},"toggles":{"title":"Operational toggles","caption":"Switches that change day-to-day booking behaviour.","autoConfirm":"Auto-confirm bookings made from the customer app","overbooking":"Allow multiple sessions in the same timeslot","consultationFirst":"Require a consultation before customers can book other services"},"online":{"title":"Online booking page","caption":"How the public booking page behaves for patients booking themselves.","otp":"Require phone (OTP) verification before an online booking","lead":"Create a CRM lead for every online booking (ad data kept when present)","enabled":"Accept bookings on the public booking page","minLeadTime":"Minimum notice (hours)","minLeadTimeHelp":"How soon before a slot patients can still book it online. 0 = no minimum.","maxAdvance":"Book up to (days ahead)","maxAdvanceHelp":"How far ahead patients can book online. 0 = no limit."},"calendar":{"title":"Calendar interactions","caption":"Power-user shortcuts that change how staff edit the calendar. Off by default to prevent accidental moves.","dragDrop":"Enable drag-and-drop to reschedule sessions"},"endOfDay":{"title":"End-of-day automation","caption":"When staff mark patients Arrived but rarely flip them to Done, package and credit usage never records and the My Panel card stays at 0. Turn this on to auto-complete still-Arrived sessions each evening, exactly as if Done was clicked. Off by default.","enabled":"Auto-complete Arrived sessions at end of day","cutoff":"Run after this local hour (0-23)","cutoffHelp":"Sessions still Arrived after this hour are marked Done. 22 = 10 PM."},"terminology":{"title":"Resource terminology","caption":"What your clinic calls the bookable spaces managed in Settings → Resources. Tap a preset or type your own. This only changes the label, never scheduling behaviour.","singular":"Singular label","singularHelp":"e.g. Room, Chair, Table. Blank = Resource.","plural":"Plural label","pluralHelp":"e.g. Rooms, Chairs, Tables. Blank = Resources.","presets":{"resource":{"singular":"Resource","plural":"Resources"},"room":{"singular":"Room","plural":"Rooms"},"chair":{"singular":"Chair","plural":"Chairs"},"table":{"singular":"Table","plural":"Tables"},"court":{"singular":"Court","plural":"Courts"},"bay":{"singular":"Bay","plural":"Bays"},"desk":{"singular":"Desk","plural":"Desks"}}}},"accountingSettingsDescription":"Default GL accounts, posting behaviour, period lock and expense policy for this clinic. Configure once at onboarding; each default is the fallback a posting uses when nothing more specific is set.","accountingSettingsStillLoading":"Accounting settings are still loading.","finance":{"title":"Sales & finance","description":"Default rates and fees applied to every invoice unless a service or package overrides them.","tax":{"title":"Tax","caption":"VAT applied to invoice subtotals when no per-item tax rule is set.","vat":"Default VAT","vatHelp":"Applied when the cart has no explicit tax rule."},"delivery":{"title":"Delivery","caption":"Pricing for home delivery and field visits.","fee":"Delivery fee","freeThreshold":"Free-delivery threshold","freeThresholdHelp":"Orders above this ship free.","nurseVisit":"Nurse-visit fee","nurseVisitHelp":"Charged for in-home nurse visits."},"handover":{"title":"Stock handover","caption":"How physical products that need explicit delivery (on delivery) are handed to the patient. Services and pay-on-payment items are unaffected.","policy":"Default delivery policy","policyHelp":"When on-delivery items are marked delivered automatically.","policies":{"manual":"Manual: staff marks each item delivered","on_issue":"Auto-deliver when the invoice is issued","on_paid":"Auto-deliver when the invoice is paid"},"autoDeliverDays":"Auto-deliver pending after (days)","autoDeliverDaysHelp":"Safety net: if an item is still pending this many days after payment, deliver it automatically. 0 turns this off."},"fees":{"title":"Consultation & service fees","caption":"Defaults for services that do not carry their own price.","consultation":"Doctor consultation","serviceFee":"Service fee","serviceFeeHelp":"Convenience fee added to every order."},"subscriptions":{"title":"Subscriptions","caption":"When customers receive renewal reminders.","reminderDays":"Reminder window (days)","reminderDaysHelp":"Days before expiry to send a renewal reminder."}},"branches":{"list":{"title":"Branch management","description":"Choose a branch from the list to manage its details and resources.","add":"Add branch","edit":"Edit branch","activate":"Activate","deactivate":"Deactivate","emptyTitle":"No branches found","emptyDescription":"Add a branch, or try a different search.","search":"Search by name…","limitReachedCount":"Branch limit reached ({used}/{limit}). Contact support to upgrade your plan.","limitReached":"Branch limit reached. Contact support to upgrade your plan.","limitReachedShort":"Branch limit reached. Contact support to upgrade","slotsRemaining":"{count, plural, one {# branch slot remaining} other {# branch slots remaining}}","columns":{"branch":"Branch","city":"City","phone":"Phone number","status":"Status"}},"formSections":{"general":"General info","workSchedule":"Work schedule","timeOff":"Time off","timeBreak":"Breaks","accounting":"Accounting"},"form":{"generalInfo":"General Info","name":"Name","namePlaceholder":"Enter name","facilityName":"Facility Name","facilityNamePlaceholder":"Enter","googleMapLink":"Google Map Link","googleMapLinkPlaceholder":"Paste a Google Maps link","sheryanFacilityId":"Sheryan Facility ID","sheryanFacilityIdPlaceholder":"Enter","onboardingFacilityId":"NABIDH Onboarding Facility ID","onboardingFacilityIdPlaceholder":"e.g. 7130569","onboardingFacilityIdHelper":"DHA refuses every NABIDH message from this branch without it.","comingSoon":"Coming Soon","contactDetails":"Contact Details","primaryPhone":"Primary Phone Number","primaryPhonePlaceholder":"Enter mobile number","primaryEmail":"Primary Email Address","primaryEmailPlaceholder":"Enter email","address":"Address","country":"Country","countryPlaceholder":"Select country","state":"State","statePlaceholder":"Select state","city":"City","cityPlaceholder":"Select city","zip":"Zip (Optional)","zipPlaceholder":"Enter zip","addressLine":"Address","addressLinePlaceholder":"Enter address","gallery":"Gallery","workSchedule":"Work Schedule","workScheduleCaption":"The days and hours this branch is open.","timezone":"Time Zone","timezonePlaceholder":"Choose timezone","timeBreak":"Breaks","noBreak":"No Break","financialInfo":"Financial Info","taxNumber":"Tax number","trn":"TRN","trnPlaceholder":"Enter","vatPercent":"VAT Percent","vatPercentPlaceholder":"Enter","currency":"Currency","currencyPlaceholder":"Choose currency","tax":"Tax","taxRule":"Default tax rule","taxRulePlaceholder":"No tax","taxRuleHelper":"Applied to every invoice of this branch unless the invoice picks another rule","additionalCharge":"Additional Charge","additionalChargePlaceholder":"Enter","timeOff":"Time Off","addTimeOff":"Add Time Off","cover":"Cover","coverHint":"500×500 · JPG / PNG · Max 2 MB","validation":{"nameRequired":"Name is required","phoneRequired":"Phone number is required","emailRequired":"Email is required"},"timeBreakCaption":"Lunch or prayer breaks when the branch takes no bookings. A day can have more than one.","timezoneNote":"All times are in {timezone} (clinic time zone)"},"detail":{"workSchedule":"Work Schedule","notWorking":"Not Working","timeBreak":"Breaks","noBreak":"No Break"}},"metaAdAccounts":{"rowActions":{"test":"Test connection","testing":"Testing…","testOk":"Connection works. The ad account is readable","testFailed":"Connection test failed","setActive":"Set as active","setting":"Setting…","defaultUpdated":"Default ad account updated","setDefaultFailed":"Could not set default"},"fields":{"noAccounts":"No ad accounts found for this token.","loadFailed":"Could not load ad accounts. Check the token and try again.","account":"Ad account","accountHelp":"Pick the account this token can read.","accountId":"Ad account ID","accountIdPlaceholder":"e.g. act_1234567890 or 1234567890","accountIdHelp":"From Meta Ads Manager → Account overview. The act_ prefix is optional.","loading":"Loading accounts…","load":"Load accounts from token","accountSection":"Ad account","accountSectionCaption":"Connect a Meta (Facebook / Instagram) ad account so we can name the exact campaign and ad behind each WhatsApp lead, and pull daily spend for CAC.","label":"Label","labelPlaceholder":"e.g. Main clinic, Meta","labelHelp":"A friendly name shown in this list.","adSource":"Default ad source","adSourcePlaceholder":"Select ad source","adSourceHelp":"Spend pulled from this account is tagged with this source for reports.","tokenSection":"Access token","tokenCaptionEdit":"Leave blank to keep the saved token. Paste a new one to rotate it.","tokenCaptionAdd":"A Meta System-User token with ads_read access to this ad account. Stored encrypted, never shown again. Use the Test action after saving to confirm access.","token":"System-User access token","tokenPlaceholderEdit":"Leave blank to keep the current token","tokenPlaceholderAdd":"Paste token","tokenNote":"The token must have <b>ads_read</b> (View performance) on this ad account in Business Manager, otherwise campaign names and spend cannot be read. Paste it above, then <b>Load accounts from token</b> to pick the exact account.","statusSection":"Status","active":"Active","activeHelp":"When off, this account is skipped for enrichment and spend pulls."}},"gatewayRowActions":{"test":"Test connection","testing":"Testing…","setDefault":"Set as default","setting":"Setting…"},"accounting":{"journalFallback":"Journal #{id}","sections":{"periodLock":{"title":"Period Lock","caption":"⚠ DANGEROUS: a global, tenant-wide accounting hard lock. Independent of month-end close. Use only for finalised prior periods; back-dated corrections require clearing or moving this date first."},"corrections":{"title":"Corrections & Reversals","caption":"How accountants fix a posted journal entry. In every mode an in-place edit of a posted entry's amounts, accounts or date is refused; the correction goes through the action you pick here."},"revenueBasis":{"title":"Revenue Recognition Basis","caption":"The most important accounting choice for this clinic. Set it once at onboarding. It decides WHEN a sale becomes revenue on the general ledger, and whether partial-payment invoices show up as Accounts Receivable."},"posting":{"title":"Posting Behavior","caption":"When sales, COGS and payments hit the general ledger, and whether the listener creates POSTED moves automatically or stops at DRAFT for accountant review."},"defaultAccounts":{"title":"Default Accounts","caption":"The tenant-wide default each posting service falls back to when the document, product, category or payment method sets nothing more specific. Every account here is read by at least one posting path, and a guard test on the backend keeps it that way."},"partnerLedger":{"title":"Partner Ledger Accounts","caption":"The Partner Ledger lists only lines posted to payables / receivables control accounts: the defaults above, accounts typed Payable / Receivable, and the extra accounts chosen here. Add an account here when partner balances live on it but the report does not show them. Reporting only — nothing posts to these."},"discounts":{"title":"Discounts & Commission","caption":"Contra-revenue and commission accounts the sales and commission posting services route through. Leave blank to fall back to the general revenue/expense accounts."},"rounding":{"title":"Rounding Differences","caption":"Where sub-fils residuals land when line-level amounts don't sum exactly to the document total. The residual always exists; this only decides which account absorbs it. Leave blank to keep the legacy behaviour, where it is absorbed into revenue, the payment account, or a bill's largest expense line."},"journals":{"title":"Default Journals","caption":"Each transaction type lands in its own journal. Drives sequence numbering and GL reports."},"clearing":{"title":"Payment Clearing Accounts","caption":"Holding accounts a payment sits in between the sale and the day the money reaches the bank. The POS / BNPL clearing accounts below are the family-wide fallback (tier 5); a payment method's own settlement account in “Card & BNPL settlement accounts” outranks them. Leave blank only if you don't accept card/BNPL payments."},"insurance":{"title":"Insurance Accounts","caption":"GL accounts used by the claims module when an insurance settlement is processed. Leave blank if the clinic doesn't bill insurers."},"expensePosting":{"title":"Expense Posting","caption":"Who can finalize expenses to the general ledger, and whether posted expenses may be converted to vendor bills."},"expenseApproval":{"title":"Expense Approval","caption":"Default approval policy across all expense categories. Per-category overrides live in Approval Rules."},"pettyCash":{"title":"Petty Cash","caption":"Cash float controls for branch petty-cash boxes."}},"fields":{"lock_date":{"label":"Global Lock Date","help":"No journal entry can be created, edited, posted, or moved ON or BEFORE this date, for the ENTIRE tenant, regardless of month-end close. Leave empty for no global lock."},"correction_mode":{"label":"Correction method","help":"Reverse only posts an offsetting counter-entry and you record the fix as a fresh manual entry. Un-post does that in one click and hands you an editable copy to correct and re-post; both keep the original on the ledger, so the audit trail stays complete. Reset to draft sends the original entry itself back to draft to be edited and re-posted. It keeps the ledger free of the extra reversal and copy rows, but the earlier values only survive in history, so the audit trail is weaker."},"reversal_requires_reason":{"label":"Require a reason for reversals","help":"When on, a manual reverse, void or un-post must include a reason. Automated reversals such as voiding a payment or reopening a period are not affected."},"accounting_basis":{"label":"Accounting basis","help":"Cash: revenue posts only when an invoice is fully PAID, with no receivable on the books. Accrual if you invoice before payment / take deposits: revenue + Accounts Receivable post the moment an invoice is issued, and each payment clears the receivable. Accrual is required to see unpaid/partial-payment AR on the balance sheet."},"fiscal_year_start_month":{"label":"Fiscal Year Start Month","help":"The month your financial year begins. Drives fiscal-year boundaries in reports and the year-end close. Most clinics use January."},"auto_post_sales":{"label":"Auto-post sales to GL","help":"When a sale is finalised, immediately create a POSTED journal entry. Disable to require an accountant to review and post the DRAFT."},"auto_post_cogs":{"label":"Auto-post COGS","help":"Post inventory cost-of-goods-sold alongside the sales entry. Disable on tenants that recognise COGS at month-end close."},"auto_post_payments":{"label":"Auto-post payments to GL","help":"Post the cash leg as soon as a payment is recorded."},"default_cash_account":{"label":"Cash"},"default_bank_account":{"label":"Bank"},"default_ar_account":{"label":"Accounts Receivable"},"default_ap_account":{"label":"Accounts Payable"},"default_revenue_account":{"label":"Sales Revenue"},"default_expense_account":{"label":"General Expense"},"default_cogs_account":{"label":"Cost of Goods Sold"},"default_inventory_account":{"label":"Inventory Asset"},"default_stock_in_transit_account":{"label":"Stock In Transit","help":"Asset: holds inter-branch transfer value between dispatch and receipt. Leave empty to keep completion-only transfer posting."},"default_vat_output_account":{"label":"VAT Output","help":"Liability: VAT charged on sales."},"default_vat_input_account":{"label":"VAT Input (recoverable)","help":"Asset: recoverable VAT paid on purchases, including the VAT inside acquirer merchant fees."},"default_deferred_revenue_account":{"label":"Deferred Revenue (packages/prepaid)","help":"Liability: unearned revenue from prepaid packages."},"default_breakage_revenue_account":{"label":"Breakage Revenue (forfeited prepaid credit)","help":"Revenue: expired or cancelled package credit, lapsed gift cards and unconsumed memberships. Leave empty to use the chart's Breakage Revenue account."},"no_show_fee_revenue_account":{"label":"No-show Fee Revenue","help":"Revenue: the retained share of a no-show deposit. Leave empty to post it to the breakage account."},"retained_earnings_account":{"label":"Retained Earnings","help":"Equity: the year-end close rolls net income into this account."},"additional_ap_control_accounts":{"label":"Extra Payables Accounts","help":"Liability — e.g. a second Accounts Payable account carried over from a migration."},"additional_ar_control_accounts":{"label":"Extra Receivables Accounts","help":"Asset — e.g. a migration Accounts Receivable account. Credit notes also unwind receivables through these."},"default_sales_discount_account":{"label":"Sales Discount","help":"Contra-revenue: discounts applied on sales invoice lines."},"default_sales_returns_account":{"label":"Sales Returns","help":"Contra-revenue: revenue a credit note takes back. Leave blank to reverse the revenue account the sale posted to."},"default_membership_discount_account":{"label":"Membership Discount","help":"Contra-revenue: member-tier discounts applied at sale."},"default_commission_expense_account":{"label":"Commission Expense","help":"Expense: staff/agent commission accrued on sales."},"default_commission_payable_account":{"label":"Commission Payable","help":"Liability: accrued commission owed until it is paid out via payrun."},"auto_post_commission_on_approval":{"label":"Auto-post commission on approval","help":"When a commission is approved, immediately post its GL entry (Debit Commission Expense / Credit Commission Payable). Off = the accountant posts it manually."},"default_rounding_account":{"label":"Rounding Difference","help":"Applied when posting sales invoices and vendor bills. Blank = the residual distorts a real business account instead."},"sales_journal":{"label":"Sales Journal"},"purchase_journal":{"label":"Purchase Journal"},"cash_journal":{"label":"Cash Journal"},"bank_journal":{"label":"Bank Journal"},"general_journal":{"label":"General Journal"},"insurance_ar_account":{"label":"Insurance AR","help":"Asset: receivable from the insurer for claims submitted."},"claim_write_off_account":{"label":"Claim Write-off","help":"Expense: amounts written off after the insurer confirms denial."},"posting_permission":{"label":"Who Can Post Expenses"},"enable_expense_to_vendor_bill":{"label":"Enable Expense → Vendor Bill Conversion","help":"When on, approved/posted expenses can be converted to a draft vendor bill."},"approval_required_by_default":{"label":"Require Approval by Default","help":"If on, every new expense must be approved by a manager before posting."},"auto_approval_threshold":{"label":"Auto-Approval Threshold","help":"Expenses at or below this amount skip approval and are auto-approved on submit."},"allow_petty_cash_negative_balance":{"label":"Allow Negative Petty Cash Balance","help":"By default a payment that would push petty cash below zero is blocked. Enable for advance-replenishment workflows."},"default_pos_clearing_account":{"label":"POS Clearing (card family fallback)","help":"Asset: receivable from the card acquirer, debited gross at sale. Clear it from the bank statement when the payout lands, and journal the fee out of it. Used for any card method without its own settlement account."},"default_bnpl_clearing_account":{"label":"BNPL Clearing (Tabby, Tamara fallback)","help":"Asset: receivable from Tabby / Tamara, debited gross at sale. Clear it from the bank statement when the payout lands, and journal the fee out of it. Used for any BNPL method without its own settlement account."},"default_merchant_fees_account":{"label":"Merchant Fees","help":"Expense: the acquirer / Tabby / Tamara commission, for the journal entry that books a payout's fee."},"pdc_clearing_account":{"label":"PDC Cheque Clearing","help":"Liability: holds post-dated vendor cheques between issue and bank clearing. Required for cheque issue/clear GL to post; leave blank to keep cheques status-only."},"pdc_receivable_account":{"label":"PDC Cheques Receivable","help":"Asset: holds customer cheques taken on an invoice until the bank honours them. The receipt debits it, clearing moves it to the bank. Required to record a cheque receipt; leave blank and the Cheque method books like cash."},"vendor_advance_account":{"label":"Advances to Suppliers","help":"Asset: money paid to a vendor before the bill exists. A vendor advance debits it when paid (by bank, cash or PDC) and credits it when applied to a bill or refunded. Must not be Accounts Payable or a PDC account. Leave blank to keep advances record-only."},"default_grn_ir_clearing_account":{"label":"GRN / Invoice-Receipt Clearing","help":"Liability: holds goods-received value between GRN and vendor-bill matching."},"wallet_liability_account":{"label":"Wallet Liability","help":"Liability: the outstanding balance owed to patients on their wallets. Leave blank to disable wallet GL posting."},"wallet_clearing_account":{"label":"Wallet Clearing","help":"Liability: holds patient wallet top-ups/settlements in transit."},"gift_card_clearing_account":{"label":"Gift Card Clearing","help":"Liability: holds gift-card issuance/redemption value in transit."}},"options":{"correctionReverse":"Reverse only (post an offsetting entry)","correctionUnpost":"Un-post (reverse and open an editable copy)","correctionResetToDraft":"Reset to draft (send the entry back to draft)","basisCash":"Cash basis: recognise revenue at payment","basisAccrual":"Accrual basis: recognise revenue at invoice (invoice-before-payment / deposits)","postingFinanceOnly":"Finance only","postingFinanceAndApprover":"Finance + Approver"}},"hrAttendanceRules":{"entity":"Attendance Rule","title":"Attendance Rules","add":"Add attendance rule","defaultName":"Standard Attendance Policy","emptyTitle":"No attendance rules yet","emptyDescription":"Create a tenant-wide default rule, then add branch-specific overrides where needed.","tenantDefault":"Tenant default","minutes":"{count} min","autoCheckoutAfter":"After {count} min","off":"Off","toast":{"created":"Attendance rule created","updated":"Attendance rule updated","saveFailed":"Failed to save attendance rule","updateFailed":"Failed to update attendance rule"},"validation":{"nameRequired":"Name is required"},"form":{"basicsTitle":"Basics","basicsCaption":"Name the rule and choose its scope. Leave the branch empty for the tenant-wide default; a branch-specific rule overrides the default for that branch.","name":"Rule Name","namePlaceholder":"e.g. Strict Policy, Flexible Hours","branch":"Branch","branchPlaceholder":"Tenant-wide default","branchHelp":"One rule per branch plus one tenant-wide default.","isActive":"Active","graceTitle":"Grace Periods","graceCaption":"Minutes of tolerance before a punch is flagged late or early.","checkInGrace":"Check-in grace (min)","checkInGraceHelp":"After scheduled start before marked late.","checkOutGrace":"Check-out grace (min)","checkOutGraceHelp":"Before scheduled end for early check-out.","breakGrace":"Break grace (min)","breakGraceHelp":"Variance allowed from scheduled break times.","minHours":"Minimum work hours / day","minHoursHelp":"0 = no minimum.","enforceBreaks":"Require breaks to match the scheduled break times","windowsTitle":"Check-in / Check-out Windows","windowsCaption":"Optional hard time limits. Leave a time empty for no restriction; the block toggles reject punches outside the window.","earliestCheckIn":"Earliest check-in","latestCheckIn":"Latest check-in","earliestCheckOut":"Earliest check-out","latestCheckOut":"Latest check-out","blockEarlyCheckIn":"Block check-in before earliest time","blockLateCheckIn":"Block check-in after latest time","blockEarlyCheckOut":"Block check-out before earliest time","blockLateCheckOut":"Block check-out after latest time","locationTitle":"Location & Auto Check-out","locationCaption":"GPS accuracy enforcement and automatic check-out at end of shift.","maxAccuracy":"Max GPS accuracy (m)","maxAccuracyHelp":"Reject check-ins with a worse accuracy radius. Blank = no enforcement.","requireGps":"Require GPS on check-out","autoCheckout":"Auto check-out after working hours","autoCheckoutBuffer":"Auto check-out buffer (min)","autoCheckoutBufferHelp":"Minutes after working hours end."},"columns":{"name":"Name","scope":"Scope","checkInGrace":"Check-in grace","autoCheckout":"Auto check-out","status":"Status"}},"hrBreakTypes":{"entity":"Break Type","title":"Break Types","add":"Add break type","emptyTitle":"No break types yet","emptyDescription":"Create break types like Lunch, Meeting, or Training for staff to pick when clocking a break.","toast":{"created":"Break type created","updated":"Break type updated","saveFailed":"Failed to save break type","updateFailed":"Failed to update break type"},"validation":{"nameRequired":"Name is required"},"form":{"basicsTitle":"Basics","basicsCaption":"A named break staff can pick when clocking a break. Leave the branch empty for a tenant-wide break type.","name":"Break Type Name","namePlaceholder":"e.g. Lunch, Meeting, Training","duration":"Default Duration (min)","durationHelp":"Default length of this break in minutes (1-480).","icon":"Icon","iconPlaceholder":"e.g. lunch, meeting, training","iconHelp":"Optional icon identifier shown in the break picker.","branch":"Branch","branchPlaceholder":"All branches (tenant-wide)","branchLockedHelp":"The branch a break type belongs to cannot be changed after creation.","branchHelp":"Leave empty to make this break type available to every branch.","policyTitle":"Policy","policyCaption":"Rules that apply to breaks of this type.","isPaid":"Paid break","isActive":"Active","requiresReason":"Reason required","requiresReasonHelp":"Staff must type why before this break starts.","managerOnly":"Manager assigns it","managerOnlyHelp":"Hidden from the staff picker; a manager starts it from the employee's timesheet.","maxPerDay":"Max per day","maxPerDayPlaceholder":"Unlimited","maxPerDayHelp":"How many times a day one person may start this break. Empty = no limit.","weekdays":"Allowed days","weekdaysPlaceholder":"Every day","weekdaysHelp":"Only offered on these days, e.g. Friday for Juma prayer. Empty = every day."},"columns":{"name":"Name","duration":"Duration","paid":"Paid","branch":"Branch","status":"Status","rules":"Rules","rulesReason":"Reason required","rulesManagerOnly":"Manager assigns","rulesMaxPerDay":"Max {count}/day","rulesNone":"—"}},"hrDepartments":{"entity":"Department","title":"Departments","add":"Add department","emptyTitle":"No departments yet","emptyDescription":"Create departments like Reception, Clinical, or Admin to organise your staff.","toast":{"created":"Department created","updated":"Department updated","deleted":"Department deleted","saveFailed":"Failed to save department","deleteFailed":"Failed to delete department"},"validation":{"nameRequired":"Name is required"},"form":{"basicsTitle":"Basics","basicsCaption":"Name and optional code used across HR screens.","name":"Department Name","namePlaceholder":"e.g. Reception","code":"Code","codePlaceholder":"e.g. REC","codeHelp":"Short code used in reports (max 20 chars).","description":"Description","descriptionPlaceholder":"What this department is responsible for...","organizationTitle":"Organization","organizationCaption":"Optional parent department for nesting and an optional manager.","parent":"Parent Department","parentPlaceholder":"Select parent department","manager":"Manager","managerPlaceholder":"Select manager"},"columns":{"name":"Name","parent":"Parent Department","subDepartments":"Sub-departments","status":"Status"}},"hrHolidays":{"entity":"Holiday","title":"Holidays","add":"Add holiday","emptyTitle":"No holidays yet","emptyDescription":"Add holidays like New Year or Eid al-Fitr so attendance and payroll can account for them.","everyYear":"Every year","oneOff":"One-off","toast":{"created":"Holiday created","updated":"Holiday updated","saveFailed":"Failed to save holiday"},"validation":{"nameRequired":"Name is required","dateRequired":"Date is required"},"form":{"basicsTitle":"Basics","basicsCaption":"Name, date, and the branch this holiday applies to.","name":"Holiday Name","namePlaceholder":"e.g. New Year, Eid al-Fitr","date":"Date","branch":"Branch","branchPlaceholder":"All branches (tenant-wide)","branchHelp":"Leave empty to apply this holiday to every branch.","notes":"Notes","notesPlaceholder":"Alternate names, observance rules...","policyTitle":"Policy","policyCaption":"How this holiday affects attendance and payroll.","isRecurring":"Recurring every year","isPaid":"Paid holiday"},"columns":{"name":"Name","recurring":"Recurring","date":"Date","branch":"Branch","paid":"Paid","status":"Status"}},"hrJobTitles":{"entity":"Job Title","title":"Job Titles","add":"Add job title","emptyTitle":"No job titles yet","emptyDescription":"Create job titles like Receptionist, Nurse, or Senior Hygienist.","toast":{"created":"Job title created","updated":"Job title updated","deleted":"Job title deleted","saveFailed":"Failed to save job title","deleteFailed":"Failed to delete job title"},"validation":{"nameRequired":"Name is required"},"form":{"basicsTitle":"Basics","basicsCaption":"Name and optional code used across HR screens.","name":"Job Title Name","namePlaceholder":"e.g. Receptionist","code":"Code","codePlaceholder":"e.g. RCP","codeHelp":"Short code used in reports (max 20 chars).","level":"Seniority Level","levelHelp":"1 = entry, 20 = executive.","description":"Description","descriptionPlaceholder":"Responsibilities of this position...","organizationTitle":"Organization","organizationCaption":"Optional department this title belongs to.","department":"Department","departmentPlaceholder":"Select department"},"columns":{"name":"Name","department":"Department","level":"Level","status":"Status"}},"hrLeaveTypes":{"entity":"Leave Type","title":"Leave Types","add":"Add leave type","emptyTitle":"No leave types yet","emptyDescription":"Create leave types like Annual Leave, Sick Leave, or Unpaid Leave.","validation":{"nameRequired":"Name is required"},"form":{"basicsTitle":"Basics","basicsCaption":"Name and optional code used in attendance reports.","name":"Leave Type Name","namePlaceholder":"e.g. Annual Leave","code":"Code","codePlaceholder":"e.g. ANN","codeHelp":"Short code used in reports (max 20 chars).","days":"Default Days / Year","daysHelp":"0 means no fixed annual entitlement.","description":"Description","descriptionPlaceholder":"When employees should use this type...","policyTitle":"Policy","policyCaption":"Rules that apply to requests under this leave type.","isPaid":"Paid leave","requiresApproval":"Requires manager approval","isActive":"Active","appearanceTitle":"Appearance","appearanceCaption":"Color shown on the leave calendar for easy identification.","color":"Color","colorPlaceholder":"e.g. a hex color code","colorHelp":"Hex color code for the calendar view."},"columns":{"name":"Name","days":"Days / Year","unlimited":"Unlimited","paid":"Paid","approval":"Approval","approvalRequired":"Required","autoApproved":"Auto-approved","status":"Status"},"mobile":{"annualDays":"Annual days","noAccrual":"No accrual","notRequired":"Not required"}},"hrShared":{"allBranches":"All branches","paid":"Paid","unpaid":"Unpaid","activate":"Activate","deactivate":"Deactivate","default":"Default"},"hrShiftTemplates":{"entity":"Shift Template","title":"Shift Templates","add":"Add shift template","emptyTitle":"No shift templates yet","emptyDescription":"Define reusable shifts like Morning or Late, mark one as default, and assign them to staff.","shortDays":{"mon":"Mon","tue":"Tue","wed":"Wed","thu":"Thu","fri":"Fri","sat":"Sat","sun":"Sun"},"validation":{"nameRequired":"Name is required","timesRequired":"Set both a start and end time for active days.","endAfterStart":"End time must be after the start time."},"form":{"basicsTitle":"Basics","basicsCaption":"A named, reusable shift the clinic can assign to staff. Leave the branch empty for a tenant-wide template.","name":"Shift Name","namePlaceholder":"e.g. Morning, Late, Split AM/PM","branch":"Branch","branchPlaceholder":"All branches (tenant-wide)","branchLockedHelp":"The branch a shift belongs to cannot be changed after creation.","branchHelp":"Leave empty to make this shift available to every branch.","weeklyTitle":"Weekly Pattern","weeklyCaption":"Set the working window for each day. Shifts may exceed standard branch hours.","assignmentTitle":"Assignment","assignmentCaption":"Control how this shift is used across the clinic.","isDefault":"Default shift","isDefaultHelp":"Applied to staff with no explicit assignment.","isSelectable":"Selectable","isSelectableHelp":"Allow HR to assign this shift to staff.","isActive":"Active"},"columns":{"name":"Name","branch":"Branch","workingDays":"Working Days","noWorkingDays":"No working days","varies":"varies","assignable":"Assignable","status":"Status"}},"hrTeams":{"entity":"Team","title":"Teams","add":"Add team","description":"Call center, front desk, sales and task teams, and who supervises each. Commission supervisor rules read these teams.","emptyTitle":"No teams yet","emptyDescription":"Create your first team to group staff and name who supervises them.","noMatch":"No team matches \"{search}\".","scopes":{"call_center":"Call center","front_desk":"Front desk","sales":"Sales","tasks":"Tasks"},"validation":{"nameRequired":"Team name is required","codeRequired":"Code is required","scopeRequired":"Select a team type"},"form":{"basicsTitle":"Basics","basicsCaption":"A short, recognisable name, the kind of team, and the branches it operates from.","name":"Team Name","namePlaceholder":"e.g. Call Center A","code":"Code","codePlaceholder":"e.g. call-center-a","codeHelp":"Unique per team type. Cannot be changed after creation.","scope":"Team Type","scopeHelp":"Commission supervisor rules read Call center teams for consultation bookings, and Sales → Call center → Front desk teams for sales.","branches":"Branches","branchesPlaceholder":"Select branches","branchesHelp":"Members are picked from these branches. Leave empty to pick from your current branch.","membersTitle":"Members","membersCaption":"Staff in this team, and who supervises it. Leave empty to create the team now and add members later.","members":"Members","supervisors":"Supervisors","supervisorsPlaceholder":"Pick from the members above…","supervisorsEmptyPlaceholder":"Add members first","supervisorsHelp":"A supervisor earns the team's supervisor commission on the other members' work, never on their own."},"columns":{"name":"Name","type":"Type","supervisors":"Supervisors","noSupervisor":"No supervisor","members":"Members","updatedAt":"Last Updated"}},"notificationPreferences":{"title":"Notification Preferences","description":"Block specific phone numbers or emails from receiving marketing messages. Customers who reply STOP are added here automatically.","entity":"Suppression","all":"All","addFailed":"Failed to add","emptyTitle":"No suppressions yet","emptyDescription":"Customers who reply STOP will appear here automatically.","viewHistory":"View audit history","remove":"Remove (un-suppress)","single":{"title":"Add a single contact","caption":"For when a customer calls reception and asks to be unsubscribed. Provide phone OR email (both are accepted).","phone":"Phone number","email":"Email","category":"Category"},"categories":{"all":"All marketing","promotion":"Promotion","marketing":"Marketing","newsletter":"Newsletter","campaign":"Campaign"},"csv":{"title":"Bulk import from CSV","caption":"Upload a CSV with columns: <code>phone_number</code>, <code>email</code>, <code>category</code>, <code>notes</code>. At least one of phone or email per row.","noRows":"No rows detected. Expected columns: phone_number, email, category, notes.","parseError":"CSV parse error","imported":"Imported {created} new ({duplicates} duplicates, {failed} failed)","importRows":"Import {count} rows","detected":"Detected {count} rows. Click Import to apply. Duplicates are skipped automatically.","chooseFile":"Choose CSV file","import":"Import"},"columns":{"identifier":"Identifier","channel":"Channel","category":"Category","reason":"Reason","source":"Source"},"history":{"title":"Audit history","empty":"No history entries.","customerFallback":"customer #{id}","types":{"created":"Created","changed":"Changed","deleted":"Deleted"},"byUser":"by {name}","byUserId":"by user #{id}","bySystem":"by system","all":"all","channel":"channel: {value}","category":"category: {value}","reason":"reason: {value}","source":"source: {value}","why":"Why: {value}","notes":"Notes: {value}"},"actions":{"addContact":"Add contact","importCsv":"Import CSV"},"summary":{"total":"Total","blanket":"All channels","whatsapp":"WhatsApp","sms":"SMS","email":"Email"}},"emailCopy":{"saved":"Wording saved.","title":"Email wording","description":"Write your own wording for patient emails, in each language. Empty fields use the standard wording.","language":"Language","languages":{"en":"English","ar":"العربية","fa":"فارسی","ru":"Русский","fr":"Français"},"sections":{"review":{"title":"Review request email","caption":"Sent after a visit to ask the patient for feedback."},"appointment":{"title":"Appointment emails","caption":"The booking confirmation and the day-before reminder."}},"fields":{"review_headline":"Headline","review_lead":"Opening message","review_outro":"Closing message","appointment_lead_confirmed":"Confirmation message","appointment_lead_reminder":"Reminder message","appointment_outro":"Closing message"},"helper":"Leave empty for the standard wording. You can use '{clinic}' and '{name}'.","preview":{"title":"Preview","caption":"The saved wording, with a sample patient and visit.","kind":"Email","kinds":{"review_request":"Review request","appointment_confirmed":"Confirmation","appointment_reminder":"Reminder"},"refresh":"Refresh","subject":"Subject: {subject}","frameTitle":"Email preview"}},"emailDomain":{"title":"Email sending domain","description":"Send patient emails from your clinic’s own address, signed with DKIM so they reach the inbox, not spam.","unavailableTitle":"Not available yet","unavailable":"Sending domains are not switched on for this workspace. Patient emails keep going out from the platform address with your clinic’s name.","registered":"Domain added. Add the DNS records below at your domain provider.","registerFailed":"The domain could not be added.","checkFailed":"The check could not be run. Please try again.","register":{"title":"Send from your own domain","caption":"Patient emails are sent from {from} today, with your clinic’s name. Add your domain to send from your own address.","domain":"Your domain","domainPlaceholder":"e.g. serenityclinic.ae","domainHelp":"The domain of your website or email, without www.","localPart":"Address before @","localPartHelp":"Patients see this address, e.g. care@yourdomain. Replies go to your clinic’s support email.","submit":"Add domain"},"details":{"title":"Sending domain","checkNow":"Check now","domain":"Domain","status":"Status","fromAddress":"From address","ownership":"Ownership proof","proven":"Confirmed","notYet":"Waiting for the TXT record","lastChecked":"Last checked","verifiedAt":"Verified on"},"status":{"verified":"Verified, emails are sent from your domain","pending":"Waiting for DNS records","failed":"Records not found"},"statusHelp":{"pending":"Add every record below at your domain provider. Checks run every 30 minutes; changes can take up to 72 hours to appear.","failed":"We could not find the records. Check each one below, fix it at your provider, then select Check now."},"records":{"title":"DNS records to add","caption":"Add these at your domain provider (for example Cloudflare or GoDaddy). Copy each value exactly.","empty":"No records yet.","copyName":"Copy host","copyValue":"Copy value","columns":{"purpose":"Purpose","type":"Type","name":"Host","value":"Value","priority":"Priority"},"purpose":{"ownership":"Proves the domain is yours","dkim":"Signs your emails (DKIM)","mail_from_mx":"Bounce handling","mail_from_spf":"Sender check (SPF)","dmarc":"Policy (DMARC), add if you have none"}},"remove":{"sectionTitle":"Remove domain","caption":"Patient emails go back to the platform address straight away.","button":"Remove domain","title":"Remove this sending domain?","content":"Emails will stop being sent from {domain} and go out from the platform address instead.","confirm":"Remove","done":"Domain removed.","failed":"The domain could not be removed."}},"notificationsHealth":{"email":{"title":"Email delivery","caption":"What happened to patient emails after they were sent.","reputation":"Sender reputation","reputations":{"good":"Healthy","warning":"Watch: bounces or complaints are rising","critical":"At risk: above the provider's limit","no_data":"No emails in this period"},"attempted":"Sent","delivered":"Delivered","bounced":"Bounced","complained":"Marked as spam","suppressed":"Not sent (blocked address)","suppressedHelp":"Addresses that bounced, complained or unsubscribed are skipped.","rate":"{rate}% of sent"},"title":"Notifications Health","description":"Outbound message volume, block reasons, and provider status. Updated every minute. For per-message forensics use the event_flow CLI.","loadFailed":"Failed to load health data: {message}","unknownError":"unknown error","window":{"label":"Time window","24h":"Last 24h","7d":"Last 7 days","30d":"Last 30 days"},"stats":{"sent":"Sent","failed":"Failed","blocked":"Blocked","blockRate":"{rate}% of total","optOuts":"Active opt-outs","optOutsDelta":"+{count} last 24h","optOutsNone":"no new today"},"sections":{"blocked":"Why messages were blocked","byCategory":"Activity by category","byChannel":"Activity by channel","providers":"Configured providers"},"empty":{"blockedTitle":"No blocks in this window 🎉","blockedDescription":"Nothing was blocked in the selected period.","activityTitle":"No activity in this window","activityDescription":"No messages were sent in the selected period.","providersTitle":"No provider integrations configured yet","providersDescription":"Notifications use the platform default fallback. Connect a provider in Settings → Integrations."},"reasons":{"opt_out":"Customer opted out","customer_opted_out":"Customer opted out","quiet_hours":"Inside quiet hours","frequency_cap":"Marketing cooldown not elapsed","invalid_phone":"Invalid phone format","invalid_email":"Invalid email format","empty_target":"No recipient address","no_provider_configured":"No provider configured for channel","test_mode":"Provider in test mode"},"columns":{"reason":"Reason","count":"Count","bar":"Share","sent":"Sent","failed":"Failed","blocked":"Blocked","total":"Total","category":"Category","channel":"Channel","account":"Account","provider":"Provider","status":"Status"},"badges":{"default":"default","testMode":"test mode","verified":"verified","failedTest":"failed test"}},"timeOffs":{"add":"Add time off","emptyTitle":"No time off to display","addTitle":"Add time off","editTitle":"Edit time off","saving":"Saving...","title":"Title","titlePlaceholder":"e.g. Vacation, Doctor's appointment","startDate":"Start date","startTime":"Start time","endDate":"End date","endTime":"End time","allDay":"All day","repeat":"Repeat","repeatEvery":"Repeat every","endRepeat":"Ends","endNever":"Never","endOn":"On a date","endAfter":"After","times":"Time","repeatTypes":{"notRepeat":"Doesn't repeat","daily":"Daily","weekly":"Weekly","monthly":"Monthly","yearly":"Yearly","custom":"Custom"},"repeatUnits":{"day":"Day","week":"Week","month":"Month","year":"Year"},"validation":{"titleRequired":"Title is required","startDateRequired":"Start date is required","endDateRequired":"End date is required","endAfterStart":"End date must be after start date","startTimeAllDay":"Start time should be empty when \"All day\" is checked","endTimeAllDay":"End time should be empty when \"All day\" is checked","startTimeRequired":"Start time is required","endTimeRequired":"End time is required","repeatEveryPositive":"Repeat every must be a positive integer","endRepeatDateRequired":"End repeat date is required","occurrencesRequired":"Number of occurrences is required","occurrencesPositive":"Number of occurrences must be a positive integer (1, 2, 3, ...)","endTimeAfterStart":"End time must be after start time","weekdayRequired":"Day of week is required","monthDayRange":"Day of month must be between 1 and 31","dateRequired":"Date is required","endRepeatDateAfterStart":"End repeat date must be on or after start date"},"staff":{"addTitle":"Add time off","editTitle":"Edit time off","dayOfWeek":"Day of week","selectDay":"Select a day","dayOfMonth":"Day of month","date":"Date","unit":"Unit","occurrences":"Occurrences"},"endRepeatDate":"End date of the repeat"},"advertisementCategories":{"entity":"Advertisement category","title":"Advertisement Categories","form":{"detailsTitle":"Details","title":"Title","titlePlaceholder":"e.g. Local Events","active":"Active"},"columns":{"title":"Title","slug":"Slug","status":"Status"},"list":{"add":"Add category","emptyTitle":"No advertisement categories","emptyDescription":"Group your ad sources by category (e.g. Google Ads, Traditional Media)."}},"advertisementSources":{"entity":"Advertisement source","title":"Advertisement Sources","form":{"detailsTitle":"Details","channel":"Channel","channelPlaceholder":"e.g. TikTok Stories","category":"Category","categoryPlaceholder":"Select category","none":"(None)","priority":"Priority","priorityHelp":"Lower number = higher priority. Used as a tiebreaker for message attribution.","signature":"Signature","signaturePlaceholder":"Optional text fragment for attribution","signatureHelp":"Legacy fallback if no first-message template matches.","active":"Active"},"columns":{"channel":"Channel","category":"Category","priority":"Priority","status":"Status"},"list":{"add":"Add source","emptyTitle":"No advertisement sources","emptyDescription":"Add channels like TikTok, Google Ads, or Doctor Referral.","categorySubtitle":"Category: {category}","slug":"Slug"}},"firstMessageTemplates":{"entity":"First message template","title":"First Message Templates","matchTypes":{"contains":"Contains","starts_with":"Starts With","exact":"Exact Match"},"validation":{"sourceRequired":"Source is required","patternRequired":"Pattern is required","patternTooLong":"Pattern is too long"},"form":{"detailsTitle":"Details","source":"Source","selectSource":"(Select source)","pattern":"Pattern","patternPlaceholder":"e.g. saw your ad on tiktok","patternHelp":"Case-insensitive substring (or starts-with / exact, per match type).","matchType":"Match Type","priority":"Priority","priorityHelp":"Lower number = higher priority when multiple templates match.","language":"Language","languagePlaceholder":"en / ar (optional)","languageHelp":"Leave blank to match any language.","active":"Active"},"columns":{"source":"Source","pattern":"Pattern","match":"Match","language":"Language","priority":"Priority","status":"Status"},"list":{"add":"Add template","emptyTitle":"No first-message templates","emptyDescription":"Add patterns that map an inbound message to an advertisement source."}},"paymentGateways":{"entity":"Payment gateway","title":"Payment Gateways","description":"Credentials for payment processors that handle real payments (Stripe, Tap, Network International). One configuration per provider × environment.","add":"Add gateway","emptyTitle":"No payment gateways yet","emptyDescription":"Add a gateway to start accepting online payments through the customer microsite.","environments":{"sandbox":"Sandbox / Test","live":"Live / Production"},"envShort":{"sandbox":"Sandbox","live":"Live"},"test":{"never":"Never tested","passed":"Passed","failed":"Failed"},"mobile":{"role":"Role"},"columns":{"provider":"Provider","environment":"Environment","default":"Default","lastTest":"Last test","status":"Status"},"form":{"providerTitle":"Provider","providerCaption":"Pick which payment processor this configuration targets, and whether it's sandbox or live.","provider":"Provider","providerLocked":"Provider cannot be changed after creation.","environment":"Environment","environmentLocked":"Environment cannot be changed after creation.","environmentHelp":"Sandbox uses test credentials; live moves real money.","displayName":"Display name","displayNamePlaceholder":"e.g. Stripe, Live","displayNameHelp":"Optional friendly label shown in the gateway list.","credentialsTitle":"Credentials","fieldLabels":{"secret_key":"Secret key","statement_descriptor":"Statement descriptor","account_name":"Account name","bank_name":"Bank name","iban":"IBAN","account_number":"Account number","swift_bic":"SWIFT / BIC","branch":"Branch","instructions":"Payment instructions","reference_prefix":"Reference prefix"},"fieldHelp":{"statement_descriptor":"Name shown on the payer's card statement.","account_name":"Beneficiary name.","account_number":"For banks that do not use IBAN.","instructions":"Free text shown to the payer, in the clinic's language.","reference_prefix":"Start of every transfer reference, e.g. the clinic's short name."},"detailsTitle":"Payment details","detailsCaption":"Shown to the patient when they pay. Nothing here is secret.","credentialsCaptionEdit":"Leave fields blank to keep current credentials. Fill any field to rotate it.","credentialsCaptionCreate":"Provided by the gateway dashboard. Stored encrypted at rest, never visible after save.","noCredentialFields":"No credential fields registered for this provider yet. Save the configuration first; the backend adapter may not require credentials.","keepCurrentValue":"Leave blank to keep current value","pasteKey":"Paste {key}","rotateHint":"Saving with any credential field filled will re-encrypt and reset the last test status.","behaviourTitle":"Behaviour","active":"Active","activeHelp":"When off, the orchestrator skips this configuration.","isDefault":"Default for this provider","isDefaultHelp":"Only one configuration per provider can be the default."}},"settingsCard":{"comingSoon":"Coming Soon"},"channelActivated":"Channel activated","channelDeactivated":"Channel deactivated","profileUi":{"otp":{"sending":"Sending…","sendCode":"Send Verification Code","verifying":"Verifying…","verifyUpdate":"Verify & Update","noCode":"Didn't receive a code?","resend":"Resend code","invalid":"Invalid verification code","length":"OTP must be exactly 4 characters","enterCode":"Enter the 4-digit code sent to {target}.","yourEmail":"your email","yourPhone":"your phone"},"phone":{"label":"Phone Number","invalid":"Please enter a valid phone number","changeTitle":"Change Phone Number","changeDescription":"We'll send a verification code to confirm you own the new number.","placeholder":"Enter new phone number","verifyTitle":"Verify Phone Number"},"email":{"label":"Email Address","invalid":"Please enter a valid email address","changeTitle":"Change Email Address","changeDescription":"We'll send a verification code to confirm you own the new address.","placeholder":"Enter new email address","verifyTitle":"Verify Email Address"},"deleteAccount":{"title":"Delete my account","description":"This action is irreversible. Confirm by sending a verification code to your phone.","confirm":"Are you sure you want to delete this account?","willRemove":"This will permanently remove:","itemProfile":"The user's profile information and photo","itemAccess":"Access to the EMR system","itemGroups":"Membership in all staff groups and departments","itemDirectories":"Presence in staff directories and assignment lists","verifyTitle":"Verify to Delete","verifyDescription":"Enter the code sent to {target}. This will permanently delete the account."},"avatar":{"title":"Change Avatar","description":"Upload a photo or choose from our avatars"},"sessions":{"title":"Active Sessions","thisDevice":"This device","devicesLoggedIn":"{count, plural, one {# device} other {# devices}} logged in","current":"Current Session","other":"Other Sessions","endAll":"End All","terminateAll":"Terminate All","secureTitle":"Your account is secure","secureDescription":"You're only logged in on this device. We'll notify you if someone logs in from a new device.","empty":"No sessions found","loadFailed":"Unable to retrieve your active sessions. Please try again later.","securityTip":"<strong>Security tip:</strong> If you don't recognize a session, terminate it immediately and change your password.","done":"Done","terminateOthersTitle":"Terminate All Other Sessions","terminateOthersConfirm":"Terminate All Other Sessions?","terminateOthersDescription":"This will log out {count, plural, one {# device} other {# devices}} from your account. You will remain logged in on this device.","terminateOthersWarning":"Anyone using these sessions will be immediately signed out and will need to log in again.","terminating":"Terminating…","unknown":"Unknown","activeNow":"Active now","minutesAgo":"{count}m ago","hoursAgo":"{count}h ago","daysAgo":"{count}d ago","authPassword":"Password","authBiometric":"Biometric","authOtp":"OTP","authSocial":"Social","unknownDevice":"Unknown Device","unknownPlatform":"Unknown Platform","loggedInAt":"Logged in: {time}","loggedInRelative":"Logged in {relative}","endSession":"End session","activeDevices":"{count, plural, one {# Active Device} other {# Active Devices}}","tapToReview":"Tap to review and manage sessions","secureOnDevice":"Your account is secure on this device","authPasskey":"Passkey"},"twoFactor":{"title":"Two-Factor Authentication","comingSoon":"Coming Soon","description":"Add an extra layer of security to your account","sms":"SMS verification codes","authenticator":"Authenticator app support","backupCodes":"Backup recovery codes"},"password":{"currentRequired":"Current password is required","minLength":"Password must be at least 8 characters","needsNumber":"Password must include at least one number","confirmRequired":"Please confirm your password","mustMatch":"Passwords must match","changeFailed":"Failed to change password. Please try again.","label":"Password","change":"Change Password","current":"Current Password","currentPlaceholder":"Enter current password","new":"New Password","newPlaceholder":"8+ characters with a number","confirm":"Confirm New Password","confirmPlaceholder":"Re-enter new password","ruleLength":"At least 8 characters","ruleNumber":"Must include at least one number","ruleMatch":"Both password fields must match","saving":"Saving…"},"info":{"personalDetails":"Personal Details","personalCaption":"Your name and contact information used across the system.","fullName":"Full Name","workplace":"Workplace","workplaceCaption":"Your role and assignment within the organization.","branch":"Branch","role":"Role","status":"Status","deleteNeedsPhone":"Add a phone number first to enable account deletion.","deleteAccount":"Delete Account","deleteDescription":"Permanently remove your account and personal data. This action cannot be undone."},"loginHistory":{"empty":"No login history","emptyDescription":"Your login sessions will appear here","current":"Current","unknownLocation":"Unknown location","loggedIn":"Logged in"},"preferences":{"push":"Push Notifications","pushUnavailable":"Notification settings are temporarily unavailable.","darkOn":"Currently using dark theme","lightOn":"Currently using light theme","currency":"Currency","orgManagedTip":"This preference is set by your organization and cannot be changed here.","orgManaged":"Org-managed"},"security":{"credentials":"Sign-in Credentials","credentialsCaption":"Your username and password used to access your account.","username":"Username","twoFactorCaption":"Add a second verification step when signing in.","passkey":"Passkey Authentication","passkeyCaption":"Sign in with Face ID, Touch ID, or a security key instead of a password.","sessionsCaption":"Devices currently signed into your account."},"tabs":{"top":{"personal-info":"Personal Info","security":"Security","work":"Work","preferences":"Preferences"},"sub":{"security":"Account","login-history":"Login History","change-log":"Change Log","attendance":"Attendance","payslips":"Payslips","leave":"Leave","service-delivery":"Service Delivery"}},"comingSoon":{"title":"Coming soon","description":"This section is still being built."}},"reportsFormatOp":{"gt":"Greater than","gte":"Greater than or equal to","lt":"Less than","lte":"Less than or equal to","eq":"Equal to","between":"Is between","contains":"Text contains"},"reportsFormatTone":{"success":"Good","warn":"Watch","danger":"Bad","info":"Info","neutral":"Plain"},"reportsFormatPoint":{"min":"Min value","max":"Max value","number":"Number","percent":"Percent","percentile":"Percentile","none":"None"},"reportsFormatBetween":"between {from} - {to}","reportsFormatContains":"contains “{value}”","reportsFormatSelectTarget":"Select a metric or period","reportsFormatAllPeriods":"All periods","reportsFormatTitle":"Conditional formatting","reportsFormatRemoveRule":"Remove rule","reportsFormatAddRule":"Add a rule","reportsFormatCondition":"Condition","reportsFormatFrom":"From","reportsFormatValue":"Value","reportsFormatValuePlaceholder":"value","reportsFormatTo":"To","reportsFormatStyle":"Formatting style","reportsFormatSaveChanges":"Save changes","reportsFormatAddAnother":"Add another rule","reportsFormatEditingRule":"Editing the selected rule. Save changes to replace it, or Cancel to leave it as-is.","reportsFormatRuleTip":"Tip: pick a metric’s “All periods” to colour every column at once. Hit Apply to save. The rule above is included automatically.","reportsFormatScalePoints":"Scale points","reportsFormatMinPoint":"Min point","reportsFormatMidPoint":"Midpoint","reportsFormatMaxPoint":"Max point","reportsFormatEditingScale":"Editing the selected scale. Save changes to replace it, or Cancel to leave it as-is.","reportsExportedAs":"Exported as {format}.","reportsDrillRecords":"Records","reportsDrillScrollToLoadAll":"Scroll to load all records before exporting the statement","reportsDrillNoRecordsToExport":"No records to export","reportsExport":"Export","reportsDrillExportsFiltered":"Exports the filtered records you see here.","reportsDrillTheseRecords":"These records","reportsRowsCount":"{count, plural, one {# row} other {# rows}}","reportsPrintPdf":"Print / PDF","reportsPrintOrPdfAria":"Print or export as PDF","reportsViewRecordDetails":"View record details (opens in a new tab)","reportsDrillLoadedOf":"{loaded} of {total} records loaded","reportsDrillRecordCount":"{count, plural, one {# record} other {# records}}","reportsDrillRefreshing":"refreshing…","reportsDrillAllLoaded":"All loaded","reportsDrillLoadingRecords":"Loading records…","reportsDrillLoading":"Loading…","reportsCalcNetSales":"Net Sales","reportsCalcProductCost":"Product Cost","reportsCalcCommission":"Commission","reportsCalcAdSpend":"Ad Spend","reportsCalcGrossProfit":"Gross Profit","reportsHideBreakdown":"Hide breakdown","reportsShowBreakdown":"Show breakdown","reportsMoreExportOptions":"More export options","reportsLegacyMetric":"Metric","reportsLegacyTotal":"Total","reportsPdfFailed":"Could not generate the PDF.","reportsPrintViewFailed":"Could not open the print view.","reportsUpdatedClickRefresh":"Updated {relative}. Click to refresh","reportsRefreshReportData":"Refresh report data","reportsViewOptions":"View options","reportsMoreToolbarOptions":"More toolbar options","reportsCompareTo":"Compare to","reportsCompareHint":"Show change vs an earlier period alongside each value.","reportsCompareOff":"Off","reportsComparePrevious":"Previous period","reportsCompareLastYear":"Same period last year","reportsFormatDrawerHint":"Color table cells by value. Highlight highs and lows, or apply per-column color scales and rules.","reportsFormatTableOnly":"Available in table view only. Switch back to the table to edit formatting.","reportsFormatManage":"Manage conditional formatting…","reportsSavedViews":"Saved views","reportsSaveCurrentView":"Save current view…","reportsNoSavedViews":"No saved views yet","reportsNoSavedViewsHint":"Save the current filters to get back to this exact state later.","reportsSavedViewDefault":"Default","reportsCatalogNoMatchTitle":"No matching reports","reportsCatalogNoMatchDescription":"No reports match \"{term}\". Try a different keyword.","reportsCatalogEmptyTitle":"No reports available","reportsCatalogEmptyDescription":"There are no reports in this category yet.","reportsCatalogDescription":"Browse and run reports for your business.","reportsLeadFunnel":"Lead Funnel","reportsNoFunnelData":"No funnel data for this period.","reportsNoDataForPeriod":"No data for this period.","reportsBranches":"Branches","reportsAny":"Any","reportsCx":{"leads":"Leads","booked":"Booked","arrived":"Arrived","paid":"Paid","noShows":"No shows","revenue":"Revenue","total":"Total","allSources":"All sources","source":"Source","date":"Date","bookingPct":"Booking %","showPct":"Show %","paidPct":"Paid %","totalLeads":"Total leads","totalLeadsOverTime":"Total leads over time","currentPeriod":"Current period","comparison":"Comparison","comparisonPeriod":"Comparison period","leadFunnel":"Lead funnel","leadsBySource":"Leads by source","leadsBySourceOverTime":"Leads by source over time","leadsOverTimeBySource":"Leads over time by source","leadsRevenueBySource":"Leads & revenue by source","bookingRate":"Booking rate","showRate":"Show rate","paidRate":"Paid rate","avgTicket":"Avg ticket","totalRevenue":"Total revenue","totalRevenueOverTime":"Total revenue over time","view":"View","chart":"Chart","table":"Table","export":"Export","exportAs":"Export as","loadingDashboard":"Loading dashboard…","sources":{"meta_ads":"Meta Ads","google_ads":"Google Ads","whatsapp_campaign":"WhatsApp Campaign","landing_page":"Landing Page","other":"Other"},"comparisonWith":"Comparison · {label}","leadsForMonth":"Leads: {month}"},"staffPanelDischargeHelp":"Discharging closes the sessions of this visit that took place. Sessions not started yet stay booked. Do it when the patient is leaving.","staffPanelDischargeHelpChild":"This session is part of a multi-session visit. Discharging closes the sessions of the visit that took place; sessions not started yet stay booked. Do it when the patient is leaving.","whatsappDetail":{"verifiedTitle":"Verified account details","changeVerified":"Want to change the verified details?","displayName":"Display name","phoneNumber":"Phone number","numberQuality":"Number quality","numberStatus":"Number status","tierLimit":"Tier limit","profileTitle":"Profile details","profilePhoto":"Account profile photo","activateApplication":"Application status","active":"Active","inactive":"Inactive","applicationName":"Application name","applicationNamePlaceholder":"Enter application name","businessEmail":"Business email","businessEmailPlaceholder":"Enter business email","primaryWebsite":"Primary website","primaryWebsitePlaceholder":"Type a URL and press Enter","businessAddress":"Business address","businessAddressPlaceholder":"Enter business address","businessVertical":"Business vertical","businessVerticalPlaceholder":"Enter business vertical","description":"Description","descriptionPlaceholder":"Enter description","editTitle":"Edit profile details","saveChanges":"Save changes","nameRequired":"Application name is required","emailInvalid":"Invalid email address"},"reportsBranchesAll":"All branches","reportsBranchesCount":"{count, plural, one {# branch} other {# branches}}","reportsBranchesApply":"Apply","reportsBranchesSingleHint":"This report shows one branch or all branches.","taskSuccessfullyCreated":"Task created successfully","taskSuccessfullyEdited":"Task updated successfully","dischargeVisit":{"itemsLeft":"{count, plural, one {# item left before discharge} other {# items left before discharge}}","showDetails":"Show what to fix","hideDetails":"Hide details","visitTitle":"Visit","closingTitle":"Sessions closed by this discharge","staysBookedTitle":"Stays booked","staysBookedHint":"Not started yet. It stays booked; when the patient comes back it opens a new visit.","nothingRequired":"Nothing required","root":"Main session","done":"Done","toDo":"To do","items":{"patient_file":"Patient file (DHA)","attending_doctor":"Attending doctor with Sheryan ID","admission_details":"Admission details","invoice":"Invoice","service_report":"Service report","used_materials":"Used materials","prescription":"Signed prescription","dose_record":"Medicine batch"},"types":{"C":"Consultation","S":"Service","T":"Telehealth","H":"Home care"},"warningsTitle":"Worth completing (not required)","allDone":"All done","submitBlockedReason":"Complete the items above first","submitConfirmReason":"Tick the confirmation first","owners":{"reception":"Reception","clinician":"Clinician"}},"integrationApiKeys":{"entity":"API key","title":"API Keys","purposes":{"voice_ai":"Voice AI agent","telehealth":"Telehealth platform","affiliate_leads":"Affiliate lead partner","metabolic_reports":"Metabolic report sender","inbound_leads":"Signed inbound leads"},"form":{"detailsTitle":"New key","detailsCaption":"The key works on this clinic only and opens only the integration you pick.","name":"Name","namePlaceholder":"e.g. n8n voice agent","purpose":"Integration","purposeHelp":"The only integration this key can call.","branch":"Branch","branchPlaceholder":"Select branch","branchHelp":"Leads from this partner are filed under this branch.","leadStage":"Lead stage","leadStagePlaceholder":"Select stage","leadStageHelp":"Leads from this partner start in this stage. Empty uses the clinic default.","lifetime":"Expires","lifetimeHelp":"After this the key stops working. Rotate it before then.","lifetimeNever":"Never","lifetimeDays":"In {count} days","scopes":"Allowed actions","scopesPlaceholder":"All actions of this integration","scopesHelp":"Leave empty to allow everything this integration can do.","rateLimit":"Requests per minute","rateLimitHelp":"Leave empty for no limit on this key. Inbound lead keys default to 120.","mappingTitle":"Field mapping","mappingCaption":"Where each lead field sits in the JSON the sender posts, as a dotted path such as contact.mobile. Leave all empty if the sender uses these names already.","mappingPlaceholder":"contact.mobile","mappingFields":{"phone_number":"Phone number","first_name":"First name","last_name":"Last name","email":"Email","gender":"Gender","first_message":"First message"}},"columns":{"name":"Name","prefix":"Key prefix","issued":"Issued","issuedBy":"{date} by {name}","lastUsed":"Last used","neverUsed":"Never","status":"Status","active":"Active","revoked":"Revoked","ends":"Expires / revoked","neverExpires":"Never","revokedBy":"{date} by {name}","expired":"Expired","access":"Access","accessAll":"All actions","accessScopes":"{count, plural, one {# action} other {# actions}}"},"list":{"add":"Issue key","emptyTitle":"No API keys yet","emptyDescription":"Issue a key for each outside system that calls this clinic, such as a voice agent or a partner site."},"issued":{"title":"Copy your new key","warningTitle":"This key is shown only once","warningBody":"Copy it now and store it in the outside system. It cannot be shown again; if it is lost, revoke it and issue a new one.","name":"Name","purpose":"Integration","header":"Send in header","key":"Key","done":"I have copied it","expires":"Expires","neverExpires":"Never","signingSecret":"Signing secret"},"revoke":{"title":"Revoke \"{name}\"?","body":"The key stops working on the next request. Anything still using it will be refused. This cannot be undone.","confirm":"Revoke key","done":"\"{name}\" revoked","revokeAction":"Revoke"},"rotate":{"title":"Rotate \"{name}\"","description":"Issues a new key with the same integration and settings. Put the new key in the outside system, then let the old one run out.","grace":"Old key keeps working for","graceHelp":"Long enough for whoever holds the key to switch to the new one.","graceNone":"Stop it now","graceHours":"{count, plural, one {# hour} other {# hours}}","confirm":"Rotate key","cancel":"Cancel","rotateAction":"Rotate"},"scopes":{"voicePatientsRead":"Look up patients","voiceCatalogRead":"Read branches, services and availability","voiceAppointmentsRead":"Read appointments","voiceAppointmentsWrite":"Book and change appointments","voiceLeadsRead":"Read leads","voiceLeadsWrite":"Create and update leads","voiceCallsRead":"Read call recordings","voiceCallsWrite":"Log calls and escalations","telehealthSessionsWrite":"Create and update sessions","leadsWrite":"Create leads","reportsSend":"Send reports"}},"reportsCustomizeBy":"by {labels}","reportsCustomizeMore":"{first} +{count} more","webhooks":{"entity":"webhook endpoint","title":"Webhooks","events":{"bookingCreated":"Booking created","invoicePaid":"Invoice paid","leadCreated":"Lead created","test":"Test event"},"form":{"detailsTitle":"Endpoint","detailsCaption":"Events are signed and carry record ids only, never patient details.","name":"Name","namePlaceholder":"e.g. Our CRM","url":"HTTPS address","urlHelp":"Must be a public https address.","events":"Events","eventsPlaceholder":"Select events","eventsHelp":"This address receives only the events you pick."},"issued":{"title":"Copy your signing secret","warningTitle":"This secret is shown only once","warningBody":"Copy it now and use it to verify each request. It cannot be shown again; if it is lost, remove this endpoint and add it again.","name":"Name","header":"Signature header","secret":"Signing secret","done":"I have copied it"},"columns":{"name":"Name","events":"Events","created":"Added","status":"Status","autoDisabled":"Switched off after failures"},"actions":{"sendTest":"Send test event","deliveries":"Delivery log","testDelivered":"Test event delivered","testFailed":"Test event failed: {reason}"},"deliveries":{"title":"Delivery log","event":"Event","sentAt":"Created","attempts":"Attempts","outcome":"Result","status":"Status","nextAttempt":"Next attempt {date}","httpStatus":"HTTP {status}","emptyTitle":"Nothing sent yet","emptyDescription":"Events sent to this endpoint appear here for 30 days. Send a test event to try it.","statuses":{"pending":"Pending","retrying":"Retrying","delivered":"Delivered","failed":"Failed"}},"list":{"add":"Add endpoint","emptyTitle":"No webhooks yet","emptyDescription":"Add an address to receive signed events when a booking is created, an invoice is paid or a lead arrives.","notInPlanTitle":"Webhooks are not on this clinic's plan","notInPlanDescription":"You can still issue API keys for the integrations this clinic uses.","openApiKeys":"Open API keys"}}},"MessagingComposer":{"reply":"Reply","react":"React","copyText":"Copy text","copied":"Copied","copyFailed":"Couldn't copy","messageActions":"Message actions","replyMessage":"Reply Message","repliedToStory":"Replied to your story","tapToRetry":"Tap to retry","dropToAttach":"Drop to attach","attachFile":"Attach file","emoji":"Emoji","quickReplies":"Quick replies","sendTemplate":"Send template","sendMessage":"Send message","notePlaceholder":"Write an internal note…","voiceMessage":"Voice message","audioMessage":"Audio message","file":"File","slideToCancel":"← Slide to cancel","releaseToCancel":"Release to cancel","slideUpToLock":"Slide up to lock recording ({percent}%)","recordVoiceMessage":"Record voice message","holdToRecordVoiceMessage":"Hold to record voice message","sendVoiceMessage":"Send voice message","cancelVoiceMessage":"Cancel voice message","mentionedYouInStory":"Mentioned you in their story","messageDeleted":"This message was deleted","forwarded":"Forwarded","edited":"Edited","savedReplies":"Saved replies","newSavedReply":"New","allReplies":"All replies","myReplies":"My replies","newestFirst":"Newest first","sortAToZ":"A-Z","loadSavedRepliesFailed":"Couldn't load saved replies.","retry":"Retry","savedReplyActions":"Saved reply actions","savedReplyEntityName":"Saved reply","noSavedRepliesFound":"No saved replies match your search","noSavedRepliesFoundHint":"Try a different word from the title or message.","noSavedRepliesYet":"No saved replies yet","noSavedRepliesYetHint":"Create one for the answers you send most often.","createSavedReply":"Create saved reply","editSavedReply":"Edit saved reply","savedReplyIntro":"Save a reply you send often so you can insert it into the conversation with one click, or by typing <strong>/</strong> in the composer.","savedReplyTitleLabel":"Title","savedReplyTitlePlaceholder":"e.g. Appointment booking","savedReplyMessageLabel":"Reply message","savedReplyMessagePlaceholder":"Enter the reply message","savedReplyVariableHint":"Type # to insert a variable ({count}/{max})","savedReplyHasAttachment":"Has an attachment","savedReplyAddAttachment":"Add attachment","savedReplyAttachmentHint":"Image (JPG/PNG, up to 5 MB), MP4 video (up to 16 MB) or PDF. Saved once, sent instantly every time.","savedReplyUploadFailed":"Could not upload the file. Try again.","savedReplySaveFailed":"Could not save the reply.","savedReplyAiEnabledLabel":"AI assistant can send this","savedReplyAiEnabledHint":"When a customer asks about one of the keywords, the AI may send this file.","savedReplyKeywordsLabel":"Keywords","savedReplyKeywordsPlaceholder":"e.g. o-bliss, fat reduction, before and after","savedReplyKeywordsHint":"Separate with commas. Used by the AI to pick the right file.","discard":"Discard","removeAttachment":"Remove attachment","camera":"Camera","attachImage":"Image","attachVideo":"Video","attachAudio":"Audio","attachDocument":"Document","cameraAccessDisabled":"Camera access is disabled. Enable camera permissions in your device settings.","startRecording":"Start recording","pauseRecording":"Pause recording","resumeRecording":"Resume recording","modeAria":"Message type","noteTab":"Note","moreReactions":"More reactions","buttonReply":"Tapped a button","reacted":"Reacted {emoji}","reactedTo":"Reacted {emoji} to “{snippet}”","reactionPill":"Reaction {emoji}{count, plural, =1 {} other { ×#}}"},"MessagingMessage":{"reactFailed":"Couldn't send the reaction. The 24-hour reply window may be closed.","location":"Location","viewOnMap":"View on map","sharedContact":"{count, plural, one {Shared contact} other {# shared contacts}}","unnamedContact":"Unnamed contact","systemNotice":"WhatsApp sent a system notification","unsupportedHint":"WhatsApp could not deliver this message type.","duplicateSendWarning":"You sent this exact message {seconds}s ago and it went through. Send it again?","sendAgain":"Send again","resendAlreadySent":"This message was already sent. No need to resend it.","conversationToasts":{"closed":"Conversation closed","closeFailed":"Couldn't close the conversation","reopened":"Conversation reopened","reopenFailed":"Couldn't reopen the conversation","claimToReply":"Claim this conversation to reply."}},"LowStockAlerts":{"title":"Low Stock Alerts","description":"Products below reorder point and stockout predictions.","critical":"Critical","criticalCaption":"Runs out in 7 days or less","warning":"Warning","warningCaption":"Runs out within the low-stock threshold","total":"Total","totalCaption":"Low stock items","stockoutPredictions":"Stockout Predictions","noPredictions":"No stockout predictions.","daysOfStockRemaining":"{days} days of stock remaining","refresh":"Refresh","refreshing":"Refreshing…","refreshSuccess":"Predictions refreshed.","refreshError":"Could not refresh predictions.","selectBranchTitle":"No branch selected","selectBranch":"Select a branch to view low-stock alerts."},"ViewSetPassword":{"title":"Set your password","description":"Create a password to activate your account.","description_named":"Welcome, {name}! Create a password to activate your account.","password_label":"New Password","confirm_label":"Confirm password","password_hint":"8+ characters, with an uppercase letter and a number","submit":"Set password","verifying":"Checking your invite…","invalid_title":"This link is no longer valid","invalid_description":"Ask your administrator to send you a new invite.","done_title":"Password set","done_description":"Your account is ready. You can now sign in.","go_to_login":"Go to sign-in","back_to_login":"Back to sign-in"},"CampaignActions":{"launch":"Launch","pause":"Pause","resume":"Resume","cancel":"Cancel campaign","launchConfirmTitle":"Launch this campaign?","launchConfirmMessage":"\"{name}\" will start sending to {count} recipients.","cancelConfirmTitle":"Cancel this campaign?","cancelConfirmMessage":"\"{name}\" will stop permanently. This cannot be undone.","launchSuccess":"Campaign launched","pauseSuccess":"Campaign paused","resumeSuccess":"Campaign resumed","cancelSuccess":"Campaign cancelled"},"Campaign":{"title":"Campaigns","description":"Create and manage marketing campaigns.","newCampaign":"New Campaign","tabWhatsApp":"WhatsApp","entityName":"Campaigns","noDataTitle":"No campaigns yet","noDataDescription":"Create your first WhatsApp campaign to get started.","searchPlaceholder":"Search campaign...","filters":"Filters","colCampaignName":"Campaign Name","colType":"Type","colCreatedBy":"Created By","colIdentifier":"Identifier","colRecipients":"Recipients","colSentCount":"Sent Count","colSendDate":"Send Date","colStatus":"Status","filterTitle":"Filter Campaigns","accordionStatus":"Status","accordionType":"Type","accordionCreationDate":"Creation Date","accordionActivity":"Activity","statusFieldLabel":"Status","statusPlaceholder":"Any status","optionAny":"Any","statusDraft":"Draft","statusScheduled":"Scheduled","statusInProgress":"In Progress","statusCompleted":"Completed","statusCancelled":"Cancelled","typeFieldLabel":"Type","typePlaceholder":"Any type","typeAwareness":"Awareness","typeConversion":"Conversion","typeRetention":"Retention","typeReactivation":"Reactivation","dateFrom":"From","dateTo":"To","activeOnly":"Active campaigns only","tabEmail":"Email","noDataDescriptionEmail":"Create your first email campaign to get started."},"CampaignWizard":{"stepBasics":"Basic Details","stepMessage":"Message Content","stepSender":"Sender & Recipients","stepSummary":"Summary","entityName":"Campaign","editTitle":"Edit campaign","createTitle":"Create a new campaign","unsavedTitle":"Close Campaign Creation?","unsavedDescription":"Your campaign is not saved yet. Leave now and your progress is lost.","unsavedConfirm":"Close","unsavedCancel":"Continue Editing","submit":"Confirm Campaign","saveDraft":"Save as Draft","toastNoRecipientsMatched":"No recipients matched the selected groups. Adjust the groups and try again.","toastScheduleTimePassed":"Scheduled send time has passed. Pick a new time.","toastNoRecipientsYet":"This campaign has no recipients yet. Upload a recipients file first.","toastUploadOrSelectGroup":"Upload a recipients file or select at least one group before confirming.","toastImportFailed":"Recipients file import failed. Review the file and try again.","toastImportTimeout":"Recipients are still importing. Launch the campaign from the list once the import finishes.","basicsTitle":"Campaign Details","basicsCaption":"Define the main info for your campaign","nameLabel":"Campaign Name","namePlaceholder":"Enter Name","nameHint":"Campaign name should be unique and not exceed 100 characters","typeLabel":"Campaign Type","typePlaceholder":"Choose type","typeAwareness":"Awareness","typeConversion":"Conversion","typeRetention":"Retention","typeReactivation":"Reactivation","goalLabel":"Campaign Goal","goalPlaceholder":"Choose goal","goalLead":"Lead","goalConsultationBooking":"Consultation Booking","goalRevenue":"Revenue","startDateLabel":"Start Date","endDateLabel":"End Date","descriptionLabel":"Description","descriptionPlaceholder":"Describe...","senderTitle":"Sender","senderCaption":"Choose when your campaign is sent","schedulingLabel":"Scheduling","launchImmediately":"Launch immediately","scheduleForLater":"Schedule for later","dateLabel":"Date","timeLabel":"Time","futureTimeError":"Scheduled send time must be in the future.","recipientsTitle":"Recipients List","recipientsCaption":"Upload a CSV file or target saved patient/lead groups","sourceLabel":"Recipients source","sourceFile":"Upload CSV file","sourceAudiences":"Saved groups (patients / leads)","sendToGroupsLabel":"Send to groups","sendToGroupsPlaceholder":"Select one or more groups","sendToGroupsHelper":"Dynamic groups re-run their filters at launch, so the list is always current.","excludeGroupsLabel":"Exclude groups (optional)","excludeGroupsPlaceholder":"Anyone in these groups is skipped","unsubscribedNote":"Unsubscribed contacts are always skipped automatically.","sampleFile":"Sample File","channelLabel":"Channel","channelPlaceholder":"Choose channel","templateLabel":"Message Template","templatePlaceholder":"Choose template","headerVideo":"Header Video","headerImage":"Header Image","documentUrl":"Document Url","headerText":"Header","headerUrlPlaceholder":"URL, Ex: https....","videoHint":"Video URL must be accessible publicly. Max size Should be 16MB. Video format should be .mp4 (preferred) or .3gp.","imageHint":"Image URL must be accessible publicly. Max size Should be 5MB.","documentHint":"Document URL must be accessible publicly. Max size Should be 100MB. Document format should be .pdf, .doc, .docx or .txt.","bodyVariables":"Body Variables","dynamicVariables":"Dynamic Variables:","buttonCopyCodeLabel":"Button Copy Code","buttonCopyCodePlaceholder":"Value for the button","preview":"Preview","sendTestTitle":"Send a test campaign","sendTestDescription":"You can send this campaign as a test to a max. of 10 recipients at a time.","testCampaign":"Test Campaign","summaryCampaignType":"Campaign Type","summaryCampaignName":"Campaign Name","whatsappBusinessNumber":"WhatsApp Business Number","targetGroups":"Target Groups","excludedGroups":"Excluded Groups","numberOfRecipients":"Number of Recipients","resolvedFromGroups":"Resolved from groups at launch","messageTemplate":"Message Template","messageLanguage":"Message Language","mappedFields":"Mapped Fields","batchSending":"Batch Campaign Sending","batchSendingDescription":"Send to recipients in smaller groups spaced over time to stay within WhatsApp's rate limits. Recipients are split into batches of the size you set and sent one batch per interval.","recipientsPerBatch":"Recipients per Batch","recipientsPerBatchPlaceholder":"e.g. 100","batchInterval":"Interval between batches (minutes)","batchIntervalPlaceholder":"e.g. 5","batchPlan":"{recipients} recipients → {batches, plural, one {# batch} other {# batches}} of up to {size}, one every {interval} min.","testRecipientsPlaceholder":"Add recipients","testMaxRecipientsHint":"You can add up to 10 recipients,","testDiscard":"Discard","testSend":"Send","testRecipientLabel":"Recipient phone number","testAddRecipient":"Add","testInvalidPhone":"Enter a valid phone number","testDuplicatePhone":"This number has already been added","testConfirmTitle":"Send test campaign?","testConfirmMessage":"This will send a real WhatsApp message to {count, plural, one {# recipient} other {# recipients}}. Continue?","loyaltyTitle":"Loyalty audience","loyaltyDescription":"Filter recipients by Customer Club attributes. Leave everything blank to skip loyalty filtering.","loyaltyNoFilter":"No loyalty filter","loyaltyCustomerCount":"{count, plural, one {# customer} other {# customers}}","loyaltyTier_bronze":"Bronze","loyaltyTier_silver":"Silver","loyaltyTier_gold":"Gold","loyaltyMinPoints":"Min points","loyaltyMaxPoints":"Max points","loyaltyInactiveDays":"Inactive ≥ days","loyaltyInactiveDaysHelper":"No booking in N+ days","loyaltyActiveDays":"Active within days","loyaltyActiveDaysHelper":"Visited in last N days","loyaltyBirthdayDays":"Birthday within (days)","loyaltyIsReferrer":"Is referrer","loyaltyWasReferred":"Was referred","loyaltyHasCashback":"Has active cashback balance","emailContentTitle":"Email content","emailContentCaption":"Subject and body are required. The preview updates as the draft saves.","emailSubjectLabel":"Subject","emailSubjectPlaceholder":"e.g. Your spring offer is here","emailSubjectHelper":"Personalisation tokens such as {token} are allowed.","emailPreheaderLabel":"Preheader","emailPreheaderPlaceholder":"e.g. Book this week and save 20%","emailPreheaderHelper":"The preview text inboxes show after the subject.","emailBodyLabel":"Body","emailBodyPlaceholder":"Write the message your patients will read","emailInsertToken":"Insert token","emailToken_first_name":"First name","emailToken_last_name":"Last name","emailToken_full_name":"Full name","emailToken_clinic_name":"Clinic name","emailToken_branch_name":"Branch name","emailToken_booking_link":"Booking link","emailCtaLabel":"Button label","emailCtaLabelPlaceholder":"e.g. Book now","emailCtaUrl":"Button link","emailCtaUrlPlaceholder":"https://","emailCtaUrlHelper":"Use an http(s) link or {token}.","emailImageUrl":"Image link","emailImageUrlPlaceholder":"https://","emailImageUrlHelper":"Optional header image. Must be an https:// link.","emailPreviewPending":"The preview appears once the subject and body are filled in.","emailPreviewSubject":"Subject: {subject}","emailPreviewFrameTitle":"Email preview","emailFileHint":"Upload a CSV file with an email column. Rows without a valid email are skipped.","testEmailRecipientLabel":"Recipient email","testEmailRecipientPlaceholder":"name@example.com","testInvalidEmail":"Enter a valid email address","testDuplicateEmail":"This email has already been added","testMaxEmailRecipientsHint":"You can add up to 10 email addresses.","testConfirmMessageEmail":"This will send a real email to {count, plural, one {# recipient} other {# recipients}}. Continue?"},"Audiences":{"colGroupName":"Group Name","noDescription":"No description","colMembers":"Members","colCreatedBy":"Created By","colCreated":"Created","addNew":"Add New","searchPlaceholder":"Search groups...","staticTitle":"Static Groups","staticDescription":"Manually managed contact groups. Add contacts individually or import via CSV.","dynamicTitle":"Dynamic Groups","dynamicDescription":"Auto-synced groups based on CRM filters. Members update when you sync.","colLastSynced":"Last Synced","never":"Never","syncColumn":"Sync","syncing":"Syncing...","sync":"Sync","deleteEntityName":"Group","entityName":"Groups","delete":"Delete","noDataTitle":"No groups yet","noDataDescription":"Create a group to organize your contacts and target them in campaigns.","colContact":"Contact","colMobile":"Mobile","colEmail":"Email","colCreatedDate":"Created Date","noName":"No name","contactsTitle":"Contacts","contactsDescription":"Manage all contacts for your campaigns. Add manually or import via CSV.","addContact":"Add Contact","import":"Import","contactsNoDataTitle":"No contacts found","contactsNoDataDescription":"Add a contact or import a CSV, or try a different search.","contactsSearchPlaceholder":"Search by name, phone or email...","contactsCount":"Contacts ({count})","colName":"Name","colPhone":"Phone","noContactsInGroup":"No contacts in this group","removeFromGroup":"Remove from group","rowsPerPage":"Rows:","generalInformation":"General Information","colType":"Type","colDescription":"Description","metaRole":"Meta Role","metaRoleSuppression":"Suppression (exclude in Ads Manager)","metaRoleTargeting":"Targeting","metaAudience":"Meta Audience","notLinked":"Not linked","metaLastSynced":"Meta Last Synced","metaMatchedSize":"Meta Matched Size","contactEntityName":"Contact","unsubscribed":"Unsubscribed","active":"Active","customerPrefix":"Customer: {name}","leadPrefix":"Lead: {name}","close":"Close","contactInformation":"Contact Information","firstName":"First Name","lastName":"Last Name","gender":"Gender","birthDate":"Birth Date","systemInformation":"System Information","updatedAt":"Updated","unsubscribedAt":"Unsubscribed At","unsubscribeReason":"Unsubscribe Reason","addContactsToGroupTitle":"Add Contacts to Group","addContactsToGroupDescription":"Search existing contacts and select the ones to add to this static group.","addContactsToGroupEmptyDescription":"Every matching contact is already in this group, or try a different search.","addContactsCount":"{count, plural, one {Add # contact} other {Add # contacts}}","add":"Add","typeStatic":"Static","typeDynamic":"Dynamic","membersCount":"{count, plural, one {# member} other {# members}}","addContacts":"Add Contacts","edit":"Edit","metaSyncNeedsMember":"Needs at least 1 member before it can sync to Meta.","syncSuppressionToMeta":"Sync suppression to Meta","syncToMeta":"Sync to Meta","membershipRules":"Membership rules ({source})","sourceLeads":"Leads","sourceUsers":"Users","noRules":"No rules. Every contact from this source is included.","metaSuppressionTitle":"Use as a Meta suppression list","metaSuppressionDescription":"Enable this to push these members to a Meta Custom Audience (created automatically), then set it as an <strong>Exclusion</strong> on your ad sets in Ads Manager. Meta needs ~100 matched members before an audience is usable, but smaller lists still work as exclusions.","enableMetaSuppression":"Enable Meta suppression","groupActions":"Group actions","contactActions":"Contact actions","tabs":{"overview":"Overview","contacts":"Contacts"},"enums":{"gender":{"m":"Male","f":"Female"}},"deleted":"Group deleted","contactDeleted":"Contact deleted","contactForm":{"firstNamePlaceholder":"Enter first name","lastNamePlaceholder":"Enter last name","phoneNumber":"Phone number"},"groupForm":{"staticEntity":"Static Group","dynamicEntity":"Dynamic Group","detailsTitle":"Group details","name":"Group name","namePlaceholder":"Enter group name","description":"Description","descriptionPlaceholder":"Enter description (optional)","type":"Group type","typeStaticOption":"Static: manually managed contacts","typeDynamicOption":"Dynamic: auto-synced from CRM filters","source":"Data source","sourcePlaceholder":"Select data source","sourceHelper":"Select where to pull contacts from when syncing","sourceUsersOption":"EMR users (patients)","sourceLeadsOption":"EMR leads","pushToMeta":"Also sync to Meta Ads","pushToMetaHelper":"Push this group's consent-gated members to a Meta Custom Audience for retargeting, exclusion, or lookalike seeding.","metaAudienceId":"Meta Custom Audience ID (optional)","metaAudienceIdPlaceholder":"Auto-created on first sync to Meta","metaAudienceIdHelper":"Leave blank and we create the Meta Custom Audience for you on the first sync. Only paste an ID here to link an audience you already built in Ads Manager.","suppression":"Use as a suppression (do-not-target) list","suppressionHelper":"Members are meant to be set as an EXCLUSION on your ad sets in Ads Manager (e.g. unsubscribed or spam/junk leads). Targeting lists, by contrast, never upload opted-out people."},"rules":{"title":"Membership rules","caption":"Who belongs to this group. Empty = everyone in the selected source.","matchAll":"Match ALL","matchAny":"Match ANY","noRulesLeads":"No rules. Every lead is included.","noRulesCustomers":"No rules. Every customer is included.","addRule":"Add rule","removeRule":"Remove rule","field":"Field","condition":"Condition","value":"Value","date":"Date","categories":"Categories","categoriesPlaceholder":"Select categories","adSources":"Ad sources","adSourcesPlaceholder":"Select ad sources","fields":{"total_purchase":"Total spend","invoice_count":"Purchase count","purchased_category":"Bought service/product category","advertisement_source":"Ad source","gender":"Gender","city":"City","created_at":"Registered date","stage__customer_stage":"Lead outcome","lost_reason__kind":"Marked as","engaged_at":"Engagement","first_name":"First name","last_name":"Last name","lead_created_at":"Lead created"},"helpers":{"total_purchase":"Sum of paid invoices, in the clinic currency.","purchased_category":"Matches the category and its sub-categories.","stage__customer_stage":"Suppress leads at this outcome (e.g. no answer).","lost_reason__kind":"Spam/junk, out-of-scope, or lost leads.","engaged_at":"Never-engaged = clicked but never replied."},"options":{"gender":{"m":"Male","f":"Female"},"stage__customer_stage":{"no_answer":"No answer","not_qualified":"Not qualified","lost":"Lost"},"lost_reason__kind":{"junk":"Spam / junk","out_of_scope":"Out of scope","lost_genuine":"Lost (genuine)"},"engaged_at":{"true":"Never engaged","false":"Has engaged"}},"ops":{"eq":"is","ne":"is not","gt":"greater than","gte":"at least","lt":"less than","lte":"at most","in":"is any of","not_in":"is none of","contains":"contains","isnull":"is"},"dateOps":{"gte":"on or after","lte":"on or before"}}},"SectionAccountingRefunds":{"filterTitle":"Filter Refunds","vendor":"Vendor","status":"Status","all":"All","statusDraft":"Draft","statusPosted":"Posted","statusPartiallyPaid":"Partially Paid","statusPaid":"Paid","refundDateRange":"Refund Date Range","fromDate":"From Date","toDate":"To Date","datePresetThisMonth":"This Month","datePreset3Months":"3 Months","datePresetThisYear":"This Year","datePresetAllTime":"All Time","entityName":"Vendor Refund","refundDetailsTitle":"Refund Details","refundDetailsCaption":"Pick the original vendor bill this refund is issued against. Its line items are pulled in automatically.","vendorPlaceholder":"Select vendor","originalBill":"Original Bill","originalBillPlaceholder":"Select the bill to refund","originalBillNoVendorPlaceholder":"Select a vendor first","refundDate":"Refund Date","paymentMethod":"Payment Method","paymentMethodPlaceholder":"Select payment method","reference":"Reference","referencePlaceholder":"Vendor's credit-note number","referenceHelper":"Optional free-text reference.","notes":"Notes","notesPlaceholder":"Internal notes about this refund","lineItems":"Line Items","linesEmptyHint":"Select the original bill above to pull in its lines, or add items to refund","createSuccess":"Vendor refund created successfully","createError":"Failed to create vendor refund","updateSuccess":"Vendor refund updated successfully","updateError":"Failed to update vendor refund","originalBillRequiredError":"Select the original bill this refund is for.","linesRequiredError":"A refund needs at least one line item.","list":{"searchPlaceholder":"Search refunds..."},"refunds":"Refunds","processAndTrackRefundsIssued":"Process and track refunds issued to vendors.","noRefundsYet":"No refunds yet","recordYourFirstVendorRefund":"Record your first vendor refund to start tracking credits.","columns":{"refundDate":"Refund Date","refundNumber":"Refund Number","vendor":"Vendor","originalBill":"Original Bill","total":"Total","status":"Status"}},"SectionAccountingExpenses":{"listTitle":"Expenses","listDescription":"Record and track staff and operational expenses, from draft to GL posting.","addNew":"New Expense","searchPlaceholder":"Search expenses…","noDataTitle":"No expenses yet","noDataDescription":"Record your first expense to get started.","entityName":"Expense","newExpense":"New Expense","actions":"Actions","actionsAria":"Expense actions","idFallback":"EXP #{id}","colReference":"Reference","colEmployee":"Employee","colCategory":"Category","colDate":"Date","colTotal":"Total","colStatus":"Status","status_draft":"Draft","status_submitted":"Submitted","status_approved":"Approved","status_rejected":"Rejected","status_posted":"Posted","status_paid":"Paid","status_cancelled":"Cancelled","status_reimbursed":"Reimbursed","status_reversed":"Reversed","filtersTitle":"Filter Expenses","filters":"Filters","filtersAll":"All","reset":"Reset","apply":"Apply","filterStatus":"Status","filterCategory":"Category","filterPaymentSource":"Payment Source","filterEmployee":"Employee","filterBranch":"Branch","filterAdSource":"Ad Source","filterDateFrom":"From","filterDateTo":"To","filterDateRange":"Date Range","datePresetThisMonth":"This Month","datePreset3Months":"3 Months","datePresetThisYear":"This Year","datePresetAllTime":"All Time","tabBasics":"Basics","tabReceipts":"Receipts","tabApproval":"Approval","tabAllocations":"Allocations","tabPosting":"Posting","tabAttachments":"Attachments","sectionOverview":"Overview","sectionAmounts":"Amounts","sectionAudit":"Audit","fieldReference":"Reference","fieldEmployee":"Employee","fieldBranch":"Branch","fieldCategory":"Category","fieldPaymentSource":"Payment Source","fieldDate":"Date","fieldDescription":"Description","fieldStatus":"Status","fieldAmount":"Amount","fieldTax":"Tax","fieldTotal":"Total","fieldReceiptRequired":"Receipt Required","fieldReceiptUploaded":"Receipt Uploaded","fieldSubmittedAt":"Submitted At","fieldApprovedBy":"Approved By","fieldApprovedAt":"Approved At","fieldRejectedBy":"Rejected By","fieldRejectedAt":"Rejected At","fieldApprovalReason":"Approval Reason","yes":"Yes","no":"No","sectionPosting":"Posting","sectionApprovalRequirements":"Approval Requirements","fieldIsPosted":"Is Posted","fieldJournalEntry":"Journal Entry","fieldPostedAt":"Posted At","fieldReversal":"Reversal","fieldReversalMove":"Reversal Move","fieldConvertedToBill":"Converted to Vendor Bill","fieldCanReverse":"Can Reverse","fieldApprovalRequired":"Approval Required","fieldReasons":"Reasons","moveRef":"Move #{id}","billRef":"Bill #{id}","noReceipts":"No receipts uploaded yet.","receiptFallback":"Receipt #{id}","noApprovalActivity":"No approval activity yet.","reasonPrefix":"Reason: {reason}","act_approved":"Approved","act_rejected":"Rejected","act_submitted":"Submitted","act_reversed":"Reversed","act_cancelled":"Cancelled","noAllocationsTitle":"No branch allocations","noAllocationsDescription":"This expense is not allocated across multiple branches.","branchFallback":"Branch #{id}","metaValue":"Value","metaAllocated":"Allocated","posted":"Posted","notPosted":"Not posted","optEdit":"Edit","optSubmit":"Submit for Approval","optResubmit":"Re-submit for Approval","optSubmitting":"Submitting…","optApprove":"Approve","optReject":"Reject","optPost":"Post to GL","optPosting":"Posting…","optConvert":"Convert to Vendor Bill","optReverse":"Reverse","optUploadReceipt":"Upload Receipt","optCancel":"Cancel","optCancelling":"Cancelling…","confirmPostTitle":"Post to GL","confirmPostContent":"Post this expense to the general ledger? This action is irreversible.","confirmPostAction":"Post","confirmSubmitTitle":"Submit for Approval","confirmSubmitContent":"Submit this expense for approval? You won't be able to edit it after submission.","confirmSubmitAction":"Submit","confirmCancelTitle":"Cancel Expense","confirmCancelContent":"Cancel this expense request? It will be marked as cancelled and cannot be re-submitted.","confirmCancelAction":"Cancel Expense","approveTitle":"Approve Expense","approveDescription":"Approve this expense and (optionally) record a reason or note for audit.","reasonOptional":"Reason (optional)","notesOptional":"Notes (optional)","cancel":"Cancel","approve":"Approve","approving":"Approving…","rejectTitle":"Reject Expense","rejectDescription":"Rejection is final. The employee will need to submit a new expense if needed.","reason":"Reason","reject":"Reject","rejecting":"Rejecting…","uploadTitle":"Upload Receipt","uploadDescription":"Attach a receipt image or PDF (max 15MB).","upload":"Upload","uploading":"Uploading…","reverseTitle":"Reverse Expense","reverseDescription":"Reverses the posted journal entry. The original expense stays for audit; a counter-entry is created.","reverseReasonLabel":"Reversal reason","reverseReasonPlaceholder":"e.g. Duplicate posting; corrected on …","reverse":"Reverse","reversing":"Reversing…","convertToVendorBill":"Convert to Vendor Bill","convertToVendorBillDescription":"Creates a vendor bill (AP) from this expense so it can be paid through the vendor payment flow.","convertingExpense":"Converting expense…","creatingVendorBill":"Creating vendor bill…","vendorBillCreated":"Vendor bill created","vendorLabel":"Vendor","vendorRequired":"Select a vendor.","convertButton":"Convert","cancelButton":"Cancel","convertButtonBusy":"Converting…","formBasics":"Basics","formBasicsCaption":"Required fields to record the expense.","formMarketing":"Marketing (optional)","formMarketingCaption":"Tag this expense to a marketing channel.","labelEmployee":"Employee","labelBranch":"Branch","labelCategory":"Category","labelPaymentSource":"Payment Source","labelExpenseDate":"Expense Date","labelDescription":"Description","placeholderDescription":"e.g. Courier delivery for medication","labelAmount":"Amount","labelTax":"Tax","labelAdSource":"Ad Source","labelCampaignName":"Campaign Name","placeholderCampaign":"e.g. Q2 2026 Botox","modalSectionBasics":"Basics","modalSectionMarketing":"Marketing","help_employee":"Person who paid for the expense. Defaults to the current user.","help_branch":"Cost-center tag for this expense. Leave blank for an HQ-level (tenant-wide) expense not tied to a single branch.","help_category":"Drives which approval rule applies and which GL account the cost lands in.","help_payment_source":"How the employee paid (petty cash box, personal card to be reimbursed, company card, …).","help_expense_date":"Date on the receipt, used for accounting period and rate lookups.","help_description":"Short narrative that appears on the GL line. e.g. Courier delivery for medication.","help_amount":"Pre-tax amount on the receipt. Must be greater than zero.","help_tax_amount":"VAT / GST shown separately on the receipt (if any).","help_advertisement_source":"Optional. Tag the expense to a marketing channel for ROI attribution in the marketing report.","help_campaign_name":"Optional campaign name. Matched case-insensitively against leads to attribute spend.","expenseSubmitted":"Expense submitted.","failedToSubmitExpense":"Failed to submit.","expenseCancelled":"Expense cancelled.","failedToCancelExpense":"Failed to cancel.","expensePostedToGL":"Expense posted to GL.","failedToPostExpense":"Failed to post expense.","expenseApproved":"Expense approved.","failedToApproveExpense":"Failed to approve.","expenseRejected":"Expense rejected.","failedToRejectExpense":"Failed to reject.","rejectionReasonRequired":"A rejection reason is required.","receiptUploaded":"Receipt uploaded.","failedToUploadReceipt":"Failed to upload receipt.","fileTooLarge":"File is too large (max 15MB).","failedToConvertExpense":"Failed to convert expense.","reversalReasonRequired":"A reversal reason is required.","expenseReversed":"Expense reversed.","failedToReverseExpense":"Failed to reverse expense.","optPrint":"Print Voucher","detail":{"entityPlural":"Expenses","fileSizeKb":"{size} KB"},"enums":{"allocationMethod":{"percentage":"Percentage","fixed_amount":"Fixed amount"}},"openVendorBill":"Open vendor bill","workflow":{"submitForApproval":"Submit for approval","submitPrompt":"Submit this expense for approval?","approve":"Approve","reject":"Reject","postToGl":"Post to GL","postPrompt":"Post this expense to the general ledger? This action is irreversible.","reverse":"Reverse","reversePrompt":"Reverse this posted expense?","cancel":"Cancel"},"validation":{"dateRequired":"Date required","descriptionRequired":"Description required","amountMustBeGreaterThan0":"Amount must be greater than 0"},"receiptsHint":"Receipts count toward the receipt requirement for approval and posting. Other files go under Attachments below."},"SectionAccountingExpenseCategories":{"listTitle":"Expense Categories","listDescription":"Categories that map spend to a GL expense account. Used by expenses, budgets, and bank rules.","addNew":"New Category","searchPlaceholder":"Search categories…","noDataTitle":"No expense categories yet","noDataDescription":"Create your first expense category to start categorising spend.","entityName":"Expense Category","actions":"Actions","actionsAria":"Expense category options","colCategory":"Category","colGlAccount":"GL account","colStatus":"Status","formTitle":"Expense Category","formCaption":"A category maps a name/code to a GL expense account. Expenses, budgets, and bank rules reference it.","labelName":"Name","placeholderName":"e.g. Marketing","labelCode":"Code","placeholderCode":"e.g. MARKETING","helpCode":"Short unique code used across accounting. Auto-filled from the name.","labelAccount":"Default expense account","placeholderAccount":"Select an expense account","helpAccount":"The GL account debited when expenses in this category are posted.","labelDescription":"Description","placeholderDescription":"Optional notes","labelActive":"Active","footerUpdate":"Update Expense Category","footerAdd":"Add Expense Category","tabBasics":"Basics","fieldName":"Name","fieldCode":"Code","fieldGlAccount":"GL account","fieldDescription":"Description","fieldStatus":"Status","fieldCreated":"Created","fieldUpdated":"Updated","detail":{"entityPlural":"Expense categories"},"validation":{"nameIsRequired":"Name is required","codeIsRequired":"Code is required"}},"SectionAccountingAssets":{"basics":"Basics","basicsCaption":"The asset type drives the depreciation method and default GL accounts.","assetName":"Asset name","assetNamePlaceholder":"e.g. Dental Chair, Room 2","assetType":"Asset type","assetTypePlaceholder":"Select a type","branch":"Branch","branchPlaceholder":"Select branch","purchaseDate":"Purchase date","purchaseAmount":"Purchase amount","details":"Details","detailsCaption":"Optional reference information for the asset register.","vendor":"Vendor","vendorPlaceholder":"Select vendor","serialNumber":"Serial number","serialNumberPlaceholder":"e.g. SN-88213","location":"Location","locationPlaceholder":"e.g. 2nd floor, Room 2","notes":"Notes","notesPlaceholder":"Anything worth recording","detail":{"entityPlural":"Assets","assetActions":"Asset actions","capitalizeAsset":"Capitalize asset","disposeAsset":"Dispose asset","alreadyDisposed":"Asset already disposed","netBookValue":"Net book value","code":"Code","accumulatedDepreciation":"Accumulated depreciation","remainingMonths":"Remaining months","disposalDate":"Disposal date","disposalReason":"Disposal reason","disposalProceeds":"Disposal proceeds","tabs":{"depreciation":"Depreciation"},"lineDate":"Date","lineAmount":"Amount","lineJournal":"Journal","linePosted":"Posted","linePostedStatus":"Posted","lineDraftStatus":"Draft","postLineTooltip":"Post this depreciation line","postLineSuccess":"Depreciation line posted","postLineError":"Failed to post depreciation line","noScheduleTitle":"No depreciation schedule yet","noScheduleDescription":"Depreciation lines are generated once the asset is posted and its type has a depreciation method."},"enums":{"disposalReason":{"sale":"Sale","scrap":"Scrap","theft":"Theft","donation":"Donation","other":"Other"},"status":{"disposed":"Disposed","fully_depreciated":"Fully depreciated","active":"Active","draft":"Draft"}},"list":{"searchPlaceholder":"Search assets...","columns":{"asset":"Asset","cost":"Cost","netBookValue":"Net book value","status":"Status"}},"assetCapitalizedPurchaseEntryPosted":"Asset capitalized. Purchase entry posted and depreciation scheduled.","postThePurchaseEntryDr":"Post the purchase entry: Dr Fixed Asset / Cr payable or bank.","generateTheMonthlyDepreciationSchedule":"Generate the monthly depreciation schedule.","assetDisposedADraftDisposal":"Asset disposed. A draft disposal journal was created.","reason":"Reason","proceeds":"Proceeds","amountReceivedFromTheSale":"Amount received from the sale (0 for scrap / theft / donation).","theTypeNameAndCode":"The type name and code will appear throughout the asset register.","name":"Name","eGMedicalEquipment":"e.g. Medical Equipment","eGMedEquip":"e.g. MED-EQUIP","theFixedAssetRegisterShowing":"The fixed-asset register, showing cost, accumulated depreciation, and net book value for each asset.","noFixedAssetsYet":"No fixed assets yet","addYourFirstAssetTo":"Add your first asset to start tracking depreciation.","typeQuick":{"nameRequired":"Name is required","codeRequired":"Code is required"},"validation":{"assetNameIsRequired":"Asset name is required","assetNameMustBe200Characters":"Asset name must be 200 characters or less","purchaseAmountMustBeGreaterThan":"Purchase amount must be greater than zero"},"form":{"sections":{"basics":"Basics","details":"Details"}}},"SectionAccountingBudgets":{"title":"Budget","captionCreate":"One planned amount per branch, expense category and month. Actuals are compared automatically in the Budget vs Actual report.","captionEdit":"Update the planned amount and alert threshold. Branch, category, and month cannot be changed.","branch":"Branch","branchPlaceholder":"Select branch","expenseCategory":"Expense category","expenseCategoryPlaceholder":"Select a category","month":"Month","plannedAmount":"Planned amount","alertThreshold":"Alert threshold","alertThresholdHelper":"Warn once actual spend reaches this % of the planned amount.","detail":{"entityPlural":"Budgets","budgetActions":"Budget actions","basics":"Basics","lastAlerted":"Last alerted","created":"Created","updated":"Updated"},"filterBudgets":"Filter Budgets","expenseCategory2":"Expense Category","monthFrom":"Month from","monthTo":"Month to","reset":"Reset","apply":"Apply","form":{"sections":{"budget":"Budget"}}},"SectionAccountingEmployeeFloats":{"basics":"Basics","basicsCaption":"One float per (employee, branch). Topup / consume / settle happen from the detail drawer.","employee":"Employee","employeePlaceholder":"Select staff member","branch":"Branch","branchPlaceholder":"Select branch","floatAmount":"Float amount","glAccount":"GL suspense account","glAccountPlaceholder":"Auto-create on first topup if left blank","active":"Active","notes":"Notes","notesPlaceholder":"e.g. used for site visits to Sharjah","detail":{"entityPlural":"Employee floats","floatActions":"Float actions","currentBalance":"Current balance","status":"Status","glAccountAuto":"- (created on first top-up)","ledger":"Ledger","noLedgerTitle":"No ledger entries yet","noLedgerDescription":"Top-up, expense, settlement and reconciliation events appear here.","ledgerEntryFallback":"Ledger entry #{id}"},"enums":{"ledgerKind":{"topup":"Top-up","expense":"Expense","settlement":"Settlement","reconcile":"Reconciliation"}},"noJournals":"No journals","validation":{"countedAmountIsRequired":"Counted amount is required","journalIsRequired":"Journal is required","amountIsRequired":"Amount is required","amountMustBeGreaterThan0":"Amount must be greater than 0"}},"SectionAccountingJournals":{"basics":"Basics","basicsCaption":"Core identity fields. Code, name, and type classify how entries in this journal are handled.","journalName":"Journal Name","journalNamePlaceholder":"e.g. Sales Journal","code":"Code","codePlaceholder":"e.g. SAL","journalType":"Journal Type","business":"Business","branch":"Branch","allBranches":"All branches","currency":"Currency","businessDefault":"Business default","defaultAccounts":"Default Accounts","defaultAccountsCaption":"Optional accounts pre-selected for debit and credit lines posted through this journal.","defaultDebitAccount":"Default Debit Account","defaultCreditAccount":"Default Credit Account","controls":"Controls","controlsCaption":"Operational rules. Deactivate a journal to hide it from new postings.","active":"Active","detail":{"entityPlural":"Journals","journalActions":"Journal actions","status":"Status"},"enums":{"journalType":{"sale":"Sales","purchase":"Purchases","cash":"Cash","bank":"Bank","general":"General","depreciation":"Depreciation","staff_salary":"Staff Salary"}},"list":{"searchPlaceholder":"Search journals...","columns":{"journal":"Journal","type":"Type","branch":"Branch","status":"Status","systemJournalCannotBeEdited":"System journal, cannot be edited or deleted"}},"filterJournals":"Filter Journals","anyBranch":"Any branch","anyType":"Any type","configureTheJournalsThatClassify":"Configure the journals that classify and route your general-ledger entries.","addYourFirstJournalTo":"Add your first journal to start classifying general-ledger entries.","validation":{"codeIsRequired":"Code is required","codeMustBe16CharactersOr":"Code must be 16 characters or less","nameIsRequired":"Name is required","nameMustBe255CharactersOr":"Name must be 255 characters or less","journalTypeIsRequired":"Journal type is required","invalidJournalType":"Invalid journal type"},"journalTypeLabel":"Journal Type","form":{"sections":{"basics":"Basics","defaultAccounts":"Default Accounts","controls":"Controls"}},"filterOptions":{"active":"Active","activeDescription":"Journals available for new postings.","inactive":"Inactive","inactiveDescription":"Journals hidden from new postings."},"chips":{"branch":"Branch","type":"Type: {value}","statusActive":"Status: Active","statusInactive":"Status: Inactive"}},"SectionAccountingPaymentSources":{"title":"Payment Source","caption":"A payment source is how an expense was funded. Company-paid sources credit a GL cash/bank account when the expense posts; employee-paid sources create a reimbursement.","name":"Name","namePlaceholder":"e.g. Main Petty Cash","code":"Code","codePlaceholder":"e.g. PETTY-CASH","codeHelper":"Short unique code used across accounting. Auto-filled from the name.","sourceType":"Source type","sourceTypePlaceholder":"Cash / Card / Bank / Employee-Paid","sourceTypeHelper":"How the expense is funded. Employee-Paid sources are reimbursed to the employee.","glAccount":"GL account","glAccountPlaceholder":"Select a cash or bank account","glAccountHelper":"The cash/bank account credited when an expense on this source posts.","glAccountEmptyHint":"Only accounts with “Cash Equivalent” turned on are listed. Enable it in Configure → Accounts.","branch":"Branch","branchPlaceholder":"All branches","branchHelper":"Leave blank to share this source across all branches.","receiptThreshold":"Receipt required above","receiptThresholdPlaceholder":"0.00","receiptThresholdHelper":"Amount above which a receipt is mandatory for expenses on this source.","active":"Active","detail":{"entityPlural":"Payment sources","paymentSourceActions":"Payment source actions"},"validation":{"nameIsRequired":"Name is required","codeIsRequired":"Code is required","sourceTypeIsRequired":"Source type is required","enterAValidAmount":"Enter a valid amount","leaveTheAccountEmptyForAn":"Leave the account empty for an Employee-Paid source.","aCashCardBankSourceRequires":"A cash/card/bank source requires a linked GL account."},"form":{"sections":{"paymentSource":"Payment Source"}}},"SectionAccountingAnalyticAccounts":{"basicsTitle":"Basics","basicsCaption":"Core identity of this analytic account. Used for cost and revenue allocation.","name":"Name","namePlaceholder":"e.g. Marketing Campaigns","code":"Code","codePlaceholder":"e.g. ANA-MKT","business":"Business","branch":"Branch","allBranches":"All branches","active":"Active","relationshipsTitle":"Relationships","relationshipsCaption":"Link to a parent analytic account to build a hierarchy.","parentAccount":"Parent Account","detail":{"entityPlural":"Analytic accounts","analyticAccountActions":"Analytic account actions","status":"Status","details":"Details","tabs":{"details":"Details"}},"list":{"searchPlaceholder":"Search analytic account...","columns":{"analyticAccount":"Analytic Account","parent":"Parent","business":"Business","branch":"Branch","status":"Status"}},"manageAnalyticAccountsForCost":"Manage analytic accounts for cost and revenue analysis.","addYourFirstAnalyticAccount":"Add your first analytic account to start tracking costs and revenues.","validation":{"nameIsRequired":"Name is required","nameMustBe255CharactersOr":"Name must be 255 characters or less","codeMustBe64CharactersOr":"Code must be 64 characters or less"},"form":{"sections":{"basics":"Basics","relationships":"Relationships"}}},"SectionAccountingAnalyticTags":{"basicsTitle":"Basics","basicsCaption":"Core identity of this analytic tag. Tags are applied to journal entries for analysis.","name":"Name","namePlaceholder":"e.g. Q1 Campaign","business":"Business","active":"Active","relationshipsTitle":"Relationships","relationshipsCaption":"Link to a parent tag to build a tag hierarchy.","parentTag":"Parent Tag","detail":{"entityPlural":"Analytic tags","analyticTagActions":"Analytic tag actions","status":"Status","details":"Details","tabs":{"details":"Details"}},"list":{"searchPlaceholder":"Search analytic tag...","columns":{"analyticTag":"Analytic Tag","parent":"Parent","business":"Business","status":"Status"}},"manageAnalyticTagsToCategorize":"Manage analytic tags to categorize and analyze accounting entries.","addYourFirstAnalyticTag":"Add your first analytic tag to start categorizing accounting entries.","validation":{"nameIsRequired":"Name is required","nameMustBe128CharactersOr":"Name must be 128 characters or less"},"form":{"sections":{"basics":"Basics","relationships":"Relationships"}}},"SectionAccountingChartOfAccounts":{"basicsTitle":"Basics","basicsCaption":"Core identity fields. Code and name appear in all journal entries and reports.","accountName":"Account Name","accountNamePlaceholder":"e.g. Cash & Cash Equivalents","code":"Code","codePlaceholder":"e.g. 1010","accountType":"Account Type","business":"Business","branch":"Branch","allBranches":"All branches","currency":"Currency","businessDefault":"Business default","relationshipsTitle":"Relationships","relationshipsCaption":"Link this account to a parent in the chart hierarchy and assign an owner.","parentAccount":"Parent Account","responsibleUser":"Responsible User","controlsTitle":"Controls","controlsCaption":"Operational rules for postings and reconciliation. Deactivate an account from its Actions menu.","allowReconciliation":"Allow Reconciliation","controlAccount":"Control (grouping) account","cashEquivalent":"Cash Equivalent","deprecated":"Deprecated","detail":{"entityPlural":"Accounts","accountActions":"Account actions","statusActive":"Active","accountTypeCode":"Account Type Code"},"list":{"searchPlaceholder":"Search account..."},"filterAccounts":"Filter Accounts","anyBranch":"Any branch","anyAccountType":"Any account type","reconciliation":"Reconciliation","status":"Status","manageTheChartOfAccounts":"Manage the chart of accounts for each business and branch.","addYourFirstAccountTo":"Add your first account to start building the chart of accounts.","validation":{"codeMustBe64CharactersOr":"Code must be 64 characters or less","nameIsRequired":"Name is required","nameMustBe255CharactersOr":"Name must be 255 characters or less","accountTypeIsRequired":"Account type is required"},"form":{"sections":{"basics":"Basics","relationships":"Relationships","controls":"Controls"}},"filterOptions":{"reconcile":"Reconcile","reconcileDescription":"Accounts used in reconciliation.","noReconcile":"Do Not Reconcile","noReconcileDescription":"Accounts without reconciliation.","active":"Active","activeDescription":"Accounts currently available for use.","deprecated":"Inactive","deprecatedDescription":"Deactivated accounts — kept for history, hidden from new transactions."},"columns":{"account":"Account","type":"Type","business":"Business","collapse":"Collapse","expand":"Expand"},"chips":{"branch":"Branch","type":"Type","reconcileYes":"Reconcile: Yes","reconcileNo":"Reconcile: No","statusDeprecated":"Status: Inactive","statusActive":"Status: Active"}},"SectionAccountingRecurringVendorBills":{"filterStatusAria":"Status","filterAll":"All","filterActive":"Active","filterInactive":"Inactive","basics":"Basics","basicsCaption":"Core details for this recurring bill template.","templateName":"Template Name","templateNamePlaceholder":"e.g. Monthly Office Rent","vendor":"Vendor","branch":"Branch","branchPlaceholder":"All branches (optional)","taxRule":"Tax Rule","taxRulePlaceholder":"No tax","notes":"Notes","notesPlaceholder":"Internal notes about this recurring bill...","active":"Active","lineItems":"Line Items","lineItemsCaption":"At least one line item is required.","addLineItem":"Add Line Item","glAccount":"GL Account","description":"Description","descriptionPlaceholder":"Line item description...","quantity":"Quantity","unitPrice":"Unit Price","removeLine":"Remove line","schedule":"Schedule","scheduleCaption":"When should bills be automatically generated?","cadence":"Cadence","dayOfMonth":"Day of Month (1-28)","dayOfMonthQuarterlyHelper":"Day within the first month of each quarter.","generateOnLastDay":"Generate on last day of month","dayOfWeek":"Day of Week","month":"Month","startDate":"Start Date (YYYY-MM-DD, optional)","cadenceDaily":"Daily","cadenceWeekly":"Weekly","cadenceMonthly":"Monthly","cadenceQuarterly":"Quarterly","cadenceYearly":"Yearly","weekdayMonday":"Monday","weekdayTuesday":"Tuesday","weekdayWednesday":"Wednesday","weekdayThursday":"Thursday","weekdayFriday":"Friday","weekdaySaturday":"Saturday","weekdaySunday":"Sunday","monthJanuary":"January","monthFebruary":"February","monthMarch":"March","monthApril":"April","monthMay":"May","monthJune":"June","monthJuly":"July","monthAugust":"August","monthSeptember":"September","monthOctober":"October","monthNovember":"November","monthDecember":"December","detail":{"entityPlural":"Recurring vendor bills","details":"Details","tabs":{"details":"Details"},"status":"Status","generatesOnDay":"Generates on Day","dayN":"Day {day}","lastGenerated":"Last Generated","nextRun":"Next Run","subtotal":"Subtotal","lineTotal":"Total","generateNow":"Generate Now","generateSuccess":"Bill generated successfully","generateError":"Failed to generate bill"},"allBranches":"All branches","list":{"searchPlaceholder":"Search templates..."},"templatesThatAutoGenerateVendor":"Templates that auto-generate vendor bills on a set schedule.","noRecurringVendorBillsYet":"No recurring vendor bills yet","createATemplateToAuto":"Create a template to auto-generate vendor bills on a schedule.","validation":{"unitPriceIsRequired":"Unit price is required","templateNameIsRequired":"Template name is required","atLeastOneLineItemIs":"At least one line item is required"},"newTemplate":"New Template","form":{"sections":{"basics":"Basics","items":"Line Items","schedule":"Schedule"}}},"SectionAccountingMarketingSpendRecurring":{"basics":"Basics","vendor":"Vendor","vendorPlaceholder":"Select vendor","advertisementSource":"Advertisement Source","advertisementSourcePlaceholder":"e.g. google-ads-en-search","category":"Category","categoryPlaceholder":"Select expense category","amount":"Amount","amountHelper":"Budgeted amount per cycle. Actual vendor spend may differ, so use Reconciliation to match.","channelAndTax":"Channel & Tax","campaignName":"Campaign Name","campaignNamePlaceholder":"e.g. Brand Search Q2","taxRule":"Tax Rule","taxRulePlaceholder":"Select tax rule (optional)","taxRuleHelper":"Same tax-rule catalog as Bills. The generated bill uses the rule's rate.","branch":"Branch","branchPlaceholder":"Select branch (optional)","schedule":"Schedule","cadence":"Cadence","cadenceMonthly":"Monthly","generateOnDay":"Generate on Day","generateOnDayHelper":"Day of month (1-28) to generate the bill","startDate":"Start Date","startDateHelper":"First date a bill may be generated","endDate":"End Date","endDateHelper":"Optional. Auto-stops the template after this date","active":"Active","notes":"Notes","notesPlaceholder":"Optional notes","detail":{"entityPlural":"Recurring marketing spend","tabs":{"details":"Details"}},"enums":{"cadence":{"weekly":"Weekly"}},"validation":{"categoryIsRequired":"Category is required","amountMustBeGreaterThanZero":"Amount must be greater than zero"},"form":{"sections":{"basics":"Basics","details":"Channel & Tax","schedule":"Schedule"}}},"SectionAccountingMarketingSpendPlatformAccounts":{"platform":"Platform","accountLabel":"Account Label","accountLabelPlaceholder":"e.g. My Google Ads Account","externalAccountId":"External Account ID","externalAccountIdPlaceholder":"e.g. 123-456-7890","defaultAdSource":"Default Ad Source","defaultAdSourcePlaceholder":"Select default ad source","oauthCredentials":"OAuth Credentials","accessToken":"Access Token","accessTokenPlaceholder":"Paste access token (optional)","accessTokenHelper":"Leave blank to connect via OAuth in Phase 2.","refreshToken":"Refresh Token","refreshTokenPlaceholder":"Paste refresh token (optional)","tokenExpiresAt":"Token Expires At","tokenExpiresAtPlaceholder":"ISO 8601 datetime (optional)","settings":"Settings","active":"Active","detail":{"entityPlural":"Ad platform accounts","tabs":{"details":"Details"}},"enums":{"platform":{"google_ads":"Google Ads","meta_ads":"Meta Ads","tiktok_ads":"TikTok Ads","snapchat_ads":"Snapchat Ads","linkedin_ads":"LinkedIn Ads"}},"validation":{"labelIsRequired":"Label is required","externalAccountIdIsRequired":"External Account ID is required","adSourceIsRequired":"Ad Source is required"}},"SectionAccountingAllocations":{"templateTitle":"Template","templateCaption":"A reusable split rule between branches, e.g. Call Center 40/60.","nameLabel":"Name","namePlaceholder":"e.g. Call Center 40/60 Split","descriptionLabel":"Description","methodLabel":"Method","methodPercentage":"Percentage (sum = 100)","methodFixedAmount":"Fixed Amount","activeLabel":"Active","previewTitle":"Distribution preview","previewCaption":"How this template splits a cost across branches. Calculated live, nothing is posted.","sampleAmountLabel":"Sample amount","previewEmpty":"Add branches above to preview the split.","branchFallback":"Branch {index}","total":"Total","branchesTitle":"Branches","branchesCaptionPercentage":"Percentages must sum to 100.","branchesCaptionFixed":"Distribute the fixed amount across branches.","addBranch":"Add branch","branchLabel":"Branch","percentLabel":"%","amountLabel":"Amount","notesLabel":"Notes","notesPlaceholder":"Optional","totalPercent":"Total %","valid":"Valid","mustEqual100":"Must equal 100","mustBePositive":"Must be > 0","validation":{"invalidValue":"Invalid value","atLeastOneBranchIsRequired":"At least one branch is required"},"columns":{"date":"Date","expense":"Expense","template":"Template","method":"Method","branches":"Branches","total":"Total","by":"By","adHoc":"Ad-hoc","notPosted":"Not posted"}},"SectionAccountingJournalEntries":{"filterTitle":"Filter Journal Entries","journal":"Journal","anyJournal":"Any journal","account":"Account","anyAccount":"Any account","state":"State","all":"All","stateDraft":"Draft","statePosted":"Posted","stateCancelled":"Cancelled","source":"Source","sourceDocument":"Source document","sourceVendorBillRefund":"Vendor Bill / Refund","sourceVendorPayment":"Vendor Payment","sourceSalesInvoice":"Sales Invoice","sourceGoodsReceipt":"Goods Receipt (GRN)","sourceExpense":"Expense","dateRange":"Date range","dateFrom":"Date from","dateTo":"Date to","cancel":"Cancel","amount":"Amount","date":"Date","label":"Label","writeOffTitle":"Write Off","writeOffDescription":"Create a write-off entry (debit a write-off expense, credit the account written off).","createWriteOff":"Create Write-Off","noJournals":"No journals","accountToWriteOff":"Account to write off","accountToWriteOffPlaceholder":"e.g. Accounts Receivable","writeOffExpenseAccount":"Write-off expense account","writeOffExpenseAccountPlaceholder":"e.g. Bad Debt Expense","reasonForWriteOff":"Reason for write-off","selectBranchFirst":"Select a branch first.","writeOffFieldsRequired":"Journal, account and write-off account are required.","writeOffCreated":"Write-off entry created.","writeOffFailed":"Failed to create write-off entry.","reconcileTitle":"Reconcile Lines","reconcileDescription":"Match a debit line with a credit line on the same account.","reconcile":"Reconcile","debitLine":"Debit line","noDebitLines":"No debit lines","creditLine":"Credit line","creditLinesSameAccountHint":"Showing only credit lines on the same account as the selected debit line.","noCreditLineSameAccount":"No credit line on the same account","noCreditLines":"No credit lines","drAbbr":"Dr","crAbbr":"Cr","amountOptional":"Amount (optional)","fullMatchIfEmpty":"Full match if left empty","reconcileMinHint":"Leave empty to reconcile min(debit, credit).","sameAccountNotReconciledHint":"Both lines must be on the same account and not already reconciled.","selectDebitAndCredit":"Select both a debit and a credit line.","linesReconciled":"Lines reconciled.","reconcileFailed":"Failed to reconcile lines.","selectionDebit":"Debit","selectionCredit":"Credit","selectionBalanced":"Balanced","selectionDifference":"Difference","journalRefresh":"Refresh","counterparty":"Counterparty","anyCounterparty":"Any counterparty","changeAccountParamsHint":"Lines on the chosen From accounts move to the To account. Posted entries follow your correction method: with Reset to draft the line itself changes and the entry keeps its number; with Reverse or Un-post a reclass entry moves the balance. Drafts change directly. Entries without those accounts are skipped.","changeAccountSourceAccount":"From accounts","changeAccountSourceAccountPlaceholder":"The accounts the lines are on","changeAccountSourceEntries":"In {count} of {total} entries","changeAccountSourcesLoading":"Loading the entries' accounts…","changeAccountNoneChangeable":"{count, plural, one {This entry can't be changed here} other {None of the # selected entries can be changed here}}","changeAccountSomeRefused":"{count} of {total} selected entries can't be changed here and will be skipped","changeAccountDestinationAccount":"To account","changeAccountDestinationAccountPlaceholder":"e.g. 102011 - Accounts Receivable","detail":{"entityPlural":"Journal entries","entryRef":"JE #{id}","matchBill":"Bill {number}","matchInvoice":"Invoice {number}","matchEntry":"Entry {name}","tabs":{"basics":"Basics","lines":"Lines","source":"Source","attachments":"Attachments","history":"History"}},"entryResetToDraftYou":"Entry reset to draft. You can now edit it and re-post.","resetThisEntryToDraft":"Reset this entry to draft?","resetToDraft":"Reset to draft","journalEntryReversed":"Journal entry reversed.","reverseThisEntry":"Reverse this entry?","reason":"Reason","optionalWhyIsThisEntry":"Optional. Why is this entry being reversed?","reverse":"Reverse","entryUnPostedAnEditable":"Entry un-posted. An editable correction draft was created.","unPostThisEntry":"Un-post this entry?","unPost":"Un-post","journalEntryVoided":"Journal entry voided.","voidThisEntry":"Void this entry?","optionalWhyIsThisEntry2":"Optional. Why is this entry being voided?","void":"Void","changeAccountValidation":{"theNewAccountMustDifferFrom":"The new account must differ from the current account."},"validation":{"invalidAmount":"Invalid amount","descriptionRequired":"Description required","aLineMustHaveEitherDebit":"A line must have either Debit OR Credit (not both, not zero).","dateRequired":"Date required","atLeastTwoLinesAreRequired":"At least two lines are required","totalMustBeGreaterThanZero":"Total must be greater than zero.","branchRequired":"Pick the branch this entry belongs to."},"columns":{"date":"Date","voucherNo":"Voucher No.","status":"Status","reference":"Reference","vendor":"Vendor","debit":"Debit","credit":"Credit","source":"Source","attachments":"Attachments","accounts":"Accounts"},"branch":"Branch","selectBranch":"Select branch"},"SectionAccountingJournalItems":{"listDescription":"Every journal line across all accounts, the line-level view of your ledger.","filterTitle":"Filter journal items","filters":"Filters","refresh":"Refresh","searchPlaceholder":"Search label, entry number or account","noItemsTitle":"No journal items","noItemsDescription":"No journal lines match the current filters.","dateRange":"Date range","dateFrom":"From","dateTo":"To","includeOpening":"Include opening entries","account":"Account","anyAccount":"Any account","accountType":"Account type","anyAccountType":"Any account type","journal":"Journal","anyJournal":"Any journal","partner":"Partner","anyPartner":"Any partner","amountRange":"Amount","amountMin":"Minimum amount","amountMax":"Maximum amount","state":"Status","statePostedDefault":"Posted only (default)","statePosted":"Posted","stateDraft":"Draft","stateCancelled":"Voided","stateAll":"All statuses","reconciliation":"Matching","reconciliationOpen":"Open","reconciliationMatched":"Matched","all":"All","source":"Source document","sourceDocument":"Source document","sourceVendorBillRefund":"Vendor bill / refund","sourceVendorPayment":"Vendor payment","sourceSalesInvoice":"Sales invoice","sourceGoodsReceipt":"Goods receipt","sourceExpense":"Expense","sourceManual":"Manual / opening","dimensions":"Dimensions","branch":"Branch","analyticAccount":"Analytic account","anyAnalyticAccount":"Any analytic account","tabDetails":"Details","sectionPosting":"Posting","sectionAmounts":"Amounts","fieldEntry":"Entry","fieldLabel":"Label","dueDate":"Due date","debit":"Debit","credit":"Credit","fxAmount":"Foreign amount","tabSource":"Source document","viewSourceDocument":"Open source document","tabEntry":"Journal entry","viewEntry":"Open journal entry","detail":{"entityPlural":"Journal items"},"columns":{"date":"Date","entry":"Entry","account":"Account","partner":"Partner","label":"Label","debit":"Debit","credit":"Credit","balance":"Balance","status":"Status"},"selectBranch":"Select branch"},"SectionAccountingReports":{"shared":{"export":"Export","exportExcel":"Excel (.xlsx)","exportPdf":"PDF (.pdf)","exportCsv":"CSV (.csv)","exportMore":"More export options","exportQueued":"Export started. You will receive an email when it is ready.","filters":"Filters","reset":"Reset","filtersApplied":"{count, plural, one {# filter applied} other {# filters applied}}","displayOptions":"Display Options","postedEntriesOnly":"Posted entries only","filterStatement":"Filter Statement","yes":"Yes","no":"No","period":"Period","postedOnly":"Posted only","exportRowLimitExceeded":"This statement has {rows} rows, above the {max}-row export limit. Narrow the date range (or filter by account) and export again.","exportExcelFailed":"Excel export failed.","exportPdfFailed":"PDF export failed."},"trialBalance":{"entityName":"Trial Balance","title":"Trial Balance","description":"Opening balance, period debit/credit, and closing balance per account.","colAccount":"Account","colType":"Type","colOpening":"Opening","colDebit":"Debit","colCredit":"Credit","colClosing":"Closing","notBalanced":"Total debits do not equal total credits. Inspect recent journal entries.","noDataTitle":"No movement in this period","noDataDescription":"Try widening the date range or enabling ‘Include zero balances’.","rowDrillTooltip":"View this account’s ledger","totals":"Totals","totalLabel":"Total","amountLabel":"Amount","totalOpeningDr":"Total Opening Dr","totalOpeningCr":"Total Opening Cr","totalPeriodDr":"Total Period Dr","totalPeriodCr":"Total Period Cr","totalClosingDr":"Total Closing Dr","totalClosingCr":"Total Closing Cr","filterTitle":"Filter Trial Balance","accountType":"Account Type","accountTypePlaceholder":"All types","metaAccountType":"Account type","includeZero":"Include zero-balance accounts","typeAll":"All Types","typeAsset":"Assets","typeLiability":"Liabilities","typeEquity":"Equity","typeRevenue":"Revenue","typeExpense":"Expenses","typeCogs":"COGS"},"generalLedger":{"entityName":"Ledger entries","title":"General Ledger","description":"Drill into every posted journal entry against an account, with running balance.","account":"Account","accountPlaceholder":"Search by code or name","colDate":"Date","colReference":"Reference","colJournal":"Journal","colDescription":"Description","colDebit":"Debit","colCredit":"Credit","colRunningBalance":"Running Balance","summary":"Summary","amountLabel":"Amount","totalLabel":"Total","openingBalance":"Opening Balance","totalDebit":"Total Debit","totalCredit":"Total Credit","currentBalance":"Current Balance","noEntriesTitle":"No entries in this period","noEntriesDescription":"Try widening the date range.","selectAccountTitle":"Select an account","selectAccountDescription":"Pick an account above to view its ledger entries.","sourceAmountIn":"Source amount in {code}","openSourceEntry":"Open source journal entry","seededAccountLabel":"Ledger for {account}"},"profitLoss":{"entityName":"Profit & Loss","title":"Profit & Loss","description":"Income statement showing revenue, cost of goods, and net income for the selected period.","revenue":"Revenue","cogs":"Cost of Goods Sold","operatingExpenses":"Operating Expenses","totalRevenue":"Total Revenue","totalCogs":"Total COGS","totalExpenses":"Total Expenses","grossProfit":"Gross Profit","netIncome":"Net Income","summary":"Summary","accountLabel":"Account","amountLabel":"Amount","noActivity":"No activity in this period","noDataTitle":"No activity in this period","noDataDescription":"There are no accounts with a balance for the selected date range.","filterTitle":"Filter Profit & Loss"},"balanceSheet":{"entityName":"Balance Sheet","title":"Balance Sheet","description":"Statement of financial position as of a given date: assets, liabilities, and equity.","asOfDate":"As of date","asOf":"As of {date}","assets":"Assets","liabilities":"Liabilities","equity":"Equity","totalAssets":"Total Assets","totalLiabilities":"Total Liabilities","totalEquity":"Total Equity","liabilitiesPlusEquity":"Liabilities + Equity","currentYearEarnings":"Current Year Earnings","customerCreditBalances":"Customer Credit Balances","summary":"Summary","accountLabel":"Account","balanceLabel":"Balance","notBalanced":"Balance sheet does not balance: Assets (<assets></assets>) ≠ Liabilities + Equity (<liab></liab>). Inspect unposted journal entries.","noSectionAccounts":"No accounts with a balance in this section.","noDataTitle":"No balances as of this date","noDataDescription":"There are no accounts with a balance for the selected date.","filterTitle":"Filter Balance Sheet"},"cashFlow":{"entityName":"Cash Flow Statement","title":"Cash Flow Statement","description":"Indirect cash flow: operating, investing, and financing activities reconciled to the change in cash for the selected period.","operating":"Operating Activities","investing":"Investing Activities","financing":"Financing Activities","netOperating":"Net Cash from Operating","netInvesting":"Net Cash from Investing","netFinancing":"Net Cash from Financing","summary":"Summary","netChange":"Net Change in Cash","openingCash":"Opening Cash","closingCash":"Closing Cash","noActivity":"No activity in this period","noDataTitle":"No activity in this period","noDataDescription":"There are no cash movements for the selected date range.","notReconciled":"Note: sections do not reconcile to the cash movement. Data may be mid-close.","filterTitle":"Filter Cash Flow","accountLabel":"Account","amountLabel":"Amount"},"aging":{"title":"Aging","description":"Outstanding receivables and payables grouped by days overdue.","descriptionShort":"Receivable and payable aging grouped by days overdue.","tabReceivable":"Receivables (A/R)","tabPayable":"Payables (A/P)","customer":"Customer","vendor":"Vendor","asOfDate":"As of date","asOf":"As of {date}","branch":"Branch","selectBranchFirst":"Please select a branch from the top bar first.","titleAr":"A/R Aging","titleAp":"A/P Aging","entityNameAr":"A/R Aging Report","entityNameAp":"A/P Aging Report","noReceivablesTitle":"No outstanding receivables","noPayablesTitle":"No outstanding payables","noOverdueDesc":"Nothing is overdue as of {date} · {branch}.","noDataTitle":"No outstanding balances","noDataDescription":"Nothing is overdue for the selected date and branch.","b0_30":"0-30 days","b31_60":"31-60 days","b61_90":"61-90 days","b90plus":"90+ days","total":"Total","totalOutstanding":"Total Outstanding","ageBucket":"Age bucket","outstanding":"Outstanding","asOfBranchCaption":"As of {date} · {branch}","descAr":"Outstanding patient receivables grouped by days overdue.","descAp":"Outstanding vendor payables grouped by days overdue."},"vatReturn":{"entityName":"VAT Return","title":"VAT Return","description":"UAE FTA output (sales) and input (purchases) VAT for the selected period. Read-only.","descriptionShort":"UAE FTA output/input VAT summary for the selected period.","selectBranchFirst":"Please select a branch from the top bar first.","outputVat":"Output VAT (Sales)","inputVat":"Input VAT (Purchases)","outputVatLine":"Output VAT","standardRatedBase":"Standard-rated base","zeroRated":"Zero-rated","exempt":"Exempt","invoicesInPeriod":"Invoices in period","inputVatLine":"Input VAT","recoverableBase":"Recoverable base","billsInPeriod":"Bills in period","netVatPayable":"Net VAT Payable","netVatDesc":"Output VAT minus recoverable input VAT for the period.","summary":"Summary","lineLabel":"Line","amountLabel":"Amount"},"budget":{"entityName":"Budget vs Actual","title":"Budget vs Actual","description":"Planned spend versus actual posted expense per branch and category, for the selected month.","month":"Month","colCategory":"Category","colBranch":"Branch","colPlanned":"Planned","colActual":"Actual","colUtilisation":"Utilisation","colDeviation":"Deviation %","colVariance":"Variance","colStatus":"Status","overThreshold":"Over threshold","onTrack":"On track","noDataTitle":"No budgets for this month","noDataDescription":"Set a planned amount for a branch and expense category in the Budgets page, then it will appear here."}},"LeadLostReason":{"groupJunk":"Spam / Junk","groupOutOfScope":"Out of Scope","groupLostGenuine":"Lost (genuine)","groupOther":"Other"},"SectionBilling":{"estimatedNextBill":"Estimated next bill","estimateTooltip":"Calculated by the same engine that raises your invoice. Usage is counted so far this month and will keep growing until the month closes.","estimateFooter":"An estimate based on usage so far this month, excluding VAT. The final invoice governs.","estimateFooterWithVat":"An estimate based on usage so far this month. The final invoice governs.","estimateUnavailable":"We could not load your estimate just now. Your invoice is unaffected. Try again in a moment.","total":"Total","discountPercent":"Discount ({percent}%)","discountAgreed":"Agreed reduction","vat":"VAT ({percent}%)","lineExtraSeats":"Extra clinician seats","lineExtraBranches":"Extra branches","lineAiCredits":"AI credits beyond your allowance","lineAiCreditPack":"AI credit pack: {credits, number} credits","lineMessaging":"Messaging sent on our platform number","adjustPlan":"Adjust plan","renewSubscription":"Renew subscription","partnerNoCharge":"Metered in full, invoiced at 100% discount. You are never charged.","partnerBilling":"Billed by partnership agreement. Talk to us if anything looks wrong.","contractBilling":"Billed by agreement. Contact your account manager to change your plan.","priceChangeNotice":"A price change has been served and applies at your next renewal. Check your email for the details.","priceFixedUntil":"Your price is fixed until {date}.","blockedSuspendedTitle":"Your workspace has been suspended","blockedSuspendedBody":"This was an administrative action, so paying will not restore access. Reply to your last email from us, or contact your account manager, and we will sort it out.","blockedPendingTitle":"Your workspace is being set up","blockedPendingBody":"We are finishing your configuration. Nothing is wrong and there is nothing to pay. We will email you the moment it is ready.","modules":"Modules","modulesTooltip":"Prices shown are what your clinic pays for its licensed branch count, not the list unit price.","modulesAvailable":"Available to add","modulesEmpty":"No modules are available on your plan right now.","modulesUnavailable":"We could not load your modules just now. Try again in a moment.","moduleAdd":"Add","moduleRemove":"Remove","moduleAdded":"Module added. It is billed from your next invoice.","moduleRemovalScheduled":"Removal scheduled","moduleRemovalScheduledToast":"Removal scheduled. You keep the module until the end of the period you have paid for.","moduleStaysUntil":"Stays active until {date}.","moduleIncludedInPlan":"Already included in your plan.","moduleChangeFailed":"We could not change that module. Nothing has been charged.","perMonth":"/month","billedByAgreement":"Billed by agreement. Contact your account manager to change your modules.","aiCredits":"AI credits","aiCreditsUnavailable":"We could not load your AI credit balance just now. Try again in a moment.","creditsUsedOfCap":"{used} of {cap} used","creditsUsedUnlimited":"{used} used · no spend limit set","creditsRunningLow":"You have used most of this month's AI credits.","creditsExhausted":"Unattended AI automation has paused for this month. Your team inbox, replies and every other feature keep working as normal.","usageMeters":"Usage this month","usageMetersCaption":"What your clinic used on each metered service, against your plan and your own monthly cap.","usageMetersUnavailable":"We could not load your usage just now. Try again in a moment.","meterPriceAbove":"Above the plan allowance, per unit:","meterCapLabel":"Monthly cap","meterCapNone":"No cap","meterCapInvalid":"Enter a whole number above 0, or leave it empty for no cap.","meterCapSaveFailed":"We could not save the cap. Try again.","meterCapWarn":"Close to this monthly cap.","meterCapReached":"Monthly cap reached. Automated messages on this service are paused; your team inbox, replies, login codes and receipts keep working.","creditsTopUp":"Top up","creditsPackLabel":"{credits} credits","creditsPurchased":"Credits added to your balance.","creditsPurchaseFailed":"We could not complete that purchase. Nothing has been charged.","usageAndLimits":"Usage & limits","usageStaff":"Staff members","usageBranches":"Clinic branches","usageAiTokens":"AI tokens","usageAutomationRuns":"Automation runs","usageNotAvailable":"Not available","usageUsed":"{used} used","usageOfMax":"{used} / {max}","usageLockedTooltip":"This feature is not included in your current plan. Upgrade to unlock.","usageAddStaff":"Add staff member","usageAddBranch":"Add clinic branch","overageExtraUsers":"{count, plural, one {# extra user} other {# extra users}}","overageExtraBranches":"{count, plural, one {# extra branch} other {# extra branches}}","overageExtraTokens":"{count} extra tokens","overageExtraAutomationRuns":"{count, plural, one {# extra automation run} other {# extra automation runs}}","overageSuffix":"+ <amount></amount> overage ({detail})","dangerZone":"Danger zone","dangerZoneBody":"Cancellation takes effect at the end of your current billing period.","cancelSubscription":"Cancel subscription","billingHistory":"Billing history","billingHistoryUnavailable":"We could not load your billing history. Please try again later.","billingHistoryEmpty":"No billing events yet.","colDate":"Date","colEvent":"Event","colDescription":"Description","colAmount":"Amount","statusActive":"Active","statusTrial":"Trial","statusPastDue":"Past due","statusExpired":"Expired","previewTitleUpgrade":"Confirm your upgrade","previewTitleDowngrade":"Confirm your change","previewFromTo":"{from} → {to}","previewCurrentMonthly":"Now","previewNewMonthly":"From this change","previewChargedToday":"Charged today","previewProrationNote":"Indicative. Stripe calculates the exact pro-rata amount when it raises the invoice.","previewEffective":"Takes effect on {date}.","previewKeepUntil":"You keep everything you have today until then.","previewImmediate":"Takes effect immediately.","previewYouGain":"You gain","previewYouLose":"You lose","previewBlockedTitle":"A few things to sort out first","previewBlockedBody":"This plan does not fit your workspace as it stands. Once these are resolved the change will go through.","previewBlockedCount":"{current} of {limit} allowed","previewNeedsPaymentMethod":"You will be asked for a card before this takes effect.","previewConfirm":"Confirm","previewCancel":"Go back","previewLoading":"Working out what this changes…","previewFailed":"We could not work out what this change would cost. Nothing has been changed.","pageTitle":"Subscription & Billing","pageDescription":"Manage your plan, monitor usage, and review upcoming charges.","planFallbackName":"Subscription","expiresInDays":"{days, plural, one {Expires in # day} other {Expires in # days}}","reviewBeforeDate":"Review your subscription before {date} to avoid interruption.","autoRenewsOn":"Auto-renews on {date}","discountActive":"{percent} discount active","discountActiveUntil":"{percent} discount active until {date}","usageOverLimit":"Over your plan limit","usageAiTokensTooltip":"Your plan allowance, counted in tokens. Separate from the AI credits card below, which is a spend ceiling you set yourself.","overageMeteredNoCharge":"Beyond your plan ({detail}): metered, not charged.","modulesIncluded":"Included in your plan","modulesAllIncluded":"Every module is included in your plan, so there is nothing extra to add.","noChargeThisMonth":"Nothing to pay this month.","usageUsedSuffix":"used","usagePlanAllowance":"Plan allowance: {max}","usageNoLimitAgreement":"No limit under your agreement.","creditsNoCapExplainer":"You have not set a monthly spend ceiling. Set one and we pause unattended AI automation when it is reached. Your team inbox always keeps working.","cancel":{"title":"Cancel subscription","subtitle":"Your access continues through the end of your billing period.","summaryTitle":"Billing summary","currentPlan":"Current plan","accessUntil":"Access continues until","remainingDays":"Remaining days","daysCount":"{count, plural, one {# day} other {# days}}","furtherCharges":"Further charges","noFurtherCharges":"None after cancellation","cancelledToast":"Subscription cancelled. Your access continues until the end of the billing period.","reasonLabel":"Reason for cancelling (optional)","afterCancellation":"After cancellation, your account will be downgraded at the end of the billing period. Data is retained for 30 days before permanent deletion.","confirm":"Confirm cancellation","keepPlan":"Keep plan","reasons":{"tooExpensive":"Too expensive for my needs","competitor":"Switching to a competitor","missingFeatures":"Missing features I need","notUsing":"Not using it enough","technical":"Technical issues","closing":"Business closing or restructuring","other":"Other"}},"contactSales":{"title":"Let's build something great","description":"Tell us about your clinic and team. We'll reach out within one business day to discuss the right setup.","name":"Your name","company":"Clinic or company","teamSize":"Team size","message":"Anything else we should know?","messagePlaceholder":"Multi-branch rollout, migration from another system, compliance requirements...","submit":"Send request","noCommitment":"No commitment required","teamSizes":{"size1":"1-10 members","size2":"11-50 members","size3":"51-200 members","size4":"201-500 members","size5":"500+ members"}}},"Prescription":{"emptyDischargedDescription":"This visit is discharged, so no prescription can be added.","signatureTitle":"Signature and stamp","signatureCaptionSelf":"Your signature signs the documents you sign; your stamp is printed on your prescriptions.","signatureCaptionAdmin":"Add this clinician's signature and stamp. They approve it once in their profile before it is used.","signatureWaitingForYou":"{name} added this signature and stamp for you. Approve them to use them on the documents you sign.","signatureWaitingForYouNoName":"Approve this signature to use it on the documents you sign.","signatureWaitingForClinician":"Waiting for the clinician to approve it in their profile. Until then their previously approved signature, if any, is used.","approveSignature":"Approve","signatureApproved":"Signature approved","signatureApproveFailed":"Could not approve the signature","signatureSaveFailed":"Could not save the signature","noSignatureYet":"No signature yet","noSignatureHint":"Draw it here or upload an image.","signatureLoadFailed":"Could not load the signature","signatureLoadFailedHint":"Check your connection and try again.","retry":"Retry","drawSignature":"Draw signature","replaceSignature":"Replace signature","uploadSignatureImage":"Upload image","drawSignatureHint":"Sign in the area below with your finger or a pen, then save.","quantity":"Quantity","quantityHelper":"Packs to supply on this prescription (pens, vials, boxes).","saveAndSign":"Save & sign","stampTitle":"Doctor's stamp","stampHint":"Printed next to your signature on the prescriptions you sign. PNG or JPG.","uploadStamp":"Upload stamp","replaceStamp":"Replace stamp","stampSaved":"Stamp saved","stampFailed":"Could not save the stamp","title":"Prescription","printEnglish":"Print","downloadArabic":"Arabic PDF","downloading":"Preparing PDF…","downloadFailed":"Could not generate the Arabic prescription.","sign":"Sign","signing":"Signing…","signed":"Signed","signedOn":"Signed on {date}","signConfirmTitle":"Sign this prescription?","signConfirmBody":"Signing applies your approved signature and stamp if you have them, locks the prescription against further edits, and issues a verification QR code. This cannot be undone.","signSuccess":"Prescription signed.","signFailed":"Could not sign the prescription.","lockedHint":"Signed prescriptions cannot be edited. If it needs to change, the doctor signs a new prescription.","patient":"Patient","name":"Name","age":"Age","gender":"Gender","mrn":"MRN","phone":"Phone","prescriber":"Prescriber","license":"License No.","sheryan":"Sheryan ID","reference":"Reference","issued":"Issued","duration":"Duration","status":"Status","medications":"Medications","drug":"Drug","dose":"Dose","route":"Route","frequency":"Frequency","site":"Site","unit":"Unit","instructions":"Patient Instructions","prescriberSignature":"Prescriber signature","male":"Male","female":"Female","years":"y","draftNotSigned":"DRAFT, NOT SIGNED","activeElsewhereTitle":"Active prescriptions from other visits","validUntil":"Valid until {date}","dateOfBirth":"Date of birth","facility":"Facility","address":"Address","emiratesId":"Emirates ID","verifyScan":"Scan to verify","eSignedBy":"Electronically signed by Dr {name} · {date}","signNoSignatureHint":"You have no approved signature image yet, so the prescription will carry an electronic signature line instead.","drawerAdd":"New prescription","drawerEdit":"Edit prescription","back":"Back","print":"Print","edit":"Edit","delete":"Delete","summarySection":"Prescription details","notesSection":"Instructions & notes","internalNote":"Internal note","internalNoteHelper":"Clinical note for the team, not printed on the patient's prescription.","validUntilLabel":"Valid until","signatureStatus":"Signature","draftChip":"Draft · not signed","orderStatus":"Order status","confidentiality":"Confidentiality code","startDate":"Start date","startDateHelper":"When the patient begins this course.","endDate":"End date","medicationItem":"Medication {number}","medication":"Medication","noDrugs":"No medications on this prescription","durationDays":"{count, plural, one {# day} other {# days}}","durationWeeks":"{count, plural, one {# week} other {# weeks}}","durationMonths":"{count, plural, one {# month} other {# months}}","durationYears":"{count, plural, one {# year} other {# years}}","durationHelper":"How long the patient stays on this prescription.","durationUnit":"Duration unit","unitDays":"Days","unitWeeks":"Weeks","unitMonths":"Months","unitYears":"Years","doseHelper":"Amount per intake, e.g. 1, 500, 2.5","doseUnit":"Dose unit","siteHelper":"For injections / topical administration.","instructionsHelper":"Take-home directions printed on the prescription handed to the patient.","moreOptions":"More options","hideOptions":"Hide options","addItem":"Add medication","removeItem":"Remove medication","clearForm":"Clear form","saveDraft":"Save draft","addPrescription":"Add prescription","emptyTitle":"No prescriptions in this visit","emptyDescription":"Prescriptions written in this visit appear here.","deleteTitle":"Delete prescription","deleteBody":"Delete this draft prescription? This cannot be undone.","deleted":"Prescription deleted","deleteFailed":"Could not delete the prescription","freqOD":"Once daily","freqBID":"Twice daily","freqTID":"Three times daily","freqQID":"Four times daily","freqQAM":"Every morning","freqQPM":"Every evening","freqQHS":"At bedtime","freqQ4H":"Every 4 hours","freqQ6H":"Every 6 hours","freqQ8H":"Every 8 hours","freqQ12H":"Every 12 hours","freqQOD":"Every other day","freqQWK":"Once weekly","freqPRN":"As needed","freqSTAT":"Immediately, once","expiredOn":"Expired on {date}","signedByOn":"Signed by {name} on {date}","draftBanner":"Draft, not yet a prescription. It cannot be sold or handed to the patient until the prescribing doctor signs it.","signedBanner":"Valid for sale until {date}. A signed prescription can no longer be edited or deleted. If it needs to change, the doctor signs a new one.","soldOn":"Sold on {invoice}","soldBanner":"Used on sale {invoice}. A prescription covers one sale. Voiding that sale frees it again.","expiredBanner":"Expired on {date}, so it can no longer be sold. Write a new prescription if the patient still needs this medication.","addSignature":"Add signature","saved":"Prescription saved","savedNotSigned":"Saved as a draft, but not signed: {reason}","emptyReadOnlyDescription":"Prescriptions written in this visit appear here. Only a doctor or nurse can write one.","noVisitTitle":"No visit open","noVisitDescription":"A prescription is written in a visit. Open the patient's visit to write one.","errorDrugRequired":"Pick a medication","errorDoseRequired":"Enter the dose","errorFrequencyRequired":"Pick how often it is taken","errorQuantityRange":"Enter a quantity from 1 to 100","errorDurationRequired":"Enter how long the course lasts","allergiesLoadFailed":"Couldn't load this patient's allergies. Check the chart before prescribing or dispensing.","activeAllergiesHeading":"Active allergies. Verify before dispensing:","signAnyway":"Sign anyway","safetyCheckFailed":"The safety check could not run. Try again before signing.","safetyTitle":"{count, plural, one {# safety warning} other {# safety warnings}}","safetyAllergy":"allergy","safetyDuplicate":"already prescribed","safetyNameMatchHint":"Allergies are matched by name only. Check drug classes yourself.","overrideReasonLabel":"Reason to sign anyway","overrideReasonPlaceholder":"e.g. Tolerated before, patient informed and monitored","cancelledOn":"Cancelled on {date}","cancelReasonLabel":"Reason for cancelling","cancelReasonPlaceholder":"e.g. Wrong dose written","cancelled":"Prescription cancelled","cancelFailed":"Couldn't cancel the prescription","cancelPrescription":"Cancel prescription","cancelTitle":"Cancel {number}?","cancelBody":"It stays on record but can no longer be sold or handed over. NABIDH is told, and the QR on the paper shows it as cancelled. Write a new prescription if the patient still needs it."},"MedicalRecordList":{"clearFormConfirmTitle":"Clear this form?","clearFormConfirmContent":"Everything you entered is removed. Nothing has been saved yet.","clearFormConfirmEditContent":"Your unsaved changes are removed and the form goes back to the saved record.","reportReadOnly":"This report is read-only: the visit is discharged, or your role cannot change reports.","allRecordsTitle":"Medical records","recordFallbackTitle":"Record","entityName":"Medical record","recordsEntity":"Medical records","addRecord":"Add record","checkHistory":"Check history","emptyAllTitle":"No medical records in this visit","emptyAllDescription":"Pick a category to write a record, or check the patient's history.","emptyCategoryTitle":"No {category} records in this visit","emptyCategoryDescription":"Add the first {category} record for this visit.","emptyReadOnlyDescription":"Records written in this visit appear here.","dischargedDescription":"This visit is discharged, so its records are read-only.","deleted":"Record deleted","deleteFailed":"Could not delete the record","unknownAuthor":"Unknown","edit":"Edit","delete":"Delete","back":"Back","yes":"Yes","no":"No","drawerAdd":"New {title}","drawerEdit":"Edit {title}","summary":"Record details","reference":"Reference","recordedAt":"Recorded","recordedBy":"Recorded by","answers":"Answers","sectionNumber":"Section {number}","noData":"Nothing was filled in on this record.","clearForm":"Clear form","save":"Save record","serviceReportTitle":"Service report","noServicesTitle":"No services in this visit","noServicesDescription":"Services booked in this visit appear here, each with its report.","viewReport":"View report","report":"Report","reportNumber":"Report #{number}","noReportData":"No report yet","noReportDataHint":"Nothing has been recorded for this service in this visit.","usedMaterials":"Used materials","productNumber":"Product #{id}","inThisVisit":"In this visit","categoriesNavLabel":"Record categories","categoriesEntity":"record categories","backToCategories":"All categories","dischargedBannerTitle":"Visit discharged","dischargedBannerDescription":"The records of this visit are read-only.","categoryNotFoundTitle":"This category is not available","categoryNotFoundDescription":"It may have been removed or renamed. Open all records of the visit instead.","showAllRecords":"Show all records","clinicalSummary":{"title":"Clinical summary","allergies":"Allergies","problems":"Active problems","vitals":"Latest vitals","allergiesFailed":"Couldn't load allergies. Check the chart before prescribing.","problemsFailed":"Couldn't load the problem list.","vitalsFailed":"Couldn't load the latest vitals.","chronic":"Chronic","recorded":"recorded {when}"},"encounter":{"rootTitle":"Sessions in this visit","childTitle":"Part of the day's visit","openRoot":"Open main session","hideSessions":"Hide visit sessions","showSessions":"Show visit sessions","untitled":"Untitled session","root":"Main session","current":"Current","childHint":"Discharge, vitals and the DHA summary are filed on the main session.","separate":"Separate","putBack":"Put back","separateConfirmTitle":"Separate from the day's visit?","separateConfirmBody":"This session becomes its own visit with its own discharge. The day's other sessions stay together.","putBackConfirmTitle":"Put back in the day's visit?","putBackConfirmBody":"This session joins the patient's other sessions at this branch that day, so one discharge closes them together.","separatedToast":"The session is now its own visit.","putBackToast":"The session is back in the day's visit.","membershipFailed":"The visit could not be changed. Try again.","separateTitle":"Separate visit","separateHint":"Separated from the day's visit: it is discharged on its own. Put it back to close it with the other sessions."},"recordNote":"Note"},"SectionAccountingIssuedCheques":{"listTitle":"Issued Cheques","listDescription":"Post-dated cheques issued to vendors and their clearing status.","searchPlaceholder":"Search by cheque number or vendor","filters":"Filters","entityName":"Issued Cheques","noDataTitle":"No issued cheques","noDataDescription":"Vendor cheques you issue will appear here with their due dates and clearing status.","colChequeNumber":"Cheque No.","colVendor":"Vendor","colAmount":"Amount","colIssueDate":"Issue Date","colDueDate":"Due Date","colStatus":"Status","overdue":"Overdue","selectCheque":"Select a cheque","overview":"Overview","chequeInformation":"Cheque Information","chequeNumber":"Cheque Number","vendor":"Vendor","amount":"Amount","issueDate":"Issue Date","dueDate":"Due Date","clearedDate":"Cleared Date","earlyClearReason":"Why did the bank pay it before the due date?","earlyClearHint":"This date is before the cheque's due date ({due}). Give the reason the bank paid it early.","earlyClearReasonRequired":"Give the reason the cheque cleared before its due date.","convertEarlyHint":"{count, plural, one {# selected cheque is} other {# selected cheques are}} not due by this date. Give the reason the bank paid early.","status":"Status","linkedPayment":"Linked Payment","viewPayment":"View Payment","notes":"Notes","bankStatementLine":"Bank Statement Line","bankJournal":"Bank journal","bankJournalPlaceholder":"Or pick the bank the cheque cleared through","filterTitle":"Filter Cheques","statusAll":"All statuses","statusIssued":"Issued","statusCleared":"Cleared","statusBounced":"Bounced","statusCancelled":"Cancelled","overdueOnly":"Overdue only","dueSoon":"Due soon","dueSoonAny":"Any due date","dueSoon7":"Next 7 days","dueSoon30":"Next 30 days","issueCheque":"Issue Cheque","selectVendor":"Select vendor","branchLabel":"Branch","selectBranch":"Select branch","notesPlaceholder":"Optional notes","actionsLabel":"Actions","actionClear":"Clear","actionBounce":"Bounce","actionCancel":"Cancel","actionDeposit":"Deposit","depositTitle":"Deposit cheque","depositDescription":"Mark this cheque as handed to the bank. Nothing is booked yet; the money moves when it clears.","depositSuccess":"Cheque marked as deposited","colCounterparty":"Counterparty","colDirection":"Direction","directionIssued":"Issued","directionReceived":"Received","filterDirection":"Direction","directionAll":"All","cancelButton":"Cancel","confirmCancelCheque":"Cancel cheque","keepCheque":"Keep cheque","clearTitle":"Clear this cheque?","clearDescription":"Record that the bank has paid this cheque. Pick the bank statement line it cleared on, or the bank journal and the date it cleared. The clearing entry is posted automatically.","clearSuccess":"Cheque cleared.","bounceTitle":"Mark cheque as bounced?","bounceDescription":"The cheque was returned by the bank. When PDC GL is enabled, the linked vendor payment is voided so the bill reopens; a cheque that had already cleared gets its clearing entry reversed too. A cheque that paid a vendor advance cancels the advance and its bill applications.","bounceSuccess":"Cheque marked as bounced.","cancelTitle":"Cancel this cheque?","cancelDescription":"The cheque is voided. For an issued cheque, when PDC GL is enabled, the linked vendor payment is voided so the bill reopens, and a cheque that paid a vendor advance cancels the advance and its bill applications. A received cheque has its entries reversed.","cancelSuccess":"Cheque cancelled.","chequeInformationCaption":"Record a vendor cheque for the register. This tracks the cheque only. The accounting entry is posted from the vendor payment.","allocations":"Allocations","journalEntries":"Journal Entries","noJournalEntriesHint":"No journal entries yet. A cheque is booked when it is paid through a PDC payment source, and again when the bank clears it.","noAllocations":"No bills allocated to this cheque","convertToPayment":"Convert to Payment","convertSelected":"Convert to Payment","convertSelectedCount":"Convert {count} to Payment","selectedCount":"{count} selected","convertTitle":"Convert cheques to payment","convertDescription":"Finalize the selected issued/cleared cheques into their vendor payments. This posts the clearing entry and marks each cheque as converted.","convertSuccess":"Cheques converted to payment.","convertFailed":"Could not convert the selected cheques.","clearingDate":"Clearing date","statusConverted":"Converted","viewVoucher":"View voucher","colVoucher":"Voucher","advanceToggle":"Advance payment","advanceToggleHelper":"Cheque issued before the vendor bill. Books an advance to the supplier at the issue date; reversed automatically once the cheque is linked to a payment.","advanceChip":"Advance","colAttachments":"Attachments","actionUnclear":"Undo clearing","unclearTitle":"Undo this cheque's clearing?","unclearDescription":"Use this when the cheque was cleared by mistake or matched to the wrong bank line. The clearing entry is reversed, the bank line is released and the cheque returns to Issued.","unclearSuccess":"Clearing undone.","clearNeedsBank":"Pick the bank statement line or the bank journal the cheque cleared through.","bankJournalHelper":"Used when no statement line is picked. A cheque that already records its bank keeps it.","convertNeedsDate":"Pick the clearing date.","convertAllSkipped":"No cheque was converted: {count} were skipped.","convertPartial":"{converted} converted, {skipped} skipped.","convertBatchNoLine":"A bank statement line settles exactly one cheque, so it is not offered for {count} selected cheques. Pick the bank journal instead, or convert them one at a time.","bankStatementLineHelper":"Only unposted, unmatched lines for this cheque's amount and direction are listed.","bankStatementLinePlaceholder":"Search the imported statement lines","detail":{"entityPlural":"Cheques"},"enums":{"billStatus":{"draft":"Draft","posted":"Posted","partially_paid":"Partially paid","in_process":"In process","paid":"Paid"}},"validation":{"chequeNumberIsRequired":"Cheque number is required","dueDateCannotBeBeforeThe":"Due date cannot be before the issue date"}},"ChequeCashFlowForecast":{"title":"Cheque Cash-Flow Forecast","description":"Upcoming cheque outflows and inflows grouped by due date, to plan liquidity.","kpi":{"totalOutflow":"Total Upcoming Outflow","totalInflow":"Total Upcoming Inflow","netPosition":"Net Position","outflow":"Outflow","inflow":"Inflow","outflowHint":"Payable (issued) cheques","inflowHint":"Receivable (received) cheques","netHint":"Inflow minus outflow","upcoming":"Upcoming"},"chart":{"title":"Outflow vs Inflow by Due Date","subtitle":"Grouped by due-date bucket"},"table":{"title":"Buckets by Due Date","subtitle":"Overdue, this week, and 30/60/90-day windows","bucket":"Due Window","outflow":"Outflow","inflow":"Inflow","net":"Net","count":"Cheques"},"empty":{"title":"No upcoming cheques","description":"There are no uncleared cheques to forecast right now."}},"SectionSalesQuotations":{"entityName":"Quotation","entityNamePlural":"Quotations","listTitle":"Quotations","listDescription":"Create and send price offers to clients before invoicing.","newQuotation":"New Quotation","createQuotation":"Create Quotation","cancel":"Cancel","view":"View","actions":"Actions","filters":"Filters","filterTitle":"Filter Quotations","searchPlaceholder":"Search quotations...","noDataTitle":"No quotations yet","noDataDescription":"Create your first quotation to get started.","columnNumber":"Number","columnCustomer":"Customer","columnTotal":"Total","columnValidUntil":"Valid Until","columnStatus":"Status","columnInvoice":"Invoice","columnCreated":"Created","branch":"Branch","sentAt":"Sent At","sectionBasics":"Customer & Offer","sectionBasicsCaption":"Who the offer is for, how long it stands, and its pricing terms.","fieldCustomer":"Customer","fieldCustomerPlaceholder":"Search by name or phone","fieldValidUntil":"Valid Until","fieldDiscount":"Discount","fieldNotes":"Notes","fieldNotesPlaceholder":"Internal notes or a message to the client…","fieldTerms":"Terms & Conditions","fieldTermsPlaceholder":"Terms & conditions printed on the PDF…","sectionItems":"Items","sectionItemsCaption":"Products and services included in this offer.","addItem":"Add Item","fieldUnitPrice":"Unit Price","fieldItemNote":"Line Note","fieldItemNotePlaceholder":"Optional note for this line…","sectionTotals":"Totals","subtotal":"Subtotal","discount":"Discount","tax":"Tax","taxWithRate":"Tax ({rate}%)","total":"Total","customerRequired":"Customer is required","itemsRequired":"Add at least one item","editBlockedTitle":"This quotation can no longer be edited","editBlockedDescription":"Only draft quotations can be edited. Duplicate it to make a new draft.","tabOverview":"Overview","tabItems":"Items","sectionOverview":"Quotation Information","sectionAcceptance":"Acceptance","sectionRejection":"Rejection","sectionItemsCount":"Items ({count})","qtyAt":"Qty: {qty} · @","noItems":"No items on this quotation","acceptedName":"Accepted By","acceptedVia":"Accepted Via","acceptedViaStaff":"Marked by staff","acceptedViaLink":"Accepted via public link","acceptedAt":"Accepted At","rejectedReason":"Reason","actionSend":"Send Quotation","confirmSend":"Send this quotation to the client?","actionMarkAccepted":"Mark Accepted","confirmAccept":"Mark this quotation as accepted?","actionMarkRejected":"Mark Rejected","confirmReject":"Mark this quotation as rejected?","actionConvert":"Convert to Invoice","pdfPreparing":"Preparing PDF…","confirmConvert":"Convert this quotation into an invoice?","unsupportedTransition":"This transition is not available","shareLinkTitle":"Share Link","shareLinkDescription":"Anyone with this link can view and accept the quotation.","shareLinkFailed":"Could not create the share link","copyLink":"Copy link","linkCopied":"Link copied","copyFailed":"Could not copy the link","publicHeading":"Quotation","publicLoading":"Loading quotation…","publicValidUntil":"Valid until {date}","publicInvalidTitle":"This link is not valid","publicInvalidDescription":"The quotation link is invalid or has expired. Please contact the clinic for a new one.","publicAcceptedTitle":"Quotation accepted","publicAcceptedDescription":"This quotation has already been accepted. The clinic will be in touch.","publicRejectedTitle":"Quotation declined","publicRejectedDescription":"This quotation has been declined.","publicExpiredTitle":"Quotation expired","publicExpiredDescription":"This offer is past its validity date. Please contact the clinic for an updated offer.","publicAcceptHeading":"Accept this quotation","publicNameLabel":"Your full name","publicNamePlaceholder":"Type your full name","publicNameRequired":"Please type your full name","publicConsentLabel":"I accept this quotation","publicConsentRequired":"Please tick the acceptance box","publicAccept":"Accept Quotation","publicDecline":"Decline","publicDeclineTitle":"Decline this quotation","publicDeclineDescription":"Optionally tell the clinic why you are declining.","publicDeclineReasonLabel":"Reason","publicDeclineReasonPlaceholder":"Optional reason…","publicActionFailed":"Something went wrong. Please try again.","fieldItem":"Item","fieldItemPlaceholder":"Select a service or product","fieldQty":"Qty","fieldLineTotal":"Total","priceHelperBase":"base: {price} {currency}","discountNegative":"Discount cannot be negative","discountMaxPercent":"Maximum 100%","discountExceedsPrice":"Discount exceeds the original price","addLineDiscount":"Add discount","lineDiscountHelper":"Applied to the original price.","noItemsTitle":"No items yet","noItemsDescription":"Add a service or product to get started.","removeItem":"Remove item","sectionDiscountCaption":"Optional flat discount applied to the whole quotation before tax.","sectionCharges":"Charges & Summary","sectionChargesCaption":"Configure tax, then confirm the final total before submitting.","applyTax":"Apply tax","taxRuleRate":"{rate}% VAT","noActiveTaxRule":"No active rule","updateQuotation":"Update Quotation"},"MessagingInbox":{"actions":"Actions","archive":"Archive","audio":"Audio","awaitingReply":"Awaiting reply","awaitingReplyOverdue":"Awaiting reply, overdue","closeConversation":"Close conversation","closeSearch":"Close search","conversationClosedTitle":"Conversation closed","conversationClosedDescription":"This conversation was resolved. Reopen it to reply.","reopenConversation":"Reopen conversation","loadConversationFailed":"Couldn't load this conversation.","loadMessagesFailed":"Couldn't load messages.","retryLoad":"Retry","scrollToBottom":"Scroll to latest","scrollToNewMessages":"{count} new messages","lockedByAi":"AI is handling this chat. Pick it up to reply.","lockedAssignedTo":"Assigned to {name}. Take it over to reply.","lockedAssigned":"Assigned to another agent. Take it over to reply.","backToConversations":"Back to conversations","contactInformation":"Contact information","conversationArchived":"Conversation archived","conversationInfo":"Conversation info","conversationMessages":"Conversation messages","conversationStalled":"Conversation stalled","conversationStalledDescription":"The conversation is no longer active, and messages can't be sent at this time.","conversationUnarchived":"Conversation unarchived","couldNotHandChatsToAi":"Could not hand the selected chats to AI","couldNotPushChatsToAgent":"Could not push the chats to the caller agent","couldNotSelectAllChats":"Could not select all chats","selectedFirstChats":"Selected the first {count} chats. Narrow the filter to reach the rest","disconnected":"Disconnected","escalatedChats":"Escalated chats","failedToLoadConversations":"Failed to load conversations.","file":"File","viewOnInstagram":"View on Instagram","viewOnFacebook":"View on Facebook","internalNoteBadge":"Internal note · not sent to customer","statusSent":"Sent","statusDelivered":"Delivered","statusRead":"Seen","statusSending":"Sending…","statusFailed":"Failed. Tap to retry","ad":"Ad","openAd":"Open ad","openAdNamed":"Open ad: {name}","playAd":"Play ad","downloadFailed":"Download failed","handledByAi":"Handled by AI","image":"Image","interactiveMessage":"Interactive message","leadInformation":"Lead information","location":"Location","manyTyping":"{count} people are typing","markImportant":"Mark as important","markRead":"Mark as read","markUnimportant":"Mark as unimportant","markUnread":"Mark as unread","matchCount":"{count, plural, one {# match} other {# matches}}","messageRequests":"Message requests","moveToArchive":"Move to archive","moveToList":"Move to list","noConversationSelected":"No conversation selected","noConversationsYet":"No conversations yet","noRule":"No rule","oneTyping":"{name} is typing","online":"Online","pushedChatsToAgent":"{count, plural, one {Pushed # chat to \"{label}\"} other {Pushed # chats to \"{label}\"}}","resendMessage":"Resend message","searchConversations":"Search conversations","searchConversationsPlaceholder":"Search phone, PSID, name… (press / to focus)","searchInConversation":"Search in conversation","searchInConversationPlaceholder":"Search in conversation…","select":"Select","sendTemplate":"Send template","sharedContact":"Shared a contact","showActiveSessionsOnly":"Show active sessions only","showingActiveSessions":"Showing active sessions","showingEscalatedChats":"Showing escalated chats","showingMessageRequests":"Showing message requests","sticker":"Sticker","storyMention":"Mentioned you in their story","storyReply":"Replied to your story","template":"Template","today":"Today","twoTyping":"{first} and {second} are typing","unarchive":"Unarchive","undo":"Undo","unreadMessages":"{count, plural, one {# unread message} other {# unread messages}}","video":"Video","voiceMessage":"Voice message","windowClosesTooltip":"Time left to reply for free. After this only an approved template can be sent.","windowClosingSoon":"Free reply window closes in {time}. After that only a template can be sent.","yesterday":"Yesterday","youPrefix":"You:","messagesGroupTitle":"Messages","searchingMessages":"Searching messages...","messageSearchFailed":"Couldn't search messages. Try again.","noSearchResults":"No results for “{term}”","noSearchResultsHint":"Try a name, a phone number or words from the message.","startFirstConversation":"Start a new chat to begin your first conversation.","findingMessage":"Finding the message…","messageTooFarBack":"That message is too far back to open directly.","messagingPickUpChat":"Pick up chat","messagingPickedUpChats":"Picked up {count} chats","messagingPickedUpSomeChats":"Picked up {count} chats, {failed} were not available","messagingCouldNotPickUpChat":"Could not pick up this chat","noMessagesYet":"No messages yet","noMessagesYetHint":"Send the first message to get started.","chooseConversationHint":"Choose a chat from the list to start messaging.","channelDisconnectedTitle":"Channel disconnected","channelDisconnectedDescription":"This channel lost its connection. Reconnect, or check its settings.","reconnect":"Reconnect","goToSettings":"Go to settings","inboxTitle":"Messages","archivedChats":"Archived chats","showingAwaitingReply":"Showing chats awaiting reply","showAwaitingReplyOnly":"Show awaiting reply only","showingAiHandledChats":"Showing AI-handled chats","showAiHandledOnly":"Show AI-handled only","newConversation":"New conversation","newWhatsappChat":"New WhatsApp chat","searchShortPlaceholder":"Search…","clearSearch":"Clear search","selectedCount":"{count} selected","clearSelection":"Clear selection","selectAllMatchingChats":"Select all matching chats","assign":"Assign","handToAi":"Hand to AI","handingToAi":"Handing…","callAgent":"Call agent","outboundAgents":{"outbound":"Outbound","nooraArabic":"Noora Arabic","meetingConfirmation":"Meeting Confirmation","meetingMissed":"Meeting Missed","inbound":"Inbound","reactivation":"Reactivation"},"back":"Back","cancel":"Cancel","handChatsToAiTitle":"Hand chats to AI","handChatsToAiConfirm":"{count, plural, one {Are you sure you want the AI to handle this chat?} other {Are you sure you want the AI to handle these # chats?}}","refreshing":"Refreshing…","releaseToRefresh":"Release to refresh","pullToRefresh":"Pull to refresh","bulkAssignTitle":"{count, plural, one {Assign # conversation} other {Assign # conversations}}","bulkAssignDescription":"Select a team, then optionally assign a specific agent.","bulkAssignTeam":"Team","bulkAssignTeamPlaceholder":"Search team…","bulkAssignAgent":"Agent","bulkAssignAgentPlaceholder":"Select agent…","bulkAssignSelectTeamFirst":"Select a team first","bulkAssignCancel":"Cancel","bulkAssignConfirm":"Assign","bulkAssignSuccess":"{count, plural, one {Assigned # conversation} other {Assigned # conversations}}","bulkAssignPartial":"Assigned {updated} of {total}, {failed} failed","bulkAssignReasonForbidden":"{count} need the team supervisor (a colleague's live chat, or a move to another team)","bulkAssignReasonClosed":"{count} are closed","bulkAssignReasonNotFound":"{count} are not in your teams","bulkAssignReasonError":"{count} could not be sent. Try them again","bulkAssignFailed":"Bulk assign failed","catchingUp":"Catching up…","shortcutFocusSearch":"Search conversations","shortcutCloseDetail":"Close the side panel","archiveFailed":"Couldn't update the archive. The chat is unchanged.","markReadFailed":"Couldn't change the read state.","filters":{"title":"Filter messages","quick":"Quick filters","assignedToMe":"Assigned to me","leadsOnly":"Leads only","important":"Important","sessionActive":"Active (can send messages)","sessionActiveHint":"The 24-hour window is still open","aiHandled":"AI responding","aiHandledHint":"The AI bot is answering this conversation","requests":"Message requests","requestsHint":"New senders in Meta's message-requests folder","view":"View","viewOpen":"Open","viewOpenHint":"Active conversations only (default)","viewAll":"All","viewAllHint":"Include closed conversations","channel":"Channel","number":"Number","businessNumber":"Business number","selectNumber":"Select number","status":"Status","states":{"unassigned":"Unassigned","assigned":"Assigned","resolved":"Closed","waitingReply":"Waiting reply"},"team":"Team","selectTeams":"Select teams","agent":"Agent","selectAgent":"Select agent","assignedTo":"Assigned to","workedOnBy":"Worked on by","workedOnByHint":"Chats this agent has had at any point, including ones they handed on.","firstAssignedTo":"First assigned to","firstAssignedToHint":"Chats this agent was the first to be given.","tags":"Tags","selectTags":"Select tags","calls":"Calls","callsAi":"AI (IVR) call","callsManual":"Manual call","callsCampaign":"Campaign call","callsNone":"No calls","fromAds":"From ads","adSource":"Ad source","selectAdSource":"Select ad source","unread":"Unread","importantHint":"Chats starred as Important","leadStage":"Lead stage","selectStages":"Select stages"},"handover":{"handedToAi":"Chat handed to AI","handFailed":"Couldn't hand this chat to AI","assignFailed":"Couldn't assign this chat","aiAnswering":"AI is answering. Click to take over","handToAi":"Hand this chat to AI","toggleAria":"Toggle AI handling for this conversation","searchAgents":"Search agents…"},"newChat":{"teams":"Teams","selectTeam":"Select a team","members":"Members","selectMember":"Select a member","resendTitle":"Resend external message","resendDescription":"Write a message and pick a message tag.","messageTag":"Message tag","selectMessageTag":"Select a message tag","tags":{"CONFIRMED_EVENT_UPDATE":"Confirmed event update","POST_PURCHASE_UPDATE":"Post-purchase update","ACCOUNT_UPDATE":"Account update","HUMAN_AGENT":"Human agent"}},"filterButton":"Filter","adThumbnail":"Ad image","noPreview":"No preview","viewAd":"View ad","writes":{"chatAssignedTo":"Chat assigned to {name}","handedToAi":"{count, plural, one {Handed # chat to AI} other {Handed # chats to AI}}","handedToAiPartial":"Handed {updated} of {total} to AI, {failed} failed"},"channelTabs":{"all":"All Messages","emr":"EMR","whatsapp":"Whatsapp","instagram":"Instagram","facebook":"Facebook"},"teamFilter":{"label":"Team filter: {value}","all":"All teams","count":"{count} teams"}},"SectionSalesCreditNotes":{"entityName":"Credit Note","entityNamePlural":"Credit Notes","listTitle":"Credit Notes","listDescription":"Credit invoices for returns and corrections, then refund or apply the credit.","newCreditNote":"New Credit Note","actions":"Actions","cancel":"Cancel","filters":"Filters","filterTitle":"Filter Credit Notes","searchPlaceholder":"Search by number, customer or reason...","noDataTitle":"No credit notes yet","noDataDescription":"Save a credit note against an invoice to return goods or correct a charge, then post it. On an unpaid invoice the credit settles what is still owed.","columnDate":"Date","columnNumber":"Number","columnCustomer":"Customer","columnInvoice":"Invoice","columnTotal":"Total","columnOpen":"Open Credit","columnState":"State","columnCreated":"Created","stateVoid":"Void","tabOverview":"Overview","tabLines":"Lines","tabSettlements":"Settlements","tabJournalEntries":"Journal Entries","tabAttachments":"Attachments","sectionCreditNoteEntry":"Credit note entry","sectionRefundEntry":"Refund entry","noJournalEntries":"No journal entries yet. They are booked when the credit note is posted.","sectionOverview":"Credit Note Information","sectionTotals":"Totals","vat":"VAT","net":"Net (excl. VAT)","rate":"Rate","vatIncluded":"incl. VAT","total":"Total","openAmount":"Open credit","sectionLinesCount":"Lines ({count})","unitsReturned":"{count, plural, one {# unit returned} other {# units returned}}","valueOnly":"Value credit","restocked":"Back in stock","noLines":"No lines to credit","sectionSettlements":"Refunds and applications","appliedTo":"Applied to","refundedVia":"Refunded via {method}","noSettlements":"The credit has not been refunded or applied yet.","sectionInvoice":"Invoice","sectionInvoiceCaption":"Find the invoice by customer or by its number.","fieldCustomer":"Customer","fieldCustomerPlaceholder":"Search by name or phone","fieldInvoice":"Invoice","fieldInvoicePlaceholder":"Invoice number or customer","creditableAmount":"Can still be credited: {amount}","fieldDate":"Date","fieldReason":"Reason","fieldReasonPlaceholder":"Why the invoice is being credited…","sectionLines":"Lines","sectionLinesCaption":"Tick what to credit. Returned units come off the invoice; stock products go back to stock.","pickInvoiceFirst":"Choose an invoice to see its lines.","linesLoadError":"The invoice lines could not be loaded.","lineOpen":"Sold {sold} · {open} still open","lineCredited":"Already credited in full","fieldReturnQty":"Units returned","openUnits":"Up to {count}","fieldCreditAmount":"Credit amount","fieldCreditAmountHelp":"Leave empty to credit what the returned units are worth.","fieldRestock":"Return to stock","invoiceRequired":"Choose the invoice to credit","reasonRequired":"Enter the reason for the credit note","linesRequired":"Tick at least one line to credit","lineNeedsValue":"Each ticked line needs units returned or an amount","actionRefund":"Refund","actionOpenInvoice":"Open Invoice","stateDraft":"Draft","stateOpen":"Open","stateClosed":"Closed","fieldRefundPayment":"Refund payment","fieldRefundPaymentPlaceholder":"Choose the payment to return","fieldRefundMethod":"Refund through","fieldRefundMethodHelp":"Defaults to the method of the payment it returns.","fieldPaidFrom":"Paid from account","fieldPaidFromPlaceholder":"The payment method's account","fieldPaidFromHelp":"A cash or bank account. Leave empty to use the payment method's account.","fieldRefundAmount":"Refund amount","refundAmountHelp":"Up to {amount}","fieldOverrideReason":"Manager approval reason","fieldOverrideReasonPlaceholder":"Manager approval for this refund…","overrideReasonHelp":"Required because this refund is over the tenant's override threshold or the invoice is past the refund window.","overrideReasonHelpAmount":"Required because this refund is over the tenant's override amount threshold.","overrideReasonHelpStaleInvoice":"Required because this invoice's payment is older than the tenant's refund window.","overrideReasonTitle":"Manager approval needed","overrideReasonPrompt":"This refund is over the override threshold or the invoice is past the refund window. Enter the manager's reason to post it.","overrideReasonRequired":"Enter the manager's reason","refundMethodRequired":"Choose how the money is refunded","sectionAccounting":"Accounting","sectionAccountingCaption":"Where this credit note books. Taken from the invoice it reverses; change them in Accounting settings.","fieldRevenueAccount":"Sales returns account","fieldRevenueAccountPlaceholder":"Default account","fieldRevenueAccountHelp":"Where the returned revenue is booked. Filled with the Sales Returns account from accounting settings, else the revenue account the sale posted to.","fieldAccountPlaceholder":"Choose an account","fieldTaxAccount":"VAT account","fieldTaxAccountHelp":"Where the credit's VAT is reversed. Filled with the VAT output account.","fieldReceivableAccount":"Receivable account","fieldReceivableAccountHelp":"Where the customer's credit is booked. Filled with the default receivable account.","fieldPaidFromFilledHelp":"The cash or bank account the refund leaves from. Filled with the payment method's account.","revenueAccountPrepaidHelp":"Prepaid lines (packages, memberships, gift cards) always reverse their liability account.","previewEmpty":"Tick the lines to credit to see the journal entry.","appliedToInvoice":"Settles on this invoice","openCreditAfter":"Left as customer credit","refundNow":"Refunded now","journalCreditNote":"Credit note","journalStockReturn":"Stock return","journalRefund":"Refund","refundTitle":"Refund credit {number}","refundDescription":"Pay the open credit back to the customer.","refundSuccess":"Credit refunded","invoiceNoCreditNotesTitle":"No credit notes","invoiceNoCreditNotesDescription":"Returns and corrections on this invoice appear here once a credit note is posted.","defaultAccount":"Default: {account}","lineAccount":"Account: {account}","saveDraft":"Save Draft","saveAndPost":"Save & Post","draftSaved":"Draft saved","actionPost":"Post","actionResetToDraft":"Reset to draft","resetTitle":"Reset this credit note to draft?","resetContent":"This credit note will return to draft so you can edit it and re-post it.","resetSuccess":"Credit note reset to draft","actionVoid":"Void","voidTitle":"Void this draft credit note?","voidContent":"The draft is voided, not deleted: it stays on the list as void. If it was posted before and reset, it keeps its number, so the credit-note series has no gap. A refund put on hold by the reset is dropped with it.","voidReasonLabel":"Reason","voidReasonPlaceholder":"Why is this draft voided?","voidReasonRequired":"A reason is required to void a credit note.","voidSuccess":"Credit note voided","postTitle":"Post this credit note?","postContent":"Posting numbers the credit note, books its journal entries and pays the customer back. To correct it afterwards, reset it to draft.","postSuccess":"Credit note posted","postSaveFirst":"Save the draft first. What is posted is what was saved.","sectionRefund":"Refund","sectionRefundCaption":"Paid back to the customer when the credit note is posted, after settling what the invoice still owes.","refundNeedsInvoiceTitle":"Choose an invoice first","refundNeedsInvoiceDescription":"How the money goes back depends on how the invoice was paid. Pick one above, then set the refund here.","accountLockedTooltip":"Taken from the invoice this credit note reverses, so both documents close the same account. Change it in Accounting settings.","accountsMissing":"No default is set for: {accounts}. This credit note cannot be posted until it is.","openAccountingSettings":"Open settings","columnAttachments":"Attachments"},"SectionLeads":{"pickers":{"stageLocked":"This lead belongs to another operator, so you can't change its stage.","operatorLocked":"You don't have permission to reassign this lead.","patientLocked":"This lead belongs to another operator, so you can't change its patient.","patientPlaceholder":"Link a patient"},"delete":{"bulkTitle":"{count, plural, one {Delete # lead?} other {Delete # leads?}}","bulkContent":"The selected leads leave the list and the board. This can't be undone.","noteEntity":"Comment"},"detail":{"tabs":{"info":"Info","calls":"Calls","tasks":"Tasks","comments":"Comments","history":"History","bookings":"Bookings"},"converted":"Converted","lead":"Lead","leadOptions":"Lead options","actions":"Actions","windowExpired":"Expired","windowExpiredHint":"Conversation window expired. Only template messages can be sent.","windowRemaining":"{remaining} remaining, open until {time}.","windowOpenUntil":"Open until {time}.","windowOpen":"Conversation window is open.","copy":"Copy","revealAndCopy":"Reveal & copy","noPermissionToView":"You do not have permission to view this data","loadFailed":"Failed to load data","entityPlural":"Leads","info":{"email":"Email","phone":"Phone","gender":"Gender","contactChannel":"Contact channel","preferredLanguage":"Preferred language","branch":"Branch","mrn":"MRN","createdAt":"Created at","note":"Note","firstMessage":"First message","stage":"Stage","assignedTo":"Assigned to","lostReason":"Lost reason","googleClickId":"Google Click ID","patientLink":"Patient link","patientLinkHint":"Link the patient file to book appointments and see their visits.","assignToMe":"Assign to me","bookAppointment":"Book appointment","statusAssignment":"Status & assignment","contactDetails":"Contact details","adsSource":"Ads source","tags":"Tags","socialProfile":"Social profile","attribution":"Attribution","adForm":"Ad form","addTags":"Add tags...","selectSource":"Select source…","source":"Source"},"calls":{"entityPlural":"Calls","logCall":"Log call","nextCallReminder":"Next call reminder","reschedule":"Reschedule","clearReminder":"Clear reminder","reminderCleared":"Reminder cleared","scheduleCallback":"Schedule callback","emptyTitle":"No calls yet","emptyDescription":"AI (IVR) calls appear here automatically. Use “Log call” to record a manual call.","aiAgent":"AI agent","callerAgent":"Caller agent","operator":"Operator","durationMinSec":"{mins}m {secs}s","durationSec":"{secs}s","verbOutbound":"made an outbound call","verbInbound":"took an inbound call","transcript":"Transcript","recording":"Recording"},"comments":{"addTitle":"Add a comment","addHint":"Comments help you remember important details about your leads.","placeholder":"Write a comment here","listTitle":"Comments","emptyTitle":"No comments yet","emptyDescription":"Comments you add will show up here."},"activity":{"loading":"Loading activity…","empty":"No activity yet.","leadCreated":"Lead created","stageChanged":"Stage: {from} → {to}","assignedTo":"Assigned to {name}","assignmentCleared":"Assignment cleared","lostWithReason":"Lost: {reason}","noteAdded":"Note added","callDirection":"Call {direction}","unknownOutcome":"Unknown","durationSeconds":"{seconds}s","byActor":"by {name}","stageFallback":"Stage #{id}","userFallback":"User #{id}","reasonFallback":"Reason #{id}","unspecified":"unspecified"},"sessionWindow":{"openTitle":"Reply window open until {time}","closedDescription":"Regular messages can’t be sent until the customer writes again.","closedShort":"Window closed","hoursLeft":"{hours}h left","minutesLeft":"{minutes}m left"},"quickActions":{"book":"Book"},"bookings":{"upcoming":"Upcoming","past":"Past","openAll":"Open all bookings in patient profile","emptyTitle":"No bookings yet","emptyDescription":"Book their first appointment without leaving the chat.","bookAppointment":"Book appointment","noPatientTitle":"No patient linked","noPatientDescription":"Link this lead to a patient to see their bookings here.","entityPlural":"bookings"}},"bulkBar":{"selectedCount":"{count, plural, one {# lead selected} other {# leads selected}}","moveStage":"Move stage","assign":"Assign","tag":"Tag","delete":"Delete","callAgent":"Call agent","noStaff":"No staff available","noLabels":"No labels available","userFallback":"User #{id}","apply":"Apply","applyCount":"Apply {count}","movedToast":"{count, plural, one {Moved # lead to \"{stage}\"} other {Moved # leads to \"{stage}\"}}","assignedToast":"{count, plural, one {Assigned # lead to {name}} other {Assigned # leads to {name}}}","taggedToast":"{count, plural, one {Tagged # lead} other {Tagged # leads}}","deletedToast":"{count, plural, one {Deleted # lead} other {Deleted # leads}}","leadEntity":"Lead","leadsDisplay":"{count, plural, one {# lead} other {# leads}}","lostReasonTitle":"Reason for loss","lostReasonDescription":"{count, plural, one {Why was this lead marked as \"{stage}\"?} other {Why were these # leads marked as \"{stage}\"?}}","selectReason":"Select reason","pushedToast":"{count, plural, one {Pushed # lead to \"{agent}\"} other {Pushed # leads to \"{agent}\"}}","pushFailed":"Could not push the leads to the caller agent","agents":{"outbound":"Outbound","noora_arabic":"Noora Arabic","meeting_confirmation":"Meeting Confirmation","meeting_missed":"Meeting Missed","inbound":"Inbound","reactivation":"Reactivation"}},"board":{"noFollowUp":"No follow-up","overdue":"Overdue · {when}","today":"Today {time}","tomorrow":"Tomorrow {time}","followUpTooltip":"Next follow-up. Click to reschedule","noFollowUpTooltip":"No next step set. Click to schedule a follow-up","moveTo":"Move to","scheduleFollowUp":"Schedule follow-up","nextFollowUp":"Next follow-up","followUpNone":"No follow-up (done)","followUpKeep":"Keep current follow-up","followUpInOneHour":"In 1 hour","followUpTomorrow":"Tomorrow 10:00","followUpInThreeDays":"In 3 days","followUpNextWeek":"Next week","followUpHelper":"Every open lead should have a next step. It turns red when it is due.","dueNow":"Due now","cardActions":"Lead actions","edit":"Edit","logCall":"Log call","disqualify":"Disqualify","delete":"Delete","whatsapp":"WhatsApp","callAndLog":"Call & log","slaOverdue":"Overdue: no contact for {hours}h","slaWarning":"Follow-up due: {hours}h since last contact","slaOk":"Recently contacted","assignedTooltip":"{name}. Click to reassign","unassignedTooltip":"Unassigned. Click to assign","unassign":"Unassign","loadingStaff":"Loading staff…","userFallback":"User #{id}","columnEmpty":"No leads"},"enums":{"callSource":{"voice_ai":"AI","manual":"Manual","agent_outbound":"Hoopoe Sense"},"callDirection":{"inbound":"Inbound","outbound":"Outbound"},"callOutcome":{"interested":"Interested","no_answer":"No answer","callback":"Callback requested","not_interested":"Not interested","wrong_number":"Wrong number","converted":"Converted","voicemail":"Voicemail","initiated":"Queued for agent","no_result_reported":"No result reported"},"activityKind":{"created":"Created","stage_changed":"Stage changed","assigned":"Assigned","lost":"Lost","comment":"Comment","call":"Call"},"gender":{"m":"Male","f":"Female"}},"callAction":{"contactInfo":"Contact info","idLabel":"ID: {id}","call":"Call","whatsApp":"WhatsApp","email":"Email"},"lostReasonLog":{"title":"Lost reason logging","reasonQuestion":"What is the reason the lead was lost?","reasonPlaceholder":"Select Reason","note":"Note","notePlaceholder":"Write a note here","discard":"Discard","submit":"Submit","infoName":"Lead","infoSource":"Ad source","infoBranch":"Branch","infoJoined":"Created"},"list":{"title":"Leads","description":"Track and manage your sales pipeline","entityPlural":"Leads","searchPlaceholder":"Search leads…","filters":"Filters","clearAll":"Clear all","emptyTitle":"No leads yet","emptyDescription":"New leads from ads, WhatsApp and the website appear here.","emptyFilteredTitle":"No leads match","emptyFilteredDescription":"Try another search, queue or filter.","queueLabel":"Lead queue","queueAll":"All","queueMine":"My queue","queueUnassigned":"Unassigned","queueDue":"Due now","chipJoined":"Joined","chipGender":"Gender","chipStage":"Stage","chipAdSource":"Ad source","chipCampaign":"Campaign","chipTags":"Tags","chipOperator":"Operator","chipCalls":"Calls","chipUnassigned":"Unassigned only","chipOverdue":"Overdue (SLA missed)","callsAi":"AI (IVR) call","callsManual":"Manual call","callsCampaign":"Campaign call","callsNone":"No calls","newLead":"New lead","filterTitle":"Filter leads","filterDate":"Date","filterFrom":"From","filterTo":"To","anyGender":"Any gender","anyStage":"Any stage","anyAdSource":"Any ad source","anyTag":"Any tag","anyOperator":"Any operator","filterAssignment":"Assignment","filterSla":"SLA"},"logCall":{"description":"Capture the outcome so the SLA ring resets and the call lands in the timeline.","direction":"Direction","outcome":"Outcome","note":"Note","notePlaceholder":"Optional: what did the lead say?","logged":"Call logged"},"callback":{"title":"Schedule callback","description":"Assign a follow-up call to a teammate and set the reminder date & time.","schedule":"Schedule","team":"Team","teamPlaceholder":"Select team","assignTo":"Assign to","assigneePlaceholder":"Select a teammate","pickTeamFirst":"Pick a team first","date":"Callback date","pickDate":"Pick a date","time":"Callback time","note":"Note","notePlaceholder":"Optional: context for the callback","missing":"Pick a person, date and time for the callback","scheduled":"Callback scheduled","taskTitle":"Call back {name}","leadFallback":"lead"},"options":{"bookAppointment":"Book appointment","markLost":"Mark as lost","edit":"Edit","delete":"Delete","copyId":"Copy ID","idCopied":"Lead ID copied","deleteHint":"Removes this lead from the list and the board","entity":"Lead","leadFallback":"Lead #{id}"},"columns":{"name":"Full name","stage":"Stage","date":"Date","source":"Source","operator":"Operator","attachments":"Attachments","actions":"Actions"},"form":{"entity":"Lead","addTitle":"Add new lead","editTitle":"Edit lead","addLead":"Add lead","update":"Update","personalInfo":"Personal info","firstName":"First name","lastName":"Last name","enterFirstName":"Enter first name","enterLastName":"Enter last name","firstNameRequired":"First name is required","lastNameRequired":"Last name is required","gender":"Gender","contact":"Contact","phoneNumber":"Phone number","email":"Email","enterEmail":"Enter email address","patient":"Patient","leadDetails":"Lead details","adSource":"Ad source","selectAdSource":"Select ad source","stage":"Stage","selectStage":"Select stage","operator":"Operator","selectOperator":"Select operator","operatorLocked":"Only a supervisor can reassign this lead.","branch":"Branch","selectBranch":"Select branch","preferredLanguage":"Preferred language","labels":"Labels","selectOrCreateLabels":"Select or create labels","note":"Note","enterNote":"Enter note here"}},"AgentChat":{"title":"AI assistant","subtitle":"About this conversation","newChat":"New chat","close":"Close","placeholder":"Ask anything…","greeting":"How can I help?","greetingNamed":"Hi {name}, how can I help?","emptyHint":"I've read this conversation. Ask why it stalled, what to say next, or for a quick summary.","suggestionsTitle":"Try asking","disclaimer":"AI can make mistakes. Check important details.","send":"Send","copy":"Copy","copyFailed":"Couldn't copy. Select the text instead","regenerate":"Regenerate","stop":"Stop","stopFailed":"Couldn't stop it. The answer is still being generated","helpful":"Helpful","notHelpful":"Not helpful","feedbackThanks":"Thanks for the feedback","useReply":"Use reply","useReplyDone":"Added to your message box","errorUnavailable":"The assistant is temporarily unavailable.","errorTimeout":"That took too long to answer.","errorGeneric":"Something went wrong getting an answer.","retry":"Try again","jumpToLatest":"Jump to latest","launcher":"Ask AI","launcherTooltip":"Ask the AI assistant about this conversation","suggestWhyNotBooked":"Why didn't this lead book?","suggestWhatNext":"What should I say next?","suggestSummarize":"Summarize this conversation","followUpDraft":"Draft a follow-up message","followUpOffer":"What offer fits them?","followUpObjection":"How do I handle their objection?","quotaExhausted":"AI credits are used up","busy":"The assistant is busy right now. Try again in a moment.","forbidden":"Your role cannot use the assistant here.","stillWorking":"Still working on that answer. It will land in this chat. Refresh to see it.","unverified":"unverified","refusalTitle":"I can't answer that","clarifyTitle":"One quick question","stoppedTitle":"Stopped","elapsedSeconds":"{seconds}s","clarifyPick":"Pick one","refusalPublicSchema":"The assistant only runs inside a clinic workspace.","refusalUnauthenticated":"Sign in to use the assistant.","refusalCountryNotSupported":"The assistant is not available for clinics in this country yet.","refusalDisabledByTenant":"The assistant is switched off for this clinic.","refusalSchemaNotEnabled":"The assistant is not switched on for this clinic yet.","refusalTabletSurface":"The assistant is not available on the tablet.","refusalSurfaceNotEnabled":"The assistant is not switched on for this page yet.","refusalTabletRole":"The assistant is not available for tablet users.","refusalRoleBlocked":"Your role is not allowed to use the assistant.","refusalRoleNotEnabled":"The assistant is not switched on for your role yet.","refusalEmpty":"Ask something first.","refusalTooLong":"That question is too long. Shorten it and ask again.","refusalNoAgent":"No assistant is available for your role yet.","clarifyPickOnly":"Pick one of the options above","aiProgress":{"working":"Working…","answer":"Writing the answer…","reports":{"list_reports":"Looking for the right report","describe_report":"Checking what that report can show","run_report":"Reading the report","drill_down":"Opening the rows behind that figure","filter_options":"Checking your branch and filter access"},"patient":{"summary":"Looking through this patient's visits","balance":"Working out what this patient owes"},"booking":{"today":"Checking today's schedule"},"inbox":{"transcript":"Reading this conversation"},"social":{"thread":"Reading this comment thread"},"invoices":{"summary":"Reading this invoice"},"crm":{"graph_paths":"Mapping the CRM relationships","schema":"Checking how these records connect","find":"Searching the records","get":"Opening the record","related":"Following the linked records","history":"Reading the record's history","aggregate":"Counting the records","knowledge":"Checking how this data is meant to be read"},"attribution":{"explain":"Tracing where this booking came from"},"package":{"remaining":"Checking unused sessions"}},"aiSummary":{"checked":"{count, plural, one {Checked # more thing} other {Checked # more things}}","notCompleted":"{count, plural, one {# step didn't complete} other {# steps didn't complete}}","reusedAnswer":"Reused an earlier answer","reports":{"list_reports":"Checked which reports you can open","describe_report":"Checked what that report can show","run_report":"{count, plural, one {# report read} other {# report reads}}","drill_down":"{count, plural, one {Opened the rows behind # figure} other {Opened the rows behind # figures}}","filter_options":"Checked your branch and filter access"},"patient":{"summary":"Looked through this patient's visits","balance":"Checked the patient's account"},"booking":{"today":"Checked today's schedule"},"inbox":{"transcript":"Read this conversation"},"social":{"thread":"Read the comment and the post it is under"},"invoices":{"summary":"Read this invoice"},"crm":{"graph_paths":"Mapped the CRM relationships","schema":"Checked how the records connect","find":"Searched the records","get":"Opened the record","related":"Followed the linked records","history":"Read the record's history","aggregate":"Counted the records","knowledge":"Checked the CRM rules"},"attribution":{"explain":"Traced where this booking came from"},"package":{"remaining":"Checked unused sessions"}}},"Copilot":{"title":"Wave Sense","launcher":"Ask AI","launcherTooltip":"Ask AI (⌘I / Ctrl+I)","close":"Close","newChat":"New chat","history":"Chat history","noHistory":"No earlier chats yet","agents":"Assistants","switchedTo":"Switched to {name}","contextChip":"About: {label}","contextOn":"On: {label}","credits":"{count, plural, one {# credit} other {# credits}}","creditsUsed":"{credits} used","checked":"Checked: {items}","notCompleted":"Incomplete: {items}","unverified":"unverified","quotaExhausted":"AI credits are used up","quotaExhaustedHint":"Automations pause until credits are topped up. The inbox keeps working.","quotaExhaustedHintNoBilling":"AI credits are used up. Ask an administrator to top them up.","dailyCapHint":"Your personal daily AI limit resets tomorrow.","topUp":"Top up","busy":"The assistant is busy right now. Try again in a moment.","forbidden":"Your role cannot use the assistant here.","stillWorking":"Still working on that answer. It will land in this chat. Refresh to see it.","surfaceNotEnabled":"The assistant is not switched on for this page yet.","unavailable":"The assistant is temporarily unavailable.","timeout":"That took too long to answer. Try again.","generic":"Something went wrong getting an answer.","greeting":"How can I help?","greetingNamed":"How can I help, {name}?","emptyHint":"I can read the page you are on and the reports your role can open. Every number I give is checked against a report.","emptyHintBySurface":{"patient":"I can see this patient's bookings, balance and notes, and summarize or explain any of them.","conversation":"I can read this chat, explain where it stands and draft a reply for you.","lead":"I can see this lead and its conversation, and suggest the next step.","report":"I can read this report's numbers with the filters shown and explain what drives them.","dashboard":"I can read the clinic's reports your role can open and answer questions about them.","booking":"I can see today's schedule and answer questions about it.","other":"I can read the reports your role can open and answer questions about them."},"placeholder":"Ask about this page…","disclaimer":"Answers are drawn from your clinic data and can be wrong. Check before acting.","refusalTitle":"I can't answer that","clarifyTitle":"One quick question","showFigures":"Show me the exact figures","citationRows":"{count, plural, one {# row} other {# rows}}","citationTruncated":"top rows shown","caveats":"Note","basis":"Basis","openReport":"Open report","feedbackThanks":"Thanks, noted.","answerReady":"Your answer is ready","openAnswer":"Open","collapsedByRail":"Assistant hidden while a side panel is open","resize":"Resize assistant","explainFigure":"Explain this figure","explainFigurePrompt":"Explain {metric} for {scope}: what drives this figure and how it compares.","summarizePatient":"Summarize this patient","summarizePatientHint":"Bookings, balance and notes in one view","summarizePatientPrompt":"Summarise this patient for me.","askAboutConversation":"Ask about this conversation","useReply":"Use reply","replyBar":{"improve":"Improve","improveInstruction":"Improve the current draft reply","warmer":"Warmer","warmerInstruction":"Make it warmer and friendlier","polish":"Polish","polishInstruction":"Polish it and fix any grammar","shorter":"Shorter","shorterInstruction":"Make it shorter and to the point","regenerate":"Regenerate","actions":"Actions","dismiss":"Dismiss","insert":"Insert into message","writing":"Writing a reply…","placeholderRefine":"Ask AI to edit… e.g. \"make it shorter\"","placeholderDescribe":"Describe the reply…","refine":"Refine","generate":"Generate","suggest":"AI suggest reply","suggestInstruction":"Draft a reply to the customer's last message","currentDraft":"Current draft:","blocked":"Draft blocked: it mentions details that do not belong to this contact.","metered":"AI replies use credits."},"contextTitle":"This chat is about","contextWholeClinic":"The whole clinic","askSpecialist":"Ask a different specialist","answeredBy":"Answered by {name}","contextTheirLead":"Their lead","contextPatientRecord":"Their patient record","contextBooking":"Booking #{id}","contextSearchPlaceholder":"Search a patient or invoice…","contextNoMatches":"No matching records","contextSearching":"Searching…","contextUnknownRecord":"Unnamed record"},"AiWorkforce":{"activityRowCapNotice":"Showing the {count} most recent of {total} questions asked in this window.","agentPaused":"{name} is paused.","agentResumed":"{name} is back at work.","agentToggleFailed":"Could not change {name}. Please try again.","agentToggleRefused":"Could not change {name}: {reason}","agentUnassigned":"Not assigned","askedByUnknown":"Unknown","branchCountTemplate":"{count} branches you can access","branchFallback":"Branch","clinicFallback":"This clinic","colAgent":"Agent","colAskedBy":"Asked by","colCredits":"Credits","colOutcome":"Outcome","colQuestion":"Question","colWhen":"When","consult":"Consult","consultDisabledHint":"Resume this agent before you can ask it anything.","creditsByAgent":"Where the credits went","creditsInWindow":"{count} credits","creditsIncluded":"Included in your plan","creditsNoSpend":"No credits spent in this period.","creditsPurchased":"Credits bought","creditsPurchasedHint":"Top-up packs","creditsThisPeriod":"This billing period","creditsUnknownDescription":"This is not a balance of zero. The meter did not answer. Try again, and tell us if it keeps happening.","creditsUnknownTitle":"We cannot read your balance right now","creditsUnlimited":"Unlimited","creditsUnsettled":"{count} questions have been paid for but are not on your bill yet.","creditsUsed":"Credits used","creditsUsedRatio":"{percent}% of your included credits used","creditsWindowCaption":"Last {days} days, a different window from the card above.","everyPage":"Every page","flaggedHint":"Worth a look: the assistant flagged something, failed, or refused.","inboxEmptyDescription":"This is genuinely empty. The agents that watch for things worth your attention have not been built yet, so nothing can appear here.","inboxEmptyTitle":"Nothing needs your decision","inboxNoneYet":"None of these are running yet. Nothing on this page is a sample.","inboxWhatWillAppear":"What will appear here","kpiAnswered":"Answered","kpiCredits":"Credits used","kpiCreditsWindow":"Last {days} days","kpiRefused":"Refused or clarified","kpiRefusedHint":"A refusal is the assistant being honest, not a failure.","kpiRuns":"Questions asked","mapScopeCaption":"This map covers the branches you can access. Questions asked in any other branch are not counted here.","mapUnassigned":"{count} questions were asked on a page that carries no branch, so they are not counted under any branch.","noActivityDescription":"When your team asks the assistant something, every question and what it cost appears here.","noActivityTitle":"Nothing asked yet","noAgentServing":"No agent serving this page","noAgentsDescription":"This clinic has no agents set up. They arrive with the AI module, so nothing is missing from your data.","noAgentsTitle":"No AI staff yet","noBranchesDescription":"The map draws your branches and the pages each agent serves. You do not have access to any branch yet.","noBranchesTitle":"No branches to map","pageDescription":"Your clinic's AI staff: what each one did over the last {days} days, what it cost, and the switch that pauses it.","pageTitle":"AI Workforce","pauseAgent":"Pause this agent","pauseHint":"Pausing stops it answering anywhere, immediately.","questionUnavailable":"Question not recorded","resumeAgent":"Resume this agent","resumeHint":"It answers nothing until you switch it back on.","runsInWindow":"{count} questions asked","runsTemplate":"{count} questions","servesNothing":"Serving no pages right now","servesPages":"Serves: {pages}","statusPaused":"Paused","statusWorking":"Working","status_idle":"Idle","status_paused":"Paused","status_working":"Working","switchedOff":"Switched off","switchedOn":"Switched on","tabActivity":"Activity","tabCredits":"Credits","tabInbox":"Needs your decision","tabMap":"Clinic map","tabTeam":"Team","toolCount":"{count} tools","unassignedRuns":"{count} questions are not attributed to any agent, so they are not in the counts above.","watcher_after_hours_activity":"Activity outside your opening hours","watcher_free_appointment":"An appointment that was never billed","watcher_high_discount_override":"A discount larger than a staff member may give","watcher_left_without_purchase":"A patient who arrived and left without buying","watcher_low_margin_invoice":"An invoice sold below the margin you set","watcher_new_device_login":"A staff login from a device we have not seen before","watcher_refund_or_void":"A refund or a voided invoice","watcher_stale_in_session":"A session left open long after it should have closed","runStatus":{"succeeded":"Answered","clarify":"Needs clarification","refused":"Refused","failed":"Failed","unsettled":"Unsettled","pending":"Pending","cancelled":"Cancelled"}},"AppDashboardMessagingCommentsPage":{"metadata_title":"Comments"},"SocialComments":{"title":"Comments","posts":"Posts","no_posts_title":"No comments yet","no_posts_description":"Comments on your connected Facebook and Instagram posts will appear here.","no_comments_title":"No comments on this post","no_comments_description":"Nothing here needs an answer right now.","select_post_title":"Pick a post","select_post_description":"Choose a post on the left to read and answer its comments.","filter_unanswered":"Unanswered","filter_ads":"On ads","filter_mine":"Assigned to me","search_placeholder":"Search comments","badge_ad":"Ad","badge_organic":"Organic","waiting_count":"{count} waiting","reply_publicly":"Reply publicly","reply_privately":"Send DM","reply_placeholder":"Write a reply…","cancel":"Cancel","hide":"Hide","unhide":"Unhide","resolve":"Resolve","reopen":"Reopen","delete_remote":"Delete from network","open_chat":"Open chat","dm_sent":"DM sent","dm_window_days":"{days}d left to DM","dm_window_hours":"{hours}h left to DM","dm_window_expired":"DM window closed","dm_blocked_already_used":"You have already sent this person a DM about this comment.","dm_blocked_window_expired":"Meta only allows a DM within 7 days of the comment.","dm_blocked_comment_deleted":"This comment no longer exists.","dm_blocked_unsupported_network":"This network does not support DMs from comments.","selected_count":"{count} selected","bulk_dm":"Send DM to selected","bulk_clear":"Clear","bulk_sent":"{count, plural, one {Sent # DM} other {Sent # DMs}}","bulk_skipped":"{count} skipped","status_hidden":"Hidden","status_resolved":"Resolved","known_patient":"Patient","known_lead":"Lead","new_contact":"New contact","deleted_by_author":"This comment was deleted.","from_ad":"From an ad","no_caption":"No caption","open_on_network":"Open the post","network_all":"All","filter_clear":"Clear","assign":"Assign","assign_description":"Route this comment to a person or a team. Clearing both leaves it visible to everyone.","assign_confirm":"Assign","assign_member":"Assign to","assign_team":"Team","delete_remote_title":"Delete this comment?","delete_remote_warning":"This removes the comment from the social network for everyone. It cannot be undone, and the commenter may notice.","delete_remote_confirm":"Delete it","not_connected_title":"No Facebook or Instagram page connected","not_connected_description":"Comments can only arrive once a page is connected. Connect one in Channels, and its comments will show up here.","not_connected_action":"Connect a page","no_posts_connected_description":"Your pages are connected. Nothing has come in yet. New comments appear here within a minute of being posted.","review_channels_action":"Review channels","action_reply":"Reply","action_dm":"DM","action_done":"Done","action_reopen":"Reopen","more_actions":"More actions","back_to_posts":"Posts","post_untitled_video":"Video post","post_untitled_photo":"Photo post","post_untitled_album":"Album post","post_untitled":"Post","quick_replies":"Saved replies","replying_to":"Replying to {name}","replying_privately_to":"DM to {name}","send_hint":"Ctrl + Enter to send","no_match_title":"No posts match these filters","no_match_description":"Try a different search, or clear the filters to see every post.","no_comments_match_title":"No comments match these filters","no_comments_match_description":"This post has comments, but none fit the filters you picked.","clear_filters":"Clear filters","all_answered":"All answered","comment_count":"{count, plural, one {# comment} other {# comments}}","reply_sent":"Reply posted","select_comment":"Select this comment","network_filter":"Network","reply_mode":"Reply as","mode_public":"Public","action_send":"Reply"},"PayrollSettings":{"wps_title_plain":"Employer bank & employee advances","wps_caption_plain":"The account salaries are paid from, and the account that holds staff loans.","page_title":"Payroll","page_description":"Define pay frequency, overtime rules, statutory deductions, EOSB accrual, and posting behaviour.","unavailable":"Payroll settings will be available in a future release.","pay_period_title":"Pay period","pay_period_caption":"When you run payroll and on which day of the month employees are paid.","pay_frequency":"Pay frequency","pay_frequency_monthly":"Monthly","pay_frequency_biweekly":"Bi-weekly","pay_frequency_weekly":"Weekly","payday":"Payday (day of month)","payday_help":"Day 1-31. Used for monthly cycles.","overtime_title":"Overtime","overtime_caption":"Calculate overtime from attendance hours. Disable if you do not pay overtime.","overtime_enabled":"Calculate overtime from attendance","ot_threshold":"Threshold (hrs / day)","ot_threshold_help":"Hours above which time is paid as overtime.","ot_weekday":"Weekday OT ×","ot_weekday_help":"e.g. 1.25 = 125% of normal rate","ot_weekend":"Weekend OT ×","ot_weekend_help":"Applied on Saturdays and Sundays.","ot_holiday":"Holiday OT ×","ot_holiday_help":"Applied on public holidays.","statutory_title":"Statutory deductions","statutory_caption":"Country-specific contributions (e.g. UAE GPSSA). Enable and set percentages.","statutory_enabled":"Calculate statutory contributions","statutory_employee":"Employee share","statutory_employee_help":"Deducted from the employee's gross.","statutory_employer":"Employer share","statutory_employer_help":"Posted as an additional payroll expense.","eosb_title":"End-of-service benefits (EOSB)","eosb_caption":"UAE Labour Law: 21 days/year for first 5 years, 30 days/year thereafter.","eosb_enabled":"Accrue EOSB each pay run","eosb_note":"Accrual is calculated automatically per pay-run entry from the employee's tenure and base salary, and appears as a separate line in the posted journal.","posting_title":"Posting & approval","posting_caption":"Controls what happens when a pay run is approved or posted.","require_approval":"Require manager approval before posting","auto_post":"Automatically create a journal entry when posted","allow_negative_net":"Allow a pay run entry to go negative after deductions","allow_negative_net_help":"When off, a negative net is paid as zero and carried forward to the next pay run.","gl_accounts_note":"Default GL accounts for salary expense and employee payable are configured under Settings → Accounting.","wps_title":"WPS & employee advances","wps_caption":"Employer details printed on the WPS salary file (SIF), and the account that holds staff loans.","mohre_establishment_id":"MOHRE establishment ID","mohre_establishment_id_help":"The 13-digit employer ID on your MOHRE establishment card.","employer_bank_routing_code":"Employer bank routing code","employer_bank_routing_code_help":"9-digit routing (agent) code of the bank that sends the salaries.","employer_bank_account":"Employer bank account / IBAN","employer_bank_account_help":"The account the salaries are paid from.","employee_advance_account":"Employee advances account","employee_advance_account_placeholder":"Select an asset account","employee_advance_account_help":"Debited when a loan is paid out, credited as pay runs recover the instalments.","employee_advance_account_current":"Current: {account}"},"CommissionPolicy":{"no_rule_types":"No rule types available.","tiered_note":"This rule uses tiered rates, which are read-only here.","rate":"Rate","save_failed":"Failed to save commission settings","page_title":"Commissions","page_description":"Configure how the clinic accrues, reverses, and pays commission. Per-staff overrides live on each employee.","enable_title":"Enable commissions","enable_caption":"Master switch. When off, no commission rows are written regardless of any rule.","enabled":"Commissions enabled","defaults_title":"Default percentages","defaults_caption":"Used when a product or service does not define its own commission rate and the staff member has no custom rate.","default_products":"Default for products","default_products_help":"Applied to retail product lines.","default_services":"Default for services","default_services_help":"Applied to services and consultations.","base_title":"Calculation base","base_caption":"Net Sales Revenue (default) is the line total minus discounts and tax. Gross profit subtracts the cost snapshot first.","base":"Base","base_nsr":"Net sales revenue (NSR): gross − discount − tax","base_gross_profit":"Gross profit: NSR − cost snapshot","rules_title":"Who earns commission, and how much","rules_caption":"Turn rules on or off and set the percentage for each one. Off rules don't fire. A custom rate on an employee's profile (HR → Employees) overrides per-product rates and these defaults.","reverse_title":"Reverse commissions automatically","reverse_caption":"Each toggle controls one trigger. When the trigger fires, affected commission rows flip to Reversed. Already-paid rows follow the claw-back mode below.","rev_void":"When an invoice is voided","rev_void_help":"Covers void from any source (cancellation included).","rev_delete":"When an invoice is deleted (soft delete)","rev_refund_full":"When a full refund is issued","rev_refund_partial":"When a partial refund is issued","rev_refund_partial_help":"Off by default. When on, the reversal is pro-rata to the refund.","partial_threshold":"Treat partial refund as full at / above","partial_threshold_help":"If the refund covers this share of the invoice or more, reverse the full commission.","rev_session_cancel":"When a booking session is cancelled","rev_session_missed":"When a session is a no-show / missed","rev_session_missed_help":"Off by default, because many clinics still pay agents for booked but missed sessions.","clawback_title":"If a commission was already paid","clawback_caption":"Controls what happens when a reversal fires for a row that already paid out via payroll.","clawback_mode":"Claw-back mode","clawback_adjustment":"Subtract from the staff's next pay run (default)","clawback_block":"Hold: staff or finance must handle it manually","clawback_ignore":"Do nothing: keep the paid amount","split_title":"Splitting between multiple staff","split_caption":"Allow a single sale or session to credit more than one staff member.","split_allow":"Allow split commissions","split_strategy":"Default split strategy","split_strategy_help":"How to divide a commission when more than one beneficiary is detected.","split_equal":"Equal: split evenly","split_by_role":"By role: weight toward consultant","split_custom":"Custom: set shares per beneficiary","payrun_title":"Pay run behaviour","payrun_caption":"How pending rows, claw-backs, and small amounts behave when payroll runs.","include_pending":"Include pending commissions in the pay run","include_pending_help":"On by default. Pending (earned) commissions flow into the run; HR can exclude individual ones inside it, and approving the run approves them.","negative_net":"Allow a pay run line to go negative after claw-back","negative_net_help":"Off by default. When off, residual claw-back carries to the next pay run.","auto_approve":"Auto-approve below","auto_approve_help":"New commissions at or below this amount approve themselves. Set to 0 to disable.","off_note":"Commissions are turned off. Enable the master switch above to edit defaults and rules.","validation":{"pctRange":"Must be between 0 and 100","nonNegative":"Must be 0 or more"}},"SectionHrLoans":{"description":"Staff loans and salary advances, repaid by monthly deductions in pay runs.","new_loan":"New loan","empty_title":"No loans yet","empty_description":"Record a loan or salary advance and it is deducted automatically from the next pay runs.","filters_title":"Filter loans","any":"Any","employee":"Team member","employee_placeholder":"Select a team member","status":"Status","loan_type":"Type","type_loan":"Loan","type_salary_advance":"Salary advance","status_pending":"Pending approval","status_approved":"Repaying","status_repaid":"Repaid","status_cancelled":"Cancelled","principal":"Amount lent","repaid":"Repaid so far","outstanding":"Outstanding","installments":"Instalments","installments_progress":"{paid} of {total}","start_month":"First repayment month","start_month_help":"The first pay run in this month deducts the first instalment.","repayment":"Repay by","repayment_count":"Number of instalments","repayment_amount":"Fixed monthly amount","installment_count":"Monthly instalments","installment_count_help":"Between 1 and 120. The last instalment absorbs any rounding.","installment_amount":"Monthly instalment","reason":"Reason","reason_placeholder":"e.g. Rent deposit","section_basics":"Loan","section_basics_caption":"The repayment schedule is generated when you save and can be edited until the loan is approved.","tab_details":"Details","tab_schedule":"Schedule","schedule":"Repayment schedule","schedule_empty":"No instalments","installment_settled":"Deducted","installment_open":"Open","settled_in_payrun":"Pay run #{id}","defer":"Defer one month","deferred_toast":"Instalment deferred. Later instalments moved one month.","approve":"Approve & disburse","approve_title":"Approve loan","approve_description":"Books the disbursement (Employee Advances ← bank). Repayments start in the first repayment month.","approved_toast":"Loan approved","approve_forbidden":"You can't approve this. Approval needs the payroll approver role, and the person who created a record can't approve it.","maker_checker_forbidden":"You created this loan, so someone else (e.g. Finance) must approve it.","disbursed_on":"Paid out on","settlement_account":"Paid from account","settlement_account_placeholder":"Payroll settings default","settlement_account_help":"Leave empty to use the settlement account from payroll settings.","cancel_loan":"Cancel loan","cancel_title":"Cancel loan","cancel_description":"An approved loan can only be cancelled before any instalment is deducted; the disbursement is reversed.","cancel_reason":"Cancellation reason","cancelled_toast":"Loan cancelled","close":"Close","action_failed":"Something went wrong. Try again.","approved_by":"Approved by","approved_at":"Approved at","cancelled_by":"Cancelled by","cancelled_at":"Cancelled at","detail":{"entityPlural":"Loans","loanActions":"Loan actions"}},"EosbReport":{"title":"End of service gratuity","description":"Gratuity each team member has earned so far under UAE labour law. Open a row for a final-settlement preview.","export_csv":"Export CSV","export_failed":"Export failed. Try again.","filters":"Filters","filters_title":"Filter gratuity report","as_of":"As of","as_of_help":"Leave empty for today.","as_of_chip":"As of {date}","branch":"Branch","all_branches":"All branches","include_leavers":"Include leavers","include_leavers_help":"Also show people whose last working day has passed.","employees":"Team members","total_accrued":"Total accrued","employee":"Team member","since":"Since {date}","left_on":"left {date}","service_years":"Years of service","service_years_value":"{years} years of service","basic_monthly":"Monthly basic","entitled_days":"Entitled days","gratuity":"Gratuity","notes":"Notes","empty_title":"No gratuity to report","empty_description":"Team members need a hire date and a base salary to accrue gratuity.","warning_no_hired_date":"No hire date","warning_no_basic_salary":"No base salary","warning_under_one_year":"Under 1 year, not yet eligible","warning_capped":"Capped at 24 months' basic","settlement_title":"Final settlement","settlement_preview_note":"Preview only, nothing is booked. Figures use the report's as-of date.","service_title":"Service","hired_date":"Hired","service_end":"Service end","settlement_breakdown":"Settlement","pending_salary":"Unpaid salary","outstanding_loans":"Outstanding loans (deducted)","open_carry_forward":"Carried-forward balance (deducted)","net_settlement":"Net to pay"},"AppDashboardSettingsCampaignRepliesPage":{"metadata_title":"Campaign Replies","metadata_description":"What happens when someone answers a WhatsApp campaign."},"AppDashboardSettingsMessagingDefaultsPage":{"metadata_title":"Messaging Defaults","metadata_description":"Quiet hours, marketing cooldown and opt-out (STOP) words."},"AppDashboardSettingsInboxAutomationPage":{"metadata_title":"Inbox automation","metadata_description":"When conversations close by themselves."},"AppDashboardSettingsMessageTemplatesPage":{"metadata_title":"Message Templates","metadata_description":"WhatsApp, SMS, email and push templates for this clinic."},"AppDashboardSettingsMessageTemplatesNewPage":{"metadata_title":"Build WhatsApp template","metadata_description":"Compose a WhatsApp template and submit it to Meta for approval."},"AppDashboardSettingsMessageTemplatesIdEditPage":{"metadata_title":"Edit WhatsApp template","metadata_description":"Change an approved template and send it back to Meta for review."},"AppDashboardSettingsMessagesQuickReplyPage":{"metadata_title":"Quick Replies","metadata_description":"Saved answers agents insert in the inbox, by team."},"SettingsInboxAutomation":{"title":"Inbox automation","description":"When conversations close by themselves, so the inbox, backlog and agent workload show live work only. A closed chat keeps its owner as history and reopens the moment the customer writes again.","entityName":"Inbox automation settings","idleTitle":"Close quiet conversations","idleCaption":"A chat with no message in either direction for this long is marked resolved.","idleEnabled":"Resolve conversations automatically when they go quiet","idleDays":"Days without any message","idleDaysHelp":"Between 1 and 365 days. 14 is a good default for a clinic.","leadClosedTitle":"Close the chat when the lead is closed","leadClosedCaption":"Keeps chats of finished leads out of agents' open work.","leadClosedEnabled":"Resolve the chat when its lead is marked Lost or Not qualified","leadClosedHelp":"Includes their sub-stages, such as No answer. The chat timeline shows why it was resolved."},"SettingsCampaignReplies":{"title":"Campaign replies","description":"What happens when someone answers one of your WhatsApp campaigns: which replies become leads, which bookings the campaign gets credit for, and how a “no” is respected.","entityName":"Campaign reply settings","leadsTitle":"Replies become leads","leadsCaption":"A button tap or reply to a campaign creates a lead with the campaign as its source, or joins the person's open lead. Opt-outs and “not interested” replies never create a lead.","createLead":"Create a lead when someone replies to a campaign","creditBookings":"Credit bookings after a reply to the campaign","creditBookingsHelp":"On: the campaign competes with your ads and the newest touch wins the booking and the sale. Off: the ad that first brought the customer keeps the credit.","windowTitle":"Attribution window","windowCaption":"How long after a send a reply still counts as an answer to that campaign.","replyWindowDays":"Button taps and quoted replies (days)","replyWindowDaysHelp":"Between 1 and 30 days after the message was sent.","plainWindowHours":"Plain first reply (hours)","plainWindowHoursHelp":"Only the first message after the send counts. 0 = only button taps and quoted replies.","notInterestedTitle":"“Not interested” replies","notInterestedCaption":"When someone answers a campaign with “not interested” or “no thanks”.","notInterestedAction":"What to do","actionOptOut":"Stop sending them marketing (recommended)","actionSkipLead":"Keep them on my lists, just don't create a lead","notInterestedKeywords":"Your own phrases","notInterestedKeywordsPlaceholder":"Type a phrase and press Enter","notInterestedKeywordsHelp":"Add the exact label of your template's “No thanks” button. These add to the platform list below.","platformPhrases":"Always recognised","optOutTitle":"Opt-outs (STOP)","optOutCaption":"Honouring STOP is required by WhatsApp and is always on. Words like “cancel” count only when they answer a campaign, because patients also use them to cancel an appointment.","optOutAlways":"Opt out in any chat","optOutCampaignOnly":"Opt out only when answering a campaign","manageStopWords":"Add your own STOP words","testerTitle":"Test a reply","testerCaption":"Type a reply to see how it will be handled with the settings on this page, including changes you haven't saved yet.","testerSample":"Reply","testerSamplePlaceholder":"e.g. Not interested, thanks","testerInReply":"It answers a campaign message","testerRun":"Test","testerMatched":"Matched: {matched}","testerMatchedPhrase":"Matched a common way of saying it","testerFailed":"Couldn't test the reply. Try again.","outcome_opt_out":"Opts the number out of marketing","outcome_not_interested_opt_out":"Not interested: opts the number out of marketing","outcome_not_interested_skip_lead":"Not interested: no lead is created","outcome_resubscribe":"Opts the number back in to marketing","outcome_create_lead":"Creates or updates a lead for the campaign","outcome_no_action":"No action"},"SettingsMessagingDefaults":{"title":"Messaging defaults","description":"Rules every outbound message follows: quiet hours, how often a customer can get marketing, and your own opt-out (STOP) words.","entityName":"Messaging defaults","quietTitle":"Quiet hours","quietCaption":"No messages go out in this window (your business time zone). Leave both times empty to turn quiet hours off.","quietStart":"Start","quietEnd":"End","quietChannels":"Channels","quietChannelsHelp":"None selected = all channels.","channel_whatsapp":"WhatsApp","channel_sms":"SMS","channel_email":"Email","channel_push":"Push notification","blockTransactional":"Also hold booking and payment messages","blockTransactionalHelp":"Off: reminders and receipts still go out during quiet hours.","cooldownTitle":"Marketing frequency","cooldownCaption":"The minimum gap between two marketing messages to the same customer. Booking and payment messages are never held back.","cooldownDays":"Days between marketing messages","cooldownDaysHelp":"0 = no limit.","stopTitle":"Opt-out (STOP) words","stopCaption":"A reply that is exactly one of these words opts the customer out of marketing. Your words add to the platform list. STOP always works.","stopWords":"Your own words","stopWordsPlaceholder":"Type a word and press Enter","stopWordsHelp":"Add the exact label of your template's “Stop promotions” button, in every language you use.","stopAlways":"Platform words: opt out in any chat","stopCampaignOnly":"Opt out only when answering a campaign","campaignRepliesLink":"Campaign replies","perCustomerHint":"To opt out one specific customer, use Settings → Opt-Out List.","validation":{"quietBothOrNone":"Set both a start and an end, or leave both empty to turn quiet hours off."}},"SectionReviews":{"title":"Patient reviews","description":"Follow up unhappy patients and choose which reviews appear on your website.","searchPlaceholder":"Search by patient name or phone","filters":"Filters","clearAll":"Clear all","viewAll":"All reviews","filterTitle":"Filter reviews","filterFollowUp":"Follow-up","filterFollowUpAny":"Any status","filterApproval":"Public display","filterPendingApproval":"Pending approval only","filterRating":"Rating","filterRatingAny":"Any rating","starsLabel":"{count, plural, one {# star} other {# stars}}","filterDate":"Review date","filterBranch":"Branch","filterBranchPlaceholder":"All branches","filterDoctor":"Doctor","filterDoctorPlaceholder":"All doctors","summaryAverage":"Average rating","summaryTotal":"Total reviews","summaryOpenFollowUps":"Open follow-ups","summaryPendingApproval":"Pending approval","colDate":"Date","colPatient":"Patient","colVisit":"Visit","colRating":"Rating","colComment":"Comment","colReview":"Review","colVisibility":"Website","colFollowUp":"Follow-up","noComment":"No comment","visibilityPrivate":"Private","visibilityPublished":"Published","visibilityPendingApproval":"Awaiting approval","followUpNone":"None","followUpOpen":"Open","followUpContacted":"Contacted","followUpResolved":"Resolved","emptyTitle":"No reviews","emptyHint":"No reviews match these filters.","tabReview":"Review","sectionReview":"Review","sectionModeration":"Follow-up & website","fieldSubmittedAt":"Submitted","fieldVisitDate":"Visit date","fieldService":"Service","fieldDoctor":"Doctor","fieldBranch":"Branch","fieldFollowUpNote":"Follow-up note","fieldFollowedUp":"Last update","followUpNotePlaceholder":"e.g. Called the patient, offered a free review session","followedUpBy":"Updated by {name} on {date}","approveForWebsite":"Show on website","approveHelp":"The patient allowed this review to be shown publicly.","approveNotPublic":"The patient kept this review private, so it can't be published.","save":"Save","discard":"Discard","saved":"Review updated","saveFailed":"Couldn't update the review","entityPlural":"Reviews","entity":"Review"},"ServiceReportCard":{"reportWritten":"Report written","reportNotWritten":"Report not written yet","materialsRecorded":"Materials recorded","noMaterials":"No materials","noOperator":"No operator","discharged":"Discharged","addReport":"Add report","editReport":"Edit report","viewReport":"View report","serviceReport":"Service report","sessionNumber":"Session #{id}","currentSession":"This session"},"ReturnWorkflowDialog":{"inspectTitle":"Inspect returned items","inspectDescription":"Choose what happens to each returned line, then complete the inspection.","processTitle":"Process return","processDescription":"Apply each line's inspection result to stock.","resultLabel":"Inspection result","qtyLabel":"Returned: {qty} {uom}","restockLocationLabel":"Restock to location","noRestockHint":"No line is restocked. Processing records scrap, vendor return or rework only.","resultRequired":"Choose an inspection result for every line.","locationRequired":"Choose the location the restocked items go back to.","inspected":"Inspection completed","processed":"Return processed","failed":"The return could not be updated","cancelButton":"Cancel","inspectButton":"Complete Inspection","processButton":"Process Return","resultRestock":"Restock (good condition)","resultScrap":"Scrap (unusable)","resultReturnToVendor":"Return to vendor","resultRework":"Requires rework"},"MedicalRecordHistory":{"sessionsEntity":"visits","recordsEntity":"medical records","title":"Medical record history","filterLastWeek":"Last week","filterLast30Days":"Last 30 days","filterLast90Days":"Last 90 days","filterLast180Days":"Last 180 days","filterLastYear":"Last year","sortLastSession":"Last session","sortFirstSession":"First session","noSessions":"No sessions found","selectSession":"Select a session to view medical records","noRecordsForSession":"No medical records found for this session","noRecords":"No records","addFromHistory":"Add from history","periodLabel":"Period","sortLabel":"Order","visits":"Visits","noSessionsHint":"Try a longer period.","untitledVisit":"Visit","thisVisit":"This visit"},"ServiceReportMaterials":{"addProducts":"Add products","noProductsYet":"No products added yet","materialsLoadFailed":"The materials list could not be loaded, so it cannot be saved. Ask a colleague with inventory access (nurse or doctor) to record the used materials.","addedMaterials":"Added materials","suggestedMaterials":"Suggested materials","saveReport":"Save report","unit":"Unit","location":"Location","locationAuto":"Automatic","locationOption":"{name} · {qty} available","locationHelper":"Where the stock is taken from. Automatic picks the first place that holds the whole quantity.","overrideReasonLabel":"Reason for quantity change","overrideReasonPlaceholder":"Required: why does the used amount differ from the plan?","noConsumedProducts":"No consumed products listed. Add at least one product, or close without saving to keep the existing records.","justificationRequired":"Add a justification note for \"{name}\". The used quantity differs from the plan.","takenHomeToggle":"Patient took some home","usedOn":"Date","usedOnOutOfRange":"Pick a day from {from} to today","usedOnOutOfRangeToast":"Check the date of {name}: from the visit day to today","takenHomeUsedLabel":"Used in the clinic ({unit})","takenHomeTotal":"Taken from stock: {qty} {unit}","takenHomeQtyLabel":"Taken home ({unit})","takenHomeQtyInvalid":"Enter what was used here (0 or more) and what went home (more than 0).","takenHomeInvalid":"For \"{name}\", enter what was used here and what went home.","exactMaterialFallback":"the exact-tracked material","scanPlaceholder":"Scan barcode to add product…","searchPlaceholder":"Search name, inventory, code","noBarcodeMatch":"No product matches this barcode","productAddedNamed":"Added: {name}","productAdded":"Product added","noProductsFound":"No products found","noAvailableProducts":"No available products","discard":"Discard","stock":"Stock: {quantity}","service":"Service","reportHistory":"Report history","sortByDate":"Date","actions":"Actions","activityFooter":"Activity for this employee in the last 90 days","addProductNamed":"Add {name}","removeProductNamed":"Remove {name}"},"SectionCatalogServices":{"detail":{"entityPlural":"Services","serviceActions":"Service actions","tabs":{"basic-detail":"Basics","clinical-regulatory":"Clinical","booking":"Booking","branch":"Branches","inventory":"Materials","marketing":"Automation","accounting":"Cost & accounting","history":"History"},"basicDetails":"Basic details","serviceName":"Service name","status":"Status","serviceType":"Service type","category":"Category","reference":"SKU / Reference","basePrice":"Base price","priceType":"Price type","duration":"Duration","bufferTime":"Buffer time","shortDescription":"Short description","description":"Description","clinicalRegulatory":"Clinical & regulatory","serviceForm":"Service form","consentForm":"Consent form","careSetting":"Care setting","procedureCode":"Procedure code","procedureCodeSystem":"Procedure code system","regulatoryAuthority":"Regulatory authority","requiresDiagnosis":"Requires diagnosis","requiresLicensedPractitioner":"Requires licensed practitioner","booking":"Booking","onlineBooking":"Online booking","staffRequired":"Staff required","resourceRequired":"Resource required","deviceRequired":"Device required","deviceCategory":"Device category","branch":"Branches","branches":"Branches","allBranches":"All branches","staff":"Staff","inventory":"Materials","materials":"Materials","unknownProduct":"Unknown product","automation":"Automation","smartUpsell":"Smart upsell","upsellServices":"Upsell services","unknownService":"Unknown service","afterCare":"After care","afterCareInstructions":"After care instructions","rebookingReminder":"Rebooking reminder","rebookingBasedOn":"Rebooking based on","rebookingDelay":"Rebooking delay","autoTask":"Auto task","taskBasedOn":"Task based on","taskDelay":"Task delay","taskNote":"Task note","costAccounting":"Cost & accounting","extraServiceCostType":"Extra service cost type","extraServiceCost":"Extra service cost","commissionRate":"Commission rate","consumedProductsCost":"Consumed products cost","totalServiceCost":"Total service cost","revenueAccount":"Revenue account","cogsAccount":"COGS account"},"enums":{"serviceType":{"CLINICAL":"Clinical","NON_MEDICAL":"Non-medical"},"priceType":{"FIXED":"Fixed price","FROM":"Starting from"},"careSetting":{"OUTPATIENT":"Outpatient","INPATIENT":"Inpatient","DAY_CASE":"Day case"},"procedureCodeSystem":{"CPT":"CPT","HCPCS":"HCPCS","LOCAL":"Local","OTHER":"Other"},"triggerFrom":{"from_sales_date":"From sales date","from_last_completed_visit":"From last completed visit","from_last_scheduled_visit":"From last scheduled visit"},"extraServiceCostType":{"percentage":"Percentage of price","fixed":"Fixed amount"}},"list":{"searchPlaceholder":"Search service name & code...","filters":{"title":"Filter Services","category":"Category","serviceCategory":"Service Category","anyCategory":"Any category","status":"Status","active":"Active","inactive":"Inactive","serviceType":"Service Type","priceRange":"Price Range","minPrice":"Min Price","from":"From","maxPrice":"Max Price","to":"To","availability":"Availability","blocked":"Blocked for sale","blockedDescription":"Cart rejects these services.","sellable":"Sellable","sellableDescription":"Cart accepts these services.","chipCategory":"Category: {value}","chipPrice":"Price: {min} - {max}","any":"Any","clinical":"Clinical","nonMedical":"Non-Medical"},"description":"Manage your service catalog, pricing, and scheduling.","emptyTitle":"No services yet","emptyDescription":"Add your first service to get started.","importInstructions":"Required for new rows: name, base_price, default_duration. Optional: code (SKU), cost_price, buffer_minutes, description, category_id, is_clinical, is_active. Existing rows are matched by code.","columns":{"service":"Service","price":"Price","costMargin":"Cost & margin","status":"Status"}},"form":{"productPlaceholder":"Search or create a product","procedureCodePlaceholder":"Search procedure code (optional)","sections":{"cost":"Cost","commission":"Commission","glAccounts":"GL Accounts","booking":"Booking","clinical":"Clinical Service","clinicalCaption":"Turn on for medical / clinical services that need a service form, consent, and procedure coding. Non-clinical services (e.g. cosmetic) can leave this off.","clinicalSetup":"Required Clinical Setup","coverImage":"Cover Image","coverImageCaption":"Main image shown for this service","basics":"Basics","basicsCaption":"All you need to save a service. Everything below has a sensible default.","identification":"Identification","identificationCaption":"Optional internal code.","description":"Description","descriptionCaption":"Customer-facing copy. Shown wherever the service is listed or booked.","gallery":"Gallery","galleryCaption":"Extra photos (before/after, angles)","materials":"Materials","materialsCaption":"Products consumed each time this service is delivered. Their cost becomes the service's cost of goods.","smartUpsell":"Smart Upsell","afterCare":"After Care Instructions","rebooking":"Automatic Rebooking Reminder","autoTask":"Automatic Create Task"},"fields":{"baseServiceCost":"Base Service Cost","baseServiceCostHelper":"Non-stock cost of delivering this service (e.g. an outsourced fee or per-use licence). Leave it empty when the real cost is the products on the Materials tab; those are added separately below.","extraServiceCost":"Extra Service Cost","extraServiceCostHelper":"Overhead beyond consumed materials (e.g. labor, device wear). Use the % / AED toggle to set it as a percentage of the service's base cost or a fixed amount.","consumedProductsCost":"Consumed Products Cost","consumedProductsCostHelper":"Auto-calculated. Total cost of the materials added in the Materials tab (unit cost × quantity).","totalServiceCost":"Total Service Cost","totalServiceCostHelper":"Auto-calculated. What this service costs to deliver: base cost + consumed materials + extra cost.","commissionDefault":"Default Commission Setting","commissionCustom":"Custom Rate","commissionRate":"Custom Commission Rate","commissionRateHelper":"A commission rate specific to this service, overriding the clinic's default rate.","enter":"Enter","revenueAccount":"Revenue Account","revenueAccountHelper":"The income account this service's sales are posted to in accounting. Leave empty to use the default.","cogsAccount":"COGS Account","cogsAccountHelper":"The cost-of-goods-sold account this service's cost is posted to in accounting. Leave empty to use the default.","availableForBooking":"Available for Booking","availableForBookingHelper":"Show this service in the staff appointment picker. Turn off to hide it from booking.","onlineBooking":"Allow Online Booking","requiresStaff":"Staff Required","requiresResource":"Resource Required","requiresDevice":"Requires Device","bufferTime":"Buffer Time","select":"Select","bufferTimeHelper":"Blocked after the appointment for turnaround. Not shown to the patient.","deviceBrand":"Device Brand","deviceBrandPlaceholder":"Choose brand","isClinical":"This is a clinical service","serviceForm":"Service Form","consentForm":"Consent Form","careSetting":"Care Setting","procedureCode":"Procedure Code","uploadFile":"Upload file","serviceName":"Service Name","serviceCategory":"Service Category","choose":"Choose","priceType":"Price Type","priceFixed":"Fixed","priceFrom":"From","sellingPrice":"Selling Price","floorPrice":"Floor Price","floorPriceHelper":"The lowest price the till will accept for this service. Selling below it is blocked at checkout unless someone with an override permission approves it. Leave empty for no floor.","duration":"Duration","durationHelper":"How long the appointment slot is.","visibleIn":"Visible in","visibleInHelper":"Where this service can be sold. The category-level flag still applies.","homecare":"Homecare","discontinued":"Discontinued (blocks new sales, keeps history)","discontinuedHelper":"The service can no longer be added to a new invoice, but past sales stay on record. Use this to retire a service.","sku":"SKU / Reference","skuHelper":"Locked after the first save.","shortDescription":"Short Description","shortDescriptionPlaceholder":"One line, shown in listings and the booking site","serviceDescription":"Service Description","serviceDescriptionPlaceholder":"Write a detailed description of this service","product":"Product","quantity":"Quantity","vendorBilled":"Vendor (billed)","vendorBilledPlaceholder":"Select the vendor to bill for this consumable","lockQtyTooltip":"Prevent operators from changing qty on the service report","lockQty":"Lock qty","vendorBilledTooltip":"No stock deduction: vendor-billed consumable (e.g. device cartridge)","vendorBilledShort":"Vendor-billed","exactUsageTooltip":"Operator records the actual quantity used at session-done before stock is deducted (controlled drugs, high-value injectables). Off = auto-deduct the planned quantity.","exactUsage":"Exact usage","itemNumber":"Item {number}","recommendedServices":"Recommended Services","discount":"Discount","discountPlaceholder":"Percentage %","afterCare":"After Care Instructions","afterCarePlaceholder":"Write a description","reminderBasedOn":"Reminder Based On","sendReminderAfter":"Send Reminder After","days":"Days","basedOn":"Based On","assignee":"Assignee","assigneeHelper":"Required. The task lands on this user when the rule fires.","note":"Note","notePlaceholder":"Write a note"},"banners":{"doubleCost":"This service has a <strong>Base Service Cost</strong> AND consumed materials. The two are added together, so if you entered the material's purchase price here as well, every sale books the cost twice and margin reports will be wrong. Material cost belongs on the Materials tab only. Clear this field unless it is a genuinely separate non-stock cost."},"optionsAria":"Service options","submitAdd":"Add Service","submitUpdate":"Update Service","categoryQuick":{"nameRequired":"Name is required","descriptionRequired":"Description is required","typeNotConfigured":"Service category type is not configured. Contact support.","submitAdd":"Add Service Category","submitUpdate":"Update Service Category","details":"Details","name":"Name","namePlaceholder":"e.g. Facials","description":"Description","descriptionPlaceholder":"What kind of services belong to this category"},"validation":{"titleRequired":"Title is required","serviceNameRequired":"Service name is required","serviceTypeRequired":"Service type is required","basePriceRequired":"Base price is required","durationMin":"Duration must be at least 1 minute","categoryRequired":"Category is required","serviceFormRequired":"Service form is required for clinical services","consentFormRequired":"Consent form is required for clinical services","careSettingRequired":"Care setting is required for clinical services","assigneeRequired":"Assignee is required when automatic task creation is enabled","recommendedRequired":"Recommended service is required","alreadyRecommended":"This service is already recommended"}},"options":{"reinstated":"Service reinstated for sale","discontinued":"Service discontinued","updateFailed":"Could not update the service","reinstate":"Reinstate","discontinue":"Discontinue"}},"SectionAccountingCounterparties":{"detail":{"entityPlural":"Counterparties","counterpartyActions":"Counterparty actions","basics":"Basics","name":"Name","linkedTo":"Linked To","linkedRecord":"Linked Record","business":"Business","branch":"Branch","allBranches":"All branches","controlAccount":"Control Account","status":"Status","externalPayee":"External payee","bankIdentifiers":"Bank Identifiers"},"enums":{"entityType":{"vendor":"Vendor","staff":"Staff / Patient","patient":"Patient"},"identifierType":{"keyword":"Keyword","iban":"IBAN","account_number":"Account number"}},"list":{"searchPlaceholder":"Search counterparty...","columns":{"counterparty":"Counterparty","linkedTo":"Linked To","controlAccount":"Control Account","business":"Business","status":"Status","external":"External"}},"selectVendor":"Select vendor","staffMember":"Staff Member","selectStaffMember":"Select staff member","selectPatient":"Select patient","whoThisCounterpartyIsAnd":"Who this counterparty is and which entity it represents.","entityType":"Entity Type","externalPayeeNoLinkedRecord":"External payee (no linked record)","staff":"Staff","displayName":"Display Name","eGAhmedMohdGhanim":"e.g. Ahmed Mohd. Ghanim Building Materials L.L.C.","eGTradePayablesTrade":"e.g. Trade Payables / Trade Receivables","active":"Active","optionalUsedToAutoMatch":"Optional. Used to auto-match imported bank lines to this counterparty.","type":"Type","accountNumber":"Account Number","value":"Value","eGGoogleAe123456":"e.g. GOOGLE, AE12 3456 7890, 123456789","filterCounterparties":"Filter Counterparties","linkedType":"Linked type","any":"Any","controlAccount":"Control account","anyAccount":"Any account","manageTheDirectoryOfVendors":"Manage the directory of vendors, staff, patients, and external payees used across the ledger.","addYourFirstCounterpartyTo":"Add your first counterparty to start tagging journal lines and bank matches.","validation":{"valueIsRequired":"Value is required","nameIsRequired":"Name is required","nameMustBe255CharactersOr":"Name must be 255 characters or less","selectTheLinkedRecord":"Select the linked record"},"form":{"sections":{"basics":"Basics","bankIdentifiers":"Bank Identifiers"}},"filterOptions":{"active":"Active","activeDescription":"Counterparties available in pickers.","inactive":"Inactive","inactiveDescription":"Hidden from pickers; history kept."},"chips":{"type":"Type: {value}","entity":{"vendor":"Vendor","staff":"Staff / Patient","external":"External payee"},"account":"Account","statusActive":"Status: Active","statusInactive":"Status: Inactive"}},"SectionAccountingMarketingSpendInsights":{"detail":{"entityPlural":"Campaign insights","tabs":{"details":"Details"}},"enums":{"platform":{"google_ads":"Google Ads","meta_ads":"Meta Ads","tiktok_ads":"TikTok Ads","snapchat_ads":"Snapchat Ads","linkedin_ads":"LinkedIn Ads","manual":"Manual","import":"Import","other":"Other"},"source":{"manual":"Manual entry","csv_import":"CSV import","xlsx_import":"Excel import","api_pull":"API pull"}}},"SectionAccountingMarketingSpendReconciliation":{"detail":{"entityPlural":"Reconciliation flags","flagActions":"Reconciliation flag actions"}},"SectionAccountingRecurringJournals":{"detail":{"entityPlural":"Recurring journals","tabs":{"basics":"Basics","lines":"Lines"},"noLines":"No lines on this template","accountFallback":"Account #{id}"},"filterTemplates":"Filter Templates","status":"Status","all":"All","cadence":"Cadence","recurringJournalTemplates":"Recurring Journal Templates","reusableBalancedJournalEntriesSuch":"Reusable balanced journal entries such as rent, insurance, and prepaid amortisation. They are generated on schedule by a daily beat or on demand via Run.","noRecurringTemplates":"No recurring templates","createYourFirstTemplateTo":"Create your first template to automate repetitive entries.","validation":{"invalidAmount":"Invalid amount","aLineMustHaveEitherDebit":"A line must have either Debit OR Credit (not both, not zero).","nameIsRequired":"Name is required","dayMustBeBetween1And":"Day must be between 1 and 28","atLeastTwoLinesAreRequired":"At least two lines are required","totalMustBeGreaterThanZero":"Total must be greater than zero."},"newTemplate":"New Template","form":{"sections":{"basics":"Basics","lines":"Lines"}},"filterOptions":{"active":"Active","inactive":"Inactive","daily":"Daily","weekly":"Weekly","monthly":"Monthly","quarterly":"Quarterly","yearly":"Yearly"}},"SectionSettingsBookingStatuses":{"detail":{"entityPlural":"Booking statuses","bookingStatusActions":"Booking status actions","details":"Details","code":"Code","sortOrder":"Sort order","colors":"Colors","background":"Background","text":"Text"},"entity":"Booking status","title":"Booking Statuses","form":{"parentStatus":"Parent Status","parentStatusHelp":"Optional. Groups this status under a system status in KPI reports.","parentNone":"(None, top level)","identityTitle":"Identity","identityCaption":"The code and display name for this status.","code":"Code","codePlaceholder":"e.g. WAITING","codeHelp":"Uppercase letters, digits and underscores only. Cannot be changed after creation.","name":"Name","namePlaceholder":"e.g. Waiting","nameHelp":"Displayed in the calendar and filter dropdowns.","appearanceTitle":"Appearance","appearanceCaption":"Colors used when rendering this status on the calendar.","backgroundColor":"Background Color","backgroundColorHelp":"Hex color used for the event background.","textColor":"Text Color","textColorHelp":"Hex color used for text on the event tile.","lightColor":"Light Color","lightColorHelp":"Hex color used for lighter accents (e.g. filter chips).","orderingTitle":"Ordering","sortOrder":"Sort Order","sortOrderPlaceholder":"e.g. 10","sortOrderHelp":"Lower numbers appear first. Leave blank for default ordering.","hierarchyTitle":"Hierarchy","hierarchyCaption":"Assign to a parent status so this custom status groups correctly in reports."},"columns":{"name":"Name","system":"System","textColor":"Text Color","sortOrder":"Sort Order"},"list":{"add":"Add booking status","emptyTitle":"No custom booking statuses yet","emptyDescription":"System statuses are pre-configured. Add custom statuses to extend them.","codeSubtitle":"Code: {code}","custom":"Custom","scope":"Scope","color":"Color","order":"Order","children":"Children"}},"SectionAccountingPosting":{"preview":{"entry":"Entry","invoice":"Invoice","customer":"Customer","date":"Date","journal":"Journal"},"importWizard":{"pickModule":"Pick a module first.","templateFailed":"Could not download the template.","chooseFileFirst":"Choose a file to upload.","duplicateFile":"This file was already uploaded. Showing the existing batch.","fileStaged":"File staged. Review the rows, then Validate & Post.","uploadFailed":"Upload failed.","posted":"Posted {rows} row(s) in {groups} group(s).","rowsNeedFixing":"{rows} row(s) need fixing. See the errors below.","nothingToPost":"Nothing new to post.","validatePostFailed":"Validate & Post failed.","title":"Import from Excel / CSV","module":"Module","noModules":"No import modules available","downloadTemplate":"Download template","chooseFile":"Choose file","upload":"Upload","stagedRows":"Staged rows (batch #{id})","status":"Status","error":"Error","rowStatus":{"draft":"Draft","mapped":"Mapped","valid":"Valid","invalid":"Invalid","posted":"Posted","skipped":"Skipped"},"noRows":"No rows.","draftHint":"Rows stay in Draft until you Validate & Post. Re-uploading the same file never double-posts. To fix an invalid row, correct it in the source file and upload again.","startOver":"Start over","validatePost":"Validate & Post","result":"Result","errorRows":"Rows {rows}: {error}","exportEmpty":"No {label} matched the current selection/filters, so there is nothing to export.","exportFailed":"Failed to export {label}.","exporting":"Exporting…","exportSelected":"Export {count} selected (CSV)","exportForReimport":"Export for re-import (CSV)","importLabel":"Import {label}","summaryRowsPosted":"Rows posted","summaryRowsCreated":"Records created","summaryRowsSkipped":"Records skipped","summaryRowsFailed":"Records failed","summaryRowsInvalid":"Invalid rows","pageDescription":"Upload a spreadsheet to create accounting records in bulk. Download the template, fill it in, then validate and post."},"flow":{"readyToPost":"Ready to post","willBePosted":"Invoice <strong>{invoice}</strong> will be posted to <strong>{journal}</strong> on {date}.","immutableNote":"Once posted, this journal entry <strong>cannot be edited or deleted</strong>. Corrections require a separate reversal entry.","resolveIssue":"Resolve the issue above before posting this invoice.","reviewHint":"Review the journal entry that will be created when this invoice is posted.","postingFailed":"Posting Failed","postedSuccessfully":"Posted Successfully","viewJournalEntry":"View Journal Entry","nPosted":"{count} Posted","nFailed":"{count} Failed","invoiceN":"Invoice #{id}","entryN":"Entry #{id}","stepReview":"Review Entry","stepConfirm":"Confirm","stepResult":"Result","postTitle":"Post to Accounting","postTitleWithNumber":"Post to Accounting: {number}","entityName":"Journal Entry","aboutToPost":"You are about to post <strong>{count, plural, one {# invoice} other {# invoices}}</strong> to accounting.","bulkImmutableNote":"Journal entries are immutable once posted. Each invoice is processed independently, so failures do not block others.","noResults":"No results available.","bulkTitle":"Bulk Post to Accounting"},"previewTable":{"account":"Account","debit":"Debit","credit":"Credit","noLinesTitle":"No journal lines","noLinesDescription":"Posting this invoice would not create any ledger lines.","imbalance":"Entry has imbalance. An adjustment will be applied"},"queueColumns":{"paidDate":"Paid Date","invoice":"Invoice","customer":"Customer","branch":"Branch","amount":"Amount","reason":"Reason"}},"SectionCustomerPortal":{"detail":{"date":"Date","time":"Time","duration":"Duration","category":"Category","labOrder":"Lab order","cost":"Cost","yourBalance":"Your balance","discount":"Discount","cashback":"Cashback","validFor":"Valid for","coins":"{count, plural, one {# coin} other {# coins}}"},"portal":{"common":{"retry":"Retry","back":"Back"},"nav":{"home":"Home","sessions":"Sessions","club":"Club","profile":"Profile"},"clubNav":{"wallet":"Wallet","points":"Points","offers":"Offers","referrals":"Referrals"},"home":{"bookSession":"Book Session","mySessions":"My Sessions","walletPoints":"Wallet & Points","medicalTests":"Medical Tests","referFriend":"Refer a Friend","profile":"Profile","welcomeBack":"Welcome back","there":"there"},"sessions":{"title":"My Sessions","book":"+ Book","upcoming":"Upcoming","past":"Past","loadFailed":"Could not load your sessions.","noUpcoming":"No upcoming sessions","noPast":"No past sessions","upcomingHint":"Bookings you make will appear here.","pastHint":"Completed and cancelled sessions will appear here."},"sessionDetail":{"loadFailed":"Could not load this session.","notFound":"Session not found.","reviewTitle":"How was your experience?","reviewDescription":"Share your feedback to help us improve.","submitReview":"Submit Review"},"booking":{"bookFailed":"Could not book this session. Please try again.","title":"Book a session","subtitle":"Pick a service, branch, and available time.","service":"Service","servicePlaceholder":"Choose a service","branch":"Branch","branchPlaceholder":"Choose a branch","date":"Date","availableSlots":"Available slots","pickToSeeSlots":"Pick a service, branch, and date to see availability.","slotsFailed":"Could not load slots for this day.","noOpenings":"No openings on this day. Try another date.","noteOptional":"Note (optional)","notePlaceholder":"Anything the clinic should know","cancel":"Cancel","booking":"Booking…","bookSession":"Book session"},"wallet":{"balance":"Wallet balance","coins":"coins","recentTransactions":"Recent transactions","loadFailed":"Could not load transactions.","empty":"No transactions yet.","transaction":"Transaction"},"points":{"available":"Available points","pts":"pts","history":"Points history","loadFailed":"Could not load points history.","empty":"No points earned yet.","earned":"Points earned","redeemed":"Points redeemed"},"offers":{"title":"Offers","subtitle":"Redeem coins for discounts and cashback.","loadFailed":"Could not load offers.","empty":"No offers right now. Check back soon.","types":{"discount":"discount","cashback":"cashback","offer":"offer"},"valid":"valid {duration}","coins":"coins","detailLoadFailed":"Could not load this offer.","notFound":"Offer not found.","yourCode":"Your code: <strong>{code}</strong>. It is also visible in your purchased offers.","needMoreCoins":"You need {count} more coins to claim this offer.","claiming":"Claiming…","claimed":"Claimed","claimFor":"Claim for {count} coins"},"referrals":{"peopleReferred":"People you've referred","loadFailed":"Could not load referrals.","empty":"No referrals yet. Share your code above.","states":{"converted":"converted","registered":"registered"},"codeGenerating":"Your referral code is being generated. Check back shortly.","shareTitle":"Join me","shareText":"Use my code {code} to sign up","yourCode":"Your referral code","copyLink":"Copy link","shareWithFriend":"Share with a friend","invited":"Invited","joined":"Joined","converted":"Converted"},"medicalTests":{"title":"Medical tests","subtitle":"Your lab and clinical test results.","loadFailed":"Could not load your results.","emptyTitle":"No test results yet","emptyDescription":"Results from your clinic will appear here once they're published.","testResult":"Test result","detailLoadFailed":"Could not load this test.","notFound":"Test result not found.","viewReport":"View full report"},"profile":{"welcome":"Welcome","logout":"Log out","menu":{"edit":"Edit profile","avatar":"Change avatar","addresses":"Addresses","notifications":"Notifications","security":"Security","about":"About","deleteAccount":"Delete account"}},"profileEdit":{"invalidEmail":"Invalid email","saveFailed":"Save failed. Please try again.","firstName":"First name","lastName":"Last name","email":"Email","phone":"Phone","genderLabel":"Gender","gender":{"unspecified":"Prefer not to say","male":"Male","female":"Female"},"dateOfBirth":"Date of birth","cancel":"Cancel","saving":"Saving…","save":"Save"},"security":{"required":"Required","minLength":"At least 8 characters","mismatch":"Passwords don't match","changePassword":"Change password","currentPassword":"Current password","newPassword":"New password","confirmPassword":"Confirm new password","updating":"Updating…","updatePassword":"Update password","activeDevices":"Active devices","signOutAll":"Sign out all","devicesFailed":"Could not load devices.","noDevices":"No active devices.","device":"Device","thisDevice":"This device","lastActive":"Last active {date}","signOutDevice":"Sign out device"},"about":{"appFallback":"App","version":"Version {version}","terms":"Terms of Service","privacy":"Privacy Policy","support":"Contact support"},"addresses":{"title":"Addresses","subtitle":"Saved addresses are used for home-care visits and deliveries.","signIn":"Sign in to manage your addresses."},"account":{"title":"Delete account","description":"This action is permanent. You will lose access to your sessions, wallet, points, and history.","verifyPhone":"Verify your phone number to confirm. We'll send an OTP."},"avatar":{"notImage":"Please select an image file.","tooLarge":"That image is too large. Pick one under 5 MB.","updateFailed":"Could not update avatar.","title":"Choose an avatar","upload":"Upload from device","orPreset":"or pick a preset"},"notifications":{"title":"Notifications","subtitle":"Choose which messages you want to receive.","loadFailed":"Could not load preferences.","empty":"No notification categories available.","notification":"Notification"}}},"SectionSettingsBranches":{"detail":{"resources":{"title":"Resources","emptyTitle":"No resources linked","emptySubtitle":"Devices, staff and rooms linked to this branch show here.","removed":"Removed record","typeDevice":"Device","typeStaff":"Staff","typeSessionSource":"Room / source"},"entityPlural":"Branches","entitySingular":"Branch","branchActions":"Branch actions","activate":"Activate","editBranch":"Edit Branch","tabs":{"details":"Details","availability":"Availability","workSchedule":"Work Schedule","timeBreak":"Breaks","timeOff":"Time Off","resources":"Resources","accounting":"Accounting","history":"History"},"generalInfo":"General Info","name":"Name","slug":"Slug","operationalType":"Operational Type","timeZone":"Time Zone","nation":"Nation","city":"City","mainPolicyConsentTemplate":"Main Policy Consent Template","sheryanFacilityId":"Sheryan Facility ID","onboardingFacilityId":"Onboarding Facility ID","contactDetails":"Contact Details","googleMapLink":"Google Map Link","email":"Email","phoneNumber":"Phone Number","address":"Address","financialInfo":"Financial Info","trn":"TRN","vatPercent":"VAT Percent","baseCurrency":"Base Currency","tax":"Tax","additionalCharge":"Additional Charge","taxRule":"Default tax rule"}},"SectionTasks":{"enums":{"status":{"todo":"To Do","in_progress":"In Progress","in_review":"In Review","done":"Done"},"targetType":{"lead":"Lead","user":"Patient / User","session":"Appointment","invoice":"Invoice","payment":"Payment","vendor":"Vendor"},"priority":{"low":"Low","medium":"Medium","high":"High"}},"detail":{"entityPlural":"Tasks","tabs":{"details":"Details","comments":"Comments","history":"History"},"details":"Details","description":"Description","assignedTo":"Assigned to","dueDate":"Due date","startDate":"Start date","relatedTo":"Related to","followers":"Followers","tags":"Tags","reporter":"Reporter","comments":{"entity":"Comment","title":"Comments","addLabel":"Add a comment","placeholder":"Write a comment here","hint":"Comments help you remember important details about your tasks.","empty":"No comments"}},"list":{"columns":{"task":"Task","assignedTo":"Assigned to","status":"Status","priority":"Priority","dueDate":"Due date","related":"Related to"},"copyId":"Copy ID","idCopied":"Task ID copied","deleteHint":"Delete this task","searchPlaceholder":"Search tasks","filters":"Filters","appliedFilters":"Applied filters:","chips":{"status":"Status: {value}","overdue":"Overdue","tags":"Tags: {count}","branch":"Branch: {value}","reporter":"Reporter: {value}"},"emptyTitle":"No tasks yet","emptyDescription":"Tasks you create or are assigned to show up here.","setStatus":"Set status","setPriority":"Set priority"},"search":{"byTask":"Search by Task...","assignee":"Search and select user..."},"whatNeedsToBeDone":"What needs to be done, who does it, and by when.","title":"Title","eGCallPatientTo":"e.g. Call patient to confirm","assignTo":"Assign To","selectTeamMember":"Select team member","dueDate":"Due Date","relatedTo":"Related To","none":"None","moreDetails":"More Details","optionalStatusSchedulePeopleTo":"Optional: status, schedule, people to keep informed, and notes.","startDate":"Start Date","peopleToNotifyAboutUpdates":"People to notify about updates","selectTags":"Select tags","addNotesOrInstructions":"Add notes or instructions...","assign":"Assign","open":"Open","assignTo2":"Assign to","toDo":"To do","tag":"Tag","overdueOnly":"Overdue only","noTasks":"No tasks","createAndManageTasksFor":"Create and manage tasks for your team"},"SectionCustomerSales":{"packageDetail":{"entityPlural":"Packages","packageTitle":"Package {id}","sessionsRemaining":"Sessions remaining","remainingOfTotal":"{remaining} of {total}","packageInfo":"Package info","branch":"Branch","invoice":"Invoice","dueDate":"Due date","viewSalesDetails":"View sales details","sessionChangeLog":"Session change log","tabs":{"sessions":"Sessions"},"services":"Services","noServices":"This sale has no session services.","used":"{used} of {total} used","booked":"{count, plural, one {# booked} other {# booked}}","bookedLabel":"Booked, not done yet","refunded":"{count} refunded","lines":"{count} lines","left":"{count} left","noneLeft":"None left","note":"Note: {note}","showVisits":"{count, plural, one {Show # visit} other {Show # visits}}","hideVisits":"Hide visits","noDate":"No date","noOperator":"No staff","amountDue":"Still owed","soldOn":"Sold on","backToCredits":"Back to service credits","pageDescription":"What this sale still covers, and the visits that used it."},"packageList":{"title":"Service credits","description":"Sessions patients have paid for and can still book.","entityPlural":"packages","searchPlaceholder":"Search patient or invoice number","searchInvoicePlaceholder":"Search invoice number","filters":"Filters","appliedFilters":"Filters:","filterTitle":"Filter packages","noName":"No name","columns":{"invoice":"Invoice","patient":"Patient","soldOn":"Sold on","sessions":"Sessions","status":"Status"},"sessions":{"left":"{count, plural, =0 {None left} one {# session left} other {# sessions left}}","used":"{used} of {total} used"},"actions":{"openInvoice":"Open invoice","openPackage":"Open package","viewDetails":"View details"},"views":{"ariaLabel":"Package status","all":"All","inProgress":"Sessions left","done":"Fully used","cancel":"Cancelled"},"chips":{"date":"Sold: {range}","patient":"Patient: {name}","branches":"Branches: {count}"},"filter":{"title":"Filter packages","patient":"Patient","selectPatient":"Select patient","soldOn":"Sold on","from":"From","to":"To","branch":"Branch","selectBranch":"Select branch"},"empty":{"title":"No service credits yet","description":"Packages with sessions still to book will appear here.","patientTitle":"No packages yet","patientDescription":"Session packages this patient buys will appear here."}}},"SectionCatalogGiftCards":{"detail":{"entityPlural":"Gift cards","giftCardActions":"Gift card actions","tabs":{"basic-detail":"Basic Detail"},"basicInfo":"Basic Info","name":"Name","pricing":"Pricing","price":"Price","value":"Value","validFor":"Valid for","onlineAvailability":"Online Availability","onlineSales":"Online sales","onlineRedemption":"Online redemption","accounting":"Accounting","liabilityAccount":"Liability account","termsAndConditions":"Terms & Conditions","terms":"Terms"},"enums":{"validFor":{"days":"{count, plural, one {# day} other {# days}}","weeks":"{count, plural, one {# week} other {# weeks}}","months":"{count, plural, one {# month} other {# months}}","years":"{count, plural, one {# year} other {# years}}","unlimited":"Unlimited"}},"list":{"searchPlaceholder":"Search gift cards...","description":"Sell and redeem gift cards at your business.","emptyTitle":"No gift cards yet","emptyDescription":"Add your first gift card to get started.","columns":{"giftCard":"Gift Card","price":"Price","value":"Value","validFor":"Valid For"}},"form":{"fields":{"uploadFile":"Upload file","addGiftCard":"Add gift card","giftCard":"Gift Card","giftCardNumber":"Gift Card {number}","removeGiftCard":"Remove gift card {number}","price":"Price","value":"Value","valuePlaceholder":"E.G. 500","uploadImage":"Upload an image","color":"Color","selectColor":"Select color {color}","imageHelper":"300×300 • Min size 300","imageHint":"500×500 · JPG / PNG · Max 2 MB","onlineSales":"Enable online sales","onlineRedemption":"Enable online redemption","terms":"Terms & Conditions","termsPlaceholder":"Optional terms shown to the customer at purchase","defaultExpiration":"Default Expiration Period","choose":"Choose","liabilityAccount":"Gift Card Liability Account"},"sections":{"values":"Values","expiration":"Expiration","accounting":"Accounting"},"submitAdd":"Add Gift Card","submitUpdate":"Update Gift Card","validation":{"pricePositive":"Price must be a positive number","valuePositive":"Value must be a positive number","durationPositive":"Duration must be a positive number","unitRequired":"Expiration unit is required","imageMax":"Image must be no larger than 2MB","liabilityRequired":"Liability account is required","colorOrImage":"Provide either a color or an image, not both","colorRequired":"Please select a color","orImage":"Or upload an image","giftcardsMin":"At least one gift card is required"}}},"SectionHrEmployee":{"detail":{"entityPlural":"Team members","employeeActions":"Team member actions","tabs":{"generalInfo":"General Info","booking":"Booking","availability":"Availability","timeOff":"Time Off","timeBreak":"Breaks","services":"Services","timesheets":"Timesheets","payroll":"Payroll","commissionEarnings":"Commission earnings","documents":"Documents","offboarding":"Offboarding","history":"History"},"profile":{"activate":"Activate","editTeamMember":"Edit Team Member","addTimeOff":"Add Time Off","licenseNumber":"Lic. no: {number}"},"general":{"sectionGeneralInfo":"General Info","sectionBranchRoles":"Branch & Roles","sectionEmployment":"Employment Timeline","sectionAddress":"Address","firstName":"First Name","lastName":"Last Name","gender":"Gender","nationalId":"National ID","mobile":"Mobile Number","email":"Email","note":"Note","branches":"Branches","teams":"Teams","roles":"Roles","mainRole":"Main Role","bookingCalendar":"Booking Calendar","employmentStartDate":"Employment Start Date","employmentType":"Employment Type","scheduleType":"Schedule Type"},"availability":{"sectionTitle":"Availability","noCustomShift":"No custom shift","breaksCount":"{count, plural, one {# break} other {# breaks}}","notWorking":"Not Working","usesBranchSchedule":"Uses branch schedule.","customShiftsTitle":"Calendar Custom Shifts","customShiftsEmpty":"Using branch schedule by default. Edit the employee to add custom booking shifts."},"timeBreak":{"sectionTitle":"Breaks","noBreak":"No Break","empty":"No staff-specific breaks."},"services":{"sectionTitle":"Services","all":"All current and future services","empty":"No services assigned yet."},"timesheets":{"add":"+ Add","summaryTitle":"Summary","durationHoursMinutes":"{hours}h {minutes}min","durationHours":"{hours}h"},"commissionEarnings":{"noEmployee":"No employee selected.","empty":"No commissions accrued yet.","totalAccrued":"Total accrued (last {count})","fallbackType":"Commission"},"offboarding":{"statusTitle":"Status","lastWorkingDay":"Last working day","reason":"Reason","offboardedAt":"Offboarded at","login":"Login","lastWorkingDayRequired":"Last working day is required.","recorded":"Offboarding recorded.","recordFailed":"Could not record offboarding.","completed":"Offboarding completed. Login disabled.","completeFailed":"Could not complete offboarding.","update":"Update","offboard":"Offboard","disableNow":"Disable now","offboardedAlert":"This team member has been offboarded and can no longer log in.","scheduledAlert":"Login is disabled automatically after the last working day.","futureBookingsTitle":"Future bookings needing reassignment","futureBookingsEmptyTitle":"No future bookings to reassign","futureBookingsEmptySubtitle":"Bookings assigned to this team member after their last working day appear here.","futureBookingsWarning":"{count, plural, one {# future booking is} other {# future bookings are}} still assigned and will need reassignment.","sessionFallback":"Session #{id}","entityName":"Offboarding","dialogTitle":"Offboard {name}","dialogTitleFallback":"Offboard team member","dialogSubtitle":"Record the last working day. Login is disabled automatically after that date.","selectDate":"Select a date","selectReason":"Select a reason","completeTitle":"Disable login now?","completeDescription":"This finalises offboarding immediately and blocks the team member from logging in.","completeConfirm":"Disable login","reinstate":"Reinstate access","reinstateTitle":"Reinstate this employee?","reinstateDescription":"This clears the offboarding date and reason and lets them sign in again.","reinstateConfirm":"Reinstate","reinstated":"Access reinstated","reinstateFailed":"Could not reinstate access","loginDisabledAlert":"Sign-in is switched off for this employee, but no offboarding is recorded."},"roles":{"title":"Roles","manage":"Manage Roles","empty":"No roles assigned. Use Manage Roles to assign one or more.","systemRole":"System role","available":"Available roles","selected":"Assigned roles","save":"Save","saving":"Saving...","search":"Search roles","emptyAvailableTruncated":"More roles exist. Narrow the role list in Settings first.","emptyAvailable":"No more roles to assign","emptySelected":"No roles assigned"},"timeOff":{"sectionTitle":"Time Off","add":"+ Add","addTimeOff":"Add time off","empty":"No time off scheduled.","entityName":"Time off","fallbackTitle":"Time off","edit":"Edit","delete":"Delete","viewReason":"View reason","actions":"Actions","repeats":"Repeats {repeat}","everyDay":"Every day","everyWeekday":"Every {weekday}","everyMonthOnDay":"Every month on day {day}","everyYearOn":"Every year on {date}","allDay":"all day","anchoredSummary":"{cadence} · {when} · from {date}","durationDays":"{count}d","durationHoursMinutes":"{hours}h {minutes}m","durationHours":"{hours}h","durationMinutes":"{minutes}m","transitions":{"submit":"Submit for approval","approve":"Approve","reject":"Reject","cancelRequest":"Cancel request","cancelTimeOff":"Cancel time off"},"rejectDialog":{"submit":"Reject","sectionTitle":"Rejection reason","sectionCaption":"The team member will see this on their request.","reasonLabel":"Reason","reasonPlaceholder":"e.g. Coverage already approved for that week.","reasonRequired":"Reason is required"}},"documents":{"type":"Type","dateUploaded":"Date Uploaded","expiryDate":"Expiry Date","fileSection":"File","detailsSection":"Document details","captionQueue":"Queue this document. It uploads automatically after the team member is created.","captionEdit":"Update the document metadata. The file itself stays the same.","captionCreate":"Upload one or more onboarding or compliance documents for this team member.","category":"Category","selectCategory":"Select category","expiryDateRequired":"Expiry Date *","expiryDateOptional":"Expiry Date (Optional)","documentTitle":"Document Title","documentTitleOptional":"Document Title (Optional)","documentTitlePlaceholder":"e.g. Employment Contract","documentTitleHelper":"Auto-filled from the selected category. Edit if you need a custom name","expiryRequiredHint":"Expiry date is required for this category.","note":"Note","notePlaceholder":"Any additional notes about this document…","updateFailed":"Failed to update document","uploadFailed":"Failed to upload document","save":"Save","upload":"Upload","validation":{"fileRequired":"File is required","fileTooLarge":"File must be 50MB or smaller","categoryRequired":"Category is required","titleRequiredOther":"Document title is required when category is Other","expiryRequired":"Expiry date is required for this category"}},"compliance":{"allGood":"All compliance documents are up to date.","needsAttention":"{count, plural, one {# required document needs attention} other {# required documents need attention}}","missingCount":"{count} missing","expiredCount":"{count} expired","expiringSoonCount":"{count} expiring soon","expired":"Expired","expiringSoon":"Expiring soon","missing":"Missing","expiredOn":"Expired {date}","daysLeft":"{count, plural, one {# day left} other {# days left}}","notUploaded":"Not uploaded"}},"enums":{"gender":{"m":"Male","f":"Female"},"employmentType":{"full_time":"Full Time","part_time":"Part Time","contract":"Contract"},"scheduleType":{"fixed":"Fixed","flexible":"Flexible"},"offboardReason":{"resignation":"Resignation","termination":"Termination","end_of_contract":"End of Contract","retirement":"Retirement","other":"Other"},"commissionRuleType":{"earn_new_invoice_sales_consultant":"New Sale: Consultant","earn_new_invoice_supervisor":"New Sale: Supervisor","earn_upsell_invoice_sales_consultant":"Upsell: Consultant","earn_upsell_invoice_supervisor":"Upsell: Supervisor","earn_cross_sell_invoice_sales_consultant":"Cross-sell: Consultant","earn_cross_sell_invoice_supervisor":"Cross-sell: Supervisor","earn_arrived_consultation_50pct_agent":"Arrived Consultation (≥50%): Agent","earn_arrived_consultation_low_rate_agent":"Arrived Consultation (<50%): Agent","earn_arrived_consultation_50pct_supervisor":"Arrived Consultation (≥50%): Supervisor","earn_arrived_consultation_low_rate_supervisor":"Arrived Consultation (<50%): Supervisor","earn_paid_consultation_agent":"Paid Consultation: Agent","earn_paid_consultation_supervisor":"Paid Consultation: Supervisor","earn_membership_services":"Membership Services","deduct_cashback":"Deduct Cashback","deduct_discounts":"Deduct Discounts","deduct_taxes":"Deduct Taxes (VAT)","deduct_service_cost":"Deduct Service Cost","deduct_product_cost":"Deduct Product Cost","apply_only_fully_paid":"Apply Only on Fully-Paid Invoices"},"repeatType":{"Daily":"Daily","Weekly":"Weekly","Monthly":"Monthly","Yearly":"Yearly","Custom":"Custom"},"complianceDocument":{"emirates_id":"Emirates ID","passport":"Passport","visa":"Work Visa","professional_license":"Professional License"}},"availabilityException":{"entity":"Availability exception","deleted":"Exception removed"},"search":{"timesheets":"Search by team member name or code...","employees":"Search by Name...","services":"Search and select services…"},"form":{"generalInfo":{"addressN":"Address {n}","addressType":"Address Type","addressTypePlaceholder":"Select address type","addressTitle":"Address Title","select":"Select","addressTitles":{"Home":"Home","Office":"Office","Other":"Other"},"country":"Country","countryPlaceholder":"Select country","state":"State","statePlaceholder":"Select state","city":"City","cityPlaceholder":"Select city","zipOptional":"Zip (Optional)","zipPlaceholder":"Enter Zip","address":"Address","addressPlaceholder":"Enter address","firstNamePlaceholder":"Enter first name here","lastNamePlaceholder":"Enter last name here","dateOfBirth":"Date of Birth","emailPlaceholder":"Enter email address","dhaId":"Sheryan (DHA) ID","dhaIdPlaceholder":"Enter Sheryan (DHA) ID","dhaIdHelper":"Required for DHA reporting, or assign a supervising doctor who has one.","supervisingDoctor":"Supervising doctor","supervisingDoctorPlaceholder":"Select a doctor","supervisingDoctorHelper":"DHA reports care by staff without a Sheryan ID under this doctor.","notePlaceholder":"Enter note here","addAddress":"Add Address","teamsPlaceholder":"Multi-select team","branchesPlaceholder":"Multi-select branch","rolesPlaceholder":"Multi-select roles","mainRolePlaceholder":"Select a role","scheduleTypeHelper":"Flexible = no fixed shift; check-in/out is never flagged late.","sectionSecurity":"Security & Access","loginStatus":"Login Status","loginAllowed":"Allowed","loginNotAllowed":"Not Allowed","forceLogout":"Sign out of all devices","forceLogoutConfirmTitle":"Sign out of all devices?","forceLogoutConfirmDescription":"All their open sessions end now. Their access stays on, so they can sign in again.","firstName":"First name","lastName":"Last name","email":"Email","roles":"Roles","branches":"Branches"},"wages":{"title":"Wages & Timesheets","compensation":"Compensation","tracksAttendance":"Track attendance (clock in / clock out)","tracksAttendanceHelper":"Disable for owners, contractors, or staff who don't punch a clock. When off, the check-in / check-out card is hidden for this user.","payType":"Salary type","payTypes":{"salary":"Salary","commission":"Commission","hourly":"Hourly"},"baseSalary":"Base salary","baseSalaryHelper":"Fixed monthly salary used when creating pay runs.","hourlyRate":"Hourly rate","hourlyRateHelper":"Rate per hour, applied to approved attendance hours.","hoursSource":"Hours source","hoursSourceHelper":"Clocked = attendance punches. Scheduled shifts = the assigned shift template.","hoursSources":{"clocked":"Clocked hours","scheduled_shifts":"Scheduled shifts"},"hourlyNeedsAttendance":"Hourly payroll needs attendance tracking to calculate worked hours.","proximityControls":"Proximity controls","proximityHelper":"Applied only while this team member is clocked in.","locationRestriction":"Location restriction","timesheetAutomation":"Timesheet automation","autoClockIn":"Auto clock in","autoClockOut":"Auto clock out","automatedBreak":"Automated break","automation":{"workspace_default":"Workspace default","enabled":"Enabled","disabled":"Disabled"}},"payRuns":{"title":"Pay Runs","manualTitle":"Manual calculation","manualDescription":"The pay run amount is set manually. Timesheets, wages and commissions are not automatically included.","automaticTitle":"Automatic calculation","automaticDescription":"Calculates the amount to pay based on timesheets, earned wages, commissions and tips configured on this team member.","preferredPaymentMethod":"Preferred Payment Method","paymentMethods":{"manually":"Pay Manually","bank_transfer":"Bank Transfer","cash":"Cash"},"calculationMethod":"Calculation of Pay Run","calculationMethods":{"automatic":"Automatic Calculation","manual":"Manual Calculation"},"deductions":"Deductions","deductProcessing":"Deduct payment processing fees","deductProcessingHelper":"Deduct processing fees for items sold by this team member.","deductNewClient":"Deduct new client fees","deductNewClientHelper":"Deduct the new client fee on any new client booking.","deductBooking":"Deduct booking fees","deductBookingHelper":"Deduct fees incurred on bookings with this team member.","portionOfFee":"Portion of fee","portionOfFeeHelper":"Share of the deducted fee charged to this team member (0-100).","recordCashAsPaid":"Record cash payments for sales as ‘paid’ in pay runs","recordCashAsPaidHelper":"Treats cash sales as advances within the pay period for this team member."},"commission":{"title":"Commission","caption":"By default, this team member follows the workspace commission settings.","customize":"Customize","customizeHint":"Turn on “Customize” to set custom commission rates for this team member.","changesApplyNext":"Changes apply from the next pay period and do not affect past payments.","customRate":"Custom rate","customRateHelper":"Overrides the workspace default for this team member.","newInvoices":"New invoices","upsellInvoices":"Upsell invoices","salesConsultant":"Sales consultant","salesConsultantSupervisor":"Sales consultant supervisor","percentHelper":"Percentage (0-100)."},"sections":{"generalInfo":"General Info","bookings":"Bookings","workSchedule":"Work Schedule","timeBreak":"Breaks","services":"Services","shiftAssignments":"Shift Assignments","payroll":"Payroll","wages":"Wages & Timesheets","commission":"Commission","payRuns":"Pay Runs","documents":"Documents","profilePhoto":"Profile Photo","photoFormats":"JPG, PNG or WebP","photoSize":"500 × 500 · max 2 MB"},"validation":{"firstNameRequired":"First name is required.","lastNameRequired":"Last name is required.","emailRequired":"Email is required.","emailInvalid":"Valid email is required.","branchRequired":"Select a branch."},"services":{"title":"Services","caption":"By default, this team member offers all current and future services.","allServices":"All services","allIncluded":"All current and future services are included."},"documents":{"add":"Add document","title":"Documents","caption":"Optional. Queued files upload right after the team member is created.","failedBanner":"The team member was created, but some documents failed to upload. Click <strong>Retry</strong> on each failed row, or remove it to drop it.","emptyTitle":"No documents queued","emptyDescription":"Queue files like a national ID, passport or contract. They upload after the team member is created.","invalidFile":"Invalid file","fileRequired":"At least one file is required","fileTooLarge":"Each file must be 50 MB or smaller","categoryRequired":"Category is required","addToQueue":"Add to queue","status":{"pending":"Queued","uploading":"Uploading","success":"Uploaded","error":"Failed"},"retryUpload":"Retry upload","uploadFailed":"Upload failed"},"timeBreak":{"title":"Breaks","noBreak":"No Break","addBreak":"Add break","removeBreak":"Remove break"},"workSchedule":{"branchNameSchedule":"{name} schedule","branchSchedule":"Branch schedule","inheritedHint":"Working hours are inherited from the selected branch. Switch to Custom to set a personal schedule.","calendarTitle":"Calendar","calendarCaption":"Control whether this employee appears as a bookable operator on the booking calendar.","showOnCalendar":"Show on booking calendar","showOnCalendarHelper":"When off, this employee will not appear in the staff calendar view.","availabilityTitle":"Availability","useScheduleFrom":"Use schedule from","shiftTemplates":"Shift templates","defaultSuffix":"(default)","custom":"Custom","templateHint":"Filled from the selected shift template. Adjust any day below as needed.","customHint":"Set custom availability for this employee."},"shiftAssignments":{"alwaysActive":"Always active","ongoing":"ongoing","shiftFallback":"Shift #{id}","primary":"Primary","priorityN":"priority {n}","entityName":"Shift Assignment","title":"Shift Assignments","caption":"Assign reusable shifts to this staff member. The primary assignment drives their booking availability.","noTemplates":"No selectable shift templates yet. Create them under Settings → HR → Shift Templates.","shiftTemplate":"Shift template","effectiveFrom":"Effective from","effectiveTo":"Effective to (optional)","primaryShift":"Primary shift","priority":"Priority","priorityHelper":"Higher wins when assignments overlap.","assign":"Assign shift","loading":"Loading assignments…","empty":"No shifts assigned yet, so this staff member falls back to the branch/default shift.","assigned":"Shift assigned","assignFailed":"Failed to assign shift","removed":"Assignment removed","removeFailed":"Failed to remove assignment"}},"timesheetsList":{"columns":{"teamMember":"Team Member","date":"Date","clockInOut":"Clock In/Out","breaks":"Breaks","hoursWorked":"Hours Worked","status":"Status","review":"Review"},"licenseNo":"Lic. no: {number}","idN":"ID: {id}","breakDuration":"{time} min","status":{"checked_in":"Clocked In","in_progress":"Clocked In","checked_out":"Clocked Out","on_break":"On Break","on_leave":"On Leave","not_clocked_in":"Not Clocked In","absent":"Absent","late":"Late"},"review":{"not_required":"OK","pending":"Pending Review","approved":"Approved","rejected":"Rejected"},"filterStatus":{"checked_in":"Checked In","checked_out":"Checked Out","on_break":"On Break","not_clocked_in":"Not Clocked In","on_leave":"On Leave"},"actions":{"approveCheckIn":"Approve check-in","rejectCheckIn":"Reject check-in","clockIn":"Clock In","endBreak":"End Break","clockOut":"Clock Out","entityLabel":"Timesheet"},"chips":{"roles":"Roles","lateOver":"Late > {min} min","workedUnder":"Worked < {hours}h"},"filters":{"title":"Filter Timesheets","dateRange":"Date Range","from":"From","to":"To","branch":"Branch","anyBranch":"Any branch","attendanceStatus":"Attendance Status","any":"Any","role":"Role","anyRole":"Any role","reviewStatus":"Review Status","lateness":"Lateness","lateOverLabel":"Arrived more than (minutes) late","lateOverPlaceholder":"e.g. 15","workingHours":"Working Hours","workedUnderLabel":"Worked less than (hours)","workedUnderPlaceholder":"e.g. 8"},"view":{"title":"Timesheets","description":"Track attendance and review entries recorded without location.","exportFailed":"Export failed. Please try again.","noDataTitle":"No timesheets found","noDataDescription":"No attendance records match the selected day and filters.","bulkActions":"Actions","bulkActionsAria":"Attendance review actions","filters":"Filters","export":"Export","rejectTitle":"Reject {count, plural, one {# attendance entry} other {# attendance entries}}?","reasonOptional":"Reason (optional)","reasonPlaceholder":"e.g. Location could not be verified, please re-clock from the branch.","reject":"Reject"},"force":{"thisTeamMember":"this team member","noteOptional":"Note (optional)","notePlaceholder":"e.g. Clocked in on their behalf, device was offline.","confirm":"Confirm","check_in":{"title":"Clock in {name}?","content":"This will clock them in now, on their behalf. No location check is applied.","confirm":"Clock In"},"end_break":{"title":"End break for {name}?","content":"This will end their active break and resume their shift.","confirm":"End Break"},"clock_out":{"title":"Clock out {name}?","content":"This will clock them out. Their total hours will be calculated up to now.","confirm":"Clock Out"}}},"timeOff":{"list":{"status":{"draft":"Draft","submitted":"Submitted","approved":"Approved","rejected":"Rejected","cancelled":"Cancelled"},"durationDays":"{n}d","durationHoursMinutes":"{h}h {m}m","durationHours":"{h}h","durationMinutes":"{m}m","repeats":"Repeats {pattern}","edit":"Edit time off","delete":"Delete time off","hideReason":"Hide reason","viewReason":"View reason","add":"Add time off","emptyTitle":"No time off to display"}},"employeeAccess":{"reportingIdMissing":"Bookings with this person will be refused at a branch that reports to DHA. Add their Sheryan (DHA) ID, or a supervising doctor who has one. Turn off calendar booking if they do not treat patients.","state":{"allowed":"Can sign in","temporary":"Access until {date}","leaving":"Leaving {date}","no_login":"No sign-in","suspended":"Suspended","expired":"Access ended","offboarded":"Offboarded"},"actions":{"suspend":"Suspend access","restore":"Restore access","giveLogin":"Give sign-in access","temporary":"Give temporary access","changeEndDate":"Change access end date","removeEndDate":"Remove end date","signOut":"Sign out of all devices","offboard":"Offboard"},"restoreBlocked":"Cancel the offboarding before giving access.","suspendDialog":{"title":"Suspend access for {name}?","titleFallback":"Suspend access?","description":"They cannot sign in from now on and every open session ends. Their records, schedule and pay stay as they are.","reason":"Reason","reasonPlaceholder":"Why is access being suspended?","upcoming":"{count, plural, one {# upcoming booking is} other {# upcoming bookings are}} still assigned to this person. You can see them on the Offboarding tab."},"temporaryDialog":{"title":"Temporary access","description":"They can sign in through this date. Access closes by itself after that.","date":"Access until","dateRequired":"Choose the last day of access.","save":"Save"},"toast":{"suspended":"Access suspended and sessions ended.","restored":"Access restored.","updated":"Access updated.","failed":"Access could not be changed."},"summary":{"bookings":"Bookings","title":"System access","status":"Status","until":"Access until","suspendedOn":"Suspended on","suspendedBy":"Suspended by","reason":"Reason","missing":"HR details to complete"},"missing":{"employment_type":"Employment type","hired_date":"Employment start date","mobile":"Mobile","email":"Email"},"hr":{"column":"HR details","incomplete":"Incomplete","filter":"HR details","any":"Any","incompleteOnly":"Incomplete only","chip":"HR details incomplete"},"bulk":{"suspend":"Suspend","restore":"Restore","signOut":"Sign out","suspendTitle":"Suspend access for {count, plural, one {# person} other {# people}}?","suspendBody":"They cannot sign in from now on and every open session ends.","restoreTitle":"Restore access for {count, plural, one {# person} other {# people}}?","restoreBody":"They can sign in again. Anyone without a login gets an invite.","signOutTitle":"Sign out {count, plural, one {# person} other {# people}}?","signOutBody":"Open sessions end now. Their access stays on.","done":"{count, plural, one {# person updated.} other {# people updated.}}","refused":"{count, plural, one {# person was skipped:} other {# people were skipped:}} {reasons}"},"form":{"access":"System access","accessAllowed":"Can sign in, send invite","accessNone":"No sign-in","until":"Access until (optional)","untilHelper":"Leave empty for access with no end date.","manageHint":"Suspend, restore or time-limit access here. These save straight away, without the rest of the form."},"quickAdd":{"action":"Quick add","title":"Quick add team member","subtitle":"Only what is needed to sign in. HR can complete the rest later.","submit":"Add and send invite","created":"Team member added and invite sent."}},"employeesList":{"columns":{"teamMember":"Team Member","mainRole":"Main Role","branch":"Branch","documents":"Documents","status":"Status","access":"Access","lastLogin":"Last sign-in"},"licenseNo":"Lic. no: {number}","idN":"ID: {id}","active":"Active","inactive":"Inactive","chips":{"roles":"Roles","branch":"Branch: {name}"},"title":"Team Management","description":"Manage team member profiles, roles, and branch assignments.","addNew":"Add New","filters":"Filters","appliedFilters":"Applied Filters:","filterTitle":"Filter Team Members","role":"Role","selectRole":"Select role","access":{"allowed":"Can sign in","offboarded":"Offboarded","loginDisabled":"Sign-in disabled","leavingOn":"Leaving {date}"},"neverLoggedIn":"Never signed in","loginAccess":"Sign-in access","anyAccess":"Any","offboardingState":"Offboarding","anyOffboarding":"Any","offboardingScheduled":"Offboarding scheduled","noRecentLogin":"No recent sign-in","anyLogin":"Any","noLoginForDays":"No sign-in for {days}+ days"},"employeeInfo":{"firstName":"First Name","lastName":"Last Name","phoneNumber":"Phone Number","email":"Email","gender":"Gender","role":"Role","branches":"Branches","nationalId":"National ID","dhaId":"Sheryan (DHA) ID","dhaIdHelper":"Required for DHA reporting, or assign a supervising doctor who has one.","isActive":"Is Active"},"hrTabs":{"teamMemberInfo":"Team Member Info","booking":"Booking","ariaLabel":"Team Member tabs"},"newBooking":{"availability":"Availability","time-off":"Time Off","time-break":"Breaks","notAvailable":"Not available","noBreak":"No break"},"bookingView":{"noStaffTitle":"No Staff Selected","noStaffDescription":"Please select a staff member to view their availability","loadFailedTitle":"Failed to load availability data","loadFailedDescription":"Please try refreshing the page or contact support if the problem persists.","ariaLabel":"Staff availability booking view","defaultAvailability":"Default Availability","noPlanTitle":"No Plan available","noPlanDescription":"Please create a new plan to get started","setAvailability":"Set Availability","close":"Close","availableSources":"Available Sources","availableServices":"Available Treatments & Services"},"slotValidation":{"startTimeRequired":"Start time is required","endTimeRequired":"End time is required","endAfterStart":"End time must be after start time","noOverlap":"Time slots cannot overlap","saving":"Saving...","saveChanges":"Save Changes"},"payrunValidation":{"startRequired":"Start date is required","endRequired":"End date is required","endAfterStart":"End date must be after start date"},"loanValidation":{"employeeRequired":"Employee is required","startMonthRequired":"Start month is required","amountAboveZero":"Enter an amount above 0","installmentRange":"1-120"}},"SectionCatalogMemberships":{"detail":{"entityPlural":"Memberships","membershipActions":"Membership actions","tabs":{"basic-detail":"Basic Detail","accounting":"Accounting","history":"History"},"basicInfo":"Basic Info","name":"Name","description":"Description","pricing":"Pricing","validFor":"Valid for","price":"Price","servicesAndSessions":"Services and Sessions","includedServices":"Included services","discount":"Discount","sessions":"Sessions","maxSessions":"Max sessions","termsAndConditions":"Terms & Conditions","terms":"Terms","accounting":"Accounting","onlineSales":"Online sales","onlineRedemption":"Online redemption","commissionRate":"Commission rate","commissionDefault":"Default","revenueAccount":"Revenue account","cogsAccount":"COGS account"},"enums":{"validForUnit":{"days":"Days","weeks":"Weeks","months":"Months","years":"Years","unlimited":"Unlimited"},"sessions":{"unlimited":"Unlimited","limited":"Limited"},"commissionSetting":{"default":"Default Commission Setting","custom":"Custom Rate"},"validFor":{"days":"{count, plural, one {# day} other {# days}}","weeks":"{count, plural, one {# week} other {# weeks}}","months":"{count, plural, one {# month} other {# months}}","years":"{count, plural, one {# year} other {# years}}","unlimited":"Unlimited"}},"list":{"searchPlaceholder":"Search memberships...","filters":{"title":"Filter Memberships","sessions":"Sessions","validFor":"Valid for"},"description":"Create and manage membership plans for your clients.","emptyTitle":"No memberships yet","emptyDescription":"Add your first membership plan to get started.","columns":{"membership":"Membership","sessions":"Sessions","validFor":"Valid For","price":"Price"}},"form":{"servicesPlaceholder":"Search services","sections":{"basicInfo":"Basic Info","basicInfoCaption":"Name and a short description clients will see.","pricing":"Pricing & Validity","pricingCaption":"How much the membership costs and how long it stays valid.","services":"Services & Sessions","servicesCaption":"Which services are included and how many sessions clients get.","terms":"Terms & Conditions","termsCaption":"Optional terms shown to clients at purchase.","online":"Online Sales & Redemption","onlineCaption":"Where and how clients can buy and use this membership online.","commission":"Commission","commissionCaption":"How staff commission is calculated for this membership.","coa":"Chart of Accounts Mapping","coaCaption":"Optional GL accounts for revenue and cost of goods sold."},"fields":{"name":"Membership Name","namePlaceholder":"Enter membership name","description":"Description","descriptionPlaceholder":"Write a brief description of this membership","validFor":"Valid for","validForPlaceholder":"e.g. 6","price":"Price","pricePlaceholder":"e.g. 500","includeAllServices":"Include all services","includeAllServicesHelper":"On: the card covers every service. Off: choose services one by one.","includedServices":"Included services","cardDiscount":"Card discount","cardDiscountHelper":"A single discount applied to every included service when this card is redeemed.","sessions":"Sessions","maxSessions":"Max sessions","maxSessionsPlaceholder":"Enter maximum","maxSessionsHelper":"Maximum number of sessions this membership can be used for. Once reached, it can no longer be applied to invoices.","terms":"Terms & Conditions (Optional)","termsPlaceholder":"Write","onlineSales":"Enable online sales","onlineSalesHelper":"Clients can purchase this membership online","onlineRedemption":"Enable online redemption","onlineRedemptionHelper":"Clients can use this membership to book services online","commissionRate":"Custom Commission Rate","commissionRatePlaceholder":"Enter","commissionRateHelper":"Staff commission for selling this membership (0-100%).","revenueAccount":"Revenue Account","cogsAccount":"COGS Account"},"cover":{"title":"Cover","image":"Image","color":"Color","upload":"Click or drag to upload","hint":"500×500 · JPG / PNG · Max 2 MB","selectColor":"Select cover color {color}"},"optionsAria":"Membership options","submitAdd":"Add Membership","submitUpdate":"Update Membership","validation":{"nameRequired":"This field is required.","validityRequired":"Enter a validity period (1 or more)","maxSessionsRequired":"Enter the maximum number of sessions (1 or more)","commissionRequired":"Enter a commission rate","commissionRange":"Commission rate must be between 0 and 100"}}},"SectionCatalogProducts":{"detail":{"entityPlural":"Products","productActions":"Product actions","basicDetails":"Basic Details","productName":"Product Name","status":"Status","skuReference":"SKU / Reference","barcode":"Barcode","category":"Category","brand":"Brand","unitOfMeasure":"Unit of Measure","basePrice":"Base Price","canBeSoldToPatients":"Can Be Sold to Patients","shortDescription":"Short Description","description":"Description","inventory":"Inventory","requiresExpiryDate":"Requires Expiry Date","trackingMethod":"Tracking Method","lowStockNotifications":"Low Stock Notifications","supplier":"Supplier","drugInformation":"Drug Information","requiresPrescription":"Requires Prescription","dosageForm":"Dosage Form","routeOfAdministration":"Route of Administration","accounting":"Accounting","salesChannels":"Sales Channels","purchasePolicy":"Purchase Policy","commissionSetting":"Commission Setting","commissionRate":"Commission Rate","costPrice":"Cost Price","costEffectiveFrom":"Cost Effective From","revenueAccount":"Revenue Account","cogsAccount":"COGS Account","inventoryAssetAccount":"Inventory Asset Account","tabs":{"basic-info":"Basics","inventory":"Stock & supply","drug":"Drug info","accounting":"Sales & accounting","suppliers":"Suppliers & Rules","packaging":"Packaging","history":"History"},"packaging":{"addUnit":"Add unit","entity":"Packaging","units":"Units","emptyTitle":"No packaging units","emptyWithBase":"This product is stocked in {unit}. Add a unit if it is bought or sold in another, like a box of 60 or a pen of 15.","emptyNoBase":"Set a base unit on this product first. Packaging is measured against it.","conversion":"1 {uom} = {qty} {base}","unitFallback":"unit","default":"Default","updated":"Packaging updated","added":"Packaging added","editTitle":"Edit packaging","addTitle":"Add a packaging unit","dialogDescription":"Enter how many {unit} are in ONE of the unit you pick.","unit":"Unit","unitPlaceholder":"Box, pen, vial…","basePerUnit":"{unit} per unit","baseUnitsPerUnit":"Base units per unit","stockWarningTitle":"This product already holds stock","stockWarningBody":"On hand is {qty}, which today means {qty} {packagingUnit}. Once this packaging exists the same number reads as {qty} {baseUnit}. The real figure would be {suggestedQty} {baseUnit}. Correct it with a stock count after saving, so the change lands with an auditable adjustment.","unitsFallback":"units","baseUnitsFallback":"base units","defaultHelp":"Stock quantities show in this unit. Only one unit per product can be the default.","setDefault":"Set as default","defaultSet":"Default unit updated"},"suppliers":{"vendorFallback":"Vendor #{id}","brandFallback":"Brand #{id}","primary":"Primary","batchRequired":"Batch required","inactive":"Inactive","sku":"SKU: {value}","dose":"Dose: {value}","molecule":"Molecule: {value}","route":"Route: {value}","vendor":"Vendor: {value}","cost":"Cost:","minSale":"Min sale:","lead":"Lead: {value}","fullBodyOk":"Full-body ok","fullBodyBlocked":"Full-body blocked","multiAreaOk":"Multi-area ok","multiAreaBlocked":"Multi-area blocked","probesPerArea":"Probes / area: {value}","cyclesPerArea":"Cycles / area: {value}","duration":"Duration: {value}","suppliersTitle":"Suppliers","suppliersEmptyTitle":"No suppliers attached yet","suppliersEmptySubtitle":"Add one from Django admin (or the upcoming inline editor) so the cart can resolve dose / molecule / batch and the per-vendor billing report has data.","deviceRulesTitle":"Device rules","deviceRulesEmptyTitle":"No device rules configured","deviceRulesEmptySubtitle":"Attach a probe / cycle / full-body rule from Django admin so the cart can enforce the truFlex-style math at sale time."},"isControlled":"Controlled medicine"},"enums":{"trackingMethod":{"NONE":"No Tracking","LOT":"Batch/Lot","SERIAL":"Serial"},"salesChannel":{"online":"Online","home_service_delivery":"Home Service / Delivery","in_clinic":"In-Clinic"},"purchasePolicy":{"OPEN_PURCHASE":"Open Purchase","REQUIRES_PRESCRIPTION":"Requires Prescription","REQUEST_ONLY":"Request Only"},"commissionSetting":{"default":"Default Commission Setting","custom":"Custom Rate"},"dosageForm":{"tablet":"Tablet","capsule":"Capsule","syrup":"Syrup","suspension":"Suspension","injection":"Injection","infusion":"Infusion","drops":"Drops","powder":"Powder","cream":"Cream","ointment":"Ointment","gel":"Gel","lotion":"Lotion","spray":"Spray","paste":"Paste","patch":"Patch","granules":"Granules","suppository":"Suppository","inhaler":"Inhaler","solution":"Solution","emulsion":"Emulsion","shampoo":"Shampoo","troche":"Troche","film":"Film","enema":"Enema","iud":"IUD","implant":"Implant","powder_injection":"Powder for Injection","solution_injection":"Solution for Injection","syringe":"Syringe","softgel":"Softgel","pellet":"Pellet","odt":"Orally Disintegrating Tablet","buccal":"Buccal","sublingual":"Sublingual","nasal_spray":"Nasal Spray","eye_drops":"Eye Drops","ear_drops":"Ear Drops","transdermal":"Transdermal","foam":"Foam","powder_suspension":"Powder for Suspension","chewable":"Chewable","oral_granules":"Oral Granules","mouthwash":"Mouthwash","other":"Other"}},"list":{"searchPlaceholder":"Search product name & code...","filters":{"title":"Filter Products","category":"Category","productCategory":"Product Category","anyCategory":"Any category","status":"Status","active":"Active","activeDescription":"Products available for sale.","inactive":"Inactive","inactiveDescription":"Deactivated products.","priceRange":"Price Range","minPrice":"Min Price","from":"From","maxPrice":"Max Price","to":"To","availability":"Availability","blocked":"Blocked for sale","blockedDescription":"Cart rejects these products.","sellable":"Sellable","sellableDescription":"Cart accepts these products.","rxForced":"Rx forced (override)","rxForcedDescription":"Override category: always requires prescription.","rxExempt":"Rx exempt (override)","rxExemptDescription":"Override category: exempt from prescription.","channelVisibility":"Channel visibility","visibleEmr":"Visible in EMR","hiddenEmr":"Hidden in EMR","visibleApp":"Visible in customer app","hiddenApp":"Hidden in customer app","visibleHomecare":"Visible on homecare","hiddenHomecare":"Hidden on homecare","chipCategory":"Category: {value}","chipPrice":"Price: {min} - {max}","any":"Any","notBlocked":"Not blocked","rxForcedShort":"Rx forced","rxExemptShort":"Rx exempt"},"description":"Manage your product catalog, pricing, and availability.","emptyTitle":"No products yet","emptyDescription":"Add your first product to get started.","importInstructions":"Required for new rows: name, base_price. Optional: code (SKU), cost_price, description, category_id, barcode, is_active. Existing rows are matched by code."},"form":{"categoryPlaceholder":"Search category","brandPlaceholder":"Search or create brand","uomPlaceholder":"Search unit of measure","sections":{"sales":"Sales","commission":"Commission","cost":"Cost","glAccounts":"GL Accounts","glAccountsCaption":"Cost of goods is not set here. It comes from the product's Inventory Category on the Stock & supply tab, which also sets the costing method.","basics":"Basics","basicsCaption":"All you need to save a product. Everything below has a sensible default.","channels":"Where it can be sold","channelsCaption":"Which surfaces show this product, and whether the till may sell it at all.","identification":"Identification & packaging","identificationCaption":"SKU, barcode, unit and brand. Optional; the SKU auto-generates from the name.","description":"Description","descriptionCaption":"Customer-facing copy. Shown wherever the product is listed for sale.","gallery":"Gallery","galleryCaption":"Extra photos beyond the main image.","drug":"Drug / Medication","drugCaption":"Turn on for medication and pharmacy items that need prescription rules, a dosage form, and HIE coding. Consumables and retail products can leave this off.","drugInfo":"Drug Information","productImage":"Product Image","usage":"How this product is used","usageCaption":"Whether it is sold to patients, consumed internally in services, or both.","stockTracking":"Stock tracking","stockTrackingOn":"This product appears in GRN, transfers and stock counts, and stock is deducted on sale.","stockTrackingOff":"Off: no stock is kept for this product. Turn on to manage quantities.","openingStock":"Opening stock per branch","openingStockCaption":"Optional. Set starting quantities and reorder levels. You can also do this later from Inventory."},"fields":{"salesChannels":"Sales Channels","multiSelect":"Multi-Select","salesChannelsHelper":"Where patients can buy this product.","purchasePolicy":"Purchase Policy","choose":"Choose","commissionRate":"Custom Commission Rate","enter":"Enter","purchaseCost":"Purchase Cost","costPlaceholder":"e.g. 500","purchaseCostHelper":"What you pay the supplier, not what you charge. Drives cost of goods and margin.","costEffectiveFrom":"Cost Effective From","costEffectiveFromHelper":"Optional. The date this cost starts applying.","revenueAccount":"Revenue Account","revenueAccountHelper":"Where this product's sales post. Leave empty to use the clinic default.","productName":"Product Name","productNamePlaceholder":"e.g. Vitamin C Serum 30ml","sellingPrice":"Selling Price","sellingPriceHelper":"List price before any discounts.","floorPrice":"Floor Price","floorPriceHelper":"The lowest price the till will accept for this product. Selling below it is blocked at checkout unless someone with an override permission approves it. Leave at 0 to skip a product-level floor; the strictest floor across supplier, product, and category still applies.","productCategory":"Product Category","productType":"Product Type","visibleIn":"Visible in","visibleInHelper":"The category-level flag still applies (effective = product AND category).","homecare":"Homecare","onlineStore":"Available in Online Store","discontinued":"Discontinued (blocks new sales, keeps history)","discontinuedHelper":"The product can no longer be added to a new invoice, but past sales stay on record. Use this to retire a SKU.","sku":"SKU","skuPlaceholder":"e.g. PRD-001","skuHelper":"Auto-generated from the product name. Locked after the first save.","brand":"Brand","uom":"Unit of Measure","requiresBarcode":"Requires barcode for scanning","requiresBarcodeHelper":"When on, this product must be scanned at the till, so a barcode becomes mandatory.","barcode":"Barcode / GTIN","shortDescription":"Short Description","shortDescriptionPlaceholder":"One line, shown in listings and exports","productDescription":"Product Description","productDescriptionPlaceholder":"Describe the product: what it is, what it's for, how it's used…","productDescriptionHelper":"Supports formatting: headings, bold, lists and links.","isDrug":"This product is a drug / medication","requiresPrescription":"Requires Prescription","prescriptionOverride":"Prescription requirement override","inherit":"Inherit","prescriptionOverrideHelper":"Override the category's prescription rule for this product.","inheritCategory":"Inherit from category","alwaysPrescription":"Always require prescription","neverPrescription":"Never require prescription (exempt)","dosageForm":"Dosage Form","route":"Route of Administration","select":"Select","hieCoding":"HIE Coding (NABIDH / Malaffi)","genericName":"Generic Name (INN)","genericNamePlaceholder":"e.g. Botulinum toxin type A","ddcCode":"DDC Code","ddcCodePlaceholder":"NABIDH Dubai Drug Code","snomedCode":"SNOMED CT Code","snomedPlaceholder":"e.g. 373748009","atcCode":"ATC Code","atcCodePlaceholder":"e.g. M03AX01","uploadFile":"Upload file","productSource":"Product Source","sourceRetail":"Retail (sold to patient)","sourceSupply":"Supply (internal consumable only)","sourceBoth":"Both (sold & consumed in services)","supplier":"Supplier","canBeSold":"Can Be Sold to Patients","canBeSoldHelper":"Turn off for internal-supply items consumed only in services. Must agree with Product Source: a Supply product cannot be sold to patients.","trackInventory":"Track in Inventory","trackInventoryLocked":"Lot/Serial-tracked products are always managed in inventory, so this stays on.","trackingMethod":"Inventory Tracking","trackingMethodHelper":"Sets stock granularity only. “No Tracking” still keeps stock movements (GRN / transfer / count); it just skips per-lot/serial tracking.","inventoryCategory":"Inventory Category","inventoryCategoryHelper":"Sets the costing method + GL accounts used when this product's stock moves.","saleWithoutStock":"Sale Without Stock","inheritSettings":"Inherit (from settings)","alwaysAllow":"Always allow (no stock check)","alwaysRequireStock":"Always require stock","requiresExpiry":"Requires Expiry Date","requiresExpiryHelper":"Set Inventory Tracking to Lot or Serial first. Expiry is recorded per batch.","explicitDelivery":"Requires Explicit Delivery","explicitDeliveryHelper":"When on, a paid invoice defers stock deduction until the item is marked as delivered.","clinicHolds":"Clinic holds this for the patient","clinicHoldsHelper":"For multi-dose injectables. The patient owns it once paid, but it stays here and each session draws a dose from their balance. Leave off for anything they take home.","lowStockNotifications":"Receive low stock notifications","branch":"Branch","currentStock":"Current Stock Quantity","lowStockLevel":"Low Stock Level","reorderQuantity":"Reorder Quantity","isControlled":"Controlled medicine","isControlledHelper":"Always sold and handed over against a valid signed prescription, whatever the clinic's prescription rule."},"banners":{"missingCost":"This product is tracked in inventory but has no <strong>Purchase Cost</strong>. It will contribute nothing to cost of goods, so every sale (and every service that consumes it) will report more profit than it really made. Enter what you pay the supplier."},"optionsAria":"Product options","submitAdd":"Add Product","submitUpdate":"Update Product","validation":{"productNameRequired":"Product name is required","sellingPriceRequired":"Selling price is required","expiryNeedsTracking":"Expiry tracking needs a tracking method of Lot or Serial. Set Inventory Tracking to Lot or Serial, or turn off “Requires Expiry Date”.","warehouseBranchRequired":"Select a branch for this warehouse, or remove the row."}},"options":{"reinstated":"Product reinstated for sale","discontinued":"Product discontinued","updateFailed":"Could not update the product","reinstate":"Reinstate","discontinue":"Discontinue"}},"SectionCatalogSalesPackages":{"detail":{"entityPlural":"Sales packages","salesPackageActions":"Sales package actions","tabs":{"overview":"Overview","items":"Items","policies":"Policies","branches":"Branches"},"packageDetails":"Package Details","name":"Name","code":"Code","description":"Description","saleNote":"Sale Note","pricing":"Pricing","pricingMode":"Pricing Mode","totalPrice":"Total Price","saleWindow":"Sale Window","saleStartDate":"Sale Start Date","saleEndDate":"Sale End Date","settings":"Settings","status":"Status","items":"Items","itemsCount":"Items ({count})","noItems":"No items added yet.","itemNumber":"Item {number}","qty":"Qty: {quantity}","productFallback":"Product #{id}","unitPrice":"Unit price:","policies":"Policies","expiryEnabled":"Expiry Enabled","validity":"Validity","crossBranchRedeem":"Cross-branch Redeem","partialRefund":"Partial Refund","bypassFloorPrice":"Bypass Floor Price","branches":"Branches","branchesCount":"Branches ({count})","allBranches":"Available in all branches","noBranchRestrictions":"No branch restrictions configured.","branchFallback":"Branch #{id}"},"enums":{"pricingMode":{"manual":"Manual: set unit price per item","proportional":"Proportional: split by base price × qty","header_discount":"Header Discount: discount on package row"}},"list":{"searchPlaceholder":"Search packages…","description":"Create and manage sales packages for your clients.","emptyTitle":"No sales packages yet","emptyDescription":"Create your first package to bundle products and services.","newPackage":"New Package","pricing":{"manual":"Manual","proportional":"Proportional","header_discount":"Header Discount"},"columns":{"name":"Name","code":"Code","pricing":"Pricing","totalPrice":"Total Price","items":"Items","status":"Status","attachments":"Attachments"}},"form":{"fields":{"totalPriceAuto":"Total Price (auto-calculated)","totalPriceAutoHelper":"Calculated automatically from the items below.","name":"Package Name","namePlaceholder":"e.g. Mounjaro + Legacy Bundle","code":"Code","codePlaceholder":"e.g. MJ-LEGACY-4","description":"Description","descriptionPlaceholder":"What this bundle offers…","saleNote":"Sale Note","saleNotePlaceholder":"Printed on the invoice header when sold, e.g. 2 areas × 6 sessions each","saleStartDate":"Sale Start Date","saleEndDate":"Sale End Date","active":"Active","activeHelper":"Master on/off switch. Independent of the sale dates above. If a sale window is set, the package only sells inside that window even while Active.","pricingMode":"Pricing Mode","totalPrice":"Total Price","itemNumber":"Item {number}","removeItem":"Remove item","product":"Product","quantity":"Quantity","unitPrice":"Unit Price","swappable":"Swappable","swappableHelper":"Let the cashier swap this item for one of the alternatives below when selling the package. Price and quantity stay the same.","alternativeProducts":"Alternative Products","alternativeProductsPlaceholder":"Products the cashier may swap in","alternativeProductsHelper":"Only these products can replace the item above at point of sale.","addItem":"Add Item","manualModeHint":"Unit price is required for all items in manual mode. Total price is calculated automatically.","expiryEnabled":"Enable Expiry","expiryEnabledHelper":"When on, a sold package becomes unredeemable after the validity window below.","validityDays":"Validity (days)","validityDaysPlaceholder":"e.g. 90","validityDaysHelper":"Days from the sale date until the package expires.","crossBranchRedeem":"Cross-branch Redeem","crossBranchRedeemHelper":"Allow redeeming this package's items at any branch, not only where it was sold.","partialRefund":"Partial Refund","partialRefundHelper":"Allow refunding part of the package instead of all-or-nothing.","bypassFloorPrice":"Bypass Floor Price","bypassFloorPriceHelper":"Caution: lets this package sell below the configured floor price of its items.","floorGuardOff":"Floor-price guard is OFF. Items in this package can be sold below their floor price."},"sections":{"details":"Package Details","detailsCaption":"Name, code, and sale window.","pricing":"Pricing","pricingCaption":"How the package price is calculated.","items":"Items","itemsCaption":"Products and services included in this package.","expiry":"Expiry","expiryCaption":"Control whether sold packages expire. Off = never expires.","redemption":"Redemption & Refunds","redemptionCaption":"Where package items can be redeemed and how they can be refunded.","floorPrice":"Floor Price","floorPriceCaption":"Pricing guard applied when this package is sold.","branches":"Branches","branchesCaption":"Available in all branches by default. Turn off “All” to restrict where this package can be sold. If you turn it off, pick at least one branch, otherwise the package can’t be sold anywhere."},"tabs":{"basics":"Basics & Items","policies":"Policies","branches":"Branches"},"validation":{"quantityMin":"Quantity must be at least 1","alternativeRequired":"Pick at least one alternative product, or turn Swappable off","nameRequired":"Name is required","codeRequired":"Code is required","itemsMin":"At least one item is required","unitPricePositive":"Unit price must be greater than 0","totalPricePositive":"Total price must be greater than 0","validityRequired":"Validity days must be a positive integer when expiry is enabled","endBeforeStart":"Sale end date cannot be before the sale start date","productRequired":"Product is required"}}},"SectionSettingsBranchInventoryOverrides":{"detail":{"entityPlural":"Branch inventory overrides","overrideActions":"Branch override actions","basics":"Basics","branch":"Branch","lowStockDaysThreshold":"Low-stock days threshold","expiryWarningDays":"Expiry warning days","warehouseCapacityWarning":"Warehouse capacity warning","costSyncMode":"Cost sync mode","requireStockForInvoice":"Require stock for invoice","inherit":"Inherit (tenant default)","stockRequired":"Required","allowedWithoutStock":"Allowed without stock"},"enums":{"costSyncMode":{"manual":"Manual","last_purchase":"Last purchase","weighted_average":"Weighted average"}},"entity":"Branch override","title":"Branch Inventory Overrides","list":{"description":"Per-branch overrides of the tenant inventory settings. Branches without an override inherit the tenant defaults; deleting an override reverts the branch to inheriting.","add":"Add branch override","emptyTitle":"No branch overrides yet","emptyDescription":"All branches currently inherit the tenant inventory settings. Add an override to customise thresholds or behaviour for a specific branch.","costSyncSubtitle":"Cost sync: {mode}","inheritsDefaults":"Inherits tenant defaults"},"columns":{"branch":"Branch","lowStock":"Low-stock (days)","expiryWarning":"Expiry warning (days)","capacityWarning":"Capacity warning","costSync":"Cost sync","stockForInvoices":"Stock for invoices","inherits":"Inherits","required":"Required","notRequired":"Not required"},"form":{"branchTitle":"Branch","branchCaption":"Pick the branch to customise. Branches without an override inherit the tenant inventory settings automatically.","branch":"Branch","branchPlaceholder":"Select branch","thresholdsTitle":"Alert thresholds","thresholdsCaption":"Leave a field empty to keep inheriting the tenant value.","inheritsPlaceholder":"Inherits tenant value","lowStock":"Low-stock threshold (days of cover)","lowStockHelp":"1-365. Alert when remaining stock covers fewer days than this.","expiryWarning":"Expiry warning (days before expiry)","expiryWarningHelp":"1-365. Warn this many days before a batch expires.","capacityWarning":"Capacity warning (%)","capacityWarningHelp":"50-100. Warn when a warehouse passes this fill level.","behaviourTitle":"Behaviour","behaviourCaption":"Cost sync and invoice stock policy for this branch.","costSyncMode":"Cost sync mode","costSyncHelp":"How Product.product_cost updates when this branch confirms a GRN.","requireStockLabel":"Stock required for invoices","requireStockHelp":"Whether products must have available stock before they can be added to an invoice at this branch.","inheritDefault":"Inherit tenant default","costSync":{"manual":"Manual: no auto-sync on GRN","last_purchase":"Last purchase price","weighted_average":"Weighted average"},"requireStock":{"require":"Require available stock","allow":"Allow without stock"}}},"SectionSettingsBrands":{"detail":{"entityPlural":"Brands","brandActions":"Brand actions","basics":"Basics","name":"Name","description":"Description","website":"Website"},"list":{"searchPlaceholder":"Search brands...","add":"Add brand","emptyTitle":"No brands yet","emptyDescription":"Add your first brand to get started.","about":"About"},"entity":"Brand","title":"Brands","form":{"detailsTitle":"Details","name":"Brand Name","namePlaceholder":"e.g. L'Oréal","description":"Description","descriptionPlaceholder":"Brief description of this brand","website":"Website","websiteHelp":"Optional. Full URL including https://"},"columns":{"name":"Name","website":"Website","description":"Description"}},"SectionSettingsCategories":{"detail":{"entityPlural":"Categories","categoryActions":"Category actions","basics":"Basics","name":"Name","description":"Description","type":"Type","color":"Color"},"list":{"searchPlaceholder":"Search categories...","add":"Add category","emptyTitle":"No categories yet","emptyDescription":"Add your first category to organize your products and services.","slug":"Slug"},"entity":"Category","title":"Categories","form":{"basicsTitle":"Basics","name":"Name","namePlaceholder":"e.g. Hair Care","description":"Description","descriptionPlaceholder":"Brief description of this category","type":"Category Type","typePlaceholder":"Select a type","color":"Color (hex)","colorHelp":"Optional. Use a hex color code like #FF5733","visibilityTitle":"Channel visibility","visibilityCaption":"Effective visibility on a channel is the AND of the category flag and the per-product flag. Disable here to hide an entire category from a channel, e.g. hide Lab from the customer app.","visibleInEmr":"Visible in EMR","visibleInCustomerApp":"Visible in customer app","visibleInHomecare":"Visible on homecare site","guardsTitle":"Sale-time guards","guardsCaption":"Inherited by every product under this category. Set requires_rx for GLP-1 / peptide / controlled-IV categories so the cart blocks the sale until a valid PrescriptionDrug is attached.","requiresRx":"Requires prescription","requiresRxHelp":"Cart blocks the sale when no active PrescriptionDrug is attached.","requiresConsult":"Requires recent doctor consult","requiresConsultHelp":"Cart requires an active consult on the customer's record.","minSellingPrice":"Minimum selling price","minSellingPriceHelp":"Applied when the product's own floor_price is 0. Strictest floor across supplier / product / category wins."},"columns":{"name":"Name","color":"Color"}},"SectionSettingsConsentForms":{"detail":{"entityPlural":"Consent Forms","consentFormActions":"Consent form actions","basics":"Basics","title":"Title","status":"Status","type":"Type","id":"ID","contentEn":"Content (EN)","contentAr":"Content (AR)","requiredSignatures":"Required Signatures","doctorSignature":"Doctor signature","witnessSignature":"Witness signature","required":"Required","notRequired":"Not required","tabs":{"basics":"Basics","content":"Content","signatures":"Signatures","history":"History"}},"enums":{"type":{"service":"Service","policy":"Policy","nda":"NDA"}},"list":{"searchPlaceholder":"Search consent...","description":"Create, manage, and assign consent forms by type. Use them to collect required signatures before providing services.","addNew":"Add New","emptyTitle":"No consent forms yet","emptyDescription":"Add your first consent form to get started.","chipLanguage":"Language: {value}","chipType":"Type: {value}","mobile":{"doctor":"Doctor","witness":"Witness","code":"Code","direction":"Direction","signatures":"Signatures","language":"Language"}},"entity":"Consent form","title":"Consent Forms","help":{"title":"Shown to patients at the top of the document. Keep it short and unambiguous.","type":"Service consents are tied to bookable services. NDA and Policy templates apply organisation-wide.","content":"The English-language consent body. Supports rich formatting.","content_ar":"Optional Arabic translation. When set, Arabic-speaking patients see this version on the signing screen.","requires_doctor_signature":"Block submission until the attending doctor signs alongside the patient.","requires_witness":"Block submission until a witness (staff member) co-signs."},"form":{"basicsTitle":"Basics","basicsCaption":"The minimum needed to create a consent form. Used to identify it across services and reports.","title":"Title","titlePlaceholder":"e.g. Telehealth Consent","type":"Type","typePlaceholder":"Select type","contentTitle":"Content","contentCaption":"The consent body text patients see when signing. Write a clear English version; an Arabic translation is optional.","contentPlaceholder":"Write consent form content...","signaturesTitle":"Required Signatures","signaturesCaption":"Extra signatures required before the consent is considered valid.","doctorSignature":"Doctor signature required","witnessSignature":"Witness signature required","optionsAria":"Consent form options","sections":{"basics":"Basics","content":"Content","signatures":"Signatures"},"submitAdd":"Add consent form","submitUpdate":"Update consent form"},"columns":{"title":"Title","type":"Type","contentLanguages":"Content Languages","lastUpdated":"Last Updated","status":"Status","active":"Active","inactive":"Inactive"},"filters":{"title":"Filter Consent Forms","language":"Content Language","languages":{"en":"English","ar":"Arabic"},"type":"Type","status":"Status","active":"Active","activeDescription":"Consent forms currently in use.","inactive":"Inactive","inactiveDescription":"Archived consent forms hidden from pickers."}},"SectionSettingsDevices":{"detail":{"entityPlural":"Devices","deviceActions":"Device actions","basics":"Basics","name":"Name","manufacturer":"Manufacturer","modelNumber":"Model Number","serialNumber":"Serial Number"},"list":{"searchPlaceholder":"Search devices...","add":"Add device","emptyTitle":"No devices yet","emptyDescription":"Add your first device to get started.","unknownStatus":"Unknown","serialSubtitle":"S/N: {serial}","manufacturer":"Manufacturer","model":"Model","lastMaintenance":"Last maintenance"},"entity":"Device","title":"Devices","form":{"detailsTitle":"Details","name":"Device Name","namePlaceholder":"e.g. Ultrasound Machine 1","branch":"Branch","branchPlaceholder":"Select branch","serialNumber":"Serial Number","serialNumberPlaceholder":"e.g. SN-123456","manufacturer":"Manufacturer","manufacturerPlaceholder":"e.g. Philips","modelNumber":"Model Number","modelNumberPlaceholder":"e.g. HDR-2000"},"columns":{"name":"Name","serialNumber":"Serial Number","branch":"Branch","status":"Status"}},"SectionSettingsFiscalYears":{"detail":{"entityPlural":"Fiscal Years","fiscalYearActions":"Fiscal year actions","basics":"Basics","name":"Name","startDate":"Start Date","endDate":"End Date","status":"Status"},"entity":"Fiscal year","title":"Fiscal Years","validation":{"required":"Required","calendarDate":"Must be a calendar date","nameRequired":"Name is required","endBeforeStart":"End date cannot be before start date"},"form":{"identityTitle":"Identity","identityCaption":"A short label and the range of dates this fiscal year covers.","name":"Name","namePlaceholder":"e.g. FY 2026","nameHelp":"Shown on reports and the period-close drawer.","periodTitle":"Period","periodCaptionEdit":"Editing the range only affects future entries. Existing journal lines keep their original dates.","periodCaptionCreate":"Pick the calendar window. Most clinics use a full calendar year.","startDate":"Start date","endDate":"End date"},"columns":{"name":"Name","current":"Current","period":"Period","status":"Status"},"list":{"add":"Add fiscal year","emptyTitle":"No fiscal years yet","emptyDescription":"Add a fiscal year to enable monthly period close and run accounting reports for a specific window.","viewPeriods":"View Periods"}},"SectionSettingsMetaAdAccounts":{"detail":{"entityPlural":"Meta ad accounts","basics":"Basics","label":"Label","adAccountId":"Ad account ID","adSource":"Ad source","connection":"Connection","connectionError":"Error","connectionConnected":"Connected","connectionNotTested":"Not tested","lastPulled":"Last pulled","never":"Never","lastError":"Last error"},"entity":"Ad account","title":"Ad Accounts","list":{"title":"Meta Ad Accounts","description":"Connect each Meta (Facebook/Instagram) ad account so leads resolve to the exact campaign and ad, and daily spend feeds CAC. Stored encrypted; use Test to confirm access.","connect":"Connect account","emptyTitle":"No ad accounts connected","emptyDescription":"Connect your Meta ad account to trace which campaign and ad each lead and sale came from.","connection":{"notTested":"Not tested","error":"Error","connected":"Connected"},"columns":{"account":"Account","adSource":"Ad source","connection":"Connection","status":"Status"}}},"SectionSettingsProductTypes":{"detail":{"entityPlural":"Product Types","productTypeActions":"Product type actions","basics":"Basics","name":"Name","parent":"Parent","status":"Status"},"list":{"searchPlaceholder":"Search product types...","add":"Add product type","emptyTitle":"No product types yet","emptyDescription":"Add your first product type to categorize items."},"entity":"Product type","title":"Product Types","form":{"name":"Name","namePlaceholder":"e.g. Treatment Service","active":"Active"},"columns":{"name":"Name","status":"Status"}},"SectionTreatmentPlans":{"summaryPanel":{"eyebrow":"Treatment plan","untitled":"Untitled plan","noDiagram":"No diagram","timeline":"Timeline","start":"Start","targetEnd":"Target end","context":"Context","patient":"Patient","session":"Session","doctor":"Doctor","summary":"Summary","procedures":"Procedures","totalSessions":"Total sessions","linkedToCanvas":"Linked to canvas","linkedCount":"{linked} / {total}","estimatedTotal":"Estimated total","downloadPdf":"Download patient PDF","convertToInvoice":"Convert to invoice","saveFirst":"Save the plan to enable export and conversion actions.","visibleToPatient":"Visible to patient","hiddenFromPatient":"Hidden from patient"},"detail":{"entityPlural":"Treatment plans","tabs":{"overview":"Overview","bodyDiagram":"Body diagram","procedures":"Procedures ({count})","attachments":"Attachments ({count})","documents":"Documents"},"byDoctor":"By {name}","noDoctor":"No doctor assigned","startOn":"Start {date}","plan":"Plan","status":"Status","template":"Template","doctor":"Doctor","startDate":"Start date","targetEnd":"Target end","visibleToPatient":"Visible to patient","goals":"Goals","clinicalNotes":"Clinical notes","noProcedures":"No procedures planned.","treatmentFallback":"Treatment","noAttachments":"No attachments.","new":"New","emptyTitle":"No treatment plan yet","emptySessionCanEdit":"This session has no linked plan. Create one to document the patient’s clinical plan.","emptySession":"No treatment plan has been linked to this session yet.","emptyPatientCanEdit":"Create one to document the patient’s clinical plan.","emptyPatient":"The doctor hasn’t created a plan for this patient yet."},"enums":{"status":{"draft":"Draft","active":"Active","completed":"Completed","cancelled":"Cancelled"},"procedureStatus":{"planned":"Planned","completed":"Completed","cancelled":"Cancelled"},"template":{"face_front":"Face: Front","face_side":"Face: Side","face_botox":"Face: Botox map","face_filler":"Face: Filler map","body_front":"Body: Front","body_back":"Body: Back","body_zones_iv":"Body: IV / Peptide zones","body_zones_slimming":"Body: Slimming zones","hands":"Hands","abdomen":"Abdomen","scalp":"Scalp","scalp_hair":"Scalp: Hair transplant map","dental":"Dental: Generic","dental_adult":"Dental: Adult (FDI)","dental_baby":"Dental: Primary (FDI)","custom":"Custom: Blank canvas"}},"search":{"catalog":"Search catalog…","pins":"Search procedure markers","templates":"Search face, body, dental, scalp..."},"bodyView":"Body view","clear":"Clear","drawDirectlyOnTheDiagram":"Draw directly on the diagram: pen for injection points / lines, text for dose or device labels. Number a point and explain it in the Notes field.","pins":"Pins","addAProcedureRowFirst":"Add a procedure row first, then drop a pin to label its position on the drawing.","procedureMarkers":"Procedure markers","useTheCanvasTextTool":"Use the canvas text tool and place the shown marker number on the treatment area. The same number stays linked to the procedure row.","unlinkMarker":"Unlink marker","link":"Link","noProcedureMarkersMatchThis":"No procedure markers match this search.","treatmentPlans":"Treatment Plans","newPlan":"New plan","planStatus":"Plan status","unsavedDraftFound":"Unsaved draft found","discard":"Discard","restoreDraft":"Restore draft","fromThisEncounter":"From this encounter","chiefComplaint":"Chief complaint","primaryDiagnosis":"Primary diagnosis","activeAllergies":"Active allergies","consent":"Consent","diagram":"Diagram","selected":"Selected","attachments":"Attachments","beforeAfterPhotosAndClinical":"Before/after photos and clinical documents.","beforePhoto":"Before photo","afterPhoto":"After photo","document":"Document","noAttachmentsYet":"No attachments yet.","basics":"Basics","title":"Title","eGFullFaceRejuvenation":"e.g. Full face rejuvenation plan","selectStatus":"Select status","startDate":"Start Date","whenTreatmentBegins":"When treatment begins.","targetEndDate":"Target End Date","plannedCompletionLeaveEmptyIf":"Planned completion. Leave empty if open-ended.","clinicalPlan":"Clinical Plan","goalsNotesAndADrawing":"Goals, notes, and a drawing surface that adapts to the body-diagram template.","clinicalGoals":"Clinical Goals","whatTheDoctorWantsTo":"What the doctor wants to achieve…","bulletListsKeepGoalsMeasurable":"Bullet lists keep goals measurable. One short outcome per line.","notesContraindicationsFollowUp":"Notes / Contraindications / Follow-up","additionalClinicalNotesWarningsFollow":"Additional clinical notes, warnings, follow-up protocol…","useBoldForWarningsAnd":"Use bold for warnings and contraindications the patient must read.","proceduresInterventions":"Procedures & Interventions","addEachPlannedProcedureAnd":"Add each planned procedure and link it to a catalog service so reception can convert this plan to a sale.","noProceduresYet":"No procedures yet","addProcedure":"Add procedure","moveUp":"Move up","moveDown":"Move down","duplicateThisRow":"Duplicate this row","removeThisRow":"Remove this row","serviceProduct":"Service / Product","sessions":"Sessions","unitPrice":"Unit price","optional":"Optional","targetArea":"Target Area","eGLeftCheekRight":"e.g. Left cheek, right thigh, zone 2…","notes":"Notes","dosageTechniqueDilutionFollowUp":"Dosage, technique, dilution, follow-up interval…","estimatedTotalQuantityUnitPrice":"Estimated total (quantity × unit price)","settings":"Settings","visibilityAndPatientAccess":"Visibility and patient access.","visibleToPatientInMy":"Visible to patient in my-panel","whenEnabledThePatientCan":"When enabled, the patient can see this plan in their portal.","addTreatmentPlanToCart":"Add Treatment Plan to Cart","pickAnActivePlanIts":"Pick an active plan; its procedures will be added.","print":"Print","saveFirstToAttach":"Save the plan first. Then you can add before/after photos and documents here."},"ClinicalResultWizard":{"titleAdd":"Add clinical result","titleEdit":"Edit clinical result","cancel":"Cancel","back":"Back","next":"Next","submit":"Save result","stepType":"Test Type","stepDetails":"Test Details","stepLabOrder":"Lab Order","stepSubmit":"Review","categoryTitle":"Select test type","categorySubtitle":"Choose what kind of result you are adding for this session.","categoryEntity":"Test types","categoryEmptyTitle":"No test types available","categoryEmptyDescription":"Ask an administrator to enable a clinical test type for this branch.","detailTitle":"Result details","detailSubtitle":"Upload the {test} result file and add a note if needed.","fileTest":"test","note":"Note","notePlaceholder":"Anything the doctor should know about this result","fileRequired":"Attach the result file (PDF or CSV).","labFileRequired":"Attach the lab result (PDF or CSV).","createTitle":"Create lab order","createSubtitle":"Choose the lab and the test to order for this patient.","date":"Date","lab":"Lab","testType":"Test type","dateRequired":"Date is required.","labRequired":"Select a lab.","testTypeRequired":"Select a test type.","uploadTitle":"Upload external lab result","uploadSubtitle":"Pick the lab order this result belongs to and attach the lab's report.","labOrder":"Lab Order","labOrderRequired":"Select a lab order.","doctor":"Doctor","abnormality":"Abnormality","abnormalityPlaceholder":"Select Abnormality","confidentiality":"Confidentiality Code","reviewTitle":"Review & submit","reviewSubtitle":"Check the information below before saving the result.","summary":"Summary","test":"Test","unnamedOrder":"Unnamed order","unknownPatient":"Unknown patient","patientId":"Patient ID: #{id}","patientLoading":"Patient is still loading. Try again in a moment.","invalidForm":"Some fields are missing or invalid. Go back and check.","externalTitle":"External Type","externalQuestion":"What would you like to do?","createLabOrder":"Create Lab Order","uploadLabResult":"Upload Lab Result","pageTitle":"Clinical results","pageDescription":"Device and lab results for this patient: InBody, OligoScan and external labs","addNew":"Add result","searchPlaceholder":"Search clinical results...","noResultsTitle":"No clinical results found","noResultsDescription":"Nothing recorded for this patient yet. Add a result from the visit, or try a different search.","edit":"Edit","download":"Download file","createdBy":"Created by","resultDate":"Result date","orderDate":"Order date","category":"Category","attachedFile":"Attached file","noFile":"No file attached","close":"Close","deleteTitle":"Delete clinical result","deleteBody":"This removes the result and its file from the patient's record. It is a clinical record, so the removal is logged and reported to the health-authority feed where enabled.","confirm":"Delete","deleteAria":"Delete result","editAria":"Edit result","downloadAria":"Download result file","doctorPlaceholder":"Select doctor"},"DesignSystem":{"activityTimeline":{"label":"Activity","entityName":"activity","today":"Today","yesterday":"Yesterday","system":"System","unknown":"Unknown user","changedTo":"changed to","emptyTitle":"No activity yet","emptyDescription":"Changes and events will appear here as they happen.","loadMore":"Load more","loadingMore":"Loading…","loadMoreError":"Couldn't load more activity.","retry":"Retry","refreshing":"Refreshing activity","history":{"label":"Record history","entityName":"history","emptyTitle":"No history yet","emptyDescription":"Every change to this record will be listed here.","noRecord":"Save the record first to see its history.","reason":"Reason:","changesLabel":"Field changes","showMoreChanges":"Show {count, plural, one {# more change} other {# more changes}}","showLess":"Show less","verb":{"created":"created this record","updated":"updated this record","deleted":"deleted this record","viewed":"viewed this record","other":"changed this record"},"relatedVerb":{"created":"added","updated":"updated","deleted":"removed","viewed":"viewed","other":"changed"},"relatedModel":{"payment":"a payment","invoice_item":"an invoice line","vendor_payment":"a payment"}},"showDetails":"Show details","hideDetails":"Hide details"},"notesThread":{"reply":"Reply","replyPlaceholder":"Write a reply… (Ctrl+Enter to post)","replyLabel":"Reply to {name}","repliesLabel":"Replies to {name}","label":"Notes","entityName":"notes","loading":"Loading notes","placeholder":"Write a note… (Ctrl+Enter to post)","composerLabel":"New note","editLabel":"Edit note","post":"Post","save":"Save","cancel":"Cancel","sending":"Sending…","notSent":"Not sent.","retry":"Retry","sendFailed":"Couldn't save the note. Your text is kept, so try again.","tooLong":"Keep it under {max} characters.","edited":"edited","pinned":"Pinned","pin":"Pin to top","unpin":"Unpin","edit":"Edit","delete":"Delete","noteActions":"Actions for {name}'s note","emptyTitle":"No notes yet","emptyDescription":"Add the first note. Everyone on the team will see it here."},"tagsInput":{"placeholder":"Type and press Enter","loading":"Loading suggestions…","duplicate":"“{tag}” is already added.","max":"You can add up to {max} tags.","invalid":"This tag isn't allowed."},"inlineEdit":{"editLabel":"Edit {label}:","empty":"Add {label}","save":"Save","cancel":"Cancel","saveFailed":"Couldn't save. Your change is kept, so try again, or press Esc to undo.","invalidNumber":"Enter a number.","textareaHint":"Ctrl/⌘ + Enter to save · Esc to cancel"},"editableNote":{"title":"Notes","label":"note","empty":"No note yet. Click to write one","emptyReadOnly":"No note added","placeholder":"Write a note…"},"eventCard":{"now":"Now","cancelled":"Cancelled","conflict":"Overlaps another booking"},"splitView":{"back":"Back","list":"List","detail":"Details","resize":"Resize list"},"setupChecklist":{"expand":"Show setup steps","collapse":"Hide setup steps","dismiss":"Dismiss setup checklist","progress":"{done} of {total} done","progressLabel":"Setup progress","complete":"All set. Your workspace is ready.","status":{"done":"done","pending":"to do","locked":"locked"}},"shortcuts":{"title":"Keyboard shortcuts","description":"Press ? anywhere to see this list.","openHelp":"Show keyboard shortcuts","openSearch":"Search and run commands","save":"Save the open form","toggleCopilot":"Open or close the assistant","scopes":{"global":"Everywhere","navigation":"Navigation","form":"Forms","copilot":"Assistant","booking":"Booking calendar"}},"commandPalette":{"actions":"Actions","sectionAction":"Action","sectionNavigation":"Page","goTo":"Go to {page}","todayCalendar":"Open today's calendar","newQuotation":"New quotation","showShortcuts":"Show keyboard shortcuts","kwBooking":"booking appointment calendar schedule","kwQuotation":"quote estimate offer","kwShortcuts":"keyboard hotkeys keys help","openSearch":"Open search","closeSearch":"Close search","searchLabel":"Search","placeholder":"Search patients, sessions, invoices…","clear":"Clear search","hintNavigate":"navigate","hintOpen":"open","hintClose":"close","footer":"Global search","idleTitle":"Find anything","idleBody":"Patients, booking sessions and invoices, all in one search.","tooShortTitle":"Type at least {count} characters","tooShortBody":"Search by patient name, phone number, MRN or invoice number.","groupPatients":"Patients","groupSessions":"Sessions","groupInvoices":"Invoices","openBooking":"Open booking","parent":"Parent","child":"Child","sessionNumber":"Session #{id}","mrn":"MRN {mrn}","results":"Search results"},"inlineWorkflow":{"back":"Back","next":"Next","steps":"Steps","stepOf":"Step {current} of {total}","stepCompleted":"completed","stepCurrent":"current step","stepIncomplete":"Complete this step to continue","retry":"Retry","backToForm":"Back to form","done":"Done","ok":"OK","errorFallback":"That didn't go through. Your entries are still here, so try again."},"conversionSummary":{"title":"Review before you confirm","creates":"Creates {target}","from":"from","lines":"{count, plural, one {# line} other {# lines}}","moreLines":"+{count} more"},"workflowActions":{"confirmTitle":"{action}?","confirmDescription":"The status will change to {status}.","success":"Status changed to {status}","successWithEntity":"{entity} updated: {action}","failed":"Couldn't complete “{action}”. Please try again."},"detailSection":{"copy":"Copy {label}","copied":"Copied","showEmpty":"{count, plural, one {Show # empty field} other {Show # empty fields}}","hideEmpty":"Hide empty fields","refreshing":"Updating…","empty":"No details yet","showMore":"Show more","showLess":"Show less"},"printDocument":{"print":"Print","defaultTitle":"Print document","page":"Page","of":"of"},"paymentLink":{"title":"Generate Payment Link","amount":"Amount","amountDue":"Amount Due"},"shareDocument":{"title":"Share Documents","linkCopied":"Link copied to clipboard","link":"Link","noLink":"No link available","recipients":"Recipients","recipientsPlaceholder":"Add contacts to share the document","note":"Note","notePlaceholder":"Add a note","sendLink":"Send Link"}},"Dashboard":{"card":{"emptyTitle":"No data for this period","emptyDescription":"Try adjusting the date range or check back later.","listEmptyTitle":"No data","listEmptyDescription":"There is nothing to show for the selected period.","tableEmptyDescription":"No data for this period.","entityName":"Widget data","refreshing":"Refreshing","loadMore":"Load {count, number} more","remaining":"({count, number} left)","showLess":"Show less"},"rangeLabels":{"full":{"today":"Today","yesterday":"Yesterday","last_7_days":"Last 7 days","last_30_days":"Last 30 days","this_week":"This week","last_week":"Last week","this_month":"This month","last_month":"Last month","this_year":"This year","last_year":"Last year","custom":"Custom"},"short":{"today":"Today","yesterday":"Yday","last_7_days":"7 days","last_30_days":"30 days","this_week":"Week","last_week":"Last wk","this_month":"Month","last_month":"Last mo","this_year":"Year","last_year":"Last yr","custom":"Custom"}},"rangePicker":{"selectDate":"Select date","fromDate":"From {date}","untilDate":"Until {date}","filterByDate":"Filter by date","filterByRange":"Filter by date range","openRange":"Open date range","custom":"Custom…","clear":"Clear","selectRange":"Select date range"},"greeting":{"morning":"Good morning","afternoon":"Good afternoon","evening":"Good evening","night":"Good night","welcome":"Welcome","title":"{greeting},\n{name}"}},"SharedComponents":{"advancedCollapse":{"addSection":"Add {title}","more":"More details","less":"Fewer details"},"address":{"addTitle":"Add address","editTitle":"Edit address","country":"Country","countryPlaceholder":"Choose a country","state":"State","statePlaceholder":"Select state","city":"City","cityPlaceholder":"Select city","zipOptional":"Zip (optional)","zipPlaceholder":"Zip code","address":"Address","addressPlaceholder":"Type address…","saveChanges":"Save changes","updated":"Address updated successfully","added":"Address added successfully","deleted":"Address deleted","validation":{"typeRequired":"Address type is required","countryRequired":"Country is required","stateRequired":"State is required","cityRequired":"City is required","addressRequired":"Address is required","addressTooLong":"Address is too long"},"typeHome":"Home","typeOffice":"Office","typeOther":"Other","deleteTitle":"Delete address?","deleteDescription":"Deleting this address will permanently remove it from your saved locations.","addAddress":"Add address","showLess":"Show less","loadMore":"Load more ({count} more)"},"authSplit":{"coverAlt":"A clinician with a patient during a consultation"},"overviewBox":{"idLabel":"ID: {id}","dateLabel":"Date: {date}"},"upload":{"selectProductPicture":"Select a product picture from your device","changeImage":"Change image","uploadImage":"Upload image","images":"Images","cover":"Cover","previewAlt":"Preview {index}","setAsCover":"Set as cover","download":"Download"},"idCard":{"unsupportedFormat":"Supported formats: JPG, PNG, WEBP","tooLarge":"The file is larger than the {limit} limit.","optimizing":"Large file detected ({size}). Optimizing…","optimized":"Optimized: {from} → {to} ({percent}% smaller)","processFailed":"Unable to process this image. It may be corrupted.","limitsHint":"Max size: {max} (auto-optimized to ~{target}). Formats: JPG, PNG, WEBP.","clickToReveal":"Click to reveal","viewFullSize":"View full size","hide":"Hide","uploadNew":"Upload new"},"patientItem":{"email":"Email","mrn":"MRN","profileComplete":"Profile complete!","profileProgress":"Profile {percent}% complete"},"callAction":{"callInfo":"Call info","call":"Call","whatsapp":"WhatsApp","email":"Email"},"taskDetail":{"title":"Task detail","deleteTask":"Delete task","tabsLabel":"Task detail sections","tabInfo":"Info","tabComments":"Comments","entity":"Task","deleted":"Task deleted","overdue":"Overdue","assignedTo":"Assigned to","unassigned":"Unassigned","status":"Status","priority":"Priority","priorityLow":"Low","priorityMedium":"Medium","priorityHigh":"High","module":"Module","relatedItem":"Related Item","startDate":"Start Date","dueDate":"Due Date","followers":"Followers","description":"Description","descriptionPlaceholder":"Add a Description","addTag":"Add a Tag","reporter":"Reporter","saveChanges":"{count, plural, =0 {Save changes} other {Save changes (#)}}"},"datePicker":{"selectDate":"Select date","today":"Today"},"filters":{"filter":"Filter","reset":"Reset filter","apply":"Apply"},"notificationFilter":{"title":"Notifications filter","date":"Date","from":"From","to":"To","searchPlaceholder":"Search notifications…"},"adSource":{"adSourcePlaceholder":"Select ad source"},"taskManager":{"title":"Tasks","newTask":"New task","filterLabel":"Show tasks","filterAll":"All","filterOpen":"Open","filterDone":"Done","emptyTitle":"No tasks yet","emptyDescription":"Follow-ups, callbacks and to-dos for this record show up here.","emptyFilteredTitle":"No tasks in this view","overdue":"Overdue","done":"Done","highPriority":"High priority","due":"Due {date}","markDone":"Mark as done","markOpen":"Mark as not done","showAll":"Show all tasks"},"search":{"label":"Search or create a label","users":"Search users...","operator":"Search Operator...","country":"Search Country or Code...","product":"Search by name or SKU...","noOptionsFound":"No options found","typeToSearch":"Type to search options","clear":"Clear search"},"personCell":{"editPhoto":"Change photo"},"imageCrop":{"title":"Adjust image","avatarTitle":"Adjust photo","hint":"Drag to position. Use the slider to zoom.","apply":"Apply crop","zoom":"Zoom"},"notifications":{"emptyTitle":"Notification list is empty","emptyDescription":"No notifications available at this time","title":"Notifications","unreadOnly":"Unread only","loadFailed":"Could not load notifications.","checkConnection":"Check your connection and try again.","close":"Close notifications","open":"Open notifications","settings":{"enable":"Enable Notifications","push":"Push Notification","sms":"SMS","reminders":"Reminders","offers":"Offers & Discounts","general":"General Notifications","transactional":"Transactional","deliveryMethods":"Choose Notification Delivery Methods","categories":"Manage Notification Categories"},"groupToday":"Today","groupYesterday":"Yesterday","groupThisWeek":"This week","groupEarlier":"Earlier","openWithCount":"Open notifications, {count} unread"},"appUpdate":{"requiredTitle":"Update Required","requiredDescription":"Your version of the app is no longer supported. Please update to version <strong>{version}</strong> to continue.","updateNow":"Update Now","available":"Update available: v{version}","update":"Update","dismiss":"Dismiss update notification"},"countdown":{"days":"Days","hours":"Hours","minutes":"Minutes","seconds":"Seconds"},"vitals":{"showDetails":"Show details","hideDetails":"Hide details","addAnother":"Add another vital sign","selectPlaceholder":"Select a vital sign","remove":"Remove vital sign","measurementValue":"Measurement value"},"globalError":{"connectionIssue":"Connection issue","serviceInterruption":"Service interruption","noInternet":"No internet connection","temporaryIssue":"We're having a temporary issue.","networkDescription":"Please check your internet connection and try again. The page will automatically reload when you reconnect.","serverDescription":"Something went wrong while loading the application. Refresh the page to try again or come back in a moment.","backHome":"Back to home"},"history":{"emptyList":"Empty list","listMore":"{items} and {count} more","emptyObject":"Empty object","objectFields":"Object with {count} fields","notSet":"Not set","yes":"Yes","no":"No"},"patientCard":{"callNumber":"Call {phone}","whatsappNumber":"WhatsApp {phone}","emailAddress":"Email {email}","noPhone":"No phone number","noEmail":"No email","service":"Service","time":"Time"},"templatePreview":{"documentIcon":"Document icon"},"enumOptions":{"selectOption":"Select {label}","gender":{"m":"Male","f":"Female"},"identity":{"o":"Resident","t":"Tourist","v":"VIP"},"level":{"bronze":"Bronze","silver":"Silver","gold":"Gold"}},"industries":{"1":"Healthcare","2":"Education","3":"Technology","4":"Finance","5":"Retail","6":"Manufacturing","7":"Construction","8":"Hospitality","9":"Transportation","10":"Real Estate","11":"Energy","12":"Agriculture","13":"Media & Entertainment","14":"Telecommunications","15":"Legal Services","16":"Consulting","17":"Food & Beverage","18":"Automotive","19":"Pharmaceuticals","20":"Aerospace"},"tags":{"createLabelFailed":"Could not create label.","createTagFailed":"Could not create tag."},"serviceFinance":{"outOfStock":"Out of stock","outOfStockBlocked":"Out of stock, blocked"},"lineItems":{"emptyHintManual":"Tap “Add item” to get started","emptyHint":"Tap “Add products” to build your list","addItem":"Add item","addProducts":"Add products","noBarcodeMatch":"No product matches this barcode","addedNamed":"Added: {name}","productAdded":"Product added","totalAmount":"Total amount","totalUnits":"Total units","noItems":"No items added yet","addedCount":"{count} added","noProductsFound":"No products found","noProductsAvailable":"No products available","secondaryQty":"Secondary qty","noUnit":"This product has no unit configured yet","editDetails":"Edit details","addDetails":"Add details","itemNumber":"Item #{number}","noLots":"No lots found","selectProductFirst":"Select a product first","noItemSelected":"No item selected","removeItem":"Remove item","anotherBatch":"Another batch"}},"SectionTablet":{"quickAccessLabel":"Quick access","changeRoomLabel":"Change room","quickAccess":{"clinicAppTitle":"Clinic’s Application","clinicAppDescription":"Manage bookings, explore services, and stay connected with Elegant Hoopoe","dietAppTitle":"Diet Application","dietAppDescription":"Meal plans, workouts, and progress tracking all tailored to you","downloadOnThe":"Download on the","getItOn":"Get it on","appStore":"App Store","googlePlay":"Google Play","whatsApp":"WhatsApp","telegram":"Telegram","instagram":"Instagram","linkedIn":"LinkedIn","youtube":"YouTube","snapchat":"Snapchat","clinicWebsiteTitle":"Clinic’s Website","clinicWebsiteDescription":"View services, prices, and clinic info","homecareWebTitle":"Homecare Web","homecareWebDescription":"Get clinic-level care in your home","getOurApp":"Get Our Application!","scanQrHint":"Scan the QR code that matches your platform and get the app instantly","dialogTitle":"Quick access","hubTitle":"Your digital access hub","hubDescription":"Scan to access our app, website, and social platforms","tabApplication":"Application","tabWebsite":"Website","tabSocialNetwork":"Social network"},"newReport":{"title":"Add New Report","operator":"Operator","date":"Date","sessionNumber":"No. Session","size":"Size","abdomen":"Abdomen","thighs":"Thighs","ankles":"Ankles","chest":"Chest","sizePlaceholder":"Enter size","rfLaser":"RF/Laser","rfLaserPlaceholder":"Enter RF/Laser","duration":"Duration of use","durationPlaceholder":"Enter duration of use","intensity":"Intensity","intensityPlaceholder":"Enter intensity","handPieces":"No. Hand pieces","handPiecesPlaceholder":"Enter No. Hand pieces","note":"Note","notePlaceholder":"Enter note here","discard":"Discard","discardTitle":"Discard New Report","discardDescription":"Are you sure you want to cancel this new report?","submit":"Submit"},"uploadDocument":{"patientInformationTitle":"Patient Information","patientInformationDescription":"Please enter the patient's name to proceed","patientName":"Patient Name","discard":"Discard","discardTitle":"Discard Upload Test","discardDescription":"Are you sure you want to cancel this upload test?","next":"Next"},"servicePatient":{"title":"Patient Details","description":"View the details of the selected appointment and patient.","close":"Close","totalRemainingSessions":"Total Remaining Sessions","done":"Done","totalOperators":"Total Operators"},"digitalContract":{"information":{"title":"Personal Information","description":"Fill out your personal details to help us tailor your experience perfectly.","firstName":"First name","firstNamePlaceholder":"Enter first name here","lastName":"Last name","lastNamePlaceholder":"Enter last name here","gender":"Gender","birthDate":"Birth date","mobileNumber":"Mobile number","phoneOnFile":"On file. Reception can change it.","email":"Email","nationality":"Nationality","nationalityPlaceholder":"Choose a nationality","religion":"Religion","religionPlaceholder":"Select religion","identity":"Identity","identityPlaceholder":"Select identity","passportNumber":"Passport number","passportNumberPlaceholder":"Enter passport number","emiratesId":"Emirates ID","emiratesIdHelper":"Format: {format}","maritalStatus":"Marital status","profession":"Profession","professionPlaceholder":"Select profession","preferredLanguage":"Preferred language","preferredLanguagePlaceholder":"Select preferred language","address":"Address","addressRequired":"At least one address is required","discard":"Discard","discardTitle":"Discard contract","discardDescription":"Are you sure you want to cancel this contract?","next":"Next","validation":{"firstNameRequired":"First name is required","lastNameRequired":"Last name is required","genderRequired":"Gender is required","birthDateRequired":"Birth date is required","phoneRequired":"Phone number is required","phoneInvalid":"Phone number must be valid","emailInvalid":"Email must be a valid email address","nationalityRequired":"Nationality is required","religionRequired":"Religion is required","maritalStatusRequired":"Marital status is required","identityRequired":"Identity is required","professionRequired":"Profession is required","preferredLanguageRequired":"Preferred language is required","nationalIdRequired":"{label} is required","passportRequired":"Passport number is required"}},"contract":{"title":"Contract Agreement","description":"Read the contract to unlock the acceptance button.","noSections":"No sections available.","loadFailed":"Failed to load contract","emptyTitle":"No contract content available","emptyDescription":"There is nothing to review for this session.","back":"Back","next":"Next","goBackAndRetry":"Please go back and try again."},"signature":{"title":"Signature Confirmation","description":"Sign below to officially accept the terms","submitFailed":"Failed to submit. Please try again.","consentChanged":"The consent form for this visit has changed. Please review it before signing.","consentTextChanged":"The consent text was updated. Please read it again before signing.","completeRequired":"Please complete all required fields before submitting.","patientSignature":"Patient signature","patientFallback":"Patient","signingAs":"Signing as","patientId":"Patient ID #{id}","witnessSignature":"Witness signature","witnessName":"Witness name","doctorSignature":"Doctor / nurse signature","doctor":"Doctor / homecare nurse","doctorPlaceholder":"Select doctor / nurse","agreeHelper":"By signing, you agree to the terms of the consent form.","marketingConsentText":"I'd like to receive updates about offers, events, and new services from the clinic by WhatsApp, SMS, or email. Important messages (appointment reminders, payment receipts, and medical results) will still be sent either way. I can unsubscribe anytime by replying STOP to any marketing message or by asking reception to remove me from the list.","acknowledgmentReviewed":"I've reviewed the contraindications, precautions, warnings, and post-treatment instructions.","acknowledgmentQuestions":"All my questions have been answered to my satisfaction.","acknowledgmentVoluntary":"I'm requesting this procedure voluntarily and I understand that results and experiences can vary from person to person.","beforeYouSign":"Before you sign","confirmingThat":"By signing below, you're confirming that:","agreePrefix":"I have read and agree to the","privacyPolicy":"Privacy Policy","and":"and","termsConditions":"Terms & Conditions","keepMeUpdated":"Keep me updated","optional":"Optional","clear":"Clear","back":"Back","submit":"Submit","validation":{"patientSignatureRequired":"Patient signature is required","witnessNameRequired":"Witness name is required","witnessSignatureRequired":"Witness signature is required","doctorRequired":"Doctor is required","doctorSignatureRequired":"Doctor signature is required"}}},"tags":{"title":"Tags","label":"Tags","ok":"OK"},"tabletNumber":{"title":"Tablet number","selectTitle":"Select tablet","selectDescription":"Select a tablet to proceed"},"filter":{"title":"Filter resources","sources":"Sources","services":"Services","resetFilter":"Reset filter","status":{"done":"Done","upcoming":"Upcoming","inProgress":"In progress","canceled":"Canceled","cancelled":"Cancelled","confirmed":"Confirmed","paid":"Paid","rescheduled":"Rescheduled","missed":"Missed","arrived":"Arrived","pending":"Pending"}},"reception":{"title":"Reception","contract":"Digital Contract Signing","magazine":"Magazine","review":"Leave a Review","contractInfoTitle":"Your contract opens here","contractInfoBody":"When reception sends your contract, it opens on this tablet by itself. Please tell the receptionist you are ready to sign.","contractInfoOk":"Got it"},"connection":{"connected":"Connected","connecting":"Connecting…","reconnecting":"Reconnecting…","offline":"Offline"},"contractFlow":{"information":"Information","healthStatus":"Health Status Form","contract":"Contract","signature":"Signature","cancelFailed":"Could not cancel. Please try again."},"review":{"title":"Review","stepService":"Service","stepScoring":"Quick Scoring","stepComment":"Comment","cancel":"Cancel","back":"Back","next":"Next","submit":"Submit","submitting":"Submitting…","finish":"Finish","tokenUnidentified":"We could not identify your account from the verification code.","tokenUnreadable":"We could not read your verification. Please try again.","verifyToLoadSessions":"Please verify the code to load your visits.","sessionsLoadFailed":"Your visits could not be loaded.","submitFailed":"Your review could not be sent right now. Please try again.","verifyBeforeSubmit":"Please verify the code before sending your review.","selectServiceFirst":"Please choose a service before sending your review.","otpSendFailed":"The code could not be sent. Please try again.","otpInvalid":"That code is not correct."},"otp":{"title":"Patient mobile number","send":"Send code","sending":"Sending…","verify":"Verify","verifying":"Verifying…","enterNumberTitle":"Enter your mobile number","enterNumberSubtitle":"We will send you a verification code","mobileLabel":"Mobile number","mobilePlaceholder":"Mobile number","enterCodeTitle":"Enter verification code","codeSentTo":"We sent a code to {phone}","changeNumber":"Change phone number"},"discard":{"title":"Confirm action"},"reviewSteps":{"commentPrompt":"Would you like to share any comments with us?","commentLabel":"Comment","commentPlaceholder":"Write your comment here","scoringPrompt":"How would you rate your overall experience?","submittedTitle":"Review submitted","submittedBody":"Thank you for your feedback. We hope to see you again soon.","loadingSessions":"Loading your recent visits…","noSessionsTitle":"We could not find any visits linked to this number.","noSessionsHint":"Please use the phone number you gave at your last visit.","idLabel":"ID {id}","servicePrompt":"Which service did you receive today?","contractNumber":"Contract #{number}","sessionDetails":"Visit details","assignedStaff":"Assigned staff member"},"consentConfirmed":{"title":"Consent confirmed","description":"Your consent has been recorded.","thankYou":"Thank you","body":"We are delighted to have you with us. Your consent has been recorded. We hope you have a positive and comfortable experience, and our team is here to support you every step of the way.","closing":"Thank you again, and we wish you a great journey with us.","backToHome":"Back to home"},"notifications":{"title":"Notification preferences","transactionalTitle":"Service notifications","transactionalHint":"Used only for essential updates about your visits. At least one must stay on.","promotionalTitle":"Promotional notifications","promotionalHint":"Special offers, updates and recommendations based on your preferences.","noteLabel":"Note","noteBody":"To keep you informed and give you the best experience, we ask for your consent to send relevant notifications.","includesLabel":"This includes","includesBody":"Service messages such as booking confirmations, appointment reminders and cashback updates; at least one of these must stay on. Promotional messages such as personal discounts, offers based on your purchases and newsletters. You can choose how we contact you and change these settings at any time."},"healthStatus":{"title":"Health status","description":"Tell us about your health so we can care for you safely.","usePreviousHistory":"Use previous history","previousHistoryTitle":"Previous history","previousHistoryConfirm":"Add your previous records to this visit?","sessionIdLabel":"Visit ID: {id}","dateLabel":"Date: {date}","allergy":"Allergy","socialHistory":"Social history","familyHistory":"Family history","allergyQuestion":"Do you have any allergies?","socialHistoryQuestion":"Do you have any lifestyle or social habits that may matter for your health or treatment?","familyHistoryQuestion":"Is there a history of specific medical conditions in your family?","addNew":"Add new"},"magazine":{"title":"Digital catalog"}},"SectionBusiness":{"branchSelection":{"selectBranch":"Select Branch"},"productTypeForm":{"detailTitle":"Product Type Detail","addTitle":"Add New Product Type","discard":"Discard","save":"Save","saveChanges":"Save Changes"},"resourceGeneralInfo":{"notFoundTitle":"Resource not found","notFoundDescription":"The requested resource could not be found in this branch.","title":"Title","titlePlaceholder":"Enter title","resourceType":"Resource Type","resourceTypePlaceholder":"Choose Type","unknownName":"Unknown name","duration":"Duration","bufferTime":"Buffer Time","note":"Note","notePlaceholder":"Enter a note","discard":"Discard","saveChanges":"Save Changes"},"search":{"promotions":"Search name, type","branches":"Search Branch...","services":"Search Services","subServices":"Search Name, Code...","productsServices":"Search name, SKU, code...","productTypes":"Search name, SKU, code","consents":"Search Consent","resourceServices":"Search Service","roles":"Search role","users":"Search name, MRN"},"attributes":{"name":"Attribute Name","namePlaceholder":"Enter attribute name","defaultValue":"Default Value","defaultValuePlaceholder":"Select default value","benefits":"Benefits","benefitsPlaceholder":"Describe the benefits","usage":"Usage Instructions","usagePlaceholder":"How to use this attribute","discounts":"Available for Discounts","disclaimers":"Disclaimers","disclaimersPlaceholder":"Any disclaimers or warnings","languages":"Consultation Languages","experience":"Consultation experience","experiencePlaceholder":"e.g., 5 years","deliveryTime":"Delivery Time","deliveryTimePlaceholder":"e.g., 08:00 AM","minSession":"Min Session Time","minSessionPlaceholder":"e.g., 01:30","maxSession":"Max Session Time","maxSessionPlaceholder":"e.g., 02:00","type":"Type","typePlaceholder":"Select type","symptoms":"Symptoms","symptomsPlaceholder":"Related symptoms","ingredients":"Ingredients","ingredientsPlaceholder":"List ingredients","measurement":"Measurement","measurementPlaceholder":"How it's measured","hasConsultation":"Has consultation","yes":"Yes","no":"No","discard":"Discard","add":"Add","update":"Update","validation":{"nameRequired":"Name is required","nameMax":"Name must be less than 100 characters","benefitsRequired":"Benefits are required","benefitsMax":"Benefits must be less than 500 characters","usageRequired":"Usage is required","usageMax":"Usage must be less than 500 characters","sessionRange":"Max session time must be greater than or equal to min session time"},"list":{"columns":{"name":"Name","type":"Type","defaultValue":"Default Value","lastUpdated":"Last Updated"},"edit":"Edit","delete":"Delete","title":"Product or Services Attributes","description":"Configure and manage the specific characteristics that describe your product or service."}},"addBranch":{"title":"Add New Branch","active":"Active","business":"Business","businessPlaceholder":"Choose business","name":"Name","operationalType":"Operational Type","operationalTypePlaceholder":"Select operational type","slug":"Slug","slugPlaceholder":"Enter slug","phone":"Phone number","phonePlaceholder":"Enter phone number","currency":"Currency","currencyPlaceholder":"Select currency","timezone":"Timezone","timezonePlaceholder":"Select timezone","vatPercent":"Vat Percent","vatPercentPlaceholder":"Enter vat percent","mapLink":"Google Map Link","mapLinkPlaceholder":"Enter google map link","sheryanId":"Sheryan Facility id","sheryanIdPlaceholder":"Enter sheryan facility id","facilityName":"Facility Name","facilityNamePlaceholder":"Enter facility name","onboardingId":"Onboarding Facility id","onboardingIdPlaceholder":"Enter onboarding facility id","address":"Address","addressPlaceholder":"Click to add address","comingSoon":"Coming Soon","discard":"Discard","creating":"Creating...","submit":"Add Branch","validation":{"businessRequired":"Business is required","nameRequired":"Name is required","max100":"Maximum 100 characters","max50":"Maximum 50 characters","decimal":"Please enter a valid decimal number","phoneRequired":"Phone is required","max20":"Maximum 20 characters","max3":"Maximum 3 characters","timezoneRequired":"Timezone is required","max64":"Maximum 64 characters","max500":"Maximum 500 characters","invalidUrl":"Invalid URL","max200":"Maximum 200 characters"}},"profile":{"name":"Name","namePlaceholder":"Enter business name","consent":"Consent","consentPlaceholder":"Consent information","slug":"Slug","slugPlaceholder":"Enter slug","email":"Email","emailPlaceholder":"Enter email address","operationalType":"Operational Type","operationalTypePlaceholder":"Select operational types","phone":"Phone Number","phonePlaceholder":"Enter phone number","timezone":"TimeZone","timezonePlaceholder":"Enter timezone","sheryanId":"Sheryan Facility id","sheryanIdPlaceholder":"Enter sheryan facility id","facilityName":"Facility Name","facilityNamePlaceholder":"Enter facility name","onboardingId":"Onboarding Facility id","onboardingIdPlaceholder":"Enter onboarding facility id","address":"Address","addressPlaceholder":"Click to add address","mapLink":"Google Map Link","mapLinkPlaceholder":"Enter google map link","website":"Website","websitePlaceholder":"Enter website URL","discard":"Discard","save":"Save","validation":{"nameRequired":"Business name is required","max255":"Maximum 255 characters","slugRequired":"Slug is required","max50":"Maximum 50 characters","slugFormat":"Only letters, numbers, hyphens and underscores allowed","phoneRequired":"Phone is required","max20":"Maximum 20 characters","max254":"Maximum 254 characters","invalidEmail":"Invalid email","max500":"Maximum 500 characters","invalidUrl":"Invalid URL","timezoneRequired":"Timezone is required","max64":"Maximum 64 characters"}},"timeOff":{"repeat":{"does-not-repeat":"Does not repeat","daily":"Daily","every-working-day":"Every working day","weekly":"Weekly on Tuesday","monthly":"Monthly on the fourth Tuesday","annually":"Annually on 28 October","custom":"Custom"},"unit":{"day":"Day","week":"Week","month":"Month","year":"Year"},"createFailed":"Failed to create time off","updateFailed":"Failed to update time off","editTitle":"Edit time off","addTitle":"Add time off","loading":"Loading time-off data...","allDay":"All day","repeatEvery":"Repeat Every","endRepeat":"End Repeat","never":"Never","on":"On","after":"After","times":"Time","cancel":"Cancel","title":"Title","startDate":"Start date","endDate":"End date","updating":"Updating...","adding":"Adding...","update":"Update","add":"Add"},"rooms":{"mins":"Mins","addResource":"Add Resource","addTitle":"Add New Resource","title":"Title","titlePlaceholder":"Enter title","type":"Type","typePlaceholder":"Choose Type","types":{"laser":"Laser","consultation":"Consultation","treatment":"Treatment"},"duration":"Duration","enter":"Enter","bufferTime":"Buffer Time","note":"Note","notePlaceholder":"Enter note here","active":"Active","discard":"Discard","resources":"Resources","emptyTitle":"No rooms configured for this branch yet.","emptyDescription":"Tap 'Add Room' to start building your workspace inventory.","unnamed":"Unnamed Room","setting":"Setting","selectType":"Select type","typeN":"Type {n}"},"consent":{"active":"Active","history":"History","delete":"Delete","title":"Consent Title","titlePlaceholder":"Enter consent title","direction":"Direction","directionPlaceholder":"Enter direction (e.g., RTL, LTR)","doctorSignature":"Required Doctor Signature","witness":"Required Witness","contentEnPlaceholder":"Enter consent content in English","contentArPlaceholder":"Enter consent content in Arabic","type":"Consent Type","typePlaceholder":"Select consent type","discard":"Discard","saveChanges":"Save Changes","save":"Save","validation":{"titleRequired":"Title is required","titleMax":"Title must be less than 100 characters","contentEnRequired":"English content is required","contentMax":"Content must be less than 2000 characters"}},"promotions":{"addTitle":"Add New Promotion","detailTitle":"Promotion Detail","active":"Active","name":"Promotion Name","showOn":"Show on","branch":"Branch","service":"Service","type":"Promotion Type","amount":"Amount","startDate":"Start Date","endDate":"End Date","enterValue":"Enter a value","selectMany":"Select one or more","enterAmount":"Enter amount","discard":"Discard","save":"Save","saveChanges":"Save changes"},"resources":{"title":"Title","titlePlaceholder":"Enter title","type":"Type","typePlaceholder":"Choose Type","unknownName":"Unknown name","duration":"Duration","bufferTime":"Buffer Time","note":"Note","notePlaceholder":"Enter note here","active":"Active","discard":"Discard","addResource":"Add Resource"},"schedule":{"loadingBreaks":"Loading time breaks...","saveBreaks":"Save Time Breaks","removeRange":"Remove time range","addRange":"Add time range","noBreak":"No Break","saveHoursFailed":"Failed to save working hours","copyToAllTooltip":"Copy Sunday hours to all days","copyToAll":"Copy to all days","saveSchedule":"Save Schedule","breaksSaved":"Time breaks saved","breaksSaveFailed":"Could not save time breaks"},"infoSettings":{"trn":"TRN","enterTrn":"Enter TRN","vatPercent":"Vat Percent","enterVatPercent":"Enter VAT percent","taxRule":"Tax Rule","selectTaxRule":"Select tax rule","baseCurrency":"Base Currency","selectBaseCurrency":"Select base currency","discard":"Discard","save":"Save","chooseAllUser":"Choose all User","noUsersFound":"No users found","removeAllUser":"Remove all User","close":"Close","addNewResource":"Add New Resource","addResource":"Add Resource","title":"Title","eGVacationDoctorS":"e.g. Vacation, Doctor's appointment","startDate":"Start date","startTime":"Start time","endDate":"End date","endTime":"End time","allDay":"All day","cancel":"Cancel","repeatEvery":"Repeat Every","endRepeat":"End Repeat","time":"Time","noServicesAssignedToThis":"No services assigned to this resource yet","all":"All","addTimeOff":"Add time off","copySundayHoursToAll":"Copy Sunday hours to all days","saveSchedule":"Save Schedule","timeOff":"Time Off","manageTimeOffSchedulesAnd":"Manage time-off schedules and breaks","edit":"Edit","delete":"Delete","deleteTimeOff":"Delete Time Off","areYouSureYouWant":"Are you sure you want to delete this time off entry? This action cannot be undone.","loadingTimeOffEntries":"Loading time-off entries...","type":"Type","startDateTime":"Start Date & Time","endDateTime":"End Date & Time","duration":"Duration","actions":"Actions","generalInfoChangeLog":"General Info Change Log","recentlyLogs":"Recently Logs","date":"Date","ok":"Ok","changeLog":"Change Log","deleteBranch":"Delete Branch","branchIcon":"Branch icon","uploadPhoto":"Upload photo","branches":"Branches","business":"Business","workSchedule":"Work Schedule","setYourBusinessHoursFor":"Set your business hours for each day of the week","timeBreak":"Breaks","colRole":"Role","colAssignedUsers":"Assigned Users","system":"System","viewPermissions":"View permissions","cloneRole":"Clone role","untitledResource":"Untitled Resource","resourceMenu":{"general_info":"General Info","services":"Services","time-schedule":"Work Schedule","time-break":"Breaks","time-off":"Time Off"},"editTimeOff":"Edit time off","repeatNotRepeat":"Does not repeat","repeatDaily":"Daily","repeatWeekly":"Weekly on Tuesday","repeatMonthly":"Monthly on the fourth Tuesday","repeatYearly":"Annually on 28 October","repeatCustom":"Custom","unitDay":"Day","unitWeek":"Week","unitMonth":"Month","unitYear":"Year","unknown":"Unknown","scheduleValidation":{"endAfterStart":"End time must be after start time"},"timeOffValidation":{"dateRequired":"Date is required","invalidTime":"Invalid time","startDateInvalid":"Please provide a valid start date","endDateInvalid":"Please provide a valid end date","startTimeRequired":"Start time is required","endTimeRequired":"End time is required","repeatEveryMin":"Repeat every must be at least 1","repeatUnitRequired":"Repeat unit is required","endRepeatDateRequired":"End repeat date is required","endAfterRequired":"End after occurrences is required"},"breakValidation":{"startTimeRequired":"Start time is required","endTimeRequired":"End time is required","endAfterStart":"End time must be after start time","noOverlap":"Time slots cannot overlap"}},"productsServices":{"generalinfo":"GeneralInfo","clients":"Clients","discard":"Discard","saveChanges":"Save changes","active":"Active","writeSomethingAwesome":"Write something awesome...","hospitalService":"Hospital Service","images":"Images","connectedServices":"Connected Services","enableDisableOrAdjustAccess":"Enable, disable, or adjust access for each service client","attributes":"Attributes","addProductOrServiceAttributes":"Add product or service attributes to describe your item clearly.","newAttribute":"New Attribute","consent":"Consent","manageOrUpdateTheContract":"Manage or update the contract associated with this product/service","selectOrSearchConsentForm":"Select or search consent form","productId":"Product ID","enterProductId":"Enter product ID","platform":"Platform","selectPlatform":"Select platform","add":"Add","update":"Update","addUniqueIdsToLink":"Add unique IDs to link your stores or branches within the system.","newStoreId":"New Store id","storeIdentifiers":"Store Identifiers","manageAndConfigureUniqueIds":"Manage and configure unique IDs assigned to each store or branch in your system.","storeIds":"Store IDs","subService":"Sub Service","subServices":"Sub Services","thisServiceIsAssociatedWith":"This service is associated with the following related products or services.","type":"Type","actions":"Actions","consents":"Consents","storeIds2":"Store ids","overview":"Overview","units":"Units","score":"Score","noInventoryAvailable":"No inventory available","thisProductServiceInventoriesWill":"This product/service inventories will be displayed here","pricingCurrencyPerBranch":"Pricing & Currency Per Branch","salesPricePerUnits":"Sales Price Per Units","salesTaxes":"Sales Taxes","costPricePerUnits":"Cost Price Per Units","purchaseTaxes":"Purchase Taxes","commissionRate":"Commission Rate","fixedPrice":"Fixed Price","deliveryCost":"Delivery Cost","discount":"Discount","selectType":"Select type","choose":"Choose","priceRange":"Price Range","productServiceFilter":"Product & Service Filter","exportFile":"Export File","importFile":"Import File","addNewProductService":"Add New Product Service","new":"New","editProductType":"Edit product type","symbol":"Symbol","name":"Name","parent":"Parent","selectParent":"Select parent","newProductType":"New Product Type","newPromotion":"New Promotion","thisProductserviceInventoriesWillBe":"This product/service inventories will be displayed here","colInventory":"Inventory","colAvailableStock":"Available Stock","colMinimumStock":"Minimum Stock","colLastUpdated":"Last Updated","colLastTransaction":"Last Transaction","colCode":"Code","colType":"Type","colCategoryName":"Category / Name","colBasePrice":"Base Price","colCostPrice":"Cost Price","colFixedPrice":"Fixed Price","unknown":"Unknown","colId":"ID","colTypeName":"Type Name","colDateCreated":"Date Created","colName":"Name","colStartDate":"Start Date","colEndDate":"End Date","colProductId":"Product ID","colPlatform":"Platform","edit":"Edit","delete":"Delete","cover":"Cover"}},"SectionUserReferral":{"hero":{"linkCopied":"Link copied!","youNowHave":"You now have:","bonusPoints":"2,000 bonus points","walletCredit":"AED 50 wallet credit","firstBookingDiscount":"A discount on your first booking","shareViaEmail":"Share via Email","shareViaWhatsApp":"Share via WhatsApp","shareViaTelegram":"Share via Telegram","firstName":"First name","mobileNumber":"Mobile number","referralCode":"Referral Code","referralCodeHelper":"Referral code auto-detected from your invite link","cancel":"Cancel","joinAndClaim":"Join & Claim AED 50","successTitle":"You’ve successfully claimed your reward","readyToUse":"Ready to use your rewards? Download the app and book now!","appStore":"App Store","googlePlay":"Google Play","startBookingOnWhatsApp":"Start Booking on WhatsApp","backToWebsite":"Back to the Elegant Hoopoe website","logoAlt":"Elegant Hoopoe","partOfLine1":"A part of","partOfLine2":"elegant hoopoe","hey":"Hey!","inviteFriends":"Invite friends","iAm":"I'm {name}","bothEarn":"You both earn AED 50!","signupDescription":"I'm inviting you to try Elegant Hoopoe and get rewarded.","inviteDescription":"Share your unique link. When your friend joins and after receiving service, you both get rewarded","alreadyReceived":"Already received a link?","fillDetails":"Fill in your details and claim your AED 50 reward instantly!","claimReward":"Claim your reward here","copied":"Copied!","copyMyLink":"Copy My Link"},"howItWorks":{"title":"How\nIt\nWorks?","step1":"Share your\nreferral link","step2":"Your friend signs up & After receiving service","step3":"Get rewarded:\nAED 50 each","imageAlt":"How it works"},"invitation":{"messageCopied":"Message copied!","shareTitle":"Join Elegant Hoopoe","title":"Your invitation message is ready to go!","messageLine1":"Hey! I'm using elegant hoopoe and I love it.","messageLine2":"Use my link to join and we'll both get <strong>AED 50</strong>","copied":"Copied!","copyMessage":"Copy Message","share":"Share"},"readyToEarnYourReward":"Ready to earn your reward?","startSharingAndStartEarning":"Start sharing and start earning today!","shareNow":"Share Now","faq":"FAQ","whenDoIReceiveMy":"When do I receive my AED 50 reward?","afterYourFriendCompletesTheir":"After your friend completes their first full-paid service.","canIReferMoreThan":"Can I refer more than one friend?","whereDoRewardsShowUp":"Where do rewards show up?","doesMyFriendNeedTo":"Does my friend need to enter my code?","rewardDetails":"Reward Details","whatYouAndYourFriend":"What You and Your Friend Will Get","forYou":"For You","forYourFriend":"For Your Friend","extraDiscountOnTheirFirst":"Extra discount on their first booking","programRules":"Program Rules","readFullRules":"Read Full Rules","rewardCopy":{"earnWhenFriendCompletes":"Earn {reward} when your friend completes a service","rewardAfterFirstService":"{reward} reward after first service"},"share":{"message":"Hey! I'm using Elegant Hoopoe and I love it.\nUse my link to join and we'll both get {reward}!","emailSubject":"Join Elegant Hoopoe - Get {reward}!","telegramText":"Hey! I'm using Elegant Hoopoe and I love it. Use my link to join and we'll both get {reward}!"}},"SectionChatModule":{"noMessagesTitle":"No messages yet","noMessagesDescription":"Send the first message to get started","markAsImportant":"Mark as Important","markAsUnread":"Mark as Unread","moveToArchive":"Move to Archive","contactDetails":"Contact details","leadInformation":"Lead Information","moreOptions":"More options","idLabel":"ID: {id}","call":"Call","whatsApp":"WhatsApp","email":"Email"},"SectionConsents":{"policyContractDetail":{"title":"Policy Contract Detail","defaultTitle":"Policy Contract","details":"Details","contractId":"Contract ID","contractType":"Contract Type","createdDate":"Created Date","signedDate":"Signed Date","signedTime":"Signed Time","status":"Status","download":"Download","close":"Close","sendToTablet":"Send to Tablet"}},"MessagingNewConversation":{"resendTitle":"Resend Message","newMessageTitle":"New Message","sendFailed":"Failed to send message","discard":"Discard","send":"Send"},"MessagingTemplateSend":{"title":"Send WhatsApp template","description":"Pick an approved template, fill in its blanks and send.","descriptionReopen":"Templates reach the customer even after the 24-hour reply window closes.","to":"To","via":"via {channel}","mobile":"Mobile number","channel":"Send from","channelPlaceholder":"Choose a WhatsApp number","template":"Template","templatePlaceholder":"Search templates","pickChannelFirst":"Choose the WhatsApp number to send from first","fillIn":"Fill in the blanks","noBlanks":"This template has no blanks. It is sent as shown.","variable":"Variable {n}","headerVariable":"Header text","buttonLink":"Link for “{button}”","example":"e.g. {value}","media":{"IMAGE":"Header image link","VIDEO":"Header video link","DOCUMENT":"Header document link"},"mediaHint":{"IMAGE":"A public link to a JPG or PNG, up to 5 MB.","VIDEO":"A public link to an MP4, up to 16 MB.","DOCUMENT":"A public link to a PDF, up to 100 MB."},"preview":"Preview","previewEmptyTitle":"No template yet","previewEmpty":"Pick a template to see the message as the customer will.","cancel":"Cancel","send":"Send","sent":"Template sent","sendFailed":"The template could not be sent. Please try again.","errors":{"required":"Required","url":"Enter a link that starts with https://"}},"SectionDocuments":{"search":{"folderOrFile":"Search Folder or File...","messagingTeams":"Search messaging teams"},"dialogs":{"createFolderTitle":"Create New Folder","folderName":"Folder name","creating":"Creating…","create":"Create","uploadTitle":"Upload File","fileName":"File name","uploadingPercent":"Uploading {percent}%","uploading":"Uploading…","upload":"Upload","renameTitle":"Edit Name","saving":"Saving…"},"list":{"loading":"Loading documents…","folders":"Folders","files":"Files","documentActions":"Document actions","name":"Name","type":"Type"},"toolbar":{"filter":"Filter documents","tableView":"Switch to table view","gridView":"Switch to grid view","newFolder":"New Folder","viewMode":"View"},"filters":{"all":"All","images":"Images","pdfs":"PDFs","documents":"Documents","videos":"Videos"},"actions":{"permission":"Permission","copyLink":"Copy Link","share":"Share","edit":"Edit","delete":"Delete"},"permissions":{"canView":"Can view","canEdit":"Can edit","owner":"Owner","canDelete":"Can delete","teamFallback":"Team {id}","unknownTeam":"Unknown team","membersCount":"{count, plural, one {# member} other {# members}}","info":"Info","properties":"Properties","size":"Size","modified":"Modified","sharedWith":"Shared with","public":"Public","publicNotice":"This folder is public and visible to all team members.","loadingTeams":"Loading messaging teams…","viewTeamPermissions":"View messaging team permissions","selectDocument":"Select a document to manage permissions.","messagingTeam":"Messaging team","notSet":"Permission not set for this messaging team.","loading":"Loading permissions…","loadTeamsFailed":"Failed to load messaging teams."},"share":{"title":"Share with Messaging Team","selectDocument":"Select a document before sharing with messaging teams.","selectTeam":"Select a messaging team to manage permissions.","notSetHint":"Permission not set for this messaging team. Enable a switch to grant access."},"empty":{"title":"No files yet","description":"Add or upload your first file to this folder"},"title":"File Manager","errorContext":"Document management","messages":{"duplicateRenamed":"A file named \"{name}\" already exists. Renamed to \"{candidate}\".","createFolderFailed":"Unable to create folder.","uploadFailed":"Unable to upload file.","renameFolderFailed":"Unable to rename folder.","renameFileFailed":"Unable to rename file.","moved":"Moved \"{file}\" to \"{folder}\".","moveFailed":"Unable to move file.","loadFailed":"Unable to load documents.","noUploadAccess":"Your role can't upload documents."},"folderFallback":"Folder {slug}","description":"Your clinic's private files: contracts, licences, policies and marketing assets.","sort":{"label":"Sort","name":"Name","recent":"Recently updated","largest":"Largest first"},"storage":{"label":"Storage","usedOf":"{used} of {limit}","usedOnly":"{used} used","empty":"No files yet","kinds":{"image":"Images","pdf":"PDFs","video":"Videos","audio":"Audio","document":"Documents","other":"Other"},"almostFullTitle":"Storage is almost full","fullTitle":"Storage is full","almostFullDescription":"{used} of {limit} used. Delete files you no longer need, or upgrade your plan for more space.","showLargest":"Show largest files","inTrash":"In Trash"},"trash":{"title":"Trash","open":"Open Trash","caption":"Deleted files and folders stay here for 30 days, then they are deleted forever. Until then they still use storage.","items":"Deleted items","empty":"Empty trash","emptyTitle":"Empty the Trash?","emptyBody":"{count, plural, one {# item} other {# items}} will be deleted forever. This cannot be undone.","emptyStateTitle":"Trash is empty","emptyStateSubtitle":"Deleted files and folders appear here for 30 days.","restore":"Restore","restored":"{name} restored","restoredToTop":"{name} restored to the top of Documents (its folder was deleted)","restoreFailed":"Could not restore it. Try again.","purge":"Delete forever","purgeTitle":"Delete forever?","purgeBody":"{name} will be deleted forever and its storage freed. This cannot be undone.","purgeFailed":"Could not delete it. Try again.","fileCount":"{count, plural, one {# file} other {# files}}","deletedBy":"Deleted {date} by {name}","deletedOn":"Deleted {date}","restoresToTop":"Restores to the top (its folder was deleted)","daysLeft":"{count, plural, =0 {Deleted today} one {# day left} other {# days left}}","movedToTrash":"{name} moved to Trash"}},"SectionCatalogShared":{"branches":{"title":"Branch","caption":"Applies to all branches by default. Turn off “All” to pick specific branches.","applyAll":"Apply to all branches","allBranches":"All branches","noBranches":"No branches available."},"priceCells":{"floorTooltip":"Floor price: the lowest this may be discounted to.","noCostTooltip":"No purchase cost recorded, so margin can't be calculated.","noCost":"No cost"},"status":{"discontinued":"Discontinued","sellable":"Sellable"}},"Statuses":{"SESSION":{"PN":"Pending","CO":"Confirmed","A":"Arrived","D":"Done","R":"Rescheduled","M":"Missed","C":"Cancelled"},"ORDER":{"SC":"In process, scheduled","RP":"Order has been replaced","IP":"In process, unspecified","HD":"Order is on hold","ER":"Order was discontinued","DC":"Order was discontinued","CM":"Order is completed","CA":"Order was canceled","A":"Some, but not all, results available"},"INVOICE":{"canceled":"Canceled","pending":"Pending","pending_stock":"Pending Stock","overdue":"Overdue","paid":"Paid","void":"Void","incomplete":"Incomplete","finished":"Finished","refunded":"Refunded","expired":"Expired","trial":"Trial"},"INVOICE_ITEM":{"pending":"Pending","in_progress":"In progress","done":"Done"},"REWARD_REQUEST":{"pending":"Pending","approved":"Approved","rejected":"Rejected","paid":"Paid","completed":"Completed"},"PAYMENT":{"pending":"Pending","paid":"Paid","refunded":"Refunded"},"WALLET_TRANSACTION":{"pending":"Pending","used":"Used","expired":"Expired"},"REPORT_REQUEST":{"pending":"Pending","completed":"Completed"},"CONSENT_RECORD":{"not_signed":"Not Signed","signed":"Signed","revoked":"Revoked"},"RAFFLE_MODEL":{"3":"Inactive","4":"Active","5":"Completed"},"PACKAGE":{"cancel":"Cancel","done":"Done","in_progress":"Inprogress"},"HEALTH_TIP":{"draft":"Draft","scheduled":"Scheduled","published":"Published","expired":"Expired"},"COMMISSION_PLAN":{"draft":"Draft","approved":"Approved","archived":"Archived"},"COMMISSION":{"pending_payment":"Pending Payment","pending":"Pending","approved":"Approved","paid":"Paid","cancelled":"Cancelled","reversed":"Reversed"},"DEVICE":{"active":"Active","inactive":"Inactive","under_maintenance":"Under Maintenance"},"CAMPAIGN":{"draft":"Draft","scheduled":"Scheduled","in_progress":"In Progress","completed":"Completed","paused":"Paused","cancelled":"Cancelled"},"CAMPAIGN_RECIPIENT":{"pending":"Pending","queued":"Queued","sent":"Sent","delivered":"Delivered","read":"Read","failed":"Failed","skipped":"Skipped"},"TASK":{"todo":"To Do","in_progress":"In Progress","in_review":"In Review","done":"Done"},"FINANCIAL_TRANSFER":{"draft":"Draft","posted":"Posted","cancelled":"Cancelled","reconciled":"Reconciled"},"BUDGET":{"approved":"Approved","over_budget":"Over Budget","wrapped":"Wrapped","draft":"Draft"},"GOODS_RECEIPT_NOTE":{"DRAFT":"Draft","CONFIRMED":"Confirmed","CANCELLED":"Cancelled"},"VENDOR_BILL":{"draft":"Draft","posted":"Posted","cancelled":"Cancelled"},"ASSET":{"draft":"Draft","posted":"Posted","active":"Active","depreciating":"Depreciating","fullydepreciated":"Fully Depreciated","disposed":"Disposed","sold":"Sold","scrapped":"Scrapped","reversed":"Reversed","cancelled":"Cancelled"},"EMPLOYEE_WORK":{"working":"Working","not_working":"Not Working","on_leave":"On Leave","on_break":"On Break"},"POS_SETTLEMENT_BATCH":{"pending":"Pending","expected":"Expected","matched":"Matched","posted":"Posted","cancelled":"Cancelled"},"BNPL_SETTLEMENT_BATCH":{"pending":"Pending","expected":"Expected","matched":"Matched","posted":"Posted","cancelled":"Cancelled"},"BANK_RECONCILIATION_EXCEPTION":{"pending":"Pending","resolved":"Resolved","ignored":"Ignored"},"ISSUED_CHEQUE":{"issued":"Issued","cleared":"Cleared","bounced":"Bounced","cancelled":"Cancelled"},"COMMISSION_RULES":{"active":"Active","inactive":"Inactive","expired":"Expired","next_rules":"Next Rules"},"PETTY_CASH_RECONCILIATION":{"draft":"Draft","posted":"Posted"},"CASH_DEPOSIT":{"draft":"Draft","posted":"Posted"},"E_INVOICE":{"draft":"Draft","ready":"Ready","submitted":"Submitted","accepted":"Accepted","rejected":"Rejected","failed":"Failed"},"PAY_RUN":{"draft":"Draft","processing":"Processing","completed":"Completed","cancelled":"Cancelled","pending_approval":"Pending Approval","approved":"Approved","posted":"Posted","paid":"Paid","closed":"Closed","reversed":"Reversed"},"TIME_OFF":{"draft":"Draft","submitted":"Submitted","approved":"Approved","rejected":"Rejected","cancelled":"Cancelled"},"PAY_RUN_ENTRY":{"pending":"Pending","paid":"Paid"},"PURCHASE_REQUEST":{"DRAFT":"Draft","APPROVED":"Approved","PARTIALLY_RECEIVED":"Partially Received","FULLY_RECEIVED":"Fully Received","CANCELLED":"Cancelled","CLOSED":"Closed"},"COUNT_SESSION":{"DRAFT":"Draft","IN_PROGRESS":"In Progress","REVIEW":"Review","POSTED":"Posted","CANCELLED":"Cancelled","REVERSED":"Reversed"},"STOCK_TRANSFER":{"DRAFT":"Draft","SENT":"Sent","PARTIALLY_RECEIVED":"Partially Received","COMPLETED":"Completed","CANCELLED":"Cancelled"},"INTER_BRANCH_TRANSFER":{"DRAFT":"Draft","SENT":"Sent","PARTIALLY_RECEIVED":"Partially Received","COMPLETED":"Completed","CANCELLED":"Cancelled"},"RETURN_ORDER":{"DRAFT":"Draft","PENDING_INSPECTION":"Pending Inspection","INSPECTED":"Inspected","APPROVED":"Approved","REJECTED":"Rejected","COMPLETED":"Completed","CANCELLED":"Cancelled"},"INSURANCE_CLAIM_DRAFT":{"draft":"Draft","ready":"Ready for Submission","submitted":"Submitted","accepted":"Accepted by Payer","processing":"Processing","adjudicated":"Adjudicated","approved":"Approved","partial":"Partially Paid","paid":"Paid","rejected":"Rejected","denied":"Denied","appealed":"Appealed","voided":"Voided","queued":"Queued","resubmitted":"Resubmitted"},"INSURANCE_PLAN_VERSION":{"draft":"Draft","active":"Active","suspended":"Suspended","expired":"Expired"},"QUOTATION":{"draft":"Draft","sent":"Sent","accepted":"Accepted","rejected":"Rejected","expired":"Expired","converted":"Converted"}},"SectionAccountingShared":{"createIncoterm":"Create Incoterm","name":"Name","code":"Code","enterCode":"Enter code","createPaymentMethod":"Create Payment Method","selectAccountType":"Select account type","validation":{"atLeastOneOrderItemWith":"At least one order item with a product is required when Quick Add is disabled"}},"SectionAccountingCurrencyRates":{"validation":{"rateIsRequired":"Rate is required","rateMustBeGreaterThan0":"Rate must be greater than 0","fromAndToCurrenciesMustDiffer":"From and To currencies must differ"}},"SectionPublicBooking":{"yourBookingRequestHasBeen":"Your booking request has been sent.","couldNotCompleteThisBooking":"Could not complete this booking. Please try again.","onlineBooking":"Online booking","onlinePaymentAvailable":"Online payment available","chooseAService":"Choose a service","services":"Services","noOnlineServicesAreAvailable":"No online services are available right now.","pleaseContactTheClinicFor":"Please contact the clinic for booking options.","branches":"Branches","clinicProfile":"Clinic profile","meetTheTeam":"Meet the team","reserveYourAppointment":"Reserve your appointment","pickAServiceAndBranch":"Pick a service and branch to see live availability.","service":"Service","branch":"Branch","preferredDate":"Preferred date","availableTimes":"Available times","timesAppearAfterSelectingA":"Times appear after selecting a service, branch, and date.","noOpeningsOnThisDate":"No openings on this date. Try another day.","firstName":"First name","phoneNumber":"Phone number","noteOptional":"Note (optional)","clinicMap":"Clinic map","instagram":"Instagram","facebook":"Facebook","priceFrom":"From <price></price>"},"SectionFranchisePortal":{"title":"Franchise Portal","description":"Access resources, tools, and materials for your franchise.","viewFiles":"View Files","cards":{"sega":{"title":"SEGA","description":"elegant hoopoe’s franchise architecture unifies operations, brand intelligence and growth in one AI-powered ecosystem, built to scale luxury wellness clinics with speed and precision."},"salesTools":{"title":"Sales Tools","description":"Includes ready-to-use resources such as sale tools and campaign templates.  Designed to support branch managers in increasing and enhancing clinic visibility from within."},"clinicalResources":{"title":"Clinical Resources","description":"Full range of clinical resources, including treatment protocols, service flowcharts, equipment operation guides, hygiene checklists, and patient care standards. "},"practiceMarketing":{"title":"Practice Marketing","description":"Expand your brand’s reach with comprehensive marketing materials and strategies for attracting new clients."},"shopAccessories":{"title":"Shop Accessories","description":"Explore a curated selection of beauty accessories and professional tools to elevate your clinic’s offerings."},"webinars":{"title":"Webinar & Seminar","description":"Explore expert webinars designed to empower franchise owners in the beauty and wellness industry.Exclusive events by elegant hoopoe are crafted to support your journey."},"compliance":{"title":"Essential Health Compliance & Rules","description":"provides access to up-to-date health regulations, compliance checklists, and operational guidelines aligned with DHA (Dubai Health Authority) standards."},"humanResource":{"title":"Human Resource","description":"Comprehensive rules, resources, and strategies to support effective team management, staff development, and sustainable workforce growth aligned with elegant hoopoe’s standards"},"mediaFiles":{"title":"Media Files","description":"Browse and download high quality images, videos, and promotional materials for your marketing campaigns."},"academy":{"title":"hoopoe Academy","description":"Discover expert-led courses and tutorials designed to advance your skills in beauty, wellness, and business management."},"branding":{"title":"Branding","description":"Boost your clinic’s growth with in-house marketing strategies and tools tailored for staff engagement and client retention."}}},"ViewAppServiceLines":{"title":"Service lines","tooltip":"Net sales (excl. VAT) of each line (your top-level catalogue categories) for the month. The colour compares the month's pace with the line's normal level (average of the previous six months): green at or above it, amber within 15%, red below. A running month is projected from its completed days. Same figures as the Telegram owner report.","periodAria":"Month","thisMonth":"This month","lastMonth":"Last month","total":"Net sales","totalSoFar":"Net sales so far","onPace":"On pace for","sameMonthLastYear":"Same month last year","vsLastMonth":"vs last month","vsLastYear":"vs last year","shareOfSales":"{pct}% of sales","normal":"Normal","best":"Best","margin":"Margin","subLines":"{count, plural, one {# sub-category} other {# sub-categories}}","uncategorised":"No category","uncategorisedHint":"Items without a category. Set one in Catalog","paceVsNormal":"Pace vs normal level","emptyTitle":"No sales this month yet","emptyDescription":"Sales lines appear once invoices are billed in the month.","details":"Details","openLine":"Open {name}","trendTitle":"Last 13 months","breakdownTitle":"Sub-categories and products","breakdownEmpty":"No sales in this line for the month","searchPlaceholder":"Search products","colName":"Category / product","colValue":"This month","colUnits":"Units","expand":"Expand","collapse":"Collapse"},"SectionSettingsMedicalRecordCategories":{"entity":"Medical record category","title":"Medical record categories","description":"Choose which record categories your clinic uses. Switched-off categories leave the medical record page; records already written under them stay readable.","colName":"Category","colGroup":"Group","colStatus":"Status","required":"Required","requiredHint":"Every form without its own category falls back to this one, so it stays on."},"ClubAnalytics":{"title":"Customer Club analytics","disabledDescription":"Enable the Customer Club master switch to see analytics for your clinic.","description":"At-a-glance KPIs across your loyalty audience plus a leaderboard of top performers.","goldMembers":"Gold tier members","churnRisk":"At churn risk","churnRiskHelper":"Silver/Gold, no visit ≥ 90 days","activeReferrers":"Active referrers","birthdaysSoon":"Birthdays next 7 days","leaderboard":"Leaderboard","metric":"Metric","topReferrers":"Top referrers","topPointEarners":"Top point earners","period":"Period","periodDay":"Last day","periodWeek":"Last week","periodMonth":"Last month","periodYear":"Last year","periodAllTime":"All time","empty":"No data for this period yet.","unitPoints":"points","unitReferrals":"referrals"},"PrintDocument":{"common":{"items":"Items ({count})","qty":"Qty","unitPrice":"Unit Price","unitCost":"Unit Cost","total":"Total","totalAmount":"Total Amount","subtotal":"Subtotal","subtotalExclVat":"Subtotal (excl. VAT)","discount":"Discount","vat":"VAT","vatWithRate":"VAT ({rate}%)","notes":"Notes","termsConditions":"Terms & Conditions","reference":"Reference","date":"Date","created":"Created","createdBy":"Created By","branch":"Branch","customer":"Customer","supplier":"Supplier","vendor":"Vendor","vendorFallback":"Vendor #{id}","warehouse":"Warehouse","name":"Name","status":"Status","type":"Type","reason":"Reason","product":"Product","productFallback":"Product #{id}","additionalInfo":"Additional Info","totalItems":"Total Items","totalQuantity":"Total Quantity","totalValue":"Total Value","lot":"Lot: {code}","expiry":"Exp: {date}","uom":"UoM: {name}","printTitle":"Print {doc}","downloadPdf":"Download PDF","preparing":"Preparing…","voidBadge":"VOID","method":"Method","account":"Account","memo":"Memo","bank":"Bank","paymentMethod":"Payment Method","preparedBy":"Prepared By","approvedBy":"Approved By","receivedBy":"Received By","receivedOn":"Received On","authorisation":"Authorisation","description":"Description","number":"Number","category":"Category","amountExclVat":"Amount (excl. VAT)","vatAmount":"VAT Amount","dueDate":"Due Date","roundOff":"Round Off","balanceDue":"Balance Due"},"quotation":{"title":"Quotation","preparedFor":"Prepared For","details":"Quotation Details","validUntil":"Valid Until","summary":"Quotation Summary"},"creditNote":{"title":"Tax Credit Note","details":"Credit Note Details","againstInvoice":"Against Invoice","invoiceDate":"Invoice Date","netExclVat":"Net (excl. VAT)","totalCredited":"Total Credited","lines":"Lines ({count})","net":"Net","lineFallback":"Line #{id}","returnedToStock":"Returned to stock","summary":"Credit Note Summary","reason":"Reason"},"purchaseOrder":{"title":"Purchase Order","vendorRef":"Vendor Ref","delivery":"Delivery","buyer":"Buyer","details":"Order Details","expectedArrival":"Expected Arrival","items":"Order Items ({count})","summary":"Order Summary"},"grn":{"title":"Goods Receipt Note","destination":"Destination","source":"Source","details":"Receipt Details","number":"GRN Number","receiptDate":"Receipt Date","receivedBy":"Received By","poReference":"PO Reference","vendorBill":"Vendor Bill","items":"Received Items ({count})","qtyReceived":"Qty Received","qtyRejected":"Qty Rejected","summary":"Receipt Summary"},"returnOrder":{"title":"Return Order","details":"Return Details","number":"Return Number","warehouseSupplier":"Warehouse & Supplier","warehouseBranch":"Warehouse & Branch","datesPeople":"Dates & People","inspected":"Inspected","completed":"Completed","items":"Return Items ({count})","qtyReturned":"Qty Returned","inspection":"Inspection","summary":"Return Summary"},"paymentVoucher":{"title":"Payment Voucher","ref":"Payment {ref}","paidTo":"Paid To","paymentNo":"Payment No","details":"Payment Details","paymentDate":"Payment Date","totalPaid":"Total Paid","allocation":"Invoice Allocation ({count})","invoiceNo":"Invoice No","invoiceAmount":"Invoice Amt","dueBefore":"Due Before","paid":"Paid","dueAfter":"Due After","summary":"Voucher Summary"},"cheque":{"ref":"Cheque #{number}","subject":"Cheque Payment Voucher","payee":"Payee","details":"Cheque Details","number":"Cheque No","date":"Cheque Date","dates":"Dates","issueDate":"Issue Date","clearedDate":"Cleared Date","amount":"Cheque Amount","status":"Cheque Status"},"journalEntry":{"title":"Journal Entry","ref":"Journal Entry {ref}","superseded":"Superseded","state":{"draft":"Draft","posted":"Posted","cancel":"Cancelled"},"details":"Entry Details","journal":"Journal","source":"Source","sourceDocument":"Source Document","postedBy":"Posted By","totalDebit":"Total Debit","totalCredit":"Total Credit","balanced":"Balanced","outOfBalance":"Out of Balance","lines":"Lines ({count})","debit":"Debit","credit":"Credit","narration":"Narration","summary":"Entry Summary"},"expense":{"title":"Expense Voucher","ref":"Expense {ref}","status":{"posted":"Posted","draft":"Draft","submitted":"Submitted","approved":"Approved","rejected":"Rejected","cancelled":"Cancelled"},"details":"Expense Details","claimPosting":"Claim & Posting","employee":"Employee","paymentSource":"Payment Source"},"vendorBill":{"title":"Vendor Bill","refundTitle":"Refund","details":"Bill Details","number":"Bill No","date":"Bill Date","summary":"Bill Summary"},"advance":{"title":"Advance Payment Voucher","ref":"Advance {ref}","status":{"open":"Open","applied":"Fully applied","refunded":"Refunded","cancelled":"Cancelled"},"number":"Advance No","details":"Advance Details","date":"Advance Date","paidFrom":"Paid From","amount":"Advance Amount","appliedToBills":"Applied to Bills","remaining":"Remaining","appliedCount":"Applied to Bills ({count})","applied":"Applied"},"treatmentPlan":{"title":"Treatment Plan","clinicalTitle":"Clinical Treatment Plan","ref":"Treatment Plan #{id}","noDiagram":"No diagram","patient":"Patient","customerId":"Customer ID","plan":"Plan","details":"Plan Details","planTitle":"Title","diagram":"Diagram","schedule":"Schedule","doctor":"Doctor","startDate":"Start date","targetEnd":"Target end","estimatedTotal":"Estimated total","goals":"Treatment goals","areas":"Treatment areas","procedures":"Planned procedures ({count})","serviceArea":"Service / Area","sessions":"Sessions","lineTotal":"Line total","noProcedures":"No procedures planned.","summary":"Plan Summary","notesAftercare":"Notes / Aftercare","printMode":"Print mode","patientCopy":"Patient copy","clinicalCopy":"Clinical copy","procedure":"Procedure","targetArea":"Target area","treatmentFallback":"Treatment","clinicalNotes":"Clinical notes","treatingDoctor":"Treating doctor","doctorSignature":"Doctor signature","patientAcknowledgement":"Patient acknowledgement","diagramAlt":"Treatment diagram"}},"AppDashboardSettingsNotificationsHealthPage":{"metadata_title":"Notifications Health","metadata_description":"Outbound message volume, block reasons, and provider status. Updated every minute. For per-message forensics use the event_flow CLI."},"AppDashboardSettingsIntegrationsPage":{"metadata_title":"Notification Providers","metadata_description":"Connect WhatsApp, SMS, Email, and Push notification providers. Each channel can have multiple named accounts; one is the default."},"AppDashboardSettingsNotificationPreferencesPage":{"metadata_title":"Notification Preferences","metadata_description":"Block specific phone numbers or emails from receiving marketing messages. Customers who reply STOP are added here automatically."},"PrescriptionDocument":{"viewPrint":"View & print","downloadPdf":"Download PDF","downloadArabic":"Arabic PDF","pdfFailed":"Couldn't open the prescription. Try again.","viewScan":"View scan","noScan":"No scan on file"},"DocumentLanguages":{"en":"English","ar":"Arabic","fa":"Persian","pdfIn":"{language} PDF"},"SettingsInsuranceClaims":{"page_title":"Insurance Claims","page_description":"Every claim from queue to payment: send it, record what the payer answered, and resubmit a corrected one.","entity":"claims","col_claim":"Claim","col_patient":"Patient","col_payer":"Payer","col_status":"State","col_amount":"Insurer share","col_payer_answer":"Payer answer","claim_label":"Claim #{id}","invoice_label":"Invoice {number}","attempt_label":"Attempt {count}","filter_status_aria":"Filter claims by state","filter_status_all":"All states","filter_payer_aria":"Filter claims by payer","filter_payer_all":"All payers","empty_title":"No claims yet","empty_description":"A claim appears here when an insured invoice is checked out.","action_queue":"Queue and send","action_record":"Record payer response","action_resubmit":"Resubmit","menu_export_csv":"Export batch (CSV)","menu_export_xml":"Export batch (XML)","menu_import":"Import payer responses","export_failed":"The batch could not be exported.","result_sent":"Claim sent to the payer.","transport_manual":"Manual (biller files on the portal)","transport_internal_tpa":"Mock payer","transport_dhpo_eclaim":"DHPO / eClaimLink","transport_other":"Automated","response_title":"Payer response for claim #{id}","response_description":"Record exactly what the payer said about this submission. Saving the same answer twice changes nothing.","outcome":"Payer answer","outcome_sent":"Sent (filed on the portal)","outcome_acknowledged":"Acknowledged","outcome_rejected":"Rejected","outcome_denied":"Denied","outcome_paid":"Paid","outcome_partially_paid":"Partially paid","payer_reference":"Payer reference","payer_reference_placeholder":"e.g. claim number or payment reference","denial_code":"Denial code","denial_code_placeholder":"e.g. MNEC-004","denial_reason":"Reason","paid_amount":"Amount received","paid_amount_help":"What arrived in this payment, not the claim total.","denial_code_required":"Enter the payer's denial or rejection code.","paid_amount_required":"Enter the amount the payer paid.","response_saved":"Payer response recorded.","save":"Save","cancel":"Cancel","import_title":"Import payer responses","import_description":"Upload a batch exported from this page with the response columns filled in. Each answered row is recorded exactly as if entered by hand.","import_run":"Import","import_result":"{recorded} recorded, {already} already on file, {unanswered} without an answer.","import_row_error":"Claim #{id}: {error}"},"NationalId":{"type":"ID type","types":{"emirates_id":"Emirates ID","ir_national_code":"National code","sa_national_id":"National ID","sa_iqama":"Iqama number","tr_identity_number":"T.C. identity number"}},"AppDashboardSettingsDateDisplayPage":{"metadata_title":"Calendar & dates","metadata_description":"Choose the calendar, digits and first day of the week your clinic reads dates in."},"SettingsDateDisplay":{"title":"Calendar & dates","description":"How dates read on screen, on printed documents and in patient messages.","entityName":"Date settings","sectionTitle":"Date display","sectionCaption":"Each setting follows your country until you choose otherwise.","calendar":"Calendar","digits":"Digits","weekStart":"First day of the week","weekStartHelp":"Used by date pickers and the booking calendar.","followCountry":"Follow country ({value})","calendar_gregorian":"Gregorian","calendar_jalali":"Jalali (Solar Hijri)","calendar_hijri":"Hijri (Umm al-Qura)","digits_latin":"Latin (0123)","digits_arabic":"Arabic-Indic (٠١٢٣)","digits_persian":"Persian (۰۱۲۳)","week_saturday":"Saturday","week_sunday":"Sunday","week_monday":"Monday","storedHint":"Only how dates are shown changes. Saved dates, reports and integrations stay in the Gregorian calendar."}}