<?php

/**
 * Classe dédiée à la gestion des BAP
 *
 */
class Bap
{

    /**
     * Attributs
     */
    protected $NO_BAP;
 // Numéro identifiant du BAP
    protected $IS_NOTATION_FRS;
 // Flag indiquant si la notation fournisseur est attendu pour le BAP : 1 si attendu, 0 sinon.
    
    /**
     * Constructeur
     */
    public function __construct($no_bap)
    {
        $this->NO_BAP = $no_bap; // Initialisation du numéro du BAP
        $this->initIsNotationFrs(); // Initialisation du flag : notation fournisseur requise ou non pour le BAP
    }

    /**
     * Méthodes GET
     */
    public function &getIS_NOTATION_FRS()
    {
        return $this->IS_NOTATION_FRS;
    }

    /**
     * Méthodes SET
     */
    public function setIS_NOTATION_FRS($v)
    {
        $this->IS_NOTATION_FRS = $v;
    }

    /**
     * Méthodes
     */
    
    /**
     * Fonction initialisant l'attribut IS_NOTATION_FRS d'un BAP donné
     *
     * @return boolean : 1 si la notation est requise pour le BAP, 0 sinon.
     */
    public function initIsNotationFrs()
    {
        // La notation est potentiellement présente pour le client N°22 : FACEO
        if (22 == $_SESSION['Session_NumClient']) {
            // On récupère le numéro du CS dédiée à l'enregistrement de la notation
            $num_cs_notation = Param::getNumCsFaceoNotationISO();
            
            // Si un CS n'a pas été paramétré alors il n'y a pas de notation fournisseur
            if (is_null($num_cs_notation))
                $this->IS_NOTATION_FRS = 0;
            // Si un CS est bien renseigné, alors on s'assure qu'aucune valeur n'a encore été saisie pour le CS du BAP en question
            else {
                $r = SqlCs::rqSelectValueCSforInit('FAC_ENT', $num_cs_notation, $this->NO_BAP)->Trouve1();
                // La notation sera présente si aucune valeur n'a été renseigné pour le BAP
                if ('' == trim($r['VALEUR']) || is_null($r['VALEUR']))
                    $this->IS_NOTATION_FRS = 1;
                // Si une valeur existe déjà alors la notation n'est pas requise pour le BAP
                else
                    $this->IS_NOTATION_FRS = 0;
            }
        }        // Pour tous les autres clients la notation n'est pas activée
        else
            $this->IS_NOTATION_FRS = 0;
    }

    /**
     * Méthode statique retournant l'url permettant d'accéder
     *
     * @param string $fichier_lad
     *            : Chemin d'accès au fichier
     * @return string : lien http permettant d'ouvrir le document
     */
    public static function &getImageBap(& $array)
    {
        $url_fichier_lad = '';
        
        // // FIC_LAD TYPE_URL
        // http://localhost/uniscripts/mgrqispi.dll?appname=Oxaproc&prgname=FIC_LAD&arguments=-A<$fichier_lad>
        if ('' != trim($array['FIC_LAD']))
            $url_fichier_lad = "window.open('{$_SESSION['ispiurl']}&prgname=FIC_LAD&arguments" . "=-A" . str_replace('\\', '\\\\', $array['FIC_LAD']) . ",-A" . str_replace('\\', '\\\\', $array['TYPE_URL_LAD']) . "','win_pop_lad');";
        else
            $url_fichier_lad = '';
        
        return $url_fichier_lad;
    }

    public static function &getURLImageBap(& $array)
    {
        $url_fichier_lad = '';
        
        // http://localhost/uniscripts/mgrqispi.dll?appname=Oxaproc&prgname=FIC_LAD&arguments=-A<$fichier_lad>
        if ('' != trim($array['FIC_LAD']))
            $url_fichier_lad = "{$_SESSION['ispiurl']}&prgname=FIC_LAD&arguments" . "=-A" . str_replace('\\', '\\\\', $array['FIC_LAD']) . ",-A" . str_replace('\\', '\\\\', $array['TYPE_URL_LAD']);
        else
            $url_fichier_lad = '';
        
        $result = urlencode($url_fichier_lad);
        return $result;
    }

    /**
     * Fonction permettant de construire le tableau de données utilisées pour l'affichage du frontal de création des factures
     */
    public static function &buildEnteteCreatBap()
    {
        $array['form'] = 'bap_creation';
        
        // Champ société
        $array['champs']['societe']['id'] = 'societe';
        $array['champs']['societe_lib']['id'] = 'societe_lib';
        $array['champs']['societe']['onblur'] = "TraiteUrl('bap_creation.php?action=saisieSociete',document.forms.{$array['form']}.{$array['champs']['societe']['id']});";
        $array['champs']['societe']['zoom'] = "OpenPopup('ctrl_liste_societes.php?action=initPopup&popup_id=SOCIETES_USER&formName={$array['form']}&inputField={$array['champs']['societe']['id']}&labelField={$array['champs']['societe_lib']['id']}','popup_liste_societes_user',900,700)";
        
        // Champ type de facture
        $array['champs']['type']['id'] = 'type';
        $array['champs']['type']['option'][0] = array(
            'libelle' => trad('Facture'),
            'value' => 'F'
        );
        $array['champs']['type']['option'][1] = array(
            'libelle' => trad('Avoir'),
            'value' => 'A'
        );
        
        // Champ fournisseur
        $array['champs']['fournisseur']['id'] = 'fournisseur';
        $array['champs']['fournisseur_lib']['id'] = 'fournisseur_lib';
        $array['champs']['fournisseur']['onblur'] = "TraiteUrl('bap_creation.php?action=saisieFournisseur',document.forms.{$array['form']}.{$array['champs']['fournisseur']['id']});";
        $array['champs']['fournisseur']['zoom'] = "OpenPopup('ctrl_liste_frs.php?action=initPopup&popup_id=FOURNISS&formName={$array['form']}&inputField={$array['champs']['fournisseur']['id']}&labelField={$array['champs']['fournisseur_lib']['id']}','popup_frs',800,650);";
        
        // Libellé conditions de paiement du fournisseur
        $array['champs']['condPaiementFrs']['id'] = 'fournisseur_cdp';
        
        // Date d'enregistrement de la facture
        $array['champs']['dateEnregFac']['id'] = 'dateEnregFac';
        $array['champs']['dateEnregFac']['onclick'] = "CL.show(null,document.{$array['form']}.{$array['champs']['dateEnregFac']['id']},null,-80);";
        
        // Date d'effet de la facture
        $array['champs']['dateEffet']['id'] = 'dateEffet';
        $array['champs']['dateEffet']['onclick'] = "CL.show(null,document.{$array['form']}.{$array['champs']['dateEffet']['id']},null,-80);";
        
        // Référence de la facture fournisseur
        $array['champs']['refBapFournisseur']['id'] = 'refBapFournisseur';
        
        // Date d'emission de la facture fournisseur
        $array['champs']['dateEmission']['id'] = 'dateEmission';
        $array['champs']['dateEmission']['onclick'] = "CL.show(null,document.{$array['form']}.{$array['champs']['dateEmission']['id']},null,-80);";
        
        // Champ devise de la facture
        $array['champs']['devise']['id'] = 'devise';
        
        // On récupère la devise par dafaut
        $array['champs']['devise']['defaut'] = Param::GetDeviseApplication();
        
        // On créé la liste des options pour les devises
        if ($listeDevises = SqlPanier::rqGetAllDevise()->TrouveTous())
            foreach ($listeDevises as & $devise)
                $array['champs']['devise']['option'][] = array(
                    'value' => & $devise['CODE_DEVI'],
                    'libelle' => & $devise['LIBELLE']
                );
        
        // Champ montant hors taxe de la facture
        $array['champs']['montantHT']['id'] = 'montantHT';
        $array['champs']['montantHT']['onblur'] = '';
        
        // Champ montant + TVA de la facture
        $array['champs']['montantTTC']['id'] = 'montantTTC';
        
        // Champ mode de paiement
        $array['champs']['modePaiement']['id'] = 'modePaiement';
        $array['champs']['modePaiement']['onblur'] = "TraiteUrl('bap_creation.php?action=SaisieModePaiement',document.forms.{$array['form']}.{$array['champs']['modePaiement']['id']});";
        $array['champs']['modePaiement']['zoom'] = "OpenPopup('ctrl_liste_modePaiement.php?action=initPopup&popup_id=MDP&formName={$array['form']}&inputField={$array['champs']['modePaiement']['id']}','popup_liste_mdp',700,700);";
        
        // Date d'échéance
        $array['champs']['dateEcheance']['id'] = 'dateEcheance';
        $array['champs']['dateEcheance']['onclick'] = "CL.show(null,document.{$array['form']}.{$array['champs']['dateEcheance']['id']},null,-80);";
        
        // Actions sur le frontal de création du bap
        $array['action']['valider']['onclick'] = "TraiteUrl('bap_creation.php?action=validerEnteteBap',document.forms.{$array['form']}.{$array['champs']['societe']['id']});";
        $array['action']['annuler']['onclick'] = "CallUrl('bap_creation.php?action=accueilBAP');";
        
        return $array;
    }

    /**
     * Fonction construisant le tableau de données permettant d'afficher la liste des commandes à facturer pour un fournisseur donné
     *
     * @param string $code_frs
     */
    public static function &buildSelectionCommande($code_frs)
    {
        if ($listeCommandes = SqlCde::rqGetListeCdeToBapByFrs($code_frs)->TrouveTous())
            foreach ($listeCommandes as & $commande)
                $listeCommandesXml['listeCommandes']['commande'][] = array(
                    'no_cde' => & $commande['NO_CDE'],
                    'objet' => & $commande['OBJET_CA'],
                    'checkbox_id' => "cde_selected_{$commande['NO_CDE']}"
                );
        
        $listeCommandesXml['action'] = array(
            'toutes' => "TraiteUrl('bap_creation.php?action=selectAllCde', document.forms.bap_creation.societe);",
            'aucune' => "TraiteUrl('bap_creation.php?action=selectNoCde',  document.forms.bap_creation.societe);",
            'valider' => "TraiteUrl('bap_creation.php?action=validerListeCommandes', document.forms.bap_creation.societe);"
        );
        
        return $listeCommandesXml;
    }

    public static function insertLignesCdesSelected($liste_commandes, $code_frs)
    {
        $ind_ligne_cde = 0;
        
        $frs = SqlFrs::rqGetInfoOnFrsAndMainContact($code_frs)->Trouve1();
        
        foreach ($liste_commandes as & $commande) {
            $lignes_commande = SqlBap::rqGetListeLignesCommandeToBapByCde($commande)->TrouveTous();
            foreach ($lignes_commande as & $ligne) {
                $montant = FormatageData::formatMontant($ligne['QTE'] * $ligne['PU']); // Ne pas le formatter pour l'affichage car cela sert au stockage
                
                Bap::insertBapLigne($_SESSION['Session_Login'], $ind_ligne_cde, $ligne['NO_CDE'], $ligne['NO_PO'], $ligne['NUM_BR'], $ligne['NO_PO_BR'], $ligne['DES_SOMM'], $ligne['QTE'], $ligne['PU'], $montant, $ligne['QTE'], $ligne['PU'], $montant, $frs['TYP_TVA'], $ligne['TVA'], $ligne['SECTIMP'], $ligne['SSCPTEANA'], $ligne['CODE_COMP'], $ligne['SSFAM'], 1, 'C');
                
                $ind_ligne_cde ++;
            }
        }
    }

    /**
     * Fonction construisant le tableau de données permettant d'afficher la liste des lignes de commandes à facturer
     *
     * @param
     *            string login : Login de l'utilisateur créant le BAP
     */
    public static function &buildSelectionLignesCommandes($login)
    {
        $lignes_commande = SqlBap::rqSelectAllLigneCommandeToBap($login)->TrouveTous();
        $listeCommandesXml = array();
        
        foreach ($lignes_commande as & $ligne) {
            $id_ligne = $ligne['NO_LIGNE'];
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['NO_CDE'] = & $ligne['NO_CDE'];
            $listeCommandesXml['lignesCommande'][$id_ligne]['NO_BR'] = & $ligne['NO_BR'];
            $listeCommandesXml['lignesCommande'][$id_ligne]['DES_ART'] = & $ligne['DES_ART'];
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['QTE'] = array(
                'value' => & $ligne['QTE']
            );
            $listeCommandesXml['lignesCommande'][$id_ligne]['PU'] = array(
                'value' => & $ligne['PU']
            );
            $listeCommandesXml['lignesCommande'][$id_ligne]['TOTAL'] = array(
                'value' => & $ligne['TOTAL']
            );
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['QTE_BAP'] = array(
                'id' => "QTE_BAP_{$id_ligne}",
                'value' => $ligne['QTE_BAP'],
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=QTE_BAP&VALEUR='+this.value);"
            );
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['PU_BAP'] = array(
                'id' => "PU_BAP_{$id_ligne}",
                'value' => $ligne['PU_BAP'],
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=PU_BAP&VALEUR='+this.value);"
            );
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['TOTAL_BAP'] = array(
                'id' => "TOTAL_BAP_{$id_ligne}",
                'value' => $ligne['TOTAL_BAP'],
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=TOTAL_BAP&VALEUR='+this.value);"
            );
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['TVA'] = array(
                'id' => "TVA_{$id_ligne}",
                'value' => FormatageData::formatMontant($ligne['TVA']),
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=TVA&VALEUR='+this.value);"
            );
            
            $zoom_type_tva = "OpenPopup('ctrl_liste_type_tva.php?action=initPopup&popup_id=TYPETVA&formName=bap_creation&inputField=TYPE_TVA_{$id_ligne}','popup_liste_type_tva',700,700);";
            $listeCommandesXml['lignesCommande'][$id_ligne]['TYPE_TVA'] = array(
                'id' => "TYPE_TVA_{$id_ligne}",
                'value' => $ligne['TYPE_TVA'],
                'zoom' => $zoom_type_tva,
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=TYPE_TVA&VALEUR='+this.value);"
            );
            
            $zoom_sfam = "OpenPopup('ctrl_liste_sous_familles.php?action=initPopup&popup_id=SSFAMILL&formName=bap_creation&inputField=SSFAM_{$id_ligne}','popup_liste_ssfam',700,700);";
            $listeCommandesXml['lignesCommande'][$id_ligne]['SSFAM'] = array(
                'id' => "SSFAM_{$id_ligne}",
                'value' => $ligne['SSFAM'],
                'zoom' => $zoom_sfam,
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=SSFAM&VALEUR='+this.value);"
            );
            
            $zoom_si = "OpenPopup('ctrl_liste_si.php?action=initPopup&popup_id=SI&inputField=SI_{$id_ligne}','popup_liste_si',750,700);";
            $listeCommandesXml['lignesCommande'][$id_ligne]['SI'] = array(
                'id' => "SI_{$id_ligne}",
                'value' => $ligne['SI'],
                'zoom' => $zoom_si,
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=SI&VALEUR='+this.value);"
            );
            
            $zoom_cdc = "OpenPopup('ctrl_liste_codeComp.php?action=initPopup&popup_id=CODECOMP&inputField=CDC_{$id_ligne}','popup_liste_cdc',750,700);";
            $listeCommandesXml['lignesCommande'][$id_ligne]['CDC'] = array(
                'id' => "CDC_{$id_ligne}",
                'value' => $ligne['CDC'],
                'zoom' => $zoom_cdc,
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=CDC&VALEUR='+this.value);"
            );
            
            $zoom_sca = "OpenPopup('ctrl_liste_sscptana.php?action=initPopup&popup_id=SSCPTANA&inputField=SCA_{$id_ligne}','popup_liste_cdc',750,700);";
            $listeCommandesXml['lignesCommande'][$id_ligne]['SCA'] = array(
                'id' => "SCA_{$id_ligne}",
                'value' => $ligne['SCA'],
                'zoom' => $zoom_sca,
                'onblur' => "CallUrl('bap_creation.php?action=updateChamp&NO_LIGNE=$id_ligne&CHAMP=SCA&VALEUR='+this.value);"
            );
            
            $listeCommandesXml['lignesCommande'][$id_ligne]['IS_SELECTED'] = array(
                'id' => "IS_SELECTED_{$id_ligne}",
                'value' => $ligne['IS_SELECTED'],
                'onclick' => "TraiteUrl('bap_creation.php?action=selectLigneCommande',this);"
            );
        }
        
        $listeCommandesXml['action']['enregistrerBap'] = "TraiteUrl('bap_creation.php?action=validerListeLignesCommandes', document.forms.bap_creation.societe);";
        $listeCommandesXml['action']['toutes'] = "TraiteUrl('bap_creation.php?action=selectAllLignesCommandes'	  , document.forms.bap_creation.societe);";
        $listeCommandesXml['action']['aucune'] = "TraiteUrl('bap_creation.php?action=selectNoneLignesCommandes'  , document.forms.bap_creation.societe);";
        
        $listeCommandesXml['total']['valeur'] = trad('Montant total : ') . FormatageData::formatMontant(Bap::getTotalBap($_SESSION['Session_Login']), 2, ' ');
        
        $enteteBap = Bap::getBapEntete($_SESSION['Session_Login']);
        $ecart = $enteteBap['TOTAL_HT'] - Bap::getTotalBap($_SESSION['Session_Login']);
        if ($ecart >= 0) {
            $signe = '+';
        } else {
            $signe = '';
        }
        
        $listeCommandesXml['ecart']['valeur'] = trad('Ecart :') . ' ' . $signe . FormatageData::formatMontant($ecart);
        
        if (0 == $ecart)
            $listeCommandesXml['ecart']['className'] = 'texteVert';
        else
            $listeCommandesXml['ecart']['className'] = 'texteRed';
        
        return $listeCommandesXml;
    }

    /**
     * Fonction supprimant le BAP en cours d'un utilisateur donné
     *
     * @param string $login
     * @return boolean : true si la suppression a eu lieu, false sinon.
     */
    public static function deleteBapByUser($login)
    {
        $listeSql = new PileSql(DB_OXAPROCDB);
        $listeSql->AddRequeteSql(SqlBap::rqDeleteBapEntete($login));
        $listeSql->AddRequeteSql(SqlBap::rqDeleteBapLigne($login));
        return $listeSql->Commit();
    }

    /**
     * Fonction insérant les données liées à l'entête du bap
     *
     * @param string $LOGIN
     * @param string $CODE_STE
     * @param string $TYPE_BAP
     * @param string $CODE_FRS
     * @param string $DATE_ENREG
     * @param string $DATE_EFFET
     * @param string $REF_BAP_FRS
     * @param string $DATE_EMISSION
     * @param string $DEVISE
     * @param float $TOTAL_HT
     * @param float $TOTAL_TTC
     * @param string $MODE_PAIEMENT
     * @param string $DATE_ECHEANCE
     * @return boolean : true si enregistrement OK sinon false
     */
    public static function insertBapEntete($LOGIN, $CODE_STE, $TYPE_BAP, $CODE_FRS, $DATE_ENREG, $DATE_EFFET, $REF_BAP_FRS, $DATE_EMISSION, $DEVISE, $TOTAL_HT, $TOTAL_TTC, $MODE_PAIEMENT, $DATE_ECHEANCE)
    {
        $array_data_entete['LOGIN'] = $LOGIN;
        $array_data_entete['CODE_STE'] = $CODE_STE;
        $array_data_entete['TYPE_BAP'] = $TYPE_BAP;
        $array_data_entete['CODE_FRS'] = $CODE_FRS;
        $array_data_entete['DATE_ENREG'] = convertDateUserToSql($DATE_ENREG);
        $array_data_entete['DATE_EFFET'] = convertDateUserToSql($DATE_EFFET);
        $array_data_entete['REF_BAP_FRS'] = $REF_BAP_FRS;
        $array_data_entete['DATE_EMISSION'] = convertDateUserToSql($DATE_EMISSION);
        $array_data_entete['DEVISE'] = $DEVISE;
        $array_data_entete['TOTAL_HT'] = $TOTAL_HT;
        $array_data_entete['TOTAL_TTC'] = $TOTAL_TTC;
        $array_data_entete['MODE_PAIEMENT'] = $MODE_PAIEMENT;
        $array_data_entete['DATE_ECHEANCE'] = convertDateUserToSql($DATE_ECHEANCE);
        return SqlBap::rqInsertBapEntete($array_data_entete)->ExecuteSql();
    }

    public static function insertBapLigne($LOGIN, $NO_LIGNE, $NO_CDE, $NO_PO_CDE, $NO_BR, $NO_PO_BR, $DES_ART, $QTE, $PU, $TOTAL, $QTE_BAP, $PU_BAP, $TOTAL_BAP, $TYPE_TVA, $TVA, $SI, $SCA, $CDC, $SSFAM, $IS_SELECTED, $TYPE_LIGNE)
    {
        $array_data_ligne['LOGIN'] = $LOGIN;
        $array_data_ligne['NO_LIGNE'] = $NO_LIGNE;
        $array_data_ligne['NO_CDE'] = $NO_CDE;
        $array_data_ligne['NO_PO_CDE'] = $NO_PO_CDE;
        $array_data_ligne['NO_BR'] = $NO_BR;
        $array_data_ligne['NO_PO_BR'] = $NO_PO_BR;
        $array_data_ligne['DES_ART'] = $DES_ART;
        $array_data_ligne['QTE'] = $QTE;
        $array_data_ligne['PU'] = $PU;
        $array_data_ligne['TOTAL'] = $TOTAL;
        $array_data_ligne['QTE_BAP'] = $QTE_BAP;
        $array_data_ligne['PU_BAP'] = $PU_BAP;
        $array_data_ligne['TOTAL_BAP'] = $TOTAL_BAP;
        $array_data_ligne['TYPE_TVA'] = $TYPE_TVA;
        $array_data_ligne['TVA'] = $TVA;
        $array_data_ligne['SI'] = $SI;
        $array_data_ligne['SCA'] = $SCA;
        $array_data_ligne['CDC'] = $CDC;
        $array_data_ligne['SSFAM'] = $SSFAM;
        $array_data_ligne['IS_SELECTED'] = $IS_SELECTED;
        $array_data_ligne['TYPE_LIGNE'] = $TYPE_LIGNE;
        
        return SqlBap::rqInsertBapLigne($array_data_ligne)->ExecuteSql();
    }

    public static function updateBapLigne($login, $no_ligne, $champ, $value)
    {
        return SqlBap::rqUpdateBapLigne($login, $champ, $value, $no_ligne)->ExecuteSql();
    }

    public static function saveBapInHaplus($login)
    {
        $liste_sql = new PileSql(DB_OXASQLDB);
        $num_fact = SqlBap::rqGetNumNewBap()->Trouve1();
        $entete_bap = SqlBap::rqSelectBapEntete($login)->Trouve1();
        $entete_bap['NUM_FACT'] = $num_fact['NUM_FACT'];
        $entete_bap['FAC_CBY'] = $login;
        
        $liste_sql->AddRequeteSql(SqlBap::rqInsertEnteteBapInHaplus($entete_bap));
        $lignes_bap = SqlBap::rqSelectAllLigneCommandeToBap($login, true)->TrouveTous();
        
        foreach ($lignes_bap as & $ligne) {
            $ligne['NUM_FACT'] = & $entete_bap['NUM_FACT'];
            $ligne['CODE_STE'] = & $entete_bap['CODE_STE'];
            $liste_sql->AddRequeteSql(SqlBap::rqInsertLigneBapInHaplus($ligne));
        }
        
        if ($liste_sql->Commit())
            return $num_fact['NUM_FACT'];
        else
            return 0;
    }

    public static function &getTotalBap($login)
    {
        $total = SqlBap::rqGetTotalBap($login)->Trouve1();
        return $total['TOTAL'];
    }

    public static function &getBapEntete($login)
    {
        return SqlBap::rqSelectBapEntete($login)->Trouve1();
    }

    // Spec 3550
    public static function &createArrayXmlReglementFactureForXsl($no_bap)
    {
        $pointeur = array();
        $devise_facture = '';
        
        $data = SqlBap::rqGetListeReglementsFacture($no_bap)->TrouveTous();
        if (is_array($data)) {
            foreach ($data as & $ligne) {
                $ligneReg = array();
                $ligneReg['!NUM_FAC'] = $ligne['NUM_FAC'];
                $ligneReg['!REF_REG'] = $ligne['REF_REG'];
                $ligneReg['!DTE_REG'] = convertDateSqlToFr($ligne['DTE_REG']);
                $ligneReg['!TYP_MT'] = ($ligne['TYP_MT'] == 'U' ? Trad('Unitaire') : Trad('Cumulé')); // EDP Correction car INTERDIT, ca plante l'outil MAGIC
                $ligneReg['!LIB_MODE_REG'] = $ligne['LIB_MODE_REG'];
                $ligneReg['!DEVISE'] = $ligne['DEVISE'];
                
               //spec 4009
                $ligneReg['!COMMENT'] = $ligne['CONTMEMO'];
                
                $ligneReg['!MT_REG']       = FormatageData::formatMontant($ligne['MT_REG'],2,' ');
                $ligneReg['!MT_REG_DEV']   = FormatageData::formatMontant($ligne['MT_REG_DEV'],2,' ');
                
                $pointeur['lignes'][] = $ligneReg;
                $devise_facture = $ligne['DEVISE_FAC'];
            }
        }
        
        $pointeur['popup_title'] = Trad('Règlements de la facture') . ' ' . $no_bap;
        $pointeur['info']['!devise_facture'] = $devise_facture;
        
        return $pointeur;
    }
}