package Controllers.FactureClt;

import Controllers.Dialog.MessageControle;
import Controllers.Traitement.Adaptateur;
import Controllers.Traitement.ParametreSystem;
import Controllers.Traitement.contro;
import Models.CommandeClt.CommandeClt;
import Models.TraiteClt.DatePickerCell;
import Models.ChequeClt.DatePickerCellCheque;
import Models.FactureClt.FactureClt;
import Models.ChequeClt.ChequeList;
import Models.TraiteClt.TraiteList;
import Models.ChequeClt.ChequeClt;
import Models.TraiteClt.TraiteClt;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.util.Callback;


/**
 * @author Maher Ben Tili
 */
public class FactureCltAjouterPaiementFaciliteController implements Initializable {

    
    @FXML private AnchorPane PaneFactureCltAjouterPaiementFacilite;
    
    @FXML public AnchorPane PaneTableViewTraite ;
    @FXML public AnchorPane PaneTableViewCheque;
    @FXML public Text TextMontant_Traite;
    @FXML public Text TextMontant_Interet;
    
    @FXML public RadioButton RadioCheque;
    @FXML public RadioButton RadioTraite; 
    
    @FXML public Text TextNetaPayer ;
    @FXML public Text TextMontantTraite;
    @FXML public Text TextMontantInteret;
    
    @FXML public TextField TextFieldAvance;
    @FXML public TextField TextFieldNbrTraite;
    @FXML public TextField TextFieldTauxIntere;
    @FXML public Text TextAvance;
    @FXML public Text TextNbrTraite;
    @FXML public Text TextTauxIntere;
    
    @FXML public TableView<TraiteList> TableViewListeTraite ;
    @FXML public TableColumn TabColDateTraite;
    @FXML public TableColumn<TraiteList ,String> TabColMontantTraite;
    
    @FXML public TableView<ChequeList> TableViewListeCheque ;
    @FXML public TableColumn TabColDateCheque;
    @FXML public TableColumn<ChequeList ,String> TabColNumeroCheque;
    @FXML public TableColumn<ChequeList ,String> TabColBanqueCheque;
    @FXML public TableColumn<ChequeList ,String> TabColMontantCheque;
    
    public CommandeClt commande;
    public FactureClt Facture ;
    public boolean TypeSelect =  true; // True Traite | False Cheque
    
    float NetaPayer, TotalMontantTraite, MontantInteret, Avance, NbrTraite, TauxIntere;
    
    public ObservableList<TraiteList> dataList = FXCollections.observableArrayList();
    public ObservableList<ChequeList> dataListCheque = FXCollections.observableArrayList();
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        
        TableViewListeTraite.setEditable(true);
        
        TabColMontantTraite.setStyle( "-fx-alignment: CENTER;");
        TabColMontantTraite.getStyleClass().add("Center");
        TabColMontantTraite.setCellValueFactory(new PropertyValueFactory<TraiteList, String>("MontantTraite"));
        TabColMontantTraite.setCellFactory(TextFieldTableCell.<TraiteList>forTableColumn());  //Ajouter l'option textfield
        //Valier l'opertion
        TabColMontantTraite.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<TraiteList, String>>() {
            @Override
            public void handle(TableColumn.CellEditEvent<TraiteList, String> t) {
                String NewQuantite = t.getNewValue();
               ((TraiteList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setMontantTraite(NewQuantite);
            }
        });
        
        TabColDateTraite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;");
        TabColDateTraite.getStyleClass().add("Center");
        TabColDateTraite.setCellValueFactory(new PropertyValueFactory<TraiteList, Date>("date"));
        TabColDateTraite.setEditable(true);
        
        TabColDateTraite.setCellFactory(new Callback<TableColumn, TableCell>() {
            @Override
            public TableCell call(TableColumn p) {
                DatePickerCell datePick = new DatePickerCell(dataList);
                return datePick;
            }
        });
        TableViewListeTraite.setItems(dataList);
        
        
        //Cheque
        TabColNumeroCheque.setStyle( "-fx-alignment: CENTER;");
        TabColNumeroCheque.getStyleClass().add("Center");
        TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory<ChequeList, String>("NumeroCheque"));
        TabColNumeroCheque.setCellFactory(TextFieldTableCell.<ChequeList>forTableColumn());  //Ajouter l'option textfield
        //Valier l'opertion
        TabColNumeroCheque.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<ChequeList, String>>() {
            @Override
            public void handle(TableColumn.CellEditEvent<ChequeList, String> t) {
                String NewNumeroCheque = t.getNewValue();
                contro clt = new contro();
                if(!clt.isNumeric(NewNumeroCheque)){
                    if(t.getTablePosition().getRow() == 0){
                        Integer NumeroCheque = Integer.valueOf(NewNumeroCheque);
                        int indise = 0; 
                        while(indise<dataListCheque.size()){
                            ((ChequeList) t.getTableView().getItems().get(indise)).setNumeroCheque(NumeroCheque.toString());
                            indise++;NumeroCheque++;
                        }
                    }else{
                        ((ChequeList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setNumeroCheque(NewNumeroCheque);
                    }
                }else{
                    ((ChequeList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setNumeroCheque(null);
                }
            }
        });
        
        TabColBanqueCheque.setStyle( "-fx-alignment: CENTER;");
        TabColBanqueCheque.getStyleClass().add("Center");
        TabColBanqueCheque.setCellValueFactory(new PropertyValueFactory<ChequeList, String>("BanqueCheque"));
        TabColBanqueCheque.setCellFactory(TextFieldTableCell.<ChequeList>forTableColumn());  //Ajouter l'option textfield
        //Valier l'opertion
        TabColBanqueCheque.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<ChequeList, String>>() {
            @Override
            public void handle(TableColumn.CellEditEvent<ChequeList, String> t) {
                String NewBanque = t.getNewValue();
                if(t.getTablePosition().getRow() == 0){
                    int indise = 0; 
                    while(indise<dataListCheque.size()){
                        ((ChequeList) t.getTableView().getItems().get(indise)).setBanqueCheque(NewBanque);
                        indise++;
                    }
                }else{
                    ((ChequeList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setBanqueCheque(NewBanque);
                }
            }
        });
        
        TabColMontantCheque.setStyle( "-fx-alignment: CENTER;");
        TabColMontantCheque.getStyleClass().add("Center");
        TabColMontantCheque.setCellValueFactory(new PropertyValueFactory<ChequeList, String>("MontantCheque"));
        TabColMontantCheque.setCellFactory(TextFieldTableCell.<ChequeList>forTableColumn());  //Ajouter l'option textfield
        //Valier l'opertion
        TabColMontantCheque.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent<ChequeList, String>>() {
            @Override
            public void handle(TableColumn.CellEditEvent<ChequeList, String> t) {
                String NewQuantite = t.getNewValue();
               ((ChequeList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setMontantCheque(NewQuantite);
            }
        });
        
        TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;");
        TabColDateCheque.getStyleClass().add("Center");
        TabColDateCheque.setCellValueFactory(new PropertyValueFactory<ChequeList, Date>("date"));
        TabColDateCheque.setEditable(true);
        TabColDateCheque.setCellFactory(new Callback<TableColumn, TableCell>() {
            @Override
            public TableCell call(TableColumn p) {
                DatePickerCellCheque datePick = new DatePickerCellCheque(dataListCheque);
                return datePick;
            }
        });
        
        TableViewListeCheque.setItems(dataListCheque);   
        
    }
    
    
    
    
    private void CalculeTraite(){
        dataList.clear();
        PaneTableViewCheque.setVisible(false);
        PaneTableViewTraite.setVisible(true);
        
        NbrTraite = Adaptateur.StringToFloat(TextFieldNbrTraite.getText());
        TauxIntere = Adaptateur.StringToFloat(TextFieldTauxIntere.getText());
        
        MontantInteret = ((NetaPayer - Avance) * TauxIntere) / 100 ;
        TotalMontantTraite = (NetaPayer - Avance) + MontantInteret ; 
        
        TextMontantInteret.setText(Adaptateur.ArrondFloatToString(MontantInteret)+" "+ParametreSystem.CurrencySign);
        TextMontantTraite.setText(Adaptateur.ArrondFloatToString(TotalMontantTraite)+" "+ParametreSystem.CurrencySign);
            
        Integer divTotal = Adaptateur.Diviseur(TotalMontantTraite);
        float modeTotal = Adaptateur.Modulo(TotalMontantTraite);
        
        float Value = (float) TotalMontantTraite / NbrTraite;
        Integer div = Adaptateur.Diviseur(Value);
        
       
        Date date= new Date();
        Calendar cal = Calendar.getInstance();
        
        Integer  Somme = 0;
        
        for(int i=0; i<NbrTraite; i++){
            cal.setTime(date);
            cal.add(Calendar.MONTH, i+1);
            if(i != NbrTraite-1){
                Somme = Somme + div ;
                dataList.add(new TraiteList(Adaptateur.floatDeleZero(div),  cal.getTime()));
            }else{
                dataList.add(new TraiteList(Adaptateur.floatDeleZero((divTotal - Somme) + modeTotal) ,  cal.getTime()));
            }
        }
        TextMontantInteret.setVisible(true);
        TextMontantTraite.setVisible(true);
        TextMontant_Traite.setVisible(true);
        TextMontant_Interet.setVisible(true);
            
    }
    
    private void CalculeCheque(){
        dataListCheque.clear();
        PaneTableViewTraite.setVisible(false);
        PaneTableViewCheque.setVisible(true);
        
        NbrTraite = Adaptateur.StringToFloat(TextFieldNbrTraite.getText());
        TauxIntere = Adaptateur.StringToFloat(TextFieldTauxIntere.getText());
        
        MontantInteret = ((NetaPayer - Avance) * TauxIntere) / 100 ;
        TotalMontantTraite = (NetaPayer - Avance) + MontantInteret ; 
        
        TextMontantInteret.setText(Adaptateur.ArrondFloatToString(MontantInteret)+" "+ParametreSystem.CurrencySign);
        TextMontantTraite.setText(Adaptateur.ArrondFloatToString(TotalMontantTraite)+" "+ParametreSystem.CurrencySign);
            
        Integer divTotal = Adaptateur.Diviseur(TotalMontantTraite);
        float modeTotal = Adaptateur.Modulo(TotalMontantTraite);
        
        float Value = (float) TotalMontantTraite / NbrTraite;
        Integer div = Adaptateur.Diviseur(Value);
        
       
        Date date= new Date();
        Calendar cal = Calendar.getInstance();
        
        Integer  Somme = 0;
        
        for(int i=0; i<NbrTraite; i++){
            cal.setTime(date);
            cal.add(Calendar.MONTH, i+1);
            if(i != NbrTraite-1){
                Somme = Somme + div ;
                dataListCheque.add(new ChequeList(cal.getTime(),"","",Adaptateur.floatDeleZero(div)));
            }else{
                dataListCheque.add(new ChequeList(cal.getTime(),"","",Adaptateur.floatDeleZero((divTotal - Somme) + modeTotal)));
            }
        }
        TextMontantInteret.setVisible(true);
        TextMontantTraite.setVisible(true);
        TextMontant_Traite.setVisible(true);
        TextMontant_Interet.setVisible(true);
    }
    
    
    //Suivant
    @FXML
    private void FactureCltAjouterSuivantButtonAction(ActionEvent event) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltAjouterDetailTraite.fxml"));
        Parent NodeDetailTraite = (Parent)fxmlLoader.load();
        FactureCltAjouterDetailTraiteController FactureCltAjouterDetailTraite = fxmlLoader.getController();
        
        
        if(commande.getTypeClient()==0){
            FactureCltAjouterDetailTraite.TextNom.setText(commande.CltPersonne.getNom());
            FactureCltAjouterDetailTraite.TextPrenom.setText(commande.CltPersonne.getPrenom());
            FactureCltAjouterDetailTraite.TextAdress.setText(commande.CltPersonne.getAdresse());
        }else if(commande.getTypeClient()==1){
            FactureCltAjouterDetailTraite.TextNom.setText(commande.CltEntreprise.getNom());
            FactureCltAjouterDetailTraite.TextPrenom.setText(commande.CltEntreprise.getMatricule());
            FactureCltAjouterDetailTraite.TextAdress.setText(commande.CltEntreprise.getAdresse());
            FactureCltAjouterDetailTraite.TextPrenomMatricule.setText("Matricule");
            FactureCltAjouterDetailTraite.TextPrenom.setText(commande.CltEntreprise.getMatricule());
        }else if(commande.getTypeClient()==2){
            FactureCltAjouterDetailTraite.TextNom.setText(commande.CltPassager.getNom());
            FactureCltAjouterDetailTraite.TextPrenom.setText(commande.CltPassager.getPrenom());
            FactureCltAjouterDetailTraite.TextAdress.setText(commande.CltPassager.getAdresse());
        }
        
        
        if(TypeSelect == true){
            if(this.ControleListTraite()){
                SetDataFactureClt(true);
                PaneFactureCltAjouterPaiementFacilite.getChildren().clear();
                PaneFactureCltAjouterPaiementFacilite.getChildren().add(NodeDetailTraite);
                FactureCltAjouterDetailTraite.data_List_Traite = dataList;
                FactureCltAjouterDetailTraite.SetDataTraiteFacilite(Facture);
            }
        }else{
            if(this.ControleListCheque()){
                SetDataFactureClt(false);
                PaneFactureCltAjouterPaiementFacilite.getChildren().clear();
                PaneFactureCltAjouterPaiementFacilite.getChildren().add(NodeDetailTraite);
                FactureCltAjouterDetailTraite.data_List_Cheque = dataListCheque;
                FactureCltAjouterDetailTraite.SetDataTraiteFacilite(Facture);
            }
        }
    }
    
    
    private void SetDataFactureClt(boolean type_reglement){
        Facture.setAvance(TextFieldAvance.getText());
        Facture.setTotalMontantTraite(Adaptateur.ArrondFloatToString(TotalMontantTraite));
        Facture.setNbrTraite(TextFieldNbrTraite.getText());
        Facture.setMontantInteret(Adaptateur.ArrondFloatToString(MontantInteret));
        Facture.setTauxInteret(TextFieldTauxIntere.getText());
        Facture.setTypeRegement(commande.getTypeRegement());
        if(commande.getTypeClient() == 0){
            Facture.setCltPersonne(commande.getCltPersonne());
        }else if(commande.getTypeClient() == 1){
            Facture.setCltEntreprise(commande.getCltEntreprise());
        }else if(commande.getTypeClient() == 2){
            Facture.setCltPassager(commande.getCltPassager());
        }
        
        Facture.setListeproduit(commande.getListeproduit());
        if(type_reglement == true){
            Facture.setTypeFacilite("0");
            ArrayList<TraiteClt> ListTraites = new ArrayList();
            for(int i=0; i<dataList.size(); i++){
                TraiteClt Traite = new TraiteClt();
                Traite.setDateCreationTraiteClt(new Date().toString());
                String DateTraite = new SimpleDateFormat("dd/MM/yyyy").format(dataList.get(i).getDate());
                Traite.setDateTraiteClt(DateTraite);
                Traite.setMontantTraiteClt(dataList.get(i).getMontantTraite());
                ListTraites.add(Traite);
            }
            Facture.setListeTraites(ListTraites);
        }else if(type_reglement == false){
            Facture.setTypeFacilite("1");
            ArrayList<ChequeClt> ListCheque = new ArrayList();
            for(int i=0; i<dataListCheque.size(); i++){
                ChequeClt Cheque = new ChequeClt();
                Cheque.setNumeroChequeClt(dataListCheque.get(i).getNumeroCheque());
                Cheque.setBanqueChequeClt(dataListCheque.get(i).getBanqueCheque());
                Cheque.setMontantChequeClt(dataListCheque.get(i).getMontantCheque());
                String DateChequePaiement = new SimpleDateFormat("yyyy-MM-dd").format(dataListCheque.get(i).getDate());
                Cheque.setDatePaiement(DateChequePaiement);
                Cheque.setDateCreation(new Date().toString());
                ListCheque.add(Cheque);
            }
            Facture.setListeCheques(ListCheque);
        }
    }
    //Boutton Traitement
    @FXML
    private void FactureCltAjouterTraitementButtonAction(ActionEvent event) throws IOException {
        if(this.Controle()){
            if(TypeSelect == true){
                this.CalculeTraite();
            }else{
                this.CalculeCheque();
            }
        }
    }
    
    //Radio Cheque 
    @FXML
    private void FactureCltAjouterChequeButtonAction(ActionEvent event) throws IOException {
        TypeSelect = false;
        TextMontant_Traite.setVisible(false);TextMontant_Interet.setVisible(false);
        PaneTableViewTraite.setVisible(false);PaneTableViewCheque.setVisible(false);
        TextMontantInteret.setVisible(false);TextMontantTraite.setVisible(false);
        if(this.Controle()){
            this.CalculeCheque();
        }
        
    }
    
    //Radio Traite
    @FXML
    private void FactureCltAjouterTraiteButtonAction(ActionEvent event) throws IOException {
        TypeSelect = true;
        TextMontant_Traite.setVisible(false);TextMontant_Interet.setVisible(false);
        PaneTableViewTraite.setVisible(false);PaneTableViewCheque.setVisible(false);
        TextMontantInteret.setVisible(false);TextMontantTraite.setVisible(false);
        if(this.Controle()){
            this.CalculeTraite();
        }
    }
    
    //Boutton Présédent
    @FXML
    private void FactureCltAjouterButtonAction(ActionEvent event) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltAjouterDetailSelect.fxml"));
        Parent NodeFactureCltAjouterDetailSelect = (Parent)fxmlLoader.load();
        FactureCltAjouterDetailSelectController FactureCltAjouterDetailSelect = fxmlLoader.getController();
        FactureCltAjouterDetailSelect.setDataCommande(commande.getCodecommandeclt());
        PaneFactureCltAjouterPaiementFacilite.getChildren().clear();
        PaneFactureCltAjouterPaiementFacilite.getChildren().add(NodeFactureCltAjouterDetailSelect);
    }
    
    
    
    public void SetTableViewTraite(){
        PaneTableViewTraite.setVisible(true);
        TableViewListeTraite.setItems(dataList);
    }
    
    public void SetTableViewCheque(){
        PaneTableViewCheque.setVisible(true);
        TableViewListeCheque.setItems(dataListCheque);
    }
    
    private Boolean ControleListTraite(){
        boolean Resulta = true;
        boolean MontantTraite = true;
        int indise = 0;
        float Somme = 0;
        while(indise<dataList.size()){
            if(dataList.get(indise).getMontantTraite().equals("0")){
                MontantTraite = false;
            }
            Somme = Somme + Adaptateur.ArrondStringToFloat(dataList.get(indise).getMontantTraite());
            indise++;
        }
        if(!MontantTraite){
            final MessageControle messagecontrol = new MessageControle();
            Text text3 = new Text();
            text3.setText("Le montant des traites doit être différent de zéro (0)");
            text3.setFont(Font.font("Arial", FontWeight.BOLD, 13));
            text3.setFill(Color.web("#363a38"));
            messagecontrol.DetailMSG.getChildren().add(text3);
            messagecontrol.bouttonOK.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    messagecontrol.stackpane.setVisible(false);
                }
            });
            messagecontrol.ShowNotification();
            Resulta = false;
        }
        else if(Adaptateur.ArrondFloatToFloat(Somme) != Adaptateur.ArrondFloatToFloat(TotalMontantTraite)){
            final MessageControle messagecontrol = new MessageControle();

            Text text3 = new Text();
            text3.setText("La sommes des traites est différent à la montant de TotalMontantTraite");
            text3.setFont(Font.font("Arial", FontWeight.BOLD, 13));
            text3.setFill(Color.web("#363a38"));
            messagecontrol.DetailMSG.getChildren().add(text3);

            messagecontrol.bouttonOK.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    messagecontrol.stackpane.setVisible(false);
                }
            });

            messagecontrol.ShowNotification();
            
            Resulta = false;
        }
        
        return Resulta;
    }
    
    private Boolean ControleListCheque(){
        boolean Resulta = true;
        boolean NumeroCheque = true;
        boolean MontantCheque = true;
        boolean Banque = true;
        int indise = 0;
        float Somme = 0;
        contro clt = new contro();
        
        while(indise<dataListCheque.size()){
            
            if(!clt.isNumericNotnull(dataListCheque.get(indise).getNumeroCheque())){
                NumeroCheque = false;
            }
            if(dataListCheque.get(indise).getBanqueCheque().isEmpty()){
                Banque = false;
            }
            if(dataListCheque.get(indise).getMontantCheque().equals("0") || dataListCheque.get(indise).getNumeroCheque().isEmpty()){
                MontantCheque = false;
            }
            Somme = Somme + Adaptateur.ArrondStringToFloat(dataListCheque.get(indise).getMontantCheque());
            indise++;
        }
        
        System.out.println(Adaptateur.ArrondFloatToFloat(Somme));
        System.out.println(Adaptateur.ArrondFloatToFloat(TotalMontantTraite));
        
        if(NumeroCheque){
            final MessageControle messagecontrol = new MessageControle();
            Text text3 = new Text();
            text3.setText("Incorrect Numéro Chéque");
            text3.setFont(Font.font("Arial", FontWeight.BOLD, 13));
            text3.setFill(Color.web("#363a38"));
            messagecontrol.DetailMSG.getChildren().add(text3);

            messagecontrol.bouttonOK.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    messagecontrol.stackpane.setVisible(false);
                }
            });
            messagecontrol.ShowNotification();
            Resulta = false;
        }
        else if(!Banque){
            final MessageControle messagecontrol = new MessageControle();
            Text text3 = new Text();
            text3.setText("Le nom de la banque est vide");
            text3.setFont(Font.font("Arial", FontWeight.BOLD, 13));
            text3.setFill(Color.web("#363a38"));
            messagecontrol.DetailMSG.getChildren().add(text3);
            messagecontrol.bouttonOK.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    messagecontrol.stackpane.setVisible(false);
                }
            });
            messagecontrol.ShowNotification();
            Resulta = false;
        }
        else if(!MontantCheque){
            final MessageControle messagecontrol = new MessageControle();
            Text text3 = new Text();
            text3.setText("Incorrect montant chéque");
            text3.setFont(Font.font("Arial", FontWeight.BOLD, 13));
            text3.setFill(Color.web("#363a38"));
            messagecontrol.DetailMSG.getChildren().add(text3);
            messagecontrol.bouttonOK.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    messagecontrol.stackpane.setVisible(false);
                }
            });
            messagecontrol.ShowNotification();
            Resulta = false;
        }
        else if(Adaptateur.ArrondFloatToFloat(Somme) != Adaptateur.ArrondFloatToFloat(TotalMontantTraite)){
            final MessageControle messagecontrol = new MessageControle();
            Text text3 = new Text();
            text3.setText("La sommes des chéques est différent à la montant de TotalMontantTraite");
            text3.setFont(Font.font("Arial", FontWeight.BOLD, 13));
            text3.setFill(Color.web("#363a38"));
            messagecontrol.DetailMSG.getChildren().add(text3);
            messagecontrol.bouttonOK.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    messagecontrol.stackpane.setVisible(false);
                }
            });
            messagecontrol.ShowNotification();
            Resulta = false;
        }
        
        return Resulta;
    }
    
    
    private Boolean Controle(){
        contro clt = new contro();
        
        if(clt.ContrNumeriqueNotnull(TextFieldAvance, TextAvance) && 
           clt.ContrNumeriqueNotnull(TextFieldNbrTraite, TextNbrTraite) &&
           clt.ContrNumeriqueNotnull(TextFieldTauxIntere, TextTauxIntere)){
            
            NetaPayer =  Adaptateur.StringToFloat(commande.getNetAPayer());
            Avance = Adaptateur.StringToFloat(TextFieldAvance.getText());
            if(NetaPayer< Avance){
                TextFieldAvance.setStyle("-fx-border-color:#f20606;");
                TextAvance.setText("doit être inférieur a Net A payer");
                return false ;
            }else if(Adaptateur.StringToFloat(TextFieldNbrTraite.getText())<= 0){
                TextFieldNbrTraite.setStyle("-fx-border-color:#f20606;");
                TextNbrTraite.setText("doit être supérieur a 0");
                return false ;
            }else{
                TextAvance.setText("");
                TextFieldAvance.setStyle("-fx-border-color: transparent;");
                return true;
            }
        }
        else{
            return false;
        }
    }
}
