<?php

namespace Modules\Facture\WebService;

class CreationFacture
{
   
    public static function creationEntete($array)
    {
        $docRatt = '';
        $pj = '';
        $nbDocRatt = 1;
        $nbPJ = 1;
        $cs = '';
        foreach ($array as $key => $value) {
            $tbKey = explode('-', $key);
            if ($tbKey[0]=="PJ" and $tbKey[1]=="NO_ORDRE") {
                $NO_ORDRE = $value;
                $pj .=
                '<PJ>
                    <NO_ORDRE>'.$nbPJ++.'</NO_ORDRE>
                    <TYPE_PJ>'.$array['PJ-TYPE_PJ-'.$NO_ORDRE].'</TYPE_PJ>
                    <TITRE>'.htmlspecialchars($array['PJ-TITRE-'.$NO_ORDRE]).'</TITRE>
                    <LECTURE>'.$array['PJ-LECTURE-'.$NO_ORDRE].'</LECTURE>
                    <IMP_PJ>'.$array['PJ-IMP_PJ-'.$NO_ORDRE].'</IMP_PJ>
                    <IMP_TITRE>'.$array['PJ-IMP_TITRE-'.$NO_ORDRE].'</IMP_TITRE>
                    <NOM_FIC>'.htmlspecialchars($array['PJ-NOM_FIC-'.$NO_ORDRE]).'</NOM_FIC>
                    <NOM_ORI>'.htmlspecialchars($array['PJ-NOM_ORI-'.$NO_ORDRE]).'</NOM_ORI>
                </PJ>';
            }
            if ($tbKey[0]=="DC" and $tbKey[1]=="NO_ORDRE") {
                $NO_ORDRE = $value;
                $docRatt .=
                '<DOC>
                    <NO_ORDRE>'.$nbDocRatt++.'</NO_ORDRE>
                    <TYPE_PJ>'.$array['DC-TYPE_PJ-'.$NO_ORDRE].'</TYPE_PJ>
                    <TITRE>'.htmlspecialchars($array['DC-TITRE-'.$NO_ORDRE]).'</TITRE>
                    <NOM_FIC>'.htmlspecialchars($array['DC-NOM_FIC-'.$NO_ORDRE]).'</NOM_FIC>
                    <NOM_ORI>'.htmlspecialchars($array['DC-NOM_ORI-'.$NO_ORDRE]).'</NOM_ORI>
                </DOC>';
            }
           
            $tbKeyCs = explode('debut-----fin', $key);
            if ($tbKeyCs[0]=="CS_EXTENTION") {
                $cs .=
                '<ChpSup>
                    <CSNumFixe>'.$tbKeyCs[3].'</CSNumFixe>
                    <CSValeur>'.htmlspecialchars($value).'</CSValeur>
                </ChpSup>';
            }
        }
        
        $TYPE_IMAGE = '';
        if (isset($array['FIC_LAD']) && $array['FIC_LAD']!='') {
            if (strpos($array['FIC_LAD'], 'http') === false) {
                $TYPE_IMAGE = 'C';
            } else {
                $TYPE_IMAGE = 'E';
            }
        }
        
        $xml = '<CreatFacture_In LngUtilisation="'.htmlspecialchars($_SESSION['Session_Langue']).'">
                    <Utilisateur>'.htmlspecialchars($_SESSION['Session_Login']).'</Utilisateur>
                    <TYPE>'.$array['TYPE'].'</TYPE>
                    <NO_FACT>'.$array['numEnregistrement'].'</NO_FACT>
                    <CODE_STE>'.htmlspecialchars($array['societe']).'</CODE_STE>
                    <LIB_COMPT>'.htmlspecialchars($array['LIB_COMPT']).'</LIB_COMPT>
                    <CODE_FOUR>'.$array['CODE_FOUR'].'</CODE_FOUR>
                    <FACT_FOU>'.$array['FACT_FOU'].'</FACT_FOU>
                    <DATE_FAFO>'.$array['DATE_FAFO'].'</DATE_FAFO>
                    <NUM_CDE>'.$array['NUM_CDE'].'</NUM_CDE>
                    <TOTAL_HT>'.$array['TOTAL_HT'].'</TOTAL_HT>
                    <TOTAL_TTC>'.$array['TOTAL_TTC'].'</TOTAL_TTC>
                    <DEVISE>'.$array['DEVISE'].'</DEVISE>
                    <TX_DEVISE>'.($array['TX_DEVISE']??'1').'</TX_DEVISE>
                    <TX_DEVSTE>'.($array['TX_DEVSTE']??'0').'</TX_DEVSTE>
                    <DATE_ENR>'.$array['DATE_ENR'].'</DATE_ENR>
                    <DATE_PER>'.$array['DATE_PER'].'</DATE_PER>
                    <ORDO>'.($array['ORDO']??'').'</ORDO>
                    <DTAE_ECH>'.$array['DTAE_ECH'].'</DTAE_ECH>
                    <FIC_LAD>'.htmlspecialchars($array['FIC_LAD']).'</FIC_LAD>
                    <TYPE_IMAGE>'.$TYPE_IMAGE.'</TYPE_IMAGE>
                    <MODE_PAIE>'.$array['modepaie'].'</MODE_PAIE>
                    <ListPJ>'.$pj.'</ListPJ>
                    <DocATT>'.$docRatt.'</DocATT> 
                    <ListChpSup>'.$cs.'</ListChpSup>
                </CreatFacture_In>';

        return new \Helpers\Webservice\Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_CREAT_FACT', $xml, false);
    }
    
    /**
     * @param mixed $numFacture
     * @param array{
     *     listSelectionCde?:array<string>,
     *     listSelectionFac?:array<string>,
     *     DTE_PER_DEB?:string,
     *     DTE_PER_FIN?:string,
     * } $post
     * @return \Helpers\Webservice\Wsdl
     */
    public static function choixDesCommandes($numFacture, $post)
    {
        $xml ='<FactDemandeListeAffectation_In LngUtilisation="'.htmlspecialchars($_SESSION['Session_Langue']).'">
                    <Utilisateur>'.htmlspecialchars($_SESSION['Session_Login']).'</Utilisateur>
                    <NUM_FACT>'.$numFacture.'</NUM_FACT>
                    <LISTE_CDES>'
                    . htmlspecialchars(implode(',', $post['listSelectionCde'] ?? []))
                    . '</LISTE_CDES>
                    <LISTE_FACT>'
                    . htmlspecialchars(implode(',', $post['listSelectionFac'] ?? []))
                    .'</LISTE_FACT>
                    <DTE_PER_DEB>'
                    . ($post['DTE_PER_DEB'] ?? '')
                    . '</DTE_PER_DEB>
                    <DTE_PER_FIN>'
                    . ($post['DTE_PER_FIN'] ?? '')
                    .'</DTE_PER_FIN>
                </FactDemandeListeAffectation_In>';
                
        return new \Helpers\Webservice\Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_PROPOSE_AFFECT', $xml, false, true);
    }
    
    public static function enregistrementAffectation($array, $post)
    {
        $xml ='<FactEnregListeAffectation_In LngUtilisation="'.htmlspecialchars($_SESSION['Session_Langue']).'">
                <Utilisateur>'.$_SESSION['Session_Login'].'</Utilisateur>
                <NUM_FACT>'.$post['numFact'].'</NUM_FACT>
                <ENREG_TMP>'.($post['ENREG_TMP'] ? '1' : '0').'</ENREG_TMP>
            </FactEnregListeAffectation_In>';
            
        return new \Helpers\Webservice\Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_ENREG_AFFECT', $xml, false, true);
    }
    
    public static function validationFacture($array)
    {
        $xml ='<FactureValid_In LngUtilisation="'.htmlspecialchars($_SESSION['Session_Langue']).'">
            	<Utilisateur>'.$_SESSION['Session_Login'].'</Utilisateur>
            	<NUM_FACT>'.$array['numFact'].'</NUM_FACT>
            	<ValidEnt>'.$array['ValidEnt'].'</ValidEnt>
            	<ValidAffectations>'.$array['ValidAffectations'].'</ValidAffectations>
            	<ValidBAP>'.$array['ValidBAP'].'</ValidBAP>
            	<Confirmation>'.($array['Confirmation'] ? '1' : '').'</Confirmation>
            	<AlgoSpecif>'.($array['AlgoSpecif'] ?? '').'</AlgoSpecif>
            </FactureValid_In>';
            
        return new \Helpers\Webservice\Wsdl('Oxaproc_Gen.wsdl', 'OXAPRC_FACT_VAL', $xml, false, true);
    }
}
