package Models.Reglement;

import Controllers.Traitement.contro;
import Models.FactureFrs.FactureFrs;
import Models.FactureFrs.FactureFrsDB;
import Models.Fournisseur.Fournisseur;
import Models.Fournisseur.FournisseurDB;
import Models.User.Profile;
import Models.User.ProfileDB;
import Models.User.User;
import Controllers.Dialog.ShowDialog;
import Controllers.Traitement.ParametreSystem;
import org.apache.log4j.Logger;
import Models.H2JDBC;
import java.sql.ResultSet;
import java.sql.SQLException;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

/**
 * @author Maher Ben Tili
 */
public class ReglementDB {
    
    H2JDBC h2jdbc = new H2JDBC();
    ShowDialog SD = new ShowDialog();
    Logger logger = Logger.getLogger(ReglementDB.class.getName());
    contro clt = new contro();
    
    public Reglement setReglementDB(Reglement reglement)
    {
        String ModePaiement = "NULL";
        if(reglement.getModePaiement() != null){
            ModePaiement = reglement.getModePaiement();
        }
        String Query = "INSERT INTO reglement_frs (id_fournisseur, montant, date_creation, type_paiement, mode_paiement, etat_reglement, id_profile)  VALUES  ('"+reglement.getFournisseur().getCode()+"', '"+reglement.getMontant().replace(",",".")+"', '"+reglement.getDateTimeCreation()+"', "+reglement.getTypePaiement()+", "+ModePaiement+", '"+reglement.getEtatReglement()+"', '"+User.idprofile+"');";
        try {
            String IdNumero = h2jdbc.InsertGetLastId(Query);
            reglement.setNumero(IdNumero);
            if(IdNumero != null)
            {
                String list_id_facture = "";
                for(FactureFrs facture : reglement.getListFacture() ){
                    list_id_facture += facture.getIdFactureFrs()+",";
                }
                list_id_facture = list_id_facture.substring(0, list_id_facture.length()-1) + "";
                String QueryUpFact = "UPDATE facture_frs SET id_reglement_frs = '"+IdNumero+"' WHERE facture_frs.id_facture_frs IN ("+list_id_facture+");";
                h2jdbc.InsertUpdateDeleteInTable(QueryUpFact);
                if(reglement.getTypePaiement().equals("0")){
                    if(reglement.getModePaiement().equals("1")){
                        ChequeFrs Cheque = this.setChequeDB(reglement.getCheque(), IdNumero);
                        reglement.setCheque(Cheque);
                    }else if(reglement.getModePaiement().equals("2")){
                        CarteElectroniqueFrs CarteElectronique = this.setCarteElectroniqueDB(reglement.getCarte(), IdNumero);
                        reglement.setCarte(CarteElectronique);
                    }
                }
                if(reglement.getTypePaiement().equals("1"))
                {
                    // 1 Cheque 
                    if(reglement.getModePaiement().equals("1")){
                        this.setListChequeDB(reglement.getListCheque(), IdNumero);

                     // 3 Traite     
                    }else if(reglement.getModePaiement().equals("3")){
                        this.setListTraiteDB(reglement.getListTraite(), IdNumero);
                    }
                }
            }
        }catch(SQLException ex){
            System.err.println("setReglementDB Erreur SQL ! \n"+ex.getMessage());
            System.out.println(Query);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : setReglementDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return reglement;
    }
    
    public  ObservableList<Reglement> SearchGestionReglementGestion(Integer debut, Integer nbr, String Numero, String IdFournisseur, String Montant, String DatePayer, String TypeRegement, String Paiement)
    {
        ObservableList<Reglement> ListReglement = FXCollections.observableArrayList();
        
        String Where = "";
        
        if(!clt.isNumericNotnull(Numero)){
            Where += " (R.id_reglement_frs = '"+Numero+"') AND ";
        }
        
        if(!clt.isNumericNotnull(IdFournisseur)){
            Where += " (R.id_fournisseur = '"+IdFournisseur+"') AND ";
        }
        
        if(!clt.isFloatNotnull(Montant)){
            Where += " (R.montant = '"+Montant+"') AND ";
        }
        
        if(!clt.isStringNull(DatePayer)){
            Where += " (CAST(R.date_creation AS DATE) = '"+DatePayer+"') AND ";
        }
        
        if(!clt.isStringNull(TypeRegement)){
           Where += " (R.type_paiement = '"+TypeRegement+"') AND ";
        }
        
        if(!clt.isStringNull(Paiement)){
           Where += " (R.mode_paiement = '"+Paiement+"') AND ";
        }
        
        if(!Where.equals("")){
            Where = Where.substring(0, Where.length() - 4);
            Where = "WHERE (F.id_fournisseur = R.id_fournisseur) AND " + Where;
        }else{
            Where =" WHERE (F.id_fournisseur = R.id_fournisseur) ";
        }
        
        String req="SELECT  *, to_char(date_creation, 'dd/mm/yyyy hh:ii') as date_creat "
                + " FROM reglement_frs R, fournisseur F  "
                + Where
                + " ORDER BY id_reglement_frs DESC "
                + "LIMIT "+debut+" , "+nbr+" ;";
        
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while (resultat.next()){
                Reglement reglement = new Reglement();
                
                reglement.setNumero(resultat.getString("id_reglement_frs"));
                
                Fournisseur fournisseur = new Fournisseur();
                fournisseur.setCode(resultat.getString("id_fournisseur"));
                fournisseur.setNom(resultat.getString("nom"));
                fournisseur.setAdresse(resultat.getString("adresse"));
                fournisseur.setFormes(resultat.getString("formes"));
                fournisseur.setTele1(resultat.getString("tele1"));
                fournisseur.setTele2(resultat.getString("tele2"));
                fournisseur.setFax(resultat.getString("fax"));
                fournisseur.setMail(resultat.getString("mail"));
                fournisseur.setSiteWeb(resultat.getString("site_web"));
                fournisseur.setSpecialite(resultat.getString("specialite"));
                reglement.setFournisseur(fournisseur);
                
                reglement.setMontant(resultat.getString("montant"));
                reglement.setDateTimeCreation(resultat.getString("date_creat"));
                reglement.setTypePaiement(resultat.getString("type_paiement"));
                reglement.setModePaiement(resultat.getString("mode_paiement"));
                reglement.setEtatReglement(resultat.getString("etat_reglement"));
                
                Profile profile = new Profile();
                profile.setIdprofile(resultat.getInt("id_profile"));
                reglement.setProfile(profile);
                
                ListReglement.add(reglement);
            }
        } catch(SQLException ex){
            System.err.println("SearchGestionReglementGestion Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error(" ReglementDB : SearchGestionReglementGestion :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        } 
        return ListReglement;
    }
    
    public Integer nbrGestionReglementGestion(String Numero, String IdFournisseur, String Montant, String DatePayer, String TypeRegement, String Paiement)
    {
        String Where = "";
        
        if(!clt.isNumericNotnull(Numero)){
            Where += " (id_reglement_frs = '"+Numero+"') AND ";
        }
        
        if(!clt.isNumericNotnull(IdFournisseur)){
            Where += " (id_fournisseur = '"+IdFournisseur+"') AND ";
        }
        
        if(!clt.isFloatNotnull(Montant)){
            Where += " (montant = '"+Montant+"') AND ";
        }
        
        if(!clt.isStringNull(DatePayer)){
            Where += " (CAST(date_creation AS DATE) = '"+DatePayer+"') AND ";
        }
        
        if(!clt.isStringNull(TypeRegement)){
           Where += " (type_paiement = '"+TypeRegement+"') AND ";
        }
        
        if(!clt.isStringNull(Paiement)){
           Where += " (mode_paiement = '"+Paiement+"') AND ";
        }
        
        
        if(!Where.equals("")){
            Where = Where.substring(0, Where.length() - 4);
            Where = "WHERE  " + Where;
        }
        
        String req=" SELECT COUNT(*) FROM reglement_frs " + Where+ " ;"; 
        
        int sommme =0;
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            resultat.next();
            sommme = resultat.getInt(1);
        } catch(SQLException ex){
            System.err.println("nbrGestionReglementGestion Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : nbrGestionReglementGestion :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return sommme ;
    }
    
    public  ObservableList<Reglement> getDataReglement(String  tab,String  mot, Integer debut, Integer nbr){
        
        ObservableList<Reglement> ListReglement = FXCollections.observableArrayList();
        
        String Limit = "";
        if(debut != null || nbr!= null){
            Limit = "LIMIT "+debut+" , "+nbr;
        }
        
        String req="SELECT  *, to_char(date_creation, 'dd/mm/yyyy hh:ii') as date_creat FROM reglement_frs R, fournisseur F  WHERE (F.id_fournisseur = R.id_fournisseur) AND ("+tab+" "+mot+") ORDER BY id_reglement_frs DESC "+Limit+" ;";
        
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while (resultat.next()){
                Reglement reglement = new Reglement();
                        
                reglement.setNumero(resultat.getString("id_reglement_frs"));
                
                //Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fournisseur"));
                //Facture.setFournisseur(Frs);
                Fournisseur fournisseur = new Fournisseur();
                fournisseur.setCode(resultat.getString("id_fournisseur"));
                fournisseur.setNom(resultat.getString("nom"));
                fournisseur.setAdresse(resultat.getString("adresse"));
                fournisseur.setFormes(resultat.getString("formes"));
                fournisseur.setTele1(resultat.getString("tele1"));
                fournisseur.setTele2(resultat.getString("tele2"));
                fournisseur.setFax(resultat.getString("fax"));
                fournisseur.setMail(resultat.getString("mail"));
                fournisseur.setSiteWeb(resultat.getString("site_web"));
                fournisseur.setSpecialite(resultat.getString("specialite"));
                reglement.setFournisseur(fournisseur);
                
                reglement.setMontant(resultat.getString("montant"));
                reglement.setDateTimeCreation(resultat.getString("date_creat"));
                reglement.setTypePaiement(resultat.getString("type_paiement"));
                reglement.setModePaiement(resultat.getString("mode_paiement"));
                reglement.setEtatReglement(resultat.getString("etat_reglement"));
                
                Profile profile = new Profile();
                profile.setIdprofile(resultat.getInt("id_profile"));
                reglement.setProfile(profile);
                
                ListReglement.add(reglement);
            }
        } catch(SQLException ex){
            System.err.println("Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : getDataReglement :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return ListReglement;
    }
    
    public String nbrReglementFrs(String  tab, String mot){
        
        String req = "SELECT count(*) FROM reglement_frs R, fournisseur F  WHERE (F.id_fournisseur = R.id_fournisseur) AND ("+tab+" "+mot+") ;";
        
        int sommme = 0;
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            resultat.next();    // get the number of rows from the result set
            sommme= resultat.getInt(1);
        } catch(SQLException ex){
            System.err.println("Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error(" ReglementDB : nbrReglementFrs :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
       return  Integer.toString(sommme) ;
    }
    
    public Reglement getReglementDB(String IdReglement)
    {
        Reglement reglement = new Reglement();
        String req = "SELECT * FROM reglement_frs WHERE id_reglement_frs = "+IdReglement+" ;";
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while (resultat.next()){
                reglement.setNumero(resultat.getString("id_reglement_frs"));
                reglement.setMontant(resultat.getString("montant"));
                reglement.setDateTimeCreation(resultat.getString("date_creation"));
                reglement.setTypePaiement(resultat.getString("type_paiement"));
                reglement.setModePaiement(resultat.getString("mode_paiement"));
                reglement.setEtatReglement(resultat.getString("etat_reglement"));
                
                reglement.setFournisseur(new FournisseurDB().GetFournisseurDB(resultat.getString("id_fournisseur")));
                reglement.setProfile(new ProfileDB().getpro(resultat.getInt("id_profile")));
                
                reglement.setListFacture(new FactureFrsDB().getFactureByIdReglement(resultat.getString("id_reglement_frs")));
                
                if(reglement.getTypePaiement().equals("0")){
                    if(reglement.getModePaiement().equals("1")){
                        reglement.setCheque(this.getChequeDB(IdReglement));
                    }else if(reglement.getModePaiement().equals("2")){
                        reglement.setCarte(this.getCarteElectroniqueDB(IdReglement));
                    }
                }else if(reglement.getTypePaiement().equals("1")){
                    // 1 Cheque 
                    if(reglement.getModePaiement().equals("1")){
                        reglement.setListCheque(this.getListChequeDB(IdReglement));
                    
                    // 3 Traite 
                    }else if(reglement.getModePaiement().equals("3")){
                        reglement.setListTraite(this.getListTraiteDB(IdReglement));
                    }
                }
            }
        } catch(SQLException ex){
            System.err.println("getReglementDB Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : getReglementDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return reglement;
    }
    
    
    public void setListChequeDB(ObservableList<ChequeFrs> ListCheque, String IdReglement)
    {
        String ListValue = "";
        for(ChequeFrs Cheque : ListCheque ) {
            String NomComplet = "NULL";
            if(Cheque.getNomCompletChequeFrs() != null){
                NomComplet = "'"+Cheque.getNomCompletChequeFrs()+"'";
            }
            ListValue += "('"+IdReglement+"', '"+Cheque.getNumeroChequeFrs()+"', '"+Cheque.getBanqueChequeFrs()+"', '"+Cheque.getMontantChequeFrs().replace(",",".")+"', "+NomComplet+", '"+Cheque.getDatePaiement()+"', now() ),";
        }
        ListValue = ListValue.substring(0, ListValue.length()-1) + ";";
        
        String req = "INSERT INTO cheque_frs (id_reglement_frs, numero, banque, montant, nom_complet, date_paiement, date_creation) VALUES "+ListValue;
        
        try {
            h2jdbc.InsertUpdateDeleteInTable(req);
        }catch(SQLException ex){
            System.err.println("Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : setListChequeDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
    }
    
    public ObservableList<ChequeFrs> getListChequeDB(String IdReglement)
    {
        ObservableList<ChequeFrs> ListCheque =  FXCollections.observableArrayList();
        
        String req = "SELECT * FROM cheque_frs WHERE id_reglement_frs = "+IdReglement+";";  //local avec la quel appartient l'utilisateur
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while (resultat.next()){
                String CodeChequeFrs = resultat.getString("id_cheque_frs");
                String NumeroChequeFrs = resultat.getString("numero");
                String BanqueChequeFrs = resultat.getString("banque");
                String MontantChequeFrs = resultat.getString("montant");
                String NomCompletChequeFrs = resultat.getString("nom_complet");
                String DatePaiement = resultat.getString("date_paiement");
                String DateCreation = resultat.getString("date_creation");
                ListCheque.add(new ChequeFrs(CodeChequeFrs, NumeroChequeFrs, BanqueChequeFrs, MontantChequeFrs, NomCompletChequeFrs, DatePaiement, DateCreation));
            }
        } catch(SQLException ex){
            System.err.println("Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : getListChequeDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return ListCheque;
    }
    
    public void setListTraiteDB(ObservableList<TraiteFrs> ListTraite, String IdReglement)
    {
        String ListValue = "";
        for(TraiteFrs Traite : ListTraite ) {
            ListValue += "('"+IdReglement+"', '"+Traite.getMontant().replace(",",".")+"', '"+Traite.getDatePaiement()+"', now()),";
        }
        ListValue = ListValue.substring(0, ListValue.length()-1) + ";";
        
        String req = "INSERT INTO traite_frs (id_reglement_frs, montant, date_paiement, date_creation) VALUES "+ListValue;
        
        try {
            h2jdbc.InsertUpdateDeleteInTable(req);
        }catch(SQLException ex){
            System.err.println("Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : setListTraiteDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
    }
    
    public ObservableList<TraiteFrs> getListTraiteDB(String IdReglement)
    {
        ObservableList<TraiteFrs> ListTraite =  FXCollections.observableArrayList();
        String req = "SELECT * FROM traite_frs WHERE id_reglement_frs = "+IdReglement+";";  //local avec la quel appartient l'utilisateur
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while ( resultat.next() ) {
                String CodeTraiteClt = resultat.getString("id_traite_frs");
                String DatePaiement = resultat.getString("date_paiement");
                String DateCreation = resultat.getString("date_creation");
                String Montant = resultat.getString("montant");
                ListTraite.add(new TraiteFrs(CodeTraiteClt, DatePaiement, DateCreation, Montant, null));
            }
        } catch(SQLException ex){
            System.err.println("getListTraiteDB Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  :  getListTraiteDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return ListTraite;
    }

    public ChequeFrs setChequeDB(ChequeFrs Cheque, String IdReglement)
    {
        String req = "INSERT INTO cheque_frs (id_reglement_frs, numero, banque, montant, nom_complet, date_paiement, date_creation) VALUES ('"+IdReglement+"', '"+Cheque.getNumeroChequeFrs()+"', '"+Cheque.getBanqueChequeFrs()+"', '"+Cheque.getMontantChequeFrs().replace(",",".")+"', '"+Cheque.getNomCompletChequeFrs()+"', '"+Cheque.getDatePaiement()+"', now() )";
        try {
            String IdCheque= h2jdbc.InsertGetLastId(req);
            Cheque.setCodeChequeFrs(IdCheque);
        }catch(SQLException ex){
            System.err.println("setChequeDB Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : setChequeDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return Cheque;
    }
    
     public ChequeFrs getChequeDB(String IdReglement)
     {
        String req = "SELECT * FROM cheque_frs WHERE id_reglement_frs = "+IdReglement+";";
        ChequeFrs Cheque = new ChequeFrs();
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while (resultat.next()){
                Cheque.setCodeChequeFrs(resultat.getString("id_cheque_frs"));
                Cheque.setNumeroChequeFrs(resultat.getString("numero"));
                Cheque.setBanqueChequeFrs(resultat.getString("banque"));
                Cheque.setMontantChequeFrs(resultat.getString("montant"));
                Cheque.setNomCompletChequeFrs(resultat.getString("nom_complet"));
                Cheque.setDatePaiement(resultat.getString("date_paiement"));
                Cheque.setDateCreation(resultat.getString("date_creation"));
            }
        } catch(SQLException ex){
            System.err.println("getChequeDB Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : getChequeDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        
        return Cheque;
    }
     
    public CarteElectroniqueFrs setCarteElectroniqueDB(CarteElectroniqueFrs CarteElectronique, String IdReglement)
    {
        String req = "INSERT INTO carte_electronique_frs (id_reglement_frs, numero_transaction, numero_carte, date_transaction, banque, montant) VALUES ('"+IdReglement+"', '"+CarteElectronique.getNumeroTransaction()+"', '"+CarteElectronique.getCodeCarte()+"', '"+CarteElectronique.getDateTransaction()+" "+CarteElectronique.getHeurTransaction()+"', '"+CarteElectronique.getBanque()+"', '"+CarteElectronique.getMantant().replace(",",".")+"')";
        try {
            String IdCart = h2jdbc.InsertGetLastId(req);
            CarteElectronique.setCodeCarte(IdCart);
        }catch(SQLException ex){
            System.err.println("Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : setCarteElectroniqueDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return CarteElectronique;
    }
    
     public CarteElectroniqueFrs getCarteElectroniqueDB(String IdReglement)
     {
        CarteElectroniqueFrs CarteElectronique = new CarteElectroniqueFrs();
        String req = "SELECT *, to_char(date_transaction, 'dd/mm/yyyy') as date_trans, to_char(date_transaction, 'hh:ii') as heur_trans  FROM carte_electronique_frs WHERE id_reglement_frs = "+IdReglement+";";
        try {
            ResultSet resultat = h2jdbc.selectFromDB(req);
            while (resultat.next()){
                CarteElectronique.setCodeCarte(resultat.getString("id_carte_electronique_frs"));
                CarteElectronique.setNumeroTransaction(resultat.getString("numero_transaction"));
                CarteElectronique.setNumeroCarte(resultat.getString("numero_carte"));
                CarteElectronique.setHeurTransaction(resultat.getString("heur_trans"));
                CarteElectronique.setDateTransaction(resultat.getString("date_trans"));
                CarteElectronique.setBanque(resultat.getString("banque"));
                CarteElectronique.setMantant(resultat.getString("montant"));
            }
        } catch(SQLException ex){
            System.err.println("getCarteElectroniqueDB Erreur SQL ! \n"+ex.getMessage());
            System.out.println(req);
            if(ParametreSystem.ErrorShowLogger)
            {
                logger.error("ReglementDB  : getCarteElectroniqueDB :" + ex.getMessage());
            }
            if(ParametreSystem.ErrorShowDialog)
            {
                ShowDialog.setTitre("Erreur SQL !");
                ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState());
                SD.ShowAletDialog();
            }
        }
        return CarteElectronique;
    }
    
}
