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
13 KiB
JSON

{
"title": "Facturation",
"overview": "Aperçu",
"tabs": {
"overview": "Aperçu",
"invoices": "Factures",
"quotes": "Devis"
},
"currentContractLine": "Forfait actuel",
"nextInvoice": "Prochaine facture",
"viewContractLineDetails": "Voir les détails du forfait",
"viewAllInvoices": "Voir toutes les factures",
"failedToLoad": "Échec du chargement des factures. Veuillez réessayer.",
"invoices": {
"locations": {
"groupHeading": "Emplacement",
"subtotal": "Sous-total de l'emplacement",
"unassigned": "Éléments sans emplacement",
"pickerPlaceholder": "Sélectionnez un emplacement",
"addLocationButton": "+ Ajouter un emplacement",
"removeGroup": "Retirer l'emplacement",
"emptyGroup": "Aucun élément pour le moment pour cet emplacement.",
"needMoreLocations": "Ce client n'a qu'un seul emplacement actif. Ajoutez un deuxième emplacement dans les paramètres du client pour activer la facturation multi-sites.",
"notSet": "Aucun emplacement sélectionné"
}
},
"payments": "Paiements",
"contractLines": "Lignes de contrat de service",
"usage": "Indicateurs d'utilisation",
"hoursByService": "Heures par service",
"invoice": {
"number": "Facture n°",
"date": "Date de la facture",
"dueDate": "Date d'échéance",
"dueDateText": "Échéance le {{date}}",
"noDueDate": "Pas de date d'échéance",
"allPaid": "Toutes les factures payées",
"amount": "Montant",
"status": "Statut",
"paid": "Payée",
"unpaid": "Impayée",
"overdue": "En retard",
"partial": "Partielle",
"draft": "Brouillon",
"finalized": "Finalisée",
"sendEmail": "Envoyer par e-mail",
"sendEmailFailed": "Échec de l'envoi de la facture par e-mail. Veuillez réessayer.",
"loadFailed": "Échec du chargement des détails de la facture. Veuillez réessayer.",
"downloadFailed": "Échec du téléchargement du PDF. Veuillez réessayer.",
"download": "Télécharger le PDF",
"view": "Voir les détails",
"pay": "Payer maintenant",
"paymentHistory": "Historique des paiements",
"details": "Détails de la facture",
"lineItems": "Postes",
"description": "Description",
"quantity": "Quantité",
"unitPrice": "Prix unitaire",
"total": "Total",
"noLineItems": "Aucun poste disponible",
"subtotal": "Sous-total",
"tax": "Taxes",
"taxBreakdown": "Ventilation des taxes",
"manualInvoice": "Facture manuelle",
"credits": "Crédits",
"financialArtifactSummary": "Facture financière uniquement. Les périodes de service récurrentes n'apparaissent que sur les lignes de détail récurrentes.",
"servicePeriod": "Période de service",
"servicePeriods": "Périodes de service",
"financialOnlyLine": "Ligne financière uniquement. Aucune période de service récurrente.",
"downloadStarted": "Préparation du téléchargement PDF...",
"downloadComplete": "PDF téléchargé avec succès.",
"emailStarted": "Envoi de l'e-mail de facture...",
"emailSent": "E-mail de facture envoyé avec succès.",
"advanceTiming": "Par avance",
"arrearsTiming": "À terme échu",
"paymentSummaryServicePeriods": "Le paiement règle le solde de la facture pour ces périodes de service récurrentes. Ouvrez les détails de la facture ci-dessous pour le détail complet ligne par ligne."
},
"frequency": {
"monthly": "Mensuel",
"quarterly": "Trimestriel",
"annual": "Annuel",
"weekly": "Hebdomadaire",
"biweekly": "Bihebdomadaire"
},
"contractLine": {
"detailsTitle": "Détails du forfait",
"name": "Nom du forfait",
"frequency": "Fréquence de facturation",
"startDate": "Date de début",
"endDate": "Date de fin",
"noEndDate": "Pas de date de fin",
"status": "Statut",
"customRate": "Tarif personnalisé",
"serviceCategory": "Catégorie de service",
"statusDescription": "Ce forfait est actuellement {{status}} et {{expiry}}.",
"expiresOn": "expire le {{date}}",
"noExpiry": "n'expire pas",
"cadenceOwnerContractDescription": "Les périodes de service récurrentes suivent la cadence de l'anniversaire du contrat pour cette ligne.",
"cadenceOwnerClientDescription": "Les périodes de service récurrentes suivent le calendrier de facturation du client pour cette ligne.",
"cadenceOwnerContract": "Anniversaire du contrat",
"cadenceOwnerClient": "Calendrier de facturation du client",
"billingTimingAdvance": "Par avance",
"billingTimingArrears": "À terme échu",
"cadenceOwner": "Propriétaire de la cadence",
"billingTiming": "Moment de facturation"
},
"payment": {
"method": "Mode de paiement",
"date": "Date de paiement",
"amount": "Montant",
"reference": "Référence",
"status": "Statut"
},
"bucket": {
"title": "Heures de service",
"remaining": "Heures restantes",
"used": "Heures utilisées",
"total": "Total d'heures",
"usage": "Utilisation",
"overage": "Dépassement",
"noContractLineTitle": "Aucune banque d'heures disponible",
"noContractLineDescription": "Aucun forfait d'heures actif pour votre compte."
},
"messages": {
"noInvoices": "Aucune facture trouvée",
"loadingInvoices": "Chargement des factures...",
"paymentSuccessful": "Paiement traité avec succès",
"paymentFailed": "Échec du paiement. Veuillez réessayer."
},
"quotes": {
"pendingQuotes": "Devis en attente",
"awaitingResponse": "{{count}} devis en attente de votre réponse",
"noPending": "Aucun devis en attente",
"viewAll": "Voir tous les devis",
"locations": {
"primaryLocationHeading": "Emplacement du devis",
"changeButton": "Modifier",
"cancelChange": "Annuler",
"notSet": "Aucun emplacement sélectionné",
"groupHeading": "Emplacement",
"pickerPlaceholder": "Sélectionnez un emplacement",
"addLocationButton": "+ Ajouter un emplacement",
"removeGroup": "Retirer l'emplacement",
"needMoreLocations": "Ce client n'a qu'un seul emplacement actif. Ajoutez un deuxième emplacement dans les paramètres du client pour activer les devis multi-sites.",
"emptyGroup": "Aucun élément pour le moment pour cet emplacement.",
"subtotal": "Sous-total de l'emplacement",
"unassigned": "Éléments sans emplacement"
},
"lineItems": {
"searchPlaceholder": "Rechercher ou saisir un nom d'élément personnalisé..."
}
},
"enums": {
"billingFrequency": {
"weekly": "Hebdomadaire",
"monthly": "Mensuel",
"quarterly": "Trimestriel",
"annually": "Annuel"
},
"contractLineType": {
"Fixed": "Forfait",
"Hourly": "Horaire",
"Usage": "À l'usage"
},
"quoteStatus": {
"draft": "Brouillon",
"pending_approval": "En attente d'approbation",
"approved": "Approuvé",
"sent": "Envoyé",
"accepted": "Accepté",
"rejected": "Refusé",
"expired": "Expiré",
"converted": "Converti",
"cancelled": "Annulé",
"superseded": "Remplacé",
"archived": "Archivé"
},
"quoteStatusDescription": {
"draft": "Le devis est en cours de préparation",
"pending_approval": "Le devis attend une approbation interne",
"approved": "Le devis est approuvé et prêt à être envoyé",
"sent": "Le devis a été envoyé au client",
"accepted": "Le client a accepté le devis",
"rejected": "Le client a refusé le devis",
"expired": "Le devis a dépassé sa date de validité",
"converted": "Le devis a été converti en facturation",
"cancelled": "Le devis a été annulé avant conversion",
"superseded": "Le devis a été remplacé par une révision",
"archived": "Le devis est archivé et en lecture seule"
},
"invoiceStatus": {
"draft": "Brouillon",
"sent": "Envoyée",
"paid": "Payée",
"overdue": "En retard",
"cancelled": "Annulée",
"pending": "En attente",
"prepayment": "Acompte",
"partially_applied": "Partiellement appliquée"
},
"invoiceStatusDescription": {
"draft": "Factures en cours de préparation, non envoyées au client",
"sent": "Factures finalisées et envoyées au client",
"paid": "Factures entièrement payées prêtes pour rapprochement",
"overdue": "Factures finalisées dont la date d'échéance est dépassée",
"cancelled": "Factures annulées ou invalidées",
"pending": "Factures en attente d'approbation ou de traitement",
"prepayment": "Factures d'acompte ou de dépôt",
"partially_applied": "Factures avec paiements partiels appliqués"
}
},
"quoteForm": {
"noticeTitle": "Devis",
"readOnlyNotice": "Ce devis est en lecture seule. Pour apporter des modifications, créez une nouvelle révision.",
"breadcrumb": {
"billing": "Facturation",
"quotes": "Devis",
"quoteTemplates": "Modèles de devis",
"newQuote": "Nouveau devis"
},
"header": {
"editQuote": "Modifier le devis",
"newQuote": "Nouveau devis",
"editTemplate": "Modifier le modèle de devis",
"newTemplate": "Nouveau modèle de devis",
"quoteTotalLabel": "Total du devis",
"version": "v{{version}}"
},
"subtitle": {
"forClient": "Pour {{clientName}}",
"expires": "Expire le {{date}}",
"template": "Modèle · {{description}}"
},
"actions": {
"pdf": "PDF",
"duplicate": "Dupliquer",
"back": "Retour",
"cancel": "Annuler",
"previewPdf": "Aperçu PDF",
"moreActions": "Plus d'actions",
"saving": "Enregistrement…",
"saveQuote": "Enregistrer le devis",
"saveTemplate": "Enregistrer le modèle",
"sendToClient": "Envoyer au client",
"requestApproval": "Demander l'approbation",
"requestChanges": "Demander des modifications",
"approve": "Approuver",
"revise": "Réviser",
"createNewRevision": "Créer une nouvelle révision",
"convertToContract": "Convertir en contrat",
"convertToInvoice": "Convertir en facture",
"convertToBoth": "Convertir en les deux",
"resend": "Renvoyer",
"sendReminder": "Envoyer un rappel",
"cancelQuote": "Annuler le devis"
},
"banners": {
"acceptedTitle": "Devis accepté",
"acceptedBy": "Accepté par : {{name}}",
"acceptedOn": "Accepté le : {{date}}",
"rejectedTitle": "Devis rejeté",
"rejectedOn": "Rejeté le : {{date}}",
"rejectedReason": "Motif : {{reason}}",
"convertedTitle": "Devis converti",
"convertedDescription": "Ce devis a été converti en contrat et/ou facture."
},
"essentials": {
"title": "Essentiels",
"subtitle": "Affiché au client sur le document du devis.",
"titleField": "Titre",
"descriptionField": "Description / Portée",
"descriptionHelp": "Un court paragraphe qui apparaît juste sous le titre du PDF.",
"client": "Client",
"clientPlaceholder": "Sélectionner un client",
"contact": "Contact",
"contactPlaceholder": "Sélectionner un contact",
"currency": "Devise",
"currencyPlaceholder": "Sélectionner une devise",
"quoteDate": "Date du devis",
"validUntil": "Valable jusqu'au",
"validUntilHelp": "Le devis expire automatiquement à cette date."
},
"lineItems": {
"title": "Lignes",
"subtitleEmpty": "Aucun élément pour le moment.",
"subtitleCount": "{{count}} éléments · {{mix}}",
"mixBoth": "récurrent et ponctuel",
"mixRecurring": "récurrent",
"mixOneTime": "ponctuel",
"addLocation": "+ Ajouter un emplacement",
"fromTemplate": "+ À partir du modèle"
},
"clientFacing": {
"title": "Texte visible par le client",
"subtitle": "Apparaît sur le PDF, sous les totaux.",
"notes": "Notes au client (facultatif)",
"terms": "Conditions générales (facultatif)"
},
"moreDetails": {
"title": "Plus de détails",
"subtitle": "Numéro de BC, opportunité, mise en page PDF",
"poNumber": "Numéro de BC",
"opportunity": "Opportunité",
"opportunityPlaceholder": "ID d'opportunité (facultatif)",
"pdfLayout": "Mise en page PDF",
"pdfLayoutPlaceholder": "Utiliser la mise en page par défaut",
"pdfLayoutHelp": "Choisissez la mise en page vue par le client. Laissez vide pour utiliser la valeur par défaut du locataire."
},
"footer": {
"savedAgo": "Modifications enregistrées · {{ago}}",
"saving": "Enregistrement…",
"unsaved": "Modifications non enregistrées"
},
"sidebar": {
"quoteTotal": "Total du devis",
"recurringPerMonth": "{{amount}} récurrent / mois",
"subtotal": "Sous-total",
"discounts": "Remises",
"tax": "Taxe",
"statusLabel": "Statut",
"approvalLabel": "Approbation",
"approvalMessage": "Les devis nécessitent l'approbation du responsable des ventes avant envoi.",
"documentLayoutLabel": "Mise en page du document",
"defaultLayout": "Valeur par défaut du locataire",
"standardLayout": "Standard",
"customLayout": "Personnalisé",
"tenantDefault": "Valeur par défaut du locataire",
"changeLayout": "Modifier"
}
}
}