<?php
namespace Modules\API\APIExterne\Controller;

use GuzzleHttp\Psr7\Response;
use Helpers\Fichier\Fichier;
use Helpers\Framework\Debug;
use Modules\API\APIExterne\Enums\SwaggerTypesEnum;
use Skeleton\Controller\Controller;
use OpenApi\Annotations as OA;
use Symfony\Component\Yaml\Yaml;

class DocumentationController extends Controller
{
    /**
     * Permet de mettre à jour la fonction regroupant les traductions pour l'extraction de texte
     * @var bool RENEW_FUNCTION
     */
    const RENEW_FUNCTION = false;

    /**
     * Permet de cibler les clés de la documentation à traduire
     * @var array<mixed> KEY_TO_TRANSLATE
     */
    const KEY_TO_TRANSLATE = [
        'description',
        'name',
        'summary',
        'tags',
    ];

    const COMBINED_KEY_TO_AVOID = [
        'CodeConnecteur' => [
            'name' => 'name',
            'required' => 'required',
            'in' => 'in',
        ],
        'CodeVersion' => [
            'name' => 'name',
            'required' => 'required',
            'in' => 'in',
        ],
        'CodeSociete' => [
            'name' => 'name',
            'required' => 'required',
            'in' => 'in',
        ],
        'Id' => [
            'name' => 'name',
            'required' => 'required',
            'in' => 'in'
        ]
    ];

    /**
     * Contient le contenu à afficher pour renouveler la fonction de référencement des trads
     * @var string $echoFunction
     */
    private string $echoFunction = '';

    /**
     * @var array<mixed> $alreadyTranslate
     */
    private array $alreadyTranslate = [];

    /**
     * @return \GuzzleHttp\Psr7\Response|string
     */
    public function documentationAction()
    {
        try {
            $documentType = $this->request->getAttribute('type') ? SwaggerTypesEnum::from($this->request->getAttribute('type'))->value : SwaggerTypesEnum::Interfaces->value;
        } catch (\Exception) {
            return $this->redirect('API.Documentation.swaggerJson', ['mod' => 'get', 'type' => strtolower(SwaggerTypesEnum::Interfaces->value)]);
        }

        if (!Fichier::fileExisteTmp('swagger_interfaces_'.$_SESSION['Session_Langue'].'.json')) {
            return $this->redirect('API.Documentation.swaggerJson', ['mod' => 'get', 'type' => strtolower($documentType)]);
        }
        
        return $this->renderer->render('@API/Documentation/index', [
            "swaggerTypes" => array_map(fn($case) => $case->value, SwaggerTypesEnum::cases()),
            "documentType" => strtolower($documentType)
        ]);
    }
    
    /**
     * swaggerJsonAction
     *
     * @return mixed
     */
    public function swaggerJsonAction()
    {
        $type                           = $this->request->getAttribute('type') ?? 'interfaces';
        $mod                            = $this->request->getAttribute('mod') ?? '';
        $urlServer                     = $this->contenaire->get('urlOxaprocWithVarServ').'/'.$this->contenaire->get('API.prefix');
        $returnLater                     = false;
        if ($mod === 'get') {
            $contentFile = Fichier::getContentFile('swagger_'.$type.'_'.$_SESSION['Session_Langue'].'.json');

            $array = json_decode($contentFile); //@phpstan-ignore-line
            $server = $array->servers[0]->url;

            if ($server !== $urlServer) {
                $returnLater = true;
            }

            if (!$returnLater) {
                return new Response(
                    200,
                    ['Content-Type' => 'application/json'],
                    (string) $contentFile
                );
            }
        }

        $documentation                  = Yaml::parseFile('../swagger/SWAGGER_'.$type.'.yaml');
        $return                         = array_merge($documentation);
        $return['servers'][0]['url']    = $urlServer;
        $return['info']['version']      = $this->getVersion();
        $trad                           = $this->getTranslationService();

        /**
         * @param array<mixed> $array Tableau à traduire
         * @param array<mixed> $keys Tableau des clefs à traduire
         * @param callable $func Fonction qui traduit l'occurence
         * @param mixed $previousKey Permet de récupérer la clef précédemment parcouru
         * @param bool $toTranslate Variable magique servant pour certain cas
         * @return mixed
         */
        $modify = function (&$array, $keys, $func, $previousKey = null, $toTranslate = false) use (&$modify) {
            foreach ($array as $key => $value) {
                if (is_array($value)) {
                    // si la valeur est un sous-tableau, on appelle récursivement la fonction
                    $array[$key] = $modify($value, $keys, $func, $key, array_key_exists($key, $keys));
                } else {
                    // sinon, on vérifie si la clé fait partie du tableau de clés
                    // ou si la clé précédente en fait partie
                    // et on vérifie que la clef n'est pas à une clef à traduire selon certain tableau
                    if ((array_key_exists($key, $keys) || $toTranslate)
                        && isset(self::COMBINED_KEY_TO_AVOID[$previousKey])
                        && !@array_key_exists($key, self::COMBINED_KEY_TO_AVOID[$previousKey])
                    ) {
                        $array[$key] = $func($value);
                    }
                }
            }
            return $array;
        };


        $modify($return, array_flip(self::KEY_TO_TRANSLATE), function ($var) use ($trad) {
            $var = str_replace('"', '\\"', $var);
            $stringLength = strlen($var);

            if (self::RENEW_FUNCTION && !in_array($var, $this->alreadyTranslate)) { // @phpstan-ignore-line
                if ($stringLength > 255) {
                    $regex = "/\.([a:Z]|\s)/m";
                    $matches = preg_split($regex, $var);
                    $nbMatches = count($matches); // @phpstan-ignore-line
                    $iMatch = 1;
                    foreach ($matches as $match) { // @phpstan-ignore-line
                        $dot = ($iMatch < $nbMatches) ? '.' : '';
                        $this->echoFunction .= trim(preg_replace('/\s+/', ' ', '$trad->t("'.$match.$dot.'");')).PHP_EOL;
                        $iMatch++;
                    }
                } else {
                    $this->echoFunction .= trim(preg_replace('/\s+/', ' ', '$trad->t("'.$var.'");')).PHP_EOL;
                }
                $this->alreadyTranslate[] = $var;
            }

            $translated = $trad->t($var);

            if ($stringLength > 255) {
                $regex = "/\.([a:Z]|\s)/m";
                $matches = preg_split($regex, $var);
                $nbMatches = count($matches); //@phpstan-ignore-line
                $iMatch = 1;
                $translated = '';

                foreach ($matches as $match) { // @phpstan-ignore-line
                    $dot = ($iMatch < $nbMatches) ? '.' : '';
                    $translated .= $trad->t($match.$dot);
                    $iMatch++;
                }
            }

            return $translated;
        });

        if (self::RENEW_FUNCTION) { // @phpstan-ignore-line
            return $this->echoFunction;
        }

        $return = $this->translateDescription($return);

        // @phpstan-ignore-next-line
        Fichier::createFichierTmp('swagger_'.$type.'_'.$_SESSION['Session_Langue'].'.json', json_encode($return));

        if ($returnLater) {
            return new Response(
                200,
                ['Content-Type' => 'application/json'],
                (string) Fichier::getContentFile('swagger_'.$type.'_'.$_SESSION['Session_Langue'].'.json')
            );
        }

        return $this->redirect('API.Documentation.documentation', ['type' => $type]);
    }

    /**
     * Fonction qui référence les traductions
     * @return void
     */
    // @phpstan-ignore-next-line
    private function translateForMagic()
    {
        $trad = $this->getTranslationService();
        
        $trad->t("Import de l'image de la facture");
        $trad->t("Permet d'importer une image facture");
        $trad->t("Numéro de facture");
        $trad->t("Nom de l'image facture");
        $trad->t("Image de la facture encodée en base 64");

        $trad->t("Connexion API");
        $trad->t("Healthcheck");
        $trad->t("Articles");
        $trad->t("Réceptions");
        $trad->t("Commandes");
        $trad->t("Charges constatées d'avance");
        $trad->t("Centre Analyse");
        $trad->t("Centres");
        $trad->t("Codes complémentaires");
        $trad->t("Codes gestion");
        $trad->t("Demandes Achat");
        $trad->t("Devises");
        $trad->t("Directions");
        $trad->t("Documents Attachés");
        $trad->t("Demandes de service");
        $trad->t("Engagements");
        $trad->t("Fabricants");
        $trad->t("Factures");
        $trad->t("Règlements");
        $trad->t("Familles");
        $trad->t("Factures à recevoir");
        $trad->t("Incidents Fournisseur");
        $trad->t("Fournisseurs");
        $trad->t("Gammes");
        $trad->t("Utilisateurs");
        $trad->t("Nature analytique");
        $trad->t("Réceptions des expéditions à destination");
        $trad->t("Remises Fournisseur Gammes Fabricants");
        $trad->t("Bons d'entrée");
        $trad->t("Bons de sortie");
        $trad->t("Sections d'imputation");
        $trad->t("Signataires Croisements");
        $trad->t("Section d'imputation par unité organisationnelle");
        $trad->t("Mouvements");
        $trad->t("Sociétés");
        $trad->t("Sous-comptes d’analyse");
        $trad->t("Sous familles");
        $trad->t("Champs supplémentaires");
        $trad->t("Unités organisationnelles");
        $trad->t("Connexion à l'API");
        $trad->t("Récupérer votre token Bearer de connexion à l'API");
        $trad->t("Contrôle d'intégrité de l'API");
        $trad->t("Permet d'obtenir un retour d'intégrité de l'API");
        $trad->t("Statut d'import");
        $trad->t("Obtention statut d'import");
        $trad->t("Permet d'obtenir le statut d'un import");
        $trad->t("Export d'articles");
        $trad->t("Permet d'exporter des articles");
        $trad->t("Export réussi et retourne le jeu de données ou le numéro de journal");
        $trad->t("Import d'articles");
        $trad->t("Permet d'importer ou modifier des articles");
        $trad->t("Export de réceptions");
        $trad->t("Permet d'exporter des réceptions");
        $trad->t("Import de réceptions");
        $trad->t("Permet d'importer ou modifier des réceptions");
        $trad->t("Export de commandes");
        $trad->t("Permet d'exporter des commandes");
        $trad->t("Import de commandes");
        $trad->t("Permet d'importer ou modifier des commandes");
        $trad->t("Export de CCA");
        $trad->t("Permet d'exporter des CCA");
        $trad->t("Export de centres analyse");
        $trad->t("Permet d'exporter des centres d'analyse");
        $trad->t("Import de centres d'analyse");
        $trad->t("Permet d'importer ou modifier des centres analyse");
        $trad->t("Import de centres");
        $trad->t("Permet d'importer ou modifier des centres");
        $trad->t("Export de codes complémentaires");
        $trad->t("Permet d'exporter des codes complémentaires");
        $trad->t("Import de codes complémentaires");
        $trad->t("Permet d'importer ou modifier des codes complémentaires");
        $trad->t("Export de codes de gestion");
        $trad->t("Permet d'exporter des codes de gestion");
        $trad->t("Import de codes de gestion");
        $trad->t("Permet d'importer ou modifier des codes de gestion");
        $trad->t("Import de demandes d'achat");
        $trad->t("Permet d'importer ou modifier des demandes d'achat");
        $trad->t("Export de devises");
        $trad->t("Permet d'exporter les devises");
        $trad->t("Import de devises");
        $trad->t("Permet d'importer ou modifier des devises");
        $trad->t("Export de directions");
        $trad->t("Permet d'exporter des directions");
        $trad->t("Import de directions");
        $trad->t("Permet d'importer ou modifier des directions");
        $trad->t("Code Société");
        $trad->t("Code Société (uniquement si CodeConnecteur = CEGID)");
        $trad->t("Export de documents attachés");
        $trad->t("Permet d'exporter des documents attachés");
        $trad->t("Import de documents attachés");
        $trad->t("Permet d'importer ou modifier des documents attachés");
        $trad->t("Import de demandes de service");
        $trad->t("Permet d'importer ou modifier des demandes de service");
        $trad->t("Export d'engagements");
        $trad->t("Permet d'exporter des engagements");
        $trad->t("Export de fabricants");
        $trad->t("Permet d'exporter des fabricants");
        $trad->t("Import de fabricants");
        $trad->t("Permet d'importer ou modifier des fabricants");
        $trad->t("Export de factures");
        $trad->t("Permet d'exporter des factures");
        $trad->t("Code Version");
        $trad->t("Code Version");
        $trad->t("Import de factures");
        $trad->t("Permet d'importer ou modifier des factures");
        $trad->t("Import de règlements");
        $trad->t("Permet d'importer ou modifier des règlements");
        $trad->t("Export de familles");
        $trad->t("Permet d'exporter des familles");
        $trad->t("Import de familles");
        $trad->t("Permet d'importer ou modifier des familles");
        $trad->t("Export de FAR");
        $trad->t("Permet d'exporter des FAR");
        $trad->t("Export d'incidents fournisseur");
        $trad->t("Permet d'exporter des incidents fournisseur");
        $trad->t("Import d'incidents fournisseur");
        $trad->t("Permet d'importer ou modifier des incidents fournisseur");
        $trad->t("Export de fournisseurs");
        $trad->t("Permet d'exporter des fournisseurs");
        $trad->t("Import de fournisseurs");
        $trad->t("Permet d'importer ou modifier des fournisseurs");
        $trad->t("Export de gammes");
        $trad->t("Permet d'exporter des gammes");
        $trad->t("Import de gammes");
        $trad->t("Permet d'importer ou modifier des gammes");
        $trad->t("Export d'utilisateurs");
        $trad->t("Permet d'exporter des utilisateurs");
        $trad->t("Import d'utilisateurs");
        $trad->t("Permet d'importer ou modifier des utilisateurs");
        $trad->t("Export nature analytique");
        $trad->t("Permet d'exporter des natures analytiques");
        $trad->t("Import de natures analytiques");
        $trad->t("Permet d'importer ou modifier des natures analytiques");
        $trad->t("Import de réceptions des expéditions à destination");
        $trad->t("Permet d'importer ou modifier des réceptions des expéditions à destination");
        $trad->t("Export remises fournisseur gammes fabricants");
        $trad->t("Permet d'exporter des remises fournisseur gammes fabricants");
        $trad->t("Import des remises fournisseur gammes fabricants");
        $trad->t("Permet d'importer ou modifier des remises fournisseur gammes fabricants");
        $trad->t("Export de bons d'entrée");
        $trad->t("Permet d'exporter des bons d'entrée");
        $trad->t("Import de bons d'entrée");
        $trad->t("Permet d'importer ou modifier des bons d'entrée");
        $trad->t("Export de bons de sortie");
        $trad->t("Permet d'exporter des bons de sortie");
        $trad->t("Import de bons de sortie");
        $trad->t("Permet d'importer ou modifier des bons de sortie");
        $trad->t("Export de sections d'imputation");
        $trad->t("Permet d'exporter des sections d'imputation");
        $trad->t("Import de sections d'imputation");
        $trad->t("Permet d'importer ou modifier des sections d'imputation");
        $trad->t("Import de signataires croisements");
        $trad->t("Permet d'importer ou modifier des signataires croisements");
        $trad->t("Export section d'imputation par unité organisationnelle");
        $trad->t("Permet d'exporter des sections d'imputation par unité organisationnelle");
        $trad->t("Import de sections d'imputation par unité organisationnelle");
        $trad->t("Permet d'importer ou modifier des sections d'imputation par unité organisationnelle");
        $trad->t("Export de mouvements");
        $trad->t("Permet d'exporter des mouvements");
        $trad->t("Import de sociétés");
        $trad->t("Permet d'importer ou modifier des sociétés");
        $trad->t("Export de sous-comptes d’analyse");
        $trad->t("Permet d'exporter des sous-comptes d’analyse");
        $trad->t("Import de sous-comptes d’analyse");
        $trad->t("Permet d'importer ou modifier des sous-comptes d’analyse");
        $trad->t("Export de sous-familles");
        $trad->t("Permet d'exporter des sous-familles");
        $trad->t("Import de sous-familles");
        $trad->t("Permet d'importer ou modifier des sous-familles");
        $trad->t("Export des tables de champs supplémentaires");
        $trad->t("Permet d'exporter les tables de champs supplémentaires");
        $trad->t("Import de tables de champs supplémentaires");
        $trad->t("Permet d'importer ou modifier des tables de champs supplémentaires");
        $trad->t("Export d'unités organisationnelles");
        $trad->t("Permet d'exporter les unités organisationnelles");
        $trad->t("Import d'unités organisationnelles");
        $trad->t("Permet d'importer ou modifier des unités organisationnelles");
        $trad->t("alpha de 1. valeurs permises : 'N' pour normal (export via système de journalisation), 'U' pour unitaire (demande d'export d'un record particulier)");
        $trad->t("Pour le mode 'N'. La valeur doit correspondre à l'un des codes interface export définis pour l'objet dans le paramétrage des flux");
        $trad->t("Entier à 9 chiffres. Pour le mode 'N'. Sert à demander le ré-export d'un journal déjà existant");
        $trad->t("Pour certains types d'objets (FAR, CCA, ENGAGE, SMOUVEME). Nécessaire pour construire le résultat");
        $trad->t("Pour le mode 'U'.");
        $trad->t("Identifiant du record demandé.");
        $trad->t("Suivant le type d'objet, l'identifiant est composé de 1 à 5 segments.");
        $trad->t("Les champs sont des alpha.");
        $trad->t("Pour les documents dont l'identifiant est numérique (DA, Cdes, ....), la valeur attendue est un numéro à 9 chiffres préfixé de 0.");
        $trad->t("Ex : '004590523'");
        $trad->t("Caractéristique complémentaire (CC) sur une Table de référence");
        $trad->t("N° identifiant");
        $trad->t("N° d'ordre d'affichage");
        $trad->t("Est-ce une ligne de titre ?");
        $trad->t("Nom de la caractéristique complémentaire");
        $trad->t("Type de la caractéristique complémentaire");
        $trad->t("A saisir uniquement sur le Bon de réception ?");
        $trad->t("Non visible sur le Bon de réception ?");
        $trad->t("Cette caractéristique est-elle obligatoire ?");
        $trad->t("Imprimée sur le Bon de Commande ?");
        $trad->t("La valeur de cette caractéristique est-elle calculée automatiquement ?");
        $trad->t("Expression de calcul, pour une caractéristique calculée");
        $trad->t("Liste des Caractéristiques complémentaires (CC) sur une Ligne de Document");
        $trad->t("Code de l'article");
        $trad->t("Designation");
        $trad->t("Date Coût std");
        $trad->t("Prix Coût std");
        $trad->t("Cumul Coût std");
        $trad->t("Sous famille");
        $trad->t("Unite");
        $trad->t("Classe (ABC)");
        $trad->t("Zone libre Num");
        $trad->t("Zone libre Alpha");
        $trad->t("Stocké");
        $trad->t("Date de validité minimum");
        $trad->t("Date de validité maximum");
        $trad->t("Contrôle Qualité");
        $trad->t("Taux de TVA");
        $trad->t("Code Fabricant");
        $trad->t("Code Gamme");
        $trad->t("Réf. Article/fabricant");
        $trad->t("Type Gamme ?");
        $trad->t("Prix le plus bas");
        $trad->t("Date mise à jour Px le plus bas");
        $trad->t("Image Article");
        $trad->t("Code Douane");
        $trad->t("Code UNSPSC");
        $trad->t("Autor Cde direct Form métier ?");
        $trad->t("Date modif pour trigger");
        $trad->t("N° Classe équivalence");
        $trad->t("Coeff. conv. unite classe");
        $trad->t("Non visible sur OXAPROC ?");
        $trad->t("Article critique ?");
        $trad->t("Rayon");
        $trad->t("Article générique ?");
        $trad->t("Avec taxe locale ?");
        $trad->t("Limitation au périmètre stock ?");
        $trad->t("Code Langue");
        $trad->t("Designation Article");
        $trad->t("Code Unité");
        $trad->t("Coefficient de conversion");
        $trad->t("Numéro de bon de réception");
        $trad->t("Numéro de commande");
        $trad->t("Code société");
        $trad->t("Date Enregistrement Bon de Réception AAAA-MM-JJ par défaut, date du jour");
        $trad->t("Référence Bon de Livraison Fournisseur");
        $trad->t("Date Bon de Livraison Fournisseur AAAA-MM-JJ");
        $trad->t("Date période AAAA-MM-JJ par défaut, date du jour");
        $trad->t("Créateur du BR");
        $trad->t("Commentaire");
        $trad->t("Type de BR : R = Réception, A = Annulation");
        $trad->t("Numéro de la réception annulée pour le type \"A\"");
        $trad->t("En export uniquement. Code acheteur de la commande");
        $trad->t("En mode import : Déclencheur de la validation automatique du BR");
        $trad->t("Numéro de Ligne de Cde");
        $trad->t("Numéro de ligne de BR");
        $trad->t("En export uniquement. Code article de la ligne de commande");
        $trad->t("En export uniquement. Description produit");
        $trad->t("Indique si la réception est faite en montant (et non en quantité)");
        $trad->t("Quantité reçue (mode réception, en quantité)");
        $trad->t("Quantité comptée (mode réception, en quantité)");
        $trad->t("Quantité acceptée (mode réception, en quantité)");
        $trad->t("Quantité retournée (mode annulation - type \"A\", en quantité)");
        $trad->t("En export uniquement. Unité de commande");
        $trad->t("Montant réceptionné (mode réception - type \"R\", en montant)");
        $trad->t("Montant retourné (mode annulation - type \"A\", en montant)");
        $trad->t("N° de la ligne de la réception annulée pour le type \"A\"");
        $trad->t("Commentaire ligne");
        $trad->t("Indique que la ligne de commande est soldée");
        $trad->t("Type de Pièce Jointe");
        $trad->t("Titre de Pièce jointe");
        $trad->t("Copie ?");
        $trad->t("Nom fichier stocké par l'application (fic_pj) Export");
        $trad->t("Nom de fichier original");
        $trad->t("N° Cde");
        $trad->t("Avenant");
        $trad->t("Etat commande");
        $trad->t("Etat Financ.");
        $trad->t("Date de Validation");
        $trad->t("Date AR");
        $trad->t("Date Période");
        $trad->t("Code Fournisseur");
        $trad->t("Contact fournisseur");
        $trad->t("Téléphone contact");
        $trad->t("Fax contact");
        $trad->t("Email Contact");
        $trad->t("Date de création");
        $trad->t("Acheteur");
        $trad->t("Sect Imputation");
        $trad->t("Code Complémentaire");
        $trad->t("Ctr Emetteur");
        $trad->t("Ctr Livraison");
        $trad->t("Ctr Facturation");
        $trad->t("Rem Globale");
        $trad->t("Accord Cadre");
        $trad->t("Zone libre numérique");
        $trad->t("Devise");
        $trad->t("Valeur Devise en pivot BDD");
        $trad->t("Valeur Devise en pivot Societé");
        $trad->t("Cond de paiement");
        $trad->t("Mode de paiement");
        $trad->t("Mode de livraison");
        $trad->t("Comm. libre");
        $trad->t("Tot CA ss remise");
        $trad->t("Tot CA HT");
        $trad->t("Tot CA TTC");
        $trad->t("Somme déjà facturée");
        $trad->t("Somme Facturée Validée");
        $trad->t("Rel. Acc. Réception");
        $trad->t("Rel. Préventive");
        $trad->t("Rel. Date Réception");
        $trad->t("Rel Retard");
        $trad->t("Flag Archive");
        $trad->t("Motif Avenant");
        $trad->t("Objet CA");
        $trad->t("Demandeur");
        $trad->t("Signée ?");
        $trad->t("Refusée ?");
        $trad->t("Date Livraison init.");
        $trad->t("Saisie de réception ?");
        $trad->t("Type document");
        $trad->t("Code Société");
        $trad->t("Adresse Cde Fourn.");
        $trad->t("CP Ville Cde Fourn.");
        $trad->t("Pays Cde Fourn.");
        $trad->t("Cde avec Expédition ?");
        $trad->t("Mode de transport");
        $trad->t("Transitaire");
        $trad->t("Contact Transitaire");
        $trad->t("Tél. Contact Transitaire");
        $trad->t("Fax Contact Transitaire");
        $trad->t("Portable Contact Transitaire");
        $trad->t("Email Contact Transitaire");
        $trad->t("Devise Transitaire");
        $trad->t("Val Devise Transitaire");
        $trad->t("Fourn. Livr./Enlèvement");
        $trad->t("Adresse Livr./Enlèvement");
        $trad->t("CP Ville Livr./Enlèvement");
        $trad->t("Pays Livr./Enlèvement");
        $trad->t("Pré-Acheminement ?");
        $trad->t("Ré-Acheminement ?");
        $trad->t("Mode de Ré-Acheminement");
        $trad->t("Contrôle Entrée Territoire ?");
        $trad->t("Date Contrôle Prévu");
        $trad->t("Organisme de Contrôle");
        $trad->t("Contact Org.Ctrl");
        $trad->t("Tél Contact Org.Ctrl");
        $trad->t("Fax Contact Org.Ctrl");
        $trad->t("Portable Contact Org.Ctrl");
        $trad->t("Email Contact Org.Ctrl");
        $trad->t("Licence d'importation");
        $trad->t("Franchise de TVA ?");
        $trad->t("Fournisseur Exportateur ?");
        $trad->t("Montant simulation de facture");
        $trad->t("Date facture expédition");
        $trad->t("Date facture proforma");
        $trad->t("Portable contact fournisseur");
        $trad->t("Référence Offre Fournisseur");
        $trad->t("Expédition à la charge du fourn.?");
        $trad->t("Nom Adresse Livraison/Enlèv.");
        $trad->t("Tél. Adresse Livraison/Enlèv");
        $trad->t("Fax Adresse Livraison/Enlèv..");
        $trad->t("Attente de DAU ?");
        $trad->t("Type achat marché public");
        $trad->t("Type Présentation Date");
        $trad->t("Code du Modèle de Cde");
        $trad->t("Code langue de Cde");
        $trad->t("Nom Adresse de livraison");
        $trad->t("Adresse de livraison");
        $trad->t("CP Ville de livraison");
        $trad->t("Pays de livraison");
        $trad->t("Nom contact 1 Livraison");
        $trad->t("Fonction contact 1 Livraison");
        $trad->t("Tel contact 1 Livraison");
        $trad->t("Fax contact 1 Livraison");
        $trad->t("Portable contact 1 Livraison");
        $trad->t("Email contact 1 Livraison");
        $trad->t("Nom contact 2 Livraison");
        $trad->t("Fonction contact 2 Livraison");
        $trad->t("Tel contact 2 Livraison");
        $trad->t("Fax contact 2 Livraison");
        $trad->t("Portable contact 2 Livraison");
        $trad->t("Email contact 2 Livraison");
        $trad->t("Logisticien");
        $trad->t("Réf Impression Cde (LAD)");
        $trad->t("Code Gestion affiché");
        $trad->t("Libellée gestion");
        $trad->t("Code postal Cde Fourn.");
        $trad->t("Ville Cde Fourn.");
        $trad->t("Code postal Livr./Enlèvement");
        $trad->t("Ville Livr./Enlèvement");
        $trad->t("Code postal de livraison");
        $trad->t("Ville de livraison");
        $trad->t("AR : Non conforme ?");
        $trad->t("AR : Référence fourn.");
        $trad->t("TAC-Type d'achat");
        $trad->t("Interfaçable ?");
        $trad->t("ID code gestion");
        $trad->t("ID Gestion Documentaire");
        $trad->t("URL Gestion Documentaire");
        $trad->t("Titre Commande");
        $trad->t("RS du fournisseur");
        $trad->t("SIRET/TAXE1");
        $trad->t("TAXE2");
        $trad->t("TAXE3");
        $trad->t("TAXE");
        $trad->t("Nom acheteur");
        $trad->t("Téléphone acheteur");
        $trad->t("Fax acheteur");
        $trad->t("Portable acheteur");
        $trad->t("Mail acheteur");
        $trad->t("Date de Signature");
        $trad->t("Date d'impression");
        $trad->t("N° de Poste");
        $trad->t("Code article");
        $trad->t("Désignation sommaire");
        $trad->t("Désignation complémentaire");
        $trad->t("Code de la sous famille");
        $trad->t("Prix Unitaire");
        $trad->t("Remise");
        $trad->t("Prix unitaire net TTC");
        $trad->t("TVA");
        $trad->t("Quantité commandée");
        $trad->t("Unité");
        $trad->t("Quantité reste à livrer");
        $trad->t("Montant RAL (calcul)");
        $trad->t("Montant HT ligne");
        $trad->t("Montant TTC ligne");
        $trad->t("Section d'imputation");
        $trad->t("Code complémentaire");
        $trad->t("Code sous-comptes d’analyse");
        $trad->t("Date de livraison contractuelle");
        $trad->t("Date de livraison prévisionnelle");
        $trad->t("Numéro de poste de DA");
        $trad->t("Quantité facturée");
        $trad->t("Quantité facturée validée");
        $trad->t("Somme facturée");
        $trad->t("Etat ligne CA");
        $trad->t("Somme facturée validée");
        $trad->t("Site stock");
        $trad->t("Contrôle BR");
        $trad->t("Tolérance livraison avancée");
        $trad->t("Code de la société");
        $trad->t("Titre avenant");
        $trad->t("Sous-total après ?");
        $trad->t("Poids brut (Kg)");
        $trad->t("Longueur (cm)");
        $trad->t("Largeur (cm)");
        $trad->t("Hauteur (cm)");
        $trad->t("Volume (m3)");
        $trad->t("Origine");
        $trad->t("Provenance");
        $trad->t("Code douane");
        $trad->t("Masquer quantité ?");
        $trad->t("Masquer unité ?");
        $trad->t("Masquer prix unitaire ?");
        $trad->t("Masquer désignation sommaire ?");
        $trad->t("Type présentation date");
        $trad->t("Poids net (Kg)");
        $trad->t("Code gestion affiché");
        $trad->t("Réf. Fournisseur");
        $trad->t("Code fabricant");
        $trad->t("Code gamme");
        $trad->t("Réf Fabricant");
        $trad->t("ID code gestion");
        $trad->t("Réception automatique ?");
        $trad->t("Déclenchement automatique de la validation de commande");
        $trad->t("Si la commande est validée, la passe en statut imprimée");
        $trad->t("Numéro de Facture");
        $trad->t("Type FAC ou AV (facture ou avoir)");
        $trad->t("Date enregistrement");
        $trad->t("Date période");
        $trad->t("Num. Facture du Fournisseur");
        $trad->t("Date Facture du Fournisseur");
        $trad->t("Code Devise");
        $trad->t("Valeur devise en pivot BDD");
        $trad->t("Valeur devise en pivot Societé");
        $trad->t("Total HT");
        $trad->t("Total TTC - Cumul HT des lignes - Cumul TTC des lignes");
        $trad->t("Ordonnance");
        $trad->t("Date d'échéance");
        $trad->t("Mode de règlement");
        $trad->t("Entête Validé ?");
        $trad->t("Affectations enregistrées ?");
        $trad->t("Affectations Validées ?");
        $trad->t("Bon à Payer ?");
        $trad->t("Date Bon à payer");
        $trad->t("Entête en compta ?");
        $trad->t("Affectations en compta ?");
        $trad->t("Bon à payer en compta ?");
        $trad->t("TVA en compta ?");
        $trad->t("En litige ?");
        $trad->t("Numéro de commande si paramétrage HA Plus sur cde unique par facture");
        $trad->t("Pré-Affectation ?");
        $trad->t("Facture issue LAD ?");
        $trad->t("Nom fichier LAD");
        $trad->t("Numéro de Ligne");
        $trad->t("Numéro de Commande");
        $trad->t("Numéro de BR");
        $trad->t("Numéro de Ligne de BR");
        $trad->t("Numéro de terme de paiement");
        $trad->t("Désignation ligne");
        $trad->t("Sous Famille");
        $trad->t("TP Sur Quantité ?");
        $trad->t("Quantité");
        $trad->t("P.U. Remisé");
        $trad->t("Montant");
        $trad->t("Section Imputation");
        $trad->t("Type de TVA");
        $trad->t("Numéro Enreg. Fact. Réf. (Avoir)");
        $trad->t("Bon de livraison Fourn.");
        $trad->t("N° d'expedition");
        $trad->t("N° Ligne pied expédition");
        $trad->t("Code centre analyse");
        $trad->t("Libellé centre analyse");
        $trad->t("Code centre");
        $trad->t("Raison sociale");
        $trad->t("Adresse");
        $trad->t("Ville");
        $trad->t("Code postal");
        $trad->t("Pays");
        $trad->t("Centre d'émission ?");
        $trad->t("Centre de livraison ?");
        $trad->t("Centre de facturation ?");
        $trad->t("Code Société. Uniquement si les codes complémentaires sont sectorisés");
        $trad->t("Code CDC");
        $trad->t("Libellé. Obligatoire uniquement en création");
        $trad->t("Nature analytique. Obligatoire uniquement en création");
        $trad->t("Date minimum de validité");
        $trad->t("Date maximum de validité");
        $trad->t("Budget");
        $trad->t("Pour investissement ?");
        $trad->t("Section d'Imputation");
        $trad->t("N° Lot");
        $trad->t("ID Parent");
        $trad->t("Date début validité");
        $trad->t("Autorisé aux achats");
        $trad->t("Numéro de la DA. En numérotation automatique, cette valeur ne doit pas être alimentée. Sinon, le numéro ne doit pas déjà exister");
        $trad->t("Identifiant du demandeur");
        $trad->t("Type de DA : Chiffrage ou Exécution");
        $trad->t("Code type de document");
        $trad->t("Code type d'achat pour les marchés publics");
        $trad->t("Date de création de la DA");
        $trad->t("Code fournisseur principal de la DA");
        $trad->t("Adresse du fournisseur");
        $trad->t("Pays du fournisseur");
        $trad->t("Code postal du fournisseur");
        $trad->t("Ville du fournisseur");
        $trad->t("Nom du contact fournisseur");
        $trad->t("Téléphone du contact fournisseur");
        $trad->t("Fax du contact fournisseur");
        $trad->t("Mobile du contact fournisseur");
        $trad->t("Adresse mail du contact fournisseur");
        $trad->t("Code condition de paiement");
        $trad->t("Code mode de paiement");
        $trad->t("Code mode de livraison");
        $trad->t("Code message");
        $trad->t("Code langue de la DA");
        $trad->t("Accord-cadre principal de la DA");
        $trad->t("Section d'imputation principale de la DA");
        $trad->t("Id interne Code gestion principal de la DA");
        $trad->t("Code gestion affiché principal de la DA");
        $trad->t("Code complémentaire principal de la DA");
        $trad->t("Sous-comptes d’analyse principal de la DA");
        $trad->t("Date de livraison principale de la DA");
        $trad->t("Code centre de livraison principal de la DA");
        $trad->t("Code postal livraison");
        $trad->t("Nom du contact livraison");
        $trad->t("Fonction du contact livraison");
        $trad->t("Téléphone du contact livraison");
        $trad->t("Fax du contact livraison");
        $trad->t("Mobile du contact livraison");
        $trad->t("Adresse mail du contact livraison");
        $trad->t("Mode de transport pour livraison via expédition");
        $trad->t("Budget de la DA en devise de la société");
        $trad->t("Devise des prix de la DA");
        $trad->t("Titre de la DA");
        $trad->t("Commentaire interne de la DA");
        $trad->t("Zone texte libre");
        $trad->t("Numéro de la ligne de DA");
        $trad->t("Complément de désignation");
        $trad->t("Sous-famille d'achat");
        $trad->t("Quantité demandée");
        $trad->t("Prix unitaire brut");
        $trad->t("Taux de remise");
        $trad->t("Budget total de la ligne en devise de la société");
        $trad->t("Section d'imputation ligne");
        $trad->t("Code gestion ligne");
        $trad->t("Code gestion affiché de la ligne");
        $trad->t("Code complémentaire ligne");
        $trad->t("Sous-comptes d’analyse ligne");
        $trad->t("Code centre de livraison de la ligne");
        $trad->t("Mode de transport de la ligne, si expédition");
        $trad->t("Site de stock");
        $trad->t("Code fournisseur");
        $trad->t("Code accord cadre");
        $trad->t("Type achat marché public de la ligne");
        $trad->t("Référence fournisseur");
        $trad->t("Code gamme fabricant");
        $trad->t("Référence fabricant");
        $trad->t("Code du contrôle à la réception");
        $trad->t("Ligne en réception automatique ?");
        $trad->t("Date de début du contrat");
        $trad->t("Date de fin du contrat");
        $trad->t("Périodicité du contrat : (M)ensuelle, (T)rimestrielle, (S)emestrielle, (A)nnuelle");
        $trad->t("Livraison en fin ou début de période : (F)in, (D)ébut");
        $trad->t("Date de livraison souhaitée");
        $trad->t("Quantité demandée à la date de livraison souhaitée");
        $trad->t("Code de la devise");
        $trad->t("Libellé de la devise");
        $trad->t("Code Société. Inutile si l'axe section d'imputation n'est pas sectorisé");
        $trad->t("Code Direction");
        $trad->t("Libellé Direction. Obligatoire si création dans OXA.SRM");
        $trad->t("Code du type d'objet");
        $trad->t("Identifiant de l'objet");
        $trad->t("N° d'ordre du document. En mode import, si une valeur est présente, le document devra exister pour être mis à jour, sinon ce sera une création.");
        $trad->t("Type de document. Par défaut : \"PJ\"");
        $trad->t("Uniquement pour les documents fournisseurs");
        $trad->t("Titre du document");
        $trad->t("Uniquement en mode export.");
        $trad->t("Uniquement pour les documents de l'objet ARTICLES");
        $trad->t("Uniquement pour les documents des objets SOCIETE, CENTRE, FOURNISS et GRPFOU");
        $trad->t("Uniquement pour les documents de l'objet FOURNISS : Document à ne pas relancer.");
        $trad->t("Uniquement pour les documents de l'objet FOURNISS : Document inutile pour ce fournisseur");
        $trad->t("\"F\" = Fichier, \"U\" = URL");
        $trad->t("Uniquement en mode export. Nom physique du document dans le répertoire paramétré.");
        $trad->t("En mode export, nom d'origine du document ; en mode import, nom du fichier à charger.");
        $trad->t("En mode import uniquement, suppression du document rattaché");
        $trad->t("N° de demande de stock. A l'import, dépend du mode de numérotation");
        $trad->t("Date de création DS. Par défaut, le système affecte la date du jour");
        $trad->t("Type de demande de stock. Valeurs permises \"S\"=Sortie, \"T\"=Transfert");
        $trad->t("Tiers (sortie) ou Site (transfert) destinataire");
        $trad->t("Site d'origine");
        $trad->t("État de DS. Uniquement export");
        $trad->t("Date de validation. Uniquement export");
        $trad->t("N° de ligne.");
        $trad->t("Quantité à sortir ou transférer");
        $trad->t("Date de sortie ou transfert souhaitée. Peut être remplacée par un planning");
        $trad->t("Quantité restant à traiter. Uniquement export");
        $trad->t("Etat de la ligne. Uniquement export");
        $trad->t("Redondance du type de DS. Uniquement export");
        $trad->t("Redondance du site d'origine. Uniquement export");
        $trad->t("Redondance du site ou tiers destinataire. Uniquement export");
        $trad->t("Code section d'imputation");
        $trad->t("Redondance du code société. Uniquement export");
        $trad->t("Valeur d'affichage du code gestion");
        $trad->t("Libellé du code gestion");
        $trad->t("ID interne du code gestion");
        $trad->t("N° de DA associé. Process demande stock OXA.PROC. Uniquement export");
        $trad->t("N° de ligne de DA associé. Process demande stock OXA.PROC. Uniquement export");
        $trad->t("Planning de DS. Facultatif");
        $trad->t("Date souhaitée pour la ligne de planning");
        $trad->t("Quantité de la ligne de planning");
        $trad->t("Uniquement export");
        $trad->t("Code société du document");
        $trad->t("Code du fournisseur du document");
        $trad->t("Type document : C=Commande, F=Facture");
        $trad->t("Numéro du document HA Plus");
        $trad->t("Date création document");
        $trad->t("Code acheteur si commande");
        $trad->t("conversion devise à l'incertain");
        $trad->t("Code société de la ligne de document");
        $trad->t("Montant HT engagement");
        $trad->t("1ère date de livraison");
        $trad->t("Statut de la ligne");
        $trad->t("Numéro de la ligne de document");
        $trad->t("Numéro bon de réception");
        $trad->t("Désignation article");
        $trad->t("Quantité de la ligne");
        $trad->t("Numéro de la demande d'achat");
        $trad->t("Date de la réception");
        $trad->t("Code du fabricant. Obligatoire.");
        $trad->t("Raison sociale. Obligatoire en création");
        $trad->t("Préfixe du fabricant (3 caractères, en majuscules)");
        $trad->t("Préfixer le code article ?");
        $trad->t("Fabricant autorisé à Cde e-proc ?");
        $trad->t("Numéro de Facture. Dépend du mode de numérotation");
        $trad->t("Total TTC");
        $trad->t("Cumul HT des lignes - uniquement à l'export");
        $trad->t("Cumul TTC des lignes - uniquement à l'export");
        $trad->t("Entête Validee ? - Uniquement à l'export");
        $trad->t("Affectations enregistrées ? - Uniquement à l'export");
        $trad->t("Affectations Validées ? - Uniquement à l'export");
        $trad->t("Bon à Payer ? - Uniquement à l'export");
        $trad->t("Date Bon à payer - Uniquement à l'export");
        $trad->t("Entête en compta ? - Uniquement à l'export");
        $trad->t("Affectations en compta ? - Uniquement à l'export");
        $trad->t("Bon à payer en compta ? - Uniquement à l'export");
        $trad->t("TVA en compta ? - Uniquement à l'export");
        $trad->t("Raison sociale de règlement");
        $trad->t("Adresse de règlement");
        $trad->t("CP Ville de règlement");
        $trad->t("Pays de réglement");
        $trad->t("Domiciliation banque");
        $trad->t("Code Banque");
        $trad->t("Code Guichet");
        $trad->t("Numéro Compte bancaire");
        $trad->t("Clé RIB");
        $trad->t("En litige ? - Uniquement à l'export");
        $trad->t("En attente de signature ? - Uniquement à l'export");
        $trad->t("Refus de signature ? - Uniquement à l'export");
        $trad->t("IBAN Pays");
        $trad->t("IBAN Clé");
        $trad->t("IBAN Compte");
        $trad->t("Code BIC");
        $trad->t("Pré-Affectation ? - Uniquement à l'export");
        $trad->t("Code postal de règlement");
        $trad->t("Ville de règlement");
        $trad->t("Type url LAD, C/E");
        $trad->t("Créateur de la facture");
        $trad->t("Libellé comptable");
        $trad->t("Provoque la validation de l'entête de facture lors de l'import");
        $trad->t("Provoque la validation des affectations de facture lors de l'import");
        $trad->t("Provoque la validation du bon à payer lors de l'import");
        $trad->t("Commentaire du litige");
        $trad->t("TP Sur Quantité");
        $trad->t("Bon de livraison Fournisseur - Uniquement à l'export");
        $trad->t("Date modif - Uniquement à l'export");
        $trad->t("Id. Code gestion");
        $trad->t("Montant de TVA");
        $trad->t("Solder financièrement la ligne de commande ? - Optionnel lors de l'import.");
        $trad->t("Code gestion affiché - Uniquement à l'export");
        $trad->t("Libellé du Code gestion - Uniquement à l'export");
        $trad->t("N° Ordre Pièce Jointe");
        $trad->t("Titre");
        $trad->t("Lecture seule ?");
        $trad->t("A imprimer avec Facture ?");
        $trad->t("Imprimer Titre en fin de Fact.?");
        $trad->t("Nom fichier stocké par HA Plus (fic_pj) - Uniquement à l'export");
        $trad->t("Code du fournisseur");
        $trad->t("Numéro facture interne Oxalys. Facultatif si présence de FACT_FOU");
        $trad->t("Référence facture fournisseur. Facultatif si présence de NUM_FACT");
        $trad->t("Date du règlement");
        $trad->t("Référence du règlement");
        $trad->t("Code mode de règlement. Facultatif, contrôlé dans le référentiel Oxalys");
        $trad->t("Montant règlement en devise du règlement. Obligatoire");
        $trad->t("Montant règlement en devise de la facture. Facultatif");
        $trad->t("Devise du règlement, si différente de la devise de facture");
        $trad->t("C = Cumulé, U = Unitaire, S = Suppression");
        $trad->t("Code famille");
        $trad->t("Code langue");
        $trad->t("Libellé famille");
        $trad->t("Valeur du Champ de critère de rupture spécifique client 1");
        $trad->t("Valeur du Champ de critère de rupture spécifique client 2");
        $trad->t("Valeur du Champ de critère de rupture spécifique client 3");
        $trad->t("Date de génération de la FAR");
        $trad->t("Type : FAR");
        $trad->t("RS Fournisseur");
        $trad->t("Total HT FAR");
        $trad->t("Total TTC FAR");
        $trad->t("Total HT de la Cde");
        $trad->t("Total TTC de la Cde");
        $trad->t("Date de création de la Cde");
        $trad->t("Date de période de la Cde");
        $trad->t("Date de validation de la Cde");
        $trad->t("Date impression de la Cde");
        $trad->t("Désignation complémentaire ligne");
        $trad->t("ID interne code gestion");
        $trad->t("Code gestion");
        $trad->t("Libellé code gestion");
        $trad->t("N° Identifiant unique interne. Information présente uniquement lors de l'export, elle est inutile pour l'import.");
        $trad->t("Code du fournisseur. Obligatoire.");
        $trad->t("Niveau de l'incident");
        $trad->t("Date de l'incident. Obligatoire.");
        $trad->t("Code de l'incident. Obligatoire.");
        $trad->t("Libellé de l'incident. Information présente uniquement lors de l'export, elle est inutile pour l'import.");
        $trad->t("Code de la catégorie de l'incident. Information présente uniquement lors de l'export, elle est inutile pour l'import.");
        $trad->t("Libellé de la catégorie de l'incident. Information présente uniquement lors de l'export, elle est inutile pour l'import.");
        $trad->t("Description de l'incident. Obligatoire.");
        $trad->t("N° de la Commande concernée par l'incident");
        $trad->t("N° de la ligne de Commande concernée par l'incident");
        $trad->t("N° du Bon de réception (BR) concerné par l'incident");
        $trad->t("N° de ligne du Bon de réception (BR) concerné par l'incident");
        $trad->t("Code de l'article concerné");
        $trad->t("Désignation de l'article concerné");
        $trad->t("Quantité refusée ou en retard");
        $trad->t("Date de livraison prévue");
        $trad->t("Date de création de la commande concernée. Information présente uniquement lors de l'export, elle est inutile pour l'import (elle est déduite du N° de la Commande)");
        $trad->t("Code de l'utilisateur qui a enregistré l'incident");
        $trad->t("N° de la Facture concernée par l'incident");
        $trad->t("Code fournisseur (CODE). Facultatif en création si la numérotation automatique est activée. Obligatoire sinon");
        $trad->t("Raison sociale (RS). Obligatoire en création");
        $trad->t("Concaténation CP et Ville");
        $trad->t("Code Pays (CODE_PAYS). Obligatoire en création");
        $trad->t("Telephone");
        $trad->t("Telex");
        $trad->t("Télécopie");
        $trad->t("e-mail");
        $trad->t("No Siret (NO_SIRET). Participe des 4 champs \"Taxe\"");
        $trad->t("Cond de Paiement");
        $trad->t("Mode de Paiement");
        $trad->t("Livraison");
        $trad->t("Délai moyen de livraison");
        $trad->t("N° TVA Intracommunautaire");
        $trad->t("Mot clé");
        $trad->t("Date d'agrément");
        $trad->t("Code Regroupement");
        $trad->t("Montant Minimum de facturation");
        $trad->t("Montant minimum franco");
        $trad->t("Zone libre 1");
        $trad->t("Zone libre 2");
        $trad->t("Indice qualité");
        $trad->t("Certification");
        $trad->t("R.Sociale Règlement");
        $trad->t("Adresse Règlement");
        $trad->t("Concaténation CP et Ville Règlement");
        $trad->t("Pays Règlement");
        $trad->t("Dom. Banque");
        $trad->t("Num. Compte");
        $trad->t("Achat systématique en franchise de TVA ?");
        $trad->t("Adresse Site Internet");
        $trad->t("Remise a inclure en prix net ?");
        $trad->t("Notation manuelle systématique ?");
        $trad->t("Prospect ?");
        $trad->t("Fournisseur préférentiel ?");
        $trad->t("Groupe fournisseur d'appartenance");
        $trad->t("Dernière date de modification. Uniquement en export");
        $trad->t("DUNS Number (NO_DUNS)");
        $trad->t("Code langue du fournisseur");
        $trad->t("Pas d'alimentation automatique des Sous familles ?");
        $trad->t("Autorise à Cde Chantier ?");
        $trad->t("Montant maximum Cde Chantier");
        $trad->t("Code postal adresse principale");
        $trad->t("Ville adresse principale");
        $trad->t("Code postal Règlement");
        $trad->t("Ville Règlement");
        $trad->t("CA Minimum Sous-Traitant");
        $trad->t("CA Maximum Sous-Traitant");
        $trad->t("Fournisseur occasionnel");
        $trad->t("Identifiant Externe");
        $trad->t("Taxe 2");
        $trad->t("Taxe 3");
        $trad->t("Taxe 4");
        $trad->t("Date de demande de création pour référencement");
        $trad->t("Bon de Cde électronique ?");
        $trad->t("Type de Format (TYPE_FORM) du bon de commande électronique");
        $trad->t("Format du bon de commande électronique");
        $trad->t("Mode d'envoi bon de commande électronique");
        $trad->t("E-Mail destinataire bon de commande électronique");
        $trad->t("Adresse site ftp");
        $trad->t("User ftp");
        $trad->t("Mot de passe FTP");
        $trad->t("Chemin de dépose FTP");
        $trad->t("Règle franco active ?");
        $trad->t("Article frais de port");
        $trad->t("Frais de port obligatoires ?");
        $trad->t("Routage impression Cde");
        $trad->t("Uniquement en mode import. Déclenche la cohérence de modification du code fournisseur");
        $trad->t("Seuils de Cde e-proc différents Catalogue / hors catalogue ? (SEUILEPDIF)");
        $trad->t("Montant max Cde e-proc en catalogue");
        $trad->t("Montant max Cde e-proc Hors catalogue");
        $trad->t("Interdire à Cde e-proc sur article hors catalogue ?");
        $trad->t("Enseigne commerciale");
        $trad->t("Type document par défaut");
        $trad->t("Indice contact fournisseur");
        $trad->t("Nom");
        $trad->t("Fonction");
        $trad->t("Fax");
        $trad->t("Code Adresse");
        $trad->t("Tél. Portable");
        $trad->t("Créé par");
        $trad->t("Code du fabricant");
        $trad->t("Code de la gamme");
        $trad->t("Désignation de la gamme. Obligatoire en création.");
        $trad->t("Code");
        $trad->t("E-mail");
        $trad->t("Centre d'adresse");
        $trad->t("Centre d'Analyse");
        $trad->t("Utilisateur Multi-Société ?");
        $trad->t("Demandeur ?");
        $trad->t("E-mail si BR saisi/valide ?");
        $trad->t("E-mail si OK/rejet DA ?");
        $trad->t("Acheteur ?");
        $trad->t("E-mail si val.chx fourn AO ?");
        $trad->t("E-mail si litige facture ?");
        $trad->t("E-mail si OK/rejet Cde ?");
        $trad->t("Magasinier ?");
        $trad->t("Site de Stock");
        $trad->t("Signataire DA ?");
        $trad->t("Signataire Cde ?");
        $trad->t("Signataire BAP ?");
        $trad->t("Signature déléguée ?");
        $trad->t("E-mail DA à signer ?");
        $trad->t("E-mail Cde à signer ?");
        $trad->t("E-mail BAP à signer ?");
        $trad->t("Tableau de bord entrée ?");
        $trad->t("Fichier Image Signature");
        $trad->t("Type de contrôle mot de passe de signature (H = Interne, A = Active directory, L = LDAP)");
        $trad->t("Domaine AD ou serveur LDAP de contrôle du mot de passe de signature");
        $trad->t("E-mail Comparatif AO ?");
        $trad->t("E-mail DA traitée ?");
        $trad->t("Edition Preview ?");
        $trad->t("OXTRA Accès BR sur Da Util ?");
        $trad->t("Centre de Livraison");
        $trad->t("Visibilité DA intranet ?");
        $trad->t("Filtre auto Commande/AO ?");
        $trad->t("Date d'ouverture");
        $trad->t("Date de fermeture");
        $trad->t("Niveau de confidentialité");
        $trad->t("Autorise Cde/Art Stock en FMT");
        $trad->t("Date du Mot de Passe Signataire");
        $trad->t("Bcc Mail BdC ?");
        $trad->t("Bcc Mail AO ?");
        $trad->t("Bcc Mail form excel AO ?");
        $trad->t("Bcc Mail form fiche fourn ?");
        $trad->t("Bcc Mail ordre expéd. ?");
        $trad->t("Bcc Mail fact expéd. ?");
        $trad->t("Bcc Mail état navette ?");
        $trad->t("Bcc Mail offre de prix ?");
        $trad->t("Bcc Mail manuel ?");
        $trad->t("Modèle de Cde obligatoire ?");
        $trad->t("Modèle de Cde par défaut");
        $trad->t("Code langue de travail");
        $trad->t("Cdes sans art interdites ?");
        $trad->t("Téléphone portable");
        $trad->t("Logisticien ?");
        $trad->t("Filtre auto sur expéditions ?");
        $trad->t("Logis : Email si Cde affectée ?");
        $trad->t("Interface : Couleurs");
        $trad->t("Interface : Boutons");
        $trad->t("Uniquement mes DA en gare tri?");
        $trad->t("Autorise à Cde Directe ?");
        $trad->t("Montant Maxi autorisé en commande directe");
        $trad->t("Modifier mdp logon proch. cnx ?");
        $trad->t("Date dernière modif mdp Logon");
        $trad->t("Relances Sur Tableau de bord ?");
        $trad->t("Filtre auto sur Demandeur DA ?");
        $trad->t("Filtre auto sur Créateur BR ?");
        $trad->t("Solde DA utilisée ?");
        $trad->t("Administrateur central ?");
        $trad->t("Administrateur local ?");
        $trad->t("Utilisateur Supérieur hiérarchique ?");
        $trad->t("Supérieur hiérarchique de l'utilisateur");
        $trad->t("Accès RIA (Back Office)");
        $trad->t("Accès Oxaproc (Front Office)?");
        $trad->t("Unité organisationnelle de l'utilisateur");
        $trad->t("Utilisateur en connexion SSO");
        $trad->t("Utilisateur en connexion Active Directory");
        $trad->t("Utilisateur en connexion LDAP");
        $trad->t("Nom du domaine active directory ou du serveur LDAP");
        $trad->t("E-mail si OK/Rejet Cde DEM ?");
        $trad->t("Type d'init prix Cde depuis DA");
        $trad->t("Mnt max d'auto-approbation, hors Investissement");
        $trad->t("Mnt max d'auto-approbation, pour Investissement");
        $trad->t("Mnt max d'engagement, hors Investissement");
        $trad->t("Mnt max d'engagement, pour Investissement");
        $trad->t("Délégataire préféré de l'utilisateur");
        $trad->t("Pas de mail sur incident livraison ?");
        $trad->t("Mail à la validation d’un BR sur prestation ?");
        $trad->t("mail quand signataire délégué signe un doc. du délégataire");
        $trad->t("Noteur ?");
        $trad->t("Accès à OXA.MOBILITY ?");
        $trad->t("Accès à OXA.mPROC ?");
        $trad->t("Code Société. Inutile si l'axe code complémentaire n'est pas sectorisé");
        $trad->t("Code nature analytique");
        $trad->t("Libellé de la nature");
        $trad->t("Numéro de ligne de commande");
        $trad->t("Quantité reçue");
        $trad->t("Montant frais annexes");
        $trad->t("Code du fabricant. Obligatoire");
        $trad->t("Code de la gamme. Obligatoire.");
        $trad->t("N° d'ordre unique. Inutile pour l'import.");
        $trad->t("N° d'ordre d'affichage (de présentation). Inutile pour l'import.");
        $trad->t("Taux de remise. Par exemple 15 pour 15%.");
        $trad->t("Numéro du bon d'entrée");
        $trad->t("Type de BE");
        $trad->t("Site de stock du document");
        $trad->t("Code magasinier");
        $trad->t("Code tiers de provenance de l'entrée");
        $trad->t("Texte descriptif origine du BE");
        $trad->t("Total du BE");
        $trad->t("Devise du BE");
        $trad->t("Taux de conversion de la devise");
        $trad->t("Date de création par défaut, date du jour");
        $trad->t("Date de validation AAAA-MM-JJ par défaut, date du jour");
        $trad->t("N° de proposition de réappro");
        $trad->t("Quantité entrée");
        $trad->t("Prix entrée");
        $trad->t("ID du code gestion");
        $trad->t("Numéro du bon de sortie");
        $trad->t("Code tiers destinataire");
        $trad->t("Texte descriptif origine du BS");
        $trad->t("Total du BS");
        $trad->t("Devise du BS");
        $trad->t("Pourcentage de mark-up sur montant");
        $trad->t("Date de création AAAA-MM-JJ par défaut, date du jour");
        $trad->t("Numéro de DS");
        $trad->t("Numéro de Ligne de demande de service");
        $trad->t("Quantité sortie");
        $trad->t("Prix sortie");
        $trad->t("Libellé. Obligatoire si création dans OXA.SRM");
        $trad->t("Code Direction. Obligatoire si création dans OXA.SRM");
        $trad->t("SI avec Code gestion ?");
        $trad->t("Imputation Code Gestion Oblig ?");
        $trad->t("Code du croisement");
        $trad->t("Donnée de la Table 1");
        $trad->t("Donnée de la Table 2");
        $trad->t("Donnée de la Table 3");
        $trad->t("Numéro id du type de signataire");
        $trad->t("Code du signataire");
        $trad->t("TRUE pour effacer les données");
        $trad->t("Alimenté seulement si l'axe SI est sectorisé");
        $trad->t("Code de la section d'imputation");
        $trad->t("Uniquement en mode import. \"N\" = Mode normal : Ajout/suppression; \"R\" = Annule et remplace. La liste d'UO de la SI est remplacée par celle du xml");
        $trad->t("Num. Mouvement");
        $trad->t("Date du Mouvement");
        $trad->t("Type de mouvement");
        $trad->t("Site du Mouvement");
        $trad->t("Type d'entité");
        $trad->t("Num. d'entité");
        $trad->t("Num. ligne d'entité");
        $trad->t("Tiers du Mouvement");
        $trad->t("Num. du lot");
        $trad->t("Code sous famille de l'article");
        $trad->t("Quantité mouvementée");
        $trad->t("Prix unitaire");
        $trad->t("Quantité mouvementée corrigée");
        $trad->t("Prix unitaire corrigé");
        $trad->t("Code devise du Mouvement");
        $trad->t("Valeur devise");
        $trad->t("Id interne du code gestion");
        $trad->t("Zone spécifique client");
        $trad->t("Raison sociale société");
        $trad->t("Adresse société");
        $trad->t("Ville société");
        $trad->t("Pays société");
        $trad->t("Contact société");
        $trad->t("Téléphone société");
        $trad->t("Fax société");
        $trad->t("E-mail société");
        $trad->t("Code Société. Inutile si l'axe sous compte d’analyse n'est pas sectorisé");
        $trad->t("Code SCA");
        $trad->t("Libellé SCA. Obligatoire si création");
        $trad->t("Centre d'Analyse. Obligatoire si création");
        $trad->t("Code ss famille");
        $trad->t("Désign. ss famille");
        $trad->t("Famille");
        $trad->t("Exclure de Alim Auto Sfa/Fou ?");
        $trad->t("Interdire en commande ?");
        $trad->t("Prestation ?");
        $trad->t("Libellé Sous-famille");
        $trad->t("Commentaire traduit");
        $trad->t("Code acheteur");
        $trad->t("Code du type de champ supplémentaire");
        $trad->t("Code société : Uniquement si le CS est sectorisé");
        $trad->t("Code : Suivant le format du CS. Dates YYYY-MM-DD");
        $trad->t("Libellé");
        $trad->t("Date de début de validité");
        $trad->t("Date de fin de validité");
        $trad->t("Code Société. Inutile si UO non sectorisée");
        $trad->t("Code de l'Unité Organisationnelle");
        $trad->t("Libellé de l'UO");
        $trad->t("Code utilisateur du Responsable hiérarchique");
        $trad->t("Niveau de l'UO");
        $trad->t("UO mère (parent)");
        $trad->t("Désignation longue");
        $trad->t("Mnt max d'engagement Resp.Hiér., hors Investissement");
        $trad->t("Mnt max d'engagement Resp.Hiér., pour Investissement");
        $trad->t("Mnt max d'engagement Resp.Hiér., hors Investissement (pour DA chiffrage)");
        $trad->t("Mnt max d'engagement Resp.Hiér., pour Investissement (pour DA chiffrage)");
        $trad->t("Retourne l'identifiant associé au document importé");
        $trad->t("Date de début d'import");
        $trad->t("Heure de début d'import");
        $trad->t("Date de fin d'import");
        $trad->t("Heure de fin d'import");
        $trad->t("Retourne le code HTTP relatif à la requête");
        $trad->t("Retourne une liste d'évènements liés à l'import");
        $trad->t("Date d'évènement");
        $trad->t("Heure d'évènement");
        $trad->t("Message d'évènement");
        $trad->t("Code HTTP relatif à l'évènement");
        $trad->t("Client ID");
        $trad->t("Secret ID");
        $trad->t("N° du champ tel que défini dans le paramétrage");
        $trad->t("Contenu du champ. Le format réel dépend du paramétrage");
        $trad->t("Contient le code HTTP relatif au retour de la requête");
        $trad->t("Contient le message d'erreur");
        $trad->t("Retourne le n° de journal correspondant à l'export demandé");
        $trad->t("Statut C/M/S. Facultatif pour l'import. Donne le statut pour le flux");
        $trad->t("Recherche de fournisseur par champ taxe : lorsque le code fournisseur n'est pas renseigné, ces éléments déclenchent la recherche du fournisseur à travers les champs 'Taxe'");
        $trad->t("Code HTTP");
        $trad->t("Message d'erreur");
        $trad->t("Identifiant");
        $trad->t("Code HTTP retourné");
        $trad->t("Code Connecteur");
        $trad->t("Export réussi et retourne le numéro de journal");
        $trad->t("Retourne le token Bearer de connexion à l'API");
        $trad->t("Retourne le token d'authentification BEARER a utiliser pour l'API");
        $trad->t("Retourne la date, en timestamp, d'expiration du token");
        $trad->t("Erreur de requête non acceptée");
        $trad->t("Import réussi");
        $trad->t("Le token de connexion est manquant ou incorrect");
        $trad->t("Retourne le type d'erreur");
        $trad->t("Retourne le message d'erreur");
        $trad->t("Les données envoyées sont incorrectes");
        $trad->t("Format de requête non supporté");
        $trad->t("En cours de traitement");
        $trad->t("Test d'intégrité API");
        $trad->t("Retourne l'état actuel de l'API");
        $trad->t("Téléchargement d'une facture");
        $trad->t("Permet de télécharger une facture au format pdf");
        $trad->t("Un fichier PDF");
        $trad->t("Document non trouvé");
    }

    /**
     * Traduit la description de manière manuelle pour éviter tout problème d'affichage markdown
     * @param array<mixed> $data
     * @return array<mixed>
     */
    private function translateDescription(array $data)
    {
        $trad = $this->getTranslationService();
        $eol = PHP_EOL;

        $data['info']['description'] = "
# {$trad->t('Documentation API')} {$eol}
## {$trad->t("Point de terminaison de l'API")} {$eol} {$eol}
{$trad->t('Cette API est organisée autour de REST. Notre API possède des URL prévisibles et orientées ressources et utilise des codes de réponse HTTP pour indiquer les erreurs de l\'API.')} {$eol} {$trad->t('Nous utilisons des fonctionnalités HTTP intégrées, telles que l\'authentification HTTP, qui est comprise par les clients HTTP standard. JSON est renvoyé par toutes les réponses API, y compris les erreurs.')} {$eol} {$eol}
## {$trad->t('Méthodes HTTP')} {$eol} {$eol}
**GET** {$eol} {$eol} {$eol} {$eol}
{$trad->t('Les requêtes GET sont les méthodes les plus courantes et les plus utilisées dans les API et les sites Web.')} {$trad->t('En termes simples, la méthode GET est utilisée pour récupérer les données d\'un serveur sur la ressource spécifiée. Vous avez 2 utilisations :')} {$eol} {$eol}
**POST** {$eol} {$eol}
{$trad->t('Les requêtes POST sont utilisées pour envoyer des données au serveur API afin de créer ou de mettre à jour une ressource. Les données envoyées au serveur sont stockées dans le corps de la requête HTTP.')} {$eol} {$eol}
**PUT** {$eol} {$eol}
{$trad->t('Utilisez les API PUT principalement pour mettre à jour la ressource existante (si la ressource n\'existe pas, l\'API peut décider de créer ou non une nouvelle ressource)')} {$eol} {$eol}
        ";

        return $data;
    }
}
