<?php

class CreationFournisseur
{

    public static $id_Form = 'frm_creation_frs';

    public static $id_RS = 'RS';

    public static $id_Adr = 'Adr';

    public static $id_Ville = 'Ville';

    public static $id_COD_LNG = 'COD_LNG';

    public static $id_CP = 'CP';

    public static $id_Pays = 'Pays';

    public static $id_Tel = 'Tel';

    public static $id_Fax = 'Fax';

    public static $id_Mail = 'Mail';

    public static $id_Siret = 'Siret';

    public static $id_Taxe2 = 'Taxe2';

    public static $id_Taxe3 = 'Taxe3';

    public static $id_Taxe4 = 'Taxe4';

    public static $id_NoTVAIC = 'NoTVAIC';

    public static $id_NomContact = 'Contact';

    public static $id_FctContact = 'FctContact';

    public static $id_TelContact = 'TelContact';

    public static $id_FaxContact = 'FaxContact';

    public static $id_MailContact = 'MailContact';

    public static function Transco_WSDL_BDD($code_wsdl)
    {
        $result = '';
        switch ($code_wsdl) {
            case CreationFournisseur::$id_COD_LNG:
                $result = 'COD_LNG';
                break;
            case CreationFournisseur::$id_RS:
                $result = 'RS';
                break;
            case CreationFournisseur::$id_Adr:
                $result = 'ADR';
                break;
            case CreationFournisseur::$id_Ville:
                $result = 'VILLE1';
                break;
            case CreationFournisseur::$id_CP:
                $result = 'CPOSTAL';
                break;
            case CreationFournisseur::$id_Pays:
                $result = 'CODE_PAYS';
                break;
            case CreationFournisseur::$id_Tel:
                $result = 'TEL';
                break;
            case CreationFournisseur::$id_Fax:
                $result = 'FAX';
                break;
            case CreationFournisseur::$id_Mail:
                $result = 'EMAIL';
                break;
            case CreationFournisseur::$id_NoTVAIC:
                $result = 'NO_TVA_IC';
                break;
        }
        return $result;
    }

    public static function &JSChangePays()
    {
        $js = 'Traite(\'creation_frs.php?action=changePays\', document.' . CreationFournisseur::$id_Form . '.' . CreationFournisseur::$id_Pays . ');';
        return $js;
    }

    public static function &GetListeChamps()
    {
        $array = array(
            array(
                '!ID' => CreationFournisseur::$id_RS,
                '!LIB' => Trad('Raison sociale')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Adr,
                '!LIB' => Trad('Adresse')
            ),
            array(
                '!ID' => CreationFournisseur::$id_CP,
                '!LIB' => Trad('Code postal')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Ville,
                '!LIB' => Trad('Ville')
            ),
            array(
                '!ID' => CreationFournisseur::$id_COD_LNG,
                '!LIB' => Trad('Langue')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Pays,
                '!LIB' => Trad('Pays')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Tel,
                '!LIB' => Trad('Téléphone fournisseur')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Fax,
                '!LIB' => Trad('Fax fournisseur')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Mail,
                '!LIB' => Trad('Mail fournisseur')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Siret,
                '!LIB' => Trad('N° Siret')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Taxe2,
                '!LIB' => Trad('Taxe 2')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Taxe3,
                '!LIB' => Trad('Taxe 3')
            ),
            array(
                '!ID' => CreationFournisseur::$id_Taxe4,
                '!LIB' => Trad('Taxe 4')
            ),
            array(
                '!ID' => CreationFournisseur::$id_NoTVAIC,
                '!LIB' => Trad('N°TVA IC')
            ),
            array(
                '!ID' => CreationFournisseur::$id_NomContact,
                '!LIB' => Trad('Nom du contact')
            ),
            array(
                '!ID' => CreationFournisseur::$id_FctContact,
                '!LIB' => Trad('Fonction contact')
            ),
            array(
                '!ID' => CreationFournisseur::$id_FaxContact,
                '!LIB' => Trad('Fax du contact')
            ),
            array(
                '!ID' => CreationFournisseur::$id_MailContact,
                '!LIB' => Trad('Mail du contact')
            ),
            array(
                '!ID' => CreationFournisseur::$id_TelContact,
                '!LIB' => Trad('Téléphone contact')
            )
        );
        return $array;
    }

    public static function &BuildXml()
    {
        $code_pays = Param::getPaysInstall();
        
        $array['viewer']['pays']['!value'] = $code_pays;
        $array['taxes']['lignes'] = Fournisseur::getLibelleForTaxe($code_pays);
        
        if ($result = SqlUsers::rqGetAllCountry()->TrouveTous())
            foreach ($result as & $ligne_pays)
                $array['viewer']['pays']['option'][] = array(
                    '!value' => & $ligne_pays['CODE_PAYS'],
                    '!texte' => & $ligne_pays['LIBELLE']
                );
        
        $arrayChampsFouTmp = CreationFournisseur::GetListeChamps();
        
        foreach ($arrayChampsFouTmp as &$champ) {
            $key = $champ['!ID'];
            $libelle_champ = $champ['!LIB'];
            $valeur = '';
            $longueurMax = 0;
            $lgChampTexte = 0;
            $champBdd = CreationFournisseur::Transco_WSDL_BDD($key);
            $obligatoire = ('' != $champBdd) ? Param::GetChampFourOccOblig($champBdd) : false;
            
            $id_taxe = 0;
            switch ($key) {
                case CreationFournisseur::$id_Adr:
                    if (0 == $longueurMax)
                        $longueurMax = 90;
                    if (0 == $lgChampTexte)
                        $lgChampTexte = 90;
                    
                    $arrayChampsFou[] = array(
                        '!libelle_chp' => $libelle_champ,
                        '!obligatoire' => $obligatoire,
                        '!name' => $key,
                        '!actif' => true,
                        '!rows' => 3,
                        '!cols' => 31,
                        '!value' => $valeur,
                        '!maxlength' => $longueurMax,
                        '!size' => $lgChampTexte
                    );
                    break;
                case CreationFournisseur::$id_COD_LNG:
                    $arrayChampsFou[] = array(
                        '!libelle_chp' => $libelle_champ,
                        '!name' => $key,
                        '!actif' => true,
                        '!obligatoire' => true,
                        '!value' => Param::getLangueDefautHaplus(),
                        'liste' => array(
                            'option' => ListeComboGeneral::getArrayListeLangues()
                        )
                    );
                    break;
                case CreationFournisseur::$id_Pays:
                    // Ce champ est obligatoire
                    $arrayChampsFou[] = array(
                        '!libelle_chp' => $libelle_champ,
                        '!name' => $key,
                        '!actif' => true,
                        '!obligatoire' => true,
                        '!value' => $code_pays,
                        '!action' => CreationFournisseur::JSChangePays(),
                        'liste' => array(
                            'option' => ListeComboGeneral::getArrayListePays()
                        )
                    );
                    break;
                case CreationFournisseur::$id_Siret:
                    $id_taxe = 1;
                case CreationFournisseur::$id_Taxe2:
                    if (0 == $id_taxe)
                        $id_taxe = 2;
                case CreationFournisseur::$id_Taxe3:
                    if (0 == $id_taxe)
                        $id_taxe = 3;
                case CreationFournisseur::$id_Taxe4:
                    if (0 == $id_taxe)
                        $id_taxe = 4;
                    $obligatoire = true; // !$objTaxes->GetChampFixe($id_taxe);
                    $libelle_champ = true; // $objTaxes->GetLibelleChamp($id_taxe);
                    $longueurMax = 30;
                    $lgChampTexte = 20;
                    
                    if ($obligatoire)
                        $arrayChampsFou[] = array(
                            '!libelle_chp' => $key,
                            '!obligatoire' => true,
                            '!name' => $key,
                            '!actif' => true,
                            '!value' => $valeur,
                            '!maxlength' => $longueurMax,
                            '!size' => $lgChampTexte
                        );
                    break;
                case CreationFournisseur::$id_RS:
                    $obligatoire = true;
                    if (0 == $longueurMax)
                        $longueurMax = 45;
                    if (0 == $lgChampTexte)
                        $lgChampTexte = 45;
                case CreationFournisseur::$id_Ville:
                    if (0 == $longueurMax)
                        $longueurMax = 35;
                    if (0 == $lgChampTexte)
                        $lgChampTexte = 35;
                case CreationFournisseur::$id_CP:
                    if (0 == $longueurMax)
                        $longueurMax = 10;
                    if (0 == $lgChampTexte)
                        $lgChampTexte = 10;
                case CreationFournisseur::$id_Mail:
                case CreationFournisseur::$id_MailContact:
                    if (0 == $longueurMax)
                        $longueurMax = 100;
                    if (0 == $lgChampTexte)
                        $lgChampTexte = 50;
                default:
                    if (0 == $longueurMax)
                        $longueurMax = 25;
                    if (0 == $lgChampTexte)
                        $lgChampTexte = 20;
                    
                    $arrayChampsFou[] = array(
                        '!libelle_chp' => $libelle_champ,
                        '!obligatoire' => $obligatoire,
                        '!name' => $key,
                        '!actif' => true,
                        '!value' => $valeur,
                        '!maxlength' => $longueurMax,
                        '!size' => $lgChampTexte
                    );
                    break;
            }
        }
        
        $array['champs'] = & $arrayChampsFou;
        $array['form'] = array(
            '!id' => CreationFournisseur::$id_Form,
            '!enregistrer_frs' => 'TraiteUrlAsync(\'creation_frs.php?action=enregistrerFrs\',document.' . CreationFournisseur::$id_Form . '.' . CreationFournisseur::$id_Pays . ',\'' . cnv_to_javascript(trad('Enregistrement du fournisseur en cours...')) . '\');'
        );
        $array['action'] = 'AfficherFiche';
        return $array;
    }

    public static function MiseAJourTaxes($code_pays)
    {
        $objTaxes = new InfosTaxes($code_pays);
        for ($idx = 1; $idx <= 4; $idx ++) {
            if (1 == $idx)
                $idBase = CreationFournisseur::$id_Siret;
            else
                $idBase = 'Taxe' . $idx;
            
            $defini = $objTaxes->GetChampIsDefini($idx);
            
            Affichage::setValue($idBase, '');
            Affichage::displayElement('ligne_' . $idBase, $defini);
            if ($defini) {
                $obligatoire = $objTaxes->GetChampFixe($idx);
                $libelle = $objTaxes->GetLibelleChamp($idx);
                Affichage::innerHTML('libelle_' . $idBase, $libelle);
                Affichage::displayElement('obligatoire_' . $idBase, $obligatoire);
            }
        }
    }

    public static function &checkValues()
    {
        $arrayWsdl = array();
        $messageErreur = '';
        $arrayChampsFou = CreationFournisseur::GetListeChamps();
        $code_pays = trim(getValue(CreationFournisseur::$id_Pays));
        $objTaxes = new InfosTaxes($code_pays);
        
        $ChampSIREN = 0;
        
        foreach ($arrayChampsFou as &$infoChamp) {
            $id = $infoChamp['!ID'];
            $valeur = trim(getValue($id));
            
            $idxTaxe = 0;
            $lgChampMax = 0;
            switch ($id) {
                case CreationFournisseur::$id_Siret:
                    $idxTaxe = 1;
                case CreationFournisseur::$id_Taxe2:
                    if (0 == $idxTaxe)
                        $idxTaxe = 2;
                case CreationFournisseur::$id_Taxe3:
                    if (0 == $idxTaxe)
                        $idxTaxe = 3;
                case CreationFournisseur::$id_Taxe4:
                    if (0 == $idxTaxe)
                        $idxTaxe = 4;
                    if (1 == $idxTaxe)
                        $idBase = CreationFournisseur::$id_Siret;
                    else
                        $idBase = 'Taxe' . $idxTaxe;
                    $defini = $objTaxes->GetChampIsDefini($idxTaxe);
                    if ($defini) {
                        $lib = $objTaxes->GetLibelleChamp($idxTaxe);
                        $obligatoire = $objTaxes->GetChampFixe($idxTaxe);
                        $lgChampMax = $objTaxes->GetLongueurChamp($idxTaxe);
                    } else {
                        $lib = $id;
                        $obligatoire = false;
                    }
                    
                    if (strtoupper($lib) == 'SIREN' && '' != $valeur)
                        if ($reqSql = SqlFrs::rqGetUniciteSIREN($idxTaxe, $valeur)->Trouve1())
                            $messageErreur = Trad('Le SIREN proposé existe déjà pour le fournisseur') . ' : ' . $reqSql['RS'];
                    
                    if ('' == $messageErreur)
                        if ($obligatoire && $lgChampMax != strlen($valeur)) {
                            $messageErreur = Trad('Le champ') . ' \'' . $lib . '\' ' . Trad('doit avoir') . ' ' . $lgChampMax . ' ' . Trad('caractères.');
                        }
                    
                    break;
                default:
                    $champBdd = CreationFournisseur::Transco_WSDL_BDD($id);
                    $obligatoire = ('' != $champBdd) ? Param::GetChampFourOccOblig($champBdd) : false;
                    $lib = $infoChamp['!LIB'];
                    break;
            }
            
            if ('' == $messageErreur) {
                if ($obligatoire && '' == $valeur) {
                    $messageErreur = Trad('Le champ') . ' \'' . $lib . '\' ' . Trad('est obligatoire, veuillez le renseigner.');
                    break;
                } elseif (0 != $lgChampMax) {
                    if (! ControleSaisie::LengthControl($valeur, $lgChampMax)) {
                        $messageErreur = Trad('Le champ ') . '\'' . $lib . '\' ' . Trad('est limité à ') . $lgChampMax . ' ' . Trad('caractères.');
                        break;
                    }
                }
            } else
                break;
            
            $arrayWsdl[$id] = $valeur;
        }
        $resultat = array(
            'messageErreur' => $messageErreur,
            'tableauValeurs' => & $arrayWsdl
        );
        return $resultat;
    }

    public static function &checkValues2()
    {
        $messageErreur = '';
        
        $frs = array(
            'RS' => trim(getValue(CreationFournisseur::$id_RS)),
            'Adr' => trim(getValue(CreationFournisseur::$id_Adr)),
            'Ville' => trim(getValue(CreationFournisseur::$id_Ville)),
            'CP' => trim(getValue(CreationFournisseur::$id_CP)),
            'Pays' => trim(getValue(CreationFournisseur::$id_Pays)),
            'Tel' => trim(getValue(CreationFournisseur::$id_Tel)),
            'Fax' => trim(getValue(CreationFournisseur::$id_Fax)),
            'Mail' => trim(getValue(CreationFournisseur::$id_Mail)),
            'Siret' => trim(getValue(CreationFournisseur::$id_Siret)),
            'Taxe2' => trim(getValue(CreationFournisseur::$id_Taxe2)),
            'Taxe3' => trim(getValue(CreationFournisseur::$id_Taxe3)),
            'Taxe4' => trim(getValue(CreationFournisseur::$id_Taxe4)),
            'NoTVAIC' => trim(getValue(CreationFournisseur::$id_NoTVAIC)),
            'Contact' => trim(getValue(CreationFournisseur::$id_NomContact)),
            'FctContact' => trim(getValue(CreationFournisseur::$id_FctContact)),
            'TelContact' => trim(getValue(CreationFournisseur::$id_TelContact)),
            'FaxContact' => trim(getValue(CreationFournisseur::$id_FaxContact)),
            'MailContact' => trim(getValue(CreationFournisseur::$id_MailContact))
        );
        
        if ($frs['RS'] == '')
            $messageErreur = Trad('La raison sociale du fournisseur est obligatoire, veuillez la renseigner');
        
        if ('' == $messageErreur)
            if ($frs['Adr'] == '')
                $messageErreur = Trad('L\'adresse du fournisseur est obligatoire, veuillez la renseigner');
        
        if ('' == $messageErreur) {
            if ($frs['Pays'] == '')
                $messageErreur = Trad('Le pays du fournisseur est obligatoire, veuillez la renseigner');
            else {
                $objTaxes = new InfosTaxes($frs['Pays']);
                $idChamp = '';
                
                if ($objTaxes->GetChampFixe(1) && '' == $frs['Siret'])
                    $idChamp = 1;
                
                if ('' == $idChamp)
                    if ($objTaxes->GetChampFixe(2) && '' == $frs['Taxe2'])
                        $idChamp = 2;
                
                if ('' == $idChamp)
                    if ($objTaxes->GetChampFixe(3) && '' == $frs['Taxe3'])
                        $idChamp = 3;
                
                if ('' == $idChamp)
                    if ($objTaxes->GetChampFixe(4) && '' == $frs['Taxe4'])
                        $idChamp = 3;
                
                if ('' != $idChamp) {
                    $messageErreur = Trad('Le champ ') . '"' . $objTaxes->GetLibelleChamp($idChamp) . '" ' . Trad('est obligatoire, veuillez le renseigner.');
                } else {
                    if (! ControleSaisie::LengthControl($frs['Siret'], $objTaxes->GetLongueurChamp(1)))
                        $idChamp = 1;
                    if ('' == $idChamp)
                        if (! ControleSaisie::LengthControl($frs['Taxe2'], $objTaxes->GetLongueurChamp(2)))
                            $idChamp = 2;
                    if ('' == $idChamp)
                        if (! ControleSaisie::LengthControl($frs['Taxe3'], $objTaxes->GetLongueurChamp(3)))
                            $idChamp = 3;
                    if ('' == $idChamp)
                        if (! ControleSaisie::LengthControl($frs['Taxe4'], $objTaxes->GetLongueurChamp(4)))
                            $idChamp = 4;
                    if ('' != $idChamp)
                        $messageErreur = Trad('Le champ ') . '"' . $objTaxes->GetLibelleChamp($idChamp) . '" ' . Trad('est limité à ') . $objTaxes->GetLongueurChamp($idChamp) . ' ' . Trad('caractères.');
                }
            }
        }
        
        if ('' == $messageErreur)
            if ($frs['CP'] == '')
                $messageErreur = Trad('Le code postal de la ville du fournisseur est obligatoire, veuillez la renseigner');
        
        if ('' == $messageErreur)
            if ($frs['Ville'] == '')
                $messageErreur = Trad('La ville du fournisseur est obligatoire, veuillez la renseigner');
        
        return $messageErreur;
    }
}
