/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Models.CommandeClt;

import Controllers.Dialog.ShowDialog;
import Controllers.Traitement.Adaptateur;
import Models.Produit.ListeProduit;
import Controllers.Traitement.ParametreSystem;
import Controllers.Traitement.contro;
import Models.Client.ClientDB;
import Models.Client.ClientEntrepriseDB;
import Models.Client.ClientPassagerDB;
import Models.Produit.Produit;
import Models.User.User;
import Models.connexion;
import java.sql.ResultSet;
import java.sql.SQLException;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

/**
 * @author PC-Maher Ben Tili
 */
public class CommandeCltDB {
   
    connexion cnx = new connexion();
    contro clt = new contro();
    
    public CommandeClt AddCommandeClt(CommandeClt commandeclt){
        
        String totalhorstaxnet =commandeclt.getTotalHorsTaxNet().replace(",", ".");
        String totaltva = commandeclt.getTotalTVA().replace(",", ".");
        String netapayer = commandeclt.getNetAPayer().replace(",", ".");
        String TypeReglement = commandeclt.getTypeRegement();
        String remise = commandeclt.getRemise().replace(",", ".");
        String DateCommande = "CURTIME()";
        
        if(commandeclt.getDate() != null){
            DateCommande = "'"+commandeclt.getDate()+"'";
        }
        
        
        
        String sql = "";
        if(commandeclt.getTypeClient()==0){
            String codeclientPersonne = commandeclt.CltPersonne.getCodeclient().toString();
            sql = "INSERT INTO `commandeclt` (`date_commande`, type_reglement, `typeclt`, `codeclient`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `idprofile_editeur`, iddevis, `local_nom`) VALUES ( "+DateCommande+", '"+TypeReglement+"', '0', '"+codeclientPersonne+"', '"+totalhorstaxnet+"', '"+totaltva+"', '"+remise+"', '"+ParametreSystem.Timbre+"', '"+netapayer+"', '"+User.idprofile+"', "+commandeclt.getCodeDevis()+", '"+ParametreSystem.NomLocalPC+"')";
        }
        if(commandeclt.getTypeClient()==1){
            String codeclientEntreprise = commandeclt.CltEntreprise.getCode().toString();
            sql ="INSERT INTO `commandeclt` (`date_commande`, type_reglement, `typeclt`, `idcliententreprise`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `idprofile_editeur`, iddevis, `local_nom`) VALUES ( "+DateCommande+", '"+TypeReglement+"', '1', '"+codeclientEntreprise+"', '"+totalhorstaxnet+"', '"+totaltva+"', '"+remise+"', '"+ParametreSystem.Timbre+"', '"+netapayer+"', '"+User.idprofile+"', "+commandeclt.getCodeDevis()+", '"+ParametreSystem.NomLocalPC+"')";
        }
        if(commandeclt.getTypeClient()==2){
            //insertion de passager
            ClientPassagerDB CltPassagerDB = new ClientPassagerDB();
            commandeclt.CltPassager = CltPassagerDB.addPassager(commandeclt.getCltPassager());
            sql = "INSERT INTO `commandeclt` (`date_commande`, type_reglement, `typeclt`, `idcltpassageur`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `idprofile_editeur`, iddevis, `local_nom`) VALUES ( "+DateCommande+", '"+TypeReglement+"', '2', '"+commandeclt.CltPassager.getCodeclient()+"', '"+totalhorstaxnet+"', '"+totaltva+"', '"+remise+"', '"+ParametreSystem.Timbre+"', '"+netapayer+"', '"+User.idprofile+"', "+commandeclt.getCodeDevis()+", '"+ParametreSystem.NomLocalPC+"')";
            
        }
        String codecommandeclt = cnx.InsertGetLastId(sql);
        commandeclt.setCodecommandeclt(codecommandeclt);
        
        String req ;
        String PrixHT ;
        String Remise ;
        String TotalHT ;
        String TVA ;
        String TotalTTC ;
        
      for(ListeProduit listeprod : commandeclt.getListeproduit()){
          PrixHT = listeprod.getPrixHT().replace(",",".");
          Remise= listeprod.getRemise().replace("%","").replace(",",".");
          TotalHT= listeprod.getTotalHT().replace(",",".");
          TVA=listeprod.getTVA().replace("%","").replace(",",".");
          TotalTTC= listeprod.getTotalTTC().replace(",","."); 
          
          req = "INSERT INTO liste_produit_commandeclt (`commande_idcommande`, `produit_reference`, `designation_produit`, `quantite`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`, `local_nom`) VALUES ('"+codecommandeclt+"', '"+listeprod.getReference()+"', \""+listeprod.getDesignation()+"\", "+listeprod.getQuantite()+", "+PrixHT+", "+Remise+", "+TotalHT+", "+TVA+", "+TotalTTC+", '"+ParametreSystem.NomLocalPC+"');";
          
          cnx.insertion(req);
      }
      return commandeclt ;
    }
    
    public CommandeClt getCommandeClt(String codecommande){
        CommandeClt commandeclt = new CommandeClt() ;
        String req = "SELECT * FROM commandeclt where (idcommande = "+codecommande+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"')  ;";
        if(cnx.ouverture()){
            try{
               ResultSet resultat = cnx.excutionquery(req);
                //on place le curseur sur le dernier tuple
                resultat.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultat.getRow();
                if(nombreLignes>0){                
                    commandeclt.setCodecommandeclt(resultat.getString("idcommande"));
                    commandeclt.setTypeRegement(resultat.getString("type_reglement"));
                    commandeclt.setDate(resultat.getString("date_commande"));
                    commandeclt.setNetAPayer(resultat.getString("net_a_payer"));
                    commandeclt.setTotalHorsTaxNet(resultat.getString("total_h_t_net"));
                    commandeclt.setTotalTVA(resultat.getString("total_tva"));
                    commandeclt.setTimbre(resultat.getString("timbre_loi"));
                    commandeclt.setCodeUser(resultat.getInt("idprofile_editeur"));
                    commandeclt.setTypeClient(resultat.getInt("typeclt"));
                    commandeclt.setCodeDevis(resultat.getString("iddevis"));
                    commandeclt.setRemise(resultat.getString("remise"));
                    
                    if(resultat.getString("id_bon_livraisonclt") != null){
                        if(resultat.getString("id_bon_livraisonclt").length()>0){
                            commandeclt.setCodeBonLivraison(resultat.getString("id_bon_livraisonclt"));
                        }
                    }
                    
                    if(resultat.getString("id_factureclt") != null){
                        if(resultat.getString("id_factureclt").length()>0){
                            commandeclt.setCodeFacture(resultat.getString("id_factureclt"));
                        }
                    }
                    
                    
                    
                    if(commandeclt.getTypeClient()==0){
                        ClientDB PersonneDB = new ClientDB();
                        commandeclt.setCltPersonne(PersonneDB.getClient(resultat.getString("codeclient")));
                    }
                    if(commandeclt.getTypeClient()==1){
                        ClientEntrepriseDB ClientEtreDB= new ClientEntrepriseDB();
                        commandeclt.setCltEntreprise(ClientEtreDB.GetClientEtr(resultat.getString("idcliententreprise")));
                    }
                    
                    if(commandeclt.getTypeClient()==2){//Passager
                        ClientPassagerDB CltPassagerDB= new ClientPassagerDB();
                        commandeclt.setCltPassager(CltPassagerDB.getClient(resultat.getString("idcltpassageur")));
                    }
                    
                    
                    cnx.ouverture();
                    String reqprod = "SELECT * FROM liste_produit_commandeclt where (commande_idcommande = "+codecommande+")   AND (local_nom = '"+ParametreSystem.NomLocalPC+"');";
                    ResultSet resulist = cnx.excutionquery(reqprod);
                    //on repace le curseur avant la première ligne
                    resulist.beforeFirst();
                     ObservableList<ListeProduit> dataProdDev=FXCollections.observableArrayList();
                    while ( resulist.next() ) {          
                        String reference = resulist.getString("produit_reference");
                        String designation = resulist.getString("designation_produit");
                        String quantite=resulist.getString("quantite");
                        String PrixHT =resulist.getString("p_u_h_t");
                        String Remise =resulist.getString("remise");
                        String TotalHT =resulist.getString("p_u_h_t_net");
                        String TVA =resulist.getString("tva");
                        String TotalTTC =resulist.getString("montant");
                        dataProdDev.add(new ListeProduit(reference, designation, quantite, PrixHT, Remise, TotalHT, TVA, TotalTTC));
                    }
                    commandeclt.setListeproduit(dataProdDev);
                    }
            }
            catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
            }
        }
        return commandeclt ;
    }
    
    
    public boolean UpdateCommandeCltSetIdBonLivraison(String codecommande, String id_bon_livraion){
        String Query = "UPDATE `commandeclt` SET `id_bon_livraisonclt`='"+id_bon_livraion+"' WHERE (`idcommande`='"+codecommande+"') AND (`local_nom`='"+ParametreSystem.NomLocalPC+"');";
        boolean Result = false;
        if(cnx.ouverture()){
            try{
               int nbr = cnx.executionupdate(Query);
               //System.out.println("nbr_update_commande bon livraison "+nbr);
               if(nbr >= 1){
                   Result =  true;
               }
            }catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
            }
        }
        return Result;
    }
    
    
    public boolean UpdateCommandeCltSetIdFacture(String codecommande, String id_facture)
    {
        boolean Result = false;
        contro clt = new contro();
        
        if( clt.isStringNull(codecommande) || clt.isStringNull(id_facture) ){
            return Result;
        }
        
        String Query = "UPDATE `commandeclt` SET `id_factureclt`='"+id_facture+"' WHERE (`idcommande`='"+codecommande+"') AND (`local_nom`='"+ParametreSystem.NomLocalPC+"');";
        
        if(cnx.ouverture()){
            try{
               int nbr = cnx.executionupdate(Query);
               //System.out.println("nbr_update_commande bon livraison "+nbr);
               if(nbr >= 1){
                   Result =  true;
               }
            }catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
            }
        }
        //System.out.println(Query);
        return Result;
    }
    
        /********************************** Search *******************************/
    
    public ObservableList<CommandeCltListe>  SearchCommande(Integer debut, Integer nbr, String TypeRegement, String CodeCommande, String CodeClient, String NameClient, String CodeDevis, String DateCreation)
    {
        ObservableList<CommandeCltListe> data =FXCollections.observableArrayList();
        
        String Where = "";
        
        if(TypeRegement.equals("0") || TypeRegement.equals("1")){
            Where += " (comm.type_reglement = \""+TypeRegement+"\") AND ";
        }
        
        if(!clt.isStringNull(CodeCommande)){
            Where += " (comm.idcommande LIKE \"%"+Adaptateur.addSlashes(CodeCommande)+"%\") AND ";
        }
        
        if(!clt.isStringNull(CodeDevis)){
            Where += " (comm.iddevis LIKE \"%"+Adaptateur.addSlashes(CodeDevis)+"%\") AND ";
        }
        
                 
        if(!clt.isStringNull(CodeClient)){
            Where += " ((comm.idcliententreprise LIKE '%"+CodeClient+"%') OR (comm.codeclient LIKE '%"+CodeClient+"%') OR (comm.idcltpassageur LIKE '%"+CodeClient+"%')) AND ";
        }
        
        if(!clt.isStringNull(DateCreation)){
            Where += " (DATE(comm.date_commande) = \""+DateCreation+"\") AND ";
        }
        
        String LeftJoin = "";
        if(!clt.isStringNull(NameClient)){
            LeftJoin =  " LEFT JOIN client C ON (C.codeclient = comm.codeclient) AND (comm.typeclt = 0) "
                        +" LEFT JOIN cltentreprise E ON (E.idcliententreprise = comm.idcliententreprise ) AND (comm.typeclt = 1) "
                        +" LEFT JOIN cltpassageur P ON (P.idcltpassageur = comm.idcltpassageur) AND (comm.typeclt = 2) ";
            NameClient = Adaptateur.addSlashes(NameClient);
            Where += "( ((C.nom LIKE \"%"+NameClient+"%\") OR (C.prenom LIKE \"%"+NameClient+"%\") OR  (C.nomcomplet LIKE \"%"+NameClient+"%\"))  OR  (E.nomentrepise LIKE \"%"+NameClient+"%\") OR  (P.nom LIKE \"%"+NameClient+"%\") ) AND";
        }
        
        String req="SELECT comm.idcommande, comm.id_bon_livraisonclt, DATE_FORMAT(comm.date_commande, '%d/%m/%Y') as date_commande , comm.type_reglement, comm.codeclient, comm.typeclt, comm.codeclient, comm.idcliententreprise, comm.idcltpassageur, comm.net_a_payer, comm.iddevis, factclt.idfactureclt  " +
                    "FROM commandeclt comm " +
                    "LEFT JOIN factureclt factclt ON (comm.idcommande = factclt.idcommande_commandeclt)  " +
                    LeftJoin +
                    "WHERE  " + Where +
                    " (comm.local_nom = '"+ParametreSystem.NomLocalPC+"') "+
                    "ORDER BY comm.date_commande DESC "+
                    "LIMIT "+debut+" , "+nbr+ " ;" ;
        
        if(cnx.ouverture()){
            try{
               /* Exécution d'une requête de lecture */
                ResultSet resultat = cnx.excutionquery(req);
                //on place le curseur sur le dernier tuple
                resultat.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultat.getRow();
                if(nombreLignes>0){
                    //on repace le curseur avant la première ligne
                    resultat.beforeFirst();
                    while ( resultat.next() ) {
                        String code_commande = resultat.getString("idcommande");
                        
                        String type_client = "";
                        String code_client = "";
                        if(resultat.getString("typeclt").equals("0")){
                            type_client ="Exist Client";
                            code_client = resultat.getString("codeclient");
                        }else if(resultat.getString("typeclt").equals("1")){
                            type_client ="Entreprise";
                            code_client = resultat.getString("idcliententreprise");
                        }else if(resultat.getString("typeclt").equals("2")){
                            type_client ="Passager";
                            code_client = resultat.getString("idcltpassageur");
                        }
                        
                        String total_commande =resultat.getString("net_a_payer");
                        
                        String mode_reglement = ""; //Mode Paiement
                        if(resultat.getString("type_reglement").equals("0")){
                            mode_reglement = "Comptant";
                        }else if(resultat.getString("type_reglement").equals("1")){
                            mode_reglement = "Facilité";
                        }
                       
                        String date_creation =resultat.getString("date_commande");
                        
                        String code_devis =resultat.getString("iddevis");
                        
                        String code_facture =resultat.getString("idfactureclt");
                        String id_bon_livraison =resultat.getString("id_bon_livraisonclt");
                        data.add(new CommandeCltListe(code_commande, type_client, code_client, mode_reglement, total_commande, date_creation, code_devis, code_facture, id_bon_livraison));
                    }
                }
            }
            catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
                System.out.println(req);
            }
        }
        else{
            ShowDialog SD = new ShowDialog();
            SD.ShowAletDialog();
        }
       return data ;
        
    }
    
    
    public Integer nbrSearchCommande(String TypeRegement, String CodeCommande, String CodeClient, String NameClient, String CodeDevis, String DateCreation)
    {
        String Where = "";
        
        if(TypeRegement.equals("0") || TypeRegement.equals("1")){
            Where += " (comm.type_reglement = \""+TypeRegement+"\") AND ";
        }
        
        if(!clt.isStringNull(CodeCommande)){
            Where += " (comm.idcommande LIKE \"%"+Adaptateur.addSlashes(CodeCommande)+"%\") AND ";
        }
        
        if(!clt.isStringNull(CodeClient)){
            Where += " ((comm.idcliententreprise LIKE '%"+CodeClient+"%') OR (comm.codeclient LIKE '%"+CodeClient+"%') OR (comm.idcltpassageur LIKE '%"+CodeClient+"%')) AND ";
        }
        
        if(!clt.isStringNull(CodeDevis)){
            Where += " (comm.iddevis LIKE \"%"+Adaptateur.addSlashes(CodeDevis)+"%\") AND ";
        }
        
        if(!clt.isStringNull(DateCreation)){
            Where += " (DATE(comm.date_commande) = \""+DateCreation+"\") AND ";
        }
        
        String LeftJoin = "";
        if(!clt.isStringNull(NameClient)){
            LeftJoin =  " LEFT JOIN client C ON (C.codeclient = comm.codeclient) AND (comm.typeclt = 0) "
                        +" LEFT JOIN cltentreprise E ON (E.idcliententreprise = comm.idcliententreprise ) AND (comm.typeclt = 1) "
                        +" LEFT JOIN cltpassageur P ON (P.idcltpassageur = comm.idcltpassageur) AND (comm.typeclt = 2) ";
            NameClient = Adaptateur.addSlashes(NameClient);
            Where += "( ((C.nom LIKE \"%"+NameClient+"%\") OR (C.prenom LIKE \"%"+NameClient+"%\") OR  (C.nomcomplet LIKE \"%"+NameClient+"%\"))  OR  (E.nomentrepise LIKE \"%"+NameClient+"%\") OR  (P.nom LIKE \"%"+NameClient+"%\") ) AND";
        }
        
        String req="SELECT COUNT(comm.idcommande) " +
                    "FROM commandeclt comm " +
                    " LEFT join factureclt factclt ON comm.idcommande = factclt.idcommande_commandeclt  " +
                    LeftJoin +
                    "WHERE  " + Where +
                    " (comm.local_nom = '"+ParametreSystem.NomLocalPC+"') ;";
        
        int sommme =0;
        if(cnx.ouverture()){
            try{
               /* Exécution d'une requête de lecture */
                ResultSet resultat = cnx.excutionquery(req);
                // get the number of rows from the result set
                resultat.next();
                sommme = resultat.getInt(1);
            }
            catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
                System.out.println(req);
            }
        }
       return sommme ;
    }
    
    /********************************** Initial *******************************/
    public ObservableList<CommandeCltListe> getdata(String  tab,String  mot, Integer debut, Integer nbr){
        ObservableList<CommandeCltListe> data=FXCollections.observableArrayList();
        
        String req="SELECT comm.idcommande, comm.id_bon_livraisonclt, DATE_FORMAT(comm.date_commande, '%d/%m/%Y') as date_commande , comm.type_reglement, comm.codeclient, comm.typeclt, comm.codeclient, comm.idcliententreprise, comm.idcltpassageur, comm.net_a_payer, comm.iddevis, factclt.idfactureclt FROM commandeclt comm LEFT join factureclt factclt ON comm.idcommande = factclt.idcommande_commandeclt  WHERE (comm."+tab+" LIKE '%"+mot+"%')   AND (comm.local_nom = '"+ParametreSystem.NomLocalPC+"')  ORDER BY comm.date_commande DESC LIMIT "+debut+" , "+nbr+" ;";
        
        if(tab.equals("CodeClient")){
            req="SELECT comm.idcommande, DATE_FORMAT(comm.date_commande, '%d/%m/%Y') as date_commande , comm.type_reglement, comm.codeclient, comm.typeclt, comm.codeclient, comm.idcliententreprise, comm.idcltpassageur, comm.net_a_payer, comm.iddevis, comm.id_bon_livraisonclt, factclt.idfactureclt FROM commandeclt comm LEFT join factureclt factclt ON comm.idcommande = factclt.idcommande_commandeclt WHERE  ((comm.idcliententreprise LIKE '%"+mot+"%') OR (comm.codeclient LIKE '%"+mot+"%') OR (comm.idcltpassageur LIKE '%"+mot+"%')) AND (comm.local_nom = '"+ParametreSystem.NomLocalPC+"') ORDER BY comm.date_commande DESC LIMIT "+debut+" , "+nbr+" ;";
        }
        
        if(cnx.ouverture()){
            try{
               // Exécution d'une requête de lecture 
                ResultSet resultat = cnx.excutionquery(req);
                //on place le curseur sur le dernier tuple
                resultat.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultat.getRow();
                if(nombreLignes>0){
                    //on repace le curseur avant la première ligne
                    resultat.beforeFirst();
                    while ( resultat.next() ) {
                        
                        String code_commande = resultat.getString("idcommande");
                        
                        String type_client = "";
                        String code_client = "";
                        if(resultat.getString("typeclt").equals("0")){
                            type_client ="Exist Client";
                            code_client = resultat.getString("codeclient");
                        }else if(resultat.getString("typeclt").equals("1")){
                            type_client ="Entreprise";
                            code_client = resultat.getString("idcliententreprise");
                        }else if(resultat.getString("typeclt").equals("2")){
                            type_client ="Passager";
                            code_client = resultat.getString("idcltpassageur");
                        }
                        
                        String total_commande =resultat.getString("net_a_payer");
                        
                        String mode_reglement = ""; //Mode Paiement
                        if(resultat.getString("type_reglement").equals("0")){
                            mode_reglement = "Comptant";
                        }else if(resultat.getString("type_reglement").equals("1")){
                            mode_reglement = "Facilité";
                        }
                       
                        String date_creation =resultat.getString("date_commande");
                        
                        String code_devis =resultat.getString("iddevis");
                        
                        String code_facture =resultat.getString("idfactureclt");
                        String id_bon_livraison =resultat.getString("id_bon_livraisonclt");
                        data.add(new CommandeCltListe(code_commande, type_client, code_client, mode_reglement, total_commande, date_creation, code_devis, code_facture, id_bon_livraison));
                    }
                }
            }
            catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
                System.out.println(req);
            }
        }
       return data ;
    }
    
    public String nbrCommandeCltGestion(String  tab, String mot){
        
        String req = "SELECT count(*) FROM commandeclt WHERE (`"+tab+"` LIKE '%"+mot+"%') AND (local_nom = '"+ParametreSystem.NomLocalPC+"')  ;";
        
        if(tab.equals("CodeClient")){
            req = "SELECT count(*) FROM commandeclt WHERE ((idcliententreprise LIKE '%"+mot+"%') OR (codeclient LIKE '%"+mot+"%') OR (idcltpassageur LIKE '%"+mot+"%'))  AND (local_nom = '"+ParametreSystem.NomLocalPC+"');";
        }
        int sommme =0;
        if(cnx.ouverture()){
            try{
               /* Exécution d'une requête de lecture */
                ResultSet resultat = cnx.excutionquery(req);
                resultat.next();    // get the number of rows from the result set
                sommme= resultat.getInt(1);
            }
            catch(SQLException ex){
                System.err.println(req+" \n Erreur SQL ! \n"+ex.getMessage());
            }
        }
       return  Integer.toString(sommme) ;
    }
    
    
    public ObservableList<CommandeCltListe> SearchCommandeCltNotBonLivrison(Integer debut, Integer nbr, String CodeCommande, String DateCreation, String TypeRegement)
    {
        ObservableList<CommandeCltListe> data=FXCollections.observableArrayList();
        
        String Where = "";
        
        if(!clt.isStringNull(CodeCommande)){
            Where += " (comm.idcommande = \""+Adaptateur.addSlashes(CodeCommande)+"\") AND ";
        }
        
        if(!clt.isStringNull(DateCreation)){
            Where += " (comm.date_commande = \""+DateCreation+"\") AND ";
        }
        
        if(!clt.isStringNull(TypeRegement)){
            Where += " (comm.type_reglement = \""+TypeRegement+"\") AND ";
        }
        
        if(!Where.equals("")){
            Where = " WHERE (id_bon_livraisonclt IS NULL) AND (id_factureclt IS NULL) AND (comm.local_nom = '"+ParametreSystem.NomLocalPC+"') AND "+ Where.substring(0, Where.length() - 4);
        }else{
            Where = " WHERE (id_bon_livraisonclt IS NULL) AND (id_factureclt IS NULL) AND (comm.local_nom = '"+ParametreSystem.NomLocalPC+"')  ";
        }
        
        String req="SELECT comm.idcommande, DATE_FORMAT(comm.date_commande, '%d/%m/%Y') as date_commande , comm.type_reglement, comm.codeclient, comm.typeclt, comm.codeclient, comm.idcliententreprise, comm.idcltpassageur, comm.net_a_payer, comm.iddevis "
                + " FROM commandeclt comm "
                + Where
                + " ORDER BY comm.date_commande DESC "
                + " LIMIT "+debut+" , "+nbr+";";
        
        
        
        if(cnx.ouverture()){
            try{
               // Exécution d'une requête de lecture 
                ResultSet resultat = cnx.excutionquery(req);
                //on place le curseur sur le dernier tuple
                resultat.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultat.getRow();
                if(nombreLignes>0){
                    //on repace le curseur avant la première ligne
                    resultat.beforeFirst();
                    while ( resultat.next() ) {
                        
                        String code_commande = resultat.getString("idcommande");
                        
                        String type_client = "";
                        String code_client = "";
                        if(resultat.getString("typeclt").equals("0")){
                            type_client ="Exist Client";
                            code_client = resultat.getString("codeclient");
                        }else if(resultat.getString("typeclt").equals("1")){
                            type_client ="Entreprise";
                            code_client = resultat.getString("idcliententreprise");
                        }else if(resultat.getString("typeclt").equals("2")){
                            type_client ="Passager";
                            code_client = resultat.getString("idcltpassageur");
                        }
                        
                        String total_commande =resultat.getString("net_a_payer");
                        
                        String mode_reglement = ""; //Mode Paiement
                        if(resultat.getString("type_reglement").equals("0")){
                            mode_reglement = "Comptant";
                        }else if(resultat.getString("type_reglement").equals("1")){
                            mode_reglement = "Facilité";
                        }
                       
                        String date_creation =resultat.getString("date_commande");
                        
                        String code_devis =resultat.getString("iddevis");
                        
                        data.add(new CommandeCltListe(code_commande, type_client, code_client, mode_reglement, total_commande, date_creation, code_devis, "", ""));
                    }
                }
            }
            catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
                System.out.println(req);
            }
        }
       return data ;
    }
    
    public Integer nbrCommandeCltNotBonLivrison(String CodeCommande, String DateCreation, String TypeRegement){
        
        String Where = "";
        
        if(!clt.isStringNull(CodeCommande)){
            Where += " (comm.idcommande = \""+Adaptateur.addSlashes(CodeCommande)+"\") AND ";
        }
        
        if(!clt.isStringNull(DateCreation)){
            Where += " (comm.date_commande = \""+DateCreation+"\") AND ";
        }
        
        if(!clt.isStringNull(TypeRegement)){
            Where += " (comm.type_reglement = \""+TypeRegement+"\") AND ";
        }
        
        if(!Where.equals("")){
            Where = " WHERE (id_bon_livraisonclt IS NULL) AND (id_factureclt IS NULL) AND (comm.local_nom = '"+ParametreSystem.NomLocalPC+"') AND "+ Where.substring(0, Where.length() - 4);
        }else{
            Where = " WHERE (id_bon_livraisonclt IS NULL) AND (id_factureclt IS NULL) AND (comm.local_nom = '"+ParametreSystem.NomLocalPC+"')  ";
        }
        
        String req = "SELECT COUNT(comm.idcommande) FROM commandeclt comm "+ Where+ " ; ";
        
        int sommme =0;
        if(cnx.ouverture()){
            try{
               /* Exécution d'une requête de lecture */
                ResultSet resultat = cnx.excutionquery(req);
                resultat.next();    // get the number of rows from the result set
                sommme= resultat.getInt(1);
            }
            catch(SQLException ex){
                System.err.println(req+" \n Erreur SQL ! \n"+ex.getMessage());
            }
        }
       return sommme ;
    }
    
}
