
<center><h2><strong>Ubuntu</strong></h2>
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
<?php

    /*
    Class pour commande V2
    26/11/2019
    */

//echo "<h1>=>ClassCdeV2 CB en TEST</h1>CODE:STRIPE remplacer lk_ sk_";

session_start();



    Class ClassCdeV2    {

        public function __construct() {
            $this->EtapeParam = [
                ['nom'=>'Zero !'    ,'titre'=>''],
                ['nom'=>'offre'     ,'titre'=>'Je choisis mon offre'],
                ['nom'=>'options'   ,'titre'=>''],
                ['nom'=>'mesinfos'  ,'titre'=>'Mes informations'],
                ['nom'=>'infosste'  ,'titre'=>"Informations sur l'entreprise"],
                ['nom'=>'paiement'  ,'titre'=>"Je paie et j'ouvre ma ligne"],

            ];

            $this->Operateurs = ['BOU'=>'Bouygues Telecom','ORG'=>'Orange','SFR'=>'SFR','MEI'=>'Le meilleur réseau à mon adresse'];

        }

        public function CnxDBaseSQL() {
            if ($_SERVER['REMOTE_ADDR'] == "127.0.0.1") {
                $connexion = mysqli_connect("127.0.0.1", "root", "") or die ("could not connect to mysql");
                mysqli_select_db($connexion, "airmob") or die ("no database");
            } else {
//                $connexion = mysqli_connect("airmobeuagweb.mysql.db", "airmobeuagweb", "5345fhjthk875HJzzs112") or die ("could not connect to mysql");
                $connexion = mysqli_connect("airmobeuagwwwnew.mysql.db", "airmobeuagwwwnew", "8iH9MEjfVySL5q7YWkywKA") or die ("could not connect to mysql");
                mysqli_select_db($connexion, "airmobeuagwwwnew") or die ("no database");

            }
            return $connexion;
        }

    //  Cherche le nouveau N° de bdc
        public function NoBDC () {
            $QF    = mysqli_query($this->CnxDBaseSQL(), "SELECT nobdc FROM commandes_v2 WHERE nobdc LIKE 'BC%' ORDER BY nobdc DESC LIMIT 1");
            $Col   = mysqli_fetch_array($QF, MYSQLI_ASSOC);
            $NewNo = substr($Col['nobdc'],-5)+1;
            $XDigit = "5"; // 5 digit
        //  BC2020020500003
            return "BC".date('Ymd').str_repeat("0", abs(strlen($NewNo)-$XDigit) ).$NewNo;
        }

        public function AfficheSuiviEtape() {
            $Etapecourante = $_SESSION['AIRCMDV2']['etape'];
            include ("./form/step.php");

            if($Etapecourante=="1" && $_REQUEST['type']=="i") $Titre ="Commandez votre solution internet";
            elseif($Etapecourante=="1" && $_REQUEST['type']=="t") $Titre ="Commandez votre solution de téléphonie";
            else                                      $Titre=$this->EtapeParam[$Etapecourante]['titre'];

           // echo "<h1 class='Taille14' id='' style='text-align:center; color:#245ba5;'>".$Titre."</h1>";
            echo "<br>";

        }

    /* Affiche etape */
        public function AfficheFormEtape() {
            $Etapecourante = $_SESSION['AIRCMDV2']['etape'];
            $NomForm = $this->EtapeParam[$Etapecourante]['nom'];
            include ("./form/".$NomForm.".php");
        }

    /*  Enregistre les choix utilisateurs */
        public function PostForm() {
            $Etapecourante = $_SESSION['AIRCMDV2']['etape'];
            $Type          = $_SESSION['AIRCMDV2']['type'];

    //  DEBUG : affichage
    //   echo "$Etapecourante / <pre>"; print_r($_REQUEST); echo "</pre>";

        //  Valide ADD + SUIVANT
            if( $_REQUEST['btn_suivant'] or $_REQUEST['btn_add'] or $_REQUEST['btn_continuer'] ) {
//echo "<h1>=>".date('s')."</h1>";
             //   die("XXXXXXXXX");
            //  ----------------------------
            //  Validation de ma 1ere etape
            //  ----------------------------
                if( !@$_SESSION['AIRCMDV2']['Cde_debut'] ) {

                    $_SESSION['AIRCMDV2']['idunique']  = uniqid();
                    $_SESSION['AIRCMDV2']['Cde_debut'] = date("Y-m-d H:i:s", mktime(date("H") + 1, date("i"), date("s"), date("m"), date("d"), date("Y")));;

                    $Q_INSERT = "INSERT INTO commandes_v2 (idunique, creation ) VALUES ('".$_SESSION['AIRCMDV2']['idunique']."','".date('Y-m-d H:i:s')."') ";
                    $QUERY 	  = mysqli_query ($this->CnxDBaseSQL() , $Q_INSERT);


                   // echo mysqli_error($this->CnxDBaseSQL());

                }
               // $NomProduit =  $_SESSION['AIRCMDV2']['NomProduits'][$_REQUEST['p']]['nom'];

            //  Si ADD enregistre
                if( $_REQUEST['btn_add']) {
                 //   echo "<h1>ADD</h1>";
                    $EtapeSave  = $Etapecourante ; // Maintient la valeur de l etape
                    $newKey     = max(array_keys( $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave] ))+1;;
                    $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$newKey]=['id' =>  $_REQUEST['p'],'confirme'=>'OK'] ;
                }
                elseif( $_REQUEST['btn_continuer']) {
                    $EtapeSave  = $Etapecourante+1 ; // Maintient la valeur de l etape
                }
            // Si SUIVANT
                else {
                   $EtapeSave = $Etapecourante - 1; // Etape suivante donc enreg. sur l etape precedente
                }

            // Enreg.
            //   echo "<h1>POST ($EtapeSave)</h1>";
                foreach ($_REQUEST as $NomChamp => $Val) {
                    list($none,$prod,$cde) = explode ('_',$NomChamp);
                    // Conserve les choix de l utilisateur
                    if($none=="Choix") {
                        if($prod=="DATA") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id']        = $Val;
                        if($prod=="OPE" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['operateur'] = $Val;
                        if($prod=="TEL" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['tel']       = $Val;
                        if($prod=="OPT1") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id']        = $Val;
                        if($prod=="OPT2") $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['id']        = $Val;
                        if($prod=="ABO" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['abo']       = $Val;

                        $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['confirme'] = "OK";
                    }
                    else  if($none=="Porta") {
                        if($prod=="RIO" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['rio']       = $Val;
                        if($prod=="NUM" ) $_SESSION['AIRCMDV2']['Commande'][$Type][$EtapeSave][$cde]['numero']    = $Val;
                    }
                    else if ($none=="form") {
                        $_SESSION['AIRCMDV2']['Commande']['Utilisateur'][$prod] = $Val;
                    }
                }

            // Enregistre en MySQL
              $this->EnregCmd();

              if( $_REQUEST['btn_continuer']) {

                        if($_REQUEST['type']=="i") {
                            //header('Location:http://2020.airmob.eu/telephonie-commander/');
                            echo "<script>top.window.location = 'https://airmob.net/telephonie-commander/'</script>";
                            die;
                        }
                        if($_REQUEST['type']=="t") {
                            echo "<script>top.window.location = 'https://airmob.net/internet-commander/'</script>";
                            //header('Location:http://2020.airmob.eu/internet-commander/');
                        }
                  //
              }
            }
        }

    //  Enregistre les infos au fur et à mesure des étapes
        public function EnregCmd(){

        //  Articles
            $CmdArray = $this->FormatCmd();
        //  Détail Cmd
            $CmdJson    = json_encode($CmdArray);
        // Montant Cmd
            $Ht         = $CmdArray['total_rec']+$CmdArray['total_fas'];
            $Tva        = ($Ht*20)/100;
            $Ttc        = $Ht+$Tva;
        // Ajoute 2 chmaps à la requete
            $UPDATE[]   = "detail_cmd='".$CmdJson."'";
            //$UPDATE[]   = "montant='$Ttc'";
            $UPDATE[]   = "montant='".$_SESSION['AIRCMDV2']['TotalCmd']."'";

        //  Creation de la requete
            foreach ($_SESSION['AIRCMDV2']['Commande']['Utilisateur'] as $Champ => $Valeur) {
                $UPDATE[] = $Champ."='".addslashes($Valeur)."'";
            }

        // Enregsitre le code promo
            if($_SESSION['AIRCMDV2']['CodePROMO']) {
                $UPDATE[]   = "code_promo='".$_SESSION['AIRCMDV2']['CodePROMO']['nom']."=".$_SESSION['AIRCMDV2']['CodePROMO']['remise']."'";
            } else {
                $UPDATE[]   = "code_promo=''";
            }

        //  Enregsitrement permament
            $Q_UPDATE = "UPDATE commandes_v2 SET ".join(',',$UPDATE) ."WHERE idunique='".$_SESSION['AIRCMDV2']['idunique']."'";
            $QUERY 	    = mysqli_query ($this->CnxDBaseSQL() , $Q_UPDATE);

            //cho mysqli_error($this->CnxDBaseSQL());
        }

    // STRIPE enregistre le paiement OK ou KO
        public function PaiementCmd($Msg,$RetourAPI , $nobdc) {
        error_reporting(E_ALL);
        ini_set("display_errors", 0);

        // Evite l ecrassement
            if ($_SESSION['AIRCMDV2']['idunique']) {
                $Q_UPDATE = "UPDATE commandes_v2 SET nobdc='".$nobdc."',code_promo='".  $RetourAPI->description."',msg='" . $Msg . "',paiement='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $_SESSION['AIRCMDV2']['idunique'] . "'";
                $QUERY    = mysqli_query($this->CnxDBaseSQL(), $Q_UPDATE);
                unset( $_SESSION['AIRCMDV2']); // Vide la commande
            }
        }

    // NEW Valide la commande depuis le webhook
        public function PaiementCmdCB($idunique , $Msg , $codepromo , $nobdc) {
        //  Info du BDC
            $QF  = mysqli_query($this->CnxDBaseSQL(), "SELECT * FROM commandes_v2 WHERE idu='".$idunique."'");
            $Bdc = mysqli_fetch_array($QF, MYSQLI_ASSOC);
        // Ne remplace pas si dej aun paiement ok
            if($Bdc['paiement']!='paiement_ok') {
                $Q_UPDATE = "UPDATE commandes_v2 SET nobdc='" . $nobdc . "',code_promo='" . $codepromo . "',msg='" . $Msg . "',paiement='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $idunique . "'";
                $QUERY    = mysqli_query($this->CnxDBaseSQL(), $Q_UPDATE);
            }

        }

    // Factures ZOHO - Prepare les données
        public function ZohoFactures( $array ) {
            $cnx = $this->CnxDBaseSQL();
            $idu = $array['data']['object']['metadata']['NoBDC'];
            $pi  = $array['data']['object']['payment_intent'];
        // Commande
            $QF  = mysqli_query($cnx , "SELECT * FROM commandes_v2 WHERE idunique='".$idu."'");
            $Bdc = mysqli_fetch_array($QF, MYSQLI_ASSOC);
        // Insert
            $INSERT	= mysqli_query ($cnx , "INSERT INTO zoho_factures (idunique,pi,email) VALUE ('".$idu."','".$pi."','".$Bdc['email']."')");
            $IDnew  = mysqli_insert_id($cnx);

        }

    // Recapitule la commande après paiement
        public function RecapituleCmd( $id ) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE nobdc='$id' or idunique='$id'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);

            echo "<hr><br>";
            if  ($Col['nobdc']) echo "N°de commande : ".$Col['nobdc'];
            else                echo "N°de transaction : ".$Col['idunique'];
            echo "<br>";
            echo "Montant TTC : ". number_format($Col['montant'], 2, ',', ' ')." euros";
        }



    // Format la commande
        public function FormatCmd() {

            $ArrType = ['i'=>'Internet','t'=>'Telephonie','f'=>'Fibre']; // Internet, Telephonie

            foreach($ArrType as $TypedeCommande=>$NomType) {
                $MyCmd =[];
                foreach ($_SESSION['AIRCMDV2']['Commande'][$TypedeCommande] as $Etape => $Cmd) {

                    foreach ($Cmd as $K => $Dtl) {
                        if($Dtl['qte']) $qte = $Dtl['qte']; else $qte = "1";
                        if ($Dtl['id']) {

                            $NomProduit =  utf8_encode($_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['nom']);
                            $Rec        =  $_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['rec']*$qte;
                            $Total_Rec  += $Rec;
                            $Fas        =  $_SESSION['AIRCMDV2']['NomProduits'][$Dtl['id']]['fas']*$qte;
                            $Total_Fas  += $Fas;

                            if ($Etape == 1) $MyCmd[] = ['Type' => $NomType, 'ctg'=>'offre'  , 'idart' => $Dtl['id'] , 'nom'=>$NomProduit,'rec'=>$Rec,'fas'=>$Fas,'tel' => $Dtl['tel'],'ope' => $Dtl['operateur'], 'num' => $Dtl['numero'], 'rio' => $Dtl['rio'],'abo'=>$Dtl['abo'] ];
                            if ($Etape == 2) $MyCmd[] = ['Type' => $NomType, 'ctg'=>'option' , 'idart' => $Dtl['id'] , 'nom'=>$NomProduit,'rec'=>$Rec,'fas'=>$Fas,'qte'=>$Dtl['qte']   ];

                        }
                    }
                    $MyCmdALL[$TypedeCommande] = $MyCmd;
                }
            }
            return ['dtl_cmd'=>$MyCmdALL,'total_rec'=>$Total_Rec,'total_fas'=>$Total_Fas];
        }

    //  Charge les produits
        public function ListeProduits( $select_arr ) {
        // Extrait les articles sélectionnés
            if( is_array($select_arr) ) {
                foreach($select_arr as $Chp) {
                $W[] = "offre ='$Chp'";
                }
                $WHERE = join (' or ', $W);
            }
        // Query
            $cnx        = $this->CnxDBaseSQL();
            $Lst = mysqli_query($cnx, "SELECT * FROM offres WHERE $WHERE ORDER BY id ") or die(mysqli_error());
            while ($Detail = mysqli_fetch_array($Lst, MYSQLI_ASSOC)) {
                $_SESSION['AIRCMDV2']['LstProduits'][$Detail['offre']][$Detail['id']] = $Detail;
                $_SESSION['AIRCMDV2']['NomProduits'][$Detail['id']] = $Detail;
            }
        }

    // Etape version Mobile
        public function StepMobile() {
            $NoEtape   = $_SESSION['AIRCMDV2']['etape'];

            ${'active'.$NoEtape}='is-active' ;
            ${'bold'.$NoEtape}='bold; border-bottom:2px solid #235BA5' ;

            if(!$bold1 && !$bold2 && !$bold3 && !$bold4)  $bold5="bold; color :#000;";

            echo "
        <div id=\"container\" style=\"border:0px;\">
        <div id=\"content\" style=\"width:650px\">
            <br /><br />
            <ul class=\"list-unstyled multi-steps\" >
                <li class=\"$active1 \">Mon offre</li>
                <li class=\"$active2\">Mes options</li>
                <li class=\"$active3\">Mes informations</li>
                <li class=\"$active4\">Mon entreprise</li>
                <li class=\"$active5\">Paiement</li>
            </ul>
            </div>
            </div>
        ";

        }

    //  Declenche la ligne etape
        public function Step() {
            $NoEtape   = $_SESSION['AIRCMDV2']['etape'];
            ${'active'.$NoEtape}='is-active' ;
            echo "
            <div  lass='container-fluid col-md-12'>
                <br /><br />
                <ul class=\"list-unstyled multi-steps\" >
                    <li class=\"$active1 \">Mon offre</li>
                    <li class=\"$active2\">Mes options</li>
                    <li class=\"$active3\">Mes informations</li>
                    <li class=\"$active4\">Mon entreprise</li>
                    <li class=\"$active5\">Paiement</li>
                </ul>
            </div>";
        }

        public function Surv() {
            $cnx        = $this->CnxDBaseSQL();

            $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE nobdc<>'' ORDER BY id desc LIMIT 20");

            while ($ColC = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $MyGest[$ColC['nobdc']] = $ColC;
            }
            return $MyGest;
        }

    //  Connexion à l API STRIPE
        public function APIStripe( $Array ) {
            $this->action   = $Array['action'];
            $this->data     = $Array['data'];
        // CODE:STRIPE
//            $CodeAPIStripe = "sk_test_wtOLZRJRmrRm5va5cDWUKeNl"; // AIRMOB TEST
           $CodeAPIStripe = "sk_live_jmMEEsrBrru0qcmySOPhViz1"; // AIRMOB Prod

            $ch = curl_init();
            curl_setopt_array($ch, [
                CURLOPT_URL => "https://api.stripe.com/v1/".$this->action,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_USERPWD => $CodeAPIStripe,
                CURLOPT_HTTPAUTH => CURLAUTH_BASIC
            ]);

            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->data));
            $response = json_decode(curl_exec($ch));
            return $response;

            curl_close($ch);
        }




        function MyCurl_APIZOHO_V2( $Param ) {
            // Compte les appels à ZOHO
            ob_start();
            echo "<PRE>"; print_r($Param); echo "</PRE>";
            $buffer = ob_get_contents();
            ob_end_clean();
            /*
            $fpW = fopen("./xml/compte_api.zoho.".date('m').".txt", "a+");
            fwrite($fpW, "MyCurl_APIZOHO_V2 :: ".date('Y-m-d H:i:s')." :: ".$buffer."\n");
            fclose($fpW);
            */
            //$this->Compte_CallApiZoho( "R2D2\MyCurl_APIZOHO_V2", $Param) ;

            // Cette solution permet de recupérer QUE le BOY est pa l entete
            $mycurl = curl_init();
            curl_setopt_array($mycurl, array(
                CURLOPT_URL             =>  $Param['url'],
                CURLOPT_USERAGENT       =>  $_SERVER['HTTP_USER_AGENT'],
                CURLOPT_RETURNTRANSFER  => true,
                CURLOPT_ENCODING        => '',
                CURLOPT_MAXREDIRS       => 10,
                CURLOPT_TIMEOUT         => 0,
                CURLOPT_CUSTOMREQUEST 	=> $Param['method'],
                CURLOPT_HTTPHEADER      => array(),
                CURLOPT_SSL_VERIFYPEER  => false,
                CURLOPT_FOLLOWLOCATION => true,
               // CURLOPT_HEADER          => true,
            ));
            //                 CURLOPT_POSTFIELDS 		=> $Param['body'],
            if( key_exists('body',$Param)  ) curl_setopt($mycurl, CURLOPT_POSTFIELDS, $Param['body']);
            //  Si Header
            if( is_array($Param['header']) ) curl_setopt($mycurl, CURLOPT_HTTPHEADER, $Param['header']);

            $result = curl_exec($mycurl);
            $err 	= curl_error($mycurl);

            //  Scinde HEADER & REPONSE
            //list($header, $reponse) = explode("\r\n\r\n", $result, 2);

            //$reponse = json_decode($reponse,TRUE);
            curl_close($mycurl);

            return $result;
        }




    // Liste les commandes
        public function ListeCmds( $idu ) {
            $cnx = $this->CnxDBaseSQL();
            if($idu )  $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE idunique='".$idu."' && msg='paiement_ok' ");
            else       $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE paiement LIKE '".date('Y-m-d')."%' && msg='paiement_ok' ");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $Liste[] = $Col;
            }
            return $Liste;
        }

        public function Cmd($idu) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE idunique = '$idu'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);
            return $Col;
        }

    // INSERT la commande
        public function InsertCmd($idunique , $array) {
            $cnx    = $this->CnxDBaseSQL();
            $INSERT	= mysqli_query ($cnx , "INSERT INTO zoho_factures (idunique,email) VALUE ('".$idunique."','".$array['email']."')");
            $error  = mysqli_error($cnx);
            if ($error) return $error; else return "OK";
        }

    // UPDATE la commande
        public function UpdateCmd( $query ) {
            $cnx    = $this->CnxDBaseSQL();
            $UPDATE = mysqli_query ($cnx , $query);
            $error  = mysqli_error($cnx);
            if ($error) return $error; else return "OK";
        }

    // Etat du traitement ZOHO
        public function ZohoTraitement( $idunique ) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE idunique='$idunique'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);
            $Traitement = $Col;
            return $Traitement;
        }

    // Liste les commandes gérée par ZOHO
        public function LstCmdZOHO( $param ) {
            $cnx = $this->CnxDBaseSQL();

            if($param['etat']=="active"  ) $Query = "zoho_idclient IS NOT NULL && STOP IS NULL";
            if($param['etat']=="inactive") $Query = "zoho_idclient IS NOT NULL && STOP IS NOT NULL ORDER BY stop DESC";
//echo $Query;
            $QW    = mysqli_query($cnx, "SELECT * FROM `zoho_factures` WHERE $Query");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                 $QF  = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE idunique='".$Col['idunique']."'");
                 $Dtl = mysqli_fetch_array($QF, MYSQLI_ASSOC);

                $Lst[$Col['idunique']]['idunique'] = $Col['idunique'];
                $Lst[$Col['idunique']]['email']    = $Col['email'];
                $Lst[$Col['idunique']]['stop']     = $Col['stop'];
                $Lst[$Col['idunique']]['ste']      = $Dtl['nomsociete'];
                $Lst[$Col['idunique']]['prochain_rec']      = $Col['prochain_rec'];
                $Lst[$Col['idunique']]['id_rec']      = $Col['id_rec'];


            }
            return $Lst;
        }



    // Cherche la référence ZOHO de l article
        public function ZohoReference( $idart ) {
            $cnx = $this->CnxDBaseSQL();
            $QF  = mysqli_query($cnx, "SELECT * FROM offres WHERE id='$idart'");
            $Col = mysqli_fetch_array($QF, MYSQLI_ASSOC);

            return $Col;
        }

    // Cree un ficheir pour le dashboard
        public function ContenuTable() {
            $fileJson = "./log/cdev2.txt";
            $fp = fopen($fileJson, 'w'); // a+ ajoute / w ecrase


            $cnx = $this->CnxDBaseSQL();


            $QW    = mysqli_query($cnx, "SELECT * FROM `zoho_factures` WHERE `zoho_nofacture` IS NOT NULL && STOP IS NULL");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $CSV  = $Col['idunique'].";".$Col['email'].";".$Col['zoho_nofacture'].";".$Col['zoho_datefact'].";".$Col['semaine3'].";".$Col['info_email'].";".$Col['semaine4'].";".$Col['prochain_rec'];
                fwrite($fp,$CSV."\n");
            }
            fclose($fp);
        }


    // Envoi un email de situation (pour les début)
        public function Situation() {

            $cnx = $this->CnxDBaseSQL();
            // Liste toutes les demandes
            $QW    = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE 1 ");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                if( $Col['semain3']==date("Y-m-d") ) {
                    $Ope[$Col['idunique']] = "Vous devez lancer une opération Semaine 3";
                }
                elseif( $Col['semain4']==date("Y-m-d") ) {
                    $Ope[$Col['idunique']] = "Vous devez lancer une opération Semaine 4";
                }
            // Détecter les commandes non générées
                elseif( $Col['zoho_datefact']==NULL && $Col['id']>'13' ) {
                    echo "<h1>=>NOUVEAU </h1>";
                    $Ope[$Col['idunique']] = "Vous devez lancer la création contact+facture";
                }
            }
            ob_start();
            echo "<PRE>";
            print_r($Ope);
            echo "</PRE>";
            $buffer = ob_get_contents();
            ob_end_clean();
            if( count($Ope)>0 ) {
                echo "<h3>Envoi du CR(Situation)</h3>";

                $Array = [
                    'to'      => 'luc@bvcs.fr', //
                    'subject' => '[AIRMOB/CDEV2] Situation',
                    'body'    => $buffer,
                ];
                $Mel   = $this->MySendMailPHPMailer($Array);
            }
        }



    // Rapport d'etat sur la création de facture
        public function CRFactures() {
            $cnx = $this->CnxDBaseSQL();
        // Liste les factures du jour
            $QW    = mysqli_query($cnx, "SELECT * FROM commandes_v2 WHERE paiement LIKE '".date('Y-m-d')."%' && msg='paiement_ok' ");
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $Liste[$Col['idunique']] = $Col;
            }
        // Si une commande est en erreur ZOHO idclient ou idfacture
            foreach($Liste as $idu=>$dtl) {
                $ret = $this->ZohoTraitement($idu);

                if($ret['zoho_idclient']=="ERR" || $ret['zoho_nofacture']=="ERR") {
                    $ERR_Mel['EchecZOHO'][] = $ret;
                }

            }

        // Controle que la relance Semaine 3 est OK
            $QS3    = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && semaine3 < '".date('Y-m-d')."' && info_email is NULL ");
            while ($Col = mysqli_fetch_array( $QS3,MYSQLI_ASSOC )) {
                $ERR_Mel['EchecRelanceEmail3Semaine'][] = $Col;
            }

            if(count($ERR_Mel)>0) {
                ob_start();
                    echo "<PRE>";
                    print_r($ERR_Mel);
                    echo "</PRE>";
                    $buffer = ob_get_contents();
                ob_end_clean();

                echo "<h3>Envoi du CR</h3>";
                echo $buffer;
                //$emailweb ="luc2@bvcs.fr";
                //$ret = mail("$emailweb","[AIRMOB/CDEV2] ERREUR",$buffer,"From: $emailweb\nX-Mailer:  $emailweb\nReply-To: $emailweb\nX-Mailer: PHP");

                $Array = [
                    'to'      => 'luc2@bvcs.fr', //
                    'subject' => '[AIRMOB/CDEV2] ERREUR',
                    'body'    => $buffer,
                ];
                $Mel = $this->MySendMailPHPMailer($Array);



            }

            //return $Liste;
        }

    //  Semaine 3 = Envoyer un email
        public function Semaine3() {
            $cnx = $this->CnxDBaseSQL();
            $Array =[];

        // Si date semaine est <> 0000-00-00 et < ou = à la date de traitement et que la relance 3 n a pas ete faites
            $QW    = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && idunique >0 && semaine3<>'0000-00-00' && semaine3 <= '".date('Y-m-d')."' && info_email is NULL ");
            $Cpte  = $QW->num_rows;

            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $Array = [
                    'to'            =>  $Col['email'], //
                    'from'          => 'isabelle.dubois@airmob.net',
                    'subject'       => '[AIRMOB] Abonnement',
                    'fichier_html'  => 'email.3semaine.html',
                ];

                $idu = $Col['idunique'];
                $Mel = $this->MySendMailPHPMailer($Array);

                if ($Mel=="OK") {
                    $Retour_Mel = $this->UpdateCmd("UPDATE zoho_factures SET info_email='".date('Y-m-d H:i:s')."' WHERE idunique='$idu'");
                } else {
                    $Retour_Mel = $this->UpdateCmd("UPDATE zoho_factures SET message='ERR envoi mail' WHERE idunique='$idu'");
                }

            }

            if(!$Cpte) echo "<h2>Aucune facture (Semaine 3)</h2>";
            else       {
                echo "<h2>Envoi Email OK</h2>";
                die("Fin Envoi de mail");
            }

        }

    // Semaine 4 = Créer la facture au prorata + périodique
        public function Semaine4() {

            if($_REQUEST['SIMU']) echo "<h1>///-----> Simulation <-----\\\ </h1>";


            $cnx        = $this->CnxDBaseSQL();
            $Token      = $_SESSION['CDEV2']['FACTURES']['TOKEN'];
            $LstEmail   = [];

            // Si date semaine est <> 0000-00-00 et < ou = à la date de traitement et que la relance 4 n a pas ete faites
            $QW    = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && idunique >0 && semaine4<>'0000-00-00' && semaine4 <= '".date('Y-m-d')."' && zoho_prorata is NULL  && zoho_rec is NULL LIMIT 1");
            $Cpte  = $QW->num_rows;

            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {
                $CmdZOHO_P = [];
                $CmdZOHO_R = [];

            //  Prendre la date de paiement/creation de la facture zoho (zoho_datefact) et ajouter 1 mois 1 jour
               $Plus1M1J        = strtotime(date("Y-m-d", strtotime(   $Col['zoho_datefact']    )) . " +1 month + 1 day");
            // Fin du mois du 1 mois + 1 jour ex : création le 2021-04-22, prorata = 23/05/2021 31/05/2021
                $FinduMoisPlus  =  cal_days_in_month(CAL_GREGORIAN, date("m", $Plus1M1J), date("Y", $Plus1M1J)); //

            //
                $jour1REC       = strtotime(date("Y-m-d", strtotime(  date("Y", $Plus1M1J)."-".date("m", $Plus1M1J)."-".$FinduMoisPlus    )) . " +1 days");
                $REC_finmois    =  cal_days_in_month(CAL_GREGORIAN, date("m", $jour1REC), date("Y", $jour1REC)); //

                $idu            = $Col['idunique'];
                $Prorata_Deb    = new DateTime(date("Y-m-d", $Plus1M1J));
                $Prorata_Fin    = new DateTime(date("Y", $Plus1M1J)."-".date("m", $Plus1M1J)."-".$FinduMoisPlus);
                $interval       = $Prorata_Fin->diff($Prorata_Deb);

                $Nbrejrs = $interval->days+1; // ajoute pour avoir jours pleins 27-31 = 5 jrs



                $Cmd         = $this->Cmd($idu);
                $Dtl_Cmd = json_decode($Cmd['detail_cmd'], TRUE);

                $Type_arr = ['i', 't', 'f'];
                foreach ($Type_arr as $Type) {
                    foreach ($Dtl_Cmd['dtl_cmd'][$Type] as $key => $dtl) {

                    // Exclu de FAS et/ou REC le 42 Frais d'expédition
                      if($dtl['idart']<>'42') {

                          $LigneCmd = [];
                          $RefArtZ  = $this->ZohoReference($dtl['idart']);

                          // Période PRORATA
                          $Du_P = date("d/m/Y", $Plus1M1J);
                          $Au_P = $FinduMoisPlus . "/" . date("m", $Plus1M1J) . "/" . date("Y", $Plus1M1J);

                          // Période REC
                          $Du_R = date("d/m/Y", $jour1REC);
                          $Au_R = $REC_finmois . "/" . date("m", $jour1REC) . "/" . date("Y", $jour1REC);


                          if ($dtl['ctg'] == "offre") {
                              $description_P = "Du " . $Du_P . " au " . $Au_P;
                              $description_R = "Du " . $Du_R . " au " . $Au_R;
                          } else {
                              $description_P = "";
                              $description_R = "";
                          }

                          // (REC / Nbre de jour du mois) x total jrs restants
                          $PRORATA = number_format(($dtl['rec'] / $FinduMoisPlus) * $Nbrejrs, 2);
                          $REC     = number_format($dtl['rec'], 2);
                          // Ligne Article ZOHO
                          $CmdZOHO_P[]   = ["item_id" => $RefArtZ['ref_zoho'], "quantity" => 1, "purchase_rate" => $PRORATA, "rate" => $PRORATA, "description" => $description_P];
                          $Total_PRORATA += $PRORATA;
                          // Facture REC
                          $CmdZOHO_R[] = ["item_id" => $RefArtZ['ref_zoho'], "quantity" => 1, "purchase_rate" => $REC, "rate" => $REC, "description" => $description_R];
                          $Total_REC   += $REC;
                      }
                    }
                }

                // Array
                    echo "<h2>PRORATA</h2><pre>"; print_r($CmdZOHO_P); echo "</pre>";
                    echo "<h2>REC</h2><pre>"; print_r($CmdZOHO_R); echo "</pre>";

//  ============> Lance la Facture au PRORATA
                echo "<h1>=>Facture PRORATA HT ($Total_PRORATA) </h1>";

                $notes    = "";
                $JsonFactP = ['JSONString' => '{
                        "customer_id": ' . $Col['zoho_idclient'] . ',
                        "reference_number" : ' . $idu . ',
                        "template_id" : 838708000003769005,
                        "date":' . date('Y-m-d') . ',    
                        "line_items" : ' . json_encode($CmdZOHO_P) . '
                        }'];

                echo "<pre>"; print_r($JsonFactP); echo "</pre>";
            // Pour forcer sinon //
                if($_REQUEST['SIMU']) {
                    $GO_rec = true;
                } else {
                    $Url     = 'https://books.zoho.com/api/v3/invoices?organization_id=' . APIZOHO['IdOrg'];
                    $ParamF  = ['url' => $Url, 'method' => 'POST', 'header' => ["Authorization: $Token", "contentType: application/x-www-form-urlencoded;charset=UTF-8"], 'body' => $JsonFactP];
                    $ResultF = $this->MyCurl_APIZOHO_V2($ParamF);
                    $FactP   = json_decode($ResultF, TRUE);

                    $invoice_id = $FactP['invoice']['invoice_id'];

                    if ($FactP['code'] == '0') {
                        $Retour_factP = $this->UpdateCmd("UPDATE zoho_factures SET zoho_prorata='" . $FactP['invoice']['invoice_number'] . "' WHERE idunique='$idu'");
                        if ($Retour_factP <> 'OK') echo "<h1>/!\ ERREUR </h1>";
                        echo "<pre>"; print_r($Retour_factP); echo "</pre>";
                        $GO_rec = true;
                    } else {
                        $Retour_factP = $this->UpdateCmd("UPDATE zoho_factures SET zoho_prorata='ERR',message='" . $FactP['message'] . "' WHERE idunique='$idu'");

                    }

                // Recupérer le total TTC apres la création de facture et comparer avec STRIPE pour eviter decalage de 1centimes
                    $balanceFactZoho = $FactP['invoice']['balance'];

                   /*
                    echo "<pre style='background: #ccc'>";
                    print_r($FactP);
                    echo "</pre>";*/
                }



//  ============> Lance la facture PERIODIQUE / REC si la Prorata est OK
                echo "<h1>=>Facture REC HT ($Total_REC) </h1>";

                if($GO_rec) {
                    $notes     = "";
                    $JsonFactR = ['JSONString' => '{
                        "customer_id": ' . $Col['zoho_idclient'] . ',
                        "recurrence_name" : ' . $idu . ',
                        "recurrence_frequency":"months",
                        "template_id" : 838708000003769005,
                        "date":' . date('Y-m-d') . ',    
                        "line_items" : ' . json_encode($CmdZOHO_R) . ',
                        "amount":'.number_format($Total_REC,2).',
                        "start_date":'. date("Y-m-d", $jour1REC).',
                        "repeat_every":1,
                        "payment_terms": 0,
                        }'];
                    echo "<pre>"; print_r($JsonFactR); echo "</pre>";

                    if(!$_REQUEST['SIMU']) {
                        $Url     = 'https://books.zoho.com/api/v3/recurringinvoices?organization_id=' . APIZOHO['IdOrg'];
                        $ParamF  = ['url' => $Url, 'method' => 'POST', 'header' => ["Authorization: $Token", "contentType: application/x-www-form-urlencoded;charset=UTF-8"], 'body' => $JsonFactR];
                        $ResultF = $this->MyCurl_APIZOHO_V2($ParamF);
                        $FactR   = json_decode($ResultF, TRUE);

                        if ($FactR['code'] == '0') {
                            $Prochain_rec = date("Y-m-d", $jour1REC);
                            $Retour_factR = $this->UpdateCmd("UPDATE zoho_factures SET zoho_rec='OK',prochain_rec='" . $Prochain_rec . "',zoho_rec='" . number_format($Total_REC, 2) . "' WHERE idunique='$idu'");
                            if ($Retour_factR <> 'OK') echo "<h1>/!\ ERREUR </h1>";
                            echo "<pre>";
                            print_r($Retour_factR);
                            echo "</pre>";

                        } else {
                            $Retour_factP = $this->UpdateCmd("UPDATE zoho_factures SET zoho_rec='ERR',message='" . $FactR['message'] . "' WHERE idunique='$idu'");

                        }
                        /*
                        echo "<pre style='background: #ccc'>";
                        print_r($FactR);
                        echo "</pre>";*/
                    }
                }


// STRIPE
            // Lance le réglement de la facture au PRORATA si pas deja fait !
                if( !$Col['stripe_prorata'] ) {

                    //if ($Total_PRORATA<>$balanceFactZoho ) { die("Attention paiement bloqué ! différence entre le total calculé par le script et celui de ZOHO ");}
                // Infos
                    $Total_PRO_orig   = $Total_PRORATA; // ss tva
                    $Total_PRORATA   += round($Total_PRORATA*20)/100;
                    $amount          = number_format($Total_PRORATA,2);
                    $ret_pi          = $this->STRIPE_Infos($Col['pi']);
                    $param['amount'] = ($amount*100);
                    $param['pi']      = $ret_pi['0'];
                    $param['cus']    = $ret_pi['1'];
                    $param['desc']   = "PRO_".$Col['idunique'];

                    echo "<h1>=>Paiement PRORATA HT : $Total_PRO_orig / TTC : $amount / calclé par ZOHO : $balanceFactZoho </h1>";
                    echo "<pre>"; print_r($param); echo "</pre>";


                // Paiement

                    if($_REQUEST['SIMU']) {
                        echo "<h1>=>STRIPE BLOQUE !</h1>";
                    } else {
                        $ret_fa     = $this->STRIPE_paiement($param);
                        echo "STRIPE <pre style='background: cyan'>"; print_r($ret_fa); echo "</pre>";
                        echo "-".$ret_fa[0]."-".$ret_fa[1]."-";
                    }




                    if($ret_fa[0]=="OK") {
                        echo "<h1>PAID=>OK</h1>";
                        $ret_conf    = $this->STRIPE_Confirm($ret_fa[1]);

                        if($ret_conf[0]=="OK") {
                            $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET stripe_prorata ='" . date('Y-m-d H:i:s') . "' WHERE idunique='" . $Col['idunique'] . "'");


                            $param['id_cli'] = $Col['zoho_idclient'];
                            $param['id_rec'] = $invoice_id;
                            $param['amount'] = $Total_PRORATA;

                            $this->BasculerModePaye($param);

                        // ZOHO Passe la commande en payé ! (customerpayments)
                            /*
                            $JsonPaiement = ['JSONString' =>' {
                        "customer_id": "'.$Col['zoho_idclient'].'",
                        "payment_mode": "creditcard",
                        "amount": '.$Total_PRORATA.',
                        "date": "'.date('Y-m-d').'",
                        "description": "Paiement auto. depuis Commande V2",
                        "invoices": [{ "invoice_id": "'.$invoice_id.'","amount_applied": '.$Total_PRORATA.'}]
                        }'];

                            // Array
                                echo "<pre>"; print_r($JsonPaiement); echo "</pre>";
                                die("STOP 000000");
*/

                        /* OLD
                            $Url            = 'https://books.zoho.com/api/v3/customerpayments?organization_id='.APIZOHO['IdOrg'];
                            $ParamF         = ['url'=>$Url,'method'=>'POST','header'=>["Authorization: $Token","contentType: application/x-www-form-urlencoded;charset=UTF-8"],'body' =>  $JsonPaiement];
                            $ResultF = $this->MyCurl_APIZOHO_V2($ParamF);
                            $Paid    = json_decode($ResultF, TRUE);

                            echo "<pre style='border:1px solid #000'>"; print_r($Paid); echo "</pre>";
                        */

                        // ZOHO Passe la commande en payé !

                        } else {
                            $UPDATE = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Prorata (confirmation) ' WHERE idunique='" . $Col['idunique'] . "'");
                        }
                    } else {
                        // La demande n est pas effectuée
                        $UPDATE       = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Prorata (demande) '.$ret_fa[1] WHERE idunique='" . $Col['idunique'] . "'");
                    }

                }
                die("FIN Semaine 4");
            }

            if(!$Cpte) echo "<h2>Aucune facture (Semaine 4)</h2>";

        }


    //  Periodique (Paiement STRIPE )
//  Pas lancé automatiquement
        public function Periodique() {
/*
 Le 01/10/2021
Verifier que les facture periodique sont bien au bon mois Octobre 2021
Si pas OK alors faire %(m+1) (y)%
 * */

        if(date('d')=="01" ||date('d')=="1") {
       
           if($_REQUEST['SIMU']) echo "<h1>///-----> Simulation <-----\\\ </h1>";


         //   die("INTERRUPTION VOLONTAIRE");
            $Token      = $_SESSION['CDEV2']['FACTURES']['TOKEN'];

            $cnx = $this->CnxDBaseSQL();
            $montant = 0;

             $daterecherchee = date('Y-m')."-01";//
           // $daterecherchee = "2021-07-01";
            echo "<h1>=>".$daterecherchee."</h1>";

            //$Q = "idunique='60dd73a0cc541'";

            $Q ="prochain_rec ='".$daterecherchee."' LIMIT 1";
        // Si prochain_rec
            $QW    = mysqli_query($cnx, "SELECT * FROM zoho_factures WHERE stop IS NULL && idunique >0 &&  $Q");
            $Cpte  = $QW->num_rows;
            while ($Col = mysqli_fetch_array( $QW,MYSQLI_ASSOC )) {

                echo "<h1>=>".$Col['idunique']."</h1>";

                if(!$Col['id_rec']) die("ID de la factPeriod ABSENT !<br>Sur BOOKS, rubrique Factures périodiques, sélectionner le client et récupérer l'id dans l url<br>https://books.zoho.com/app#/recurringinvoices/838708000011959139?filter_by...");


                // Trouve transaction_id à la bonne date pour effectuer le paiement
                $Url     = 'https://books.zoho.com/api/v3/recurringinvoices/'.$Col['id_rec'].'?organization_id=' . APIZOHO['IdOrg'];
                $ParamF  = ['url' => $Url, 'method' => 'GET', 'header' => ["Authorization: $Token", "contentType: application/x-www-form-urlencoded;charset=UTF-8"], 'body' => $JsonFactR];
                $ResultF = $this->MyCurl_APIZOHO_V2($ParamF);
                $FactP   = json_decode($ResultF, TRUE);
                if($FactP['code']<>'0') die("Impossible de trouver le détail !");

                foreach($FactP['recurring_invoice']['comments'] as $NomChamp=>$Obj) {
                    // Array
                    echo "<pre>"; print_r($Obj); echo "</pre>";

                    if($Obj['date']=="$daterecherchee") $ID_Periodique = $Obj['transaction_id'];
                }
                //echo "<pre>"; print_r($FactP); echo "</pre>";
                echo "<h1>=>".$ID_Periodique."</h1>";
                if(!$ID_Periodique) die("Impossible de trouver transaction_id");

            // Lance le paiement
                if($_REQUEST['SIMU']) {
                    echo "<h1>///-----> Simulation <-----\\\ </h1>";
                } else {
                    $STOP = false; // true = bloque le paiement

                    if (!$STOP && $Col['pi']) {




                // Infos
                    $montant         = $Col['zoho_rec'];
                    $montant        += round($montant*20)/100;
                    $ret_pi          = $this->STRIPE_Infos($Col['pi']);
                    $param['amount'] = ($montant*100);
                    $param['pi']     = $ret_pi['0'];
                    $param['cus']    = $ret_pi['1'];
                    $param['desc']   = "REC_".$Col['idunique'];

                    echo "<pre style='border:1px solid #000'>"; print_r($param); echo "</pre>";


                // Paiement
                    $ret_fa     = $this->STRIPE_paiement($param);
                    echo "STRIPE <pre style='background: cyan'>"; print_r($ret_fa); echo "</pre>";
                    echo "-".$ret_fa[0]."-".$ret_fa[1]."-";

                    /*
                    if($ret_fa[0]=="OK") {
                        $ret_conf    = $this->STRIPE_Confirm($ret_fa[1]);
                        echo "<pre>"; print_r($ret_conf); echo "</pre>";
                    }
                    */
                //  STOP ici pour juste realiser le paiement
                //  die("STOP - Mais il faut changer la valeur prochain_rec avec le mois prochain");


                    if($ret_fa[0]=="OK") {
                    // Confirme le paiement
                        $ret_conf    = $this->STRIPE_Confirm($ret_fa[1]);
                        if($ret_conf[0]=="OK") {
                            $MyDate       = strtotime(date("Y-m-d", strtotime($Col['prochain_rec'])) . " +1 month");
                            $MoisProchain = date("Y-m-d", $MyDate);
                            $UPDATE       = mysqli_query($cnx, "UPDATE zoho_factures SET prochain_rec='" . $MoisProchain . "' WHERE idunique='" . $Col['idunique'] . "'");
                        // Passe la facture périodique en PAYE
                            //$param['id_rec'] = $Col['id_rec']; // ID de la factPeriod, il faut ouvir cliquer sur le bouton et regarder l URL et indique l id dasn la table

                        // Uniquement poru un paiement direct
                            $param['id_cli'] = $Col['zoho_idclient'];
                            $param['id_rec'] = $ID_Periodique;
                            $param['amount'] = number_format($montant,2);
                            echo "<pre>"; print_r($param); echo "</pre>";

                            $this->BasculerModePaye($param);


                        } else {
                        // Le paiemenr n est pas confirmé
                            $UPDATE       = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Périodique (confirmation) ' WHERE idunique='" . $Col['idunique'] . "'");
                        }
                    } else {
                        // La demande n est pas effectuée
                       $UPDATE       = mysqli_query($cnx, "UPDATE zoho_factures SET message='STRIPE / ERR Paiement Périodique (demande) ' WHERE idunique='" . $Col['idunique'] . "'");

                    }

                }
                }

            }

            if(!$Cpte) echo "<h2>Aucune facture (périodique)</h2>";
        } else {
            echo "<h2>Revenez le 1er du mois</h2>";
        }


        }


        public function BasculerModePaye( $param ){
            echo "<h1>=>Bascule la facture en PAYE </h1>";

            $Token =  $_SESSION['CDEV2']['FACTURES']['TOKEN'];
            $JsonPaiement = ['JSONString' =>' {
                        "customer_id": "'.$param['id_cli'].'",
                        "payment_mode": "creditcard",
                        "amount": "'.$param['amount'].'",
                        "date": "'.date('Y-m-d').'",
                        "description": "Paiement auto. depuis Commande V2",
                        "invoices": [{ "invoice_id": "'.$param['id_rec'].'","amount_applied": "'.$param['amount'].'"}]
                        }'];

            $Url            = 'https://books.zoho.com/api/v3/customerpayments?organization_id='.APIZOHO['IdOrg'];
            $ParamF         = ['url'=>$Url,'method'=>'POST','header'=>["Authorization: $Token","contentType: application/x-www-form-urlencoded;charset=UTF-8"],'body' =>  $JsonPaiement];
            $ResultF = $this->MyCurl_APIZOHO_V2($ParamF);
            $Paid    = json_decode($ResultF, TRUE);
            // Array
                echo "<pre>"; print_r($ParamF); echo "</pre>";
                echo "<pre>"; print_r($Paid); echo "</pre>";
        }


    // Retourne les ID nécessaire à nouveau reglement à parti du PI
        public function STRIPE_Infos( $pi ) {
        // Liste la commande
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => 'https://api.stripe.com/v1/payment_intents/'.$pi,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'GET',
                CURLOPT_HTTPHEADER => array(
                    'Authorization: Basic '.$_SESSION['AIRCMDV2']['CURL']['STRIPE']['Authorization']
                ),
            ));

            $response = curl_exec($curl);
            $response = json_decode($response,TRUE);
            curl_close($curl);

        // Récupère
            $PI  =  $response['charges']['data']['0']['payment_method'];
            $CUS =  $response['charges']['data']['0']['customer'];

            return [$PI,$CUS];
        }

    // Cree le Paiement sur STRIPE
        public function STRIPE_paiement($param) {
            $UrlPost = "payment_method_types%5B%5D=card&amount=".$param['amount']."&currency=eur&customer=".$param['cus']."&payment_method=".$param['pi']."&description=".$param['desc'];

            // Demande le paiement
            $curl = curl_init();

            curl_setopt_array($curl, array(
                CURLOPT_URL => 'https://api.stripe.com/v1/payment_intents',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => $UrlPost,
                CURLOPT_HTTPHEADER => array(
                    'Authorization: Basic '.$_SESSION['AIRCMDV2']['CURL']['STRIPE']['Authorization'],
                    'Content-Type: application/x-www-form-urlencoded'
                ),
            ));

            $response2 = curl_exec($curl);
            $response2 = json_decode($response2,TRUE);
            // Array
                echo "<pre>"; print_r($response2); echo "</pre>";
            curl_close($curl);

        // Récupère
            if  ($response2['error']) return['KO', $response2['error']['code']];
            else                      return['OK', $response2['id']];


        }

    // Confirme une demand ede paiement
        public function STRIPE_Confirm($Confirm) {

            $curl = curl_init();


            // pm_card_visa
            curl_setopt_array($curl, array(
                CURLOPT_URL => 'https://api.stripe.com/v1/payment_intents/'.$Confirm.'/confirm',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',

                CURLOPT_HTTPHEADER => array(
                    'Authorization: Basic '.$_SESSION['AIRCMDV2']['CURL']['STRIPE']['Authorization'],
                    'Content-Type: application/x-www-form-urlencoded'
                ),
            ));

            $response3 = curl_exec($curl);
            $response3 = json_decode($response3,TRUE);
            curl_close($curl);
// Array
    echo "<pre>"; print_r($response3); echo "</pre>";
        // Récupère
            if  ($response3['error']) return['KO', $response3['error']['code']];
            else                      return['OK', $response3['id']];


        }


    // PHPMailer
        public function MySendMailPHPMailer($Array) {

            require_once './lib/phpmailer/src/PHPMailer.php';
            require_once './lib/phpmailer/src/SMTP.php';
            require_once './lib/phpmailer/src/Exception.php';

            $mail = new PHPMailer\PHPMailer\PHPMailer();

            $mail->isSMTP();
            $mail->Host       = "in-v3.mailjet.com";
            $mail->SMTPAuth   = true;
            $mail->Username   = "91b3f6b2dd7870d31a16fd0611f5b35a";
            $mail->Password   = "c328d8d6bea5c27a4b2f72df0fe84676";
            $mail->SMTPSecure = "tls";
            $mail->Port       = 587;

            if($Array['form']) $mail->From     = $Array['form'];
            else               $mail->From     = "service-client@airmob.net";
            $mail->FromName = "AIRMOB";

            //  Envoi mel client
            $mail->addAddress($Array['to']);
            $mail->addBCC('luc2@bvcs.fr');

        //
            if($Array['fichier_html']) $body = file_get_contents("./lib/".$Array['fichier_html']);
            if($Array['body']) $body = $Array['body'];


            $mail->isHTML(true);
            $body          = $body;
            $mail->Subject  = utf8_decode($Array['subject']);
            $mail->Body    = utf8_decode($body);
            $mail->AltBody = utf8_decode($body);


            if(!$mail->send())            {
                $success ="";
            }
            else
            {
                //echo "Message has been sent successfully";
                $success ="OK";
            }
            if(!$success) return "KO"; else return "OK";

        }



    }
?>