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
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
450 lines
17 KiB
JSON
450 lines
17 KiB
JSON
{
|
||
"taxRates": {
|
||
"errors": {
|
||
"loadRegions": "Échec du chargement des régions fiscales.",
|
||
"validateDeletion": "Échec de la validation de la suppression. Veuillez réessayer.",
|
||
"fetchRates": "Échec de la récupération des taux de taxe",
|
||
"add": "Échec de l'ajout du taux de taxe",
|
||
"update": "Échec de la mise à jour du taux de taxe",
|
||
"confirmDeletion": "Échec de la confirmation de la suppression du taux de taxe."
|
||
},
|
||
"validation": {
|
||
"requiredFieldsTitle": "Veuillez remplir les champs obligatoires :",
|
||
"region": "Région fiscale",
|
||
"percentage": "Pourcentage de taxe",
|
||
"startDate": "Date de début"
|
||
},
|
||
"table": {
|
||
"description": "Description",
|
||
"startDate": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"actions": "Actes",
|
||
"notAvailable": "S/O",
|
||
"region": "Région",
|
||
"taxPercentage": "Pourcentage d'impôt",
|
||
"composite": "Composite"
|
||
},
|
||
"actions": {
|
||
"openMenu": "Ouvrir le menu",
|
||
"edit": "Modifier",
|
||
"delete": "Supprimer",
|
||
"advancedSettings": "Paramètres avancés",
|
||
"addNew": "Ajouter un nouveau taux de taxe",
|
||
"add": "Ajouter un taux de taxe",
|
||
"update": "Mettre à jour le taux de taxe"
|
||
},
|
||
"dialog": {
|
||
"fields": {
|
||
"description": "Description",
|
||
"startDate": "Date de début *",
|
||
"endDate": "Date de fin (facultatif)",
|
||
"region": "Région fiscale *",
|
||
"percentage": "Pourcentage de taxe *"
|
||
},
|
||
"placeholders": {
|
||
"loadingRegions": "Chargement des régions...",
|
||
"selectRegion": "Sélectionnez la région fiscale",
|
||
"percentage": "Entrez le pourcentage"
|
||
},
|
||
"addTitle": "Ajouter un nouveau taux de taxe",
|
||
"editTitle": "Modifier le taux de taxe",
|
||
"description": "Saisissez les détails du taux de taxe."
|
||
},
|
||
"title": "Taux d'imposition",
|
||
"loading": "Chargement des taux de taxe",
|
||
"deleteEntity": {
|
||
"fallback": "ce taux d'imposition",
|
||
"withRegion": "taux de taxe {{regionName}}"
|
||
}
|
||
},
|
||
"taxRateDetail": {
|
||
"fields": {
|
||
"regionCode": "Code de région",
|
||
"description": "Description",
|
||
"startDate": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"taxPercentage": "Pourcentage d'impôt",
|
||
"taxType": "Type de taxe",
|
||
"isComposite": "Est composite",
|
||
"isActive": "Est actif"
|
||
},
|
||
"values": {
|
||
"dash": "-",
|
||
"noEndDate": "Pas de date de fin",
|
||
"yes": "Oui",
|
||
"no": "Non",
|
||
"active": "Actif",
|
||
"inactive": "Inactif",
|
||
"composite": "Composite"
|
||
},
|
||
"actions": {
|
||
"back": "Retour aux taux d'imposition"
|
||
},
|
||
"subtitle": "{{regionCode}} - {{percentage}}%",
|
||
"tabs": {
|
||
"details": "Détails",
|
||
"components": "Composants",
|
||
"brackets": "Paliers",
|
||
"holidays": "Jours fériés"
|
||
},
|
||
"precedence": {
|
||
"title": "Priorité au calcul des taxes",
|
||
"clientExempt": "L'indicateur d'exonération de taxe du client est coché en premier (s'il est exonéré, aucune taxe n'est appliquée)",
|
||
"serviceSpecific": "Le taux de taxe spécifique au service est utilisé s'il est attribué",
|
||
"clientDefault": "Le taux d'imposition par défaut du client est utilisé comme solution de repli",
|
||
"regionLookup": "La recherche de région fiscale détermine le taux applicable en fonction de l'emplacement"
|
||
},
|
||
"components": {
|
||
"simpleRateMessage": "Il s’agit d’un taux d’imposition simple et non d’un taux composite. Les composants de taxe ne sont utilisés que pour les taxes composites.",
|
||
"enableCompositeMessage": "Pour utiliser des composants fiscaux, marquez ce taux comme composite lors de sa modification."
|
||
},
|
||
"brackets": {
|
||
"intro": "Les tranches d’imposition progressives appliquent des taux différents à différentes parties d’un montant.",
|
||
"precedence": "Lorsque des tranches sont définies, elles priment sur le taux forfaitaire effectif global."
|
||
}
|
||
},
|
||
"serviceForm": {
|
||
"errors": {
|
||
"loadServiceTypes": "Échec de la récupération des types de services",
|
||
"serviceTypeNotFound": "Type de service sélectionné introuvable",
|
||
"create": "Échec de la création du service",
|
||
"loadTaxData": "Échec du chargement des données fiscales.",
|
||
"selectServiceType": "Veuillez sélectionner un type de service"
|
||
},
|
||
"fields": {
|
||
"serviceName": {
|
||
"placeholder": "Nom du service"
|
||
},
|
||
"serviceType": {
|
||
"label": "Type de service",
|
||
"placeholder": "Sélectionnez le type de service"
|
||
},
|
||
"billingMethod": {
|
||
"label": "Méthode de facturation",
|
||
"placeholder": "Sélectionnez la méthode de facturation"
|
||
},
|
||
"description": {
|
||
"label": "Description",
|
||
"placeholder": "Description des services"
|
||
},
|
||
"taxRate": {
|
||
"label": "Taux d'imposition",
|
||
"placeholderLoading": "Chargement des données fiscales...",
|
||
"placeholder": "Sélectionnez le taux de taxe (facultatif)"
|
||
},
|
||
"defaultRate": {
|
||
"placeholder": "Taux de défaut"
|
||
},
|
||
"unitOfMeasure": {
|
||
"placeholder": "Unité de mesure"
|
||
}
|
||
},
|
||
"options": {
|
||
"billingMethod": {
|
||
"hourly": "Horaire",
|
||
"usage": "Basé sur l'utilisation",
|
||
"fixed": "Prix fixe"
|
||
}
|
||
},
|
||
"taxRateOption": {
|
||
"fallback": "S/O",
|
||
"label": "{{description}} - {{percentage}}%"
|
||
},
|
||
"actions": {
|
||
"submit": "Ajouter un service"
|
||
}
|
||
},
|
||
"serviceSelection": {
|
||
"table": {
|
||
"type": "Taper",
|
||
"unit": "Unité",
|
||
"rate": "Tarif",
|
||
"product": "Produit",
|
||
"itemName": "Nom de l'article",
|
||
"service": "Service",
|
||
"unknown": "Inconnu"
|
||
},
|
||
"actions": {
|
||
"cancel": "Annuler",
|
||
"addSelected": "Ajouter les services sélectionnés",
|
||
"adding": "Ajout..."
|
||
},
|
||
"title": "Ajouter des services et des produits au plan",
|
||
"searchPlaceholder": "Rechercher des services/produits...",
|
||
"errors": {
|
||
"load": "Échec du chargement des services",
|
||
"add": "Échec de l'ajout de services au plan"
|
||
},
|
||
"states": {
|
||
"loading": "Chargement des services...",
|
||
"empty": "Aucun service trouvé"
|
||
},
|
||
"selection": {
|
||
"countOne": "{{count}} service sélectionné",
|
||
"countOther": "{{count}} services sélectionnés"
|
||
},
|
||
"quickAdd": {
|
||
"label": "Ajout rapide :",
|
||
"allType": "Tous {{type}}"
|
||
}
|
||
},
|
||
"configType": {
|
||
"warningDialog": {
|
||
"cancel": "Annuler",
|
||
"title": "Changer le type de configuration ?",
|
||
"description": "La modification du type de configuration réinitialisera tous les paramètres spécifiques au type. Cette action ne peut pas être annulée.",
|
||
"confirm": "Changer le type"
|
||
},
|
||
"placeholder": "Sélectionnez le type de configuration",
|
||
"options": {
|
||
"Fixed": {
|
||
"label": "Prix fixe",
|
||
"description": "Un service à prix fixe avec une facturation cohérente quelle que soit l'utilisation. Idéal pour les services prévisibles."
|
||
},
|
||
"Hourly": {
|
||
"label": "Taux horaire",
|
||
"description": "Facturation basée sur le temps avec des tarifs configurables. Idéal pour les charges de travail variables facturées en fonction du temps passé."
|
||
},
|
||
"Usage": {
|
||
"label": "Basé sur l'utilisation",
|
||
"description": "Facturation basée sur l'utilisation avec options de tarification échelonnées. Parfait pour les services mesurés par la consommation."
|
||
},
|
||
"Bucket": {
|
||
"label": "Forfait d'heures",
|
||
"description": "Des heures préachetées pouvant être utilisées dans le temps. Idéal pour les clients qui ont besoin de flexibilité avec un plafond budgétaire."
|
||
}
|
||
}
|
||
},
|
||
"serviceConfig": {
|
||
"fields": {
|
||
"quantity": {
|
||
"label": "Quantité",
|
||
"placeholder": "Entrez la quantité",
|
||
"help": "Nombre d'unités de ce service",
|
||
"errorNegative": "La quantité ne peut pas être négative"
|
||
},
|
||
"customRate": {
|
||
"label": "Tarif personnalisé",
|
||
"placeholder": "Entrez le taux",
|
||
"placeholderDefault": "Par défaut : {{rate}}",
|
||
"helpCustom": "Tarif personnalisé pour ce service",
|
||
"helpUseDefault": "Laissez vide pour utiliser le taux par défaut ({{rate}})",
|
||
"errorNegative": "Le taux ne peut pas être négatif"
|
||
},
|
||
"configurationType": "Type de configuration"
|
||
},
|
||
"actions": {
|
||
"cancel": "Annuler",
|
||
"saving": "Économie...",
|
||
"save": "Enregistrer la configuration"
|
||
},
|
||
"title": "Configuration des services",
|
||
"serviceLabel": "Service",
|
||
"effectiveModeLabel": "Mode effectif",
|
||
"defaultSourceLabel": "Source par défaut",
|
||
"modes": {
|
||
"Fixed": "Prix fixe",
|
||
"Hourly": "Taux horaire",
|
||
"Usage": "Basé sur l'utilisation",
|
||
"Bucket": "Forfait d'heures"
|
||
},
|
||
"defaultSources": {
|
||
"catalog default": "catalogue par défaut",
|
||
"contract override": "dérogation au contrat",
|
||
"none": "aucun"
|
||
},
|
||
"bucketOverlay": {
|
||
"recommendHours": "Recommander une tranche d'heures",
|
||
"recommendUsage": "Recommander un seau de consommation"
|
||
}
|
||
},
|
||
"hourlyConfig": {
|
||
"fields": {
|
||
"minimumBillableTime": {
|
||
"placeholder": "15",
|
||
"label": "Temps facturable minimum (minutes)",
|
||
"help": "Temps minimum de facturation (par exemple, 15 minutes)",
|
||
"errorNegative": "Le temps minimum facturable ne peut pas être négatif"
|
||
},
|
||
"roundUpToNearest": {
|
||
"placeholder": "15",
|
||
"label": "Arrondir au plus proche (minutes)",
|
||
"help": "Arrondir les entrées de temps à l'incrément le plus proche",
|
||
"errorNegative": "La valeur arrondie ne peut pas être négative"
|
||
},
|
||
"newUserType": {
|
||
"label": "Type d'utilisateur",
|
||
"placeholder": "Sélectionnez le type d'utilisateur"
|
||
},
|
||
"newUserTypeRate": {
|
||
"label": "Tarif",
|
||
"placeholder": "Entrez le taux",
|
||
"errorNegative": "Le taux de type d'utilisateur ne peut pas être négatif"
|
||
}
|
||
},
|
||
"userTypeRates": {
|
||
"headers": {
|
||
"userType": "Type d'utilisateur",
|
||
"rate": "Tarif"
|
||
},
|
||
"title": "Tarifs par type d'utilisateur",
|
||
"options": {
|
||
"technician": "Technicien",
|
||
"engineer": "Ingénieur",
|
||
"consultant": "Consultante",
|
||
"project_manager": "Chef de projet",
|
||
"admin": "Administrateur"
|
||
},
|
||
"actions": {
|
||
"addRate": "Ajouter un tarif"
|
||
}
|
||
},
|
||
"title": "Configuration du taux horaire"
|
||
},
|
||
"usageConfig": {
|
||
"defaults": {
|
||
"unitOfMeasure": "Unité"
|
||
},
|
||
"fields": {
|
||
"unitOfMeasure": {
|
||
"errorRequired": "L'unité de mesure est requise",
|
||
"label": "Unité de mesure",
|
||
"placeholder": "Entrez l'unité de mesure",
|
||
"help": "L'unité utilisée pour mesurer l'utilisation (par exemple Go, utilisateur, appareil)"
|
||
},
|
||
"minimumUsage": {
|
||
"placeholder": "0",
|
||
"label": "Seuil d'utilisation minimum",
|
||
"help": "Utilisation minimale facturable par période (0 pour aucun minimum)",
|
||
"errorNegative": "L'utilisation minimale ne peut pas être négative"
|
||
},
|
||
"enableTieredPricing": "Activer la tarification échelonnée"
|
||
},
|
||
"title": "Configuration basée sur l'utilisation",
|
||
"tiers": {
|
||
"title": "Niveaux de tarification",
|
||
"addTier": "Ajouter un niveau",
|
||
"empty": "Aucun niveau configuré. Ajoutez un niveau pour définir une tarification basée sur le volume.",
|
||
"from": "De ({{unit}})",
|
||
"to": "À ({{unit}})",
|
||
"ratePer": "Tarif par {{unit}}",
|
||
"unlimited": "Illimité",
|
||
"help": "Configurez les niveaux de tarification basés sur le volume. Chaque niveau applique son tarif à l'utilisation qui se situe dans sa plage.",
|
||
"errors": {
|
||
"onlyLastUnlimited": "Seul le dernier niveau peut avoir une limite supérieure illimitée",
|
||
"overlap": "Les niveaux ne peuvent pas se chevaucher",
|
||
"upperGreaterThanLower": "La limite supérieure du niveau doit être supérieure à la limite inférieure",
|
||
"rateNegative": "Les tarifs par niveau ne peuvent pas être négatifs"
|
||
}
|
||
}
|
||
},
|
||
"rateTiers": {
|
||
"table": {
|
||
"actions": "Actes",
|
||
"minQuantity": "Quantité minimale",
|
||
"maxQuantity": "Quantité maximale",
|
||
"rate": "Taux ({{unit}})",
|
||
"unlimited": "Illimité"
|
||
},
|
||
"actions": {
|
||
"saving": "Économie...",
|
||
"addTier": "Ajouter un niveau",
|
||
"save": "Enregistrer les niveaux de tarifs"
|
||
},
|
||
"title": "Niveaux tarifaires et remises sur quantité",
|
||
"description": "Configurez différents tarifs en fonction des plages de quantités. Des quantités plus élevées peuvent bénéficier de tarifs réduits.",
|
||
"loading": "Chargement des niveaux de taux...",
|
||
"formattedRate": "{{rate}} par {{unit}}",
|
||
"errors": {
|
||
"load": "Échec du chargement des niveaux de taux",
|
||
"save": "Échec de l'enregistrement des niveaux de tarifs",
|
||
"lastTier": "Impossible de supprimer le dernier niveau",
|
||
"minPositive": "La quantité minimale doit être supérieure à 0",
|
||
"maxGreaterThanMin": "La quantité maximale doit être supérieure à la quantité minimale",
|
||
"rateNegative": "Le taux ne peut pas être négatif",
|
||
"overlap": "Les plages de niveaux ne peuvent pas se chevaucher"
|
||
}
|
||
},
|
||
"serviceTaxSettings": {
|
||
"fields": {
|
||
"taxRate": {
|
||
"label": "Taux d'imposition",
|
||
"placeholderLoading": "Chargement des tarifs...",
|
||
"placeholder": "Sélectionnez le taux de taxe",
|
||
"help": "Sélectionnez « Non taxable » si ce service ne doit pas être taxé."
|
||
}
|
||
},
|
||
"options": {
|
||
"nonTaxable": "Non imposable"
|
||
},
|
||
"errors": {
|
||
"loadTaxRates": "Échec du chargement des taux de taxe.",
|
||
"save": "Échec de l'enregistrement des paramètres fiscaux"
|
||
},
|
||
"actions": {
|
||
"saving": "Économie...",
|
||
"save": "Enregistrer les paramètres fiscaux"
|
||
},
|
||
"title": "Paramètres fiscaux",
|
||
"optionLabel": "{{taxType}} ({{countryCode}}) - {{percentage}}%"
|
||
},
|
||
"fixedConfig": {
|
||
"title": "Configuration à prix fixe",
|
||
"fields": {
|
||
"adjustForPartialPeriods": "Ajuster pour les périodes partielles",
|
||
"billingCycleAlignment": {
|
||
"label": "Alignement du cycle de facturation",
|
||
"placeholder": "Sélectionnez l'alignement",
|
||
"help": "Contrôle la façon dont la couverture d’une période partielle est calculée lorsque les frais récurrents doivent être réduits à une période inférieure à une période de service complète."
|
||
}
|
||
},
|
||
"options": {
|
||
"start": "Début du cycle de facturation",
|
||
"end": "Fin du cycle de facturation",
|
||
"prorated": "Couverture proportionnelle"
|
||
}
|
||
},
|
||
"bucketConfig": {
|
||
"title": "Configuration du forfait d'heures",
|
||
"fields": {
|
||
"totalMinutes": {
|
||
"label": "Minutes totales",
|
||
"placeholder": "Entrez le nombre total d'heures",
|
||
"help": "Le nombre total de minutes incluses dans cette ligne de contrat de regroupement",
|
||
"errorPositive": "Le total des minutes doit être supérieur à zéro"
|
||
},
|
||
"billingPeriod": {
|
||
"label": "Période de facturation",
|
||
"placeholder": "Sélectionnez la période de facturation",
|
||
"help": "La période sur laquelle les heures de tranche sont réparties",
|
||
"mismatchPrefix": "Inadéquation :",
|
||
"mismatch": "La période de facturation du forfait ({{billingPeriod}}) doit correspondre à la fréquence de facturation de la ligne de contrat ({{contractLineBillingFrequency}})."
|
||
},
|
||
"overageRate": {
|
||
"label": "Taux de dépassement",
|
||
"placeholder": "Saisir le taux de dépassement",
|
||
"help": "Le taux horaire facturé pour les heures utilisées au-delà de la limite du bucket",
|
||
"errorNegative": "Le taux de dépassement ne peut pas être négatif"
|
||
},
|
||
"allowRollover": "Autoriser le report des heures inutilisées à la période suivante"
|
||
}
|
||
},
|
||
"serviceDetail": {
|
||
"loading": "Chargement de la configuration du service...",
|
||
"errors": {
|
||
"notFound": "Service introuvable",
|
||
"load": "Échec du chargement de la configuration du service"
|
||
},
|
||
"title": "Configuration du service : {{serviceName}}",
|
||
"description": "Configurer les détails du service, les tarifs et les paramètres fiscaux",
|
||
"sections": {
|
||
"unitOfMeasure": "Unité de mesure",
|
||
"baseRate": "Tarif de base"
|
||
},
|
||
"baseRate": {
|
||
"summary": "{{rate}} par {{unit}}",
|
||
"help": "Le tarif de base peut être remplacé par les niveaux basés sur la quantité ci-dessous."
|
||
}
|
||
}
|
||
}
|