<?php
/*
 *
 * info_livraison.php
 *
 * Popup permettant l'affichage / la modification du centre de livraison courant mais uniquement SESSION
 *
 *
 */
require_once 'application/class/class_ManageSession.php';

// si on est en mode HTML, on charge l'entête.
$sign = new Sign(false);
$isHttp = (GetValue('THROUGH') == 'TRUE');
$script_cible = 'IU_signature_manage.php';
if (! $isHttp) {
    if (getValue('mod') == 'A') 
    {
        if ($r = SqlSign::rqSignInDelegationV10()->TrouveTous()) 
        {
            $lastDate = $r[count($r) - 1]['DTE_FIN'];
            
            if ($lastDate != '00000000')
            {
                $quand[] = mb_substr($lastDate, 4, 2);
                $quand[] = mb_substr($lastDate, 6, 2);
                $quand[] = mb_substr($lastDate, 0, 4);
                
                if($lastDate <= date('Ymd'))
                {
                    $_POST['DTE_DEB'] = convertDateSqlToFr(date('Ymd'));
                }
                else
                {
                    $_POST['DTE_DEB'] = convertDateSqlToFr(date('Ymd', newDate($quand, 1)));
                }

            }
        } 
        else 
        {
            $_POST['DTE_DEB'] = convertDateSqlToFr(OxaDate::getToday());
        }
        if ($r = & SqlUsers::rqGetInfoUser($_SESSION['Session_Login'])->Trouve1()) 
        {
            $_POST['loginDelegataire'] = $r['DEL_PREF'];
        }
    } else {
        $_POST['DAT_DEB_ORI'] = getValue('DTE_DEB');
        
        $r = & SqlSign::rqGetSignatureFromDateDebut(getValue('loginDelegataire'), getValue('DTE_DEB'))->Trouve1();
        
        $date = $r['DTE_DEB'];
        if ($date != '00000000') {
            $date = convertDateSqlToFr($date);
        } else {
            $date = '';
        }
        $_POST['DTE_DEB'] = $date;
        
        $date = $r['DTE_FIN'];
        if ($date != '00000000') {
            $date = convertDateSqlToFr($date);
        } else {
            $date = '';
        }
        $_POST['DTE_FIN'] = $date;
    }
}

$form_name = 'form_signa';
$fichier_xsl = 'application/xsl/info_signatures.xsl';

$array['fenetre'] = array(
    'information' => array(
        '!value' => ''
    ),
    'form_parent' => array(
        '!value' => getValue('form_parent')
    ),
    'champ' => array(
        '!value' => getValue('champ')
    ),
    'hidden' => array(
        'mod' => getValue('mod'),
        '_ORI' => getValue('_ORI'),
        'DAT_DEB_ORI' => getValue('DAT_DEB_ORI')
    ),
    'prg_appel' => array(
        '!value' => getValue('prg_appel')
    )
);

switch (getValue('mod')) {
    case 'A':
        $messageMod = trad('Création d\'une délégation') ;
        break;
    case 'M':
        $messageMod = trad('Modification d\'une délégation');
        break;
    case 'S':
        $messageMod = trad('Suppression d\'une délégation');
        break;
    default:
        $messageMod = '';
}
$array['popup_title'] = $messageMod;

$array['viewer']['DTE_DEB'] = array(
    '!value' => getValue('DTE_DEB')
);
$array['viewer']['DTE_FIN'] = array(
    '!value' => getValue('DTE_FIN')
);
$array['viewer']['loginDelegataire'] = array(
    '!value' => getValue('loginDelegataire'),
    '!onblur' => "setCasseFieldTxt(this,'upper') ; Traite('" . $script_cible . "?action=selectDelegataire',document.forms.$form_name.loginDelegataire);"
);
$array['zoom_liste_delegataires'] = array(
    '!value' => "Traite('" . $script_cible . "?action=zoom_liste_delegataires',document.forms.$form_name.loginDelegataire);"
);
$array['enregistrerSignatures'] = "Traite('info_signatures.php?action=enregistrer',document.forms.form_signa.loginDelegataire);";

if (getValue('action') == 'enregistrer') {
    $DELEG = trim(getValue('loginDelegataire'));
    $DTE_DEB = trim(getValue('DTE_DEB'));
    $DTE_FIN = trim(getValue('DTE_FIN'));
    
    if (getValue('mod') != 'S') {
        // On contrôle les données uniquement si les zones de saisies sont modifiables.
        if ($DELEG == '') {
            Affichage::messageJS(trad('La saisie du délégataire est obligatoire'));
            $connecteur->disconnect();
            exit();
        }
        
        $sign->selectListUserForDelegation($DELEG, '', '', true);
        
        if (! $sign->isDelegataire()) {
            Affichage::messageJS(trad('Le login saisi ne peut être choisi comme délégataire, veuillez vérifier'));
            Affichage::setAttribut('loginDelegataire', 'value', '');
            $connecteur->disconnect();
            exit();
        }
        
        // On vérifie si le fromat de la date de livraison saisie est conforme jj/mm/aaaa
        if ($DTE_DEB == '') {
            echo 'alert(\'', cnv_to_javascript(Trad('La saisie de la date de début est obligatoire.')), '\');';
            $connecteur->disconnect();
            exit();
        }
        // convertDateSqlToFr convertDateUserToSql
        if ($DTE_DEB != '' && ! TraiteDate($DTE_DEB)) {
            echo 'alert(\'', cnv_to_javascript(Trad('La saisie de la date de début est incohérente')), '\');';
            $connecteur->disconnect();
            exit();
        }
        
        if ($DTE_FIN != '' && ! TraiteDate($DTE_FIN)) {
            echo 'alert(\'', cnv_to_javascript(Trad('La saisie de la date de fin est incohérente')), '\');';
            $connecteur->disconnect();
            exit();
        }
        
        $DTE_DEB_ENR = convertDateUserToSql(getValue('DTE_DEB'));
        $DTE_FIN_ENR = convertDateUserToSql(getValue('DTE_FIN'));
        
        if ($DTE_FIN != '' && $DTE_FIN_ENR < $DTE_DEB_ENR) {
            
            echo 'alert(\'', cnv_to_javascript(strBuild(Trad("La saisie des dates est incohérente ( @1@ )"), $DTE_FIN)), '\');';
            $connecteur->disconnect();
            exit();
        }
        
        // Test de chevauchementy
        if (getValue('mod') == 'A')
            $r = SqlSign::rqSignTestDateChevauchement('', $DTE_DEB_ENR, $DTE_FIN_ENR);
        else
            $r = SqlSign::rqSignTestDateChevauchement(getValue('DAT_DEB_ORI'), $DTE_DEB_ENR, $DTE_FIN_ENR);
        
        if ($res = $r->TrouveTous()) {
            echo 'alert(\'', cnv_to_javascript(Trad('Modification impossible, un chevauchement de date a été détecté')), '\');';
            $connecteur->disconnect();
            exit();
        }
    }
    switch (getValue('mod')) {
        case 'A':
            SqlSign::rqSignInsertDelegationV10($DELEG, $DTE_DEB_ENR, $DTE_FIN_ENR)->ExecuteSql();
            echo "me().opener.CallUrl('IU_signature_manage.php?action=accueil','item=DELEGUER');window.closePopup();";
            break;
        case 'M':
            SqlSign::rqSignUpdateDelegationV10($DELEG, getValue('DAT_DEB_ORI'), $DTE_DEB_ENR, $DTE_FIN_ENR)->ExecuteSql();
            echo "me().opener.CallUrl('IU_signature_manage.php?action=accueil','item=DELEGUER');window.closePopup();";
            break;
        case 'S':
            SqlSign::rqSignDeleteDelegationV10($DELEG, getValue('DAT_DEB_ORI'))->ExecuteSql();
            echo "me().opener.CallUrl('IU_signature_manage.php?action=accueil','item=DELEGUER');window.closePopup();";
            break;
    }
    $connecteur->disconnect();
    exit();
}
// Si l'utilisateur appelle la liste des délégataires potentiels
elseif (getValue('action') == 'zoom_liste_delegataires') {
      
  
    $url = "OpenPopup('ctrl_liste_delegataires.php?action=initPopup&popup_id=SIGN_DELEGATAIRES&formName={$form_name}&inputField=loginDelegataire&CODE_STE=" . $_SESSION['Session_SocUsr'];
    $url .= "&backPopup=1&backCtrl={$script_cible}&backAction=selectDelegataire&backMode=form&backForm={$form_name}&backField=loginDelegataire'";
    $url .= ",'popup_liste_sign_delegataires',700,600);";
    
    echo $url;
    $connecteur->disconnect();
    exit();
} elseif (getValue('action') == 'selectDelegataire') {

    $delegataire = getValue('loginDelegataire');
    
    if ($delegataire != '') {
        $sign->selectListUserForDelegation($delegataire, '', '', true);
        if (! $sign->isDelegataire()) {
            Affichage::messageJS(trad('Le login saisi ne peut être choisi comme délégataire, veuillez vérifier'));
            Affichage::setAttribut('loginDelegataire', 'value', '');
            Affichage::innerHTML('libelle_nom', '');
        } else
            Affichage::innerHTML('libelle_nom', strBuild(trad('Délégataire choisi : @1@'), $sign->delegataire['NOM']));
    }
    
    $connecteur->disconnect();
    exit();
} 
else {
    // On teste si des adresses de livraison secondaires existent pour le centre de livraison temporaire de la session
    $obj_xml = new GenXslt(true);
    echo $obj_xml->XslHtml($fichier_xsl, $array);
}

$connecteur->disconnect();
exit();
