Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

332 lines
12 KiB
JSON

{
"title": "Billing",
"overview": "Overview",
"tabs": {
"overview": "Overview",
"invoices": "Invoices",
"quotes": "Quotes"
},
"currentContractLine": "Current Contract Line",
"nextInvoice": "Next Invoice",
"viewContractLineDetails": "View Contract Line Details",
"viewAllInvoices": "View All Invoices",
"failedToLoad": "Failed to load invoices. Please try again.",
"payments": "Payments",
"contractLines": "Service Contract Lines",
"usage": "Usage Metrics",
"hoursByService": "Hours by Service",
"invoice": {
"number": "Invoice #",
"date": "Invoice Date",
"dueDate": "Due Date",
"dueDateText": "Due {{date}}",
"noDueDate": "No due date",
"allPaid": "All invoices paid",
"amount": "Amount",
"status": "Status",
"paid": "Paid",
"unpaid": "Unpaid",
"overdue": "Overdue",
"partial": "Partial",
"draft": "Draft",
"finalized": "Finalized",
"sendEmail": "Send as Email",
"sendEmailFailed": "Failed to send invoice email. Please try again.",
"loadFailed": "Failed to load invoice details. Please try again.",
"downloadFailed": "Failed to download PDF. Please try again.",
"download": "Download PDF",
"view": "View Details",
"pay": "Pay Now",
"paymentHistory": "Payment History",
"details": "Invoice Details",
"lineItems": "Line Items",
"description": "Description",
"quantity": "Quantity",
"unitPrice": "Unit Price",
"total": "Total",
"noLineItems": "No line items available",
"subtotal": "Subtotal",
"tax": "Tax",
"taxBreakdown": "Tax Breakdown",
"manualInvoice": "Manual Invoice",
"credits": "Credits",
"financialArtifactSummary": "Financial-only invoice. Recurring service periods appear only on recurring detail lines.",
"servicePeriod": "Service Period",
"servicePeriods": "Service Periods",
"financialOnlyLine": "Financial-only line. No recurring service period.",
"downloadStarted": "Preparing PDF download...",
"downloadComplete": "PDF downloaded successfully.",
"emailStarted": "Sending invoice email...",
"emailSent": "Invoice email sent successfully.",
"advanceTiming": "Advance",
"arrearsTiming": "Arrears",
"paymentSummaryServicePeriods": "Payment settles the invoice balance for these recurring service periods. Open the invoice details below for the full line-by-line breakdown."
},
"invoices": {
"locations": {
"groupHeading": "Location",
"subtotal": "Location subtotal",
"unassigned": "Items without a location",
"pickerPlaceholder": "Select a location",
"addLocationButton": "+ Add location",
"removeGroup": "Remove location",
"emptyGroup": "No items yet for this location.",
"needMoreLocations": "This client only has one active location. Add a second location in Client settings to enable multi-site invoicing.",
"notSet": "No location selected"
}
},
"frequency": {
"monthly": "Monthly",
"quarterly": "Quarterly",
"annual": "Annual",
"weekly": "Weekly",
"biweekly": "Bi-weekly"
},
"contractLine": {
"detailsTitle": "Contract Line Details",
"name": "Contract Line Name",
"frequency": "Billing Frequency",
"startDate": "Start Date",
"endDate": "End Date",
"noEndDate": "No end date",
"status": "Status",
"customRate": "Custom Rate",
"serviceCategory": "Service Category",
"statusDescription": "This contract line is currently {{status}} and will {{expiry}}.",
"expiresOn": "expire on {{date}}",
"noExpiry": "not expire",
"cadenceOwnerContractDescription": "Recurring service periods follow the contract anniversary cadence for this line.",
"cadenceOwnerClientDescription": "Recurring service periods follow the client billing schedule for this line.",
"cadenceOwnerContract": "Contract anniversary",
"cadenceOwnerClient": "Client billing schedule",
"billingTimingAdvance": "Advance",
"billingTimingArrears": "Arrears",
"cadenceOwner": "Cadence Owner",
"billingTiming": "Billing Timing"
},
"payment": {
"method": "Payment Method",
"date": "Payment Date",
"amount": "Amount",
"reference": "Reference",
"status": "Status"
},
"bucket": {
"title": "Service Hours",
"remaining": "Remaining Hours",
"used": "Used Hours",
"total": "Total Hours",
"usage": "Usage",
"overage": "Overage",
"noContractLineTitle": "No bucket contract lines available",
"noContractLineDescription": "There are no active bucket contract lines for your account."
},
"messages": {
"noInvoices": "No invoices found",
"loadingInvoices": "Loading invoices...",
"paymentSuccessful": "Payment processed successfully",
"paymentFailed": "Payment failed. Please try again."
},
"quotes": {
"pendingQuotes": "Pending Quotes",
"awaitingResponse": "{{count}} quote(s) awaiting your response",
"noPending": "No pending quotes",
"viewAll": "View All Quotes",
"locations": {
"primaryLocationHeading": "Quote location",
"changeButton": "Change",
"cancelChange": "Cancel",
"notSet": "No location selected",
"groupHeading": "Location",
"pickerPlaceholder": "Select a location",
"addLocationButton": "+ Add location",
"removeGroup": "Remove location",
"needMoreLocations": "This client only has one active location. Add a second location in Client settings to enable multi-site quoting.",
"emptyGroup": "No items yet for this location.",
"subtotal": "Location subtotal",
"unassigned": "Items without a location"
},
"lineItems": {
"searchPlaceholder": "Search or type custom item name..."
}
},
"quoteForm": {
"noticeTitle": "Quote",
"readOnlyNotice": "This quote is read-only. To make changes, create a new revision.",
"breadcrumb": {
"billing": "Billing",
"quotes": "Quotes",
"quoteTemplates": "Quote Templates",
"newQuote": "New quote"
},
"header": {
"editQuote": "Edit Quote",
"newQuote": "New Quote",
"editTemplate": "Edit Quote Template",
"newTemplate": "New Quote Template",
"quoteTotalLabel": "Quote total",
"version": "v{{version}}"
},
"subtitle": {
"forClient": "For {{clientName}}",
"expires": "Expires {{date}}",
"template": "Template · {{description}}"
},
"actions": {
"pdf": "PDF",
"duplicate": "Duplicate",
"back": "Back",
"cancel": "Cancel",
"previewPdf": "Preview PDF",
"moreActions": "More actions",
"saving": "Saving…",
"saveQuote": "Save quote",
"saveTemplate": "Save template",
"sendToClient": "Send to client",
"requestApproval": "Request approval",
"requestChanges": "Request changes",
"approve": "Approve",
"revise": "Revise",
"createNewRevision": "Create new revision",
"convertToContract": "Convert to contract",
"convertToInvoice": "Convert to invoice",
"convertToBoth": "Convert to both",
"resend": "Resend",
"sendReminder": "Send reminder",
"cancelQuote": "Cancel quote"
},
"banners": {
"acceptedTitle": "Quote Accepted",
"acceptedBy": "Accepted by: {{name}}",
"acceptedOn": "Accepted on: {{date}}",
"rejectedTitle": "Quote Rejected",
"rejectedOn": "Rejected on: {{date}}",
"rejectedReason": "Reason: {{reason}}",
"convertedTitle": "Quote Converted",
"convertedDescription": "This quote has been converted to a contract and/or invoice."
},
"essentials": {
"title": "Essentials",
"subtitle": "Shown to the client on the quote document.",
"titleField": "Title",
"descriptionField": "Description / Scope",
"descriptionHelp": "A short paragraph that appears just under the title on the PDF.",
"client": "Client",
"clientPlaceholder": "Select client",
"contact": "Contact",
"contactPlaceholder": "Select contact",
"currency": "Currency",
"currencyPlaceholder": "Select currency",
"quoteDate": "Quote date",
"validUntil": "Valid until",
"validUntilHelp": "Quote auto-expires on this date."
},
"lineItems": {
"title": "Line items",
"subtitleEmpty": "No items yet.",
"subtitleCount": "{{count}} items · {{mix}}",
"mixBoth": "recurring and one-time",
"mixRecurring": "recurring",
"mixOneTime": "one-time",
"addLocation": "+ Add location",
"fromTemplate": "+ From template"
},
"clientFacing": {
"title": "Client-facing text",
"subtitle": "Appears on the PDF, below the totals.",
"notes": "Notes to client (Optional)",
"terms": "Terms & conditions (Optional)"
},
"moreDetails": {
"title": "More details",
"subtitle": "PO number, opportunity, PDF layout",
"poNumber": "PO number",
"opportunity": "Opportunity",
"opportunityPlaceholder": "Opportunity ID (optional)",
"pdfLayout": "PDF layout",
"pdfLayoutPlaceholder": "Use default layout",
"pdfLayoutHelp": "Choose which layout the client will see. Leave default to use tenant default."
},
"footer": {
"savedAgo": "Changes saved · {{ago}}",
"saving": "Saving…",
"unsaved": "Unsaved changes"
},
"sidebar": {
"quoteTotal": "Quote total",
"recurringPerMonth": "{{amount}} recurring / month",
"subtotal": "Subtotal",
"discounts": "Discounts",
"tax": "Tax",
"statusLabel": "Status",
"approvalLabel": "Approval",
"approvalMessage": "Quotes need sales lead approval before sending.",
"documentLayoutLabel": "Document layout",
"defaultLayout": "Tenant default",
"standardLayout": "Standard",
"customLayout": "Custom",
"tenantDefault": "Tenant default",
"changeLayout": "Change"
}
},
"enums": {
"billingFrequency": {
"weekly": "Weekly",
"monthly": "Monthly",
"quarterly": "Quarterly",
"annually": "Annually"
},
"contractLineType": {
"Fixed": "Fixed",
"Hourly": "Hourly",
"Usage": "Usage Based"
},
"quoteStatus": {
"draft": "Draft",
"pending_approval": "Pending Approval",
"approved": "Approved",
"sent": "Sent",
"accepted": "Accepted",
"rejected": "Rejected",
"expired": "Expired",
"converted": "Converted",
"cancelled": "Cancelled",
"superseded": "Superseded",
"archived": "Archived"
},
"quoteStatusDescription": {
"draft": "Quote is being prepared",
"pending_approval": "Quote is waiting for internal approval",
"approved": "Quote is approved and ready to send",
"sent": "Quote has been sent to the client",
"accepted": "Client accepted the quote",
"rejected": "Client rejected the quote",
"expired": "Quote passed its validity date",
"converted": "Quote has been converted to billing records",
"cancelled": "Quote was cancelled before conversion",
"superseded": "Quote was replaced by a revision",
"archived": "Quote is archived and read-only"
},
"invoiceStatus": {
"draft": "Draft",
"sent": "Sent",
"paid": "Paid",
"overdue": "Overdue",
"cancelled": "Cancelled",
"pending": "Pending",
"prepayment": "Prepayment",
"partially_applied": "Partially Applied"
},
"invoiceStatusDescription": {
"draft": "Work-in-progress invoices that have not been sent to the customer",
"sent": "Invoices that have been finalized and sent to the customer",
"paid": "Fully paid invoices ready for reconciliation",
"overdue": "Finalized invoices that are past their due date",
"cancelled": "Invoices that have been voided or cancelled",
"pending": "Invoices awaiting approval or additional processing",
"prepayment": "Advance payment or deposit invoices",
"partially_applied": "Invoices with partial payments applied"
}
}
}