commit 433e47e385450b01d108867b796a179a70c0d9b4 Author: maher Date: Thu Oct 30 13:23:53 2025 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/conf/log4j.xml b/conf/log4j.xml new file mode 100644 index 0000000..954263e --- /dev/null +++ b/conf/log4j.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/conf/logo.xml b/conf/logo.xml new file mode 100644 index 0000000..a7e6901 --- /dev/null +++ b/conf/logo.xml @@ -0,0 +1,39 @@ + + + + ./conf/logo1.png + 110 + 108 + 40 + 80 + + + ./conf/logo2.png + 150 + 40 + 9 + 5 + + + ./conf/logo1.png + 92 + 82 + 358 + 8 + + + ./conf/logo1.png + 92 + 82 + 358 + 8 + + + ./conf/logo1.png + 84 + 87 + 345 + 35 + + + diff --git a/conf/logo1.png b/conf/logo1.png new file mode 100644 index 0000000..359c8f8 Binary files /dev/null and b/conf/logo1.png differ diff --git a/conf/logo2.png b/conf/logo2.png new file mode 100644 index 0000000..e725c38 Binary files /dev/null and b/conf/logo2.png differ diff --git a/conf/logs/myStruts1App.log b/conf/logs/myStruts1App.log new file mode 100644 index 0000000..e69de29 diff --git a/conf/parametre.xml b/conf/parametre.xml new file mode 100644 index 0000000..b724a71 --- /dev/null +++ b/conf/parametre.xml @@ -0,0 +1,33 @@ + + + + jdbc:mysql://localhost:3306/powerpme?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC + powerpme + root + bentili + + + Societé X + Tunis +
2 rue elmouez mornaguia
+ 533 459 590 + 533 459 590 + 533 459 590 + 71 554 885 + 71 847 965 + contact@powerpme.com + www.power-pme.com +
+ + DT + dinar + millime + + + Banque Nationale Agricole en Tunisie + 18 145 1495872366763 08 + TN59 1700 1000 0002 3667 9587 + + Magasin I + 0.600 +
diff --git a/conf/print.xml b/conf/print.xml new file mode 100644 index 0000000..c92f24b --- /dev/null +++ b/conf/print.xml @@ -0,0 +1,95 @@ + + + + + 689 + 457 + + + true + 18 + 293 + + + true + 42 + 252 + + + true + 305 + 301 + 57 + 149 + + + true + 18 + 332 + + + true + 151 + 136 + + + true + 155 + 164 + + + true + 468 + 279 + 34 + 201 + + + true + 151 + 194 + + + true + 400 + 131 + + + true + 5 + 88 + + + + + 400 + 600 + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + + diff --git a/jshell.history b/jshell.history new file mode 100644 index 0000000..e69de29 diff --git a/nb-configuration.xml b/nb-configuration.xml new file mode 100644 index 0000000..174bf05 --- /dev/null +++ b/nb-configuration.xml @@ -0,0 +1,20 @@ + + + + + + all + true + JDK_21 + + diff --git a/nbactions.xml b/nbactions.xml new file mode 100644 index 0000000..a0cb38e --- /dev/null +++ b/nbactions.xml @@ -0,0 +1,40 @@ + + + + run + + jar + + + clean + javafx:run + + + + debug + + clean + javafx:run@ide-debug + + + true + + + + profile + + clean + javafx:run@ide-profile + + + + CUSTOM-jlink + jlink + + clean + + compile + javafx:jlink + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3d12f29 --- /dev/null +++ b/pom.xml @@ -0,0 +1,151 @@ + + 4.0.0 + com.mycompany + PowerPMEmarven + 1.0-SNAPSHOT + + UTF-8 + 11 + 11 + + + + org.openjfx + javafx-controls + 13 + + + org.openjfx + javafx-fxml + 13 + + + com.gluonhq + charm-glisten + 6.2.3 + + + com.gluonhq.attach + share + 4.0.18 + + + org.openjfx + javafx-web + 17.0.7 + jar + + + com.ibm.icu + icu4j + 3.4.4 + + + com.mysql + mysql-connector-j + 9.0.0 + + + org.controlsfx + controlsfx + 11.2.1 + jar + + + log4j + log4j + 1.2.17 + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + Controllers.Main + + + + META-INF/spring.handlers + + + ${project.artifactId}-${project.version} + true + jar-with-dependencies + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 11 + + + + org.openjfx + javafx-maven-plugin + 0.0.4 + + Controllers.App + + + + + + + + + + default-cli + + + + + debug + + + + + + + + + ide-debug + + + + + + + + + ide-profile + + + + + + + + + + + + + + + diff --git a/src/logs/myStruts1App.log b/src/logs/myStruts1App.log new file mode 100644 index 0000000..afcedfe --- /dev/null +++ b/src/logs/myStruts1App.log @@ -0,0 +1 @@ +2024-12-25 17:20:33 ERROR App:26 - Error message diff --git a/src/main/java/Controllers/App.java b/src/main/java/Controllers/App.java new file mode 100644 index 0000000..2fecf01 --- /dev/null +++ b/src/main/java/Controllers/App.java @@ -0,0 +1,40 @@ +package Controllers; + +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import java.io.IOException; +import org.apache.log4j.xml.DOMConfigurator; + +/** + * JavaFX App + */ +public class App extends Application { + + @Override + public void start(Stage stage) throws IOException { + + DOMConfigurator.configure("./conf/log4j.xml"); + + ParametreSystem parametre = new ParametreSystem(); + parametre.SetParametre(); + + MyWindow.NewMyStage(); + MyWindow.setMyParent((Parent) FXMLLoader.load(getClass().getResource("/Views/Authentification.fxml"))); + Scene scene = new Scene(MyWindow.myParent); + MyWindow.myStage.setScene(scene); + MyWindow.myStage.show(); + } + + + + public static void main(String[] args) { + + launch(); + } + +} \ No newline at end of file diff --git a/src/main/java/Controllers/AuthentificationController.java b/src/main/java/Controllers/AuthentificationController.java new file mode 100644 index 0000000..4c1fd35 --- /dev/null +++ b/src/main/java/Controllers/AuthentificationController.java @@ -0,0 +1,197 @@ +package Controllers; + +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Models.User.Profile; +import Models.User.ProfileDB; +import Models.User.User; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +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.Scene; +import javafx.scene.control.Label; +import javafx.scene.control.PasswordField; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + + +public class AuthentificationController implements Initializable{ + + @FXML + private Text Erreurresult; + + @FXML + private Label label; + + @FXML + private TextField Login; + + @FXML + private PasswordField Password; + + @FXML + private AnchorPane Content; + + @FXML + private ImageView ImageViewLogo; + + @FXML + private ProgressBar ProgressBarAuthentification; + + private Service ThreadAuthentification; + + Profile profile; + + @Override + public void initialize(URL url, ResourceBundle rb) { + Content.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + Connexion(); + } + } + }); + setImageLogo(); + } + + + @FXML + private void handleButtonAction(ActionEvent event) throws IOException { + this.Connexion(); + } + + private void Connexion() + { + Erreurresult.setText(null); + Login.setStyle("-fx-border-color: transparent;"); + Login.setStyle("-fx-border-color: transparent;"); + + String login=Login.getText(); + String password=Password.getText(); + + if(login.length()==0){ + Erreurresult.setText(null); + Erreurresult.setText("champ login vide."); + Login.setStyle("-fx-border-color:#ff0000;"); + } + else if(password.length()==0){ + Erreurresult.setText(null); + Erreurresult.setText("champ password vide."); + Password.setStyle("-fx-border-color:#ff0000;"); + } + else{ + Login.setStyle("-fx-border-color: transparent;"); + Password.setStyle("-fx-border-color: transparent;"); + ProgressBarAuthentification.setVisible(true); + ThreadAuthentification = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + profile = new ProfileDB().getProfileByConnexion(login, password); + + return null; + } + }; + } + }; + ThreadAuthentification.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + if(profile.getIdprofile() > 0){ + User.idprofile= profile.getIdprofile(); + User.nom = profile.getNom(); + User.prenom=profile.getPrenom(); + User.UserLocal=profile.getAuthentification().getLocalNom(); + User.SotckNegatif= profile.getAuthentification().isStockNegatif(); + + if(ParametreSystem.NomLocalPC.equals(profile.getAuthentification().getLocalNom())){ + //Fermer la fenétre de authentification + //((Node)(event.getSource())).getScene().getWindow().hide(); + Content.getScene().getWindow().hide(); + MyWindow.NewMyStage(); + try { + MyWindow.setMyParent((Parent) FXMLLoader.load(getClass().getResource("/Views/Principal.fxml"))); + Scene scene = new Scene(MyWindow.myParent); + MyWindow.myStage.setScene(scene); + MyWindow.myStage.show(); + } catch (IOException ex) { + Logger.getLogger(AuthentificationController.class.getName()).log(Level.SEVERE, null, ex); + } + }else{ + //Fermer la fenétre de authentification else{ + Erreurresult.setText("Accès interdit a ce locale"); + } + }else{ + Erreurresult.setText("Login ou password est incorrect"); + } + ProgressBarAuthentification.setVisible(false); + } + }); + ThreadAuthentification.start(); + } + } + + + private void setImageLogo() + { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + try { + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //PowerERP\conf\logo.xml + Document doc = db.parse(new File("./conf/logo.xml")); + + doc.getDocumentElement().normalize(); + + Element elementCNX = (Element) doc.getElementsByTagName("Connexion").item(0); + + String pathLogo = elementCNX.getElementsByTagName("PathImage").item(0).getTextContent(); + FileInputStream fis = new FileInputStream(pathLogo); + ImageViewLogo.setImage(new Image(fis)); + + ImageViewLogo.setFitWidth(Double.parseDouble(elementCNX.getElementsByTagName("FitWidth").item(0).getTextContent())); + ImageViewLogo.setFitHeight(Double.parseDouble(elementCNX.getElementsByTagName("FitHeight").item(0).getTextContent())); + ImageViewLogo.setLayoutX(Double.parseDouble(elementCNX.getElementsByTagName("LayoutX").item(0).getTextContent())); + ImageViewLogo.setLayoutY(Double.parseDouble(elementCNX.getElementsByTagName("LayoutY").item(0).getTextContent())); + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println("error AuthentificationController/setImageLogo "+e.getMessage()); + } + } + +} diff --git a/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterController.java b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterController.java new file mode 100644 index 0000000..0067f47 --- /dev/null +++ b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterController.java @@ -0,0 +1,409 @@ +package Controllers.BonLivraisonClt; + +import Models.CommandeClt.CommandeCltDB; +import Models.CommandeClt.CommandeCltListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BonLivraisonCltAjouterController implements Initializable { + + @FXML private AnchorPane AnchorPaneBLCltAjouterEtape1; + + @FXML private ProgressBar ProgressBarBLCltAjouter; + + @FXML private Button ButtonSearchBLCltAjouter; + + @FXML public TableView TableViewCommande; + + @FXML public TableColumn TabColCodeCommande; + @FXML public TableColumn TabColModePaiement; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColCodeClient; + @FXML public TableColumn TabColTotalCommande; + @FXML public TableColumn TabColDateCreation ; + @FXML public TableColumn TabColCodeDevis; + @FXML public TableColumnTabColAction ; + + @FXML public TextField TextFieldCodeCommande; + @FXML public DatePicker DatePickerCreation; + @FXML public RadioButton RadioComptant; + @FXML public RadioButton RadioFacilite; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + private Service ThreadSearchBLCltAjouter; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewCommande.setEditable(true); + + TabColCodeCommande.setStyle( "-fx-alignment: CENTER;");TabColCodeCommande.getStyleClass().add("Center"); + TabColCodeCommande.setCellValueFactory(new PropertyValueFactory("CodeCommande")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColCodeClient.setStyle( "-fx-alignment: CENTER;");TabColCodeClient.getStyleClass().add("Center"); + TabColCodeClient.setCellValueFactory(new PropertyValueFactory("CodeClient")); + + TabColModePaiement.setStyle( "-fx-alignment: CENTER;");TabColModePaiement.getStyleClass().add("Center"); + TabColModePaiement.setCellValueFactory(new PropertyValueFactory("ModePaiement")); + + TabColTotalCommande.setStyle( "-fx-alignment: CENTER;");TabColTotalCommande.getStyleClass().add("Center"); + TabColTotalCommande.setCellValueFactory(new PropertyValueFactory("TotalCommande")); + + TabColDateCreation.setStyle( "-fx-alignment: CENTER;");TabColDateCreation.getStyleClass().add("Center"); + TabColDateCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColCodeDevis.setStyle( "-fx-alignment: CENTER;");TabColCodeDevis.getStyleClass().add("Center"); + TabColCodeDevis.setCellValueFactory(new PropertyValueFactory("CodeDevis")); + + + TabColAction.setSortable(true); + TabColAction.setStyle( "-fx-alignment: CENTER;");TabColAction.getStyleClass().add("Center"); + TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new BonLivraisonCltAjouterController.ButtonCell(); + } + }); + + ButtonSearchBLCltAjouter.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchBLCltAjouter(); + } + }); + + AnchorPaneBLCltAjouterEtape1.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchBLCltAjouter(); + } + } + }); + + RadioComptant.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchBLCltAjouter(); + } + }); + + RadioFacilite.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchBLCltAjouter(); + } + }); + + GestionSearchBLCltAjouter(); + + } + + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconedit.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + CommandeCltListe current = (CommandeCltListe) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String CodeCommande = current.getCodeCommande(); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltAjouterEtape2.fxml")); + Parent NodeBonLivraisonCltAjouterEtape2 = (Parent)fxmlLoader.load(); + BonLivraisonCltAjouterEtape2Controller BonLivraisonCltAjouterEtape2= fxmlLoader.getController(); + + AnchorPaneBLCltAjouterEtape1.getChildren().clear(); + AnchorPaneBLCltAjouterEtape1.getChildren().add(NodeBonLivraisonCltAjouterEtape2); + + BonLivraisonCltAjouterEtape2.SetDataCommandeClt(CodeCommande); + } catch (IOException ex) { + Logger.getLogger(BonLivraisonCltAjouterController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchBLCltAjouter() + { + ProgressBarBLCltAjouter.setVisible(true); + + ButtonSearchBLCltAjouter.setDisable(true); + + ThreadSearchBLCltAjouter = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListBLCltAjouters = new CommandeCltDB().SearchCommandeCltNotBonLivrison( + position, + nbrligne, + TextFieldCodeCommande.getText(), + DateCreation, + TypeRegement); + + TableViewCommande.setItems(ListBLCltAjouters); + + totalcount = new CommandeCltDB().nbrCommandeCltNotBonLivrison(TextFieldCodeCommande.getText(), DateCreation, TypeRegement); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchBLCltAjouter.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBLCltAjouter.setVisible(false); + ButtonSearchBLCltAjouter.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchBLCltAjouter.start(); + } + + + private void NextLastSearchBLCltAjouter(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarBLCltAjouter.setVisible(true); + + ButtonSearchBLCltAjouter.setDisable(true); + + ThreadSearchBLCltAjouter = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListBLCltAjouters = new CommandeCltDB().SearchCommandeCltNotBonLivrison(ParmPosition, ParamNbrligne, TextFieldCodeCommande.getText(), DateCreation, TypeRegement); + + TableViewCommande.setItems(ListBLCltAjouters); + + return null; + } + }; + } + }; + + ThreadSearchBLCltAjouter.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBLCltAjouter.setVisible(false); + ButtonSearchBLCltAjouter.setDisable(false); + } + }); + ThreadSearchBLCltAjouter.start(); + } + + private void GestionSearchBLCltAjouter() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchBLCltAjouter(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchBLCltAjouter(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchBLCltAjouter(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } +} diff --git a/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterEtape2Controller.java b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterEtape2Controller.java new file mode 100644 index 0000000..21fcc0d --- /dev/null +++ b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterEtape2Controller.java @@ -0,0 +1,299 @@ +/* + * 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 Controllers.BonLivraisonClt; + +import Controllers.Dialog.Dialog; +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import Controllers.Traitement.contro; +import Models.BonLivraisonClt.BonLivraisonClt; +import Models.BonLivraisonClt.BonLivraisonCltDB; +import Models.BonLivraisonClt.BonLivraisonCltProduitList; +import Models.CommandeClt.CommandeClt; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.text.Text; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.CommandeClt.CommandeCltDB; +import java.io.IOException; +import java.time.LocalDate; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.util.Callback; + + +/** + * FXML Controller class + * + * @author Maher + */ +public class BonLivraisonCltAjouterEtape2Controller implements Initializable { + + @FXML private AnchorPane AnchorPaneBLCltAjouterEtape2; + + @FXML private Text TextType; + @FXML private Text TextCode; + @FXML private Text TextNom; + @FXML private Text TextPrenom; + @FXML private Text TextAdresse; + @FXML private Text TextDateNaissance; + @FXML private Text TextTele1; + @FXML private Text TextTele2; + @FXML private Text TxtPrenom; + @FXML private Text TxtDateNaissance; + + @FXML public TableView TableViewBonLivraisonCltProduitList; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignation ; + @FXML public TableColumn TabColMarque; + @FXML public TableColumn TabColCategorie; + @FXML public TableColumn TabColProdDisponible; + @FXML public TableColumn TabColQuantite; + @FXML public TableColumn TabColPrixTTC; + + @FXML private TextField TextFieldHeurLivraison ; + @FXML private TextField TextFieldNumTele1 ; + @FXML private TextField TextFieldNumTele2 ; + @FXML private TextField TextFieldTransporteur ; + @FXML private TextField TextFieldPoidProduit; + @FXML private DatePicker DatePickerDateLivraison; + @FXML private TextArea TextAreaAdressLivraison; + @FXML private TextField TextFieldFraisTransport ; + + ObservableList ObservableListBLCltPro = FXCollections.observableArrayList(); + BonLivraisonClt BonLivraison = new BonLivraisonClt(); + Text Txt = new Text(); + + contro clt = new contro(); + + public CommandeClt Commande; + + boolean DisponibleProduit = true; + + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColReference.setCellValueFactory(new PropertyValueFactory("Reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("Designation")); + TabColMarque.setCellValueFactory(new PropertyValueFactory("Marque")); + TabColCategorie.setCellValueFactory(new PropertyValueFactory("Categorie")); + + TabColProdDisponible.setCellValueFactory(new PropertyValueFactory("ProdDisponible")); + TabColProdDisponible.setStyle( "-fx-alignment: CENTER;"); + TabColProdDisponible.getStyleClass().add("Center"); + + TabColQuantite.setStyle( "-fx-alignment: CENTER;"); + TabColQuantite.getStyleClass().add("Center"); + TabColQuantite.setCellValueFactory(new PropertyValueFactory("QuantiteProd")); + + TabColPrixTTC.setStyle( "-fx-alignment: CENTER;"); + TabColPrixTTC.getStyleClass().add("Center"); + TabColPrixTTC.setCellValueFactory(new PropertyValueFactory("PrixTTC")); + + TabColProdDisponible.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null && item.equals("1")){ + Text text = new Text("Oui"); + text.setFill(Color.web("#428BCA")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!= null && item.equals("0")){ + DisponibleProduit = false; + Text text = new Text("Non"); + text.setFill(Color.web("#EA4335")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TextFieldFraisTransport.setText("0"); + } + + @FXML + private void CreateBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + if( clt.ContrNumerique(TextFieldNumTele1, Txt) && + clt.ContrNumerique(TextFieldNumTele2, Txt) && + clt.ContrNumerique(TextFieldPoidProduit, Txt) && + clt.ContrNull(TextAreaAdressLivraison, Txt)&& + clt.ContrHour(TextFieldHeurLivraison, Txt) ){ + if(DisponibleProduit){ + NextEtap(); + }else{ + final Dialog MyDialog= new Dialog(); + Node node = MyDialog.DialogNotification(); + MyDialog.Titre.setText("Attention produit non disponible en stock"); + MyDialog.Message.setText("Lorsque vous cliquez sur Valider votre stock sera négative"); + MyDialog.DefaultAnnuler(); + MyDialog.Valider.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + MyDialog.PaneDialog.setVisible(false); + NextEtap(); + } + }); + MyDialog.Show(node); + } + } + } + + public void SetBonLivraision(){ + BonLivraison.setTele1(TextFieldNumTele1.getText()); + BonLivraison.setTele2(TextFieldNumTele2.getText()); + BonLivraison.setHeurLivraison(TextFieldHeurLivraison.getText()); + if(DatePickerDateLivraison.getValue()!=null){ + BonLivraison.setDateLivraisonPreveu(DatePickerDateLivraison.getValue().toString()); + } + BonLivraison.setTransporteur(TextFieldTransporteur.getText()); + BonLivraison.setPoidProduit(TextFieldPoidProduit.getText()); + BonLivraison.setAdresseLivraison(TextAreaAdressLivraison.getText()); + BonLivraison.setFrais(TextFieldFraisTransport.getText()); + + if(clt.isNumericNotnull(TextFieldFraisTransport.getText())){ + float PayerAFraisT = Adaptateur.StringToFloat(BonLivraison.getNetAPayer()); + float FraisTransport = Adaptateur.StringToFloat(TextFieldFraisTransport.getText()); + float NetAPayer = PayerAFraisT + FraisTransport; + BonLivraison.setNetAPayer(Adaptateur.floatDeleZero(NetAPayer)); + } + + } + + + public void NextEtap(){ + try { + ConvertCommandeToBonLivraision(); + SetBonLivraision(); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltAjouterEtape3.fxml")); + Parent NodeBonLivraisonCltAjouterEtape3 = (Parent)fxmlLoader.load(); + + BonLivraisonCltAjouterEtape3Controller BonLivraisonCltAjouterEtape3= fxmlLoader.getController(); + BonLivraisonCltAjouterEtape3.BonLivraisonStep2ToStep3(BonLivraison, Commande.getCodecommandeclt()); + + AnchorPaneBLCltAjouterEtape2.getChildren().clear(); + AnchorPaneBLCltAjouterEtape2.getChildren().add(NodeBonLivraisonCltAjouterEtape3); + } catch (IOException ex) { + Logger.getLogger(BonLivraisonCltAjouterEtape2Controller.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void ConvertCommandeToBonLivraision(){ + BonLivraison.setIdCommande(Commande.getCodecommandeclt()); + //0 Personne 1 Entreprise 2 Passager + Integer TypeClt = Commande.getTypeClient(); + BonLivraison.setTypeClient(TypeClt); + if(TypeClt == 0){ + BonLivraison.setCltPersonne(Commande.getCltPersonne()); + BonLivraison.setAdresseLivraison(Commande.CltPersonne.getAdresse()); + }else if(TypeClt == 1){ + BonLivraison.setCltEntreprise(Commande.getCltEntreprise()); + BonLivraison.setAdresseLivraison(Commande.CltEntreprise.getAdresse()); + }else if(TypeClt == 2){ + BonLivraison.setCltPassager(Commande.getCltPassager()); + BonLivraison.setAdresseLivraison(Commande.CltPassager.getAdresse()); + } + + BonLivraison.setListeproduit(Commande.getListeproduit()); + BonLivraison.setTotalHorsTaxNet(Commande.getTotalHorsTaxNet()); + BonLivraison.setTotalTVA(Commande.getTotalTVA()); + BonLivraison.setRemise(Commande.getRemise()); + BonLivraison.setNetAPayer(Commande.getNetAPayer()); + } + + + + public void SetDataCommandeClt(String CodeCommande){ + CommandeCltDB CommandeDB= new CommandeCltDB(); + Commande = CommandeDB.getCommandeClt(CodeCommande); + Integer TypeClient = Commande.getTypeClient(); + if(TypeClient == 0){ + Client Personne= Commande.getCltPersonne(); + TextType.setText("ancien client"); + TextCode.setText(Personne.getCodeclient()); + TextNom.setText(Personne.getNom()); + TextPrenom.setText(Personne.getPrenom()); + TextAdresse.setText(Personne.getAdresse()); + TextAreaAdressLivraison.setText(Personne.getAdresse()); + TextDateNaissance.setText(Adaptateur.NormalDateFormat(Personne.getNaissance().toString())); + TextTele1.setText(Personne.getTelefixString()); + TextTele2.setText(Personne.getTelemobileString()); + TextFieldNumTele1.setText(Personne.getTelefixString()); + TextFieldNumTele2.setText(Personne.getTelemobileString()); + }else if(TypeClient == 1){ + ClientEntreprise Entreprise = Commande.getCltEntreprise(); + TextType.setText("Entrepise"); + TextCode.setText(Entreprise.getCodeString()); + TxtPrenom.setText("Matricule"); + TextPrenom.setText(Entreprise.getMatricule()); + TxtDateNaissance.setText("E-Mail"); + TextDateNaissance.setText(Entreprise.getMail()); + TextNom.setText(Entreprise.getNom()); + TextAdresse.setText(Entreprise.getAdresse()); + TextAreaAdressLivraison.setText(Entreprise.getAdresse()); + TextTele1.setText(Entreprise.getTele1String()); + TextTele2.setText(Entreprise.getTele2String()); + TextFieldNumTele1.setText(Entreprise.getTele1String()); + TextFieldNumTele2.setText(Entreprise.getTele2String()); + }else if(TypeClient == 2){ + ClientPassager Passager = Commande.getCltPassager(); + TextType.setText("Passager"); + TextCode.setText(Passager.getCodeclient()); + TextNom.setText(Passager.getNom()); + TextPrenom.setText(Passager.getPrenom()); + TextAdresse.setText(Passager.getAdresse()); + TextAreaAdressLivraison.setText(Passager.getAdresse()); + TextDateNaissance.setText(Passager.getNaissance()); + TextTele1.setText(Passager.getTelefixString()); + TextTele2.setText(Passager.getTelemobileString()); + TextFieldNumTele1.setText(Passager.getTelefixString()); + TextFieldNumTele2.setText(Passager.getTelemobileString()); + } + + DatePickerDateLivraison.setValue(LocalDate.now()); + + SetDataListeproduit(); + } + + public void SetDataListeproduit(){ + ObservableList DataListeproduit = Commande.getListeproduit(); + + BonLivraisonCltDB BonLivraisonDB= new BonLivraisonCltDB(); + ObservableListBLCltPro = BonLivraisonDB.GetListBonLivraisonCltSotck(DataListeproduit); + + TableViewBonLivraisonCltProduitList.setItems(ObservableListBLCltPro); + + } +} diff --git a/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterEtape3Controller.java b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterEtape3Controller.java new file mode 100644 index 0000000..78bdf38 --- /dev/null +++ b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltAjouterEtape3Controller.java @@ -0,0 +1,81 @@ +/* + * 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 Controllers.BonLivraisonClt; + +import Models.BonLivraisonClt.BonLivraisonClt; +import Models.BonLivraisonClt.BonLivraisonCltDB; +import Models.CommandeClt.CommandeCltDB; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.image.ImageView; +import javafx.scene.layout.GridPane; +import javafx.scene.text.Text; + +/** + * + * @author Maher + */ +public class BonLivraisonCltAjouterEtape3Controller implements Initializable { + + @FXML public ProgressIndicator ProgressBonLivraion; + @FXML public ImageView ImageBonLivraion; + @FXML public GridPane GridPaneBonLivraion; + @FXML public Text TextBonLivraion; + + BonLivraisonClt BonLivraison = new BonLivraisonClt(); + BonLivraisonCltDB BonLivraisonDB = new BonLivraisonCltDB(); + + private String IdBonLivraison; + private String CodeCommandeclt; + private Service ThreadBonLivraison; + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + } + + public void BonLivraisonStep2ToStep3(BonLivraisonClt bon_livraison_clt, String code_commandeclt){ + BonLivraison = bon_livraison_clt; + CodeCommandeclt = code_commandeclt; + LanchSaveBonLivraison(); + } + + public void LanchSaveBonLivraison(){ + ThreadBonLivraison = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call(){ + IdBonLivraison = BonLivraisonDB.AddBonLivraisonClt(BonLivraison); + new CommandeCltDB().UpdateCommandeCltSetIdBonLivraison(CodeCommandeclt, IdBonLivraison); + return null; + } + }; + } + }; + ThreadBonLivraison.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBonLivraion.setVisible(false); + TextBonLivraion.setText("La bon livraison numéro "+IdBonLivraison+" a été enregistrés avec succès"); + ImageBonLivraion.setVisible(true); + //GridPaneBonLivraion.setVisible(true); + } + }); + ThreadBonLivraison.start(); + } + + +} diff --git a/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltDetailController.java b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltDetailController.java new file mode 100644 index 0000000..5edffd4 --- /dev/null +++ b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltDetailController.java @@ -0,0 +1,347 @@ +package Controllers.BonLivraisonClt; + +import Controllers.Traitement.MyWindow; +import Models.BonLivraisonClt.BonLivraisonClt; +import Models.BonLivraisonClt.BonLivraisonCltDB; +import Models.Produit.ListeProduit; +import Models.User.Profile; +import Models.User.ProfileDB; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.print.PageRange; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Control; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BonLivraisonCltDetailController{ + + @FXML private TableView TableViewListeProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + @FXML private TableView TableViewListeProduitTempo ; + @FXML private TableColumn TabColReferenceTempo; + @FXML private TableColumn TabColDesignationTempo; + @FXML private TableColumn TabColQuantiteTempo ; + @FXML private TableColumn TabColPrixHTTempo; + @FXML private TableColumn TabColRemiseTempo; + @FXML private TableColumn TabColTotalHTTempo; + @FXML private TableColumn TabColTVATempo; + @FXML private TableColumn TabColTotalTTCTempo; + + + @FXML public AnchorPane AnchorPrincipal ; + @FXML public AnchorPane AnchorSecondaire ; + @FXML private ProgressIndicator ProgressBonLivraion ; + + @FXML public Text TextIdBonLivraison ; + + @FXML private Text TextTypeClt ; + @FXML private Text TextNom ; + @FXML private Text TextPrenom ; + @FXML private Text TextAdressClt ; + + @FXML private Text TextDateCreation ; + @FXML private Text TextLocale ; + @FXML private Text TextNomPrenomProfile ; + + @FXML private Text TextHeurLivraison ; + @FXML private Text TextDateLivraison ; + @FXML private Text TextTransporteur ; + @FXML private Text TextFraisLivraison ; + @FXML private Text TextAdressLivraison ; + + private Service ThreadBonLivraison; + public Node nodeFxml; + public String IdBonLivraison; + + ObservableList> items = FXCollections.>observableArrayList(); + int TotalHeightPage = 0; + + BonLivraisonClt BonLivraison = new BonLivraisonClt(); + Profile profile = new Profile(); + + public BonLivraisonCltDetailController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltDetail.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(BonLivraisonCltDetailController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void SetIdBonLivraison(String id_bon_livraison){ + IdBonLivraison = id_bon_livraison; + + TableViewListeProduit.setEditable(true); + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + initializeTempo(); + + LanchBonLivraison(); + } + + public void LanchBonLivraison(){ + ThreadBonLivraison = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + BonLivraison = new BonLivraisonCltDB().GetBonLivraisonClt(IdBonLivraison); + profile = new ProfileDB().getpro(Integer.parseInt(BonLivraison.getIdProfileEditeur())); + return null; + } + }; + } + }; + ThreadBonLivraison.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + TextIdBonLivraison.setText(BonLivraison.getIdBonLivrasionClt()); + + //0 Personne 1 Entreprise 2 Passager + if(BonLivraison.getTypeClient() == 0){ + TextTypeClt.setText("Ancien client") ; + TextNom.setText(BonLivraison.CltPersonne.getNom()) ; + TextPrenom.setText(BonLivraison.CltPersonne.getPrenom()) ; + TextAdressClt.setText(BonLivraison.CltPersonne.getAdresse()); + }else if(BonLivraison.getTypeClient() == 1){ + TextTypeClt.setText("Entreprise") ; + TextNom.setText(BonLivraison.CltEntreprise.getNom()) ; + TextPrenom.setText(BonLivraison.CltEntreprise.getMatricule()) ; + TextAdressClt.setText(BonLivraison.CltEntreprise.getAdresse()); + }else if(BonLivraison.getTypeClient() == 2){ + TextTypeClt.setText("Passager") ; + TextNom.setText(BonLivraison.CltPassager.getNom()) ; + TextPrenom.setText(BonLivraison.CltPassager.getPrenom()) ; + TextAdressClt.setText(BonLivraison.CltPassager.getAdresse()); + } + + TextNomPrenomProfile.setText(profile.getNom()+" "+profile.getPrenom()) ; + + TextDateCreation.setText(BonLivraison.getDateCreation()) ; + TextLocale.setText(BonLivraison.getLocalNom()) ; + + TextHeurLivraison.setText(BonLivraison.getHeurLivraison()) ; + TextDateLivraison.setText(BonLivraison.getDateLivraisonPreveu()) ; + TextTransporteur.setText(BonLivraison.getTransporteur()) ; + TextFraisLivraison.setText(BonLivraison.getFrais()) ; + TextAdressLivraison.setText(BonLivraison.getAdresseLivraison()) ; + + ObservableList DataListeProduit = BonLivraison.getListeproduit(); + TableViewListeProduit.setItems(DataListeProduit); + TableViewListeProduitTempo.setItems(DataListeProduit); + + ProgressBonLivraion.setVisible(false); + AnchorSecondaire.setVisible(true); + } + }); + ThreadBonLivraison.start(); + } + + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Stage stage = MyWindow.myStage; + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + stage.setScene(scene); + stage.show(); + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + + + @FXML + private void PDFBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + + } + + + private void initializeTempo() + { + TabColReferenceTempo.setCellValueFactory(new PropertyValueFactory("reference")); + TabColReferenceTempo.setStyle( "-fx-alignment: CENTER;"); + TabColReferenceTempo.getStyleClass().add("Center"); + + TabColDesignationTempo.setCellValueFactory(new PropertyValueFactory("designation")); + TabColDesignationTempo.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if (item == null) { + super.setText(null); + super.setGraphic(null); + } else { + String newItem = item.trim().toLowerCase(); + Text text = new Text(newItem); + super.setPrefHeight(Control.USE_COMPUTED_SIZE); + text.wrappingWidthProperty().bind(super.widthProperty()); + super.setGraphic(text); + Platform.runLater(new Runnable() { + @Override + public void run() { + int selectdIndex = getTableRow().getIndex(); + + if(selectdIndex>=0){ + Map item1 = new HashMap<>(); + item1.put("produit", (ListeProduit) getTableRow().getItem()); + item1.put("designation", newItem); + item1.put("height", text.getBoundsInLocal().getHeight()); + items.add(item1); + TotalHeightPage += text.getBoundsInLocal().getHeight(); + } + } + }); + } + } + }; + return cell; + } + }); + + + + TabColQuantiteTempo.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantiteTempo.setStyle( "-fx-alignment: CENTER;"); + TabColQuantiteTempo.getStyleClass().add("Center"); + + TabColPrixHTTempo.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHTTempo.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHTTempo.getStyleClass().add("Center"); + + TabColRemiseTempo.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemiseTempo.setStyle( "-fx-alignment: CENTER;"); + TabColRemiseTempo.getStyleClass().add("Center"); + + TabColTotalHTTempo.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHTTempo.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHTTempo.getStyleClass().add("Center"); + + TabColTVATempo.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVATempo.setStyle( "-fx-alignment: CENTER;"); + TabColTVATempo.getStyleClass().add("Center"); + + TabColTotalTTCTempo.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTCTempo.setStyle( "-fx-alignment: CENTER;"); + TabColTotalTTCTempo.getStyleClass().add("Center"); + + TabColReferenceTempo.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantiteTempo.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemiseTempo.setCellFactory(TextFieldTableCell.forTableColumn()); + } + + + + @FXML + private void PrintBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + + ObservableList ListProd = BonLivraison.getListeproduit(); + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + try { + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, 1)); + + if (jobPrint.showPrintDialog(null)) { + + FXMLLoader fxmlLoaderPrintLivraison = new FXMLLoader(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltPrint.fxml")); + final Node ParentFxmlPrintLivraison = (Node)fxmlLoaderPrintLivraison.load(); + BonLivraisonCltPrintController PrintLivraison = fxmlLoaderPrintLivraison.getController(); + + PrintLivraison.setBonLivraisonClt(BonLivraison, ListProd, "1/1", true); + + jobPrint.printPage(ParentFxmlPrintLivraison); + + jobPrint.endJob(); + } + } catch (IOException ex) { + System.err.println("BondeEntrerDetailController PrintBonEntreButtonAction ! \n"+ex.getMessage()); + } + + + } + + +} diff --git a/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltGestionController.java b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltGestionController.java new file mode 100644 index 0000000..bff51f0 --- /dev/null +++ b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltGestionController.java @@ -0,0 +1,379 @@ +package Controllers.BonLivraisonClt; + +import Models.BonLivraisonClt.BonLivraisonCltDB; +import Models.BonLivraisonClt.BonLivraisonCltGestionList; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * + * @author maher + */ +public class BonLivraisonCltGestionController implements Initializable { + + @FXML private AnchorPane PaneBonLivraisonCltGestion; + + @FXML private ProgressBar ProgressBarBonLivraisonClt; + + @FXML private Button ButtonSearchBonLivraisonClt; + + @FXML public TableView TableViewBonLivraisonCltListGestion; + @FXML public TableColumn TabColIdBonLivrasionClt; + @FXML public TableColumn TabColDateHeurLivraison ; + @FXML public TableColumn TabColAdresseLivraison; + @FXML public TableColumn TabColCodeClt; + @FXML public TableColumn TabColIdFactureClt ; + @FXML public TableColumn TabColTransporteur; + @FXML public TableColumnTabColBlDetail ; + + @FXML public TextField TextFieldIdBonLivrasionClt ; + @FXML public DatePicker DatePickerDateLivraison; + @FXML public TextField TextFieldCodeClt; + @FXML public TextField TextFieldIdFactureClt; + @FXML public TextField TextFieldTransporteur; + @FXML public TextField TextFieldAdresseLivraison; + + @FXML private AnchorPane ListerPages; + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + private Service ThreadSearchBonLivraisonClt; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewBonLivraisonCltListGestion.setEditable(true); + + TabColIdBonLivrasionClt.setStyle( "-fx-alignment: CENTER;");TabColIdBonLivrasionClt.getStyleClass().add("Center"); + TabColIdBonLivrasionClt.setCellValueFactory(new PropertyValueFactory("IdBonLivrasionClt")); + + TabColDateHeurLivraison.setStyle( "-fx-alignment: CENTER;");TabColDateHeurLivraison.getStyleClass().add("Center"); + TabColDateHeurLivraison.setCellValueFactory(new PropertyValueFactory("DateHeurLivraison")); + + TabColAdresseLivraison.setStyle( "-fx-alignment: CENTER;");TabColAdresseLivraison.getStyleClass().add("Center"); + TabColAdresseLivraison.setCellValueFactory(new PropertyValueFactory("AdresseLivraison")); + + TabColCodeClt.setStyle( "-fx-alignment: CENTER;");TabColCodeClt.getStyleClass().add("Center"); + TabColCodeClt.setCellValueFactory(new PropertyValueFactory("CodeClt")); + + TabColIdFactureClt.setStyle( "-fx-alignment: CENTER;");TabColIdFactureClt.getStyleClass().add("Center"); + TabColIdFactureClt.setCellValueFactory(new PropertyValueFactory("IdFactureClt")); + + TabColTransporteur.setStyle( "-fx-alignment: CENTER;");TabColTransporteur.getStyleClass().add("Center"); + TabColTransporteur.setCellValueFactory(new PropertyValueFactory("Transporteur")); + + TabColBlDetail.setStyle( "-fx-alignment: CENTER;");TabColBlDetail.getStyleClass().add("Center"); + TabColBlDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + + ButtonSearchBonLivraisonClt.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchBonLivraisonClt(); + } + }); + + PaneBonLivraisonCltGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchBonLivraisonClt(); + } + } + }); + + GestionSearchBonLivraisonClt(); + } + + + @FXML + private void AjouterBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + PaneBonLivraisonCltGestion.getChildren().clear(); + PaneBonLivraisonCltGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltAjouter.fxml"))); + } + + + private class ButtonCell extends TableCell { + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + BonLivraisonCltGestionList current = (BonLivraisonCltGestionList) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String IdBonLivrasionClt = current.getIdBonLivrasionClt(); + + BonLivraisonCltDetailController BonLivraisonCltDetail = new BonLivraisonCltDetailController(); + BonLivraisonCltDetail.Show(); + BonLivraisonCltDetail.SetIdBonLivraison(IdBonLivrasionClt); + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + + +/****************************************************************************** * + * * + * Methode last Next TableView client Entreprise * + * * * + ******************************************************************************/ + + private void SearchBonLivraisonClt() + { + ProgressBarBonLivraisonClt.setVisible(true); + + ButtonSearchBonLivraisonClt.setDisable(true); + + ThreadSearchBonLivraisonClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateLivraison = ""; + if(DatePickerDateLivraison.getValue() != null){ + DateLivraison = DatePickerDateLivraison.getValue().toString(); + } + + ObservableList ListBonLivraisonClts = new BonLivraisonCltDB().SearchBonLivraisonCltGestion( + position, + nbrligne, + TextFieldIdBonLivrasionClt.getText(), + DateLivraison, + TextFieldCodeClt.getText(), + TextFieldIdFactureClt.getText(), + TextFieldTransporteur.getText(), + TextFieldAdresseLivraison.getText()); + + TableViewBonLivraisonCltListGestion.setItems(ListBonLivraisonClts); + + totalcount = new BonLivraisonCltDB().nbrSearchBonLivraisonCltGestion(TextFieldIdBonLivrasionClt.getText(), DateLivraison, TextFieldCodeClt.getText(), TextFieldIdFactureClt.getText(), TextFieldTransporteur.getText(), TextFieldAdresseLivraison.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchBonLivraisonClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBonLivraisonClt.setVisible(false); + ButtonSearchBonLivraisonClt.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchBonLivraisonClt.start(); + } + + + private void NextLastSearchBonLivraisonClt(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarBonLivraisonClt.setVisible(true); + + ButtonSearchBonLivraisonClt.setDisable(true); + + ThreadSearchBonLivraisonClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateLivraison = ""; + if(DatePickerDateLivraison.getValue() != null){ + DateLivraison = DatePickerDateLivraison.getValue().toString(); + } + + ObservableList ListBonLivraisonClts = new BonLivraisonCltDB().SearchBonLivraisonCltGestion(ParmPosition, ParamNbrligne, TextFieldIdBonLivrasionClt.getText(), DateLivraison, TextFieldCodeClt.getText(), TextFieldIdFactureClt.getText(), TextFieldTransporteur.getText(), TextFieldAdresseLivraison.getText()); + + TableViewBonLivraisonCltListGestion.setItems(ListBonLivraisonClts); + + return null; + } + }; + } + }; + + ThreadSearchBonLivraisonClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBonLivraisonClt.setVisible(false); + ButtonSearchBonLivraisonClt.setDisable(false); + } + }); + ThreadSearchBonLivraisonClt.start(); + } + + private void GestionSearchBonLivraisonClt() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchBonLivraisonClt(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchBonLivraisonClt(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchBonLivraisonClt(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } +} diff --git a/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltPrintController.java b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltPrintController.java new file mode 100644 index 0000000..4477b89 --- /dev/null +++ b/src/main/java/Controllers/BonLivraisonClt/BonLivraisonCltPrintController.java @@ -0,0 +1,242 @@ +/* + * 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 Controllers.BonLivraisonClt; + +import Controllers.Traitement.Adaptateur; +import static Controllers.Traitement.Adaptateur.StringToStringEspaceCurrency; +import static Controllers.Traitement.Adaptateur.StringToStringEspace; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.BonLivraisonClt.BonLivraisonClt; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.Produit.ListeProduit; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Control; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BonLivraisonCltPrintController implements Initializable { + + @FXML private AnchorPane AnchorPaneTotal; + + @FXML public ImageView ImageViewLogo; + + @FXML private Text TextSteNom; + @FXML private Text TextSteAdress; + @FXML private Text TextSteTeleFax; + @FXML private Text TextSteIFCR; + @FXML private Text TextSteRIB; + @FXML private Text TextSteEmailSite; + + @FXML private Text TextNumBonLivraison; + @FXML private Text TextDateBonLivraison; + @FXML private Text TextNumCommande; + + @FXML private Text TextCltNomPrenom; + @FXML private Text TextCltTele; + @FXML private Text TextCltAdress; + + @FXML private TableView TableViewListeProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + + @FXML private Text TextTotalRemise; + @FXML private Text TextTotalHT; + @FXML private Text TextTotalTVA; + @FXML private Text TexFraisTransport; + @FXML private Text TextNetPayer; + + @FXML private Text TextPagination; + + contro clt = new contro(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + + setImageLogo(); + + TextSteNom.setText(ParametreSystem.CompanyName); + TextSteAdress.setText(ParametreSystem.CompanyAddress); + TextSteTeleFax.setText(ParametreSystem.CompanyTele+" | Fax: "+ParametreSystem.CompanyFax); + TextSteIFCR.setText(ParametreSystem.CompanyIF+" | M.F: "+ParametreSystem.CompanyMF); + TextSteRIB.setText(ParametreSystem.RIB); + TextSteEmailSite.setText(ParametreSystem.CompanyMail+" | Site:"+ParametreSystem.CompanySite); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColReference.setStyle( "-fx-alignment: CENTER;"); + TabColReference.getStyleClass().add("Center"); + + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + TabColDesignation.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if (item == null) { + super.setText(null); + super.setGraphic(null); + } else { + String newItem = item.trim().toLowerCase(); + Text text = new Text(newItem); + super.setPrefHeight(Control.USE_COMPUTED_SIZE); + text.wrappingWidthProperty().bind(super.widthProperty()); + super.setGraphic(text); + } + } + }; + return cell; + } + }); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + } + + public void setBonLivraisonClt(BonLivraisonClt BonLivraison, ObservableList ListProd, String Pagination, boolean PaneTotalVisible) { + + TextNumBonLivraison.setText("N°"+BonLivraison.getIdBonLivrasionClt()); + TextNumCommande.setText(BonLivraison.getIdCommande()); + TextDateBonLivraison.setText(Adaptateur.NormalDateFormat(BonLivraison.getDateLivraisonPreveu())); + + TextPagination.setText(Pagination); + + String AdressClt = ""; + //0 Personne 1 Entreprise 2 Passager + if(BonLivraison.getTypeClient() == 0){ + Client CltPersonne = BonLivraison.getCltPersonne(); + TextCltNomPrenom.setText(CltPersonne.getCodeclient()+" - "+CltPersonne.getPrenom()+" "+CltPersonne.getNom()); + AdressClt = CltPersonne.getAdresse(); + if( (!clt.isStringNull(CltPersonne.getTelemobileString())) && (!clt.isStringNull(CltPersonne.getTelefixString())) ) { + TextCltTele.setText(CltPersonne.getTelemobile()+" | "+CltPersonne.getTelefix()); + }else if(!clt.isStringNull(CltPersonne.getTelemobileString())){ + TextCltTele.setText(CltPersonne.getTelemobileString()); + }else if(!clt.isStringNull(CltPersonne.getTelefixString())){ + TextCltTele.setText(CltPersonne.getTelefixString()); + } + }else if(BonLivraison.getTypeClient() == 1){ + ClientEntreprise CltEntreprise = BonLivraison.getCltEntreprise(); + TextCltNomPrenom.setText(CltEntreprise.getCodeString()+" - "+CltEntreprise.getNom()); + TextCltTele.setText(CltEntreprise.getTele1()+" | "+CltEntreprise.getTele2()); + AdressClt = CltEntreprise.getAdresse(); + }else if(BonLivraison.getTypeClient() == 2){ + ClientPassager CltPassager = BonLivraison.getCltPassager(); + TextCltNomPrenom.setText(CltPassager.getCodeclient()+" - "+CltPassager.getNom()+" "+CltPassager.getPrenom()); + TextCltTele.setText(CltPassager.getTelemobile()+" | "+CltPassager.getTelefix()); + AdressClt = CltPassager.getAdresse(); + } + + if(clt.isNumericNotnull(BonLivraison.getAdresseLivraison())){ + TextCltAdress.setText(BonLivraison.getAdresseLivraison()); + }else{ + TextCltAdress.setText(AdressClt); + } + + TextTotalHT.setText(StringToStringEspace(BonLivraison.getTotalHorsTaxNet())); + TextTotalTVA.setText(StringToStringEspace(BonLivraison.getTotalTVA())); + TextTotalRemise.setText(StringToStringEspace(BonLivraison.getRemise())); + TexFraisTransport.setText(StringToStringEspace(BonLivraison.getFrais())); + TextNetPayer.setText(StringToStringEspaceCurrency(BonLivraison.getNetAPayer())); + + TableViewListeProduit.setItems(ListProd); + + AnchorPaneTotal.setVisible(PaneTotalVisible); + } + + + private void setImageLogo() + { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + try { + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //PowerERP\conf\logo.xml + Document doc = db.parse(new File("./conf/logo.xml")); + + doc.getDocumentElement().normalize(); + + Element elementCNX = (Element) doc.getElementsByTagName("BonLivraisonCltPrint").item(0); + + String pathLogo = elementCNX.getElementsByTagName("PathImage").item(0).getTextContent(); + FileInputStream fis = new FileInputStream(pathLogo); + ImageViewLogo.setImage(new Image(fis)); + + ImageViewLogo.setFitWidth(Double.parseDouble(elementCNX.getElementsByTagName("FitWidth").item(0).getTextContent())); + ImageViewLogo.setFitHeight(Double.parseDouble(elementCNX.getElementsByTagName("FitHeight").item(0).getTextContent())); + ImageViewLogo.setLayoutX(Double.parseDouble(elementCNX.getElementsByTagName("LayoutX").item(0).getTextContent())); + ImageViewLogo.setLayoutY(Double.parseDouble(elementCNX.getElementsByTagName("LayoutY").item(0).getTextContent())); + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println("error AuthentificationController/setImageLogo "+e.getMessage()); + } + } + +} diff --git a/src/main/java/Controllers/BonReceptionFrs/BonReceptionAjouterFrsController.java b/src/main/java/Controllers/BonReceptionFrs/BonReceptionAjouterFrsController.java new file mode 100644 index 0000000..d2de53e --- /dev/null +++ b/src/main/java/Controllers/BonReceptionFrs/BonReceptionAjouterFrsController.java @@ -0,0 +1,624 @@ +/* + * 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 Controllers.BonReceptionFrs; + +import Controllers.CommandeClt.CommandeCltPasserController; +import Controllers.Dialog.MessageControle; +import Controllers.Produit.RechercherProduitController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.contro; +import Models.BonReceptionFrs.BonReceptionDB; +import Models.BonReceptionFrs.BonReceptionFrs; +import Models.BonReceptionFrs.BonReceptionProduitList; +import Models.Fournisseur.Fournisseur; +import Models.Fournisseur.FournisseurDB; +import Models.Produit.ListeProduit; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import Models.Stock.StockDB; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Platform; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.ProgressIndicator; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +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; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BonReceptionAjouterFrsController implements Initializable { + + @FXML public AnchorPane PaneBonReceptionAjouterFrs ; + @FXML public Text NetAPayer ; + @FXML public Button RechercheProduit ; + @FXML public Button ButtonBonReceptionAjouter; + + @FXML public TableView TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignaton; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + @FXML public TableColumn TabColAddAction ; + + + @FXML public TextField TextFieldNumero ; + @FXML public TextField TextFieldTransporteur ; + @FXML public TextField TextFieldHeur ; + @FXML private TextField TextFieldFournisseur ; + @FXML public DatePicker DatePickerDateReception; + + + @FXML public ChoiceBox ChoiceBoxLocalReception ; + + @FXML public Text TextNumero ; + @FXML public Text TextHeur ; + @FXML public Text TextDateReception; + @FXML public Text TextFournisseur ; + @FXML public Text TextLocalReception ; + + @FXML public ProgressIndicator ProgressIndicatorSaveBonReception ; + + public ObservableList data = FXCollections.observableArrayList(); + Produit produit= new Produit(); + ProduitDB produitDB= new ProduitDB(); + contro Controle = new contro(); + + public ArrayList ListFournisseur = new ArrayList<>(); + public ArrayList ListLocale = new ArrayList<>(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + + DatePickerDateReception.setValue(LocalDate.now()); + TextFieldHeur.setText(LocalDateTime.now().getHour()+":"+LocalDateTime.now().getMinute()); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + + TabColAddAction.setSortable(true); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new BonReceptionAjouterFrsController.ButtonCell(); + } + }); + TabColAddAction.setStyle( "-fx-alignment: CENTER;"); + TabColAddAction.getStyleClass().add("Center"); + + StockDB Stock = new StockDB(); + ListLocale = Stock.getAllListLocal(); + ChoiceBoxLocalReception.getItems().addAll(ListLocale); + + ListFournisseur = new FournisseurDB().getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseur, ListFournisseur); + + this.ReferenceMouseClick(); + this.QantiteMouseClick(); + + + TabColAddAction.setSortable(true); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new BonReceptionAjouterFrsController.ButtonCell(); + } + }); + + TableViewListeProduit.setItems(data); + + //Ajouter une ligne vide clors ce que en click sur la tableview + TableViewListeProduit.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + }); + + + ButtonBonReceptionAjouter.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + ButtonBonReceptionAjouter.setText(""); + ButtonBonReceptionAjouter.setDisable(true); + ProgressIndicatorSaveBonReception.setVisible(true); + if( Controle.ContrNull(TextFieldNumero, TextNumero) && + Controle.ContrNull(TextFieldFournisseur, TextFournisseur) && + Controle.ContrNullDatePicker(DatePickerDateReception, TextDateReception) && + Controle.ContrHour(TextFieldHeur, TextHeur) && + Controle.ContrNullValue(ChoiceBoxLocalReception, TextLocalReception) + ){ + + Runnable task = new Runnable(){// Create a Runnable + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + if(data.size()>0){ + BonReceptionDB BonRecepDB= new BonReceptionDB(); + String Numero = TextFieldNumero.getText(); + String IdFournisseur = TextFieldFournisseur.getText().split(" - ", -1)[0]; + String IdBonReception = BonRecepDB.getBonReceptionFrs(null, Numero, IdFournisseur).getIdBonReception(); + if(IdBonReception != null){ + TextFieldNumero.setStyle("-fx-border-color:#f20606;"); + TextNumero.setText("Bon réception existe déja"); + }else{ + BonReceptionFrs BonReception = setBonReceptionFrs(); + BonReception = BonRecepDB.setBonReceptionFrsDB(BonReception); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonReceptionFrs/BonReceptionDetailFrs.fxml")); + Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); + + BonReceptionDetailFrsController BonReceptionDetailFrs = fxmlLoader.getController(); + BonReceptionDetailFrs.setDataBonReceptionDetailFrs(BonReception.getIdBonReception()); + BonReceptionDetailFrs.PaneSucessFrs.setVisible(true); + PaneBonReceptionAjouterFrs.getChildren().clear(); + PaneBonReceptionAjouterFrs.getChildren().add(ParentFxmlFournisseur); + + }catch (IOException ex) { + Logger.getLogger(BonReceptionDetailFrsController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }else{ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + + } + }); + } + }; + Thread backgroundThread = new Thread(task);// Run the task in a background thread + backgroundThread.setDaemon(true);// Terminate the running thread if the application exits + backgroundThread.start();// Start the thread + } + + ButtonBonReceptionAjouter.setText("Enregister La Bon de Réception"); + ButtonBonReceptionAjouter.setDisable(false); + ProgressIndicatorSaveBonReception.setVisible(false); + + } + }); + + } + + + public void getBonReceptionFrs(BonReceptionFrs BonReception) + { + TextFieldNumero.setText(BonReception.getNumero()); + TextFieldHeur.setText(BonReception.getHeur()); + TextFieldTransporteur.setText(BonReception.getTransporteur()); + DatePickerDateReception.setValue(Adaptateur.StringToLocalDate(BonReception.getDate())); + + + Fournisseur Frs = BonReception.getFournisseur(); + if(Frs != null){ + TextFieldFournisseur.setText(Frs.getCode()+" - "+Frs.getNom()); + } + + String Local = BonReception.getLocal(); + if(Local != null){ + int indexLocale = ListLocale.indexOf(Local); + ChoiceBoxLocalReception.getSelectionModel().select(indexLocale); + } + } + + public BonReceptionFrs setBonReceptionFrs() + { + BonReceptionFrs BonReception = new BonReceptionFrs(); + + if(!TextFieldFournisseur.getText().equals("")){ + String[] Fournisseur = TextFieldFournisseur.getText().split(" - ", -1); + Fournisseur Frs = new Fournisseur(); + Frs.setCode(Fournisseur[0]); + Frs.setNom(Fournisseur[1]); + BonReception.setFournisseur(Frs); + } + + + if(DatePickerDateReception.getValue() != null){ + BonReception.setDate(DatePickerDateReception.getValue().toString()); + } + + if(ChoiceBoxLocalReception.getValue() != null){ + BonReception.setLocal(ChoiceBoxLocalReception.getValue().toString()); + } + + BonReception.setHeur(TextFieldHeur.getText()); + + BonReception.setNumero(Adaptateur.addSlashes(TextFieldNumero.getText())); + BonReception.setTransporteur(Adaptateur.addSlashes(TextFieldTransporteur.getText())); + BonReception.setNetPayer(NetAPayer.getText()); + + ObservableList ObservableListBonReceptionFrs = FXCollections.observableArrayList(); + for(ListeProduit liste : data){ + if(!liste.getReference().equals("")){ + ObservableListBonReceptionFrs.add(new BonReceptionProduitList("", "", liste.getReference(), "", liste.getQuantite(), liste.getPrixHT(), liste.getTotalHT(), liste.getTVA(), liste.getTotalTTC())); + } + + } + BonReception.setListProduit(ObservableListBonReceptionFrs); + + return BonReception; + } + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + CalculeListeProduit(); + TableViewListeProduit.setStyle(".table-row-cell:selected{ -fx-background-color:transparent ;}"); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + + + @FXML + private void AddLigneButtonAction(ActionEvent event) throws IOException { + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + + private void ReferenceMouseClick(){ + TabColReference.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + produit = produitDB.getProduit(t.getNewValue()); + if(produit.getReference() != null){ + ListeProduit Liste = new ListeProduit(produit.getReference(),produit.getDesignation(),"1", produit.getPrixachatht(), "0", "", produit.getTvaachat(),"0"); + AffectationTableView(Liste,t.getTablePosition().getRow()) ; + } + else{ + AffectationTableView(new ListeProduit("","","","","","","",""),t.getTablePosition().getRow()) ; + } + + } + }); + } + + private void QantiteMouseClick(){ + TabColQuantite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newquantite = t.getNewValue() ; + try{ + newquantite = newquantite.replace(',','.'); + if(Float.parseFloat(newquantite)<1){ + newquantite = "1"; + } + } + catch(NumberFormatException nfe){ + newquantite = "1"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un quantité dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setQuantite(newquantite); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), newquantite,Liste.getPrixHT(), Liste.getRemise(),"",Liste.getTVA(),""); + //NewList = CalculeProduit(NewList); + AffectationTableView(NewList,t.getTablePosition().getRow()) ; + + } + } + }); + } + + + + private void AffectationTableView(ListeProduit ListeProd, int EmplacementLigne){ + boolean result = false ; + int indise=0; + int Position = 0; + + if(data.size()>0){ + do{ //Vérifier si le produit exsiste deja + if(data.get(indise).getReference().equals(ListeProd.getReference())){ + result = true ; + Position = indise ; + //System.out.println("existe Position:"+indise); + } + indise++; + }while(data.size()>indise && !result); + + if(result){ //si la ligne exsite déja + if(EmplacementLigne!= -1){ + if(Position == EmplacementLigne){ + data.set(Position, ListeProd); + } + else{ + data.set(EmplacementLigne, new ListeProduit("","","","","","","","")); + } + } + }else{ + if(EmplacementLigne!= -1){ + data.set(EmplacementLigne, ListeProd); + }else{ + data.add(ListeProd); + } + } + } + else{ + data.add(ListeProd); + } + + CalculeListeProduit(); + + TableViewListeProduit.setItems(data); + TableViewListeProduit.setVisible(false); + TableViewListeProduit.setVisible(true); + } + + private void CalculeListeProduit(){ //calculer et afficher la détail des produits + float netaPayer = 0; + float Remises = 0; + float totalTVA = 0; + float total_H_T_Net= 0; + NetAPayer.setText(""); + + //calcule + for(ListeProduit liste : data){ + float totaht = Adaptateur.StringToFloat(liste.getTotalHT()) ; + float prix_U_H_T = Adaptateur.StringToFloat(liste.getPrixHT()) ; + float remises = Adaptateur.StringToFloat(liste.getRemise().replace("%", "")) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")); + float qte = Adaptateur.StringToFloat(liste.getQuantite()); + + totalTVA = totalTVA + ((totaht * tva) /100) ; + Remises = Remises + (prix_U_H_T * remises)/100 ; + total_H_T_Net = total_H_T_Net + totaht ; + } + + if(total_H_T_Net>0){ + netaPayer = total_H_T_Net + totalTVA; + NetAPayer.setText(Adaptateur.ArrondFloatToString(netaPayer)); + } + } + + + public Object[] getDefaultSaveDataImport(){ + Object[] ArrayObject = new Object[10]; + ArrayObject[0] = this.data; + ArrayObject[1] = setBonReceptionFrs(); + return ArrayObject; + } + + public void SetDefaultSaveDataImport(Object[] ArrayObject){ + if(ArrayObject[0] != null){ + this.data = (ObservableList) ArrayObject[0]; + this.CalculeListeProduit(); + this.TableViewListeProduit.setItems(data); + } + if(ArrayObject[1] != null){ + BonReceptionFrs BonReception = (BonReceptionFrs) ArrayObject[1]; + getBonReceptionFrs(BonReception); + } + if(ArrayObject[6] != null){ + this.SetProduit( (Produit) ArrayObject[6] ); + } + } + + @FXML + private void RechercheProduitButtonAction(ActionEvent event) throws IOException { + + final RechercherProduitController rechercheproduit = new RechercherProduitController(false); + + rechercheproduit.ArrayObjectDataSave = this.getDefaultSaveDataImport(); + + rechercheproduit.Show(); + + rechercheproduit.TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected ItemButtonCell + rechercheproduit.ArrayObjectDataSave[6] = ((Produit)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonReceptionFrs/BonReceptionAjouterFrs.fxml")); + Parent ParentBonReceptionAjouterFXML = (Parent) fxmlLoader.load(); + + BonReceptionAjouterFrsController BonReceptionAjouterFrs = fxmlLoader.getController(); + + + BonReceptionAjouterFrs.SetDefaultSaveDataImport(rechercheproduit.ArrayObjectDataSave); + + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentBonReceptionAjouterFXML, 2); + + + } catch (IOException ex) { + Logger.getLogger(CommandeCltPasserController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + } + + public void SetProduit(Produit produit){ + + //Supprimer les igne vide + if((data.size()>0) && (data.get(data.size()-1).getReference().isEmpty())){ + data.remove(data.size()-1); + } + + if(produit != null){ + ListeProduit ListeProd = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixachatht(),"0",produit.getPrixachatttc(),produit.getTvaachat(),"0"); + AffectationTableView(ListeProd,-1); + } + + } + +} diff --git a/src/main/java/Controllers/BonReceptionFrs/BonReceptionDetailFrsController.java b/src/main/java/Controllers/BonReceptionFrs/BonReceptionDetailFrsController.java new file mode 100644 index 0000000..597f504 --- /dev/null +++ b/src/main/java/Controllers/BonReceptionFrs/BonReceptionDetailFrsController.java @@ -0,0 +1,150 @@ +package Controllers.BonReceptionFrs; + +import Controllers.Traitement.Adaptateur; +import Models.BonReceptionFrs.BonReceptionDB; +import Models.BonReceptionFrs.BonReceptionFrs; +import Models.BonReceptionFrs.BonReceptionProduitList; +import Models.Fournisseur.Fournisseur; +import Models.User.Profile; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BonReceptionDetailFrsController implements Initializable { + + @FXML private AnchorPane PaneBonReceptionDetailFrs ; + + @FXML public AnchorPane PaneSucessFrs ; + + @FXML public AnchorPane AnchorPaneDetailInformation; + + @FXML private AnchorPane AnchorPaneLoading; + + @FXML private Text TextNumero; + @FXML private Text TextDateReception; + @FXML private Text TextHeurReception; + @FXML private Text TextLocalReception; + @FXML private Text TextTransporteur; + @FXML private Text TextProfile; + @FXML private Text TextNomFrs; + @FXML private Text TextSpecialiteFrs; + @FXML private Text TextFormesFrs; + @FXML private Text TextAdresseFrs; + @FXML private Text TextTele1Frs; + @FXML private Text TextTele2Frs; + @FXML private Text TextNetPayer; + + @FXML public TableView TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignation; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + + private Service ThreadBonReceptionDetailFrs; + + BonReceptionFrs BonReception; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixUnitaireHorsTaxe")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("PrixUnitaireHorsTaxenNet")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("Tva")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + } + + + public void setDataBonReceptionDetailFrs(final String IdBonReceptionFrs){ + ThreadBonReceptionDetailFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + BonReception = new BonReceptionDB().getBonReceptionFrs(IdBonReceptionFrs, null, null); + + return null; + } + }; + } + }; + ThreadBonReceptionDetailFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + TextNumero.setText(BonReception.getNumero()); + TextDateReception.setText(BonReception.getDate()); + TextHeurReception.setText(BonReception.getHeur()); + TextLocalReception.setText(BonReception.getLocal()); + TextTransporteur.setText(BonReception.getTransporteur()); + + Profile profile = BonReception.getProfile(); + TextProfile.setText(profile.getNom()+" "+profile.getPrenom()); + + Fournisseur Frs = BonReception.getFournisseur(); + TextNomFrs.setText(Frs.getNom()); + TextSpecialiteFrs.setText(Frs.getSpecialite()); + TextFormesFrs.setText(Frs.getFormes()); + TextAdresseFrs.setText(Frs.getAdresse()); + TextTele1Frs.setText(Frs.getTele1()); + TextTele2Frs.setText(Frs.getTele2()); + ObservableList BRProduitList = BonReception.getListProduit(); + float NetPayer = 0; + for(int i=0; i TableViewBonReceptionGestion; + @FXML public TableColumn TabColNumero; + @FXML public TableColumn TabColFournisseur; + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColHeur; + @FXML public TableColumn TabColLocalReception; + @FXML public TableColumn TabColTransporteur; + @FXML public TableColumn TabColFacture; + @FXML public TableColumn TabColDetail; + + @FXML public TextField TextFieldNumero ; + @FXML public TextField TextFieldTransporteur ; + @FXML public TextField TextFieldFacture ; + @FXML public DatePicker DatePickerDateReception; + @FXML private TextField TextFieldFournisseur; + @FXML public ChoiceBox ChoiceBoxLocalReception ; + + @FXML public AnchorPane PaneProgressBonReception; + + @FXML private Button ButtonSearchBonReceptionFrs; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchBonReceptionGestionFrs; + + public static ArrayList ListFournisseur = new ArrayList<>(); + public static ArrayList ListLocale = new ArrayList<>(); + + String LocalReception = ""; + String IdFournisseur = ""; + + Logger logger = Logger.getLogger(BonReceptionGestionFrsController.class.getName()); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColNumero.setStyle( "-fx-alignment: CENTER;"); + TabColNumero.getStyleClass().add("Center"); + TabColNumero.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColFournisseur.setStyle( "-fx-alignment: CENTER;"); + TabColFournisseur.getStyleClass().add("Center"); + TabColFournisseur.setCellValueFactory(new PropertyValueFactory("Fournisseur")); + + TabColDate.setStyle( "-fx-alignment: CENTER;"); + TabColDate.getStyleClass().add("Center"); + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + + TabColHeur.setStyle( "-fx-alignment: CENTER;"); + TabColHeur.getStyleClass().add("Center"); + TabColHeur.setCellValueFactory(new PropertyValueFactory("Heur")); + + TabColLocalReception.setStyle( "-fx-alignment: CENTER;"); + TabColLocalReception.getStyleClass().add("Center"); + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("LocalReception")); + + TabColTransporteur.setStyle( "-fx-alignment: CENTER;"); + TabColTransporteur.getStyleClass().add("Center"); + TabColTransporteur.setCellValueFactory(new PropertyValueFactory("Transporteur")); + + TabColFacture.setStyle( "-fx-alignment: CENTER;"); + TabColFacture.getStyleClass().add("Center"); + TabColFacture.setCellValueFactory(new PropertyValueFactory("Facture")); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + setDefaultFormData(); + + ChoiceBoxLocalReception.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue ov, String t, String ValLocal) { + LocalReception = ValLocal; + } + }); + + + TextFieldFournisseur.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, String newValue) { + if(newValue.contains(" - ")){ + String[] array = newValue.split(" - ", -1); + IdFournisseur = array[0]; + } + } + }); + + + ButtonSearchBonReceptionFrs.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchBonReceptionGestionFrs(); + } + }); + + PaneBonReceptionGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchBonReceptionGestionFrs(); + } + } + }); + + GestionSearchBonReceptionFrs(); + + + + } + + + private class ButtonCell extends TableCell { + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + BonReceptionGestionList BonReceptionGestion = (BonReceptionGestionList)getTableRow().getItem(); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonReceptionFrs/BonReceptionDetailFrs.fxml")); + Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); + BonReceptionDetailFrsController BonReceptionDetailFrs = fxmlLoader.getController(); + BonReceptionDetailFrs.setDataBonReceptionDetailFrs(BonReceptionGestion.getCode()); + PaneBonReceptionGestion.getChildren().clear(); + PaneBonReceptionGestion.getChildren().add(ParentFxmlFournisseur); + BonReceptionDetailFrs.setContainsDetailInformation(); + }catch (IOException ex) { + logger.error(ex.getMessage()); + } + + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + @FXML + private void BonReceptionAjouterFrsButtonAction(ActionEvent event) throws IOException { + PaneBonReceptionGestion.getChildren().clear(); + PaneBonReceptionGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/BonReceptionFrs/BonReceptionAjouterFrs.fxml"))); + } + + + private void setDefaultFormData() + { + ProgressBarBonReceptionFrs.setVisible(true); + + ThreadSearchBonReceptionGestionFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + try{ + ListFournisseur = new FournisseurDB().getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseur, ListFournisseur); + + ListLocale = new StockDB().getAllListLocal(); + ChoiceBoxLocalReception.getItems().addAll(ListLocale); + }catch (Exception ex) { + logger.error(ex.getMessage()); + } + return null; + } + }; + } + }; + ThreadSearchBonReceptionGestionFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBonReceptionFrs.setVisible(false); + + } + }); + + ThreadSearchBonReceptionGestionFrs.setOnFailed(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + logger.error(ThreadSearchBonReceptionGestionFrs.getException()); + } + }); + + ThreadSearchBonReceptionGestionFrs.start(); + } + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchBonReceptionGestionFrs() + { + ProgressBarBonReceptionFrs.setVisible(true); + + ButtonSearchBonReceptionFrs.setDisable(true); + + ThreadSearchBonReceptionGestionFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateReception = ""; + if(DatePickerDateReception.getValue() != null){ + DateReception = DatePickerDateReception.getValue().toString(); + } + + + + ObservableList ListBonReceptionGestionFrs = new BonReceptionGestionDB().SearchBonReceptionGestionFrs( + position, + nbrligne, + TextFieldNumero.getText(), + TextFieldTransporteur.getText(), + TextFieldFacture.getText(), + DateReception, + IdFournisseur, + LocalReception); + + TableViewBonReceptionGestion.setItems(ListBonReceptionGestionFrs); + + totalcount = new BonReceptionGestionDB().nbrBonReceptionGestionFrsGestion(TextFieldNumero.getText(), TextFieldTransporteur.getText(), TextFieldFacture.getText(), DateReception, IdFournisseur, LocalReception); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchBonReceptionGestionFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBonReceptionFrs.setVisible(false); + ButtonSearchBonReceptionFrs.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchBonReceptionGestionFrs.start(); + } + + + private void NextLastSearchBonReceptionGestionFrs(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarBonReceptionFrs.setVisible(true); + + ButtonSearchBonReceptionFrs.setDisable(true); + + ThreadSearchBonReceptionGestionFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateReception = ""; + if(DatePickerDateReception.getValue() != null){ + DateReception = DatePickerDateReception.getValue().toString(); + } + + ObservableList ListBonReceptionGestionFrss = new BonReceptionGestionDB().SearchBonReceptionGestionFrs(ParmPosition, ParamNbrligne, TextFieldNumero.getText(), TextFieldTransporteur.getText(), TextFieldFacture.getText(), DateReception, IdFournisseur, LocalReception); + + TableViewBonReceptionGestion.setItems(ListBonReceptionGestionFrss); + + return null; + } + }; + } + }; + + ThreadSearchBonReceptionGestionFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarBonReceptionFrs.setVisible(false); + ButtonSearchBonReceptionFrs.setDisable(false); + } + }); + ThreadSearchBonReceptionGestionFrs.start(); + } + + private void GestionSearchBonReceptionFrs() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchBonReceptionGestionFrs(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchBonReceptionGestionFrs(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchBonReceptionGestionFrs(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/Caisse/CaisseEntreController.java b/src/main/java/Controllers/Caisse/CaisseEntreController.java new file mode 100644 index 0000000..dbfde0e --- /dev/null +++ b/src/main/java/Controllers/Caisse/CaisseEntreController.java @@ -0,0 +1,457 @@ +package Controllers.Caisse; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Caisse.CaisseDB; +import Models.Caisse.CaisseEntreListe; +import Models.Caisse.CaisseListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.PageLayout; +import javafx.print.PageOrientation; +import javafx.print.PageRange; +import javafx.print.Paper; +import javafx.print.Printer; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class CaisseEntreController implements Initializable { + + @FXML private AnchorPane AnchorPaneCaisseClt; + + @FXML private ProgressBar ProgressBarCaisseEnterClt; + + @FXML private DatePicker DatePickerDebut; + @FXML private DatePicker DatePickerFin; + + @FXML private Text TotalEnter; + + @FXML private CheckBox CheckBoxChequeClt; + @FXML private CheckBox CheckBoxEspace; + @FXML private CheckBox CheckBoxCarteBancaire; + + @FXML private CheckBox CheckBoxPaiementTraite ; + @FXML private CheckBox CheckBoxVenteComptant ; + @FXML private CheckBox CheckBoxVenteCommandeAvance ; + @FXML private CheckBox CheckBoxVenteFaciliteAvance ; + @FXML private CheckBox CheckBoxVersementCheque ; //l’encaissement + + @FXML public TableView TableViewCaisseCltEnter ; + + @FXML private TableColumn TabColChequeClt; + @FXML private TableColumn TabColEspace; + @FXML private TableColumn TabColCarteBancaire; + + @FXML private TableColumn TabColIdCaisse; + @FXML private TableColumn TabColType; + @FXML private TableColumn TabColDate; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColChequeCltNumero; + @FXML private TableColumn TabColChequeCltBanque; + @FXML private TableColumn TabColEspaceNom; + @FXML private TableColumn TabColEspacePrenom; + @FXML private TableColumn TabColCateBancaireNumero; + @FXML private TableColumn TabColCateBancaireBanque; + + @FXML private Button ButtonEnter; + @FXML private Button ButtonPrintCaisseEntre; + + private Service ThreadCaisseEnter; + + CaisseDB CaisseDB= new CaisseDB(); + + ObservableList ObsListCaisseCltEnter; + ObservableList TempoObsListCaisseCltEnter; + private String DateDebut ; + private String DateFin; + + contro clt = new contro(); + + public void getDetailEnterCheck() + { + TempoObsListCaisseCltEnter = FXCollections.observableArrayList(); + + boolean CheckChequeClt = CheckBoxChequeClt.isSelected(); + boolean CheckEspace = CheckBoxEspace.isSelected(); + boolean CheckCarteBancaire= CheckBoxCarteBancaire.isSelected(); + + boolean CheckPaiementTraite = CheckBoxPaiementTraite.isSelected(); + boolean CheckVenteComptant = CheckBoxVenteComptant.isSelected(); + boolean CheckVenteCommandeAvance = CheckBoxVenteCommandeAvance.isSelected(); + boolean CheckVenteFaciliteAvance = CheckBoxVenteFaciliteAvance.isSelected(); + boolean CheckVersementCheque = CheckBoxVersementCheque.isSelected(); + + boolean SelectedCheck; + boolean SelectedCheckEspace; + boolean SelectedCheckChequeClt; + boolean SelectedCheckCarteBancaire; + + float FloatTotalEnter = 0; + + // 0-Vente Comptant | 1-Vente Facilité Avance | 2 Vente Commande Avance | 3 traite clt | 4 ChequeClt + if(ObsListCaisseCltEnter.size()>0){ + int indice = 0; + while(indice("IdCaisseClt")); + + TabColType.setStyle( "-fx-alignment: CENTER;");TabColType.getStyleClass().add("Center"); + TabColType.setCellValueFactory(new PropertyValueFactory("Type")); + + TabColDate.setStyle( "-fx-alignment: CENTER;");TabColDate.getStyleClass().add("Center"); + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + + TabColMontant.setStyle( "-fx-alignment: CENTER;");TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColChequeCltNumero.setStyle( "-fx-alignment: CENTER;");TabColChequeCltNumero.getStyleClass().add("Center"); + TabColChequeCltNumero.setCellValueFactory(new PropertyValueFactory("ChequeCltNumero")); + + TabColChequeCltBanque.setStyle( "-fx-alignment: CENTER;");TabColChequeCltBanque.getStyleClass().add("Center"); + TabColChequeCltBanque.setCellValueFactory(new PropertyValueFactory("ChequeCltBanque")); + + TabColEspaceNom.setStyle( "-fx-alignment: CENTER;");TabColEspaceNom.getStyleClass().add("Center"); + TabColEspaceNom.setCellValueFactory(new PropertyValueFactory("EspaceNom")); + + TabColEspacePrenom.setStyle( "-fx-alignment: CENTER;");TabColEspacePrenom.getStyleClass().add("Center"); + TabColEspacePrenom.setCellValueFactory(new PropertyValueFactory("EspacePrenom")); + + TabColCateBancaireNumero.setStyle( "-fx-alignment: CENTER;");TabColCateBancaireNumero.getStyleClass().add("Center"); + TabColCateBancaireNumero.setCellValueFactory(new PropertyValueFactory("CateBancaireNumero")); + + TabColCateBancaireBanque.setStyle( "-fx-alignment: CENTER;");TabColCateBancaireBanque.getStyleClass().add("Center"); + TabColCateBancaireBanque.setCellValueFactory(new PropertyValueFactory("CateBancaireBanque")); + + ButtonEnter.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try{ + DateDebut = DatePickerDebut.getConverter().fromString(DatePickerDebut.getEditor().getText()).toString(); + DateFin = DatePickerFin.getConverter().fromString(DatePickerFin.getEditor().getText()).toString(); + getCaisseEnterThread(); + }catch(Exception ex){} + + } + }); + + this.FiltreCaisse(); + + this.CaisseEntrePrintButton(); + } + + private void FiltreCaisse() + { + CheckBoxChequeClt.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + CheckBoxEspace.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + CheckBoxCarteBancaire.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + + CheckBoxPaiementTraite.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + CheckBoxVenteComptant.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + CheckBoxVenteCommandeAvance.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + CheckBoxVenteFaciliteAvance.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + + CheckBoxVersementCheque.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + CheckBoxVersementCheque.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailEnterCheck(); + } + }); + + + } + + + public void getCaisseEnterThread() + { + TotalEnter.setText("--"); + + DatePickerDebut.setDisable(true); + DatePickerFin.setDisable(true); + ButtonEnter.setDisable(true); + ButtonPrintCaisseEntre.setDisable(true); + + ProgressBarCaisseEnterClt.setVisible(true); + TableViewCaisseCltEnter.setItems(null); + + CheckBoxChequeClt.setSelected(true); + CheckBoxEspace.setSelected(true); + CheckBoxCarteBancaire.setSelected(true); + + CheckBoxPaiementTraite.setSelected(true); + CheckBoxVenteComptant.setSelected(true); + CheckBoxVenteCommandeAvance.setSelected(true); + CheckBoxVenteFaciliteAvance.setSelected(true); + CheckBoxVersementCheque.setSelected(true); + + + ThreadCaisseEnter = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + ObsListCaisseCltEnter = CaisseDB.GetDataCaisseCltEnter(DateDebut, DateFin); + int indice = 0; + float FloatTotalEnter = 0; + while(indice(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarCaisseEnterClt.setVisible(false); + DatePickerDebut.setDisable(false); + DatePickerFin.setDisable(false); + ButtonEnter.setDisable(false); + ButtonPrintCaisseEntre.setDisable(false); + } + }); + ThreadCaisseEnter.start(); + } + + + private void CaisseEntrePrintButton() + { + ButtonPrintCaisseEntre.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + String strPaiment = ""; + if(CheckBoxChequeClt.isSelected()){ strPaiment += "Chéque | "; } + if(CheckBoxEspace.isSelected()){ strPaiment += "Espéce | "; } + if(CheckBoxCarteBancaire.isSelected()){ strPaiment += "Carte Bancaire | "; } + strPaiment = strPaiment.substring(0, strPaiment.length() - 3); + + String strType = ""; + if(CheckBoxPaiementTraite.isSelected()){ strType += "Traite | "; } + if(CheckBoxVenteComptant.isSelected()){ strType += "Vente Comptant | "; } + if(CheckBoxVenteCommandeAvance.isSelected()){ strType += "Vente Commande Avance | "; } + if(CheckBoxVenteFaciliteAvance.isSelected()){ strType += "Vente Facilité Avance | "; } + if(CheckBoxVersementCheque.isSelected()){ strType += "Chèque | "; } + + strType = strType.substring(0, strType.length() - 3); + + int SizelistCaisseCltEntert = TempoObsListCaisseCltEnter.size(); + int total = SizelistCaisseCltEntert / 13 + 1 ; + int page = 0; + + String strEspace; String strCheque; String strCarteBancaire; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) + { + Printer printer = jobPrint.getPrinter(); + PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT); + + for (int i=0; i listTemp = FXCollections.observableArrayList(); + + for (int j=i; (j<(i+13)) && (j TableViewCaisseCltEnter ; + + @FXML private TableColumn TabColIdCaisse; + @FXML private TableColumn TabColType; + @FXML private TableColumn TabColDate; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColChequeClt; + @FXML private TableColumn TabColEspece; + @FXML private TableColumn TabColCateBancaire; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColIdCaisse.setStyle( "-fx-alignment: CENTER;");TabColIdCaisse.getStyleClass().add("Center"); + TabColIdCaisse.setCellValueFactory(new PropertyValueFactory("IdCaisseClt")); + + TabColType.setCellValueFactory(new PropertyValueFactory("Type")); + + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + + TabColMontant.setStyle( "-fx-alignment: CENTER;");TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColChequeClt.setCellValueFactory(new PropertyValueFactory("Cheque")); + + TabColEspece.setCellValueFactory(new PropertyValueFactory("Espece")); + + TabColCateBancaire.setCellValueFactory(new PropertyValueFactory("CateBancaire")); + } + + + public void setCaisseEntrePrint(String Date, + String Local, + String Montant, + String Paiement, + String Page, + String Type, + ObservableList obsListCaisseCltEnter ) + { + TextDate.setText(Date); + TextLocal.setText(Local); + TextMontant.setText(Montant); + TextPaiement.setText(Paiement); + TextPage.setText(Page); + TextType.setText(Type); + + TableViewCaisseCltEnter.setItems(obsListCaisseCltEnter); + } +} diff --git a/src/main/java/Controllers/Caisse/CaisseSortieController.java b/src/main/java/Controllers/Caisse/CaisseSortieController.java new file mode 100644 index 0000000..b188861 --- /dev/null +++ b/src/main/java/Controllers/Caisse/CaisseSortieController.java @@ -0,0 +1,437 @@ +package Controllers.Caisse; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Caisse.CaisseDB; +import Models.Caisse.CaisseSortieListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.PageLayout; +import javafx.print.PageOrientation; +import javafx.print.PageRange; +import javafx.print.Paper; +import javafx.print.Printer; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class CaisseSortieController implements Initializable { + + @FXML private AnchorPane AnchorPaneCaisseClt; + + @FXML private DatePicker DatePickerDebut; + @FXML private DatePicker DatePickerFin; + + @FXML private Text TotalSortie; + + @FXML private CheckBox CheckBoxChequeClt; + @FXML private CheckBox CheckBoxEspace; + @FXML private CheckBox CheckBoxCarteBancaire; + + @FXML private CheckBox CheckBoxAchatFrs; + @FXML private CheckBox CheckBoxFraisFrs; + @FXML private CheckBox CheckBoxTraiteFrs; + @FXML private CheckBox CheckBoxAvoirV; + + @FXML private Button ButtonSortie; + @FXML private Button ButtonPrintCaisseSortie; + + @FXML private ProgressBar ProgressBarCaisseSortieFrs; + @FXML private TableView TableViewCaisseFrsSortie ; + + @FXML private TableColumn TabColIdCaisseFrs; + @FXML private TableColumn TabColTypeFrs; + @FXML private TableColumn TabColDateFrs; + @FXML private TableColumn TabColMontantFrs; + + @FXML private TableColumn TabColEspeceFrs; + @FXML private TableColumn TabColChequeFrs; + @FXML private TableColumn TabColCarteBancaireFrs; + + private Service ThreadCaisseSortie; + + CaisseDB CaisseDB= new CaisseDB(); + + ObservableList ObsListCaisseFrsSortie; + ObservableList TempoObsListCaisseFrsSortie; + + private String DateDebut ; + private String DateFin; + + contro clt = new contro(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + + DatePickerDebut.setValue(LocalDate.now()); + DatePickerFin.setValue(LocalDate.now()); + + DateDebut = DatePickerDebut.getValue().toString(); + DateFin = DatePickerFin.getValue().toString(); + + + TabColIdCaisseFrs.setStyle( "-fx-alignment: CENTER;");TabColIdCaisseFrs.getStyleClass().add("Center"); + TabColIdCaisseFrs.setCellValueFactory(new PropertyValueFactory("IdCaisseClt")); + + TabColTypeFrs.setStyle( "-fx-alignment: CENTER;");TabColTypeFrs.getStyleClass().add("Center"); + TabColTypeFrs.setCellValueFactory(new PropertyValueFactory("Type")); + + TabColDateFrs.setStyle( "-fx-alignment: CENTER;");TabColDateFrs.getStyleClass().add("Center"); + TabColDateFrs.setCellValueFactory(new PropertyValueFactory("Date")); + + TabColMontantFrs.setStyle( "-fx-alignment: CENTER;");TabColMontantFrs.getStyleClass().add("Center"); + TabColMontantFrs.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColEspeceFrs.setStyle( "-fx-alignment: CENTER;");TabColEspeceFrs.getStyleClass().add("Center"); + TabColEspeceFrs.setCellValueFactory(new PropertyValueFactory("Espece")); + + TabColChequeFrs.setStyle( "-fx-alignment: CENTER;");TabColChequeFrs.getStyleClass().add("Center"); + TabColChequeFrs.setCellValueFactory(new PropertyValueFactory("Cheque")); + + TabColCarteBancaireFrs.setStyle( "-fx-alignment: CENTER;");TabColCarteBancaireFrs.getStyleClass().add("Center"); + TabColCarteBancaireFrs.setCellValueFactory(new PropertyValueFactory("CarteBancaire")); + + ButtonSortie.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try{ + DateDebut = DatePickerDebut.getConverter().fromString(DatePickerDebut.getEditor().getText()).toString(); + DateFin = DatePickerFin.getConverter().fromString(DatePickerFin.getEditor().getText()).toString(); + getCaisseSortieThread(); + }catch(Exception ex){} + + } + }); + + this.FiltreCaisse(); + + this.CaisseSortiePrintButton(); + + } + + private void FiltreCaisse(){ + CheckBoxChequeClt.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + CheckBoxEspace.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + CheckBoxCarteBancaire.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + + CheckBoxAchatFrs.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + CheckBoxFraisFrs.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + CheckBoxTraiteFrs.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + + CheckBoxAvoirV.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + getDetailSortieCheck(); + } + }); + } + + + public void getCaisseSortieThread() + { + TotalSortie.setText("--"); + + DatePickerDebut.setDisable(true); + DatePickerFin.setDisable(true); + ButtonSortie.setDisable(true); + ButtonPrintCaisseSortie.setDisable(true); + + ProgressBarCaisseSortieFrs.setVisible(true); + TableViewCaisseFrsSortie.setItems(null); + + CheckBoxChequeClt.setSelected(true); + CheckBoxEspace.setSelected(true); + CheckBoxCarteBancaire.setSelected(true); + + //Sortie + CheckBoxAchatFrs.setSelected(true); + CheckBoxFraisFrs.setSelected(true); + + ThreadCaisseSortie = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + /*******************Sortie**********************/ + ObsListCaisseFrsSortie = CaisseDB.GetDataCaisseFrsSortie(DateDebut, DateFin); + System.out.println(ObsListCaisseFrsSortie.size()); + TempoObsListCaisseFrsSortie = ObsListCaisseFrsSortie; + + int indiceSortie = 0; + float FloatTotalSortie = 0; + while(indiceSortie(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarCaisseSortieFrs.setVisible(false); + DatePickerDebut.setDisable(false); + DatePickerFin.setDisable(false); + ButtonPrintCaisseSortie.setDisable(false); + ButtonSortie.setDisable(false); + } + }); + ThreadCaisseSortie.start(); + } + + + + + + + public void getDetailSortieCheck(){ + + TempoObsListCaisseFrsSortie = FXCollections.observableArrayList(); + + boolean CheckCheque = CheckBoxChequeClt.isSelected(); + boolean CheckEspace = CheckBoxEspace.isSelected(); + boolean CheckCarteBancaire= CheckBoxCarteBancaire.isSelected(); + + boolean CheckFrais = CheckBoxFraisFrs.isSelected(); + boolean CheckAchat = CheckBoxAchatFrs.isSelected(); + boolean CheckTraite = CheckBoxTraiteFrs.isSelected(); + boolean CheckAvoirV = CheckBoxAvoirV.isSelected(); + + float FloatTotalSortie = 0; + + // 0-Vente Comptant | 1-Vente Facilité Avance | 2 Vente Commande Avance | 3 traite clt | 4 ChequeClt + if(ObsListCaisseFrsSortie.size()>0){ + int indice = 0; + while(indice(){ + @Override + public void handle(ActionEvent t) { + String strPaiment = ""; + if(CheckBoxChequeClt.isSelected()){ strPaiment += "Chéque | "; } + if(CheckBoxEspace.isSelected()){ strPaiment += "Espéce | "; } + if(CheckBoxCarteBancaire.isSelected()){ strPaiment += "Carte Bancaire | "; } + strPaiment = strPaiment.substring(0, strPaiment.length() - 3); + + String strType = ""; + if(CheckBoxAchatFrs.isSelected()){ strType += "Achat | "; } + if(CheckBoxFraisFrs.isSelected()){ strType += "Frais | "; } + if(CheckBoxTraiteFrs.isSelected()){ strType += "Traite | "; } + if(CheckBoxAvoirV.isSelected()){ strType += "Avoir | "; } + strType = strType.substring(0, strType.length() - 3); + + int SizelistCaisseCltSortiet = TempoObsListCaisseFrsSortie.size(); + int total = SizelistCaisseCltSortiet / 13 + 1 ; + int page = 0; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) + { + Printer printer = jobPrint.getPrinter(); + PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT); + + for (int i=0; i listTemp = FXCollections.observableArrayList(); + + for (int j=i; (j<(i+13)) && (j TableViewCaisseCltSortie ; + + @FXML private TableColumn TabColIdCaisse; + @FXML private TableColumn TabColType; + @FXML private TableColumn TabColDate; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColChequeClt; + @FXML private TableColumn TabColEspece; + @FXML private TableColumn TabColCarteBancaire; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColIdCaisse.setStyle( "-fx-alignment: CENTER;");TabColIdCaisse.getStyleClass().add("Center"); + TabColIdCaisse.setCellValueFactory(new PropertyValueFactory("IdCaisseClt")); + + TabColType.setCellValueFactory(new PropertyValueFactory("Type")); + + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + + TabColMontant.setStyle( "-fx-alignment: CENTER;");TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColChequeClt.setCellValueFactory(new PropertyValueFactory("Cheque")); + + TabColEspece.setCellValueFactory(new PropertyValueFactory("Espece")); + + TabColCarteBancaire.setCellValueFactory(new PropertyValueFactory("CarteBancaire")); + } + + + public void setCaisseSortiePrint(String Date, + String Local, + String Montant, + String Paiement, + String Page, + String Type, + ObservableList obsListCaisseCltSortie ) + { + TextDate.setText(Date); + TextLocal.setText(Local); + TextMontant.setText(Montant); + TextPaiement.setText(Paiement); + TextPage.setText(Page); + TextType.setText(Type); + + TableViewCaisseCltSortie.setItems(obsListCaisseCltSortie); + } +} diff --git a/src/main/java/Controllers/Caisse/FraisAjouterController.java b/src/main/java/Controllers/Caisse/FraisAjouterController.java new file mode 100644 index 0000000..9c12b1e --- /dev/null +++ b/src/main/java/Controllers/Caisse/FraisAjouterController.java @@ -0,0 +1,220 @@ +package Controllers.Caisse; + +import Controllers.Traitement.contro; +import Models.Caisse.Frais; +import Models.Caisse.FraisDB; +import Models.User.User; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDateTime; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.animation.FadeTransition; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +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.Button; +import javafx.scene.control.DatePicker; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FraisAjouterController implements Initializable { + + @FXML private AnchorPane PaneAjouterFrais ; + @FXML private AnchorPane AnchorPaneFrais ; + @FXML private StackPane StackPaneSucces; + + @FXML private ProgressIndicator ProgrssLoading; + @FXML private Button ButtonAjouterFrais; + + @FXML private TextField TextFieldMontant; + + @FXML private RadioButton RadioEspace; + + @FXML private RadioButton RadioCheque; + @FXML private GridPane GridPaneCheque; + @FXML private TextField TextFieldNumeroCheque; + @FXML private TextField TextFieldBanqueCheque; + @FXML private DatePicker DatePickerDateCheque; + + @FXML private RadioButton RadioCarte; + @FXML private GridPane GridPaneCarte; + @FXML private TextField TextFieldNumeroTransation; + @FXML private TextField TextFieldBanqueCarte; + + @FXML private TextField TextFieldObject; + @FXML private TextField TextFieldPersonne; + @FXML private TextArea TextAreaContenu; + + @FXML private Text ErreurMontant; + @FXML private Text ErreurNumeroCheque; + @FXML private Text ErreurBanqueCheque; + @FXML private Text ErreurDateCheque; + + @FXML private Text ErreurTransaction; + @FXML private Text ErreurBanqueCart; + @FXML private Text ErreurObject; + + private Service ThreadFrais; + + Frais frais = new Frais(); + FraisDB fraisDB = new FraisDB(); + contro ctl= new contro() ; + + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + frais.setPaiement("0"); + this.TypePaiement(); + } + + @FXML + private void AjouterFraisButtonAction(ActionEvent event) throws IOException + { + if(this.ContoleFrais()) + { + ButtonAjouterFrais.setDisable(true); + ButtonAjouterFrais.setText(""); + ThreadFrais = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + ProgrssLoading.setVisible(true); + frais = fraisDB.setFrais(frais); + return null; + } + }; + } + }; + ThreadFrais.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneFrais); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + StackPaneSucces.setVisible(true); + } + }); + } + }); + ThreadFrais.start(); + } + } + + private Boolean ContoleFrais() + { + Boolean result = false; + + if( ctl.ContrReelNotNull(TextFieldMontant,ErreurMontant) && + ctl.ContrNull(TextFieldObject,ErreurObject) ){ + frais.setMontant(TextFieldMontant.getText()); + frais.setObject(TextFieldObject.getText()); + frais.setPersonne(TextFieldPersonne.getText()); + + frais.setDateCreation(LocalDateTime.now().toString()); + frais.setProfile(User.idprofile+""); + frais.setLocalNom(User.UserLocal); + + frais.setContext(TextAreaContenu.getText()); + + if( frais.getPaiement().equals("1") && + ctl.ContrNull(TextFieldNumeroCheque, ErreurNumeroCheque) && + ctl.ContrNull(TextFieldBanqueCheque, ErreurBanqueCheque) && + ctl.ContrNullDatePicker(DatePickerDateCheque, ErreurDateCheque)){ + frais.setNumero(TextFieldNumeroCheque.getText()); + frais.setBanque(TextFieldBanqueCheque.getText()); + frais.setDateCheque(DatePickerDateCheque.getValue().toString()); + result = true; + }else if(frais.getPaiement().equals("2") && + ctl.ContrNull(TextFieldNumeroTransation, ErreurTransaction) && + ctl.ContrNull(TextFieldBanqueCarte, ErreurBanqueCart) ){ + frais.setBanque(TextFieldBanqueCarte.getText()); + frais.setNumero(TextFieldNumeroTransation.getText()); + result = true; + }else if(frais.getPaiement().equals("0")){ + result = true; + } + } + return result; + } + + private void TypePaiement() + { + //0 :espèce 1:Chèque 2 :carte bancaire + RadioEspace.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridPaneCheque.setVisible(false); + GridPaneCarte.setVisible(false); + frais.setPaiement("0"); + } + }); + RadioCheque.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridPaneCheque.setVisible(true); + GridPaneCarte.setVisible(false); + frais.setPaiement("1"); + } + }); + RadioCarte.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridPaneCheque.setVisible(false); + GridPaneCarte.setVisible(true); + frais.setPaiement("2"); + } + }); + } + + //ajouter un nouvelle catégorie + @FXML + private void AfficherAjouterFraisButtonAction(ActionEvent event) throws IOException { + FadeTransition ft = new FadeTransition(Duration.millis(400), StackPaneSucces); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Caisse/FraisAjouter.fxml")); + Parent NodeDetail = (Parent)fxmlLoader.load(); + PaneAjouterFrais.getChildren().add(NodeDetail); + } catch (IOException ex) { + Logger.getLogger(FraisAjouterController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + ft.play(); + } + +} diff --git a/src/main/java/Controllers/Caisse/FraisDetailController.java b/src/main/java/Controllers/Caisse/FraisDetailController.java new file mode 100644 index 0000000..e7a0fa9 --- /dev/null +++ b/src/main/java/Controllers/Caisse/FraisDetailController.java @@ -0,0 +1,157 @@ +package Controllers.Caisse; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Models.Caisse.Frais; +import Models.Caisse.FraisDB; +import Models.Reglement.Reglement; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.scene.web.HTMLEditor; +import javafx.stage.Stage; + +/** + * FXML Controller class + * @author Maher + */ +public class FraisDetailController { + + public Node nodeFxml ; + + @FXML public AnchorPane AnchorPrincipal ; + + @FXML public AnchorPane PaneDetailFrais; + + @FXML private Text TextMontant; + @FXML private Text TextPaiement; + @FXML private Text TextChequeNumero; + @FXML private Text TextChequeBanque; + @FXML private Text TextChequeDate; + @FXML private Text TextCarteTransation; + @FXML private Text TextCarteBanque; + @FXML private Text TextPersonne; + @FXML private Text TextDateCreation; + @FXML private Text TextProfile; + @FXML private Text TextObject; + + @FXML private GridPane GridPaneCheque; + @FXML private GridPane GridPaneCarte; + + @FXML private HTMLEditor HTMLEditorContext ; + + @FXML private ProgressIndicator ProgressFrais; + + private Service ThreadFraisDetail; + + Frais frais = new Frais(); + + public FraisDetailController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Caisse/FraisDetail.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (Exception ex) { + System.err.println(ex.getMessage()); + } + } + + + public void setFrais(Frais frais){ + TextMontant.setText(frais.getMontant()); + TextPaiement.setText(frais.getPaiementString()); + + if(frais.getPaiement().equals("1")){ + GridPaneCheque.setVisible(true); + TextChequeNumero.setText(frais.getNumero()); + TextChequeBanque.setText(frais.getBanque()); + TextChequeDate.setText(frais.getDateCheque()); + } + + if(frais.getPaiement().equals("2")){ + GridPaneCarte.setVisible(true); + TextCarteTransation.setText(frais.getNumero()); + TextCarteBanque.setText(frais.getBanque()); + } + + TextPersonne.setText(frais.getPersonne()); + TextDateCreation.setText(frais.getDateCreation()); + TextProfile.setText(frais.getProfile()); + TextObject.setText(frais.getObject()); + if(frais.getContext() != null){ + if(!frais.getContext().equals("")){ + HTMLEditorContext.setHtmlText(frais.getContext()); + } + } + + } + + + public void LanchShowFrais(final String IdFrais){ + + ThreadFraisDetail = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + frais = new FraisDB().getFrais(IdFrais); + return null; + } + }; + } + }; + ThreadFraisDetail.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + setFrais(frais); + ProgressFrais.setVisible(false); + PaneDetailFrais.setVisible(true); + } + }); + ThreadFraisDetail.start(); + } + + + + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Stage stage = MyWindow.myStage; + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/main/java/Controllers/Caisse/FraisGestionController.java b/src/main/java/Controllers/Caisse/FraisGestionController.java new file mode 100644 index 0000000..f7d5556 --- /dev/null +++ b/src/main/java/Controllers/Caisse/FraisGestionController.java @@ -0,0 +1,424 @@ +package Controllers.Caisse; + +import Models.Caisse.Frais; +import Models.Caisse.FraisDB; +import Models.Stock.StockDB; +import java.net.URL; +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.Initializable; +import javafx.scene.Group; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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 com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher + */ +public class FraisGestionController implements Initializable { + + @FXML private AnchorPane PaneGestionFrais ; + + @FXML private TextField TextFieldCodeFrais; + @FXML private TextField TextFieldObject; + @FXML private TextField TextFieldPresonne; + + @FXML private ComboBox ComboBoxLocale ; + @FXML private ComboBox ComboBoxPaiement; + @FXML private DatePicker DatePickerCreate; + + @FXML private ProgressBar ProgressBarFraisGestion; + @FXML private Button ButtonSearchFraisGestion; + + @FXML private TableView TableViewFrais; + @FXML private TableColumn TabColIdFrais; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColObject; + @FXML private TableColumn TabColDateCreation; + @FXML private TableColumn TabColPaiement; + @FXML private TableColumn TabColProfile; + @FXML private TableColumn TabColLocalNom; + @FXML private TableColumnTabColDetail ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchFraisGestion; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + ComboBoxLocale.setOnMouseClicked(new EventHandler() { + @Override + public void handle(MouseEvent t) { + if(ComboBoxLocale.getItems().size() == 0){ + ComboBoxLocale.getItems().addAll(new StockDB().getAllListLocal()); + } + } + }); + + //0:Espèce 1:Chèque 2 :carte bancaire + ComboBoxPaiement.setItems(FXCollections.observableArrayList("Espèces","Chèque","Carte Bancaire")); + + TabColIdFrais.setStyle( "-fx-alignment: CENTER;");TabColIdFrais.getStyleClass().add("Center"); + TabColIdFrais.setCellValueFactory(new PropertyValueFactory("IdFrais")); + + TabColMontant.setStyle( "-fx-alignment: CENTER;");TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColObject.setStyle( "-fx-alignment: CENTER;");TabColObject.getStyleClass().add("Center"); + TabColObject.setCellValueFactory(new PropertyValueFactory("Object")); + + TabColDateCreation.setStyle( "-fx-alignment: CENTER;");TabColDateCreation.getStyleClass().add("Center"); + TabColDateCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColPaiement.setStyle( "-fx-alignment: CENTER;");TabColPaiement.getStyleClass().add("Center"); + TabColPaiement.setCellValueFactory(new PropertyValueFactory("Paiement")); + TabColPaiement.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + ////0 :espace 1:Chèque 2 :carte bancaire + if(item!=null && item.equals("0")){ + Text text = new Text("Espèce"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!=null && item.equals("1")){ + Text text = new Text("Chèque"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!=null && item.equals("2")){ + Text text = new Text("Carte Bancaire"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColProfile.setStyle( "-fx-alignment: CENTER;");TabColProfile.getStyleClass().add("Center"); + TabColProfile.setCellValueFactory(new PropertyValueFactory("Profile")); + + TabColLocalNom.setStyle( "-fx-alignment: CENTER;");TabColLocalNom.getStyleClass().add("Center"); + TabColLocalNom.setCellValueFactory(new PropertyValueFactory("LocalNom")); + + TabColDetail.setSortable(true); + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + + ButtonSearchFraisGestion.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFraisGestion(); + } + }); + + PaneGestionFrais.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchFraisGestion(); + } + } + }); + + GestionSearchFournisseur(); + + } + + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + Frais frais = ((Frais)getTableRow().getItem()); + FraisDetailController FraisDetail = new FraisDetailController(); + FraisDetail.LanchShowFrais(frais.getIdFrais()); + FraisDetail.Show(); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + @FXML + private void AjouterFraisButtonAction(ActionEvent event) throws IOException { + PaneGestionFrais.getChildren().clear(); + PaneGestionFrais.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Caisse/FraisAjouter.fxml"))); + } + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchFraisGestion() + { + ProgressBarFraisGestion.setVisible(true); + + ButtonSearchFraisGestion.setDisable(true); + + ThreadSearchFraisGestion = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(DatePickerCreate.getValue() != null){ + DateCreation = DatePickerCreate.getValue().toString(); + } + + ObservableList ListFraisGestions = new FraisDB().SearchFraisGestion( + position, + nbrligne, + TextFieldCodeFrais.getText(), + TextFieldObject.getText(), + TextFieldPresonne.getText(), + (String) ComboBoxLocale.getValue(), + (String) ComboBoxPaiement.getValue(), + DateCreation); + + TableViewFrais.setItems(ListFraisGestions); + + totalcount = new FraisDB().nbrFraisGestion(TextFieldCodeFrais.getText(), TextFieldObject.getText(), TextFieldPresonne.getText(), (String) ComboBoxLocale.getValue(), (String) ComboBoxPaiement.getValue(), DateCreation); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchFraisGestion.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFraisGestion.setVisible(false); + ButtonSearchFraisGestion.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchFraisGestion.start(); + } + + + private void NextLastSearchFraisGestion(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarFraisGestion.setVisible(true); + + ButtonSearchFraisGestion.setDisable(true); + + ThreadSearchFraisGestion = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(DatePickerCreate.getValue() != null){ + DateCreation = DatePickerCreate.getValue().toString(); + } + + ObservableList ListFraisGestions = new FraisDB().SearchFraisGestion(ParmPosition, ParamNbrligne, TextFieldCodeFrais.getText(), TextFieldObject.getText(), TextFieldPresonne.getText(), (String) ComboBoxLocale.getValue(), (String) ComboBoxPaiement.getValue(), DateCreation); + + TableViewFrais.setItems(ListFraisGestions); + + return null; + } + }; + } + }; + + ThreadSearchFraisGestion.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFraisGestion.setVisible(false); + ButtonSearchFraisGestion.setDisable(false); + } + }); + ThreadSearchFraisGestion.start(); + } + + private void GestionSearchFournisseur() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchFraisGestion(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchFraisGestion(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchFraisGestion(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } +} diff --git a/src/main/java/Controllers/Categorie/AjouterCategorieController.java b/src/main/java/Controllers/Categorie/AjouterCategorieController.java new file mode 100644 index 0000000..e24f9cf --- /dev/null +++ b/src/main/java/Controllers/Categorie/AjouterCategorieController.java @@ -0,0 +1,123 @@ +/* + * 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 Controllers.Categorie; + +import Controllers.Traitement.MyWindow; +import Models.Categorie.Categorie; +import Models.Categorie.CategorieDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * + * @author PC-Maher + */ +public class AjouterCategorieController implements Initializable { + + public Node nodeFxml ; + + @FXML public AnchorPane AnchorPrincipal ; + + @FXML public TextField NomCategorie ; + @FXML private Text erreurCategorie ; + @FXML public ToggleGroup unite ; + @FXML private RadioButton piece ; + @FXML private RadioButton kilo; + @FXML private RadioButton metre; + @FXML private RadioButton litre; + @FXML public Button ButtonAjouterCategory ; + + Categorie categorie = new Categorie(); + CategorieDB dbcategorie = new CategorieDB(); + + + + @Override + public void initialize(URL url, ResourceBundle rb) { + piece.setUserData("0"); + kilo.setUserData("1"); + metre.setUserData("2"); + litre.setUserData("3"); + } + + + public AjouterCategorieController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Categorie/AjouterCategorie.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(AjouterCategorieController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + + public String AjouterCategorieTraitement(){ + if(NomCategorie.getText().length()==0){ //catégorie est vide + erreurCategorie.setText("catégorie vide"); + NomCategorie.setStyle("-fx-border-color:#f20606;"); + } + else if(dbcategorie.verifyCategorie(NomCategorie.getText())){ + erreurCategorie.setText("catégorie existe déjà"); + NomCategorie.setStyle("-fx-border-color:#f20606;"); + } + else{ + erreurCategorie.setText(""); + NomCategorie.setStyle("-fx-border-color: transparent;"); + categorie.setNomcategorie(NomCategorie.getText()); + categorie.setUnitemesure(Integer.parseInt(unite.getSelectedToggle().getUserData().toString())); + if(dbcategorie.addCategorie(categorie)){ + AnchorPrincipal.setVisible(false); + return NomCategorie.getText(); + } + } + return ""; + } + + + @FXML + private void AnnulerCategorieButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Stage stage = MyWindow.myStage; + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + stage.setScene(scene); + stage.show(); + + } + +} diff --git a/src/main/java/Controllers/ChequeClt/ChequeCltDetailController.java b/src/main/java/Controllers/ChequeClt/ChequeCltDetailController.java new file mode 100644 index 0000000..7451bf7 --- /dev/null +++ b/src/main/java/Controllers/ChequeClt/ChequeCltDetailController.java @@ -0,0 +1,327 @@ +/* + * 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 Controllers.ChequeClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Models.ChequeClt.ChequeClt; +import Models.ChequeClt.ChequeCltDB; +import Models.ChequeClt.ChequeCltHistoriqueListe; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import javafx.util.Callback; + +/** + * FXML Controller class + * + * @author Maher + */ +public class ChequeCltDetailController { + + @FXML public AnchorPane AnchorPrincipal ; + @FXML private AnchorPane AnchorSecondaire; + + @FXML private ProgressIndicator ProgressCheque; + + @FXML private Text TextTypeClt; + @FXML private Text TextCode; + @FXML private Text TextNom; + @FXML private Text TextPrenom; + @FXML private Text TextTele1; + @FXML private Text TextTele2; + @FXML private Text TextAdress; + + @FXML private Text TextNumCheque1; + @FXML private Text TextNumCheque2; + @FXML private Text TextBanque; + @FXML private Text TextDateCheque; + @FXML private Text TextMontant; + @FXML private Text TextFacture; + @FXML private Text TextUtilisateur; + + @FXML private RadioButton RadioVerser; + @FXML private RadioButton RadioSansProvision; + @FXML private RadioButton RadioContreCheque; + + @FXML private Button UpdateEtatButton; + @FXML public Button ButtonExitChequeCltDetail; + + @FXML public TableView TableViewChequeCltHistorique; + + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColHeur; + @FXML public TableColumn TabColEtat; + @FXML public TableColumn TabColUtili; + + public Node nodeFxml; + public String IdChequeClt; + public String LastEtat; + public Integer Source; + ChequeClt Cheque = new ChequeClt(); + + public ChequeCltDetailController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/ChequeClt/ChequeCltDetail.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(ChequeCltDetailController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Stage stage = MyWindow.myStage; + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + stage.setScene(scene); + stage.show(); + } + + public void ControleUpdateEtatButton(){ + + if(Cheque.getLastEtat() != null){ + if(Cheque.getLastEtat() == 2){ + UpdateEtatButton.setDisable(true); + }else{ + RadioVerser.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + if(Cheque.getLastEtat() == 1){ + UpdateEtatButton.setDisable(true); + }else if((Cheque.getLastEtat() == 0) || (Cheque.getLastEtat() == 1)){ + UpdateEtatButton.setDisable(false); + } + } + }); + + + RadioSansProvision.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + if(Cheque.getLastEtat() == 0){ + UpdateEtatButton.setDisable(true); + }else if((Cheque.getLastEtat() == 1) || (Cheque.getLastEtat() == 2)){ + UpdateEtatButton.setDisable(false); + } + } + }); + } + } + + + + + } + + public void Initialize(String id_cheque, Integer source) { + IdChequeClt = id_cheque; + Source = source;// 0==>Cheque(table cheque_clt) 1==>Traite(table traite_paiement_cheque_clt) + + TabColDate.setStyle( "-fx-alignment: CENTER;"); + TabColDate.getStyleClass().add("Center"); + TabColDate.setCellValueFactory(new PropertyValueFactory("DateOperation")); + + TabColHeur.setStyle( "-fx-alignment: CENTER;"); + TabColHeur.getStyleClass().add("Center"); + TabColHeur.setCellValueFactory(new PropertyValueFactory("HeurOperation")); + + TabColEtat.setStyle( "-fx-alignment: CENTER;"); + TabColEtat.getStyleClass().add("Center"); + TabColEtat.setCellValueFactory(new PropertyValueFactory("Etat")); + TabColEtat.setCellValueFactory(new PropertyValueFactory("Etat")); + TabColEtat.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(Integer item, boolean empty) { + // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + if(item!= null && item == 0){ + Text text = new Text("chèque sans provision"); + text.setFill(Color.web("#EA4335")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!= null && item == 1){ + Text text = new Text("verser"); + text.setFill(Color.web("#428BCA")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!= null && item == 2){ + Text text = new Text("contre chèque"); + text.setFill(Color.web("#34A853")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColUtili.setStyle( "-fx-alignment: CENTER;"); + TabColUtili.getStyleClass().add("Center"); + TabColUtili.setCellValueFactory(new PropertyValueFactory("Utilisateur")); + + ButtonUpdateEtatAction(); + + startTask(); + + } + + + public void startTask(){ + + ProgressCheque.setVisible(true); + AnchorSecondaire.setVisible(false); + + // Create a Runnable + Runnable task = new Runnable(){ + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + SetIdChequeClt(); + ProgressCheque.setVisible(false); + AnchorSecondaire.setVisible(true); + } + }); + } + }; + Thread backgroundThread = new Thread(task);// Run the task in a background thread + backgroundThread.setDaemon(true);// Terminate the running thread if the application exits + backgroundThread.start();// Start the thread + } + + + + + + public void SetIdChequeClt(){ + ChequeCltDB ChequeDB = new ChequeCltDB(); + Cheque = ChequeDB.getChequeClt(IdChequeClt, Source); + + Integer TypeClt = Cheque.getTypeClient(); + if(TypeClt == 0){ + TextTypeClt.setText("Ancien"); + TextCode.setText(Cheque.getCltPersonne().getCodeclient()); + TextNom.setText(Cheque.getCltPersonne().getNom()); + TextPrenom.setText(Cheque.getCltPersonne().getPrenom()); + TextTele1.setText(Cheque.getCltPersonne().getTelefixString()); + TextTele2.setText(Cheque.getCltPersonne().getTelemobileString()); + TextAdress.setText(Cheque.getCltPersonne().getAdresse()); + }else if(TypeClt == 1){ + TextTypeClt.setText("Entreprise"); + TextCode.setText(Cheque.getCltEntreprise().getCodeString()); + TextNom.setText(Cheque.getCltEntreprise().getNom()); + TextPrenom.setText(Cheque.getCltEntreprise().getMatricule()); + TextTele1.setText(Cheque.getCltEntreprise().getTele1String()); + TextTele2.setText(Cheque.getCltEntreprise().getTele2String()); + TextAdress.setText(Cheque.getCltEntreprise().getAdresse()); + }else if(TypeClt == 2){ + TextTypeClt.setText("Passager"); + TextCode.setText(Cheque.getCltPassager().getCodeclient()); + TextNom.setText(Cheque.getCltPassager().getNom()); + TextPrenom.setText(Cheque.getCltPassager().getPrenom()); + TextTele1.setText(Cheque.getCltPassager().getTelefixString()); + TextTele2.setText(Cheque.getCltPassager().getTelemobileString()); + TextAdress.setText(Cheque.getCltPassager().getAdresse()); + } + + TextNumCheque1.setText(Cheque.getNumeroChequeClt()); + TextNumCheque2.setText(Cheque.getNumeroChequeClt()); + TextBanque.setText(Cheque.getBanqueChequeClt()); + TextDateCheque.setText(Cheque.getDatePaiement()); + TextMontant.setText(Adaptateur.FloatToStringEspaceCurrency(Cheque.getMontantFloatChequeClt())); + TextFacture.setText(Cheque.getCodeFactureClt()); + TextUtilisateur.setText(Cheque.getProfile().getNom()+" "+Cheque.getProfile().getPrenom()); + + //Etat 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + if(Cheque.getLastEtat() != null){ + if(Cheque.getLastEtat() == 1){ + RadioVerser.setSelected(true); + UpdateEtatButton.setDisable(true); + }else if(Cheque.getLastEtat() == 0){ + RadioSansProvision.setSelected(true); + UpdateEtatButton.setDisable(true); + }else if(Cheque.getLastEtat() == 2){ + RadioContreCheque.setSelected(true); + UpdateEtatButton.setDisable(true); + } + } + + ObservableList ObservableListHistChequeClt = Cheque.getHistoriqueListe(); + Integer LastListHistCheque = ObservableListHistChequeClt.size()-1; + if(LastListHistCheque>=0){ + LastEtat = ObservableListHistChequeClt.get(LastListHistCheque).getEtat().toString(); + } + + TableViewChequeCltHistorique.setItems(ObservableListHistChequeClt); + + ControleUpdateEtatButton(); + } + + + public void ButtonUpdateEtatAction(){ + UpdateEtatButton.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + boolean isSelectedVerser = RadioVerser.isSelected(); + boolean isSelectedProvision = RadioSansProvision.isSelected(); + boolean isSelectedContre = RadioContreCheque.isSelected(); + + ChequeCltDB ChequeDB = new ChequeCltDB(); + + //Etat 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + //Source 0==>Cheque(table cheque_clt) 1==>Traite(table traite_paiement_cheque_clt) + if(isSelectedVerser == true){ + ChequeDB.setHistoriqueCheque(1, Source, Cheque); + }else if(isSelectedProvision == true){ + ChequeDB.setHistoriqueCheque(0, Source, Cheque); + }else if(isSelectedContre == true){ + ChequeDB.setHistoriqueCheque(2, Source, Cheque); + } + startTask(); + } + }); + } + + + + +} diff --git a/src/main/java/Controllers/ChequeClt/ChequeCltGestionController.java b/src/main/java/Controllers/ChequeClt/ChequeCltGestionController.java new file mode 100644 index 0000000..8529ed6 --- /dev/null +++ b/src/main/java/Controllers/ChequeClt/ChequeCltGestionController.java @@ -0,0 +1,482 @@ +package Controllers.ChequeClt; + +import Models.ChequeClt.ChequeCltDB; +import Models.ChequeClt.ChequeCltGestionListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +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; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ChequeCltGestionController implements Initializable { + + @FXML private AnchorPane PaneChequeCltGestion; + + @FXML private ProgressBar ProgressBarChequeCltGestion; + + @FXML private Button ButtonSearchChequeCltGestion; + + @FXML public TableView TableViewChequeCltGestion ; + + @FXML private TableColumn TabColChequeClt; + @FXML private TableColumn TabColClient; + + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanque; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColCodeClt; + @FXML private TableColumn TabColTypeClt; + @FXML private TableColumn TabColNomClt; + @FXML private TableColumn TabColPrenomClt; + @FXML private TableColumn TabColIdFacture; + @FXML private TableColumn TabColEtat; + @FXML private TableColumn TabColDetail; + + @FXML private TextField TextFieldNumeroCheque ; + @FXML private TextField TextFieldBanque ; + @FXML private TextField TextFieldCodeClt ; + @FXML private TextField TextFieldCINClt ; + @FXML private TextField TextFieldNomClt ; + @FXML private TextField TextFieldPrenomClt; + @FXML private TextField TextFieldIdFacture ; + + @FXML private DatePicker DatePickerCheque ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + private Service ThreadSearchChequeCltGestion; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColChequeClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt; -fx-border-color: #4DAE4D;"); + TabColChequeClt.getStyleClass().add("Center"); + + TabColClient.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt; -fx-border-color:#428BCA;"); + TabColClient.getStyleClass().add("Center"); + + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroCheque")); + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNumeroCheque.getStyleClass().add("Center"); + + TabColBanque.setCellValueFactory(new PropertyValueFactory("Banque")); + TabColBanque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColBanque.getStyleClass().add("Center"); + + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DateCheque")); + TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateCheque.getStyleClass().add("Center"); + + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColMontant.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMontant.getStyleClass().add("Center"); + + TabColCodeClt.setCellValueFactory(new PropertyValueFactory("CodeClt")); + TabColCodeClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt; "); + TabColCodeClt.getStyleClass().add("Center"); + + TabColTypeClt.setCellValueFactory(new PropertyValueFactory("TypeClt")); + TabColTypeClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTypeClt.getStyleClass().add("Center"); + + TabColNomClt.setCellValueFactory(new PropertyValueFactory("NomClt")); + TabColNomClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNomClt.getStyleClass().add("Center"); + + TabColPrenomClt.setCellValueFactory(new PropertyValueFactory("PrenomClt")); + TabColPrenomClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColPrenomClt.getStyleClass().add("Center"); + + TabColIdFacture.setCellValueFactory(new PropertyValueFactory("IdFacture")); + TabColIdFacture.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColIdFacture.getStyleClass().add("Center"); + + TabColEtat.setCellValueFactory(new PropertyValueFactory("Etat")); + TabColEtat.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColEtat.getStyleClass().add("Center"); + + TabColEtat.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!=null && item.equals("0")){ + Text text = new Text("sans provision"); + text.setFill(Color.web("#ff0000")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!=null && item.equals("1")){ + Text text = new Text("verser"); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!=null && item.equals("2")){ + Text text = new Text("contre chèque"); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + ButtonSearchChequeCltGestion.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchChequeCltGestion(); + } + }); + + PaneChequeCltGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchChequeCltGestion(); + } + } + }); + + GestionSearchChequeClt(); + } + + @FXML + private void ChequeCltVerserButtonAction(ActionEvent event) throws IOException { + PaneChequeCltGestion.getChildren().clear(); + PaneChequeCltGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/ChequeClt/ChequeCltVercer.fxml"))); + } + + @FXML + private void ChequeCltProvisionButtonAction(ActionEvent event) throws IOException { + PaneChequeCltGestion.getChildren().clear(); + PaneChequeCltGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/ChequeClt/ChequeCltProvision.fxml"))); + } + + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + final ChequeCltGestionListe current = (ChequeCltGestionListe) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String IdChequeClt = current.getIdCheque(); + Integer Source = current.getSource(); + + final ChequeCltDetailController ChequeCltDetail = new ChequeCltDetailController(); + ChequeCltDetail.Show(); + ChequeCltDetail.Initialize(IdChequeClt, Source); + + ChequeCltDetail.ButtonExitChequeCltDetail.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + ChequeCltDetail.AnchorPrincipal.setVisible(false); + if(ChequeCltDetail.LastEtat != null){ + ObservableList DataListChequeClt = ButtonCell.this.getTableView().getItems(); + DataListChequeClt.get(ButtonCell.this.getIndex()).setEtat(ChequeCltDetail.LastEtat); + TableViewChequeCltGestion.setItems(DataListChequeClt); + + //actualiser la ligne + TabColEtat.setVisible(false); + TabColEtat.setVisible(true); + } + } + }); + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchChequeCltGestion() + { + ProgressBarChequeCltGestion.setVisible(true); + + ButtonSearchChequeCltGestion.setDisable(true); + + ThreadSearchChequeCltGestion = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCheque = ""; + if(DatePickerCheque.getValue() != null){ + DateCheque = DatePickerCheque.getValue().toString(); + } + + ObservableList ListChequeCltGestions = new ChequeCltDB().SearchChequeCltGestion( + position, + nbrligne, + TextFieldNumeroCheque.getText(), + TextFieldBanque.getText(), + DateCheque, + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldIdFacture.getText(), + TextFieldNomClt.getText(), + TextFieldPrenomClt.getText()); + + TableViewChequeCltGestion.setItems(ListChequeCltGestions); + + totalcount = new ChequeCltDB().nbrChequeCltGestion(TextFieldNumeroCheque.getText(), + TextFieldBanque.getText(), + DateCheque, + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldIdFacture.getText(), + TextFieldNomClt.getText(), + TextFieldPrenomClt.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchChequeCltGestion.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarChequeCltGestion.setVisible(false); + ButtonSearchChequeCltGestion.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchChequeCltGestion.start(); + } + + + private void NextLastSearchChequeCltGestion(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarChequeCltGestion.setVisible(true); + + ButtonSearchChequeCltGestion.setDisable(true); + + ThreadSearchChequeCltGestion = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCheque = ""; + if(DatePickerCheque.getValue() != null){ + DateCheque = DatePickerCheque.getValue().toString(); + } + + ObservableList ListChequeCltGestions = new ChequeCltDB().SearchChequeCltGestion(ParmPosition, ParamNbrligne, TextFieldNumeroCheque.getText(), TextFieldBanque.getText(), DateCheque, TextFieldCodeClt.getText(), TextFieldCINClt.getText(), TextFieldIdFacture.getText(), TextFieldNomClt.getText(), TextFieldPrenomClt.getText()); + + TableViewChequeCltGestion.setItems(ListChequeCltGestions); + + return null; + } + }; + } + }; + + ThreadSearchChequeCltGestion.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarChequeCltGestion.setVisible(false); + ButtonSearchChequeCltGestion.setDisable(false); + } + }); + ThreadSearchChequeCltGestion.start(); + } + + private void GestionSearchChequeClt() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchChequeCltGestion(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchChequeCltGestion(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchChequeCltGestion(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + +} + + + + diff --git a/src/main/java/Controllers/ChequeClt/ChequeCltProvisionController.java b/src/main/java/Controllers/ChequeClt/ChequeCltProvisionController.java new file mode 100644 index 0000000..eb12a54 --- /dev/null +++ b/src/main/java/Controllers/ChequeClt/ChequeCltProvisionController.java @@ -0,0 +1,466 @@ +package Controllers.ChequeClt; + +import Controllers.TraiteClt.TraiteCltPrintRetardController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.ChequeClt.ChequeCltDB; +import Models.ChequeClt.ChequeCltGestionListe; +import Models.Stock.StockDB; +import Models.TraiteClt.TraiteCltDB; +import Models.TraiteClt.TraiteCltGestionListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.ResourceBundle; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.PageLayout; +import javafx.print.PageOrientation; +import javafx.print.PageRange; +import javafx.print.Paper; +import javafx.print.Printer; +import javafx.print.PrinterJob; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ChequeCltProvisionController implements Initializable { + + @FXML private AnchorPane AnchorPaneChequeCltProvision; + + @FXML private ProgressBar ProgressBarChequeCltProvision; + + @FXML private Button ButtonSearchChequeCltProvision; + @FXML private Button ButtonPrintChequeCltProvision; + + @FXML private TableView TableViewChequeCltAvercer ; + + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanque; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColTypeClt; + @FXML private TableColumn TabColNomClt; + @FXML private TableColumn TabColPrenomClt; + + @FXML private DatePicker DatePickerCheque ; + @FXML private ChoiceBox ChoiceBoxLocal ; + + @FXML private TextField TextFieldBanque ; + @FXML private TextField TextFieldCodeClt ; + @FXML private TextField TextFieldCINClt ; + @FXML private TextField TextFieldNomPrenomClt ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + ObservableList ListPrintChequeCltProvision; + + private Service ThreadSearchChequeCltProvision; + private Service ThreadPrintChequeCltProvision; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroCheque")); + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNumeroCheque.getStyleClass().add("Center"); + + TabColBanque.setCellValueFactory(new PropertyValueFactory("Banque")); + TabColBanque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColBanque.getStyleClass().add("Center"); + + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DateCheque")); + TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateCheque.getStyleClass().add("Center"); + + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColMontant.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMontant.getStyleClass().add("Center"); + + TabColTypeClt.setCellValueFactory(new PropertyValueFactory("TypeClt")); + TabColTypeClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTypeClt.getStyleClass().add("Center"); + + + TabColNomClt.setCellValueFactory(new PropertyValueFactory("NomClt")); + TabColNomClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNomClt.getStyleClass().add("Center"); + + TabColPrenomClt.setCellValueFactory(new PropertyValueFactory("PrenomClt")); + TabColPrenomClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColPrenomClt.getStyleClass().add("Center"); + + ArrayList ListLocale = new StockDB().getAllListLocal(); + ChoiceBoxLocal.getItems().addAll(ListLocale); + + ButtonSearchChequeCltProvision.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchChequeCltProvision(); + } + }); + + AnchorPaneChequeCltProvision.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchChequeCltProvision(); + } + } + }); + + GestionSearchChequeCltProvision(); + + ButtonPrintChequeCltProvision.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + ImprimerChequeCltProvision(); + } + }); + } + + private void ImprimerChequeCltProvision() + { + ProgressBarChequeCltProvision.setVisible(true); + + ButtonPrintChequeCltProvision.setDisable(true); + + ThreadPrintChequeCltProvision = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateDebut = ""; + if(DatePickerCheque.getValue() != null){ + DateDebut = DatePickerCheque.getValue().toString(); + } + + ListPrintChequeCltProvision = new ChequeCltDB().SearchChequeCltProvision( + 0, + 0, + DateDebut, + (String) ChoiceBoxLocal.getValue(), + TextFieldBanque.getText(), + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldNomPrenomClt.getText(), + true); + + return null; + } + }; + } + }; + + ThreadPrintChequeCltProvision.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + + int SizeListeChequeCltProvision = ListPrintChequeCltProvision.size(); + + System.out.println(SizeListeChequeCltProvision); + + int total = SizeListeChequeCltProvision / 15 + 1 ; + int page = 0; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) + { + Printer printer = jobPrint.getPrinter(); + PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT); + + for (int i=0; i listTemp = FXCollections.observableArrayList(); + + for (int j=i; (j<(i+15)) && (j(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateDebut = ""; + if(DatePickerCheque.getValue() != null){ + DateDebut = DatePickerCheque.getValue().toString(); + } + + ObservableList ListChequeCltProvisions = new ChequeCltDB().SearchChequeCltProvision( + position, + nbrligne, + DateDebut, + (String) ChoiceBoxLocal.getValue(), + TextFieldBanque.getText(), + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldNomPrenomClt.getText(), + false); + + TableViewChequeCltAvercer.setItems(ListChequeCltProvisions); + + totalcount = new ChequeCltDB().nbrChequeCltProvision(DateDebut, + (String) ChoiceBoxLocal.getValue(), + TextFieldBanque.getText(), + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldNomPrenomClt.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchChequeCltProvision.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarChequeCltProvision.setVisible(false); + ButtonSearchChequeCltProvision.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchChequeCltProvision.start(); + } + + + private void NextLastSearchChequeCltProvision(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarChequeCltProvision.setVisible(true); + + ButtonSearchChequeCltProvision.setDisable(true); + + ThreadSearchChequeCltProvision = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateDebut = ""; + if(DatePickerCheque.getValue() != null){ + DateDebut = DatePickerCheque.getValue().toString(); + } + + ObservableList ListChequeCltProvisions = new ChequeCltDB().SearchChequeCltProvision(ParmPosition, ParamNbrligne, DateDebut, (String) ChoiceBoxLocal.getValue(), TextFieldBanque.getText(), TextFieldCodeClt.getText(), TextFieldCINClt.getText(), TextFieldNomPrenomClt.getText(), false); + + TableViewChequeCltAvercer.setItems(ListChequeCltProvisions); + + return null; + } + }; + } + }; + + ThreadSearchChequeCltProvision.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarChequeCltProvision.setVisible(false); + ButtonSearchChequeCltProvision.setDisable(false); + } + }); + ThreadSearchChequeCltProvision.start(); + } + + private void GestionSearchChequeCltProvision() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchChequeCltProvision(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchChequeCltProvision(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchChequeCltProvision(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + +} diff --git a/src/main/java/Controllers/ChequeClt/ChequeCltProvisionPrintController.java b/src/main/java/Controllers/ChequeClt/ChequeCltProvisionPrintController.java new file mode 100644 index 0000000..4bad7d9 --- /dev/null +++ b/src/main/java/Controllers/ChequeClt/ChequeCltProvisionPrintController.java @@ -0,0 +1,77 @@ +package Controllers.ChequeClt; + +import Models.ChequeClt.ChequeCltGestionListe; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ChequeCltProvisionPrintController implements Initializable { + + @FXML private Text TextNbr ; + @FXML private Text TextPage ; + + @FXML private TableView TableViewChequeCltProvision ; + + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanque; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColNomClt; + @FXML private TableColumn TabColPrenomClt; + @FXML private TableColumn TabColLocal; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroCheque")); + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColNumeroCheque.getStyleClass().add("Center"); + + TabColBanque.setCellValueFactory(new PropertyValueFactory("Banque")); + TabColBanque.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColBanque.getStyleClass().add("Center"); + + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DateCheque")); + TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColDateCheque.getStyleClass().add("Center"); + + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColMontant.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColMontant.getStyleClass().add("Center"); + + TabColNomClt.setCellValueFactory(new PropertyValueFactory("NomClt")); + TabColNomClt.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColNomClt.getStyleClass().add("Center"); + + TabColPrenomClt.setCellValueFactory(new PropertyValueFactory("PrenomClt")); + TabColPrenomClt.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColPrenomClt.getStyleClass().add("Center"); + + TabColLocal.setCellValueFactory(new PropertyValueFactory("etat")); + TabColLocal.setStyle( "-fx-alignment: CENTER; -fx-font-size: 10pt;"); + TabColLocal.getStyleClass().add("Center"); + } + + public void setChequeCltProvision( + String Nbr, + String Page, + ObservableList obsListChequeCltListe) + { + TextNbr.setText(Nbr); + TextPage.setText(Page); + TableViewChequeCltProvision.setItems(obsListChequeCltListe); + } +} diff --git a/src/main/java/Controllers/ChequeClt/ChequeCltVercerController.java b/src/main/java/Controllers/ChequeClt/ChequeCltVercerController.java new file mode 100644 index 0000000..5e0342e --- /dev/null +++ b/src/main/java/Controllers/ChequeClt/ChequeCltVercerController.java @@ -0,0 +1,274 @@ +/* + * 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 Controllers.ChequeClt; + +import Models.ChequeClt.ChequeCltDB; +import Models.ChequeClt.ChequeCltGestionListe; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.CheckBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.control.Button; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyEvent; +import javafx.util.Callback; + + +/** + * FXML Controller class + * @author Maher + */ +public class ChequeCltVercerController implements Initializable { + + @FXML private ProgressBar ProgressBarVerser; + @FXML private CheckBox CheckboxSelectionner; + @FXML private Button ButtonVerserSelection; + + @FXML private Label LabelNbrSelectionner ; + + @FXML private DatePicker DatePickerDateDebut; + @FXML private DatePicker DatePickerDateFin; + + @FXML private TableView TableViewChequeCltVerser ; + + @FXML private TableColumn TabColSelectionner; + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanque; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColMontant; + @FXML private TableColumn TabColTypeClt; + @FXML private TableColumn TabColNomClt; + @FXML private TableColumn TabColPrenomClt; + + ChequeCltDB ChequeDB= new ChequeCltDB(); + ObservableList DataListChequeClt; + + private String StrDateDebut; + private String StrDateFin; + private Integer NbrSelect; + private Integer NbrCount; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + DatePickerDateDebut.setValue(LocalDate.now()); + DatePickerDateFin.setValue(LocalDate.now()); + + StrDateDebut = DatePickerDateDebut.getValue().toString(); + StrDateFin = DatePickerDateFin.getValue().toString(); + + GetChequeCltAvercer(); + + CheckboxSelectionner.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + NbrSelect = 0; + ButtonVerserSelection.setDisable(true); + ButtonVerserSelection.setOpacity(0.82); + if(CheckboxSelectionner.isSelected()){ + for(ChequeCltGestionListe ListChequeClt : DataListChequeClt){ + ListChequeClt.setSelected(true); + NbrSelect++; + } + } else { + for(ChequeCltGestionListe ListChequeClt : DataListChequeClt){ + ListChequeClt.setSelected(false); + } + } + if(NbrSelect>0){ + ButtonVerserSelection.setDisable(false); + ButtonVerserSelection.setOpacity(1); + } + TableViewChequeCltVerser.setItems(DataListChequeClt); + LabelNbrSelectionner.setText(NbrSelect+"/"+NbrCount); + TabColSelectionner.setVisible(false); + TabColSelectionner.setVisible(true); + + } + }); + + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroCheque")); + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNumeroCheque.getStyleClass().add("Center"); + + TabColBanque.setCellValueFactory(new PropertyValueFactory("Banque")); + TabColBanque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColBanque.getStyleClass().add("Center"); + + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DateCheque")); + TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateCheque.getStyleClass().add("Center"); + + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColMontant.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMontant.getStyleClass().add("Center"); + + TabColTypeClt.setCellValueFactory(new PropertyValueFactory("TypeClt")); + TabColTypeClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTypeClt.getStyleClass().add("Center"); + + + TabColNomClt.setCellValueFactory(new PropertyValueFactory("NomClt")); + TabColNomClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNomClt.getStyleClass().add("Center"); + + TabColPrenomClt.setCellValueFactory(new PropertyValueFactory("PrenomClt")); + TabColPrenomClt.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColPrenomClt.getStyleClass().add("Center"); + + TabColSelectionner.setCellValueFactory(new PropertyValueFactory("Selected")); + TabColSelectionner.setStyle("-fx-alignment: CENTER;"); + TabColSelectionner.getStyleClass().add("Center"); + TabColSelectionner.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(Boolean item, boolean empty) { + if(item!=null){ + final CheckBox Check= new CheckBox(); + Check.setSelected(item); + Check.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + ChequeCltGestionListe DataListChequeClt = ((ChequeCltGestionListe)getTableRow().getItem()); + if(Check.isSelected()){ + DataListChequeClt.setSelected(true); + NbrSelect++; + } else { + DataListChequeClt.setSelected(true); + NbrSelect--; + } + LabelNbrSelectionner.setText(NbrSelect+"/"+NbrCount); + if(NbrSelect>0){ + ButtonVerserSelection.setDisable(false); + ButtonVerserSelection.setOpacity(1); + }else{ + ButtonVerserSelection.setDisable(true); + ButtonVerserSelection.setOpacity(0.82); + } + } + }); + setGraphic(Check); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + + + DatePickerDateDebut.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try{ + StrDateDebut = DatePickerDateDebut.getConverter().fromString(DatePickerDateDebut.getEditor().getText()).toString(); + GetChequeCltAvercer(); + }catch(Exception ex){} + + } + }); + DatePickerDateDebut.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + try{ + StrDateDebut = DatePickerDateDebut.getConverter().fromString(DatePickerDateDebut.getEditor().getText()).toString(); + GetChequeCltAvercer(); + }catch(Exception ex){} + } + }); + + + DatePickerDateFin.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent actionEvent){ + try{ + StrDateFin = DatePickerDateFin.getConverter().fromString(DatePickerDateFin.getEditor().getText()).toString(); + GetChequeCltAvercer(); + }catch(Exception ex){} + } + }); + DatePickerDateFin.setOnKeyReleased(new EventHandler(){ + @Override + public void handle(KeyEvent ke){ + try{ + StrDateFin = DatePickerDateFin.getConverter().fromString(DatePickerDateFin.getEditor().getText()).toString(); + GetChequeCltAvercer(); + }catch(Exception ex){} + } + }); + + ButtonVerserSelection.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + List ArrayChequeClt = new ArrayList<>(); + List ArrayChequePaiementTraite = new ArrayList<>(); //traite_paiement_cheque_clt + for(ChequeCltGestionListe ListChequeClt : DataListChequeClt){ + if( (ListChequeClt.getSelected()) && (ListChequeClt.getSource() == 0) ){ + ArrayChequeClt.add(ListChequeClt.getIdCheque()); + } + if( (ListChequeClt.getSelected()) && (ListChequeClt.getSource() == 1) ){ + ArrayChequePaiementTraite.add(ListChequeClt.getIdCheque()); + } + } + Integer NbrUpdateChequeClt = ChequeDB.UpdateChequeCltVerser(ArrayChequeClt, ArrayChequePaiementTraite); + if(NbrUpdateChequeClt>0){ + GetChequeCltAvercer(); + } + } + }); + + } + + + public void GetChequeCltAvercer(){ + + ProgressBarVerser.setVisible(true); + + // Create a Runnable + Runnable task = new Runnable(){ + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + DataListChequeClt = ChequeDB.GetDataChequeAverser(StrDateDebut, StrDateFin); + TableViewChequeCltVerser.setItems(DataListChequeClt); + NbrCount = DataListChequeClt.size(); + NbrSelect = 0; + LabelNbrSelectionner.setText(NbrSelect+"/"+NbrCount); + ProgressBarVerser.setVisible(false); + } + }); + } + }; + Thread backgroundThread = new Thread(task);// Run the task in a background thread + backgroundThread.setDaemon(true);// Terminate the running thread if the application exits + backgroundThread.start();// Start the thread + } + + + + + + +} diff --git a/src/main/java/Controllers/Client/AjouterClientController.java b/src/main/java/Controllers/Client/AjouterClientController.java new file mode 100644 index 0000000..69c345c --- /dev/null +++ b/src/main/java/Controllers/Client/AjouterClientController.java @@ -0,0 +1,54 @@ +/* + * 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 Controllers.Client; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; + + +public class AjouterClientController implements Initializable { + + @FXML private AnchorPane AnchorPaneCltBody ; + @FXML public StackPane typecompte ; + + @Override + public void initialize(URL url, ResourceBundle rb) { + try { + //AnchorPaneCltBody.getChildren().clear(); + AnchorPaneCltBody.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/AjouterClientPersonne.fxml"))); + } catch (IOException ex) { + Logger.getLogger(AjouterClientController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + + @FXML + public void AjouterClientEntrepriseRadioAction(ActionEvent event) throws IOException { + AnchorPaneCltBody.getChildren().clear(); + AnchorPaneCltBody.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/AjouterClientEntreprise.fxml"))); + } + + @FXML + public void AjouterClientPersonneRadioAction(ActionEvent event) throws IOException { + AnchorPaneCltBody.getChildren().clear(); + AnchorPaneCltBody.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/AjouterClientPersonne.fxml"))); + } + + public void delete(){ + typecompte.getChildren().clear(); + // System.out.println("dfgsdf"); + } +} diff --git a/src/main/java/Controllers/Client/AjouterClientEntrepriseController.java b/src/main/java/Controllers/Client/AjouterClientEntrepriseController.java new file mode 100644 index 0000000..e948702 --- /dev/null +++ b/src/main/java/Controllers/Client/AjouterClientEntrepriseController.java @@ -0,0 +1,448 @@ +/* + * 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 Controllers.Client; + +import Controllers.Dialog.Notification; +import Controllers.Traitement.contro; +import Models.Client.ClientEntreprise; +import Models.Client.ClientEntrepriseContact; +import Models.Client.ClientEntrepriseContactDB; +import Models.Client.ClientEntrepriseDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.util.Duration; + +/** + * FXML Controller class + * + * @author Maher + */ +public class AjouterClientEntrepriseController implements Initializable { + + @FXML private AnchorPane AnchorPaneAjouterClientEntreprise ; + @FXML private AnchorPane AnchorPaneAjouterCltEntreprise ; + + @FXML private Text ErreurClientEntrepriseCode ; + @FXML private Text ErreurClientEntrepriseNom ; + @FXML private Text ErreurClientEntrepriseGerant ; + @FXML private Text ErreurClientEntrepriseMatricule ; + @FXML private Text ErreurClientEntrepriseAdresse ; + @FXML private Text ErreurClientEntreprisePostale ; + @FXML private Text ErreurClientEntrepriseTele1 ; + @FXML private Text ErreurClientEntrepriseTele2 ; + @FXML private Text ErreurClientEntrepriseMail ; + @FXML private Text ErreurClientEntrepriseFax ; + @FXML private Text ErreurClientEntrepriseContactNom ; + @FXML private Text ErreurClientEntrepriseContactPrenom ; + @FXML private Text ErreurClientEntrepriseContactCIN ; + @FXML private Text ErreurClientEntrepriseContactMail ; + @FXML private Text ErreurClientEntrepriseContactTele1 ; + @FXML private Text ErreurClientEntrepriseContactTele2 ; + + @FXML private TextField ChampClientEntrepriseCode; + @FXML private TextField ChampClientEntrepriseNom; + @FXML private TextField ChampClientEntrepriseGerant ; + @FXML private TextField ChampClientEntrepriseMatricule; + @FXML private TextField ChampClientEntrepriseAdresse; + @FXML private TextField ChampClientEntreprisePostale; + @FXML private TextField ChampClientEntrepriseTele1; + @FXML private TextField ChampClientEntrepriseTele2; + @FXML private TextField ChampClientEntrepriseMail; + @FXML private TextField ChampClientEntrepriseFax; + @FXML private TextField ChampClientEntrepriseContactNom; + @FXML private TextField ChampClientEntrepriseContactPrenom; + @FXML private TextField ChampClientEntrepriseContactCIN; + @FXML private TextField ChampClientEntrepriseContactMail; + @FXML private TextField ChampClientEntrepriseContactTele1; + @FXML private TextField ChampClientEntrepriseContactTele2; + + + + contro ctl= new contro() ; + ClientEntreprise MyClientEntreprise = new ClientEntreprise(); + ClientEntrepriseContact MyClientEntrepriseContact = new ClientEntrepriseContact(); + ClientEntrepriseDB MyCltEtrDB = new ClientEntrepriseDB(); + ClientEntrepriseContactDB MyCltEtrCta = new ClientEntrepriseContactDB(); + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //lors de clique sur le textfilde Code de l'entreprise + ChampClientEntrepriseCode.setOnKeyReleased(new EventHandler() { + public void handle(KeyEvent ke) { + try {// if is number + Integer.parseInt(ChampClientEntrepriseCode.getText()); + int cin =Integer.parseInt(ChampClientEntrepriseCode.getText()); + if(MyCltEtrDB.verifyCodeEntreprise(cin)){ + ErreurClientEntrepriseCode.setText("Code entreprise existe déja"); + ChampClientEntrepriseCode.setStyle("-fx-border-color:#f20606;"); + } + else{ + ErreurClientEntrepriseCode.setText(""); + ChampClientEntrepriseCode.setStyle("-fx-border-color: transparent;"); + } + } + catch (NumberFormatException e) { + ErreurClientEntrepriseCode.setText("Code doit être un numéro"); + ChampClientEntrepriseCode.setStyle("-fx-border-color:#f20606;"); + } + } + + }); + } + + + + + + @FXML + public void AjouterClientEntrepriseButtonAction(ActionEvent event) throws IOException { + if(!ControlesEtr()){ + if(!ControlesEtrContact()){ + //recupération des données dont l'objet + this.getClientEntreprise(); + //l'insertion des données dont la Base des données et afficher le message du succés + if(MyCltEtrDB.addEntreprise(MyClientEntreprise)){ + this.getClientEntrepriseContact(); + if(MyCltEtrCta.addClientEntrepriseContact(MyClientEntrepriseContact)){ + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneAjouterCltEntreprise); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + Image success = new Image(getClass().getResourceAsStream("/Public/icon/successfully.png")); + ImageView iv1 = new ImageView(); + iv1.setImage(success); + + Text text= new Text(); + text.setText("l'ajouter a été effectuée avec succès"); + text.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + Button AddClient = new Button("OK"); + AddClient.getStyleClass().add("btn-primary"); + AddClient.setPrefSize(100, 30); + + final StackPane stackpane = new StackPane(); + stackpane.setLayoutX(140); + stackpane.setLayoutY(100); + stackpane.setPrefHeight(200); + stackpane.setPrefWidth(200); + stackpane.getChildren().add(iv1); + stackpane.getChildren().add(text); + stackpane.getChildren().add(AddClient); + StackPane.setAlignment(iv1, Pos.BASELINE_CENTER); + StackPane.setAlignment(text, Pos.TOP_CENTER); + StackPane.setAlignment(AddClient, Pos.CENTER); + + AnchorPaneAjouterClientEntreprise.setLeftAnchor(stackpane, 83.0); + AnchorPaneAjouterClientEntreprise.setRightAnchor(stackpane, 83.0); + AnchorPaneAjouterClientEntreprise.setTopAnchor(stackpane,200.0); + AnchorPaneAjouterClientEntreprise.setBottomAnchor(stackpane,200.0); + AnchorPaneAjouterClientEntreprise.getChildren().add(stackpane); + + AddClient.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneAjouterCltEntreprise); + ft.setFromValue(0.0); + ft.setToValue(1.0); + ft.play(); + restechamp(); + } + }); + } + }); + } + } + } + } + } + + + private void restechamp(){ + ChampClientEntrepriseCode.setText(""); + ChampClientEntrepriseNom.setText(""); + ChampClientEntrepriseGerant.setText(""); + ChampClientEntrepriseMatricule.setText(""); + ChampClientEntrepriseAdresse.setText(""); + ChampClientEntreprisePostale.setText(""); + ChampClientEntrepriseTele1.setText(""); + ChampClientEntrepriseTele2.setText(""); + ChampClientEntrepriseMail.setText(""); + ChampClientEntrepriseFax.setText(""); + ChampClientEntrepriseContactNom.setText(""); + ChampClientEntrepriseContactPrenom.setText(""); + ChampClientEntrepriseContactCIN.setText(""); + ChampClientEntrepriseContactMail.setText(""); + ChampClientEntrepriseContactTele1.setText(""); + ChampClientEntrepriseContactTele2.setText(""); + } + + + private void getClientEntreprise(){ + MyClientEntreprise.setCodeString(ChampClientEntrepriseCode.getText()); + MyClientEntreprise.setNom(ChampClientEntrepriseNom.getText()); + MyClientEntreprise.setGerant(ChampClientEntrepriseGerant.getText()); + MyClientEntreprise.setMatricule(ChampClientEntrepriseMatricule.getText()); + MyClientEntreprise.setAdresse(ChampClientEntrepriseAdresse.getText()); + MyClientEntreprise.setPostaleString(ChampClientEntreprisePostale.getText()); + MyClientEntreprise.setTele1String(ChampClientEntrepriseTele1.getText()); + MyClientEntreprise.setTele2String(ChampClientEntrepriseTele2.getText()); + MyClientEntreprise.setMail(ChampClientEntrepriseMail.getText()); + MyClientEntreprise.setFaxString(ChampClientEntrepriseFax.getText()); + } + + private void getClientEntrepriseContact(){ + MyClientEntrepriseContact.setNom(ChampClientEntrepriseContactNom.getText()); + MyClientEntrepriseContact.setPrenom(ChampClientEntrepriseContactPrenom.getText()); + MyClientEntrepriseContact.setCINString(ChampClientEntrepriseContactCIN.getText()); + MyClientEntrepriseContact.setTele1String(ChampClientEntrepriseContactTele1.getText()); + MyClientEntrepriseContact.setTele2String(ChampClientEntrepriseContactTele2.getText()); + MyClientEntrepriseContact.setMail(ChampClientEntrepriseContactMail.getText()); + MyClientEntrepriseContact.setIdcltentreprise(MyClientEntreprise.getCode()); + } + + + + + + //methode qui afficher une fenêtre de notification "code client Etreprise générer par le systeme + private void getidcltEtr(){ + if(MyCltEtrDB.getidClientEtr()>=0){ + final Notification notification = new Notification(); + + notification.DetailMSG.getChildren().clear(); + + final String ch = String.valueOf(MyCltEtrDB.getidClientEtr()+1) ; + Text text1 = new Text(); + text1.setText("Code Entreprise vide \n \n"); + text1.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + text1.setFill(Color.web("#363a38")); + notification.DetailMSG.getChildren().add(text1); + + Text text2 = new Text(); + text2.setText("Voulez vous que system génére le code d'entreprise par le numéro suivant:"); + text2.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + text2.setFill(Color.web("#363a38")); + notification.DetailMSG.getChildren().add(text2); + + Text text3 = new Text(); + text3.setText(ch); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + text3.setFill(Color.web("#363a38")); + notification.DetailMSG.getChildren().add(text3); + + notification.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + notification.stackpane.setVisible(false); + ChampClientEntrepriseCode.setText(ch); + } + }); + notification.ShowNotification(); + } + + } + + + + + + + + + + private boolean ControlesEtr(){ + + boolean result=false ; + + if(ChampClientEntrepriseCode.getText().length()==0){ + this.getidcltEtr(); + result= true ; + } + else if(ctl.isNumericNotnull(ChampClientEntrepriseCode.getText())){ + ChampClientEntrepriseCode.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseCode.setText("Code doit être un numéro"); + result= true ; + } + else{ + if(ChampClientEntrepriseNom.getText().length()<3){ + ChampClientEntrepriseNom.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseNom.setText("Nom doit dépasser 3 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseNom.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseNom.setText(""); + if(ChampClientEntrepriseGerant.getText().length()<3){ + ChampClientEntrepriseGerant.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseGerant.setText("Gérant doit dépasser 3 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseGerant.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseGerant.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseMatricule.getText())){ + ChampClientEntrepriseMatricule.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseMatricule.setText("Matricule doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseMatricule.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseMatricule.setText(""); + if(ChampClientEntrepriseAdresse.getText().length()<3){ + ChampClientEntrepriseAdresse.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseAdresse.setText("L'adresse doit dépasser 3 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseAdresse.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseAdresse.setText(""); + + if(ctl.isNumeric(ChampClientEntreprisePostale.getText())){ + ChampClientEntreprisePostale.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntreprisePostale.setText("code doit être numéro"); + result= true ; + } + else{ + ChampClientEntreprisePostale.setStyle("-fx-border-color:transparent;"); + ErreurClientEntreprisePostale.setText(""); + if(ctl.isNumericNotnull(ChampClientEntrepriseTele1.getText())){ + ChampClientEntrepriseTele1.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseTele1.setText("Tele doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseTele1.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseTele1.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseTele2.getText())){ + ChampClientEntrepriseTele2.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseTele2.setText("Tele2 doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseTele2.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseTele2.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseFax.getText())){ + ChampClientEntrepriseFax.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseFax.setText("Fax doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseFax.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseFax.setText(""); + if(ChampClientEntrepriseMail.getText().length()>0 && ChampClientEntrepriseMail.getText().indexOf("@")< 0){ + ChampClientEntrepriseMail.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseMail.setText("invalide mail"); + result= true ; + } + else{ + ChampClientEntrepriseMail.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseMail.setText(""); + } + + } + } + } + } + } + } + } + } + } + + + return result ; + } + + + + private boolean ControlesEtrContact(){ + boolean result=false ; + if(ChampClientEntrepriseContactNom.getText().length()<4){ + ChampClientEntrepriseContactNom.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactNom.setText("Nom doit dépasser 4 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseContactNom.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactNom.setText(""); + if(ChampClientEntrepriseContactPrenom.getText().length()<4){ + ChampClientEntrepriseContactPrenom.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactPrenom.setText("Prénom doit dépasser 4 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseContactPrenom.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactPrenom.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseContactCIN.getText())){ + ChampClientEntrepriseContactCIN.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactCIN.setText("CIN doit être un numéro"); + result= true ; + } + else{ + ChampClientEntrepriseContactCIN.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactCIN.setText(""); + if(ChampClientEntrepriseContactMail.getText().length()>0){ + if(ChampClientEntrepriseContactMail.getText().indexOf("@")< 0){ + ChampClientEntrepriseContactMail.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactMail.setText("invalide mail"); + result= true ; + } + else{ + ChampClientEntrepriseContactMail.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactMail.setText(""); + } + } + if(ctl.isNumericNotnull(ChampClientEntrepriseContactTele1.getText())){ + ChampClientEntrepriseContactTele1.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactTele1.setText("Tele doit être un numéro"); + result= true ; + } + else{ + ChampClientEntrepriseContactTele1.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactTele1.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseContactTele2.getText())){ + ChampClientEntrepriseContactTele2.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactTele2.setText("Tele doit être un numéro"); + result= true ; + } + else{ + ChampClientEntrepriseContactTele2.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactTele2.setText(""); + } + } + } + + } + + } + return result ; + } +} diff --git a/src/main/java/Controllers/Client/AjouterClientPersonneController.java b/src/main/java/Controllers/Client/AjouterClientPersonneController.java new file mode 100644 index 0000000..8bb57d9 --- /dev/null +++ b/src/main/java/Controllers/Client/AjouterClientPersonneController.java @@ -0,0 +1,398 @@ +/* + * 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 Controllers.Client; + +import Controllers.Dialog.Notification; +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.contro; +import Models.Client.Client; +import Models.Client.ClientDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.DatePicker; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.util.Duration; + +/** + * FXML Controller class + * + * @author Maher + */ +public class AjouterClientPersonneController implements Initializable { + + @FXML private AnchorPane AnchorPaneAjouterClientPersonne ; + @FXML private AnchorPane AnchorPaneAjouterCltPersonne ; + @FXML private TextField AjouterClientCode; + @FXML private TextField AjouterClientCIN; + @FXML private TextField AjouterClientNomComplet; + @FXML private TextField AjouterClientNom; + @FXML private TextField AjouterClientPrenom; + @FXML private DatePicker AjouterClientNaissance; + @FXML private TextField AjouterClientTeleFixe; + @FXML private TextField AjouterClientTeleMobile; + @FXML private TextField AjouterClientAdresse; + @FXML private TextField AjouterClientCodePostal; + @FXML private TextField AjouterClientMail; + @FXML public ToggleGroup groupesexe; + @FXML private RadioButton AjouterClientSexeHomme; + @FXML private RadioButton AjouterClientSexeFemme; + + + @FXML private Text ErreurCode ; + @FXML private Text ErreurCIN ; + @FXML private Text ErreurNomComplet ; + @FXML private Text ErreurNom ; + @FXML private Text ErreurPrenom ; + @FXML private Text ErreurNaissance ; + @FXML private Text ErreurTeleFixe ; + @FXML private Text ErreurTeleMobile ; + @FXML private Text ErreurAdresse ; + @FXML private Text ErreurCodePostal ; + @FXML private Text ErreurMail ; + @FXML private Text ErreurSexe ; + + contro ctl= new contro() ; + Client Myclient = new Client(); + ClientDB dbclient = new ClientDB(); + + + @FXML + public void AjouterClientPersonneButtonAction(ActionEvent event) throws IOException { + + if(!this.Controles()){ + + this.getclient(); //recupératiion des données dont l'objet Myclient + + if(dbclient.addClient(Myclient)){ //l'insertion des données dont la Base des données et afficher le message du succés + + + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneAjouterCltPersonne); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + //Image success = new Image(file.toURI().toString()+"successfully.png"); + Image success = new Image(getClass().getResourceAsStream("/Public/icon/successfully.png")); + ImageView iv1 = new ImageView(); + iv1.setImage(success); + + Text text= new Text(); + text.setText("l'ajouter a été effectuée avec succès"); + text.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + Button AddClient = new Button("OK"); + AddClient.getStyleClass().add("btn-success"); + AddClient.setPrefSize(100, 30); + + final StackPane stackpane = new StackPane(); + stackpane.setLayoutX(140); + stackpane.setLayoutY(100); + stackpane.setPrefHeight(200); + stackpane.setPrefWidth(200); + stackpane.getChildren().add(iv1); + stackpane.getChildren().add(text); + stackpane.getChildren().add(AddClient); + StackPane.setAlignment(iv1, Pos.BASELINE_CENTER); + StackPane.setAlignment(text, Pos.TOP_CENTER); + StackPane.setAlignment(AddClient, Pos.CENTER); + + AnchorPaneAjouterClientPersonne.setLeftAnchor(stackpane, 83.0); + AnchorPaneAjouterClientPersonne.setRightAnchor(stackpane, 83.0); + AnchorPaneAjouterClientPersonne.setTopAnchor(stackpane,220.0); + AnchorPaneAjouterClientPersonne.setBottomAnchor(stackpane,220.0); + AnchorPaneAjouterClientPersonne.getChildren().add(stackpane); + + AddClient.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneAjouterCltPersonne); + ft.setFromValue(0.0); + ft.setToValue(1.0); + ft.play(); + restechamp(); + } + }); + } + }); + + } + else{ + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + + } + + + } + + private void getclient(){ + Myclient.setCinString(AjouterClientCIN.getText()); + Myclient.setCodeclientString(AjouterClientCode.getText()); + Myclient.setNomcomplet(AjouterClientNomComplet.getText()); + Myclient.setNom(AjouterClientNom.getText()); + Myclient.setPrenom(AjouterClientPrenom.getText()); + Myclient.setNaissanceDatePicker(AjouterClientNaissance.getValue()); + Myclient.setTelefixString(AjouterClientTeleFixe.getText()); + Myclient.setTelemobileString(AjouterClientTeleMobile.getText()); + Myclient.setSexeString(groupesexe.getSelectedToggle().getUserData().toString()); + Myclient.setAdresse(AjouterClientAdresse.getText()); + Myclient.setCodepostal(AjouterClientCodePostal.getText()); + Myclient.setMail(AjouterClientMail.getText()); + } + + + //methode qui afficher une fenêtre de notification "code client générer par le systeme + private void getidclt(){ + final Notification notification = new Notification(); + + notification.DetailMSG.getChildren().clear(); + + final String ch = String.valueOf(dbclient.getidClient()+1) ; + Text text1 = new Text(); + text1.setText("Code client vide \n \n"); + text1.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + text1.setFill(Color.web("#363a38")); + notification.DetailMSG.getChildren().add(text1); + + Text text2 = new Text(); + text2.setText("Voulez vous que system génére le code client par le numéro suivant:"); + text2.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + text2.setFill(Color.web("#363a38")); + notification.DetailMSG.getChildren().add(text2); + + Text text3 = new Text(); + text3.setText(ch); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + text3.setFill(Color.web("#363a38")); + notification.DetailMSG.getChildren().add(text3); + + notification.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + notification.stackpane.setVisible(false); + AjouterClientCode.setText(ch); + } + }); + notification.ShowNotification(); + } + + + + //fider tous les champs du formulaires + private void restechamp(){ + AjouterClientCIN.setText(""); + AjouterClientCode.setText(""); + AjouterClientNomComplet.setText(""); + AjouterClientNom.setText(""); + AjouterClientPrenom.setText(""); + AjouterClientNaissance.setValue(null); + AjouterClientTeleFixe.setText(""); + AjouterClientTeleMobile.setText(""); + AjouterClientCodePostal.setText(""); + AjouterClientAdresse.setText(""); + AjouterClientMail.setText(""); + AjouterClientSexeHomme.setSelected(false); + AjouterClientSexeFemme.setSelected(false); + } + + + @Override + public void initialize(URL url, ResourceBundle rb) { + AjouterClientSexeHomme.setUserData("Homme"); + AjouterClientSexeFemme.setUserData("Femme"); + + //lors de clique sur le textfilde CIN + AjouterClientCIN.setOnKeyReleased(new EventHandler() { + public void handle(KeyEvent ke) { + try {// if is number + Integer.parseInt(AjouterClientCIN.getText()); + int cin =Integer.parseInt(AjouterClientCIN.getText()); + if(dbclient.verifyCinClient(cin)){ + ErreurCIN.setText("CIN existe déja"); + AjouterClientCIN.setStyle("-fx-border-color:#f20606;"); + } + else{ + ErreurCIN.setText(""); + AjouterClientCIN.setStyle("-fx-border-color: transparent;"); + } + } + catch (NumberFormatException e) { + ErreurCIN.setText("CIN doit être 8 numéro"); + AjouterClientCIN.setStyle("-fx-border-color:#f20606;"); + } + } + + }); + + + + } + + + + private boolean Controles(){ + boolean result ; + if(AjouterClientCode.getText().length()== 0){ //code client vide + this.getidclt(); + result= true ; + } + else if(ctl.isNumeric(AjouterClientCode.getText())){ //code client n'est pas un numero + AjouterClientCode.setStyle("-fx-border-color:#f20606;"); + ErreurCode.setText("code client doit être numéro"); + result= true ; + } + else if(dbclient.verifyIdClient(Integer.parseInt(AjouterClientCode.getText()))){ //code client existe déja + AjouterClientCode.setStyle("-fx-border-color:#f20606;"); + ErreurCode.setText("code client existe déja"); + result= true ; + } + else{ + AjouterClientCode.setStyle("-fx-border-color:transparent;"); + ErreurCode.setText(""); + if((AjouterClientCIN.getText().length()!= 8) || (ctl.isNumericNotnull(AjouterClientCIN.getText()))){ + ErreurCIN.setText("CIN doit être 8 numéro"); + AjouterClientCIN.setStyle("-fx-border-color:#f20606;"); + result= true ; + } + else{ + ErreurCIN.setText(""); + AjouterClientCIN.setStyle("-fx-border-color: transparent;"); + if(dbclient.verifyCinClient(Integer.parseInt(AjouterClientCIN.getText()))){ + ErreurCIN.setText("CIN existe déja"); + AjouterClientCIN.setStyle("-fx-border-color:#f20606;"); + result= true ; + } + else{ + ErreurCIN.setText(""); + AjouterClientCIN.setStyle("-fx-border-color: transparent;"); + if(AjouterClientNomComplet.getText().length()<10){ + ErreurNomComplet.setText("Client doit dépasser 10 catactaire"); + AjouterClientNomComplet.setStyle("-fx-border-color:#f20606;"); + result= true ; + } + else{ + ErreurNomComplet.setText(""); + AjouterClientNomComplet.setStyle("-fx-border-color: transparent;"); + if(AjouterClientPrenom.getText().length()<3){ + AjouterClientPrenom.setStyle("-fx-border-color:#f20606;"); + ErreurPrenom.setText("le prénom doit dépasser 3 caractaire"); + result= true ; + } + else{ + ErreurPrenom.setText(""); + AjouterClientPrenom.setStyle("-fx-border-color: transparent;"); + if(AjouterClientNom.getText().length()<3){ + AjouterClientNom.setStyle("-fx-border-color:#f20606;"); + ErreurNom.setText("Prénom doit dépasser 3 caractaire"); + result= true ; + } + else{ + AjouterClientNom.setStyle("-fx-border-color: transparent;"); + ErreurNom.setText(""); + if(AjouterClientNaissance.getValue()==null){ + AjouterClientNaissance.setStyle("-fx-border-color:#f20606;"); + ErreurNaissance.setText("Date de naissance vide"); + result= true ; + } + else{ + AjouterClientNaissance.setStyle("-fx-border-color: transparent;"); + ErreurNaissance.setText(""); + if(ctl.isNumericNotnull(AjouterClientTeleFixe.getText())){ + AjouterClientTeleFixe.setStyle("-fx-border-color:#f20606;"); + ErreurTeleFixe.setText("tele doit être numéro"); + result= true ; + } + else{ + AjouterClientTeleFixe.setStyle("-fx-border-color: transparent;"); + ErreurTeleFixe.setText(""); + if(AjouterClientTeleMobile.getText().length()>0){ + if(ctl.isNumeric(AjouterClientTeleMobile.getText())){ + AjouterClientTeleMobile.setStyle("-fx-border-color:#f20606;"); + ErreurTeleMobile.setText("tele doit être numéro"); + result= true ; + } + else{ + AjouterClientTeleMobile.setStyle("-fx-border-color: transparent;"); + ErreurTeleMobile.setText(""); + } + } + if(groupesexe.getSelectedToggle()== null){ + ErreurSexe.setText("Veuillez sélectionner le sexe"); + result= true ; + } + else{ + ErreurSexe.setText(""); + if(AjouterClientAdresse.getText().length()<4){ + AjouterClientAdresse.setStyle("-fx-border-color: #f20606;"); + ErreurAdresse.setText("Adresse doit dépasser 4 caractaire"); + result= true ; + } + else{ + AjouterClientAdresse.setStyle("-fx-border-color: transparent;"); + ErreurAdresse.setText(""); + if(ctl.isNumeric(AjouterClientCodePostal.getText())){ + AjouterClientCodePostal.setStyle("-fx-border-color: #f20606;"); + ErreurCodePostal.setText("code doit être numéro"); + result= true ; + } + else{ + AjouterClientCodePostal.setStyle("-fx-border-color: transparent;"); + ErreurCodePostal.setText(""); + if(AjouterClientMail.getText().length()> 0){ + if(AjouterClientMail.getText().indexOf("@")< 0){ + AjouterClientMail.setStyle("-fx-border-color: #f20606;"); + ErreurMail.setText("invalide mail"); + result= true ; + } + else{ + AjouterClientMail.setStyle("-fx-border-color: transparent;"); + ErreurMail.setText(""); + result= false ; + } + } + else{ + result= false ; + } + } + + } + } + } + } + } + } + } + } + } + } + return result ; + } + +} diff --git a/src/main/java/Controllers/Client/DetailClientController.java b/src/main/java/Controllers/Client/DetailClientController.java new file mode 100644 index 0000000..aa24707 --- /dev/null +++ b/src/main/java/Controllers/Client/DetailClientController.java @@ -0,0 +1,552 @@ +/* + * 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 Controllers.Client; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.contro; +import Models.Client.Client; +import Models.Client.ClientDB; +import Models.Client.ClientEntreprise; +import Models.Client.ClientEntrepriseContact; +import Models.Client.ClientEntrepriseDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.DatePicker; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.util.Duration; + + +/** + * FXML Controller class + * @author PC-Maher + */ +public class DetailClientController implements Initializable { + + @FXML private StackPane StackPaneSucessCltPersonne; + @FXML private AnchorPane AnchorPaneModifierCltPersonne; + @FXML private AnchorPane AnchorPaneModifierCltEntreprise; + + @FXML public Text Nomclt ; + @FXML public Text Codeclt ; + + @FXML private TextField AjouterClientCode; + @FXML private TextField AjouterClientCIN; + @FXML private TextField AjouterClientNomComplet; + @FXML private TextField AjouterClientNom; + @FXML private TextField AjouterClientPrenom; + @FXML private DatePicker AjouterClientNaissance; + @FXML private TextField AjouterClientTeleFixe; + @FXML private TextField AjouterClientTeleMobile; + @FXML private TextField AjouterClientAdresse; + @FXML private TextField AjouterClientCodePostal; + @FXML private TextField AjouterClientMail; + @FXML public ToggleGroup groupesexe; + @FXML private RadioButton RadioButtonSexeHomme; + @FXML private RadioButton RadioButtonSexeFemme; + + @FXML private Text ErreurCode ; + @FXML private Text ErreurCIN ; + @FXML private Text ErreurNomComplet ; + @FXML private Text ErreurNom ; + @FXML private Text ErreurPrenom ; + @FXML private Text ErreurNaissance ; + @FXML private Text ErreurTeleFixe ; + @FXML private Text ErreurTeleMobile ; + @FXML private Text ErreurAdresse ; + @FXML private Text ErreurCodePostal ; + @FXML private Text ErreurMail ; + @FXML private Text ErreurSexe ; + + @FXML private Text ErreurClientEntrepriseNom ; + @FXML private Text ErreurClientEntrepriseGerant ; + @FXML private Text ErreurClientEntrepriseMatricule ; + @FXML private Text ErreurClientEntrepriseAdresse ; + @FXML private Text ErreurClientEntreprisePostale ; + @FXML private Text ErreurClientEntrepriseTele1 ; + @FXML private Text ErreurClientEntrepriseTele2 ; + @FXML private Text ErreurClientEntrepriseMail ; + @FXML private Text ErreurClientEntrepriseFax ; + @FXML private Text ErreurClientEntrepriseContactNom ; + @FXML private Text ErreurClientEntrepriseContactPrenom ; + @FXML private Text ErreurClientEntrepriseContactCIN ; + @FXML private Text ErreurClientEntrepriseContactMail ; + @FXML private Text ErreurClientEntrepriseContactTele1 ; + @FXML private Text ErreurClientEntrepriseContactTele2 ; + + @FXML private TextField ChampClientEntrepriseNom; + @FXML private TextField ChampClientEntrepriseGerant ; + @FXML private TextField ChampClientEntrepriseMatricule; + @FXML private TextField ChampClientEntrepriseAdresse; + @FXML private TextField ChampClientEntreprisePostale; + @FXML private TextField ChampClientEntrepriseTele1; + @FXML private TextField ChampClientEntrepriseTele2; + @FXML private TextField ChampClientEntrepriseMail; + @FXML private TextField ChampClientEntrepriseFax; + @FXML private TextField ChampClientEntrepriseContactNom; + @FXML private TextField ChampClientEntrepriseContactPrenom; + @FXML private TextField ChampClientEntrepriseContactCIN; + @FXML private TextField ChampClientEntrepriseContactMail; + @FXML private TextField ChampClientEntrepriseContactTele1; + @FXML private TextField ChampClientEntrepriseContactTele2; + + + ClientDB clientDB = new ClientDB(); + ClientEntrepriseDB EntrepriseCltDB = new ClientEntrepriseDB(); + + ClientEntreprise entreprise = new ClientEntreprise(); + ClientEntrepriseContact contactEtr = new ClientEntrepriseContact(); + + contro ctl= new contro() ; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + RadioButtonSexeFemme.setUserData("0"); + RadioButtonSexeHomme.setUserData("1"); + + } + + + public void setDataClient(String codeclt) + { + AnchorPaneModifierCltEntreprise.setVisible(false); + AnchorPaneModifierCltPersonne.setVisible(true); + + Client client = clientDB.getClient(codeclt); + + Codeclt.setText(codeclt); + Nomclt.setText(client.getNom()+" "+client.getPrenom()); + + AjouterClientCode.setText(client.getCodeclient()); + AjouterClientCIN.setText(client.getCinString()); + AjouterClientNomComplet.setText(client.getNomcomplet()); + AjouterClientNom.setText(client.getNom()); + AjouterClientPrenom.setText(client.getPrenom()); + AjouterClientNaissance.setValue(Adaptateur.StringToLocalDate(client.getNaissance().toString())); + AjouterClientTeleFixe.setText(client.getTelefixString()); + AjouterClientTeleMobile.setText(client.getTelemobileString()); + AjouterClientAdresse.setText(client.getAdresse()); + AjouterClientCodePostal.setText(client.getCodepostal()); + AjouterClientMail.setText(client.getMail()); + if(client.getSexe() == 1){ RadioButtonSexeHomme.setSelected(true); } + if(client.getSexe() == 0){ RadioButtonSexeFemme.setSelected(true); } + } + + + + @FXML + private void UpdateClientButtonAction(ActionEvent event) throws IOException + { + Client client = new Client(); + if(!this.ControlesClient()) + { + client.setCinString(AjouterClientCIN.getText()); + client.setCodeclientString(AjouterClientCode.getText()); + client.setNomcomplet(AjouterClientNomComplet.getText()); + client.setNom(AjouterClientNom.getText()); + client.setPrenom(AjouterClientPrenom.getText()); + client.setNaissanceDatePicker(AjouterClientNaissance.getValue()); + client.setTelefixString(AjouterClientTeleFixe.getText()); + client.setTelemobileString(AjouterClientTeleMobile.getText()); + client.setSexeString(groupesexe.getSelectedToggle().getUserData().toString()); + client.setAdresse(AjouterClientAdresse.getText()); + client.setCodepostal(AjouterClientCodePostal.getText()); + client.setMail(AjouterClientMail.getText()); + + if(clientDB.updateClient(client)) + { + + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneModifierCltPersonne); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + StackPaneSucessCltPersonne.setVisible(true); + } + }); + + } + + } + + } + + private boolean ControlesClient() + { + boolean result ; + + AjouterClientCode.setStyle("-fx-border-color:transparent;"); + ErreurCode.setText(""); + if((AjouterClientCIN.getText().length()!= 8) || (ctl.isNumericNotnull(AjouterClientCIN.getText()))){ + ErreurCIN.setText("CIN doit être 8 numéro"); + AjouterClientCIN.setStyle("-fx-border-color:#f20606;"); + result= true ; + } + else{ + + ErreurCIN.setText(""); + AjouterClientCIN.setStyle("-fx-border-color: transparent;"); + if(AjouterClientNomComplet.getText().length()<10){ + ErreurNomComplet.setText("Client doit dépasser 10 catactaire"); + AjouterClientNomComplet.setStyle("-fx-border-color:#f20606;"); + result= true ; + } + else{ + ErreurNomComplet.setText(""); + AjouterClientNomComplet.setStyle("-fx-border-color: transparent;"); + if(AjouterClientPrenom.getText().length()<3){ + AjouterClientPrenom.setStyle("-fx-border-color:#f20606;"); + ErreurPrenom.setText("le prénom doit dépasser 3 caractaire"); + result= true ; + } + else{ + ErreurPrenom.setText(""); + AjouterClientPrenom.setStyle("-fx-border-color: transparent;"); + if(AjouterClientNom.getText().length()<3){ + AjouterClientNom.setStyle("-fx-border-color:#f20606;"); + ErreurNom.setText("Prénom doit dépasser 3 caractaire"); + result= true ; + } + else{ + AjouterClientNom.setStyle("-fx-border-color: transparent;"); + ErreurNom.setText(""); + if(AjouterClientNaissance.getValue()==null){ + AjouterClientNaissance.setStyle("-fx-border-color:#f20606;"); + ErreurNaissance.setText("Date de naissance vide"); + result= true ; + } + else{ + AjouterClientNaissance.setStyle("-fx-border-color: transparent;"); + ErreurNaissance.setText(""); + if(ctl.isNumericNotnull(AjouterClientTeleFixe.getText())){ + AjouterClientTeleFixe.setStyle("-fx-border-color:#f20606;"); + ErreurTeleFixe.setText("tele doit être numéro"); + result= true ; + } + else{ + AjouterClientTeleFixe.setStyle("-fx-border-color: transparent;"); + ErreurTeleFixe.setText(""); + if(AjouterClientTeleMobile.getText() != ""){ + if(ctl.isNumeric(AjouterClientTeleMobile.getText())){ + AjouterClientTeleMobile.setStyle("-fx-border-color:#f20606;"); + ErreurTeleMobile.setText("tele doit être numéro"); + result= true ; + } + else{ + AjouterClientTeleMobile.setStyle("-fx-border-color: transparent;"); + ErreurTeleMobile.setText(""); + } + } + if(groupesexe.getSelectedToggle()== null){ + ErreurSexe.setText("Veuillez sélectionner le sexe"); + result= true ; + } + else{ + ErreurSexe.setText(""); + if(AjouterClientAdresse.getText().length()<4){ + AjouterClientAdresse.setStyle("-fx-border-color: #f20606;"); + ErreurAdresse.setText("Adresse doit dépasser 4 caractaire"); + result= true ; + } + else{ + AjouterClientAdresse.setStyle("-fx-border-color: transparent;"); + ErreurAdresse.setText(""); + if(ctl.isNumeric(AjouterClientCodePostal.getText())){ + AjouterClientCodePostal.setStyle("-fx-border-color: #f20606;"); + ErreurCodePostal.setText("code doit être numéro"); + result= true ; + } + else{ + AjouterClientCodePostal.setStyle("-fx-border-color: transparent;"); + ErreurCodePostal.setText(""); + if(AjouterClientMail.getText().length()> 0){ + if(AjouterClientMail.getText().indexOf("@")< 0){ + AjouterClientMail.setStyle("-fx-border-color: #f20606;"); + ErreurMail.setText("invalide mail"); + result= true ; + } + else{ + AjouterClientMail.setStyle("-fx-border-color: transparent;"); + ErreurMail.setText(""); + result= false ; + } + } + else{ + result= false ; + } + } + + } + } + } + } + } + } + } + + } + + return result ; + } + + /**********************Clt Entreprise******************************/ + + public void setDataEntreprise(String codeEtr) + { + + AnchorPaneModifierCltPersonne.setVisible(false); + AnchorPaneModifierCltEntreprise.setVisible(true); + entreprise = EntrepriseCltDB.GetClientEtr(codeEtr); + + Codeclt.setText(codeEtr); + Nomclt.setText(entreprise.getNom()); + + ChampClientEntrepriseNom.setText(entreprise.getNom()); + ChampClientEntrepriseGerant.setText(entreprise.getGerant()) ; + ChampClientEntrepriseMatricule.setText(entreprise.getMatricule()); + ChampClientEntrepriseAdresse.setText(entreprise.getAdresse()); + ChampClientEntreprisePostale.setText(entreprise.getPostalString()); + ChampClientEntrepriseTele1.setText(entreprise.getTele1String()); + ChampClientEntrepriseTele2.setText(entreprise.getTele2String()); + ChampClientEntrepriseMail.setText(entreprise.getMail()); + ChampClientEntrepriseFax.setText(entreprise.getFaxString()); + + contactEtr = entreprise.getContact(); + ChampClientEntrepriseContactNom.setText(contactEtr.getNom()); + ChampClientEntrepriseContactPrenom.setText(contactEtr.getPrenom()); + ChampClientEntrepriseContactCIN.setText(contactEtr.getCINString()); + ChampClientEntrepriseContactMail.setText(contactEtr.getMail()); + ChampClientEntrepriseContactTele1.setText(contactEtr.getTele1String()); + ChampClientEntrepriseContactTele2.setText(contactEtr.getTele2String()); + + } + + @FXML + private void UpdateClientEntrepriseButtonAction(ActionEvent event) throws IOException + { + if(!ControlesEtr()){ + if(!ControlesEtrContact()){ + + entreprise.setNom(ChampClientEntrepriseNom.getText()); + entreprise.setGerant(ChampClientEntrepriseGerant.getText()); + entreprise.setMatricule(ChampClientEntrepriseMatricule.getText()); + entreprise.setAdresse(ChampClientEntrepriseAdresse.getText()); + entreprise.setPostaleString(ChampClientEntreprisePostale.getText()); + entreprise.setTele1String(ChampClientEntrepriseTele1.getText()); + entreprise.setTele2String(ChampClientEntrepriseTele2.getText()); + entreprise.setMail(ChampClientEntrepriseMail.getText()); + entreprise.setFaxString(ChampClientEntrepriseFax.getText()); + + contactEtr.setNom(ChampClientEntrepriseContactNom.getText()); + contactEtr.setPrenom(ChampClientEntrepriseContactPrenom.getText()); + contactEtr.setCINString(ChampClientEntrepriseContactCIN.getText()); + contactEtr.setTele1String(ChampClientEntrepriseContactTele1.getText()); + contactEtr.setTele2String(ChampClientEntrepriseContactTele2.getText()); + contactEtr.setMail(ChampClientEntrepriseContactMail.getText()); + + entreprise.setContact(contactEtr); + + if(EntrepriseCltDB.updateEntreprise(entreprise)) + { + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneModifierCltEntreprise); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + StackPaneSucessCltPersonne.setVisible(true); + } + }); + + } + } + } + } + + + + private boolean ControlesEtr() + { + + boolean result=false ; + + if(ChampClientEntrepriseNom.getText().length()<3){ + ChampClientEntrepriseNom.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseNom.setText("Nom doit dépasser 3 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseNom.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseNom.setText(""); + if(ChampClientEntrepriseGerant.getText().length()<3){ + ChampClientEntrepriseGerant.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseGerant.setText("Gérant doit dépasser 3 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseGerant.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseGerant.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseMatricule.getText())){ + ChampClientEntrepriseMatricule.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseMatricule.setText("Matricule doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseMatricule.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseMatricule.setText(""); + if(ChampClientEntrepriseAdresse.getText().length()<3){ + ChampClientEntrepriseAdresse.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseAdresse.setText("L'adresse doit dépasser 3 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseAdresse.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseAdresse.setText(""); + + if(ctl.isNumeric(ChampClientEntreprisePostale.getText())){ + ChampClientEntreprisePostale.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntreprisePostale.setText("code doit être numéro"); + result= true ; + } + else{ + ChampClientEntreprisePostale.setStyle("-fx-border-color:transparent;"); + ErreurClientEntreprisePostale.setText(""); + if(ctl.isNumericNotnull(ChampClientEntrepriseTele1.getText())){ + ChampClientEntrepriseTele1.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseTele1.setText("Tele doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseTele1.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseTele1.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseTele2.getText())){ + ChampClientEntrepriseTele2.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseTele2.setText("Tele2 doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseTele2.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseTele2.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseFax.getText())){ + ChampClientEntrepriseFax.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseFax.setText("Fax doit être numéro"); + result= true ; + } + else{ + ChampClientEntrepriseFax.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseFax.setText(""); + if(ChampClientEntrepriseMail.getText().length()>0 && ChampClientEntrepriseMail.getText().indexOf("@")< 0){ + ChampClientEntrepriseMail.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseMail.setText("invalide mail"); + result= true ; + } + else{ + ChampClientEntrepriseMail.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseMail.setText(""); + } + + } + } + } + } + } + } + } + } + return result ; + } + + + + + + private boolean ControlesEtrContact(){ + boolean result=false ; + if(ChampClientEntrepriseContactNom.getText().length()<4){ + ChampClientEntrepriseContactNom.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactNom.setText("Nom doit dépasser 4 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseContactNom.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactNom.setText(""); + if(ChampClientEntrepriseContactPrenom.getText().length()<4){ + ChampClientEntrepriseContactPrenom.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactPrenom.setText("Prénom doit dépasser 4 caractère"); + result= true ; + } + else{ + ChampClientEntrepriseContactPrenom.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactPrenom.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseContactCIN.getText())){ + ChampClientEntrepriseContactCIN.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactCIN.setText("CIN doit être un numéro"); + result= true ; + } + else{ + ChampClientEntrepriseContactCIN.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactCIN.setText(""); + if(ChampClientEntrepriseContactMail.getText().length()>0){ + if(ChampClientEntrepriseContactMail.getText().indexOf("@")< 0){ + ChampClientEntrepriseContactMail.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactMail.setText("invalide mail"); + result= true ; + } + else{ + ChampClientEntrepriseContactMail.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactMail.setText(""); + } + } + if(ctl.isNumericNotnull(ChampClientEntrepriseContactTele1.getText())){ + ChampClientEntrepriseContactTele1.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactTele1.setText("Tele doit être un numéro"); + result= true ; + } + else{ + ChampClientEntrepriseContactTele1.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactTele1.setText(""); + if(ctl.isNumeric(ChampClientEntrepriseContactTele2.getText())){ + ChampClientEntrepriseContactTele2.setStyle("-fx-border-color:#f20606;"); + ErreurClientEntrepriseContactTele2.setText("Tele doit être un numéro"); + result= true ; + } + else{ + ChampClientEntrepriseContactTele2.setStyle("-fx-border-color:transparent;"); + ErreurClientEntrepriseContactTele2.setText(""); + } + } + } + + } + + } + return result ; + } + + + + + + +} diff --git a/src/main/java/Controllers/Client/GestionClientEntrepriseController.java b/src/main/java/Controllers/Client/GestionClientEntrepriseController.java new file mode 100644 index 0000000..0577420 --- /dev/null +++ b/src/main/java/Controllers/Client/GestionClientEntrepriseController.java @@ -0,0 +1,417 @@ +package Controllers.Client; + +import Models.Client.ClientEntrepriseDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class GestionClientEntrepriseController implements Initializable { + + @FXML private AnchorPane AnchorPaneGestionClt; + + @FXML private ProgressBar ProgressBarClientEntreprise; + + @FXML private Button ButtonSearchClientEntreprise; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + @FXML private TextField GestionClientCodeEtr; + @FXML private TextField GestionClientNomEtr; + @FXML private TextField GestionClientGerantEtr; + @FXML private TextField GestionClientMatriculeEtr; + @FXML private TextField GestionClientAdresseEtr; + @FXML private TextField GestionClientTelephoneEtr; + + @FXML private TableView TableViewListeClientEntreprise ; + + @FXML private TableColumn CodeClientEtr; + @FXML private TableColumn NomEntreprise; + @FXML private TableColumn Gerant ; + @FXML private TableColumn matricule; + @FXML private TableColumn Adresse; + @FXML private TableColumn Telephone; + @FXML private TableColumn Action ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchClientEntreprise; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + CodeClientEtr.setCellValueFactory(new PropertyValueFactory("code")); + NomEntreprise.setCellValueFactory(new PropertyValueFactory("NomEntreprise")); + Gerant.setCellValueFactory(new PropertyValueFactory("Gerant")); + matricule.setCellValueFactory(new PropertyValueFactory("matricule")); + Adresse.setCellValueFactory(new PropertyValueFactory("Adresse")); + Telephone.setCellValueFactory(new PropertyValueFactory("Telephone")); + + Action.setSortable(true); + Action.setStyle( "-fx-alignment: CENTER;");Action.getStyleClass().add("Center"); + Action.setCellValueFactory(new Callback,ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + Action.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + + //DOUBLE CLIQUE SUR UN CLIENT + TableViewListeClientEntreprise.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + if(event.getClickCount()>1){ + if(TableViewListeClientEntreprise.getSelectionModel().getSelectedIndex()>=0){ + + try { + AnchorPaneGestionClt.getChildren().clear(); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Client/DetailClient.fxml")); + Parent root = (Parent)fxmlLoader.load(); + DetailClientController DcltCtl = fxmlLoader.getController(); + DcltCtl.setDataEntreprise(TableViewListeClientEntreprise.getSelectionModel().getSelectedItem().getCode()); + AnchorPaneGestionClt.getChildren().add(root); + // + //DcltCtl.setUser("sqdfqsdf"); + } catch (IOException ex) { + Logger.getLogger(GestionClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + + + } + } + + } + }); + + + ButtonSearchClientEntreprise.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchClientEntreprise(); + } + }); + + AnchorPaneGestionClt.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchClientEntreprise(); + } + } + }); + + GestionSearchClientEntreprise(); + + } + + @FXML + public void AjouterClientPersonneRadioAction(ActionEvent event) throws IOException { + AnchorPaneGestionClt.getChildren().clear(); + AnchorPaneGestionClt.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/GestionClientPersonne.fxml"))); + } + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + // get Selected Item + ListeClientEntreprise currentEntreprise = (ListeClientEntreprise) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + try { + AnchorPaneGestionClt.getChildren().clear(); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Client/DetailClient.fxml")); + Parent root = (Parent)fxmlLoader.load(); + DetailClientController DcltCtl = fxmlLoader.getController(); + DcltCtl.setDataEntreprise(currentEntreprise.getCode()); + + AnchorPaneGestionClt.getChildren().add(root); + } catch (IOException ex) { + Logger.getLogger(GestionClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchClientEntreprise() + { + ProgressBarClientEntreprise.setVisible(true); + + ButtonSearchClientEntreprise.setDisable(true); + + ThreadSearchClientEntreprise = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + ObservableList ListeCltEntreprise = new ClientEntrepriseDB().SearchCltEntrepriseGestion( + position, + nbrligne, + GestionClientCodeEtr.getText(), + GestionClientNomEtr.getText(), + GestionClientGerantEtr.getText(), + GestionClientMatriculeEtr.getText(), + GestionClientAdresseEtr.getText(), + GestionClientTelephoneEtr.getText()); + + TableViewListeClientEntreprise.setItems(ListeCltEntreprise); + + totalcount = new ClientEntrepriseDB().nbrCltEntrepriseGestion(GestionClientCodeEtr.getText(), GestionClientNomEtr.getText(), GestionClientGerantEtr.getText(), GestionClientMatriculeEtr.getText(), GestionClientAdresseEtr.getText(), GestionClientTelephoneEtr.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchClientEntreprise.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientEntreprise.setVisible(false); + ButtonSearchClientEntreprise.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchClientEntreprise.start(); + } + + + + private void NextLastSearchClientEntreprise(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarClientEntreprise.setVisible(true); + + ButtonSearchClientEntreprise.setDisable(true); + + ThreadSearchClientEntreprise = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + ObservableList ListeCltEntreprise = new ClientEntrepriseDB().SearchCltEntrepriseGestion( + ParmPosition, + ParamNbrligne, + GestionClientCodeEtr.getText(), + GestionClientNomEtr.getText(), + GestionClientGerantEtr.getText(), + GestionClientMatriculeEtr.getText(), + GestionClientAdresseEtr.getText(), + GestionClientTelephoneEtr.getText()); + + TableViewListeClientEntreprise.setItems(ListeCltEntreprise); + + + return null; + } + }; + } + }; + + ThreadSearchClientEntreprise.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientEntreprise.setVisible(false); + ButtonSearchClientEntreprise.setDisable(false); + } + }); + ThreadSearchClientEntreprise.start(); + } + + private void GestionSearchClientEntreprise() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchClientEntreprise(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchClientEntreprise(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchClientEntreprise(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + +} \ No newline at end of file diff --git a/src/main/java/Controllers/Client/GestionClientPersonneController.java b/src/main/java/Controllers/Client/GestionClientPersonneController.java new file mode 100644 index 0000000..5299542 --- /dev/null +++ b/src/main/java/Controllers/Client/GestionClientPersonneController.java @@ -0,0 +1,413 @@ +package Controllers.Client; + +import Models.Client.ClientDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class GestionClientPersonneController implements Initializable { + + @FXML private AnchorPane AnchorPaneGestionClt; + + @FXML private AnchorPane AnchorPaneCltBody ; + + @FXML private ProgressBar ProgressBarClientPersonne; + + @FXML private Button ButtonSearchClientPersonne; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + @FXML private TextField GestionClientcode; + @FXML private TextField GestionClientcin; + @FXML private TextField GestionClientnomcomplet; + @FXML private TextField GestionClientnom; + @FXML private TextField GestionClientprenom; + @FXML private DatePicker DatePickerNaissance; + + @FXML private TableView TableViewListeClient ; + + @FXML private TableColumn codeclient; + @FXML private TableColumn cin; + @FXML private TableColumn nomcomplet; + @FXML private TableColumn nom; + @FXML private TableColumn prenom; + @FXML private TableColumn tele; + @FXML private TableColumn Action ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchClientPersonne; + + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + codeclient.setCellValueFactory(new PropertyValueFactory("code")); + + cin.setCellValueFactory(new PropertyValueFactory("cin")); + + nomcomplet.setCellValueFactory(new PropertyValueFactory("nomcomplet")); + + nom.setCellValueFactory(new PropertyValueFactory("nom")); + + prenom.setCellValueFactory(new PropertyValueFactory("prenom")); + + tele.setCellValueFactory(new PropertyValueFactory("tele")); + + Action.setSortable(true); + Action.setStyle( "-fx-alignment: CENTER;");Action.getStyleClass().add("Center"); + Action.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + Action.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new GestionClientPersonneController.ButtonCell(); + } + }); + + ButtonSearchClientPersonne.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchClientPersonne(); + } + }); + + AnchorPaneGestionClt.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchClientPersonne(); + } + } + }); + + + GestionSearchClientPersonne(); + } + + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + // get Selected Item + ListeClient currentPerson = (ListeClient) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + try { + AnchorPaneGestionClt.getChildren().clear(); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Client/DetailClient.fxml")); + Parent root = (Parent)fxmlLoader.load(); + DetailClientController DcltCtl = fxmlLoader.getController(); + DcltCtl.setDataClient(currentPerson.getCode().toString()); + AnchorPaneGestionClt.getChildren().add(root); + } catch (IOException ex) { + Logger.getLogger(GestionClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + // modifer pour client entreprise + @FXML + public void AjouterClientEntrepriseRadioAction(ActionEvent event) throws IOException { + AnchorPaneGestionClt.getChildren().clear(); + AnchorPaneGestionClt.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/GestionClientEntreprise.fxml"))); + } + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchClientPersonne() + { + ProgressBarClientPersonne.setVisible(true); + + ButtonSearchClientPersonne.setDisable(true); + + ThreadSearchClientPersonne = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateNaissance = ""; + if(DatePickerNaissance.getValue() != null){ + DateNaissance = DatePickerNaissance.getValue().toString(); + } + + ObservableList ListeCltPersonne = new ClientDB().SearchCltPersonneGestion( + position, + nbrligne, + GestionClientcode.getText(), + GestionClientcin.getText(), + GestionClientnomcomplet.getText(), + GestionClientnom.getText(), + GestionClientprenom.getText(), + DateNaissance); + + TableViewListeClient.setItems(ListeCltPersonne); + + totalcount = new ClientDB().nbrCltPersonneGestion(GestionClientcode.getText(), GestionClientcin.getText(), GestionClientnomcomplet.getText(), GestionClientnom.getText(), GestionClientprenom.getText(), DateNaissance); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchClientPersonne.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientPersonne.setVisible(false); + ButtonSearchClientPersonne.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchClientPersonne.start(); + } + + + + private void NextLastSearchClientPersonne(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarClientPersonne.setVisible(true); + + ButtonSearchClientPersonne.setDisable(true); + + ThreadSearchClientPersonne = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateNaissance = ""; + if(DatePickerNaissance.getValue() != null){ + DateNaissance = DatePickerNaissance.getValue().toString(); + } + + ObservableList ListeCltPersonne = new ClientDB().SearchCltPersonneGestion( + ParmPosition, + ParamNbrligne, + GestionClientcode.getText(), + GestionClientcin.getText(), + GestionClientnomcomplet.getText(), + GestionClientnom.getText(), + GestionClientprenom.getText(), + DateNaissance); + + TableViewListeClient.setItems(ListeCltPersonne); + + + return null; + } + }; + } + }; + + ThreadSearchClientPersonne.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientPersonne.setVisible(false); + ButtonSearchClientPersonne.setDisable(false); + } + }); + ThreadSearchClientPersonne.start(); + } + + private void GestionSearchClientPersonne() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchClientPersonne(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchClientPersonne(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchClientPersonne(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} + + diff --git a/src/main/java/Controllers/Client/ListeClient.java b/src/main/java/Controllers/Client/ListeClient.java new file mode 100644 index 0000000..d0805da --- /dev/null +++ b/src/main/java/Controllers/Client/ListeClient.java @@ -0,0 +1,82 @@ +/* + * 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 Controllers.Client; + +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleLongProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author PC-Maher + */ +public class ListeClient { + private final SimpleStringProperty code; + private final SimpleStringProperty cin; + private final SimpleStringProperty nomcomplet; + private final SimpleStringProperty nom; + private final SimpleStringProperty prenom; + private final SimpleStringProperty naissance_str; + private final SimpleStringProperty adresse; + private final SimpleStringProperty tele; + private final SimpleStringProperty tele2; + private final SimpleIntegerProperty sexe; + + public ListeClient(String code, String cin, String nomcomplet, String nom, String prenom, String naissance_str, String adresse, String tele, String tele2, Integer sexe) { + this.code = new SimpleStringProperty(code); + this.cin = new SimpleStringProperty(cin); + this.nomcomplet = new SimpleStringProperty(nomcomplet); + this.nom = new SimpleStringProperty(nom); + this.prenom = new SimpleStringProperty(prenom); + this.naissance_str = new SimpleStringProperty(naissance_str); + this.adresse = new SimpleStringProperty(adresse); + this.tele = new SimpleStringProperty(tele); + this.tele2 = new SimpleStringProperty(tele2); + this.sexe = new SimpleIntegerProperty(sexe); + } + + + + public String getCode() { + return code.get(); + } + + public String getCin() { + return cin.get(); + } + + public String getNomcomplet() { + return nomcomplet.get(); + } + + public String getNom() { + return nom.get(); + } + + public String getPrenom() { + return prenom.get(); + } + + public String getNaissanceString() { + return naissance_str.get(); + } + + public String getAdresse() { + return adresse.get(); + } + + public String getTele() { + return tele.get(); + } + + public String getTele2() { + return tele2.get(); + } + + public Integer getSexe() { + return sexe.get(); + } +} diff --git a/src/main/java/Controllers/Client/ListeClientEntreprise.java b/src/main/java/Controllers/Client/ListeClientEntreprise.java new file mode 100644 index 0000000..2d6cc32 --- /dev/null +++ b/src/main/java/Controllers/Client/ListeClientEntreprise.java @@ -0,0 +1,66 @@ +/* + * 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 Controllers.Client; + + +import javafx.beans.property.SimpleLongProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class ListeClientEntreprise { + + private final SimpleStringProperty code; + private final SimpleStringProperty NomEntreprise; + private final SimpleStringProperty gerant; + private final SimpleStringProperty matricule; + private final SimpleStringProperty adresse; + private final SimpleStringProperty Telephone; + private final SimpleStringProperty Telephone2; + + public ListeClientEntreprise(String code, String nomEtr, String gerant, String matricule, String adresse, String Telephone, String Telephone2) { + this.code = new SimpleStringProperty(code); + this.NomEntreprise = new SimpleStringProperty(nomEtr); + this.gerant = new SimpleStringProperty(gerant); + this.matricule = new SimpleStringProperty(matricule); + this.adresse = new SimpleStringProperty(adresse); + this.Telephone = new SimpleStringProperty(Telephone); + this.Telephone2 = new SimpleStringProperty(Telephone2); + } + + + + public String getCode() { + return code.get(); + } + + public String getNomEntreprise() { + return NomEntreprise.get(); + } + + public String getGerant() { + return gerant.get(); + } + + public String getMatricule() { + return matricule.get(); + } + + public String getAdresse() { + return adresse.get(); + } + + public String getTelephone() { + return Telephone.get(); + } + + public String getTelephone2() { + return Telephone2.get(); + } + +} diff --git a/src/main/java/Controllers/Client/MenuClientController.java b/src/main/java/Controllers/Client/MenuClientController.java new file mode 100644 index 0000000..afa6507 --- /dev/null +++ b/src/main/java/Controllers/Client/MenuClientController.java @@ -0,0 +1,47 @@ +/* + * 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 Controllers.Client; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.layout.AnchorPane; + +/** + * FXML Controller class + * + * @author Maher + */ +public class MenuClientController implements Initializable { + + /** + * Initializes the controller class. + */ + + @FXML private AnchorPane AnchorPaneAjouterClient ; + + @FXML + private void AjouterClientButtonAction(ActionEvent event) throws IOException { + AnchorPaneAjouterClient.getChildren().clear(); + AnchorPaneAjouterClient.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/AjouterClient.fxml"))); + } + + @FXML + private void detailClientButtonAction(ActionEvent event) throws IOException { + AnchorPaneAjouterClient.getChildren().clear(); + AnchorPaneAjouterClient.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/GestionClientPersonne.fxml"))); + } + @Override + public void initialize(URL url, ResourceBundle rb) { + // TODO + } + +} diff --git a/src/main/java/Controllers/Client/RechercherClientEntrepriseController.java b/src/main/java/Controllers/Client/RechercherClientEntrepriseController.java new file mode 100644 index 0000000..95757a4 --- /dev/null +++ b/src/main/java/Controllers/Client/RechercherClientEntrepriseController.java @@ -0,0 +1,364 @@ + package Controllers.Client; + +import Controllers.Traitement.MyWindow; +import Models.Client.ClientEntrepriseDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class RechercherClientEntrepriseController implements Initializable { + + @FXML public AnchorPane AnchoreClientEntre ; + + public Node nodeFxmlEtr ; + + @FXML private ProgressBar ProgressBarClientEntreprise; + + @FXML public RadioButton cltPer ; + @FXML public RadioButton cltEtr ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + @FXML private Button ButtonSearchClientEntreprise; + + @FXML private TextField RerchercheCodeEtr; + @FXML private TextField RerchercheNomEtr; + @FXML private TextField RerchercheGerantEtr; + @FXML private TextField RerchercheMatriculeEtr; + @FXML private TextField RerchercheAdresseEtr; + @FXML private TextField RerchercheTelephoneEtr; + + @FXML private TableView TableViewListeClientEntreprise ; + + @FXML private TableColumn TableColumnCodeClientEtr; + @FXML private TableColumn TableColumnNomEntreprise; + @FXML private TableColumn TableColumnGerant ; + @FXML private TableColumn TableColumnMatricule; + @FXML private TableColumn TableColumnAdresse; + @FXML private TableColumn TableColumnTelephone; + @FXML public TableColumn TableColumnActionEtre ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchRechercheClientEntreprise; + + public RechercherClientEntrepriseController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Client/RechercherClientEntreprise.fxml")); + fxmlLoader.setController(this); + nodeFxmlEtr = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(RechercherClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TableColumnCodeClientEtr.setCellValueFactory(new PropertyValueFactory("code")); + TableColumnNomEntreprise.setCellValueFactory(new PropertyValueFactory("NomEntreprise")); + TableColumnGerant.setCellValueFactory(new PropertyValueFactory("Gerant")); + TableColumnMatricule.setCellValueFactory(new PropertyValueFactory("matricule")); + TableColumnAdresse.setCellValueFactory(new PropertyValueFactory("Adresse")); + TableColumnTelephone.setCellValueFactory(new PropertyValueFactory("Telephone")); + + TableColumnActionEtre.setStyle( "-fx-alignment: CENTER;"); + TableColumnActionEtre.getStyleClass().add("Center"); + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + ButtonSearchClientEntreprise.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchClientEntreprise(); + } + }); + + AnchoreClientEntre.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchClientEntreprise(); + } + } + }); + + GestionSearchClientEntreprise(); + + } + + + + + @FXML + private void QuiterButtonAction(ActionEvent event) throws IOException { + AnchoreClientEntre.setVisible(false); + } + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Stage stage = MyWindow.myStage; + + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxmlEtr); + + stage.setScene(scene); + stage.show(); + + cltEtr.setSelected(true); + } + + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchClientEntreprise() + { + ProgressBarClientEntreprise.setVisible(true); + + ButtonSearchClientEntreprise.setDisable(true); + + ThreadSearchRechercheClientEntreprise = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + ObservableList ListeCltEntreprise = new ClientEntrepriseDB().SearchCltEntrepriseGestion( + position, + nbrligne, + RerchercheCodeEtr.getText(), + RerchercheNomEtr.getText(), + RerchercheGerantEtr.getText(), + RerchercheMatriculeEtr.getText(), + RerchercheAdresseEtr.getText(), + RerchercheTelephoneEtr.getText()); + + TableViewListeClientEntreprise.setItems(ListeCltEntreprise); + + totalcount = new ClientEntrepriseDB().nbrCltEntrepriseGestion(RerchercheCodeEtr.getText(), RerchercheNomEtr.getText(), RerchercheGerantEtr.getText(), RerchercheMatriculeEtr.getText(), RerchercheAdresseEtr.getText(), RerchercheTelephoneEtr.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchRechercheClientEntreprise.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientEntreprise.setVisible(false); + ButtonSearchClientEntreprise.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchRechercheClientEntreprise.start(); + } + + + + private void NextLastSearchClientEntreprise(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarClientEntreprise.setVisible(true); + + ButtonSearchClientEntreprise.setDisable(true); + + ThreadSearchRechercheClientEntreprise = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + ObservableList ListeCltEntreprise = new ClientEntrepriseDB().SearchCltEntrepriseGestion( + ParmPosition, + ParamNbrligne, + RerchercheCodeEtr.getText(), + RerchercheNomEtr.getText(), + RerchercheGerantEtr.getText(), + RerchercheMatriculeEtr.getText(), + RerchercheAdresseEtr.getText(), + RerchercheTelephoneEtr.getText()); + + TableViewListeClientEntreprise.setItems(ListeCltEntreprise); + + + return null; + } + }; + } + }; + + ThreadSearchRechercheClientEntreprise.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientEntreprise.setVisible(false); + ButtonSearchClientEntreprise.setDisable(false); + } + }); + ThreadSearchRechercheClientEntreprise.start(); + } + + private void GestionSearchClientEntreprise() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchClientEntreprise(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchClientEntreprise(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchClientEntreprise(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/Client/RechercherClientPersonneController.java b/src/main/java/Controllers/Client/RechercherClientPersonneController.java new file mode 100644 index 0000000..d460ea9 --- /dev/null +++ b/src/main/java/Controllers/Client/RechercherClientPersonneController.java @@ -0,0 +1,396 @@ +package Controllers.Client; + + +import Controllers.Traitement.MyWindow; +import Models.Client.Client; +import Models.Client.ClientDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class RechercherClientPersonneController implements Initializable { + + @FXML public AnchorPane AnchoreClientPerson ; + + @FXML public StackPane StackpaneClient ; + + @FXML private ProgressBar ProgressBarClientPersonne; + + @FXML private Button ButtonSearchClientPersonne; + + @FXML public RadioButton cltEntreprise ; + @FXML public RadioButton cltPersonne ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + @FXML private TableView TableViewListeClient ; + + @FXML private TableColumn codeclient; + @FXML private TableColumn cin; + @FXML private TableColumn nomcomplet; + @FXML private TableColumn nom; + @FXML private TableColumn prenom; + @FXML private TableColumn tele; + @FXML public TableColumn Action ; + + @FXML private TextField GestionClientcode; + @FXML private TextField GestionClientcin; + @FXML private TextField GestionClientnomcomplet; + @FXML private TextField GestionClientnom; + @FXML private TextField GestionClientprenom; + @FXML private DatePicker DatePickerNaissance; + + public Node nodeFxml ; + + Client client = new Client(); + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + public Object[] ArrayObjectDataSave = new Object[10]; + + private Service ThreadSearchRerchecheClientPersonne; + + public RechercherClientPersonneController() { + + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Client/RechercherClientPersonne.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(RechercherClientPersonneController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + + NbrLigne.getSelectionModel().selectFirst(); + + codeclient.setCellValueFactory(new PropertyValueFactory("code")); + + cin.setCellValueFactory(new PropertyValueFactory("cin")); + + nomcomplet.setCellValueFactory(new PropertyValueFactory("nomcomplet")); + + nom.setCellValueFactory(new PropertyValueFactory("nom")); + + prenom.setCellValueFactory(new PropertyValueFactory("prenom")); + + tele.setCellValueFactory(new PropertyValueFactory("tele")); + + Action.setStyle( "-fx-alignment: CENTER;"); + Action.getStyleClass().add("Center"); + + ButtonSearchClientPersonne.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchClientPersonne(); + } + }); + + AnchoreClientPerson.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchClientPersonne(); + } + } + }); + + GestionSearchClientPersonne(); + + } + + + + + + @FXML + private void QuiterButtonAction(ActionEvent event) throws IOException { + AnchoreClientPerson.setVisible(false); + } + + + + public void ShowDialg() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + + cltPersonne.setSelected(true); + } + + + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchClientPersonne() + { + ProgressBarClientPersonne.setVisible(true); + + ButtonSearchClientPersonne.setDisable(true); + + ThreadSearchRerchecheClientPersonne = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateNaissance = ""; + if(DatePickerNaissance.getValue() != null){ + DateNaissance = DatePickerNaissance.getValue().toString(); + } + + ObservableList ListeCltPersonne = new ClientDB().SearchCltPersonneGestion( + position, + nbrligne, + GestionClientcode.getText(), + GestionClientcin.getText(), + GestionClientnomcomplet.getText(), + GestionClientnom.getText(), + GestionClientprenom.getText(), + DateNaissance); + + TableViewListeClient.setItems(ListeCltPersonne); + + totalcount = new ClientDB().nbrCltPersonneGestion(GestionClientcode.getText(), GestionClientcin.getText(), GestionClientnomcomplet.getText(), GestionClientnom.getText(), GestionClientprenom.getText(), DateNaissance); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchRerchecheClientPersonne.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientPersonne.setVisible(false); + ButtonSearchClientPersonne.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchRerchecheClientPersonne.start(); + } + + + + private void NextLastSearchClientPersonne(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarClientPersonne.setVisible(true); + + ButtonSearchClientPersonne.setDisable(true); + + ThreadSearchRerchecheClientPersonne = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateNaissance = ""; + if(DatePickerNaissance.getValue() != null){ + DateNaissance = DatePickerNaissance.getValue().toString(); + } + + ObservableList ListeCltPersonne = new ClientDB().SearchCltPersonneGestion( + ParmPosition, + ParamNbrligne, + GestionClientcode.getText(), + GestionClientcin.getText(), + GestionClientnomcomplet.getText(), + GestionClientnom.getText(), + GestionClientprenom.getText(), + DateNaissance); + + TableViewListeClient.setItems(ListeCltPersonne); + + + return null; + } + }; + } + }; + + ThreadSearchRerchecheClientPersonne.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarClientPersonne.setVisible(false); + ButtonSearchClientPersonne.setDisable(false); + } + }); + ThreadSearchRerchecheClientPersonne.start(); + } + + private void GestionSearchClientPersonne() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchClientPersonne(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchClientPersonne(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchClientPersonne(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + + + + + +} diff --git a/src/main/java/Controllers/CommandeClt/CommandeCltDetail.java b/src/main/java/Controllers/CommandeClt/CommandeCltDetail.java new file mode 100644 index 0000000..a2c07eb --- /dev/null +++ b/src/main/java/Controllers/CommandeClt/CommandeCltDetail.java @@ -0,0 +1,196 @@ +package Controllers.CommandeClt; + +import Controllers.BonLivraisonClt.BonLivraisonCltAjouterEtape2Controller; +import Models.Produit.ListeProduit; +import Controllers.Traitement.Adaptateur; +import Models.CommandeClt.CommandeClt; +import Models.CommandeClt.CommandeCltDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +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.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + + +/** + * @author Maher Ben Tili + */ +public class CommandeCltDetail implements Initializable { + + @FXML private AnchorPane PaneAjouter ; + @FXML private AnchorPane AnchorPaneCommandeCltDetail ; + @FXML private AnchorPane AnchorPaneLoadingCommandeDetail ; + @FXML public AnchorPane AnchorPaneSucces ; + @FXML public AnchorPane AnchorPaneInfoCommandeClt; + @FXML private Text CodeCommande; + @FXML private Text DateCreation; + @FXML private Text Reglement; + @FXML private Text NetAPayer; + @FXML private Text TotalTVA; + @FXML private Text CodeDevis; + + @FXML private Text TypeClt; + @FXML private Text Nom; + @FXML private Text Prenom; + @FXML private Text Adresse; + @FXML private Text TELE1; + @FXML private Text TELE2; + + @FXML private Text TextPrenom ; + @FXML private Text TextMatricule ; + + @FXML private TableView TableViewListeProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + @FXML private Button ButtonCreationBonLivraison; + + private Service ThreadCommandeCltDetail; + + CommandeClt commandeClt; + String idCommandeClt; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TableViewListeProduit.setEditable(false); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + ButtonCreationBonLivraison.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltAjouterEtape2.fxml")); + Parent NodeBonLivraisonCltAjouterEtape2 = (Parent)fxmlLoader.load(); + BonLivraisonCltAjouterEtape2Controller BonLivraisonCltAjouterEtape2= fxmlLoader.getController(); + + PaneAjouter.getChildren().clear(); + PaneAjouter.getChildren().add(NodeBonLivraisonCltAjouterEtape2); + + BonLivraisonCltAjouterEtape2.SetDataCommandeClt(idCommandeClt); + } catch (IOException ex) { + Logger.getLogger(CommandeCltDetail.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + + } + + + public void SowDetailCommandeClt(String codeCommande){ + idCommandeClt = codeCommande; + ThreadCommandeCltDetail = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + commandeClt = new CommandeCltDB().getCommandeClt(codeCommande); + + return null; + } + }; + } + }; + + ThreadCommandeCltDetail.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + CodeCommande.setText(commandeClt.getCodecommandeclt()); + DateCreation.setText(Adaptateur.NormalDateFormat(commandeClt.getDate())); + Reglement.setText(commandeClt.getTypeRegementString()); + TotalTVA.setText(commandeClt.getTotalTVA()); + TypeClt.setText(commandeClt.getTypeClientString()); + CodeDevis.setText(commandeClt.getCodeDevis()); + + if(commandeClt.getTypeClient()==0){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + Nom.setText(commandeClt.CltPersonne.getNom()); + Prenom.setText(commandeClt.CltPersonne.getPrenom()); + Adresse.setText(commandeClt.CltPersonne.getAdresse()); + TELE1.setText(commandeClt.CltPersonne.getTelefixString()); + TELE2.setText(commandeClt.CltPersonne.getTelemobileString()); + } + + if(commandeClt.getTypeClient()==1){ + TextPrenom.setVisible(false); + TextMatricule.setVisible(true); + Nom.setText(commandeClt.CltEntreprise.getNom()); + Prenom.setText(commandeClt.CltEntreprise.getMatricule()); + Adresse.setText(commandeClt.CltEntreprise.getAdresse()); + TELE1.setText(commandeClt.CltEntreprise.getTele1String()); + TELE2.setText(commandeClt.CltEntreprise.getTele2String()); + } + + if(commandeClt.getTypeClient()==2){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + Nom.setText(commandeClt.CltPassager.getNom()); + Prenom.setText(commandeClt.CltPassager.getPrenom()); + Adresse.setText(commandeClt.CltPassager.getAdresse()); + TELE1.setText(commandeClt.CltPassager.getTelefixString()); + TELE2.setText(commandeClt.CltPassager.getTelemobileString()); + } + if(commandeClt.getCodeBonLivraison() == null){ + ButtonCreationBonLivraison.setVisible(true); + }else{ + ButtonCreationBonLivraison.setVisible(false); + } + + NetAPayer.setText(commandeClt.getNetAPayer()); + TableViewListeProduit.setItems(commandeClt.getListeproduit()); + AnchorPaneLoadingCommandeDetail.setVisible(false); + AnchorPaneCommandeCltDetail.setVisible(true); + } + }); + ThreadCommandeCltDetail.start(); + } +} diff --git a/src/main/java/Controllers/CommandeClt/CommandeCltDialogConfirmationController.java b/src/main/java/Controllers/CommandeClt/CommandeCltDialogConfirmationController.java new file mode 100644 index 0000000..e45cc05 --- /dev/null +++ b/src/main/java/Controllers/CommandeClt/CommandeCltDialogConfirmationController.java @@ -0,0 +1,203 @@ +/* + * 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 Controllers.CommandeClt; + +import Models.Produit.ListeProduit; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Models.CommandeClt.CommandeClt; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * + * @author PC-Maher + */ +public class CommandeCltDialogConfirmationController implements Initializable { + /** + * Initializes the controller class. + */ + public Node nodeFxml ; + + @FXML public AnchorPane AnchorPrincipal ; + @FXML public Button Enregister ; + @FXML private Text DateCreation; + @FXML private Text Reglement; + @FXML private Text NetAPayer; + @FXML private Text TotalHorsTaxNet; + @FXML private Text TotalTVA; + @FXML private Text CodeDevis; + + @FXML private Text TypeClt; + @FXML private Text Nom; + @FXML private Text Prenom; + @FXML private Text Adresse; + @FXML private Text TELE1; + @FXML private Text TELE2; + + @FXML private Text TextPrenom ; + @FXML private Text TextMatricule ; + @FXML private Text TextCodeDevis; + + @FXML public TableView TableViewListeProduitPassCommClt ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignation; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + Enregister.setGraphic(buttonGraphic); + + + } + + + public void GetCommandeClt(CommandeClt commandeclt){ + DateCreation.setText(Adaptateur.NormalDateFormat(commandeclt.getDate())); + + + if(commandeclt.getTypeRegement().equals("0")){ + Reglement.setText("comptant"); + }else if(commandeclt.getTypeRegement().equals("1")){ + Reglement.setText("facilité"); + } + NetAPayer.setText(commandeclt.getNetAPayer()); + TotalHorsTaxNet.setText(commandeclt.getTotalHorsTaxNet()); + TotalTVA.setText(commandeclt.getTotalTVA()); + + if(commandeclt.getCodeDevis()!=null){ + CodeDevis.setVisible(true); + TextCodeDevis.setVisible(true); + CodeDevis.setText(commandeclt.getCodeDevis()); + } + + + TypeClt.setText(commandeclt.getTypeClientString()); + + if(commandeclt.getTypeClient()==0){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + Nom.setText(commandeclt.CltPersonne.getNom()); + Prenom.setText(commandeclt.CltPersonne.getPrenom()); + Adresse.setText(commandeclt.CltPersonne.getAdresse()); + TELE1.setText(commandeclt.CltPersonne.getTelefixString()); + TELE2.setText(commandeclt.CltPersonne.getTelemobileString()); + } + + if(commandeclt.getTypeClient()==1){ + TextPrenom.setVisible(false); + TextMatricule.setVisible(true); + Nom.setText(commandeclt.CltEntreprise.getNom()); + Prenom.setText(commandeclt.CltEntreprise.getMatricule()); + Adresse.setText(commandeclt.CltEntreprise.getAdresse()); + TELE1.setText(commandeclt.CltEntreprise.getTele1String()); + TELE2.setText(commandeclt.CltEntreprise.getTele2String()); + } + + if(commandeclt.getTypeClient()==2){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + Nom.setText(commandeclt.CltPassager.getNom()); + Prenom.setText(commandeclt.CltPassager.getPrenom()); + Adresse.setText(commandeclt.CltPassager.getAdresse()); + TELE1.setText(commandeclt.CltPassager.getTelefixString()); + TELE2.setText(commandeclt.CltPassager.getTelemobileString()); + } + + + + TableViewListeProduitPassCommClt.setItems(commandeclt.getListeproduit()); + } + + + public CommandeCltDialogConfirmationController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltDialogConfirmation.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(CommandeCltDialogConfirmationController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } +} diff --git a/src/main/java/Controllers/CommandeClt/CommandeCltGestionController.java b/src/main/java/Controllers/CommandeClt/CommandeCltGestionController.java new file mode 100644 index 0000000..63f4431 --- /dev/null +++ b/src/main/java/Controllers/CommandeClt/CommandeCltGestionController.java @@ -0,0 +1,466 @@ +package Controllers.CommandeClt; + +import Controllers.DevisClt.DevisCltGestionController; +import Controllers.Traitement.Adaptateur; +import Models.CommandeClt.CommandeClt; +import Models.CommandeClt.CommandeCltDB; +import Models.CommandeClt.CommandeCltListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class CommandeCltGestionController implements Initializable { + + @FXML private AnchorPane PaneGestion ; + + @FXML private ProgressBar ProgressBarCommande; + + @FXML private Button ButtonSearchCommande ; + + @FXML private AnchorPane ListerPages; + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount =0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + + private Service ThreadSearchCommande; + + @FXML public TableView TableViewGestionCommande; + + @FXML public TableColumn TabColCodeCommande; + @FXML public TableColumn TabColModePaiement; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColCodeClient; + @FXML public TableColumn TabColTotalCommande; + @FXML public TableColumn TabColDateCreation ; + @FXML public TableColumn TabColCodeDevis; + @FXML public TableColumn TabColFacture; + @FXML public TableColumn TabColBonLivraison; + @FXML public TableColumnTabColAction ; + + @FXML public TextField TextFieldCodeCommande; + @FXML public TextField TextFieldCodeClient; + @FXML public TextField TextFieldNameClient; + @FXML public TextField TextFieldCodeDevis; + @FXML public DatePicker DatePickerCreation; + @FXML public RadioButton RadioComptant; + @FXML public RadioButton RadioFacilite; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewGestionCommande.setEditable(true); + + TabColCodeCommande.setStyle( "-fx-alignment: CENTER;");TabColCodeCommande.getStyleClass().add("Center"); + TabColCodeCommande.setCellValueFactory(new PropertyValueFactory("CodeCommande")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColCodeClient.setStyle( "-fx-alignment: CENTER;");TabColCodeClient.getStyleClass().add("Center"); + TabColCodeClient.setCellValueFactory(new PropertyValueFactory("CodeClient")); + + TabColModePaiement.setStyle( "-fx-alignment: CENTER;");TabColModePaiement.getStyleClass().add("Center"); + TabColModePaiement.setCellValueFactory(new PropertyValueFactory("ModePaiement")); + + TabColTotalCommande.setStyle( "-fx-alignment: CENTER;"); + TabColTotalCommande.getStyleClass().add("Center"); + TabColTotalCommande.setCellValueFactory(new PropertyValueFactory("TotalCommande")); + TabColTotalCommande.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null){ + Text text = new Text(Adaptateur.StringToStringEspace(item)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColDateCreation.setStyle( "-fx-alignment: CENTER;");TabColDateCreation.getStyleClass().add("Center"); + TabColDateCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColCodeDevis.setStyle( "-fx-alignment: CENTER;");TabColCodeDevis.getStyleClass().add("Center"); + TabColCodeDevis.setCellValueFactory(new PropertyValueFactory("CodeDevis")); + + TabColFacture.setStyle( "-fx-alignment: CENTER;");TabColFacture.getStyleClass().add("Center"); + TabColFacture.setCellValueFactory(new PropertyValueFactory("CodeFacture")); + + TabColBonLivraison.setStyle( "-fx-alignment: CENTER;");TabColBonLivraison.getStyleClass().add("Center"); + TabColBonLivraison.setCellValueFactory(new PropertyValueFactory("CodeBonLivraison")); + + + TabColAction.setSortable(true); + TabColAction.setStyle( "-fx-alignment: CENTER;");TabColAction.getStyleClass().add("Center"); + TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + + ButtonSearchCommande.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchCommande(); + } + }); + + PaneGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchCommande(); + } + } + }); + + RadioComptant.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchCommande(); + } + }); + + RadioFacilite.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchCommande(); + } + }); + + GestionSearchCommande(); + } + + @FXML + private void PasserCommandeCltButtonAction(ActionEvent event) throws IOException { + + //inisialiser les données de Sauvgarde des opération + CommandeCltPasserController.TypeClient = 2 ; + CommandeCltPasserController.codeclient = null ; + CommandeCltPasserController.codecliententre = null ; + CommandeCltPasserController.Mode = null ; + CommandeCltPasserController.CodeDevis = null; + CommandeCltPasserController.data.clear(); + + PaneGestion.getChildren().clear(); + PaneGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/CommandeClt/CommandeCltPasser.fxml"))); + } + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconedit.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + // get Selected Item + CommandeCltListe current = (CommandeCltListe) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String codeCommande = current.getCodeCommande(); + + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltDetail.fxml")); + Parent NodeDetail = (Parent)fxmlLoader.load(); + CommandeCltDetail CommandeCltdetail = fxmlLoader.getController(); + CommandeCltdetail.AnchorPaneSucces.setVisible(false); + CommandeCltdetail.AnchorPaneInfoCommandeClt.setPrefHeight(574); + AnchorPane.setTopAnchor(CommandeCltdetail.AnchorPaneInfoCommandeClt, 5.0); + + CommandeCltdetail.SowDetailCommandeClt(codeCommande); + PaneGestion.getChildren().add(NodeDetail); + + } catch (IOException ex) { + Logger.getLogger(DevisCltGestionController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + +/****************************************************************************** * + * * + * Methode last Next TableView client Entreprise * + * * * + ******************************************************************************/ + + private void SearchCommande() + { + ProgressBarCommande.setVisible(true); + + ButtonSearchCommande.setDisable(true); + + ThreadSearchCommande = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListCommandes = new CommandeCltDB().SearchCommande( + position, + nbrligne, + TypeRegement, + TextFieldCodeCommande.getText(), + TextFieldCodeClient.getText(), + TextFieldNameClient.getText(), + TextFieldCodeDevis.getText(), + DateCreation); + TableViewGestionCommande.setItems(ListCommandes); + + totalcount = new CommandeCltDB().nbrSearchCommande(TypeRegement, TextFieldCodeCommande.getText(), TextFieldCodeClient.getText(), TextFieldNameClient.getText(), TextFieldCodeDevis.getText(), DateCreation); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchCommande.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarCommande.setVisible(false); + ButtonSearchCommande.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchCommande.start(); + } + + + private void NextLastSearchCommande(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarCommande.setVisible(true); + + ButtonSearchCommande.setDisable(true); + + ThreadSearchCommande = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListCommandes = new CommandeCltDB().SearchCommande(ParmPosition, ParamNbrligne, TypeRegement, TextFieldCodeCommande.getText(), TextFieldCodeClient.getText(), TextFieldNameClient.getText(), TextFieldCodeDevis.getText(), DateCreation); + + TableViewGestionCommande.setItems(ListCommandes); + + return null; + } + }; + } + }; + + ThreadSearchCommande.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarCommande.setVisible(false); + ButtonSearchCommande.setDisable(false); + } + }); + ThreadSearchCommande.start(); + } + + private void GestionSearchCommande() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchCommande(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchCommande(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchCommande(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/CommandeClt/CommandeCltPasserController.java b/src/main/java/Controllers/CommandeClt/CommandeCltPasserController.java new file mode 100644 index 0000000..f024c76 --- /dev/null +++ b/src/main/java/Controllers/CommandeClt/CommandeCltPasserController.java @@ -0,0 +1,1004 @@ +/* + * 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 Controllers.CommandeClt; + +import Controllers.Client.ListeClient; +import Controllers.Client.ListeClientEntreprise; +import Controllers.Client.RechercherClientEntrepriseController; +import Controllers.Client.RechercherClientPersonneController; +import Controllers.DevisClt.DevisImporterController; +import Controllers.Dialog.MessageControle; +import Models.Produit.ListeProduit; +import Controllers.Produit.RechercherProduitController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Client.Client; +import Models.Client.ClientDB; +import Models.Client.ClientEntreprise; +import Models.Client.ClientEntrepriseDB; +import Models.Client.ClientPassager; +import Models.CommandeClt.CommandeClt; +import Models.CommandeClt.CommandeCltDB; +import Models.DevisClt.Devis; +import Models.DevisClt.DevisCltListe; +import Models.DevisClt.DevisDB; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +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.ToggleGroup; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +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; + +/** + * FXML Controller class + * + * @author PC-Maher + */ +public class CommandeCltPasserController implements Initializable { + + @FXML private AnchorPane PaneAjouter ; + + @FXML public Text TotalTVA ; + @FXML public Text Remise ; + @FXML public Text NetAPayer ; + @FXML public Text Timbre ; + @FXML public Text TotalHTNet ; + + @FXML public Button Enregister ; + @FXML public Button ClientExisteDejat ; + @FXML public Button ClientDefault ; + @FXML public Button RechercheProduit ; + + @FXML public TextField Nom ; + @FXML public TextField Prenom ; + @FXML public TextField Adresse ; + @FXML public TextField TELE1 ; + @FXML public TextField TELE2 ; + + @FXML public Text TextMatricule ; + @FXML public Text TextPrenom; + @FXML public Text TextSexe; + @FXML public Text TextDateNaisssance; + + @FXML public Text TextCltExistCode; + @FXML public Text CltExistCode; + @FXML public Text CltExistNom; + @FXML public Text CltExistPrenom; + @FXML public Text CltExistDateNaissance; + @FXML public Text CltExistAdresse; + @FXML public Text CltExistTELE1; + @FXML public Text CltExistTELE2; + + @FXML public DatePicker DateNaisssance ; + + @FXML public ComboBox ModeReglement ; + + @FXML public TableView TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignaton; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + @FXML public TableColumn TabColAddAction ; + + @FXML private ToggleGroup ToggleGroupSexe; + @FXML private RadioButton SexeHomme; + @FXML private RadioButton SexeFemme; + + public static Integer TypeClient ; // 0Personne 1Entreprise 2Passeger + public static String codeclient ; + public static String codecliententre; + public static String Mode; // Comptant Facilité + public static String CodeDevis; + + public static ObservableList data=FXCollections.observableArrayList(); + + + CommandeClt commandeclt = new CommandeClt(); + Produit produit= new Produit(); + ProduitDB produitDB= new ProduitDB(); + + public void SauvgardeTraitement(){ + if(TypeClient != null){ + + if(TypeClient == 0){ + this.SetClient(codeclient); + } + if(TypeClient == 1){ + this.SetClientEntre(codecliententre); + } + } + } + + @Override + public void initialize(URL url, ResourceBundle rb) { + + this.SauvgardeTraitement(); + + TableViewListeProduit.setEditable(true); + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + ModeReglement.setValue(Mode); + + this.ReferenceMouseClick(); + this.QantiteMouseClick(); + this.RemiseMouseClick(); + + + TabColAddAction.setSortable(true); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new CommandeCltPasserController.ButtonCell(); + } + }); + TabColAddAction.setStyle( "-fx-alignment: CENTER;"); + TabColAddAction.getStyleClass().add("Center"); + + TableViewListeProduit.setItems(data); + CalculeListeProduit(); + + //Ajouter une ligne vide clors ce que en click sur la tableview + TableViewListeProduit.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + }); + + + } + + @FXML + private void SaveButtonAction(ActionEvent event) throws IOException { + final CommandeCltDialogConfirmationController CommandeCltDialogConfirmation = new CommandeCltDialogConfirmationController(); + if(ControleObject()){ + this.SetObject(); + CommandeCltDialogConfirmation.GetCommandeClt(commandeclt); + CommandeCltDialogConfirmation.Enregister.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + CommandeCltDialogConfirmation.AnchorPrincipal.setVisible(false); + CommandeCltDB commandecltDB = new CommandeCltDB(); + + commandeclt = commandecltDB.AddCommandeClt(commandeclt); + + if(!commandeclt.getCodecommandeclt().isEmpty()){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltDetail.fxml")); + Parent NodeDetail = (Parent)fxmlLoader.load(); + CommandeCltDetail commandecltDetail = fxmlLoader.getController(); + commandecltDetail.SowDetailCommandeClt(commandeclt.getCodecommandeclt()); + PaneAjouter.getChildren().add(NodeDetail); + } catch (IOException ex) { + Logger.getLogger(CommandeCltDetail.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + }); + + CommandeCltDialogConfirmation.Show(); + } + } + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + CalculeListeProduit(); + TableViewListeProduit.setStyle(".table-row-cell:selected{ -fx-background-color:transparent ;}"); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + @FXML + private void AddLigneButtonAction(ActionEvent event) throws IOException { + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + + private boolean ControleObject(){ + boolean resulta = false ; + if(data.size()<1){ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + else if(ModeReglement.getValue()==null){ + ModeReglement.setStyle("-fx-border-color:#f20606;"); + } + else if(TypeClient == 2){ // 0Personne 1Entreprise 2Passeger + ModeReglement.setStyle("-fx-border-color:transparent;"); + contro clt =new contro(); + if(Nom.getText().isEmpty()){ + Nom.setStyle("-fx-border-color:#f20606;"); + } + else if(Prenom.getText().isEmpty()){ + Nom.setStyle("-fx-border-color:transparent;"); + Prenom.setStyle("-fx-border-color:#f20606;"); + + } + else if(Adresse.getText().isEmpty()){ + Prenom.setStyle("-fx-border-color:transparent;"); + Adresse.setStyle("-fx-border-color:#f20606;"); + + } + else if(clt.isNumericNotnull(TELE1.getText())){ + Adresse.setStyle("-fx-border-color:transparent;"); + TELE1.setStyle("-fx-border-color:#f20606;"); + } + else if(clt.isNumeric(TELE2.getText())){ + TELE1.setStyle("-fx-border-color:transparent;"); + TELE2.setStyle("-fx-border-color:#f20606;"); + } + else{ + TELE2.setStyle("-fx-border-color:transparent;"); + ModeReglement.setStyle("-fx-border-color:#b5b5b5;"); + resulta = true ; + } + } + else{ + ModeReglement.setStyle("-fx-border-color:#b5b5b5;"); + resulta = true ; + } + + return resulta ; + } + private void SetObject(){ + commandeclt.setTypeClient(TypeClient); + commandeclt.setTypeRegementString(ModeReglement.getValue().toString()); + commandeclt.setCodeDevis(CodeDevis); + commandeclt.setNetAPayer(NetAPayer.getText()); + commandeclt.setTotalTVA(TotalTVA.getText()); + commandeclt.setTotalHorsTaxNet(TotalHTNet.getText()); + commandeclt.setRemise(Remise.getText()); + + if(TypeClient == 0){ + Client CltPersonne = new Client(); + CltPersonne.setCodeclient(CltExistCode.getText()); + CltPersonne.setNom(CltExistNom.getText()); + CltPersonne.setPrenom(TextPrenom.getText()); + CltPersonne.setAdresse(CltExistAdresse.getText()); + CltPersonne.setTelefixString(CltExistTELE1.getText()); + CltPersonne.setTelemobileString(CltExistTELE2.getText()); + commandeclt.setCltPersonne(CltPersonne); + }else if(TypeClient == 1){ + //TextCltExistCode CltExistCode CltExistNom CltExistPrenom + ClientEntreprise CltEntreprise = new ClientEntreprise(); + CltEntreprise.setCodeString(CltExistCode.getText()); + CltEntreprise.setNom(CltExistNom.getText()); + CltEntreprise.setMatricule(CltExistPrenom.getText()); + CltEntreprise.setAdresse(CltExistAdresse.getText()); + CltEntreprise.setTele1String(CltExistTELE1.getText()); + CltEntreprise.setTele2String(CltExistTELE2.getText()); + commandeclt.setCltEntreprise(CltEntreprise); + }else if(TypeClient == 2){ + ClientPassager CltPassager = new ClientPassager(); + CltPassager.setNom(Nom.getText()); + CltPassager.setPrenom(Prenom.getText()); + CltPassager.setAdresse(Adresse.getText()); + CltPassager.setTelefixString(TELE1.getText()); + CltPassager.setTelemobileString(TELE2.getText()); + CltPassager.setNaissance(Adaptateur.DatabaseDateLocalDate(DateNaisssance.getValue())); + RadioButton SelectedRadioSexe = (RadioButton) ToggleGroupSexe.getSelectedToggle(); + CltPassager.setSexeString(SelectedRadioSexe.getEllipsisString()); + + commandeclt.setCltPassager(CltPassager); + } + + //controle le cas ou on a une ligne vide a la fin de la liste + if(data.get(data.size()-1).getTotalTTC().isEmpty()){ + data.remove(data.size()-1); + } + commandeclt.setListeproduit(data); + } + + @FXML + private void DevisCltImportButtonAction(ActionEvent event) throws IOException { + DevisImporterController DevisImporter = new DevisImporterController(); + DevisImporter.Show(); + + DevisImporter.TabColDetail.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(Boolean item, boolean empty) { + Button cellButton = new Button(); + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + DevisCltListe current = ((DevisCltListe)getTableRow().getItem()); + Devis devis = new Devis(); + DevisDB devisDB = new DevisDB(); + + devis = devisDB.getDevis(current.getCodeDevis()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltPasser.fxml")); + Parent ParentCommandeClt = (Parent) fxmlLoader.load(); + + CommandeCltPasserController CommandeCltPasser = fxmlLoader.getController(); + + CommandeCltPasserController.data.addAll(devis.getListeproduit()); + CommandeCltPasserController.TypeClient = devis.getTypeClient(); + CommandeCltPasserController.CodeDevis = devis.getCodeDevis(); + CommandeCltPasser.ModeReglement.setValue(devis.getTypeRegementString()); + + if(devis.getTypeClient() == 0 ){ + CommandeCltPasserController.codeclient = devis.getCodeClient(); + CommandeCltPasser.SetClient(devis.getCodeClient()); + }else if(devis.getTypeClient() == 1){ + CommandeCltPasserController.codecliententre = devis.getCodeClient(); + CommandeCltPasser.SetClientEntre(devis.getCodeClient()); + }else if(devis.getTypeClient() == 2){ + CommandeCltPasser.Nom.setText(devis.getNom()); + CommandeCltPasser.Prenom.setText(devis.getPrenom()); + CommandeCltPasser.Adresse.setText(devis.getAdresse()); + CommandeCltPasser.TELE1.setText(devis.getTele1()); + CommandeCltPasser.TELE2.setText(devis.getTele2()); + } + + CommandeCltPasser.TotalTVA.setText(devis.getTotalTVA()); + CommandeCltPasser.Remise.setText(devis.getRemise()); + CommandeCltPasser.NetAPayer.setText(devis.getNetAPayer()); + CommandeCltPasser.Timbre.setText(devis.getTimbre()); + CommandeCltPasser.TotalHTNet.setText(devis.getTotalHorsTaxNet()); + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentCommandeClt, 3); + + } catch (IOException ex) { + Logger.getLogger(CommandeCltPasserController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + return cell; + } + }); + + + + + + } + //Methode qui pérmet de traite les recherche du client Personne + @FXML + private void ClientExisteDejatButtonAction(ActionEvent event) throws IOException { + + final RechercherClientPersonneController RechercheClient = new RechercherClientPersonneController(); + + RechercheClient.Action.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected Item + ListeClient ClientPerson = ((ListeClient)getTableRow().getItem()); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltPasser.fxml")); + Parent commandeclt = (Parent) fxmlLoader.load(); + + CommandeCltPasserController CommandeCltPasser = fxmlLoader.getController(); + CommandeCltPasser.SetClient(ClientPerson.getCode()); + + //Traitement de Sauvgarde + CommandeCltPasserController.TypeClient = 0 ; + CommandeCltPasserController.codeclient = ClientPerson.getCode(); + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(commandeclt, 3); + + } catch (IOException ex) { + Logger.getLogger(RechercherClientPersonneController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + //afficher la fenaitre + RechercheClient.ShowDialg(); + + final RechercherClientEntrepriseController RechercheClientEntre = new RechercherClientEntrepriseController(); + + RechercheClient.cltEntreprise.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + RechercheClient.AnchoreClientPerson.setVisible(false); + RechercheClientEntre.AnchoreClientEntre.setVisible(true); + RechercheClientEntre.Show(); + } + }); + + //Action when the button is pressed + + + RechercheClientEntre.cltPer.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + RechercheClientEntre.AnchoreClientEntre.setVisible(false); + RechercheClient.AnchoreClientPerson.setVisible(true); + RechercheClient.ShowDialg(); + } + }); + + RechercheClientEntre.TableColumnActionEtre.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected Item + ListeClientEntreprise currentPerson = ((ListeClientEntreprise)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltPasser.fxml")); + Parent commandeclt = (Parent) fxmlLoader.load(); + + //Traitement de Sauvgarde + CommandeCltPasserController.TypeClient = 1 ; + CommandeCltPasserController.codecliententre = currentPerson.getCode(); + + CommandeCltPasserController CommandeCltPasser = fxmlLoader.getController(); + CommandeCltPasser.SetClientEntre(currentPerson.getCode()); + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(commandeclt, 3); + + } catch (IOException ex) { + Logger.getLogger(RechercherClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + } + + private void QantiteMouseClick(){ + TabColQuantite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newquantite = t.getNewValue() ; + try{ + newquantite = newquantite.replace(',','.'); + if(Float.parseFloat(newquantite)<1){ + newquantite = "1"; + } + } + catch(NumberFormatException nfe){ + newquantite = "1"; + } + + + ListeProduit Liste = t.getRowValue() ; + + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un quantité dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setQuantite(newquantite); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), newquantite,Liste.getPrixHT(), Liste.getRemise(),"",Liste.getTVA(),""); + //NewList = CalculeProduit(NewList); + AffectationTableView(NewList,t.getTablePosition().getRow()) ; + + } + } + }); + } + + private void RemiseMouseClick(){ + TabColRemise.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newRemise = t.getNewValue() ; + try{ + newRemise = newRemise.replace(',','.'); + if(Float.parseFloat(newRemise)<0){ + newRemise = "0"; + } + } + catch(NumberFormatException nfe){ + newRemise = "0"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un remise dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setRemise(newRemise); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), Liste.getQuantite(),Liste.getPrixHT(), newRemise, "", Liste.getTVA(), ""); + AffectationTableView(NewList, t.getTablePosition().getRow()); + } + + } + }); + } + + + + private void ReferenceMouseClick(){ + TabColReference.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + produit = produitDB.getProduit(t.getNewValue()); + if(produit.getReference() != null){ + ListeProduit Liste = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0","",produit.getTvavente(),"0"); + AffectationTableView(Liste,t.getTablePosition().getRow()) ; + } + else{ + AffectationTableView(new ListeProduit("","","","","","","",""),t.getTablePosition().getRow()) ; + } + + } + }); + } + + + @FXML + private void RechercheProduitButtonAction(ActionEvent event) throws IOException { + final RechercherProduitController rechercheproduit = new RechercherProduitController(true); + + rechercheproduit.Show(); + + rechercheproduit.TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected ItemButtonCell + Produit currentPerson = ((Produit)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/CommandeClt/CommandeCltPasser.fxml")); + Parent commandeclt = (Parent) fxmlLoader.load(); + + CommandeCltPasserController CommandeCltPasser = fxmlLoader.getController(); + CommandeCltPasser.SetProduit(currentPerson.getReference()); + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(commandeclt, 3); + + } catch (IOException ex) { + Logger.getLogger(CommandeCltPasserController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + } + + private void AffectationTableView(ListeProduit ListeProd, int EmplacementLigne){ + boolean result = false ; + int indise=0; + int Position = 0; + + if(data.size()>0){ + do{ //Vérifier si le produit exsiste deja + if(data.get(indise).getReference().equals(ListeProd.getReference())){ + result = true ; + Position = indise ; + //System.out.println("existe Position:"+indise); + } + indise++; + }while(data.size()>indise && !result); + + if(result){ //si la ligne exsite déja + if(EmplacementLigne!= -1){ + if(Position == EmplacementLigne){ + data.set(Position, ListeProd); + } + else{ + data.set(EmplacementLigne, new ListeProduit("","","","","","","","")); + } + } + } + else{ + if(EmplacementLigne!= -1){ + data.set(EmplacementLigne, ListeProd); + } + else{ + data.add(ListeProd); + } + } + } + else{ + data.add(ListeProd); + } + + CalculeListeProduit(); + + + TableViewListeProduit.setItems(data); + TableViewListeProduit.setVisible(false); + TableViewListeProduit.setVisible(true); + } + + + + private void CalculeListeProduit(){ //calculer et afficher la détail des produits + float netaPayer = 0; + float Remises = 0; + float totalTVA = 0; + float total_H_T_Net= 0; + TotalTVA.setText(""); + Remise.setText(""); + NetAPayer.setText(""); + Timbre.setText(""); + TotalHTNet.setText(""); + + //calcule + for(ListeProduit liste : data){ + float totaht = Adaptateur.StringToFloat(liste.getTotalHT()) ; + float prix_U_H_T = Adaptateur.StringToFloat(liste.getPrixHT()) ; + float remises = Adaptateur.StringToFloat(liste.getRemise().replace("%", "")) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")); + float qte = Adaptateur.StringToFloat(liste.getQuantite()); + + totalTVA = totalTVA + ((totaht * tva) /100) ; + + Remises = Remises + (prix_U_H_T * remises)/100 ; + + total_H_T_Net = total_H_T_Net + totaht ; + + } + + if(total_H_T_Net>0){ + float timbre = Adaptateur.StringToFloat(ParametreSystem.Timbre); + netaPayer = total_H_T_Net + totalTVA + timbre ; + + TotalTVA.setText(Adaptateur.ArrondFloatToString(totalTVA)); + Remise.setText(Adaptateur.ArrondFloatToString(Remises)); + NetAPayer.setText(Adaptateur.ArrondFloatToString(netaPayer)); + Timbre.setText(ParametreSystem.Timbre); + TotalHTNet.setText(Adaptateur.ArrondFloatToString(total_H_T_Net)); + } + } + + @FXML + private void ClientRessetDefautButtonAction(ActionEvent event) throws IOException { + CommandeCltPasserController.TypeClient = 2 ; + ClientExisteDejat.setVisible(true); + Nom.setVisible(true); + Prenom.setVisible(true); + DateNaisssance.setVisible(true); + Adresse.setVisible(true); + TELE1.setVisible(true); + TELE2.setVisible(true); + TextSexe.setVisible(true); + SexeHomme.setVisible(true); + SexeFemme.setVisible(true); + TextDateNaisssance.setVisible(true); + + TextCltExistCode.setVisible(false); + ClientDefault.setVisible(false); + CltExistCode.setVisible(false); + CltExistNom.setVisible(false); + CltExistPrenom.setVisible(false); + CltExistAdresse.setVisible(false); + CltExistTELE1.setVisible(false); + CltExistTELE2.setVisible(false); + CltExistDateNaissance.setVisible(false); + } + + public void SetClient(String codeclt){ + Client client = new Client(); + ClientDB clientdb = new ClientDB(); + CommandeCltPasserController.TypeClient = 0 ; + client = clientdb.getClient(codeclt); + + ClientExisteDejat.setVisible(false); + Nom.setVisible(false); + Prenom.setVisible(false); + DateNaisssance.setVisible(false); + Adresse.setVisible(false); + TELE1.setVisible(false); + TELE2.setVisible(false); + TextSexe.setVisible(true); + SexeHomme.setVisible(true); + SexeFemme.setVisible(true); + + CltExistCode.setText(client.getCodeclient().toString()); + CltExistNom.setText(client.getNom()); + CltExistPrenom.setText(client.getPrenom()); + CltExistDateNaissance.setText(" "+client.getDateNaissanceString()); + CltExistAdresse.setText(client.getAdresse()); + CltExistTELE1.setText(client.getTelefix().toString()); + CltExistTELE2.setText(client.getTelemobileString()); + if(client.getSexe() == 1){ + SexeHomme.setSelected(true); + }else if(client.getSexe() == 0){ + SexeFemme.setSelected(true); + } + + + + TextDateNaisssance.setVisible(true); + TextCltExistCode.setVisible(true); + ClientDefault.setVisible(true); + CltExistCode.setVisible(true); + CltExistNom.setVisible(true); + CltExistPrenom.setVisible(true); + CltExistDateNaissance.setVisible(true); + CltExistAdresse.setVisible(true); + CltExistTELE1.setVisible(true); + CltExistTELE2.setVisible(true); + + } + + + public void SetProduit(String Refprod){ + produit = produitDB.getProduit(Refprod); + ListeProduit ListeProd = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0",produit.getPrixventettc(),produit.getTvavente(),"0"); + //Supprimer les igne vide + if((data.size()>0) && (data.get(data.size()-1).getReference().isEmpty())){ + data.remove(data.size()-1); + } + + AffectationTableView(ListeProd,-1); + } + public void SetClientEntre(String codecliententre){ + + ClientEntreprise ClientEtr = new ClientEntreprise(); + ClientEntrepriseDB ClientEtrDB = new ClientEntrepriseDB(); + ClientEtr = ClientEtrDB.GetClientEtr(codecliententre); + CommandeCltPasserController.TypeClient = 1 ; + + TextMatricule.setVisible(true); + TextPrenom.setVisible(false); + TextSexe.setVisible(false); + SexeHomme.setVisible(false); + SexeFemme.setVisible(false); + DateNaisssance.setVisible(false); + + ClientExisteDejat.setVisible(false); + CltExistDateNaissance.setVisible(false); + TextDateNaisssance.setVisible(false); + Nom.setVisible(false); + Prenom.setVisible(false); + Adresse.setVisible(false); + TELE1.setVisible(false); + TELE2.setVisible(false); + + CltExistCode.setText(ClientEtr.getCode().toString()); + CltExistNom.setText(ClientEtr.getNom()); + CltExistPrenom.setText(ClientEtr.getMatricule()); + CltExistAdresse.setText(ClientEtr.getAdresse()); + CltExistTELE1.setText(ClientEtr.getTele1().toString()); + CltExistTELE2.setText(ClientEtr.getTele2().toString()); + + TextCltExistCode.setVisible(true); + ClientDefault.setVisible(true); + CltExistCode.setVisible(true); + CltExistNom.setVisible(true); + CltExistPrenom.setVisible(true); + CltExistAdresse.setVisible(true); + CltExistTELE1.setVisible(true); + CltExistTELE2.setVisible(true); + } +} diff --git a/src/main/java/Controllers/DevisClt/DevisAjouterController.java b/src/main/java/Controllers/DevisClt/DevisAjouterController.java new file mode 100644 index 0000000..29c9842 --- /dev/null +++ b/src/main/java/Controllers/DevisClt/DevisAjouterController.java @@ -0,0 +1,911 @@ +/* + * 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 Controllers.DevisClt; + +import Controllers.Client.ListeClient; +import Controllers.Client.ListeClientEntreprise; +import Controllers.Client.RechercherClientEntrepriseController; +import Controllers.Client.RechercherClientPersonneController; +import Controllers.Dialog.MessageControle; +import Models.Produit.ListeProduit; +import Controllers.Produit.RechercherProduitController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Client.Client; +import Models.Client.ClientDB; +import Models.Client.ClientEntreprise; +import Models.Client.ClientEntrepriseDB; +import Models.DevisClt.Devis; +import Models.DevisClt.DevisDB; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +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; + +/** + * FXML Controller class + * + * @author PC-Maher + */ +public class DevisAjouterController implements Initializable { + + @FXML private AnchorPane PaneDevisAjouter ; + + @FXML private Text DevisTotalTVA ; + @FXML private Text DevisRemise ; + @FXML private Text DevisNetAPayer ; + @FXML private Text DevisTimbre ; + @FXML private Text DevisTotalHTNet ; + + @FXML public Button EnregisterDevis ; + @FXML public Button ClientExisteDejat ; + @FXML public Button ClientDefault ; + @FXML public Button RechercheProduit ; + + @FXML public TextField DevisNom ; + @FXML public TextField DevisPrenom ; + @FXML public TextField DevisAdresse ; + @FXML public TextField DevisTELE1 ; + @FXML public TextField DevisTELE2 ; + + @FXML public Text TextMatricule ; + @FXML public Text TextPrenom; + + @FXML public Text TextCltExistCode; + @FXML public Text CltExistCode; + @FXML public Text CltExistNom; + @FXML public Text CltExistPrenom; + @FXML public Text CltExistAdresse; + @FXML public Text CltExistTELE1; + @FXML public Text CltExistTELE2; + + @FXML public DatePicker DateCreation ; + @FXML public DatePicker DateFinValidite ; + + @FXML public ComboBox ModeReglement ; + + @FXML public TableView TableViewListeProduitDevis ; + @FXML public TableColumn TabColDevisReference; + @FXML public TableColumn TabColDevisDesignaton; + @FXML public TableColumn TabColDevisQuantite ; + @FXML public TableColumn TabColDevisPrixHT; + @FXML public TableColumn TabColDevisRemise; + @FXML public TableColumn TabColDevisTotalHT; + @FXML public TableColumn TabColDevisTVA; + @FXML public TableColumn TabColDevisTotalTTC; + @FXML public TableColumn TabColDevisAddAction ; + + public static Integer TypeClient ; // 0Personne 1Entreprise 2Passeger + public static String codeclient ; + public static String codecliententre; + public static Object Mode; + public static LocalDate FinValidite; + + public static ObservableList data=FXCollections.observableArrayList(); + + Devis devis = new Devis(); + Produit produit= new Produit(); + ProduitDB produitDB= new ProduitDB(); + + + public void SauvgardeTraitement(){ + if(TypeClient != null){ + + if(TypeClient == 0){ + this.SetClient(codeclient); + } + if(TypeClient == 1){ + this.SetClientEntre(codecliententre); + } + } + } + + @Override + public void initialize(URL url, ResourceBundle rb) { + + this.SauvgardeTraitement(); + + DateCreation.setValue(LocalDate.now()); + + TableViewListeProduitDevis.setEditable(true); + TabColDevisReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDevisDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColDevisQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColDevisQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDevisQuantite.getStyleClass().add("Center"); + + TabColDevisPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColDevisPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColDevisPrixHT.getStyleClass().add("Center"); + + TabColDevisRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColDevisRemise.setStyle( "-fx-alignment: CENTER;"); + TabColDevisRemise.getStyleClass().add("Center"); + + TabColDevisTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColDevisTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColDevisTotalHT.getStyleClass().add("Center"); + + TabColDevisTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColDevisTVA.setStyle( "-fx-alignment: CENTER;"); + TabColDevisTVA.getStyleClass().add("Center"); + + TabColDevisTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColDevisTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDevisTotalTTC.getStyleClass().add("Center"); + + TabColDevisReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColDevisQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColDevisRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + this.ReferenceMouseClick(); + this.QantiteMouseClick(); + this.RemiseMouseClick(); + + + + TabColDevisAddAction.setSortable(true); + TabColDevisAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColDevisAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new DevisAjouterController.ButtonCell(); + } + }); + + + TableViewListeProduitDevis.setItems(data); + CalculeListeProduit(); + + //Ajouter une ligne vide lorce ce que en click sur la tableview + TableViewListeProduitDevis.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + int nbrligne = TableViewListeProduitDevis.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduitDevis.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduitDevis.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduitDevis.setItems(data); + TableViewListeProduitDevis.getSelectionModel().select(nbrligne); + } + } + } + }); + + } + + @FXML + private void SaveDevisButtonAction(ActionEvent event) throws IOException { + final DevisDialogConfirmationController DevisDialogConfirmation = new DevisDialogConfirmationController(); + if(ControleDevis()){ + this.SetDevis(); + + DevisDialogConfirmation.Getdevis(devis); + DevisDialogConfirmation.DevisEnregister.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + DevisDialogConfirmation.AnchorPrincipal.setVisible(false); + DevisDB devisdb = new DevisDB(); + String codedevis = devisdb.AddDevis(devis); + if(!codedevis.isEmpty()){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisDetail.fxml")); + Parent NodeDetail = (Parent)fxmlLoader.load(); + DevisDetailController devisdetail = fxmlLoader.getController(); + devisdetail.SowDetailDevis(codedevis); + PaneDevisAjouter.getChildren().add(NodeDetail); + } catch (IOException ex) { + Logger.getLogger(DevisAjouterController.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + }); + + DevisDialogConfirmation.Show(); + } + } + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + CalculeListeProduit(); + TableViewListeProduitDevis.setStyle(".table-row-cell:selected{ -fx-background-color:transparent ;}"); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + @FXML + private void AddLigneButtonAction(ActionEvent event) throws IOException { + int nbrligne = TableViewListeProduitDevis.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduitDevis.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduitDevis.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduitDevis.setItems(data); + TableViewListeProduitDevis.getSelectionModel().select(nbrligne); + } + } + } + + private boolean ControleDevis(){ + boolean resulta = false ; + if(data.size()<1){ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + //DateFinValidite ModeReglement + else if(DateFinValidite.getValue()==null){ + DateFinValidite.setStyle("-fx-border-color:#f20606;"); + } + else if(ModeReglement.getValue()==null){ + DateFinValidite.setStyle("-fx-border-color:#b5b5b5;"); + ModeReglement.setStyle("-fx-border-color:#f20606;"); + } + else if(TypeClient == 2){ // 0Personne 1Entreprise 2Passeger + ModeReglement.setStyle("-fx-border-color:transparent;"); + contro clt =new contro(); + if(DevisNom.getText().isEmpty()){ + DevisNom.setStyle("-fx-border-color:#f20606;"); + } + else if(DevisPrenom.getText().isEmpty()){ + DevisNom.setStyle("-fx-border-color:transparent;"); + DevisPrenom.setStyle("-fx-border-color:#f20606;"); + + } + else if(DevisAdresse.getText().isEmpty()){ + DevisPrenom.setStyle("-fx-border-color:transparent;"); + DevisAdresse.setStyle("-fx-border-color:#f20606;"); + + } + else if(clt.isNumericNotnull(DevisTELE1.getText())){ + DevisAdresse.setStyle("-fx-border-color:transparent;"); + DevisTELE1.setStyle("-fx-border-color:#f20606;"); + } + else if(clt.isNumeric(DevisTELE2.getText())){ + DevisTELE1.setStyle("-fx-border-color:transparent;"); + DevisTELE2.setStyle("-fx-border-color:#f20606;"); + } + else{ + DevisTELE2.setStyle("-fx-border-color:transparent;"); + DateFinValidite.setStyle("-fx-border-color:#b5b5b5;"); + ModeReglement.setStyle("-fx-border-color:#b5b5b5;"); + resulta = true ; + } + } + else{ + DateFinValidite.setStyle("-fx-border-color:#b5b5b5;"); + ModeReglement.setStyle("-fx-border-color:#b5b5b5;"); + resulta = true ; + } + + return resulta ; + } + private void SetDevis(){ + + devis.setDate(Adaptateur.NormalDateFormat(DateCreation.getValue())); + devis.setTypeClient(TypeClient); + devis.setTypeRegement(ModeReglement.getValue().toString()); + devis.setValidite(Adaptateur.NormalDateFormat(DateFinValidite.getValue())); + + devis.setNetAPayer(DevisNetAPayer.getText()); + devis.setTotalTVA(DevisTotalTVA.getText()); + devis.setTotalHorsTaxNet(DevisTotalHTNet.getText()); + + if(TypeClient == 0){ + devis.setCodeClient(CltExistCode.getText()); + devis.setNom(CltExistNom.getText()); + devis.setPrenom(CltExistPrenom.getText()); + devis.setAdresse(CltExistAdresse.getText()); + devis.setTele1(CltExistTELE1.getText()); + devis.setTele2(CltExistTELE2.getText()); + + } + else if(TypeClient == 1){ + //TextCltExistCode CltExistCode CltExistNom CltExistPrenom + devis.setCodeClient(CltExistCode.getText()); + devis.setNom(CltExistNom.getText()); + devis.setMatricule(CltExistPrenom.getText()); + devis.setAdresse(CltExistAdresse.getText()); + devis.setTele1(CltExistTELE1.getText()); + devis.setTele2(CltExistTELE2.getText()); + } + else if(TypeClient == 2){ + devis.setNom(DevisNom.getText()); + devis.setPrenom(DevisPrenom.getText()); + devis.setAdresse(DevisAdresse.getText()); + devis.setTele1(DevisTELE1.getText()); + devis.setTele2(DevisTELE2.getText()); + } + + //controle le cas ou on a une ligne vide a la fin de la liste + if(data.get(data.size()-1).getTotalTTC().isEmpty()){ + data.remove(data.size()-1); + } + devis.setListeproduit(data); + } + + + //Methode qui pérmet de traite les recherche du client Personne + @FXML + private void ClientExisteDejatButtonAction(ActionEvent event) throws IOException { + + final RechercherClientPersonneController RechercheClient = new RechercherClientPersonneController(); + + RechercheClient.Action.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected Item + ListeClient ClientPerson = ((ListeClient)getTableRow().getItem()); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisAjouter.fxml")); + Parent devis = (Parent) fxmlLoader.load(); + + + //Traitement de Sauvgarde + DevisAjouterController.TypeClient = 0 ; + DevisAjouterController.codeclient = ClientPerson.getCode(); + DevisAjouterController.FinValidite = DateFinValidite.getValue(); + DevisAjouterController.Mode = ModeReglement.getValue(); + + DevisAjouterController devisajouter = fxmlLoader.getController(); + devisajouter.SetClient(ClientPerson.getCode()); + devisajouter.ModeReglement.setValue(DevisAjouterController.Mode); + devisajouter.DateFinValidite.setValue(DevisAjouterController.FinValidite); + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(devis, 3); + + } catch (IOException ex) { + Logger.getLogger(RechercherClientPersonneController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + //afficher la fenaitre + RechercheClient.ShowDialg(); + + final RechercherClientEntrepriseController RechercheClientEntre = new RechercherClientEntrepriseController(); + + RechercheClient.cltEntreprise.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + RechercheClient.AnchoreClientPerson.setVisible(false); + RechercheClientEntre.AnchoreClientEntre.setVisible(true); + RechercheClientEntre.Show(); + } + }); + + //Action when the button is pressed + + + RechercheClientEntre.cltPer.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + RechercheClientEntre.AnchoreClientEntre.setVisible(false); + RechercheClient.AnchoreClientPerson.setVisible(true); + RechercheClient.ShowDialg(); + } + }); + + RechercheClientEntre.TableColumnActionEtre.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected Item + ListeClientEntreprise currentPerson = ((ListeClientEntreprise)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisAjouter.fxml")); + Parent devis = (Parent) fxmlLoader.load(); + + //Traitement de Sauvgarde + DevisAjouterController.TypeClient = 1 ; + DevisAjouterController.codecliententre = currentPerson.getCode(); + DevisAjouterController.FinValidite = DateFinValidite.getValue(); + DevisAjouterController.Mode = ModeReglement.getValue(); + + DevisAjouterController devisajouter = fxmlLoader.getController(); + + devisajouter.SetClientEntre(currentPerson.getCode()); + devisajouter.ModeReglement.setValue(DevisAjouterController.Mode); + devisajouter.DateFinValidite.setValue(DevisAjouterController.FinValidite); + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(devis, 3); + + } catch (IOException ex) { + Logger.getLogger(RechercherClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + } + + private void QantiteMouseClick(){ + TabColDevisQuantite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newquantite = t.getNewValue() ; + try{ + newquantite = newquantite.replace(',','.'); + if(Float.parseFloat(newquantite)<1){ + newquantite = "1"; + } + } + catch(NumberFormatException nfe){ + newquantite = "1"; + } + + + ListeProduit Liste = t.getRowValue() ; + + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un quantité dans un ligne vide + TableViewListeProduitDevis.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduitDevis.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setQuantite(newquantite); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), newquantite,Liste.getPrixHT(), Liste.getRemise(),"",Liste.getTVA(),""); + //NewList = CalculeProduit(NewList); + AffectationTableView(NewList,t.getTablePosition().getRow()) ; + + } + } + }); + } + + private void RemiseMouseClick(){ + TabColDevisRemise.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newRemise = t.getNewValue() ; + try{ + newRemise = newRemise.replace(',','.'); + if(Float.parseFloat(newRemise)<0){ + newRemise = "0"; + } + } + catch(NumberFormatException nfe){ + newRemise = "0"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un remise dans un ligne vide + TableViewListeProduitDevis.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduitDevis.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setRemise(newRemise); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), Liste.getQuantite(),Liste.getPrixHT(), newRemise, "", Liste.getTVA(), ""); + AffectationTableView(NewList, t.getTablePosition().getRow()); + } + + } + }); + } + + + + private void ReferenceMouseClick(){ + TabColDevisReference.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + produit = produitDB.getProduit(t.getNewValue()); + if(produit.getReference() != null){ + ListeProduit Liste = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0","",produit.getTvavente(),"0"); + AffectationTableView(Liste,t.getTablePosition().getRow()) ; + } + else{ + AffectationTableView(new ListeProduit("","","","","","","",""),t.getTablePosition().getRow()) ; + } + + } + }); + } + + + @FXML + private void RechercheProduitButtonAction(ActionEvent event) throws IOException { + + double PrefWidthPaneDevis = PaneDevisAjouter.getPrefWidth(); + double PrefHeightPaneDevis = PaneDevisAjouter.getPrefHeight(); + + System.out.println(PaneDevisAjouter.getPrefWidth()); + System.out.println(PaneDevisAjouter.getPrefHeight()); + + final RechercherProduitController rechercheproduit = new RechercherProduitController(true); + + rechercheproduit.Show(); + + rechercheproduit.TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + DevisAjouterController.FinValidite = DateFinValidite.getValue(); + DevisAjouterController.Mode = ModeReglement.getValue(); + // get Selected ItemButtonCell + Produit currentPerson = ((Produit)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisAjouter.fxml")); + Parent devis = (Parent) fxmlLoader.load(); + + DevisAjouterController devisajouter = fxmlLoader.getController(); + devisajouter.SetProduit(currentPerson.getReference()); + + devisajouter.ModeReglement.setValue(DevisAjouterController.Mode); + devisajouter.DateFinValidite.setValue(DevisAjouterController.FinValidite); + + devisajouter.PaneDevisAjouter.setPrefSize(PrefWidthPaneDevis, PrefHeightPaneDevis); + + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(devis, 3); + + } catch (IOException ex) { + Logger.getLogger(DevisAjouterController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + } + + private void AffectationTableView(ListeProduit ListeProd, int EmplacementLigne){ + boolean result = false ; + int indise=0; + int Position = 0; + + if(data.size()>0){ + do{ //Vérifier si le produit exsiste deja + if(data.get(indise).getReference().equals(ListeProd.getReference())){ + result = true ; + Position = indise ; + //System.out.println("existe Position:"+indise); + } + indise++; + }while(data.size()>indise && !result); + + if(result){ //si la ligne exsite déja + if(EmplacementLigne!= -1){ + if(Position == EmplacementLigne){ + data.set(Position, ListeProd); + } + else{ + data.set(EmplacementLigne, new ListeProduit("","","","","","","","")); + } + } + } + else{ + if(EmplacementLigne!= -1){ + data.set(EmplacementLigne, ListeProd); + } + else{ + data.add(ListeProd); + } + } + } + else{ + data.add(ListeProd); + } + + CalculeListeProduit(); + + + TableViewListeProduitDevis.setItems(data); + TableViewListeProduitDevis.setVisible(false); + TableViewListeProduitDevis.setVisible(true); + } + + + + private void CalculeListeProduit(){ //calculer et afficher la détail des produits + float NetaPayer = 0; + float Remise = 0; + float TotalTVA = 0; + float Total_H_T_Net= 0; + DevisTotalTVA.setText(""); + DevisRemise.setText(""); + DevisNetAPayer.setText(""); + DevisTimbre.setText(""); + DevisTotalHTNet.setText(""); + + //calcule + for(ListeProduit liste : data){ + float totaht = Adaptateur.StringToFloat(liste.getTotalHT()) ; + float prix_U_H_T = Adaptateur.StringToFloat(liste.getPrixHT()) ; + float remise = Adaptateur.StringToFloat(liste.getRemise().replace("%", "")) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")); + float qte = Adaptateur.StringToFloat(liste.getQuantite()); + + TotalTVA = TotalTVA + ((totaht * tva) /100) ; + + Remise = Remise + (prix_U_H_T * remise)/100 ; + + Total_H_T_Net = Total_H_T_Net + totaht ; + + } + + if(Total_H_T_Net>0){ + float timbre = Adaptateur.StringToFloat(ParametreSystem.Timbre); + NetaPayer = Total_H_T_Net + TotalTVA + timbre ; + + DevisTotalTVA.setText(Adaptateur.ArrondFloatToString(TotalTVA)); + DevisRemise.setText(Adaptateur.ArrondFloatToString(Remise)); + devis.setRemise(Adaptateur.ArrondFloatToString(Remise)); + DevisNetAPayer.setText(Adaptateur.ArrondFloatToString(NetaPayer)); + DevisTimbre.setText(ParametreSystem.Timbre); + DevisTotalHTNet.setText(Adaptateur.ArrondFloatToString(Total_H_T_Net)); + } + } + + @FXML + private void ClientRessetDefautButtonAction(ActionEvent event) throws IOException { + DevisAjouterController.TypeClient = 2 ; + ClientExisteDejat.setVisible(true); + DevisNom.setVisible(true); + DevisPrenom.setVisible(true); + DevisAdresse.setVisible(true); + DevisTELE1.setVisible(true); + DevisTELE2.setVisible(true); + + TextCltExistCode.setVisible(false); + ClientDefault.setVisible(false); + CltExistCode.setVisible(false); + CltExistNom.setVisible(false); + CltExistPrenom.setVisible(false); + CltExistAdresse.setVisible(false); + CltExistTELE1.setVisible(false); + CltExistTELE2.setVisible(false); + } + + public void SetClient(String codeclt){ + Client client = new Client(); + ClientDB clientdb = new ClientDB(); + DevisAjouterController.TypeClient = 0 ; + client = clientdb.getClient(codeclt); + + ClientExisteDejat.setVisible(false); + DevisNom.setVisible(false); + DevisPrenom.setVisible(false); + DevisAdresse.setVisible(false); + DevisTELE1.setVisible(false); + DevisTELE2.setVisible(false); + + + CltExistCode.setText(client.getCodeclient().toString()); + CltExistNom.setText(client.getNom()); + CltExistPrenom.setText(client.getPrenom()); + CltExistAdresse.setText(client.getAdresse()); + CltExistTELE1.setText(client.getTelefix().toString()); + CltExistTELE2.setText(client.getTelemobileString()); + + TextCltExistCode.setVisible(true); + ClientDefault.setVisible(true); + CltExistCode.setVisible(true); + CltExistNom.setVisible(true); + CltExistPrenom.setVisible(true); + CltExistAdresse.setVisible(true); + CltExistTELE1.setVisible(true); + CltExistTELE2.setVisible(true); + + } + + + public void SetProduit(String Refprod){ + produit = produitDB.getProduit(Refprod); + ListeProduit ListeProd = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0",produit.getPrixventettc(),produit.getTvavente(),"0"); + //Supprimer les igne vide + if((data.size()>0) && (data.get(data.size()-1).getReference().isEmpty())){ + data.remove(data.size()-1); + } + + AffectationTableView(ListeProd,-1); + } + public void SetClientEntre(String codecliententre){ + + ClientEntreprise ClientEtr = new ClientEntreprise(); + ClientEntrepriseDB ClientEtrDB = new ClientEntrepriseDB(); + ClientEtr = ClientEtrDB.GetClientEtr(codecliententre); + DevisAjouterController.TypeClient = 1 ; + + TextMatricule.setVisible(true); + TextPrenom.setVisible(false); + + ClientExisteDejat.setVisible(false); + DevisNom.setVisible(false); + DevisPrenom.setVisible(false); + DevisAdresse.setVisible(false); + DevisTELE1.setVisible(false); + DevisTELE2.setVisible(false); + + CltExistCode.setText(ClientEtr.getCode().toString()); + CltExistNom.setText(ClientEtr.getNom()); + CltExistPrenom.setText(ClientEtr.getMatricule()); + CltExistAdresse.setText(ClientEtr.getAdresse()); + CltExistTELE1.setText(ClientEtr.getTele1().toString()); + CltExistTELE2.setText(ClientEtr.getTele2().toString()); + + TextCltExistCode.setVisible(true); + ClientDefault.setVisible(true); + CltExistCode.setVisible(true); + CltExistNom.setVisible(true); + CltExistPrenom.setVisible(true); + CltExistAdresse.setVisible(true); + CltExistTELE1.setVisible(true); + CltExistTELE2.setVisible(true); + } +} diff --git a/src/main/java/Controllers/DevisClt/DevisCltGestionController.java b/src/main/java/Controllers/DevisClt/DevisCltGestionController.java new file mode 100644 index 0000000..74202ba --- /dev/null +++ b/src/main/java/Controllers/DevisClt/DevisCltGestionController.java @@ -0,0 +1,425 @@ +package Controllers.DevisClt; + +import Models.DevisClt.DevisCltListe; +import Models.DevisClt.DevisDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author PC-Maher + */ +public class DevisCltGestionController implements Initializable { + + @FXML private AnchorPane PaneDevisGestion ; + + @FXML private ProgressBar ProgressBarDevisClt; + + @FXML private Button ButtonSearchDevisClt; + + @FXML private AnchorPane ListerPages; + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + @FXML public TableView TableViewGestionDevis; + + @FXML public TableColumn TabColCodeDevis; + @FXML public TableColumn TabColModePaiement; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColCodeClient; + @FXML public TableColumn TabColTotalDevis; + @FXML public TableColumn TabColDateCreation ; + @FXML public TableColumn TabColDateFinValidite; + @FXML public TableColumnTabColDetail ; + + @FXML public TextField TextFieldCodeDevis ; + @FXML public TextField TextFieldCodeClient ; + @FXML public TextField TextFieldNomPrenomClient ; + @FXML public TextField TextFieldCinClient; + @FXML public DatePicker DatePickerCreation ; + @FXML public RadioButton RadioComptant; + @FXML public RadioButton RadioFacilite; + + private Service ThreadSearchDevisClt; + + @FXML + private void AddDevisButtonAction(ActionEvent event) throws IOException { + + //inisialiser les données de Sauvgarde des opération + DevisAjouterController.TypeClient = 2 ; + DevisAjouterController.codeclient = null ; + DevisAjouterController.codecliententre = null ; + DevisAjouterController.data.clear(); + DevisAjouterController.FinValidite = null; + DevisAjouterController.Mode = null; + + PaneDevisGestion.getChildren().clear(); + PaneDevisGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Devis/DevisAjouter.fxml"))); + } + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewGestionDevis.setEditable(true); + + TabColCodeDevis.setStyle( "-fx-alignment: CENTER;");TabColCodeDevis.getStyleClass().add("Center"); + TabColCodeDevis.setCellValueFactory(new PropertyValueFactory("CodeDevis")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColCodeClient.setStyle( "-fx-alignment: CENTER;");TabColCodeClient.getStyleClass().add("Center"); + TabColCodeClient.setCellValueFactory(new PropertyValueFactory("CodeClient")); + + TabColModePaiement.setStyle( "-fx-alignment: CENTER;");TabColModePaiement.getStyleClass().add("Center"); + TabColModePaiement.setCellValueFactory(new PropertyValueFactory("ModePaiement")); + + TabColTotalDevis.setStyle( "-fx-alignment: CENTER;");TabColTotalDevis.getStyleClass().add("Center"); + TabColTotalDevis.setCellValueFactory(new PropertyValueFactory("TotalDevis")); + + TabColDateCreation.setStyle( "-fx-alignment: CENTER;");TabColDateCreation.getStyleClass().add("Center"); + TabColDateCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColDateFinValidite.setStyle( "-fx-alignment: CENTER;");TabColDateFinValidite.getStyleClass().add("Center"); + TabColDateFinValidite.setCellValueFactory(new PropertyValueFactory("FinValidite")); + + TabColDetail.setSortable(true); + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + ButtonSearchDevisClt.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchDevisClt(); + } + }); + + PaneDevisGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchDevisClt(); + } + } + }); + + GestionSearchDevisClt(); + } + + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconedit.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + // get Selected Item + DevisCltListe current = (DevisCltListe) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String codedevis = current.getCodeDevis(); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisDetail.fxml")); + Parent NodeDetail = (Parent)fxmlLoader.load(); + DevisDetailController devisdetail = fxmlLoader.getController(); + devisdetail.AnchorPaneSucces.setVisible(false); + devisdetail.TextSucces.setText("Information Devis"); + devisdetail.TextSucces.setLayoutX(30); + devisdetail.TextSucces.setFont(Font.font("Arial", FontWeight.NORMAL, 21)); + devisdetail.TextDescSucces.setVisible(false); + devisdetail.SowDetailDevis(codedevis); + PaneDevisGestion.getChildren().add(NodeDetail); + + } catch (IOException ex) { + Logger.getLogger(DevisCltGestionController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + +/****************************************************************************** * + * * + * Methode last Next TableView client Entreprise * + * * * + ******************************************************************************/ + + private void SearchDevisClt() + { + ProgressBarDevisClt.setVisible(true); + + ButtonSearchDevisClt.setDisable(true); + + ThreadSearchDevisClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListDevisClts = new DevisDB().SearchDevisCltGestion( + position, + nbrligne, + TextFieldCodeDevis.getText(), + TextFieldCodeClient.getText(), + TypeRegement, + DateCreation, + TextFieldNomPrenomClient.getText(), + TextFieldCinClient.getText()); + + TableViewGestionDevis.setItems(ListDevisClts); + + totalcount = new DevisDB().nbrDevisCltGestion(TextFieldCodeDevis.getText(), TextFieldCodeClient.getText(), TypeRegement, DateCreation, TextFieldNomPrenomClient.getText(), TextFieldCinClient.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchDevisClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarDevisClt.setVisible(false); + ButtonSearchDevisClt.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchDevisClt.start(); + } + + + private void NextLastSearchDevisClt(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarDevisClt.setVisible(true); + + ButtonSearchDevisClt.setDisable(true); + + ThreadSearchDevisClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListDevisClts = new DevisDB().SearchDevisCltGestion(ParmPosition, ParamNbrligne, TextFieldCodeDevis.getText(), TextFieldCodeClient.getText(), TypeRegement, DateCreation, TextFieldNomPrenomClient.getText(), TextFieldCinClient.getText()); + + TableViewGestionDevis.setItems(ListDevisClts); + + return null; + } + }; + } + }; + + ThreadSearchDevisClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarDevisClt.setVisible(false); + ButtonSearchDevisClt.setDisable(false); + } + }); + ThreadSearchDevisClt.start(); + } + + private void GestionSearchDevisClt() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchDevisClt(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchDevisClt(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchDevisClt(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/DevisClt/DevisCltPrintController.java b/src/main/java/Controllers/DevisClt/DevisCltPrintController.java new file mode 100644 index 0000000..bc1b736 --- /dev/null +++ b/src/main/java/Controllers/DevisClt/DevisCltPrintController.java @@ -0,0 +1,240 @@ +package Controllers.DevisClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.DevisClt.Devis; +import Models.Produit.ListeProduit; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.beans.property.SimpleStringProperty; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Control; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.text.Text; +import javafx.util.Callback; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class DevisCltPrintController implements Initializable { + + @FXML public ImageView ImageViewLogo; + + @FXML private Text TextSteNom1; + @FXML private Text TextReference; + @FXML private Text TextDate; + @FXML private Text TextEcheance; + @FXML private Text TextClient; + + @FXML private Text TextNumDevie; + @FXML private Text TextTotalHT; + @FXML private Text TextTVA; + @FXML private Text TextTotalTTC; + + @FXML private Text TextSteNom2; + @FXML private Text TextSteContact; + @FXML private Text TextSteSIREN; + + + @FXML private TableView TableViewProdDevis ; + @FXML private TableColumn TabColDevisReference; + @FXML private TableColumn TabColDevisDesignation; + @FXML private TableColumn TabColDevisQuantite ; + @FXML private TableColumn TabColDevisPrix; + @FXML private TableColumn TabColDevisMontant; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + setImageLogo(); + + TabColDevisReference.setCellValueFactory(new PropertyValueFactory("Reference")); + + TabColDevisDesignation.setCellValueFactory(new PropertyValueFactory("Description")); + TabColDevisDesignation.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if (item == null) { + super.setText(null); + super.setGraphic(null); + } else { + String newItem = item.trim().toLowerCase(); + Text text = new Text(newItem); + super.setPrefHeight(Control.USE_COMPUTED_SIZE); + text.wrappingWidthProperty().bind(super.widthProperty()); + super.setGraphic(text); + } + } + }; + return cell; + } + }); + + + TabColDevisQuantite.setCellValueFactory(new PropertyValueFactory("Quantite")); + TabColDevisQuantite.setStyle( "-fx-alignment: CENTER;"); + TabColDevisQuantite.getStyleClass().add("Center"); + + TabColDevisPrix.setCellValueFactory(new PropertyValueFactory("Prix")); + TabColDevisPrix.setStyle( "-fx-alignment: CENTER;"); + TabColDevisPrix.getStyleClass().add("Center"); + + TabColDevisMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColDevisMontant.setStyle( "-fx-alignment: CENTER;"); + TabColDevisMontant.getStyleClass().add("Center"); + + + TextSteNom1.setText(ParametreSystem.CompanyName); + TextSteNom2.setText("Ste:"+ParametreSystem.CompanyName+" | Adress:"+ParametreSystem.CompanyAddress+" | Tele: "+ParametreSystem.CompanyTele); + TextSteContact.setText("Fax:"+ParametreSystem.CompanyFax+" | Mail:"+ParametreSystem.CompanyMail+" | Site:"+ParametreSystem.CompanySite); + TextSteSIREN.setText(ParametreSystem.CompanySIREN); + } + + public void SetDevis(Devis devis) + { + TextReference.setText(devis.getCodeDevis()); + TextDate.setText(Adaptateur.NormalDateFormat(devis.getDate())); + TextEcheance.setText(devis.getValidite()); + TextClient.setText(devis.getCodeClient()+" - "+devis.getNom()+" - "+devis.getPrenom()); + TextNumDevie.setText(devis.getCodeDevis()); + + ObservableList PodDevis = FXCollections.observableArrayList(); + + for(ListeProduit liste : devis.getListeproduit()){ + if(!liste.getReference().equals("")){ + float remise = Adaptateur.ArrondStringToFloat(liste.getRemise().replace("%", "")) ; + float prixht = Adaptateur.ArrondStringToFloat(liste.getPrixHT()) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")) ; + float qte = Adaptateur.StringToFloat(liste.getQuantite()) ; + + float totalht = (prixht - ((prixht * remise)/100)) ; + float prixttc = totalht + ((totalht * tva)/100) ; + + float montant = prixttc * qte; + + PodDevis.add(new ListProdDevis(liste.getReference(), liste.getDesignation(), liste.getQuantite(), Adaptateur.FloatToStringEspace(prixttc), Adaptateur.FloatToStringEspace(montant))); + } + } + + TextTVA.setText(Adaptateur.StringToStringEspaceCurrency(devis.getTotalTVA())); + TextTotalHT.setText(Adaptateur.StringToStringEspaceCurrency(devis.getTotalHorsTaxNet())); + TextTotalTTC.setText(Adaptateur.StringToStringEspaceCurrency(devis.getNetAPayer())); + + TableViewProdDevis.setItems(PodDevis); + } + + private void setImageLogo() + { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + try { + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //PowerERP\conf\logo.xml + Document doc = db.parse(new File("./conf/logo.xml")); + + doc.getDocumentElement().normalize(); + + Element elementCNX = (Element) doc.getElementsByTagName("DevisCltPrint").item(0); + + String pathLogo = elementCNX.getElementsByTagName("PathImage").item(0).getTextContent(); + FileInputStream fis = new FileInputStream(pathLogo); + ImageViewLogo.setImage(new Image(fis)); + + ImageViewLogo.setFitWidth(Double.parseDouble(elementCNX.getElementsByTagName("FitWidth").item(0).getTextContent())); + ImageViewLogo.setFitHeight(Double.parseDouble(elementCNX.getElementsByTagName("FitHeight").item(0).getTextContent())); + ImageViewLogo.setLayoutX(Double.parseDouble(elementCNX.getElementsByTagName("LayoutX").item(0).getTextContent())); + ImageViewLogo.setLayoutY(Double.parseDouble(elementCNX.getElementsByTagName("LayoutY").item(0).getTextContent())); + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println("error AuthentificationController/setImageLogo "+e.getMessage()); + } + } + + public static class ListProdDevis { + + private final SimpleStringProperty Reference; + private final SimpleStringProperty Description; + private final SimpleStringProperty Quantite; + private final SimpleStringProperty Prix; + private final SimpleStringProperty Montant; + + private ListProdDevis(String reference, String description, String quantite, String prix, String montant) { + this.Reference = new SimpleStringProperty(reference); + this.Description = new SimpleStringProperty(description); + this.Quantite = new SimpleStringProperty(quantite); + this.Prix = new SimpleStringProperty(prix); + this.Montant = new SimpleStringProperty(montant); + } + + public String getReference() { + return Reference.get(); + } + + public void setReference(String reference) { + Reference.set(reference); + } + + public String getDescription() { + return Description.get(); + } + + public void setDescription(String description) { + Description.set(description); + } + + public String getQuantite() { + return Quantite.get(); + } + + public void setQuantite(String quantite) { + Quantite.set(quantite); + } + + public String getPrix() { + return Prix.get(); + } + + public void setPrix(String prix) { + Prix.set(prix); + } + + public String getMontant() { + return Montant.get(); + } + + public void setMontant(String montant) { + Montant.set(montant); + } + } +} diff --git a/src/main/java/Controllers/DevisClt/DevisDetailController.java b/src/main/java/Controllers/DevisClt/DevisDetailController.java new file mode 100644 index 0000000..04fb7bb --- /dev/null +++ b/src/main/java/Controllers/DevisClt/DevisDetailController.java @@ -0,0 +1,174 @@ +package Controllers.DevisClt; + +import Models.Produit.ListeProduit; +import Controllers.Traitement.Adaptateur; +import Models.DevisClt.Devis; +import Models.DevisClt.DevisDB; +import Models.Fournisseur.FournisseurDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.PageRange; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class DevisDetailController implements Initializable { + + @FXML public AnchorPane AnchorPaneSucces; + @FXML public AnchorPane AnchorPaneDevisDetail; + @FXML public AnchorPane AnchorPaneLoadingDevisDetail; + + @FXML public Text TextSucces; + @FXML public Text TextDescSucces; + + @FXML private Text DevisDateCreation; + @FXML private Text DevisFinValidite; + @FXML private Text DevisReglement; + @FXML private Text DevisNetAPayer; + @FXML private Text DevisTotalHorsTaxNet; + @FXML private Text DevisCode; + + @FXML private Text DevisTypeClt; + @FXML private Text DevisNom; + @FXML private Text DevisPrenom; + @FXML private Text DevisAdresse; + @FXML private Text DevisTELE1; + @FXML private Text DevisTELE2; + + @FXML private Text DevisTextPrenom ; + @FXML private Text DevisTextMatricule ; + + @FXML private TableView TableViewListeProduitDevis ; + @FXML private TableColumn TabColDevisReference; + @FXML private TableColumn TabColDevisDesignaton; + @FXML private TableColumn TabColDevisQuantite ; + @FXML private TableColumn TabColDevisPrixHT; + @FXML private TableColumn TabColDevisRemise; + @FXML private TableColumn TabColDevisTotalHT; + @FXML private TableColumn TabColDevisTVA; + @FXML private TableColumn TabColDevisTotalTTC; + + Devis devis = new Devis(); + + private Service ThreadDevisDetail; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColDevisReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDevisDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColDevisQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColDevisQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDevisQuantite.getStyleClass().add("Center"); + + TabColDevisPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColDevisPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColDevisPrixHT.getStyleClass().add("Center"); + + TabColDevisRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColDevisRemise.setStyle( "-fx-alignment: CENTER;"); + TabColDevisRemise.getStyleClass().add("Center"); + + TabColDevisTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColDevisTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColDevisTotalHT.getStyleClass().add("Center"); + + TabColDevisTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColDevisTVA.setStyle( "-fx-alignment: CENTER;"); + TabColDevisTVA.getStyleClass().add("Center"); + + TabColDevisTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColDevisTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDevisTotalTTC.getStyleClass().add("Center"); + } + + public void SowDetailDevis(String codedevis) + { + ThreadDevisDetail = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + devis = new DevisDB().getDevis(codedevis); + + return null; + } + }; + } + }; + ThreadDevisDetail.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + DevisDateCreation.setText(Adaptateur.NormalDateFormat(devis.getDate())); + DevisFinValidite.setText(devis.getValidite()); + DevisReglement.setText(devis.getTypeRegementString()); + DevisTotalHorsTaxNet.setText(Adaptateur.StringToStringEspace(devis.getTotalHorsTaxNet())); + DevisCode.setText(codedevis); + DevisTypeClt.setText(devis.getTypeClientString()); + DevisNom.setText(devis.getNom()); + + if(devis.getTypeClient()==0 || devis.getTypeClient()==2){ + DevisTextPrenom.setVisible(true); + DevisTextMatricule.setVisible(false); + DevisPrenom.setText(devis.getPrenom()); + } + if(devis.getTypeClient()==1){ + DevisTextPrenom.setVisible(false); + DevisTextMatricule.setVisible(true); + DevisPrenom.setText(devis.getMatricule()); + } + + DevisAdresse.setText(devis.getAdresse()); + DevisTELE1.setText(devis.getTele1()); + DevisTELE2.setText(devis.getTele2()); + DevisNetAPayer.setText(Adaptateur.StringToStringEspaceCurrency(devis.getNetAPayer())); + + TableViewListeProduitDevis.setItems(devis.getListeproduit()); + AnchorPaneDevisDetail.setVisible(true); + AnchorPaneLoadingDevisDetail.setVisible(false); + } + }); + ThreadDevisDetail.start(); + } + + @FXML + private void DevisPrintButtonAction(ActionEvent event) throws IOException { + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + jobPrint.getJobSettings().setPageRanges(new PageRange(1, 1)); + + if (jobPrint.showPrintDialog(null)) { + + FXMLLoader fxmlLoaderPrintDevis = new FXMLLoader(getClass().getResource("/Views/Devis/DevisCltPrint.fxml")); + final Node ParentFxmlPrintDevis = (Node)fxmlLoaderPrintDevis.load(); + DevisCltPrintController PrintDevis = fxmlLoaderPrintDevis.getController(); + + PrintDevis.SetDevis(devis); + + jobPrint.printPage(ParentFxmlPrintDevis); + + jobPrint.endJob(); + } + + } + +} diff --git a/src/main/java/Controllers/DevisClt/DevisDialogConfirmationController.java b/src/main/java/Controllers/DevisClt/DevisDialogConfirmationController.java new file mode 100644 index 0000000..d5d6b4a --- /dev/null +++ b/src/main/java/Controllers/DevisClt/DevisDialogConfirmationController.java @@ -0,0 +1,167 @@ +/* + * 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 Controllers.DevisClt; + +import Models.Produit.ListeProduit; +import Controllers.Traitement.MyWindow; +import Models.DevisClt.Devis; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * + * @author PC-Maher + */ +public class DevisDialogConfirmationController implements Initializable { + + /** + * Initializes the controller class. + */ + public Node nodeFxml ; + + @FXML public AnchorPane AnchorPrincipal ; + @FXML public Button DevisEnregister ; + @FXML private Text DevisDateCreation; + @FXML private Text DevisFinValidite; + @FXML private Text DevisReglement; + @FXML private Text DevisNetAPayer; + @FXML private Text DevisTotalHorsTaxNet; + @FXML private Text DevisTotalTVA; + + @FXML private Text DevisTypeClt; + @FXML private Text DevisNom; + @FXML private Text DevisPrenom; + @FXML private Text DevisAdresse; + @FXML private Text DevisTELE1; + @FXML private Text DevisTELE2; + + @FXML private Text DevisTextPrenom ; + @FXML private Text DevisTextMatricule ; + + @FXML public TableView TableViewListeProduitDevis ; + @FXML public TableColumn TabColDevisReference; + @FXML public TableColumn TabColDevisDesignaton; + @FXML public TableColumn TabColDevisQuantite ; + @FXML public TableColumn TabColDevisPrixHT; + @FXML public TableColumn TabColDevisRemise; + @FXML public TableColumn TabColDevisTotalHT; + @FXML public TableColumn TabColDevisTVA; + @FXML public TableColumn TabColDevisTotalTTC; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColDevisReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDevisDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColDevisQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColDevisQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDevisQuantite.getStyleClass().add("Center"); + + TabColDevisPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColDevisPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColDevisPrixHT.getStyleClass().add("Center"); + + TabColDevisRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColDevisRemise.setStyle( "-fx-alignment: CENTER;"); + TabColDevisRemise.getStyleClass().add("Center"); + + TabColDevisTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColDevisTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColDevisTotalHT.getStyleClass().add("Center"); + + TabColDevisTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColDevisTVA.setStyle( "-fx-alignment: CENTER;"); + TabColDevisTVA.getStyleClass().add("Center"); + + TabColDevisTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColDevisTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDevisTotalTTC.getStyleClass().add("Center"); + + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + DevisEnregister.setGraphic(buttonGraphic); + } + + public void Getdevis(Devis devis){ + DevisDateCreation.setText(devis.getDate()); + DevisFinValidite.setText(devis.getValidite()); + DevisReglement.setText(devis.getTypeRegement()); + + DevisNetAPayer.setText(devis.getNetAPayer()); + DevisTotalHorsTaxNet.setText(devis.getTotalHorsTaxNet()); + DevisTotalTVA.setText(devis.getTotalTVA()); + + + DevisTypeClt.setText(devis.getTypeClientString()); + DevisNom.setText(devis.getNom()); + DevisPrenom.setText(devis.getPrenom()); + if(DevisAjouterController.TypeClient == 1){ + DevisTextPrenom.setVisible(false); + DevisTextMatricule.setVisible(true); + DevisPrenom.setText(devis.getMatricule()); + } + DevisAdresse.setText(devis.getAdresse()); + DevisTELE1.setText(devis.getTele1()); + DevisTELE2.setText(devis.getTele2()); + + TableViewListeProduitDevis.setItems(devis.getListeproduit()); + } + + + public DevisDialogConfirmationController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisDialogConfirmation.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(DevisDialogConfirmationController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + +} diff --git a/src/main/java/Controllers/DevisClt/DevisImporterController.java b/src/main/java/Controllers/DevisClt/DevisImporterController.java new file mode 100644 index 0000000..27c6ea2 --- /dev/null +++ b/src/main/java/Controllers/DevisClt/DevisImporterController.java @@ -0,0 +1,396 @@ +package Controllers.DevisClt; + +import Controllers.Traitement.MyWindow; +import Models.DevisClt.DevisCltListe; +import Models.DevisClt.DevisDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class DevisImporterController implements Initializable { + + @FXML private AnchorPane anchorpane ; + + @FXML private ProgressBar ProgressBarDevisClt; + + @FXML private Button ButtonSearchDevisClt; + + @FXML public TableView TableViewGestionDevis; + + @FXML public TableColumn TabColCodeDevis; + @FXML public TableColumn TabColModePaiement; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColCodeClient; + @FXML public TableColumn TabColTotalDevis; + @FXML public TableColumn TabColDateCreation ; + @FXML public TableColumn TabColDateFinValidite; + @FXML public TableColumnTabColDetail ; + + @FXML public TextField TextFieldCodeDevis ; + @FXML public TextField TextFieldCodeClient ; + @FXML public DatePicker DatePickerCreation ; + @FXML public TextField TextFieldNomPrenomClient ; + @FXML public TextField TextFieldCinClient; + @FXML public RadioButton RadioComptant; + @FXML public RadioButton RadioFacilite; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + public Node node; + + private Service ThreadSearchDevisCltRechercher; + + public DevisImporterController() { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisImporter.fxml")); + fxmlLoader.setController(this); + node = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(DevisImporterController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewGestionDevis.setEditable(true); + + TabColCodeDevis.setStyle( "-fx-alignment: CENTER;");TabColCodeDevis.getStyleClass().add("Center"); + TabColCodeDevis.setCellValueFactory(new PropertyValueFactory("CodeDevis")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColCodeClient.setStyle( "-fx-alignment: CENTER;");TabColCodeClient.getStyleClass().add("Center"); + TabColCodeClient.setCellValueFactory(new PropertyValueFactory("CodeClient")); + + TabColModePaiement.setStyle( "-fx-alignment: CENTER;");TabColModePaiement.getStyleClass().add("Center"); + TabColModePaiement.setCellValueFactory(new PropertyValueFactory("ModePaiement")); + + TabColTotalDevis.setStyle( "-fx-alignment: CENTER;");TabColTotalDevis.getStyleClass().add("Center"); + TabColTotalDevis.setCellValueFactory(new PropertyValueFactory("TotalDevis")); + + TabColDateCreation.setStyle( "-fx-alignment: CENTER;");TabColDateCreation.getStyleClass().add("Center"); + TabColDateCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColDateFinValidite.setStyle( "-fx-alignment: CENTER;");TabColDateFinValidite.getStyleClass().add("Center"); + TabColDateFinValidite.setCellValueFactory(new PropertyValueFactory("FinValidite")); + + TabColDetail.setSortable(true); + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + + ButtonSearchDevisClt.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchDevisClt(); + } + }); + + anchorpane.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchDevisClt(); + } + } + }); + + GestionSearchDevisClt(); + } + + @FXML + private void QuiterButtonAction(ActionEvent event) throws IOException { + anchorpane.setVisible(false); + } + + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchDevisClt() + { + ProgressBarDevisClt.setVisible(true); + + ButtonSearchDevisClt.setDisable(true); + + ThreadSearchDevisCltRechercher = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListDevisClts = new DevisDB().SearchDevisCltGestion( + position, + nbrligne, + TextFieldCodeDevis.getText(), + TextFieldCodeClient.getText(), + TypeRegement, + DateCreation, + TextFieldNomPrenomClient.getText(), + TextFieldCinClient.getText()); + + TableViewGestionDevis.setItems(ListDevisClts); + + totalcount = new DevisDB().nbrDevisCltGestion(TextFieldCodeDevis.getText(), TextFieldCodeClient.getText(), TypeRegement, DateCreation, TextFieldNomPrenomClient.getText(), TextFieldCinClient.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchDevisCltRechercher.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarDevisClt.setVisible(false); + ButtonSearchDevisClt.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchDevisCltRechercher.start(); + } + + + private void NextLastSearchDevisClt(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarDevisClt.setVisible(true); + + ButtonSearchDevisClt.setDisable(true); + + ThreadSearchDevisCltRechercher = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListDevisClts = new DevisDB().SearchDevisCltGestion(ParmPosition, ParamNbrligne, TextFieldCodeDevis.getText(), TextFieldCodeClient.getText(), TypeRegement, DateCreation, TextFieldNomPrenomClient.getText(), TextFieldCinClient.getText()); + + TableViewGestionDevis.setItems(ListDevisClts); + + return null; + } + }; + } + }; + + ThreadSearchDevisCltRechercher.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarDevisClt.setVisible(false); + ButtonSearchDevisClt.setDisable(false); + } + }); + ThreadSearchDevisCltRechercher.start(); + } + + private void GestionSearchDevisClt() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchDevisClt(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchDevisClt(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchDevisClt(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + + + +} diff --git a/src/main/java/Controllers/DevisClt/ListProduitDevis.java b/src/main/java/Controllers/DevisClt/ListProduitDevis.java new file mode 100644 index 0000000..2f561dd --- /dev/null +++ b/src/main/java/Controllers/DevisClt/ListProduitDevis.java @@ -0,0 +1,118 @@ +/* + * 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 Controllers.DevisClt; + +import Controllers.Traitement.Adaptateur; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author PC-Maher + */ +public class ListProduitDevis { + + + private final SimpleStringProperty reference; + private final SimpleStringProperty designaton; + private final SimpleStringProperty quantite; + private final SimpleStringProperty PrixHT; + private final SimpleStringProperty Remise; + private final SimpleStringProperty TotalHT; + private final SimpleStringProperty TVA; + private final SimpleStringProperty TotalTTC; + + public ListProduitDevis(String reference, String designaton, String quantite, String PrixHT, String Remise, String TotalHT, String TVA, String TotalTTC) { + + if(!reference.isEmpty()){ + + float remise = Adaptateur.ArrondStringToFloat(Remise.replace("%", "")) ; + float prixht = Adaptateur.ArrondStringToFloat(PrixHT) ; + float tva = Adaptateur.StringToFloat(TVA) ; + float qte = Adaptateur.StringToFloat(quantite) ; + float totalht = (prixht - ((prixht * remise)/100))* qte ; + float totalttc = totalht + ((totalht * tva)/100) ; + if(!Remise.contains("%")){ Remise=Remise+"%"; } + if(!TVA.contains("%")){ TVA=TVA+"%"; } + TotalHT = Adaptateur.ArrondFloatToString(totalht); + TotalTTC= Adaptateur.ArrondFloatToString(totalttc); + } + + + this.reference = new SimpleStringProperty(reference); + this.designaton = new SimpleStringProperty(designaton); + this.quantite = new SimpleStringProperty(quantite); + this.PrixHT = new SimpleStringProperty(PrixHT); + this.Remise = new SimpleStringProperty(Remise); + this.TotalHT = new SimpleStringProperty(TotalHT); + this.TVA = new SimpleStringProperty(TVA); + this.TotalTTC = new SimpleStringProperty(TotalTTC); + } + + + + public String getReference() { + return reference.get(); + } + + public void setReference(String Reference) { + reference.set(Reference); + } + + public String getDesignaton() { + return designaton.get(); + } + + public void setDesignaton(String Designaton) { + designaton.set(Designaton); + } + + public String getQuantite() { + return quantite.get(); + } + public void setQuantite(String Quantite) { + quantite.set(Quantite); + } + + public String getPrixHT() { + return PrixHT.get(); + + } + public void setPrixHT(String prixHT) { + PrixHT.set(prixHT); + } + + public String getRemise() { + return Remise.get(); + } + public void setRemise(String remise) { + Remise.set(remise); + } + + public String getTotalHT() { + return TotalHT.get(); + + } + public void setTotalHT(String totalHT) { + TotalHT.set(totalHT); + } + + public String getTVA() { + return TVA.get(); + + } + public void setTVA(String tva) { + TVA.set(tva); + } + + public String getTotalTTC() { + return TotalTTC.get(); + } + + public void setTotalTTC(String totalTTC) { + TotalTTC.set(totalTTC); + } + +} diff --git a/src/main/java/Controllers/Dialog/Dialog.java b/src/main/java/Controllers/Dialog/Dialog.java new file mode 100644 index 0000000..84ccf60 --- /dev/null +++ b/src/main/java/Controllers/Dialog/Dialog.java @@ -0,0 +1,87 @@ +/* + * 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 Controllers.Dialog; + +import Controllers.Traitement.MyWindow; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; + +import javafx.stage.Stage; + +/** + * + * @author Maher + */ +public class Dialog { + + public double Height = MyWindow.myStage.getHeight() ; + public double Width = MyWindow.myStage.getWidth() ; + + @FXML public Text Titre; + @FXML public Text Message; + @FXML public Button Valider; + @FXML public Button Annuler; + @FXML public AnchorPane PaneDialog; + + + public Node DialogNotification() throws IOException{ + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Dialog/DialogNotification.fxml")); + fxmlLoader.setController(this); + Node node = (Node)fxmlLoader.load(); + return node; + } + + public Node DialogAlert() { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Dialog/DialogAlert.fxml")); + fxmlLoader.setController(this); + Node node; + node = (Node)fxmlLoader.load(); + return node; + } catch (IOException ex) { + Logger.getLogger(Dialog.class.getName()).log(Level.SEVERE, null, ex); + } + return null; + } + + public void DefaultAnnuler(){ + Annuler.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + PaneDialog.setVisible(false); + } + }); + } + + + public void Show(Node node) + { + StackPane Sp = new StackPane(); + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + +} diff --git a/src/main/java/Controllers/Dialog/DialogSuccessController.java b/src/main/java/Controllers/Dialog/DialogSuccessController.java new file mode 100644 index 0000000..5f698b7 --- /dev/null +++ b/src/main/java/Controllers/Dialog/DialogSuccessController.java @@ -0,0 +1,62 @@ +/* + * 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 Controllers.Dialog; + +import Controllers.Traitement.MyWindow; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class DialogSuccessController { + + public Node nodeFxml ; + + @FXML public Button Valider; + @FXML public Text Message; + @FXML public AnchorPane PaneDialog; + + + public DialogSuccessController() { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Dialog/DialogSuccess.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(DialogSuccessController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/main/java/Controllers/Dialog/MessageControle.java b/src/main/java/Controllers/Dialog/MessageControle.java new file mode 100644 index 0000000..7c2468b --- /dev/null +++ b/src/main/java/Controllers/Dialog/MessageControle.java @@ -0,0 +1,123 @@ +/* + * 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 Controllers.Dialog; + +import Controllers.Traitement.MyWindow; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.scene.text.TextFlow; +import javafx.stage.Stage; + +/** + * + * @author Maher + */ +public class MessageControle { + + public double Height = MyWindow.myStage.getHeight() ; + public double Width = MyWindow.myStage.getWidth() ; + public Button bouttonNo = new Button(); + public Button bouttonOK = new Button(); + public Text titre = new Text(); + public TextFlow DetailMSG = new TextFlow(); + public Text titreMSG = new Text(); + public Text detail = new Text(); + public StackPane stackpane = new StackPane(); + + + public Node Setnotification(){ + + + Group group = new Group(); + + AnchorPane Ap = new AnchorPane(); + Ap.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + + Pane pa1 = new Pane(); + pa1.setStyle("-fx-background-color:#ffffff; -fx-border-color: #212121; -fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0;"); + pa1.setPrefHeight(200); + pa1.setPrefWidth(497); + + Pane pa2 = new Pane(); + pa2.setStyle("-fx-background-color:linear-gradient(to bottom, #585858, #333333); -fx-background-radius: 10 10 0 0;"); + pa2.setPrefHeight(30); + pa2.setPrefWidth(497); + + Pane pa3 = new Pane(); + pa3.setStyle("-fx-background-color:linear-gradient(to bottom, #E2E2E2, #EDEDED); -fx-border-color: #B4B4B4;"); + pa3.setLayoutY(30); + pa3.setPrefHeight(100); + pa3.setPrefWidth(497); + + titre.setText("Alert Dialog"); + titre.setFont(Font.font("System", FontWeight.BOLD, 13)); + titre.setFill(Color.web("#ffffff")); + titre.setLayoutX(17); + titre.setLayoutY(22); + + Image imgicon = new Image(getClass().getResourceAsStream("/Public/icon/iconalert.png")); + ImageView icon = new ImageView(imgicon); + icon.setLayoutX(410); + icon.setLayoutY(50); + icon.setFitWidth(64); + icon.setFitHeight(64); + + + DetailMSG.setPrefHeight(120); + DetailMSG.setPrefWidth(400); + DetailMSG.setLayoutX(20); + DetailMSG.setLayoutY(60); + + + bouttonOK.setText("Ok"); + bouttonOK.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonOK.setPrefWidth(73); + bouttonOK.setPrefHeight(30); + bouttonOK.setLayoutX(210); + bouttonOK.setLayoutY(150); + + group.getChildren().addAll(pa1, pa2, pa3, titre, icon, DetailMSG, bouttonOK); + + stackpane.setVisible(true); + stackpane.getChildren().add(Ap); + stackpane.getChildren().add(group); + + return stackpane; + + } + + public void ShowNotification() + { + Node node = this.Setnotification(); + + StackPane Sp = new StackPane(); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/main/java/Controllers/Dialog/Notification.java b/src/main/java/Controllers/Dialog/Notification.java new file mode 100644 index 0000000..5139ac5 --- /dev/null +++ b/src/main/java/Controllers/Dialog/Notification.java @@ -0,0 +1,125 @@ +/* + * 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 Controllers.Dialog; + +import Controllers.Traitement.MyWindow; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.scene.text.TextFlow; +import javafx.stage.Stage; + +/** + * + * @author PC-Maher + */ +public class Notification { + public double Height = MyWindow.myStage.getHeight() ; + public double Width = MyWindow.myStage.getWidth() ; + public Button bouttonNo = new Button(); + public Button bouttonOK = new Button(); + public Text titre = new Text(); + public TextFlow DetailMSG = new TextFlow(); + public Text titreMSG = new Text(); + public Text detail = new Text(); + public StackPane stackpane = new StackPane(); + + + + public Node Setnotification(){ + + Group group = new Group(); + + AnchorPane Ap = new AnchorPane(); + Ap.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + + Pane pa1 = new Pane(); + pa1.setStyle("-fx-background-color:#ffffff; -fx-border-color: #212121; -fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0;"); + pa1.setPrefHeight(200); + pa1.setPrefWidth(497); + + Pane pa2 = new Pane(); + pa2.setStyle("-fx-background-color:linear-gradient(to bottom, #585858, #333333); -fx-background-radius: 10 10 0 0;"); + pa2.setPrefHeight(30); + pa2.setPrefWidth(497); + + titre.setText("Dialog de notification"); + titre.setFont(Font.font("System", FontWeight.BOLD, 13)); + titre.setFill(Color.web("#ffffff")); + titre.setLayoutX(17); + titre.setLayoutY(22); + + Image imgicon = new Image(getClass().getResourceAsStream("/Public/icon/dialoginform.png")); + ImageView icon = new ImageView(imgicon); + icon.setLayoutX(20); + icon.setLayoutY(60); + icon.setFitWidth(46); + icon.setFitHeight(50); + + DetailMSG.setPrefHeight(120); + DetailMSG.setPrefWidth(400); + DetailMSG.setLayoutX(80); + DetailMSG.setLayoutY(55); + + bouttonOK.setText("Valider"); + bouttonOK.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonOK.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + bouttonOK.setPrefWidth(73); + bouttonOK.setPrefHeight(30); + bouttonOK.setLayoutX(320); + bouttonOK.setLayoutY(160); + + bouttonNo.setText("Annuler"); + bouttonNo.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonNo.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + bouttonNo.setPrefWidth(73); + bouttonNo.setPrefHeight(30); + bouttonNo.setLayoutX(410); + bouttonNo.setLayoutY(160); + bouttonNo.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + } + }); + + group.getChildren().addAll(pa1, pa2, titre, icon, DetailMSG, bouttonOK, bouttonNo); + + stackpane.setVisible(true); + stackpane.getChildren().add(Ap); + stackpane.getChildren().add(group); + + return stackpane; + } + + public void ShowNotification() + { + Node node = this.Setnotification(); + + StackPane Sp = new StackPane(); + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/main/java/Controllers/Dialog/ShowDialog.java b/src/main/java/Controllers/Dialog/ShowDialog.java new file mode 100644 index 0000000..6bf1159 --- /dev/null +++ b/src/main/java/Controllers/Dialog/ShowDialog.java @@ -0,0 +1,306 @@ +/* + * 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 Controllers.Dialog; + +import Controllers.Traitement.MyWindow; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.scene.text.TextFlow; +import javafx.stage.Stage; + +/** + * + * @author Maher + */ +public class ShowDialog{ + + public static String titre ; + public static String detail ; + + public static String getTitre() { + return titre; + } + + public static String getDetail() { + return detail; + } + + public static void setTitre(String titre) { + ShowDialog.titre = titre; + } + + public static void setDetail(String detail) { + ShowDialog.detail = detail; + } + + + public Node DialogAlert(String MsgTitre, String MsgDetail){ + + final StackPane stackpane = new StackPane(); + Group group = new Group(); + + AnchorPane Ap = new AnchorPane(); + Ap.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + Ap.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler() { + @Override + public void handle(MouseEvent mouseEvent) { + System.out.println("mouse click detected! "); + } + }); + + + Pane pa1 = new Pane(); + pa1.setStyle("-fx-background-color:#ffffff; -fx-border-color: #212121; -fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0;"); + pa1.setPrefHeight(231); + pa1.setPrefWidth(497); + + Pane pa2 = new Pane(); + pa2.setStyle("-fx-background-color:linear-gradient(to bottom, #585858, #333333); -fx-background-radius: 10 10 0 0;"); + pa2.setPrefHeight(36); + pa2.setPrefWidth(497); + + Text titre = new Text(); + titre.setText("Exception Dialog"); + titre.setFont(Font.font("System", FontWeight.BOLD, 13)); + titre.setFill(Color.web("#ffffff")); + titre.setLayoutX(17); + titre.setLayoutY(22); + + Pane pa3 = new Pane(); + pa3.setStyle("-fx-background-color:linear-gradient(to bottom, #E2E2E2, #EDEDED); -fx-border-color: #B4B4B4;"); + pa3.setLayoutY(36); + pa3.setPrefHeight(48); + pa3.setPrefWidth(497); + + //Image imgicon = new Image(getClass().getResourceAsStream("/Public/icon/dialoginform.png")); + //ImageView icon = new ImageView(imgicon); + Image image = new Image(getClass().getResourceAsStream("/Public/icon/dialog_error.png")); + ImageView icon = new ImageView(image); + icon.setLayoutX(440); + icon.setLayoutY(40); + icon.setFitWidth(38); + icon.setFitHeight(38); + + Text titreMSG = new Text(); + titreMSG.setText(MsgTitre); + titreMSG.setFont(Font.font("System", FontWeight.NORMAL, 13)); + titreMSG.setFill(Color.web("#000000")); + titreMSG.setLayoutX(27); + titreMSG.setLayoutY(65); + + Text detail = new Text(); + detail.setText(MsgDetail); + detail.setFont(Font.font("System", FontWeight.NORMAL, 12)); + detail.setFill(Color.web("#000000")); + TextFlow DetailMSG = new TextFlow(detail); + DetailMSG.setPrefHeight(92); + DetailMSG.setPrefWidth(344); + DetailMSG.setLayoutX(28); + DetailMSG.setLayoutY(95); + + + Button boutton = new Button(); + boutton.setText("Valider"); + boutton.setFont(Font.font ("System", FontWeight.BOLD, 12)); + boutton.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + boutton.setPrefWidth(84); + boutton.setPrefHeight(31); + boutton.setLayoutX(388); + boutton.setLayoutY(186); + boutton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + } + }); + + + group.getChildren().addAll(pa1, pa2, titre, pa3, titreMSG, icon, DetailMSG, boutton); + + + + + stackpane.getChildren().add(Ap); + stackpane.getChildren().add(group); + + + + + return stackpane ; + } + + + public Node DialogNotification(String MsgTitre, String MsgDetail){ + + final StackPane stackpane = new StackPane(); + Group group = new Group(); + + AnchorPane Ap = new AnchorPane(); + Ap.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + Ap.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler() { + @Override + public void handle(MouseEvent mouseEvent) { + System.out.println("mouse click detected! "); + } + }); + + + Pane pa1 = new Pane(); + pa1.setStyle("-fx-background-color:#ffffff; -fx-border-color: #212121; -fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0;"); + pa1.setPrefHeight(231); + pa1.setPrefWidth(497); + + Pane pa2 = new Pane(); + pa2.setStyle("-fx-background-color:linear-gradient(to bottom, #585858, #333333); -fx-background-radius: 10 10 0 0;"); + pa2.setPrefHeight(36); + pa2.setPrefWidth(497); + + Text titre = new Text(); + titre.setText("Dialog de notification"); + titre.setFont(Font.font("System", FontWeight.BOLD, 13)); + titre.setFill(Color.web("#ffffff")); + titre.setLayoutX(17); + titre.setLayoutY(22); + + Pane pa3 = new Pane(); + pa3.setStyle("-fx-background-color:linear-gradient(to bottom, #E2E2E2, #EDEDED); -fx-border-color: #B4B4B4;"); + pa3.setLayoutY(36); + pa3.setPrefHeight(48); + pa3.setPrefWidth(497); + + Image image = new Image(getClass().getResourceAsStream("/Public/icon/dialog_notification.png")); + ImageView icon = new ImageView(image); + icon.setLayoutX(440); + icon.setLayoutY(40); + icon.setFitWidth(40); + icon.setFitHeight(40); + + Text titreMSG = new Text(); + titreMSG.setText(MsgTitre); + titreMSG.setFont(Font.font("System", FontWeight.NORMAL, 16)); + titreMSG.setFill(Color.web("#000000")); + titreMSG.setLayoutX(27); + titreMSG.setLayoutY(65); + + Text detail = new Text(); + detail.setText(MsgDetail); + detail.setFont(Font.font("System", FontWeight.NORMAL, 15)); + detail.setFill(Color.web("#000000")); + TextFlow DetailMSG = new TextFlow(detail); + DetailMSG.setPrefHeight(92); + DetailMSG.setPrefWidth(344); + DetailMSG.setLayoutX(28); + DetailMSG.setLayoutY(95); + + + + Button bouttonOK = new Button(); + bouttonOK.setText("Valider"); + bouttonOK.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonOK.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + bouttonOK.setPrefWidth(73); + bouttonOK.setPrefHeight(28); + bouttonOK.setLayoutX(300); + bouttonOK.setLayoutY(186); + bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + } + }); + + + Button bouttonNo = new Button(); + bouttonNo.setText("Annuler"); + bouttonNo.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonNo.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + bouttonNo.setPrefWidth(73); + bouttonNo.setPrefHeight(28); + bouttonNo.setLayoutX(400); + bouttonNo.setLayoutY(186); + bouttonNo.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + } + }); + + group.getChildren().addAll(pa1, pa2, titre, pa3, titreMSG, icon, DetailMSG, bouttonOK, bouttonNo); + + + + + stackpane.getChildren().add(Ap); + stackpane.getChildren().add(group); + + + + + return stackpane ; + } + + public void ShowAletDialog() + { + Node node = DialogAlert(titre, detail); + + StackPane Sp = new StackPane(); + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + public void ShowNotificationDialog(String Titre, String Detail) + { + Node node = DialogNotification(Titre, Detail); + + StackPane Sp = new StackPane(); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + public void Show(Node node) + { + StackPane Sp = new StackPane(); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/main/java/Controllers/FactureClt/FactureCltAjouterController.java b/src/main/java/Controllers/FactureClt/FactureCltAjouterController.java new file mode 100644 index 0000000..2d455aa --- /dev/null +++ b/src/main/java/Controllers/FactureClt/FactureCltAjouterController.java @@ -0,0 +1,416 @@ +package Controllers.FactureClt; + + +import Models.CommandeClt.CommandeCltDB; +import Models.CommandeClt.CommandeCltListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FactureCltAjouterController implements Initializable { + + @FXML private AnchorPane PaneFactCltAjouter ; + + @FXML private ProgressBar ProgressBarFactureCltCommande; + + @FXML private Button ButtonSearchFactureCltCommande ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0 ; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + @FXML public TableView TableViewGestionCommande; + + @FXML public TableColumn TabColCodeCommande; + @FXML public TableColumn TabColModePaiement; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColCodeClient; + @FXML public TableColumn TabColTotalCommande; + @FXML public TableColumn TabColDateCreation ; + @FXML public TableColumnTabColAction ; + + @FXML public TextField TextFieldCodeCommande; + @FXML public TextField TextFieldCodeClient; + @FXML public TextField TextFieldNameClient; + @FXML public TextField TextFieldCodeDevis; + @FXML public DatePicker DatePickerCreation; + @FXML public RadioButton RadioComptant; + @FXML public RadioButton RadioFacilite; + + private Service ThreadSearchFactureCltCommande; + + @Override + public void initialize(URL url, ResourceBundle rb) { + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewGestionCommande.setEditable(true); + + TabColCodeCommande.setStyle( "-fx-alignment: CENTER;");TabColCodeCommande.getStyleClass().add("Center"); + TabColCodeCommande.setCellValueFactory(new PropertyValueFactory("CodeCommande")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColCodeClient.setStyle( "-fx-alignment: CENTER;");TabColCodeClient.getStyleClass().add("Center"); + TabColCodeClient.setCellValueFactory(new PropertyValueFactory("CodeClient")); + + TabColModePaiement.setStyle( "-fx-alignment: CENTER;");TabColModePaiement.getStyleClass().add("Center"); + TabColModePaiement.setCellValueFactory(new PropertyValueFactory("ModePaiement")); + + TabColTotalCommande.setStyle( "-fx-alignment: CENTER;");TabColTotalCommande.getStyleClass().add("Center"); + TabColTotalCommande.setCellValueFactory(new PropertyValueFactory("TotalCommande")); + + TabColDateCreation.setStyle( "-fx-alignment: CENTER;");TabColDateCreation.getStyleClass().add("Center"); + TabColDateCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColAction.setSortable(true); + TabColAction.setStyle( "-fx-alignment: CENTER;");TabColAction.getStyleClass().add("Center"); + TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + ButtonSearchFactureCltCommande.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureCltCommande(); + } + }); + + PaneFactCltAjouter.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchFactureCltCommande(); + } + } + }); + + RadioComptant.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureCltCommande(); + } + }); + + RadioFacilite.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureCltCommande(); + } + }); + + GestionSearchFactureCltCommande(); + + } + + + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconedit.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + // get Selected Item + CommandeCltListe current = (CommandeCltListe) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String codeCommande = current.getCodeCommande(); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltAjouterDetailSelect.fxml")); + Parent NodeDetailSelect = (Parent)fxmlLoader.load(); + FactureCltAjouterDetailSelectController FactureCltAjouterDetailSelect = fxmlLoader.getController(); + FactureCltAjouterDetailSelect.setDataCommande(codeCommande); + PaneFactCltAjouter.getChildren().clear(); + PaneFactCltAjouter.getChildren().add(NodeDetailSelect); + } catch (IOException ex) { + Logger.getLogger(FactureCltAjouterController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchFactureCltCommande() + { + ProgressBarFactureCltCommande.setVisible(true); + + ButtonSearchFactureCltCommande.setDisable(true); + + ThreadSearchFactureCltCommande = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListFactureCltCommandes = new CommandeCltDB().SearchCommande( + position, + nbrligne, + TypeRegement, + TextFieldCodeCommande.getText(), + TextFieldCodeClient.getText(), + TextFieldNameClient.getText(), + TextFieldCodeDevis.getText(), + DateCreation); + + TableViewGestionCommande.setItems(ListFactureCltCommandes); + + totalcount = new CommandeCltDB().nbrSearchCommande(TypeRegement, TextFieldCodeCommande.getText(), TextFieldCodeClient.getText(), TextFieldNameClient.getText(), TextFieldCodeDevis.getText(), DateCreation); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchFactureCltCommande.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureCltCommande.setVisible(false); + ButtonSearchFactureCltCommande.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchFactureCltCommande.start(); + } + + + private void NextLastSearchFactureCltCommande(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarFactureCltCommande.setVisible(true); + + ButtonSearchFactureCltCommande.setDisable(true); + + ThreadSearchFactureCltCommande = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(DatePickerCreation.getValue() != null){ + DateCreation = DatePickerCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListFactureCltCommandes = new CommandeCltDB().SearchCommande(ParmPosition, ParamNbrligne, TypeRegement, TextFieldCodeCommande.getText(), TextFieldCodeClient.getText(), TextFieldNameClient.getText(), TextFieldCodeDevis.getText(), DateCreation); + + TableViewGestionCommande.setItems(ListFactureCltCommandes); + + return null; + } + }; + } + }; + + ThreadSearchFactureCltCommande.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureCltCommande.setVisible(false); + ButtonSearchFactureCltCommande.setDisable(false); + } + }); + ThreadSearchFactureCltCommande.start(); + } + + private void GestionSearchFactureCltCommande() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchFactureCltCommande(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchFactureCltCommande(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchFactureCltCommande(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/FactureClt/FactureCltAjouterDetailSelectController.java b/src/main/java/Controllers/FactureClt/FactureCltAjouterDetailSelectController.java new file mode 100644 index 0000000..9c9aec3 --- /dev/null +++ b/src/main/java/Controllers/FactureClt/FactureCltAjouterDetailSelectController.java @@ -0,0 +1,184 @@ +package Controllers.FactureClt; + +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import Controllers.Traitement.ParametreSystem; +import Models.CommandeClt.CommandeClt; +import Models.CommandeClt.CommandeCltDB; +import Models.FactureClt.FactureClt; +import Models.User.User; +import java.io.IOException; +import java.net.URL; +import java.util.Date; +import java.util.ResourceBundle; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FactureCltAjouterDetailSelectController implements Initializable { + + @FXML private AnchorPane AnchorPaneFactAddDetailSelect ; + + private String TypeRegement; + public CommandeClt Commande; + public FactureClt Facture = new FactureClt(); + @FXML private Text InfoCltNom ; + @FXML private Text InfoCltPrenom ; + @FXML private Text InfoCltAdress ; + @FXML private Text InfoCommCode ; + @FXML private Text InfoCommDateCreation ; + @FXML private Text InfoCommTypeReglement ; + @FXML private Text InfoCommTotalTVA ; + @FXML private Text InfoCommRemise ; + @FXML private Text InfoCommTotalHTNet ; + @FXML private Text InfoCommNetAPayer ; + @FXML private Text TextPrenomMatricule; + + @FXML private TableView TableViewListeProduitCommClt ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignaton; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TableViewListeProduitCommClt.setEditable(false); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + } + + public void setDataCommande(String CodeCommande){ + CommandeCltDB CommandeDB = new CommandeCltDB(); + Commande = CommandeDB.getCommandeClt(CodeCommande); + + if(Commande.getTypeClient()==0){ + InfoCltNom.setText(Commande.CltPersonne.getNom()); + InfoCltPrenom.setText(Commande.CltPersonne.getPrenom()); + InfoCltAdress.setText(Commande.CltPersonne.getAdresse()); + } + + if(Commande.getTypeClient()==1){ + InfoCltNom.setText(Commande.CltEntreprise.getNom()); + InfoCltPrenom.setText(Commande.CltEntreprise.getMatricule()); + InfoCltAdress.setText(Commande.CltEntreprise.getAdresse()); + TextPrenomMatricule.setText("Matricule"); + } + + if(Commande.getTypeClient()==2){ + InfoCltNom.setText(Commande.CltPassager.getNom()); + InfoCltPrenom.setText(Commande.CltPassager.getPrenom()); + InfoCltAdress.setText(Commande.CltPassager.getAdresse()); + } + + //Adaptateur.StringToStringEspaceCurrency() + InfoCommCode.setText(Commande.getCodecommandeclt()); + InfoCommDateCreation.setText(Adaptateur.NormalDateFormat(Commande.getDate())); + InfoCommTypeReglement.setText(Commande.getTypeRegementString()); + TypeRegement = Commande.getTypeRegement(); + InfoCommTotalTVA.setText(Adaptateur.StringToStringEspaceCurrency(Commande.getTotalTVA())); + InfoCommRemise.setText(Adaptateur.StringToStringEspaceCurrency(Commande.getRemise())); + InfoCommTotalHTNet.setText(Adaptateur.StringToStringEspaceCurrency(Commande.getTotalHorsTaxNet())); + InfoCommNetAPayer.setText(Adaptateur.StringToStringEspaceCurrency(Commande.getNetAPayer())); + TableViewListeProduitCommClt.setItems(Commande.getListeproduit()); + this.SetDataFacture(); + } + + public void SetDataFacture(){ + Facture.setIdCommandeClt(Commande.getCodecommandeclt()); + Facture.setIdBonLivraisonClt(Commande.getCodeBonLivraison()); + + Facture.setTypeClient(Commande.getTypeClient()); + + 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.setDateFacture(new Date().toString()); + Facture.setTypeRegement(Commande.getTypeRegement()); + Facture.setNetAPayer(Commande.getNetAPayer()); + Facture.setTotalTVA(Commande.getTotalTVA()); + Facture.setTotalHorsTaxNet(Commande.getTotalHorsTaxNet()); + Facture.setRemise(Commande.getRemise()); + Facture.setTimbre(Commande.getTimbre()); + Facture.setDevise(Commande.getCodeDevis()); + Facture.setCodeUser(User.idprofile); + } + + + //Boutton Présédent + @FXML + private void FactureCltAjouterButtonAction(ActionEvent event) throws IOException { + AnchorPaneFactAddDetailSelect.getChildren().clear(); + AnchorPaneFactAddDetailSelect.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/FactureClt/FactureCltAjouter.fxml"))); + } + + //Boutton Suivant + @FXML + private void FactureCltPaiementButtonAction(ActionEvent event) throws IOException { + AnchorPaneFactAddDetailSelect.getChildren().clear(); + if(TypeRegement.equals("0")){ + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltAjouterPaiementComptent.fxml")); + Parent NodeAjouterPaiementComptent = (Parent)fxmlLoader.load(); + FactureCltAjouterPaiementComptentController FactureCltAjouterPaiementComptent = fxmlLoader.getController(); + FactureCltAjouterPaiementComptent.commande = Commande; + FactureCltAjouterPaiementComptent.TextNetaPayer.setText(Adaptateur.StringToStringEspaceCurrency(Commande.getNetAPayer())); + AnchorPaneFactAddDetailSelect.getChildren().add(NodeAjouterPaiementComptent); + } + else if(TypeRegement.equals("1")){ + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltAjouterPaiementFacilite.fxml")); + Parent NodeAjouterPaiementFacilite= (Parent)fxmlLoader.load(); + FactureCltAjouterPaiementFaciliteController FactureCltAjouterPaiementFacilite= fxmlLoader.getController(); + FactureCltAjouterPaiementFacilite.commande = Commande; + FactureCltAjouterPaiementFacilite.Facture = Facture; + FactureCltAjouterPaiementFacilite.TextNetaPayer.setText(Adaptateur.StringToStringEspaceCurrency(Commande.getNetAPayer())); + AnchorPaneFactAddDetailSelect.getChildren().add(NodeAjouterPaiementFacilite); + } + } + +} \ No newline at end of file diff --git a/src/main/java/Controllers/FactureClt/FactureCltAjouterDetailTraiteController.java b/src/main/java/Controllers/FactureClt/FactureCltAjouterDetailTraiteController.java new file mode 100644 index 0000000..95594d4 --- /dev/null +++ b/src/main/java/Controllers/FactureClt/FactureCltAjouterDetailTraiteController.java @@ -0,0 +1,209 @@ +/* + * 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 Controllers.FactureClt; + +import Controllers.Traitement.ParametreSystem; +import Models.CommandeClt.CommandeClt; +import Models.FactureClt.FactureClt; +import Models.ChequeClt.ChequeList; +import Models.FactureClt.FactureCltChequeListe; +import Models.FactureClt.FactureCltDB; +import Models.TraiteClt.TraiteList; +import Models.FactureClt.FactureCltTraiteListe; +import Models.ChequeClt.ChequeClt; +import Models.TraiteClt.TraiteClt; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.ResourceBundle; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * + * @author PC-Maher + */ +public class FactureCltAjouterDetailTraiteController implements Initializable { + + @FXML private AnchorPane PaneFactureCltAjouterDetailTraite; + + @FXML public AnchorPane PaneTableViewTraites ; + @FXML public AnchorPane PaneTableViewCheques; + + @FXML public Text TextNom ; + @FXML public Text TextPrenomMatricule; + @FXML public Text TextPrenom ; + @FXML public Text TextAdress ; + + @FXML public Text TextAvance ; + @FXML public Text TextTypeReglement ; // Traite | Cheque + @FXML public Text TextMontantInteret ; + + + @FXML public Text TextDetail ; + @FXML public Text TextNbrTraite ; + @FXML public Text TextBanque ; + @FXML public Text Banque ; + @FXML public Text TextMontantTraite ; + @FXML public Text ValMontantTraite; + @FXML public TableView TableViewListeTraites ; + @FXML public TableColumn TabColDateTraites; + @FXML public TableColumn TabColMontantTraites; + + @FXML public TableView TableViewListeCheques ; + @FXML public TableColumn TabColDateCheques; + @FXML public TableColumn TabColNumeroCheques; + @FXML public TableColumn TabColBanqueCheques; + @FXML public TableColumn TabColMontantCheques; + + final ObservableList dataListe = FXCollections.observableArrayList(); + final ObservableList dataListeCheque = FXCollections.observableArrayList(); + + public ObservableList data_List_Traite = FXCollections.observableArrayList(); + public ObservableList data_List_Cheque = FXCollections.observableArrayList(); + + public boolean TypeFacilite = true; // True Traite | False Cheque + + public CommandeClt commande; + public FactureClt Facture ; + public String TextTauxInteret; + public String Net_A_Payer; + public String Avance ; + + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColDateTraites.setStyle( "-fx-alignment: CENTER;"); + TabColDateTraites.getStyleClass().add("Center"); + TabColDateTraites.setCellValueFactory(new PropertyValueFactory("DateTraites")); + + TabColMontantTraites.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraites.getStyleClass().add("Center"); + TabColMontantTraites.setCellValueFactory(new PropertyValueFactory("MontantTraites")); + + TabColDateCheques.setStyle( "-fx-alignment: CENTER;"); + TabColDateCheques.getStyleClass().add("Center"); + TabColDateCheques.setCellValueFactory(new PropertyValueFactory("DateCheques")); + + TabColNumeroCheques.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheques.getStyleClass().add("Center"); + TabColNumeroCheques.setCellValueFactory(new PropertyValueFactory("NumeroCheques")); + + TabColBanqueCheques.setStyle( "-fx-alignment: CENTER;"); + TabColBanqueCheques.getStyleClass().add("Center"); + TabColBanqueCheques.setCellValueFactory(new PropertyValueFactory("BanqueCheques")); + + TabColMontantCheques.setStyle( "-fx-alignment: CENTER;"); + TabColMontantCheques.getStyleClass().add("Center"); + TabColMontantCheques.setCellValueFactory(new PropertyValueFactory("MontantCheques")); + + + } + public void SetDataTraiteFacilite(FactureClt facture){ + this.Facture = facture; + TextAvance.setText(Facture.getAvance()+" "+ParametreSystem.CurrencySign); + TextMontantInteret.setText(Facture.getMontantInteret()); + ValMontantTraite.setText(Facture.getTotalMontantTraite()+" "+ParametreSystem.CurrencySign); + TextNbrTraite.setText(Facture.getNbrTraite()); + TextTauxInteret = Facture.getTauxInteret(); + Net_A_Payer = Facture.getNetAPayer(); + TypeFacilite = Facture.getTypeFaciliteBoolean(); + if(TypeFacilite == true){ + TextTypeReglement.setText("Traite"); + PaneTableViewCheques.setVisible(false); + PaneTableViewTraites.setVisible(true); + TextMontantTraite.setText("Montant Traite:"); + ArrayList ListTraites = Facture.getListeTraites(); + for(int i=0; i dataListCheque = Facture.getListeCheques(); + TextBanque.setText( dataListCheque.get(0).getBanqueChequeClt()); + for(int i=0; i TableViewListeTraite ; + @FXML public TableColumn TabColDateTraite; + @FXML public TableColumn TabColMontantTraite; + + @FXML public TableView TableViewListeCheque ; + @FXML public TableColumn TabColDateCheque; + @FXML public TableColumn TabColNumeroCheque; + @FXML public TableColumn TabColBanqueCheque; + @FXML public TableColumn TabColMontantCheque; + + public CommandeClt commande; + public FactureClt Facture ; + public boolean TypeSelect = true; // True Traite | False Cheque + + float NetaPayer, TotalMontantTraite, MontantInteret, Avance, NbrTraite, TauxIntere; + + public ObservableList dataList = FXCollections.observableArrayList(); + public ObservableList 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("MontantTraite")); + TabColMontantTraite.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColMontantTraite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("date")); + TabColDateTraite.setEditable(true); + + TabColDateTraite.setCellFactory(new Callback() { + @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("NumeroCheque")); + TabColNumeroCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColNumeroCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("BanqueCheque")); + TabColBanqueCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColBanqueCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String NewBanque = t.getNewValue(); + if(t.getTablePosition().getRow() == 0){ + int indise = 0; + while(indise("MontantCheque")); + TabColMontantCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColMontantCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("date")); + TabColDateCheque.setEditable(true); + TabColDateCheque.setCellFactory(new Callback() { + @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 ListTraites = new ArrayList(); + for(int i=0; i ListCheque = new ArrayList(); + for(int i=0; i() { + @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() { + @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() { + @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() { + @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() { + @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() { + @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; + } + } +} diff --git a/src/main/java/Controllers/FactureClt/FactureCltDetailController.java b/src/main/java/Controllers/FactureClt/FactureCltDetailController.java new file mode 100644 index 0000000..49bc743 --- /dev/null +++ b/src/main/java/Controllers/FactureClt/FactureCltDetailController.java @@ -0,0 +1,363 @@ +package Controllers.FactureClt; + +import Controllers.TraiteClt.TraiteCltPrintController; +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import Models.FactureClt.FactureClt; +import Models.FactureClt.FactureCltChequeListe; +import Models.FactureClt.FactureCltDB; +import Models.FactureClt.FactureCltTraiteListe; +import Models.ChequeClt.ChequeClt; +import Models.TraiteClt.TraiteClt; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URL; +import java.util.ArrayList; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.JobSettings; +import javafx.print.PageLayout; +import javafx.print.PageOrientation; +import javafx.print.PageRange; +import javafx.print.Paper; +import javafx.print.Printer; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.Tab; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author PC-Maher + */ +public class FactureCltDetailController implements Initializable{ + + @FXML public AnchorPane PaneSucces; + + @FXML public AnchorPane AnchorPaneLoading; + @FXML public AnchorPane AnchorPaneDetailFactureClt; + + @FXML private Text DateCreation; + @FXML private Text Reglement; + @FXML private Text NetAPayer; + @FXML private Text TotalHorsTaxNet; + @FXML private Text TotalTVA; + @FXML private Text CodeFactClt; + + @FXML private Text TypeClt; + @FXML private Text Nom; + @FXML private Text Prenom; + @FXML private Text Adresse; + @FXML private Text TELE1; + @FXML private Text TELE2; + + @FXML private Text TextPrenom ; + @FXML private Text TextMatricule ; + + @FXML private Text TextMontant; + @FXML private Text ValMontant; + + + @FXML private TableView TableViewListeProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + + @FXML private TableView TableViewListeTraites ; + @FXML private TableColumn TabColDateTraites; + @FXML private TableColumn TabColMontantTraites; + + @FXML private TableView TableViewListeCheques ; + @FXML private TableColumn TabColDateCheques; + @FXML private TableColumn TabColNumeroCheques; + @FXML private TableColumn TabColBanqueCheques; + @FXML private TableColumn TabColMontantCheques; + + @FXML public Button ButtonImprimerTraite; + @FXML private Tab TabTypeRegement; + + private Service ThreadFactureCltDetail; + + FactureClt factureClt; + + public String codeFactClt; + + public boolean NewFacture; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TableViewListeProduit.setEditable(false); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColDateTraites.setStyle( "-fx-alignment: CENTER;"); + TabColDateTraites.getStyleClass().add("Center"); + TabColDateTraites.setCellValueFactory(new PropertyValueFactory("DateTraites")); + + TabColMontantTraites.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraites.getStyleClass().add("Center"); + TabColMontantTraites.setCellValueFactory(new PropertyValueFactory("MontantTraites")); + + TabColDateCheques.setStyle( "-fx-alignment: CENTER;"); + TabColDateCheques.getStyleClass().add("Center"); + TabColDateCheques.setCellValueFactory(new PropertyValueFactory("DateCheques")); + + TabColNumeroCheques.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheques.getStyleClass().add("Center"); + TabColNumeroCheques.setCellValueFactory(new PropertyValueFactory("NumeroCheques")); + + TabColBanqueCheques.setStyle( "-fx-alignment: CENTER;"); + TabColBanqueCheques.getStyleClass().add("Center"); + TabColBanqueCheques.setCellValueFactory(new PropertyValueFactory("BanqueCheques")); + + TabColMontantCheques.setStyle( "-fx-alignment: CENTER;"); + TabColMontantCheques.getStyleClass().add("Center"); + TabColMontantCheques.setCellValueFactory(new PropertyValueFactory("MontantCheques")); + + + ButtonPrintTraite(); + + + } + + + @FXML + private void FactureCltPrintButtonAction(ActionEvent event) throws IOException { + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + try { + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, 1)); + + if (jobPrint.showPrintDialog(null)) { + + FXMLLoader fxmlLoaderPrintFactureClt = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltPrint.fxml")); + final Node ParentFxmlPrintFactureClt = (Node)fxmlLoaderPrintFactureClt.load(); + FactureCltPrintController PrintFactureClt = fxmlLoaderPrintFactureClt.getController(); + + if(NewFacture){ + PrintFactureClt.setFactureClt(factureClt, false); + }else{ + PrintFactureClt.setFactureClt(factureClt, true); + } + + jobPrint.printPage(ParentFxmlPrintFactureClt); + + jobPrint.endJob(); + } + } catch (IOException ex) { + System.err.println("Erreur dans: Controllers.FactureClt.FactureCltDetailController.FactureCltPrintButtonAction "); + System.err.println(ex.getMessage()); + } + } + + public void SowDetailFactureClt(boolean newFacture) + { + ThreadFactureCltDetail = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + NewFacture = newFacture; + FactureCltDB factureCltDB = new FactureCltDB(); + + factureClt = factureCltDB.getFactureClt(codeFactClt); + + + return null; + } + }; + } + }; + + ThreadFactureCltDetail.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + CodeFactClt.setText(factureClt.getCodeFactureClt()); + DateCreation.setText(Adaptateur.NormalDateFormat(factureClt.getDateFacture())); + Reglement.setText(factureClt.getTypeRegementString()); + TotalHorsTaxNet.setText(Adaptateur.StringToStringEspaceCurrency(factureClt.getTotalHorsTaxNet())); + TotalTVA.setText(Adaptateur.StringToStringEspaceCurrency(factureClt.getTotalTVA())); + TypeClt.setText(factureClt.getTypeClientString()); + NetAPayer.setText(Adaptateur.StringToStringEspaceCurrency(factureClt.getNetAPayer())); + + if(factureClt.getTypeClient()==0 ){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + + Nom.setText(factureClt.CltPersonne.getNom()); + Prenom.setText(factureClt.CltPersonne.getPrenom()); + Adresse.setText(factureClt.CltPersonne.getAdresse()); + TELE1.setText(factureClt.CltPersonne.getTelemobileString()); + TELE2.setText(factureClt.CltPersonne.getTelefixString()); + } + + if(factureClt.getTypeClient()==1){ + TextPrenom.setVisible(false); + TextMatricule.setVisible(true); + + Nom.setText(factureClt.CltEntreprise.getNom()); + Prenom.setText(factureClt.CltEntreprise.getMatricule()); + Adresse.setText(factureClt.CltEntreprise.getAdresse()); + TELE1.setText(factureClt.CltEntreprise.getTele1String()); + TELE2.setText(factureClt.CltEntreprise.getTele2String()); + } + + if(factureClt.getTypeClient()==2 ){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + + Nom.setText(factureClt.CltPassager.getNom()); + Prenom.setText(factureClt.CltPassager.getPrenom()); + Adresse.setText(factureClt.CltPassager.getAdresse()); + TELE1.setText(factureClt.CltPassager.getTelefixString()); + TELE2.setText(factureClt.CltPassager.getTelemobileString()); + } + TableViewListeProduit.setItems(factureClt.getListeproduit()); + + if(factureClt.getTypeRegementInteger() == 1) + { + ValMontant.setText(Adaptateur.StringToStringEspaceCurrency(factureClt.getTotalMontantTraite())); + TabTypeRegement.setClosable(false); + TabTypeRegement.setDisable(false); + if(factureClt.getTypeFaciliteBoolean()){ //true Traite | false Cheque + TabTypeRegement.setText("Liste des traites"); + TextMontant.setText("Total Montant Traites:"); + TableViewListeTraites.setVisible(true); + //ButtonImprimerTraite.setVisible(true); + ObservableList dataListe = FXCollections.observableArrayList(); + ArrayList ListTraites = factureClt.getListeTraites(); + for(int i=0; i dataListCheque = factureClt.getListeCheques(); + ObservableList dataListeCheque = FXCollections.observableArrayList(); + for(int i=0; i() { + @Override + public void handle(ActionEvent e) { + ArrayList ListTraites = factureClt.getListeTraites(); + String strCIN= ""; + String strNomComplet = ""; + + if(factureClt.getTypeClient() == 0){ + strCIN = factureClt.getCltPersonne().getCinString(); + strNomComplet = factureClt.getCltPersonne().getNomcomplet(); + }else if(factureClt.getTypeClient() == 1){ + strCIN = factureClt.getCltEntreprise().getMatricule(); + strNomComplet = factureClt.getCltEntreprise().getNom(); + } + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/TraiteClt/TraiteCltPrint.fxml")); + try { + Parent FxmlPrintTraite = (Parent)fxmlLoader.load(); + TraiteCltPrintController TraiteCltPrint = fxmlLoader.getController(); + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + Printer printer = Printer.getDefaultPrinter(); + PageLayout pageLayout = printer.createPageLayout(Paper.NA_LETTER,PageOrientation.PORTRAIT, 0, 0, 0, 0); + JobSettings jobSettings = jobPrint.getJobSettings(); + jobSettings.setPageLayout(pageLayout); + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, ListTraites.size())); + if (jobPrint.showPrintDialog(null)) + { + for(int i=0; i TableViewListeProduitPassCommClt ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignaton; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + Enregister.setGraphic(buttonGraphic); + + + } + + + public void GetFactureClt(FactureClt factureclt){ + DateCreation.setText(factureclt.getDateFacture()); + Reglement.setText(factureclt.getTypeRegement()); + + NetAPayer.setText(factureclt.getNetAPayer()); + TotalHorsTaxNet.setText(factureclt.getTotalHorsTaxNet()); + TotalTVA.setText(factureclt.getTotalTVA()); + + TypeClt.setText(factureclt.getTypeClientString()); + + /* + if(FactureCltAjouterController.TypeClient == 0){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + Nom.setText(factureclt.CltPersonne.getNom()); + Prenom.setText(factureclt.CltPersonne.getPrenom()); + Adresse.setText(factureclt.CltPersonne.getAdresse()); + TELE1.setText(factureclt.CltPersonne.getTelefixString()); + TELE2.setText(factureclt.CltPersonne.getTelemobileString()); + } + else if(FactureCltAjouterController.TypeClient == 1){ + TextPrenom.setVisible(false); + TextMatricule.setVisible(true); + Prenom.setText(factureclt.CltEntreprise.getMatricule()); + Adresse.setText(factureclt.CltEntreprise.getAdresse()); + TELE1.setText(factureclt.CltEntreprise.getTele1().toString()); + TELE2.setText(factureclt.CltEntreprise.getTele2().toString()); + } + else if(FactureCltAjouterController.TypeClient == 2){ + TextPrenom.setVisible(true); + TextMatricule.setVisible(false); + Nom.setText(factureclt.CltPassager.getNom()); + Prenom.setText(factureclt.CltPassager.getPrenom()); + Adresse.setText(factureclt.CltPassager.getAdresse()); + TELE1.setText(factureclt.CltPassager.getTelefix().toString()); + TELE2.setText(factureclt.CltPassager.getTelemobile().toString()); + } + */ + TableViewListeProduitPassCommClt.setItems(factureclt.getListeproduit()); + } + + + public FactureCltDialogConfirmationController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltDialogConfirmation.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(FactureCltDialogConfirmationController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } +} diff --git a/src/main/java/Controllers/FactureClt/FactureCltGestionController.java b/src/main/java/Controllers/FactureClt/FactureCltGestionController.java new file mode 100644 index 0000000..1f936af --- /dev/null +++ b/src/main/java/Controllers/FactureClt/FactureCltGestionController.java @@ -0,0 +1,454 @@ +package Controllers.FactureClt; + +import Models.FactureClt.FactureCltDB; +import javafx.collections.FXCollections; +import Models.FactureClt.FactureCltGestionList; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +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; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FactureCltGestionController implements Initializable { + + @FXML private AnchorPane PaneFactureGestion ; + + @FXML private ProgressBar ProgressBarFactureClt; + + @FXML private Button ButtonSearchFactureClt; + + @FXML public TableView TableViewFactureCltListGestion; + + @FXML public TableColumn TabColCodeFacture; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColCodeClient; + @FXML public TableColumn TabColMode ; + @FXML public TableColumn TabColTotal; + @FXML public TableColumn TabColCodeCommande; + @FXML public TableColumn TabColCreation; + @FXML public TableColumnTabColDetail ; + + @FXML public TextField TextFieldCodeFacture ; + @FXML public TextField TextFieldCodeClient ; + @FXML public TextField TextFieldCodeCommande ; + @FXML public DatePicker PickerDateCreation; + + @FXML public RadioButton RadioComptant; + @FXML public RadioButton RadioFacilite; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + private Service ThreadSearchFactureClt; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewFactureCltListGestion.setEditable(true); + + TabColCodeFacture.setStyle( "-fx-alignment: CENTER;");TabColCodeFacture.getStyleClass().add("Center"); + TabColCodeFacture.setCellValueFactory(new PropertyValueFactory("CodeFacture")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColCodeClient.setStyle( "-fx-alignment: CENTER;");TabColCodeClient.getStyleClass().add("Center"); + TabColCodeClient.setCellValueFactory(new PropertyValueFactory("CodeClient")); + + TabColMode.setStyle( "-fx-alignment: CENTER;");TabColMode.getStyleClass().add("Center"); + TabColMode.setCellValueFactory(new PropertyValueFactory("Mode")); + TabColMode.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null && item.equals("Comptant")){ + Text text = new Text(item); + text.setFill(Color.web("#428BCA")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!= null && item.equals("Facilité")){ + Text text = new Text(item); + text.setFill(Color.web("#000000")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColTotal.setStyle( "-fx-alignment: CENTER;");TabColTotal.getStyleClass().add("Center"); + TabColTotal.setCellValueFactory(new PropertyValueFactory("Total")); + + TabColCodeCommande.setStyle( "-fx-alignment: CENTER;");TabColCodeCommande.getStyleClass().add("Center"); + TabColCodeCommande.setCellValueFactory(new PropertyValueFactory("CodeCommande")); + + TabColCreation.setStyle( "-fx-alignment: CENTER;");TabColCreation.getStyleClass().add("Center"); + TabColCreation.setCellValueFactory(new PropertyValueFactory("DateCreation")); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + ButtonSearchFactureClt.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureClt(); + } + }); + + PaneFactureGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchFactureClt(); + } + } + }); + + RadioComptant.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureClt(); + } + }); + + RadioFacilite.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureClt(); + } + }); + + GestionSearchFactureClt(); + + } + + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + // get Selected Item + FactureCltGestionList current = (FactureCltGestionList) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String code_facture = current.getCodeFacture(); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltDetail.fxml")); + Parent NodeFactureCltDetail = (Parent)fxmlLoader.load(); + FactureCltDetailController FactureCltDetail= fxmlLoader.getController(); + FactureCltDetail.PaneSucces.setVisible(false); + + FactureCltDetail.codeFactClt = code_facture; + FactureCltDetail.SowDetailFactureClt(false); + PaneFactureGestion.getChildren().clear(); + PaneFactureGestion.getChildren().add(NodeFactureCltDetail); + FactureCltDetail.ButtonImprimerTraite.setVisible(false); + } catch (IOException ex) { + Logger.getLogger(FactureCltAjouterController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + @FXML + private void FactureCltAjouterButtonAction(ActionEvent event) throws IOException { + PaneFactureGestion.getChildren().clear(); + PaneFactureGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/FactureClt/FactureCltAjouter.fxml"))); + } + + + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchFactureClt() + { + ProgressBarFactureClt.setVisible(true); + + ButtonSearchFactureClt.setDisable(true); + + ThreadSearchFactureClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateCreation = ""; + if(PickerDateCreation.getValue() != null){ + DateCreation = PickerDateCreation.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListFactureClts = new FactureCltDB().SearchFactureCltGestion( + position, + nbrligne, + TextFieldCodeFacture.getText(), + TextFieldCodeClient.getText(), + TypeRegement, + TextFieldCodeCommande.getText(), + DateCreation); + + TableViewFactureCltListGestion.setItems(ListFactureClts); + + totalcount = new FactureCltDB().nbrFactureCltGestion(TextFieldCodeFacture.getText(), + TextFieldCodeClient.getText(), + TypeRegement, + TextFieldCodeCommande.getText(), + DateCreation); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchFactureClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureClt.setVisible(false); + ButtonSearchFactureClt.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchFactureClt.start(); + } + + + private void NextLastSearchFactureClt(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarFactureClt.setVisible(true); + + ButtonSearchFactureClt.setDisable(true); + + ThreadSearchFactureClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateCreation = ""; + if(PickerDateCreation.getValue() != null){ + DateCreation = PickerDateCreation.getValue().toString(); + } + + ObservableList ListFactureClts = new FactureCltDB().SearchFactureCltGestion(ParmPosition, ParamNbrligne, TextFieldCodeFacture.getText(), TextFieldCodeClient.getText(), "", TextFieldCodeCommande.getText(), DateCreation); + + TableViewFactureCltListGestion.setItems(ListFactureClts); + + return null; + } + }; + } + }; + + ThreadSearchFactureClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureClt.setVisible(false); + ButtonSearchFactureClt.setDisable(false); + } + }); + ThreadSearchFactureClt.start(); + } + + private void GestionSearchFactureClt() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchFactureClt(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchFactureClt(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchFactureClt(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + + + +} diff --git a/src/main/java/Controllers/FactureClt/FactureCltPrintController.java b/src/main/java/Controllers/FactureClt/FactureCltPrintController.java new file mode 100644 index 0000000..37a1639 --- /dev/null +++ b/src/main/java/Controllers/FactureClt/FactureCltPrintController.java @@ -0,0 +1,228 @@ +package Controllers.FactureClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.FactureClt.FactureClt; +import Models.Produit.ListeProduit; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.print.PageRange; +import javafx.print.PrinterJob; +import javafx.scene.control.Control; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FactureCltPrintController implements Initializable { + + @FXML private AnchorPane AnchorPaneTotal; + + @FXML public ImageView ImageViewLogo; + + @FXML private Text TextSteNom; + @FXML private Text TextSteAdress; + @FXML private Text TextSteTeleFax; + @FXML private Text TextSteIFCR; + @FXML private Text TextSteRIB; + @FXML private Text TextSteEmailSite; + + @FXML private Text TextNumFacture; + @FXML private Text TextDateFacture; + @FXML private Text TextNumCommande; + @FXML private Text TextPagination; + + @FXML private Text TextCltNomPrenom; + @FXML private Text TextCltTele; + @FXML private Text TextCltAdress; + + @FXML private Text TextDuplicata; + + @FXML private TableView TableViewListeProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + @FXML private Text TextTotalRemise; + @FXML private Text TextTotalHT; + @FXML private Text TextTotalTVA; + @FXML private Text TextTimbre; + @FXML private Text TextNetPayer; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + setImageLogo(); + + TextSteNom.setText(ParametreSystem.CompanyName); + TextSteAdress.setText(ParametreSystem.CompanyAddress); + TextSteTeleFax.setText(ParametreSystem.CompanyTele+" | Fax: "+ParametreSystem.CompanyFax); + TextSteIFCR.setText(ParametreSystem.CompanyIF+" | M.F: "+ParametreSystem.CompanyMF); + TextSteRIB.setText(ParametreSystem.RIB); + TextSteEmailSite.setText(ParametreSystem.CompanyMail+" | Site:"+ParametreSystem.CompanySite); + + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColReference.setStyle( "-fx-alignment: CENTER;"); + TabColReference.getStyleClass().add("Center"); + + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + TabColDesignation.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if (item == null) { + super.setText(null); + super.setGraphic(null); + } else { + String newItem = item.trim().toLowerCase(); + Text text = new Text(newItem); + super.setPrefHeight(Control.USE_COMPUTED_SIZE); + text.wrappingWidthProperty().bind(super.widthProperty()); + super.setGraphic(text); + } + } + }; + return cell; + } + }); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + } + + + public void setFactureClt(FactureClt factureClt, boolean duplicata) + { + if(duplicata){ + TextDuplicata.setVisible(true); + }else{ + TextDuplicata.setVisible(false); + } + + TableViewListeProduit.setItems(factureClt.getListeproduit()); + + TextNumFacture.setText(factureClt.getCodeFactureClt()); + TextDateFacture.setText(Adaptateur.NormalDateFormat(factureClt.getDateFacture())); + TextNumCommande.setText(factureClt.getIdCommandeClt()); + TextPagination.setText("1/1"); + + //0 Personne 1 Entreprise 2 Passager + if(factureClt.getTypeClient() == 0){ + Client client = factureClt.getCltPersonne(); + TextCltNomPrenom.setText(client.getNom()+" "+client.getPrenom()); + TextCltTele.setText(client.getTelefixString()); + TextCltAdress.setText(client.getAdresse()); + }else if(factureClt.getTypeClient() == 1){ + ClientEntreprise entreprise = factureClt.getCltEntreprise(); + TextCltNomPrenom.setText(entreprise.getNom()); + TextCltTele.setText(entreprise.getTele1String()); + TextCltAdress.setText(entreprise.getAdresse()); + }else if(factureClt.getTypeClient() == 2){ + ClientPassager passager = factureClt.getCltPassager(); + TextCltNomPrenom.setText(passager.getNom()+" "+passager.getPrenom()); + TextCltTele.setText(passager.getTelefixString()); + TextCltAdress.setText(passager.adresse); + } + + TextTotalRemise.setText(Adaptateur.StringToStringEspace(factureClt.getRemise())); + TextTotalHT.setText(Adaptateur.StringToStringEspace(factureClt.getTotalHorsTaxNet())); + TextTotalTVA.setText(Adaptateur.StringToStringEspace(factureClt.getTotalTVA())); + TextTimbre.setText(Adaptateur.StringToStringEspace(factureClt.getTimbre())); + TextNetPayer.setText(Adaptateur.StringToStringEspace(factureClt.getNetAPayer())); + + } + + private void setImageLogo() + { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + try { + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //PowerERP\conf\logo.xml + Document doc = db.parse(new File("./conf/logo.xml")); + + doc.getDocumentElement().normalize(); + + Element elementCNX = (Element) doc.getElementsByTagName("FactureCltPrint").item(0); + + String pathLogo = elementCNX.getElementsByTagName("PathImage").item(0).getTextContent(); + FileInputStream fis = new FileInputStream(pathLogo); + ImageViewLogo.setImage(new Image(fis)); + + ImageViewLogo.setFitWidth(Double.parseDouble(elementCNX.getElementsByTagName("FitWidth").item(0).getTextContent())); + ImageViewLogo.setFitHeight(Double.parseDouble(elementCNX.getElementsByTagName("FitHeight").item(0).getTextContent())); + ImageViewLogo.setLayoutX(Double.parseDouble(elementCNX.getElementsByTagName("LayoutX").item(0).getTextContent())); + ImageViewLogo.setLayoutY(Double.parseDouble(elementCNX.getElementsByTagName("LayoutY").item(0).getTextContent())); + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println("error AuthentificationController/setImageLogo "+e.getMessage()); + } + } +} diff --git a/src/main/java/Controllers/FactureFrs/FactureFrsAjouterController.java b/src/main/java/Controllers/FactureFrs/FactureFrsAjouterController.java new file mode 100644 index 0000000..aaeb96b --- /dev/null +++ b/src/main/java/Controllers/FactureFrs/FactureFrsAjouterController.java @@ -0,0 +1,685 @@ +/* + * 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 Controllers.FactureFrs; + +import Controllers.CommandeClt.CommandeCltPasserController; +import Controllers.Dialog.MessageControle; +import Controllers.Produit.RechercherProduitController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.FactureFrs.FactureFrs; +import Models.FactureFrs.FactureFrsDB; +import Models.Fournisseur.Fournisseur; +import Models.Fournisseur.FournisseurDB; +import Models.Produit.ListeProduit; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import Models.Stock.StockDB; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.time.LocalDateTime; +import javafx.application.Platform; +import java.util.ArrayList; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.ProgressIndicator; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +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; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * + * @author Maher + */ +public class FactureFrsAjouterController implements Initializable { + + @FXML public AnchorPane PaneFactureFrsAjouter ; + + @FXML public Text TotalTVA ; + @FXML public Text Remise ; + @FXML public Text NetAPayer ; + @FXML public Text Timbre ; + @FXML public Text TotalHTNet ; + + @FXML public Button RechercheProduit ; + @FXML public Button ButtonFactureFrsAjouter; + + @FXML public TableView TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignaton; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + @FXML public TableColumn TabColAddAction ; + + + @FXML public TextField TextFieldNumero ; + @FXML public TextField TextFieldTransporteur ; + @FXML public TextField TextFieldHeur ; + @FXML private TextField TextFieldFournisseur ; + @FXML public DatePicker DatePickerDateReception; + + + + @FXML public ChoiceBox ChoiceBoxLocalReception ; + + @FXML public Text TextNumero ; + @FXML public Text TextHeur ; + @FXML public Text TextDateReception; + @FXML public Text TextFournisseur ; + @FXML public Text TextLocalReception ; + + @FXML public ProgressIndicator ProgressIndicatorSaveFactureFrs ; + + + public ObservableList ListProd = FXCollections.observableArrayList(); + Produit produit= new Produit(); + ProduitDB produitDB= new ProduitDB(); + contro Controle = new contro(); + + public ArrayList ListFournisseur = new ArrayList<>(); + public ArrayList ListLocale = new ArrayList<>(); + + float netaPayer = 0; + float Remises = 0; + float totalTVA = 0; + float total_H_T_Net= 0; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + DatePickerDateReception.setValue(LocalDate.now()); + TextFieldHeur.setText(LocalDateTime.now().getHour()+":"+LocalDateTime.now().getMinute()); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + TabColAddAction.setSortable(true); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new FactureFrsAjouterController.ButtonCell(); + } + }); + TabColAddAction.setStyle( "-fx-alignment: CENTER;"); + TabColAddAction.getStyleClass().add("Center"); + + StockDB Stock = new StockDB(); + ListLocale = Stock.getAllListLocal(); + ChoiceBoxLocalReception.getItems().addAll(ListLocale); + + ListFournisseur = new FournisseurDB().getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseur, ListFournisseur); + + + this.ReferenceMouseClick(); + this.QantiteMouseClick(); + this.RemiseMouseClick(); + + TabColAddAction.setSortable(true); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new FactureFrsAjouterController.ButtonCell(); + } + }); + + + TableViewListeProduit.setItems(ListProd); + + + //Ajouter une ligne vide clors ce que en click sur la tableview + TableViewListeProduit.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + ListProd.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(ListProd); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + ListProd.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(ListProd); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + }); + + + ButtonFactureFrsAjouter.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + + ButtonFactureFrsAjouter.setText(""); + ButtonFactureFrsAjouter.setDisable(true); + ProgressIndicatorSaveFactureFrs.setVisible(true); + + if( Controle.ContrNumeriqueNotnull(TextFieldNumero, TextNumero) && + Controle.ContrNull(TextFieldFournisseur, TextFournisseur) && + Controle.ContrNullDatePicker(DatePickerDateReception, TextDateReception) && + Controle.ContrHour(TextFieldHeur, TextHeur) && + Controle.ContrNullValue(ChoiceBoxLocalReception, TextLocalReception) + ){ + + Runnable task = new Runnable(){// Create a Runnable + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + String Numero = TextFieldNumero.getText(); + String IdFournisseur = TextFieldFournisseur.getText().split(" - ", -1)[0]; + FactureFrsDB FactureDB = new FactureFrsDB(); + String IdFactureFrs = FactureDB.getFactureFrs(null, Numero, IdFournisseur).getIdFactureFrs(); + if(IdFactureFrs != null){ + TextFieldNumero.setStyle("-fx-border-color:#f20606;"); + TextNumero.setText("Facture Fournisseur existe déja"); + }else{ + if(ListProd.size()>0){ + FactureFrs FactureFrs = SetFacture(); + FactureDB.setFactureFrsDB(FactureFrs); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureFrs/FactureFrsDetail.fxml")); + Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); + + FactureFrsDetailController FactureFrsDetail = fxmlLoader.getController(); + FactureFrsDetail.setDataFactureDetailFrs(FactureFrs.getIdFactureFrs()); + FactureFrsDetail.PaneSucessFrs.setVisible(true); + PaneFactureFrsAjouter.getChildren().clear(); + PaneFactureFrsAjouter.getChildren().add(ParentFxmlFournisseur); + + }catch (IOException ex) { + Logger.getLogger(FactureFrsDetailController.class.getName()).log(Level.SEVERE, null, ex); + } + }else{ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + + } + } + }); + } + }; + Thread backgroundThread = new Thread(task);// Run the task in a background thread + backgroundThread.setDaemon(true);// Terminate the running thread if the application exits + backgroundThread.start();// Start the thread + } + + ButtonFactureFrsAjouter.setText("Enregister La Facture"); + ButtonFactureFrsAjouter.setDisable(false); + ProgressIndicatorSaveFactureFrs.setVisible(false); + + } + }); + } + + public FactureFrs SetFacture(){ + FactureFrs Facture = new FactureFrs(); + + if(!TextFieldFournisseur.getText().equals("")){ + String[] Fournisseur = TextFieldFournisseur.getText().split(" - ", -1); + Fournisseur Frs = new Fournisseur(); + Frs.setCode(Fournisseur[0]); + Frs.setNom(Fournisseur[1]); + Facture.setFournisseur(Frs); + } + + if(ChoiceBoxLocalReception.getValue() != null){ + Facture.setLocal(ChoiceBoxLocalReception.getValue().toString()); + } + + if(DatePickerDateReception.getValue() != null){ + Facture.setDateCreation(DatePickerDateReception.getValue().toString()); + } + + Facture.setNumero(TextFieldNumero.getText()); + Facture.setHeurCreation(TextFieldHeur.getText()); + Facture.setTotalHorsTaxNet(Adaptateur.floatDeleZero(total_H_T_Net)); + Facture.setTotalTVA(Adaptateur.floatDeleZero(totalTVA)); + Facture.setRemise(Adaptateur.floatDeleZero(Remises)); + Facture.setNetAPayer(Adaptateur.floatDeleZero(netaPayer)); + Facture.setTimbre(Timbre.getText()); + Facture.setListProduit(ListProd); + Facture.setTypeReglement(null); + Facture.setEtatReglement(null); + + + return Facture; + } + + + public void getFacture(FactureFrs Facture){ + + TextFieldNumero.setText(Facture.getNumero()); + TextFieldHeur.setText(Facture.getHeurCreation()); + DatePickerDateReception.setValue(Adaptateur.StringToLocalDate(Facture.getDateCreation())); + + Fournisseur Frs = Facture.getFournisseur(); + if(Frs != null){ + TextFieldFournisseur.setText(Frs.getCode()+" - "+Frs.getNom()); + } + + String Local = Facture.getLocal(); + if(Local != null){ + int indexLocale = ListLocale.indexOf(Local); + ChoiceBoxLocalReception.getSelectionModel().select(indexLocale); + } + } + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + ListProd.remove(selectdIndex); + CalculeListeProduit(); + TableViewListeProduit.setStyle(".table-row-cell:selected{ -fx-background-color:transparent ;}"); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + + + @FXML + private void AddLigneButtonAction(ActionEvent event) throws IOException { + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + ListProd.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(ListProd); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + ListProd.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(ListProd); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + + private void ReferenceMouseClick(){ + TabColReference.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + produit = produitDB.getProduit(t.getNewValue()); + if(produit.getReference() != null){ + ListeProduit Liste = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixachatht(),"0","",produit.getTvaachat(),"0"); + AffectationTableView(Liste,t.getTablePosition().getRow()) ; + } + else{ + AffectationTableView(new ListeProduit("","","","","","","",""),t.getTablePosition().getRow()) ; + } + + } + }); + } + + private void QantiteMouseClick(){ + TabColQuantite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newquantite = t.getNewValue() ; + try{ + newquantite = newquantite.replace(',','.'); + if(Float.parseFloat(newquantite)<1){ + newquantite = "1"; + } + } + catch(NumberFormatException nfe){ + newquantite = "1"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un quantité dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setQuantite(newquantite); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), newquantite,Liste.getPrixHT(), Liste.getRemise(),"",Liste.getTVA(),""); + //NewList = CalculeProduit(NewList); + AffectationTableView(NewList,t.getTablePosition().getRow()) ; + + } + } + }); + } + + + private void RemiseMouseClick(){ + TabColRemise.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newRemise = t.getNewValue() ; + try{ + newRemise = newRemise.replace(',','.'); + if(Float.parseFloat(newRemise)<0){ + newRemise = "0"; + } + } + catch(NumberFormatException nfe){ + newRemise = "0"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un remise dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setRemise(newRemise); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), Liste.getQuantite(),Liste.getPrixHT(), newRemise, "", Liste.getTVA(), ""); + AffectationTableView(NewList, t.getTablePosition().getRow()); + } + + } + }); + } + private void AffectationTableView(ListeProduit ListeProd, int EmplacementLigne){ + boolean result = false ; + int indise=0; + int Position = 0; + + if(ListProd.size()>0){ + do{ //Vérifier si le produit exsiste deja + if(ListProd.get(indise).getReference().equals(ListeProd.getReference())){ + result = true ; + Position = indise ; + //System.out.println("existe Position:"+indise); + } + indise++; + }while(ListProd.size()>indise && !result); + + if(result){ //si la ligne exsite déja + if(EmplacementLigne!= -1){ + if(Position == EmplacementLigne){ + ListProd.set(Position, ListeProd); + } + else{ + ListProd.set(EmplacementLigne, new ListeProduit("","","","","","","","")); + } + } + }else{ + if(EmplacementLigne!= -1){ + ListProd.set(EmplacementLigne, ListeProd); + }else{ + ListProd.add(ListeProd); + } + } + } + else{ + ListProd.add(ListeProd); + } + + CalculeListeProduit(); + + TableViewListeProduit.setItems(ListProd); + TableViewListeProduit.setVisible(false); + TableViewListeProduit.setVisible(true); + } + + private void CalculeListeProduit(){ //calculer et afficher la détail des produits + netaPayer = 0; + Remises = 0; + totalTVA = 0; + total_H_T_Net= 0; + + TotalTVA.setText(""); + Remise.setText(""); + NetAPayer.setText(""); + Timbre.setText(""); + TotalHTNet.setText(""); + + //calcule + for(ListeProduit liste : ListProd){ + float totaht = Adaptateur.StringToFloat(liste.getTotalHT()) ; + float prix_U_H_T = Adaptateur.StringToFloat(liste.getPrixHT()) ; + float remises = Adaptateur.StringToFloat(liste.getRemise().replace("%", "")) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")); + float qte = Adaptateur.StringToFloat(liste.getQuantite()); + + totalTVA = totalTVA + ((totaht * tva) /100) ; + Remises = Remises + (prix_U_H_T * remises)/100 ; + total_H_T_Net = total_H_T_Net + totaht ; + } + + if(total_H_T_Net>0){ + float timbre = Adaptateur.StringToFloat(ParametreSystem.Timbre); + netaPayer = total_H_T_Net + totalTVA + timbre ; + TotalTVA.setText(Adaptateur.FloatToStringEspace(totalTVA)); + Remise.setText(Adaptateur.FloatToStringEspace(Remises)); + NetAPayer.setText(Adaptateur.FloatToStringEspaceCurrency(netaPayer)); + Timbre.setText(ParametreSystem.Timbre); + TotalHTNet.setText(Adaptateur.FloatToStringEspace(total_H_T_Net)); + } + } + + + public Object[] getDefaultSaveDataImport(){ + Object[] ArrayObject = new Object[10]; + ArrayObject[0] = this.ListProd; + ArrayObject[1] = SetFacture(); + return ArrayObject; + } + + + + public void SetDefaultSaveDataImport(Object[] ArrayObject){ + if(ArrayObject[0] != null){ + this.ListProd = (ObservableList) ArrayObject[0]; + this.CalculeListeProduit(); + this.TableViewListeProduit.setItems(ListProd); + } + if(ArrayObject[1] != null){ + FactureFrs Facture = (FactureFrs) ArrayObject[1]; + getFacture(Facture); + } + + if(ArrayObject[6] != null){ + this.SetProduit( (Produit) ArrayObject[6] ); + } + } + + @FXML + private void RechercheProduitButtonAction(ActionEvent event) throws IOException { + + final RechercherProduitController rechercheproduit = new RechercherProduitController(false); + + rechercheproduit.ArrayObjectDataSave = this.getDefaultSaveDataImport(); + + rechercheproduit.Show(); + + rechercheproduit.TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected ItemButtonCell + rechercheproduit.ArrayObjectDataSave[6] = ((Produit)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureFrs/FactureFrsAjouter.fxml")); + Parent ParentBonReceptionAjouterFXML = (Parent) fxmlLoader.load(); + + FactureFrsAjouterController FactureFrsAjouter = fxmlLoader.getController(); + + FactureFrsAjouter.SetDefaultSaveDataImport(rechercheproduit.ArrayObjectDataSave); + + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentBonReceptionAjouterFXML, 2); + + + } catch (IOException ex) { + Logger.getLogger(CommandeCltPasserController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + } + + public void SetProduit(Produit produit){ + + //Supprimer les igne vide + if((ListProd.size()>0) && (ListProd.get(ListProd.size()-1).getReference().isEmpty())){ + ListProd.remove(ListProd.size()-1); + } + + if(produit != null){ + ListeProduit ListeProd = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixachatht(),"0",produit.getPrixachatttc(),produit.getTvaachat(),"0"); + AffectationTableView(ListeProd,-1); + } + + } + + +} diff --git a/src/main/java/Controllers/FactureFrs/FactureFrsBonReceptionAjouterController.java b/src/main/java/Controllers/FactureFrs/FactureFrsBonReceptionAjouterController.java new file mode 100644 index 0000000..9cafe31 --- /dev/null +++ b/src/main/java/Controllers/FactureFrs/FactureFrsBonReceptionAjouterController.java @@ -0,0 +1,633 @@ +/* + * 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 Controllers.FactureFrs; + +import Controllers.Dialog.MessageControle; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.BonReceptionFrs.BonReceptionDB; +import Models.BonReceptionFrs.BonReceptionFrs; +import Models.BonReceptionFrs.BonReceptionList; +import Models.BonReceptionFrs.BonReceptionProduitList; +import Models.FactureFrs.FactureFrs; +import Models.FactureFrs.FactureFrsDB; +import Models.Fournisseur.Fournisseur; +import Models.Fournisseur.FournisseurDB; +import Models.Produit.ListeProduit; +import Models.Stock.StockDB; +import Models.User.Profile; +import Models.User.User; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; +import javafx.application.Platform; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.ProgressIndicator; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyEvent; +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; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * + * @author Maher + */ +public class FactureFrsBonReceptionAjouterController implements Initializable { + + @FXML public AnchorPane PaneFactureBRFrsAjouter ; + + @FXML public TableView TableViewBonReception ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColFournisseur; + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColLocalReception; + @FXML public TableColumn TabColNetPayer; + @FXML public TableColumn TabColRechAddAction; + + + @FXML public TableView TableViewBonReceptionSelected; + @FXML public TableColumn TabColReferenceSelected; + @FXML public TableColumn TabColFournisseurSelected; + @FXML public TableColumn TabColDateSelected; + @FXML public TableColumn TabColLocalReceptionSelected; + @FXML public TableColumn TabColNetPayerSelected; + @FXML public TableColumn TabColSupprimer; + + @FXML public TextField TextFieldNumero ; + @FXML public TextField TextFieldNetPayer ; + @FXML private TextField TextFieldFournisseur ; + @FXML public ChoiceBox ChoiceBoxLocalReception ; + @FXML public DatePicker DatePickerDateReception; + + @FXML public TextField TextFieldNumeroFac ; + @FXML public TextField TextFieldHeurFac ; + @FXML public DatePicker DatePickerDateFac; + @FXML public Text TextCltNumeroFac ; + @FXML public Text TextCltHeurFac ; + @FXML public Text TextCltDateFac ; + + @FXML public Text TextTotalFacture; + + + @FXML public Button ButtonFactureBLAjouter; + @FXML public ProgressIndicator ProgressIndicatorBonReception; + @FXML public ProgressIndicator ProgressIndicatorSaveFactureBLAjouter; + + public ArrayList ListFournisseur = new ArrayList<>(); + public ArrayList ListLocale = new ArrayList<>(); + + ObservableList ObservableListBonReception = FXCollections.observableArrayList(); + + BonReceptionDB BonRecepDB= new BonReceptionDB(); + + contro Controle = new contro(); + + String StringSeleFournissuer ; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColReference.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColFournisseur.setCellValueFactory(new PropertyValueFactory("Fournisseur")); + TabColFournisseur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColFournisseur.getStyleClass().add("Center"); + + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + TabColNetPayer.setCellValueFactory(new PropertyValueFactory("NetPayer")); + TabColNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayer.getStyleClass().add("Center"); + + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("LocalReception")); + TabColLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReception.getStyleClass().add("Center"); + + TabColRechAddAction.setSortable(true); + TabColRechAddAction.setStyle( "-fx-alignment: CENTER;"); + + TabColRechAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColRechAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new FactureFrsBonReceptionAjouterController.ButtonCell(); + } + }); + + + TabColReferenceSelected.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColFournisseurSelected.setCellValueFactory(new PropertyValueFactory("Fournisseur")); + TabColFournisseurSelected.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColFournisseurSelected.getStyleClass().add("Center"); + + TabColDateSelected.setCellValueFactory(new PropertyValueFactory("Date")); + TabColDateSelected.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateSelected.getStyleClass().add("Center"); + + TabColNetPayerSelected.setCellValueFactory(new PropertyValueFactory("NetPayer")); + TabColNetPayerSelected.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayerSelected.getStyleClass().add("Center"); + + TabColLocalReceptionSelected.setCellValueFactory(new PropertyValueFactory("LocalReception")); + TabColLocalReceptionSelected.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReceptionSelected.getStyleClass().add("Center"); + + TabColSupprimer.setSortable(true); + TabColSupprimer.setStyle( "-fx-alignment: CENTER;"); + + TabColSupprimer.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColSupprimer.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new FactureFrsBonReceptionAjouterController.ButtonCellRemove(); + } + }); + + ListFournisseur = new FournisseurDB().getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseur, ListFournisseur); + + StockDB Stock = new StockDB(); + ListLocale = Stock.getAllListLocal(); + ChoiceBoxLocalReception.getItems().addAll(ListLocale); + + DatePickerDateFac.setValue(LocalDate.now()); + TextFieldHeurFac.setText(LocalDateTime.now().getHour()+":"+LocalDateTime.now().getMinute()); + + RechecheBonReception(); + + getRechecheBonReception(""); + + AjouterFactureBL(); + } + + + + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + BonReceptionList BonReceptionListSelect = (BonReceptionList)getTableRow().getItem(); + AffectBonReception(BonReceptionListSelect); + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + //Define the button cell + private class ButtonCellRemove extends TableCell { + + final Button cellButton = new Button(); + + ButtonCellRemove(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + ObservableListBonReception.remove(selectdIndex); + CalculeFacture(); + TableViewBonReceptionSelected.setItems(ObservableListBonReception); + TableViewBonReceptionSelected.refresh(); + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + private void getRechecheBonReception(final String KeyWordSearch ) + { + try { + ProgressIndicatorBonReception.setVisible(true); + TableViewBonReception.setVisible(false); + + // Create a Runnable + Runnable task = new Runnable(){ + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + + TableViewBonReception.setItems(BonRecepDB.getBonReceptionNotFact(KeyWordSearch)); + ProgressIndicatorBonReception.setVisible(false); + TableViewBonReception.setVisible(true); + } + }); + } + }; + + + Thread backgroundThread = new Thread(task); // Run the task in a background thread + backgroundThread.setDaemon(true); // Terminate the running thread if the application exits + backgroundThread.start(); // Start the thread + + }catch (Exception ex) { + System.err.println("Exception getRechecheBonReception \n"+ex.getMessage()); + } + + } + + + private boolean ContrFournissuer() + { + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + if(ObservableListBonReception.size()>0){ + boolean result = true ; + StringSeleFournissuer = ObservableListBonReception.get(0).getFournisseur(); + int indise = 1; + //Verifier si la produit exsiste déja + while(indise<=ObservableListBonReception.size() && result){ + result = ObservableListBonReception.get(indise-1).getFournisseur().equals(StringSeleFournissuer); + indise++; + } + + //si le fournisseur n'exsiste pas + if(!result){ + text3.setText("Les fournisseurs sélectionnés sont différents"); + messagecontrol.DetailMSG.getChildren().add(text3); + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + return false; + } + + + //si la facture existe déja + String IdFournisseur = StringSeleFournissuer.split(" - ", -1)[0]; + FactureFrsDB FactureDB = new FactureFrsDB(); + FactureFrs Facture = FactureDB.getFactureFrs(null, TextFieldNumeroFac.getText(), IdFournisseur); + if(Facture.getIdFactureFrs() != null){ + text3.setText("Cette facture existe déja"); + messagecontrol.DetailMSG.getChildren().add(text3); + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + return false; + } + + return true; + } + else{ + //si la liste est vide + text3.setText("Vous devez ajouter au moin un Bon Réception à la liste"); + messagecontrol.DetailMSG.getChildren().add(text3); + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + return false; + } + + } + + private void AjouterFactureBL(){ + ButtonFactureBLAjouter.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + + if( Controle.ContrNumeriqueNotnull(TextFieldNumeroFac, TextCltNumeroFac) && + ContrFournissuer() && + Controle.ContrHour(TextFieldHeurFac, TextCltHeurFac) && + Controle.ContrNullDatePicker(DatePickerDateFac, TextCltDateFac)){ + + + ButtonFactureBLAjouter.setText(""); + ButtonFactureBLAjouter.setDisable(true); + ProgressIndicatorSaveFactureBLAjouter.setVisible(true); + + Runnable task = new Runnable(){// Create a Runnable + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + + FactureFrs Facture = setFactureBRFrs(); + FactureFrsDB FactureDB = new FactureFrsDB(); + FactureDB.setFactureBRDB(Facture); + + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureFrs/FactureFrsDetail.fxml")); + Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); + + FactureFrsDetailController FactureFrsDetail = fxmlLoader.getController(); + FactureFrsDetail.setDataFactureDetailFrs(Facture.getIdFactureFrs()); + FactureFrsDetail.PaneSucessFrs.setVisible(true); + PaneFactureBRFrsAjouter.getChildren().clear(); + PaneFactureBRFrsAjouter.getChildren().add(ParentFxmlFournisseur); + + }catch (IOException ex) { + Logger.getLogger(FactureFrsDetailController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + }; + + Thread backgroundThread = new Thread(task);// Run the task in a background thread + backgroundThread.setDaemon(true);// Terminate the running thread if the application exits + backgroundThread.start(); + } + + ButtonFactureBLAjouter.setText("Enregister Facture BR"); + ButtonFactureBLAjouter.setDisable(false); + ProgressIndicatorSaveFactureBLAjouter.setVisible(false); + + } + }); + + } + + public FactureFrs setFactureBRFrs(){ + + FactureFrs FactureBRFrs = new FactureFrs(); + FactureBRFrs.setNumero(TextFieldNumeroFac.getText()); + FactureBRFrs.setHeurCreation(TextFieldHeurFac.getText()); + FactureBRFrs.setDateCreation(DatePickerDateFac.getValue().toString()); + + String IdFournisseur = StringSeleFournissuer.split(" - ", -1)[0]; + Fournisseur Frs = new Fournisseur(); + Frs.setCode(IdFournisseur); + FactureBRFrs.setFournisseur(Frs); + + FactureBRFrs.setDevise(ParametreSystem.CurrencySign); + + Profile profile= new Profile(); + profile.setIdprofile(User.idprofile); + FactureBRFrs.setProfile(profile); + + FactureBRFrs.setLocal(ParametreSystem.NomLocalPC); + + float total_hors_tax_net = 0; + float total_tva = 0; + float net_a_payer = 0; + + ArrayList listRefeProduct = new ArrayList<>(); + ArrayList listProd = new ArrayList<>(); + ObservableList ListProduit = FXCollections.observableArrayList() ; + + ObservableList ListeBonReception = FXCollections.observableArrayList() ; + for(int i=0; i ObservableListProduit = BonReception.getListProduit(); + for(int j=0; j0){ + boolean result = false ; + int indise = 1; + //Verifier si la produit exsiste déja + while(indise<=ObservableListBonReception.size() && !result){ + result = ObservableListBonReception.get(indise-1).getCode().equals(BRList.getCode()); + indise++; + } + //si le produit n'exsiste pas on la joute à la table view + if(!result){ + ObservableListBonReception.add(BRList); + } + } + else{ + ObservableListBonReception.add(BRList); + } + CalculeFacture(); + TableViewBonReceptionSelected.setItems(ObservableListBonReception); + TableViewBonReceptionSelected.refresh(); + } + + + private void CalculeFacture(){ + float somme = 0; + + for(int i=0; i 0){ + somme += Adaptateur.ArrondStringToFloat(ParametreSystem.Timbre); + TextTotalFacture.setText(Adaptateur.ArrondFloatToString(somme)+" "+ParametreSystem.CurrencySign); + }else{ + TextTotalFacture.setText(""); + } + + + } + + + private void RechecheBonReception(){ + TextFieldNumero.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + String numero = Adaptateur.addSlashes(TextFieldNumero.getText()); + if(numero.isEmpty()){ + TableViewBonReception.setItems(null); + } + else{ + getRechecheBonReception(" AND (BR.numero LIKE '"+numero+"%') "); + } + + } + }); + + TextFieldNetPayer.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + String netpayer = TextFieldNetPayer.getText(); + if(netpayer.isEmpty()){ + TableViewBonReception.setItems(null); + } + else{ + getRechecheBonReception(" AND (BR.net_a_payer LIKE '"+netpayer+"%') "); + } + } + }); + + + DatePickerDateReception.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try{ + getRechecheBonReception(" AND (DATE(BR.date_reception) = "+"'"+DatePickerDateReception.getValue().toString()+"')"); + }catch(Exception ex){} + } + }); + DatePickerDateReception.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + try{ + String DateReception = DatePickerDateReception.getConverter().fromString(DatePickerDateReception.getEditor().getText()).toString(); + getRechecheBonReception(" AND (DATE(BR.date_reception) = "+"'"+DateReception+"')"); + }catch(Exception ex){} + } + }); + + + TextFieldFournisseur.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, String newValue) { + if(newValue.contains(" - ")){ + String[] array = newValue.split(" - ", -1); + getRechecheBonReception(" AND (BR.id_fournisseur = '"+array[0]+"') "); + } + } + }); + + + ChoiceBoxLocalReception.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue ov, String t, String ValLocal) { + getRechecheBonReception(" AND (BR.local_reception LIKE '"+ValLocal+"%') "); + } + }); + } + +} diff --git a/src/main/java/Controllers/FactureFrs/FactureFrsDetailController.java b/src/main/java/Controllers/FactureFrs/FactureFrsDetailController.java new file mode 100644 index 0000000..bd82d8c --- /dev/null +++ b/src/main/java/Controllers/FactureFrs/FactureFrsDetailController.java @@ -0,0 +1,205 @@ +/* + * 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 Controllers.FactureFrs; + +import Controllers.Traitement.Adaptateur; +import Models.BonReceptionFrs.BonReceptionFrs; +import Models.FactureFrs.FactureFrs; +import Models.FactureFrs.FactureFrsDB; +import Models.Fournisseur.Fournisseur; +import Models.Produit.ListeProduit; +import Models.User.Profile; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Tab; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * + * @author Maher + */ +public class FactureFrsDetailController implements Initializable { + + @FXML private AnchorPane PaneFactureFrsDetail ; + @FXML private AnchorPane AnchorPaneLoading; + + @FXML public AnchorPane PaneSucessFrs ; + + @FXML private Tab TabBonReception; + + @FXML private Text TextNumero; + @FXML private Text TextDateReception; + @FXML private Text TextTypeReglement; //type reglement: 0 comptant 1 facilité + @FXML private Text TextLocalReception; + @FXML private Text TextEtatReglement; //0 :payer 1 :en cour 3: non pays + @FXML private Text TextProfile; + @FXML private Text TextNomFrs; + @FXML private Text TextSpecialiteFrs; + @FXML private Text TextFormesFrs; + @FXML private Text TextAdresseFrs; + @FXML private Text TextTele1Frs; + @FXML private Text TextTele2Frs; + + + @FXML private Text TotalTVA ; + @FXML private Text Remise ; + @FXML private Text NetAPayer ; + @FXML private Text Timbre ; + @FXML private Text TotalHTNet ; + + @FXML public TableView TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignation; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + + @FXML public TableView TableViewBonReception; + @FXML public TableColumn TabColNumero; + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColHeur; + @FXML public TableColumn TabColLocalReception; + @FXML public TableColumn TabColTransporteur; + @FXML public TableColumn TabColNetPayer; + + private Service ThreadFactureFrsDetail; + + FactureFrs Facture ; + + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColNumero.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + TabColHeur.setCellValueFactory(new PropertyValueFactory("Heur")); + TabColHeur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColHeur.getStyleClass().add("Center"); + + + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("Local")); + TabColLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReception.getStyleClass().add("Center"); + + + TabColTransporteur.setCellValueFactory(new PropertyValueFactory("Transporteur")); + TabColTransporteur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTransporteur.getStyleClass().add("Center"); + + TabColNetPayer.setCellValueFactory(new PropertyValueFactory("NetPayer")); + TabColNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayer.getStyleClass().add("Center"); + } + + + public void setDataFactureDetailFrs(final String IdFactureFrs){ + ThreadFactureFrsDetail = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + Facture = new FactureFrsDB().getFactureFrs(IdFactureFrs, null, null); + + return null; + } + }; + } + }; + ThreadFactureFrsDetail.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + TextNumero.setText(Facture.getNumero()); + TextDateReception.setText(Facture.getDateCreation()+" "+Facture.getHeurCreation()); + TextTypeReglement.setText(Facture.getTypeReglementString()); + TextLocalReception.setText(Facture.getLocal()); + TextEtatReglement.setText(Facture.getEtatReglementString()); + + Profile profile = Facture.getProfile(); + TextProfile.setText(profile.getNom()+" "+profile.getPrenom()); + + TotalTVA.setText(Adaptateur.FloatToStringEspaceCurrency(Facture.getFTotalTVA())); + Remise.setText(Adaptateur.FloatToStringEspaceCurrency(Facture.getFRemise())); + NetAPayer.setText(Adaptateur.FloatToStringEspaceCurrency(Facture.getFNetAPayer())); + Timbre.setText(Adaptateur.FloatToStringEspaceCurrency(Facture.getFTimbre())); + TotalHTNet.setText(Adaptateur.FloatToStringEspaceCurrency(Facture.getFTotalHorsTaxNet())); + + Fournisseur Frs = Facture.getFournisseur(); + TextNomFrs.setText(Frs.getNom()); + TextSpecialiteFrs.setText(Frs.getSpecialite()); + TextFormesFrs.setText(Frs.getFormes()); + TextAdresseFrs.setText(Frs.getAdresse()); + TextTele1Frs.setText(Frs.getTele1()); + TextTele2Frs.setText(Frs.getTele2()); + + ObservableList ProduitList = Facture.getListProduit(); + TableViewListeProduit.setItems(ProduitList); + TableViewListeProduit.refresh(); + + if(Facture.getBonReception() == null){ + TabBonReception.setText(""); + TabBonReception.setDisable(true); + }else{ + ObservableList ListBonReception = Facture.getListeBonReception(); + TableViewBonReception.setItems(ListBonReception); + TableViewBonReception.refresh(); + } + + PaneFactureFrsDetail.setVisible(true); + AnchorPaneLoading.setVisible(false); + } + }); + ThreadFactureFrsDetail.start(); + } + +} diff --git a/src/main/java/Controllers/FactureFrs/FactureFrsGestionController.java b/src/main/java/Controllers/FactureFrs/FactureFrsGestionController.java new file mode 100644 index 0000000..bb60e09 --- /dev/null +++ b/src/main/java/Controllers/FactureFrs/FactureFrsGestionController.java @@ -0,0 +1,487 @@ +/* + * 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 Controllers.FactureFrs; + + +import Models.FactureFrs.FactureFrs; +import Models.FactureFrs.FactureFrsDB; +import Models.Fournisseur.FournisseurDB; +import Models.Stock.StockDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.ResourceBundle; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableColumn.CellDataFeatures; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FactureFrsGestionController implements Initializable { + + @FXML private AnchorPane AnchorPaneFactureFrsGestion ; + + @FXML private ProgressBar ProgressBarFactureFrs; + + @FXML private Button ButtonSearchFactureFrs; + + @FXML public TableView TableViewBonReception; + @FXML public TableColumn TabColNumero; + @FXML public TableColumn TabColFrs; + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColHeur; + @FXML public TableColumn TabColLocalReception; + @FXML public TableColumn TabColNetPayer; + @FXML public TableColumnTabColDetail ; + + @FXML public TextField TextFieldNumero ; + @FXML public TextField TextFieldFournisseur ; + @FXML public DatePicker DatePickerDateReception; + @FXML public ChoiceBox ChoiceBoxLocalReception ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + private Service ThreadSearchFactureFrs; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + String LocalReception = ""; + String IdFournisseur = ""; + + public ArrayList ListFournisseur = new ArrayList<>(); + public ArrayList ListLocale = new ArrayList<>(); + + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + setDefaultFormData(); + + TabColNumero.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColFrs.getStyleClass().add("Center"); + TabColFrs.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(CellDataFeatures data) { + return new SimpleStringProperty(data.getValue().getFournisseur().getNom()); + } + }); + + TabColDate.setCellValueFactory(new PropertyValueFactory("DateCreation")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + TabColHeur.setCellValueFactory(new PropertyValueFactory("HeurCreation")); + TabColHeur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColHeur.getStyleClass().add("Center"); + + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("Local")); + TabColLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReception.getStyleClass().add("Center"); + + TabColNetPayer.setCellValueFactory(new PropertyValueFactory("NetAPayer")); + TabColNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayer.getStyleClass().add("Center"); + TabColNetPayer.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null){ + Text text = new Text(Formatter.format(Float.parseFloat(item))); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + TextFieldFournisseur.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, String newValue) { + if(newValue.contains(" - ")){ + String[] array = newValue.split(" - ", -1); + IdFournisseur = array[0]; + } + } + }); + + ChoiceBoxLocalReception.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue ov, String t, String ValLocal) { + LocalReception = ValLocal; + } + }); + + ButtonSearchFactureFrs.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFactureFrs(); + } + }); + + AnchorPaneFactureFrsGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchFactureFrs(); + } + } + }); + + GestionSearchFactureFrs(); + } + + + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/FactureFrs/FactureFrsDetail.fxml")); + Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); + + FactureFrs FournisseurList = ((FactureFrs)getTableRow().getItem()); + + FactureFrsDetailController FactureFrsDetail = fxmlLoader.getController(); + FactureFrsDetail.setDataFactureDetailFrs(FournisseurList.getIdFactureFrs()); + FactureFrsDetail.PaneSucessFrs.setVisible(false); + + AnchorPaneFactureFrsGestion.getChildren().clear(); + AnchorPaneFactureFrsGestion.getChildren().add(ParentFxmlFournisseur); + } catch (Exception ex) { + System.err.println("FactureFrsGestionController ButtonCell ! \n"+ex.getMessage()); + } + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + @FXML + private void FactureFrsBonReceptionAjouterButtonAction(ActionEvent event) throws IOException { + AnchorPaneFactureFrsGestion.getChildren().clear(); + AnchorPaneFactureFrsGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml"))); + } + + + @FXML + private void FactureFrsAjouterButtonAction(ActionEvent event) throws IOException { + AnchorPaneFactureFrsGestion.getChildren().clear(); + AnchorPaneFactureFrsGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/FactureFrs/FactureFrsAjouter.fxml"))); + } + + private void setDefaultFormData() + { + ProgressBarFactureFrs.setVisible(true); + + ThreadSearchFactureFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + ListFournisseur = new FournisseurDB().getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseur, ListFournisseur); + + ListLocale = new StockDB().getAllListLocal(); + ChoiceBoxLocalReception.getItems().addAll(ListLocale); + return null; + } + }; + } + }; + ThreadSearchFactureFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureFrs.setVisible(false); + + } + }); + ThreadSearchFactureFrs.start(); + } + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchFactureFrs() + { + ProgressBarFactureFrs.setVisible(true); + + ButtonSearchFactureFrs.setDisable(true); + + ThreadSearchFactureFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateReception = ""; + if(DatePickerDateReception.getValue() != null){ + DateReception = DatePickerDateReception.getValue().toString(); + } + + + ObservableList ListFactureFrss = new FactureFrsDB().SearchFactureFrsGestion( + position, + nbrligne, + TextFieldNumero.getText(), + IdFournisseur, + LocalReception, + DateReception); + + TableViewBonReception.setItems(ListFactureFrss); + + totalcount = new FactureFrsDB().nbrFactureFrsGestion(TextFieldNumero.getText(), IdFournisseur, LocalReception, DateReception); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchFactureFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureFrs.setVisible(false); + ButtonSearchFactureFrs.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchFactureFrs.start(); + } + + + private void NextLastSearchFactureFrs(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarFactureFrs.setVisible(true); + + ButtonSearchFactureFrs.setDisable(true); + + ThreadSearchFactureFrs = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateReception = ""; + if(DatePickerDateReception.getValue() != null){ + DateReception = DatePickerDateReception.getValue().toString(); + } + + ObservableList ListFactureFrs = new FactureFrsDB().SearchFactureFrsGestion(ParmPosition, ParamNbrligne, TextFieldNumero.getText(), IdFournisseur, LocalReception, DateReception); + + TableViewBonReception.setItems(ListFactureFrs); + + return null; + } + }; + } + }; + + ThreadSearchFactureFrs.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFactureFrs.setVisible(false); + ButtonSearchFactureFrs.setDisable(false); + } + }); + ThreadSearchFactureFrs.start(); + } + + private void GestionSearchFactureFrs() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchFactureFrs(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchFactureFrs(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchFactureFrs(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + +} diff --git a/src/main/java/Controllers/Fournisseur/FournisseurGererController.java b/src/main/java/Controllers/Fournisseur/FournisseurGererController.java new file mode 100644 index 0000000..77d1c29 --- /dev/null +++ b/src/main/java/Controllers/Fournisseur/FournisseurGererController.java @@ -0,0 +1,344 @@ +package Controllers.Fournisseur; + +import Controllers.Traitement.contro; +import Models.Fournisseur.Fournisseur; +import Models.Fournisseur.FournisseurContactDB; +import Models.Fournisseur.FournisseurContactList; +import Models.Fournisseur.FournisseurDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FournisseurGererController implements Initializable { + + @FXML public AnchorPane PanePrincipalFournisseur; + @FXML public AnchorPane AnchorPaneLoadingFournisseur; + + @FXML public Text TitreSecondaire; + + @FXML private AnchorPane PaneFournisseurAjouter; + + @FXML public Button AjouterContactFrsButton; + @FXML public Button ButtonGererAjouterFrs; + @FXML public Button ButtonGererModifierFrs; + + @FXML public TextField TextFieldNomFrs ; + @FXML public TextField TextFieldSpecialiteFrs ; + @FXML public TextField TextFieldTele1Frs ; + @FXML public TextField TextFieldTele2Frs ; + @FXML public TextField TextFieldFaxFrs ; + @FXML public TextField TextFieldMailFrs ; + @FXML public TextField TextFieldSiteWebFrs ; + @FXML public TextField TextFieldAdresseFrs ; + @FXML public ChoiceBox ChoiceBoxFormes; + + + @FXML public Text TextNomFrs ; + @FXML public Text TextSpecialiteFrs ; + @FXML public Text TextTele1Frs ; + @FXML public Text TextTele2Frs ; + @FXML public Text TextFaxFrs ; + @FXML public Text TextMailFrs ; + @FXML public Text TextSiteWebFrs ; + @FXML public Text TextAdresseFrs ; + + @FXML public TableView TableViewFournisseurContactFrs; + @FXML public TableColumn TabColCodeContactFrs; + @FXML public TableColumn TabColNomContactFrs; + @FXML public TableColumn TabColPrenomContactFrs; + @FXML public TableColumn TabColTele1ContactFrs; + @FXML public TableColumn TabColTele2ContactFrs; + @FXML public TableColumn TabColEmailContactFrs; + + @FXML public TextField TextFieldNomContactFrs ; + @FXML public TextField TextFieldPrenomContactFrs ; + @FXML public TextField TextFieldTele1ContactFrs ; + @FXML public TextField TextFieldTele2ContactFrs ; + @FXML public TextField TextFieldMailContactFrs ; + + @FXML public Text TextNomCltContactFrs ; + @FXML public Text TextPrenomCltContactFrs ; + @FXML public Text TextTele1CltContactFrs ; + @FXML public Text TextTele2CltContactFrs ; + @FXML public Text TextMailCltContactFrs ; + + public ObservableList ObservableListContactFrs = FXCollections.observableArrayList(); + + private Service ThreadFournisseurGerer; + + contro Controle = new contro(); + + Fournisseur Frs; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + ChoiceBoxFormes.setItems(FXCollections.observableArrayList("SARL","EURL","SAS","SASU","SA","SNC")); + ChoiceBoxFormes.getSelectionModel().selectFirst(); + + TabColCodeContactFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColCodeContactFrs.getStyleClass().add("Center"); + TabColCodeContactFrs.setCellValueFactory(new PropertyValueFactory("Code")); + + TabColNomContactFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNomContactFrs.getStyleClass().add("Center"); + TabColNomContactFrs.setCellValueFactory(new PropertyValueFactory("Nom")); + + + TabColPrenomContactFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColPrenomContactFrs.getStyleClass().add("Center"); + TabColPrenomContactFrs.setCellValueFactory(new PropertyValueFactory("Prenom")); + + + TabColTele1ContactFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTele1ContactFrs.getStyleClass().add("Center"); + TabColTele1ContactFrs.setCellValueFactory(new PropertyValueFactory("Tele1")); + + TabColTele2ContactFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTele2ContactFrs.getStyleClass().add("Center"); + TabColTele2ContactFrs.setCellValueFactory(new PropertyValueFactory("Tele2")); + + + TabColEmailContactFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColEmailContactFrs.getStyleClass().add("Center"); + TabColEmailContactFrs.setCellValueFactory(new PropertyValueFactory("Mail")); + + + AjouterContactFrsButton.getStyleClass().add("btn-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + AjouterContactFrsButton.setGraphic(buttonGraphic); + + + //Bouton Ajouter + ButtonGererAjouterFrs.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent e) { + if( Controle.ContrNull(TextFieldNomFrs, TextNomFrs) && + Controle.ContrNull(TextFieldSpecialiteFrs, TextSpecialiteFrs) && + Controle.ContrNumeriqueNotnull(TextFieldTele1Frs, TextTele1Frs) && + Controle.ContrNumerique(TextFieldTele2Frs, TextTele2Frs) && + Controle.ContrNumerique(TextFieldFaxFrs, TextFaxFrs) && + Controle.ContrNull(TextFieldAdresseFrs, TextAdresseFrs) + ){ + + + Fournisseur fournisseur = SetDataFournissuer(); + FournisseurDB FrsDB = new FournisseurDB(); + fournisseur = FrsDB.SetFournisseurDB(fournisseur); + + if(fournisseur.getCode()!= null){ + PaneFournisseurAjouter.getChildren().clear(); + try { + PaneFournisseurAjouter.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Fournisseur/FournisseurGestion.fxml"))); + } catch (IOException ex) { + Logger.getLogger(FournisseurGererController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + } + } + }); + + } + + + @FXML + public void clickItem(MouseEvent event) + { + if (event.getClickCount() == 2) //Checking double click + { + FournisseurContactList FrsContact = TableViewFournisseurContactFrs.getSelectionModel().getSelectedItem(); + TextFieldNomContactFrs.setText(FrsContact.getNom()); + TextFieldPrenomContactFrs.setText(FrsContact.getPrenom()); + TextFieldTele1ContactFrs.setText(FrsContact.getTele1()); + TextFieldTele2ContactFrs.setText(FrsContact.getTele2()); + TextFieldMailContactFrs.setText(FrsContact.getMail()); + + } + } + + public Fournisseur SetDataFournissuer(){ + Fournisseur fournisseur= new Fournisseur(); + fournisseur.setNom(TextFieldNomFrs.getText()); + fournisseur.setSpecialite(TextFieldSpecialiteFrs.getText()); + fournisseur.setFormes(ChoiceBoxFormes.getValue().toString()); + fournisseur.setTele1(TextFieldTele1Frs.getText()); + fournisseur.setTele2(TextFieldTele2Frs.getText()); + fournisseur.setFax(TextFieldFaxFrs.getText()); + fournisseur.setMail(TextFieldMailFrs.getText()); + fournisseur.setSiteWeb(TextFieldSiteWebFrs.getText()); + fournisseur.setAdresse(TextFieldAdresseFrs.getText()); + fournisseur.setContactFrs(ObservableListContactFrs); + return fournisseur; + } + + @FXML + private void AjouterContactFrsButtonAction(ActionEvent event) throws IOException { + + if( Controle.ContrNull(TextFieldNomContactFrs, TextNomCltContactFrs) && + Controle.ContrNull(TextFieldPrenomContactFrs, TextPrenomCltContactFrs) && + Controle.ContrNumeriqueNotnull(TextFieldTele1ContactFrs, TextTele1CltContactFrs) && + Controle.ContrNumerique(TextFieldTele2ContactFrs, TextTele2CltContactFrs) ){ + int indise = 0; + boolean notexiste = true; + while(indise(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + Frs = new FournisseurDB().GetFournisseurDB(CodeFrs); + + return null; + } + }; + } + }; + ThreadFournisseurGerer.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ObservableListContactFrs = Frs.getContactFrs(); + TableViewFournisseurContactFrs.setItems(Frs.getContactFrs()); + + TextFieldNomFrs.setText(Frs.getNom()); + TextFieldSpecialiteFrs.setText(Frs.getSpecialite()) ; + TextFieldTele1Frs.setText(Frs.getTele1()) ; + TextFieldTele2Frs.setText(Frs.getTele2()) ; + TextFieldFaxFrs.setText(Frs.getFax()) ; + TextFieldMailFrs.setText(Frs.getMail()) ; + TextFieldSiteWebFrs.setText(Frs.getSiteWeb()) ; + TextFieldAdresseFrs.setText(Frs.getAdresse()) ; + + if(Frs.getFormes() != null){ + if(Frs.getFormes().equals("SARL")){ + ChoiceBoxFormes.getSelectionModel().select(0); + }else if(Frs.getFormes().equals("EURL")){ + ChoiceBoxFormes.getSelectionModel().select(1); + }else if(Frs.getFormes().equals("SAS")){ + ChoiceBoxFormes.getSelectionModel().select(2); + }else if(Frs.getFormes().equals("SASU")){ + ChoiceBoxFormes.getSelectionModel().select(3); + }else if(Frs.getFormes().equals("SA")){ + ChoiceBoxFormes.getSelectionModel().select(4); + }else if(Frs.getFormes().equals("SNC")){ + ChoiceBoxFormes.getSelectionModel().select(5); + } + } + + PanePrincipalFournisseur.setVisible(true); + AnchorPaneLoadingFournisseur.setVisible(false); + + } + }); + ThreadFournisseurGerer.start(); + + + ButtonGererModifierFrs.setOnAction(new EventHandler() { + + @Override + public void handle(ActionEvent e) { + + if( Controle.ContrNull(TextFieldNomFrs, TextNomFrs) && + Controle.ContrNull(TextFieldSpecialiteFrs, TextSpecialiteFrs) && + Controle.ContrNumeriqueNotnull(TextFieldTele1Frs, TextTele1Frs) && + Controle.ContrNumerique(TextFieldTele2Frs, TextTele2Frs) && + Controle.ContrNumerique(TextFieldFaxFrs, TextFaxFrs) && + Controle.ContrNull(TextFieldAdresseFrs, TextAdresseFrs) + ){ + Fournisseur fournisseur = SetDataFournissuer(); + fournisseur.setCode(CodeFrs); + FournisseurDB FrourDB= new FournisseurDB(); + boolean ResultUpdate = FrourDB.UpdFournisseurDB(fournisseur); + if(ResultUpdate){ + FournisseurContactDB FrsContactDB= new FournisseurContactDB(); + ObservableList ObservableNewListContactFrs = FXCollections.observableArrayList(); + for(FournisseurContactList ContactList : ObservableListContactFrs){ + if(ContactList.getCode().length()>0){ + FrsContactDB.UpdListFournisseurContact(ContactList.getCode(), ContactList.getNom(), ContactList.getPrenom(), ContactList.getTele1(), ContactList.getTele2(), ContactList.getMail()); + }else{ + ObservableNewListContactFrs.add(ContactList); + } + } + if(ObservableNewListContactFrs.size()>0){ + FrsContactDB.SetListFournisseurContact(ObservableNewListContactFrs, CodeFrs); + PaneFournisseurAjouter.getChildren().clear(); + } + try { + PaneFournisseurAjouter.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Fournisseur/FournisseurGestion.fxml"))); + } catch (IOException ex) { + Logger.getLogger(FournisseurGererController.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + } + }); + } + + +} diff --git a/src/main/java/Controllers/Fournisseur/FournisseurGestionController.java b/src/main/java/Controllers/Fournisseur/FournisseurGestionController.java new file mode 100644 index 0000000..bbe2b8f --- /dev/null +++ b/src/main/java/Controllers/Fournisseur/FournisseurGestionController.java @@ -0,0 +1,395 @@ +package Controllers.Fournisseur; + + +import Models.Fournisseur.FournisseurDB; +import Models.Fournisseur.FournisseurGestionList; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class FournisseurGestionController implements Initializable { + + @FXML private AnchorPane PaneFournisseurGestion ; + + @FXML private ProgressBar ProgressBarFournisseurGestion; + + @FXML public TableView TableViewFournisseurGestion; + @FXML public TableColumn TabColCodeFournisseur; + @FXML public TableColumn TabColNomFournisseur; + @FXML public TableColumn TabColTele1Fournisseur; + @FXML public TableColumn TabColTele2Fournisseur; + @FXML public TableColumn TabColFaxFournisseur; + @FXML public TableColumn TabColMailFournisseur; + @FXML public TableColumn TabColAdresseFournisseur; + @FXML public TableColumnTabColDetail ; + + @FXML public TextField TextFieldCodeFournisseur ; + @FXML public TextField TextFieldNomFournisseur ; + @FXML public TextField TextFieldAdresseFournisseur ; + @FXML public TextField TextFieldTeleFournisseur ; + @FXML public TextField TextFieldFaxFournisseur ; + @FXML public TextField TextFieldMailFournisseur ; + + @FXML private Button ButtonSearchFournisseurGestion; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + + private Service ThreadSearchFournisseurGestion; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TableViewFournisseurGestion.setEditable(true); + + TabColCodeFournisseur.setStyle( "-fx-alignment: CENTER;");TabColCodeFournisseur.getStyleClass().add("Center"); + TabColCodeFournisseur.setCellValueFactory(new PropertyValueFactory("Code")); + + TabColNomFournisseur.setStyle( "-fx-alignment: CENTER;");TabColNomFournisseur.getStyleClass().add("Center"); + TabColNomFournisseur.setCellValueFactory(new PropertyValueFactory("Nom")); + + TabColTele1Fournisseur.setStyle( "-fx-alignment: CENTER;");TabColTele1Fournisseur.getStyleClass().add("Center"); + TabColTele1Fournisseur.setCellValueFactory(new PropertyValueFactory("Tele1")); + + TabColTele2Fournisseur.setStyle( "-fx-alignment: CENTER;");TabColTele2Fournisseur.getStyleClass().add("Center"); + TabColTele2Fournisseur.setCellValueFactory(new PropertyValueFactory("Tele2")); + + TabColFaxFournisseur.setStyle( "-fx-alignment: CENTER;");TabColFaxFournisseur.getStyleClass().add("Center"); + TabColFaxFournisseur.setCellValueFactory(new PropertyValueFactory("Fax")); + + TabColMailFournisseur.setStyle( "-fx-alignment: CENTER;");TabColMailFournisseur.getStyleClass().add("Center"); + TabColMailFournisseur.setCellValueFactory(new PropertyValueFactory("Mail")); + + TabColAdresseFournisseur.setStyle( "-fx-alignment: CENTER;");TabColAdresseFournisseur.getStyleClass().add("Center"); + TabColAdresseFournisseur.setCellValueFactory(new PropertyValueFactory("Adresse")); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + ButtonSearchFournisseurGestion.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchFournisseurGestion(); + } + }); + + PaneFournisseurGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchFournisseurGestion(); + } + } + }); + + GestionSearchFournisseur(); + + + } + + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + + + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Fournisseur/FournisseurGerer.fxml")); + Parent ParentFxmlFournisseur = (Parent)fxmlLoader.load(); + + FournisseurGererController FournisseurGerer = fxmlLoader.getController(); + + FournisseurGestionList FournisseurList = ((FournisseurGestionList)getTableRow().getItem()); + FournisseurGerer.SetDataFournissuer(FournisseurList.getCode()); + + + PaneFournisseurGestion.getChildren().clear(); + PaneFournisseurGestion.getChildren().add(ParentFxmlFournisseur); + } catch (IOException ex) { + Logger.getLogger(FournisseurGestionController.class.getName()).log(Level.SEVERE, null, ex); + } + + + + + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + @FXML + private void FournisseurAjouterButtonAction(ActionEvent event) throws IOException { + PaneFournisseurGestion.getChildren().clear(); + PaneFournisseurGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Fournisseur/FournisseurGerer.fxml"))); + } + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchFournisseurGestion() + { + ProgressBarFournisseurGestion.setVisible(true); + + ButtonSearchFournisseurGestion.setDisable(true); + + ThreadSearchFournisseurGestion = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + ObservableList ListFournisseurGestions = new FournisseurDB().SearchFournisseurGestion( + position, + nbrligne, + TextFieldCodeFournisseur.getText(), + TextFieldNomFournisseur.getText(), + TextFieldAdresseFournisseur.getText(), + TextFieldTeleFournisseur.getText(), + TextFieldFaxFournisseur.getText(), + TextFieldMailFournisseur.getText()); + + TableViewFournisseurGestion.setItems(ListFournisseurGestions); + + totalcount = new FournisseurDB().nbrFournisseurGestion(TextFieldCodeFournisseur.getText(), TextFieldNomFournisseur.getText(), TextFieldAdresseFournisseur.getText(), TextFieldTeleFournisseur.getText(), TextFieldFaxFournisseur.getText(), TextFieldMailFournisseur.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchFournisseurGestion.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFournisseurGestion.setVisible(false); + ButtonSearchFournisseurGestion.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchFournisseurGestion.start(); + } + + + private void NextLastSearchFournisseurGestion(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarFournisseurGestion.setVisible(true); + + ButtonSearchFournisseurGestion.setDisable(true); + + ThreadSearchFournisseurGestion = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + ObservableList ListFournisseurGestions = new FournisseurDB().SearchFournisseurGestion(ParmPosition, ParamNbrligne, TextFieldCodeFournisseur.getText(), TextFieldNomFournisseur.getText(), TextFieldAdresseFournisseur.getText(), TextFieldTeleFournisseur.getText(), TextFieldFaxFournisseur.getText(), TextFieldMailFournisseur.getText()); + + TableViewFournisseurGestion.setItems(ListFournisseurGestions); + + return null; + } + }; + } + }; + + ThreadSearchFournisseurGestion.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarFournisseurGestion.setVisible(false); + ButtonSearchFournisseurGestion.setDisable(false); + } + }); + ThreadSearchFournisseurGestion.start(); + } + + private void GestionSearchFournisseur() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchFournisseurGestion(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchFournisseurGestion(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchFournisseurGestion(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/Home/AideController.java b/src/main/java/Controllers/Home/AideController.java new file mode 100644 index 0000000..6866653 --- /dev/null +++ b/src/main/java/Controllers/Home/AideController.java @@ -0,0 +1,38 @@ +package Controllers.Home; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.layout.AnchorPane; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class AideController implements Initializable { + + @FXML private AnchorPane AnchorPaneAide ; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + FadeTransitionNode(AnchorPaneAide); + + } + + public void FadeTransitionNode(Node AnchorPane){ + FadeTransition ft = new FadeTransition(Duration.millis(200), AnchorPane); + ft.setFromValue(0); + ft.setToValue(1.0); + ft.play(); + } + +} diff --git a/src/main/java/Controllers/Home/ContactController.java b/src/main/java/Controllers/Home/ContactController.java new file mode 100644 index 0000000..4f95564 --- /dev/null +++ b/src/main/java/Controllers/Home/ContactController.java @@ -0,0 +1,44 @@ +package Controllers.Home; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.control.ChoiceBox; +import javafx.scene.layout.AnchorPane; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ContactController implements Initializable { + + @FXML private AnchorPane AnchorPaneContact ; + + @FXML public ChoiceBox ChoiceBoxMsgSujet; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + ChoiceBoxMsgSujet.setItems(FXCollections.observableArrayList("Une question relative à un problème technique.", + "Besoin d'une nouvelle fonctionnalité.")); + + FadeTransitionNode(AnchorPaneContact); + + } + + public void FadeTransitionNode(Node AnchorPane){ + FadeTransition ft = new FadeTransition(Duration.millis(200), AnchorPane); + ft.setFromValue(0); + ft.setToValue(1.0); + ft.play(); + } + +} diff --git a/src/main/java/Controllers/Home/DashboardController.java b/src/main/java/Controllers/Home/DashboardController.java new file mode 100644 index 0000000..d2a1abb --- /dev/null +++ b/src/main/java/Controllers/Home/DashboardController.java @@ -0,0 +1,119 @@ +package Controllers.Home; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.Home.HomeDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.net.URL; +import java.util.Map; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.scene.Node; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.chart.BarChart; +import javafx.scene.chart.PieChart; +import javafx.scene.chart.XYChart; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class DashboardController implements Initializable { + + @FXML private AnchorPane AnchorPaneDashboard ; + + @FXML private Text TextYearDashboard; + @FXML private Text TextNbrClient; + @FXML private Text TextNbrVente; + @FXML private Text TextNbrCheque; + + @FXML public BarChart BarChartVente; + @FXML private PieChart PieChartVente; + + @FXML private ProgressBar ProgressBarLoading; + + private Service ThreadDashboard; + + String Year = Adaptateur.getDefaultCurrentDate("yyyy"); + + HomeDB Homedb = new HomeDB(); + + XYChart.Series series1 = new XYChart.Series(); + ObservableList pieChartData = FXCollections.observableArrayList(); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + TextYearDashboard.setText("L'année "+Year); + + FadeTransitionNode(AnchorPaneDashboard); + + ProgressBarLoading.setVisible(true); + ThreadDashboard = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + series1 = Homedb.HomeChiffreAffaireByMois(); + series1.setName(ParametreSystem.NomLocalPC); + + pieChartData = Homedb.HomeVente(Year); + + NombreVCV(); + + return null; + } + }; + } + }; + ThreadDashboard.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + BarChartVente.getData().addAll(series1); + PieChartVente.setData(pieChartData); + ProgressBarLoading.setVisible(false); + + } + }); + ThreadDashboard.start(); + + + + } + + public void FadeTransitionNode(Node AnchorPane){ + FadeTransition ft = new FadeTransition(Duration.millis(200), AnchorPane); + ft.setFromValue(0); + ft.setToValue(1.0); + ft.play(); + } + + + + + + + private void NombreVCV() + { + Map map = Homedb.HomeNbr(); + TextNbrClient.setText(map.get("client").toString()); + TextNbrVente.setText(map.get("factureclt").toString()); + TextNbrCheque.setText(map.get("cheque").toString()); + } + + +} diff --git a/src/main/java/Controllers/Home/LogicielController.java b/src/main/java/Controllers/Home/LogicielController.java new file mode 100644 index 0000000..c926453 --- /dev/null +++ b/src/main/java/Controllers/Home/LogicielController.java @@ -0,0 +1,35 @@ +package Controllers.Home; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.layout.AnchorPane; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class LogicielController implements Initializable { + + @FXML private AnchorPane AnchorPaneLogiciel ; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + FadeTransitionNode(AnchorPaneLogiciel); + } + + public void FadeTransitionNode(Node AnchorPane){ + FadeTransition ft = new FadeTransition(Duration.millis(200), AnchorPane); + ft.setFromValue(0); + ft.setToValue(1.0); + ft.play(); + } + +} diff --git a/src/main/java/Controllers/Home/MentionsController.java b/src/main/java/Controllers/Home/MentionsController.java new file mode 100644 index 0000000..d8fe655 --- /dev/null +++ b/src/main/java/Controllers/Home/MentionsController.java @@ -0,0 +1,35 @@ +package Controllers.Home; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.layout.AnchorPane; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class MentionsController implements Initializable { + + @FXML private AnchorPane AnchorPaneMentions ; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + FadeTransitionNode(AnchorPaneMentions); + } + + public void FadeTransitionNode(Node AnchorPane){ + FadeTransition ft = new FadeTransition(Duration.millis(200), AnchorPane); + ft.setFromValue(0); + ft.setToValue(1.0); + ft.play(); + } + +} diff --git a/src/main/java/Controllers/Main.java b/src/main/java/Controllers/Main.java new file mode 100644 index 0000000..f1bb36a --- /dev/null +++ b/src/main/java/Controllers/Main.java @@ -0,0 +1,11 @@ +package Controllers; + +/** + * @author Maher Ben Tili + */ +public class Main { + + public static void main(String[] args) { + App.main(args); + } +} diff --git a/src/main/java/Controllers/PrincipalController.java b/src/main/java/Controllers/PrincipalController.java new file mode 100644 index 0000000..a8e9bbf --- /dev/null +++ b/src/main/java/Controllers/PrincipalController.java @@ -0,0 +1,335 @@ +package Controllers; + +import Controllers.Traitement.MyWindow; +import Models.User.User; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.control.Accordion; +import javafx.scene.control.Label; +import javafx.scene.control.TitledPane; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + + + +public class PrincipalController implements Initializable{ + + @FXML public AnchorPane window ; + @FXML public AnchorPane Content ; + @FXML public Pane TitrePane; + @FXML public Label UsernomprenomBlad; + @FXML public Label LabelDefaultLocal; + + @FXML public ImageView ImageViewLogoPrincipal; + @FXML public ImageView ImageViewProfile; + + @FXML public Accordion accord; + @FXML public TitledPane TitledPaneAccueil; + @FXML public TitledPane TitledPaneAchat; + @FXML public TitledPane TitledPaneVente; + @FXML public TitledPane TitledPaneStock; + @FXML public TitledPane TitledPaneDiver; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + setImageLogo(); + + UsernomprenomBlad.setText(User.nom+" "+User.prenom); + + LabelDefaultLocal.setText(User.UserLocal); + + ImageViewProfile.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + try { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/User/Profile.fxml"))); + } catch (IOException ex) { + Logger.getLogger(PrincipalController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + + + /**********************Accueil************************/ + try { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Home/Dashboard.fxml"))); + } catch (IOException ex) { + Logger.getLogger(PrincipalController.class.getName()).log(Level.SEVERE, null, ex); + } + accord.setExpandedPane(TitledPaneAccueil); + + + + /********************get Width and Height Content **************************/ + + Content.widthProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observableValue, Number oldSceneWidth, Number newSceneWidth) { + MyWindow.PrincipalContentWidth = newSceneWidth; + } + }); + + Content.heightProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observableValue, Number oldSceneHeight, Number newSceneHeight) { + MyWindow.PrincipalContentHeight = newSceneHeight; + } + }); + + } + + + public void DefaultSelectedTitledPane(Integer number_titled_Pane){ + if(number_titled_Pane == 1){ + accord.setExpandedPane(TitledPaneAccueil); + }else if(number_titled_Pane == 2){ + accord.setExpandedPane(TitledPaneAchat); + }else if(number_titled_Pane == 3){ + accord.setExpandedPane(TitledPaneVente); + }else if(number_titled_Pane == 4){ + accord.setExpandedPane(TitledPaneStock); + }else if(number_titled_Pane == 5){ + accord.setExpandedPane(TitledPaneDiver); + } + } + + /*********************************Accueil****************************************/ + @FXML + private void DashbordButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Home/Dashboard.fxml"))); + } + + @FXML + private void AideButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Home/Aide.fxml"))); + } + + @FXML + private void ContactButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Home/Contact.fxml"))); + } + + @FXML + private void LogicielButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Home/Logiciel.fxml"))); + } + + @FXML + private void MentionsButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Home/Mentions.fxml"))); + } + + /*********************************Pour l'Achat************************************/ + @FXML + private void FournisseurButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Fournisseur/FournisseurGestion.fxml"))); + } + + @FXML + private void BonReceptionButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/BonReceptionFrs/BonReceptionGestionFrs.fxml"))); + } + + @FXML + private void FactureFrsButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/FactureFrs/FactureFrsGestion.fxml"))); + } + + @FXML + private void ReglementButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Reglement/ReglementGestion.fxml"))); + } + /*********************************Pour la Vente***********************************/ + + @FXML + private void VenteRapideCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/VenteRapideClt/VenteRapideClt.fxml"))); + } + + @FXML + private void PasserCommandeCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/CommandeClt/CommandeCltGestion.fxml"))); + } + + @FXML + private void BonLivraisonCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltGestion.fxml"))); + } + + @FXML + private void FactureCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/FactureClt/FactureCltGestion.fxml"))); + } + + @FXML + private void MenuClientButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Client/MenuClient.fxml"))); + } + + @FXML + private void DevisCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Devis/DevisCltGestion.fxml"))); + } + + @FXML + private void TraiteCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/TraiteClt/TraiteCltGestion.fxml"))); + } + + + + /*********************************Pour Produit**********************************/ + @FXML + private void AjouterProduitButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Produit/AjouterProduit.fxml"))); + } + + + @FXML + private void GestionProduitButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Produit/GestionProduit.fxml"))); + } + + + + + /*********************************Pour l'utilisateur***********************************/ + @FXML + private void AddUserButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/User/AddUser.fxml"))); + + } + + @FXML + private void GestionUtilisateurButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/User/GestionUtilisateur.fxml"))); + + } + + + + /********************************* Stock ***********************************/ + + @FXML + private void BondeSortieButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Stock/BondeSortie.fxml"))); + } + + @FXML + private void BondeEntrerButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Stock/BondeEntrer.fxml"))); + } + + @FXML + private void EtatStockButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Stock/EtatStockCategorie.fxml"))); + } + + /********************************* Diver ***********************************/ + + @FXML + private void ChequeCltButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/ChequeClt/ChequeCltGestion.fxml"))); + } + + @FXML + private void CaisseEntreButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Caisse/CaisseEntre.fxml"))); + } + + @FXML + private void CaisseSortieButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Caisse/CaisseSortie.fxml"))); + } + + + @FXML + private void FraisButtonAction(ActionEvent event) throws IOException { + window.getChildren().clear(); + window.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Caisse/FraisGestion.fxml"))); + } + + + private void setImageLogo() + { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + try { + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //PowerERP\conf\logo.xml + Document doc = db.parse(new File("./conf/logo.xml")); + + doc.getDocumentElement().normalize(); + + Element elementCNX = (Element) doc.getElementsByTagName("Principal").item(0); + + String pathLogo = elementCNX.getElementsByTagName("PathImage").item(0).getTextContent(); + FileInputStream fis = new FileInputStream(pathLogo); + ImageViewLogoPrincipal.setImage(new Image(fis)); + + ImageViewLogoPrincipal.setFitWidth(Double.parseDouble(elementCNX.getElementsByTagName("FitWidth").item(0).getTextContent())); + ImageViewLogoPrincipal.setFitHeight(Double.parseDouble(elementCNX.getElementsByTagName("FitHeight").item(0).getTextContent())); + ImageViewLogoPrincipal.setLayoutX(Double.parseDouble(elementCNX.getElementsByTagName("LayoutX").item(0).getTextContent())); + ImageViewLogoPrincipal.setLayoutY(Double.parseDouble(elementCNX.getElementsByTagName("LayoutY").item(0).getTextContent())); + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println("error AuthentificationController/setImageLogo "+e.getMessage()); + } + } +} diff --git a/src/main/java/Controllers/Produit/AjouterProduitController.java b/src/main/java/Controllers/Produit/AjouterProduitController.java new file mode 100644 index 0000000..033b890 --- /dev/null +++ b/src/main/java/Controllers/Produit/AjouterProduitController.java @@ -0,0 +1,349 @@ +package Controllers.Produit; + +import Controllers.Categorie.AjouterCategorieController; +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Categorie.CategorieDB; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.ColorPicker; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.Text; +import javafx.util.Duration; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class AjouterProduitController implements Initializable { + + @FXML private ProgressBar ProgressBarAjouterProduit; + + //private AnchorPane Content ; + @FXML private AnchorPane AnchorPaneAjouterprod ; + @FXML private AnchorPane AnchorPaneAjouterProduit ; + + @FXML private TextField AjouterProduitReference; + @FXML private TextField AjouterProduitCodeBarre; + @FXML private TextField AjouterProduitdesignation ; + @FXML private TextField AjouterProduitGarantie ; + @FXML private TextField AjouterProduitMarque ; + + @FXML private TextField AjouterProduitPrixAchatTTC ; + @FXML private TextField AjouterProduittvaAchat ; + @FXML private TextField AjouterProduitPrixAchatHT ; + + @FXML private TextField AjouterProduitMarge ; + + @FXML private TextField AjouterProduitPrixVenteTTC ; + @FXML private TextField AjouterProduittvaVente ; + @FXML private TextField AjouterProduitPrixVenteHT ; + + @FXML private TextField AjouterProduitPoids ; + @FXML private TextField AjouterProduitDimensions; + @FXML private TextField AjouterProduitVitesse; + @FXML private TextField AjouterProduitPuissance; + @FXML private TextField AjouterProduitCapacite; + + @FXML public TextField AjouterProduitcategorie ; + @FXML private ColorPicker AjouterProduitCouleur ; + @FXML private TextArea TextAreaDescription ; + + + @FXML private Text ErreurReference ; + @FXML private Text ErreurDesignation ; + @FXML private Text ErreurPrixVenteHT; + @FXML private Text ErreurtvaVente ; + @FXML private Text ErreurPrixVenteTTC; + + @FXML private Text ErreurGarantie ; + @FXML private Text Erreurcategorie ; + @FXML private Text ErreurMarque ; + @FXML private Text ErreurCodeBarre; + @FXML private Text ErreurPrixAchatHT; + @FXML private Text ErreurtvaAchat ; + @FXML private Text ErreurPrixAchatTTC; + + @FXML private Text ErreurMarge; + + @FXML private Text TextCurrencySign; + + @FXML private GridPane GridPaneSuccessAddProd; + @FXML private Button ButtonResetFormProduit; + @FXML private Text TextSuccessAddProd; + + private Service ThreadAjouterProduit; + + String address = " "; + contro ctl= new contro() ; + Produit prod = new Produit(); + ProduitDB dbproduit = new ProduitDB(); + CategorieDB dbcategorie = new CategorieDB(); + + + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TextSuccessAddProd.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + setCategorieFormData(); + + TextCurrencySign.setText(ParametreSystem.CurrencySign); + + + AjouterProduittvaAchat.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke){ + + if(!ctl.isFloatNotnull(AjouterProduitPrixAchatHT.getText()) && !ctl.isFloatNotnull(AjouterProduittvaAchat.getText())){ + float prixachatht = Adaptateur.StringToFloat(AjouterProduitPrixAchatHT.getText()); + float tvavente = Adaptateur.StringToFloat(AjouterProduittvaAchat.getText()); + float prixachatttc = prixachatht + (prixachatht*tvavente)/100 ; + AjouterProduitPrixAchatTTC.setText(Adaptateur.ArrondFloatToString(prixachatttc)); + } + } + }); + + AjouterProduitMarge.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke){ + if(!ctl.isFloatNotnull(AjouterProduitPrixAchatTTC.getText().replace(',','.')) && !ctl.isFloatNotnull(AjouterProduitMarge.getText().replace(',','.')) ){ + float marge = Adaptateur.StringToFloat(AjouterProduitMarge.getText()); + float prixachatttc = Adaptateur.StringToFloat(AjouterProduitPrixAchatTTC.getText()); + float prixventht = prixachatttc + (prixachatttc*marge)/100 ; + AjouterProduitPrixVenteHT.setText(Adaptateur.ArrondFloatToString(prixventht)); + } + } + }); + + AjouterProduittvaVente.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke){ + if(!ctl.isFloatNotnull(AjouterProduitPrixVenteHT.getText().replace(',','.')) && !ctl.isFloatNotnull(AjouterProduittvaVente.getText().replace(',','.'))){ + float prixventht = Adaptateur.StringToFloat(AjouterProduitPrixVenteHT.getText()); + float tvavente = Adaptateur.StringToFloat(AjouterProduittvaVente.getText()); + + float prixventttc = prixventht + ((prixventht*tvavente)/100) ; + //System.out.println("Prix H.T: "+prixventht*6+" TVA: "+((prixventht*tvavente)/100)*6+" PrixTTC"+prixventttc*6); + AjouterProduitPrixVenteTTC.setText(Adaptateur.ArrondFloatToString(prixventttc)); + } + } + }); + } + + + + //ajouter un nouvelle catégorie + @FXML + private void AjouterCategorieButtonAction(ActionEvent event) throws IOException { + final AjouterCategorieController AjouterCategorie = new AjouterCategorieController(); + AjouterCategorie.Show(); + AjouterCategorie.ButtonAjouterCategory.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent e) { + String NewCategory = AjouterCategorie.AjouterCategorieTraitement(); + AjouterProduitcategorie.setText(NewCategory); + } + }); + } + + + @FXML + private void AjouterProduitButtonAction(ActionEvent event) throws IOException { + + if( ctl.ContrNull(AjouterProduitReference,ErreurReference) && + ctl.ContrNull(AjouterProduitdesignation, ErreurDesignation)&& + ctl.ContrNull(AjouterProduitcategorie, Erreurcategorie)&& + ctl.ContrNull(AjouterProduitMarque, ErreurMarque)&& + ctl.ContrNumerique(AjouterProduitGarantie, ErreurGarantie)&& + ctl.ContrReelNotNull(AjouterProduitPrixAchatHT, ErreurPrixAchatHT)&& + ctl.ContrReelNotNull(AjouterProduittvaAchat, ErreurtvaAchat)&& + ctl.ContrReelNotNull(AjouterProduitPrixAchatTTC, ErreurPrixAchatTTC)&& + ctl.ContrReelNotNull(AjouterProduitMarge, ErreurMarge) && + ctl.ContrReelNotNull(AjouterProduitPrixVenteHT, ErreurPrixVenteHT)&& + ctl.ContrReelNotNull(AjouterProduittvaVente, ErreurtvaVente)&& + ctl.ContrReelNotNull(AjouterProduitPrixVenteTTC, ErreurPrixVenteTTC) && + ControleReferenceDB() && ControleCodeBarreDB()){ + + if(!new CategorieDB().verifyCategorie(AjouterProduitcategorie.getText())){ + Erreurcategorie.setText("categorie n'existe pas"); + Erreurcategorie.setStyle("-fx-border-color:#f20606;"); + }else{ + this.getProduit(); + if(dbproduit.addProduit(prod)){ //l'insertion des données dont la Base des données et afficher le message du succés + + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneAjouterProduit); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) + { + GridPaneSuccessAddProd.setVisible(true); + ButtonResetFormProduit.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + GridPaneSuccessAddProd.setVisible(false); + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneAjouterProduit); + ft.setFromValue(0.0); + ft.setToValue(1.0); + ft.play(); + restechamp(); + } + }); + } + }); + } + else{ + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + } + } + } + + private boolean ControleReferenceDB() + { + if(dbproduit.verifyReferenceProduit(AjouterProduitReference.getText())) + { + ErreurReference.setText("référence existe déja"); + AjouterProduitReference.setStyle("-fx-border-color:#f20606;"); + return false; + }else{ + ErreurReference.setText(""); + AjouterProduitReference.setStyle(null); + return true; + } + } + + private boolean ControleCodeBarreDB() + { + if(!ctl.isStringNull(AjouterProduitCodeBarre.getText())) + { + if(dbproduit.verifyCodeBarreProduit(AjouterProduitCodeBarre.getText())) + { + ErreurCodeBarre.setText("Code Barre existe déja"); + AjouterProduitCodeBarre.setStyle("-fx-border-color:#f20606;"); + return false; + }else{ + ErreurCodeBarre.setText(""); + AjouterProduitCodeBarre.setStyle(null); + return true; + } + } + ErreurCodeBarre.setText(""); + AjouterProduitCodeBarre.setStyle(null); + return true; + } + + //récuperation des formulaire dans l'objet Produit + private void getProduit() + { + prod.setReference(AjouterProduitReference.getText()); + prod.setCodebarre(AjouterProduitCodeBarre.getText()); + prod.setDesignation(AjouterProduitdesignation.getText()); + prod.setCategorie(AjouterProduitcategorie.getText()); + + prod.setGarantieString(AjouterProduitGarantie.getText()); + prod.setMarque(AjouterProduitMarque.getText()); + + prod.setPrixachatttc(AjouterProduitPrixAchatTTC.getText()); + prod.setPrixachatht(AjouterProduitPrixAchatHT.getText()); + prod.setTvaachat(AjouterProduittvaAchat.getText()); + + prod.setMarge(AjouterProduitMarge.getText()); + + prod.setPrixventettc(AjouterProduitPrixVenteTTC.getText()); + prod.setPrixventeht(AjouterProduitPrixVenteHT.getText()); + prod.setTvavente(AjouterProduittvaVente.getText()); + + prod.setPoids(AjouterProduitPoids.getText()); + prod.setCapacite(AjouterProduitCapacite.getText()); + prod.setDimensions(AjouterProduitDimensions.getText()); + prod.setVitesse(AjouterProduitVitesse.getText()); + prod.setPuissance(AjouterProduitPuissance.getText()); + prod.setCouleur(AjouterProduitCouleur.getValue().toString()); + prod.setDescription(TextAreaDescription.getText()); + + } + + + private void restechamp() + { + AjouterProduitReference.setText(""); + AjouterProduitCodeBarre.setText(""); + AjouterProduitdesignation.setText(""); + AjouterProduitGarantie.setText(""); + AjouterProduitcategorie.setText(""); + AjouterProduittvaAchat.setText(""); + AjouterProduitPrixAchatHT.setText(""); + AjouterProduitPrixVenteHT.setText(""); + AjouterProduittvaVente.setText(""); + AjouterProduitGarantie.setText(""); + AjouterProduitMarque.setText(""); + AjouterProduitPoids.setText(""); + AjouterProduitPrixAchatTTC.setText(""); + AjouterProduitPrixVenteTTC.setText(""); + AjouterProduitMarge.setText(""); + AjouterProduitDimensions.setText(""); + AjouterProduitVitesse.setText(""); + AjouterProduitPuissance.setText(""); + AjouterProduitCapacite.setText(""); + AjouterProduitCouleur.setValue(Color.TRANSPARENT); + TextAreaDescription.setText(""); + + } + + private void setCategorieFormData() + { + ProgressBarAjouterProduit.setVisible(true); + + ThreadAjouterProduit = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + TextFields.bindAutoCompletion(AjouterProduitcategorie, new CategorieDB().getListCategorie()); + + return null; + } + }; + } + }; + ThreadAjouterProduit.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarAjouterProduit.setVisible(false); + } + }); + ThreadAjouterProduit.start(); + } +} diff --git a/src/main/java/Controllers/Produit/GestionProduitController.java b/src/main/java/Controllers/Produit/GestionProduitController.java new file mode 100644 index 0000000..0114166 --- /dev/null +++ b/src/main/java/Controllers/Produit/GestionProduitController.java @@ -0,0 +1,487 @@ +package Controllers.Produit; + +import Models.Categorie.CategorieDB; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.util.Callback; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class GestionProduitController implements Initializable { + + @FXML private Button addProduit ; + @FXML private Button ButtonSearchProduit ; + @FXML private Label LabelCount ; + + @FXML private ChoiceBox NbrLigne ; + + @FXML private AnchorPane AnchorPaneGestionClt; + @FXML private AnchorPane ListerPages; + + @FXML private ProgressBar ProgressBarProduit; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + + @FXML private AnchorPane AnchorPaneProduit; + @FXML private TextField GestionProduitReference ; + @FXML private TextField GestionProduitCodeBarre; + @FXML private TextField GestionProduitCategorie; + @FXML private TextField GestionProduitDesignation; + + @FXML private TableView TableViewListeGestionProduit ; + + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColMarque ; + @FXML private TableColumn TabColCategorie; + @FXML private TableColumn TabColPrixTTC; + @FXML private TableColumn TabColQuantite; + @FXML private TableColumn TabColAction ; + + private Service ThreadSearchProduit; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0 ; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + public static String refprod ; + + ProduitDB ProdDB =new ProduitDB(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + + getCategorie(); + + + //comboboxnombre des lignes tableview + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + this.AjouterProduit(); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + TabColMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColCategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + TabColPrixTTC.setCellValueFactory(new PropertyValueFactory("prixventettc")); + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + + TabColAction.setSortable(true); + TabColAction.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColAction.getStyleClass().add("Center"); + TabColAction.setCellValueFactory(new Callback,ObservableValue>(){ + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + + + //double clique sur une ligne + TableViewListeGestionProduit.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + if(event.getClickCount()>1){ + if(TableViewListeGestionProduit.getSelectionModel().getSelectedIndex()>=0){ + //System.out.println(getCode()); + GestionProduitController.refprod=TableViewListeGestionProduit.getSelectionModel().getSelectedItem().getReference(); + AnchorPaneProduit.getChildren().clear(); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Produit/ModifierProduit.fxml")); + Parent root = (Parent)fxmlLoader.load(); + AnchorPaneProduit.getChildren().add(root); + } catch (IOException ex) { + Logger.getLogger(GestionProduitController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + } + + } + }); + + + GestionSearchProduit(); + + ButtonSearchProduit.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchProduit(); + } + }); + + AnchorPaneProduit.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + }); + + } + + + private void getCategorie() + { + ProgressBarProduit.setVisible(true); + + ThreadSearchProduit = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + TextFields.bindAutoCompletion(GestionProduitCategorie, new CategorieDB().getListCategorie()); + + return null; + } + }; + } + }; + + ThreadSearchProduit.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarProduit.setVisible(false); + } + }); + ThreadSearchProduit.start(); + } + + + private void AjouterProduit() + { + addProduit.getStyleClass().add("btn-success"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconadd.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + addProduit.setGraphic(buttonGraphic); + + addProduit.setOnAction(new EventHandler() { + @Override public void handle(ActionEvent e) { + try { + AnchorPaneProduit.getChildren().clear(); + AnchorPaneProduit.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Produit/AjouterProduit.fxml"))); + } catch (IOException ex) { + Logger.getLogger(GestionProduitController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconedit.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + // get Selected Item + Produit currentPerson = (Produit) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + GestionProduitController.refprod=currentPerson.getReference(); + AnchorPaneProduit.getChildren().clear(); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Produit/ModifierProduit.fxml")); + Parent root = (Parent)fxmlLoader.load(); + AnchorPaneProduit.getChildren().add(root); + } catch (IOException ex) { + Logger.getLogger(GestionProduitController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + + + + + private void getCategorieProduitOnclick() + { + GestionProduitCategorie.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if(totalcount<10){ + ListerPages.setVisible(false); + } + else{ + ListerPages.setVisible(true); + } + SearchProduit(); + } + }); + GestionProduitCategorie.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, String newValue) { + SearchProduit(); + } + }); + } + + + + + + + + + + + + /****************************************************************************** * + * * + * Methode last Next TableView client Entreprise * + * * * + ******************************************************************************/ + + private void SearchProduit() + { + ProgressBarProduit.setVisible(true); + + ButtonSearchProduit.setDisable(true); + + ThreadSearchProduit = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + ObservableList ListProduits = new ProduitDB().SearchProduit(position, nbrligne, true, GestionProduitReference.getText(), GestionProduitCategorie.getText(), GestionProduitCodeBarre.getText(), GestionProduitDesignation.getText()); + TableViewListeGestionProduit.setItems(ListProduits); + + totalcount = new ProduitDB().nbrSearchProduit(true, GestionProduitReference.getText(), GestionProduitCategorie.getText(), GestionProduitCodeBarre.getText(), GestionProduitDesignation.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchProduit.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarProduit.setVisible(false); + ButtonSearchProduit.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchProduit.start(); + } + + + private void NextLastSearchProduit(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarProduit.setVisible(true); + + ButtonSearchProduit.setDisable(true); + + ThreadSearchProduit = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{// + + ObservableList ListProduits = new ProduitDB().SearchProduit(ParmPosition, ParamNbrligne, true, GestionProduitReference.getText(), GestionProduitCategorie.getText(), GestionProduitCodeBarre.getText(), GestionProduitDesignation.getText()); + + TableViewListeGestionProduit.setItems(ListProduits); + + return null; + } + }; + } + }; + + ThreadSearchProduit.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarProduit.setVisible(false); + ButtonSearchProduit.setDisable(false); + } + }); + ThreadSearchProduit.start(); + } + + private void GestionSearchProduit() + { + + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchProduit(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchProduit(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchProduit(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } +} + diff --git a/src/main/java/Controllers/Produit/ModifierProduitController.java b/src/main/java/Controllers/Produit/ModifierProduitController.java new file mode 100644 index 0000000..a59b8d8 --- /dev/null +++ b/src/main/java/Controllers/Produit/ModifierProduitController.java @@ -0,0 +1,297 @@ +package Controllers.Produit; + +import Controllers.Traitement.contro; +import Models.Categorie.CategorieDB; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import java.io.IOException; +import java.math.RoundingMode; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.animation.FadeTransition; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ColorPicker; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.Text; + +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ModifierProduitController implements Initializable { + + /** + * Initializes the controller class. + */ + public String Reference = GestionProduitController.refprod; + + //private AnchorPane Content ; + @FXML private AnchorPane AnchorPaneModifierprod ; + @FXML private AnchorPane AnchorPaneModifierProduit ; + @FXML private TextField ModifierProduitReference; + @FXML private TextField ModifierProduitCodeBarre; + @FXML private TextField ModifierProduitdesignation ; + @FXML private TextField ModifierProduitGarantie ; + @FXML private TextField ModifierProduitMarque ; + @FXML private ComboBox ModifierProduitcategorie ; + @FXML private ColorPicker ModifierProduitCouleur ; + @FXML private TextArea ModifierProduitDescription ; + + @FXML private TextField ModifierProduitPrixAchatTTC ; + @FXML private TextField ModifierProduittvaAchat ; + @FXML private TextField ModifierProduitPrixAchatHT ; + + @FXML private TextField ModifierProduitMarge ; + + @FXML private TextField ModifierProduitPrixVenteTTC ; + @FXML private TextField ModifierProduittvaVente ; + @FXML private TextField ModifierProduitPrixVenteHT ; + + + @FXML private TextField ModifierProduitPoids ; + @FXML private TextField ModifierProduitDimensions; + @FXML private TextField ModifierProduitVitesse; + @FXML private TextField ModifierProduitPuissance; + @FXML private TextField ModifierProduitCapacite; + + @FXML private Text ErreurReference ; + @FXML private Text ErreurCodeBarre ; + @FXML private Text ErreurDesignation ; + + @FXML private Text ErreurGarantie ; + @FXML private Text Erreurcategorie ; + @FXML private Text ErreurMarque ; + + @FXML private Text ErreurPrixAchatHT ; + @FXML private Text ErreurtvaAchat ; + @FXML private Text ErreurPrixAchatTTC ; + + @FXML private Text ErreurMarge ; + + @FXML private Text ErreurPrixVenteHT ; + @FXML private Text ErreurtvaVente ; + @FXML private Text ErreurPrixVenteTTC ; + + contro ctl= new contro() ; + Produit prod = new Produit(); + ProduitDB dbproduit = new ProduitDB(); + CategorieDB dbcategorie = new CategorieDB(); + DecimalFormat df = new DecimalFormat("#.000"); + + + @Override + public void initialize(URL url, ResourceBundle rb) { + //liste categorie + ModifierProduitcategorie.getItems().addAll(dbcategorie.getListCategorie()); + + prod = dbproduit.getProduit(Reference); + + ModifierProduitReference.setText(prod.getReference()); + ModifierProduitMarque.setText(prod.getMarque()) ; + ModifierProduitGarantie.setText(String.valueOf(prod.getGarantie())) ; + ModifierProduitdesignation.setText(prod.getDesignation()) ; + ModifierProduitcategorie.setValue(prod.getCategorie()) ; + + df.setMaximumFractionDigits(3); + + ModifierProduitPrixAchatHT.setText(prod.getPrixachatht()); + ModifierProduittvaAchat.setText(prod.getTvaachat()) ; + ModifierProduitPrixAchatTTC.setText(prod.getPrixachatttc()); + + ModifierProduitMarge.setText(prod.getMarge()) ; + + ModifierProduitPrixVenteHT.setText(prod.getPrixventeht()) ; + ModifierProduittvaVente.setText(prod.getTvavente()); + ModifierProduitPrixVenteTTC.setText(prod.getPrixventettc()) ; + + Color c = Color.web(prod.getCouleur()); + ModifierProduitCouleur.setValue(c) ; + ModifierProduitDescription.setText(prod.getDescription()) ; + ModifierProduitCodeBarre.setText(prod.getCodebarre()); + ModifierProduitPoids.setText(prod.getPoids()) ; + ModifierProduitDimensions.setText(prod.getDimensions()); + ModifierProduitVitesse.setText(prod.getVitesse()); + ModifierProduitPuissance.setText(prod.getPuissance()); + ModifierProduitCapacite.setText(prod.getCapacite()); + + ModifierProduittvaAchat.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke){ + + if(!ctl.isFloatNotnull(ModifierProduitPrixAchatHT.getText()) && !ctl.isFloatNotnull(ModifierProduittvaAchat.getText())){ + float prixachatht = Float.parseFloat(ModifierProduitPrixAchatHT.getText().replace(',','.')); + float tvavente = Float.parseFloat(ModifierProduittvaAchat.getText().replace(',','.')); + float prixachatttc = prixachatht + (prixachatht*tvavente)/100 ; + df.setRoundingMode(RoundingMode.DOWN); + ModifierProduitPrixAchatTTC.setText(df.format(prixachatttc).replace(',','.')); + } + } + }); + + ModifierProduitMarge.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke){ + if(!ctl.isFloatNotnull(ModifierProduitPrixAchatTTC.getText()) && !ctl.isFloatNotnull(ModifierProduitMarge.getText()) ){ + float marge = Float.parseFloat(ModifierProduitMarge.getText().replace(',','.')); + float prixachatttc = Float.parseFloat(ModifierProduitPrixAchatTTC.getText().replace(',','.')); + float prixventht = prixachatttc + (prixachatttc*marge)/100 ; + df.setRoundingMode(RoundingMode.DOWN); + ModifierProduitPrixVenteHT.setText(df.format(prixventht).replace(',','.')); + } + } + }); + + ModifierProduittvaVente.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke){ + if(!ctl.isFloatNotnull(ModifierProduitPrixVenteHT.getText()) && !ctl.isFloatNotnull(ModifierProduittvaVente.getText())){ + float prixventht = Float.parseFloat(ModifierProduitPrixVenteHT.getText().replace(',','.')); + float tvavente = Float.parseFloat(ModifierProduittvaVente.getText().replace(',','.')); + float prixventttc = prixventht + (prixventht*tvavente)/100 ; + df.setRoundingMode(RoundingMode.DOWN); + ModifierProduitPrixVenteTTC.setText(df.format(prixventttc).replace(',','.')); + } + } + }); + + + + } + + @FXML + private void ModifierProduitButtonAction(ActionEvent event) throws IOException { + if( ctl.ContrNull(ModifierProduitReference,ErreurReference) && + ctl.ContrNull(ModifierProduitdesignation, ErreurDesignation)&& + ctl.ContrNullValue(ModifierProduitcategorie, Erreurcategorie)&& + ctl.ContrNull(ModifierProduitMarque, ErreurMarque)&& + ctl.ContrNumerique(ModifierProduitGarantie, ErreurGarantie)&& + ctl.ContrNumerique(ModifierProduitCodeBarre, ErreurCodeBarre)&& + ctl.ContrReelNotNull(ModifierProduitPrixAchatHT, ErreurPrixAchatHT)&& + ctl.ContrReelNotNull(ModifierProduittvaAchat, ErreurtvaAchat)&& + ctl.ContrReelNotNull(ModifierProduitPrixAchatTTC, ErreurPrixAchatTTC)&& + ctl.ContrReelNotNull(ModifierProduitMarge, ErreurMarge) && + ctl.ContrReelNotNull(ModifierProduitPrixVenteHT, ErreurPrixVenteHT)&& + ctl.ContrReelNotNull(ModifierProduittvaVente, ErreurtvaVente)&& + ctl.ContrReelNotNull(ModifierProduitPrixVenteTTC, ErreurPrixVenteTTC) ){ + + if(dbproduit.UpdateProduit(getProduit(),Reference)==1){ + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneModifierProduit); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + Image success = new Image(getClass().getResourceAsStream("/Public/icon/successfully.png")); + ImageView iv1 = new ImageView(); + iv1.setImage(success); + + Text text= new Text(); + text.setText("La modification a été effectuée avec succès"); + text.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + Button buttonOk = new Button("OK"); + buttonOk.getStyleClass().add("btn-primary"); + buttonOk.setPrefSize(100, 30); + + final StackPane stackpane = new StackPane(); + stackpane.setLayoutX(140); + stackpane.setLayoutY(100); + stackpane.setPrefHeight(200); + stackpane.setPrefWidth(200); + stackpane.getChildren().add(iv1); + stackpane.getChildren().add(text); + stackpane.getChildren().add(buttonOk); + StackPane.setAlignment(iv1, Pos.BASELINE_CENTER); + StackPane.setAlignment(text, Pos.TOP_CENTER); + StackPane.setAlignment(buttonOk, Pos.CENTER); + + AnchorPaneModifierprod.setLeftAnchor(stackpane, 83.0); + AnchorPaneModifierprod.setRightAnchor(stackpane, 83.0); + AnchorPaneModifierprod.setTopAnchor(stackpane,220.0); + AnchorPaneModifierprod.setBottomAnchor(stackpane,220.0); + AnchorPaneModifierprod.getChildren().add(stackpane); + + buttonOk.setOnAction(new EventHandler() { //supprimer le message du suucés et reaficher les formulaires + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + try { + AnchorPaneModifierprod.getChildren().clear(); + AnchorPaneModifierprod.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Produit/GestionProduit.fxml"))); + } catch (IOException ex) { + Logger.getLogger(GestionProduitController.class.getName()).log(Level.SEVERE, null, ex); + } + FadeTransition ft = new FadeTransition(Duration.millis(400), AnchorPaneModifierprod); + ft.setFromValue(0.0); + ft.setToValue(1.0); + ft.play(); + + } + }); + + } + }); + } + } + } + private Produit getProduit() + { + Produit prodUpdate = new Produit(); + + prodUpdate.setReference(ModifierProduitReference.getText()); + prodUpdate.setCodebarre(ModifierProduitCodeBarre.getText()); + prodUpdate.setDesignation(ModifierProduitdesignation.getText()); + prodUpdate.setCategorie(ModifierProduitcategorie.getValue().toString()); + prodUpdate.setGarantieString(ModifierProduitGarantie.getText()); + prodUpdate.setMarque(ModifierProduitMarque.getText()); + + prodUpdate.setPrixachatttc(ModifierProduitPrixAchatTTC.getText().replace(',','.')); + prodUpdate.setPrixachatht(ModifierProduitPrixAchatHT.getText().replace(',','.')); + prodUpdate.setTvaachat(ModifierProduittvaAchat.getText().replace(',','.')); + + prodUpdate.setMarge(ModifierProduitMarge.getText().replace(',','.')); + + prodUpdate.setPrixventettc(ModifierProduitPrixVenteTTC.getText().replace(',','.')); + prodUpdate.setPrixventeht(ModifierProduitPrixVenteHT.getText().replace(',','.')); + prodUpdate.setTvavente(ModifierProduittvaVente.getText().replace(',','.')); + + prodUpdate.setPoids(ModifierProduitPoids.getText()); + prodUpdate.setCapacite(ModifierProduitCapacite.getText()); + prodUpdate.setDimensions(ModifierProduitDimensions.getText()); + prodUpdate.setVitesse(ModifierProduitVitesse.getText()); + prodUpdate.setPuissance(ModifierProduitPuissance.getText()); + prodUpdate.setCouleur(ModifierProduitCouleur.getValue().toString()); + prodUpdate.setDescription(ModifierProduitDescription.getText()); + + return prodUpdate ; + } + + + + + +} diff --git a/src/main/java/Controllers/Produit/RechercherProduitController.java b/src/main/java/Controllers/Produit/RechercherProduitController.java new file mode 100644 index 0000000..9df6808 --- /dev/null +++ b/src/main/java/Controllers/Produit/RechercherProduitController.java @@ -0,0 +1,470 @@ +package Controllers.Produit; + +import Models.Produit.Produit; +import Controllers.DevisClt.DevisAjouterController; +import Controllers.Traitement.MyWindow; +import Models.Categorie.CategorieDB; +import Models.Produit.ProduitDB; +import Models.User.User; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import org.controlsfx.control.textfield.TextFields; + + + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class RechercherProduitController { + + @FXML public AnchorPane anchorpane ; + + @FXML private ProgressBar ProgressBarProduit; + + @FXML private Button ButtonSearchProduit; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount ; + @FXML private ChoiceBox NbrLigne ; + + @FXML private TextField GestionProduitReference ; + @FXML private TextField GestionProduitDesignation; + @FXML private TextField GestionProduitCodeBarre; + @FXML private TextField GestionProduitCategorie; + + @FXML private TableView TableViewListeGestionProduit ; + + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignaton; + @FXML private TableColumn TabColMarque ; + @FXML private TableColumn TabColCategorie; + @FXML private TableColumn TabColPrixAchatTTC; + @FXML private TableColumn TabColPrixVenteTTC; + @FXML private TableColumn TabColQuantite; + @FXML public TableColumn TabColAction ; + + @FXML private AnchorPane PaneStockNegaNon; + @FXML private Text TextEnStock; + @FXML private RadioButton StockNegaOui; + @FXML private RadioButton StockNegaNon; + + public Node nodeFxml ; + + private Boolean StockNegatif = false; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + public static String refprod ; + + public Object[] ArrayObjectDataSave = new Object[10]; + + private Service ThreadSearchRerchecheProduit; + + + public RechercherProduitController(Boolean TypePrixTTC) { //TypePrixTTC true Vente | false Achat + + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Produit/RechercherProduit.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + + TextFields.bindAutoCompletion(GestionProduitCategorie, new CategorieDB().getListCategorie()); + + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignaton.setCellValueFactory(new PropertyValueFactory("designation")); + TabColMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColCategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + + TabColPrixAchatTTC.setCellValueFactory(new PropertyValueFactory("prixachatttc")); + TabColPrixAchatTTC.setStyle( "-fx-alignment: CENTER;"); + TabColPrixAchatTTC.getStyleClass().add("Center"); + + TabColPrixVenteTTC.setCellValueFactory(new PropertyValueFactory("prixventettc")); + TabColPrixVenteTTC.setStyle( "-fx-alignment: CENTER;"); + TabColPrixVenteTTC.getStyleClass().add("Center"); + + if(TypePrixTTC){ + TabColPrixVenteTTC.setVisible(true); + TabColPrixAchatTTC.setVisible(false); + }else{ + TabColPrixAchatTTC.setVisible(true); + TabColPrixVenteTTC.setVisible(false); + } + + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColAction.setStyle( "-fx-alignment: CENTER;"); + TabColAction.getStyleClass().add("Center"); + + if(TypePrixTTC){//Vente Stock peux être négatif table produit + if(User.SotckNegatif){ //L'utilisateur à le droit de vente en négative + PaneStockNegaNon.setVisible(true); + TextEnStock.setVisible(true); + } + }else{ //Achat table produit + PaneStockNegaNon.setVisible(true); + TextEnStock.setVisible(true); + } + + //table stock + StockNegaOui.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + StockNegatif = false; + SearchProduit(); + } + }); + + //table produit + StockNegaNon.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + StockNegatif = true; + SearchProduit(); + } + }); + + + ButtonSearchProduit.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchProduit(); + } + }); + + anchorpane.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + }); + + GestionSearchProduit(); + + } catch (IOException ex) { + Logger.getLogger(RechercherProduitController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Stage stage = MyWindow.myStage; + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + stage.setScene(scene); + stage.show(); + } + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + try { + // get Selected ItemButtonCell + Produit currentPerson = (Produit) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Devis/DevisAjouter.fxml")); + Parent devis = (Parent) fxmlLoader.load(); + + DevisAjouterController devisajouter = fxmlLoader.getController(); + devisajouter.SetProduit(currentPerson.getReference()); + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(devis, 3); + } catch (IOException ex) { + Logger.getLogger(RechercherProduitController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + + + + } + + + @FXML + private void QuiterButtonAction(ActionEvent event) throws IOException { + anchorpane.setVisible(false); + } + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchProduit() + { + ProgressBarProduit.setVisible(true); + + ButtonSearchProduit.setDisable(true); + + ThreadSearchRerchecheProduit = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + ObservableList ListeCltPersonne = new ProduitDB().SearchProduit( + position, + nbrligne, + StockNegatif, + GestionProduitReference.getText(), + GestionProduitCategorie.getText(), + GestionProduitCodeBarre.getText(), + GestionProduitDesignation.getText()); + + TableViewListeGestionProduit.setItems(null); + TableViewListeGestionProduit.refresh(); + TableViewListeGestionProduit.setItems(ListeCltPersonne); + + totalcount = new ProduitDB().nbrSearchProduit(StockNegatif, GestionProduitReference.getText(), GestionProduitCategorie.getText(), GestionProduitCategorie.getText(), GestionProduitDesignation.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchRerchecheProduit.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarProduit.setVisible(false); + ButtonSearchProduit.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchRerchecheProduit.start(); + } + + + + private void NextLastSearchProduit(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarProduit.setVisible(true); + + ButtonSearchProduit.setDisable(true); + + ThreadSearchRerchecheProduit = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + ObservableList ListeCltPersonne = new ProduitDB().SearchProduit( + ParmPosition, + ParamNbrligne, + StockNegatif, + GestionProduitReference.getText(), + GestionProduitCategorie.getText(), + GestionProduitCodeBarre.getText(), + GestionProduitDesignation.getText()); + + TableViewListeGestionProduit.setItems(ListeCltPersonne); + + return null; + } + }; + } + }; + + ThreadSearchRerchecheProduit.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarProduit.setVisible(false); + ButtonSearchProduit.setDisable(false); + } + }); + ThreadSearchRerchecheProduit.start(); + } + + private void GestionSearchProduit() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchProduit(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchProduit(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchProduit(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/Reglement/GestionReglementController.java b/src/main/java/Controllers/Reglement/GestionReglementController.java new file mode 100644 index 0000000..e5de5aa --- /dev/null +++ b/src/main/java/Controllers/Reglement/GestionReglementController.java @@ -0,0 +1,564 @@ +package Controllers.Reglement; + +import Models.Fournisseur.FournisseurDB; +import Models.Reglement.Reglement; +import Models.Reglement.ReglementDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import org.controlsfx.control.textfield.TextFields; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.ResourceBundle; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +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; + + + + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class GestionReglementController implements Initializable { + + @FXML private ProgressBar ProgressBarGestionReglement; + + @FXML private Button ButtonSearchGestionReglement; + + @FXML private AnchorPane AnchorPaneGestionReglement; + + @FXML private TextField TextFieldFournisseur ; + @FXML public TextField TextFieldNumero ; + @FXML public TextField TextFieldMontant ; + + @FXML private ComboBox ComboBoxModePaiement; + @FXML private DatePicker DatePickerDatePayer; + @FXML private RadioButton RadioComptant; + @FXML private RadioButton RadioFacilite; + + @FXML public TableView TableViewReglementFrs; + @FXML public TableColumn TabColNumero; + @FXML public TableColumn TabColMontant; + @FXML public TableColumn TabColModePaiement; + @FXML public TableColumn TabColFournisseur; + @FXML public TableColumn TabColTypePaiement; + @FXML public TableColumn TabColDatePayement; + @FXML public TableColumn TabColDetail; + + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + private Service ThreadSearchGestionReglement; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + public ArrayList ListFournisseur = new ArrayList<>(); + + ReglementDB reglementDB= new ReglementDB(); + + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + + ObservableList ListPaiement = FXCollections.observableArrayList("Espace", "Chèque", "Carte bancaire", "Traite"); + + String IdFournisseur = ""; + String Paiement = ""; + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + setFournisseurFormData(); + + ComboBoxModePaiement.setItems(ListPaiement); + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColNumero.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNumero.getStyleClass().add("Center"); + TabColNumero.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColFournisseur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColFournisseur.getStyleClass().add("Center"); + TabColFournisseur.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures data) { + return new SimpleStringProperty(data.getValue().getFournisseur().getNom()); + } + }); + + TabColModePaiement.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColModePaiement.getStyleClass().add("Center"); + TabColModePaiement.setCellValueFactory(new PropertyValueFactory("ModePaiement")); + TabColModePaiement.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + //0 :espace | 1:Chèque | 2 :carte bancaire | 3: Traite + if(item!= null && item.equals("0")){ + Text text = new Text("Espace"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!= null && item.equals("1")){ + Text text = new Text("Chèque"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!= null && item.equals("2")){ + Text text = new Text("Carte Bancaire"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!= null && item.equals("3")){ + Text text = new Text("Traite"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + + TabColMontant.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColMontant.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null){ + Text text = new Text(Formatter.format(Float.parseFloat(item))); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColTypePaiement.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTypePaiement.getStyleClass().add("Center"); + TabColTypePaiement.setCellValueFactory(new PropertyValueFactory("TypePaiement")); + TabColTypePaiement.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null && item.equals("0")){ + Text text = new Text("Comptant"); + text.setFill(Color.web("#428BCA")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!= null && item.equals("1")){ + Text text = new Text("Facilité"); + text.setFill(Color.web("#000000")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColDatePayement.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDatePayement.getStyleClass().add("Center"); + TabColDatePayement.setCellValueFactory(new PropertyValueFactory("DateTimeCreation")); + + + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + TextFieldFournisseur.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, String newValue) { + if(newValue.contains(" - ")){ + String[] array = newValue.split(" - ", -1); + IdFournisseur = array[0]; + } + } + }); + + ComboBoxModePaiement.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue ov, String t, String ValLocal) { + //0 :espace | 1:Chèque | 2 :carte bancaire | 3: Traite + if(ValLocal.equals("Espace")){ + Paiement = "0"; + }else if(ValLocal.equals("Chèque")){ + Paiement = "1"; + }else if(ValLocal.equals("Carte bancaire")){ + Paiement = "2"; + }else if(ValLocal.equals("Traite")){ + Paiement = "3"; + } + } + }); + + + + ButtonSearchGestionReglement.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchGestionReglement(); + } + }); + + AnchorPaneGestionReglement.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchGestionReglement(); + } + } + }); + + GestionSearchGestionReglement(); + } + + + @FXML + private void ReglementAjouterButtonAction(ActionEvent event) throws IOException { + AnchorPaneGestionReglement.getChildren().clear(); + AnchorPaneGestionReglement.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/Reglement/ReglementAjouter1.fxml"))); + } + + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + Reglement reglement = ((Reglement)getTableRow().getItem()); + ReglementDialogDetailController ReglementDialogDetail = new ReglementDialogDetailController(); + ReglementDialogDetail.Show(); + ReglementDialogDetail.LanchShowReglement(reglement.getNumero()); + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + private void setFournisseurFormData() + { + ProgressBarGestionReglement.setVisible(true); + + ThreadSearchGestionReglement = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + ListFournisseur = new FournisseurDB().getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseur, ListFournisseur); + + return null; + } + }; + } + }; + ThreadSearchGestionReglement.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarGestionReglement.setVisible(false); + } + }); + ThreadSearchGestionReglement.start(); + } + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchGestionReglement() + { + ProgressBarGestionReglement.setVisible(true); + + ButtonSearchGestionReglement.setDisable(true); + + ThreadSearchGestionReglement = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DatePayer = ""; + if(DatePickerDatePayer.getValue() != null){ + DatePayer = DatePickerDatePayer.getValue().toString(); + } + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListGestionReglements = new ReglementDB().SearchGestionReglementGestion( + position, + nbrligne, + TextFieldNumero.getText(), + IdFournisseur, + TextFieldMontant.getText(), + DatePayer, + TypeRegement, + Paiement); + + TableViewReglementFrs.setItems(ListGestionReglements); + + totalcount = new ReglementDB().nbrGestionReglementGestion(TextFieldNumero.getText(), IdFournisseur, TextFieldMontant.getText(), DatePayer, TypeRegement, Paiement); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchGestionReglement.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarGestionReglement.setVisible(false); + ButtonSearchGestionReglement.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchGestionReglement.start(); + } + + + private void NextLastSearchGestionReglement(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarGestionReglement.setVisible(true); + + ButtonSearchGestionReglement.setDisable(true); + + ThreadSearchGestionReglement = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DatePayer = ""; + if(DatePickerDatePayer.getValue() != null){ + DatePayer = DatePickerDatePayer.getValue().toString(); + } + + + // 0comptant 1facilité + String TypeRegement = ""; + if(RadioComptant.isSelected()){ + TypeRegement = "0"; + }else if(RadioFacilite.isSelected()){ + TypeRegement = "1"; + } + + ObservableList ListGestionReglement = new ReglementDB().SearchGestionReglementGestion(ParmPosition, ParamNbrligne, TextFieldNumero.getText(), IdFournisseur, TextFieldMontant.getText(), DatePayer, TypeRegement, Paiement); + + TableViewReglementFrs.setItems(ListGestionReglement); + + return null; + } + }; + } + }; + + ThreadSearchGestionReglement.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarGestionReglement.setVisible(false); + ButtonSearchGestionReglement.setDisable(false); + } + }); + ThreadSearchGestionReglement.start(); + } + + private void GestionSearchGestionReglement() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchGestionReglement(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchGestionReglement(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchGestionReglement(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/Reglement/ReglementAjouter1Controller.java b/src/main/java/Controllers/Reglement/ReglementAjouter1Controller.java new file mode 100644 index 0000000..d4e599e --- /dev/null +++ b/src/main/java/Controllers/Reglement/ReglementAjouter1Controller.java @@ -0,0 +1,418 @@ +package Controllers.Reglement; + +import Controllers.Dialog.MessageControle; +import Models.FactureFrs.FactureFrs; +import Models.FactureFrs.FactureFrsDB; +import Models.Fournisseur.FournisseurDB; +import Models.Stock.StockDB; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.ResourceBundle; +import javafx.application.Platform; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.ProgressIndicator; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyEvent; +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; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ReglementAjouter1Controller implements Initializable { + + @FXML private AnchorPane AnchorPaneReglementAjouter1; + + @FXML private ProgressIndicator ProgressFactureFrs; + + @FXML public TableView TableViewFactureFrs; + @FXML public TableColumn TabColNumero; + @FXML public TableColumn TabColFrs; + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColLocalReception; + @FXML public TableColumn TabColNetPayer; + @FXML public TableColumnTabColDetail ; + + @FXML public TableView TableViewSeleFactureFrs; + @FXML public TableColumn TabColSeleNumero; + @FXML public TableColumn TabColSeleFrs; + @FXML public TableColumn TabColSeleDate; + @FXML public TableColumn TabColSeleHeur; + @FXML public TableColumn TabColSeleLocalReception; + @FXML public TableColumn TabColSeleNetPayer; + @FXML public TableColumnTabColSeleSupprimer ; + + @FXML public TextField TextFieldNumero ; + @FXML private TextField TextFieldFournisseu ; + @FXML public TextField TextFieldNetAPayer ; + @FXML public DatePicker DatePickerDateReception; + + @FXML public ChoiceBox ChoiceBoxLocalReception ; + + public ArrayList ListFournisseur = new ArrayList<>(); + public ArrayList ListLocale = new ArrayList<>(); + + ObservableList DataSelectFacture = FXCollections.observableArrayList(); + + public FactureFrsDB FactureDB = new FactureFrsDB(); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + StockDB Stock = new StockDB(); + ListLocale = Stock.getAllListLocal(); + ChoiceBoxLocalReception.getItems().addAll(ListLocale); + + FournisseurDB FrsDB = new FournisseurDB(); + ListFournisseur = FrsDB.getAllFournisseur("CONCAT(`id_fourisseur`,' - ',`nom`)"); + TextFields.bindAutoCompletion(TextFieldFournisseu, ListFournisseur); + + TabColNumero.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColFrs.getStyleClass().add("Center"); + TabColFrs.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures data) { + return new SimpleStringProperty(data.getValue().getFournisseur().getNom()); + } + }); + + TabColDate.setCellValueFactory(new PropertyValueFactory("DateCreation")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("Local")); + TabColLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReception.getStyleClass().add("Center"); + + TabColNetPayer.setCellValueFactory(new PropertyValueFactory("NetAPayer")); + TabColNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayer.getStyleClass().add("Center"); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ReglementAjouter1Controller.ButtonCell(); + } + }); + + + + TabColSeleNumero.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColSeleFrs.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColSeleFrs.getStyleClass().add("Center"); + TabColSeleFrs.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures data) { + return new SimpleStringProperty(data.getValue().getFournisseur().getNom()); + } + }); + + TabColSeleDate.setCellValueFactory(new PropertyValueFactory("DateCreation")); + TabColSeleDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColSeleDate.getStyleClass().add("Center"); + + TabColSeleHeur.setCellValueFactory(new PropertyValueFactory("HeurCreation")); + TabColSeleHeur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColSeleHeur.getStyleClass().add("Center"); + + TabColSeleLocalReception.setCellValueFactory(new PropertyValueFactory("Local")); + TabColSeleLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColSeleLocalReception.getStyleClass().add("Center"); + + TabColSeleNetPayer.setCellValueFactory(new PropertyValueFactory("NetAPayer")); + TabColSeleNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColSeleNetPayer.getStyleClass().add("Center"); + + TabColSeleSupprimer.setStyle( "-fx-alignment: CENTER;"); + TabColSeleSupprimer.getStyleClass().add("Center"); + TabColSeleSupprimer.setSortable(true); + + TabColSeleSupprimer.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColSeleSupprimer.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ReglementAjouter1Controller.ButtonCellRemove(); + } + }); + + + + getChercherFactureFrs(); + } + + @FXML + private void DetailReglementButtonAction(ActionEvent event) throws IOException { + if(DataSelectFacture.size()>0){ + if(ControleListFacture()){ + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Reglement/ReglementAjouter2.fxml")); + Parent NodeReglementAjouter2 = (Parent)fxmlLoader.load(); + + ReglementAjouter2Controller ReglementAjouter2 = fxmlLoader.getController(); + ReglementAjouter2.SetDataFactureFrs(DataSelectFacture); + + AnchorPaneReglementAjouter1.getChildren().clear(); + AnchorPaneReglementAjouter1.getChildren().add(NodeReglementAjouter2); + }else{ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Les fournisseurs sélectionnés sont différents"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + + } + + }else{ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin une facture à la liste des factures"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + + } + + + private void getChercherFactureFrs() + { + TextFieldNumero.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + getDataFactureFrs("numero", " LIKE '"+TextFieldNumero.getText()+"%'"); + } + }); + DatePickerDateReception.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try{ + getDataFactureFrs("DATE(date_creation)", " = '"+DatePickerDateReception.getValue().toString()+"'"); + }catch(Exception ex){} + } + }); + DatePickerDateReception.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + try{ + String DateReception = DatePickerDateReception.getConverter().fromString(DatePickerDateReception.getEditor().getText()).toString(); + getDataFactureFrs("DATE(date_creation)", " = '"+DateReception+"'"); + }catch(Exception ex){} + } + }); + + ChoiceBoxLocalReception.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue ov, String t, String ValLocal) { + getDataFactureFrs("local_reception", " LIKE '"+ValLocal+"%'"); + } + }); + + TextFieldNetAPayer.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + getDataFactureFrs("net_a_payer", "LIKE '"+TextFieldNetAPayer.getText()+"%'"); + } + }); + + TextFieldFournisseu.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, String newValue) { + if(newValue.contains(" - ")){ + String[] array = newValue.split(" - ", -1); + getDataFactureFrs("id_fourisseur", " = "+array[0]); + } + } + }); + + + } + + public void setDataFactureFrs(ObservableList data_facture){ + DataSelectFacture = data_facture; + TableViewSeleFactureFrs.setItems(data_facture); + TableViewSeleFactureFrs.refresh(); + } + + private void getDataFactureFrs(final String tab, final String mot){ + + ProgressFactureFrs.setVisible(true); + TableViewFactureFrs.setItems(null); + TableViewFactureFrs.setVisible(false); + + // Create a Runnable + Runnable task = new Runnable(){ + public void run(){ + Platform.runLater(new Runnable(){ + @Override + public void run(){ + try { + ObservableList ListFactureFrs = FactureDB.getDataFactureFrs(tab, mot, null, null); + TableViewFactureFrs.setItems(ListFactureFrs); + ProgressFactureFrs.setVisible(false); + TableViewFactureFrs.setVisible(true); + TableViewFactureFrs.refresh(); + } catch (Exception ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + }); + } + }; + Thread backgroundThread = new Thread(task); // Run the task in a background thread + backgroundThread.setDaemon(true); // Terminate the running thread if the application exits + backgroundThread.start(); // Start the thread + } + + + private boolean ControleListFacture(){ + boolean result = true ; + String CodeFirst = DataSelectFacture.get(0).getFournisseur().getCode(); + for( FactureFrs FactSele : DataSelectFacture ) { + if(!FactSele.getFournisseur().getCode().equals(CodeFirst)){ + result = false ; + break; + } + } + return result; + } + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + FactureFrs ListFactureFrs = (FactureFrs) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + + //Verifier si la Facture existe déja + boolean result = true ; + for( FactureFrs FactSele : DataSelectFacture ) { + if(FactSele.getNumero().equals(ListFactureFrs.getNumero())){ + result = false ; + break; + } + } + if(result){ + DataSelectFacture.add(ListFactureFrs); + TableViewSeleFactureFrs.setItems(DataSelectFacture); + TableViewSeleFactureFrs.refresh(); + } + + } catch (Exception ex) { + System.err.println("ReglementAjouter1Controller ButtonCell ! \n"+ex.getMessage()); + } + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + //Define the button cell + private class ButtonCellRemove extends TableCell { + + final Button cellButton = new Button(); + + ButtonCellRemove(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + DataSelectFacture.remove(selectdIndex); + TableViewSeleFactureFrs.setItems(DataSelectFacture); + TableViewSeleFactureFrs.refresh(); + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } +} diff --git a/src/main/java/Controllers/Reglement/ReglementAjouter2Controller.java b/src/main/java/Controllers/Reglement/ReglementAjouter2Controller.java new file mode 100644 index 0000000..df3d1c3 --- /dev/null +++ b/src/main/java/Controllers/Reglement/ReglementAjouter2Controller.java @@ -0,0 +1,497 @@ +/* + * 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 Controllers.Reglement; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.contro; +import Models.ChequeClt.ChequeList; +import Models.TraiteClt.DatePickerCell; +import Models.ChequeClt.DatePickerCellCheque; +import Models.FactureFrs.FactureFrs; +import Models.Reglement.CarteElectroniqueFrs; +import Models.Reglement.ChequeFrs; +import Models.Reglement.Reglement; +import Models.Reglement.TraiteFrs; +import Models.TraiteClt.TraiteList; +import java.io.IOException; +import java.net.URL; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Calendar; +import java.util.Date; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +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.DatePicker; +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.layout.GridPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * + * @author Maher + */ +public class ReglementAjouter2Controller implements Initializable { + + @FXML private AnchorPane AnchorPaneReglementAjouter2; + @FXML private AnchorPane PaneComptant; + @FXML private AnchorPane PaneFacilite; + + @FXML private AnchorPane PaneFaciliteCheque; + @FXML private AnchorPane PaneFaciliteTraite; + + @FXML private Text TextNbrFacture; + @FXML private Text TextTotalFacture; + + @FXML private GridPane GridPaneCheque; + @FXML private GridPane GridPaneCarte; + + @FXML private TextField TextFieldNbrEcheance; + @FXML private Text TextCtlNbrEcheance; + @FXML private Text TotalEcheance; + + @FXML private TextField TextFieldChequeNomBanque; + @FXML private TextField TextFieldChequeNumero; + @FXML private TextField TextFieldChequeNomComple; + @FXML private DatePicker DatePickerChequeDate; + @FXML private Text TextCtlChequeNomBanque; + @FXML private Text TextCtlChequeNumero; + @FXML private Text TextCtlChequeNomComple; + @FXML private Text TextCtlChequeDate; + + @FXML private TextField TextFieldCarteNomBanque; + @FXML private TextField TextFieldCarteNumeroCart; + @FXML private TextField TextFieldCarteNumeroTransaction; + @FXML private TextField TextFieldCarteHeurTransaction; + @FXML private DatePicker DatePickerCarteDate; + @FXML private Text TextCtlCartNomBanque; + @FXML private Text TextCtlCartNumeroCart; + @FXML private Text TextCtlCartNumeroTransaction; + @FXML private Text TextCtlCartDateHeurTransaction; + + @FXML public TableView TableViewListeTraite ; + @FXML public TableColumn TabColDateTraite; + @FXML public TableColumn TabColMontantTraite; + + @FXML public TableView TableViewListeCheque ; + @FXML public TableColumn TabColDateCheque; + @FXML public TableColumn TabColNumeroCheque; + @FXML public TableColumn TabColBanqueCheque; + @FXML public TableColumn TabColMontantCheque; + + float TotalFact = 0; + boolean clt_total_echeance = true; + private int SelectComptantFacilite ; // 0 Comptant | 1 Facilité + private int PayerEesCheqCar = 0; //Payer en: 0 espèce | 1 Chéque | 2 Carte électronique + private int facilite_traite_cheque = 0; // 0 traite | 1 cheque + + ObservableList DataFacture = FXCollections.observableArrayList(); + + public ObservableList ListT = FXCollections.observableArrayList(); + public ObservableList ListCheque = FXCollections.observableArrayList(); + + Reglement reglement = new Reglement(); + + contro clt = new contro(); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TableViewListeTraite.setEditable(true); + TabColMontantTraite.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraite.getStyleClass().add("Center"); + TabColMontantTraite.setCellValueFactory(new PropertyValueFactory("MontantTraite")); + TabColMontantTraite.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColMontantTraite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String NewMontant = t.getNewValue().replace('.',','); + ((TraiteList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setMontantTraite(NewMontant); + CalculeTotalTrait(); + } + }); + + TabColDateTraite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("date")); + TabColDateTraite.setCellFactory(new Callback() { + @Override + public TableCell call(TableColumn p) { + DatePickerCell datePick = new DatePickerCell(ListT); + return datePick; + } + }); + TableViewListeTraite.setItems(ListT); + + + + //Cheque + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheque.getStyleClass().add("Center"); + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroCheque")); + TabColNumeroCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColNumeroCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("BanqueCheque")); + TabColBanqueCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColBanqueCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String NewBanque = t.getNewValue(); + if(t.getTablePosition().getRow() == 0){ + int indise = 0; + while(indise("MontantCheque")); + TabColMontantCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColMontantCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String NewQuantite = t.getNewValue(); + ((ChequeList) t.getTableView().getItems().get(t.getTablePosition().getRow())).setMontantCheque(NewQuantite); + CalculeTotalCheque(); + } + }); + + TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateCheque.getStyleClass().add("Center"); + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("date")); + TabColDateCheque.setEditable(true); + TabColDateCheque.setCellFactory(new Callback() { + @Override + public TableCell call(TableColumn p) { + DatePickerCellCheque datePick = new DatePickerCellCheque(ListCheque); + return datePick; + } + }); + + TableViewListeCheque.setItems(ListCheque); + + } + + @FXML + private void DetailRelementSuitButtonAction(ActionEvent event) throws IOException { + final Reglement reglement = new Reglement(); + boolean clt_reglement = true; + + if(SelectComptantFacilite == 0){ + reglement.setTypePaiement("0"); + + //0 espèce | 1 Chéque | 2 Carte électronique + if(PayerEesCheqCar == 0){ + reglement.setModePaiement("0"); + }else if(PayerEesCheqCar == 1){ + reglement.setModePaiement("1"); + if(clt.ContrNull(TextFieldChequeNomBanque, TextCtlChequeNomBanque) && + clt.ContrNumeriqueNotnull(TextFieldChequeNumero, TextCtlChequeNumero) && + clt.ContrNull(TextFieldChequeNomComple, TextCtlChequeNomComple)&& + clt.ContrNullDatePicker(DatePickerChequeDate, TextCtlChequeDate) ){ + + ChequeFrs Cheque = new ChequeFrs(); + Cheque.setBanqueChequeFrs(TextFieldChequeNomBanque.getText()); + Cheque.setNumeroChequeFrs(TextFieldChequeNumero.getText()); + Cheque.setNomCompletChequeFrs(TextFieldChequeNomComple.getText()); + Cheque.setDatePaiement(DatePickerChequeDate.getValue().toString()); + Cheque.setMontantChequeFrs(Adaptateur.ArrondFloatToString(TotalFact)); + reglement.setCheque(Cheque); + }else{ clt_reglement = false; } + + }else if(PayerEesCheqCar == 2){ + reglement.setModePaiement("2"); + if(clt.ContrNull(TextFieldCarteNomBanque, TextCtlCartNomBanque) && + clt.ContrNumeriqueNotnull(TextFieldCarteNumeroCart, TextCtlCartNumeroCart) && + clt.ContrNumeriqueNotnull(TextFieldCarteNumeroTransaction, TextCtlCartNumeroTransaction)&& + clt.ContrNullDatePicker(DatePickerCarteDate, TextCtlCartDateHeurTransaction) && + clt.ContrHour(TextFieldCarteHeurTransaction, TextCtlCartDateHeurTransaction) ){ + CarteElectroniqueFrs CarteElectronique = new CarteElectroniqueFrs(); + CarteElectronique.setBanque(TextFieldCarteNomBanque.getText()); + CarteElectronique.setNumeroTransaction(TextFieldCarteNumeroTransaction.getText()); + CarteElectronique.setCodeCarte(TextFieldCarteNumeroCart.getText()); + CarteElectronique.setDateTransaction(DatePickerCarteDate.getValue().toString()); + CarteElectronique.setHeurTransaction(TextFieldCarteHeurTransaction.getText()); + CarteElectronique.setMantant(Adaptateur.ArrondFloatToString(TotalFact)); + reglement.setCarte(CarteElectronique); + }else{ clt_reglement = false; } + } + }else if(SelectComptantFacilite == 1){ + reglement.setTypePaiement("1"); + + //1 Chéque | 3 Traite + if(facilite_traite_cheque == 0){ + if(clt_total_echeance){ + reglement.setModePaiement("3"); + ObservableList TraitFrs = FXCollections.observableArrayList(); + for(TraiteList List : ListT ) { + String DatePaiement = new SimpleDateFormat("yyyy-MM-dd").format(List.getDate()); + TraitFrs.add(new TraiteFrs("", DatePaiement, null, List.getMontantTraite().replace(",", "."), null)); + } + reglement.setListTraite(TraitFrs); + }else{ clt_reglement = false; } + + }else if(facilite_traite_cheque == 1){ + if(clt_total_echeance){ + reglement.setModePaiement("1"); + ObservableList CollCheque = FXCollections.observableArrayList(); + for(ChequeList List : ListCheque ) { + String CodeChequeFrs = ""; + String NumeroChequeFrs = List.getNumeroCheque(); + String BanqueChequeFrs = List.getBanqueCheque(); + String MontantChequeFrs = List.getMontantCheque(); + String DateCreation = LocalDateTime.now().toString(); + String DatePaiement = new SimpleDateFormat("yyyy-MM-dd").format(List.getDate()); + //controle numero chéque et nom banque + if(NumeroChequeFrs.equals("") || BanqueChequeFrs.equals("")){ + clt_reglement = false; + } + CollCheque.add(new ChequeFrs(CodeChequeFrs, NumeroChequeFrs, BanqueChequeFrs, MontantChequeFrs, null, DatePaiement, DateCreation)); + } + reglement.setListCheque(CollCheque); + }else{ clt_reglement = false; } + } + } + + if(clt_reglement){ + reglement.setMontant(Adaptateur.ArrondFloatToString(TotalFact)); + reglement.setListFacture(DataFacture); + reglement.setDateTimeCreation(LocalDateTime.now().toString()); + reglement.setFournisseur(DataFacture.get(0).getFournisseur()); + reglement.setEtatReglement("0"); + + final ReglementDialogConfirmationController ReglementDialogConfirmation = new ReglementDialogConfirmationController(); + ReglementDialogConfirmation.Enregister.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + try { + ReglementDialogConfirmation.AnchorPrincipal.setVisible(false); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Reglement/ReglementAjouter3.fxml")); + Parent NodeReglementAjouter3 = (Parent)fxmlLoader.load(); + + ReglementAjouter3Controller ReglementAjouter3 = fxmlLoader.getController(); + ReglementAjouter3.setDataReglement(reglement); + + AnchorPaneReglementAjouter2.getChildren().clear(); + AnchorPaneReglementAjouter2.getChildren().add(NodeReglementAjouter3); + } catch (IOException ex) { + Logger.getLogger(ReglementAjouter2Controller.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + ReglementDialogConfirmation.setReglement(reglement); + ReglementDialogConfirmation.Show(); + } + + } + + @FXML + private void AjouterTraitementButtonAction(ActionEvent event) throws IOException { + Date date= new Date(); + Calendar cal = Calendar.getInstance(); + if(clt.ContrNumeriqueNotnull(TextFieldNbrEcheance, TextCtlNbrEcheance)){ + ListT.clear(); + Integer IntegerNbrEcheance = Adaptateur.Diviseur(Adaptateur.StringToFloat(TextFieldNbrEcheance.getText())); + float Value = (float) TotalFact / IntegerNbrEcheance; + Integer div = Adaptateur.Diviseur(Value); + float Somme = 0; + if(facilite_traite_cheque == 0){ + PaneFaciliteCheque.setVisible(false); + PaneFaciliteTraite.setVisible(true); + for(int i=0; i DataFact){ + DataFacture = DataFact; + for( FactureFrs Facture : DataFact ) { + TotalFact += Adaptateur.StringToFloat(Facture.getNetAPayer()); + } + TextTotalFacture.setText(Adaptateur.FloatToStringEspaceCurrency(TotalFact)); + TotalEcheance.setText("0 / "+Adaptateur.ArrondFloatToString(TotalFact)); + + TotalFact = Adaptateur.ArrondFloatToFloat(TotalFact); + + TextNbrFacture.setText(DataFact.size()+""); + } + + + public void CalculeTotalTrait(){ + float Somme = 0; + for(TraiteList List : ListT ) { + Somme += Adaptateur.StringToFloat(List.getMontantTraite()); + } + TotalEcheance.setText(Adaptateur.ArrondFloatToString(Somme)+" / "+Adaptateur.ArrondFloatToString(TotalFact)); + + if(Adaptateur.ArrondFloatToString(Somme).equals(Adaptateur.ArrondFloatToString(TotalFact))){ + TotalEcheance.setFill(Color.web("#000000")); + clt_total_echeance = true; + }else{ + TotalEcheance.setFill(Color.web("#f20606")); + clt_total_echeance = false; + } + + } + + public void CalculeTotalCheque(){ + float Somme = 0; + for(ChequeList List : ListCheque ) { + Somme += Adaptateur.StringToFloat(List.getMontantCheque()); + } + TotalEcheance.setText(Adaptateur.ArrondFloatToString(Somme)+" / "+Adaptateur.ArrondFloatToString(TotalFact)); + + if(Adaptateur.ArrondFloatToString(Somme).equals(Adaptateur.ArrondFloatToString(TotalFact))){ + TotalEcheance.setFill(Color.web("#000000")); + clt_total_echeance = true; + }else{ + TotalEcheance.setFill(Color.web("#f20606")); + clt_total_echeance = false; + } + + } + + @FXML + private void ReglementAjouter1ButtonAction(ActionEvent event) throws IOException { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Reglement/ReglementAjouter1.fxml")); + Parent NodeReglementAjouter1 = (Parent)fxmlLoader.load(); + + ReglementAjouter1Controller ReglementAjouter1 = fxmlLoader.getController(); + ReglementAjouter1.setDataFactureFrs(DataFacture); + + AnchorPaneReglementAjouter2.getChildren().clear(); + AnchorPaneReglementAjouter2.getChildren().add(NodeReglementAjouter1); + } + + @FXML + public void RadioComptantAction(ActionEvent event) throws IOException { + SelectComptantFacilite = 0; + PaneComptant.setVisible(true); + PaneFacilite.setVisible(false); + } + + + @FXML + public void RadioEspeceAction(ActionEvent event) throws IOException { + PayerEesCheqCar = 0; + GridPaneCheque.setVisible(false); + GridPaneCarte.setVisible(false); + } + + @FXML + public void RadioChequeAction(ActionEvent event) throws IOException { + PayerEesCheqCar = 1; + GridPaneCheque.setVisible(true); + GridPaneCarte.setVisible(false); + } + + @FXML + public void RadioCarteAction(ActionEvent event) throws IOException { + PayerEesCheqCar = 2; + GridPaneCheque.setVisible(false); + GridPaneCarte.setVisible(true); + } + + @FXML + public void RadioFaciliteAction(ActionEvent event) throws IOException { + SelectComptantFacilite = 1; + PaneComptant.setVisible(false); + PaneFacilite.setVisible(true); + } + + @FXML + public void RadioFaciliteTraiteAction(ActionEvent event) throws IOException { + facilite_traite_cheque = 0; + PaneFaciliteCheque.setVisible(false); + PaneFaciliteTraite.setVisible(true); + } + + @FXML + public void RadioFaciliteChequeAction(ActionEvent event) throws IOException { + facilite_traite_cheque = 1; + PaneFaciliteCheque.setVisible(true); + PaneFaciliteTraite.setVisible(false); + } + +} diff --git a/src/main/java/Controllers/Reglement/ReglementAjouter3Controller.java b/src/main/java/Controllers/Reglement/ReglementAjouter3Controller.java new file mode 100644 index 0000000..41a31bd --- /dev/null +++ b/src/main/java/Controllers/Reglement/ReglementAjouter3Controller.java @@ -0,0 +1,255 @@ +/* + * 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 Controllers.Reglement; + +import Controllers.Traitement.Adaptateur; +import Models.FactureFrs.FactureFrs; +import Models.Reglement.ChequeFrs; +import Models.Reglement.Reglement; +import Models.Reglement.ReglementDB; +import Models.Reglement.TraiteFrs; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher + */ +public class ReglementAjouter3Controller implements Initializable { + + @FXML public ProgressIndicator ProgressReglement; + @FXML private AnchorPane PaneDetailTraite; + private Service ThreadReglement; + + @FXML private Text TextCodeReglement; + @FXML private Text TextTypePaiement; + @FXML private Text TextModePaiement; + @FXML private Text TextDateCreation; + @FXML private Text TextTotalReglement; + @FXML private Text TextProfile; + + @FXML private Text TextCodeFrs; + @FXML private Text TextNomFrs; + @FXML private Text TextTele1Frs; + @FXML private Text TextTele2Frs; + + @FXML private GridPane GridPaneCheque; + @FXML private GridPane GridPaneCarte; + + @FXML private Text TextCartNomBanque; + @FXML private Text TextCartNumeroCart; + @FXML private Text TextCartNumeroTransaction; + @FXML private Text TextCartDateHeurTransaction; + + @FXML private Text TextChequeNomBanque; + @FXML private Text TextChequeNumero; + @FXML private Text TextChequeNomComple; + @FXML private Text TextChequeDate; + + @FXML private Button ButtonImprimer; + + @FXML private TableView TableViewListeCheque ; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanqueCheque; + @FXML private TableColumn TabColMontantCheque; + + @FXML private TableView TableViewListeTraite ; + @FXML private TableColumn TabColDateTraite; + @FXML private TableColumn TabColMontantTraite; + + + + @FXML private TableView TableViewFactureFrs; + @FXML private TableColumn TabColNumeroFact; + @FXML private TableColumn TabColProfile; + @FXML private TableColumn TabColDate; + @FXML private TableColumn TabColHeur; + @FXML private TableColumn TabColLocalReception; + @FXML private TableColumn TabColNetPayer; + + Reglement reglement = new Reglement(); + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColMontantTraite.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraite.getStyleClass().add("Center"); + TabColMontantTraite.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColDateTraite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheque.getStyleClass().add("Center"); + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroChequeFrs")); + + TabColBanqueCheque.setStyle( "-fx-alignment: CENTER;"); + TabColBanqueCheque.getStyleClass().add("Center"); + TabColBanqueCheque.setCellValueFactory(new PropertyValueFactory("BanqueChequeFrs")); + + TabColDateCheque.setStyle( "-fx-alignment: CENTER;"); + TabColDateCheque.getStyleClass().add("Center"); + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + TabColMontantCheque.setStyle( "-fx-alignment: CENTER;"); + TabColMontantCheque.getStyleClass().add("Center"); + TabColMontantCheque.setCellValueFactory(new PropertyValueFactory("MontantChequeFrs")); + + TabColNumeroFact.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColProfile.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColProfile.getStyleClass().add("Center"); + TabColProfile.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures data) { + return new SimpleStringProperty(data.getValue().getProfile().getNom()+" "+data.getValue().getProfile().getPrenom()); + } + }); + + TabColDate.setCellValueFactory(new PropertyValueFactory("DateCreation")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + TabColHeur.setCellValueFactory(new PropertyValueFactory("HeurCreation")); + TabColHeur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColHeur.getStyleClass().add("Center"); + + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("Local")); + TabColLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReception.getStyleClass().add("Center"); + + TabColNetPayer.setCellValueFactory(new PropertyValueFactory("NetAPayer")); + TabColNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayer.getStyleClass().add("Center"); + } + + public void setDataReglement(Reglement regl){ + reglement = regl; + LanchSaveReglement(); + } + + public void setReglement(){ + + TextCodeReglement.setText(reglement.getNumero()); + TextTypePaiement.setText(reglement.getTypePaiementString()); + TextModePaiement.setText(reglement.getModePaiementString()); + TextDateCreation.setText(reglement.getDateTimeCreationString()); + TextTotalReglement.setText(Adaptateur.StringToStringEspaceCurrency(reglement.getMontant())); + + TextProfile.setText(reglement.getProfile().getPrenom()+" "+reglement.getProfile().getNom()); + + TextCodeFrs.setText(reglement.getFournisseur().getCode()); + TextNomFrs.setText(reglement.getFournisseur().getNom()); + TextTele1Frs.setText(reglement.getFournisseur().getTele1()); + TextTele2Frs.setText(reglement.getFournisseur().getTele2()); + + TableViewFactureFrs.setItems(reglement.getListFacture()); + // 0 Comptant + if(reglement.getTypePaiement().equals("0")){ + + //0 espèce + if(reglement.getModePaiement().equals("0")){ + + //1 Chéque + }else if(reglement.getModePaiement().equals("1")){ + GridPaneCheque.setVisible(true); + TextChequeNomBanque.setText(reglement.getCheque().getBanqueChequeFrs()); + TextChequeNumero.setText(reglement.getCheque().getNumeroChequeFrs()); + TextChequeNomComple.setText(reglement.getCheque().getNomCompletChequeFrs()); + TextChequeDate.setText(reglement.getCheque().getDateCreation()); + + //2 Carte électronique + }else if(reglement.getModePaiement().equals("2")){ + GridPaneCarte.setVisible(true); + TextCartNomBanque.setText(reglement.getCarte().getBanque()); + TextCartNumeroCart.setText(reglement.getCarte().getNumeroCarte()); + TextCartNumeroTransaction.setText(reglement.getCarte().getNumeroTransaction()); + TextCartDateHeurTransaction.setText(reglement.getCarte().getDateTransaction()+" "+reglement.getCarte().getHeurTransaction()); + } + + + //1 Facilité + }else if(reglement.getTypePaiement().equals("1")){ + + //1 Chéque + if(reglement.getModePaiement().equals("1")){ + TableViewListeCheque.setVisible(true); + ObservableList NewListCheque = FXCollections.observableArrayList(); + for(ChequeFrs Cheque : reglement.getListCheque()) { + String CodeChequeFrs = Cheque.getCodeChequeFrs(); + String NumeroChequeFrs = Cheque.getNumeroChequeFrs(); + String BanqueChequeFrs = Cheque.getBanqueChequeFrs(); + String MontantChequeFrs = Adaptateur.StringDeleZero(Cheque.getMontantChequeFrs()); + String NomCompletChequeFrs = Cheque.getNomCompletChequeFrs(); + String DatePaiement = Adaptateur.NormalDateFormat(Cheque.getDatePaiement()); + String DateCreation = Adaptateur.NormalDateTimeFormat(Cheque.getDateCreation()); + NewListCheque.add(new ChequeFrs(CodeChequeFrs, NumeroChequeFrs, BanqueChequeFrs, MontantChequeFrs, NomCompletChequeFrs, DatePaiement, DateCreation)); + } + TableViewListeCheque.setItems(NewListCheque); + + + //3 Traite + }else if(reglement.getModePaiement().equals("3")){ + TableViewListeTraite.setVisible(true); + ButtonImprimer.setVisible(true); + TableViewListeTraite.setItems(reglement.getListTraiteString()); + } + } + + } + + public void LanchSaveReglement(){ + ThreadReglement = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + ReglementDB reglementDB = new ReglementDB(); + reglement = reglementDB.setReglementDB(reglement); + reglement = reglementDB.getReglementDB(reglement.getNumero()); + return null; + } + }; + } + }; + ThreadReglement.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressReglement.setVisible(false); + setReglement(); + PaneDetailTraite.setVisible(true); + } + }); + ThreadReglement.start(); + } + + + +} diff --git a/src/main/java/Controllers/Reglement/ReglementDialogConfirmationController.java b/src/main/java/Controllers/Reglement/ReglementDialogConfirmationController.java new file mode 100644 index 0000000..02b4d2b --- /dev/null +++ b/src/main/java/Controllers/Reglement/ReglementDialogConfirmationController.java @@ -0,0 +1,230 @@ +/* + * 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 Controllers.Reglement; + +import Controllers.CommandeClt.CommandeCltDialogConfirmationController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Models.FactureFrs.FactureFrs; +import Models.Reglement.ChequeFrs; +import Models.Reglement.Reglement; +import Models.Reglement.TraiteFrs; +import Models.User.User; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * + * @author Maher + */ +public class ReglementDialogConfirmationController implements Initializable { + + public Node nodeFxml ; + + @FXML public AnchorPane AnchorPrincipal ; + @FXML public Button Enregister ; + + @FXML private AnchorPane AnchorDetailReglement; + + @FXML private Text TextTypePaiement; + @FXML private Text TextModePaiement; + @FXML private Text TextDateCreation; + @FXML private Text TextNombreFact; + @FXML private Text TextTotalReglement; + @FXML private Text TextProfile; + + @FXML private Text TextCodeFrs; + @FXML private Text TextNomFrs; + @FXML private Text TextFormesFrs; + @FXML private Text TextTele1Frs; + @FXML private Text TextTele2Frs; + @FXML private Text TextmailFrs; + + @FXML private GridPane GridPaneCheque; + @FXML private GridPane GridPaneCarte; + + @FXML private Text TextCartNomBanque; + @FXML private Text TextCartNumeroCart; + @FXML private Text TextCartNumeroTransaction; + @FXML private Text TextCartDateHeurTransaction; + + @FXML private Text TextChequeNomBanque; + @FXML private Text TextChequeNumero; + @FXML private Text TextChequeNomComple; + @FXML private Text TextChequeDate; + + @FXML private TableView TableViewListeCheque ; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanqueCheque; + @FXML private TableColumn TabColMontantCheque; + + @FXML private TableView TableViewListeTraite ; + @FXML private TableColumn TabColDateTraite; + @FXML private TableColumn TabColMontantTraite; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + //Cheque + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheque.getStyleClass().add("Center"); + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroChequeFrs")); + + TabColBanqueCheque.setStyle( "-fx-alignment: CENTER;"); + TabColBanqueCheque.getStyleClass().add("Center"); + TabColBanqueCheque.setCellValueFactory(new PropertyValueFactory("BanqueChequeFrs")); + + TabColMontantCheque.setStyle( "-fx-alignment: CENTER;"); + TabColMontantCheque.getStyleClass().add("Center"); + TabColMontantCheque.setCellValueFactory(new PropertyValueFactory("MontantChequeFrs")); + + TabColDateCheque.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateCheque.getStyleClass().add("Center"); + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + + TabColDateTraite.setStyle( "-fx-alignment: CENTER;"); + TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + TabColMontantTraite.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraite.getStyleClass().add("Center"); + TabColMontantTraite.setCellValueFactory(new PropertyValueFactory("Montant")); + + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + Enregister.setGraphic(buttonGraphic); + } + + + public void setReglement(Reglement reglement){ + + TextModePaiement.setText(reglement.getModePaiementString()); + TextTypePaiement.setText(reglement.getTypePaiementString()); + + if(reglement.getTypePaiement().equals("0")){ + if(reglement.getModePaiement().equals("0")){ + AnchorDetailReglement.setVisible(false); + }else if(reglement.getModePaiement().equals("1")){ + GridPaneCheque.setVisible(true); + TextChequeNomBanque.setText(reglement.getCheque().getBanqueChequeFrs()); + TextChequeNumero.setText(reglement.getCheque().getNumeroChequeFrs()); + TextChequeNomComple.setText(reglement.getCheque().getNomCompletChequeFrs()); + TextChequeDate.setText(reglement.getCheque().getDatePaiement()); + }else if(reglement.getModePaiement().equals("2")){ + GridPaneCarte.setVisible(true); + TextCartNomBanque.setText(reglement.getCarte().getBanque()); + TextCartNumeroCart.setText(reglement.getCarte().getCodeCarte()); + TextCartNumeroTransaction.setText(reglement.getCarte().getNumeroTransaction()); + TextCartDateHeurTransaction.setText(Adaptateur.NormalDateFormat(reglement.getCarte().getDateTransaction())+" "+reglement.getCarte().getHeurTransaction()); + } + } + + if(reglement.getTypePaiement().equals("1")){ + AnchorDetailReglement.setVisible(true); + if(reglement.getListTraite() != null){ + TableViewListeTraite.setVisible(true); + TableViewListeTraite.setItems(reglement.getListTraiteString()); + }else if(reglement.getListCheque() != null){ + TableViewListeCheque.setVisible(true); + ObservableList NewListCheque = FXCollections.observableArrayList(); + for(ChequeFrs Cheque : reglement.getListCheque()) { + String CodeChequeFrs = Cheque.getCodeChequeFrs(); + String NumeroChequeFrs = Cheque.getNumeroChequeFrs(); + String BanqueChequeFrs = Cheque.getBanqueChequeFrs(); + String MontantChequeFrs = Adaptateur.StringDeleZero(Cheque.getMontantChequeFrs()); + String NomCompletChequeFrs = Cheque.getNomCompletChequeFrs(); + String DatePaiement = Adaptateur.NormalDateFormat(Cheque.getDatePaiement()); + String DateCreation = Adaptateur.NormalDateTimeFormat(Cheque.getDateCreation()); + NewListCheque.add(new ChequeFrs(CodeChequeFrs, NumeroChequeFrs, BanqueChequeFrs, MontantChequeFrs, NomCompletChequeFrs, DatePaiement, DateCreation)); + } + TableViewListeCheque.setItems(NewListCheque); + } + } + + + + ObservableList ListFacture = reglement.getListFacture(); + float Somme = 0; + for(FactureFrs facture : ListFacture ) { + Somme += Adaptateur.StringToFloat(facture.getNetAPayer()); + } + + TextTotalReglement.setText(Adaptateur.FloatToStringEspaceCurrency(Somme)); + TextNombreFact.setText(ListFacture.size()+""); + + TextDateCreation.setText(Adaptateur.NormalDateFormat(reglement.getDateTimeCreation())); + TextProfile.setText(User.nom+" "+User.prenom); + + TextCodeFrs.setText(reglement.getFournisseur().getCode()); + TextNomFrs.setText(reglement.getFournisseur().getNom()); + TextFormesFrs.setText(reglement.getFournisseur().getFormes()); + TextTele1Frs.setText(reglement.getFournisseur().getTele1()); + TextTele2Frs.setText(reglement.getFournisseur().getTele2()); + TextmailFrs.setText(reglement.getFournisseur().getMail()); + } + + public ReglementDialogConfirmationController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Reglement/ReglementDialogConfirmation.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(CommandeCltDialogConfirmationController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/main/java/Controllers/Reglement/ReglementDialogDetailController.java b/src/main/java/Controllers/Reglement/ReglementDialogDetailController.java new file mode 100644 index 0000000..6a95060 --- /dev/null +++ b/src/main/java/Controllers/Reglement/ReglementDialogDetailController.java @@ -0,0 +1,313 @@ +/* + * 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 Controllers.Reglement; + +import Controllers.CommandeClt.CommandeCltDialogConfirmationController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Models.FactureFrs.FactureFrs; +import Models.Reglement.ChequeFrs; +import Models.Reglement.Reglement; +import Models.Reglement.ReglementDB; +import Models.Reglement.TraiteFrs; +import java.io.IOException; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; +import javafx.util.Callback; + +/** + * FXML Controller class + * + * @author Maher + */ +public class ReglementDialogDetailController implements Initializable { + + public Node nodeFxml ; + + @FXML public AnchorPane AnchorPrincipal ; + @FXML public ProgressIndicator ProgressReglement; + @FXML public AnchorPane PaneDetailReglement; + + @FXML private Text TextCodeReglement; + @FXML private Text TextTypePaiement; + @FXML private Text TextModePaiement; + @FXML private Text TextDateCreation; + @FXML private Text TextTotalReglement; + @FXML private Text TextProfile; + + @FXML private Text TextCodeFrs; + @FXML private Text TextNomFrs; + @FXML private Text TextTele1Frs; + @FXML private Text TextTele2Frs; + + @FXML private GridPane GridPaneCheque; + @FXML private GridPane GridPaneCarte; + + @FXML private Text TextCartNomBanque; + @FXML private Text TextCartNumeroCart; + @FXML private Text TextCartNumeroTransaction; + @FXML private Text TextCartDateHeurTransaction; + + @FXML private Text TextChequeNomBanque; + @FXML private Text TextChequeNumero; + @FXML private Text TextChequeNomComple; + @FXML private Text TextChequeDate; + + @FXML private TableView TableViewListeCheque ; + @FXML private TableColumn TabColDateCheque; + @FXML private TableColumn TabColNumeroCheque; + @FXML private TableColumn TabColBanqueCheque; + @FXML private TableColumn TabColMontantCheque; + + @FXML private TableView TableViewListeTraite ; + @FXML private TableColumn TabColDateTraite; + @FXML private TableColumn TabColMontantTraite; + + + @FXML private TableView TableViewFactureFrs; + @FXML private TableColumn TabColNumeroFact; + @FXML private TableColumn TabColProfile; + @FXML private TableColumn TabColDate; + @FXML private TableColumn TabColHeur; + @FXML private TableColumn TabColLocalReception; + @FXML private TableColumn TabColNetPayer; + + private Service ThreadReglement; + + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColMontantTraite.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraite.getStyleClass().add("Center"); + TabColMontantTraite.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColDateTraite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheque.getStyleClass().add("Center"); + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroChequeFrs")); + + TabColBanqueCheque.setStyle( "-fx-alignment: CENTER;"); + TabColBanqueCheque.getStyleClass().add("Center"); + TabColBanqueCheque.setCellValueFactory(new PropertyValueFactory("BanqueChequeFrs")); + + TabColDateCheque.setStyle( "-fx-alignment: CENTER;"); + TabColDateCheque.getStyleClass().add("Center"); + TabColDateCheque.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + TabColMontantCheque.setStyle( "-fx-alignment: CENTER;"); + TabColMontantCheque.getStyleClass().add("Center"); + TabColMontantCheque.setCellValueFactory(new PropertyValueFactory("MontantChequeFrs")); + + TabColNumeroFact.setCellValueFactory(new PropertyValueFactory("Numero")); + + TabColProfile.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColProfile.getStyleClass().add("Center"); + TabColProfile.setCellValueFactory(new Callback, ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures data) { + return new SimpleStringProperty(data.getValue().getProfile().getNom()+" "+data.getValue().getProfile().getPrenom()); + } + }); + + TabColDate.setCellValueFactory(new PropertyValueFactory("DateCreation")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + TabColHeur.setCellValueFactory(new PropertyValueFactory("HeurCreation")); + TabColHeur.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColHeur.getStyleClass().add("Center"); + + TabColLocalReception.setCellValueFactory(new PropertyValueFactory("Local")); + TabColLocalReception.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColLocalReception.getStyleClass().add("Center"); + + TabColNetPayer.setCellValueFactory(new PropertyValueFactory("NetAPayer")); + TabColNetPayer.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNetPayer.getStyleClass().add("Center"); + TabColNetPayer.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + if(item!= null){ + Text text = new Text(Formatter.format(Float.parseFloat(item))); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + } + + public void LanchShowReglement(final String IdReglement){ + + ThreadReglement = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + Reglement reglement = new ReglementDB().getReglementDB(IdReglement); + setReglement(reglement); + return null; + } + }; + } + }; + ThreadReglement.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressReglement.setVisible(false); + PaneDetailReglement.setVisible(true); + } + }); + ThreadReglement.start(); + } + + public void setReglement(Reglement reglement){ + + TextCodeReglement.setText(reglement.getNumero()); + TextTypePaiement.setText(reglement.getTypePaiementString()); + TextModePaiement.setText(reglement.getModePaiementString()); + TextDateCreation.setText(reglement.getDateTimeCreationString()); + + + TextTotalReglement.setText(Formatter.format(Float.parseFloat(reglement.getMontant()))+" "+ParametreSystem.CurrencySign); + TextProfile.setText(reglement.getProfile().getPrenom()+" "+reglement.getProfile().getNom()); + + TextCodeFrs.setText(reglement.getFournisseur().getCode()); + TextNomFrs.setText(reglement.getFournisseur().getNom()); + TextTele1Frs.setText(reglement.getFournisseur().getTele1()); + TextTele2Frs.setText(reglement.getFournisseur().getTele2()); + + TableViewFactureFrs.setItems(reglement.getListFacture()); + // 0 Comptant + if(reglement.getTypePaiement().equals("0")){ + + //0 espèce + if(reglement.getModePaiement().equals("0")){ + + //1 Chéque + }else if(reglement.getModePaiement().equals("1")){ + GridPaneCheque.setVisible(true); + TextChequeNomBanque.setText(reglement.getCheque().getBanqueChequeFrs()); + TextChequeNumero.setText(reglement.getCheque().getNumeroChequeFrs()); + TextChequeNomComple.setText(reglement.getCheque().getNomCompletChequeFrs()); + TextChequeDate.setText(reglement.getCheque().getDateCreation()); + + //2 Carte électronique + }else if(reglement.getModePaiement().equals("2")){ + GridPaneCarte.setVisible(true); + TextCartNomBanque.setText(reglement.getCarte().getBanque()); + TextCartNumeroCart.setText(reglement.getCarte().getNumeroCarte()); + TextCartNumeroTransaction.setText(reglement.getCarte().getNumeroTransaction()); + TextCartDateHeurTransaction.setText(reglement.getCarte().getDateTransaction()+" "+reglement.getCarte().getHeurTransaction()); + } + + + //1 Facilité + }else if(reglement.getTypePaiement().equals("1")){ + + //1 Chéque + if(reglement.getModePaiement().equals("1")){ + TableViewListeCheque.setVisible(true); + ObservableList NewListCheque = FXCollections.observableArrayList(); + for(ChequeFrs Cheque : reglement.getListCheque()) { + String CodeChequeFrs = Cheque.getCodeChequeFrs(); + String NumeroChequeFrs = Cheque.getNumeroChequeFrs(); + String BanqueChequeFrs = Cheque.getBanqueChequeFrs(); + String MontantChequeFrs = Adaptateur.StringDeleZero(Cheque.getMontantChequeFrs()); + String NomCompletChequeFrs = Cheque.getNomCompletChequeFrs(); + String DatePaiement = Adaptateur.NormalDateFormat(Cheque.getDatePaiement()); + String DateCreation = Adaptateur.NormalDateTimeFormat(Cheque.getDateCreation()); + NewListCheque.add(new ChequeFrs(CodeChequeFrs, NumeroChequeFrs, BanqueChequeFrs, MontantChequeFrs, NomCompletChequeFrs, DatePaiement, DateCreation)); + } + TableViewListeCheque.setItems(NewListCheque); + + + //3 Traite + }else if(reglement.getModePaiement().equals("3")){ + TableViewListeTraite.setVisible(true); + TableViewListeTraite.setItems(reglement.getListTraiteString()); + } + } + } + + public ReglementDialogDetailController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Reglement/ReglementDialogDetail.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(CommandeCltDialogConfirmationController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/main/java/Controllers/Reglement/TraiteFrsPrintController.java b/src/main/java/Controllers/Reglement/TraiteFrsPrintController.java new file mode 100644 index 0000000..ce34077 --- /dev/null +++ b/src/main/java/Controllers/Reglement/TraiteFrsPrintController.java @@ -0,0 +1,34 @@ +package Controllers.Reglement; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class TraiteFrsPrintController implements Initializable { + + @FXML private Text TextCompanyName; + @FXML private Text TextCompanyPlace; + @FXML private Text TextCompanyAddress; + @FXML private Text TextBank; + @FXML private Text TextRIP; + @FXML private Text TextRIB; + @FXML private Text TextAmountLetter; + @FXML private Text TextAmountFigures; + @FXML private Text TextDateDeadline; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + // TODO + } + +} diff --git a/src/main/java/Controllers/Stock/BondeEnterPrintController.java b/src/main/java/Controllers/Stock/BondeEnterPrintController.java new file mode 100644 index 0000000..1b1a0e9 --- /dev/null +++ b/src/main/java/Controllers/Stock/BondeEnterPrintController.java @@ -0,0 +1,76 @@ +package Controllers.Stock; + +import Controllers.Traitement.Adaptateur; +import Models.User.User; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher + */ +public class BondeEnterPrintController implements Initializable { + + @FXML private Text TextLocale; + @FXML private Text TextCode; + @FXML private Text TextTitreBon; //Bon d'entrée pour | Bon de sortie à + @FXML private Text TextTypeSource; //Emetteur | Récepteur + @FXML private Text TextValSource; + + @FXML private Text TextDate; + @FXML private Text TextUser; + @FXML private Text TextTransporteur; + @FXML private Text TextPagination; + + @FXML private TableView TableViewProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + @FXML private TableColumn TabColQuantite; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designaton")); + TabColTVA.setCellValueFactory(new PropertyValueFactory("tva")); + TabColTVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTVA.getStyleClass().add("Center"); + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + } + + public void setDataBonEnter(ObservableList listProduits, String TitreBon, String Local, String TypeSource, String ValSource, String Code, String Date, String Heur, String Transporteur, String Pagination){ + + TableViewProduit.setItems(null); + TableViewProduit.setItems(listProduits); + + TextTitreBon.setText(TitreBon); + + TextLocale.setText(Local); + TextCode.setText(Code); + TextTypeSource.setText(TypeSource); + TextValSource.setText(ValSource); + + TextDate.setText(Adaptateur.NormalDateFormat(Date)+" "+Heur); + TextUser.setText(User.nom+" "+User.prenom); + TextTransporteur.setText(Transporteur); + TextPagination.setText(Pagination); + } + +} diff --git a/src/main/java/Controllers/Stock/BondeEntrerController.java b/src/main/java/Controllers/Stock/BondeEntrerController.java new file mode 100644 index 0000000..746e7f2 --- /dev/null +++ b/src/main/java/Controllers/Stock/BondeEntrerController.java @@ -0,0 +1,546 @@ +/* + * 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 Controllers.Stock; + + +import Controllers.Dialog.MessageControle; +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Categorie.CategorieDB; +import Models.Stock.BonEntree; +import Models.Stock.BondeEntrerDB; +import Models.Stock.StockDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.sql.Date; +import java.time.LocalDate; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +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.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableColumn.CellEditEvent; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +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; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * + * @author Maher Ben Tili + */ +public class BondeEntrerController implements Initializable { + + @FXML private AnchorPane AnchorPaneBondentree; + + @FXML private ProgressBar ProgressBarStockBonEnter; + + @FXML private Text LocalRecepteur ; + + @FXML private ComboBox ComboLocale; + + @FXML private DatePicker DateBE; + @FXML private TextField TextFieldCategorie; + @FXML private TextField CodeBE; + @FXML private TextField BonEnteeTransporteur; + @FXML private TextField ReferenceBE; + @FXML private TextField DesignatonBE; + @FXML private TextField TextFieldCodeBarre; + + @FXML private TableView TableViewListeProduitRechercher ; + @FXML private TableColumn TabColRechReference; + @FXML private TableColumn TabColRechDesignaton; + @FXML private TableColumn TabColRechMarque ; + @FXML private TableColumn TabColRechCategorie; + @FXML private TableColumn TabColRechPrixTTC; + @FXML private TableColumn TabColRechTVA; + @FXML private TableColumn TabColRechAddAction ; + + + @FXML private TableView TableViewListeProduitBE ; + @FXML private TableColumn TabColBEReference; + @FXML private TableColumn TabColBEDesignaton; + @FXML private TableColumn TabColBEMarque ; + @FXML private TableColumn TabColBECategorie; + @FXML private TableColumn TabColBEPrixTTC; + @FXML private TableColumn TabColBEQuantiteTTC; + @FXML private TableColumn TabColBETVA; + @FXML private TableColumn TabColBEAddAction ; + + private Service ThreadSearchCategorie; + + ObservableList data=FXCollections.observableArrayList(); + BondeEntrerDB bonentrer = new BondeEntrerDB(); + StockDB stockdb = new StockDB(); + + String categorie="" ; + String Reference="" ; + String designaton="" ; + String Codebarre="" ; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + LocalRecepteur.setText(ParametreSystem.NomLocalPC); + DateBE.setValue(LocalDate.now()); + //Liste des Locales + ComboLocale.setOnMouseClicked(new EventHandler() { + @Override + public void handle(MouseEvent t) { + ComboLocale.setStyle("-fx-border-color:#cfcfcf;"); + ComboLocale.getItems().clear(); + ComboLocale.getItems().addAll(stockdb.getListLocal()); + } + }); + + + //List des Categories + setCategorie(); + + TableViewListeProduitBE.setEditable(true); + + //Pour la premiére table View rechercher un produit + TabColRechReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColRechDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + TabColRechMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColRechCategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + TabColRechPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColRechPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT; -fx-font-weight:bold;"); + TabColRechTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColRechTVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold;"); + TabColRechAddAction.setSortable(true); + TabColRechAddAction.setStyle( "-fx-alignment: CENTER;"); + + TabColRechAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColRechAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + + //Pour la deuxèmé table View rechercher un produit + TabColBEReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColBEDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + TabColBEMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColBECategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + TabColBEPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColBEPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT; -fx-font-weight:bold; -fx-font-size: 9pt;"); + TabColBETVA.setCellValueFactory(new PropertyValueFactory("tva")); + TabColBETVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColBEQuantiteTTC.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColBEQuantiteTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + //Ajouter l'option textfield + TabColBEQuantiteTTC.setCellFactory(TextFieldTableCell.forTableColumn()); + + + //Valier l'opertion de modification de la quantite par la sourie + TabColBEQuantiteTTC.setOnEditCommit(new EventHandler>() { + @Override + public void handle(CellEditEvent t) { + + String NewQuantite = t.getNewValue(); + String OldQuantite = t.getOldValue(); + + try{ + double d = Double.parseDouble(NewQuantite); + //le cas ou il tape un zéro 0 + if(d<=0){ + ((ListProduitBon) t.getTableView().getItems().get(t.getTablePosition().getRow())).setQuantite(OldQuantite); + } + else{ + ((ListProduitBon) t.getTableView().getItems().get(t.getTablePosition().getRow())).setQuantite(NewQuantite); + } + } + //le cas ou la nouvelle quantité n'est pas un entier + catch(NumberFormatException nfe){ + //inséré l'ancienne valeur de quantité + ((ListProduitBon) t.getTableView().getItems().get(t.getTablePosition().getRow())).setQuantite(OldQuantite); + } + //actualiser la ligne + TableViewListeProduitBE.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduitBE.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + + }); + + final TextField TextQuantiteTTC = new TextField(); + TextQuantiteTTC.setPromptText("quantite"); + TextQuantiteTTC.setMaxWidth(TabColBEQuantiteTTC.getPrefWidth()); + + + TabColBEAddAction.setSortable(true); + TabColBEAddAction.setStyle( "-fx-alignment: CENTER;"); + TabColBEAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColBEAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCellBE(); + } + }); + + + //get recheche produit + this.KeyEventProduit(); + + } + + + + private void SearchProduit() + { + ProgressBarStockBonEnter.setVisible(true); + + ThreadSearchCategorie = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + TableViewListeProduitRechercher.setItems(bonentrer.getdataProdBE(Reference, designaton, Codebarre, categorie)); + + return null; + } + }; + } + }; + + ThreadSearchCategorie.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarStockBonEnter.setVisible(false); + } + }); + ThreadSearchCategorie.start(); + } + + private void setCategorie() + { + ProgressBarStockBonEnter.setVisible(true); + + ThreadSearchCategorie = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + TextFields.bindAutoCompletion(TextFieldCategorie, new CategorieDB().getListCategorie()); + + return null; + } + }; + } + }; + + ThreadSearchCategorie.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarStockBonEnter.setVisible(false); + } + }); + ThreadSearchCategorie.start(); + } + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + + ListProduitRech ListProRech = (ListProduitRech) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + + ListProduitBon listbrodbe = new ListProduitBon(ListProRech.getReference(), ListProRech.getDesignaton(), ListProRech.getMarque(), ListProRech.getCategorie(), ListProRech.getPrixttc(), "1", ListProRech.getTVA()); + + //lorce qu'il y a plus que ligne + if(data.size()>0){ + boolean result = false ; + int indise = 1; + //Verifier si la produit exsiste déja + while(indise<=data.size() && !result){ + result = data.get(indise-1).getReference().equals(ListProRech.getReference()); + //si il le produit exisite déja on ajoute 1 a la quantité + if(result){ + Integer quantite=Integer.parseInt(data.get(indise-1).getQuantite())+1; + data.get(indise-1).setQuantite(Integer.toString(quantite)); + TableViewListeProduitBE.refresh(); + } + indise++; + } + //si le produit n'exsiste pas on la joute à la table view + if(!result){ + data.add(listbrodbe); + } + } + else{ + data.add(listbrodbe); + } + TableViewListeProduitBE.setItems(data); + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + //Define the button cell + private class ButtonCellBE extends TableCell { + + final Button cellButton = new Button(); + + ButtonCellBE(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + private void KeyEventProduit(){ + + ReferenceBE.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + Codebarre=TextFieldCodeBarre.getText(); + if(Reference.isEmpty() && designaton.isEmpty() && Codebarre.isEmpty()){ + TableViewListeProduitRechercher.setItems(null); + } + else{ + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + + } + }); + + DesignatonBE.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + Codebarre=TextFieldCodeBarre.getText(); + if(Reference.isEmpty() && designaton.isEmpty() && Codebarre.isEmpty()){ + TableViewListeProduitRechercher.setItems(null); + } + else{ + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + + } + }); + + TextFieldCodeBarre.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + Codebarre=TextFieldCodeBarre.getText(); + if(Reference.isEmpty() && designaton.isEmpty() && Codebarre.isEmpty()){ + TableViewListeProduitRechercher.setItems(null); + } + else{ + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + + } + }); + + TextFieldCategorie.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + Codebarre = TextFieldCodeBarre.getText(); + categorie = TextFieldCategorie.getText(); + SearchProduit(); + } + } + }); + } + + + //Créer la bon d'entére + @FXML + private void CreerBonEnterButtonAction(ActionEvent event) throws IOException { + + final BondeEntrerDialogConfirmation notification = new BondeEntrerDialogConfirmation(); + contro ctl= new contro() ; + if(ComboLocale.getValue()==null){ + ComboLocale.setStyle("-fx-border-color:#f20606;"); + + } + else if(ctl.isNumericNotnull(CodeBE.getText())){ + CodeBE.setStyle("-fx-border-color:#f20606;"); + } + else if(data.isEmpty()){ + ComboLocale.setStyle("-fx-border-color:#cfcfcf;"); + CodeBE.setStyle("-fx-border-color:#cfcfcf;"); + + final MessageControle messagecontrol = new MessageControle(); + + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits (entrée)"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + + messagecontrol.ShowNotification(); + + } + else{ + ComboLocale.setStyle("-fx-border-color:#cfcfcf;"); + notification.Code.setText(CodeBE.getText()); + notification.Source.setText(ComboLocale.getValue().toString()); + notification.Date.setText(Adaptateur.NormalDateFormat(DateBE.getValue())); + notification.Tranporteur.setText(BonEnteeTransporteur.getText()); + notification.Confdata= data; + + + notification.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + + BonEntree bonentree = new BonEntree(); + bonentree.setLocal_emetteur(ComboLocale.getValue().toString()); + bonentree.setLocal_recepteur(ParametreSystem.NomLocalPC); + bonentree.setId(CodeBE.getText()); + + //date bon d'entrée + Date Datebe = java.sql.Date.valueOf(DateBE.getValue()); + bonentree.setDate(Datebe); + + bonentree.setTransporteur(BonEnteeTransporteur.getText()); + if(bonentrer.addBonEntrer(bonentree,data)){ + notification.stackpane.setVisible(false); + AnchorPaneBondentree.getChildren().clear(); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Stock/BondeEntrerDetail.fxml")); + Parent root = (Parent)fxmlLoader.load(); + AnchorPaneBondentree.getChildren().add(root); + } catch (IOException ex) { + Logger.getLogger(BondeEntrerController.class.getName()).log(Level.SEVERE, null, ex); + } + } + else{ + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + } + }); + notification.ShowDialg(); + } + + } + + +} diff --git a/src/main/java/Controllers/Stock/BondeEntrerDetailController.java b/src/main/java/Controllers/Stock/BondeEntrerDetailController.java new file mode 100644 index 0000000..36e98a3 --- /dev/null +++ b/src/main/java/Controllers/Stock/BondeEntrerDetailController.java @@ -0,0 +1,177 @@ +/* + * 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 Controllers.Stock; + +import Controllers.Traitement.Adaptateur; +import Models.Stock.BonEntree; +import Models.Stock.BondeEntrerDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.JobSettings; +import javafx.print.PageRange; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BondeEntrerDetailController implements Initializable { + + @FXML private AnchorPane BondeEntrerDetail; + + @FXML private Button RecreerBD ; + + @FXML private Text source ; + @FXML private Text id ; + @FXML private Text Textdate ; + @FXML private Text heur ; + @FXML private Text transporteur ; + + @FXML private TableView TableViewListeProduitBE ; + @FXML private TableColumn TabColBEReference; + @FXML private TableColumn TabColBEDesignation; + @FXML private TableColumn TabColBEMarque ; + @FXML private TableColumn TabColBECategorie; + @FXML private TableColumn TabColBEPrixTTC; + @FXML private TableColumn TabColBEQuantiteTTC; + @FXML private TableColumn TabColBETVA; + + + public static String id_bondentree ; + + BondeEntrerDB MyBonEntreeDB = new BondeEntrerDB(); + BonEntree MyBonEntree = new BonEntree(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icon-relogin.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + RecreerBD.setGraphic(buttonGraphic); + + TabColBEReference.setCellValueFactory(new PropertyValueFactory("reference")); + + TabColBEDesignation.setCellValueFactory(new PropertyValueFactory("designaton")); + + TabColBEMarque.setCellValueFactory(new PropertyValueFactory("marque")); + + TabColBECategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + + TabColBEPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColBEPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT;"); + + TabColBETVA.setCellValueFactory(new PropertyValueFactory("tva")); + TabColBETVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + TabColBEQuantiteTTC.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColBEQuantiteTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + + MyBonEntree = MyBonEntreeDB.getBonEntree(id_bondentree); + + id.setText(MyBonEntree.getId()); + source.setText(MyBonEntree.getLocal_emetteur()); + Textdate.setText(Adaptateur.NormalDateFormat(MyBonEntree.getDate().toString())); + heur.setText(MyBonEntree.getHeur().toString()); + transporteur.setText(MyBonEntree.getTransporteur()); + TableViewListeProduitBE.setItems(MyBonEntree.getListe_prod()); + + } + + @FXML + private void PDFBonEntreButtonAction(ActionEvent event) throws IOException { + try { + ObservableList ListProd = MyBonEntree.getListe_prod(); + PrinterJob jobExportPDF = PrinterJob.createPrinterJob(); + int SizelistMouvement = ListProd.size(); + int total = SizelistMouvement / 20 + 1 ; + int page = 0; + for (int i=0; i listProdTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+20)) && (j ListProd = MyBonEntree.getListe_prod(); + + int SizelistMouvement = ListProd.size(); + int total = SizelistMouvement / 20 + 1 ; + int page = 0; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) { + JobSettings jsPrint = jobPrint.getJobSettings(); + for (int i=0; i listProdTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+20)) && (j Confdata=FXCollections.observableArrayList(); + public Button bouttonNo = new Button(); + public Button bouttonOK = new Button("Enregistrer"); + public TableView ConfBondEnter = new TableView(); + public Text titre = new Text(); + + public Text Source = new Text(); + public Text Code = new Text(); + public Text Tranporteur = new Text(); + public Text Date = new Text(); + + public Text titreMSG = new Text(); + public Text detail = new Text(); + public StackPane stackpane = new StackPane(); + + public Node Setnotification(){ + + + Group group = new Group(); + + AnchorPane Ap = new AnchorPane(); + Ap.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + + Pane pa1 = new Pane(); + pa1.setStyle("-fx-background-color:#ffffff; -fx-border-color: #212121; -fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0;"); + pa1.setPrefHeight(550); + pa1.setPrefWidth(750); + + Pane pa2 = new Pane(); + pa2.setStyle("-fx-background-color:linear-gradient(to bottom, #585858, #333333); -fx-background-radius: 10 10 0 0;"); + pa2.setPrefHeight(30); + pa2.setPrefWidth(750); + + TableColumn TabColBEReference = new TableColumn("Référence"); + TabColBEReference.setMinWidth(125); + TabColBEReference.setCellValueFactory(new PropertyValueFactory("reference")); + + TableColumn TabColBEDesignaton = new TableColumn("Désignation"); + TabColBEDesignaton.setMinWidth(155); + TabColBEDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + + TableColumn TabColBEMarque = new TableColumn("Marque"); + TabColBEMarque.setMinWidth(100); + TabColBEMarque.setCellValueFactory(new PropertyValueFactory("marque")); + + TableColumn TabColBECategorie = new TableColumn("Catégorie"); + TabColBECategorie.setMinWidth(100); + TabColBECategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + + TableColumn TabColBETVA = new TableColumn("TVA"); + TabColBETVA.setMinWidth(70); + TabColBETVA.setCellValueFactory(new PropertyValueFactory("tva")); + + TableColumn TabColBEPrixTTC = new TableColumn("Prix TTC"); + TabColBEPrixTTC.setMinWidth(70); + TabColBEPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColBEPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT;"); + + TableColumn TabColBEQuantite = new TableColumn("Quantité"); + TabColBEQuantite.setMinWidth(70); + TabColBEQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColBEQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + + TableView ConfBonEnter = new TableView(); + + ConfBonEnter.getColumns().addAll(TabColBEReference, TabColBEDesignaton, TabColBEMarque, TabColBECategorie, TabColBETVA, TabColBEPrixTTC, TabColBEQuantite); + ConfBonEnter.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + ConfBonEnter.setLayoutX(12); + ConfBonEnter.setLayoutY(130); + ConfBonEnter.setPrefHeight(350); + ConfBonEnter.setItems(Confdata); + + titre.setText("Dialog de confirmation"); + titre.setFont(Font.font("System", FontWeight.BOLD, 14)); + titre.setFill(Color.web("#ffffff")); + titre.setLayoutX(17); + titre.setLayoutY(22); + + Image imgicon = new Image(getClass().getResourceAsStream("/Public/icon/dialoginform.png")); + ImageView icon = new ImageView(imgicon); + icon.setLayoutX(20); + icon.setLayoutY(60); + icon.setFitWidth(46); + icon.setFitHeight(50); + + TextFlow DetailMSG = new TextFlow(); + + DetailMSG.setPrefHeight(120); + DetailMSG.setPrefWidth(400); + DetailMSG.setLayoutX(80); + DetailMSG.setLayoutY(55); + + + + Text text1 = new Text("Bon d'entrée \n"); + text1.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + text1.setFill(Color.web("#363a38")); + DetailMSG.getChildren().add(text1); + + Text text2 = new Text("Êtes-vous sûr de vouloir enregistrer la bon d'entrée"); + text2.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + text2.setFill(Color.web("#363a38")); + DetailMSG.getChildren().add(text2); + + Text code = new Text("Code:"); + code.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + code.setFill(Color.web("#363a38")); + code.setLayoutX(80); + code.setLayoutY(115); + + Code.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Code.setFill(Color.web("#363a38")); + Code.setLayoutX(130); + Code.setLayoutY(115); + + Text source = new Text("Source:"); + source.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + source.setFill(Color.web("#363a38")); + source.setLayoutX(180); + source.setLayoutY(115); + + Source.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Source.setFill(Color.web("#363a38")); + Source.setLayoutX(240); + Source.setLayoutY(115); + + Text date = new Text("Date:"); + date.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + date.setFill(Color.web("#363a38")); + date.setLayoutX(350); + date.setLayoutY(115); + + Date.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Date.setFill(Color.web("#363a38")); + Date.setLayoutX(390); + Date.setLayoutY(115); + + Text tranporteur = new Text("Tranporteur:"); + tranporteur.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + tranporteur.setFill(Color.web("#363a38")); + tranporteur.setLayoutX(500); + tranporteur.setLayoutY(115); + + Tranporteur.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Tranporteur.setFill(Color.web("#363a38")); + Tranporteur.setLayoutX(600); + Tranporteur.setLayoutY(115); + + bouttonOK.setFont(Font.font ("Arial", FontWeight.BOLD, 14)); + bouttonOK.setStyle("-fx-background-color:#4DAE4D; -fx-text-fill: white; -fx-border-radius: 5 5 5 5;"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + bouttonOK.setGraphic(buttonGraphic); + bouttonOK.setPrefWidth(140); + bouttonOK.setPrefHeight(35); + bouttonOK.setLayoutX(600); + bouttonOK.setLayoutY(500); + + + + bouttonNo.setText("Annuler"); + bouttonNo.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonNo.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + bouttonNo.setPrefWidth(73); + bouttonNo.setPrefHeight(30); + bouttonNo.setLayoutX(500); + bouttonNo.setLayoutY(503); + bouttonNo.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + } + }); + + group.getChildren().addAll(pa1, pa2, titre, icon, code, Code, source, Source, date, Date, tranporteur, Tranporteur, ConfBonEnter, DetailMSG, bouttonOK, bouttonNo); + + stackpane.setVisible(true); + stackpane.getChildren().add(Ap); + stackpane.getChildren().add(group); + + + + return stackpane; + + } + + + public void ShowDialg() + { + Node node = this.Setnotification(); + + StackPane Sp = new StackPane(); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/main/java/Controllers/Stock/BondeSortieController.java b/src/main/java/Controllers/Stock/BondeSortieController.java new file mode 100644 index 0000000..7263cc6 --- /dev/null +++ b/src/main/java/Controllers/Stock/BondeSortieController.java @@ -0,0 +1,605 @@ +/* + * 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 Controllers.Stock; + +import Controllers.Dialog.MessageControle; +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.Categorie.CategorieDB; +import Models.Stock.BonSortie; +import Models.Stock.BondeSortieDB; +import Models.Stock.StockDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +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.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleButton; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +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; +import org.controlsfx.control.textfield.TextFields; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class BondeSortieController implements Initializable { + + @FXML private AnchorPane AnchorPaneBonSortie; + + @FXML private ProgressBar ProgressBarStockBonSortie; + + @FXML private Text LocalEmetteur ; + + @FXML private ComboBox ComboLocale; + @FXML private ToggleButton Activate ; //permet d'activer la l'option de rechercher dans la table produit (Stock négative) + @FXML private DatePicker DateBS; + @FXML private TextField TextFieldCategorie; + @FXML private TextField SortieTransporteur; + @FXML private TextField ReferenceBE; + @FXML private TextField DesignatonBE; + @FXML private TextField TextFieldCodeBarre; + + @FXML private TableView TableViewListeProduitRechercher ; + @FXML private TableColumn TabColRechReference; + @FXML private TableColumn TabColRechDesignaton; + @FXML private TableColumn TabColRechMarque ; + @FXML private TableColumn TabColRechCategorie; + @FXML private TableColumn TabColRechPrixTTC; + @FXML private TableColumn TabColRechTVA; + @FXML private TableColumn TabColRechQuantite; + @FXML private TableColumn TabColRechAddAction ; + + + @FXML private TableView TableViewListeProduitBE ; + @FXML private TableColumn TabColBEReference; + @FXML private TableColumn TabColBEDesignaton; + @FXML private TableColumn TabColBEMarque ; + @FXML private TableColumn TabColBECategorie; + @FXML private TableColumn TabColBEPrixTTC; + @FXML private TableColumn TabColBEQuantiteTTC; + @FXML private TableColumn TabColBETVA; + @FXML private TableColumn TabColBEAddAction ; + + private Service ThreadSearchCategorieSortie; + + ObservableList data=FXCollections.observableArrayList(); + BondeSortieDB bonsortiedb = new BondeSortieDB(); + StockDB stockdb = new StockDB(); + + Boolean StockNegative = false; //option de ToggleGroup Activate ; + String categorie="" ; + String Reference="" ; + String designaton="" ; + String codeBarre="" ; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + LocalEmetteur.setText(ParametreSystem.NomLocalPC); + + DateBS.setValue(LocalDate.now()); + + Activate.setOnMouseClicked(new EventHandler() { + @Override + public void handle(MouseEvent t) { + StockNegative = Activate.selectedProperty().getValue(); + } + }); + + + //Liste des Locales + ComboLocale.setOnMouseClicked(new EventHandler() { + @Override + public void handle(MouseEvent t) { + ComboLocale.setStyle("-fx-border-color:#cfcfcf;"); + ComboLocale.getItems().clear(); + ComboLocale.getItems().addAll(stockdb.getListLocal()); + } + }); + + + + TableViewListeProduitBE.setEditable(true); + + //Pour la premiére table View rechercher un produit + TabColRechReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColRechDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + TabColRechMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColRechCategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + TabColRechPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColRechPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT; -fx-font-weight:bold;"); + TabColRechTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColRechTVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold;"); + TabColRechQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColRechQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold;"); + TabColRechAddAction.setSortable(true); + TabColRechAddAction.setStyle( "-fx-alignment: CENTER;"); + + TabColRechAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColRechAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new BondeSortieController.ButtonCell(); + } + }); + + + //Pour la deuxèmé table View rechercher un produit + TabColBEReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColBEDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + TabColBEMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColBECategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + TabColBEPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColBEPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT; -fx-font-weight:bold; -fx-font-size: 9pt;"); + TabColBETVA.setCellValueFactory(new PropertyValueFactory("tva")); + TabColBETVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColBEQuantiteTTC.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColBEQuantiteTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + //Ajouter l'option textfield + TabColBEQuantiteTTC.setCellFactory(TextFieldTableCell.forTableColumn()); + + + //Valier l'opertion de modification de la quantite par la sourie + TabColBEQuantiteTTC.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + + String NewQuantite = t.getNewValue(); + String OldQuantite = t.getOldValue(); + + try{ + double d = Double.parseDouble(NewQuantite); + String ref =t.getTableView().getItems().get(t.getTablePosition().getRow()).getReference(); + Integer quantStock = bonsortiedb.GetQuantiteStock(ref); + //le cas ou il tape un zéro 0 + if(d<=0){ + ((ListProduitBon) t.getTableView().getItems().get(t.getTablePosition().getRow())).setQuantite(OldQuantite); + } + // le ca ou la quantité BS ne doit pas dépassé la quantité en stock + else if(!StockNegative && quantStock() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + else{ + ((ListProduitBon) t.getTableView().getItems().get(t.getTablePosition().getRow())).setQuantite(NewQuantite); + } + + + + } + //le cas ou la nouvelle quantité n'est pas un entier + catch(NumberFormatException nfe){ + //inséré l'ancienne valeur de quantité + ((ListProduitBon) t.getTableView().getItems().get(t.getTablePosition().getRow())).setQuantite(OldQuantite); + } + //actualiser la ligne + TableViewListeProduitBE.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduitBE.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + + }); + + final TextField TextQuantiteTTC = new TextField(); + TextQuantiteTTC.setPromptText("quantite"); + TextQuantiteTTC.setMaxWidth(TabColBEQuantiteTTC.getPrefWidth()); + + + TabColBEAddAction.setSortable(true); + TabColBEAddAction.setStyle( "-fx-alignment: CENTER;"); + TabColBEAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColBEAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new BondeSortieController.ButtonCellBE(); + } + }); + + + //get recheche produit + this.KeyEventProduit(); + + this.setCategorie(); + } + + + + //Methode pour récupéré la selection du catégorie + private void setCategorie() + { + ProgressBarStockBonSortie.setVisible(true); + + ThreadSearchCategorieSortie = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + TextFields.bindAutoCompletion(TextFieldCategorie, new CategorieDB().getListCategorie()); + + return null; + } + }; + } + }; + + ThreadSearchCategorieSortie.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarStockBonSortie.setVisible(false); + } + }); + ThreadSearchCategorieSortie.start(); + } + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + + ListProduitRech ListProRech = (ListProduitRech) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + + ListProduitBon listbrodbe = new ListProduitBon(ListProRech.getReference(), ListProRech.getDesignaton(), ListProRech.getMarque(), ListProRech.getCategorie(), ListProRech.getPrixttc(), "1", ListProRech.getTVA()); + + //lorce qu'il y a plus que ligne + if(data.size()>0){ + boolean result = false ; + int indise = 1; + //Verifier si la produit exsiste déja + while(indise<=data.size() && !result){ + result = data.get(indise-1).getReference().equals(ListProRech.getReference()); + //si il le produit exisite déja on ajoute 1 a la quantité + if(result){ + + //quantité disponible en stock + Integer QuantiteStock = Integer.valueOf(ListProRech.getQuantite()); + + Integer quantiteBS=Integer.parseInt(data.get(indise-1).getQuantite())+1; + + //le cas ou quantité en bon de sortie ne doit pas dépassé la quantité en stock + if(!StockNegative){ + if(quantiteBS<=QuantiteStock){ + data.get(indise-1).setQuantite(Integer.toString(quantiteBS)); + } + else{ + //le ca ou la quantité en bon de sortie dépasse la quntité en stock + final MessageControle messagecontrol = new MessageControle(); + + Text text3 = new Text(); + text3.setText("La quantité en bon de sortie ne doit pas dépassé la quantité en stock"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + } + // le ca ou on la la possibilité de stock négative + else{ + data.get(indise-1).setQuantite(Integer.toString(quantiteBS)); + } + TableViewListeProduitBE.getColumns().get(indise-1).setVisible(false); + TableViewListeProduitBE.getColumns().get(indise-1).setVisible(true); + } + indise++; + } + //si le produit n'exsiste pas on la joute à la table view + if(!result){ + data.add(listbrodbe); + } + } + else{ + data.add(listbrodbe); + } + TableViewListeProduitBE.setItems(data); + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + //methode pour céer la bon de sortie + @FXML + private void CreerBonSortieButtonAction(ActionEvent event) throws IOException { + + if(ComboLocale.getValue()==null){ + ComboLocale.setStyle("-fx-border-color:#f20606;"); + + } + + else if(data.isEmpty()){ + ComboLocale.setStyle("-fx-border-color:#cfcfcf;"); + final MessageControle messagecontrol = new MessageControle(); + + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits (Sortie)"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + + messagecontrol.ShowNotification(); + + } + else{ + final BondeSortieDialogConfirmation notification = new BondeSortieDialogConfirmation(); + notification.Date.setText(Adaptateur.NormalDateFormat(DateBS.getValue())); + notification.Tranporteur.setText(SortieTransporteur.getText()); + notification.Affecter.setText(ComboLocale.getValue().toString()); + notification.Confdata= data; + notification.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + + //date bon de sortie + BonSortie bonsortie = new BonSortie(); + bonsortie.setDate(java.sql.Date.valueOf(DateBS.getValue())); + bonsortie.setTransporteur(SortieTransporteur.getText()); + bonsortie.setLocal_emetteur(ParametreSystem.NomLocalPC); + bonsortie.setLocal_recepteur(ComboLocale.getValue().toString()); + bonsortie.setListe_prod(data); + + if(bonsortiedb.addBonSortie(bonsortie)){ + + notification.stackpane.setVisible(false); + AnchorPaneBonSortie.getChildren().clear(); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Stock/BondeSortieDetail.fxml")); + Parent root = (Parent)fxmlLoader.load(); + AnchorPaneBonSortie.getChildren().add(root); + } catch (IOException ex) { + Logger.getLogger(BondeEntrerController.class.getName()).log(Level.SEVERE, null, ex); + } + } + else{ + ShowDialog SD = new ShowDialog(); + ShowDialog.titre="Erreur Système"; + ShowDialog.detail="Models/Stock/BonSortieController.java"; + SD.ShowAletDialog(); + } + + } + }); + + notification.ShowDialg(); + } + } + + + + //Define the button cell + private class ButtonCellBE extends TableCell { + + final Button cellButton = new Button(); + + ButtonCellBE(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + private void SearchProduit() + { + ProgressBarStockBonSortie.setVisible(true); + + ThreadSearchCategorieSortie = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + TableViewListeProduitRechercher.setItems(bonsortiedb.getdataProdBS(Reference, designaton, codeBarre, categorie,StockNegative)); + + return null; + } + }; + } + }; + + ThreadSearchCategorieSortie.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarStockBonSortie.setVisible(false); + } + }); + ThreadSearchCategorieSortie.start(); + } + + private void KeyEventProduit(){ + + ReferenceBE.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + codeBarre = TextFieldCodeBarre.getText(); + if(Reference.isEmpty() && designaton.isEmpty() && codeBarre.isEmpty()){ + TableViewListeProduitRechercher.setItems(null); + } + else{ + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + + } + }); + + DesignatonBE.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + codeBarre = TextFieldCodeBarre.getText(); + if(Reference.isEmpty() && designaton.isEmpty() && codeBarre.isEmpty()){ + TableViewListeProduitRechercher.setItems(null); + } + else{ + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + + } + }); + + TextFieldCodeBarre.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + codeBarre = TextFieldCodeBarre.getText(); + if(Reference.isEmpty() && designaton.isEmpty() && codeBarre.isEmpty()){ + TableViewListeProduitRechercher.setItems(null); + } + else{ + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + + } + }); + + TextFieldCategorie.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + Reference=ReferenceBE.getText(); + designaton=DesignatonBE.getText(); + codeBarre = TextFieldCodeBarre.getText(); + categorie = TextFieldCategorie.getText(); + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduit(); + } + } + } + }); + + } + +} diff --git a/src/main/java/Controllers/Stock/BondeSortieDetailController.java b/src/main/java/Controllers/Stock/BondeSortieDetailController.java new file mode 100644 index 0000000..0984b23 --- /dev/null +++ b/src/main/java/Controllers/Stock/BondeSortieDetailController.java @@ -0,0 +1,173 @@ +/* + * 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 Controllers.Stock; + +import Controllers.Traitement.Adaptateur; +import Models.Stock.BonSortie; +import Models.Stock.BondeSortieDB; +import Models.Stock.StockDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.JobSettings; +import javafx.print.PageRange; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * + * @author PC-Maher + */ +public class BondeSortieDetailController implements Initializable { + + @FXML private AnchorPane BonSortieDetail; + + @FXML private Button RecreerBD ; + + @FXML private Text recepteur ; + @FXML private Text id ; + @FXML private Text date ; + @FXML private Text heur ; + @FXML private Text transporteur ; + + @FXML private TableView TableViewListeProduitBon ; + @FXML private TableColumn TabColBonReference; + @FXML private TableColumn TabColBonDesignaton; + @FXML private TableColumn TabColBonMarque ; + @FXML private TableColumn TabColBonCategorie; + @FXML private TableColumn TabColBonPrixTTC; + @FXML private TableColumn TabColBonQuantiteTTC; + @FXML private TableColumn TabColBonTVA; + + public static String id_bonsortie ; + BondeSortieDB MyBondeSortieDB = new BondeSortieDB(); + BonSortie MyBonSortie = new BonSortie(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icon-relogin.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + RecreerBD.setGraphic(buttonGraphic); + + TabColBonReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColBonDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + TabColBonMarque.setCellValueFactory(new PropertyValueFactory("marque")); + TabColBonCategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + TabColBonPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColBonPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT;"); + TabColBonTVA.setCellValueFactory(new PropertyValueFactory("tva")); + TabColBonTVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + TabColBonQuantiteTTC.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColBonQuantiteTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + MyBonSortie = MyBondeSortieDB.getBonSortie(id_bonsortie); + + id.setText(MyBonSortie.getId()); + recepteur.setText(MyBonSortie.getLocal_recepteur()); + date.setText(Adaptateur.NormalDateFormat(MyBonSortie.getDate().toString())); + heur.setText(MyBonSortie.getHeur().toString()); + transporteur.setText(MyBonSortie.getTransporteur()); + TableViewListeProduitBon.setItems(MyBonSortie.getListe_prod()); + + //Methode qui supprime les produit qont la quantité est égale à 0 + StockDB MyStock = new StockDB(); + MyStock.DeleteProdStock(); + + } + + + @FXML + private void PDFBonSortieButtonAction(ActionEvent event) throws IOException { + try { + ObservableList ListProd = MyBonSortie.getListe_prod(); + PrinterJob jobExportPDF = PrinterJob.createPrinterJob(); + int SizelistMouvement = ListProd.size(); + int total = SizelistMouvement / 20 + 1 ; + int page = 0; + for (int i=0; i listProdTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+20)) && (j ListProd = MyBonSortie.getListe_prod(); + + int SizelistMouvement = ListProd.size(); + int total = SizelistMouvement / 20 + 1 ; + int page = 0; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) { + JobSettings jsPrint = jobPrint.getJobSettings(); + for (int i=0; i listProdTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+20)) && (j Confdata=FXCollections.observableArrayList(); + public Button bouttonNo = new Button(); + public Button bouttonOK = new Button("Enregistrer"); + public TableView ConfBondEnter = new TableView(); + public Text titre = new Text(); + + public Text Affecter = new Text(); + public Text Tranporteur = new Text(); + public Text Date = new Text(); + + public Text titreMSG = new Text(); + public Text detail = new Text(); + public StackPane stackpane = new StackPane(); + + public Node Setnotification(){ + + + Group group = new Group(); + + AnchorPane Ap = new AnchorPane(); + Ap.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + + Pane pa1 = new Pane(); + pa1.setStyle("-fx-background-color:#ffffff; -fx-border-color: #212121; -fx-border-radius: 10 10 0 0; -fx-background-radius: 10 10 0 0;"); + pa1.setPrefHeight(550); + pa1.setPrefWidth(750); + + Pane pa2 = new Pane(); + pa2.setStyle("-fx-background-color:linear-gradient(to bottom, #585858, #333333); -fx-background-radius: 10 10 0 0;"); + pa2.setPrefHeight(30); + pa2.setPrefWidth(750); + + TableColumn TabColBEReference = new TableColumn("Référence"); + TabColBEReference.setMinWidth(125); + TabColBEReference.setCellValueFactory(new PropertyValueFactory("reference")); + + TableColumn TabColBEDesignaton = new TableColumn("Désignation"); + TabColBEDesignaton.setMinWidth(155); + TabColBEDesignaton.setCellValueFactory(new PropertyValueFactory("designaton")); + + TableColumn TabColBEMarque = new TableColumn("Marque"); + TabColBEMarque.setMinWidth(100); + TabColBEMarque.setCellValueFactory(new PropertyValueFactory("marque")); + + TableColumn TabColBECategorie = new TableColumn("Catégorie"); + TabColBECategorie.setMinWidth(100); + TabColBECategorie.setCellValueFactory(new PropertyValueFactory("categorie")); + + TableColumn TabColBETVA = new TableColumn("TVA"); + TabColBETVA.setMinWidth(70); + TabColBETVA.setCellValueFactory(new PropertyValueFactory("tva")); + TabColBETVA.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + TableColumn TabColBEPrixTTC = new TableColumn("Prix TTC"); + TabColBEPrixTTC.setMinWidth(70); + TabColBEPrixTTC.setCellValueFactory(new PropertyValueFactory("prixttc")); + TabColBEPrixTTC.setStyle( "-fx-alignment: CENTER_RIGHT;"); + + TableColumn TabColBEQuantite = new TableColumn("Quantité"); + TabColBEQuantite.setMinWidth(70); + TabColBEQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColBEQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + + + TableView ConfBonEnter = new TableView(); + + ConfBonEnter.getColumns().addAll(TabColBEReference, TabColBEDesignaton, TabColBEMarque, TabColBECategorie, TabColBETVA, TabColBEPrixTTC, TabColBEQuantite); + ConfBonEnter.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); + ConfBonEnter.setLayoutX(12); + ConfBonEnter.setLayoutY(130); + ConfBonEnter.setPrefHeight(350); + ConfBonEnter.setItems(Confdata); + + titre.setText("Dialog de confirmation"); + titre.setFont(Font.font("System", FontWeight.BOLD, 14)); + titre.setFill(Color.web("#ffffff")); + titre.setLayoutX(17); + titre.setLayoutY(22); + + Image imgicon = new Image(getClass().getResourceAsStream("/Public/icon/dialoginform.png")); + ImageView icon = new ImageView(imgicon); + icon.setLayoutX(20); + icon.setLayoutY(60); + icon.setFitWidth(46); + icon.setFitHeight(50); + + TextFlow DetailMSG = new TextFlow(); + + DetailMSG.setPrefHeight(120); + DetailMSG.setPrefWidth(400); + DetailMSG.setLayoutX(80); + DetailMSG.setLayoutY(55); + + + + Text text1 = new Text("Bon de Sortie \n"); + text1.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + text1.setFill(Color.web("#363a38")); + DetailMSG.getChildren().add(text1); + + Text text2 = new Text("Êtes-vous sûr de vouloir enregistrer la bon de sortie"); + text2.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + text2.setFill(Color.web("#363a38")); + DetailMSG.getChildren().add(text2); + + Text affecter = new Text("Affecté:"); + affecter.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + affecter.setFill(Color.web("#363a38")); + affecter.setLayoutX(80); + affecter.setLayoutY(115); + + Affecter.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Affecter.setFill(Color.web("#363a38")); + Affecter.setLayoutX(140); + Affecter.setLayoutY(115); + + Text date = new Text("Date:"); + date.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + date.setFill(Color.web("#363a38")); + date.setLayoutX(280); + date.setLayoutY(115); + + Date.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Date.setFill(Color.web("#363a38")); + Date.setLayoutX(320); + Date.setLayoutY(115); + + Text tranporteur = new Text("Tranporteur:"); + tranporteur.setFont(Font.font("Arial", FontWeight.BOLD, 15)); + tranporteur.setFill(Color.web("#363a38")); + tranporteur.setLayoutX(500); + tranporteur.setLayoutY(115); + + Tranporteur.setFont(Font.font("Arial", FontWeight.NORMAL, 15)); + Tranporteur.setFill(Color.web("#363a38")); + Tranporteur.setLayoutX(600); + Tranporteur.setLayoutY(115); + + bouttonOK.setFont(Font.font ("Arial", FontWeight.BOLD, 14)); + bouttonOK.setStyle("-fx-background-color:#4DAE4D; -fx-text-fill: white; -fx-border-radius: 5 5 5 5;"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconsave.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + bouttonOK.setGraphic(buttonGraphic); + bouttonOK.setPrefWidth(140); + bouttonOK.setPrefHeight(35); + bouttonOK.setLayoutX(600); + bouttonOK.setLayoutY(500); + + + + bouttonNo.setText("Annuler"); + bouttonNo.setFont(Font.font ("System", FontWeight.BOLD, 12)); + bouttonNo.setStyle("{-fx-background-color:#EFEFEF; -fx-border-color: #959595; -fx-border-radius: 5 5 5 5;} hover:{-fx-background-color:#E6E6E6;}"); + bouttonNo.setPrefWidth(73); + bouttonNo.setPrefHeight(30); + bouttonNo.setLayoutX(500); + bouttonNo.setLayoutY(503); + bouttonNo.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + stackpane.setVisible(false); + } + }); + + group.getChildren().addAll(pa1, pa2, titre, icon, affecter, Affecter, date, Date, tranporteur, Tranporteur, ConfBonEnter, DetailMSG, bouttonOK, bouttonNo); + + stackpane.setVisible(true); + stackpane.getChildren().add(Ap); + stackpane.getChildren().add(group); + + + + return stackpane; + + } + + + public void ShowDialg() + { + Node node = this.Setnotification(); + + StackPane Sp = new StackPane(); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(node); + + Scene scene = new Scene(Sp); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/main/java/Controllers/Stock/EtatStockCategorieController.java b/src/main/java/Controllers/Stock/EtatStockCategorieController.java new file mode 100644 index 0000000..965ad8e --- /dev/null +++ b/src/main/java/Controllers/Stock/EtatStockCategorieController.java @@ -0,0 +1,439 @@ +package Controllers.Stock; + +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Categorie.CategorieDB; +import Models.Categorie.CategorieListe; +import Models.Produit.ListeProduit; +import Models.Stock.StockDB; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.application.Platform; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.PrinterJob; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.layout.AnchorPane; +import javafx.util.Callback; + +/** + * FXML Controller class + * @author Maher + */ +public class EtatStockCategorieController implements Initializable { + + @FXML private AnchorPane AnchorPaneEtatStockCategorie; + + @FXML private ProgressBar BarLoading; + + @FXML private ComboBox ComboLocale; + + @FXML private TextField TextFieldCategory; + @FXML private TextField TextFieldReference; + @FXML private TextField TextFieldDesignation; + + @FXML private TableView TableViewCategorie ; + @FXML private TableColumn TabColNomCategorie; + @FXML private TableColumn TabColQuantiteCategorie; + @FXML private TableColumn TabColDetailAction ; + + @FXML private TableView TableViewProduit ; + @FXML private TableColumn TabColProduitReference; + @FXML private TableColumn TabColProduitDesignation; + @FXML private TableColumn TabColProduitQuantite; + @FXML private TableColumn TabColProduitDetailAction ; + + @FXML private Button BtnPrintAllProduit; + @FXML private Button BtnPrintAllCategory; + @FXML private Button BtnPrintSelectProduit; + + String StringLocale = ParametreSystem.NomLocalPC; + String StrSeleCategory = ""; + + private Service ThreadEtatStockCategorie; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColNomCategorie.setCellValueFactory(new PropertyValueFactory("Nom")); + + TabColQuantiteCategorie.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantiteCategorie.getStyleClass().add("Center"); + TabColQuantiteCategorie.setCellValueFactory(new PropertyValueFactory("Quantite")); + + TabColDetailAction.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDetailAction.getStyleClass().add("Center"); + TabColDetailAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCellCategorie(); + } + }); + + //Liste des Locales + ComboLocale.getItems().addAll(new StockDB().getAllListLocal()); + ComboLocale.getSelectionModel().select(ParametreSystem.NomLocalPC); + + ComboLocale.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + StringLocale = ComboLocale.getValue().toString(); + SearchCategorie(StringLocale, TextFieldCategory.getText()); + TableViewProduit.setItems(null); + } + }); + + TextFieldCategory.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchCategorie(StringLocale, TextFieldCategory.getText()); + } + } + }); + + SearchCategorie(StringLocale, ""); + + + + /******************* List des Produits******************************/ + + TabColProduitReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColProduitDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + TabColProduitQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColProduitQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColProduitQuantite.getStyleClass().add("Center"); + + TabColProduitDetailAction.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColProduitDetailAction.getStyleClass().add("Center"); + TabColProduitDetailAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCellProduit(); + } + }); + + TextFieldReference.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduits("", TextFieldReference.getText(), ""); + } + + } + }); + + TextFieldDesignation.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchProduits("", "", TextFieldDesignation.getText()); + } + } + }); + + BtnPrintAllProduit.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + PrintAllProduit(); + } + }); + + BtnPrintAllCategory.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + PrintAllCategorie(); + } + }); + + BtnPrintSelectProduit.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + PrintSelectProduit(); + } + }); + + } + + + + + /** + * Print All Produit + */ + private void PrintAllProduit() { + try { + ObservableList listProduits = new StockDB().getProduitInStock(StringLocale, "", "", ""); + PrinterJob job = PrinterJob.createPrinterJob(); + int SizeListProduit = listProduits.size(); + int total = SizeListProduit / 25 + 1 ; + int page = 0; + for (int i=0; i listProdTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+25)) && (j listCategorie = new CategorieDB().GetCategorie(StringLocale, ""); + + PrinterJob jobCate = PrinterJob.createPrinterJob(); + int SizeListCategory = listCategorie.size(); + int total = SizeListCategory / 25 + 1 ; + int page = 0; + for (int i=0; i listCateTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+25)) && (j listSeleProduits = null; + contro clt = new contro(); + int SizeListSeleProduit = 0; + int total = 0; + if(!clt.isStringNull(StrSeleCategory)){ + listSeleProduits = new StockDB().getProduitInStock(StringLocale, StrSeleCategory, "", ""); + SizeListSeleProduit = listSeleProduits.size(); + total = SizeListSeleProduit / 25 + 1 ; + } + PrinterJob job = PrinterJob.createPrinterJob(); + int page = 0; + for (int i=0; i listProdTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+25)) && (j(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + TableViewCategorie.setItems(new CategorieDB().GetCategorie(Local, NomCategory)); + return null; + } + }; + } + }; + + ThreadEtatStockCategorie.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + BarLoading.setVisible(false); + } + }); + ThreadEtatStockCategorie.start(); + } + + + private void SearchProduits(final String Categorie, final String Reference, final String Designation) + { + BarLoading.setVisible(true); + + TableViewProduit.setItems(null); + + ThreadEtatStockCategorie = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + TableViewProduit.setItems(new StockDB().getProduitInStock(StringLocale, Categorie, Reference, Designation)); + return null; + } + }; + } + }; + + ThreadEtatStockCategorie.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + BarLoading.setVisible(false); + } + }); + ThreadEtatStockCategorie.start(); + } + + private class ButtonCellCategorie extends TableCell { + + final Button cellButton = new Button(); + + ButtonCellCategorie(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + + CategorieListe ListCategorie = (CategorieListe)getTableRow().getItem(); + StrSeleCategory = ListCategorie.getNom(); + SearchProduits(ListCategorie.getNom(), "", ""); + + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + private class ButtonCellProduit extends TableCell { + + final Button cellButton = new Button(); + + ButtonCellProduit(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + ListeProduit produit = (ListeProduit)getTableRow().getItem(); + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/Stock/MouvementStock.fxml")); + Parent NodeMouvementStock = (Parent)fxmlLoader.load(); + + MouvementStockController MouvementStock = fxmlLoader.getController(); + MouvementStock.SetData(produit.getReference(), produit.getDesignation(), StringLocale); + + AnchorPaneEtatStockCategorie.getChildren().clear(); + AnchorPaneEtatStockCategorie.getChildren().add(NodeMouvementStock); + + } catch (Exception ex) { + System.err.println(ex.getMessage()); + } + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + +} + + + + \ No newline at end of file diff --git a/src/main/java/Controllers/Stock/ListProduitBon.java b/src/main/java/Controllers/Stock/ListProduitBon.java new file mode 100644 index 0000000..f6b2cb6 --- /dev/null +++ b/src/main/java/Controllers/Stock/ListProduitBon.java @@ -0,0 +1,65 @@ +/* + * 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 Controllers.Stock; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author PC-Maher + */ +public class ListProduitBon { + private final SimpleStringProperty reference; + private final SimpleStringProperty designaton; + private final SimpleStringProperty marque; + private final SimpleStringProperty categorie; + private final SimpleStringProperty prixttc; + private final SimpleStringProperty quantite; + private final SimpleStringProperty tva; + + public ListProduitBon(String reference, String designaton, String marque, String categorie, String prix, String qte,String tva) { + + this.reference = new SimpleStringProperty(reference); + this.designaton = new SimpleStringProperty(designaton); + this.marque = new SimpleStringProperty(marque); + this.categorie = new SimpleStringProperty(categorie); + this.prixttc = new SimpleStringProperty(prix); + this.quantite = new SimpleStringProperty(qte); + this.tva = new SimpleStringProperty(tva); + } + + public String getReference() { + return reference.get(); + } + + public String getDesignaton() { + return designaton.get(); + } + + public String getTva() { + return tva.get(); + } + + + public String getMarque() { + return marque.get(); + } + public String getCategorie() { + return categorie.get(); + } + + public String getPrixttc() { + return prixttc.get(); + } + + public String getQuantite() { + return quantite.get(); + } + public void setQuantite(String fQte) { + quantite.set(fQte); + } + +} diff --git a/src/main/java/Controllers/Stock/ListProduitRech.java b/src/main/java/Controllers/Stock/ListProduitRech.java new file mode 100644 index 0000000..f943b03 --- /dev/null +++ b/src/main/java/Controllers/Stock/ListProduitRech.java @@ -0,0 +1,61 @@ +/* + * 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 Controllers.Stock; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author SYSTEM + */ +public class ListProduitRech { + + private final SimpleStringProperty reference; + private final SimpleStringProperty designaton; + private final SimpleStringProperty marque; + private final SimpleStringProperty categorie; + private final SimpleStringProperty prixttc; + private final SimpleStringProperty TVA; + private final SimpleStringProperty quantite; + + public ListProduitRech(String reference, String designaton, String marque, String categorie, String prix, String tva, String quantite) { + + this.reference = new SimpleStringProperty(reference); + this.designaton = new SimpleStringProperty(designaton); + this.marque = new SimpleStringProperty(marque); + this.categorie = new SimpleStringProperty(categorie); + this.prixttc = new SimpleStringProperty(prix); + this.TVA = new SimpleStringProperty(tva); + this.quantite = new SimpleStringProperty(quantite); + } + + public String getReference() { + return reference.get(); + } + + public String getDesignaton() { + return designaton.get(); + } + + public String getMarque() { + return marque.get(); + } + public String getCategorie() { + return categorie.get(); + } + + public String getPrixttc() { + return prixttc.get(); + } + + public String getTVA() { + return TVA.get(); + } + + public String getQuantite() { + return quantite.get(); + } +} diff --git a/src/main/java/Controllers/Stock/MouvementStockController.java b/src/main/java/Controllers/Stock/MouvementStockController.java new file mode 100644 index 0000000..1369520 --- /dev/null +++ b/src/main/java/Controllers/Stock/MouvementStockController.java @@ -0,0 +1,361 @@ +/* + * 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 Controllers.Stock; + +import Models.Stock.ListeMouvement; +import Models.Stock.StockDB; +import java.io.IOException; +import java.lang.reflect.Method; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +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.print.JobSettings; +import javafx.print.PageRange; +import javafx.print.PrinterJob; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * + * @author Maher + */ +public class MouvementStockController implements Initializable { + + @FXML private ProgressIndicator ProgressLoading; + + @FXML private Text TextReference ; + @FXML private Text TextDesignation ; + + @FXML private TableView TableViewMouvement ; + @FXML private TableColumn TabColCode; + @FXML private TableColumn TabColType; + @FXML private TableColumn TabColMouvement; + @FXML private TableColumn TabColQuantite; + @FXML private TableColumn TabColDate; + + @FXML private DatePicker DatePickerDebut; + @FXML private Button BtnPrintMouvement; + @FXML private Button BtnExportPDFMouvement; + + @FXML private StackPane ListerPages; + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label count ; + @FXML private ChoiceBox NbrLigne ; + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount ; + private Integer nbrpage = 0; + private Integer actuellepage; + Integer position ; + + + private String StringLocal; + private String StringReference; + private String StringDateDebut = ""; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColCode.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColCode.getStyleClass().add("Center"); + TabColCode.setCellValueFactory(new PropertyValueFactory("Code")); + + TabColType.setCellValueFactory(new PropertyValueFactory("Type")); + + TabColMouvement.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMouvement.getStyleClass().add("Center"); + TabColMouvement.setCellValueFactory(new PropertyValueFactory("Mouvement")); + + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + TabColQuantite.setCellValueFactory(new PropertyValueFactory("Quantite")); + + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + + DatePickerDebut.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent actionEvent) { + try{ + StringDateDebut = DatePickerDebut.getValue().toString(); + MouvementStockGestion("Models.Stock.StockDB", "getDataStockDetail", "getNbrStockDetail", StringDateDebut); + }catch(Exception ex){} + } + }); + DatePickerDebut.setOnKeyReleased(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + try{ + StringDateDebut = DatePickerDebut.getConverter().fromString(DatePickerDebut.getEditor().getText()).toString(); + MouvementStockGestion("Models.Stock.StockDB", "getDataStockDetail", "getNbrStockDetail", StringDateDebut); + }catch(Exception ex){} + } + }); + + BtnPrintMouvement.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + PrintMouvement(); + } + }); + + + BtnExportPDFMouvement.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + ExportPDFMouvement(); + } + }); + + } + + public void SetData(String Reference, String Designation, String Local) { + TextReference.setText(Reference); + TextDesignation.setText(Designation); + StringLocal = Local; + StringReference = Reference; + + MouvementStockGestion("Models.Stock.StockDB", "getDataStockDetail", "getNbrStockDetail", ""); + } + + + /** + * Print Mouvement + */ + private void PrintMouvement() { + try { + ObservableList listMouvement = new StockDB().getDataStockDetail(StringLocal, StringReference, "", null, null); + + int SizelistMouvement = listMouvement.size(); + int total = SizelistMouvement / 25 + 1 ; + int page = 0; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) { + JobSettings jsPrint = jobPrint.getJobSettings(); + for (int i=0; i listMouvTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+25)) && (j listMouvement = new StockDB().getDataStockDetail(StringLocal, StringReference, "", null, null); + PrinterJob jobExportPDF = PrinterJob.createPrinterJob(); + int SizelistMouvement = listMouvement.size(); + int total = SizelistMouvement / 25 + 1 ; + int page = 0; + for (int i=0; i listMouvTemp = FXCollections.observableArrayList(); + for (int j=i; (j<(i+25)) && (j) (m.invoke(o, StringLocal, StringReference, DateDebut, Position, Nbrligne))); + + ProgressLoading.setVisible(false); + TableViewMouvement.setVisible(true); + + } catch (Exception ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + }); + } + }; + + Thread backgroundThread = new Thread(task); // Run the task in a background thread + backgroundThread.setDaemon(true); // Terminate the running thread if the application exits + backgroundThread.start(); // Start the thread + + }catch (Exception ex) { + System.err.println(ex.getMessage()); + } + } + private void MouvementStockGestion(final String NomClass, final String NomMethode, String NomMethodeCount, final String DateDebut){ + try { + Class c = Class.forName(NomClass); + Object o = c.newInstance(); + Class[] paramTypes = {String.class, String.class, String.class}; + Method m = c.getDeclaredMethod(NomMethodeCount, paramTypes); + //System.out.println("method = " + m.toString()); + String nbr = (String) m.invoke(o, StringLocal, StringReference, DateDebut); + count.setText(nbr); + totalcount = Integer.parseInt(nbr) ; + } catch (Exception ex) { + System.err.println("Exception MouvementStockGestion "+ex.getMessage()); + } + + ActuellePage.setText("1"); + actuellepage=1; + position = 0; + setFunctiongetDetailStock(NomClass, NomMethode, DateDebut, position, nbrligne); + + + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + setFunctiongetDetailStock(NomClass, NomMethode, DateDebut, position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1){ + position=position-nbrligne; + setFunctiongetDetailStock(NomClass, NomMethode, DateDebut, position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + setFunctiongetDetailStock(NomClass, NomMethode, DateDebut, position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + +} diff --git a/src/main/java/Controllers/Stock/PrintAllCategorieController.java b/src/main/java/Controllers/Stock/PrintAllCategorieController.java new file mode 100644 index 0000000..29490b0 --- /dev/null +++ b/src/main/java/Controllers/Stock/PrintAllCategorieController.java @@ -0,0 +1,48 @@ +package Controllers.Stock; + +import Controllers.Traitement.Adaptateur; +import Models.Categorie.CategorieListe; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher + */ +public class PrintAllCategorieController implements Initializable { + + @FXML private Text TextLocale; + @FXML private Text TextDateCreate; + @FXML private Text TextPagination; + + @FXML private TableView TableViewCategorie ; + @FXML private TableColumn TabColCategorie; + @FXML private TableColumn TabColQuantite; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColCategorie.setCellValueFactory(new PropertyValueFactory("Nom")); + TabColQuantite.setCellValueFactory(new PropertyValueFactory("Quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + } + + + public void setCategories(ObservableList listCateg, String Local, String Pagination){ + TableViewCategorie.setItems(null); + TableViewCategorie.setItems(listCateg); + TextLocale.setText(Local); + TextPagination.setText(Pagination); + TextDateCreate.setText(Adaptateur.getDefaultCurrentDate("dd/MM/yyyy HH:mm")); + } +} diff --git a/src/main/java/Controllers/Stock/PrintAllProduitController.java b/src/main/java/Controllers/Stock/PrintAllProduitController.java new file mode 100644 index 0000000..3f91e66 --- /dev/null +++ b/src/main/java/Controllers/Stock/PrintAllProduitController.java @@ -0,0 +1,58 @@ +/* + * 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 Controllers.Stock; + +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * + * @author Maher + */ +public class PrintAllProduitController implements Initializable { + + @FXML private Text TextLocale; + @FXML private Text TextDateCreate; + @FXML private Text TextPagination; + + @FXML private TableView TableViewProduit ; + @FXML private TableColumn TabColProduitReference; + @FXML private TableColumn TabColProduitDesignation; + @FXML private TableColumn TabColProduitQuantite; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColProduitReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColProduitDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + TabColProduitQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColProduitQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColProduitQuantite.getStyleClass().add("Center"); + + } + + public void setProduits(ObservableList listProduits, String Local, String Pagination){ + TableViewProduit.setItems(null); + TableViewProduit.setItems(listProduits); + TextLocale.setText(Local); + TextPagination.setText(Pagination); + TextDateCreate.setText(Adaptateur.getDefaultCurrentDate("dd/MM/yyyy HH:mm")); + } + + +} diff --git a/src/main/java/Controllers/Stock/PrintMouvementProduitController.java b/src/main/java/Controllers/Stock/PrintMouvementProduitController.java new file mode 100644 index 0000000..38f8a74 --- /dev/null +++ b/src/main/java/Controllers/Stock/PrintMouvementProduitController.java @@ -0,0 +1,73 @@ +package Controllers.Stock; + +import Models.Stock.ListeMouvement; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class PrintMouvementProduitController implements Initializable { + + @FXML private Text TextLocale; + @FXML private Text TextDateDebut; + @FXML private Text TextReference ; + @FXML private Text TextDesignation ; + @FXML private Text TextPagination; + + @FXML private TableView TableViewMouvement ; + @FXML private TableColumn TabColCode; + @FXML private TableColumn TabColType; + @FXML private TableColumn TabColMouvement; + @FXML private TableColumn TabColQuantite; + @FXML private TableColumn TabColDate; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + TabColCode.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColCode.getStyleClass().add("Center"); + TabColCode.setCellValueFactory(new PropertyValueFactory("Code")); + + TabColType.setCellValueFactory(new PropertyValueFactory("Type")); + + TabColMouvement.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMouvement.getStyleClass().add("Center"); + TabColMouvement.setCellValueFactory(new PropertyValueFactory("Mouvement")); + + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + TabColQuantite.setCellValueFactory(new PropertyValueFactory("Quantite")); + + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + + } + + public void setMouvements(ObservableList listMouvements, String Local, String DateDebut, String Reference, String Designation, String Pagination){ + + TableViewMouvement.setItems(null); + TableViewMouvement.setItems(listMouvements); + + TextLocale.setText(Local); + TextDateDebut.setText(DateDebut); + TextReference.setText(Reference); + TextDesignation.setText(Designation); + TextPagination.setText(Pagination); + + } + + +} diff --git a/src/main/java/Controllers/Stock/PrintSelProduitController.java b/src/main/java/Controllers/Stock/PrintSelProduitController.java new file mode 100644 index 0000000..84c32fd --- /dev/null +++ b/src/main/java/Controllers/Stock/PrintSelProduitController.java @@ -0,0 +1,57 @@ +/* + * 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 Controllers.Stock; + +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher + */ +public class PrintSelProduitController implements Initializable { + + + @FXML private Text TextLocale; + @FXML private Text TextDateCreate; + @FXML private Text TextCategory; + @FXML private Text TextPagination; + + @FXML private TableView TableViewProduit ; + @FXML private TableColumn TabColProduitReference; + @FXML private TableColumn TabColProduitDesignation; + @FXML private TableColumn TabColProduitQuantite; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColProduitReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColProduitDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + TabColProduitQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColProduitQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColProduitQuantite.getStyleClass().add("Center"); + } + + public void setProduits(ObservableList listProduits, String Local, String Category, String Pagination){ + TableViewProduit.setItems(null); + TableViewProduit.setItems(listProduits); + TextLocale.setText(Local); + TextCategory.setText(Category); + TextPagination.setText(Pagination); + TextDateCreate.setText(Adaptateur.getDefaultCurrentDate("dd/MM/yyyy HH:mm")); + } +} diff --git a/src/main/java/Controllers/TraiteClt/TraiteCltDetailController.java b/src/main/java/Controllers/TraiteClt/TraiteCltDetailController.java new file mode 100644 index 0000000..96ea1f6 --- /dev/null +++ b/src/main/java/Controllers/TraiteClt/TraiteCltDetailController.java @@ -0,0 +1,402 @@ +package Controllers.TraiteClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Fournisseur.FournisseurDB; +import Models.TraiteClt.TraiteCltDB; +import Models.TraiteClt.TraiteCltGestionDB; +import Models.TraiteClt.TraiteCltPaiementListe; +import java.io.IOException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.DatePicker; +import javafx.scene.control.RadioButton; +import javafx.scene.control.Tab; +import javafx.scene.control.TabPane; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.paint.Color; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class TraiteCltDetailController { + + @FXML private AnchorPane PaneDetailTraite; + @FXML private AnchorPane AnchorPaneLoadingTraite; + + @FXML public TableView TableViewPaiement; + + @FXML public TableColumn TabColTypePaiement; + @FXML public TableColumn TabColMontantPaiement; + @FXML public TableColumn TabColDatePaiement; + @FXML public TableColumn TabColHeurPaiement; + @FXML public TableColumn TabColBanquePaiement; + @FXML public TableColumn TabColNumeroPaiement; + + @FXML private Text TextIdTraite; + @FXML private Text TextDate; + + @FXML private Text TextEtat; + @FXML private Text TextMontant; + + @FXML private Text TextTypeClt; + @FXML private Text TextIdClient; + @FXML private Text TextNomClt; + @FXML private Text TextPrenomClt; + @FXML private Text TxtPrenomMatricule; + + @FXML private Text TextCodeFact; + @FXML private Text TextTotalFact; + + @FXML private RadioButton RadioEspace; + @FXML private RadioButton RadioCheque; + @FXML private RadioButton RadioCarte; + + @FXML private GridPane GridEspace; + @FXML private GridPane GridCheque; + @FXML private GridPane GridCarte; + + @FXML private TextField MontantEspace; + + @FXML private TextField MontantCheque; + @FXML private TextField MontantChequeBanque; + @FXML private TextField MontantChequeNumero; + @FXML private DatePicker DatePickerCheque; + + @FXML private TextField MontantCarte; + @FXML private TextField MontantCarteBanque; + @FXML private TextField MontantCarteNumero; + + @FXML private TabPane TabPanePayement; + @FXML private Tab TabPayerTraite; + @FXML private Tab TabDetailPaiement; + + @FXML private Text TextCtlEspace; + @FXML private Text TextCtlBanque; + @FXML private Text TextCtlCarte; + @FXML private Text TextCtlDateCheque; + + @FXML private Text TextCtlNumCheque; + @FXML private Text TextCtlNameBanque; + + @FXML private Text TextCtlNumCarte; + @FXML private Text TextCtlNameCarteBq; + + @FXML private Button ButtonPayerTraite; + + private int TypePayement ; // 0=>Cheque | 1=>Espace | 2=>Carte + + public String IdTraiteClt; + private float OldMontantPayer; + private float MontantTraite; + + public Service ThreadIdTraiteClt; + + ResultSet Resultat ; + + contro clt = new contro(); + + + public Node GetNodeTraiteCltDetail() { + Node nodeFxml = null; + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/TraiteClt/TraiteCltDetail.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node)fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(TraiteCltDetailController.class.getName()).log(Level.SEVERE, null, ex); + } + return nodeFxml; + } + + public void SetSelectPayement() + { + RadioEspace.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridEspace.setVisible(true); + GridCheque.setVisible(false); + GridCarte.setVisible(false); + TypePayement = 0; + } + }); + RadioCheque.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridCheque.setVisible(true); + GridEspace.setVisible(false); + GridCarte.setVisible(false); + TypePayement = 1; + } + }); + RadioCarte.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridCarte.setVisible(true); + GridEspace.setVisible(false); + GridCheque.setVisible(false); + TypePayement = 2; + } + }); + } + + public void SetTraiteCltDetail(String id_traite) { + IdTraiteClt = id_traite; + + TabColTypePaiement.setStyle( "-fx-alignment: CENTER;");TabColTypePaiement.getStyleClass().add("Center"); + TabColTypePaiement.setCellValueFactory(new PropertyValueFactory("TypePaiement")); + + TabColMontantPaiement.setStyle( "-fx-alignment: CENTER;");TabColMontantPaiement.getStyleClass().add("Center"); + TabColMontantPaiement.setCellValueFactory(new PropertyValueFactory("MontantPaiement")); + + TabColDatePaiement.setStyle( "-fx-alignment: CENTER;");TabColDatePaiement.getStyleClass().add("Center"); + TabColDatePaiement.setCellValueFactory(new PropertyValueFactory("DatePaiement")); + + TabColHeurPaiement.setStyle( "-fx-alignment: CENTER;");TabColHeurPaiement.getStyleClass().add("Center"); + TabColHeurPaiement.setCellValueFactory(new PropertyValueFactory("HeurPaiement")); + + TabColBanquePaiement.setStyle( "-fx-alignment: CENTER;");TabColBanquePaiement.getStyleClass().add("Center"); + TabColBanquePaiement.setCellValueFactory(new PropertyValueFactory("BanquePaiement")); + + TabColNumeroPaiement.setStyle( "-fx-alignment: CENTER;");TabColNumeroPaiement.getStyleClass().add("Center"); + TabColNumeroPaiement.setCellValueFactory(new PropertyValueFactory("NumeroPaiement")); + + startTask(); + ButtonPayerTraiteAction(); + SetSelectPayement(); + } + + + public void startTask() + { + ThreadIdTraiteClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + Resultat = new TraiteCltGestionDB().GetDetailTraite(IdTraiteClt); + + + + return null; + } + }; + } + }; + ThreadIdTraiteClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + try { + TextIdTraite.setText(Resultat.getString("id_traite")); + + TextDate.setText(Resultat.getString("date_traite_format")); + + TextCodeFact.setText(Resultat.getString("id_factureclt")); + + TextTotalFact.setText(Adaptateur.StringToStringEspaceCurrency(Resultat.getString("net_a_payer"))); + + if(Resultat.getInt("typeclt") == 0){ + TextTypeClt.setText("Personne"); + TextIdClient.setText(Resultat.getString("codeclient")); + TextNomClt.setText(Resultat.getString("nom")); + TextPrenomClt.setText(Resultat.getString("prenom")); + }else if(Resultat.getInt("typeclt") == 1){ + TextTypeClt.setText("Entreprise"); + TextIdClient.setText(Resultat.getString("idcliententreprise")); + TextNomClt.setText(Resultat.getString("nomentrepise")); + TextPrenomClt.setText(Resultat.getString("matricule_fiscale")); + TxtPrenomMatricule.setText("Matricule:"); + } + + MontantTraite = Resultat.getFloat("montant_traite"); + OldMontantPayer = Resultat.getFloat("montant_payer"); + + float RestMontantPayer = MontantTraite - OldMontantPayer; + + String StrRestMontantPayer = Adaptateur.ArrondFloatToString(RestMontantPayer); + + MontantCheque.setText(StrRestMontantPayer); + MontantCarte.setText(StrRestMontantPayer); + MontantEspace.setText(StrRestMontantPayer); + + + DatePickerCheque.setValue(LocalDate.now()); + + + TextMontant.setText(Adaptateur.StringToStringEspaceCurrency(Resultat.getString("montant_traite"))); + + String etat = Resultat.getString("etat"); + if(etat.equals("1")){ + TextEtat.setText("Payer"); TextEtat.setFill(Color.web("#428BCA")); + }else if(etat.equals("2")){ + TextEtat.setText("En Cours"); TextEtat.setFill(Color.web("#000000")); + }else if(etat.equals("3")){ + TextEtat.setText("En Retart"); TextEtat.setFill(Color.RED); + } + TraiteCltDB TraiteDB= new TraiteCltDB(); + ObservableList PaiementListe = TraiteDB.getListPaiementTraiteClt(IdTraiteClt); + TableViewPaiement.setItems(PaiementListe); + + // terminer le payement + if(OldMontantPayer>= MontantTraite){ + TabPanePayement.getSelectionModel().select(TabDetailPaiement); + TabPayerTraite.setDisable(true); + TabPayerTraite.setText(""); + + TabDetailPaiement.setDisable(false); + TabDetailPaiement.setText("Detail de paiement"); + + // (données un montant mais n'est pas terminer le payement + }else if( (OldMontantPayer>0) && (OldMontantPayer(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + + TraiteCltDB TraiteDB= new TraiteCltDB(); + + //Espace + if(TypePayement == 0){ + String NewMontant = MontantEspace.getText(); + if(ControleMontantPaiement(MontantEspace, TextCtlEspace)){ + String IdPayementTraite = TraiteDB.SetPayerTraiteEnEspaceDB(IdTraiteClt, Adaptateur.StringToFloat(NewMontant), OldMontantPayer); + startTask(); + } + + //Banque + }else if(TypePayement == 1){ + String NewMontant = MontantCheque.getText(); + String NameBanque = MontantChequeBanque.getText(); + String NumeroCheque = MontantChequeNumero.getText(); + // + if(ControleMontantPaiement(MontantCheque, TextCtlBanque) && + clt.ContrNull(MontantChequeBanque, TextCtlNameBanque) && + clt.ContrNumeriqueNotnull(MontantChequeNumero, TextCtlNumCheque) && + clt.ContrNullDatePicker(DatePickerCheque , TextCtlDateCheque)){ + String DateCheque = DatePickerCheque.getValue().toString(); + String IdPayementTraite = TraiteDB.SetPayerTraiteEnChequeDB(IdTraiteClt, Adaptateur.StringToFloat(NewMontant), OldMontantPayer, NameBanque, NumeroCheque, DateCheque); + startTask(); + } + + //Carte Bancaire + }else if(TypePayement == 2){ + String NewMontant = MontantCarte.getText(); + String NameBanque = MontantCarteBanque.getText(); + String NumeroCarte = MontantCarteNumero.getText(); + if(ControleMontantPaiement(MontantCarte, TextCtlCarte)){ + String IdPayementTraite = TraiteDB.SetPayerTraiteEnCarteDB(IdTraiteClt, Adaptateur.StringToFloat(NewMontant), OldMontantPayer, NameBanque, NumeroCarte); + startTask(); + } + } + + + + } + }); + } + + + + + + + public boolean ControleMontantPaiement(TextField TextFieldMontant, Text TextClt){ + String NewMontant = MontantEspace.getText(); + boolean ResultClt = false; + if(clt.isFloatNotnull(NewMontant)== false){ + float FolatNewMontant = Adaptateur.StringToFloat(NewMontant); + if( (FolatNewMontant>0) && (FolatNewMontant<= (MontantTraite - OldMontantPayer)) ){ + TextFieldMontant.setStyle("-fx-border-color:transparent;"); + ResultClt = true; + }else{ + TextFieldMontant.setStyle("-fx-border-color:#f20606;"); + TextClt.setText(" champ doit être entre 1 à "+(MontantTraite - OldMontantPayer)); + } + }else{ + TextFieldMontant.setStyle("-fx-border-color:#f20606;"); + TextClt.setText(" champ doit être réel"); + } + return ResultClt; + } + + + + + + + +} diff --git a/src/main/java/Controllers/TraiteClt/TraiteCltGestionController.java b/src/main/java/Controllers/TraiteClt/TraiteCltGestionController.java new file mode 100644 index 0000000..6e337d2 --- /dev/null +++ b/src/main/java/Controllers/TraiteClt/TraiteCltGestionController.java @@ -0,0 +1,430 @@ +package Controllers.TraiteClt; + +import Models.TraiteClt.TraiteCltGestionDB; +import Models.TraiteClt.TraiteCltGestionListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +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.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +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; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class TraiteCltGestionController implements Initializable { + + @FXML public AnchorPane PaneTraiteCltGestion ; + + @FXML private ProgressBar ProgressBarTraiteClt; + + @FXML private Button ButtonSearchTraiteClt ; + + @FXML public TextField TextFieldIdTraite ; + @FXML public TextField TextFieldCodeFacture ; + @FXML public TextField TextFieldCodeClt ; + @FXML public TextField TextFieldNomCompet ; + @FXML public TextField TextFieldCinClt ; + + @FXML public DatePicker PickerDateTraite; + + @FXML public TableView TableViewTraiteCltGestion; + + @FXML public TableColumn TabColNumTraite; + @FXML public TableColumn TabColEtat; + @FXML public TableColumn TabColFacture; + @FXML public TableColumn TabColCodeClt; + @FXML public TableColumn TabColTypeClient; + @FXML public TableColumn TabColNomPrenom; + @FXML public TableColumn TabColDateTraite; + @FXML public TableColumn TabColDatePayer; //la date de payer par le client + @FXML public TableColumnTabColDetail; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0 ; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchTraiteClt; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColNumTraite.setCellValueFactory(new PropertyValueFactory("NumTraite")); + + + TabColFacture.setStyle( "-fx-alignment: CENTER;");TabColFacture.getStyleClass().add("Center"); + TabColFacture.setCellValueFactory(new PropertyValueFactory("Facture")); + + TabColCodeClt.setStyle( "-fx-alignment: CENTER;");TabColCodeClt.getStyleClass().add("Center"); + TabColCodeClt.setCellValueFactory(new PropertyValueFactory("CodeClt")); + + TabColTypeClient.setStyle( "-fx-alignment: CENTER;");TabColTypeClient.getStyleClass().add("Center"); + TabColTypeClient.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColNomPrenom.setCellValueFactory(new PropertyValueFactory("NomPrenom")); + + TabColDateTraite.setStyle( "-fx-alignment: CENTER;");TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("DateTraite")); + + TabColDatePayer.setStyle( "-fx-alignment: CENTER;");TabColDatePayer.getStyleClass().add("Center"); + TabColDatePayer.setCellValueFactory(new PropertyValueFactory("DatePayer")); + + TabColEtat.setStyle( "-fx-alignment: CENTER;");TabColEtat.getStyleClass().add("Center"); + TabColEtat.setCellValueFactory(new PropertyValueFactory("Etat")); + TabColEtat.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + //1 Payer 2 En Cours 3 En Retart + if(item!=null && item.equals("2")){ + Text text = new Text("En Cours"); + text.setFill(Color.web("#000000")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!=null && item.equals("1")){ + Text text = new Text("Payer"); + text.setFill(Color.web("#428BCA")); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else if(item!=null && item.equals("3")){ + Text text = new Text("En Retart"); + text.setFill(Color.RED); + text.setFont(Font.font("Arial", FontWeight.BOLD, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColDetail.setStyle( "-fx-alignment: CENTER;");TabColDetail.getStyleClass().add("Center"); + TabColDetail.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new ButtonCell(); + } + }); + + ButtonSearchTraiteClt.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchTraiteClt(); + } + }); + + PaneTraiteCltGestion.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchTraiteClt(); + } + } + }); + + GestionSearchTraiteClt(); + } + + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + ButtonCell(){ + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconedit.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + + TraiteCltGestionListe current = (TraiteCltGestionListe) ButtonCell.this.getTableView().getItems().get(ButtonCell.this.getIndex()); + String IdTraite = current.getNumTraite(); + + TraiteCltDetailController TraiteCltDetail = new TraiteCltDetailController(); + PaneTraiteCltGestion.getChildren().add(TraiteCltDetail.GetNodeTraiteCltDetail()); + + TraiteCltDetail.SetTraiteCltDetail(IdTraite); + } + }); + } + + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + @FXML + private void TraiteCltRetardButtonAction(ActionEvent event) throws IOException { + PaneTraiteCltGestion.getChildren().clear(); + PaneTraiteCltGestion.getChildren().add((Node) FXMLLoader.load(getClass().getResource("/Views/TraiteClt/TraiteCltRetard.fxml"))); + } + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchTraiteClt() + { + ProgressBarTraiteClt.setVisible(true); + + ButtonSearchTraiteClt.setDisable(true); + + ThreadSearchTraiteClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateTraite = ""; + if(PickerDateTraite.getValue() != null){ + DateTraite = PickerDateTraite.getValue().toString(); + } + + ObservableList ListTraiteClts = new TraiteCltGestionDB().SearchTraiteClt( + position, + nbrligne, + TextFieldIdTraite.getText(), + TextFieldCodeFacture.getText(), + DateTraite, + TextFieldCodeClt.getText(), + TextFieldCinClt.getText(), + TextFieldNomCompet.getText()); + + TableViewTraiteCltGestion.setItems(ListTraiteClts); + + totalcount = new TraiteCltGestionDB().nbrSearchTraiteClt(TextFieldIdTraite.getText(), + TextFieldCodeFacture.getText(), + DateTraite, + TextFieldCodeClt.getText(), + TextFieldCinClt.getText(), + TextFieldNomCompet.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchTraiteClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarTraiteClt.setVisible(false); + ButtonSearchTraiteClt.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchTraiteClt.start(); + } + + + private void NextLastSearchTraiteClt(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarTraiteClt.setVisible(true); + + ButtonSearchTraiteClt.setDisable(true); + + ThreadSearchTraiteClt = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateTraite = ""; + if(PickerDateTraite.getValue() != null){ + DateTraite = PickerDateTraite.getValue().toString(); + } + + ObservableList ListTraiteClts = new TraiteCltGestionDB().SearchTraiteClt( + ParmPosition, + ParamNbrligne, + TextFieldIdTraite.getText(), + TextFieldCodeFacture.getText(), + DateTraite, + TextFieldCodeClt.getText(), + TextFieldCinClt.getText(), + TextFieldNomCompet.getText()); + + TableViewTraiteCltGestion.setItems(ListTraiteClts); + + return null; + } + }; + } + }; + + ThreadSearchTraiteClt.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarTraiteClt.setVisible(false); + ButtonSearchTraiteClt.setDisable(false); + } + }); + ThreadSearchTraiteClt.start(); + } + + private void GestionSearchTraiteClt() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchTraiteClt(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchTraiteClt(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchTraiteClt(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } +} diff --git a/src/main/java/Controllers/TraiteClt/TraiteCltPrintController.java b/src/main/java/Controllers/TraiteClt/TraiteCltPrintController.java new file mode 100644 index 0000000..b8234d5 --- /dev/null +++ b/src/main/java/Controllers/TraiteClt/TraiteCltPrintController.java @@ -0,0 +1,178 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/javafx/FXMLController.java to edit this template + */ +package Controllers.TraiteClt; + +import Controllers.Traitement.ParametreSystem; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.text.Text; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.File; +import java.io.IOException; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.TextFlow; +import javax.xml.XMLConstants; + +/** + * FXML Controller class + * + * @author Administrateur + */ +public class TraiteCltPrintController implements Initializable { + + @FXML private AnchorPane AnchorPaneTraiteClt; + + @FXML private Text TextCompanyName; + @FXML private Text TextCompanyPlace; + @FXML private Text TextCompanySIREN; + @FXML private Text TextCompanyAddress; + @FXML private TextFlow TextFlowCompanyAddress; + + @FXML private Text TextNomCompletClt; + @FXML private Text TextCIN; + + @FXML private Text TextBank; + @FXML private TextFlow TextFlowBank; + + @FXML private Text TextAmountLetter; + @FXML private Text TextAmountFigures; + @FXML private Text TextDateDeadline; + + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + + try { + + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //C:\Users\Administrateur\Documents\NetBeansProjects\PowerERP\conf\print.xml + Document doc = db.parse(new File("./conf/print.xml")); + + doc.getDocumentElement().normalize(); + + Element elementTraiteClt = (Element) doc.getElementsByTagName("TraiteClt").item(0); + + //AnchorPane + Element elementAnchorPane = (Element)elementTraiteClt.getElementsByTagName("AnchorPaneTraiteClt").item(0); + AnchorPaneTraiteClt.setPrefHeight(Double.parseDouble(elementAnchorPane.getElementsByTagName("prefHeight").item(0).getTextContent())); + AnchorPaneTraiteClt.setPrefWidth(Double.parseDouble(elementAnchorPane.getElementsByTagName("prefWidth").item(0).getTextContent())); + + + //CompanyName + Element elementCompanyName = (Element)elementTraiteClt.getElementsByTagName("CompanyName").item(0); + TextCompanyName.setVisible(Boolean.valueOf(elementCompanyName.getElementsByTagName("Visible").item(0).getTextContent())); + TextCompanyName.setLayoutX(Double.parseDouble(elementCompanyName.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextCompanyName.setLayoutY(Double.parseDouble(elementCompanyName.getElementsByTagName("LayoutY").item(0).getTextContent())); + + + //CompanyPlace + Element elementCompanyPlace = (Element)elementTraiteClt.getElementsByTagName("CompanyPlace").item(0); + TextCompanyPlace.setVisible(Boolean.valueOf(elementCompanyPlace.getElementsByTagName("Visible").item(0).getTextContent())); + TextCompanyPlace.setLayoutX(Double.parseDouble(elementCompanyPlace.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextCompanyPlace.setLayoutY(Double.parseDouble(elementCompanyPlace.getElementsByTagName("LayoutY").item(0).getTextContent())); + + //CompanyAddress + Element elementCompanyAddress = (Element)elementTraiteClt.getElementsByTagName("CompanyAddress").item(0); + TextFlowCompanyAddress.setVisible(Boolean.valueOf(elementCompanyAddress.getElementsByTagName("Visible").item(0).getTextContent())); + TextFlowCompanyAddress.setLayoutX(Double.parseDouble(elementCompanyAddress.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextFlowCompanyAddress.setLayoutY(Double.parseDouble(elementCompanyAddress.getElementsByTagName("LayoutY").item(0).getTextContent())); + TextFlowCompanyAddress.setPrefHeight(Double.parseDouble(elementCompanyAddress.getElementsByTagName("prefHeight").item(0).getTextContent())); + TextFlowCompanyAddress.setPrefWidth(Double.parseDouble(elementCompanyAddress.getElementsByTagName("prefWidth").item(0).getTextContent())); + + //CompanySIREN + Element elementCompanySIREN = (Element)elementTraiteClt.getElementsByTagName("CompanySIREN").item(0); + TextCompanySIREN.setVisible(Boolean.valueOf(elementCompanySIREN.getElementsByTagName("Visible").item(0).getTextContent())); + TextCompanySIREN.setLayoutX(Double.parseDouble(elementCompanySIREN.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextCompanySIREN.setLayoutY(Double.parseDouble(elementCompanySIREN.getElementsByTagName("LayoutY").item(0).getTextContent())); + + //NomCompletClt + Element elementNomCompletClt = (Element)elementTraiteClt.getElementsByTagName("NomCompletClt").item(0); + TextNomCompletClt.setVisible(Boolean.valueOf(elementNomCompletClt.getElementsByTagName("Visible").item(0).getTextContent())); + TextNomCompletClt.setLayoutX(Double.parseDouble(elementNomCompletClt.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextNomCompletClt.setLayoutY(Double.parseDouble(elementNomCompletClt.getElementsByTagName("LayoutY").item(0).getTextContent())); + + //CIN + Element elementCIN = (Element)elementTraiteClt.getElementsByTagName("CIN").item(0); + TextCIN.setVisible(Boolean.valueOf(elementCIN.getElementsByTagName("Visible").item(0).getTextContent())); + TextCIN.setLayoutX(Double.parseDouble(elementCIN.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextCIN.setLayoutY(Double.parseDouble(elementCIN.getElementsByTagName("LayoutY").item(0).getTextContent())); + + //Bank + Element elementBank = (Element)elementTraiteClt.getElementsByTagName("Bank").item(0); + TextFlowBank.setVisible(Boolean.valueOf(elementBank.getElementsByTagName("Visible").item(0).getTextContent())); + TextFlowBank.setLayoutX(Double.parseDouble(elementBank.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextFlowBank.setLayoutY(Double.parseDouble(elementBank.getElementsByTagName("LayoutY").item(0).getTextContent())); + TextFlowBank.setPrefHeight(Double.parseDouble(elementBank.getElementsByTagName("prefHeight").item(0).getTextContent())); + TextFlowBank.prefWidth(Double.parseDouble(elementBank.getElementsByTagName("prefWidth").item(0).getTextContent())); + + //AmountLetter + Element elementAmountLetter = (Element)elementTraiteClt.getElementsByTagName("AmountLetter").item(0); + TextAmountLetter.setVisible(Boolean.valueOf(elementAmountLetter.getElementsByTagName("Visible").item(0).getTextContent())); + TextAmountLetter.setLayoutX(Double.parseDouble(elementAmountLetter.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextAmountLetter.setLayoutY(Double.parseDouble(elementAmountLetter.getElementsByTagName("LayoutY").item(0).getTextContent())); + + //AmountFigures + Element elementAmountFigures = (Element)elementTraiteClt.getElementsByTagName("AmountFigures").item(0); + TextAmountFigures.setVisible(Boolean.valueOf(elementAmountFigures.getElementsByTagName("Visible").item(0).getTextContent())); + TextAmountFigures.setLayoutX(Double.parseDouble(elementAmountFigures.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextAmountFigures.setLayoutY(Double.parseDouble(elementAmountFigures.getElementsByTagName("LayoutY").item(0).getTextContent())); + + //DateDeadline + Element elementDateDeadline = (Element)elementTraiteClt.getElementsByTagName("DateDeadline").item(0); + TextDateDeadline.setVisible(Boolean.valueOf(elementDateDeadline.getElementsByTagName("Visible").item(0).getTextContent())); + TextDateDeadline.setLayoutX(Double.parseDouble(elementDateDeadline.getElementsByTagName("LayoutX").item(0).getTextContent())); + TextDateDeadline.setLayoutY(Double.parseDouble(elementDateDeadline.getElementsByTagName("LayoutY").item(0).getTextContent())); + + + } catch (ParserConfigurationException | SAXException | IOException e) { + e.printStackTrace(); + } + + TextCompanyName.setText(ParametreSystem.CompanyName); + + TextCompanyPlace.setText(ParametreSystem.CompanyPlace); + + TextCompanySIREN.setText(ParametreSystem.CompanySIREN); + + TextCompanyAddress.setText(ParametreSystem.CompanyAddress); + + TextBank.setText(ParametreSystem.Bank); + + } + + public void SetData(String AmountLetter, + String AmountFigures, + String DateDeadline, + String NomCompletClt, + String CIN) + { + TextNomCompletClt.setText(NomCompletClt); + TextCIN.setText(CIN); + TextAmountLetter.setText(AmountLetter); + TextAmountFigures.setText(AmountFigures); + TextDateDeadline.setText(DateDeadline); + } + +} diff --git a/src/main/java/Controllers/TraiteClt/TraiteCltPrintRetardController.java b/src/main/java/Controllers/TraiteClt/TraiteCltPrintRetardController.java new file mode 100644 index 0000000..2de7631 --- /dev/null +++ b/src/main/java/Controllers/TraiteClt/TraiteCltPrintRetardController.java @@ -0,0 +1,73 @@ +package Controllers.TraiteClt; + +import Models.Caisse.CaisseEntreListe; +import Models.TraiteClt.TraiteCltGestionListe; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class TraiteCltPrintRetardController implements Initializable { + + @FXML private Text TextNbrTraiteCltRetard ; + @FXML private Text TextPageTraiteCltRetard ; + + @FXML public TableView TableViewTraiteCltRetard; + + @FXML public TableColumn TabColNumTraite; + @FXML public TableColumn TabColDateTraite; + @FXML public TableColumn TabColMontant; + + @FXML public TableColumn TabColFacture; + @FXML public TableColumn TabColCodeClt; + @FXML public TableColumn TabColLocal; + @FXML public TableColumn TabColNomPrenom; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TabColNumTraite.setStyle( "-fx-alignment: CENTER;");TabColNumTraite.getStyleClass().add("Center"); + TabColNumTraite.setCellValueFactory(new PropertyValueFactory("NumTraite")); + + TabColDateTraite.setStyle( "-fx-alignment: CENTER;");TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("DateTraite")); + + TabColMontant.setStyle( "-fx-alignment: CENTER;");TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColFacture.setStyle( "-fx-alignment: CENTER;");TabColFacture.getStyleClass().add("Center"); + TabColFacture.setCellValueFactory(new PropertyValueFactory("Facture")); + + TabColCodeClt.setStyle( "-fx-alignment: CENTER;");TabColCodeClt.getStyleClass().add("Center"); + TabColCodeClt.setCellValueFactory(new PropertyValueFactory("CodeClt")); + + TabColLocal.setStyle( "-fx-alignment: CENTER;");TabColLocal.getStyleClass().add("Center"); + TabColLocal.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColNomPrenom.setStyle( "-fx-alignment: CENTER;");TabColNomPrenom.getStyleClass().add("Center"); + TabColNomPrenom.setCellValueFactory(new PropertyValueFactory("NomPrenom")); + } + + + public void setTraiteCltPrintRetard( + String NbrTraiteCltRetard, + String PageTraiteCltRetard, + ObservableList obsListTraiteCltGestion) + { + TextNbrTraiteCltRetard.setText(NbrTraiteCltRetard); + TextPageTraiteCltRetard.setText(PageTraiteCltRetard); + TableViewTraiteCltRetard.setItems(obsListTraiteCltGestion); + } + +} diff --git a/src/main/java/Controllers/TraiteClt/TraiteCltRetardController.java b/src/main/java/Controllers/TraiteClt/TraiteCltRetardController.java new file mode 100644 index 0000000..0942768 --- /dev/null +++ b/src/main/java/Controllers/TraiteClt/TraiteCltRetardController.java @@ -0,0 +1,452 @@ +package Controllers.TraiteClt; + +import Controllers.Traitement.Adaptateur; +import Models.Stock.StockDB; +import Models.TraiteClt.TraiteCltDB; +import Models.TraiteClt.TraiteCltGestionListe; +import com.gluonhq.charm.glisten.control.ProgressBar; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.ResourceBundle; +import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.print.PageLayout; +import javafx.print.PageOrientation; +import javafx.print.PageRange; +import javafx.print.Paper; +import javafx.print.Printer; +import javafx.print.PrinterJob; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.Label; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class TraiteCltRetardController implements Initializable { + + @FXML private AnchorPane AnchorPaneTraiteCltRetard; + + @FXML private ProgressBar ProgressBarTraiteClt; + + @FXML public TableView TableViewTraiteCltRetard; + + @FXML public TableColumn TabColNumTraite; + @FXML public TableColumn TabColDateTraite; + @FXML public TableColumn TabColMontant; + + @FXML public TableColumn TabColFacture; + @FXML public TableColumn TabColCodeClt; + @FXML public TableColumn TabColLocal; + @FXML public TableColumn TabColNomPrenom; + + @FXML private Button ButtonSearchTraiteCltRetard; + @FXML private Button ButtonPrintTraiteCltRetard; + + @FXML private DatePicker DatePickeDebut; + + @FXML private TextField TextFieldIdFacture ; + @FXML private TextField TextFieldCodeClt ; + @FXML private TextField TextFieldCINClt ; + @FXML private TextField TextFieldNomClt ; + @FXML private ChoiceBox ChoiceBoxLocal ; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + private Service ThreadSearchTraiteCltRetard; + private Service ThreadPrintTraiteCltRetard; + + ObservableList ListPrintTraiteCltRetards; + + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + TabColNumTraite.setStyle( "-fx-alignment: CENTER;");TabColNumTraite.getStyleClass().add("Center"); + TabColNumTraite.setCellValueFactory(new PropertyValueFactory("NumTraite")); + + TabColDateTraite.setStyle( "-fx-alignment: CENTER;");TabColDateTraite.getStyleClass().add("Center"); + TabColDateTraite.setCellValueFactory(new PropertyValueFactory("DateTraite")); + + TabColMontant.setStyle( "-fx-alignment: CENTER;");TabColMontant.getStyleClass().add("Center"); + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + + TabColFacture.setStyle( "-fx-alignment: CENTER;");TabColFacture.getStyleClass().add("Center"); + TabColFacture.setCellValueFactory(new PropertyValueFactory("Facture")); + + TabColCodeClt.setStyle( "-fx-alignment: CENTER;");TabColCodeClt.getStyleClass().add("Center"); + TabColCodeClt.setCellValueFactory(new PropertyValueFactory("CodeClt")); + + TabColLocal.setStyle( "-fx-alignment: CENTER;");TabColLocal.getStyleClass().add("Center"); + TabColLocal.setCellValueFactory(new PropertyValueFactory("TypeClient")); + + TabColNomPrenom.setStyle( "-fx-alignment: CENTER;");TabColNomPrenom.getStyleClass().add("Center"); + TabColNomPrenom.setCellValueFactory(new PropertyValueFactory("NomPrenom")); + + ArrayList ListLocale = new StockDB().getAllListLocal(); + ChoiceBoxLocal.getItems().addAll(ListLocale); + + ButtonSearchTraiteCltRetard.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SearchTraiteCltRetard(); + } + }); + + AnchorPaneTraiteCltRetard.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchTraiteCltRetard(); + } + } + }); + + ButtonPrintTraiteCltRetard.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + ImprimerTraiteCltRetard(); + } + }); + + GestionSearchTraiteCltRetard(); + } + + + private void ImprimerTraiteCltRetard() + { + ProgressBarTraiteClt.setVisible(true); + + ButtonPrintTraiteCltRetard.setDisable(true); + + ThreadPrintTraiteCltRetard = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateDebut = ""; + if(DatePickeDebut.getValue() != null){ + DateDebut = DatePickeDebut.getValue().toString(); + } + + ListPrintTraiteCltRetards = new TraiteCltDB().SearchTraiteCltRetard(0, 0, DateDebut, TextFieldIdFacture.getText(), (String) ChoiceBoxLocal.getValue(), TextFieldCodeClt.getText(), TextFieldCINClt.getText(), TextFieldNomClt.getText(), true); + + return null; + } + }; + } + }; + + ThreadPrintTraiteCltRetard.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + + int SizeListeTraiteCltGestion = ListPrintTraiteCltRetards.size(); + int total = SizeListeTraiteCltGestion / 16 + 1 ; + int page = 0; + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, total)); + + if (jobPrint.showPrintDialog(null)) + { + Printer printer = jobPrint.getPrinter(); + PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT); + + for (int i=0; i listTemp = FXCollections.observableArrayList(); + + for (int j=i; (j<(i+16)) && (j(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateDebut = ""; + if(DatePickeDebut.getValue() != null){ + DateDebut = DatePickeDebut.getValue().toString(); + } + + ObservableList ListTraiteCltRetards = new TraiteCltDB().SearchTraiteCltRetard( + position, + nbrligne, + DateDebut, + TextFieldIdFacture.getText(), + (String) ChoiceBoxLocal.getValue(), + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldNomClt.getText(), + false); + + TableViewTraiteCltRetard.setItems(ListTraiteCltRetards); + + totalcount = new TraiteCltDB().nbrTraiteCltRetard(DateDebut, + TextFieldIdFacture.getText(), + (String) ChoiceBoxLocal.getValue(), + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldNomClt.getText()); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchTraiteCltRetard.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarTraiteClt.setVisible(false); + ButtonSearchTraiteCltRetard.setDisable(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchTraiteCltRetard.start(); + } + + + private void NextLastSearchTraiteCltRetard(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarTraiteClt.setVisible(true); + + ButtonSearchTraiteCltRetard.setDisable(true); + + ThreadSearchTraiteCltRetard = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateDebut = ""; + if(DatePickeDebut.getValue() != null){ + DateDebut = DatePickeDebut.getValue().toString(); + } + + ObservableList ListTraiteCltRetards = new TraiteCltDB().SearchTraiteCltRetard(ParmPosition, + ParamNbrligne, + DateDebut, + TextFieldIdFacture.getText(), + (String) ChoiceBoxLocal.getValue(), + TextFieldCodeClt.getText(), + TextFieldCINClt.getText(), + TextFieldNomClt.getText(), + false ); + + TableViewTraiteCltRetard.setItems(ListTraiteCltRetards); + + return null; + } + }; + } + }; + + ThreadSearchTraiteCltRetard.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarTraiteClt.setVisible(false); + ButtonSearchTraiteCltRetard.setDisable(false); + } + }); + ThreadSearchTraiteCltRetard.start(); + } + + private void GestionSearchTraiteCltRetard() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchTraiteCltRetard(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchTraiteCltRetard(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchTraiteCltRetard(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } +} diff --git a/src/main/java/Controllers/Traitement/Adaptateur.java b/src/main/java/Controllers/Traitement/Adaptateur.java new file mode 100644 index 0000000..ece5a5c --- /dev/null +++ b/src/main/java/Controllers/Traitement/Adaptateur.java @@ -0,0 +1,375 @@ +/* + * 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 Controllers.Traitement; + + +import com.ibm.icu.text.RuleBasedNumberFormat; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.DecimalFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.regex.Pattern; + +/** + * @author Maher Ben Tili + */ +public class Adaptateur { + + public static String addSlashes(String s) { + s = s.replaceAll("\\\\", "\\\\\\\\"); + s = s.replaceAll("\\n", "\\\\n"); + s = s.replaceAll("\\r", "\\\\r"); + s = s.replaceAll("\\00", "\\\\0"); + s = s.replaceAll("'", "\\\\'"); + return s; + } + + //yyyy/MM/dd HH:mm:ss + //yyyy + public static String getDefaultCurrentDate(String Format){ + DateTimeFormatter dtf = DateTimeFormatter.ofPattern(Format); + LocalDateTime now = LocalDateTime.now(); + return dtf.format(now); + } + + public static String NormalDateFormat(LocalDate date){ + if(date != null){ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + return formatter.format(date); // 23/06/2015 + }else{ + return null; + } + } + + public static String DatabaseDateLocalDate(LocalDate date){ + if(date != null){ + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + return formatter.format(date); // 2015-06-23 + }else{ + return null; + } + } + + + + + public static LocalDate StringToLocalDate(String date){ + + // date = "2016-08-16" + if(date != null){ + LocalDate localDate = LocalDate.parse(date); + return localDate; + }else{ + return null; + } + } + + //2003-01-30 => 30/01/2003 + public static String NormalDateFormat(String date){ + if(date != null){ + String jour= date.substring(8, 10); + String mois=date.substring(5, 7); + String annee=date.substring(0, 4); + String dateconf = jour+"/"+mois+"/"+annee; + return dateconf; + }else{ + return null; + } + } + + + //2003-01-30 10:30:22 => 30/01/2003 10:30 + public static String NormalDateTimeFormat(String date){ + if(date != null){ + String jour= date.substring(8, 10); + String mois=date.substring(5, 7); + String annee=date.substring(0, 4); + String heur = date.substring(11, 13); + String minute = date.substring(14, 16); + String dateconf = jour+"/"+mois+"/"+annee+" "+heur+":"+minute; + return dateconf; + }else{ + return null; + } + } + + + public static String DatabaseDateFormat(String date){ + // 23/06/2015 + String jour= date.substring(0, 2); + String mois=date.substring(3, 5); + String annee=date.substring(6, 10); + String dateconf = annee+"-"+mois+"-"+jour; + return dateconf; + } + + + + public static float StringToFloat(String ch){ + float reel = 0; + if(!ch.isEmpty()){ + try{ + reel =Float.parseFloat(ch.replace(',','.')); + } + catch(NumberFormatException nfe){ + reel = 0 ; + } + } + return reel ; + } + + + // 14.0 => 14 + public static String StringDeleZero(String ch){ + try{ + DecimalFormat df = new DecimalFormat("#.###"); + if(ch.isEmpty()) + return ch ; + else{ + double d = Double.valueOf(ch.replace(',','.')); + return df.format(d); + } + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.StringDeleZero \n"+nfe.getMessage()+" \n"); + return ch ; + } + catch(IllegalArgumentException string){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.StringDeleZero \n"+string.getMessage()+" /n"); + return ch ; + } + } + + //2100.25 ===> 2 100,25 + public static String StringToStringEspace(String ch) + { + if(!new contro().isStringNull(ch)){ + float f = StringToFloat(ch); + try{ + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + return Formatter.format(f); + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.StringToStringEspace \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + } + return "0"; + } + + //2100.25 ===> 2 100,25 DT + public static String StringToStringEspaceCurrency(String ch){ + float f = StringToFloat(ch); + try{ + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + return Formatter.format(f)+" "+ParametreSystem.CurrencySign; + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.StringToStringEspaceCurrency \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + } + + + public static String floatDeleZero(float f) + { + try{ + DecimalFormat df = new DecimalFormat("#.###"); + return df.format(f); + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.floatDeleZero \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + } + + + //5.654201458 => 5.654 5.654971458 => 5.655 + public static String ArrondStringToString(String ch){ + try{ + DecimalFormat df = new DecimalFormat("0.000"); + if(ch.isEmpty()) + return "0"; + else{ + df.setMaximumFractionDigits(3); + + double d = Double.valueOf(ch.replace(',','.')); + String x = df.format(d).replaceAll(",000",""); + + if(d==0) + return "0"; + else + return x; + } + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.ArrondStringToString \n"+nfe.getMessage()+" \n"); + return ch ; + } + catch(IllegalArgumentException string){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.ArrondStringToString \n"+string.getMessage()+" \n"); + return ch ; + } + } + + public static float ArrondStringToFloat(String ch){ + try{ + if(ch.isEmpty()) + return 0; + else{ + DecimalFormat df = new DecimalFormat("0.000"); + df.setMaximumFractionDigits(3); + double d = Double.valueOf(ch.replace(',','.')); + String x = df.format(d); + return StringToFloat(x); + } + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.ArrondStringToFloat \n"+nfe.getMessage()+" \n"); + return 0 ; + } + catch(IllegalArgumentException string){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.ArrondStringToFloat \n"+string.getMessage()+" \n"); + return 0 ; + } + } + + + + public static float ArrondFloatToFloat(float f){ + DecimalFormat df = new DecimalFormat("0.000"); + df.setMaximumFractionDigits(3); + String ch = df.format(f); + try{ + return Float.parseFloat(ch.replace(',','.')); + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+ch+"\n Method: Adaptateur.ArrondFloatToFloat \n"+nfe.getMessage()+" \n"); + return 0 ; + } + } + + + //5.654201458 => 5.654 + public static String ArrondFloatToStringOrigin(float f){ + try{ + DecimalFormat df = new DecimalFormat("0.000"); + df.setMaximumFractionDigits(3); + if(f==0) + return "0"; + else{ + String ch = df.format(f).replace(",000", ""); + return ch.replace(",", "."); + } + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.ArrondFloatToString \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + } + + //5.654201458 => 5,654 + public static String ArrondFloatToString(float f){ + try{ + DecimalFormat df = new DecimalFormat("0.000"); + df.setMaximumFractionDigits(3); + if(f==0) + return "0"; + else{ + String ch = df.format(f); + return ch.replace(",000", ""); + } + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.ArrondFloatToString \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + + } + + //2100.25 ===> 2 100,25 DT + public static String FloatToStringEspaceCurrency(float f){ + try{ + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + return Formatter.format(f)+" "+ParametreSystem.CurrencySign; + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.ArrondFloatToString \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + } + + //2100.25 ===> 2 100,25 + public static String FloatToStringEspace(float f){ + try{ + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + return Formatter.format(f); + } + catch(NumberFormatException nfe){ + System.out.println("erreur Value: "+f+"\n Method: Adaptateur.ArrondFloatToString \n"+nfe.getMessage()+" \n"); + return String.valueOf(f) ; + } + } + + + + + //Ex 100.25 ===> 100 + public static Integer Diviseur(float value){ + + String f1Str = Float.toString((float) value); + int Pos = f1Str.indexOf('.'); + if(Pos>-1){ + f1Str = f1Str.substring(0, Pos); + } + Integer div = Integer.parseInt(f1Str); + return div; + } + + //Ex 15.5 ==> 0.5 + public static float Modulo(float value){ + DecimalFormat df = new DecimalFormat("########.000"); + String str = df.format(value); + + float mode = 0; + + if(str.indexOf(',')>-1){ + int posisition =str.indexOf(','); + String str1 = "0"+str.substring(posisition, str.length()); + mode = Float.parseFloat(str1.replace(',', '.')); + } + return mode; + } + + + public static String ChiffreToLettre(BigDecimal num) + { + DecimalFormat DFORMAT = new DecimalFormat("###0.00"); + RuleBasedNumberFormat FORMATTER = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT); + + String[] s = DFORMAT.format(num).split(Pattern.quote(String.valueOf(DFORMAT.getDecimalFormatSymbols().getDecimalSeparator()))); + + BigInteger intPart = new BigInteger(s[0]); + BigInteger decPart = new BigInteger(s[1]); + + if ( s[1].equals("00") ) { + return FORMATTER.format(intPart)+ " "+ParametreSystem.CurrencyName; + } + else { + return FORMATTER.format(intPart) + + " " + + ParametreSystem.CurrencyName + + (intPart.intValue()>1?"s":"") + + " et " + + FORMATTER.format(decPart) + + " " + ParametreSystem.CurrencyThousandth + + (decPart.intValue()>1?"s":""); + } + } + +} diff --git a/src/main/java/Controllers/Traitement/MyWindow.java b/src/main/java/Controllers/Traitement/MyWindow.java new file mode 100644 index 0000000..8100f3d --- /dev/null +++ b/src/main/java/Controllers/Traitement/MyWindow.java @@ -0,0 +1,117 @@ +/* + * 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 Controllers.Traitement; + + +import Controllers.PrincipalController; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.fxml.FXMLLoader; +import javafx.scene.Group; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.StackPane; +import javafx.stage.Stage; + +/** + * + * @author Maher + */ +public class MyWindow { + + public static Stage myStage; + + public static Parent myParent ; + + public static AnchorPane anchorpane = new AnchorPane(); + + public static Node node ; + + public static Number PrincipalContentWidth; + + public static Number PrincipalContentHeight; + + public Object[] ArrayObjectDataSave = new Object[10]; + + public static void ShwoWindows(double Height,double Width){ + + anchorpane.setVisible(true); + anchorpane.setStyle("-fx-background-color: rgba(0,0,0,0.6);"); + anchorpane.setPrefHeight(Height); + anchorpane.setPrefWidth(Width); + + Group group = new Group(); + group.getChildren().add(node); + + + StackPane Sp = new StackPane(); + + MyWindow.myStage.setWidth(Width); + MyWindow.myStage.setHeight(Height); + + Stage stage = MyWindow.myStage; + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(anchorpane); + Sp.getChildren().add(group); + + Scene scene = new Scene(Sp); + + stage.setScene(scene); + stage.show(); + } + + + public static void ClearWindows(){ + MyWindow.node.setVisible(false); + MyWindow.anchorpane.setVisible(false); + + } + + + public void Refresh(Parent parent, Integer number_titled_Pane){ + + try { + + FXMLLoader fxmlPrincipal= new FXMLLoader(getClass().getResource("/Views/Principal.fxml")); + MyWindow.myParent = (Parent) fxmlPrincipal.load(); + PrincipalController dc = fxmlPrincipal.getController(); + dc.window.getChildren().add(parent); + + dc.Content.setPrefSize((double) PrincipalContentWidth, (double) PrincipalContentHeight); + + dc.DefaultSelectedTitledPane(number_titled_Pane); + + Scene scene = new Scene(MyWindow.myParent); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } catch (IOException ex) { + Logger.getLogger(MyWindow.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public static void setMyStage(Stage myStage) { + MyWindow.myStage = myStage; + } + + public static void setMyParent(Parent myParent) { + MyWindow.myParent = myParent; + } + + + + + public static void NewMyStage() { + myStage = new Stage(); + } + + +} diff --git a/src/main/java/Controllers/Traitement/ParametreSystem.java b/src/main/java/Controllers/Traitement/ParametreSystem.java new file mode 100644 index 0000000..51a5804 --- /dev/null +++ b/src/main/java/Controllers/Traitement/ParametreSystem.java @@ -0,0 +1,156 @@ +/* + * 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 Controllers.Traitement; + +import java.io.File; +import java.io.IOException; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + + +/** + * @author Maher + */ +public class ParametreSystem +{ + public static String JdbcUrl ; + public static String JdbcDB ; + public static String JdbcUser ; + public static String JdbcPassword ; + + public static String CompanyName ; + public static String CompanyPlace ; + public static String CompanyAddress ; + public static String CompanySIREN ; //Système d’Identification du Répertoire des Entreprises + public static String CompanyMF ; //Matricule Fiscale + public static String CompanyIF ; //Identité Fiscale + public static String CompanyTele ; + public static String CompanyFax ; + public static String CompanyMail ; + public static String CompanySite ; + + public static String NomLocalPC ; + public static String Timbre ; + + public static String CurrencySign ; + public static String CurrencyName ; + public static String CurrencyThousandth ; + + public static String Bank ; + public static String RIP ; + public static String RIB ; + + public void SetParametre() + { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + try { + // optional, but recommended + // process XML securely, avoid attacks like XML External Entities (XXE) + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + // parse XML file + DocumentBuilder db = dbf.newDocumentBuilder(); + + //PowerERP\conf\parametre.xml + Document doc = db.parse(new File("./conf/parametre.xml")); + + doc.getDocumentElement().normalize(); + + Element elementJDBC = (Element) doc.getElementsByTagName("JDBC").item(0); + + String jdbc_url = elementJDBC.getElementsByTagName("Url").item(0).getTextContent(); + ParametreSystem.JdbcUrl = jdbc_url; + + String jdbc_db = elementJDBC.getElementsByTagName("DataBase").item(0).getTextContent(); + ParametreSystem.JdbcDB = jdbc_db; + + String jdbc_user = elementJDBC.getElementsByTagName("User").item(0).getTextContent(); + ParametreSystem.JdbcUser = jdbc_user; + + String jdbc_password = elementJDBC.getElementsByTagName("Password").item(0).getTextContent(); + ParametreSystem.JdbcPassword = jdbc_password; + + /****************************************/ + + Element elementCompany = (Element) doc.getElementsByTagName("Company").item(0); + + String company_name = elementCompany.getElementsByTagName("Name").item(0).getTextContent(); + ParametreSystem.CompanyName = company_name; + + String company_place = elementCompany.getElementsByTagName("Place").item(0).getTextContent(); + ParametreSystem.CompanyPlace = company_place; + + String company_address = elementCompany.getElementsByTagName("Address").item(0).getTextContent(); + ParametreSystem.CompanyAddress = company_address; + + String companySIREN = elementCompany.getElementsByTagName("SIREN").item(0).getTextContent(); + ParametreSystem.CompanySIREN = companySIREN; + + String companyMF = elementCompany.getElementsByTagName("MF").item(0).getTextContent(); + ParametreSystem.CompanyMF =companyMF; + + String companyIF = elementCompany.getElementsByTagName("IF").item(0).getTextContent(); + ParametreSystem.CompanyIF = companyIF; + + String companyTele = elementCompany.getElementsByTagName("Tele").item(0).getTextContent(); + ParametreSystem.CompanyTele = companyTele; + + String companyFax = elementCompany.getElementsByTagName("Fax").item(0).getTextContent(); + ParametreSystem.CompanyFax = companyFax; + + String companyMail = elementCompany.getElementsByTagName("Mail").item(0).getTextContent(); + ParametreSystem.CompanyMail = companyMail; + + String companySite = elementCompany.getElementsByTagName("Site").item(0).getTextContent(); + ParametreSystem.CompanySite = companySite; + + /******************************/ + + Element elementNomLocalPC = (Element) doc.getElementsByTagName("NomLocalPC").item(0); + ParametreSystem.NomLocalPC = elementNomLocalPC.getTextContent() ; + + Element elementTimbre = (Element) doc.getElementsByTagName("Timbre").item(0); + ParametreSystem.Timbre = elementTimbre.getTextContent() ; + + + /********************************/ + + Element elementCurrency = (Element) doc.getElementsByTagName("Currency").item(0); + + String currency_sign = elementCurrency.getElementsByTagName("Sign").item(0).getTextContent(); + ParametreSystem.CurrencySign = currency_sign; + + String currency_name = elementCurrency.getElementsByTagName("Name").item(0).getTextContent(); + ParametreSystem.CurrencyName = currency_name; + + String currency_thousandth = elementCurrency.getElementsByTagName("Thousandth").item(0).getTextContent(); + ParametreSystem.CurrencyThousandth = currency_thousandth; + + + /*************************************/ + + Element elementBanque = (Element) doc.getElementsByTagName("Banque").item(0); + + String bank = elementBanque.getElementsByTagName("Bank").item(0).getTextContent(); + ParametreSystem.Bank = bank; + + String rip = elementBanque.getElementsByTagName("RIP").item(0).getTextContent(); + ParametreSystem.RIP = rip; + + String rib = elementBanque.getElementsByTagName("RIB").item(0).getTextContent(); + ParametreSystem.RIB = rib; + } + catch (ParserConfigurationException | SAXException | IOException e) { + System.out.println("error Controllers\\Traitement\\ParametreSystem.java/SetParametre "+e.getMessage()); + System.out.println(e.getMessage()); + } + } +} diff --git a/src/main/java/Controllers/Traitement/TotalHeightTableColumn.java b/src/main/java/Controllers/Traitement/TotalHeightTableColumn.java new file mode 100644 index 0000000..134c687 --- /dev/null +++ b/src/main/java/Controllers/Traitement/TotalHeightTableColumn.java @@ -0,0 +1,72 @@ +package Controllers.Traitement; + +import javafx.collections.ObservableList; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.text.Text; +import javafx.util.Callback; + +/** + * @author Maher Ben Tili + */ +public class TotalHeightTableColumn { + + public TableView tableView = new TableView<>(); + + public float columnWidth; + + public TotalHeightTableColumn(float colwidth) + { + columnWidth = colwidth; + + tableView.setEditable(true); + } + + public float getTotalHeight(ObservableList data) + { + float total = 0; + + TableColumn Col = new TableColumn("First Name"); + + Col.setMinWidth(columnWidth); + + Col.setCellValueFactory(new PropertyValueFactory("firstcolumn")); + + Col.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + + if (item == null) { + super.setText(null); + super.setGraphic(null); + } else { + Text text = new Text(item); + text.wrappingWidthProperty().bind(super.widthProperty()); + super.setGraphic(text); + + //Person perss = ((Person)getTableRow().getItem()); + + /*;System.out.println(perss.getFirstName()); + System.out.println(item); + System.out.println(text.getLayoutBounds().getHeight()); + System.out.println("===============");*/ + + } + } + }; + return cell; + } + }); + + tableView.setItems(data); + tableView.getColumns().addAll(Col); + + return total; + } + +} diff --git a/src/main/java/Controllers/Traitement/contro.java b/src/main/java/Controllers/Traitement/contro.java new file mode 100644 index 0000000..6c17845 --- /dev/null +++ b/src/main/java/Controllers/Traitement/contro.java @@ -0,0 +1,344 @@ +package Controllers.Traitement; + +import javafx.scene.control.ChoiceBox; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.text.Text; + + + +/** + * @author Maher Ben Tili + */ +public class contro { + + + public boolean isStringNull(String str){ + if(str == null){ + return true; + }else if(str.length() == 0){ + return true; + }else if(str.equals("")){ + return true; + }else if(str.isEmpty()){ + return true; + }else{ + return false; + } + } + + public boolean isNumeric(String str){ + if(str == null || str.isEmpty()){ + return false; + } + else{ + try{ + double d = Double.parseDouble(str); + } + catch(NumberFormatException nfe){ + return true; + + } + return false; + } + } + + public boolean isFloat(String str){ + if(str == null || str.isEmpty()){ + return false; + } + else{ + try{ + Float f = Float.parseFloat(str.replace(',','.')); + } + catch(NumberFormatException nfe){ + return true; + } + return false; + } + } + + public boolean isNumericNotnull(String str){ + if( (str == null) || (str.isEmpty()) || (str.length()==0) ){ + return true; + }else{ + try{ + double d = Double.parseDouble(str); + return false; + } + catch(NumberFormatException nfe){ + return true; + } + } + + } + + public boolean isFloatNotnull(String str){ + try{ + Float f = Float.parseFloat(str.replace(',','.')); + return false; + } + catch(NumberFormatException nfe){ + return true; + } + } + + + public boolean ContrNullValue(ComboBox Champ , Text text){ + if(Champ.getValue()==null){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ est vide"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrNullValue(ChoiceBox Champ , Text text){ + if(Champ.getValue()==null){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ est vide"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrNullDatePicker(DatePicker Champ , Text text){ + if(Champ.getValue()==null){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Date est vide"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrNull(TextField Champ , Text text) + { + if(Champ.getText() == null || Champ.getText().isEmpty() || Champ.getText().length()== 0){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ est vide"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrNull(TextArea Champ , Text text){ + if(Champ.getText() == null || Champ.getText().isEmpty() || Champ.getText().length()== 0){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ est vide"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrNumerique(TextField Champ , Text text){ + if(this.isNumeric(Champ.getText())){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ doit être numéro"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrNumeriqueNotnull(TextField Champ , Text text){ + if(this.isNumericNotnull(Champ.getText())){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ doit être numéro"); + return false ; + } + else{ + text.setText(""); + //Champ.setStyle("-fx-border-color: transparent;"); + Champ.setStyle(null); + return true ; + } + } + + public boolean ContrReel(TextField Champ , Text text){ + if(this.isFloat(Champ.getText().replace(',','.'))){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ doit être reel"); + return false ; + } + else{ + //Champ.setStyle("-fx-border-color:transparent;"); + Champ.setStyle(null); + text.setText(""); + return true ; + } + } + + public boolean ContrReelNotNull(TextField Champ , Text text){ + if(this.isFloatNotnull(Champ.getText().replace(',','.'))){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ doit être reel"); + return false ; + } + else{ + Champ.setStyle(null); + //Champ.setStyle("-fx-border-color:transparent;"); + text.setText(""); + return true ; + } + } + + + public boolean ContrHour(TextField Champ , Text text) + { + String Hour = Champ.getText(); + + boolean Result = true; + + if(Hour != null && Hour.length()==5){ + Integer HourLength = Hour.length(); + + if(HourLength!= 5){ + Result = false; + }else if(!Hour.substring(2,3).equals(":")){ + Result = false; + } + + + if(!this.isNumeric(Hour.substring(0, 2))){ + double d = Double.parseDouble(Hour.substring(0, 2)); + if(d<0 || d>24){ + Result = false; + } + }else{ + Result = false; + } + + if(!this.isNumeric(Hour.substring(3, 5))){ + double d = Double.parseDouble(Hour.substring(3, 5)); + if(d<0 || d>60){ + Result = false; + } + }else{ + Result = false; + } + }else{ + Result = false; + } + + if(Result == false){ + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ doit être format Heur"); + }else{ + text.setText(""); + Champ.setStyle(null); + } + + return Result ; + } + + // champs ne doit pas être null et minumum n Caractaire + public boolean ContrMinCaractaireNotnull(TextField Champ , Text text, int nbrCaractaire) + { + boolean Result = ContrNull( Champ, text); + + if( Result ) + { + Result = ContrMinCaractaire( Champ , text, nbrCaractaire); + } + + return Result ; + } + + // champs peut être null ou minumum n Caractaire + public boolean ContrMinCaractaire(TextField Champ , Text text, int nbrCaractaire) + { + if(Champ.getText().length() < nbrCaractaire) + { + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ doit dépasser "+nbrCaractaire+" caractères"); + return false; + }else{ + text.setText(""); + Champ.setStyle(null); + return true ; + } + } + + + // champs ne doit pas être null et égale a une chaine de caractaire + public boolean ContrEqualsNotnull(TextField Champ , Text text, String equals) + { + boolean Result = ContrNull( Champ, text); + + if( Result ) + { + Result = ContrEquals( Champ , text, equals); + } + + return Result ; + } + + + // champs peut être null ou égale a une chaine de caractaire + public boolean ContrEquals(TextField Champ , Text text, String equals) + { + if(!Champ.getText().equals(equals)) + { + Champ.setStyle("-fx-border-color:#f20606;"); + text.setText("Champ n'est pas égale"); + return false; + }else{ + text.setText(""); + Champ.setStyle(null); + return true ; + } + } + + // champs peut être null ou il doit être un email + public boolean ContrEmail(TextField Champ , Text text) + { + boolean result = true; + if(isStringNull(Champ.getText())){ + result = true; + } + else{ + if(Champ.getText().indexOf("@")< 0){ + Champ.setStyle("-fx-border-color: #f20606;"); + text.setText("invalide mail"); + result = false ; + } + } + if(result){ + text.setText(""); + Champ.setStyle(null); + } + return result; + } + +} diff --git a/src/main/java/Controllers/User/AddUserController.java b/src/main/java/Controllers/User/AddUserController.java new file mode 100644 index 0000000..c30ca13 --- /dev/null +++ b/src/main/java/Controllers/User/AddUserController.java @@ -0,0 +1,46 @@ +/* + * 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 Controllers.User; + +import Controllers.Dialog.ShowDialog; +import Models.connexion; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.Button; + + + +/** + * FXML Controller class + * + * @author Maher + */ +public class AddUserController{ + + + @FXML + private Button ajouter; + + + + @FXML + private void handleButtonAction(ActionEvent event){ + + + connexion cnx = new connexion(); + if(cnx.ouverture()){ + System.out.println("connecter"); + + } + else{ + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + + } + + } + +} diff --git a/src/main/java/Controllers/User/GestionUtilisateurController.java b/src/main/java/Controllers/User/GestionUtilisateurController.java new file mode 100644 index 0000000..3505b5f --- /dev/null +++ b/src/main/java/Controllers/User/GestionUtilisateurController.java @@ -0,0 +1,99 @@ +/* + * 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 Controllers.User; + +import Models.User.ListUserDB; +import Models.User.ListUsers; + +import java.net.URL; +import java.util.ResourceBundle; + + +import javafx.collections.ObservableList; + +import javafx.event.EventHandler; +import javafx.fxml.FXML; + +import javafx.fxml.Initializable; + +import javafx.scene.control.Label; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.input.KeyEvent; + + +/** + * FXML Controller class + * + * @author Maher + */ +public class GestionUtilisateurController implements Initializable { + + + + @FXML + private TableView TableViewListUsers; + + @FXML + private TableColumn id; + @FXML + private TableColumn type; + @FXML + private TableColumn login; + @FXML + private TableColumn nom; + @FXML + private TableColumn prenom; + @FXML + private TableColumn tele; + + @FXML + private Label count ; + + @FXML + private TextField rechercher; + + + + + ListUserDB DataListe = new ListUserDB(); + + + ObservableList data = DataListe.getdata(); + + + + private void RechercerAction(){ + + rechercher.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler() { + @Override + public void handle(KeyEvent event) { + ObservableList data = DataListe.rechercheData(rechercher.getText()); + TableViewListUsers.setItems(data); + + }}); + + + } + + @Override + public void initialize(URL url, ResourceBundle rb){ + + id.setCellValueFactory(new PropertyValueFactory("id")); + type.setCellValueFactory(new PropertyValueFactory("type")); + login.setCellValueFactory(new PropertyValueFactory("login")); + nom.setCellValueFactory(new PropertyValueFactory("nom")); + prenom.setCellValueFactory(new PropertyValueFactory("prenom")); + tele.setCellValueFactory(new PropertyValueFactory("tele")); + TableViewListUsers.setItems(data); + count.setText(DataListe.nbrUsers()); + + this.RechercerAction(); + } + +} diff --git a/src/main/java/Controllers/User/ProfileController.java b/src/main/java/Controllers/User/ProfileController.java new file mode 100644 index 0000000..fa66335 --- /dev/null +++ b/src/main/java/Controllers/User/ProfileController.java @@ -0,0 +1,392 @@ +/* + * 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 Controllers.User; + +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.contro; +import Models.User.Authentification; +import Models.User.Profile; +import Models.User.ProfileDB; +import Models.User.User; +import Models.connexion; +import java.net.URL; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Date; +import java.util.ResourceBundle; +import javafx.animation.FadeTransition; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.PasswordField; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Font; +import javafx.scene.text.Text; +import javafx.util.Duration; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ProfileController implements Initializable { + + /** + * Initializes the controller class. + */ + @FXML public Text Monprofilenomprenom ; + @FXML public Text Monprofilenaissance ; + @FXML public Text ModifierCompteTitre ; + @FXML public Text Monprofiletele ; + @FXML public Text Monprofileadresse ; + @FXML public Text Monprofilesexe ; + @FXML public Text Monprofilemail ; + @FXML public Text Monprofilepays ; + @FXML public Text Monprofiletypecompte ; + @FXML public Text Monprofilequestion ; + @FXML public Text Monprofilereponse ; + + @FXML public AnchorPane AnchorPaneModierProduit ; + @FXML public TextField Modiferprofileprenom ; + @FXML public TextField Modiferprofilenom; + @FXML public TextField Modiferprofiletele; + @FXML public TextField Modiferprofileadresse; + @FXML public TextField Modiferprofilemail; + @FXML public TextField Modiferprofilepay; + @FXML public DatePicker Modiferprofilenaissance; + @FXML public RadioButton Modiferprofilehomme ; + @FXML public RadioButton Modiferprofilefemme ; + @FXML public ToggleGroup groupesexe; + @FXML public GridPane Modiferprofilegridpane; + @FXML public Text erreurprenom ; + @FXML public Text erreurnom ; + @FXML public Text erreurtele ; + @FXML public Text erreuradresse ; + @FXML public Text erreurmail ; + @FXML public Text erreurpay ; + @FXML public Text erreurnaissance ; + + + + @FXML public AnchorPane AnchorPaneModiferPass ; + @FXML public PasswordField ModiferPassAncien ; + @FXML public PasswordField ModiferPassNouveau ; + @FXML public PasswordField ModiferPassRepeter ; + @FXML public TextField ModiferPassReponce ; + @FXML public ComboBox ModiferPassQuestion ; + @FXML public GridPane ModiferPassgridpane; + @FXML public Text erreurAncien ; + @FXML public Text erreurNouveau ; + @FXML public Text erreurRepeter ; + @FXML public Text erreurReponce ; + @FXML public Text erreurQuestion ; + + @FXML private Button ButtonSavePofile; + @FXML private Button ButtonSavePassword; + + connexion cnx = new connexion(); + ShowDialog SD =new ShowDialog(); + + Profile myprofile= new Profile(); + + ProfileDB profiledb = new ProfileDB(); + Date date = new Date(); + SimpleDateFormat dateformat = new SimpleDateFormat ("dd/MM/yyyy"); + contro clt = new contro(); + + @Override + public void initialize(URL url, ResourceBundle rb) { + + //myprofile.setIdprofile(User.idprofile); + Modiferprofilehomme.setUserData("1"); + Modiferprofilefemme.setUserData("0"); + + myprofile = profiledb.getpro(User.idprofile); + + + if (myprofile!= null){ + Monprofilenomprenom.setText(myprofile.getNom()+" "+myprofile.getPrenom()); + Monprofilenaissance.setText(Adaptateur.NormalDateFormat(myprofile.getNaissance())); + Monprofiletele.setText(Integer.toString(myprofile.getTele())); + Monprofileadresse.setText(myprofile.getAdresse()); + Monprofilesexe.setText(myprofile.getSexeString()); + Monprofilemail.setText(myprofile.getMail()); + Monprofilepays.setText(myprofile.getPays()); + Monprofiletypecompte.setText(myprofile.getAuthentification().getTypeCompte()) ; + Monprofilequestion.setText(myprofile.getAuthentification().getQuestionSecrete()) ; + Monprofilereponse.setText(myprofile.getAuthentification().getReponceQuestion()) ; + + Modiferprofileprenom.setText(myprofile.getPrenom()); + Modiferprofilenom.setText(myprofile.getNom()); + Modiferprofiletele.setText(Integer.toString(myprofile.getTele())); + Modiferprofileadresse.setText(myprofile.getAdresse()); + Modiferprofilemail.setText(myprofile.getMail()); + Modiferprofilepay.setText(myprofile.getPays()); + Modiferprofilenaissance.setValue(Adaptateur.StringToLocalDate(myprofile.getNaissance())); + if( "Homme".equals(myprofile.getSexeString())){ + Modiferprofilehomme.setSelected(true); + } + else{ + Modiferprofilefemme.setSelected(true); + } + + //Panel modifier mot de passe + ModiferPassQuestion.setPromptText(myprofile.getAuthentification().getQuestionSecrete()); + ModiferPassReponce.setText(myprofile.getAuthentification().getReponceQuestion()); + + + } + else{ + SD.ShowAletDialog(); + } + + ButtonSavePofile.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SavePofile(); + } + }); + + ButtonSavePassword.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + SavePassword(); + } + }); + + } + + private void SavePofile() + { + if( clt.ContrMinCaractaire(Modiferprofilenom, erreurnom, 3) && + clt.ContrMinCaractaireNotnull(Modiferprofileprenom, erreurprenom, 3) && + clt.ContrNumeriqueNotnull(Modiferprofiletele, erreurtele) && + clt.ContrMinCaractaireNotnull(Modiferprofileadresse, erreuradresse, 5) && + clt.ContrNullDatePicker(Modiferprofilenaissance, erreurnaissance) && + clt.ContrMinCaractaireNotnull(Modiferprofilepay, erreurpay, 3) + ) + { + myprofile.setNom(Modiferprofilenom.getText()); + myprofile.setPrenom(Modiferprofileprenom.getText()); + myprofile.setMail(Modiferprofilemail.getText()); + myprofile.setTele(Integer.parseInt(Modiferprofiletele.getText())); + myprofile.setAdresse(Modiferprofileadresse.getText()); + myprofile.setPays(Modiferprofilepay.getText()); + myprofile.setSexe(Integer.parseInt(groupesexe.getSelectedToggle().getUserData().toString())); + myprofile.setNaissance(Modiferprofilenaissance.getValue().toString()); + + //mettre a jour le profile + boolean result = profiledb.updateProfile(User.idprofile, myprofile); + + //cas d'écheque de connexion + if(!result){ + SD.ShowAletDialog(); + }else{ + FadeTransition ft = new FadeTransition(Duration.millis(400), Modiferprofilegridpane); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + ButtonSavePofile.setVisible(false); + Image success = new Image("/Public/icon/successfully.png"); + + ImageView iv1 = new ImageView(); + iv1.setImage(success); + + Text text= new Text(); + text.setText("la modification a été effectuée avec succès"); + text.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + StackPane stackpane = new StackPane(); + stackpane.setLayoutX(140); + stackpane.setLayoutY(140); + stackpane.setPrefHeight(200); + stackpane.setPrefWidth(200); + stackpane.getChildren().add(iv1); + stackpane.getChildren().add(text); + StackPane.setAlignment(text, Pos.BOTTOM_CENTER); + + AnchorPaneModierProduit.setLeftAnchor(stackpane, 83.0); + AnchorPaneModierProduit.setRightAnchor(stackpane, 83.0); + AnchorPaneModierProduit.setTopAnchor(stackpane,100.0); + AnchorPaneModierProduit.setBottomAnchor(stackpane,200.0); + AnchorPaneModierProduit.getChildren().add(stackpane); + + } + }); + } + } + } + + + private void SavePassword() + { + if( clt.ContrEqualsNotnull(ModiferPassAncien, erreurAncien, myprofile.getAuthentification().getPassword()) && + clt.ContrMinCaractaireNotnull(ModiferPassNouveau, erreurNouveau, 6) && + clt.ContrEqualsNotnull(ModiferPassRepeter, erreurRepeter, ModiferPassNouveau.getText()) && + clt.ContrNull(ModiferPassReponce, erreurReponce) + ) + { + Authentification authentification = myprofile.getAuthentification(); + authentification.setPassword(ModiferPassNouveau.getText()); + authentification.setQuestionSecrete((String) ModiferPassQuestion.getValue()); + authentification.setReponceQuestion(ModiferPassReponce.getText()); + + boolean result = profiledb.updateAuthentification(authentification.getIdAuthentification(), authentification); + + if(!result){ + SD.ShowAletDialog(); + } + else{ + //AnchorPaneModiferPass + FadeTransition ft = new FadeTransition(Duration.millis(400), ModiferPassgridpane); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + ButtonSavePassword.setVisible(false); + + Image success = new Image("/Public/icon/successfully.png"); + + ImageView iv1 = new ImageView(); + iv1.setImage(success); + + Text text= new Text(); + text.setText("la modification a été effectuée avec succès"); + text.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + StackPane stackpane = new StackPane(); + stackpane.setLayoutX(140); + stackpane.setLayoutY(140); + stackpane.setPrefHeight(200); + stackpane.setPrefWidth(200); + stackpane.getChildren().add(iv1); + stackpane.getChildren().add(text); + StackPane.setAlignment(text, Pos.BOTTOM_CENTER); + + AnchorPaneModiferPass.setLeftAnchor(stackpane, 83.0); + AnchorPaneModiferPass.setRightAnchor(stackpane, 83.0); + AnchorPaneModiferPass.setTopAnchor(stackpane,100.0); + AnchorPaneModiferPass.setBottomAnchor(stackpane,200.0); + AnchorPaneModiferPass.getChildren().add(stackpane); + + + } + }); + } + } + } + /*@FXML + private void UpdatePasswordButtonAction(ActionEvent event) { + + if(ModiferPassAncien.getText().equals(myprofile.getAuthentification().getPassword())){ + erreurAncien.setText(""); + ModiferPassAncien.setStyle("-fx-border-color: transparent;"); + + if(ModiferPassNouveau.getText().length()<6){ + erreurNouveau.setText("Mot de passe doit dépasser 6 caractère"); + ModiferPassNouveau.setStyle("-fx-border-color:#f20606;"); + } + else{ + erreurNouveau.setText(""); + ModiferPassNouveau.setStyle("-fx-border-color: transparent;"); + + if(ModiferPassNouveau.getText().equals(ModiferPassRepeter.getText())){ + ModiferPassRepeter.setStyle("-fx-border-color: transparent;"); + erreurRepeter.setText(""); + + if(ModiferPassReponce.getText().length()<3){ + ModiferPassReponce.setStyle("-fx-border-color: #f20606;"); + erreurReponce.setText("la réponse doit dépasser 2 caractère"); + } + else{ + ModiferPassReponce.setStyle("-fx-border-color: transparent;"); + erreurReponce.setText(""); + + + //update password + updateprofile.getAuthentification().setPassword(ModiferPassNouveau.getText()); + updateprofile.getAuthentification().setQuestionSecrete(ModiferPassQuestion.getValue().toString()); + updateprofile.getAuthentification().setReponceQuestion(ModiferPassReponce.getText()); + boolean result=profiledb.updatePassword(User.idprofile, updateprofile); + if(!result){ + SD.ShowAletDialog(); + } + else{ + //AnchorPaneModiferPass + FadeTransition ft = new FadeTransition(Duration.millis(400), ModiferPassgridpane); + ft.setFromValue(1.0); + ft.setToValue(0.0); + ft.play(); + ft.setOnFinished(new EventHandler() { + //message de succés + @Override + public void handle(ActionEvent event) { + Image success = new Image("/Public/icon/successfully.png"); + + ImageView iv1 = new ImageView(); + iv1.setImage(success); + + Text text= new Text(); + text.setText("la modification a été effectuée avec succès"); + text.setFont(Font.loadFont(getClass().getResourceAsStream("/Public/Fonts/Raleway-SemiBold.ttf"), 20)); + + StackPane stackpane = new StackPane(); + stackpane.setLayoutX(140); + stackpane.setLayoutY(140); + stackpane.setPrefHeight(200); + stackpane.setPrefWidth(200); + stackpane.getChildren().add(iv1); + stackpane.getChildren().add(text); + StackPane.setAlignment(text, Pos.BOTTOM_CENTER); + + AnchorPaneModiferPass.setLeftAnchor(stackpane, 83.0); + AnchorPaneModiferPass.setRightAnchor(stackpane, 83.0); + AnchorPaneModiferPass.setTopAnchor(stackpane,100.0); + AnchorPaneModiferPass.setBottomAnchor(stackpane,200.0); + AnchorPaneModiferPass.getChildren().add(stackpane); + + } + }); + } + + } + } + else{ + ModiferPassRepeter.setStyle("-fx-border-color:#f20606;"); + erreurRepeter.setText("Mot de passe incorrect"); + } + } + } + else{ + erreurAncien.setText("Password incorrect"); + ModiferPassAncien.setStyle("-fx-border-color:#f20606;"); + } + + }*/ + + + + + +} diff --git a/src/main/java/Controllers/VenteRapideClt/Step1CommandeCltController.java b/src/main/java/Controllers/VenteRapideClt/Step1CommandeCltController.java new file mode 100644 index 0000000..fafa710 --- /dev/null +++ b/src/main/java/Controllers/VenteRapideClt/Step1CommandeCltController.java @@ -0,0 +1,1111 @@ +/* + * 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 Controllers.VenteRapideClt; + +import Controllers.Client.ListeClient; +import Controllers.Client.ListeClientEntreprise; +import Controllers.Client.RechercherClientEntrepriseController; +import Controllers.Client.RechercherClientPersonneController; +import Controllers.CommandeClt.CommandeCltPasserController; +import Controllers.DevisClt.DevisImporterController; +import Controllers.Dialog.MessageControle; +import Models.Produit.ListeProduit; +import Controllers.Produit.RechercherProduitController; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.CommandeClt.CommandeClt; +import Models.DevisClt.Devis; +import Models.DevisClt.DevisCltListe; +import Models.DevisClt.DevisDB; +import Models.Produit.Produit; +import Models.Produit.ProduitDB; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ObservableValue; +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.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.DatePicker; +import javafx.scene.control.RadioButton; +import javafx.scene.control.TabPane; +import javafx.scene.control.TableCell; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.control.ToggleGroup; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.input.MouseEvent; +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; + +/** + * FXML Controller class + * + * @author maher + */ +public class Step1CommandeCltController implements Initializable { + + @FXML private AnchorPane PaneStep1CommandeClt; + @FXML public Text TotalTVA ; + @FXML public Text Remise ; + @FXML public Text NetAPayer ; + @FXML public Text Timbre ; + @FXML public Text TotalHTNet ; + + + @FXML public Button Enregister ; + @FXML public Button ClientExisteDejat ; + @FXML public Button ClientDefault ; + @FXML public Button RechercheProduit ; + + @FXML public TextField Nom ; + @FXML public TextField Prenom ; + @FXML public TextArea Adresse ; + @FXML public TextField TELE1 ; + @FXML public TextField TELE2 ; + + @FXML public Text TextMatricule ; + @FXML public Text TextPrenom; + @FXML public Text TextSexe; + @FXML public Text TextDateNaissance; + + @FXML public Text TextCltExistCode; + @FXML public Text CltExistCode; + @FXML public Text CltExistNom; + @FXML public Text CltExistPrenom; + @FXML public Text CltExistAdresse; + @FXML public Text CltExistDateNaissance; + @FXML public Text CltExistTELE1; + @FXML public Text CltExistTELE2; + + @FXML public TabPane TabPaneCommande; + + @FXML public DatePicker DateNaisssance ; + + @FXML public ComboBox ModeReglement ; + + @FXML public TableView TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignation; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + @FXML public TableColumn TabColAddAction ; + + @FXML private ToggleGroup ToggleGroupSexe; + @FXML private RadioButton SexeHomme; + @FXML private RadioButton SexeFemme; + + public Integer TypeClient = 2; // 0Personne 1Entreprise 2Passeger + Client client = new Client(); + ClientEntreprise CltEntreprise = new ClientEntreprise(); + ClientPassager CltPassager = new ClientPassager(); + + public String Mode; // Comptant Facilité + public String CodeDevis; + + public ObservableList data=FXCollections.observableArrayList(); + + CommandeClt commandeclt = new CommandeClt(); + Produit produit= new Produit(); + ProduitDB produitDB= new ProduitDB(); + + float netaPayer = 0; + float Remises = 0; + float totalTVA = 0; + float total_H_T_Net =0; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + TableViewListeProduit.setEditable(true); + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + this.ReferenceMouseClick(); + this.QantiteMouseClick(); + this.RemiseMouseClick(); + + ModeReglement.setValue(Mode); + + TabColAddAction.setSortable(true); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new Step1CommandeCltController.ButtonCell(); + } + }); + + + TableViewListeProduit.setItems(data); + CalculeListeProduit(); + + //Ajouter une ligne vide clors ce que en click sur la tableview + TableViewListeProduit.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + }); + + ModeReglement.getSelectionModel().select("Comptant"); + } + + + @FXML + private void NextBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + if(ControleObject()){ + this.SetObject(); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step2BonLivraisonClt.fxml")); + Parent NodeStep2BonLivraison = (Parent)fxmlLoader.load(); + + Step2BonLivraisonCltController Step2BonLivraisonClt = fxmlLoader.getController(); + + Step2BonLivraisonClt.ConvertCommandeToBonLivraision(commandeclt); + Step2BonLivraisonClt.SetDefaultTextFieldData(); + + PaneStep1CommandeClt.getChildren().clear(); + PaneStep1CommandeClt.getChildren().add(NodeStep2BonLivraison); + } + + } + + + @FXML + private void AddLigneButtonAction(ActionEvent event) throws IOException { + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + + + + public void SetDefaultSaveDataImport(Object[] ArrayObject){ + + if(ArrayObject[0] != null){ + this.data = (ObservableList) ArrayObject[0]; + this.CalculeListeProduit(); + this.TableViewListeProduit.setItems(data); + } + + + if( (ArrayObject[1] == null)){ + this.TypeClient = 2; + ArrayObject[1] = 2; + this.CltPassager = (ClientPassager) ArrayObject[4]; + if(this.CltPassager.getNom() != null){ + this.SetClientPassager(); + } + }else{ + this.TypeClient = (Integer) ArrayObject[1]; + if(this.TypeClient == 0){ + this.client = (Client) ArrayObject[2]; + if(this.client.getCodeclient() != null){ + this.SetClient(); + } + }else if(this.TypeClient == 1){ + this.CltEntreprise = (ClientEntreprise) ArrayObject[3]; + if(this.CltEntreprise.getCode() != null){ + this.SetClientEntre(); + } + }else if( (this.TypeClient == null) || (this.TypeClient == 2) ){ + this.CltPassager = (ClientPassager) ArrayObject[4]; + if(this.CltPassager.getNom() != null){ + this.SetClientPassager(); + } + } + } + + + + this.CodeDevis = (String) ArrayObject[5]; + + if(ArrayObject[6] != null){ + this.SetProduit( (Produit) ArrayObject[6] ); + this.TabPaneCommande.getSelectionModel().select(1); + } + + if(ArrayObject[7] != null){ + this.Mode = (String) ArrayObject[7]; + this.ModeReglement.setValue(this.Mode); + } + } + + + public Object[] getDefaultSaveDataImport(){ + Object[] ArrayObject = new Object[10]; + ArrayObject[0] = this.data; + ArrayObject[1] = this.TypeClient; + ArrayObject[2] = this.client ; + ArrayObject[3] = this.CltEntreprise; + + if( (this.TypeClient == null) || (this.TypeClient == 2) ){ + this.TypeClient = 2; + + RadioButton SelectedRadioSexe = (RadioButton) ToggleGroupSexe.getSelectedToggle(); + + this.CltPassager.setNom(this.Nom.getText()); + this.CltPassager.setPrenom(this.Prenom.getText()); + this.CltPassager.setAdresse(this.Adresse.getText()); + this.CltPassager.setSexeString(SelectedRadioSexe.getEllipsisString()); + this.CltPassager.setTelefixString(this.TELE1.getText()); + this.CltPassager.setTelemobileString(this.TELE2.getText()); + this.CltPassager.setNaissance(Adaptateur.DatabaseDateLocalDate(DateNaisssance.getValue())); + ArrayObject[4] = this.CltPassager; + } + + ArrayObject[5] = this.CodeDevis; + ArrayObject[7] = (String) this.ModeReglement.getValue(); + return ArrayObject; + } + + + private void SetClientPassager(){ + Nom.setText(this.CltPassager.getNom()); + Prenom.setText(this.CltPassager.getPrenom()); + Adresse.setText(this.CltPassager.getAdresse()); + DateNaisssance.setValue(Adaptateur.StringToLocalDate(this.CltPassager.getNaissance())); + TELE1.setText(this.CltPassager.getTelefixString()); + TELE2.setText(this.CltPassager.getTelemobileString()); + if(this.CltPassager.getSexe() == 0){ + SexeFemme.setSelected(true); + } + + ModeReglement.setDisable(true); + ModeReglement.getSelectionModel().select("Comptant"); + } + + + + + @FXML + private void RechercheProduitButtonAction(ActionEvent event) throws IOException { + + final RechercherProduitController rechercheproduit = new RechercherProduitController(true); + + rechercheproduit.ArrayObjectDataSave = this.getDefaultSaveDataImport(); + + rechercheproduit.Show(); + + rechercheproduit.TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected ItemButtonCell + rechercheproduit.ArrayObjectDataSave[6] = ((Produit)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step1CommandeClt.fxml")); + Parent ParentStep1CommandeClt = (Parent) fxmlLoader.load(); + + Step1CommandeCltController Step1CommandeClt = fxmlLoader.getController(); + + Step1CommandeClt.SetDefaultSaveDataImport(rechercheproduit.ArrayObjectDataSave); + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentStep1CommandeClt, 3); + } catch (Exception ex) { + System.out.println("Controllers.VenteRapideClt.RechercheProduitButtonAction \n"+ex.getMessage()); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + } + + + @FXML + private void DevisCltImportButtonAction(ActionEvent event) throws IOException { + DevisImporterController DevisImporter = new DevisImporterController(); + DevisImporter.Show(); + + DevisImporter.TabColDetail.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(Boolean item, boolean empty) { + Button cellButton = new Button(); + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + cellButton.setOnAction(new EventHandler(){ //Action when the button is pressed + @Override + public void handle(ActionEvent t) { + try { + DevisCltListe current = ((DevisCltListe)getTableRow().getItem()); + Devis devis = new Devis(); + DevisDB devisDB = new DevisDB(); + + devis = devisDB.getDevis(current.getCodeDevis()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step1CommandeClt.fxml")); + Parent ParentCommandeClt = (Parent) fxmlLoader.load(); + + Step1CommandeCltController Step1CommandeClt = fxmlLoader.getController(); + + Step1CommandeClt.data.addAll(devis.getListeproduit()); + Step1CommandeClt.TypeClient = devis.getTypeClient(); + Step1CommandeClt.CodeDevis = devis.getCodeDevis(); + Step1CommandeClt.Mode=devis.getTypeRegementString(); + Step1CommandeClt.ModeReglement.setValue(devis.getTypeRegementString()); + + if(devis.getTypeClient() == 0 ){ + Step1CommandeClt.client.setCodeclientString(devis.getCodeClient()); + Step1CommandeClt.client.setNom(devis.getNom()); + Step1CommandeClt.client.setPrenom(devis.getPrenom()); + Step1CommandeClt.client.setTelefixString(devis.getTele1()); + Step1CommandeClt.client.setTelemobileString(devis.getTele2()); + Step1CommandeClt.client.setAdresse(devis.getAdresse()); + Step1CommandeClt.SetClient(); + }else if(devis.getTypeClient() == 1){/* + Step1CommandeClt.codecliententre = devis.getCodeClient(); + Step1CommandeClt.SetClientEntre(devis.getCodeClient());*/ + }else if(devis.getTypeClient() == 2){ + Step1CommandeClt.Nom.setText(devis.getNom()); + Step1CommandeClt.Prenom.setText(devis.getPrenom()); + Step1CommandeClt.Adresse.setText(devis.getAdresse()); + Step1CommandeClt.TELE1.setText(devis.getTele1()); + Step1CommandeClt.TELE2.setText(devis.getTele2()); + } + + Step1CommandeClt.TotalTVA.setText(devis.getTotalTVA()); + Step1CommandeClt.Remise.setText(devis.getRemise()); + Step1CommandeClt.NetAPayer.setText(devis.getNetAPayer()); + Step1CommandeClt.Timbre.setText(devis.getTimbre()); + Step1CommandeClt.TotalHTNet.setText(devis.getTotalHorsTaxNet()); + + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentCommandeClt, 3); + + } catch (IOException ex) { + Logger.getLogger(CommandeCltPasserController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + return cell; + } + }); + } + + + + public void SetProduit(Produit produit){ + + //Supprimer les igne vide + if((data.size()>0) && (data.get(data.size()-1).getReference().isEmpty())){ + data.remove(data.size()-1); + } + + if(produit != null){ + ListeProduit ListeProd = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0",produit.getPrixventettc(),produit.getTvavente(),"0"); + AffectationTableView(ListeProd,-1); + } + + } + + + @FXML + private void ClientRessetDefautButtonAction(ActionEvent event) throws IOException { + TypeClient = 2 ; + ClientExisteDejat.setVisible(true); + Nom.setVisible(true); + Prenom.setVisible(true); + Adresse.setVisible(true); + TELE1.setVisible(true); + TELE2.setVisible(true); + DateNaisssance.setVisible(true); + TextDateNaissance.setVisible(true); + TextSexe.setVisible(true); + SexeHomme.setVisible(true); + SexeFemme.setVisible(true); + + TextCltExistCode.setVisible(false); + ClientDefault.setVisible(false); + CltExistCode.setVisible(false); + CltExistNom.setVisible(false); + CltExistPrenom.setVisible(false); + CltExistDateNaissance.setVisible(false); + CltExistAdresse.setVisible(false); + CltExistTELE1.setVisible(false); + CltExistTELE2.setVisible(false); + + ModeReglement.setDisable(true); + ModeReglement.getSelectionModel().select("Comptant"); + SexeHomme.setSelected(true); + } + + //Methode qui pérmet de traite les recherche du client Personne + @FXML + private void ClientExisteDejatButtonAction(ActionEvent event) throws IOException { + + final RechercherClientPersonneController RechercheClient = new RechercherClientPersonneController(); + RechercheClient.ArrayObjectDataSave = this.getDefaultSaveDataImport(); + + RechercheClient.Action.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step1CommandeClt.fxml")); + Parent ParentCommandeClt = (Parent) fxmlLoader.load(); + + // get Selected Item + ListeClient ClientPerson = ((ListeClient)getTableRow().getItem()); + + Step1CommandeCltController Step1CommandeClt = fxmlLoader.getController(); + + Client CltPerson = new Client(); + + CltPerson.setCodeclient(ClientPerson.getCode()); + CltPerson.setCinString(ClientPerson.getCin()); + CltPerson.setAdresse(ClientPerson.getAdresse()); + CltPerson.setNom(ClientPerson.getNom()); + CltPerson.setPrenom(ClientPerson.getPrenom()); + CltPerson.setDateNaissanceString(ClientPerson.getNaissanceString()); + + CltPerson.setNomcomplet(ClientPerson.getNomcomplet()); + CltPerson.setTelefixString(ClientPerson.getTele()); + CltPerson.setTelemobileString(ClientPerson.getTele2()); + CltPerson.setSexe(ClientPerson.getSexe()); + + RechercheClient.ArrayObjectDataSave[1] = 0; + RechercheClient.ArrayObjectDataSave[2] = CltPerson; + + Step1CommandeClt.SetDefaultSaveDataImport(RechercheClient.ArrayObjectDataSave); + + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentCommandeClt, 3); + + } catch (IOException ex) { + Logger.getLogger(RechercherClientPersonneController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + + //afficher la fenaitre + RechercheClient.ShowDialg(); + + final RechercherClientEntrepriseController RechercheClientEntre = new RechercherClientEntrepriseController(); + + RechercheClient.cltEntreprise.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + RechercheClient.AnchoreClientPerson.setVisible(false); + RechercheClientEntre.AnchoreClientEntre.setVisible(true); + RechercheClientEntre.Show(); + } + }); + + //Action when the button is pressed + + + RechercheClientEntre.cltPer.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + RechercheClientEntre.AnchoreClientEntre.setVisible(false); + RechercheClient.AnchoreClientPerson.setVisible(true); + RechercheClient.ShowDialg(); + } + }); + + RechercheClientEntre.TableColumnActionEtre.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected Item + ListeClientEntreprise currentEntreprise = ((ListeClientEntreprise)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step1CommandeClt.fxml")); + Parent commandeclt = (Parent) fxmlLoader.load(); + + Step1CommandeCltController Step1CommandeClt = fxmlLoader.getController(); + + ClientEntreprise CltEtr = new ClientEntreprise(); + + //Traitement de Sauvgarde + CltEtr.setCodeString(currentEntreprise.getCode()); + CltEtr.setMatricule(currentEntreprise.getMatricule()); + CltEtr.setAdresse(currentEntreprise.getAdresse()); + CltEtr.setTele1String(currentEntreprise.getTelephone()); + CltEtr.setTele2String(currentEntreprise.getTelephone2()); + CltEtr.setGerant(currentEntreprise.getGerant()); + CltEtr.setNom(currentEntreprise.getNomEntreprise()); + + RechercheClient.ArrayObjectDataSave[1] = 1; + RechercheClient.ArrayObjectDataSave[3] = CltEtr; + Step1CommandeClt.SetDefaultSaveDataImport(RechercheClient.ArrayObjectDataSave); + + + //Refrechir le Panel + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(commandeclt, 3); + + } catch (IOException ex) { + Logger.getLogger(RechercherClientEntrepriseController.class.getName()).log(Level.SEVERE, null, ex); + } + + } + }); + } + + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + } + + + + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + CalculeListeProduit(); + TableViewListeProduit.setStyle(".table-row-cell:selected{ -fx-background-color:transparent ;}"); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + private void ReferenceMouseClick(){ + TabColReference.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + produit = produitDB.getProduit(t.getNewValue()); + if(produit.getReference() != null){ + ListeProduit Liste = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0","",produit.getTvavente(),"0"); + AffectationTableView(Liste,t.getTablePosition().getRow()) ; + } + else{ + AffectationTableView(new ListeProduit("","","","","","","",""),t.getTablePosition().getRow()) ; + } + + } + }); + } + + private void QantiteMouseClick(){ + TabColQuantite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newquantite = t.getNewValue() ; + try{ + newquantite = newquantite.replace(',','.'); + if(Float.parseFloat(newquantite)<1){ + newquantite = "1"; + } + } + catch(NumberFormatException nfe){ + newquantite = "1"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un quantité dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setQuantite(newquantite); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), newquantite,Liste.getPrixHT(), Liste.getRemise(),"",Liste.getTVA(),""); + //NewList = CalculeProduit(NewList); + AffectationTableView(NewList,t.getTablePosition().getRow()) ; + + } + } + }); + } + + private boolean ControleObject(){ + boolean resulta = false ; + if(data.size()<1){ + final MessageControle messagecontrol = new MessageControle(); + Text text3 = new Text(); + text3.setText("Vous devez ajouter au moin un produit à la liste des produits"); + text3.setFont(Font.font("Arial", FontWeight.BOLD, 13)); + text3.setFill(Color.web("#363a38")); + messagecontrol.DetailMSG.getChildren().add(text3); + + messagecontrol.bouttonOK.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + messagecontrol.stackpane.setVisible(false); + } + }); + messagecontrol.ShowNotification(); + } + else if(ModeReglement.getValue()==null){ + ModeReglement.setStyle("-fx-border-color:#f20606;"); + } + else if(TypeClient == 2){ // 0Personne 1Entreprise 2Passeger + ModeReglement.setStyle("-fx-border-color:transparent;"); + contro clt =new contro(); + if(Nom.getText().isEmpty()){ + Nom.setStyle("-fx-border-color:#f20606;"); + } + else if(Prenom.getText().isEmpty()){ + Nom.setStyle("-fx-border-color:transparent;"); + Prenom.setStyle("-fx-border-color:#f20606;"); + + } + else if(Adresse.getText().isEmpty()){ + Prenom.setStyle("-fx-border-color:transparent;"); + Adresse.setStyle("-fx-border-color:#f20606;"); + + } + else if(clt.isNumericNotnull(TELE1.getText())){ + Adresse.setStyle("-fx-border-color:transparent;"); + TELE1.setStyle("-fx-border-color:#f20606;"); + } + else if(clt.isNumeric(TELE2.getText())){ + TELE1.setStyle("-fx-border-color:transparent;"); + TELE2.setStyle("-fx-border-color:#f20606;"); + } + else{ + TELE2.setStyle("-fx-border-color:transparent;"); + ModeReglement.setStyle("-fx-border-color:#b5b5b5;"); + resulta = true ; + } + } + else{ + ModeReglement.setStyle("-fx-border-color:#b5b5b5;"); + resulta = true ; + } + + return resulta ; + } + + private void SetObject() + { + commandeclt.setTypeRegementString(ModeReglement.getValue().toString()); + commandeclt.setCodeDevis(CodeDevis); + commandeclt.setNetAPayer(Adaptateur.ArrondFloatToStringOrigin(netaPayer)); + commandeclt.setTotalTVA(Adaptateur.ArrondFloatToStringOrigin(totalTVA)); + commandeclt.setTotalHorsTaxNet(Adaptateur.ArrondFloatToStringOrigin(total_H_T_Net)); + commandeclt.setRemise(Adaptateur.ArrondFloatToStringOrigin(Remises)); + + commandeclt.setTypeClient(TypeClient); + if(TypeClient == 0){ + commandeclt.setCltPersonne(client); + }else if(TypeClient == 1){ + commandeclt.setCltEntreprise(CltEntreprise); + }else if(TypeClient == 2){ + CltPassager.setNom(Nom.getText()); + CltPassager.setPrenom(Prenom.getText()); + CltPassager.setAdresse(Adresse.getText()); + CltPassager.setTelefixString(TELE1.getText()); + CltPassager.setTelemobileString(TELE2.getText()); + CltPassager.setNaissance(Adaptateur.DatabaseDateLocalDate(DateNaisssance.getValue()) ); + + RadioButton SelectedRadioSexe = (RadioButton) ToggleGroupSexe.getSelectedToggle(); + CltPassager.setSexeString(SelectedRadioSexe.getEllipsisString()); + + commandeclt.setCltPassager(CltPassager); + } + + //controle le cas ou on a une ligne vide a la fin de la liste + if(data.get(data.size()-1).getTotalTTC().isEmpty()){ + data.remove(data.size()-1); + } + commandeclt.setListeproduit(data); + } + + public void SetClient() + { + ClientExisteDejat.setVisible(false); + Nom.setVisible(false); + Prenom.setVisible(false); + DateNaisssance.setVisible(false); + Adresse.setVisible(false); + TELE1.setVisible(false); + TELE2.setVisible(false); + + ModeReglement.setDisable(false); + + CltExistCode.setText(client.getCodeclient()); + CltExistNom.setText(client.getNom()); + CltExistPrenom.setText(client.getPrenom()); + CltExistDateNaissance.setText(" "+client.getDateNaissanceString()); + CltExistAdresse.setText(client.getAdresse()); + CltExistTELE1.setText(client.getTelefix().toString()); + CltExistTELE2.setText(client.getTelemobileString()); + + if(client.getSexe() == 0){ + SexeFemme.setSelected(true); + }else if(client.getSexe() == 1){ + SexeHomme.setSelected(true); + } + TextDateNaissance.setVisible(true); + TextCltExistCode.setVisible(true); + ClientDefault.setVisible(true); + CltExistCode.setVisible(true); + CltExistNom.setVisible(true); + CltExistPrenom.setVisible(true); + CltExistDateNaissance.setVisible(true); + TextSexe.setVisible(true); + SexeHomme.setVisible(true); + SexeFemme.setVisible(true); + + CltExistAdresse.setVisible(true); + CltExistTELE1.setVisible(true); + CltExistTELE2.setVisible(true); + } + + + + public void SetClientEntre(){ + TextMatricule.setVisible(true); + TextPrenom.setVisible(false); + + DateNaisssance.setVisible(false); + CltExistDateNaissance.setVisible(false); + TextDateNaissance.setVisible(false); + + ClientExisteDejat.setVisible(false); + Nom.setVisible(false); + Prenom.setVisible(false); + Adresse.setVisible(false); + TELE1.setVisible(false); + TELE2.setVisible(false); + TextSexe.setVisible(false); + SexeHomme.setVisible(false); + SexeFemme.setVisible(false); + ModeReglement.setDisable(false); + + CltExistCode.setText(CltEntreprise.getCode().toString()); + CltExistNom.setText(CltEntreprise.getNom()); + CltExistPrenom.setText(CltEntreprise.getMatricule()); + CltExistAdresse.setText(CltEntreprise.getAdresse()); + CltExistTELE1.setText(CltEntreprise.getTele1String()); + CltExistTELE2.setText(CltEntreprise.getTele2String()); + + TextCltExistCode.setVisible(true); + ClientDefault.setVisible(true); + CltExistCode.setVisible(true); + CltExistNom.setVisible(true); + CltExistPrenom.setVisible(true); + CltExistAdresse.setVisible(true); + CltExistTELE1.setVisible(true); + CltExistTELE2.setVisible(true); + + + } + + private void CalculeListeProduit(){ //calculer et afficher la détail des produits + netaPayer = 0; + Remises = 0; + totalTVA = 0; + total_H_T_Net= 0; + + TotalTVA.setText(""); + Remise.setText(""); + NetAPayer.setText(""); + Timbre.setText(""); + TotalHTNet.setText(""); + + //calcule + for(ListeProduit liste : data){ + float totaht = Adaptateur.StringToFloat(liste.getTotalHT()) ; + float prix_U_H_T = Adaptateur.StringToFloat(liste.getPrixHT()) ; + float remises = Adaptateur.StringToFloat(liste.getRemise().replace("%", "")) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")); + float qte = Adaptateur.StringToFloat(liste.getQuantite()); + + totalTVA = totalTVA + ((totaht * tva) /100) ; + + Remises = Remises + (prix_U_H_T * remises)/100 ; + + total_H_T_Net = total_H_T_Net + totaht ; + + } + + if(total_H_T_Net>0){ + float timbre = Adaptateur.StringToFloat(ParametreSystem.Timbre); + netaPayer = total_H_T_Net + totalTVA + timbre ; + + TotalTVA.setText(Adaptateur.ArrondFloatToString(totalTVA)); + Remise.setText(Adaptateur.ArrondFloatToString(Remises)); + NetAPayer.setText(Adaptateur.ArrondFloatToString(netaPayer)); + Timbre.setText(ParametreSystem.Timbre); + TotalHTNet.setText(Adaptateur.ArrondFloatToString(total_H_T_Net)); + } + } + + private void RemiseMouseClick(){ + TabColRemise.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newRemise = t.getNewValue() ; + try{ + newRemise = newRemise.replace(',','.'); + if(Float.parseFloat(newRemise)<0){ + newRemise = "0"; + } + } + catch(NumberFormatException nfe){ + newRemise = "0"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un remise dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setRemise(newRemise); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), Liste.getQuantite(),Liste.getPrixHT(), newRemise, "", Liste.getTVA(), ""); + AffectationTableView(NewList, t.getTablePosition().getRow()); + } + + } + }); + } + + private void AffectationTableView(ListeProduit ListeProd, int EmplacementLigne){ + boolean result = false ; + int indise=0; + int Position = 0; + + if(data.size()>0){ + do{ //Vérifier si le produit exsiste deja + if(data.get(indise).getReference().equals(ListeProd.getReference())){ + result = true ; + Position = indise ; + //System.out.println("existe Position:"+indise); + } + indise++; + }while(data.size()>indise && !result); + + if(result){ //si la ligne exsite déja + if(EmplacementLigne!= -1){ + if(Position == EmplacementLigne){ + data.set(Position, ListeProd); + } + else{ + data.set(EmplacementLigne, new ListeProduit("","","","","","","","")); + } + } + } + else{ + if(EmplacementLigne!= -1){ + data.set(EmplacementLigne, ListeProd); + } + else{ + data.add(ListeProd); + } + } + } + else{ + data.add(ListeProd); + } + + CalculeListeProduit(); + + + TableViewListeProduit.setItems(data); + TableViewListeProduit.setVisible(false); + TableViewListeProduit.setVisible(true); + } + +} diff --git a/src/main/java/Controllers/VenteRapideClt/Step2BonLivraisonCltController.java b/src/main/java/Controllers/VenteRapideClt/Step2BonLivraisonCltController.java new file mode 100644 index 0000000..a70945c --- /dev/null +++ b/src/main/java/Controllers/VenteRapideClt/Step2BonLivraisonCltController.java @@ -0,0 +1,164 @@ +package Controllers.VenteRapideClt; + +import Controllers.Traitement.contro; +import Models.BonLivraisonClt.BonLivraisonClt; +import Models.CommandeClt.CommandeClt; +import java.io.IOException; +import java.net.URL; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ResourceBundle; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; + +/** + * FXML Controller class + * + * @author maher + */ +public class Step2BonLivraisonCltController implements Initializable { + + @FXML private AnchorPane PaneStep2BonLivraison; + + @FXML public TextField TextFieldHeurLivraison ; + @FXML public TextField TextFieldNumTele1 ; + @FXML public TextField TextFieldNumTele2 ; + @FXML public TextField TextFieldTransporteur ; + @FXML public TextField TextFieldPoidProduit; + @FXML public DatePicker DatePickerDateLivraison; + @FXML public TextArea TextAreaAdressLivraison; + + @FXML public Text TextcltHeurLivraison ; + @FXML public Text TextcltNumTele1 ; + @FXML public Text TextcltNumTele2 ; + @FXML public Text TextcltPoidProduit; + @FXML public Text TextcltAdressLivraison; + + BonLivraisonClt BonLivraison = new BonLivraisonClt(); + CommandeClt Commande = new CommandeClt(); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TextFieldHeurLivraison.setText(LocalDateTime.now().getHour()+":"+LocalDateTime.now().getMinute()); + } + + @FXML + private void NextBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + contro clt = new contro(); + if( clt.ContrNumerique(TextFieldNumTele1, TextcltNumTele1) && + clt.ContrNumerique(TextFieldNumTele2, TextcltNumTele2) && + clt.ContrNumerique(TextFieldPoidProduit, TextcltPoidProduit) && + clt.ContrNull(TextAreaAdressLivraison, TextcltAdressLivraison)&& + clt.ContrHour(TextFieldHeurLivraison, TextcltHeurLivraison) ){ + + this.SetBonLivraision(); + this.ConvertCommandeToBonLivraision(Commande); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step3FactureClt.fxml")); + Parent NodeStep3FactureClt = (Parent)fxmlLoader.load(); + + Step3FactureCltController Step3FactureClt = fxmlLoader.getController(); + PaneStep2BonLivraison.getChildren().clear(); + PaneStep2BonLivraison.getChildren().add(NodeStep3FactureClt); + + Step3FactureClt.SetDataStep2ToStep3(BonLivraison, Commande); + } + } + + + @FXML + private void LastBonLivraisonCltButtonAction(ActionEvent event) throws IOException { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step1CommandeClt.fxml")); + Parent NodeStep1Commande = (Parent)fxmlLoader.load(); + + Step1CommandeCltController Step1Commande = fxmlLoader.getController(); + + Object[] ArrayObject = new Object[10]; + + ArrayObject[0] = Commande.getListeproduit(); + Integer TypeClient = Commande.getTypeClient(); + ArrayObject[1] = TypeClient; + + if(TypeClient == 0){ + ArrayObject[2] = Commande.getCltPersonne();; + }else if(TypeClient == 1){ + ArrayObject[3] = Commande.getCltEntreprise(); + }else if(TypeClient == 2){ + ArrayObject[4] = Commande.getCltPassager(); + } + + ArrayObject[5] = Commande.getCodeDevis(); + + ArrayObject[7] = Commande.getTypeRegementString(); + + Step1Commande.SetDefaultSaveDataImport(ArrayObject); + + + PaneStep2BonLivraison.getChildren().clear(); + PaneStep2BonLivraison.getChildren().add(NodeStep1Commande); + } + + + public void SetDefaultTextFieldData(){ + TextFieldNumTele1.setText(BonLivraison.getTele1()); + TextFieldNumTele2.setText(BonLivraison.getTele2()); + + DatePickerDateLivraison.setValue(LocalDate.now()); + + TextAreaAdressLivraison.setText(BonLivraison.getAdresseLivraison()); + TextFieldTransporteur.setText(BonLivraison.getTransporteur()); + TextFieldPoidProduit.setText(BonLivraison.getPoidProduit()); + + } + + public void SetBonLivraision(){ + BonLivraison.setTele1(TextFieldNumTele1.getText()); + BonLivraison.setTele2(TextFieldNumTele2.getText()); + BonLivraison.setHeurLivraison(TextFieldHeurLivraison.getText()); + if(DatePickerDateLivraison.getValue()!=null){ + BonLivraison.setDateLivraisonPreveu(DatePickerDateLivraison.getValue().toString()); + } + BonLivraison.setTransporteur(TextFieldTransporteur.getText()); + BonLivraison.setPoidProduit(TextFieldPoidProduit.getText()); + BonLivraison.setAdresseLivraison(TextAreaAdressLivraison.getText()); + } + + + public void ConvertCommandeToBonLivraision(CommandeClt commande) + { + //0 Personne 1 Entreprise | 2 Passager + Integer TypeClt = commande.getTypeClient(); + BonLivraison.setTypeClient(TypeClt); + if(TypeClt == 0){ + BonLivraison.setCltPersonne(commande.getCltPersonne()); + BonLivraison.setAdresseLivraison(commande.CltPersonne.getAdresse()); + }else if(TypeClt == 1){ + BonLivraison.setCltEntreprise(commande.getCltEntreprise()); + BonLivraison.setAdresseLivraison(commande.CltEntreprise.getAdresse()); + }else if(TypeClt == 2){ + BonLivraison.setCltPassager(commande.getCltPassager()); + BonLivraison.setAdresseLivraison(commande.CltPassager.getAdresse()); + } + + + BonLivraison.setListeproduit(commande.getListeproduit()); + BonLivraison.setTotalHorsTaxNet(commande.getTotalHorsTaxNet()); + BonLivraison.setTotalTVA(commande.getTotalTVA()); + BonLivraison.setRemise(commande.getRemise()); + BonLivraison.setNetAPayer(commande.getNetAPayer()); + + + Commande=commande; + } +} diff --git a/src/main/java/Controllers/VenteRapideClt/Step3FactureCltController.java b/src/main/java/Controllers/VenteRapideClt/Step3FactureCltController.java new file mode 100644 index 0000000..737c222 --- /dev/null +++ b/src/main/java/Controllers/VenteRapideClt/Step3FactureCltController.java @@ -0,0 +1,756 @@ +package Controllers.VenteRapideClt; + +import Controllers.Dialog.MessageControle; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.BonLivraisonClt.BonLivraisonClt; +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.User.User; +import Models.Caisse.CaisseClt; +import Models.Caisse.CarteBancaireClt; +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.DatePicker; +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; + +/** + * FXML Controller class + * @author maher Ben Tili + */ +public class Step3FactureCltController implements Initializable { + + @FXML private AnchorPane PaneStep3FactureClt; + + @FXML public AnchorPane PaneTypeReglementComptant; + @FXML public AnchorPane PaneTypeReglementFacilite; + + @FXML public AnchorPane PaneCheque; + @FXML public AnchorPane PaneCarte; + + @FXML public TextField FactureCltChequeNomBanque; + @FXML public TextField FactureCltChequeNumero; + @FXML public TextField FactureCltChequeNomComple; + @FXML public DatePicker FactureCltChequeDatePaiement; + + @FXML public Text MsgCltChequeNomBanque; + @FXML public Text MsgCltChequeNumero; + @FXML public Text MsgCltChequeNomComple; + @FXML public Text MsgCltChequeDatePaiement; + + + @FXML public TextField TextFieldCarteNumeroTransation; + @FXML public TextField TextFieldCarteNomBanque; + @FXML public TextField TextFieldCarteNumero; + @FXML public TextField TextFieldCarteNomComplet; + + @FXML public Text MsgCltCarteNumeroTransation; + @FXML public Text MsgCltCarteNumeroCarte; + + @FXML public Text TextTypeRegement; + @FXML public Text TextNetaPayer; + + public Integer TypeSelect = 0; // 0:espace 1:Cheque 2:Carte bancaire + + + //Paiement Facilité + @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 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 TableViewListeTraite ; + @FXML public TableColumn TabColDateTraite; + @FXML public TableColumn TabColMontantTraite; + + @FXML public TableView TableViewListeCheque ; + @FXML public TableColumn TabColDateCheque; + @FXML public TableColumn TabColNumeroCheque; + @FXML public TableColumn TabColBanqueCheque; + @FXML public TableColumn TabColMontantCheque; + + float NetaPayer, TotalMontantTraite, MontantInteret, Avance, NbrTraite, TauxIntere; + + public ObservableList dataListTraite = FXCollections.observableArrayList(); + public ObservableList dataListCheque = FXCollections.observableArrayList(); + + public boolean FaciliteType = true; // True Traite | False Cheque + + BonLivraisonClt BonLivraison = new BonLivraisonClt(); + CommandeClt Commande = new CommandeClt(); + FactureClt Facture = new FactureClt(); + + contro clt = new contro(); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + TableViewListeTraite.setEditable(true); + + TabColMontantTraite.setStyle( "-fx-alignment: CENTER;"); + TabColMontantTraite.getStyleClass().add("Center"); + TabColMontantTraite.setCellValueFactory(new PropertyValueFactory("MontantTraite")); + TabColMontantTraite.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColMontantTraite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("date")); + TabColDateTraite.setEditable(true); + + TabColDateTraite.setCellFactory(new Callback() { + @Override + public TableCell call(TableColumn p) { + DatePickerCell datePick = new DatePickerCell(dataListTraite); + return datePick; + } + }); + TableViewListeTraite.setItems(dataListTraite); + + + //Cheque + TabColNumeroCheque.setStyle( "-fx-alignment: CENTER;"); + TabColNumeroCheque.getStyleClass().add("Center"); + TabColNumeroCheque.setCellValueFactory(new PropertyValueFactory("NumeroCheque")); + TabColNumeroCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColNumeroCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("BanqueCheque")); + TabColBanqueCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColBanqueCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String NewBanque = t.getNewValue(); + if(t.getTablePosition().getRow() == 0){ + int indise = 0; + while(indise("MontantCheque")); + TabColMontantCheque.setCellFactory(TextFieldTableCell.forTableColumn()); //Ajouter l'option textfield + //Valier l'opertion + TabColMontantCheque.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent 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("date")); + TabColDateCheque.setEditable(true); + TabColDateCheque.setCellFactory(new Callback() { + @Override + public TableCell call(TableColumn p) { + DatePickerCellCheque datePick = new DatePickerCellCheque(dataListCheque); + return datePick; + } + }); + + TableViewListeCheque.setItems(dataListCheque); + } + + public void SetDataStep2ToStep3(BonLivraisonClt bon_livraison, CommandeClt commande){ + this.BonLivraison= bon_livraison; + this.Commande = commande; + + TextNetaPayer.setText(Adaptateur.StringToStringEspaceCurrency(BonLivraison.getNetAPayer())); + + String TypeRegement = Commande.getTypeRegement(); + TextTypeRegement.setText(Commande.getTypeRegementString()); + if(TypeRegement.equals("0")){ + PaneTypeReglementComptant.setVisible(true); + PaneTypeReglementFacilite.setVisible(false); + }else if(TypeRegement.equals("1")){ + PaneTypeReglementComptant.setVisible(false); + PaneTypeReglementFacilite.setVisible(true); + } + } + + @FXML + private void NextFactureCltButtonAction(ActionEvent event) throws IOException { + + boolean ResultControle = true; + + if(Commande.getTypeRegement().equals("0")){ + if(TypeSelect == 1){ + if(this.ControlePaimentComptant()){ + ResultControle = false; + } + }else if(TypeSelect == 2){ + ResultControle = clt.ContrNull(TextFieldCarteNumeroTransation, MsgCltCarteNumeroTransation) && clt.ContrNumerique(TextFieldCarteNumero, MsgCltCarteNumeroCarte); + } + }else if(Commande.getTypeRegement().equals("1")){ + if(this.Controle()){ + if(FaciliteType){ + if(!PaneTableViewTraite.isVisible()){ + ResultControle = false; + } + if(!this.ControleListTraite()){ + ResultControle = false; + } + }else{ + if(!this.ControleListCheque()){ + ResultControle = false; + } + } + }else{ + ResultControle = false; + } + } + + if(ResultControle){ + this.SetFacture(); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step4SaveVenteClt.fxml")); + Parent NodeStep4SaveVenteClt = (Parent)fxmlLoader.load(); + + Step4SaveVenteCltController Step4SaveVenteClt = fxmlLoader.getController(); + Step4SaveVenteClt.SetDataStep3ToStep4(Commande, BonLivraison, Facture); + + Step4SaveVenteClt.LanchSaveCommande(); + + PaneStep3FactureClt.getChildren().clear(); + PaneStep3FactureClt.getChildren().add(NodeStep4SaveVenteClt); + } + + + } + + @FXML + private void LastFactureCltButtonAction(ActionEvent event) throws IOException { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/Step2BonLivraisonClt.fxml")); + Parent NodeStep2BonLivraison = (Parent)fxmlLoader.load(); + + Step2BonLivraisonCltController Step2BonLivraison = fxmlLoader.getController(); + Step2BonLivraison.BonLivraison = BonLivraison; + Step2BonLivraison.Commande = Commande; + Step2BonLivraison.SetDefaultTextFieldData(); + + PaneStep3FactureClt.getChildren().clear(); + PaneStep3FactureClt.getChildren().add(NodeStep2BonLivraison); + + } + + + public boolean ControlePaimentComptant(){ + contro clt = new contro(); + boolean resulta = true; + if( clt.ContrNull(FactureCltChequeNomBanque, MsgCltChequeNomBanque) && + clt.ContrNumeriqueNotnull(FactureCltChequeNumero, MsgCltChequeNumero) && + clt.ContrNullDatePicker(FactureCltChequeDatePaiement, MsgCltChequeDatePaiement)){ + resulta = false; + } + return resulta; + } + + + + public void SetFacture() + { + Facture.setListeproduit(BonLivraison.getListeproduit()); + + //0 Personne 1 Entreprise 2 Passager + Integer TypeClient = BonLivraison.getTypeClient(); + Facture.setTypeClient(TypeClient); + if(TypeClient == 0){ + Facture.setCltPersonne(BonLivraison.getCltPersonne()); + }else if(TypeClient == 1){ + Facture.setCltEntreprise(BonLivraison.getCltEntreprise()); + }else if(TypeClient == 2){ + Facture.setCltPassager(BonLivraison.getCltPassager()); + } + + Facture.setDateFacture(new Date().toString()); + Facture.setNetAPayer(BonLivraison.getNetAPayer()); + Facture.setTotalTVA(BonLivraison.getTotalTVA()); + Facture.setTotalHorsTaxNet(BonLivraison.getTotalHorsTaxNet()); + Facture.setRemise(BonLivraison.getRemise()); + + Facture.setListeproduit(BonLivraison.getListeproduit()); + + Facture.setTimbre(ParametreSystem.Timbre); + Facture.setCodeUser(User.idprofile); + + //0 Comptent 1 Facilite + Facture.setTypeRegement(Commande.getTypeRegement()); + + if(Facture.getTypeRegementInteger() == 0){ + Facture.setTypeRegement("0"); + //0 :espace 1:cheque 2 :carte bancaire + if(TypeSelect == 0){ + CaisseClt caisse= new CaisseClt(); + caisse.setTypeMouvement("0"); + Facture.setModePaiement("0"); + }else if(TypeSelect == 1){ + ChequeClt Cheque = new ChequeClt(); + Cheque.setBanqueChequeClt(FactureCltChequeNomBanque.getText()); + Cheque.setNumeroChequeClt(FactureCltChequeNumero.getText()); + Cheque.setNomCompletChequeClt(FactureCltChequeNomComple.getText()); + Cheque.setDatePaiement(FactureCltChequeDatePaiement.getValue().toString()); + Cheque.setMontantChequeClt(Facture.getNetAPayer()); + Facture.setCheque(Cheque); + Facture.setModePaiement("1"); + }else if(TypeSelect == 2){ + CarteBancaireClt CarteBancaire = new CarteBancaireClt(); + CarteBancaire.setNumeroTransation(TextFieldCarteNumeroTransation.getText()); + CarteBancaire.setNomBanque(TextFieldCarteNomBanque.getText()); + CarteBancaire.setNumeroCarte(TextFieldCarteNumero.getText()); + CarteBancaire.setNomComplet(TextFieldCarteNomComplet.getText()); + CarteBancaire.setMontant(Facture.getNetAPayer()); + CarteBancaire.setLocalNom(ParametreSystem.NomLocalPC); + CarteBancaire.setIdProfile(User.idprofile); + Facture.setCarteBancaire(CarteBancaire); + Facture.setModePaiement("2"); + } + }else if(Facture.getTypeRegementInteger() == 1){ + Facture.setAvanceNumber(Avance); + Facture.setTotalMontantTraiteNumber(TotalMontantTraite); + Facture.setNbrTraite(TextFieldNbrTraite.getText()); + Facture.setMontantInteretNumber(MontantInteret); + Facture.setTauxInteretNumber(TauxIntere); + + // True Traite | False Cheque + if(FaciliteType){ + Facture.setTypeFacilite("0"); + ArrayList ListTraites = new ArrayList(); + for(int i=0; i ListCheque = new ArrayList(); + for(int i=0; i() { + @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() { + @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() { + @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() { + @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() { + @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() { + @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; + } + } + + //Boutton Traitement + @FXML + private void FactureCltAjouterTraitementButtonAction(ActionEvent event) throws IOException { + if(this.Controle()){ + if(FaciliteType == true){ + this.CalculeTraite(); + }else{ + this.CalculeCheque(); + } + } + } + + private void CalculeTraite(){ + dataListTraite.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 ThreadCommande; + private Service ThreadBonLivraison; + private Service ThreadFacture; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + ButtonPrintCommande.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + + } + }); + + ButtonPrintBonLivaison.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + + ObservableList ListProd = BonLivraison.getListeproduit(); + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + try { + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, 1)); + + if (jobPrint.showPrintDialog(null)) { + + FXMLLoader fxmlLoaderPrintLivraison = new FXMLLoader(getClass().getResource("/Views/BonLivraisonClt/BonLivraisonCltPrint.fxml")); + final Node ParentFxmlPrintLivraison = (Node)fxmlLoaderPrintLivraison.load(); + BonLivraisonCltPrintController PrintLivraison = fxmlLoaderPrintLivraison.getController(); + + PrintLivraison.setBonLivraisonClt(BonLivraison, ListProd, "1/1", true); + + jobPrint.printPage(ParentFxmlPrintLivraison); + + jobPrint.endJob(); + } + } catch (IOException ex) { + System.out.println("Erreur dans: Controllers.VenteRapideClt.Step4SaveVenteCltController.initialize.ButtonPrintBonLivaison"); + System.out.println(ex.getMessage()); + } + } + }); + + ButtonPrintFactureClt.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + try { + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, 1)); + + if (jobPrint.showPrintDialog(null)) { + + FXMLLoader fxmlLoaderPrintFactureClt = new FXMLLoader(getClass().getResource("/Views/FactureClt/FactureCltPrint.fxml")); + final Node ParentFxmlPrintFactureClt = (Node)fxmlLoaderPrintFactureClt.load(); + FactureCltPrintController PrintFactureClt = fxmlLoaderPrintFactureClt.getController(); + + PrintFactureClt.setFactureClt(Facture, false); + + jobPrint.printPage(ParentFxmlPrintFactureClt); + + jobPrint.endJob(); + } + } catch (IOException ex) { + System.err.println("Erreur dans: Controllers.VenteRapideClt.Step4SaveVenteCltController.initialize.ButtonPrintFactureClt "); + System.err.println(ex.getMessage()); + } + } + }); + } + + public void SetDataStep3ToStep4(CommandeClt commande_clt, BonLivraisonClt bon_livraison_clt, FactureClt facture_clt){ + Commande = commande_clt; + BonLivraison = bon_livraison_clt; + Facture = facture_clt; + } + + + public void LanchSaveCommande(){ + ThreadCommande = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + Commande = CommandeDB.AddCommandeClt(Commande); + IdCommande = Commande.getCodecommandeclt(); + + Commande.setCodecommandeclt(IdCommande); + BonLivraison.setIdCommande(IdCommande); + Facture.setIdCommandeClt(IdCommande); + + if(Commande.getTypeClient() == 2){ + String IdPassager = Commande.getCltPassager().getCodeclient(); + BonLivraison.CltPassager.setCodeclient(IdPassager); + Facture.CltPassager.setCodeclient(IdPassager); + } + return null; + } + }; + } + }; + ThreadCommande.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressCommande.setVisible(false); + TextCommande.setText("La Commande N°"+IdCommande+" a été enregistrés avec succès"); + ImageCommande.setVisible(true); + GridPaneCommande.setVisible(true); + ButtonPrintCommande.setVisible(true); + LanchSaveBonLivraison(); + } + }); + ThreadCommande.start(); + } + + + public void LanchSaveBonLivraison(){ + ThreadBonLivraison = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call(){ + IdBonLivraison = BonLivraisonDB.AddBonLivraisonClt(BonLivraison); + Facture.setIdBonLivraisonClt(IdBonLivraison); + return null; + } + }; + } + }; + ThreadBonLivraison.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBonLivraion.setVisible(false); + TextBonLivraion.setText("La bon livraison N°"+IdBonLivraison+" a été enregistrés avec succès"); + ImageBonLivraion.setVisible(true); + GridPaneBonLivraion.setVisible(true); + BonLivraison.setIdBonLivrasionClt(IdBonLivraison); + ButtonPrintBonLivaison.setVisible(true); + LanchSaveFacture(); + } + }); + ThreadBonLivraison.start(); + } + + + public void LanchSaveFacture(){ + ThreadFacture = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + IdFacture = FactureDB.AddFactureClt(Facture); + CommandeDB.UpdateCommandeCltSetIdBonLivraison(IdCommande, IdBonLivraison); + CommandeDB.UpdateCommandeCltSetIdFacture(IdCommande, IdFacture); + return null; + } + }; + } + }; + ThreadFacture.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressFacture.setVisible(false); + TextFacture.setText("La facture N°"+IdFacture+" a été enregistrés avec succès"); + ImageFacture.setVisible(true); + GridPaneFacture.setVisible(true); + if(Facture.getTypeRegementInteger() == 1){ + GridPaneFactureFacilite.setVisible(true); + if(Facture.getTypeFaciliteBoolean()){ + TextTypeFacilite.setText("List traite"); + }else{ + TextTypeFacilite.setText("List cheque"); + } + } + Facture.setCodeFactureClt(IdFacture); + Facture.setDateFacture(Adaptateur.getDefaultCurrentDate("yyyy-MM-dd HH:mm:ss")); + ButtonPrintFactureClt.setVisible(true); + } + }); + ThreadFacture.start(); + } + + @FXML + private void PrintTraiteButtonAction(ActionEvent event) throws IOException { + ArrayList ListTraites = Facture.getListeTraites(); + String strCIN= ""; + String strNomComplet = ""; + + if(Facture.getTypeClient() == 0){ + strCIN = Facture.getCltPersonne().getCinString(); + strNomComplet = Facture.getCltPersonne().getNomcomplet(); + }else if(Facture.getTypeClient() == 1){ + strCIN = Facture.getCltEntreprise().getMatricule(); + strNomComplet = Facture.getCltEntreprise().getNom(); + } + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/TraiteClt/TraiteCltPrint.fxml")); + try { + Parent FxmlPrintTraite = (Parent)fxmlLoader.load(); + TraiteCltPrintController TraiteCltPrint = fxmlLoader.getController(); + + PrinterJob jobPrint = PrinterJob.createPrinterJob(); + + Printer printer = Printer.getDefaultPrinter(); + PageLayout pageLayout = printer.createPageLayout(Paper.NA_LETTER,PageOrientation.PORTRAIT, 0, 0, 0, 0); + JobSettings jobSettings = jobPrint.getJobSettings(); + jobSettings.setPageLayout(pageLayout); + + jobPrint.getJobSettings().setPageRanges(new PageRange(1, ListTraites.size())); + if (jobPrint.showPrintDialog(null)) + { + for(int i=0; i TableViewListeProduit ; + @FXML public TableColumn TabColReference; + @FXML public TableColumn TabColDesignation; + @FXML public TableColumn TabColQuantite ; + @FXML public TableColumn TabColPrixHT; + @FXML public TableColumn TabColRemise; + @FXML public TableColumn TabColTotalHT; + @FXML public TableColumn TabColTVA; + @FXML public TableColumn TabColTotalTTC; + @FXML public TableColumn TabColAddAction ; + + public ObservableList data = FXCollections.observableArrayList(); + Produit produit= new Produit(); + ProduitDB produitDB= new ProduitDB(); + + VenteSansFacture Vente = new VenteSansFacture(); + + float netaPayer = 0; + + @FXML public TableView TableViewVenteSansFacture ; + @FXML public TableColumn TabColCode; + @FXML public TableColumn TabColDate; + @FXML public TableColumn TabColNbrProd; + @FXML public TableColumn TabColPaiement; + @FXML public TableColumn TabColNomPrenomClient; + @FXML public TableColumn TabColMontant; + @FXML public TableColumn TabColOperationAction ; + + @FXML private ProgressBar ProgressBarVenteSansFacture; + + @FXML private TextField TextFieldCode; + @FXML private TextField TextFieldMontant; + + @FXML private DatePicker DatePickerDateVente; + + @FXML private Text ActuellePage ; + @FXML private Text NbrPage ; + @FXML private Group nextgroupe ; + @FXML private Group avancergroupe ; + @FXML private Group lastgroupe ; + @FXML private Group retourgroupe ; + @FXML private Label LabelCount; + @FXML private ChoiceBox NbrLigne ; + + ObservableList cursors = FXCollections.observableArrayList("10","15","20"); + private Integer nbrligne = 10 ; + private Integer totalcount = 0; + private Integer nbrpage = 0; + private Integer actuellepage = 1; + Integer position = 0; + + contro clt = new contro(); + + private Service ThreadSearchVenteSansFacture; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + NbrLigne.setItems(cursors); + NbrLigne.getSelectionModel().selectFirst(); + + Vente.setPaiement("0"); + + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + this.ReferenceMouseClick(); + this.QantiteMouseClick(); + this.RemiseMouseClick(); + + TabColAddAction.setSortable(true); + TabColAddAction.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColAddAction.getStyleClass().add("Center"); + TabColAddAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColAddAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new VenteSansFactureCltController.ButtonCell(); + } + }); + + TableViewListeProduit.setItems(data); + CalculeListeProduit(); + + //Ajouter une ligne vide clors ce que en click sur la tableview + TableViewListeProduit.setOnMouseClicked(new EventHandler(){ + public void handle(MouseEvent event){ + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + }); + + + RadioButtonEspece.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridPaneCheque.setVisible(false); + GridPaneCarteBancaire.setVisible(false); + Vente.setPaiement("0"); + } + }); + RadioButtonCheque.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridPaneCheque.setVisible(true); + GridPaneCarteBancaire.setVisible(false); + Vente.setPaiement("1"); + } + }); + RadioButtonCarteBancaire.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent me) { + GridPaneCheque.setVisible(false); + GridPaneCarteBancaire.setVisible(true); + Vente.setPaiement("2"); + } + }); + + + /**************************Pour TableView Supprimer Vente Sans Facture****************************************/ + TabColCode.setCellValueFactory(new PropertyValueFactory("Code")); + TabColCode.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColCode.getStyleClass().add("Center"); + + TabColDate.setCellValueFactory(new PropertyValueFactory("Date")); + TabColDate.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColDate.getStyleClass().add("Center"); + + TabColNbrProd.setCellValueFactory(new PropertyValueFactory("NbrProd")); + TabColNbrProd.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNbrProd.getStyleClass().add("Center"); + + TabColPaiement.setCellValueFactory(new PropertyValueFactory("Paiement")); + TabColPaiement.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColPaiement.getStyleClass().add("Center"); + TabColPaiement.setCellFactory(new Callback,TableCell>(){ + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell(){ + @Override + public void updateItem(String item, boolean empty) { + //0 :espace | 1:Chèque | 2 :carte bancaire + if(item!= null && item.equals("0")){ + Text text = new Text("Espace"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!= null && item.equals("1")){ + Text text = new Text("Chèque"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!= null && item.equals("2")){ + Text text = new Text("Carte Bancaire"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else if(item!= null && item.equals("3")){ + Text text = new Text("Traite"); + text.setFont(Font.font("Arial", FontWeight.NORMAL, 14)); + setGraphic(text); + }else{ + setGraphic(null); + } + } + }; + return cell; + } + }); + + TabColNomPrenomClient.setCellValueFactory(new PropertyValueFactory("NomPrenomClient")); + TabColNomPrenomClient.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColNomPrenomClient.getStyleClass().add("Center"); + + TabColMontant.setCellValueFactory(new PropertyValueFactory("Montant")); + TabColMontant.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColMontant.getStyleClass().add("Center"); + + + TabColOperationAction.setSortable(true); + TabColOperationAction.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColOperationAction.getStyleClass().add("Center"); + TabColOperationAction.setCellValueFactory(new Callback, + ObservableValue>() { + @Override + public ObservableValue call(TableColumn.CellDataFeatures p) { + return new SimpleBooleanProperty(p.getValue() != null); + } + }); + + // create a cell value factory with an add button for each row in the table. + TabColOperationAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn personBooleanTableColumn) { + return new VenteSansFactureCltController.ButtonCellOperation(); + } + + }); + + PaneVenteSansFacture.setOnKeyPressed(new EventHandler() { + @Override + public void handle(KeyEvent ke) { + if (ke.getCode().equals(KeyCode.ENTER)) { + SearchVenteSansFacture(); + } + } + }); + + GestionSearchVenteSansFacture(); + } + + + + @FXML + private void AddLigneButtonAction(ActionEvent event) throws IOException { + int nbrligne = TableViewListeProduit.getItems().size() ; + if(nbrligne == 0){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + } + else{ + ListeProduit Liste = TableViewListeProduit.getItems().get(nbrligne - 1); + if(!Liste.getTotalTTC().isEmpty()){ + data.add(new ListeProduit("","","","","","","","")); + TableViewListeProduit.setItems(data); + TableViewListeProduit.getSelectionModel().select(nbrligne); + } + } + } + + @FXML + private void RechercheProduitButtonAction(ActionEvent event) throws IOException { + + final RechercherProduitController rechercheproduit = new RechercherProduitController(false); + + rechercheproduit.ArrayObjectDataSave = this.getDefaultSaveDataImport(); + + rechercheproduit.Show(); + + rechercheproduit.TabColAction.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn paramP) { + return new TableCell() { + final Button cellButton = new Button(""); + { + cellButton.getStyleClass().add("btn-icon-primary"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/iconaffecter.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + cellButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent arg0) { + try { + // get Selected ItemButtonCell + rechercheproduit.ArrayObjectDataSave[6] = ((Produit)getTableRow().getItem()); + + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/VenteSansFactureClt.fxml")); + Parent ParentBonReceptionAjouterFXML = (Parent) fxmlLoader.load(); + + VenteSansFactureCltController VenteSansFactureClt = fxmlLoader.getController(); + + VenteSansFactureClt.SetDefaultSaveDataImport(rechercheproduit.ArrayObjectDataSave); + + + MyWindow mywindows = new MyWindow(); + mywindows.Refresh(ParentBonReceptionAjouterFXML, 2); + + + } catch (Exception ex) { + System.out.println("VenteSansFactureClt.RechercheProduitButtonAction"+ex.getMessage()); + } + + } + }); + } + @Override + protected void updateItem(String paramT, boolean isEmpty) { + super.updateItem(paramT, isEmpty); + if (!isEmpty) { + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + }; + } + }); + } + + @FXML + private void SaveVenteButtonAction(ActionEvent event) throws IOException { + + if(data.size() == 0){ + ShowDialog SD = new ShowDialog(); + SD.setTitre("Liste produits"); + SD.setDetail("Vous devez ajouter au moins un produit"); + SD.ShowAletDialog(); + }else{ + if(SetVenteSansFacture()){ + Vente = new VenteSansFactureDB().SetVenteSansFacture(Vente); + } + } + + + if(Vente.getIdVenteSansFacture() != null){ + final DialogSuccessController DialogSuccess = new DialogSuccessController(); + DialogSuccess.Valider.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + try { + DialogSuccess.PaneDialog.setVisible(false); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/VenteSansFactureClt.fxml")); + Parent NodeVenteSansFactureClt = (Parent)fxmlLoader.load(); + PaneVenteSansFacture.getChildren().clear(); + PaneVenteSansFacture.getChildren().add(NodeVenteSansFactureClt); + } catch (IOException ex) { + Logger.getLogger(VenteSansFactureCltController.class.getName()).log(Level.SEVERE, null, ex); + } + } + }); + DialogSuccess.Show(); + } + } + + + private void ReferenceMouseClick(){ + TabColReference.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + produit = produitDB.getProduit(t.getNewValue()); + if(produit.getReference() != null){ + ListeProduit Liste = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixventeht(),"0","",produit.getTvavente(),"0"); + AffectationTableView(Liste,t.getTablePosition().getRow()) ; + } + else{ + AffectationTableView(new ListeProduit("","","","","","","",""),t.getTablePosition().getRow()) ; + } + + } + }); + } + + private void QantiteMouseClick(){ + TabColQuantite.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newquantite = t.getNewValue() ; + try{ + newquantite = newquantite.replace(',','.'); + if(Float.parseFloat(newquantite)<1){ + newquantite = "1"; + } + } + catch(NumberFormatException nfe){ + newquantite = "1"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un quantité dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setQuantite(newquantite); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), newquantite,Liste.getPrixHT(), Liste.getRemise(),"",Liste.getTVA(),""); + //NewList = CalculeProduit(NewList); + AffectationTableView(NewList,t.getTablePosition().getRow()) ; + + } + } + }); + } + + private void AffectationTableView(ListeProduit ListeProd, int EmplacementLigne){ + boolean result = false ; + int indise=0; + int Position = 0; + + if(data.size()>0){ + do{ //Vérifier si le produit exsiste deja + if(data.get(indise).getReference().equals(ListeProd.getReference())){ + result = true ; + Position = indise ; + //System.out.println("existe Position:"+indise); + } + indise++; + }while(data.size()>indise && !result); + + if(result){ //si la ligne exsite déja + if(EmplacementLigne!= -1){ + if(Position == EmplacementLigne){ + data.set(Position, ListeProd); + } + else{ + data.set(EmplacementLigne, new ListeProduit("","","","","","","","")); + } + } + } + else{ + if(EmplacementLigne!= -1){ + data.set(EmplacementLigne, ListeProd); + } + else{ + data.add(ListeProd); + } + } + } + else{ + data.add(ListeProd); + } + + CalculeListeProduit(); + TableViewListeProduit.setItems(data); + TableViewListeProduit.refresh(); + } + + + + + public void SetProduit(Produit produit){ + + //Supprimer les igne vide + if((data.size()>0) && (data.get(data.size()-1).getReference().isEmpty())){ + data.remove(data.size()-1); + } + + if(produit != null){ + ListeProduit ListeProd = new ListeProduit(produit.getReference(),produit.getDesignation(),"1",produit.getPrixachatht(),"0",produit.getPrixachatttc(),produit.getTvaachat(),"0"); + AffectationTableView(ListeProd,-1); + } + + } + + private void RemiseMouseClick(){ + TabColRemise.setOnEditCommit(new EventHandler>() { + @Override + public void handle(TableColumn.CellEditEvent t) { + String newRemise = t.getNewValue() ; + try{ + newRemise = newRemise.replace(',','.'); + if(Float.parseFloat(newRemise)<0){ + newRemise = "0"; + } + } + catch(NumberFormatException nfe){ + newRemise = "0"; + } + + ListeProduit Liste = t.getRowValue() ; + + if(Liste.getReference().isEmpty()){ //le cas en ajoute un remise dans un ligne vide + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(false); + TableViewListeProduit.getColumns().get(t.getTablePosition().getRow()).setVisible(true); + } + else{ + Liste.setRemise(newRemise); + ListeProduit NewList = new ListeProduit(Liste.getReference(),Liste.getDesignation(), Liste.getQuantite(),Liste.getPrixHT(), newRemise, "", Liste.getTVA(), ""); + AffectationTableView(NewList, t.getTablePosition().getRow()); + } + + } + }); + } + + private void CalculeListeProduit(){ //calculer et afficher la détail des produits + + float Remises = 0; + float totalTVA = 0; + float total_H_T_Net= 0; + + TextMontant.setText(""); + + //calcule + for(ListeProduit liste : data){ + float totaht = Adaptateur.StringToFloat(liste.getTotalHT()) ; + float prix_U_H_T = Adaptateur.StringToFloat(liste.getPrixHT()) ; + float remises = Adaptateur.StringToFloat(liste.getRemise().replace("%", "")) ; + float tva = Adaptateur.StringToFloat(liste.getTVA().replace("%", "")); + float qte = Adaptateur.StringToFloat(liste.getQuantite()); + + totalTVA = totalTVA + ((totaht * tva) /100) ; + + Remises = Remises + (prix_U_H_T * remises)/100 ; + + total_H_T_Net = total_H_T_Net + totaht ; + + } + + if(total_H_T_Net>0){ + float timbre = Adaptateur.StringToFloat(ParametreSystem.Timbre); + netaPayer = total_H_T_Net + totalTVA + timbre ; + Vente.setFMontant(netaPayer); + TextMontant.setText(Adaptateur.FloatToStringEspaceCurrency(netaPayer)); + } + } + + //Define the button cell + private class ButtonCell extends TableCell { + + final Button cellButton = new Button(); + + ButtonCell(){ + cellButton.getStyleClass().add("btn-danger"); + Image coffeeImage = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphic = new ImageView(); + buttonGraphic.setImage(coffeeImage); + cellButton.setGraphic(buttonGraphic); + + //Action when the button is pressed + cellButton.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + int selectdIndex = getTableRow().getIndex(); + data.remove(selectdIndex); + CalculeListeProduit(); + TableViewListeProduit.setStyle(".table-row-cell:selected{ -fx-background-color:transparent ;}"); + + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + setGraphic(cellButton); + } else { + setGraphic(null); + } + } + } + + + public boolean SetVenteSansFacture() + { + this.Vente.setNomPrenomClient(TextFieldClient.getText()); + this.Vente.setListProduit(data); + this.Vente.setFMontant(netaPayer); + String Montant = this.Vente.getMontant().replace(",","."); + if(this.Vente.getPaiement().equals("0")) + { + return true; + } + else if(this.Vente.getPaiement().equals("1")) + { + ChequeClt Cheque = new ChequeClt(); + Cheque.setNumeroChequeClt(TextFieldNumeroCheque.getText()); + Cheque.setBanqueChequeClt(TextFieldBanqueCheque.getText()); + Cheque.setNomCompletChequeClt(TextFieldNomCompletCheque.getText()); + if(DatePickerDateCheque.getValue() != null){ + Cheque.setDatePaiement(DatePickerDateCheque.getValue().toString()); + } + Cheque.setLocalNom(ParametreSystem.NomLocalPC); + Cheque.setMontantChequeClt(Montant); + this.Vente.setCheque(Cheque); + + if( clt.ContrNull(TextFieldBanqueCheque, TextControlBanqueCheque) && + clt.ContrNull(TextFieldNomCompletCheque, TextControlNomCompletCheque) && + clt.ContrNumeriqueNotnull(TextFieldNumeroCheque, TextControlNumeroCheque) && + clt.ContrNullDatePicker(DatePickerDateCheque, TextControlDateCheque)) + { + return true; + } + + }else if(this.Vente.getPaiement().equals("2")) + { + CarteBancaireClt CarteBancaire = new CarteBancaireClt(); + CarteBancaire.setNumeroCarte(TextFieldNumeroCateCarte.getText()); + CarteBancaire.setNomBanque(TextFieldBanqueCarte.getText()); + CarteBancaire.setNumeroTransation(TextFieldTransationCarte.getText()); + CarteBancaire.setIdProfile(User.idprofile); + CarteBancaire.setLocalNom(ParametreSystem.NomLocalPC); + CarteBancaire.setMontant(Montant); + this.Vente.setCarteBancaire(CarteBancaire); + if( clt.ContrNull(TextFieldTransationCarte, TextControlTransationCarte) && + clt.ContrNumerique(TextFieldNumeroCateCarte, TextControlNumeroCate) ) + { + return true; + } + } + + return false; + } + + public void SetDefaultSaveDataImport(Object[] ArrayObject){ + + if(ArrayObject[0] != null){ + this.data = (ObservableList) ArrayObject[0]; + this.CalculeListeProduit(); + this.TableViewListeProduit.setItems(data); + } + + + if(ArrayObject[1] != null){ + this.Vente = (VenteSansFacture) ArrayObject[1]; + if(this.Vente.getPaiement().equals("1")) + { + if(this.Vente.getCheque() != null){ + TextFieldNumeroCheque.setText(this.Vente.getCheque().getNumeroChequeClt()); + TextFieldBanqueCheque.setText(this.Vente.getCheque().getBanqueChequeClt()); + TextFieldNomCompletCheque.setText(this.Vente.getCheque().getNomCompletChequeClt()); + if(this.Vente.getCheque().getDatePaiement() != null){ + DatePickerDateCheque.setValue(Adaptateur.StringToLocalDate(this.Vente.getCheque().getDatePaiement())); + } + } + + GridPaneCheque.setVisible(true); + RadioButtonCheque.setSelected(true); + }else if(this.Vente.getPaiement().equals("2")) + { + if(this.Vente.getCarteBancaire() != null){ + TextFieldTransationCarte.setText(this.Vente.getCarteBancaire().getNumeroTransation()); + TextFieldBanqueCarte.setText(this.Vente.getCarteBancaire().getNomBanque()); + TextFieldNumeroCateCarte.setText(this.Vente.getCarteBancaire().getNumeroCarte()); + } + GridPaneCarteBancaire.setVisible(true); + RadioButtonCarteBancaire.setSelected(true); + }else{ + RadioButtonEspece.setSelected(true); + } + } + + if(ArrayObject[6] != null){ + this.SetProduit( (Produit) ArrayObject[6] ); + } + + } + + public Object[] getDefaultSaveDataImport(){ + Object[] ArrayObject = new Object[10]; + ArrayObject[0] = this.data; + + SetVenteSansFacture(); + + ArrayObject[1] = this.Vente; + return ArrayObject; + } + + + + + /*********************************************************************************/ + //Define the button cell + private class ButtonCellOperation extends TableCell { + + final Button cellButtonSupprimer = new Button(); + + final Button cellButtonDetail = new Button(); + + ButtonCellOperation(){ + cellButtonSupprimer.getStyleClass().add("btn-danger"); + Image coffeeImageSupprimer = new Image(getClass().getResourceAsStream("/Public/icon/icondelete.png")); + ImageView buttonGraphicSupprimer = new ImageView(); + buttonGraphicSupprimer.setImage(coffeeImageSupprimer); + cellButtonSupprimer.setGraphic(buttonGraphicSupprimer); + + //Action when the button is pressed + cellButtonSupprimer.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + + final int selectdIndex = getTableRow().getIndex(); + + ListeVenteSansFacture ListVSF = (ListeVenteSansFacture)getTableRow().getItem(); + final String IdVenteSansFacture = ListVSF.getCode(); + + final VenteSansFacture VSF = new VenteSansFactureDB().getVenteSansFacture(IdVenteSansFacture); + + + final Dialog MyDialog= new Dialog(); + Node node = MyDialog.DialogAlert(); + MyDialog.Titre.setText("Suppression"); + MyDialog.Message.setText("êtes-vous sûr de vouloir supprimer cette vente"); + MyDialog.DefaultAnnuler(); + MyDialog.Titre.setText("Supprimer"); + MyDialog.Valider.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + boolean resultDelete = new VenteSansFactureDB().DeleteVenteSansFacture(VSF); + if(resultDelete){ + ObservableList ListTempVSF = TableViewVenteSansFacture.getItems(); + ListTempVSF.remove(selectdIndex); + TableViewVenteSansFacture.setItems(ListTempVSF); + TableViewVenteSansFacture.refresh(); + } + MyDialog.PaneDialog.setVisible(false); + } + }); + MyDialog.Show(node); + } + }); + + + + cellButtonDetail.getStyleClass().add("btn-primary"); + Image coffeeImageDetail = new Image(getClass().getResourceAsStream("/Public/icon/detailbutton.png")); + ImageView buttonGraphicDetail = new ImageView(); + buttonGraphicDetail.setImage(coffeeImageDetail); + cellButtonDetail.setGraphic(buttonGraphicDetail); + + //Action when the button is pressed + cellButtonDetail.setOnAction(new EventHandler(){ + @Override + public void handle(ActionEvent t) { + ListeVenteSansFacture VenteSansFacture = (ListeVenteSansFacture)getTableRow().getItem(); + String IdVenteSansFacture = VenteSansFacture.getCode(); + + VenteSansFactureCltDetailController VenteSansFactureCltDetail = new VenteSansFactureCltDetailController(); + VenteSansFactureCltDetail.Show(); + VenteSansFactureCltDetail.SetIdVenteSansFacture(IdVenteSansFacture); + } + }); + } + //Display button if the row is not empty + @Override + protected void updateItem(Boolean t, boolean empty) { + if(!empty){ + ListeVenteSansFacture ListVSF = (ListeVenteSansFacture)getTableRow().getItem(); + if(ListVSF.getOperation() != null){ + setGraphic(cellButtonDetail); + }else{ + HBox hbox = new HBox(5); // spacing = 8 + hbox.getChildren().addAll(cellButtonSupprimer, cellButtonDetail); + setGraphic(hbox); + } + } else { + setGraphic(null); + } + } + } + + + + +/****************************************************************************** * + * * + * Methode last Next TableView * + * * * + ******************************************************************************/ + + private void SearchVenteSansFacture() + { + ProgressBarVenteSansFacture.setVisible(true); + + ThreadSearchVenteSansFacture = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + position = 0; + + actuellepage = 1; + + String DateVente = ""; + if(DatePickerDateVente.getValue() != null){ + DateVente = DatePickerDateVente.getValue().toString(); + } + + ObservableList ListVSF = new VenteSansFactureDB().SearchVenteSansFactureGestion( + position, + nbrligne, + TextFieldCode.getText(), + TextFieldMontant.getText(), + DateVente + ); + + TableViewVenteSansFacture.setItems(ListVSF); + + totalcount = new VenteSansFactureDB().nbrVenteSansFactureGestion(TextFieldCode.getText(), TextFieldMontant.getText(), DateVente); + + if(totalcount > 0){ + ActuellePage.setText("1"); + }else{ + ActuellePage.setText("0"); + } + + if(totalcount % nbrligne==0){ + nbrpage = totalcount / nbrligne ; + } + else{ + nbrpage = (totalcount / nbrligne) + 1 ; + } + NbrPage.setText(Integer.toString(nbrpage)); + + return null; + } + }; + } + }; + + ThreadSearchVenteSansFacture.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarVenteSansFacture.setVisible(false); + LabelCount.setText(totalcount.toString()); + + } + }); + ThreadSearchVenteSansFacture.start(); + } + + + private void NextLastSearchVenteSansFacture(Integer ParmPosition, Integer ParamNbrligne) + { + ProgressBarVenteSansFacture.setVisible(true); + + ThreadSearchVenteSansFacture = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + + String DateVente = ""; + if(DatePickerDateVente.getValue() != null){ + DateVente = DatePickerDateVente.getValue().toString(); + } + + ObservableList ListVenteSansFacture = new VenteSansFactureDB().SearchVenteSansFactureGestion(ParmPosition, ParamNbrligne, TextFieldCode.getText(), TextFieldMontant.getText(), DateVente); + + TableViewVenteSansFacture.setItems(ListVenteSansFacture); + + return null; + } + }; + } + }; + + ThreadSearchVenteSansFacture.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + ProgressBarVenteSansFacture.setVisible(false); + } + }); + ThreadSearchVenteSansFacture.start(); + } + + private void GestionSearchVenteSansFacture() + { + NbrLigne.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { + + public void changed(ObservableValue ov, Number value, Number new_value) { + nbrligne= Integer.parseInt((String) cursors.get(new_value.intValue())); + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + position=0; + ActuellePage.setText("1"); + actuellepage=1; + NextLastSearchVenteSansFacture(position, nbrligne); + } + }); + + if(totalcount % nbrligne==0){ nbrpage = totalcount / nbrligne ;} + else{ nbrpage = (totalcount / nbrligne) + 1 ; } + NbrPage.setText(Integer.toString(nbrpage)); + + + //next page + nextgroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage>1) + { + position=position-nbrligne; + NextLastSearchVenteSansFacture(position, nbrligne); + actuellepage=actuellepage-1 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + //next page avec pas de 5 + avancergroupe.setOnMousePressed(new EventHandler(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage+3(){ + @Override + public void handle(MouseEvent event) { + if(actuellepage-3>1){ + position=(position-4)-nbrligne; + NextLastSearchVenteSansFacture(position, nbrligne); + actuellepage=actuellepage-3 ; + ActuellePage.setText(Integer.toString(actuellepage)); + } + } + }); + + } + + + + +} diff --git a/src/main/java/Controllers/VenteRapideClt/VenteSansFactureCltDetailController.java b/src/main/java/Controllers/VenteRapideClt/VenteSansFactureCltDetailController.java new file mode 100644 index 0000000..b0c3dfc --- /dev/null +++ b/src/main/java/Controllers/VenteRapideClt/VenteSansFactureCltDetailController.java @@ -0,0 +1,219 @@ +package Controllers.VenteRapideClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.MyWindow; +import Models.Produit.ListeProduit; +import Models.User.Profile; +import Models.User.ProfileDB; +import Models.VenteRapideClt.VenteSansFacture; +import Models.VenteRapideClt.VenteSansFactureDB; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.ObservableList; +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.concurrent.WorkerStateEvent; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.ProgressIndicator; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.control.cell.TextFieldTableCell; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class VenteSansFactureCltDetailController{ + + @FXML private TableView TableViewListeProduit ; + @FXML private TableColumn TabColReference; + @FXML private TableColumn TabColDesignation; + @FXML private TableColumn TabColQuantite ; + @FXML private TableColumn TabColPrixHT; + @FXML private TableColumn TabColRemise; + @FXML private TableColumn TabColTotalHT; + @FXML private TableColumn TabColTVA; + @FXML private TableColumn TabColTotalTTC; + + @FXML public AnchorPane AnchorPrincipal ; + @FXML public AnchorPane AnchorSecondaire ; + @FXML private ProgressIndicator ProgressVenteSansFact ; + + @FXML public Text TextIdVenteSansFacture; + + @FXML private Text TextVenteAnnuler; + + @FXML private Text TextLocale; + @FXML private Text TextNomPrenomProfile; + @FXML private Text TextDateCreation; + @FXML private Text TextClient; + + @FXML private Text TextTypePaiement; + @FXML private Text TextMontant; + + @FXML private GridPane GridPaneCheque; + @FXML private Text TextNumeroCheque; + @FXML private Text TextNomBanqueCheque ; + @FXML private Text TextDateCheque; + @FXML private Text TextNomComplet; + + @FXML private GridPane GridPaneCarte; + @FXML private Text TextNumeroTransationCarte; + @FXML private Text TextNomBanqueCarte; + @FXML private Text TextNumeroCarte; + + private Service ThreadVenteSansFact; + public Node nodeFxml; + public String IdVenteSansFacture; + + VenteSansFacture VenteSansFact = new VenteSansFacture(); + Profile profile = new Profile(); + + public VenteSansFactureCltDetailController(){ + try { + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/Views/VenteRapideClt/VenteSansFactureCltDetail.fxml")); + fxmlLoader.setController(this); + nodeFxml = (Node) fxmlLoader.load(); + } catch (IOException ex) { + Logger.getLogger(VenteSansFactureCltDetailController.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void SetIdVenteSansFacture(String id_bon_livraison){ + IdVenteSansFacture = id_bon_livraison; + + TableViewListeProduit.setEditable(true); + TabColReference.setCellValueFactory(new PropertyValueFactory("reference")); + TabColDesignation.setCellValueFactory(new PropertyValueFactory("designation")); + + TabColQuantite.setCellValueFactory(new PropertyValueFactory("quantite")); + TabColQuantite.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColQuantite.getStyleClass().add("Center"); + + TabColPrixHT.setCellValueFactory(new PropertyValueFactory("PrixHT")); + TabColPrixHT.setStyle( "-fx-alignment: CENTER;"); + TabColPrixHT.getStyleClass().add("Center"); + + TabColRemise.setCellValueFactory(new PropertyValueFactory("Remise")); + TabColRemise.setStyle( "-fx-alignment: CENTER;"); + TabColRemise.getStyleClass().add("Center"); + + TabColTotalHT.setCellValueFactory(new PropertyValueFactory("TotalHT")); + TabColTotalHT.setStyle( "-fx-alignment: CENTER;"); + TabColTotalHT.getStyleClass().add("Center"); + + TabColTVA.setCellValueFactory(new PropertyValueFactory("TVA")); + TabColTVA.setStyle( "-fx-alignment: CENTER;"); + TabColTVA.getStyleClass().add("Center"); + + TabColTotalTTC.setCellValueFactory(new PropertyValueFactory("TotalTTC")); + TabColTotalTTC.setStyle( "-fx-alignment: CENTER; -fx-font-weight:bold; -fx-font-size: 10pt;"); + TabColTotalTTC.getStyleClass().add("Center"); + + TabColReference.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColQuantite.setCellFactory(TextFieldTableCell.forTableColumn()); + TabColRemise.setCellFactory(TextFieldTableCell.forTableColumn()); + + LanchVenteSansFact(); + } + + public void LanchVenteSansFact(){ + ThreadVenteSansFact = new Service(){ + @Override + protected Task createTask(){ + return new Task(){ + @Override + protected Void call() throws Exception{ + VenteSansFact = new VenteSansFactureDB().getVenteSansFacture(IdVenteSansFacture); + profile = new ProfileDB().getpro(VenteSansFact.getIdProfile()); + return null; + } + }; + } + }; + ThreadVenteSansFact.setOnSucceeded(new EventHandler(){ + @Override + public void handle(WorkerStateEvent event){ + TextIdVenteSansFacture.setText(VenteSansFact.getIdVenteSansFacture()); + + // 0:espèce | 1:chèque | 2:Carte bancaire + if(VenteSansFact.getPaiement().equals("0")){ + TextTypePaiement.setText("Espèce") ; + GridPaneCheque.setVisible(false); + GridPaneCarte.setVisible(false); + }else if(VenteSansFact.getPaiement().equals("1")){ + TextTypePaiement.setText("Chèque"); + GridPaneCheque.setVisible(true); + GridPaneCarte.setVisible(false); + TextNumeroCheque.setText(VenteSansFact.getCheque().getNumeroChequeClt()); + TextNomBanqueCheque.setText(VenteSansFact.getCheque().getBanqueChequeClt()); + TextDateCheque.setText(Adaptateur.NormalDateFormat(VenteSansFact.getCheque().getDatePaiement())); + TextNomComplet.setText(VenteSansFact.getCheque().getNomCompletChequeClt()); + }else if(VenteSansFact.getPaiement().equals("2")){ + TextTypePaiement.setText("Carte bancaire"); + TextNumeroTransationCarte.setText(VenteSansFact.getCarteBancaire().getNumeroTransation()); + TextNomBanqueCarte.setText(VenteSansFact.getCarteBancaire().getNomBanque()); + TextNumeroCarte.setText(VenteSansFact.getCarteBancaire().getNumeroCarte()); + GridPaneCheque.setVisible(false); + GridPaneCarte.setVisible(true); + } + + if(VenteSansFact.getOperation() != null){ + TextVenteAnnuler.setText("Vente Annuler Le: "+Adaptateur.NormalDateTimeFormat(VenteSansFact.getDateOperation())); + } + + TextLocale.setText(VenteSansFact.getLocalNom()); + TextNomPrenomProfile.setText(profile.getNom()+" "+profile.getPrenom()) ; + + TextDateCreation.setText(VenteSansFact.getDateVente()); + + TextClient.setText(VenteSansFact.getNomPrenomClient()); + + TextMontant.setText(Adaptateur.StringToStringEspaceCurrency(VenteSansFact.getMontant())); + + ObservableList DataListeProduit = VenteSansFact.getListProduit(); + TableViewListeProduit.setItems(DataListeProduit); + + ProgressVenteSansFact.setVisible(false); + AnchorSecondaire.setVisible(true); + } + }); + ThreadVenteSansFact.start(); + } + + + + public void Show() + { + StackPane Sp = new StackPane(); + + Scene scene = new Scene(Sp); + + Sp.setPrefSize((double)MyWindow.PrincipalContentWidth, (double)MyWindow.PrincipalContentHeight); + + Sp.getChildren().add(MyWindow.myParent); + Sp.getChildren().add(nodeFxml); + + Stage stage = MyWindow.myStage; + stage.setScene(scene); + stage.show(); + } + + @FXML + private void ExitButtonAction(ActionEvent event) throws IOException { + AnchorPrincipal.setVisible(false); + } + +} diff --git a/src/main/java/Models/BonLivraisonClt/BonLivraisonClt.java b/src/main/java/Models/BonLivraisonClt/BonLivraisonClt.java new file mode 100644 index 0000000..155df44 --- /dev/null +++ b/src/main/java/Models/BonLivraisonClt/BonLivraisonClt.java @@ -0,0 +1,240 @@ +/* + * 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.BonLivraisonClt; + +import Models.Produit.ListeProduit; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import javafx.collections.ObservableList; + +/** + * + * @author maher + */ +public class BonLivraisonClt { + + public String IdBonLivrasionClt; + public String HeurLivraison; + public String DateLivraisonPreveu; + public String AdresseLivraison; + public String IdCommande; + public String IdProfileEditeur; + public String Transporteur; + public String Frais; + public String PoidProduit; + public String DateCreation; + public String LocalNom; + public String Tele1; + public String Tele2; + + public Integer TypeClient; //0 Personne 1 Entreprise 2 Passager + public Client CltPersonne ; + public ClientEntreprise CltEntreprise ; + public ClientPassager CltPassager ; + + public String Devise; + public String TotalHorsTaxNet; + public String TotalTVA; + public String Remise; + public String NetAPayer; + + public ObservableList listeproduit ; + + public String getIdBonLivrasionClt() { + return IdBonLivrasionClt; + } + + public void setIdBonLivrasionClt(String IdBonLivrasionClt) { + this.IdBonLivrasionClt = IdBonLivrasionClt; + } + + public String getHeurLivraison() { + return HeurLivraison; + } + + public void setHeurLivraison(String HeurLivraison) { + this.HeurLivraison = HeurLivraison; + } + + public String getDateLivraisonPreveu() { + return DateLivraisonPreveu; + } + + public void setDateLivraisonPreveu(String DateLivraisonPreveu) { + this.DateLivraisonPreveu = DateLivraisonPreveu; + } + + public String getAdresseLivraison() { + return AdresseLivraison; + } + + public void setAdresseLivraison(String AdresseLivraison) { + this.AdresseLivraison = AdresseLivraison; + } + + public String getIdCommande() { + return IdCommande; + } + + public void setIdCommande(String IdCommande) { + this.IdCommande = IdCommande; + } + + public String getIdProfileEditeur() { + return IdProfileEditeur; + } + + public void setIdProfileEditeur(String IdProfileEditeur) { + this.IdProfileEditeur = IdProfileEditeur; + } + + public String getTransporteur() { + return Transporteur; + } + + public void setTransporteur(String Transporteur) { + this.Transporteur = Transporteur; + } + + public String getFrais() { + return Frais; + } + + public void setFrais(String Frais) { + this.Frais = Frais; + } + + + + public String getPoidProduit() { + return PoidProduit; + } + + public void setPoidProduit(String PoidProduit) { + this.PoidProduit = PoidProduit; + } + + + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public Client getCltPersonne() { + return CltPersonne; + } + + public void setCltPersonne(Client CltPersonne) { + this.CltPersonne = CltPersonne; + } + + public ClientEntreprise getCltEntreprise() { + return CltEntreprise; + } + + public void setCltEntreprise(ClientEntreprise CltEntreprise) { + this.CltEntreprise = CltEntreprise; + } + + public ClientPassager getCltPassager() { + return CltPassager; + } + + public void setCltPassager(ClientPassager CltPassager) { + this.CltPassager = CltPassager; + } + + public ObservableList getListeproduit() { + return listeproduit; + } + + public void setListeproduit(ObservableList listeproduit) { + this.listeproduit = listeproduit; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + public String getTele1() { + return Tele1; + } + + public void setTele1(String Tele1) { + this.Tele1 = Tele1; + } + + public String getTele2() { + return Tele2; + } + + public void setTele2(String Tele2) { + this.Tele2 = Tele2; + } + + public Integer getTypeClient() { + return TypeClient; + } + + public void setTypeClient(Integer TypeClient) { + this.TypeClient = TypeClient; + } + + public String getDevise() { + return Devise; + } + + public void setDevise(String Devise) { + this.Devise = Devise; + } + + public String getTotalHorsTaxNet() { + return TotalHorsTaxNet; + } + + public void setTotalHorsTaxNet(String TotalHorsTaxNet) { + this.TotalHorsTaxNet = TotalHorsTaxNet; + } + + public String getTotalTVA() { + return TotalTVA; + } + + public void setTotalTVA(String TotalTVA) { + this.TotalTVA = TotalTVA; + } + + public String getRemise() { + return Remise; + } + + public void setRemise(String Remise) { + this.Remise = Remise; + } + + public String getNetAPayer() { + return NetAPayer; + } + + public void setNetAPayer(String NetAPayer) { + this.NetAPayer = NetAPayer; + } + + + + + + +} diff --git a/src/main/java/Models/BonLivraisonClt/BonLivraisonCltDB.java b/src/main/java/Models/BonLivraisonClt/BonLivraisonCltDB.java new file mode 100644 index 0000000..7b60272 --- /dev/null +++ b/src/main/java/Models/BonLivraisonClt/BonLivraisonCltDB.java @@ -0,0 +1,417 @@ +/* + * 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.BonLivraisonClt; + +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.Stock.StockDetail; +import Models.Stock.StockDetailDB; +import Models.User.User; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author maher + */ +public class BonLivraisonCltDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public BonLivraisonClt GetBonLivraisonClt(String id_bon_livraison){ + BonLivraisonClt BonLivraison = new BonLivraisonClt(); + + String req = "SELECT *, DATE_FORMAT(date_livraison_prevu, '%d/%m/%Y') as date_livraison, DATE_FORMAT(date_creation, '%d/%m/%Y') as creation FROM bon_livraisonclt WHERE (idbon_livraisonclt = "+id_bon_livraison+") 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){ + BonLivraison.setIdBonLivrasionClt(resultat.getString("idbon_livraisonclt")); + BonLivraison.setIdCommande(resultat.getString("id_commandeclt")); + BonLivraison.setHeurLivraison(resultat.getString("heur_livraison")); + BonLivraison.setDateLivraisonPreveu(resultat.getString("date_livraison")); + BonLivraison.setAdresseLivraison(resultat.getString("adresse_livraison")); + BonLivraison.setTransporteur(resultat.getString("transporteur")); + BonLivraison.setFrais(resultat.getString("frais")); + BonLivraison.setPoidProduit(resultat.getString("Poids_ produits")); + BonLivraison.setTele1(resultat.getString("tele1")); + BonLivraison.setTele2(resultat.getString("tele2")); + BonLivraison.setDevise(resultat.getString("devise")); + BonLivraison.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + BonLivraison.setTotalTVA(resultat.getString("total_tva")); + BonLivraison.setRemise(resultat.getString("remise")); + BonLivraison.setNetAPayer(resultat.getString("net_a_payer")); + BonLivraison.setIdProfileEditeur(resultat.getString("idprofile_editeur")); + BonLivraison.setDateCreation(resultat.getString("creation")); + BonLivraison.setLocalNom(resultat.getString("local_nom")); + + BonLivraison.setTypeClient(resultat.getInt("type_client")); + + if(BonLivraison.getTypeClient()==0){ + + cnx.ouverture(); + String Codeclient = resultat.getString("id_clt_existe"); + String reqclt = "SELECT * FROM `client` WHERE (`codeclient` = '"+Codeclient+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"') ; "; + + ResultSet resuclt = cnx.excutionquery(reqclt); + resuclt.last(); + Client CltPersonne = new Client(); + CltPersonne.setCodeclientString(resuclt.getString("codeclient")); + CltPersonne.setNom(resuclt.getString("nom")); + CltPersonne.setPrenom(resuclt.getString("prenom")); + CltPersonne.setAdresse(resuclt.getString("adresse")); + CltPersonne.setTelefixString(resuclt.getString("telefix")); + CltPersonne.setTelemobileString(resuclt.getString("telemobile")); + BonLivraison.setCltPersonne(CltPersonne); + } + + if(BonLivraison.getTypeClient()==1){ + cnx.ouverture(); + String Codeclient = resultat.getString("id_clt_entreprise"); + String reqclt = "SELECT * FROM `cltentreprise` WHERE (`idcliententreprise` = '"+Codeclient+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"') ; "; + ResultSet resucltetr = cnx.excutionquery(reqclt); + resucltetr.last(); + ClientEntreprise CltEntreprise = new ClientEntreprise(); + CltEntreprise.setCodeString(resucltetr.getString("idcliententreprise")); + CltEntreprise.setNom(resucltetr.getString("nomentrepise")); + CltEntreprise.setMatricule(resucltetr.getString("matricule_fiscale")); + CltEntreprise.setAdresse(resucltetr.getString("adresse")); + CltEntreprise.setTele1String(resucltetr.getString("telefix")); + CltEntreprise.setTele2String(resucltetr.getString("telefix2")); + BonLivraison.setCltEntreprise(CltEntreprise); + } + + if(BonLivraison.getTypeClient()==2){ + cnx.ouverture(); + String Codeclient = resultat.getString("id_clt_passageur"); + String reqclt = "SELECT * FROM `cltpassageur` WHERE (`idcltpassageur` = '"+Codeclient+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"') ; "; + ResultSet resucltpa = cnx.excutionquery(reqclt); + resucltpa.last(); + ClientPassager CltPassager = new ClientPassager(); + CltPassager.setCodeclient(resucltpa.getString("idcltpassageur")); + CltPassager.setNom(resucltpa.getString("nom")); + CltPassager.setPrenom(resucltpa.getString("prenom")); + CltPassager.setAdresse(resucltpa.getString("adresse")); + CltPassager.setTelemobileString(resucltpa.getString("tele")); + CltPassager.setTelefixString(resucltpa.getString("gsm")); + BonLivraison.setCltPassager(CltPassager); + } + + + cnx.ouverture(); + String reqprod = "SELECT * FROM liste_prod_livraison WHERE (id_bon_livraison_clt = "+id_bon_livraison+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resulist = cnx.excutionquery(reqprod); + //on repace le curseur avant la première ligne + resulist.beforeFirst(); + ObservableList 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)); + } + BonLivraison.setListeproduit(dataProdDev); + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return BonLivraison; + } + + + + + + + + + public String AddBonLivraisonClt(BonLivraisonClt bon_livraison){ + contro clt = new contro(); + + String netapayer = bon_livraison.getNetAPayer().replace(",", "."); + String totalhorstaxnet =bon_livraison.getTotalHorsTaxNet().replace(",", "."); + String totaltva = bon_livraison.getTotalTVA().replace(",", "."); + String TotalRemise = bon_livraison.getRemise().replace(",", "."); + + Integer TypeClient = bon_livraison.getTypeClient(); + String CodeClientPersonne = "NULL"; String CodeClientEntreprise = "NULL"; String CodePassager = "NULL"; + if(TypeClient == 0){ + CodeClientPersonne = bon_livraison.CltPersonne.getCodeclient().toString(); + }else if(TypeClient == 1 ){ + CodeClientEntreprise = bon_livraison.CltEntreprise.getCode().toString(); + }else if(TypeClient == 2){ + CodePassager = bon_livraison.CltPassager.getCodeclient().toString(); + } + + String HeurLivraison = "'"+bon_livraison.getHeurLivraison()+"'"; + if(clt.isStringNull(bon_livraison.getHeurLivraison())){ + HeurLivraison = "NULL"; + } + + String DateLivraison = "'"+bon_livraison.getDateLivraisonPreveu()+"'"; + if(clt.isStringNull(bon_livraison.getDateLivraisonPreveu())){ + DateLivraison = "NULL"; + } + + String PoidsProduits = bon_livraison.getPoidProduit(); + if(clt.isStringNull(bon_livraison.getPoidProduit())){ + PoidsProduits = "NULL"; + } + + String Transporteur = "'"+bon_livraison.getTransporteur()+"'"; + if(clt.isStringNull(bon_livraison.getTransporteur())){ + Transporteur = "NULL"; + } + + String Frais = "'"+bon_livraison.getFrais()+"'"; + if(clt.isStringNull(bon_livraison.getFrais())){ + Frais = "NULL"; + } + + String sql = "INSERT INTO bon_livraisonclt (`type_client`, `id_clt_entreprise`, `id_clt_passageur`, `id_clt_existe`, `heur_livraison`, `date_livraison_prevu`, `adresse_livraison`, `transporteur`, `frais`, `Poids_ produits`, `tele1`, `tele2`, `devise`, `total_h_t_net`, `total_tva`, `remise`, `net_a_payer`, `id_commandeclt`, `idprofile_editeur`, `date_creation`, `local_nom`) VALUES ("+TypeClient+", "+CodeClientEntreprise+", "+CodePassager+", "+CodeClientPersonne+", "+HeurLivraison+", "+DateLivraison+", \""+bon_livraison.getAdresseLivraison()+"\", "+Transporteur+", "+Frais+", "+PoidsProduits+", '"+bon_livraison.getTele1()+"', '"+bon_livraison.getTele2()+"', '"+ParametreSystem.CurrencySign+"', '"+totalhorstaxnet+"', '"+totaltva+"', '"+TotalRemise+"', '"+netapayer+"', '"+bon_livraison.getIdCommande()+"', '"+User.idprofile+"', CURTIME(), '"+ParametreSystem.NomLocalPC+"');"; + + String CodeBonLivraison = cnx.InsertGetLastId(sql); + + ObservableList ListStockDetail=FXCollections.observableArrayList(); + + String PrixHT ; String Remise ; String TotalHT ; String TVA ; String TotalTTC ; + for(ListeProduit listeprod : bon_livraison.getListeproduit()){ + PrixHT = listeprod.getPrixHT().replace(",","."); + Remise= listeprod.getRemise().replace("%","").replace(",","."); + TotalHT= listeprod.getTotalHT().replace(",","."); + TVA=listeprod.getTVA().replace("%","").replace(",","."); + TotalTTC= listeprod.getTotalTTC().replace(",","."); + + String Query = "INSERT INTO liste_prod_livraison (`id_bon_livraison_clt`, `produit_reference`, `designation_produit`, `quantite`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`, `local_nom`) VALUES ('"+CodeBonLivraison+"', '"+listeprod.getReference()+"', \""+listeprod.getDesignation()+"\", "+listeprod.getQuantite()+", "+PrixHT+", '"+Remise+"', '"+TotalHT+"', '"+TVA+"', '"+TotalTTC+"', '"+ParametreSystem.NomLocalPC+"');"; + if(cnx.insertion(Query)){ + ListStockDetail.add(new StockDetail(listeprod.getReference(), Adaptateur.StringToFloat(listeprod.getQuantite())* -1, null, null, CodeBonLivraison, null, null, null)); + } + } + new StockDetailDB().InsertStockDetail(ListStockDetail); + + return CodeBonLivraison; + } + + public ObservableList GetListBonLivraisonCltSotck(ObservableList DataListeproduit){ + + Integer indice = 0; + + String StringReference = ""; + while(indice BonLivraisonCltProduit = FXCollections.observableArrayList(); + + String Query = "SELECT P.reference, P.marque, P.nomcategorie_cate, S.local_nom, S.quantite FROM produit P LEFT JOIN stock S ON (P.reference = S.produit_reference) AND (local_nom LIKE '"+ParametreSystem.NomLocalPC+"') WHERE P.reference IN ("+StringReference+"); "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + resultat.beforeFirst(); + + while ( resultat.next() ) { + String Reference = resultat.getString("reference"); + String Marque = resultat.getString("marque"); + String Category =resultat.getString("nomcategorie_cate"); + String QuantiteStock =resultat.getString("quantite"); + Float quantite_stock =resultat.getFloat("quantite"); + + boolean search = true; + indice = 0; + while( (indice quantite_stock){ + ProdDisponible = "0"; + } + BonLivraisonCltProduit.add(new BonLivraisonCltProduitList(DataListeproduit.get(indice).getReference(), DataListeproduit.get(indice).getDesignation(), Marque, Category, ProdDisponible, DataListeproduit.get(indice).getQuantite(), QuantiteStock, DataListeproduit.get(indice).getTotalHT())); + search = false; + } + indice ++; + } + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + + return BonLivraisonCltProduit; + } + + /********************************** Search *******************************/ + + public ObservableList SearchBonLivraisonCltGestion(Integer debut, Integer nbr, String IdBonLivrasionClt, String DateLivraison, String CodeClient, String IdFactureClt, String Transporteur, String AdresseLivraison) + { + ObservableList data = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(IdBonLivrasionClt)){ + Where += " (bl_clt.idbon_livraisonclt LIKE \"%"+Adaptateur.addSlashes(IdBonLivrasionClt)+"%\") AND "; + } + + if(!clt.isStringNull(DateLivraison)){ + Where += " (bl_clt.date_livraison_prevu LIKE \""+DateLivraison+"\") AND "; + } + + if(!clt.isStringNull(CodeClient)){ + Where += " ( (bl_clt.id_clt_existe = \""+CodeClient+"\") OR (bl_clt.id_clt_entreprise = \""+CodeClient+"\") OR (bl_clt.id_clt_passageur = \""+CodeClient+"\") ) AND "; + } + + + if(!clt.isStringNull(IdFactureClt)){ + Where += " (f_clt.idfactureclt LIKE \"%"+Adaptateur.addSlashes(IdFactureClt)+"%\") AND "; + } + + if(!clt.isStringNull(Transporteur)){ + Where += " (bl_clt.transporteur LIKE \"%"+Adaptateur.addSlashes(Transporteur)+"%\") AND "; + } + + if(!clt.isStringNull(AdresseLivraison)){ + Where += " (bl_clt.adresse_livraison LIKE \"%"+Adaptateur.addSlashes(AdresseLivraison)+"%\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req="SELECT "+ + "bl_clt.idbon_livraisonclt, "+ + "DATE_FORMAT(bl_clt.heur_livraison, '%H:%i') AS heur_livraison, "+ + "DATE_FORMAT(bl_clt.date_livraison_prevu, '%d/%m/%Y') AS date_livraison_prevu, "+ + "bl_clt.adresse_livraison, "+ + "bl_clt.transporteur, "+ + "bl_clt.id_commandeclt AS IdCommandeClt, "+ + "f_clt.idfactureclt AS IdFactureClt, "+ + "IF(bl_clt.id_clt_entreprise IS NOT NULL, "+ + "bl_clt.id_clt_entreprise, "+ + "IF(bl_clt.id_clt_existe IS NOT NULL, "+ + "bl_clt.id_clt_existe, "+ + "IF(bl_clt.id_clt_passageur, "+ + "bl_clt.id_clt_passageur, "+ + "NULL))) AS CodeClt "+ + " FROM `bon_livraisonclt` bl_clt "+ + " LEFT JOIN factureclt f_clt ON f_clt.id_bon_livraisonclt = bl_clt.idbon_livraisonclt "+ + Where + + " ORDER BY bl_clt.date_creation 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() ) { + + data.add(new BonLivraisonCltGestionList( + resultat.getString("idbon_livraisonclt"), + resultat.getString("date_livraison_prevu")+" "+resultat.getString("heur_livraison"), + resultat.getString("adresse_livraison"), + resultat.getString("CodeClt"), + resultat.getString("IdFactureClt"), + resultat.getString("transporteur") + )); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + + return data ; + } + + + public Integer nbrSearchBonLivraisonCltGestion(String IdBonLivrasionClt, String DateLivraison, String CodeClient, String IdFactureClt, String Transporteur, String AdresseLivraison) + { + String Where = ""; + + if(!clt.isStringNull(IdBonLivrasionClt)){ + Where += " (bl_clt.idbon_livraisonclt LIKE \"%"+Adaptateur.addSlashes(IdBonLivrasionClt)+"%\") AND "; + } + + if(!clt.isStringNull(DateLivraison)){ + Where += " (bl_clt.date_livraison_prevu LIKE \""+DateLivraison+"\") AND "; + } + + if(!clt.isStringNull(CodeClient)){ + Where += " ( (bl_clt.id_clt_existe = \""+CodeClient+"\") OR (bl_clt.id_clt_entreprise = \""+CodeClient+"\") OR (bl_clt.id_clt_passageur = \""+CodeClient+"\") ) AND "; + } + + + if(!clt.isStringNull(IdFactureClt)){ + Where += " (f_clt.idfactureclt LIKE \"%"+Adaptateur.addSlashes(IdFactureClt)+"%\") AND "; + } + + if(!clt.isStringNull(Transporteur)){ + Where += " (bl_clt.transporteur LIKE \"%"+Adaptateur.addSlashes(Transporteur)+"%\") AND "; + } + + if(!clt.isStringNull(AdresseLivraison)){ + Where += " (bl_clt.adresse_livraison LIKE \"%"+Adaptateur.addSlashes(AdresseLivraison)+"%\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req=" SELECT COUNT(bl_clt.idbon_livraisonclt) "+ + " FROM `bon_livraisonclt` bl_clt "+ + " LEFT JOIN factureclt f_clt ON f_clt.id_bon_livraisonclt = bl_clt.idbon_livraisonclt "+ + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } +} diff --git a/src/main/java/Models/BonLivraisonClt/BonLivraisonCltGestionList.java b/src/main/java/Models/BonLivraisonClt/BonLivraisonCltGestionList.java new file mode 100644 index 0000000..36f90dd --- /dev/null +++ b/src/main/java/Models/BonLivraisonClt/BonLivraisonCltGestionList.java @@ -0,0 +1,53 @@ +package Models.BonLivraisonClt; + +import javafx.beans.property.SimpleStringProperty; + +/** + * @author maher + */ +public class BonLivraisonCltGestionList { + + private final SimpleStringProperty IdBonLivrasionClt; + private final SimpleStringProperty DateHeurLivraison; + private final SimpleStringProperty AdresseLivraison; + private final SimpleStringProperty CodeClt; + private final SimpleStringProperty IdFactureClt; + private final SimpleStringProperty Transporteur; + + + + public BonLivraisonCltGestionList(String IdBonLivrasionClt, String DateHeurLivraison, String AdresseLivraison, String CodeClt, String IdFactureClt, String Transporteur) { + this.IdBonLivrasionClt = new SimpleStringProperty(IdBonLivrasionClt); + this.DateHeurLivraison = new SimpleStringProperty(DateHeurLivraison); + this.AdresseLivraison = new SimpleStringProperty(AdresseLivraison); + this.CodeClt = new SimpleStringProperty(CodeClt); + this.IdFactureClt = new SimpleStringProperty(IdFactureClt); + this.Transporteur = new SimpleStringProperty(Transporteur); + } + + + public String getIdBonLivrasionClt() { + return IdBonLivrasionClt.get(); + } + + public String getDateHeurLivraison() { + return DateHeurLivraison.get(); + } + + public String getCodeClt() { + return CodeClt.get(); + } + + public String getIdFactureClt() { + return IdFactureClt.get(); + } + + public String getAdresseLivraison() { + return AdresseLivraison.get(); + } + + public String getTransporteur() { + return Transporteur.get(); + } + +} diff --git a/src/main/java/Models/BonLivraisonClt/BonLivraisonCltProduitList.java b/src/main/java/Models/BonLivraisonClt/BonLivraisonCltProduitList.java new file mode 100644 index 0000000..ec3d60d --- /dev/null +++ b/src/main/java/Models/BonLivraisonClt/BonLivraisonCltProduitList.java @@ -0,0 +1,67 @@ +/* + * 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.BonLivraisonClt; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class BonLivraisonCltProduitList { + + private final SimpleStringProperty Reference; + private final SimpleStringProperty Designation; + private final SimpleStringProperty Marque; + private final SimpleStringProperty Categorie; + private final SimpleStringProperty ProdDisponible; + private final SimpleStringProperty QuantiteProd; + private final SimpleStringProperty QuantiteStock; + private final SimpleStringProperty PrixTTC; + + public BonLivraisonCltProduitList(String reference, String designation, String marque, String categorie, String prod_disp, String quantite_prod, String quantite_stock, String prix_ttc) { + this.Reference = new SimpleStringProperty(reference); + this.Designation = new SimpleStringProperty(designation); + this.Marque = new SimpleStringProperty(marque); + this.Categorie = new SimpleStringProperty(categorie); + this.ProdDisponible = new SimpleStringProperty(prod_disp); + this.QuantiteProd = new SimpleStringProperty(quantite_prod); + this.QuantiteStock = new SimpleStringProperty(quantite_stock); + this.PrixTTC = new SimpleStringProperty(prix_ttc); + } + + public String getReference() { + return Reference.get(); + } + + public String getDesignation() { + return Designation.get(); + } + + public String getMarque() { + return Marque.get(); + } + + public String getCategorie() { + return Categorie.get(); + } + + public String getProdDisponible() { + return ProdDisponible.get(); + } + + public String getQuantiteProd() { + return QuantiteProd.get(); + } + + public String getQuantiteStock() { + return QuantiteStock.get(); + } + + public String getPrixTTC() { + return PrixTTC.get(); + } +} diff --git a/src/main/java/Models/BonReceptionFrs/BonReceptionDB.java b/src/main/java/Models/BonReceptionFrs/BonReceptionDB.java new file mode 100644 index 0000000..b8bdff5 --- /dev/null +++ b/src/main/java/Models/BonReceptionFrs/BonReceptionDB.java @@ -0,0 +1,238 @@ +/* + * 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.BonReceptionFrs; + +import Controllers.Traitement.Adaptateur; +import static Controllers.Traitement.Adaptateur.StringToFloat; +import Models.Fournisseur.Fournisseur; +import Models.Fournisseur.FournisseurDB; +import Models.Stock.StockDetail; +import Models.Stock.StockDetailDB; +import Models.User.Profile; +import Models.User.ProfileDB; +import Models.User.User; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class BonReceptionDB { + + connexion cnx = new connexion(); + + + + public BonReceptionFrs setBonReceptionFrsDB(BonReceptionFrs BonReception){ + + String Fournisseur = BonReception.getFournisseur().getCode(); + String Numero = BonReception.getNumero(); + String Transporteur = "NULL"; + if(BonReception.getTransporteur() != ""){ + Transporteur = "'"+BonReception.getTransporteur()+"'"; + } + String NetPayer = BonReception.getNetPayer().replace(",", "."); + + String Heur = BonReception.getHeur(); + String Date = BonReception.getDate(); + String Local = BonReception.getLocal(); + String IdFactureFrs = "NULL"; + if(BonReception.getIdFactureFrs() != ""){ + IdFactureFrs = BonReception.getIdFactureFrs(); + } + String PoidsProduits = "NULL"; + if(BonReception.getPoidsProduits()!= ""){ + PoidsProduits = BonReception.getPoidsProduits(); + } + ObservableList ListProduit = BonReception.getListProduit(); + + String Query = "INSERT INTO `bonreception_frs` (`numero`, `date_reception`, `transporteur`, `net_a_payer`, `id_fournisseur`, `local_reception`, `id_profile`, `id_facture_frs`) VALUES ('"+Numero+"', '"+Date+" "+Heur+"', "+Transporteur+", "+NetPayer+", '"+Fournisseur+"', '"+Local+"', '"+User.idprofile+"', "+IdFactureFrs+")"; + + String IdBonReception = cnx.InsertGetLastId(Query); + BonReception.setIdBonReception(IdBonReception); + + ObservableList ListStockDetail = FXCollections.observableArrayList(); + + String Req = "INSERT INTO `list_prod_reception_frs` (`id_bonreception_frs`, `reference`, `quantite`, `p_u_h_t`, `p_u_h_t_net`, `tva`, `montant`) VALUES "; + for(int i=0; i0){ + BonReception.setIdBonReception(resultat.getString("id_bonreception")); + BonReception.setNumero(resultat.getString("numero")); + BonReception.setDate(resultat.getString("date_recep")); + BonReception.setHeur(resultat.getString("heur_recep")); + BonReception.setTransporteur(resultat.getString("transporteur")); + BonReception.setNetPayer(resultat.getString("net_a_payer").replace(".", ",")); + Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fournisseur")); + BonReception.setFournisseur(Frs); + BonReception.setLocal(resultat.getString("local_reception")); + + Profile profile = new ProfileDB().getpro(resultat.getInt("id_profile")); + BonReception.setProfile(profile); + + BonReception.setListProduit(this.getBonReceptionProduitList(IdBonReception)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.err.println(Query); + } + } + return BonReception ; + } + + + + public ObservableList getBonReceptionProduitList(String IdBonReception) + { + String Query = "SELECT * FROM `list_prod_reception_frs`, `produit` WHERE (`id_bonreception_frs` = "+IdBonReception+") AND (list_prod_reception_frs.reference = produit.reference) ;"; + + ObservableList ObservableListBonReceptionProduit= FXCollections.observableArrayList(); + + if(cnx.ouverture()) + { + try{ + ResultSet ResultListBonRecepProd = cnx.excutionquery(Query); + ResultListBonRecepProd.beforeFirst(); + while (ResultListBonRecepProd.next() ) { + String id_achat = ResultListBonRecepProd.getString("id_achat"); + String id_bon_reception = ResultListBonRecepProd.getString("id_bonreception_frs"); + String designation = ResultListBonRecepProd.getString("designation"); + String reference = ResultListBonRecepProd.getString("reference"); + String quantite = ResultListBonRecepProd.getString("quantite"); + String p_u_h_t = ResultListBonRecepProd.getString("p_u_h_t"); + String p_u_h_t_net = ResultListBonRecepProd.getString("p_u_h_t_net"); + String tva = ResultListBonRecepProd.getString("tva"); + String montant = ResultListBonRecepProd.getString("montant"); + ObservableListBonReceptionProduit.add(new BonReceptionProduitList(id_achat, id_bon_reception, reference, designation, quantite, p_u_h_t, p_u_h_t_net, tva, montant)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.err.println(Query); + } + } + return ObservableListBonReceptionProduit; + } + + + public ObservableList getBonReceptionNotFact(String KeyWordSearch) + { + String query = "SELECT BR.*, DATE_FORMAT(BR.date_reception, '%d/%m/%Y') as date_recep, DATE_FORMAT(BR.date_reception, '%H:%i') as heur_recep, F.nom " + + " FROM bonreception_frs BR, fournisseur F " + + " WHERE (BR.id_fournisseur = F.id_fourisseur) AND (id_facture_frs IS NULL) "+KeyWordSearch+" " + + " ORDER BY BR.id_bonreception DESC;"; + + ObservableList ObservableListBonReception= FXCollections.observableArrayList(); + if(cnx.ouverture()) + { + try{ + ResultSet ResultListBonRecepProd = cnx.excutionquery(query); + ResultListBonRecepProd.beforeFirst(); + while (ResultListBonRecepProd.next() ) { + String id_bon_reception = ResultListBonRecepProd.getString("id_bonreception"); + String numero = ResultListBonRecepProd.getString("numero"); + String date_recep = ResultListBonRecepProd.getString("date_recep"); + String heur_recep = ResultListBonRecepProd.getString("heur_recep"); + String transporteur = ResultListBonRecepProd.getString("transporteur"); + String net_a_payer = ResultListBonRecepProd.getString("net_a_payer"); + String id_frs = ResultListBonRecepProd.getString("id_fournisseur"); + String nom_frs = ResultListBonRecepProd.getString("nom"); + String local_reception = ResultListBonRecepProd.getString("local_reception"); + ObservableListBonReception.add(new BonReceptionList(id_bon_reception, numero, date_recep, heur_recep, transporteur, id_frs+" - "+nom_frs, "", local_reception, net_a_payer)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(query); + } + } + return ObservableListBonReception; + } + + + + public ObservableList getBonReceptionByFact(String IdFacture) + { + ObservableList ObservableListBonReception= FXCollections.observableArrayList(); + + String Query = "SELECT BR.*, DATE_FORMAT(BR.date_reception, '%d/%m/%Y') as date_recep, DATE_FORMAT(BR.date_reception, '%H:%i') as heur_recep, F.nom FROM bonreception_frs BR, fournisseur F WHERE (BR.id_fournisseur = F.id_fourisseur) AND (id_facture_frs = "+IdFacture+") ORDER BY BR.id_bonreception DESC;"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + resultat.beforeFirst(); + while (resultat.next() ) { + + BonReceptionFrs BonReception= new BonReceptionFrs(); + + BonReception.setIdBonReception(resultat.getString("id_bonreception")); + BonReception.setNumero(resultat.getString("numero")); + BonReception.setDate(resultat.getString("date_recep")); + BonReception.setHeur(resultat.getString("heur_recep")); + BonReception.setTransporteur(resultat.getString("transporteur")); + BonReception.setNetPayer(resultat.getString("net_a_payer").replace(".", ",")); + Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fournisseur")); + BonReception.setFournisseur(Frs); + BonReception.setLocal(resultat.getString("local_reception")); + + Profile profile = new ProfileDB().getpro(resultat.getInt("id_profile")); + BonReception.setProfile(profile); + + BonReception.setListProduit(this.getBonReceptionProduitList(resultat.getString("id_bonreception"))); + + + ObservableListBonReception.add(BonReception); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.err.println(Query); + } + } + return ObservableListBonReception; + } + +} diff --git a/src/main/java/Models/BonReceptionFrs/BonReceptionFrs.java b/src/main/java/Models/BonReceptionFrs/BonReceptionFrs.java new file mode 100644 index 0000000..582ac80 --- /dev/null +++ b/src/main/java/Models/BonReceptionFrs/BonReceptionFrs.java @@ -0,0 +1,137 @@ +/* + * 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.BonReceptionFrs; + +import Models.Fournisseur.Fournisseur; +import Models.User.Profile; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class BonReceptionFrs { + + public String IdBonReception; + public Fournisseur Fournisseur; + public String Numero; + public String Transporteur; + public String NetPayer; + public String Heur; + public String Date; + public String Local; + public Profile Profile; + public String IdFactureFrs; + public String PoidsProduits; + + + + public ObservableList ListProduit ; + + public String getIdBonReception() { + return IdBonReception; + } + + public void setIdBonReception(String IdBonReception) { + this.IdBonReception = IdBonReception; + } + + public Fournisseur getFournisseur() { + return Fournisseur; + } + + public void setFournisseur(Fournisseur Fournisseur) { + this.Fournisseur = Fournisseur; + } + + + + public String getNumero() { + return Numero; + } + + public void setNumero(String Numero) { + this.Numero = Numero; + } + + public String getTransporteur() { + return Transporteur; + } + + public void setTransporteur(String Transporteur) { + this.Transporteur = Transporteur; + } + + public String getNetPayer() { + return NetPayer; + } + + public void setNetPayer(String NetPayer) { + this.NetPayer = NetPayer; + } + + + public String getHeur() { + return Heur; + } + + public void setHeur(String Heur) { + this.Heur = Heur; + } + + public String getDate() { + return Date; + } + + public void setDate(String Date) { + this.Date = Date; + } + + public String getLocal() { + return Local; + } + + public void setLocal(String Local) { + this.Local = Local; + } + + public Profile getProfile() { + return Profile; + } + + public void setProfile(Profile Profile) { + this.Profile = Profile; + } + + + + public String getIdFactureFrs() { + return IdFactureFrs; + } + + public void setIdFactureFrs(String IdFactureFrs) { + this.IdFactureFrs = IdFactureFrs; + } + + public String getPoidsProduits() { + return PoidsProduits; + } + + public void setPoidsProduits(String PoidsProduits) { + this.PoidsProduits = PoidsProduits; + } + + + public ObservableList getListProduit() { + return ListProduit; + } + + public void setListProduit(ObservableList ListProduit) { + this.ListProduit = ListProduit; + } + + +} diff --git a/src/main/java/Models/BonReceptionFrs/BonReceptionGestionDB.java b/src/main/java/Models/BonReceptionFrs/BonReceptionGestionDB.java new file mode 100644 index 0000000..241dbc4 --- /dev/null +++ b/src/main/java/Models/BonReceptionFrs/BonReceptionGestionDB.java @@ -0,0 +1,159 @@ +/* + * 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.BonReceptionFrs; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.contro; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class BonReceptionGestionDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + /********************************** Initial *******************************/ + + public ObservableList SearchBonReceptionGestionFrs(Integer debut, Integer nbr, String Numero, String Transporteur, String Facture, String DateReception, String Fournisseur, String LocalReception) + { + ObservableList data=FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(Numero)){ + Where += " (BR.`numero` = \""+Numero+"\") AND "; + } + + if(!clt.isStringNull(Transporteur)){ + Where += " (BR.`transporteur` LIKE \"%"+Adaptateur.addSlashes(Transporteur)+"%\") AND "; + } + + if(!clt.isStringNull(Facture)){ + Where += " (BR.`id_facture_frs` = \""+Facture+"\") AND "; + } + + if(!clt.isStringNull(DateReception)){ + Where += " (DATE(BR.`date_reception`) = \""+DateReception+"\") AND "; + } + + if(!clt.isStringNull(Fournisseur)){ + Where += " (BR.`id_fournisseur` = \""+Fournisseur+"\") AND "; + } + + if(!clt.isStringNull(LocalReception)){ + Where += " (BR.`local_reception` = \""+LocalReception+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = " WHERE (BR.id_fournisseur = F.id_fourisseur) AND " + Where; + }else{ + Where = " WHERE (BR.id_fournisseur = F.id_fourisseur) "; + } + + String req="SELECT BR.*, DATE_FORMAT(BR.date_reception, '%d/%m/%Y') as DateReception, DATE_FORMAT(BR.date_reception, '%H:%i:%s') as HeurReception , F.nom " + + " FROM bonreception_frs BR, fournisseur F " + + Where + + " ORDER BY BR.date_reception 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 = resultat.getString("id_bonreception"); + String numero= resultat.getString("numero"); + String date = resultat.getString("DateReception"); + String heur = resultat.getString("HeurReception"); + String transporteur = resultat.getString("transporteur"); + String fournisseur = resultat.getString("nom"); + String facture = resultat.getString("id_facture_frs"); + String local = resultat.getString("local_reception"); + + data.add(new BonReceptionGestionList(code, numero, date, heur, transporteur, fournisseur, facture, local)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + + return data ; + } + + public Integer nbrBonReceptionGestionFrsGestion(String Numero, String Transporteur, String Facture, String DateReception, String Fournisseur, String LocalReception) + { + String Where = ""; + + if(!clt.isStringNull(Numero)){ + Where += " (`id_bonreception` = \""+Numero+"\") AND "; + } + + if(!clt.isStringNull(Transporteur)){ + Where += " (`transporteur` LIKE \"%"+Adaptateur.addSlashes(Transporteur)+"%\") AND "; + } + + if(!clt.isStringNull(Facture)){ + Where += " (`id_facture_frs` = \""+Facture+"\") AND "; + } + + if(!clt.isStringNull(DateReception)){ + Where += " (DATE(`date_reception`) = \""+DateReception+"\") AND "; + } + + if(!clt.isStringNull(Fournisseur)){ + Where += " (`id_fournisseur` = \""+Fournisseur+"\") AND "; + } + + if(!clt.isStringNull(LocalReception)){ + Where += " (`local_reception` = \""+LocalReception+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req=" SELECT COUNT(`id_bonreception`) " + + " FROM `bonreception_frs`" + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + +} diff --git a/src/main/java/Models/BonReceptionFrs/BonReceptionGestionList.java b/src/main/java/Models/BonReceptionFrs/BonReceptionGestionList.java new file mode 100644 index 0000000..0745fca --- /dev/null +++ b/src/main/java/Models/BonReceptionFrs/BonReceptionGestionList.java @@ -0,0 +1,68 @@ +/* + * 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.BonReceptionFrs; + +import javafx.beans.property.SimpleStringProperty; + +/** + * @author Maher + */ +public class BonReceptionGestionList { + + private final SimpleStringProperty Code; + private final SimpleStringProperty Numero; + private final SimpleStringProperty Date; + private final SimpleStringProperty Heur; + private final SimpleStringProperty Transporteur; + private final SimpleStringProperty Fournisseur; + private final SimpleStringProperty Facture; + private final SimpleStringProperty LocalReception; + + public BonReceptionGestionList(String code, String numero, String date, String heur, String transporteur, String fournisseur, String facture, String local) + { + this.Code = new SimpleStringProperty(code); + this.Numero = new SimpleStringProperty(numero); + this.Date = new SimpleStringProperty(date); + this.Heur = new SimpleStringProperty(heur); + this.Transporteur = new SimpleStringProperty(transporteur); + this.Fournisseur = new SimpleStringProperty(fournisseur); + this.Facture = new SimpleStringProperty(facture); + this.LocalReception = new SimpleStringProperty(local); + } + + public String getCode() { + return Code.get(); + } + + public String getNumero() { + return Numero.get(); + } + + public String getDate() { + return Date.get(); + } + + public String getHeur() { + return Heur.get(); + } + public String getTransporteur() { + return Transporteur.get(); + } + + public String getFournisseur() { + return Fournisseur.get(); + } + + public String getFacture() { + return Facture.get(); + } + + public String getLocalReception() { + return LocalReception.get(); + } + + +} diff --git a/src/main/java/Models/BonReceptionFrs/BonReceptionList.java b/src/main/java/Models/BonReceptionFrs/BonReceptionList.java new file mode 100644 index 0000000..3738cbe --- /dev/null +++ b/src/main/java/Models/BonReceptionFrs/BonReceptionList.java @@ -0,0 +1,75 @@ +/* + * 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.BonReceptionFrs; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class BonReceptionList { + + private final SimpleStringProperty Code; + private final SimpleStringProperty Numero; + private final SimpleStringProperty Date; + private final SimpleStringProperty Heur; + private final SimpleStringProperty Transporteur; + private final SimpleStringProperty Fournisseur; + private final SimpleStringProperty Facture; + private final SimpleStringProperty LocalReception; + private final SimpleStringProperty NetPayer; + + public BonReceptionList(String code, String numero, String date, String heur, String transporteur, String fournisseur, String facture, String local, String net_a_payer) + { + this.Code = new SimpleStringProperty(code); + this.Numero = new SimpleStringProperty(numero); + this.Date = new SimpleStringProperty(date); + this.Heur = new SimpleStringProperty(heur); + this.Transporteur = new SimpleStringProperty(transporteur); + this.Fournisseur = new SimpleStringProperty(fournisseur); + this.Facture = new SimpleStringProperty(facture); + this.LocalReception = new SimpleStringProperty(local); + this.NetPayer = new SimpleStringProperty(net_a_payer); + } + + public String getCode() { + return Code.get(); + } + + public String getNumero() { + return Numero.get(); + } + + public String getDate() { + return Date.get(); + } + + public String getHeur() { + return Heur.get(); + } + public String getTransporteur() { + return Transporteur.get(); + } + + public String getFournisseur() { + return Fournisseur.get(); + } + + public String getFacture() { + return Facture.get(); + } + + public String getLocalReception() { + return LocalReception.get(); + } + + public String getNetPayer() { + return NetPayer.get(); + } + + +} diff --git a/src/main/java/Models/BonReceptionFrs/BonReceptionProduitList.java b/src/main/java/Models/BonReceptionFrs/BonReceptionProduitList.java new file mode 100644 index 0000000..961e52e --- /dev/null +++ b/src/main/java/Models/BonReceptionFrs/BonReceptionProduitList.java @@ -0,0 +1,74 @@ +/* + * 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.BonReceptionFrs; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class BonReceptionProduitList { + + private final SimpleStringProperty IdAchat; + private final SimpleStringProperty IdBonReception; + private final SimpleStringProperty Reference; + private final SimpleStringProperty Designation; + private final SimpleStringProperty Quantite; + private final SimpleStringProperty PrixUnitaireHorsTaxe; + private final SimpleStringProperty PrixUnitaireHorsTaxenNet; + private final SimpleStringProperty Tva; + private final SimpleStringProperty Montant; + + public BonReceptionProduitList(String id_achat, String id_bon_reception, String reference, String designation,String quantite, String p_u_h_t, String p_u_h_t_net, String tva, String montant) + { + this.IdAchat = new SimpleStringProperty(id_achat); + this.IdBonReception = new SimpleStringProperty(id_bon_reception); + this.Reference = new SimpleStringProperty(reference); + this.Designation = new SimpleStringProperty(designation); + this.Quantite = new SimpleStringProperty(quantite); + this.PrixUnitaireHorsTaxe = new SimpleStringProperty(p_u_h_t); + this.PrixUnitaireHorsTaxenNet = new SimpleStringProperty(p_u_h_t_net); + this.Tva = new SimpleStringProperty(tva); + this.Montant = new SimpleStringProperty(montant); + } + + public String getIdAchat() { + return IdAchat.get(); + } + + public String getIdBonReception() { + return IdBonReception.get(); + } + + public String getReference() { + return Reference.get(); + } + + public String getDesignation() { + return Designation.get(); + } + + public String getQuantite() { + return Quantite.get(); + } + + public String getPrixUnitaireHorsTaxe() { + return PrixUnitaireHorsTaxe.get(); + } + + public String getPrixUnitaireHorsTaxenNet() { + return PrixUnitaireHorsTaxenNet.get(); + } + + public String getTva() { + return Tva.get(); + } + + public String getMontant() { + return Montant.get(); + } +} diff --git a/src/main/java/Models/Caisse/CaisseClt.java b/src/main/java/Models/Caisse/CaisseClt.java new file mode 100644 index 0000000..504f982 --- /dev/null +++ b/src/main/java/Models/Caisse/CaisseClt.java @@ -0,0 +1,143 @@ +/* + * 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.Caisse; + +/** + * + * @author maher + */ +public class CaisseClt { + public String IdCaisse; + + public String DateMouvement; + public String TypeMouvement; //0-Vente Comptant | 1-Vente Facilité Avance | 2 Vente Commande Avance | 3 traite clt | 4 Cheque | 5 Vente Sans Facture | 6 Vente Sans Facture (Avoit) + + public String CodeFactureClt; + public String IdAvoirFactClt; + public String IdVenteSansFactureClt; + public String Montant; + + public String IdTraitePaiementEspace; + public String IdTraitePaiementCarte; + public String IdTraitePaiementCheque; + + public String IdHistoriqueCheque; + + public String LocalNom; + public Integer IdProfile; //code profile de utilisateur du programme + + public String getIdCaisse() { + return IdCaisse; + } + + public void setIdCaisse(String IdCaisse) { + this.IdCaisse = IdCaisse; + } + + public String getDateMouvement() { + return DateMouvement; + } + + public void setDateMouvement(String DateMouvement) { + this.DateMouvement = DateMouvement; + } + + public String getTypeMouvement() { + return TypeMouvement; + } + + public void setTypeMouvement(String TypeMouvement) { + this.TypeMouvement = TypeMouvement; + } + + public String getIdVenteSansFactureClt() { + return IdVenteSansFactureClt; + } + + public void setIdVenteSansFactureClt(String IdVenteSansFacture) { + this.IdVenteSansFactureClt = IdVenteSansFacture; + } + + + + + public String getCodeFactureClt() { + return CodeFactureClt; + } + + public void setCodeFactureClt(String CodeFactureClt) { + this.CodeFactureClt = CodeFactureClt; + } + + public String getIdAvoirFactClt() { + return IdAvoirFactClt; + } + + public void setIdAvoirFactClt(String IdAvoirFactClt) { + this.IdAvoirFactClt = IdAvoirFactClt; + } + + public String getMontant() { + + return Montant; + } + + public void setMontant(String Montant) { + this.Montant = Montant; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public Integer getIdProfile() { + return IdProfile; + } + + public void setIdProfile(Integer IdProfile) { + this.IdProfile = IdProfile; + } + + public String getIdTraitePaiementEspace() { + return IdTraitePaiementEspace; + } + + public void setIdTraitePaiementEspace(String IdTraitePaiementEspace) { + this.IdTraitePaiementEspace = IdTraitePaiementEspace; + } + + public String getIdTraitePaiementCarte() { + return IdTraitePaiementCarte; + } + + public void setIdTraitePaiementCarte(String IdTraitePaiementCarte) { + this.IdTraitePaiementCarte = IdTraitePaiementCarte; + } + + public String getIdTraitePaiementCheque() { + return IdTraitePaiementCheque; + } + + public void setIdTraitePaiementCheque(String IdTraitePaiementCheque) { + this.IdTraitePaiementCheque = IdTraitePaiementCheque; + } + + public String getIdHistoriqueCheque() { + return IdHistoriqueCheque; + } + + public void setIdHistoriqueCheque(String IdHistoriqueCheque) { + this.IdHistoriqueCheque = IdHistoriqueCheque; + } + + + + +} diff --git a/src/main/java/Models/Caisse/CaisseDB.java b/src/main/java/Models/Caisse/CaisseDB.java new file mode 100644 index 0000000..e5f6344 --- /dev/null +++ b/src/main/java/Models/Caisse/CaisseDB.java @@ -0,0 +1,405 @@ +package Models.Caisse; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.ChequeClt.ChequeClt; +import Models.ChequeClt.ChequeCltDB; +import Models.FactureClt.FactureClt; +import Models.FactureClt.FactureCltDB; +import Models.TraiteClt.TraiteCltDB; +import Models.User.User; +import Models.VenteRapideClt.VenteSansFacture; +import Models.VenteRapideClt.VenteSansFactureDB; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + + + +/** + * + * @author maher + */ +public class CaisseDB { + + connexion cnx = new connexion(); + + public String AddCaisse(CaisseClt caisse){ + String req ="INSERT INTO caisseclt (date_mouvement, `type_mouvement`, id_traite_paiement_espace, id_traite_paiement_carte, id_traite_paiement_cheque, `id_factureclt`, `id_avoir_factclt`, `id_historique_cheque_clt`, `id_vente_sans_facture`, `montant`, `local_nom`, `id_profile`) VALUES (CURTIME(), "+caisse.getTypeMouvement()+", "+caisse.getIdTraitePaiementEspace()+", "+caisse.getIdTraitePaiementCarte()+", "+caisse.getIdTraitePaiementCheque()+", "+caisse.getCodeFactureClt()+", "+caisse.getIdAvoirFactClt()+", "+caisse.getIdHistoriqueCheque()+","+caisse.getIdVenteSansFactureClt()+", "+caisse.getMontant()+", '"+ParametreSystem.NomLocalPC+"', "+User.idprofile+")"; + return cnx.InsertGetLastId(req); + } + + public ObservableList GetDataCaisseFrsSortie(String Datedebut, String DateFin){ + + ObservableList DataReglementList = this.GetDataReglementFrs(Datedebut, DateFin); + + ObservableList DataFraisList = this.GetDataFraisFrs(Datedebut, DateFin); + + ObservableList DataTraiteList = this.GetDataTraiteFrs(Datedebut, DateFin); + + // supprimer une vente sans facture + ObservableList DataAvoirVSFList = this.GetDataAvoirVSF(Datedebut, DateFin); + + ObservableList CaisseFrsSortieList = FXCollections.concat(DataReglementList, DataTraiteList, DataFraisList, DataAvoirVSFList); + + return CaisseFrsSortieList; + } + + + public ObservableList GetDataAvoirVSF(String DateDebut, String DateFin){ + + ObservableList DataAvoirVSFList = FXCollections.observableArrayList(); + + String Query = " SELECT VSF.*, C.numero, C.banque, B.num_transation, B.nom_banque, DATE_FORMAT(date_operation, '%d/%m/%Y %H:%i') as date_oper " + + " FROM `vente_sans_facture` VSF " + + " LEFT JOIN `cheque_clt` C ON (C.id_chequeclt = VSF.id_chequeclt) " + + " LEFT JOIN `carte_bancaire_clt` B ON (B.id_carte_bancaire = VSF.id_carte_bancaire) " + + " WHERE (VSF.operation = 1) AND (DATE(VSF.date_operation) BETWEEN '"+DateDebut+"' AND '"+DateFin+"'); "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + String id_vsf = resultat.getString("id_vente_sans_facture"); + Float montant = resultat.getFloat("montant"); + + //0 :espace 1:Chèque 2 :carte bancaire + String mode_paiement = resultat.getString("paiement"); + + String type_mouvement = ""; + String cheque= ""; + String carte_bancaire= ""; + String type = "Avoir VSF"; + String espece = ""; + + if(mode_paiement.equals("0")){ + type_mouvement = "Espèce"; + espece = resultat.getString("nom_prenom_client"); + }else if(mode_paiement.equals("1")){ + type_mouvement = "Chèque"; + cheque = resultat.getString("numero")+"-"+resultat.getString("banque"); + }else if(mode_paiement.equals("2")){ + type_mouvement = "Carte Bancaire"; + carte_bancaire = resultat.getString("num_transation")+"-"+resultat.getString("nom_banque"); + } + + String date_oper = resultat.getString("date_oper"); + + DataAvoirVSFList.add(new CaisseSortieListe(id_vsf, type_mouvement, type, date_oper, Adaptateur.FloatToStringEspace(montant), cheque, espece, carte_bancaire, montant)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return DataAvoirVSFList; + } + + public ObservableList GetDataFraisFrs(String Datedebut, String DateFin){ + + ObservableList DataFraisList = FXCollections.observableArrayList(); + + String Query = " SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y %H:%i') as date_creat " + + " FROM frais " + + " WHERE (DATE(date_creation) BETWEEN '"+Datedebut+"' AND '"+DateFin+"') "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + String id_frais = resultat.getString("id_frais"); + Float montant = resultat.getFloat("montant"); + + //0 :espece 1:Chèque 2 :carte bancaire + String mode_paiement = resultat.getString("mode_paiement"); + + String type_mouvement = ""; + String cheque= ""; + String carte_bancaire= ""; + String type = "Frais"; + String espece = ""; + + if(mode_paiement.equals("0")){ + type_mouvement = "Espèce"; + espece = resultat.getString("object"); + }else if(mode_paiement.equals("1")){ + type_mouvement = "Chèque"; + cheque = resultat.getString("numero")+"-"+resultat.getString("banque"); + }else if(mode_paiement.equals("2")){ + type_mouvement = "Carte Bancaire"; + carte_bancaire = resultat.getString("numero")+"-"+resultat.getString("banque"); + } + + String date_mouvement = resultat.getString("date_creat"); + + DataFraisList.add(new CaisseSortieListe(id_frais, type_mouvement, type, date_mouvement,Adaptateur.FloatToStringEspace(montant), cheque, espece, carte_bancaire, montant)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return DataFraisList; + } + + public ObservableList GetDataReglementFrs(String Datedebut, String DateFin){ + + ObservableList DataReglementList = FXCollections.observableArrayList(); + + String Query = " SELECT R.*, F.id_fourisseur, F.nom, R.date_creation as datecreation, DATE_FORMAT(R.date_creation, '%d/%m/%Y %H:%i') as date_creat, " + + " C.numero, C.banque, C.montant, " + + " E.numero_transaction, E.banque, E.montant " + + " FROM reglement_frs R " + + " LEFT JOIN `fournisseur` F ON (F.id_fourisseur = R.id_fourisseur) " + + " LEFT JOIN `cheque_frs` C ON (C.id_reglement_frs = R.id_reglement_frs) " + + " LEFT JOIN `carte_electronique_frs` E ON (E.id_reglement_frs = R.id_reglement_frs) " + + " WHERE (DATE(R.date_creation) BETWEEN '"+Datedebut+"' AND '"+DateFin+"')" + + " AND (R.mode_paiement NOT LIKE '3'); "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + String id_reglement = resultat.getString("R.id_reglement_frs"); + + //les traites est récupéer par la fonction GetDataTraiteFrs + + //0 :espace 1:Chèque 2 :carte bancaire 3: Traite + String mode_paiement = resultat.getString("R.mode_paiement"); + String type_mouvement = ""; + String cheque= ""; + String carte_bancaire= ""; + String type = "Achat"; + Float montant = null; + String espece = ""; + + if(mode_paiement.equals("0")){ + type_mouvement = "Espèce"; + montant = resultat.getFloat("R.montant"); + espece = resultat.getString("F.id_fourisseur")+"-"+resultat.getString("F.nom"); + }else if(mode_paiement.equals("1")){ + type_mouvement = "Chèque"; + cheque = resultat.getString("C.numero")+"-"+resultat.getString("C.banque"); + montant = resultat.getFloat("C.montant"); + }else if(mode_paiement.equals("2")){ + type_mouvement = "Carte Bancaire"; + carte_bancaire = resultat.getString("E.numero_transaction")+"-"+resultat.getString("E.banque"); + montant = resultat.getFloat("E.montant"); + } + + String date_mouvement = resultat.getString("date_creat"); + + DataReglementList.add(new CaisseSortieListe(id_reglement, type_mouvement, type, date_mouvement,Adaptateur.FloatToStringEspace(montant), cheque, espece, carte_bancaire, montant)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return DataReglementList; + } + + public ObservableList GetDataTraiteFrs(String Datedebut, String DateFin){ + + ObservableList DataReglementList = FXCollections.observableArrayList(); + + String Query = " SELECT *, " + + " DATE_FORMAT(T.date_creation, '%d/%m/%Y') as date_pai " + + " FROM traite_frs T, reglement_frs R, fournisseur F " + + " WHERE (T.id_reglement_frs = R.id_reglement_frs) " + + " AND (R.id_fourisseur = F.id_fourisseur) " + + " AND (T.date_paiement BETWEEN '"+Datedebut+"' AND '"+DateFin+"'); "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + String id_reglement = resultat.getString("T.id_traite_frs"); + + Float montant = resultat.getFloat("T.montant"); + String date_mouvement = resultat.getString("date_pai"); + + String espece = resultat.getString("F.nom"); + DataReglementList.add(new CaisseSortieListe(id_reglement, "Espèce", "Traite", date_mouvement, Adaptateur.FloatToStringEspace(montant), "", espece, "", montant)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return DataReglementList; + } + + public ObservableList GetDataCaisseCltEnter(String Datedebut, String DateFin){ + + String Query = " SELECT id_caisseclt, DATE_FORMAT(date_mouvement, '%d/%m/%Y %H:%i') as date_mouvement, type_mouvement, id_factureclt, id_avoir_factclt, id_vente_sans_facture, montant, id_traite_paiement_espace, id_traite_paiement_carte, id_traite_paiement_cheque, id_historique_cheque_clt, id_profile, local_nom" + + " FROM caisseclt " + + " WHERE (DATE(date_mouvement) BETWEEN '"+Datedebut+"' AND '"+DateFin+"') " + + " AND (local_nom ='"+ParametreSystem.NomLocalPC+"') " + + " AND (type_mouvement IN (0,1,2,3,4,5)); "; + + ObservableList CaisseCltEnterList = FXCollections.observableArrayList(); + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + //String id_caisseclt = resultat.getString("id_caisseclt"); + float montant = resultat.getFloat("montant"); + String id_profile = resultat.getString("id_profile"); + String date_mouvement = resultat.getString("date_mouvement"); + + // 0-Vente Comptant | 1-Vente Facilité Avance | 2 Vente Commande Avance | 3 traite clt | 4 ChequeClt | 5 Vente Sans Facture | 6 Vente Avoir + String type_mouvement = resultat.getString("type_mouvement"); + + String id_caisseclt = ""; + String type = ""; + String cheque_numero = ""; + String cheque_banque = ""; + String espace_nom = ""; + String espace_prenom = ""; + String carte_numero = ""; + String carte_banque = ""; + + + if((type_mouvement.equals("0")) || (type_mouvement.equals("1")) || (type_mouvement.equals("2"))){ + + String id_factureclt = resultat.getString("id_factureclt"); + id_caisseclt = id_factureclt; + FactureClt Facture = new FactureCltDB().getFactureClt(id_factureclt); + String ModePaiement = Facture.getModePaiement(); + + if(ModePaiement.equals("0")){//0 :espace + + if(Facture.getTypeClient() == 0){ + espace_nom = Facture.getCltPersonne().getNom(); + espace_prenom = Facture.getCltPersonne().getPrenom(); + }else if (Facture.getTypeClient() == 1){ + espace_nom = Facture.getCltEntreprise().getNom(); + espace_prenom = Facture.getCltEntreprise().getMatricule(); + }else if (Facture.getTypeClient() == 2){ + espace_nom = Facture.getCltPassager().getNom(); + espace_prenom = Facture.getCltPassager().getPrenom(); + } + + }else if (ModePaiement.equals("1")){//1:cheque + ChequeClt Cheque = new ChequeCltDB().getChequeCltByFacture(Facture.getCodeFactureClt()); + cheque_numero = Cheque.getNumeroChequeClt(); + cheque_banque = Cheque.getBanqueChequeClt(); + }else if (ModePaiement.equals("2")){//3 :carte bancaire + CarteBancaireClt CarteBancaire = new CarteBancaireCltDB().getCarteBancaireByFactureClt(Facture.getCodeFactureClt()); + carte_numero = CarteBancaire.getNumeroTransation(); + carte_banque = CarteBancaire.getNomBanque(); + } + + + if(type_mouvement.equals("0")){ + type = "Vente Comptant"; + }else if (type_mouvement.equals("1")){ + type = "Vente Facilité Avance"; + }else if (type_mouvement.equals("2")){ + type = "Vente Commande Avance"; + } + }else if(type_mouvement.equals("3")){ + type = "Traite"; + String id_traite_paiement_espace = resultat.getString("id_traite_paiement_espace"); + String id_traite_paiement_carte = resultat.getString("id_traite_paiement_carte"); + String id_traite_paiement_cheque = resultat.getString("id_traite_paiement_cheque"); + + if(id_traite_paiement_espace != null){ + Map PaiementTraiteEspace = new TraiteCltDB().GetEspacePaiementTraite(id_traite_paiement_espace); + id_caisseclt = PaiementTraiteEspace.get("IdTraite").toString(); + espace_nom = PaiementTraiteEspace.get("Nom").toString(); + espace_prenom = PaiementTraiteEspace.get("Prenom").toString(); + }else if(id_traite_paiement_carte != null){ + Map PaiementTraiteCarte = new TraiteCltDB().GetCartePaiementTraite(id_traite_paiement_carte); + id_caisseclt = PaiementTraiteCarte.get("IdTraite").toString(); + carte_numero = PaiementTraiteCarte.get("numero_carte").toString(); + carte_banque = PaiementTraiteCarte.get("banque").toString(); + }else if(id_traite_paiement_cheque != null){ + Map PaiementTraiteCheque = new TraiteCltDB().GetChequePaiementTraite(id_traite_paiement_cheque); + id_caisseclt = PaiementTraiteCheque.get("IdTraite").toString(); + cheque_numero = PaiementTraiteCheque.get("numero").toString(); + cheque_banque = PaiementTraiteCheque.get("banque").toString(); + } + }else if(type_mouvement.equals("4")){ + type = "Chèque"; + + String id_historique_cheque_clt = resultat.getString("id_historique_cheque_clt"); + if(id_historique_cheque_clt != null){ + ChequeClt Cheque = new ChequeCltDB().getChequeCltByIdHistorique(id_historique_cheque_clt); + // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + id_caisseclt = Cheque.getNumeroChequeClt(); + + if(Cheque.getLastEtat() == 1){ + cheque_numero = Cheque.getNumeroChequeClt(); + cheque_banque = Cheque.getBanqueChequeClt(); + }else if(Cheque.getLastEtat() == 2){ + if(Cheque.getTypeClient() == 0){ + espace_nom = Cheque.getCltPersonne().getNom(); + espace_prenom = Cheque.getCltPersonne().getPrenom(); + }else if(Cheque.getTypeClient() == 1){ + espace_nom = Cheque.getCltEntreprise().getNom(); + espace_prenom = Cheque.getCltEntreprise().getMail(); + }else if(Cheque.getTypeClient() == 2){ + espace_nom = Cheque.getCltPassager().getNom(); + espace_prenom = Cheque.getCltPassager().getPrenom(); + } + } + } + }else if(type_mouvement.equals("5")){ //5 Vente Sans Facture + type = "Vente Sans Facture"; + VenteSansFacture venteSansFacture = new VenteSansFactureDB().getVenteSansFacture(resultat.getString("id_vente_sans_facture")); + id_caisseclt = venteSansFacture.getIdVenteSansFacture(); + if(venteSansFacture.getPaiement().equals("0")){ + if(venteSansFacture.getOperation() != null){ + espace_nom = "Annuler:"; + espace_prenom = Adaptateur.NormalDateTimeFormat(venteSansFacture.getDateOperation()); + }else{ + espace_nom = venteSansFacture.getNomPrenomClient(); + espace_prenom = venteSansFacture.getNomPrenomClient(); + } + }else if (venteSansFacture.getPaiement().equals("1")){ + if(venteSansFacture.getOperation()!= null){ + cheque_numero = "Annuler"; + cheque_banque = Adaptateur.NormalDateTimeFormat(venteSansFacture.getDateOperation()); + }else{ + cheque_numero = venteSansFacture.getCheque().getNumeroChequeClt(); + cheque_banque = venteSansFacture.getCheque().getBanqueChequeClt(); + } + + }else if (venteSansFacture.getPaiement().equals("2")){ + if(venteSansFacture.getOperation() != null){ + carte_numero = "Annuler"; + carte_banque = Adaptateur.NormalDateTimeFormat(venteSansFacture.getDateOperation()); + }else{ + carte_numero = venteSansFacture.getCarteBancaire().getNumeroTransation(); + carte_banque = venteSansFacture.getCarteBancaire().getNomBanque(); + } + } + } + + CaisseCltEnterList.add(new CaisseListe(id_caisseclt, type_mouvement, type, date_mouvement, Adaptateur.FloatToStringEspace(montant), cheque_numero, cheque_banque, espace_nom, espace_prenom, carte_numero, carte_banque, montant)); + + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + + return CaisseCltEnterList; + } + + + + + +} diff --git a/src/main/java/Models/Caisse/CaisseEntreListe.java b/src/main/java/Models/Caisse/CaisseEntreListe.java new file mode 100644 index 0000000..8c8be79 --- /dev/null +++ b/src/main/java/Models/Caisse/CaisseEntreListe.java @@ -0,0 +1,82 @@ +/* + * 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.Caisse; + +import javafx.beans.property.SimpleFloatProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class CaisseEntreListe { + + private SimpleStringProperty IdCaisseClt; + + private SimpleStringProperty CodeType; + //0-Vente Comptant | 1-Vente Facilité Avance | 2 Vente Commande Avance + //3 traite clt | 4 ChequeClt | 5 Vente Sans Facture | 6 Vente Avoir + + private SimpleStringProperty Type; + private SimpleStringProperty Date; + private SimpleStringProperty Montant; + private SimpleStringProperty Cheque; + private SimpleStringProperty Espece; + private SimpleStringProperty CateBancaire; + private SimpleFloatProperty FloatMontant; + + public CaisseEntreListe(String id_caisse, String code_type, String type, String date_insert, String montant, String cheque_numero_banque, String nom_prenom, String carte_numero_banque, float float_montant) { + this.IdCaisseClt = new SimpleStringProperty(id_caisse); + this.CodeType = new SimpleStringProperty(code_type); + this.Type = new SimpleStringProperty(type); + this.Date = new SimpleStringProperty(date_insert); + this.Montant = new SimpleStringProperty(montant); + this.Cheque = new SimpleStringProperty(cheque_numero_banque); + this.Espece = new SimpleStringProperty(nom_prenom); + this.CateBancaire = new SimpleStringProperty(carte_numero_banque); + this.FloatMontant = new SimpleFloatProperty(float_montant); + + } + + + public String getIdCaisseClt() { + return IdCaisseClt.get(); + } + + public String getCodeType() { + return CodeType.get(); + } + + + public String getType() { + return Type.get(); + } + + public String getDate() { + return Date.get(); + } + + public String getMontant() { + return Montant.get(); + } + + public String getCheque() { + return Cheque.get(); + } + + public String getEspece() { + return Espece.get(); + } + + public String getCateBancaire() { + return CateBancaire.get(); + } + + + public float getFloatMontant() { + return FloatMontant.get(); + } +} diff --git a/src/main/java/Models/Caisse/CaisseListe.java b/src/main/java/Models/Caisse/CaisseListe.java new file mode 100644 index 0000000..787fe30 --- /dev/null +++ b/src/main/java/Models/Caisse/CaisseListe.java @@ -0,0 +1,97 @@ +/* + * 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.Caisse; + +import javafx.beans.property.SimpleFloatProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class CaisseListe { + + private final SimpleStringProperty IdCaisseClt; + + private final SimpleStringProperty CodeType; + //0-Vente Comptant | 1-Vente Facilité Avance | 2 Vente Commande Avance + //3 traite clt | 4 ChequeClt | 5 Vente Sans Facture | 6 Vente Avoir + + private final SimpleStringProperty Type; + private final SimpleStringProperty Date; + private final SimpleStringProperty Montant; + private final SimpleStringProperty ChequeCltNumero; + private final SimpleStringProperty ChequeCltBanque; + private final SimpleStringProperty EspaceNom; + private final SimpleStringProperty EspacePrenom; + private final SimpleStringProperty CateBancaireNumero; + private final SimpleStringProperty CateBancaireBanque; + private final SimpleFloatProperty FloatMontant; + + public CaisseListe(String id_caisse, String code_type, String type, String date_insert, String montant, String cheque_numero, String cheque_banque, String espace_nom, String espace_prenom, String carte_numero, String carte_banque, float float_montant) { + this.IdCaisseClt = new SimpleStringProperty(id_caisse); + this.CodeType = new SimpleStringProperty(code_type); + this.Type = new SimpleStringProperty(type); + this.Date = new SimpleStringProperty(date_insert); + this.Montant = new SimpleStringProperty(montant); + this.ChequeCltNumero = new SimpleStringProperty(cheque_numero); + this.ChequeCltBanque = new SimpleStringProperty(cheque_banque); + this.EspaceNom = new SimpleStringProperty(espace_nom); + this.EspacePrenom = new SimpleStringProperty(espace_prenom); + this.CateBancaireNumero = new SimpleStringProperty(carte_numero); + this.CateBancaireBanque = new SimpleStringProperty(carte_banque); + this.FloatMontant = new SimpleFloatProperty(float_montant); + } + + + public String getIdCaisseClt() { + return IdCaisseClt.get(); + } + + public String getCodeType() { + return CodeType.get(); + } + + public String getType() { + return Type.get(); + } + + public String getDate() { + return Date.get(); + } + + public String getMontant() { + return Montant.get(); + } + + public String getChequeCltNumero() { + return ChequeCltNumero.get(); + } + + public String getChequeCltBanque() { + return ChequeCltBanque.get(); + } + + public String getEspaceNom() { + return EspaceNom.get(); + } + + public String getEspacePrenom() { + return EspacePrenom.get(); + } + + public String getCateBancaireNumero() { + return CateBancaireNumero.get(); + } + + public String getCateBancaireBanque() { + return CateBancaireBanque.get(); + } + + public float getFloatMontant() { + return FloatMontant.get(); + } +} diff --git a/src/main/java/Models/Caisse/CaisseSortieListe.java b/src/main/java/Models/Caisse/CaisseSortieListe.java new file mode 100644 index 0000000..f8afd7d --- /dev/null +++ b/src/main/java/Models/Caisse/CaisseSortieListe.java @@ -0,0 +1,79 @@ +/* + * 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.Caisse; + +import javafx.beans.property.SimpleFloatProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class CaisseSortieListe { + + private SimpleStringProperty IdCaisseClt; + + private SimpleStringProperty CodeType; + + private SimpleStringProperty Type; + private SimpleStringProperty Date; + private SimpleStringProperty Montant; + private SimpleStringProperty Cheque; + private SimpleStringProperty Espece; + private SimpleStringProperty CarteBancaire; + private SimpleFloatProperty FloatMontant; + + public CaisseSortieListe(String id_caisse, String code_type, String type, String date_insert, String montant, String cheque, String nom_prenom, String carte_bancaire, float float_montant) { + this.IdCaisseClt = new SimpleStringProperty(id_caisse); + this.CodeType = new SimpleStringProperty(code_type); + this.Type = new SimpleStringProperty(type); + this.Date = new SimpleStringProperty(date_insert); + this.Montant = new SimpleStringProperty(montant); + this.Cheque = new SimpleStringProperty(cheque); + this.Espece = new SimpleStringProperty(nom_prenom); + this.CarteBancaire = new SimpleStringProperty(carte_bancaire); + this.FloatMontant = new SimpleFloatProperty(float_montant); + + } + + + public String getIdCaisseClt() { + return IdCaisseClt.get(); + } + + public String getCodeType() { + return CodeType.get(); + } + + + public String getType() { + return Type.get(); + } + + public String getDate() { + return Date.get(); + } + + public String getMontant() { + return Montant.get(); + } + + public String getCheque() { + return Cheque.get(); + } + + public String getEspece() { + return Espece.get(); + } + + public String getCarteBancaire() { + return CarteBancaire.get(); + } + + public float getFloatMontant() { + return FloatMontant.get(); + } +} diff --git a/src/main/java/Models/Caisse/CarteBancaireClt.java b/src/main/java/Models/Caisse/CarteBancaireClt.java new file mode 100644 index 0000000..6b23654 --- /dev/null +++ b/src/main/java/Models/Caisse/CarteBancaireClt.java @@ -0,0 +1,112 @@ +package Models.Caisse; + +/** + * @author Maher + */ +public class CarteBancaireClt { + + public String IdCarteBancaire; + public String NumeroTransation; + public String NomBanque; + public String DateTransation; + public String NumeroCarte; + public String NomComplet; + public String Montant; + public Float FMontant; + public String IdFactureClt; + public String LocalNom; + public Integer IdProfile; + + public String getIdCarteBancaire() { + return IdCarteBancaire; + } + + public void setIdCarteBancaire(String IdCarteBancaire) { + this.IdCarteBancaire = IdCarteBancaire; + } + + + public String getNumeroTransation() { + return NumeroTransation; + } + + public void setNumeroTransation(String NumeroTransation) { + this.NumeroTransation = NumeroTransation; + } + + public String getNomBanque() { + return NomBanque; + } + + public void setNomBanque(String NomBanque) { + this.NomBanque = NomBanque; + } + + public String getDateTransation() { + return DateTransation; + } + + public void setDateTransation(String DateTransation) { + this.DateTransation = DateTransation; + } + + public String getNumeroCarte() { + return NumeroCarte; + } + + public void setNumeroCarte(String NumeroCarte) { + this.NumeroCarte = NumeroCarte; + } + + public String getNomComplet() { + return NomComplet; + } + + public void setNomComplet(String NomComplet) { + this.NomComplet = NomComplet; + } + + + public String getMontant() { + return Montant; + } + + public void setMontant(String Montant) { + this.Montant = Montant; + } + + public Float getFMontant() { + return FMontant; + } + + public void setFMontant(Float FMontant) { + this.FMontant = FMontant; + } + + public String getIdFactureClt() { + return IdFactureClt; + } + + public void setIdFactureClt(String IdFactureClt) { + this.IdFactureClt = IdFactureClt; + } + + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public Integer getIdProfile() { + return IdProfile; + } + + public void setIdProfile(Integer IdProfile) { + this.IdProfile = IdProfile; + } + + +} diff --git a/src/main/java/Models/Caisse/CarteBancaireCltDB.java b/src/main/java/Models/Caisse/CarteBancaireCltDB.java new file mode 100644 index 0000000..d01c047 --- /dev/null +++ b/src/main/java/Models/Caisse/CarteBancaireCltDB.java @@ -0,0 +1,123 @@ +package Models.Caisse; + +import Controllers.Traitement.contro; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * @author Maher + */ +public class CarteBancaireCltDB { + + connexion cnx = new connexion(); + + contro clt = new contro(); + + public CarteBancaireClt SetCarteBancaire(CarteBancaireClt CarteBancaire) + { + + String NumeroCarte = "NULL"; + if(!clt.isStringNull(CarteBancaire.getNumeroCarte())){ + NumeroCarte = "'"+CarteBancaire.getNumeroCarte()+"'"; + } + + String NomComplet = "NULL"; + if(!clt.isStringNull(CarteBancaire.getNomComplet())){ + NomComplet = "'"+CarteBancaire.getNomComplet()+"'"; + } + + + String NomBanque = "NULL"; + if(!clt.isStringNull(CarteBancaire.getNomBanque())){ + NomBanque = "'"+CarteBancaire.getNomBanque()+"'"; + } + + String IdFactureClt = "NULL"; + if(!clt.isStringNull(CarteBancaire.getIdFactureClt())){ + IdFactureClt = "'"+CarteBancaire.getIdFactureClt()+"'"; + } + + String Query = "INSERT INTO `carte_bancaire_clt` (`num_transation`, `nom_banque`, `num_carte`, `nom_complet`, `date_transation`, `montant`, `id_factureclt`, `local_nom`, `id_profile`) VALUES ('"+CarteBancaire.getNumeroTransation()+"', "+NomBanque+", "+NumeroCarte+", "+NomComplet+", now(), '"+CarteBancaire.getMontant()+"', "+IdFactureClt+" ,'"+CarteBancaire.getLocalNom()+"', '"+CarteBancaire.getIdProfile()+"')"; + + CarteBancaire.setIdCarteBancaire(cnx.InsertGetLastId(Query)); + + + return CarteBancaire; + } + + public CarteBancaireClt getCarteBancaireClt(String IdCarteBancaire){ + + CarteBancaireClt CarteBancaire = new CarteBancaireClt(); + + String Query = "SELECT *, DATE_FORMAT(date_transation, '%d/%m/%Y %H:%i:%s') as date_time_transation FROM `carte_bancaire_clt` WHERE `id_carte_bancaire` = "+IdCarteBancaire+";"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + //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){ + + CarteBancaire.setIdCarteBancaire(resultat.getString("id_carte_bancaire")); + CarteBancaire.setDateTransation(resultat.getString("date_time_transation")); + + CarteBancaire.setMontant(resultat.getString("montant")); + CarteBancaire.setFMontant(resultat.getFloat("montant")); + + CarteBancaire.setNomBanque(resultat.getString("nom_banque")); + CarteBancaire.setNumeroCarte(resultat.getString("num_carte")); + CarteBancaire.setNumeroTransation(resultat.getString("num_transation")); + + CarteBancaire.setIdProfile(resultat.getInt("id_profile")); + CarteBancaire.setLocalNom(resultat.getString("local_nom")); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + return CarteBancaire; + } + + public CarteBancaireClt getCarteBancaireByFactureClt(String IdFactureClt){ + + CarteBancaireClt CarteBancaire = new CarteBancaireClt(); + + String Query = "SELECT *, DATE_FORMAT(date_transation, '%d/%m/%Y %H:%i:%s') as date_time_transation FROM `carte_bancaire_clt` WHERE `id_factureclt` = "+IdFactureClt+";"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + //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){ + + CarteBancaire.setIdCarteBancaire(resultat.getString("id_carte_bancaire")); + CarteBancaire.setDateTransation(resultat.getString("date_time_transation")); + + CarteBancaire.setMontant(resultat.getString("montant")); + CarteBancaire.setFMontant(resultat.getFloat("montant")); + + CarteBancaire.setNomBanque(resultat.getString("nom_banque")); + CarteBancaire.setNumeroCarte(resultat.getString("num_carte")); + CarteBancaire.setNumeroTransation(resultat.getString("num_transation")); + + CarteBancaire.setNomComplet(resultat.getString("nom_complet")); + CarteBancaire.setIdFactureClt(resultat.getString("id_factureclt")); + + CarteBancaire.setIdProfile(resultat.getInt("id_profile")); + CarteBancaire.setLocalNom(resultat.getString("local_nom")); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + return CarteBancaire; + } +} diff --git a/src/main/java/Models/Caisse/Frais.java b/src/main/java/Models/Caisse/Frais.java new file mode 100644 index 0000000..8616aa7 --- /dev/null +++ b/src/main/java/Models/Caisse/Frais.java @@ -0,0 +1,139 @@ +/* + * 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.Caisse; + + +/** + * + * @author Maher + */ +public class Frais { + + public String IdFrais; + public String Montant; + public String Object; //titre du frais + public String Context; // text du frais + public String Personne; + public String Paiement; //0 :espèce 1:Chèque 2 :carte bancaire + public String Numero; //chèque ou carte banciare + public String Banque; + public String DateCheque; + public String Profile; + public String LocalNom; + public String DateCreation; + + public String getIdFrais() { + return IdFrais; + } + + public void setIdFrais(String IdFrais) { + this.IdFrais = IdFrais; + } + + public String getMontant() { + return Montant; + } + + public void setMontant(String Montant) { + this.Montant = Montant; + } + + public String getObject() { + return Object; + } + + public void setObject(String Object) { + this.Object = Object; + } + + public String getContext() { + return Context; + } + + public void setContext(String Context) { + this.Context = Context; + } + + public String getPersonne() { + return Personne; + } + + public void setPersonne(String Personne) { + this.Personne = Personne; + } + + public String getPaiement() { + return Paiement; + } + + public String getPaiementString() { + //0 :espèce 1:Chèque 2 :carte bancaire + if(Paiement.equals("0")){ + return "Espèce"; + }else if(Paiement.equals("1")){ + return "Chèque"; + }else if(Paiement.equals("2")){ + return "Carte Bancaire"; + }else{ + return Paiement; + } + } + + public void setPaiement(String Paiement) { + this.Paiement = Paiement; + } + + public String getNumero() { + return Numero; + } + + public void setNumero(String Numero) { + this.Numero = Numero; + } + + public String getBanque() { + return Banque; + } + + public void setBanque(String Banque) { + this.Banque = Banque; + } + + public String getDateCheque() { + return DateCheque; + } + + public void setDateCheque(String DateCheque) { + this.DateCheque = DateCheque; + } + + + public String getProfile() { + return Profile; + } + + public void setProfile(String Profile) { + this.Profile = Profile; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + +} diff --git a/src/main/java/Models/Caisse/FraisDB.java b/src/main/java/Models/Caisse/FraisDB.java new file mode 100644 index 0000000..ec33940 --- /dev/null +++ b/src/main/java/Models/Caisse/FraisDB.java @@ -0,0 +1,245 @@ +/* + * 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.Caisse; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.User.Profile; +import Models.User.ProfileDB; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class FraisDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public Frais getFrais(String IdFrais){ + Frais frais = new Frais(); + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery("SELECT *, DATE_FORMAT(date_cheque, '%d/%m/%Y') as datecheque, DATE_FORMAT(date_creation, '%d/%m/%Y %H:%i') as datecreation FROM `frais` WHERE `id_frais` = "+IdFrais+" ;"); + //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){ + + frais.setIdFrais(resultat.getString("id_frais")); + frais.setMontant(Adaptateur.FloatToStringEspaceCurrency(resultat.getFloat("montant"))); + frais.setObject(resultat.getString("object")); + frais.setContext(resultat.getString("context")); + frais.setPersonne(resultat.getString("personne")); + frais.setPaiement(resultat.getString("mode_paiement")); + frais.setNumero(resultat.getString("numero")); + frais.setBanque(resultat.getString("banque")); + frais.setDateCheque(resultat.getString("datecheque")); + frais.setLocalNom(resultat.getString("local_nom")); + frais.setDateCreation(resultat.getString("datecreation")); + + Profile profile = new ProfileDB().getpro(resultat.getInt("id_profile")); + frais.setProfile(profile.getNom()+" "+profile.getPrenom()); + + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return frais; + } + + public Frais setFrais(Frais frais){ + + String Context = "NULL"; + if(frais.getContext() != null){ + Context = "'"+frais.getContext().replace("'", "\\'").replace("\"", "\\\"")+"'"; + } + String Personne = "NULL"; + if(frais.getPersonne() != null){ + Personne = "'"+frais.getPersonne()+"'"; + } + + String Numero = "NULL"; + if(frais.getNumero() != null){ + Numero = "'"+frais.getNumero()+"'"; + } + + String Banque = "NULL"; + if(frais.getBanque()!= null){ + Banque = "'"+frais.getBanque()+"'"; + } + + String DateCheque = "NULL"; + if(frais.getDateCheque()!= null){ + DateCheque = "'"+frais.getDateCheque()+"'"; + } + + String Query = "INSERT INTO `frais` (`montant`, `object`, `context`, `personne`, `mode_paiement`, `numero`, `banque`, `date_cheque`, `id_profile`, `local_nom`, `date_creation`) VALUES ('"+frais.getMontant()+"', '"+frais.getObject()+"', "+Context+", "+Personne+", '"+frais.getPaiement()+"', "+Numero+", "+Banque+", "+DateCheque+", '"+frais.getProfile()+"', '"+frais.getLocalNom()+"', '"+frais.getDateCreation()+"');"; + + frais.setIdFrais(cnx.InsertGetLastId(Query)); + + return frais; + } + + public ObservableList SearchFraisGestion(Integer debut, Integer nbr, String CodeFrais, String ObjectFrais, String Presonne, String Locale, String Paiement, String DateCreation ) + { + ObservableList ListFrais =FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(CodeFrais)){ + Where += " (`id_frais` = \""+CodeFrais+"\") AND "; + } + + if(!clt.isStringNull(ObjectFrais)){ + Where += " (`object` LIKE \"%"+Adaptateur.addSlashes(ObjectFrais)+"%\") AND "; + } + + if(!clt.isStringNull(Presonne)){ + Where += " (`personne` LIKE \"%"+Adaptateur.addSlashes(Presonne)+"%\") AND "; + } + + if(!clt.isStringNull(Locale)){ + Where += " (`local_nom` LIKE \""+Adaptateur.addSlashes(Locale)+"\") AND "; + } + + if(!clt.isStringNull(Paiement)){ + if(Paiement.equals("Espèces")){ + Where += " (`mode_paiement` = '0') AND "; + }else if(Paiement.equals("Chèque")){ + Where += " (`mode_paiement` = '1') AND "; + }else if(Paiement.equals("Carte Bancaire")){ + Where += " (`mode_paiement` = '2') AND "; + } + } + + if(!clt.isStringNull(DateCreation)){ + Where += " (DATE(`frais`.`date_creation`) = \""+DateCreation+"\") AND "; + } + + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE (id_profile = idprofile) AND " + Where; + }else{ + Where = " WHERE (id_profile = idprofile) "; + } + + String req = "SELECT *, DATE_FORMAT(frais.date_creation, '%d/%m/%Y %H:%i') as date_creat " + + " FROM `frais`, `profile` " + + Where + + "ORDER BY id_frais 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() ) { + Frais frais = new Frais(); + frais.setIdFrais(resultat.getString("id_frais")); + frais.setMontant(Adaptateur.FloatToStringEspace(resultat.getFloat("montant"))); + frais.setObject(resultat.getString("object")); + frais.setContext(resultat.getString("context")); + frais.setPersonne(resultat.getString("personne")); + frais.setPaiement(resultat.getString("mode_paiement")); + frais.setNumero(resultat.getString("numero")); + frais.setBanque(resultat.getString("banque")); + frais.setLocalNom(resultat.getString("local_nom")); + frais.setDateCreation(resultat.getString("date_creat")); + frais.setProfile(resultat.getString("prenom")+" "+resultat.getString("nom")); + ListFrais.add(frais); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return ListFrais; + } + + public Integer nbrFraisGestion(String CodeFrais, String ObjectFrais, String Presonne, String Locale, String Paiement, String DateCreation ) + { + String Where = ""; + + if(!clt.isStringNull(CodeFrais)){ + Where += " (`id_frais` = \""+CodeFrais+"\") AND "; + } + + if(!clt.isStringNull(ObjectFrais)){ + Where += " (`object` LIKE \"%"+Adaptateur.addSlashes(ObjectFrais)+"%\") AND "; + } + + if(!clt.isStringNull(Presonne)){ + Where += " (`personne` LIKE \"%"+Adaptateur.addSlashes(Presonne)+"%\") AND "; + } + + if(!clt.isStringNull(Locale)){ + Where += " (`local_nom` LIKE \""+Adaptateur.addSlashes(Locale)+"\") AND "; + } + + if(!clt.isStringNull(Paiement)){ + if(Paiement.equals("Espèces")){ + Where += " (`mode_paiement` = '0') AND "; + }else if(Paiement.equals("Chèque")){ + Where += " (`mode_paiement` = '1') AND "; + }else if(Paiement.equals("Carte Bancaire")){ + Where += " (`mode_paiement` = '2') AND "; + } + } + + if(!clt.isStringNull(DateCreation)){ + Where += " (DATE(`date_creation`) = \""+DateCreation+"\") AND "; + } + + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req = "SELECT COUNT(`id_frais`) " + + " FROM `frais` " + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + + + +} diff --git a/src/main/java/Models/Categorie/Categorie.java b/src/main/java/Models/Categorie/Categorie.java new file mode 100644 index 0000000..217035d --- /dev/null +++ b/src/main/java/Models/Categorie/Categorie.java @@ -0,0 +1,33 @@ +/* + * 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.Categorie; + +/** + * + * @author PC-Maher + */ +public class Categorie { + private String nomcategorie ; + private Integer unitemesure ; + + public String getNomcategorie() { + return nomcategorie; + } + + public void setNomcategorie(String nomcategorie) { + this.nomcategorie = nomcategorie; + } + + public Integer getUnitemesure() { + return unitemesure; + } + + public void setUnitemesure(Integer unitemesure) { + this.unitemesure = unitemesure; + } + + +} diff --git a/src/main/java/Models/Categorie/CategorieDB.java b/src/main/java/Models/Categorie/CategorieDB.java new file mode 100644 index 0000000..9b3f79d --- /dev/null +++ b/src/main/java/Models/Categorie/CategorieDB.java @@ -0,0 +1,123 @@ +/* + * 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.Categorie; + + +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author PC-Maher + */ +public class CategorieDB { + + connexion cnx = new connexion(); + + public boolean addCategorie(Categorie categorie){ + String req = "INSERT INTO `categorie` (`nomcategorie`, `unitemesure`) VALUES ('"+categorie.getNomcategorie()+"', '"+categorie.getUnitemesure()+"');"; + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + return true; + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + return false ; + } + } + else{ + return false ; + } + } + + + + public boolean verifyCategorie(String cat){ + boolean result = false ; + + if(cnx.ouverture()){ + String sql="SELECT * FROM `categorie` WHERE `nomcategorie` LIKE '"+cat+"' ORDER BY `categorie`.`nomcategorie` ASC ;"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + result= true ; + } + } + catch (SQLException ex) { + result= false ; + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return result ; + } + + + public ArrayList getListCategorie(){ + ArrayList listcategorie = new ArrayList<>(); + String req = "SELECT `nomcategorie` FROM `categorie` ;"; + 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 nomcategorie=resultat.getString("nomcategorie"); + listcategorie.add(nomcategorie); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return listcategorie ; + } + + public ObservableList GetCategorie(String Local, String NomCategorie){ + + ObservableList DataCategorieListe = FXCollections.observableArrayList(); + + NomCategorie = NomCategorie.replaceAll("'","\\\\'"); + + String Query = " SELECT P.nomcategorie_cate AS category, COUNT(S.produit_reference) AS quantity " + + " FROM `stock` S, `produit` P " + + " WHERE (S.local_nom = '"+Local+"') AND (P.reference = S.produit_reference) AND (P.nomcategorie_cate LIKE '%"+NomCategorie+"%') " + + " GROUP BY P.nomcategorie_cate " + + " ORDER BY quantity DESC; "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + String category = resultat.getString("category"); + String quantity = resultat.getString("quantity"); + + DataCategorieListe.add(new CategorieListe(category, quantity)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return DataCategorieListe; + } +} diff --git a/src/main/java/Models/Categorie/CategorieListe.java b/src/main/java/Models/Categorie/CategorieListe.java new file mode 100644 index 0000000..bb948d9 --- /dev/null +++ b/src/main/java/Models/Categorie/CategorieListe.java @@ -0,0 +1,25 @@ +package Models.Categorie; + +import javafx.beans.property.SimpleStringProperty; + +/** + * @author Maher + */ +public class CategorieListe { + + private final SimpleStringProperty Nom; + private final SimpleStringProperty Quantite; + + public CategorieListe(String nom, String quantite) { + this.Nom = new SimpleStringProperty(nom); + this.Quantite = new SimpleStringProperty(quantite); + } + + public String getNom() { + return Nom.get(); + } + + public String getQuantite() { + return Quantite.get(); + } +} diff --git a/src/main/java/Models/ChequeClt/ChequeClt.java b/src/main/java/Models/ChequeClt/ChequeClt.java new file mode 100644 index 0000000..7db3975 --- /dev/null +++ b/src/main/java/Models/ChequeClt/ChequeClt.java @@ -0,0 +1,175 @@ +package Models.ChequeClt; + +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.User.Profile; +import javafx.collections.ObservableList; + +/** + * @author PC-Maher + */ +public class ChequeClt { + + private String CodeChequeClt ; + private String NumeroChequeClt ; + private String BanqueChequeClt ; + private String MontantChequeClt ; + private Float MontantFloatChequeClt ; + private String NomCompletChequeClt ; + private String DatePaiement; + private String CodeFactureClt ; + private String DateCreation; + private String LocalNom; + private Profile profile; + private Integer LastEtat; // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + + public Integer TypeClient ; //0 Personne 1 Entreprise 2 Passager + public Client CltPersonne ; + public ClientEntreprise CltEntreprise ; + public ClientPassager CltPassager ; + + public ObservableList HistoriqueListe ; + + + public String getCodeChequeClt() { + return CodeChequeClt; + } + + public void setCodeChequeClt(String CodeChequeClt) { + this.CodeChequeClt = CodeChequeClt; + } + + public String getNumeroChequeClt() { + return NumeroChequeClt; + } + + public void setNumeroChequeClt(String NumeroChequeClt) { + this.NumeroChequeClt = NumeroChequeClt; + } + + public String getBanqueChequeClt() { + return BanqueChequeClt; + } + + public void setBanqueChequeClt(String BanqueChequeClt) { + this.BanqueChequeClt = BanqueChequeClt; + } + + public String getMontantChequeClt() { + return MontantChequeClt; + } + + public void setMontantChequeClt(String MontantChequeClt) { + this.MontantChequeClt = MontantChequeClt; + } + + public Float getMontantFloatChequeClt() { + return MontantFloatChequeClt; + } + + public void setMontantFloatChequeClt(Float MontantFloatChequeClt) { + this.MontantFloatChequeClt = MontantFloatChequeClt; + } + + + public String getNomCompletChequeClt() { + return NomCompletChequeClt; + } + + public void setNomCompletChequeClt(String NomCompletChequeClt) { + this.NomCompletChequeClt = NomCompletChequeClt; + } + + public String getCodeFactureClt() { + return CodeFactureClt; + } + + public void setCodeFactureClt(String CodeFactureClt) { + this.CodeFactureClt = CodeFactureClt; + } + + + + public String getDatePaiement() { + return DatePaiement; + } + + public void setDatePaiement(String DatePaiement) { + this.DatePaiement = DatePaiement; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public Profile getProfile() { + return profile; + } + + public void setProfile(Profile pro) { + this.profile = pro; + } + + public Integer getTypeClient() { + return TypeClient; + } + + public void setTypeClient(Integer TypeClient) { + this.TypeClient = TypeClient; + } + + public Client getCltPersonne() { + return CltPersonne; + } + + public void setCltPersonne(Client CltPersonne) { + this.CltPersonne = CltPersonne; + } + + public ClientEntreprise getCltEntreprise() { + return CltEntreprise; + } + + public void setCltEntreprise(ClientEntreprise CltEntreprise) { + this.CltEntreprise = CltEntreprise; + } + + public ClientPassager getCltPassager() { + return CltPassager; + } + + public void setCltPassager(ClientPassager CltPassager) { + this.CltPassager = CltPassager; + } + + public Integer getLastEtat() { + return LastEtat; + } + + public void setLastEtat(Integer LastEtat) { + this.LastEtat = LastEtat; + } + + public ObservableList getHistoriqueListe() { + return HistoriqueListe; + } + + public void setHistoriqueListe(ObservableList HistoriqueListe) { + this.HistoriqueListe = HistoriqueListe; + } + + +} diff --git a/src/main/java/Models/ChequeClt/ChequeCltDB.java b/src/main/java/Models/ChequeClt/ChequeCltDB.java new file mode 100644 index 0000000..339f82f --- /dev/null +++ b/src/main/java/Models/ChequeClt/ChequeCltDB.java @@ -0,0 +1,895 @@ +package Models.ChequeClt; + +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Caisse.CaisseClt; +import Models.User.User; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.User.Profile; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import Models.Caisse.CaisseDB; +import Models.User.ProfileDB; + +/** + * FXML Controller class + * @author Maher Ben Tili + */ +public class ChequeCltDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public ChequeClt getChequeCltByIdHistorique(String IdHistoriqueChequeClt){ + + ChequeClt Cheque = new ChequeClt(); + Profile profile= new Profile(); + Client client = new Client(); + ClientEntreprise Entreprise = new ClientEntreprise(); + ClientPassager Passager = new ClientPassager(); + + String req =" SELECT C.id_chequeclt, C.numero, C.banque, C.montant, C.nom_complet, C.etat_cheque, DATE_FORMAT(C.date_paiement, '%d/%m/%Y') AS date_paiement, C.date_creation, C.id_factureclt, C.local_nom, " + + " C.id_profile, P.nom AS NomProfile, P.prenom AS PrenomProfile, " + + " F.typeclt, " + + " F.idcltexiste AS IdClient, Clt.nom AS NomClient, Clt.Prenom AS PrenomClient, Clt.telefix, Clt.telemobile, Clt.adresse AS adress_client, " + + " F.idcltentreprise AS IdEntreprise, Etr.nomentrepise AS NomEntreprise, Etr.matricule_fiscale AS MatriculeEntreprise, Etr.telefix, Etr.telefix2, Etr.adresse AS adress_entre, " + + " Pas.idcltpassageur AS IdPassageur, Pas.nom AS NomPassageur, Pas.Prenom AS PrenomPassageur, Pas.tele, Pas.gsm, Pas.adresse AS adress_pas " + + " FROM historique_cheque_clt H, cheque_clt C, profile P, factureclt F " + + " LEFT JOIN client Clt ON (F.typeclt = 0) AND (F.idcltexiste = Clt.codeclient) AND (Clt.local_nom = F.local_nom) " + + " LEFT JOIN cltentreprise Etr ON (F.typeclt = 1) AND (F.idcltentreprise = Etr.idcliententreprise) AND (Etr.local_nom = F.local_nom) " + + " LEFT JOIN cltpassageur Pas ON (F.typeclt = 2) AND (F.idcltpassageur = Pas.idcltpassageur) AND (Pas.local_nom = F.local_nom) " + + " WHERE (H.id_historique_cheque_clt = '"+IdHistoriqueChequeClt+"') AND (H.id_chequeclt = C.id_chequeclt) AND (H.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (C.id_profile = P.idprofile) AND (C.id_factureclt = F.idfactureclt);"; + + ResultSet Result = cnx.Fetch(req); + + try{ + Cheque.setCodeChequeClt(Result.getString("id_chequeclt")); + Cheque.setNumeroChequeClt(Result.getString("numero")); + Cheque.setBanqueChequeClt(Result.getString("banque")); + Cheque.setMontantChequeClt(Result.getString("montant")); + Cheque.setNomCompletChequeClt(Result.getString("nom_complet")); + Cheque.setDatePaiement(Result.getString("date_paiement")); + Cheque.setDateCreation(Result.getString("date_creation")); + Cheque.setCodeFactureClt(Result.getString("id_factureclt")); + Cheque.setLocalNom(Result.getString("local_nom")); + + // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + if(Result.getString("etat_cheque") != null){ + Cheque.setLastEtat(Result.getInt("etat_cheque")); + } + + + profile.setIdprofile(Result.getInt("id_profile")); + profile.setNom(Result.getString("NomProfile")); + profile.setPrenom(Result.getString("PrenomProfile")); + Cheque.setProfile(profile); + + Cheque.setTypeClient(Result.getInt("typeclt")); + if(Result.getInt("typeclt") == 0){ + client.setCodeclient(Result.getString("IdClient")); + client.setNom(Result.getString("NomClient")); + client.setPrenom(Result.getString("PrenomClient")); + client.setTelefixString(Result.getString("telefix")); + client.setTelemobileString(Result.getString("telemobile")); + client.setAdresse(Result.getString("adress_client")); + Cheque.setCltPersonne(client); + }else if(Result.getInt("typeclt") == 1){ + Entreprise.setCodeString(Result.getString("IdEntreprise")); + Entreprise.setNom(Result.getString("NomEntreprise")); + Entreprise.setMatricule(Result.getString("MatriculeEntreprise")); + Entreprise.setTele1String(Result.getString("telefix")); + Entreprise.setTele2String(Result.getString("telefix2")); + Entreprise.setAdresse(Result.getString("adress_entre")); + Cheque.setCltEntreprise(Entreprise); + }else if(Result.getInt("typeclt") == 2){ + Passager.setCodeclient(Result.getString("IdPassageur")); + Passager.setNom(Result.getString("NomPassageur")); + Passager.setPrenom(Result.getString("PrenomPassageur")); + Passager.setTelefixString(Result.getString("tele")); + Passager.setTelemobileString(Result.getString("gsm")); + Passager.setAdresse(Result.getString("adress_pas")); + Cheque.setCltPassager(Passager); + } + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + return Cheque; + } + + + public ChequeClt getChequeCltByFacture(String IdFactureClt){ + ChequeClt Cheque = new ChequeClt(); + Profile profile= new Profile(); + Client client = new Client(); + ClientEntreprise Entreprise = new ClientEntreprise(); + ClientPassager Passager = new ClientPassager(); + + String req =" SELECT C.id_chequeclt, C.numero, C.banque, C.montant, C.nom_complet, C.etat_cheque, DATE_FORMAT(C.date_paiement, '%d/%m/%Y') AS date_paiement, C.date_creation, C.id_factureclt, C.local_nom, " + + " C.id_profile, P.nom AS NomProfile, P.prenom AS PrenomProfile, " + + " F.typeclt, " + + " F.idcltexiste AS IdClient, Clt.nom AS NomClient, Clt.Prenom AS PrenomClient, Clt.telefix, Clt.telemobile, Clt.adresse AS adress_client, " + + " F.idcltentreprise AS IdEntreprise, Etr.nomentrepise AS NomEntreprise, Etr.matricule_fiscale AS MatriculeEntreprise, Etr.telefix, Etr.telefix2, Etr.adresse AS adress_entre, " + + " Pas.idcltpassageur AS IdPassageur, Pas.nom AS NomPassageur, Pas.Prenom AS PrenomPassageur, Pas.tele, Pas.gsm, Pas.adresse AS adress_pas " + + " FROM cheque_clt C, profile P, factureclt F " + + " LEFT JOIN client Clt ON (F.typeclt = 0) AND (F.idcltexiste = Clt.codeclient) AND (Clt.local_nom = F.local_nom) " + + " LEFT JOIN cltentreprise Etr ON (F.typeclt = 1) AND (F.idcltentreprise = Etr.idcliententreprise) AND (Etr.local_nom = F.local_nom) " + + " LEFT JOIN cltpassageur Pas ON (F.typeclt = 2) AND (F.idcltpassageur = Pas.idcltpassageur) AND (Pas.local_nom = F.local_nom) " + + " WHERE (C.id_factureclt = '"+IdFactureClt+"') AND (C.id_profile = P.idprofile) AND (C.id_factureclt = F.idfactureclt);"; + + ResultSet Result = cnx.Fetch(req); + + try{ + Cheque.setCodeChequeClt(Result.getString("id_chequeclt")); + Cheque.setNumeroChequeClt(Result.getString("numero")); + Cheque.setBanqueChequeClt(Result.getString("banque")); + Cheque.setMontantChequeClt(Result.getString("montant")); + Cheque.setNomCompletChequeClt(Result.getString("nom_complet")); + Cheque.setDatePaiement(Result.getString("date_paiement")); + Cheque.setDateCreation(Result.getString("date_creation")); + Cheque.setCodeFactureClt(Result.getString("id_factureclt")); + Cheque.setLocalNom(Result.getString("local_nom")); + + // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + if(Result.getString("etat_cheque") != null){ + Cheque.setLastEtat(Result.getInt("etat_cheque")); + } + + + profile.setIdprofile(Result.getInt("id_profile")); + profile.setNom(Result.getString("NomProfile")); + profile.setPrenom(Result.getString("PrenomProfile")); + Cheque.setProfile(profile); + + Cheque.setTypeClient(Result.getInt("typeclt")); + if(Result.getInt("typeclt") == 0){ + client.setCodeclient(Result.getString("IdClient")); + client.setNom(Result.getString("NomClient")); + client.setPrenom(Result.getString("PrenomClient")); + client.setTelefixString(Result.getString("telefix")); + client.setTelemobileString(Result.getString("telemobile")); + client.setAdresse(Result.getString("adress_client")); + Cheque.setCltPersonne(client); + }else if(Result.getInt("typeclt") == 1){ + Entreprise.setCodeString(Result.getString("IdEntreprise")); + Entreprise.setNom(Result.getString("NomEntreprise")); + Entreprise.setMatricule(Result.getString("MatriculeEntreprise")); + Entreprise.setTele1String(Result.getString("telefix")); + Entreprise.setTele2String(Result.getString("telefix2")); + Entreprise.setAdresse(Result.getString("adress_entre")); + Cheque.setCltEntreprise(Entreprise); + }else if(Result.getInt("typeclt") == 2){ + Passager.setCodeclient(Result.getString("IdPassageur")); + Passager.setNom(Result.getString("NomPassageur")); + Passager.setPrenom(Result.getString("PrenomPassageur")); + Passager.setTelefixString(Result.getString("tele")); + Passager.setTelemobileString(Result.getString("gsm")); + Passager.setAdresse(Result.getString("adress_pas")); + Cheque.setCltPassager(Passager); + } + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + return Cheque; + } + + + + public ChequeClt getChequeClt(String IdChequeClt, Integer Source){ + ChequeClt Cheque = new ChequeClt(); + Profile profile= new Profile(); + Client client = new Client(); + ClientEntreprise Entreprise = new ClientEntreprise(); + ClientPassager Passager = new ClientPassager(); + + String req =""; + + if(Source == 0){ + req ="SELECT " + + " C.id_chequeclt, C.numero, C.banque, C.montant, C.nom_complet, C.etat_cheque, DATE_FORMAT(C.date_paiement, '%d/%m/%Y') AS date_paiement, C.date_creation, C.id_factureclt, C.local_nom, " + + " C.id_profile, P.nom AS NomProfile, P.prenom AS PrenomProfile, " + + " F.typeclt, " + + " F.idcltexiste AS IdClient, Clt.nom AS NomClient, Clt.Prenom AS PrenomClient, Clt.telefix, Clt.telemobile, Clt.adresse AS adress_client, " + + " F.idcltentreprise AS IdEntreprise, Etr.nomentrepise AS NomEntreprise, Etr.matricule_fiscale AS MatriculeEntreprise, Etr.telefix, Etr.telefix2, Etr.adresse AS adress_entre, " + + " Pas.idcltpassageur AS IdPassageur, Pas.nom AS NomPassageur, Pas.Prenom AS PrenomPassageur, Pas.tele, Pas.gsm, Pas.adresse AS adress_pas " + + " FROM cheque_clt C, profile P, factureclt F " + + " LEFT JOIN client Clt ON (F.typeclt = 0) AND (F.idcltexiste = Clt.codeclient) AND (Clt.local_nom = F.local_nom) " + + " LEFT JOIN cltentreprise Etr ON (F.typeclt = 1) AND (F.idcltentreprise = Etr.idcliententreprise) AND (Etr.local_nom = F.local_nom) " + + " LEFT JOIN cltpassageur Pas ON (F.typeclt = 2) AND (F.idcltpassageur = Pas.idcltpassageur) AND (Pas.local_nom = F.local_nom) " + + " WHERE (id_chequeclt = '"+IdChequeClt+"') AND (C.id_profile = P.idprofile) AND (C.id_factureclt = F.idfactureclt);"; + }else if(Source == 1){ + req ="SELECT " + + " C.id_traite_paiement_cheque AS id_chequeclt, " + + " C.numero, " + + " C.banque, " + + " C.montant_payer AS montant, " + + " C.nom_complet, " + + " C.etat_cheque, " + + " DATE_FORMAT(C.date_payer, '%d/%m/%Y') AS date_paiement, " + + " C.date_creation, " + + " F.idfactureclt AS id_factureclt, " + + " C.local_nom, " + + " C.id_profile, P.nom AS NomProfile, P.prenom AS PrenomProfile, " + + " F.typeclt, " + + " F.idcltexiste AS IdClient, Clt.nom AS NomClient, Clt.Prenom AS PrenomClient, Clt.telefix, Clt.telemobile, Clt.adresse AS adress_client, " + + " F.idcltentreprise AS IdEntreprise, Etr.nomentrepise AS NomEntreprise, Etr.matricule_fiscale AS MatriculeEntreprise, Etr.telefix, Etr.telefix2, Etr.adresse AS adress_entre, " + + " Pas.idcltpassageur AS IdPassageur, Pas.nom AS NomPassageur, Pas.Prenom AS PrenomPassageur, Pas.tele, Pas.gsm, Pas.adresse AS adress_pas " + + " FROM traite_paiement_cheque_clt C, profile P, traite_clt T, factureclt F " + + " LEFT JOIN client Clt ON (F.typeclt = 0) AND (F.idcltexiste = Clt.codeclient) AND (Clt.local_nom = F.local_nom) " + + " LEFT JOIN cltentreprise Etr ON (F.typeclt = 1) AND (F.idcltentreprise = Etr.idcliententreprise) AND (Etr.local_nom = F.local_nom) " + + " LEFT JOIN cltpassageur Pas ON (F.typeclt = 2) AND (F.idcltpassageur = Pas.idcltpassageur) AND (Pas.local_nom = F.local_nom) " + + " WHERE (C.id_traite_paiement_cheque = '"+IdChequeClt+"') AND (C.id_profile = P.idprofile) AND (C.id_traite = T.id_traite) AND (T.id_factureclt = F.idfactureclt) AND (T.local_nom = C.local_nom);"; + } + ResultSet Result = cnx.Fetch(req); + try{ + Cheque.setCodeChequeClt(Result.getString("id_chequeclt")); + Cheque.setNumeroChequeClt(Result.getString("numero")); + Cheque.setBanqueChequeClt(Result.getString("banque")); + Cheque.setMontantChequeClt(Result.getString("montant")); + Cheque.setMontantFloatChequeClt(Result.getFloat("montant")); + Cheque.setNomCompletChequeClt(Result.getString("nom_complet")); + Cheque.setDatePaiement(Result.getString("date_paiement")); + Cheque.setDateCreation(Result.getString("date_creation")); + Cheque.setCodeFactureClt(Result.getString("id_factureclt")); + Cheque.setLocalNom(Result.getString("local_nom")); + + // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + if(Result.getString("etat_cheque") != null){ + Cheque.setLastEtat(Result.getInt("etat_cheque")); + } + + + profile.setIdprofile(Result.getInt("id_profile")); + profile.setNom(Result.getString("NomProfile")); + profile.setPrenom(Result.getString("PrenomProfile")); + Cheque.setProfile(profile); + + Cheque.setTypeClient(Result.getInt("typeclt")); + if(Result.getInt("typeclt") == 0){ + client.setCodeclient(Result.getString("IdClient")); + client.setNom(Result.getString("NomClient")); + client.setPrenom(Result.getString("PrenomClient")); + client.setTelefixString(Result.getString("telefix")); + client.setTelemobileString(Result.getString("telemobile")); + client.setAdresse(Result.getString("adress_client")); + Cheque.setCltPersonne(client); + }else if(Result.getInt("typeclt") == 1){ + Entreprise.setCodeString(Result.getString("IdEntreprise")); + Entreprise.setNom(Result.getString("NomEntreprise")); + Entreprise.setMatricule(Result.getString("MatriculeEntreprise")); + Entreprise.setTele1String(Result.getString("telefix")); + Entreprise.setTele2String(Result.getString("telefix2")); + Entreprise.setAdresse(Result.getString("adress_entre")); + Cheque.setCltEntreprise(Entreprise); + }else if(Result.getInt("typeclt") == 2){ + Passager.setCodeclient(Result.getString("IdPassageur")); + Passager.setNom(Result.getString("NomPassageur")); + Passager.setPrenom(Result.getString("PrenomPassageur")); + Passager.setTelefixString(Result.getString("tele")); + Passager.setTelemobileString(Result.getString("gsm")); + Passager.setAdresse(Result.getString("adress_pas")); + Cheque.setCltPassager(Passager); + } + + Cheque.setHistoriqueListe(this.getListChequeHistorique(IdChequeClt, Source)); + + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + return Cheque; + } + + + public ObservableList getListChequeHistorique(String id_cheque, Integer source){ + + ObservableList ListChequeHistorique = FXCollections.observableArrayList(); + + String Query = ""; + if(source == 0){ + Query = "SELECT C.id_historique_cheque_clt, C.etat_cheque, DATE_FORMAT(C.date, '%d/%m/%Y') AS date_operation, DATE_FORMAT(date, '%H:%i:%s') AS heur_operation, C.id_chequeclt AS id_cheque, C.local_nom, C.id_profile, P.nom, P.prenom " + + " FROM historique_cheque_clt C, `profile` P " + + " WHERE (C.local_nom LIKE '"+ParametreSystem.NomLocalPC+"') AND (C.id_chequeclt = '"+id_cheque+"') AND (P.idprofile = C.`id_profile`) ; "; + }else if(source == 1){ + Query = "SELECT C.id_historique_cheque_clt, C.etat_cheque, DATE_FORMAT(C.date, '%d/%m/%Y') AS date_operation, DATE_FORMAT(date, '%H:%i:%s') AS heur_operation, C.id_chequeclt AS id_cheque, C.local_nom, C.id_profile, P.nom, P.prenom " + + " FROM historique_cheque_clt C, `profile` P " + + " WHERE (C.local_nom LIKE '"+ParametreSystem.NomLocalPC+"') AND (C.id_traite_paiement_cheque = '"+id_cheque+"') AND (P.idprofile = C.`id_profile`) ; "; + } + + ResultSet resultat= cnx.FetchALL(Query); + + try { + while ( resultat.next() ) { + String id_historique = resultat.getString("id_historique_cheque_clt"); + Integer etat = resultat.getInt("etat_cheque"); + String date_operation = resultat.getString("date_operation"); + String heur_operation = resultat.getString("heur_operation"); + String utilisateur = resultat.getString("nom")+" "+resultat.getString("prenom"); + String locale = resultat.getString("local_nom"); + ListChequeHistorique.add(new ChequeCltHistoriqueListe(id_historique, etat, source, id_cheque, date_operation, heur_operation, utilisateur, locale)); + } + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + return ListChequeHistorique; + } + + + + public String AddChequeClt(ChequeClt Cheque){ + String req ="INSERT INTO cheque_clt (`numero`, `banque`, `montant`, `nom_complet`, `date_paiement`, `date_creation`, `id_factureclt`, `local_nom`, id_profile) VALUES ('"+Cheque.getNumeroChequeClt()+"', '"+Cheque.getBanqueChequeClt()+"', "+Cheque.getMontantChequeClt()+", '"+Cheque.getNomCompletChequeClt()+"', '"+Cheque.getDatePaiement()+"', CURTIME(), "+Cheque.getCodeFactureClt()+", '"+ParametreSystem.NomLocalPC+"', "+User.idprofile+")"; + return cnx.InsertGetLastId(req); + } + + public void AddListeChequeClt(ArrayList ListChequeClt, String CodeFactureClt){ + String ReqChequeClt = "INSERT INTO cheque_clt (`numero`, `banque`, `montant`, `nom_complet`, `date_paiement`, `date_creation`, `id_factureclt`, `local_nom`, id_profile) VALUES "; + String Req = ""; + + for(int i=0; i DataListChequeClt = FXCollections.observableArrayList(); + + String WhereReq1 = ""; + String WhereReq2 = ""; + + if(!clt.isStringNull(NumeroCheque)){ + WhereReq1 += " (C.numero LIKE \"%"+Adaptateur.addSlashes(NumeroCheque)+"%\") AND "; + WhereReq2 += " (C.numero LIKE \"%"+Adaptateur.addSlashes(NumeroCheque)+"%\") AND "; + } + + if(!clt.isStringNull(Banque)){ + WhereReq1 += " (C.banque LIKE \"%"+Adaptateur.addSlashes(Banque)+"%\") AND "; + WhereReq2 += " (C.banque LIKE \"%"+Adaptateur.addSlashes(Banque)+"%\") AND "; + } + + if(!clt.isStringNull(DateCheque)){ + WhereReq1 += " (C.date_paiement = \""+DateCheque+"\") AND "; + WhereReq2 += " (C.date_payer = \""+DateCheque+"\") AND "; + } + + if(!clt.isStringNull(CodeClt)){ + WhereReq1 += " ( (O.codeclient = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + WhereReq2 += " ( (O.codeclient = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + } + + if(!clt.isStringNull(CINClt)){ + WhereReq1 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + WhereReq2 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + } + + if(!clt.isStringNull(NomClt)){ + WhereReq1 += " ( (P.nom LIKE \"%"+NomClt+"%\") OR (O.nom LIKE \"%"+NomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomClt+"%\") ) AND "; + WhereReq2 += " ( (O.nom LIKE \"%"+NomClt+"%\") OR (O.nom LIKE \"%"+NomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomClt+"%\") ) AND "; + } + + if(!clt.isStringNull(PrenomClt)){ + WhereReq1 += " ( (P.prenom LIKE \"%"+PrenomClt+"%\") OR (O.prenom LIKE \"%"+PrenomClt+"%\") OR (E.matricule_fiscale LIKE \"%"+PrenomClt+"%\") ) AND "; + WhereReq2 += " ( (O.prenom LIKE \"%"+PrenomClt+"%\") OR (O.prenom LIKE \"%"+PrenomClt+"%\") OR (E.matricule_fiscale LIKE \"%"+PrenomClt+"%\") ) AND "; + } + + if(!clt.isStringNull(IdFacture)){ + WhereReq1 += " (C.id_factureclt = \""+IdFacture+"\") AND "; + WhereReq2 += " (T.id_factureclt = \""+IdFacture+"\") AND "; + } + + + String req= "SELECT C.id_chequeclt, '0' AS source_cheque, C.numero, C.banque, C.montant, C.etat_cheque, DATE_FORMAT(C.date_paiement, '%d/%m/%Y') AS date_cheque, C.id_factureclt, F.typeclt, O.codeclient, O.nom, O.prenom, P.idcltpassageur , P.nom AS nom_pass, P.prenom AS prenom_pass, E.idcliententreprise, E.nomentrepise, E.matricule_fiscale " + + " FROM cheque_clt C, factureclt F " + + " LEFT JOIN client O ON (O.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN cltpassageur P ON (P.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + " WHERE "+WhereReq1+" (C.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (C.id_factureclt = F.idfactureclt) " + + " UNION ALL " + + " SELECT C.id_traite_paiement_cheque AS id_chequeclt, '1' AS source_cheque, C.numero, C.banque, C.montant_payer AS montant, C.etat_cheque, DATE_FORMAT(C.date_payer, '%d/%m/%Y') AS date_cheque, T.id_factureclt, F.typeclt, O.codeclient, O.nom, O.prenom, P.idcltpassageur , P.nom AS nom_pass, P.prenom AS prenom_pass, E.idcliententreprise, E.nomentrepise, E.matricule_fiscale " + + " FROM traite_paiement_cheque_clt C, traite_clt T, factureclt F " + + " LEFT JOIN client O ON (O.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN cltpassageur P ON (P.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + " WHERE "+WhereReq2+" (C.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (T.id_factureclt = F.idfactureclt) AND (C.id_traite = T.id_traite)" + + " LIMIT "+debut+" , "+nbr+" ;"; + + try { + ResultSet resultat= cnx.FetchALL(req); + + while ( resultat.next() ) { + + String id_cheque = resultat.getString("id_chequeclt"); + String numero = resultat.getString("numero"); + String banque = resultat.getString("banque"); + String montant = Adaptateur.FloatToStringEspace(resultat.getFloat("montant")); + String date_cheque = resultat.getString("date_cheque"); + String id_factureclt = resultat.getString("id_factureclt"); + + //0 Personne 1 Entreprise + Integer Typeclt = resultat.getInt("typeclt"); + String TypeClient = ""; String CodeClient = ""; String Nom = ""; String Prenom = ""; + if(Typeclt == 0){ + TypeClient = "Personne"; + CodeClient = resultat.getString("codeclient"); + Nom = resultat.getString("nom"); + Prenom = resultat.getString("prenom"); + }if(Typeclt == 1){ + TypeClient = "Entreprise"; + CodeClient = resultat.getString("idcliententreprise"); + Nom = resultat.getString("nomentrepise"); + Prenom = resultat.getString("matricule_fiscale"); + }if(Typeclt == 2){ + TypeClient = "Passageur"; + CodeClient = resultat.getString("idcltpassageur"); + Nom = resultat.getString("nom_pass"); + Prenom = resultat.getString("prenom_pass"); + } + + // 0 ==> Cheque sans provision + // 1 ==> Verser (Valider) + // 2 ==> Contre chèque + String etat = resultat.getString("etat_cheque"); + + + // 0 ==> Cheque (table cheque_clt) + // 1 ==> Traite (table traite_paiement_cheque_clt) + Integer source = resultat.getInt("source_cheque"); + + DataListChequeClt.add(new ChequeCltGestionListe(id_cheque, numero, banque, date_cheque, montant, CodeClt, TypeClient, Nom, Prenom, id_factureclt, etat, source, false)); + } + + } catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + return DataListChequeClt; + } + + public Integer nbrChequeCltGestion(String NumeroCheque, String Banque, String DateCheque, String CodeClt, String CINClt, String IdFacture, String NomClt, String PrenomClt){ + + String WhereReq1 = ""; + String WhereReq2 = ""; + + if(!clt.isStringNull(NumeroCheque)){ + WhereReq1 += " (C.numero LIKE \"%"+Adaptateur.addSlashes(NumeroCheque)+"%\") AND "; + WhereReq2 += " (C.numero LIKE \"%"+Adaptateur.addSlashes(NumeroCheque)+"%\") AND "; + } + + if(!clt.isStringNull(Banque)){ + WhereReq1 += " (C.banque LIKE \"%"+Adaptateur.addSlashes(Banque)+"%\") AND "; + WhereReq2 += " (C.banque LIKE \"%"+Adaptateur.addSlashes(Banque)+"%\") AND "; + } + + if(!clt.isStringNull(DateCheque)){ + WhereReq1 += " (C.date_paiement = \""+DateCheque+"\") AND "; + WhereReq2 += " (C.date_payer = \""+DateCheque+"\") AND "; + } + + if(!clt.isStringNull(CodeClt)){ + WhereReq1 += " ( (O.codeclient = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + WhereReq2 += " ( (O.codeclient = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + } + + if(!clt.isStringNull(CINClt)){ + WhereReq1 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + WhereReq2 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + } + + if(!clt.isStringNull(NomClt)){ + WhereReq1 += " ( (P.nom LIKE \"%"+NomClt+"%\") OR (O.nom LIKE \"%"+NomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomClt+"%\") ) AND "; + WhereReq2 += " ( (O.nom LIKE \"%"+NomClt+"%\") OR (O.nom LIKE \"%"+NomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomClt+"%\") ) AND "; + } + + if(!clt.isStringNull(PrenomClt)){ + WhereReq1 += " ( (P.prenom LIKE \"%"+PrenomClt+"%\") OR (O.prenom LIKE \"%"+PrenomClt+"%\") OR (E.matricule_fiscale LIKE \"%"+PrenomClt+"%\") ) AND "; + WhereReq2 += " ( (O.prenom LIKE \"%"+PrenomClt+"%\") OR (O.prenom LIKE \"%"+PrenomClt+"%\") OR (E.matricule_fiscale LIKE \"%"+PrenomClt+"%\") ) AND "; + } + + if(!clt.isStringNull(IdFacture)){ + WhereReq1 += " (C.id_factureclt = \""+IdFacture+"\") AND "; + WhereReq2 += " (T.id_factureclt = \""+IdFacture+"\") AND "; + } + + + String req= "SELECT COUNT(C.id_chequeclt) AS nbr_cheque" + + " FROM cheque_clt C, factureclt F " + + " LEFT JOIN client O ON (O.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN cltpassageur P ON (P.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + " WHERE "+WhereReq1+" (C.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (C.id_factureclt = F.idfactureclt) " + + " UNION ALL " + + " SELECT COUNT(C.id_traite_paiement_cheque) AS nbr_cheque " + + " FROM traite_paiement_cheque_clt C, traite_clt T, factureclt F " + + " LEFT JOIN client O ON (O.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN cltpassageur P ON (P.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + " WHERE "+WhereReq2+" (C.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (T.id_factureclt = F.idfactureclt) AND (C.id_traite = T.id_traite) ; "; + + Integer Sommme = 0; + + try { + ResultSet resultat= cnx.FetchALL(req); + + while ( resultat.next() ) { + Sommme += resultat.getInt("nbr_cheque"); + } + + } catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + + return Sommme ; + + } + + + //Etat 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + //Source 0==>Cheque(table cheque_clt) 1==>Traite(table traite_paiement_cheque_clt) + public String setHistoriqueCheque(Integer Etat, Integer Source, ChequeClt Cheque){ + String QueryINSERT = ""; + String QueryUpdate = ""; + + if(Source == 0){ + QueryINSERT = "INSERT INTO `historique_cheque_clt` (`etat_cheque`, `date`, `id_chequeclt`, `local_nom`, `id_profile`) VALUES ('"+Etat+"', CURTIME(), '"+Cheque.getCodeChequeClt()+"', '"+ParametreSystem.NomLocalPC+"', '"+User.idprofile+"');"; + QueryUpdate = "UPDATE `cheque_clt` SET `etat_cheque`='"+Etat+"' WHERE `id_chequeclt`='"+Cheque.getCodeChequeClt()+"';"; + }else if(Source == 1){ + QueryINSERT = "INSERT INTO `historique_cheque_clt` (`etat_cheque`, `date`, `id_traite_paiement_cheque`, `local_nom`, `id_profile`) VALUES ('"+Etat+"', CURTIME(), '"+Cheque.getCodeChequeClt()+"', '"+ParametreSystem.NomLocalPC+"', '"+User.idprofile+"');"; + QueryUpdate = "UPDATE `traite_paiement_cheque_clt` SET `etat_cheque`='"+Etat+"' WHERE `id_traite_paiement_cheque`='"+Cheque.getCodeChequeClt()+"';"; + } + + cnx.MettreAJour(QueryUpdate); + + String IdHistoriqueCheque = cnx.InsertGetLastId(QueryINSERT); + + + if((Etat == 1) || (Etat == 2)){ + CaisseClt Caisse = new CaisseClt(); + Caisse.setTypeMouvement("4"); + Caisse.setMontant(Cheque.getMontantChequeClt()); + Caisse.setIdHistoriqueCheque(IdHistoriqueCheque); + + CaisseDB CaisseDB = new CaisseDB(); + CaisseDB.AddCaisse(Caisse); + } + + + + + + return IdHistoriqueCheque; + } + + + public ObservableList GetDataChequeAverser(String date_debut, String date_fin){ + + ObservableList DataListChequeClt = FXCollections.observableArrayList(); + + String req= "SELECT C.id_chequeclt, '0' AS source_cheque, C.numero, C.banque, C.montant, C.etat_cheque, DATE_FORMAT(C.date_paiement, '%d/%m/%Y') AS date_cheque, C.id_factureclt, F.typeclt, O.codeclient, O.nom, O.prenom, P.idcltpassageur , P.nom AS nom_pass, P.prenom AS prenom_pass, E.idcliententreprise, E.nomentrepise, E.matricule_fiscale " + + " FROM cheque_clt C, factureclt F " + + " LEFT JOIN client O ON (O.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN cltpassageur P ON (P.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + " WHERE (C.date_paiement BETWEEN '"+date_debut+"' AND '"+date_fin+"') AND ((C.etat_cheque IS NULL) OR (C.etat_cheque = 0)) AND (C.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (C.id_factureclt = F.idfactureclt) " + + " UNION ALL " + + " SELECT C.id_traite_paiement_cheque AS id_chequeclt, '1' AS source_cheque, C.numero, C.banque, C.montant_payer AS montant, C.etat_cheque, DATE_FORMAT(C.date_payer, '%d/%m/%Y') AS date_cheque, T.id_factureclt, F.typeclt, O.codeclient, O.nom, O.prenom, P.idcltpassageur , P.nom AS nom_pass, P.prenom AS prenom_pass, E.idcliententreprise, E.nomentrepise, E.matricule_fiscale " + + " FROM traite_paiement_cheque_clt C, traite_clt T, factureclt F " + + " LEFT JOIN client O ON (O.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN cltpassageur P ON (P.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + " WHERE (C.date_payer BETWEEN '"+date_debut+"' AND '"+date_fin+"') AND ((C.etat_cheque IS NULL) OR (C.etat_cheque = 0)) AND (C.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (T.id_factureclt = F.idfactureclt) AND (C.id_traite = T.id_traite)" + + " ORDER BY date_cheque ASC ;"; + + try { + ResultSet resultat= cnx.FetchALL(req); + + while ( resultat.next() ) { + + String id_cheque = resultat.getString("id_chequeclt"); + String numero = resultat.getString("numero"); + String banque = resultat.getString("banque"); + String montant = resultat.getString("montant"); + String date_cheque = resultat.getString("date_cheque"); + + //0 Personne 1 Entreprise + Integer Typeclt = resultat.getInt("typeclt"); + String TypeClient = ""; String Nom = ""; String Prenom = ""; + if(Typeclt == 0){ + TypeClient = "Personne";//ancien client + Nom = resultat.getString("nom"); + Prenom = resultat.getString("prenom"); + }if(Typeclt == 1){ + TypeClient = "Entreprise"; + Nom = resultat.getString("nomentrepise"); + Prenom = resultat.getString("matricule_fiscale"); + }if(Typeclt == 2){ + TypeClient = "Passageur"; + Nom = resultat.getString("nom_pass"); + Prenom = resultat.getString("prenom_pass"); + } + + // 0 ==> Cheque (table cheque_clt) + // 1 ==> Traite (table traite_paiement_cheque_clt) + Integer source = resultat.getInt("source_cheque"); + + DataListChequeClt.add(new ChequeCltGestionListe(id_cheque, numero, banque, date_cheque, montant, "", TypeClient, Nom, Prenom, "", "", source, false)); + } + + } catch(SQLException ex){ + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + return DataListChequeClt; + } + + public int UpdateChequeCltVerser(List AryChequeClt, List AryChequePaiementTraite){ + int NbrUpdate = 0; + + + if(AryChequeClt.size()>0){ + String StrChequeClt = String.join(",", AryChequeClt); + String QueryUpdate1 = "UPDATE cheque_clt SET `etat_cheque` = '1' WHERE (`id_chequeclt` IN ("+StrChequeClt+") ) and (`local_nom` = '"+ParametreSystem.NomLocalPC+"');"; + NbrUpdate += cnx.MettreAJour(QueryUpdate1); + + String QueryInsert1 = "INSERT INTO historique_cheque_clt (etat_cheque, date, id_chequeclt, local_nom, id_profile) VALUES "; + for (String IdCheque : AryChequeClt) { + QueryInsert1 += " ('1', CURTIME(), '"+IdCheque+"', '"+ParametreSystem.NomLocalPC+"', '"+User.idprofile+"'),"; + } + QueryInsert1 = QueryInsert1.substring(0, QueryInsert1.length()-1) + ";"; + cnx.insertion(QueryInsert1); + + } + if(AryChequePaiementTraite.size()>0){ + String StrPaiementTraite = String.join(",", AryChequePaiementTraite); + String QueryUpdate2 = "UPDATE traite_paiement_cheque_clt SET `etat_cheque` = '1' WHERE (`id_traite_paiement_cheque` IN ("+StrPaiementTraite+") ) and (`local_nom` = '"+ParametreSystem.NomLocalPC+"');"; + NbrUpdate += cnx.MettreAJour(QueryUpdate2); + + String QueryInsert2 = "INSERT INTO `historique_cheque_clt` (`etat_cheque`, `date`, `id_traite_paiement_cheque`, `local_nom`, `id_profile`) VALUES "; + for (String IdCheque : AryChequePaiementTraite) { + QueryInsert2 += " ('1', CURTIME(), '"+IdCheque+"', '"+ParametreSystem.NomLocalPC+"', '"+User.idprofile+"'),"; + } + QueryInsert2 = QueryInsert2.substring(0, QueryInsert2.length()-1) + ";"; + cnx.insertion(QueryInsert2); + } + + return NbrUpdate; + } + + + public ObservableList SearchChequeCltProvision(Integer debut, Integer nbr, String DateDebut, String Local, String Banque, String CodeClt, String CINClt, String NomPrenomClt, boolean All) + { + String WhereReq1 = " WHERE (C.etat_cheque = 0) AND (C.id_factureclt = F.idfactureclt) AND "; + String WhereReq2 = " WHERE (C.etat_cheque = 0) AND (C.local_nom = F.local_nom) AND (T.id_factureclt = F.idfactureclt) AND (C.id_traite = T.id_traite) AND "; + + if(!clt.isStringNull(Local)){ + WhereReq1 += " (C.local_nom = \""+Local+"\") AND "; + WhereReq2 += " (C.local_nom = \""+Local+"\") AND "; + } + + if(!clt.isStringNull(DateDebut)){ + WhereReq1 += " (DATE(C.date_paiement) >= \""+DateDebut+"\") AND "; + WhereReq2 += " (DATE(C.date_payer) >= \""+DateDebut+"\") AND "; + } + + if(!clt.isStringNull(CodeClt)){ + WhereReq1 += " ( (O.codeclient = \""+CodeClt+"\") OR (P.idcltpassageur = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + WhereReq2 += " ( (O.codeclient = \""+CodeClt+"\") OR (P.idcltpassageur = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + } + + if(!clt.isStringNull(CINClt)){ + WhereReq1 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + WhereReq2 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + } + + if(!clt.isStringNull(NomPrenomClt)){ + WhereReq1 += " ( (O.nom LIKE \"%"+NomPrenomClt+"%\") OR (O.prenom LIKE \"%"+NomPrenomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomPrenomClt+"%\") OR (P.prenom LIKE \"%"+NomPrenomClt+"%\") OR (P.nom LIKE \"%"+NomPrenomClt+"%\") ) AND "; + WhereReq2 += " ( (O.nom LIKE \"%"+NomPrenomClt+"%\") OR (O.prenom LIKE \"%"+NomPrenomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomPrenomClt+"%\") OR (P.prenom LIKE \"%"+NomPrenomClt+"%\") OR (P.nom LIKE \"%"+NomPrenomClt+"%\") ) AND "; + } + + WhereReq1 = WhereReq1.substring(0, WhereReq1.length() - 4); + WhereReq2 = WhereReq2.substring(0, WhereReq2.length() - 4); + + + String Limit = ""; + if(All == false){ + Limit = " LIMIT "+debut+" , "+nbr+" ; "; + } + + String req= "SELECT C.id_chequeclt, '0' AS source_cheque, C.numero, C.banque, C.montant, C.etat_cheque, DATE_FORMAT(C.date_paiement, '%d/%m/%Y') AS date_cheque, C.id_factureclt, F.typeclt, O.codeclient, O.nom, O.prenom, P.idcltpassageur , P.nom AS nom_pass, P.prenom AS prenom_pass, E.idcliententreprise, E.nomentrepise, E.matricule_fiscale, F.local_nom " + + " FROM `cheque_clt` C, `factureclt` F " + + " LEFT JOIN `client` O ON (O.local_nom = F.local_nom) AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN `cltpassageur` P ON (P.local_nom = F.local_nom) AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN `cltentreprise` E ON (E.local_nom= F.local_nom) AND (F.idcltentreprise = E.idcliententreprise) " + + WhereReq1 + + " UNION ALL " + + " SELECT C.id_traite_paiement_cheque AS id_chequeclt, '1' AS source_cheque, C.numero, C.banque, C.montant_payer AS montant, C.etat_cheque, DATE_FORMAT(C.date_payer, '%d/%m/%Y') AS date_cheque, T.id_factureclt, F.typeclt, O.codeclient, O.nom, O.prenom, P.idcltpassageur , P.nom AS nom_pass, P.prenom AS prenom_pass, E.idcliententreprise, E.nomentrepise, E.matricule_fiscale, F.local_nom " + + " FROM `traite_paiement_cheque_clt` C, traite_clt T, factureclt F " + + " LEFT JOIN `client` O ON (O.local_nom = F.local_nom) AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN `cltpassageur` P ON (P.local_nom = F.local_nom) AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN `cltentreprise` E ON (E.local_nom = F.local_nom) AND (F.idcltentreprise = E.idcliententreprise) " + + WhereReq2 + + Limit ; + + + ObservableList DataListChequeClt = FXCollections.observableArrayList(); + + try { + ResultSet resultat= cnx.FetchALL(req); + + while ( resultat.next() ) { + + String id_cheque = resultat.getString("id_chequeclt"); + String numero = resultat.getString("numero"); + String banque = resultat.getString("banque"); + String montant = Adaptateur.StringToStringEspace(resultat.getString("montant")); + String date_cheque = resultat.getString("date_cheque"); + + //0 Personne 1 Entreprise + Integer Typeclt = resultat.getInt("typeclt"); + String TypeClient = ""; String Nom = ""; String Prenom = ""; + if(Typeclt == 0){ + TypeClient = "Personne";//ancien client + Nom = resultat.getString("nom"); + Prenom = resultat.getString("prenom"); + }if(Typeclt == 1){ + TypeClient = "Entreprise"; + Nom = resultat.getString("nomentrepise"); + Prenom = resultat.getString("matricule_fiscale"); + }if(Typeclt == 2){ + TypeClient = "Passageur"; + Nom = resultat.getString("nom_pass"); + Prenom = resultat.getString("prenom_pass"); + } + + // 0 ==> Cheque (table cheque_clt) + // 1 ==> Traite (table traite_paiement_cheque_clt) + Integer source = resultat.getInt("source_cheque"); + + String local = resultat.getString("local_nom"); + + DataListChequeClt.add(new ChequeCltGestionListe(id_cheque, numero, banque, date_cheque, montant, "", TypeClient, Nom, Prenom, "", local, source, false)); + } + + } catch(SQLException ex){ + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + return DataListChequeClt; + } + + + public Integer nbrChequeCltProvision(String DateDebut, String Local, String Banque, String CodeClt, String CINClt, String NomPrenomClt) + { + String WhereReq1 = " WHERE (C.etat_cheque = 0) AND (C.id_factureclt = F.idfactureclt) AND "; + String WhereReq2 = " WHERE (C.etat_cheque = 0) AND (C.local_nom = F.local_nom) AND (T.id_factureclt = F.idfactureclt) AND (C.id_traite = T.id_traite) AND "; + + if(!clt.isStringNull(Local)){ + WhereReq1 += " (C.local_nom = \""+Local+"\") AND "; + WhereReq2 += " (C.local_nom = \""+Local+"\") AND "; + } + + if(!clt.isStringNull(DateDebut)){ + WhereReq1 += " (DATE(C.date_paiement) >= \""+DateDebut+"\") AND "; + WhereReq2 += " (DATE(C.date_payer) >= \""+DateDebut+"\") AND "; + } + + if(!clt.isStringNull(CodeClt)){ + WhereReq1 += " ( (O.codeclient = \""+CodeClt+"\") OR (P.idcltpassageur = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + WhereReq2 += " ( (O.codeclient = \""+CodeClt+"\") OR (P.idcltpassageur = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + } + + if(!clt.isStringNull(CINClt)){ + WhereReq1 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + WhereReq2 += " ( (O.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + } + + if(!clt.isStringNull(NomPrenomClt)){ + WhereReq1 += " ( (O.nom LIKE \"%"+NomPrenomClt+"%\") OR (O.prenom LIKE \"%"+NomPrenomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomPrenomClt+"%\") OR (P.prenom LIKE \"%"+NomPrenomClt+"%\") OR (P.nom LIKE \"%"+NomPrenomClt+"%\") ) AND "; + WhereReq2 += " ( (O.nom LIKE \"%"+NomPrenomClt+"%\") OR (O.prenom LIKE \"%"+NomPrenomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomPrenomClt+"%\") OR (P.prenom LIKE \"%"+NomPrenomClt+"%\") OR (P.nom LIKE \"%"+NomPrenomClt+"%\") ) AND "; + } + + WhereReq1 = WhereReq1.substring(0, WhereReq1.length() - 4); + WhereReq2 = WhereReq2.substring(0, WhereReq2.length() - 4); + + String req1 = "SELECT COUNT(C.id_chequeclt) " + + " FROM `cheque_clt` C, `factureclt` F " + + " LEFT JOIN `client` O ON (O.local_nom= F.local_nom) AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN `cltpassageur` P ON (P.local_nom = F.local_nom) AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN `cltentreprise` E ON (E.local_nom= F.local_nom) AND (F.idcltentreprise = E.idcliententreprise) " + + WhereReq1 + + " ; "; + + String req2 = " SELECT COUNT(C.id_traite_paiement_cheque) " + + " FROM `traite_paiement_cheque_clt` C, `traite_clt` T, `factureclt` F " + + " LEFT JOIN `client` O ON (O.local_nom = F.local_nom) AND (F.idcltexiste = O.codeclient) " + + " LEFT JOIN `cltpassageur` P ON (P.local_nom = F.local_nom) AND (F.idcltpassageur = P.idcltpassageur) " + + " LEFT JOIN `cltentreprise` E ON (E.local_nom = F.local_nom) AND (F.idcltentreprise = E.idcliententreprise) " + + WhereReq2 + + " ; "; + + int sommme1 = 0; + int sommme2 = 0; + if(cnx.ouverture()){ + try{ + /* Exécution d'une requête de lecture */ + ResultSet resultat1 = cnx.excutionquery(req1); + resultat1.next(); // get the number of rows from the result set + sommme1 = resultat1.getInt(1); + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req1); + } + } + if(cnx.ouverture()){ + try{ + ResultSet resultat2 = cnx.excutionquery(req2); + resultat2.next(); // get the number of rows from the result set + sommme2 = resultat2.getInt(1); + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req1); + } + } + + return sommme1 + sommme2 ; + } + + + public ChequeClt getChequeClt(String IdCheque){ + + ChequeClt Cheque = new ChequeClt(); + + String Query = "SELECT * FROM `cheque_clt` WHERE `id_chequeclt` = "+IdCheque+";"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + //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){ + Cheque.setCodeChequeClt(resultat.getString("id_chequeclt")); + Cheque.setNumeroChequeClt(resultat.getString("numero")); + Cheque.setBanqueChequeClt(resultat.getString("banque")); + Cheque.setMontantChequeClt(resultat.getString("montant")); + Cheque.setMontantFloatChequeClt(resultat.getFloat("montant")); + Cheque.setNomCompletChequeClt(resultat.getString("nom_complet")); + Cheque.setLastEtat(resultat.getInt("etat_cheque")); + Cheque.setDatePaiement(resultat.getString("date_paiement")); + Cheque.setDateCreation(resultat.getString("date_creation")); + Cheque.setLocalNom(resultat.getString("local_nom")); + Cheque.setProfile(new ProfileDB().getpro(resultat.getInt("id_profile"))); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + return Cheque; + } + +} diff --git a/src/main/java/Models/ChequeClt/ChequeCltGestionListe.java b/src/main/java/Models/ChequeClt/ChequeCltGestionListe.java new file mode 100644 index 0000000..5bb21c4 --- /dev/null +++ b/src/main/java/Models/ChequeClt/ChequeCltGestionListe.java @@ -0,0 +1,111 @@ +/* + * 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.ChequeClt; + +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * @author Maher + */ +public class ChequeCltGestionListe { + + private final SimpleStringProperty IdCheque; + private final SimpleStringProperty NumeroCheque; + private final SimpleStringProperty Banque; + private final SimpleStringProperty DateCheque; + private final SimpleStringProperty Montant; + private final SimpleStringProperty CodeClt; + private final SimpleStringProperty TypeClt; + private final SimpleStringProperty NomClt; + private final SimpleStringProperty PrenomClt; + private final SimpleStringProperty IdFacture; + private final SimpleStringProperty Etat; + private final SimpleBooleanProperty Selected; + + // 0 ==> Cheque (table cheque_clt) + // 1 ==> Traite (table traite_paiement_cheque_clt) + private final SimpleIntegerProperty Source; + + public ChequeCltGestionListe(String id_cheque, String numero_cheque, String banque, String date_cheque, String montant, String code_clt, String type_clt, String nom_clt, String prenom_clt, String id_facture, String etat, Integer source, Boolean is_selected) { + this.IdCheque = new SimpleStringProperty(id_cheque); + this.NumeroCheque = new SimpleStringProperty(numero_cheque); + this.Banque = new SimpleStringProperty(banque); + this.DateCheque = new SimpleStringProperty(date_cheque); + this.Montant = new SimpleStringProperty(montant); + this.CodeClt = new SimpleStringProperty(code_clt); + this.TypeClt = new SimpleStringProperty(type_clt); + this.NomClt = new SimpleStringProperty(nom_clt); + this.PrenomClt = new SimpleStringProperty(prenom_clt); + this.IdFacture = new SimpleStringProperty(id_facture); + this.Etat = new SimpleStringProperty(etat); + this.Source = new SimpleIntegerProperty(source); + this.Selected = new SimpleBooleanProperty(is_selected); + } + + + + public String getIdCheque() { + return IdCheque.get(); + } + + public String getNumeroCheque() { + return NumeroCheque.get(); + } + + public String getBanque() { + return Banque.get(); + } + + public String getDateCheque() { + return DateCheque.get(); + } + public String getMontant() { + return Montant.get(); + } + + public String getCodeClt() { + return CodeClt.get(); + } + + public String getTypeClt() { + return TypeClt.get(); + } + + public String getNomClt() { + return NomClt.get(); + } + + public String getPrenomClt() { + return PrenomClt.get(); + } + + + public String getIdFacture() { + return IdFacture.get(); + } + + public String getEtat() { + return Etat.get(); + } + + public void setEtat(String etat) { + Etat.set(etat); + } + + public Integer getSource() { + return Source.get(); + } + + public Boolean getSelected() { + return Selected.get(); + } + + public void setSelected(Boolean is_select) { + Selected.set(is_select); + } +} diff --git a/src/main/java/Models/ChequeClt/ChequeCltHistoriqueListe.java b/src/main/java/Models/ChequeClt/ChequeCltHistoriqueListe.java new file mode 100644 index 0000000..5e49b24 --- /dev/null +++ b/src/main/java/Models/ChequeClt/ChequeCltHistoriqueListe.java @@ -0,0 +1,69 @@ +/* + * 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.ChequeClt; + +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * @author Maher + */ +public class ChequeCltHistoriqueListe { + + private final SimpleStringProperty IdHistorique; + private final SimpleIntegerProperty Etat; // 0 cheque sans provision 1 Verser (Valider) 2 Contre chéque(espace) + private final SimpleIntegerProperty Source; // 0==>Cheque(table cheque_clt) 1==>Traite(table traite_paiement_cheque_clt) + private final SimpleStringProperty IdCheque; + private final SimpleStringProperty DateOperation; + private final SimpleStringProperty HeurOperation; + private final SimpleStringProperty Utilisateur; //(Nom Prenom Profile utilisateur) + private final SimpleStringProperty Locale; + + public ChequeCltHistoriqueListe(String id_historique, Integer etat, Integer source, String id_cheque, String date_operation, String heur_operation, String utilisateur, String locale) { + this.IdHistorique = new SimpleStringProperty(id_historique); + this.Etat = new SimpleIntegerProperty(etat); + this.Source = new SimpleIntegerProperty(source); + this.IdCheque = new SimpleStringProperty(id_cheque); + this.DateOperation = new SimpleStringProperty(date_operation); + this.HeurOperation = new SimpleStringProperty(heur_operation); + this.Utilisateur = new SimpleStringProperty(utilisateur); + this.Locale = new SimpleStringProperty(locale); + } + + public String getIdCheque() { + return IdCheque.get(); + } + + public String getIdHistorique() { + return IdHistorique.get(); + } + + public Integer getEtat() { + return Etat.get(); + } + + public Integer getSource() { + return Source.get(); + } + + public String getDateOperation() { + return DateOperation.get(); + } + + public String getHeurOperation() { + return HeurOperation.get(); + } + + public String getUtilisateur() { + return Utilisateur.get(); + } + + public String getLocale() { + return Locale.get(); + } + + +} diff --git a/src/main/java/Models/ChequeClt/ChequeList.java b/src/main/java/Models/ChequeClt/ChequeList.java new file mode 100644 index 0000000..04cf235 --- /dev/null +++ b/src/main/java/Models/ChequeClt/ChequeList.java @@ -0,0 +1,138 @@ +package Models.ChequeClt; + +import java.text.SimpleDateFormat; +import java.util.Date; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; + + +public class ChequeList { + + private final SimpleObjectProperty dateCheque; + private final StringProperty NumeroCheque; + private final StringProperty BanqueCheque; + private final StringProperty MontantCheque; + + + + /** + * @param date + * @param NumeroCheque + * @param BanqueCheque + * @param MontantCheque + */ + public ChequeList(Date date, String NumeroCheque, String BanqueCheque, String MontantCheque ) { + this.dateCheque = new SimpleObjectProperty(date); + this.NumeroCheque = new SimpleStringProperty(NumeroCheque); + this.BanqueCheque = new SimpleStringProperty(BanqueCheque); + this.MontantCheque = new SimpleStringProperty(MontantCheque); + } + + + + /** + * @return the NumeroCheque + */ + public String getNumeroCheque() { + return NumeroCheque.get(); + } + + /** + * @param NumeroCheque the NumeroCheque to set + */ + public void setNumeroCheque(String NumeroCheque) { + this.NumeroCheque.set(NumeroCheque); + } + + /** + * @return the NumeroCheque + */ + public StringProperty NumeroChequeProperty() { + return NumeroCheque; + } + + + + + + + /** + * @return the BanqueCheque + */ + public String getBanqueCheque() { + return BanqueCheque.get(); + } + + /** + * @param BanqueCheque the BanqueCheque to set + */ + public void setBanqueCheque(String BanqueCheque) { + this.BanqueCheque.set(BanqueCheque); + } + + /** + * @return the BanqueCheque + */ + public StringProperty BanqueChequeProperty() { + return BanqueCheque; + } + + + + + + /** + * @return the MontantCheque + */ + public String getMontantCheque() { + return MontantCheque.get(); + } + + /** + * @param MontantCheque the MontantCheque to set + */ + public void setMontantCheque(String MontantCheque) { + this.MontantCheque.set(MontantCheque); + } + + /** + * @return the MontantCheque + */ + public StringProperty MontantChequeProperty() { + return MontantCheque; + } + + + + + + + /** + * + * @return + */ + public Date getDate() { + return (Date) dateCheque.get(); + } + + /** + * + * @return + */ + public String getDateAsString() { + SimpleDateFormat smp = new SimpleDateFormat("dd MMMMM yyyy"); + String strDate = (null == dateCheque || null == dateCheque.get()) + ? "" : smp.format(dateCheque.get()); + + return strDate; + } + + /** + * + * @param date + */ + public void setDate(Date date) { + this.dateCheque.set(date); + } +} diff --git a/src/main/java/Models/ChequeClt/DatePickerCellCheque.java b/src/main/java/Models/ChequeClt/DatePickerCellCheque.java new file mode 100644 index 0000000..9171d46 --- /dev/null +++ b/src/main/java/Models/ChequeClt/DatePickerCellCheque.java @@ -0,0 +1,192 @@ +package Models.ChequeClt; + +import Models.ChequeClt.ChequeList; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Calendar; +import java.util.Date; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.event.Event; +import javafx.event.EventHandler; +import javafx.geometry.Pos; +import javafx.scene.control.ContentDisplay; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableCell; + +/** + * DatePicker cell object. + * + * @author Fabrice Sommavilla + * @param + * @param + */ +public class DatePickerCellCheque extends TableCell { + + private DatePicker datePicker; + private ObservableList birthdayData; + + /** + * Constructor. + * + * @param listBirthdays + */ + public DatePickerCellCheque(ObservableList listBirthdays) { + + super(); + + this.birthdayData = listBirthdays; + + if (datePicker == null) { + createDatePicker(); + } + setGraphic(datePicker); + setContentDisplay(ContentDisplay.GRAPHIC_ONLY); + + Platform.runLater(new Runnable() { + @Override + public void run() { + datePicker.requestFocus(); + } + }); + } + + /** + * Override TableCell updateItem method. + * + * @param item + * @param empty + */ + @Override + public void updateItem(Date item, boolean empty) { + + super.updateItem(item, empty); + + SimpleDateFormat smp = new SimpleDateFormat("dd/MM/yyyy"); + + if (null == this.datePicker) { + System.out.println("datePicker is NULL"); + } + + if (empty) { + setText(null); + setGraphic(null); + } else { + + if (isEditing()) { + setContentDisplay(ContentDisplay.TEXT_ONLY); + + } else { + setDatepikerDate(smp.format(item)); + setText(smp.format(item)); + setGraphic(this.datePicker); + setContentDisplay(ContentDisplay.GRAPHIC_ONLY); + } + } + } + + /** + * + * @param dateAsStr + */ + private void setDatepikerDate(String dateAsStr) { + + LocalDate ld = null; + int jour, mois, annee; + + jour = mois = annee = 0; + try { + jour = Integer.parseInt(dateAsStr.substring(0, 2)); + mois = Integer.parseInt(dateAsStr.substring(3, 5)); + annee = Integer.parseInt(dateAsStr.substring(6, dateAsStr.length())); + } catch (NumberFormatException e) { + System.out.println("setDatepikerDate / unexpected error " + e); + } + + ld = LocalDate.of(annee, mois, jour); + datePicker.setValue(ld); + } + + /** + * This method create a textfield with key and focus events. + */ + private void createDatePicker() { + this.datePicker = new DatePicker(); + datePicker.setPromptText("jj/mm/aaaa"); + datePicker.setEditable(true); + + datePicker.setOnAction(new EventHandler() { + public void handle(Event t) { + LocalDate date = datePicker.getValue(); + int index = getIndex(); + + SimpleDateFormat smp = new SimpleDateFormat("dd/MM/yyyy"); + Calendar cal = Calendar.getInstance(); + if(datePicker.getValue() != null){ + cal.set(Calendar.DAY_OF_MONTH, date.getDayOfMonth()); + cal.set(Calendar.MONTH, date.getMonthValue() - 1); + cal.set(Calendar.YEAR, date.getYear()); + + setText(smp.format(cal.getTime())); + commitEdit(cal.getTime()); + + if (null != getBirthdayData()) { + getBirthdayData().get(index).setDate(cal.getTime()); + } + } + } + }); + + setAlignment(Pos.CENTER); + } + + /** + * + */ + @Override + public void startEdit() { + super.startEdit(); + } + + /** + * Override TableCell cancelEdit method. + */ + @Override + public void cancelEdit() { + super.cancelEdit(); + setContentDisplay(ContentDisplay.TEXT_ONLY); + } + + /** + * + * @return + */ + public ObservableList getBirthdayData() { + return birthdayData; + } + + /** + * + * @param birthdayData + */ + public void setBirthdayData(ObservableList birthdayData) { + this.birthdayData = birthdayData; + } + + /** + * + * @return + */ + public DatePicker getDatePicker() { + return datePicker; + } + + /** + * + * @param datePicker + */ + public void setDatePicker(DatePicker datePicker) { + this.datePicker = datePicker; + } + +} diff --git a/src/main/java/Models/Client/Client.java b/src/main/java/Models/Client/Client.java new file mode 100644 index 0000000..f588705 --- /dev/null +++ b/src/main/java/Models/Client/Client.java @@ -0,0 +1,218 @@ +package Models.Client; + +import java.time.LocalDate; +import java.util.Date; + +/** + * @author PC-Maher + */ +public class Client { + + public String codeclient ; + public int cin ; + public String nomcomplet; + public String nom ; + public String prenom ; + public String DateNaissanceString ; + public Date naissance ; + public Long telefix ; + public Long telemobile ; + public String adresse ; + public String codepostal ; + public String mail ; + public int sexe ; + + public String getCodeclient() { + return codeclient; + } + + public void setCodeclient(String codeclient) { + this.codeclient = codeclient; + } + + + + public void setCodeclientString(String codeclient) { + this.codeclient = codeclient; + } + + public String getCinString() { + return String.valueOf(cin); + } + + public int getCin() { + return cin ; + } + + public void setCin(int cin) { + this.cin = cin; + } + public void setCinString(String cin) { + this.cin = Integer.parseInt(cin); + } + + public String getNomcomplet() { + return nomcomplet; + } + + public void setNomcomplet(String nomcomplet) { + this.nomcomplet = nomcomplet; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getPrenom() { + return prenom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public Date getNaissance() { + return naissance; + } + + public void setNaissance(Date naissance) { + this.naissance = naissance; + } + + public void setNaissanceDatePicker(LocalDate naissance) { + this.naissance = java.sql.Date.valueOf(naissance); + } + + public String getDateNaissanceString() { + return DateNaissanceString; + } + + public void setDateNaissanceString(String DateNaissanceString) { + this.DateNaissanceString = DateNaissanceString; + } + + + + public Long getTelefix() { + if(telefix != null){ + return telefix; + } + else{ + return null ; + } + } + public String getTelefixString() { + if(telefix != null){ + return telefix.toString(); + } + else{ + return null ; + } + } + + public void setTelefix(Long telefix) { + this.telefix = telefix; + } + public void setTelefixString(String telefix) { + if(telefix!=null){ + this.telefix = Long.parseLong(telefix); + } + } + + public Long getTelemobile() { + return telemobile; + } + + public String getTelemobileString() { + if(telemobile != null){ + return telemobile.toString(); + } + else{ + return null ; + } + + } + + + + + public void setTelemobile(Long telemobile) { + this.telemobile = telemobile; + } + public void setTelemobileString(String telemobile) { + if(telemobile != null){ + if(!telemobile.isEmpty()){ + this.telemobile = Long.parseLong(telemobile); + } + } + } + + public String getAdresse() { + return adresse; + } + + public void setAdresse(String adresse) { + this.adresse = adresse; + } + + public String getCodepostal() { + return codepostal; + } + + public void setCodepostal(String codepostal) { + this.codepostal = codepostal; + } + + + + + public String getMail() { + return mail; + } + + public void setMail(String mail) { + this.mail = mail; + } + + public int getSexe() { + return sexe; + } + + public void setSexe(int sexe) { + this.sexe = sexe; + } + + public String getSexeString() { + if(this.sexe== 1){ + return "Homme"; + } + else{ + return "Femme"; + } + } + + public void setSexeString(String sexe) { + if(sexe.equals("Homme")){ + this.sexe=1; + } + else{ + this.sexe=0; + } + + } + + @Override + public String toString() { + return "Client{" + "codeclient=" + codeclient + ", cin=" + cin + ", nomcomplet=" + nomcomplet + ", nom=" + nom + ", prenom=" + prenom + ", naissance=" + naissance + ", telefix=" + telefix + ", telemobile=" + telemobile + ", adresse=" + adresse + ", codepostal=" + codepostal + ", mail=" + mail + ", sexe=" + sexe + '}'; + } + + + + + + +} diff --git a/src/main/java/Models/Client/ClientDB.java b/src/main/java/Models/Client/ClientDB.java new file mode 100644 index 0000000..1a8db97 --- /dev/null +++ b/src/main/java/Models/Client/ClientDB.java @@ -0,0 +1,323 @@ +package Models.Client; + +import Controllers.Client.ListeClient; +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.connexion; +import java.io.UnsupportedEncodingException; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * @author Maher Ben Tili + */ +public class ClientDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + ShowDialog SD = new ShowDialog(); + + public boolean addClient(Client clt) throws UnsupportedEncodingException{ + String req = "INSERT INTO `client` (`codeclient`, `cin`, `nomcomplet`, `nom`, `prenom`, `naissance`, `telefix`, `telemobile`, `adresse`, `codepostale`, `mail`, `sexe`, `local_nom`, `date_add` ) VALUES ("+clt.getCodeclient()+", "+clt.getCin()+", '"+clt.getNomcomplet()+"', '"+clt.getNom()+"', '"+clt.getPrenom()+"', '"+clt.getNaissance()+"', "+clt.getTelefix()+", "+clt.getTelemobile()+", '"+clt.getAdresse()+"', "+clt.getCodepostal()+", '"+clt.getMail()+"', '"+clt.getSexe()+"', '"+ParametreSystem.NomLocalPC+"', CURTIME());"; + //System.out.println(req); + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + return true; + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + return false ; + } + } + else{ + return false ; + } + } + + public boolean updateClient(Client client) throws UnsupportedEncodingException + { + String req = "UPDATE `client`"; + req += "SET `cin` = '"+client.getCin()+"',"; + + req += " `nom` = '"+client.getNom()+"',"; + req += " `prenom` = '"+client.getPrenom()+"',"; + req += " `naissance` = '"+client.getNaissance()+"',"; + req += " `telefix` = '"+client.getTelefix()+"',"; + + if(client.getTelemobile() != null){ + req += " `nomcomplet` = '"+client.getNomcomplet()+"',"; + } + if(client.getTelemobile() != null){ + req += " `telemobile` = '"+client.getTelemobile()+"',"; + } + + if(client.getMail() != null){ + req += " `mail` = '"+client.getMail()+"',"; + } + + + if(client.getCodepostal() != null){ + req += " `codepostale` = '"+client.getCodepostal()+"',"; + } + + req += " `adresse` = '"+client.getAdresse()+"',"; + + + req += " `sexe` = '"+client.getSexe()+"' "; + req += "WHERE (`codeclient` = '"+client.getCodeclient()+"') and (`local_nom` = '"+ParametreSystem.NomLocalPC+"');"; + + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + return true; + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + return false ; + } + } + else{ + return false ; + } + } + + public Client getClient(String code){ + Client clt = new Client(); + int id =0 ; + if(cnx.ouverture()){ + String sql="SELECT *, DATE_FORMAT(naissance, '%d/%m/%Y') AS naissance_string FROM client WHERE (`codeclient`= "+code+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resultat; + try { + resultat = cnx.excutionquery(sql); + resultat.next(); + + clt.setCodeclientString(resultat.getString("codeclient")); + clt.setCin(resultat.getInt("cin")); + clt.setNom(resultat.getString("nom")); + clt.setPrenom(resultat.getString("prenom")); + clt.setNomcomplet(resultat.getString("nomcomplet")); + clt.setSexe(resultat.getInt("sexe")); + clt.setNaissance(resultat.getDate("naissance")); + clt.setDateNaissanceString(resultat.getString("naissance_string")); + clt.setAdresse(resultat.getString("adresse")); + clt.setTelefixString(resultat.getString("telefix")); + clt.setTelemobileString(resultat.getString("telemobile")); + clt.setMail(resultat.getString("mail")); + clt.setCodepostal(resultat.getString("codepostale")); + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + } + return clt ; + } + + public int getidClient(){ + + int id =0 ; + if(cnx.ouverture()){ + String sql="SELECT MAX(`codeclient`) FROM client WHERE (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resultat; + try { + resultat = cnx.excutionquery(sql); + resultat.next(); + id=resultat.getInt(1); + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + + } + return id ; + } + + + public boolean verifyIdClient(int id){ + boolean result = false ; + + if(cnx.ouverture()){ + String sql="SELECT `codeclient` FROM `client` WHERE (`codeclient`= "+id+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + result= true ; + } + } + catch (SQLException ex) { + result= false ; + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + + } + return result ; + } + + public boolean verifyCinClient(int cin){ + boolean result = false ; + + if(cnx.ouverture()){ + String sql="SELECT `codeclient` FROM `client` WHERE (`cin`= "+cin+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"') ;"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + //on place le curseur sur le dernier tuple + resultat.last(); + if(resultat.getRow()>0){ + result= true ; + + } + + } + catch (SQLException ex) { + result= false ; + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + + } + return result ; + } + + /********************************** Initial *******************************/ + public ObservableList SearchCltPersonneGestion(Integer debut, Integer nbr, String Code, String Cin, String NomComplet, String Nom, String Prenom, String Naissance) + { + ObservableList data = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(Code)){ + Where += " (`codeclient` = \""+Adaptateur.addSlashes(Code)+"\") AND "; + } + + if(!clt.isStringNull(Cin)){ + Where += " (`cin` = \""+Adaptateur.addSlashes(Cin)+"\") AND "; + } + + if(!clt.isStringNull(NomComplet)){ + Where += " (`nomcomplet` LIKE \"%"+Adaptateur.addSlashes(NomComplet)+"%\") AND "; + } + + if(!clt.isStringNull(Nom)){ + Where += " (`nom` LIKE \"%"+Adaptateur.addSlashes(Nom)+"%\") AND "; + } + + if(!clt.isStringNull(Prenom)){ + Where += " (`prenom` LIKE \"%"+Adaptateur.addSlashes(Prenom)+"%\") AND "; + } + + if(!clt.isStringNull(Naissance)){ + Where += " (DATE(`naissance`) = \""+Naissance+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') AND " + Where; + }else{ + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') "; + } + + String req="SELECT *, DATE_FORMAT(`naissance`, '%d/%m/%Y') AS naissance_string " + + "FROM `client` " + + Where + + "ORDER BY codeclient DESC " + + "LIMIT "+debut+" , "+nbr+" ;"; + + if(cnx.ouverture()){ + try{ + /* Exécution d'une requête de lecture */ + ResultSet resultat = cnx.excutionquery(req); + resultat.last(); //on place le curseur sur le dernier tuple + int nombreLignes = resultat.getRow(); //on récupère le numéro de la ligne + if(nombreLignes>0){ + resultat.beforeFirst(); //on repace le curseur avant la première ligne + while ( resultat.next() ) { + String codeclient = resultat.getString( "codeclient" ); + String cin = resultat.getString( "cin" ); + String nomcomplet=resultat.getString("nomcomplet"); + String nom=resultat.getString("nom"); + String prenom=resultat.getString("prenom"); + String naissance_str = resultat.getString("naissance_string"); + String adresse=resultat.getString("adresse"); + String telefix = resultat.getString( "telefix" ); + String telemobile = resultat.getString( "telemobile" ); + Integer sexe = resultat.getInt( "sexe" ); + data.add(new ListeClient(codeclient, cin, nomcomplet, nom, prenom, naissance_str, adresse, telefix, telemobile, sexe)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + else{ + SD.ShowAletDialog(); + } + return data ; + } + + public Integer nbrCltPersonneGestion( String Code, String Cin, String NomComplet, String Nom, String Prenom, String Naissance) + { + String Where = ""; + + if(!clt.isStringNull(Code)){ + Where += " (`codeclient` = \""+Adaptateur.addSlashes(Code)+"\") AND "; + } + + if(!clt.isStringNull(Cin)){ + Where += " (`cin` = \""+Adaptateur.addSlashes(Cin)+"\") AND "; + } + + if(!clt.isStringNull(NomComplet)){ + Where += " (`nomcomplet` LIKE \"%"+Adaptateur.addSlashes(NomComplet)+"%\") AND "; + } + + if(!clt.isStringNull(Nom)){ + Where += " (`nom` LIKE \"%"+Adaptateur.addSlashes(Nom)+"%\") AND "; + } + + if(!clt.isStringNull(Prenom)){ + Where += " (`prenom` LIKE \"%"+Adaptateur.addSlashes(Prenom)+"%\") AND "; + } + + if(!clt.isStringNull(Naissance)){ + Where += " (DATE(`naissance`) = \""+Naissance+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') AND " + Where; + }else{ + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') "; + } + + + String req=" SELECT COUNT(`codeclient`) "+ + " FROM `client` "+ + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } +} diff --git a/src/main/java/Models/Client/ClientEntreprise.java b/src/main/java/Models/Client/ClientEntreprise.java new file mode 100644 index 0000000..a53875e --- /dev/null +++ b/src/main/java/Models/Client/ClientEntreprise.java @@ -0,0 +1,212 @@ +package Models.Client; + +import Controllers.Traitement.contro; + +/** + * @author Maher + */ +public class ClientEntreprise { + + private Long Code ; + private String Nom ; + private String Gerant ; + private String Adresse ; + private String Mail ; + private String Matricule ; + private Long Postal ; + private Long Tele1 ; + private Long Tele2 ; + private Long Fax ; + private ClientEntrepriseContact Contact; + private String LocalNom ; + + contro clt = new contro(); + + public String getCodeString() { + return String.valueOf(Code); + } + + public Long getCode() { + return Code; + } + + public void setCode(Long Code) { + this.Code = Code; + } + + + public void setCodeString(String Code) { + if(!clt.isStringNull(Code)){ + this.Code = Long.parseLong(Code); + } + } + + public String getNom() { + return Nom; + } + + public void setNom(String Nom) { + this.Nom = Nom; + } + + public String getGerant() { + return Gerant; + } + + public void setGerant(String Gerant) { + this.Gerant = Gerant; + } + + + public String getAdresse() { + return Adresse; + } + + public void setAdresse(String Adresse) { + this.Adresse = Adresse; + } + + public String getMail() { + return Mail; + } + + public void setMail(String Mail) { + this.Mail = Mail; + } + + public String getMatricule() { + return Matricule; + } + + public void setMatricule(String Matricule) { + this.Matricule = Matricule; + } + + public Long getPostal() { + return Postal; + } + + public String getPostalString() { + if(Postal != null){ + if(Postal != 0){ + return Postal.toString(); + }else{ + return "" ; + } + }else{ + return "" ; + } + } + + public void setPostaleString(String Postal) { + if(!clt.isStringNull(Postal)){ + this.Postal = Long.parseLong(Postal); + } + } + + public void setPostal(Long Postal) { + this.Postal = Postal; + } + + + + public Long getTele1() { + return Tele1; + } + public String getTele1String() { + if(Tele1 != null){ + if(Tele1 != 0){ + return Tele1.toString(); + }else{ + return "" ; + } + }else{ + return "" ; + } + } + + public void setTele1String(String Tele1) { + if(!clt.isStringNull(Tele1)){ + this.Tele1 = Long.parseLong(Tele1); + } + } + + public void setTele1(Long Tele1) { + this.Tele1 = Tele1; + } + + public Long getTele2() { + return Tele2; + } + public String getTele2String() { + if(Tele2 != null){ + if(Tele2 != 0){ + return Tele2.toString(); + }else{ + return "" ; + } + }else{ + return "" ; + } + } + + public void setTele2(Long Tele2) { + this.Tele2 = Tele2; + } + + public void setTele2String(String Tele2) { + if(!clt.isStringNull(Tele2)){ + this.Tele2 = Long.parseLong(Tele2); + } + } + + public Long getFax() { + return Fax; + } + public String getFaxString() { + if(Fax != null){ + if(Fax != 0){ + return Fax.toString(); + }else{ + return "" ; + } + }else{ + return "" ; + } + } + + public void setFaxString(String Fax) { + if(!clt.isStringNull(Fax)){ + this.Fax = Long.parseLong(Fax); + } + } + public void setFax(Long Fax) { + this.Fax = Fax; + } + + public ClientEntrepriseContact getContact() { + return Contact; + } + + public void setContact(ClientEntrepriseContact Contact) { + this.Contact = Contact; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + + @Override + public String toString() { + return "ClientEntreprise{" + "Code=" + Code + ", \n Nom=" + Nom + ", Gerant=" + Gerant + ", Adresse=" + Adresse + ", Mail=" + Mail + ", Matricule=" + Matricule + ", Postal=" + Postal + ", Tele1=" + Tele1 + ", Tele2=" + Tele2 + ", Fax=" + Fax + '}'; + } + + + + +} diff --git a/src/main/java/Models/Client/ClientEntrepriseContact.java b/src/main/java/Models/Client/ClientEntrepriseContact.java new file mode 100644 index 0000000..16f6184 --- /dev/null +++ b/src/main/java/Models/Client/ClientEntrepriseContact.java @@ -0,0 +1,162 @@ +package Models.Client; + +import Controllers.Traitement.contro; + + +/** + * + * @author Maher + */ +public class ClientEntrepriseContact { + + private Long Code ; + private String Nom ; + private String Prenom ; + private Long CIN ; + private String Mail ; + private Long Tele1 ; + private Long Tele2 ; + private Long idcltentreprise ; + private String LocalNom ; + + contro clt = new contro(); + + public Long getCode() { + return Code; + } + + public void setCode(Long Code) { + this.Code = Code; + } + public void setCodeString(String Code) { + if(!clt.isStringNull(Code)){ + this.Code = Long.parseLong(Code); + } + } + + public Long getIdcltentreprise() { + return idcltentreprise; + } + + public void setIdcltentreprise(Long idcltentreprise) { + this.idcltentreprise = idcltentreprise; + } + + public void setIdcltentrepriseString(String idcltentreprise) { + if(!clt.isStringNull(idcltentreprise)){ + this.idcltentreprise = Long.parseLong(idcltentreprise); + } + } + + public String getNom() { + return Nom; + } + + public void setNom(String Nom) { + this.Nom = Nom; + } + + public String getPrenom() { + return Prenom; + } + + public void setPrenom(String Prenom) { + this.Prenom = Prenom; + } + + public Long getCIN() { + return CIN; + } + + public String getCINString() { + if(CIN != null){ + if(!CIN.equals("")){ + return CIN.toString(); + }else{ + return "" ; + } + }else{ + return "" ; + } + } + + public void setCIN(Long CIN) { + this.CIN = CIN; + } + + public void setCINString(String CIN) { + if(!clt.isStringNull(CIN)){ + this.CIN= Long.parseLong(CIN); + } + } + + public String getMail() { + return Mail; + } + + public void setMail(String Mail) { + this.Mail = Mail; + } + + public Long getTele1() { + return Tele1; + } + + public String getTele1String() { + if(Tele1 != null){ + if(!Tele1.equals("")){ + return Tele1.toString(); + }else{ + return null ; + } + }else{ + return null ; + } + } + + public void setTele1String(String Tele1) { + if(!clt.isStringNull(Tele1)){ + this.Tele1 = Long.parseLong(Tele1); + } + } + + public void setTele1(Long Tele1) { + this.Tele1 = Tele1; + } + + public Long getTele2() { + return Tele2; + } + + public String getTele2String() { + if(Tele2 != null){ + if(!Tele2.equals("")){ + return Tele2.toString(); + }else{ + return "" ; + } + }else{ + return "" ; + } + } + + public void setTele2(Long Tele2) { + this.Tele2 = Tele2; + } + + public void setTele2String(String Tele2) { + if(!clt.isStringNull(Tele2)){ + this.Tele2 = Long.parseLong(Tele2); + } + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + +} diff --git a/src/main/java/Models/Client/ClientEntrepriseContactDB.java b/src/main/java/Models/Client/ClientEntrepriseContactDB.java new file mode 100644 index 0000000..6ae649b --- /dev/null +++ b/src/main/java/Models/Client/ClientEntrepriseContactDB.java @@ -0,0 +1,126 @@ +/* + * 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.Client; + +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.connexion; +import java.io.UnsupportedEncodingException; +import java.sql.ResultSet; +import java.sql.SQLException; + + +/** + * + * @author Maher + */ +public class ClientEntrepriseContactDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public boolean addClientEntrepriseContact(ClientEntrepriseContact CltEtrCon){ + String req = "INSERT INTO `cltcontact` (`idcltcontact`, `nom`, `prenom`, `cin`, `gsm1`, `gsm2`, `mail`, `idcltentreprise`, `local_nom`) VALUES (NULL, '"+CltEtrCon.getNom()+"', '"+CltEtrCon.getPrenom()+"', "+CltEtrCon.getCIN()+", "+CltEtrCon.getTele1()+", "+CltEtrCon.getTele2()+", '"+CltEtrCon.getMail()+"', '"+CltEtrCon.getIdcltentreprise()+"', '"+ParametreSystem.NomLocalPC+"'); " ; + return cnx.insertion(req); + } + + public ClientEntrepriseContact getContactByIdContact(String idContactEtr){ + ClientEntrepriseContact ContactEtr = new ClientEntrepriseContact(); + + if(cnx.ouverture()) + { + String sql="SELECT * FROM cltcontact WHERE (`codeclient`= "+idContactEtr+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resultat; + try { + resultat = cnx.excutionquery(sql); + resultat.next(); + + ContactEtr.setIdcltentrepriseString(resultat.getString("idcltcontact")); + ContactEtr.setCINString(resultat.getString("cin")); + ContactEtr.setNom(resultat.getString("nom")); + ContactEtr.setPrenom(resultat.getString("prenom")); + ContactEtr.setTele1String(resultat.getString("gsm1")); + ContactEtr.setTele2String(resultat.getString("gsm2")); + ContactEtr.setMail(resultat.getString("mail")); + ContactEtr.setLocalNom(resultat.getString("local_nom")); + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + } + return ContactEtr ; + } + + public ClientEntrepriseContact getContactByIdEntreprise(String idEtr) + { + ClientEntrepriseContact ContactEtr = new ClientEntrepriseContact(); + + if(cnx.ouverture()) + { + String sql="SELECT * FROM cltcontact WHERE (`idcltentreprise`= "+idEtr+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resultat; + try { + resultat = cnx.excutionquery(sql); + resultat.next(); + + ContactEtr.setCodeString(resultat.getString("idcltcontact")); + ContactEtr.setIdcltentrepriseString(resultat.getString("idcltentreprise")); + ContactEtr.setCINString(resultat.getString("cin")); + ContactEtr.setNom(resultat.getString("nom")); + ContactEtr.setPrenom(resultat.getString("prenom")); + ContactEtr.setTele1String(resultat.getString("gsm1")); + ContactEtr.setTele2String(resultat.getString("gsm2")); + ContactEtr.setMail(resultat.getString("mail")); + ContactEtr.setLocalNom(resultat.getString("local_nom")); + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + } + return ContactEtr ; + } + + + public boolean updateEtrContact(ClientEntrepriseContact ContactEtr) throws UnsupportedEncodingException + { + String req = "UPDATE `cltcontact`"; + + req += "SET `nom` = '"+ContactEtr.getNom()+"',"; + + if(!clt.isStringNull(ContactEtr.getCINString())){ + req += " `cin` = '"+ContactEtr.getCINString()+"',"; + } + if(!clt.isStringNull(ContactEtr.getMail())){ + req += " `mail` = '"+ContactEtr.getMail()+"',"; + } + if(!clt.isStringNull(ContactEtr.getTele2String())){ + req += " `gsm2` = '"+ContactEtr.getTele2String()+"',"; + } + + req += " `prenom` = '"+ContactEtr.getPrenom()+"',"; + req += " `gsm1` = '"+ContactEtr.getTele1String()+"' "; + + req += "WHERE (`idcltcontact` = '"+ContactEtr.getCode()+"') AND (`local_nom` = '"+ContactEtr.getLocalNom()+"');"; + + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + return true; + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + return false ; + } + } + else{ + return false ; + } + } + +} diff --git a/src/main/java/Models/Client/ClientEntrepriseDB.java b/src/main/java/Models/Client/ClientEntrepriseDB.java new file mode 100644 index 0000000..cc81e6c --- /dev/null +++ b/src/main/java/Models/Client/ClientEntrepriseDB.java @@ -0,0 +1,286 @@ +package Models.Client; + +import Controllers.Client.ListeClientEntreprise; +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.connexion; +import java.io.UnsupportedEncodingException; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + + +/** + * @author Maher Ben Tili + */ +public class ClientEntrepriseDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public boolean verifyCodeEntreprise(int code){ + boolean result = false ; + + if(cnx.ouverture()){ + String sql="SELECT * FROM `cltentreprise` WHERE (`idcliententreprise` = "+code+") AND (`local_nom` = '"+ParametreSystem.NomLocalPC+"');"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + result= true ; + } + } + catch (SQLException ex) { + result= false ; + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return result ; + } + + + + public ClientEntreprise GetClientEtr(String CodeEtr){ + ClientEntreprise ClientEtr = new ClientEntreprise(); + if(cnx.ouverture()){ + String sql="SELECT * FROM `cltentreprise` WHERE (`idcliententreprise` = "+CodeEtr+") AND (`local_nom` = '"+ParametreSystem.NomLocalPC+"');"; + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + ClientEtr.setCodeString(resultat.getString("idcliententreprise")); + ClientEtr.setNom(resultat.getString("nomentrepise")); + ClientEtr.setGerant(resultat.getString("gerant")); + ClientEtr.setAdresse(resultat.getString("adresse")); + ClientEtr.setMail(resultat.getString("mail")); + ClientEtr.setMatricule(resultat.getString("matricule_fiscale")); + ClientEtr.setPostal(resultat.getLong("code_postal")); + ClientEtr.setTele1(resultat.getLong("telefix")); + ClientEtr.setTele2(resultat.getLong("telefix2")); + ClientEtr.setFax(resultat.getLong("fax")); + ClientEtr.setLocalNom(resultat.getString("local_nom")); + ClientEntrepriseContact EtrContact = new ClientEntrepriseContactDB().getContactByIdEntreprise(resultat.getString("idcliententreprise")); + ClientEtr.setContact(EtrContact); + } + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.err.println(sql); + } + } + return ClientEtr ; + } + + public int getidClientEtr(){ + + int id = -1 ; + if(cnx.ouverture()){ + String sql="SELECT MAX(`idcliententreprise`) FROM cltentreprise WHERE `local_nom` = '"+ParametreSystem.NomLocalPC+"';"; + ResultSet resultat; + try { + resultat = cnx.excutionquery(sql); + resultat.next(); + id=resultat.getInt(1); + } + catch (SQLException ex) { + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + } + return id; + } + + + public boolean addEntreprise(ClientEntreprise CltEtr){ + String req = "INSERT INTO `cltentreprise` (`idcliententreprise`, `nomentrepise`, `gerant`, `matricule_fiscale`, `adresse`, `telefix`, `telefix2`, `fax`, `code_postal`, `mail`, `local_nom`, `date_add`) VALUES ("+CltEtr.getCode()+", '"+CltEtr.getNom()+"', '"+CltEtr.getGerant()+"', '"+CltEtr.getMatricule()+"', '"+CltEtr.getAdresse()+"', "+CltEtr.getTele1()+", "+CltEtr.getTele2()+", "+CltEtr.getFax()+", "+CltEtr.getPostal()+", '"+CltEtr.getMail()+"', '"+ParametreSystem.NomLocalPC+"', CURTIME());"; + return cnx.insertion(req); + } + + + public boolean updateEntreprise(ClientEntreprise CltEtr) throws UnsupportedEncodingException + { + String req = "UPDATE `cltentreprise`"; + + req += "SET `nomentrepise` = '"+CltEtr.getNom()+"',"; + + if(!clt.isStringNull(CltEtr.getMatricule())){ + req += " `matricule_fiscale` = '"+CltEtr.getMatricule()+"',"; + } + if(!clt.isStringNull(CltEtr.getTele2String())){ + req += " `telefix2` = '"+CltEtr.getTele2String()+"',"; + } + if(!clt.isStringNull(CltEtr.getFaxString())){ + req += " `fax` = '"+CltEtr.getFaxString()+"',"; + } + if(!clt.isStringNull(CltEtr.getPostalString())){ + req += " `code_postal` = '"+CltEtr.getPostalString()+"',"; + } + if(!clt.isStringNull(CltEtr.getMail())){ + req += " `mail` = '"+CltEtr.getMail()+"',"; + } + + req += " `adresse` = '"+CltEtr.getAdresse()+"',"; + req += " `gerant` = '"+CltEtr.getGerant()+"',"; + req += " `telefix` = '"+CltEtr.getTele1String()+"'"; + + req += "WHERE (`idcliententreprise` = '"+CltEtr.getCodeString()+"') and (`local_nom` = '"+CltEtr.getLocalNom()+"');"; + + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + return new ClientEntrepriseContactDB().updateEtrContact(CltEtr.getContact()); + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + return false ; + } + } + else{ + return false ; + } + } + + /* + ; + + */ + /********************************** Initial *******************************/ + public ObservableList SearchCltEntrepriseGestion(Integer debut, Integer nbr, String CodeEtr, String NomEtr, String GerantEtr, String MatriculeEtr, String AdresseEtr, String TelephoneEtr) + { + ObservableList data = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(CodeEtr)){ + Where += " (`idcliententreprise` = \""+Adaptateur.addSlashes(CodeEtr)+"\") AND "; + } + + if(!clt.isStringNull(NomEtr)){ + Where += " (`nomentrepise` LIKE \"%"+Adaptateur.addSlashes(NomEtr)+"%\") AND "; + } + + if(!clt.isStringNull(GerantEtr)){ + Where += " (`gerant` LIKE \"%"+Adaptateur.addSlashes(GerantEtr)+"%\") AND "; + } + + if(!clt.isStringNull(MatriculeEtr)){ + Where += " (`matricule_fiscale` = \""+Adaptateur.addSlashes(MatriculeEtr)+"\") AND "; + } + + if(!clt.isStringNull(AdresseEtr)){ + Where += " (`adresse` LIKE \"%"+Adaptateur.addSlashes(AdresseEtr)+"%\") AND "; + } + + if(!clt.isStringNull(TelephoneEtr)){ + Where += " (`telefix` = \""+Adaptateur.addSlashes(TelephoneEtr)+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') AND " + Where; + }else{ + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') "; + } + + String req="SELECT * " + + "FROM `cltentreprise` " + + Where + + "ORDER BY idcliententreprise DESC " + + "LIMIT "+debut+" , "+nbr+" ;"; + + if(cnx.ouverture()){ + try{ + /* Exécution d'une requête de lecture */ + ResultSet resultat = cnx.excutionquery(req); + resultat.last(); //on place le curseur sur le dernier tuple + int nombreLignes = resultat.getRow(); //on récupère le numéro de la ligne + if(nombreLignes>0){ + resultat.beforeFirst(); //on repace le curseur avant la première ligne + while ( resultat.next() ) { + String code = resultat.getString("idcliententreprise"); + String nom=resultat.getString("nomentrepise"); + String gerant =resultat.getString("gerant"); + String matricule =resultat.getString("matricule_fiscale"); + String adresse =resultat.getString("adresse"); + String telefix = resultat.getString( "telefix" ); + String telefix2 = resultat.getString( "telefix2" ); + + data.add(new ListeClientEntreprise(code, nom, gerant, matricule, adresse, telefix, telefix2)); + + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return data ; + } + + public Integer nbrCltEntrepriseGestion(String CodeEtr, String NomEtr, String GerantEtr, String MatriculeEtr, String AdresseEtr, String TelephoneEtr) + { + String Where = ""; + + if(!clt.isStringNull(CodeEtr)){ + Where += " (`idcliententreprise` = \""+Adaptateur.addSlashes(CodeEtr)+"\") AND "; + } + + if(!clt.isStringNull(NomEtr)){ + Where += " (`nomentrepise` LIKE \"%"+Adaptateur.addSlashes(NomEtr)+"%\") AND "; + } + + if(!clt.isStringNull(GerantEtr)){ + Where += " (`gerant` LIKE \"%"+Adaptateur.addSlashes(GerantEtr)+"%\") AND "; + } + + if(!clt.isStringNull(MatriculeEtr)){ + Where += " (`matricule_fiscale` = \""+Adaptateur.addSlashes(MatriculeEtr)+"\") AND "; + } + + if(!clt.isStringNull(AdresseEtr)){ + Where += " (`adresse` LIKE \"%"+Adaptateur.addSlashes(AdresseEtr)+"%\") AND "; + } + + if(!clt.isStringNull(TelephoneEtr)){ + Where += " (`telefix` = \""+Adaptateur.addSlashes(TelephoneEtr)+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') AND " + Where; + }else{ + Where = "WHERE (`local_nom` = '"+ParametreSystem.NomLocalPC+"') "; + } + + + String req=" SELECT COUNT(`idcliententreprise`) "+ + " FROM `cltentreprise` "+ + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + +} diff --git a/src/main/java/Models/Client/ClientPassager.java b/src/main/java/Models/Client/ClientPassager.java new file mode 100644 index 0000000..16eb122 --- /dev/null +++ b/src/main/java/Models/Client/ClientPassager.java @@ -0,0 +1,160 @@ +package Models.Client; + +/** + * @author PC-Maher + */ +public class ClientPassager { + + public String codeclient ; + public String nom ; + public String prenom ; + public Long telefix ; + public Long telemobile ; + public String naissance ; + public String adresse ; + public String LocalNom ; + public int sexe ; + + public String getCodeclient() { + return codeclient; + } + + public void setCodeclient(String codeclient) { + this.codeclient = codeclient; + } + + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getPrenom() { + return prenom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + + + public Long getTelefix() { + if(telefix != null){ + return telefix; + } + else{ + return null ; + } + } + public String getTelefixString() { + if(telefix != null){ + return telefix.toString(); + } + else{ + return null ; + } + } + + + public void setTelefix(Long telefix) { + this.telefix = telefix; + } + + + public void setTelefixString(String telefix) { + if(telefix == null || telefix.isEmpty()){ + this.telefix = null; + }else{ + this.telefix = Long.parseLong(telefix); + } + + } + + public Long getTelemobile() { + return telemobile; + } + + public String getTelemobileString() { + if(telemobile != null){ + return telemobile.toString(); + } + else{ + return null ; + } + + } + + public void setTelemobile(Long telemobile) { + this.telemobile = telemobile; + } + + + public void setTelemobileString(String telemobile) { + if(telemobile == null){ + this.telemobile = null; + }else if( telemobile.equals("") ){ + this.telemobile = null; + }else{ + this.telemobile = Long.parseLong(telemobile); + } + + } + + public String getNaissance() { + return naissance; + } + + public void setNaissance(String naissance) { + this.naissance = naissance; + } + + + public String getAdresse() { + return adresse; + } + + public void setAdresse(String adresse) { + this.adresse = adresse; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + + public void setSexe(int sexe) { + this.sexe = sexe; + } + + public int getSexe() { + return sexe; + } + + public String getSexeString() { + if(sexe == 0){ + return "0"; + }else if(sexe == 1){ + return "1"; + }else{ + return ""; + } + } + + + public void setSexeString(String sexe) { + if( (sexe != null) || (sexe.length()!= 0) ){ + this.sexe = Integer.parseInt(sexe); + }else{ + this.sexe = 1; + } + } + +} diff --git a/src/main/java/Models/Client/ClientPassagerDB.java b/src/main/java/Models/Client/ClientPassagerDB.java new file mode 100644 index 0000000..af3914e --- /dev/null +++ b/src/main/java/Models/Client/ClientPassagerDB.java @@ -0,0 +1,93 @@ +/* + * 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.Client; + +import Controllers.Traitement.ParametreSystem; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +/** + * + * @author PC-Maher + */ +public class ClientPassagerDB { + + connexion cnx = new connexion(); + + public ClientPassager getClient(String CodeClt){ + ClientPassager CltPassager = new ClientPassager(); + + if(cnx.ouverture()){ + String sql="SELECT * FROM cltpassageur WHERE (idcltpassageur = "+CodeClt+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + + ResultSet resultat; + try { + resultat = cnx.excutionquery(sql); + resultat.next(); + CltPassager.setCodeclient(resultat.getString("idcltpassageur")); + CltPassager.setNom(resultat.getString("nom")); + CltPassager.setPrenom(resultat.getString("prenom")); + //CltPassager.setSexe(resultat.getInt("sexe")); + CltPassager.setAdresse(resultat.getString("adresse")); + CltPassager.setTelefixString(resultat.getString("tele")); + CltPassager.setTelemobileString(resultat.getString("gsm")); + CltPassager.setLocalNom(resultat.getString("local_nom")); + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + } + return CltPassager; + } + + + + + public ClientPassager addPassager(ClientPassager CltPassager){ + + String Nom = CltPassager.getNom().replace("'", "\\'"); + String Prenom = CltPassager.getPrenom().replace("'", "\\'"); + String Adresse = "NULL"; + String Naissance = "NULL"; + String Tele = "NULL"; + String Gsm = "NULL"; + + if(CltPassager.getNaissance() != null){ + if( CltPassager.getNaissance().length() != 0){ + Naissance = "'"+CltPassager.getNaissance()+"'"; + } + } + + if(CltPassager.getAdresse() != null){ + if( CltPassager.getAdresse().length() != 0){ + Adresse = CltPassager.getAdresse().replace("'", "\\'"); + } + } + + + if(CltPassager.getTelefixString()!= null){ + if(CltPassager.getTelefixString().length() != 0){ + Tele = CltPassager.getTelefixString(); + } + } + + if(CltPassager.getTelemobileString()!= null){ + if(CltPassager.getTelemobileString().length() != 0){ + Gsm = CltPassager.getTelemobileString(); + } + } + + String req = "INSERT INTO cltpassageur (nom, prenom, adresse, naissance, tele, gsm, local_nom, date_add) VALUES ('"+Nom+"', '"+Prenom+"', '"+Adresse+"', "+Naissance+", "+Tele+", "+Gsm+", '"+ParametreSystem.NomLocalPC+"', CURTIME());"; + + if(cnx.ouverture()){ + String Code = cnx.InsertGetLastId(req); + CltPassager.setCodeclient(Code); + } + return CltPassager; + } + +} diff --git a/src/main/java/Models/CommandeClt/CommandeClt.java b/src/main/java/Models/CommandeClt/CommandeClt.java new file mode 100644 index 0000000..91c764e --- /dev/null +++ b/src/main/java/Models/CommandeClt/CommandeClt.java @@ -0,0 +1,237 @@ +/* + * 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 Models.Produit.ListeProduit; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import javafx.collections.ObservableList; +/** + * + * @author PC-Maher + */ +public class CommandeClt { + + private String Codecommandeclt ; + + + private Integer TypeClient ; //0 Personne 1 Entreprise 2 Passager + public Client CltPersonne ; + public ClientEntreprise CltEntreprise ; + public ClientPassager CltPassager ; + + private String Date; + private String TypeRegement; // 0comptant 1facilité + private String NetAPayer ; + private String TotalTVA ; + private String TotalHorsTaxNet; + private String Remise; + private String timbre; + private String CodeDevis; + private Integer CodeUser; //code profile de utilisateur du programme + private String CodeFacture; + private String CodeBonLivraison; + + private ObservableList listeproduit ; + + public Integer getTypeClient() { + return TypeClient; + } + + public void setTypeClient(Integer TypeClient) { + this.TypeClient = TypeClient; + } + + public String getTypeClientString() { + String Client = null ; + + if(TypeClient == 0){ + Client= "Ancien client"; + } + if(TypeClient == 1){ + Client= "Entreprise"; + } + if(TypeClient == 2){ + Client= "Passager"; + } + return Client ; + } + + public String getCodecommandeclt() { + return Codecommandeclt; + } + + public void setCodecommandeclt(String Codecommandeclt) { + this.Codecommandeclt = Codecommandeclt; + } + + public Client getCltPersonne() { + return CltPersonne; + } + + public void setCltPersonne(Client CltPersonne) { + this.CltPersonne = CltPersonne; + } + + public ClientEntreprise getCltEntreprise() { + return CltEntreprise; + } + + public void setCltEntreprise(ClientEntreprise CltEntreprise) { + this.CltEntreprise = CltEntreprise; + } + + public ClientPassager getCltPassager() { + return CltPassager; + } + + public void setCltPassager(ClientPassager CltPassager) { + this.CltPassager = CltPassager; + } + + + + + public String getTimbre() { + return timbre; + } + + public void setTimbre(String timbre) { + this.timbre = timbre; + } + + + public String getDate() { + if(Date == null){ + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date date = new Date(); + return dateFormat.format(date); + }else{ + return Date; + } + } + + public void setDate(String Date) { + this.Date = Date; + } + + + public String getTypeRegement() { + return TypeRegement; + } + + public void setTypeRegement(String TypeRegement) { + this.TypeRegement = TypeRegement; + } + + public void setTypeRegementString(String TypeRegement) { + if(TypeRegement.equals("Comptant")){ + this.TypeRegement = "0"; + }else{ + this.TypeRegement = "1"; + } + + } + + public String getTypeRegementString() { + String mode =""; + switch (this.TypeRegement) { + case "0": + mode= "Comptant"; + break; + case "1": + mode = "Facilité"; + break; + } + return mode ; + } + + + + + public String getNetAPayer() { + return NetAPayer; + } + + public void setNetAPayer(String NetAPayer) { + this.NetAPayer = NetAPayer; + } + + public String getTotalTVA() { + return TotalTVA; + } + + public String getCodeDevis() { + return CodeDevis; + } + + public void setCodeDevis(String CodeDevis) { + this.CodeDevis = CodeDevis; + } + + + public void setTotalTVA(String TotalTVA) { + this.TotalTVA = TotalTVA; + } + + public String getTotalHorsTaxNet() { + return TotalHorsTaxNet; + } + + public void setTotalHorsTaxNet(String TotalHorsTaxNet) { + this.TotalHorsTaxNet = TotalHorsTaxNet; + } + + + + public Integer getCodeUser() { + return CodeUser; + } + + public void setCodeUser(Integer CodeUser) { + this.CodeUser = CodeUser; + } + + public ObservableList getListeproduit() { + return listeproduit; + } + + public void setListeproduit(ObservableList listeproduit) { + this.listeproduit = listeproduit; + } + + public String getCodeFacture() { + return CodeFacture; + } + + public void setCodeFacture(String CodeFacture) { + this.CodeFacture = CodeFacture; + } + + public String getRemise() { + return Remise; + } + + public void setRemise(String Remise) { + this.Remise = Remise; + } + + + + public String getCodeBonLivraison() { + return CodeBonLivraison; + } + + public void setCodeBonLivraison(String CodeBonLivraison) { + this.CodeBonLivraison = CodeBonLivraison; + } + + +} diff --git a/src/main/java/Models/CommandeClt/CommandeCltDB.java b/src/main/java/Models/CommandeClt/CommandeCltDB.java new file mode 100644 index 0000000..233253e --- /dev/null +++ b/src/main/java/Models/CommandeClt/CommandeCltDB.java @@ -0,0 +1,587 @@ +/* + * 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 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 SearchCommande(Integer debut, Integer nbr, String TypeRegement, String CodeCommande, String CodeClient, String NameClient, String CodeDevis, String DateCreation) + { + ObservableList 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 getdata(String tab,String mot, Integer debut, Integer nbr){ + ObservableList 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 SearchCommandeCltNotBonLivrison(Integer debut, Integer nbr, String CodeCommande, String DateCreation, String TypeRegement) + { + ObservableList 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 ; + } + +} diff --git a/src/main/java/Models/CommandeClt/CommandeCltListe.java b/src/main/java/Models/CommandeClt/CommandeCltListe.java new file mode 100644 index 0000000..9c7ec92 --- /dev/null +++ b/src/main/java/Models/CommandeClt/CommandeCltListe.java @@ -0,0 +1,71 @@ +/* + * 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 javafx.beans.property.SimpleStringProperty; + + +public class CommandeCltListe { + + private final SimpleStringProperty CodeCommande; + private final SimpleStringProperty TypeClient; + private final SimpleStringProperty CodeClient; + private final SimpleStringProperty ModePaiement; + private final SimpleStringProperty TotalCommande; + private final SimpleStringProperty DateCreation; + private final SimpleStringProperty CodeDevis; + private final SimpleStringProperty CodeFacture; + private final SimpleStringProperty CodeBonLivraison; + + public CommandeCltListe(String CodeCommande, String TypeClient, String CodeClient, String ModePaiement, String TotalCommande,String DateCreation, String CodeDevis, String CodeFacture, String CodeBonLivraison) { + this.CodeCommande= new SimpleStringProperty(CodeCommande); + this.TypeClient= new SimpleStringProperty(TypeClient); + this.CodeClient= new SimpleStringProperty(CodeClient); + this.ModePaiement = new SimpleStringProperty(ModePaiement); + this.TotalCommande= new SimpleStringProperty(TotalCommande); + this.DateCreation= new SimpleStringProperty(DateCreation); + this.CodeDevis= new SimpleStringProperty(CodeDevis); + this.CodeFacture = new SimpleStringProperty(CodeFacture); + this.CodeBonLivraison = new SimpleStringProperty(CodeBonLivraison); + } + + public String getCodeFacture() { + return CodeFacture.get(); + } + + public String getCodeCommande() { + return CodeCommande.get(); + } + + public String getCodeDevis() { + return CodeDevis.get(); + } + + public String getTypeClient() { + return TypeClient.get(); + } + + public String getCodeClient() { + return CodeClient.get(); + } + + public String getTotalCommande() { + return TotalCommande.get(); + } + + public String getModePaiement() { + return ModePaiement.get(); + } + + public String getDateCreation() { + return DateCreation.get(); + } + + public String getCodeBonLivraison() { + return CodeBonLivraison.get(); + } + +} diff --git a/src/main/java/Models/CommandeFrs/CommandeFrs.java b/src/main/java/Models/CommandeFrs/CommandeFrs.java new file mode 100644 index 0000000..c806fc9 --- /dev/null +++ b/src/main/java/Models/CommandeFrs/CommandeFrs.java @@ -0,0 +1,25 @@ +/* + * 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.CommandeFrs; + +/** + * + * @author Maher + */ +public class CommandeFrs { + + public String CodeCommandeFrs; + + public String getCodeCommandeFrs() { + return CodeCommandeFrs; + } + + public void setCodeCommandeFrs(String CodeCommandeFrs) { + this.CodeCommandeFrs = CodeCommandeFrs; + } + + +} diff --git a/src/main/java/Models/DevisClt/Devis.java b/src/main/java/Models/DevisClt/Devis.java new file mode 100644 index 0000000..17eac91 --- /dev/null +++ b/src/main/java/Models/DevisClt/Devis.java @@ -0,0 +1,246 @@ +/* + * 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.DevisClt; + +import Models.Produit.ListeProduit; +import javafx.collections.ObservableList; + +/** + * + * @author PC-Maher + */ +public class Devis { + + private Integer TypeClient ; //0 Personne 1 Entreprise 2 Passager + private String CodeDevis ; + private String CodeClient ; + private String Nom; + private String Prenom; + private String Adresse; + private String Tele1; + private String Tele2; + private String Date; + private String Validite; + private String TypeRegement; + private String NetAPayer ; + private String TotalTVA ; + private String TotalHorsTaxNet; + private String Remise; + private String timbre; + private String matricule; + private Integer CodeUser; //code profile de utilisateur du programme + + private ObservableList listeproduit ; + + public Integer getTypeClient() { + return TypeClient; + } + + public void setTypeClient(Integer TypeClient) { + this.TypeClient = TypeClient; + } + + public String getTypeClientString() { + String Client = null ; + + if(TypeClient == 0){ + Client= "Ancien client"; + } + if(TypeClient == 1){ + Client= "Entreprise"; + } + if(TypeClient == 2){ + Client= "Passager"; + } + return Client ; + } + + public String getCodeDevis() { + return CodeDevis; + } + + public void setCodeDevis(String CodeDevis) { + this.CodeDevis = CodeDevis; + } + + public String getCodeClient() { + return CodeClient; + } + + public void setCodeClient(String CodeClient) { + this.CodeClient = CodeClient; + } + + public String getTimbre() { + return timbre; + } + + public void setTimbre(String timbre) { + this.timbre = timbre; + } + + public String getNom() { + return Nom; + } + + public void setNom(String Nom) { + this.Nom = Nom; + } + + public String getPrenom() { + return Prenom; + } + + public void setPrenom(String Prenom) { + this.Prenom = Prenom; + } + + public String getAdresse() { + return Adresse; + } + + public void setAdresse(String Adresse) { + this.Adresse = Adresse; + } + + public String getTele1() { + return Tele1; + } + + public void setTele1(String Tele1) { + this.Tele1 = Tele1; + } + + public String getTele2() { + return Tele2; + } + + public String getTele2Null() { + if(Tele2.length()==0){ + return "null"; + } + else{ + return Tele2; + } + } + + public void setTele2(String Tele2) { + this.Tele2 = Tele2; + } + + public String getDate() { + return Date; + } + + public void setDate(String Date) { + this.Date = Date; + } + + public String getValidite() { + return Validite; + } + + public void setValidite(String Validite) { + this.Validite = Validite; + } + + public String getTypeRegement() { + return TypeRegement; + } + + public void setTypeRegement(String TypeRegement) { + this.TypeRegement = TypeRegement; + } + + public String getTypeRegementString() { + String mode =""; + switch (this.TypeRegement) { + case "0": + mode= "Comptant"; + break; + case "1": + mode = "Facilité"; + break; + } + return mode ; + } + + public int getTypeRegementInteger(){ + int mode = 0; + switch (this.TypeRegement) { + case "Comptant": + mode= 0; + break; + case "Facilité": + mode = 1; + break; + } + return mode ; + } + + + public String getNetAPayer() { + return NetAPayer; + } + + public void setNetAPayer(String NetAPayer) { + this.NetAPayer = NetAPayer; + } + + public String getTotalTVA() { + return TotalTVA; + } + + public void setTotalTVA(String TotalTVA) { + this.TotalTVA = TotalTVA; + } + + public String getTotalHorsTaxNet() { + return TotalHorsTaxNet; + } + + public void setTotalHorsTaxNet(String TotalHorsTaxNet) { + this.TotalHorsTaxNet = TotalHorsTaxNet; + } + + public String getMatricule() { + return matricule; + } + + public void setMatricule(String matricule) { + this.matricule = matricule; + } + + public String getRemise() { + return Remise; + } + + public void setRemise(String Remise) { + this.Remise = Remise; + } + + public Integer getCodeUser() { + return CodeUser; + } + + public void setCodeUser(Integer CodeUser) { + this.CodeUser = CodeUser; + } + + + public ObservableList getListeproduit() { + return listeproduit; + } + + public void setListeproduit(ObservableList listeproduit) { + this.listeproduit = listeproduit; + } + + + + + +} diff --git a/src/main/java/Models/DevisClt/DevisCltListe.java b/src/main/java/Models/DevisClt/DevisCltListe.java new file mode 100644 index 0000000..b2ef9be --- /dev/null +++ b/src/main/java/Models/DevisClt/DevisCltListe.java @@ -0,0 +1,59 @@ +/* + * 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.DevisClt; + +import javafx.beans.property.SimpleStringProperty; + +public class DevisCltListe { + + private final SimpleStringProperty CodeDevis; + private final SimpleStringProperty TypeClient; + private final SimpleStringProperty CodeClient; + private final SimpleStringProperty ModePaiement; + private final SimpleStringProperty TotalDevis; + private final SimpleStringProperty DateCreation; + private final SimpleStringProperty FinValidite; + + + public DevisCltListe(String CodeDevis, String TypeClient, String CodeClient, String ModePaiement, String TotalDevis,String DateCreation, String FinValidite) { + this.CodeDevis= new SimpleStringProperty(CodeDevis); + this.TypeClient= new SimpleStringProperty(TypeClient); + this.CodeClient= new SimpleStringProperty(CodeClient); + this.ModePaiement = new SimpleStringProperty(ModePaiement); + this.TotalDevis= new SimpleStringProperty(TotalDevis); + this.DateCreation= new SimpleStringProperty(DateCreation); + this.FinValidite= new SimpleStringProperty(FinValidite); + } + + public String getCodeDevis() { + return CodeDevis.get(); + } + + public String getTypeClient() { + return TypeClient.get(); + } + + public String getCodeClient() { + return CodeClient.get(); + } + + public String getTotalDevis() { + return TotalDevis.get(); + } + + public String getModePaiement() { + return ModePaiement.get(); + } + + public String getDateCreation() { + return DateCreation.get(); + } + + public String getFinValidite() { + return FinValidite.get(); + } + +} diff --git a/src/main/java/Models/DevisClt/DevisDB.java b/src/main/java/Models/DevisClt/DevisDB.java new file mode 100644 index 0000000..49e6865 --- /dev/null +++ b/src/main/java/Models/DevisClt/DevisDB.java @@ -0,0 +1,423 @@ +package Models.DevisClt; + +import Models.Produit.ListeProduit; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.User.User; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher Ben Tili + */ +public class DevisDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public String AddDevis(Devis devis){ + + String codedevis = null ; + + String datecreation = Adaptateur.DatabaseDateFormat(devis.getDate()); + String codeclient = devis.getCodeClient(); + String datefinvalidite =Adaptateur.DatabaseDateFormat(devis.getValidite()); + String totalhorstaxnet =devis.getTotalHorsTaxNet().replace(",", "."); + String totaltva = devis.getTotalTVA().replace(",", "."); + String netapayer = devis.getNetAPayer().replace(",", "."); + String remise = devis.getRemise().replace(",", "."); + + String sql = ""; + + if(devis.getTypeClient()==0){ + sql ="INSERT INTO `devisclt` (`date_creation`, `fin_validite`, `typeclt`, `type_reglement`, `codeclient`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `idprofile`, `local_nom`) VALUES ('"+datecreation+"', '"+datefinvalidite+"', '0', '"+devis.getTypeRegementInteger()+"', '"+codeclient+"', "+totalhorstaxnet+", "+totaltva+", "+remise+", '"+ParametreSystem.Timbre+"', '"+netapayer+"', "+User.idprofile+", '"+ParametreSystem.NomLocalPC+"');"; + } + if(devis.getTypeClient()==1){ + sql ="INSERT INTO `devisclt` (`date_creation`, `fin_validite`, `typeclt`, `type_reglement`, `idcliententreprise`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `idprofile`, `local_nom`) VALUES ('"+datecreation+"', '"+datefinvalidite+"', '1', '"+devis.getTypeRegementInteger()+"', '"+codeclient+"', "+totalhorstaxnet+", "+totaltva+", "+remise+", '"+ParametreSystem.Timbre+"', "+netapayer+", "+User.idprofile+", '"+ParametreSystem.NomLocalPC+"');"; + } + if(devis.getTypeClient()==2){ + //insertion de passager + String req = "INSERT INTO `cltpassageur` (`nom`, `prenom`, `adresse`, `tele`, `gsm`, `local_nom`) VALUES ('"+devis.getNom()+"', '"+devis.getPrenom()+"', \""+devis.getAdresse()+"\", '"+devis.getTele1()+"', "+devis.getTele2Null()+", '"+ParametreSystem.NomLocalPC+"');"; + String codepassager = cnx.InsertGetLastId(req); + if(!codepassager.isEmpty()){ + sql ="INSERT INTO `devisclt` (`date_creation`, `fin_validite`, `typeclt`, `type_reglement`, `idcltpassageur`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `idprofile`, `local_nom`) VALUES ('"+datecreation+"', '"+datefinvalidite+"', '2', '"+devis.getTypeRegementInteger()+"', '"+codepassager+"', '"+totalhorstaxnet+"', '"+totaltva+"', '"+remise+"', '"+ParametreSystem.Timbre+"', '"+netapayer+"', '"+User.idprofile+"', '"+ParametreSystem.NomLocalPC+"');"; + } + } + codedevis = cnx.InsertGetLastId(sql); + + String req ; + String PrixHT ; + String Remise ; + String TotalHT ; + String TVA ; + String TotalTTC ; + + for(ListeProduit listeprod : devis.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 `list_produit_devisclt` (`iddevis_devis`, `reference_produit`, `designation_produit`, `quantie`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`, `local_nom`) VALUES ('"+codedevis+"', \""+listeprod.getReference()+"\", \""+listeprod.getDesignation()+"\", "+listeprod.getQuantite()+", "+PrixHT+", "+Remise+", "+TotalHT+", "+TVA+", "+TotalTTC+", '"+ParametreSystem.NomLocalPC+"');"; + cnx.insertion(req); + } + return codedevis ; + } + + public Devis getDevis(String codedevis){ + Devis devis = new Devis() ; + String req = "SELECT `iddevis`, `date_creation`, DATE_FORMAT(fin_validite, '%d/%m/%Y') as fin_validite , `type_reglement`, `codeclient`, `typeclt`, `idcliententreprise`, `idcltpassageur`, `total_h_t_net`, `total_tva`, `timbre_loi`, `net_a_payer`, `idprofile`, `remise` FROM `devisclt` WHERE `iddevis` = '"+codedevis+"' 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){ + + devis.setCodeDevis(resultat.getString("iddevis")); + + devis.setTypeRegement(resultat.getString("type_reglement")); + devis.setDate(resultat.getString("date_creation")); + devis.setValidite(resultat.getString("fin_validite")); + devis.setNetAPayer(resultat.getString("net_a_payer")); + devis.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + devis.setTotalTVA(resultat.getString("total_tva")); + devis.setTimbre(resultat.getString("timbre_loi")); + devis.setCodeUser(resultat.getInt("idprofile")); + devis.setTypeClient(resultat.getInt("typeclt")); + devis.setRemise(resultat.getString("remise")); + + if(devis.getTypeClient()==0){ + devis.setCodeClient(resultat.getString("codeclient")); + cnx.ouverture(); + String reqclt = "SELECT * FROM `client` WHERE (`codeclient` = '"+devis.getCodeClient()+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"'); "; + ResultSet resuclt = cnx.excutionquery(reqclt); + resuclt.last(); + devis.setNom(resuclt.getString("nom")); + devis.setPrenom(resuclt.getString("prenom")); + devis.setAdresse(resuclt.getString("adresse")); + devis.setTele1(resuclt.getString("telefix")); + devis.setTele2(resuclt.getString("telemobile")); + } + + if(devis.getTypeClient()==1){ + devis.setCodeClient(resultat.getString("idcliententreprise")); + cnx.ouverture(); + String reqclt = "SELECT * FROM `cltentreprise` WHERE `idcliententreprise` = '"+devis.getCodeClient()+"' AND (local_nom = '"+ParametreSystem.NomLocalPC+"'); "; + ResultSet resucltetr = cnx.excutionquery(reqclt); + resucltetr.last(); + devis.setNom(resucltetr.getString("nomentrepise")); + devis.setMatricule(resucltetr.getString("matricule_fiscale")); + devis.setAdresse(resucltetr.getString("adresse")); + devis.setTele1(resucltetr.getString("telefix")); + devis.setTele2(resucltetr.getString("telefix2")); + } + + if(devis.getTypeClient()==2){ + devis.setCodeClient(resultat.getString("idcltpassageur")); + cnx.ouverture(); + String reqclt = "SELECT * FROM `cltpassageur` WHERE `idcltpassageur` = '"+devis.getCodeClient()+"' AND (local_nom = '"+ParametreSystem.NomLocalPC+"'); "; + ResultSet resucltpa = cnx.excutionquery(reqclt); + resucltpa.last(); + devis.setNom(resucltpa.getString("nom")); + devis.setPrenom(resucltpa.getString("prenom")); + devis.setAdresse(resucltpa.getString("adresse")); + devis.setTele1(resucltpa.getString("tele")); + devis.setTele2(resucltpa.getString("gsm")); + } + cnx.ouverture(); + String reqprod = "SELECT * FROM list_produit_devisclt where iddevis_devis = "+codedevis+" AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resulist = cnx.excutionquery(reqprod); + //on repace le curseur avant la première ligne + resulist.beforeFirst(); + ObservableList dataProdDev=FXCollections.observableArrayList(); + while ( resulist.next() ) { + String reference = resulist.getString("reference_produit"); + String designaton = resulist.getString("designation_produit"); + String quantite=resulist.getString("quantie"); + 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, designaton, quantite, PrixHT, Remise, TotalHT, TVA, TotalTTC)); + } + devis.setListeproduit(dataProdDev); + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return devis ; + } + + + + + /********************************** Initial *******************************/ + public ObservableList SearchDevisCltGestion(Integer debut, Integer nbr, String CodeDevis, String CodeClient, String Reglement, String DateCreation, String NameClient, String CinClient) + { + ObservableList data = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(CodeDevis)){ + Where += " (D.`iddevis` LIKE \"%"+Adaptateur.addSlashes(CodeDevis)+"%\") AND "; + } + + if(!clt.isStringNull(CodeClient)){ + Where += " ( (D.idcliententreprise = '"+CodeClient+"') OR (D.codeclient = '"+CodeClient+"') OR (D.idcltpassageur = '"+CodeClient+"') ) AND "; + } + + if(!clt.isStringNull(Reglement)){ + Where += " (D.`type_reglement` = \""+Reglement+"\") AND "; + } + + if(!clt.isStringNull(DateCreation)){ + Where += " (DATE(D.`date_creation`) = \""+DateCreation+"\") AND "; + } + + String LeftJoin = ""; + if(!clt.isStringNull(NameClient) || !clt.isStringNull(CinClient) ){ + LeftJoin = " LEFT JOIN `client` C ON (C.codeclient = D.codeclient) AND (D.typeclt = 0) " + +" LEFT JOIN `cltentreprise` E ON (E.idcliententreprise = D.idcliententreprise ) AND (D.typeclt = 1) " + +" LEFT JOIN `cltpassageur` P ON (P.idcltpassageur = D.idcltpassageur) AND (D.typeclt = 2) "; + + if(!clt.isStringNull(NameClient)){ + 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"; + } + + if(!clt.isStringNull(CinClient)){ + CinClient = Adaptateur.addSlashes(CinClient); + Where += "( (C.cin = \""+CinClient+"\") OR (E.matricule_fiscale = \""+CinClient+"\") ) AND"; + } + } + + if(!Where.equals("")){ + Where = "WHERE " + Where + " (D.local_nom = '"+ParametreSystem.NomLocalPC+"') "; + }else{ + Where = "WHERE (D.local_nom = '"+ParametreSystem.NomLocalPC+"') "; + } + + String req="SELECT D.`iddevis`, DATE_FORMAT(D.date_creation, '%d/%m/%Y') as date_creation , DATE_FORMAT(D.fin_validite, '%d/%m/%Y') as fin_validite , D.`type_reglement`, D.`codeclient`, D.`typeclt`, D.`idcliententreprise`, D.`idcltpassageur`, D.`net_a_payer` " + + "FROM `devisclt` D " + + LeftJoin + + Where + + "ORDER BY D.date_creation 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_devis = resultat.getString("iddevis"); + + 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_devis =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_creation"); + String date_fin_validite =resultat.getString("fin_validite"); + + data.add(new DevisCltListe(code_devis, type_client, code_client, mode_reglement, total_devis, date_creation, date_fin_validite)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return data ; + } + + public Integer nbrDevisCltGestion(String CodeDevis, String CodeClient, String Reglement, String DateCreation, String NameClient, String CinClient) + { + String Where = ""; + + if(!clt.isStringNull(CodeDevis)){ + Where += " (D.`iddevis` LIKE \"%"+Adaptateur.addSlashes(CodeDevis)+"%\") AND "; + } + + if(!clt.isStringNull(CodeClient)){ + Where += " ( (D.idcliententreprise = '"+CodeClient+"') OR (D.codeclient = '"+CodeClient+"') OR (D.idcltpassageur = '"+CodeClient+"') ) AND "; + } + + if(!clt.isStringNull(Reglement)){ + Where += " (D.`type_reglement` = \""+Reglement+"\") AND "; + } + + if(!clt.isStringNull(DateCreation)){ + Where += " (DATE(D.`date_creation`) = \""+DateCreation+"\") AND "; + } + + String LeftJoin = ""; + if(!clt.isStringNull(NameClient) || !clt.isStringNull(CinClient) ){ + LeftJoin = " LEFT JOIN `client` C ON (C.codeclient = D.codeclient) AND (D.typeclt = 0) " + +" LEFT JOIN `cltentreprise` E ON (E.idcliententreprise = D.idcliententreprise ) AND (D.typeclt = 1) " + +" LEFT JOIN `cltpassageur` P ON (P.idcltpassageur = D.idcltpassageur) AND (D.typeclt = 2) "; + + if(!clt.isStringNull(NameClient)){ + 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"; + } + + if(!clt.isStringNull(CinClient)){ + CinClient = Adaptateur.addSlashes(CinClient); + Where += "( (C.cin = \""+CinClient+"\") OR (E.matricule_fiscale = \""+CinClient+"\") ) AND"; + } + } + + if(!Where.equals("")){ + Where = "WHERE " + Where + " (D.`local_nom` = '"+ParametreSystem.NomLocalPC+"') "; + }else{ + Where = "WHERE (D.`local_nom` = '"+ParametreSystem.NomLocalPC+"') "; + } + + String req=" SELECT COUNT(D.`iddevis`) " + + " FROM `devisclt` D " + + LeftJoin + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + + + /**********************************Controller Import *******************************/ + public ObservableList getdataImport(String tab,String mot, Integer debut, Integer nbr){ + ObservableList data=FXCollections.observableArrayList(); + + String req="SELECT DC.iddevis, DATE_FORMAT(DC.date_creation, '%d/%m/%Y') as date_creation , DATE_FORMAT(DC.fin_validite, '%d/%m/%Y') as fin_validite , DC.type_reglement, DC.codeclient, DC.typeclt, DC.idcliententreprise, DC.idcltpassageur, DC.net_a_payer FROM devisclt DC WHERE ("+tab+" LIKE \"%"+mot+"%\") AND (Date(DC.fin_validite) > now()) AND (DC.iddevis NOT IN (SELECT DISTINCT(iddevis) FROM commandeclt WHERE (iddevis IS NOT NULL) AND (local_nom = '"+ParametreSystem.NomLocalPC+"'))) AND (DC.local_nom = '"+ParametreSystem.NomLocalPC+"') ORDER BY DC.date_creation DESC LIMIT "+debut+" , "+nbr+" ;"; + + if(tab.equals("DC.CodeClient")){ + req="SELECT DC.iddevis, DATE_FORMAT(DC.date_creation, '%d/%m/%Y') as date_creation , DATE_FORMAT(DC.fin_validite, '%d/%m/%Y') as fin_validite , DC.type_reglement, DC.codeclient, DC.typeclt, DC.idcliententreprise, DC.idcltpassageur, DC.net_a_payer FROM devisclt DC WHERE (Date(DC.fin_validite) > now()) AND (DC.iddevis NOT IN (SELECT DISTINCT(iddevis) FROM commandeclt WHERE (iddevis IS NOT NULL) AND (local_nom = '"+ParametreSystem.NomLocalPC+"'))) AND (DC.idcliententreprise LIKE '%"+mot+"%' OR DC.codeclient LIKE '%"+mot+"%' OR DC.idcltpassageur LIKE '%"+mot+"%') AND (DC.local_nom = '"+ParametreSystem.NomLocalPC+"') ORDER BY DC.date_creation 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_devis = resultat.getString("iddevis"); + + 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_devis =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_creation"); + String date_fin_validite =resultat.getString("fin_validite"); + + data.add(new DevisCltListe(code_devis, type_client, code_client, mode_reglement, total_devis, date_creation, date_fin_validite)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return data ; + } + + public String nbrDevisCltImport(String tab, String mot){ + + String req = "SELECT count(DC.iddevis) FROM devisclt DC, commandeclt CC WHERE ("+tab+" LIKE \"%"+mot+"%\") AND (Date(DC.fin_validite) > now()) AND (CC.iddevis != DC.iddevis) AND (DC.local_nom = '"+ParametreSystem.NomLocalPC+"') ;"; + + if(tab.equals("DC.CodeClient")){ + req = "SELECT count(DC.iddevis) FROM devisclt DC, commandeclt CC WHERE (Date(DC.fin_validite) > now()) AND (CC.iddevis != DC.iddevis) AND (DC.idcliententreprise LIKE '%"+mot+"%' OR DC.codeclient LIKE '%"+mot+"%' OR DC.idcltpassageur LIKE '%"+mot+"%') AND (DC.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) ; + } +} diff --git a/src/main/java/Models/FactureClt/FactureClt.java b/src/main/java/Models/FactureClt/FactureClt.java new file mode 100644 index 0000000..c6bd984 --- /dev/null +++ b/src/main/java/Models/FactureClt/FactureClt.java @@ -0,0 +1,423 @@ +/* + * 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.FactureClt; + +import Models.Produit.ListeProduit; +import Controllers.Traitement.Adaptateur; +import Models.Caisse.CarteBancaireClt; +import Models.Client.Client; +import Models.Client.ClientEntreprise; +import Models.Client.ClientPassager; +import Models.ChequeClt.ChequeClt; +import Models.TraiteClt.TraiteClt; +import java.util.ArrayList; +import javafx.collections.ObservableList; +/** + * + * @author PC-Maher + */ +public class FactureClt { + + public String CodeFactureClt ; + public Integer TypeClient ; //0 Personne 1 Entreprise 2 Passager + public Client CltPersonne ; + public ClientEntreprise CltEntreprise ; + public ClientPassager CltPassager ; + public String DateFacture; + public String ModePaiement; //0 :espace 1:cheque 2 :carte bancaire + public String TypeRegement; //0 Comptent 1 Facilite + public String NetAPayer ; + public String TotalTVA ; + public String TotalHorsTaxNet; + public String Remise; + public String timbre; + public String Devise ; + public String idCommandeClt ; + public String IdBonLivraisonClt; + public Integer CodeUser; //code profile de utilisateur du programme + public ObservableList listeproduit ; + + + //------------------------------ + + //TypeRegement (0) ==> Facture payer en Comptent + //ModePaiement 1:cheque + public ChequeClt Cheque; + + //TypeRegement (0) ==> Facture payer en Comptent + //ModePaiement 2 :carte bancaire + CarteBancaireClt CarteBancaire; + + + //---------------------------------------- + + //TypeRegement (1) ==> Facture payer par facilite + private String Avance ; + private String TotalMontantTraite ; + private String NbrTraite ; + private String MontantInteret ; + private String TauxInteret ; + private String TypeFacilite ; //0 Traite | 1 Cheque true Traite | false Cheque + private ArrayList listeTraites; + private ArrayList listeCheques; + + public Integer getTypeClient() { + return TypeClient; + } + + public void setTypeClient(Integer TypeClient) { + this.TypeClient = TypeClient; + } + + public String getTypeClientString() { + String Client = null ; + + if(TypeClient == 0){ + Client= "Ancien client"; + } + if(TypeClient == 1){ + Client= "Entreprise"; + } + if(TypeClient == 2){ + Client= "Passager"; + } + return Client ; + } + + public String getCodeFactureClt() { + return CodeFactureClt; + } + + public void setCodeFactureClt(String CodeFactureClt) { + this.CodeFactureClt = CodeFactureClt; + } + + public Client getCltPersonne() { + return CltPersonne; + } + + public void setCltPersonne(Client CltPersonne) { + this.CltPersonne = CltPersonne; + } + + public ClientEntreprise getCltEntreprise() { + return CltEntreprise; + } + + public void setCltEntreprise(ClientEntreprise CltEntreprise) { + this.CltEntreprise = CltEntreprise; + } + + public ClientPassager getCltPassager() { + return CltPassager; + } + + public void setCltPassager(ClientPassager CltPassager) { + this.CltPassager = CltPassager; + } + + public String getDateFacture() { + return DateFacture; + } + + public void setDateFacture(String DateFacture) { + this.DateFacture = DateFacture; + } + + public String getRemise() { + return Remise; + } + + public void setRemise(String Remise) { + this.Remise = Remise; + } + + + + + public String getTimbre() { + return timbre; + } + + public void setTimbre(String timbre) { + this.timbre = timbre; + } + + + + public String getTypeRegement() { + return TypeRegement; + } + + public void setTypeRegement(String TypeRegement) { + this.TypeRegement = TypeRegement; + } + + public String getTypeRegementString() { + String mode =""; + switch (this.TypeRegement) { + case "0": + mode= "Comptant"; + break; + case "1": + mode = "Facilité"; + break; + } + return mode ; + } + + public int getTypeRegementInteger(){ + int mode = 0; + switch (this.TypeRegement) { + case "Comptant": + mode= 0; + break; + case "Facilité": + mode = 1; + break; + case "0": + mode = 0; + break; + case "1": + mode = 1; + break; + + } + return mode ; + } + + + public String getNetAPayer() { + return NetAPayer; + } + + public void setNetAPayer(String NetAPayer) { + this.NetAPayer = NetAPayer; + } + + public String getTotalTVA() { + return TotalTVA; + } + + public void setTotalTVA(String TotalTVA) { + this.TotalTVA = TotalTVA; + } + + public String getTotalHorsTaxNet() { + return TotalHorsTaxNet; + } + + public void setTotalHorsTaxNet(String TotalHorsTaxNet) { + this.TotalHorsTaxNet = TotalHorsTaxNet; + } + + public String getModePaiement() { + return ModePaiement; + } + + public void setModePaiement(String ModePaiement) { + this.ModePaiement = ModePaiement; + } + + + + public String getDevise() { + return Devise; + } + + public void setDevise(String Devise) { + this.Devise = Devise; + } + + public String getIdCommandeClt() { + return idCommandeClt; + } + + public void setIdCommandeClt(String idCommandeClt) { + this.idCommandeClt = idCommandeClt; + } + + + + public Integer getCodeUser() { + return CodeUser; + } + + public void setCodeUser(Integer CodeUser) { + this.CodeUser = CodeUser; + } + + public ObservableList getListeproduit() { + return listeproduit; + } + + public void setListeproduit(ObservableList listeproduit) { + this.listeproduit = listeproduit; + } + + public ChequeClt getCheque() { + return Cheque; + } + + public void setCheque(ChequeClt Cheque) { + this.Cheque = Cheque; + } + + public CarteBancaireClt getCarteBancaire() { + return CarteBancaire; + } + + public void setCarteBancaire(CarteBancaireClt CarteBancaire) { + this.CarteBancaire = CarteBancaire; + } + + + + public String getAvance() { + return Avance; + } + + public void setAvance(String Avance) { + this.Avance = Avance; + } + + public float getAvanceNumber() { + return Adaptateur.ArrondStringToFloat(Avance); + } + + public void setAvanceNumber(float Avance) { + this.Avance = Adaptateur.ArrondFloatToString(Avance); + } + + + + public String getTotalMontantTraite() { + return TotalMontantTraite; + } + + public void setTotalMontantTraite(String TotalMontantTraite) { + this.TotalMontantTraite = TotalMontantTraite; + } + + public float getTotalMontantTraiteNumber() { + return Adaptateur.ArrondStringToFloat(TotalMontantTraite); + } + + public void setTotalMontantTraiteNumber(float TotalMontantTraite) { + this.TotalMontantTraite = Adaptateur.ArrondFloatToString(TotalMontantTraite); + } + + public String getNbrTraite() { + return NbrTraite; + } + + public void setNbrTraite(String NbrTraite) { + this.NbrTraite = NbrTraite; + } + + public Integer getNbrTraiteNumber() { + return Integer.parseInt(this.NbrTraite); + } + + public void setNbrTraiteNumber(Integer NbrTraite) { + this.NbrTraite = String.valueOf(NbrTraite); + } + + public String getMontantInteret() { + return MontantInteret; + } + + public void setMontantInteret(String MontantInteret) { + this.MontantInteret = MontantInteret; + } + + public float getMontantInteretNumber() { + return Adaptateur.ArrondStringToFloat(MontantInteret); + } + + public void setMontantInteretNumber(float MontantInteret) { + this.MontantInteret = Adaptateur.ArrondFloatToString(MontantInteret); + } + + public String getTauxInteret() { + return TauxInteret; + } + + public void setTauxInteret(String TauxInteret) { + this.TauxInteret = TauxInteret; + } + + public float getTauxInteretNumber() { + return Adaptateur.ArrondStringToFloat(TauxInteret); + } + + public void setTauxInteretNumber(float TauxInteret) { + this.TauxInteret = Adaptateur.ArrondFloatToString(TauxInteret); + } + + public String getTypeFacilite() { + return TypeFacilite; + } + + public void setTypeFacilite(String Type_Facilite) { + this.TypeFacilite = Type_Facilite; + } + + public Boolean getTypeFaciliteBoolean() { + if(TypeFacilite.equals("0")){ + return true; + }else{ + return false; + } + } + + public void setTypeFaciliteBoolean(Boolean Type_Facilite) { + if(Type_Facilite){ + this.TypeFacilite = "0"; + }else{ + this.TypeFacilite = "1"; + } + } + + + public ArrayList getListeTraites() { + return listeTraites; + } + + public void setListeTraites(ArrayList listeTraites) { + this.listeTraites = listeTraites; + } + + public ArrayList getListeCheques() { + return listeCheques; + } + + public void setListeCheques(ArrayList listeCheques) { + this.listeCheques = listeCheques; + } + + public String getIdBonLivraisonClt() { + return IdBonLivraisonClt; + } + + public void setIdBonLivraisonClt(String IdBonLivraisonClt) { + this.IdBonLivraisonClt = IdBonLivraisonClt; + } + + @Override + public String toString() { + return "FactureClt{" + "CodeFactureClt=" + CodeFactureClt + ", TypeClient=" + TypeClient + ", CltPersonne=" + CltPersonne + ", CltEntreprise=" + CltEntreprise + ", CltPassager=" + CltPassager + ", DateFacture=" + DateFacture + ", ModePaiement=" + ModePaiement + ", TypeRegement=" + TypeRegement + ", NetAPayer=" + NetAPayer + ", TotalTVA=" + TotalTVA + ", TotalHorsTaxNet=" + TotalHorsTaxNet + ", Remise=" + Remise + ", timbre=" + timbre + ", Devise=" + Devise + ", idCommandeClt=" + idCommandeClt + ", IdBonLivraisonClt=" + IdBonLivraisonClt + ", CodeUser=" + CodeUser + ", listeproduit=" + listeproduit + ", Avance=" + Avance + ", TotalMontantTraite=" + TotalMontantTraite + ", NbrTraite=" + NbrTraite + ", MontantInteret=" + MontantInteret + ", TauxInteret=" + TauxInteret + ", TypeFacilite=" + TypeFacilite + ", listeTraites=" + listeTraites + ", listeCheques=" + listeCheques + '}'; + } + + + + + + + + + +} diff --git a/src/main/java/Models/FactureClt/FactureCltChequeListe.java b/src/main/java/Models/FactureClt/FactureCltChequeListe.java new file mode 100644 index 0000000..15f6644 --- /dev/null +++ b/src/main/java/Models/FactureClt/FactureCltChequeListe.java @@ -0,0 +1,43 @@ +/* + * 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.FactureClt; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author PC-Maher + */ +public class FactureCltChequeListe { + + private final SimpleStringProperty DateCheques; + private final SimpleStringProperty NumeroCheques; + private final SimpleStringProperty BanqueCheques; + private final SimpleStringProperty MontantCheques; + + public FactureCltChequeListe(String DateCheque, String NumeroCheque, String BanqueCheque, String MontantCheque) { + this.DateCheques = new SimpleStringProperty(DateCheque); + this.NumeroCheques = new SimpleStringProperty(NumeroCheque); + this.BanqueCheques = new SimpleStringProperty(BanqueCheque); + this.MontantCheques = new SimpleStringProperty(MontantCheque); + } + + public String getDateCheques() { + return DateCheques.get(); + } + + public String getNumeroCheques() { + return NumeroCheques.get(); + } + + public String getBanqueCheques() { + return BanqueCheques.get(); + } + + public String getMontantCheques() { + return MontantCheques.get(); + } +} diff --git a/src/main/java/Models/FactureClt/FactureCltDB.java b/src/main/java/Models/FactureClt/FactureCltDB.java new file mode 100644 index 0000000..00d052a --- /dev/null +++ b/src/main/java/Models/FactureClt/FactureCltDB.java @@ -0,0 +1,436 @@ +package Models.FactureClt; + +import Controllers.Traitement.Adaptateur; +import Models.Produit.ListeProduit; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Caisse.CaisseClt; +import Models.Caisse.CaisseDB; +import Models.Caisse.CarteBancaireClt; +import Models.Caisse.CarteBancaireCltDB; +import Models.User.User; +import Models.ChequeClt.ChequeClt; +import Models.ChequeClt.ChequeCltDB; +import Models.Client.ClientDB; +import Models.Client.ClientEntrepriseDB; +import Models.Client.ClientPassagerDB; +import Models.CommandeClt.CommandeCltDB; +import Models.TraiteClt.TraiteClt; +import Models.TraiteClt.TraiteCltDB; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher Ben Tili + */ +public class FactureCltDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public String AddFactureClt(FactureClt factureclt){ + + CaisseClt Caisse = new CaisseClt(); + + String totalhorstaxnet =factureclt.getTotalHorsTaxNet().replace(",", "."); + String totaltva = factureclt.getTotalTVA().replace(",", "."); + String netapayer = factureclt.getNetAPayer().replace(",", "."); + + String TotalRemise = "NULL"; + if(factureclt.getRemise() != null){ + TotalRemise = factureclt.getRemise().replace(",", "."); + } + + String Devise = ParametreSystem.CurrencySign; + String IdCommande = "NULL"; + String IdBonLivraisonClt = "NULL"; + String TypeFacilite = factureclt.getTypeFacilite(); + String Avance = "NULL"; + String TotalMontantTraites = "NULL"; + String NbrTraite = "NULL"; + String MontantInteret= "NULL"; + String TauxInteret= "NULL"; + + + //TypeRegement (0) ==> Facture payer en Comptent | (1) Facture payer par facilité + Integer TypeReglement = factureclt.getTypeRegementInteger(); + + + //mode paiement Comptent: 0 :espace 1:cheque 2 :carte bancaire + String ModePaiement = "0"; + if(factureclt.getModePaiement() != null){ + ModePaiement = factureclt.getModePaiement(); + } + + + if(TypeReglement == 1){ + Caisse.setTypeMouvement("1"); + TypeFacilite = factureclt.getTypeFacilite(); + Avance = factureclt.getAvance().replace(",", "."); + Caisse.setMontant(Avance); + TotalMontantTraites = factureclt.getTotalMontantTraite().replace(",", "."); + NbrTraite = factureclt.getNbrTraite(); + MontantInteret= factureclt.getMontantInteret().replace(",", "."); + TauxInteret= factureclt.getTauxInteret().replace(",", "."); + } + + + if( factureclt.getIdBonLivraisonClt()!= null && !factureclt.getIdBonLivraisonClt().isEmpty() ){ + IdBonLivraisonClt = factureclt.getIdBonLivraisonClt(); + } + + if(!factureclt.getIdCommandeClt().isEmpty()){ + IdCommande = factureclt.getIdCommandeClt(); + } + + String sql = ""; + if(factureclt.getTypeClient()==0){ + String codeclientPersonne = factureclt.CltPersonne.getCodeclient().toString(); + sql = "INSERT INTO factureclt (`type_reglement`, `mode_paiement`, `date_facture`, `typeclt`, `idcltentreprise`, `idcltexiste`, `idcltpassageur`, `devise`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `type_facilite`, `avance`, `total_montant_traites`, `nbr_traite`, `montant_interet`, `taux_interet`, `idcommande_commandeclt`, id_bon_livraisonclt, `profile_idprofile`, `local_nom`) VALUES ('"+TypeReglement+"', '"+ModePaiement+"', CURTIME(), '"+factureclt.getTypeClient()+"', NULL, '"+codeclientPersonne+"', NULL, '"+Devise+"', "+totalhorstaxnet+", "+totaltva+", "+TotalRemise+", '"+ParametreSystem.Timbre+"', '"+netapayer+"', "+TypeFacilite+", "+Avance+", "+TotalMontantTraites+", "+NbrTraite+", "+MontantInteret+", "+TauxInteret+", "+IdCommande+", "+IdBonLivraisonClt+", "+User.idprofile+", '"+ParametreSystem.NomLocalPC+"');"; + } + if(factureclt.getTypeClient()==1){ + String codeclientEntreprise = factureclt.CltEntreprise.getCode().toString(); + sql = "INSERT INTO factureclt (`type_reglement`, `mode_paiement`, `date_facture`, `typeclt`, `idcltentreprise`, `idcltexiste`, `idcltpassageur`, `devise`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `type_facilite`, `avance`, `total_montant_traites`, `nbr_traite`, `montant_interet`, `taux_interet`, `idcommande_commandeclt`, id_bon_livraisonclt, `profile_idprofile`, `local_nom`) VALUES ('"+TypeReglement+"', '"+ModePaiement+"', CURTIME(), '"+factureclt.getTypeClient()+"', '"+codeclientEntreprise+"', NULL, NULL, '"+Devise+"', "+totalhorstaxnet+", "+totaltva+", "+TotalRemise+", '"+ParametreSystem.Timbre+"', '"+netapayer+"', "+TypeFacilite+", "+Avance+", "+TotalMontantTraites+", "+NbrTraite+", "+MontantInteret+", "+TauxInteret+", "+IdCommande+", "+IdBonLivraisonClt+", "+User.idprofile+", '"+ParametreSystem.NomLocalPC+"');"; + } + if(factureclt.getTypeClient()==2){ + //insertion de passager + String codepassager = factureclt.CltPassager.getCodeclient().toString(); + if(!codepassager.isEmpty()){ + sql = "INSERT INTO factureclt (`type_reglement`, `mode_paiement`, `date_facture`, `typeclt`, `idcltentreprise`, `idcltexiste`, `idcltpassageur`, `devise`, `total_h_t_net`, `total_tva`, `remise`, `timbre_loi`, `net_a_payer`, `type_facilite`, `avance`, `total_montant_traites`, `nbr_traite`, `montant_interet`, `taux_interet`, `idcommande_commandeclt`, id_bon_livraisonclt, `profile_idprofile`, `local_nom`) VALUES ('"+TypeReglement+"', '"+ModePaiement+"', CURTIME(), '"+factureclt.getTypeClient()+"', NULL, NULL, "+codepassager+", '"+Devise+"', '"+totalhorstaxnet+"', '"+totaltva+"', '"+TotalRemise+"', '"+ParametreSystem.Timbre+"', "+netapayer+", "+TypeFacilite+", "+Avance+", "+TotalMontantTraites+", "+NbrTraite+", "+MontantInteret+", "+TauxInteret+", '"+IdCommande+"', "+IdBonLivraisonClt+", "+User.idprofile+", '"+ParametreSystem.NomLocalPC+"');"; + } + } + + String codeFactureclt = cnx.InsertGetLastId(sql); + factureclt.setCodeFactureClt(codeFactureclt); + + + //TypeRegement (0) ==> Facture payer en Comptent + if(factureclt.getTypeRegementInteger() == 0) + { + Caisse.setTypeMouvement("0"); + Caisse.setMontant(netapayer); + + //ModePaiement 1:cheque + if(factureclt.getModePaiement() == "1") + { + ChequeClt ChequeClt = factureclt.getCheque(); + ChequeClt.setCodeFactureClt(codeFactureclt); + new ChequeCltDB().AddChequeClt(ChequeClt); + } + //ModePaiement 2 :carte bancaire + else if(factureclt.getModePaiement() == "2") + { + CarteBancaireClt CarteBancaire = factureclt.getCarteBancaire(); + CarteBancaire.setIdFactureClt(codeFactureclt); + new CarteBancaireCltDB().SetCarteBancaire(CarteBancaire); + } + } + + if(!factureclt.getIdCommandeClt().isEmpty()){ + new CommandeCltDB().UpdateCommandeCltSetIdFacture(factureclt.getIdCommandeClt(), codeFactureclt); + } + + Caisse.setCodeFactureClt(codeFactureclt); + + + String req ; String PrixHT ; String Remise ; String TotalHT ; String TVA ; String TotalTTC ; + for(ListeProduit listeprod : factureclt.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 `list_prod_factclt` (`idfactureclt_factureclt`, `produit_reference`, `designation_produit`, `quantite`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`, `local_nom`) VALUES ('"+codeFactureclt+"', '"+listeprod.getReference()+"', \""+listeprod.getDesignation()+"\", "+listeprod.getQuantite()+", "+PrixHT+", '"+Remise+"', '"+TotalHT+"', '"+TVA+"', '"+TotalTTC+"', '"+ParametreSystem.NomLocalPC+"');"; + + cnx.insertion(req); + } + + + ArrayList ListTraites = factureclt.getListeTraites(); + ArrayList ListCheque = factureclt.getListeCheques(); + + if(ListTraites!=null){ + TraiteCltDB TraiteDB = new TraiteCltDB(); + TraiteDB.AddListeTraiteClt(ListTraites, codeFactureclt); + }else if(ListCheque!=null){ + ChequeCltDB ChequeDB = new ChequeCltDB(); + ChequeDB.AddListeChequeClt(ListCheque, codeFactureclt); + } + + + + + Caisse.setLocalNom(ParametreSystem.NomLocalPC); + Caisse.setIdProfile(User.idprofile); + + CaisseDB CaisseDB = new CaisseDB(); + CaisseDB.AddCaisse(Caisse); + + return codeFactureclt ; + } + + public FactureClt getFactureClt(String codefacture){ + + FactureClt factureClt = new FactureClt(); + String req = "SELECT *, DATE_FORMAT(date_facture, '%d/%m/%Y') as datefacture FROM factureclt WHERE (idfactureclt = "+codefacture+") 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){ + factureClt.setCodeFactureClt(resultat.getString("idfactureclt")); + factureClt.setTypeRegement(resultat.getString("type_reglement")); + factureClt.setIdCommandeClt(resultat.getString("idcommande_commandeclt")); + factureClt.setIdBonLivraisonClt(resultat.getString("id_bon_livraisonclt")); + + //0 :espace | 1:cheque | 2 :carte bancaire | 3: virement bancaire + factureClt.setModePaiement(resultat.getString("mode_paiement")); + + factureClt.setDateFacture(resultat.getString("date_facture")); + factureClt.setNetAPayer(resultat.getString("net_a_payer")); + factureClt.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + factureClt.setTotalTVA(resultat.getString("total_tva")); + factureClt.setRemise(resultat.getString("remise")); + factureClt.setTimbre(resultat.getString("timbre_loi")); + factureClt.setCodeUser(resultat.getInt("profile_idprofile")); + factureClt.setTypeClient(resultat.getInt("typeclt")); + factureClt.setTypeFacilite(resultat.getString("type_facilite")); + + if(factureClt.getTypeClient()==0) + { + String Codeclient = resultat.getString("idcltexiste"); + factureClt.setCltPersonne(new ClientDB().getClient(Codeclient)); + } + if(factureClt.getTypeClient()==1) + { + String Codeclient = resultat.getString("idcltentreprise"); + factureClt.setCltEntreprise(new ClientEntrepriseDB().GetClientEtr(Codeclient)); + } + if(factureClt.getTypeClient()==2) + { + String Codeclient = resultat.getString("idcltpassageur"); + factureClt.setCltPassager(new ClientPassagerDB().getClient(Codeclient)); + } + + cnx.ouverture(); + String reqprod = "SELECT * FROM list_prod_factclt WHERE (idfactureclt_factureclt = "+codefacture+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet resulist = cnx.excutionquery(reqprod); + //on repace le curseur avant la première ligne + resulist.beforeFirst(); + ObservableList 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)); + } + factureClt.setListeproduit(dataProdDev); + + //type reglement: 0 comptant 1 facilité + if(resultat.getString("type_reglement").equals("1") ){ + factureClt.setTotalMontantTraite(resultat.getString("total_montant_traites")); + //List Traite factureClt True Traites + if(factureClt.getTypeFaciliteBoolean()){ + cnx.ouverture(); + String ReqListeTraite = "SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y') as DateCreation ,DATE_FORMAT(date_traite, '%d/%m/%Y') as DateTraite ,DATE_FORMAT(date_paiement, '%d/%m/%Y') as DatePaiement FROM traite_clt WHERE (id_factureclt = "+codefacture+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet ResultListeTraite = cnx.excutionquery(ReqListeTraite); + ResultListeTraite.beforeFirst(); + ArrayList ListTraites = new ArrayList(); + while ( ResultListeTraite.next() ) { + TraiteClt Traite = new TraiteClt(); + Traite.setCodeTraiteClt(ResultListeTraite.getString("id_traite")); + Traite.setDateCreationTraiteClt(ResultListeTraite.getString("DateCreation")); + Traite.setDateTraiteClt(ResultListeTraite.getString("DateTraite")); + Traite.setId_reglement(ResultListeTraite.getString("id_factureclt")); + Traite.setMontantTraiteClt(ResultListeTraite.getString("montant_traite")); + Traite.setDatePaiementTraiteClt(ResultListeTraite.getString("DatePaiement")); + ListTraites.add(Traite); + } + factureClt.setListeTraites(ListTraites); + }else if(factureClt.getTypeFaciliteBoolean() == false){ + String ReqListeChequeClt = "SELECT id_chequeclt, numero, banque, montant, nom_complet, DATE_FORMAT(date_paiement, '%d/%m/%Y') AS DatePaiement, DATE_FORMAT(date_creation, '%d/%m/%Y') AS DateCreation , id_factureclt FROM cheque_clt WHERE (id_factureclt = "+codefacture+") AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + ResultSet ResultListeChequeClt = cnx.excutionquery(ReqListeChequeClt); + ResultListeChequeClt.beforeFirst(); + ArrayList ListChequeClt = new ArrayList(); + while ( ResultListeChequeClt.next() ) { + ChequeClt Cheque = new ChequeClt(); + Cheque.setCodeChequeClt(ResultListeChequeClt.getString("id_chequeclt")); + Cheque.setNumeroChequeClt(ResultListeChequeClt.getString("numero")); + Cheque.setBanqueChequeClt(ResultListeChequeClt.getString("banque")); + Cheque.setMontantChequeClt(ResultListeChequeClt.getString("montant")); + Cheque.setNomCompletChequeClt(ResultListeChequeClt.getString("nom_complet")); + Cheque.setDatePaiement(ResultListeChequeClt.getString("DatePaiement")); + Cheque.setDateCreation(ResultListeChequeClt.getString("DateCreation")); + ListChequeClt.add(Cheque); + } + factureClt.setListeCheques(ListChequeClt); + } + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return factureClt ; + } + + /********************************** Initial *******************************/ + public ObservableList SearchFactureCltGestion(Integer debut, Integer nbr, String CodeFacture, String CodeClient, String Reglement, String CodeCommande, String DateCreation) + { + ObservableList data = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(CodeFacture)){ + Where += " (idfactureclt LIKE \"%"+Adaptateur.addSlashes(CodeFacture)+"%\") AND "; + } + + if(!clt.isStringNull(CodeClient)){ + Where += " ( idcltentreprise LIKE '%"+CodeClient+"%' OR idcltexiste LIKE '%"+CodeClient+"%' OR idcltpassageur LIKE '%"+CodeClient+"%' ) AND "; + } + + if(!clt.isStringNull(Reglement)){ + Where += " (type_reglement = \""+Reglement+"\") AND "; + } + + if(!clt.isStringNull(CodeCommande)){ + Where += " (idcommande_commandeclt LIKE \"%"+Adaptateur.addSlashes(CodeCommande)+"%\") AND "; + } + + if(!clt.isStringNull(DateCreation)){ + Where += " (DATE(date_facture) = \""+DateCreation+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req="SELECT idfactureclt, typeclt, idcltentreprise, idcltexiste, idcltpassageur, net_a_payer, type_reglement, idcommande_commandeclt, DATE_FORMAT(date_facture, '%d/%m/%Y') as date_facture "+ + "FROM factureclt " + + Where + + " ORDER BY date_facture 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_facture = resultat.getString("idfactureclt"); + + String type_client = ""; + String code_client = ""; + if(resultat.getString("typeclt").equals("0")){ + type_client ="Exist Client"; + code_client = resultat.getString("idcltexiste"); + }else if(resultat.getString("typeclt").equals("1")){ + type_client ="Entreprise"; + code_client = resultat.getString("idcltentreprise"); + }else if(resultat.getString("typeclt").equals("2")){ + type_client ="Passager"; + code_client = resultat.getString("idcltpassageur"); + } + + String total_facture = Adaptateur.FloatToStringEspace(resultat.getFloat("net_a_payer")); + + String type_reglement = ""; //reglement + if(resultat.getString("type_reglement").equals("0")){ + type_reglement = "Comptant"; + }else if(resultat.getString("type_reglement").equals("1")){ + type_reglement = "Facilité"; + } + + String code_commande =resultat.getString("idcommande_commandeclt"); + + String date_creation =resultat.getString("date_facture"); + + data.add(new FactureCltGestionList(code_facture, type_client, code_client, type_reglement, total_facture, code_commande, date_creation)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + + return data ; + } + + + public Integer nbrFactureCltGestion(String CodeFacture, String CodeClient, String Reglement, String CodeCommande, String DateCreation) + { + String Where = ""; + + if(!clt.isStringNull(CodeFacture)){ + Where += " (idfactureclt LIKE \"%"+Adaptateur.addSlashes(CodeFacture)+"%\") AND "; + } + + if(!clt.isStringNull(CodeClient)){ + Where += " ( idcltentreprise LIKE '%"+CodeClient+"%' OR idcltexiste LIKE '%"+CodeClient+"%' OR idcltpassageur LIKE '%"+CodeClient+"%' ) AND "; + } + + if(!clt.isStringNull(Reglement)){ + Where += " (type_reglement = \""+Reglement+"\") AND "; + } + + if(!clt.isStringNull(CodeCommande)){ + Where += " (idcommande_commandeclt LIKE \"%"+Adaptateur.addSlashes(CodeCommande)+"%\") AND "; + } + + if(!clt.isStringNull(DateCreation)){ + Where += " (DATE(date_facture) = \""+DateCreation+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req=" SELECT COUNT(idfactureclt) "+ + " FROM `factureclt` "+ + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + +} diff --git a/src/main/java/Models/FactureClt/FactureCltGestion.java b/src/main/java/Models/FactureClt/FactureCltGestion.java new file mode 100644 index 0000000..bdbbafa --- /dev/null +++ b/src/main/java/Models/FactureClt/FactureCltGestion.java @@ -0,0 +1,88 @@ +/* + * 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.FactureClt; + +/** + * + * @author PC-Maher + */ +public class FactureCltGestion { + + private String CodeFacture; + private String CodeClient; + private String Mode; //===> Compant/Facilité + private String TotalFacture; + private String CodeCommande; + private String CodeDevis; + private String Etat; //===> Encour/Payer/Non Payer + private String DateCreation; + + public String getCodeFacture() { + return CodeFacture; + } + + public void setCodeFacture(String CodeFacture) { + this.CodeFacture = CodeFacture; + } + + public String getCodeClient() { + return CodeClient; + } + + public void setCodeClient(String CodeClient) { + this.CodeClient = CodeClient; + } + + public String getMode() { + return Mode; + } + + public void setMode(String Mode) { + this.Mode = Mode; + } + + public String getTotalFacture() { + return TotalFacture; + } + + public void setTotalFacture(String TotalFacture) { + this.TotalFacture = TotalFacture; + } + + public String getCodeCommande() { + return CodeCommande; + } + + public void setCodeCommande(String CodeCommande) { + this.CodeCommande = CodeCommande; + } + + public String getCodeDevis() { + return CodeDevis; + } + + public void setCodeDevis(String CodeDevis) { + this.CodeDevis = CodeDevis; + } + + public String getEtat() { + return Etat; + } + + public void setEtat(String Etat) { + this.Etat = Etat; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + +} diff --git a/src/main/java/Models/FactureClt/FactureCltGestionList.java b/src/main/java/Models/FactureClt/FactureCltGestionList.java new file mode 100644 index 0000000..d347dc6 --- /dev/null +++ b/src/main/java/Models/FactureClt/FactureCltGestionList.java @@ -0,0 +1,65 @@ +/* + * 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.FactureClt; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author PC-Maher + */ +public class FactureCltGestionList { + + private final SimpleStringProperty CodeFacture; + private final SimpleStringProperty TypeClient; + private final SimpleStringProperty CodeClient; + private final SimpleStringProperty Mode; + private final SimpleStringProperty Total; + private final SimpleStringProperty CodeCommande; + private final SimpleStringProperty DateCreation; + + + + public FactureCltGestionList(String CodeFacture, String TypeClient, String CodeClient, String Mode,String Total, String CodeCommande, String Date) { + this.CodeFacture = new SimpleStringProperty(CodeFacture); + this.TypeClient = new SimpleStringProperty(TypeClient); + this.CodeClient = new SimpleStringProperty(CodeClient); + this.Mode = new SimpleStringProperty(Mode); + this.Total = new SimpleStringProperty(Total); + this.CodeCommande = new SimpleStringProperty(CodeCommande); + this.DateCreation = new SimpleStringProperty(Date); + } + + + public String getCodeFacture() { + return CodeFacture.get(); + } + + public String getCodeClient() { + return CodeClient.get(); + } + + public String getMode() { + return Mode.get(); + } + + public String getTotal() { + return Total.get(); + } + + public String getCodeCommande() { + return CodeCommande.get(); + } + + public String getTypeClient() { + return TypeClient.get(); + } + + public String getDateCreation() { + return DateCreation.get(); + } + +} \ No newline at end of file diff --git a/src/main/java/Models/FactureClt/FactureCltTraiteListe.java b/src/main/java/Models/FactureClt/FactureCltTraiteListe.java new file mode 100644 index 0000000..80a440f --- /dev/null +++ b/src/main/java/Models/FactureClt/FactureCltTraiteListe.java @@ -0,0 +1,31 @@ +/* + * 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.FactureClt; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class FactureCltTraiteListe { + + private final SimpleStringProperty DateTraites; + private final SimpleStringProperty MontantTraites; + + public FactureCltTraiteListe(String DateTraite, String MontantTraite) { + this.DateTraites = new SimpleStringProperty(DateTraite); + this.MontantTraites = new SimpleStringProperty(MontantTraite); + } + + public String getDateTraites() { + return DateTraites.get(); + } + + public String getMontantTraites() { + return MontantTraites.get(); + } +} diff --git a/src/main/java/Models/FactureFrs/FactureFrs.java b/src/main/java/Models/FactureFrs/FactureFrs.java new file mode 100644 index 0000000..e480a37 --- /dev/null +++ b/src/main/java/Models/FactureFrs/FactureFrs.java @@ -0,0 +1,287 @@ +/* + * 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.FactureFrs; + +import Controllers.Traitement.contro; +import Models.BonReceptionFrs.BonReceptionFrs; +import Models.CommandeFrs.CommandeFrs; +import Models.Fournisseur.Fournisseur; +import Models.Produit.ListeProduit; +import Models.Reglement.Reglement; +import Models.User.Profile; +import javafx.collections.ObservableList; + + +/** + * @author Maher + */ +public class FactureFrs { + + public String IdFactureFrs; + public String Numero; + public String HeurCreation; + public String DateCreation; + public String TypeReglement; // 0 comptant | 1 facilité + public String EtatReglement; // 0 payer | 1 cour | 2 non pays + public String Devise; + public Fournisseur Fournisseur; + public String Local; + public Profile Profile; + public String BonReception; // 1 Facture par Bon Réception | null Facture sans Bon Réception + public Reglement Reglement; + + + public String TotalHorsTaxNet; + public String Remise; + public String TotalTVA; + public String Timbre; + public String NetAPayer; + + public float FTotalHorsTaxNet; + public float FRemise; + public float FTotalTVA; + public float FTimbre; + public float FNetAPayer; + + + public CommandeFrs CommandeFrs; + public ObservableList ListProduit ; + public ObservableList ListeBonReception; + + contro Controle = new contro(); + public String getIdFactureFrs() { + return IdFactureFrs; + } + + public void setIdFactureFrs(String IdFactureFrs) { + this.IdFactureFrs = IdFactureFrs; + } + + public String getNumero() { + return Numero; + } + + public void setNumero(String Numero) { + this.Numero = Numero; + } + + public String getHeurCreation() { + return HeurCreation; + } + + public void setHeurCreation(String HeurCreation) { + this.HeurCreation = HeurCreation; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + public String getTypeReglement() { + return TypeReglement; + } + + public Reglement getReglement() { + return Reglement; + } + + public void setReglement(Reglement Reglement) { + this.Reglement = Reglement; + } + + + + // 0 comptant | 1 facilité + public String getTypeReglementString() { + if(Controle.isStringNull(TypeReglement)){ + return null; + }else{ + if(TypeReglement.equals("0")){ + return "Comptant"; + }else{ + return "Facilité"; + } + } + } + + public void setTypeReglement(String TypeReglement) { + this.TypeReglement = TypeReglement; + } + + public String getEtatReglement() { + return EtatReglement; + } + + // 0 payer | 1 cour | null non pays + public String getEtatReglementString() { + String Etat = "Non Pays"; + if(!Controle.isStringNull(TypeReglement)){ + if(TypeReglement.equals("0")){ + return "payer"; + }else if(TypeReglement.equals("1")){ + return "En Cour"; + } + } + return Etat; + } + + public String getBonReception() { + return BonReception; + } + + public void setBonReception(String BonReception) { + this.BonReception = BonReception; + } + + + + public void setEtatReglement(String EtatReglement) { + this.EtatReglement = EtatReglement; + } + + public String getDevise() { + return Devise; + } + + public void setDevise(String Devise) { + this.Devise = Devise; + } + + public String getTotalHorsTaxNet() { + return TotalHorsTaxNet; + } + + public void setTotalHorsTaxNet(String TotalHorsTaxNet) { + this.TotalHorsTaxNet = TotalHorsTaxNet; + } + + public String getRemise() { + return Remise; + } + + public void setRemise(String Remise) { + this.Remise = Remise; + } + + public String getTotalTVA() { + return TotalTVA; + } + + public void setTotalTVA(String TotalTVA) { + this.TotalTVA = TotalTVA; + } + + public String getTimbre() { + return Timbre; + } + + public void setTimbre(String Timbre) { + this.Timbre = Timbre; + } + + public String getNetAPayer() { + return NetAPayer; + } + + public void setNetAPayer(String NetAPayer) { + this.NetAPayer = NetAPayer; + } + + public Fournisseur getFournisseur() { + return Fournisseur; + } + + public void setFournisseur(Fournisseur Fournisseur) { + this.Fournisseur = Fournisseur; + } + + public String getLocal() { + return Local; + } + + public void setLocal(String Local) { + this.Local = Local; + } + + + public CommandeFrs getCommandeFrs() { + return CommandeFrs; + } + + public void setCommandeFrs(CommandeFrs CommandeFrs) { + this.CommandeFrs = CommandeFrs; + } + + public Profile getProfile() { + return Profile; + } + + public void setProfile(Profile Profile) { + this.Profile = Profile; + } + + public ObservableList getListProduit() { + return ListProduit; + } + + public void setListProduit(ObservableList ListProduit) { + this.ListProduit = ListProduit; + } + + public ObservableList getListeBonReception() { + return ListeBonReception; + } + + public void setListeBonReception(ObservableList ListeBonReception) { + this.ListeBonReception = ListeBonReception; + } + + public float getFTotalHorsTaxNet() { + return FTotalHorsTaxNet; + } + + public void setFTotalHorsTaxNet(float FTotalHorsTaxNet) { + this.FTotalHorsTaxNet = FTotalHorsTaxNet; + } + + public float getFRemise() { + return FRemise; + } + + public void setFRemise(float FRemise) { + this.FRemise = FRemise; + } + + public float getFTotalTVA() { + return FTotalTVA; + } + + public void setFTotalTVA(float FTotalTVA) { + this.FTotalTVA = FTotalTVA; + } + + public float getFTimbre() { + return FTimbre; + } + + public void setFTimbre(float FTimbre) { + this.FTimbre = FTimbre; + } + + public float getFNetAPayer() { + return FNetAPayer; + } + + public void setFNetAPayer(float FNetAPayer) { + this.FNetAPayer = FNetAPayer; + } + + +} diff --git a/src/main/java/Models/FactureFrs/FactureFrsDB.java b/src/main/java/Models/FactureFrs/FactureFrsDB.java new file mode 100644 index 0000000..b95d90a --- /dev/null +++ b/src/main/java/Models/FactureFrs/FactureFrsDB.java @@ -0,0 +1,532 @@ +/* + * 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.FactureFrs; + +import Controllers.Traitement.Adaptateur; +import static Controllers.Traitement.Adaptateur.StringToFloat; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.BonReceptionFrs.BonReceptionDB; +import Models.BonReceptionFrs.BonReceptionFrs; +import Models.Fournisseur.Fournisseur; +import Models.Fournisseur.FournisseurDB; +import Models.Produit.ListeProduit; +import Models.Stock.StockDetail; +import Models.Stock.StockDetailDB; +import Models.User.Profile; +import Models.User.ProfileDB; +import Models.User.User; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class FactureFrsDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public FactureFrs setFactureBRDB(FactureFrs Facture){ + + String Numero = Facture.getNumero(); + String DateCreation = Facture.getDateCreation(); + String HeurCreation = Facture.getHeurCreation(); + String TotalHorsTaxNet = Facture.getTotalHorsTaxNet().replace(",","."); + String TotalRemise = Facture.getRemise().replace(",","."); + String TotalTVA = Facture.getTotalTVA().replace(",","."); + String NetAPayer = Facture.getNetAPayer().replace(",","."); + String Fourisseur = Facture.getFournisseur().getCode(); + String Local = Facture.getLocal(); + + ObservableList ListProduit = Facture.getListProduit(); + + ObservableList ListBonReception = Facture.getListeBonReception(); + + + String CommandeFrs = "NULL"; + if(Facture.getCommandeFrs() != null){ + CommandeFrs = "'"+Facture.getCommandeFrs().getCodeCommandeFrs()+"'"; + } + + //0 comptant | 1 facilité + String TypeReglement = "NULL"; + if(Facture.getTypeReglement() != null){ + TypeReglement = "'"+Facture.getTypeReglement()+"'"; + } + + // 0payer | 1en cour | NULL non pays + String EtatReglement = "NULL"; + if(Facture.getEtatReglement() != null){ + EtatReglement = "'"+Facture.getEtatReglement()+"'"; + } + + String Query = "INSERT INTO `facture_frs` (`numero`, `date_creation`, `type_reglement`, `etat_reglement`, `bon_reception`, `devise`, `total_h_t_net`, `remise`, `total_tva`, `timbre_loi`, `net_a_payer`, `id_fourisseur`, `local_reception`, `id_commande_frs`, `id_profile`) VALUES ('"+Numero+"', '"+DateCreation+" "+HeurCreation+"', "+TypeReglement+", "+EtatReglement+", 1, '"+ ParametreSystem.CurrencySign+"', '"+TotalHorsTaxNet+"', '"+TotalRemise+"', '"+TotalTVA+"', '"+ParametreSystem.Timbre+"', '"+NetAPayer+"', '"+Fourisseur+"', '"+Local+"', "+CommandeFrs+", '"+User.idprofile+"');"; + String IdFacture = cnx.InsertGetLastId(Query); + Facture.setIdFactureFrs(IdFacture); + + String Req = "INSERT INTO `list_prod_fact_frs` (`id_facture_frs`, `reference`, `designation_produit`, `quantite`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`) VALUES "; + for(int i=0; i ListProduit = Facture.getListProduit(); + + String CommandeFrs = "NULL"; + if(Facture.getCommandeFrs() != null){ + CommandeFrs = "'"+Facture.getCommandeFrs().getCodeCommandeFrs()+"'"; + } + + //0 comptant | 1 facilité + String TypeReglement = "NULL"; + if(Facture.getTypeReglement() != null){ + TypeReglement = "'"+Facture.getTypeReglement()+"'"; + } + + // 0payer | 1en cour | NULL non pays + String EtatReglement = "NULL"; + if(Facture.getEtatReglement() != null){ + EtatReglement = "'"+Facture.getEtatReglement()+"'"; + } + + String Query = "INSERT INTO `facture_frs` (`numero`, `date_creation`, `type_reglement`, `etat_reglement`, `devise`, `total_h_t_net`, `remise`, `total_tva`, `timbre_loi`, `net_a_payer`, `id_fourisseur`, `local_reception`, `id_commande_frs`, `id_profile`) VALUES ('"+Numero+"', '"+DateCreation+" "+HeurCreation+"', "+TypeReglement+", "+EtatReglement+", '"+ParametreSystem.CurrencySign+"', '"+TotalHorsTaxNet+"', '"+TotalRemise+"', '"+TotalTVA+"', '"+ParametreSystem.Timbre+"', '"+NetAPayer+"', '"+Fourisseur+"', '"+Local+"', "+CommandeFrs+", '"+User.idprofile+"');"; + String IdFacture = cnx.InsertGetLastId(Query); + Facture.setIdFactureFrs(IdFacture); + + ObservableList ListStockDetail=FXCollections.observableArrayList(); + + String Req = "INSERT INTO `list_prod_fact_frs` (`id_facture_frs`, `reference`, `designation_produit`, `quantite`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`) VALUES "; + for(int i=0; i0){ + Facture.setNumero(resultat.getString("numero")); + Facture.setIdFactureFrs(resultat.getString("id_facture_frs")); + Facture.setHeurCreation(resultat.getString("heur_recep")); + Facture.setDateCreation(resultat.getString("date_recep")); + + Facture.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + Facture.setTotalTVA(resultat.getString("total_tva")); + Facture.setRemise(resultat.getString("remise")); + Facture.setNetAPayer(resultat.getString("net_a_payer")); + Facture.setTimbre(resultat.getString("timbre_loi")); + + Facture.setFTotalHorsTaxNet(resultat.getFloat("total_h_t_net")); + Facture.setFTotalTVA(resultat.getFloat("total_tva")); + Facture.setFRemise(resultat.getFloat("remise")); + Facture.setFNetAPayer(resultat.getFloat("net_a_payer")); + Facture.setFTimbre(resultat.getFloat("timbre_loi")); + + Facture.setLocal(resultat.getString("local_reception")); + Facture.setTypeReglement(resultat.getString("type_reglement")); + Facture.setEtatReglement(resultat.getString("etat_reglement")); + Facture.setDevise(resultat.getString("devise")); + Facture.setBonReception(resultat.getString("bon_reception")); + + Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fourisseur")); + Facture.setFournisseur(Frs); + + Profile profile = new ProfileDB().getpro(resultat.getInt("id_profile")); + Facture.setProfile(profile); + + Facture.setListProduit(this.getFactureProduitList(resultat.getString("id_facture_frs"))); + + if(Facture.getBonReception() != null){ + if(Facture.getBonReception().equals("1") ){ + BonReceptionDB BonRecepDB= new BonReceptionDB(); + ObservableList ListeBonReception = BonRecepDB.getBonReceptionByFact(resultat.getString("id_facture_frs")); + Facture.setListeBonReception(ListeBonReception); + } + } + + + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + return Facture; + } + + + public ObservableList getFactureProduitList(String IdFactureFrs){ + ObservableList ListProd = FXCollections.observableArrayList(); + if(cnx.ouverture()){ + try{ + String Query = "SELECT * FROM `list_prod_fact_frs` WHERE (`id_facture_frs` = "+IdFactureFrs+");"; + ResultSet ResultListProd = cnx.excutionquery(Query); + ResultListProd.beforeFirst(); + while (ResultListProd.next() ) { + String reference = ResultListProd.getString("reference"); + String designation = ResultListProd.getString("designation_produit"); + String quantite = ResultListProd.getString("quantite").replace(",","."); + String PrixHT = ResultListProd.getString("p_u_h_t").replace(",","."); + String Remise = ResultListProd.getString("remise").replace(",",".").replace("%",""); + String TotalHT = ResultListProd.getString("p_u_h_t_net").replace(",","."); + String TVA = ResultListProd.getString("tva").replace(",",".").replace("%",""); + String TotalTTC= ResultListProd.getString("montant").replace(",","."); + ListProd.add(new ListeProduit(reference, designation, quantite, PrixHT, Remise, TotalHT, TVA, TotalTTC)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return ListProd; + } + + public ObservableList SearchFactureFrsGestion(Integer debut, Integer nbr, String NumeroFacture, String IdFournisseur, String LocalReception, String DateReception) + { + ObservableList ListFactureFrs = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(NumeroFacture)){ + Where += " (`numero` = \""+NumeroFacture+"\") AND "; + } + + if(!clt.isStringNull(IdFournisseur)){ + Where += " (`id_fourisseur` = \""+IdFournisseur+"\") AND "; + } + + if(!clt.isStringNull(LocalReception)){ + Where += " (`local_reception` = \""+LocalReception+"\") AND "; + } + + if(!clt.isStringNull(DateReception)){ + Where += " (DATE(`date_creation`) = \""+DateReception+"\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req="SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y') as date_recep, DATE_FORMAT(date_creation, '%H:%i') as heur_recep " + + "FROM `facture_frs` " + + Where + + "ORDER BY id_facture_frs 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() ) { + FactureFrs Facture = new FactureFrs(); + Facture.setNumero(resultat.getString("numero")); + Facture.setIdFactureFrs(resultat.getString("id_facture_frs")); + Facture.setHeurCreation(resultat.getString("heur_recep")); + Facture.setDateCreation(resultat.getString("date_recep")); + + Facture.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + Facture.setTotalTVA(resultat.getString("total_tva")); + Facture.setRemise(resultat.getString("remise")); + Facture.setNetAPayer(resultat.getString("net_a_payer")); + Facture.setTimbre(resultat.getString("timbre_loi")); + Facture.setLocal(resultat.getString("local_reception")); + Facture.setTypeReglement(resultat.getString("type_reglement")); + Facture.setEtatReglement(resultat.getString("etat_reglement")); + Facture.setDevise(resultat.getString("devise")); + Facture.setBonReception(resultat.getString("bon_reception")); + + + Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fourisseur")); + Facture.setFournisseur(Frs); + + + ListFactureFrs.add(Facture); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return ListFactureFrs; + } + + + public Integer nbrFactureFrsGestion( String NumeroFacture, String IdFournisseur, String LocalReception, String DateReception) + { + String Where = ""; + + if(!clt.isStringNull(NumeroFacture)){ + Where += " (`numero` = \""+NumeroFacture+"\") AND "; + } + + if(!clt.isStringNull(IdFournisseur)){ + Where += " (`id_fourisseur` = \""+IdFournisseur+"\") AND "; + } + + if(!clt.isStringNull(LocalReception)){ + Where += " (`local_reception` = \""+LocalReception+"\") AND "; + } + + if(!clt.isStringNull(DateReception)){ + Where += " (DATE(`date_creation`) = \""+DateReception+"\") AND "; + } + + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req=" SELECT COUNT(`id_facture_frs`) " + + " FROM `facture_frs` " + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + + public ObservableList getDataFactureFrs(String tab, String mot, Integer debut, Integer nbr){ + + ObservableList ListFactureFrs = FXCollections.observableArrayList(); + + String Limit = ""; + if(debut != null || nbr!= null){ + Limit = "LIMIT "+debut+" , "+nbr; + } + String req="SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y') as date_recep, DATE_FORMAT(date_creation, '%H:%i') as heur_recep FROM `facture_frs` WHERE (id_reglement_frs IS NULL) AND ("+tab+" "+mot+") ORDER BY id_facture_frs DESC "+Limit+" ;"; + + 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() ) { + FactureFrs Facture = new FactureFrs(); + Facture.setNumero(resultat.getString("numero")); + Facture.setIdFactureFrs(resultat.getString("id_facture_frs")); + Facture.setHeurCreation(resultat.getString("heur_recep")); + Facture.setDateCreation(resultat.getString("date_recep")); + + Facture.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + Facture.setTotalTVA(resultat.getString("total_tva")); + Facture.setRemise(resultat.getString("remise")); + Facture.setNetAPayer(resultat.getString("net_a_payer")); + Facture.setTimbre(resultat.getString("timbre_loi")); + Facture.setLocal(resultat.getString("local_reception")); + Facture.setTypeReglement(resultat.getString("type_reglement")); + Facture.setEtatReglement(resultat.getString("etat_reglement")); + Facture.setDevise(resultat.getString("devise")); + Facture.setBonReception(resultat.getString("bon_reception")); + + + Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fourisseur")); + Facture.setFournisseur(Frs); + + + ListFactureFrs.add(Facture); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return ListFactureFrs; + } + + + public String nbrFactureFrs(String tab, String mot){ + + String req = "SELECT count(*) FROM facture_frs WHERE "+tab+" "+mot+" ;"; + + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return Integer.toString(sommme) ; + } + + + public ObservableList getFactureByIdReglement(String IdReglement){ + + ObservableList ListFactureFrs = FXCollections.observableArrayList(); + + String req="SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y') as date_recep, DATE_FORMAT(date_creation, '%H:%i') as heur_recep FROM `facture_frs` WHERE id_reglement_frs = "+IdReglement+" ORDER BY id_facture_frs DESC ;"; + + 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() ) { + FactureFrs Facture = new FactureFrs(); + Facture.setNumero(resultat.getString("numero")); + Facture.setIdFactureFrs(resultat.getString("id_facture_frs")); + Facture.setHeurCreation(resultat.getString("heur_recep")); + Facture.setDateCreation(resultat.getString("date_recep")); + + Facture.setTotalHorsTaxNet(resultat.getString("total_h_t_net")); + Facture.setTotalTVA(resultat.getString("total_tva")); + Facture.setRemise(resultat.getString("remise")); + Facture.setNetAPayer(resultat.getString("net_a_payer")); + Facture.setTimbre(resultat.getString("timbre_loi")); + Facture.setLocal(resultat.getString("local_reception")); + Facture.setTypeReglement(resultat.getString("type_reglement")); + Facture.setEtatReglement(resultat.getString("etat_reglement")); + Facture.setDevise(resultat.getString("devise")); + Facture.setBonReception(resultat.getString("bon_reception")); + + Profile profile = new ProfileDB().getpro(resultat.getInt("id_profile")); + Facture.setProfile(profile); + + if(Facture.getBonReception() != null){ + if(Facture.getBonReception().equals("1") ){ + BonReceptionDB BonRecepDB= new BonReceptionDB(); + ObservableList ListeBonReception = BonRecepDB.getBonReceptionByFact(resultat.getString("id_facture_frs")); + Facture.setListeBonReception(ListeBonReception); + } + } + + ListFactureFrs.add(Facture); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return ListFactureFrs; + } + +} diff --git a/src/main/java/Models/FactureFrs/FactureFrsProduitList.java b/src/main/java/Models/FactureFrs/FactureFrsProduitList.java new file mode 100644 index 0000000..dfe3c07 --- /dev/null +++ b/src/main/java/Models/FactureFrs/FactureFrsProduitList.java @@ -0,0 +1,79 @@ +/* + * 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.FactureFrs; + +import javafx.beans.property.SimpleStringProperty; + +/** + * @author Maher + */ +public class FactureFrsProduitList { + + private final SimpleStringProperty IdListProdFact; + private final SimpleStringProperty IdFactureFrs; + private final SimpleStringProperty Reference; + private final SimpleStringProperty Designation; + private final SimpleStringProperty Quantite; + private final SimpleStringProperty PrixUnitaireHorsTaxe; + private final SimpleStringProperty PrixUnitaireHorsTaxenNet; + private final SimpleStringProperty Remise; + private final SimpleStringProperty Tva; + private final SimpleStringProperty Montant; + + public FactureFrsProduitList(String id_list_prod, String id_facture, String reference, String designation,String quantite, String p_u_h_t, String p_u_h_t_net, String remise, String tva, String montant) + { + this.IdListProdFact = new SimpleStringProperty(id_list_prod); + this.IdFactureFrs = new SimpleStringProperty(id_facture); + this.Reference = new SimpleStringProperty(reference); + this.Designation = new SimpleStringProperty(designation); + this.Quantite = new SimpleStringProperty(quantite); + this.PrixUnitaireHorsTaxe = new SimpleStringProperty(p_u_h_t); + this.PrixUnitaireHorsTaxenNet = new SimpleStringProperty(p_u_h_t_net); + this.Remise = new SimpleStringProperty(remise); + this.Tva = new SimpleStringProperty(tva); + this.Montant = new SimpleStringProperty(montant); + } + + public String getIdListProdFact() { + return IdListProdFact.get(); + } + + public String getIdFactureFrs() { + return IdFactureFrs.get(); + } + + public String getReference() { + return Reference.get(); + } + + public String getDesignation() { + return Designation.get(); + } + + public String getQuantite() { + return Quantite.get(); + } + + public String getPrixUnitaireHorsTaxe() { + return PrixUnitaireHorsTaxe.get(); + } + + public String getPrixUnitaireHorsTaxenNet() { + return PrixUnitaireHorsTaxenNet.get(); + } + + public String getRemise() { + return Remise.get(); + } + + public String getTva() { + return Tva.get(); + } + + public String getMontant() { + return Montant.get(); + } +} diff --git a/src/main/java/Models/Fournisseur/Fournisseur.java b/src/main/java/Models/Fournisseur/Fournisseur.java new file mode 100644 index 0000000..0af76ee --- /dev/null +++ b/src/main/java/Models/Fournisseur/Fournisseur.java @@ -0,0 +1,122 @@ +/* + * 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.Fournisseur; + +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class Fournisseur { + + public String Code ; + public String Nom; + public String Adresse; + public String Formes; //SARL, EURL, SAS, SASU, SA, SNC + public String Tele1; + public String Tele2; + public String Fax; + public String Mail; + public String SiteWeb ; + public String Specialite; + public ObservableList ContactFrs; + + public String getCode() { + return Code; + } + + public void setCode(String Code) { + this.Code = Code; + } + + public String getNom() { + return Nom; + } + + public void setNom(String Nom) { + this.Nom = Nom; + } + + public String getAdresse() { + return Adresse; + } + + public void setAdresse(String Adresse) { + this.Adresse = Adresse; + } + + public String getFormes() { + return Formes; + } + + public void setFormes(String Formes) { + this.Formes = Formes; + } + + public String getTele1() { + return Tele1; + } + + public void setTele1(String Tele1) { + this.Tele1 = Tele1; + } + + public String getTele2() { + return Tele2; + } + + public void setTele2(String Tele2) { + this.Tele2 = Tele2; + } + + public String getFax() { + return Fax; + } + + public void setFax(String Fax) { + this.Fax = Fax; + } + + public String getMail() { + return Mail; + } + + public void setMail(String Mail) { + this.Mail = Mail; + } + + public String getSiteWeb() { + return SiteWeb; + } + + public void setSiteWeb(String SiteWeb) { + this.SiteWeb = SiteWeb; + } + + public String getSpecialite() { + return Specialite; + } + + public void setSpecialite(String Specialite) { + this.Specialite = Specialite; + } + + public ObservableList getContactFrs() { + return ContactFrs; + } + + public void setContactFrs(ObservableList ContactFrs) { + this.ContactFrs = ContactFrs; + } + + + + + + + +} diff --git a/src/main/java/Models/Fournisseur/FournisseurContactDB.java b/src/main/java/Models/Fournisseur/FournisseurContactDB.java new file mode 100644 index 0000000..7b47653 --- /dev/null +++ b/src/main/java/Models/Fournisseur/FournisseurContactDB.java @@ -0,0 +1,83 @@ +/* + * 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.Fournisseur; + +import Controllers.Traitement.contro; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class FournisseurContactDB { + connexion cnx = new connexion(); + + public int UpdListFournisseurContact(String Code, String Nom, String Prenom, String Tele1, String Tele2, String Mail) + { + contro clt= new contro(); + Nom = "'"+Nom.replace("'", "\\'")+"'"; + Prenom = "'"+Prenom.replace("'", "\\'")+"'"; + if(clt.isStringNull(Mail)){ Mail = "NULL"; }else{Mail = "'"+Mail.replace("'", "\\'")+"'";} + if(clt.isStringNull(Tele1)){ Tele1 = "NULL";} + if(clt.isStringNull(Tele2)){Tele2 = "NULL"; } + + String Query = "UPDATE `contact_frs` SET `nom` = "+Nom+", `prenom` = "+Prenom+", `tele1` = "+Tele1+", `tele2` = "+Tele2+", `email` = "+Mail+" WHERE `idcontactfrs` = "+Code+";"; + return cnx.MettreAJour(Query); + } + + public boolean SetListFournisseurContact(ObservableList ObservableContactList, String IdFournisseur) + { + String Query = "INSERT INTO `contact_frs` (`nom`, `prenom`, `tele1`, `tele2`, `email`, `id_fournisseur`) VALUES "; + contro clt= new contro(); + + for(FournisseurContactList ContactList : ObservableContactList){ + String Prenom = "'"+ContactList.getPrenom().replace("'", "\\'")+"'"; + String Nom = "'"+ContactList.getNom().replace("'", "\\'")+"'"; + String Mail = "NULL"; if(!clt.isStringNull(ContactList.getMail())){ Mail = "'"+ContactList.getMail().replace("'", "\\'")+"'";} + String Tele1 = "NULL"; if(!clt.isStringNull(ContactList.getTele1())){ Tele1 = ContactList.getTele1();} + String Tele2 = "NULL"; if(!clt.isStringNull(ContactList.getTele2())){ Tele1 = ContactList.getTele2();} + Query = Query + "("+Nom+", "+Prenom+", "+Tele1+", "+Tele2+", "+Mail+", "+IdFournisseur+"),"; + } + Query = Query.substring(0, Query.length()-1)+";"; + + return cnx.insertion(Query); + } + + public ObservableList GetListFournisseurContact(String CodeFrs) + { + ObservableList ObservableListContactFrs = FXCollections.observableArrayList(); + + String Query = "SELECT * FROM contact_frs WHERE (id_fournisseur = "+CodeFrs+");"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + + resultat.last();//on place le curseur sur le dernier tuple + + if(resultat.getRow()>0){ //on récupère le numéro de la ligne + resultat.beforeFirst(); + while ( resultat.next() ) { + String Code = resultat.getString("idcontactfrs"); + String Nom = resultat.getString("nom"); + String Prenom = resultat.getString("prenom"); + String Tele1 = resultat.getString("tele1"); + String Tele2 = resultat.getString("tele2"); + String Mail = resultat.getString("email"); + ObservableListContactFrs.add(new FournisseurContactList(Code, Nom, Prenom, Tele1, Tele2, Mail)); + } + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return ObservableListContactFrs; + } +} diff --git a/src/main/java/Models/Fournisseur/FournisseurContactList.java b/src/main/java/Models/Fournisseur/FournisseurContactList.java new file mode 100644 index 0000000..081412c --- /dev/null +++ b/src/main/java/Models/Fournisseur/FournisseurContactList.java @@ -0,0 +1,70 @@ +/* + * 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.Fournisseur; + +import javafx.beans.property.SimpleStringProperty; + +public class FournisseurContactList { + + private final SimpleStringProperty Code; + private final SimpleStringProperty Nom; + private final SimpleStringProperty Prenom; + private final SimpleStringProperty Tele1; + private final SimpleStringProperty Tele2; + private final SimpleStringProperty Mail; + + + public FournisseurContactList(String Code, String Nom, String Prenom, String Tele1,String Tele2, String Mail) { + this.Code = new SimpleStringProperty(Code); + this.Nom = new SimpleStringProperty(Nom); + this.Prenom = new SimpleStringProperty(Prenom); + this.Tele1 = new SimpleStringProperty(Tele1); + this.Tele2 = new SimpleStringProperty(Tele2); + this.Mail = new SimpleStringProperty(Mail); + } + + public String getCode() { + return Code.get(); + } + + public String getNom() { + return Nom.get(); + } + + + public String getPrenom() { + return Prenom.get(); + } + + + public String getTele1() { + return Tele1.get(); + } + + public void SetTele1(String tele1) { + this.Tele1.set(tele1); + } + + public String getTele2() { + return Tele2.get(); + } + + public void SetTele2(String tele2) { + this.Tele2.set(tele2); + } + + + public String getMail() { + return Mail.get(); + } + + + public void SetMail(String mail) { + this.Mail.set(mail); + } + + +} diff --git a/src/main/java/Models/Fournisseur/FournisseurDB.java b/src/main/java/Models/Fournisseur/FournisseurDB.java new file mode 100644 index 0000000..997e7ed --- /dev/null +++ b/src/main/java/Models/Fournisseur/FournisseurDB.java @@ -0,0 +1,276 @@ +/* + * 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.Fournisseur; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.contro; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class FournisseurDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + //methode qui permet de récupére la liste des locals souf le local qui appartin l'utilisateur + public ArrayList getAllFournisseur(String colonne){ + ArrayList listFournisseur = new ArrayList<>(); + String req = "SELECT "+colonne+" FROM `fournisseur` ORDER BY `id_fourisseur` DESC;"; //local avec la quel appartient l'utilisateur + 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() ) { + listFournisseur.add(resultat.getString(colonne)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+req); + } + } + return listFournisseur ; + } + + + public Fournisseur GetFournisseurDB(String CodeFrs) + { + Fournisseur fournisseur= new Fournisseur(); + + String Query = "SELECT * FROM fournisseur WHERE (id_fourisseur = "+CodeFrs+");"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + + resultat.last();//on place le curseur sur le dernier tuple + + if(resultat.getRow()>0){ //on récupère le numéro de la ligne + fournisseur.setCode(CodeFrs); + 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")); + + FournisseurContactDB FournisseurContact = new FournisseurContactDB(); + fournisseur.setContactFrs(FournisseurContact.GetListFournisseurContact(CodeFrs)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return fournisseur; + } + + public Fournisseur SetFournisseurDB(Fournisseur Frs) + { + contro clt= new contro(); + String Tele2 = "NULL"; if(!clt.isStringNull(Frs.getTele2())){ Tele2 = Frs.getTele2();} + String Fax = "NULL";if(!clt.isStringNull(Frs.getFax())){ Fax = Frs.getFax();} + String Mail = "NULL"; if(!clt.isStringNull(Frs.getMail())){ Mail = "'"+Frs.getMail().replace("'", "\\'")+"'";} + String SiteWeb = "NULL"; if(!clt.isStringNull(Frs.getSiteWeb())){ SiteWeb = "'"+Frs.getSiteWeb()+"'";} + String Specialite = "NULL"; if(!clt.isStringNull(Frs.getSpecialite())){ Specialite = "'"+Frs.getSpecialite().replace("'", "\\'")+"'";} + + String Query = "INSERT INTO `fournisseur` (`nom`, `adresse`, `formes`, `tele1`, `tele2`, `fax`, `mail`, `site_web`, `specialite`) VALUES ('"+Frs.getNom().replace("'", "\\'")+"', '"+Frs.getAdresse().replace("'", "\\'")+"', '"+Frs.getFormes().replace("'", "\\'")+"', "+Frs.getTele1()+", "+Tele2+", "+Fax+", "+Mail+", "+SiteWeb+", "+Specialite+");"; + String CodeFrs = cnx.InsertGetLastId(Query); + Frs.setCode(CodeFrs); + + int SizeContactFrs = Frs.getContactFrs().size(); + if(SizeContactFrs > 0){ + FournisseurContactDB FrsContactDB= new FournisseurContactDB(); + FrsContactDB.SetListFournisseurContact(Frs.getContactFrs(), CodeFrs); + } + + return Frs; + } + + + public boolean UpdFournisseurDB(Fournisseur Frs) + { + contro clt= new contro(); + String Tele2 = "NULL"; if(!clt.isStringNull(Frs.getTele2())){ Tele2 = Frs.getTele2();} + String Fax = "NULL";if(!clt.isStringNull(Frs.getFax())){ Fax = Frs.getFax();} + String Mail = "NULL"; if(!clt.isStringNull(Frs.getMail())){ Mail = "'"+Frs.getMail().replace("'", "\\'")+"'";} + String SiteWeb = "NULL"; if(!clt.isStringNull(Frs.getSiteWeb())){ SiteWeb = "'"+Frs.getSiteWeb()+"'";} + String Specialite = "NULL"; if(!clt.isStringNull(Frs.getSpecialite())){ Specialite = "'"+Frs.getSpecialite().replace("'", "\\'")+"'";} + + String Query = "UPDATE `fournisseur` SET `nom` = '"+Frs.getNom().replace("'", "\\'")+"', `adresse` = '"+Frs.getAdresse().replace("'", "\\'")+"', `formes` = '"+Frs.getFormes().replace("'", "\\'")+"', `Tele1` = '"+Frs.getTele1()+"', `Tele2` = "+Tele2+", `fax` = "+Fax+", `mail` = "+Mail+", `site_web` = "+SiteWeb+", `specialite` = "+Specialite+" WHERE `id_fourisseur` = "+Frs.getCode()+" ;"; + boolean Result = false; + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(Query); + if(nbr >= 1){ + Result = true; + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + + return Result; + } + + + + /********************************** Initial *******************************/ + + + public ObservableList SearchFournisseurGestion(Integer debut, Integer nbr, String CodeFournisseur, String NomFournisseur, String AdresseFournisseur, String TeleFournisseur, String FaxFournisseur, String MailFournisseur) + { + ObservableList data =FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(CodeFournisseur)){ + Where += " (`id_fourisseur` = \""+CodeFournisseur+"\") AND "; + } + + if(!clt.isStringNull(NomFournisseur)){ + Where += " (`nom` LIKE \"%"+Adaptateur.addSlashes(NomFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(AdresseFournisseur)){ + Where += " (`adresse` LIKE \"%"+Adaptateur.addSlashes(AdresseFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(TeleFournisseur)){ + Where += " (`tele1` LIKE \"%"+Adaptateur.addSlashes(TeleFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(FaxFournisseur)){ + Where += " (`fax` LIKE \"%"+Adaptateur.addSlashes(FaxFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(MailFournisseur)){ + Where += " (`mail` LIKE \"%"+Adaptateur.addSlashes(MailFournisseur)+"%\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req="SELECT `id_fourisseur`, `nom`, `adresse`, `formes`, `tele1`, `tele2`, `fax`, `mail`, `site_web`, `specialite` " + + "FROM `fournisseur` " + + Where + + "ORDER BY id_fourisseur 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 id_fourisseur = resultat.getString("id_fourisseur"); + String nom = resultat.getString("nom"); + String adresse = resultat.getString("adresse"); + String type_organisation = resultat.getString("formes"); + String tele1 = resultat.getString("tele1"); + String tele2 = resultat.getString("tele2"); + String fax = resultat.getString("fax"); + String mail = resultat.getString("mail"); + String site_web = resultat.getString("site_web"); + String specialite = resultat.getString("specialite"); + + data.add(new FournisseurGestionList(id_fourisseur, nom, adresse, type_organisation, tele1, tele2, fax, mail, site_web, specialite)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return data ; + } + + public Integer nbrFournisseurGestion(String CodeFournisseur, String NomFournisseur, String AdresseFournisseur, String TeleFournisseur, String FaxFournisseur, String MailFournisseur) + { + String Where = ""; + + if(!clt.isStringNull(CodeFournisseur)){ + Where += " (`id_fourisseur` = \""+CodeFournisseur+"\") AND "; + } + + if(!clt.isStringNull(NomFournisseur)){ + Where += " (`nom` LIKE \"%"+Adaptateur.addSlashes(NomFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(AdresseFournisseur)){ + Where += " (`adresse` LIKE \"%"+Adaptateur.addSlashes(AdresseFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(TeleFournisseur)){ + Where += " (`tele1` LIKE \"%"+Adaptateur.addSlashes(TeleFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(FaxFournisseur)){ + Where += " (`fax` LIKE \"%"+Adaptateur.addSlashes(FaxFournisseur)+"%\") AND "; + } + + if(!clt.isStringNull(MailFournisseur)){ + Where += " (`mail` LIKE \"%"+Adaptateur.addSlashes(MailFournisseur)+"%\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req=" SELECT COUNT(`id_fourisseur`) " + + " FROM `fournisseur` " + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + + + +} diff --git a/src/main/java/Models/Fournisseur/FournisseurGestionList.java b/src/main/java/Models/Fournisseur/FournisseurGestionList.java new file mode 100644 index 0000000..31fd8e5 --- /dev/null +++ b/src/main/java/Models/Fournisseur/FournisseurGestionList.java @@ -0,0 +1,80 @@ +/* + * 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.Fournisseur; + +import javafx.beans.property.SimpleStringProperty; + +public class FournisseurGestionList { + + private final SimpleStringProperty Code; + private final SimpleStringProperty Nom; + private final SimpleStringProperty Adresse; + private final SimpleStringProperty Formes; + private final SimpleStringProperty Tele1; + private final SimpleStringProperty Tele2; + private final SimpleStringProperty Fax; + private final SimpleStringProperty Mail; + private final SimpleStringProperty SiteWeb; + private final SimpleStringProperty Specialite; + + + public FournisseurGestionList(String Code, String Nom, String Adresse, String Formes, String Tele1,String Tele2, String Fax, String Mail, String SiteWeb, String Specialite) { + this.Code = new SimpleStringProperty(Code); + this.Nom = new SimpleStringProperty(Nom); + this.Adresse = new SimpleStringProperty(Adresse); + this.Formes = new SimpleStringProperty(Formes); + this.Tele1 = new SimpleStringProperty(Tele1); + this.Tele2 = new SimpleStringProperty(Tele2); + this.Fax = new SimpleStringProperty(Fax); + this.Mail = new SimpleStringProperty(Mail); + this.SiteWeb = new SimpleStringProperty(SiteWeb); + this.Specialite = new SimpleStringProperty(Specialite); + } + + public String getCode() { + return Code.get(); + } + + public String getNom() { + return Nom.get(); + } + + public String getAdresse() { + return Adresse.get(); + } + + public String getFormes() { + return Formes.get(); + } + + public String getTele1() { + return Tele1.get(); + } + + public String getTele2() { + return Tele2.get(); + } + + public String getFax() { + return Fax.get(); + } + + public String getMail() { + return Mail.get(); + } + + public String getSiteWeb() { + return SiteWeb.get(); + } + + public String getSpecialite() { + return Specialite.get(); + } + + + + +} diff --git a/src/main/java/Models/Home/HomeDB.java b/src/main/java/Models/Home/HomeDB.java new file mode 100644 index 0000000..9476b1a --- /dev/null +++ b/src/main/java/Models/Home/HomeDB.java @@ -0,0 +1,135 @@ +/* + * 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.Home; + +import Controllers.Traitement.ParametreSystem; +import Models.BonLivraisonClt.BonLivraisonCltProduitList; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.chart.PieChart; +import javafx.scene.chart.XYChart; + +/** + * @author Maher + */ +public class HomeDB { + + connexion cnx = new connexion(); + + public Map HomeNbr() + { + Map map = new HashMap<>(); + + String Query = " SELECT 'factureclt' AS 'colHome', COUNT(idfactureclt) AS nbr " + + " FROM `factureclt` "+ + " WHERE (YEAR(date_facture) = DATE_FORMAT(CURDATE(), '%Y')) AND (local_nom LIKE '"+ParametreSystem.NomLocalPC+"') "+ + + " UNION "+ + + " SELECT 'client' AS 'colHome', COUNT(codeclient) AS nbr "+ + " FROM `client` "+ + " WHERE (YEAR(`date_add`) = DATE_FORMAT(CURDATE(), '%Y')) AND (local_nom LIKE '"+ParametreSystem.NomLocalPC+"') "+ + + " UNION "+ + + " SELECT 'cheque' AS 'colHome', COUNT(id_chequeclt) AS nbr "+ + " FROM `cheque_clt` "+ + " WHERE (YEAR(`date_creation`) = DATE_FORMAT(CURDATE(), '%Y')) AND (local_nom LIKE '"+ParametreSystem.NomLocalPC+"'); "; + + if(cnx.ouverture()){ + try{ + ResultSet Resultat = cnx.excutionquery(Query); + Resultat.last(); + int nombreLignes = Resultat.getRow(); + if(nombreLignes>0){ + Resultat.beforeFirst(); + while (Resultat.next()){ + String col = Resultat.getString("colHome"); + String nbr = Resultat.getString("nbr"); + map.put(col, nbr); + } + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + + return map; + } + + + + public XYChart.Series HomeChiffreAffaireByMois() + { + XYChart.Series series1 = new XYChart.Series(); + + String Query = " SELECT DATE_FORMAT(date_facture,'%Y-%m') AS dateFact, sum(net_a_payer) chiffre " + + " FROM `factureclt` " + + " WHERE local_nom LIKE '"+ParametreSystem.NomLocalPC+"' " + + " GROUP BY dateFact " + + " ORDER BY dateFact DESC " + + " LIMIT 0, 6; "; + + if(cnx.ouverture()){ + try{ + ResultSet Resultat = cnx.excutionquery(Query); + Resultat.last(); + int nombreLignes = Resultat.getRow(); + if(nombreLignes>0){ + Resultat.beforeFirst(); + while (Resultat.next()){ + String dateFact = Resultat.getString("dateFact"); + Float chiffre = Resultat.getFloat("chiffre"); + series1.getData().add(new XYChart.Data(dateFact, chiffre)); + } + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + + return series1; + } + + + public ObservableList HomeVente(String year) + { + ObservableList ObservableListPieChart = FXCollections.observableArrayList(); + + String Query = " SELECT local_nom, SUM(`net_a_payer`) AS total "+ + " FROM `factureclt` "+ + " WHERE (YEAR(`date_facture`) = 2022) "+ + " GROUP BY local_nom; "; + + if(cnx.ouverture()){ + try{ + ResultSet Resultat = cnx.excutionquery(Query); + Resultat.last(); + int nombreLignes = Resultat.getRow(); + if(nombreLignes>0){ + Resultat.beforeFirst(); + while (Resultat.next()){ + String local_nom = Resultat.getString("local_nom"); + Float total = Resultat.getFloat("total"); + ObservableListPieChart.add(new PieChart.Data(local_nom, total)); + } + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + + return ObservableListPieChart; + } +} diff --git a/src/main/java/Models/Produit/ListeProduit.java b/src/main/java/Models/Produit/ListeProduit.java new file mode 100644 index 0000000..9db35f8 --- /dev/null +++ b/src/main/java/Models/Produit/ListeProduit.java @@ -0,0 +1,123 @@ +/* + * 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.Produit; + +import Controllers.Traitement.Adaptateur; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author PC-Maher + */ +public class ListeProduit { + + private final SimpleStringProperty reference; + private final SimpleStringProperty designation; + private final SimpleStringProperty quantite; + private final SimpleStringProperty PrixHT; + private final SimpleStringProperty Remise; + private final SimpleStringProperty TotalHT; + private final SimpleStringProperty TVA; + private final SimpleStringProperty TotalTTC; + + + + public ListeProduit(String reference, String designation, String quantite, String PrixHT, String Remise, String TotalHT, String TVA, String TotalTTC) { + + if(!reference.isEmpty()){ + + float remise = Adaptateur.ArrondStringToFloat(Remise.replace("%", "")) ; + float prixht = Adaptateur.ArrondStringToFloat(PrixHT) ; + float tva = Adaptateur.StringToFloat(TVA.replace("%", "")) ; + float qte = Adaptateur.StringToFloat(quantite) ; + float totalht = (prixht - ((prixht * remise)/100))* qte ; + float totalttc = totalht + ((totalht * tva)/100) ; + if(!Remise.contains("%")){ Remise=Remise+"%"; } + if(!TVA.contains("%")){ TVA=TVA+"%"; } + TotalHT = Adaptateur.ArrondFloatToString(totalht); + TotalTTC= Adaptateur.ArrondFloatToString(totalttc); + PrixHT = Adaptateur.ArrondFloatToString(prixht); + } + + + this.reference = new SimpleStringProperty(reference); + this.designation = new SimpleStringProperty(designation); + this.quantite = new SimpleStringProperty(quantite); + this.PrixHT = new SimpleStringProperty(PrixHT); + this.Remise = new SimpleStringProperty(Remise); + this.TotalHT = new SimpleStringProperty(TotalHT); + this.TVA = new SimpleStringProperty(TVA); + this.TotalTTC = new SimpleStringProperty(TotalTTC); + + } + + + + public String getReference() { + return reference.get(); + } + + public void setReference(String Reference) { + reference.set(Reference); + } + + public String getDesignation() { + return designation.get(); + } + + public void setDesignation(String Designaton) { + designation.set(Designaton); + } + + public String getQuantite() { + return quantite.get(); + } + public void setQuantite(String Quantite) { + quantite.set(Quantite); + } + + public String getPrixHT() { + return PrixHT.get(); + + } + public void setPrixHT(String prixHT) { + PrixHT.set(prixHT); + } + + public String getRemise() { + return Remise.get(); + } + public void setRemise(String remise) { + Remise.set(remise); + } + + public String getTotalHT() { + return TotalHT.get(); + + } + public void setTotalHT(String totalHT) { + TotalHT.set(totalHT); + } + + public String getTVA() { + return TVA.get(); + + } + public void setTVA(String tva) { + TVA.set(tva); + } + + public String getTotalTTC() { + return TotalTTC.get(); + } + + public void setTotalTTC(String totalTTC) { + TotalTTC.set(totalTTC); + } + + + +} diff --git a/src/main/java/Models/Produit/Produit.java b/src/main/java/Models/Produit/Produit.java new file mode 100644 index 0000000..608a8ba --- /dev/null +++ b/src/main/java/Models/Produit/Produit.java @@ -0,0 +1,266 @@ +package Models.Produit; + +/** + * + * @author Maher Ben Tili + */ +public class Produit { + private String reference; + private String codebarre ; + private String designation; + private String categorie; + private String marque; + private String couleur; + private String description; + private Integer garantie ; + + private String quantite; + + private String prixachatht ; + private String tvaachat; + private String prixachatttc ; + + private String marge ; + + private String prixventeht; + private String tvavente ; + private String prixventettc ; + + private String poids ; + private String dimensions; + private String vitesse; + private String puissance; + private String capacite; + + public Produit(){ + + } + + public Produit(String reference, String codebarre, String designation, String marque, String categorie, String quantite, String prix_vente_ht, String prix_vente_ttc, String tva_vente, String marge, String prix_achat_ht, String prix_achat_ttc, String tva_achat) + { + this.reference = reference; + this.codebarre = codebarre; + + this.designation = designation; + this.categorie = categorie; + this.marque = marque; + + this.quantite = quantite; + + this.prixachatht = prix_achat_ht; + this.tvaachat = tva_achat; + this.prixachatttc = prix_achat_ttc; + + this.marge = marge; + + this.prixventeht = prix_vente_ht; + this.tvavente = tva_vente; + this.prixventettc = prix_vente_ttc; + } + + public String getReference() { + return reference; + } + + public void setReference(String reference) { + this.reference = reference; + } + + public String getCodebarre() { + return codebarre; + } + + public void setCodebarre(String codebarre) { + this.codebarre = codebarre; + } + + + public String getDesignation() { + return designation; + } + + public void setDesignation(String designation) { + this.designation = designation.trim().toLowerCase(); + } + + public String getPrixachatht() { + return prixachatht; + } + + + public void setPrixachatht(String prixachatht) { + this.prixachatht = prixachatht; + } + + public String getTvaachat() { + return tvaachat; + } + + + public void setTvaachat(String tvaachat) { + this.tvaachat = tvaachat; + } + + public String getPrixventeht() { + return prixventeht; + } + + + public void setPrixventeht(String prixventeht) { + this.prixventeht = prixventeht; + } + + public String getTvavente() { + return tvavente; + } + + + public void setTvavente(String tvavente) { + this.tvavente = tvavente; + } + + public String getQuantite() { + return quantite; + } + + public void setQuantite(String quantite) { + this.quantite = quantite; + } + + + + + public String getCategorie() { + return categorie; + } + + public void setCategorie(String categorie) { + this.categorie = categorie; + } + + public String getMarque() { + return marque; + } + + public void setMarque(String marque) { + this.marque = marque; + } + + public String getCouleur() { + return couleur; + } + + public String getPrixachatttc() { + return prixachatttc; + } + + + + public String getMarge() { + return marge; + } + + + + public void setMarge(String marge) { + this.marge = marge; + } + + + public String getPrixventettc() { + return prixventettc; + } + + + public String getPoids() { + return poids; + } + + public String getDimensions() { + return dimensions; + } + + public String getVitesse() { + return vitesse; + } + + public String getPuissance() { + return puissance; + } + + public String getCapacite() { + return capacite; + } + + public void setPrixachatttc(String prixachatttc) { + this.prixachatttc = prixachatttc; + } + + + + public void setPrixventettc(String prixventettc) { + this.prixventettc = prixventettc; + } + + public void setPoids(String poids) { + this.poids = poids; + } + + public void setDimensions(String dimensions) { + this.dimensions = dimensions; + } + + public void setVitesse(String vitesse) { + this.vitesse = vitesse; + } + + public void setPuissance(String puissance) { + this.puissance = puissance; + } + + public void setCapacite(String capacite) { + this.capacite = capacite; + } + + + + public void setCouleur(String couleur) { + this.couleur = couleur; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + // supprimer les balises si le HTMLEditor description vide + if(description.equals("")){ + this.description = ""; + } + else{ + this.description = description; + } + } + + + + public Integer getGarantie() { + return garantie; + } + + public void setGarantie(Integer garantie) { + this.garantie = garantie; + } + + public void setGarantieString(String garantie) { + if(!garantie.equals("")){ + try{ + this.garantie = Integer.parseInt(garantie); + }catch(Exception ex){ + this.garantie = null; + } + }else{ + this.garantie = null; + } + } +} diff --git a/src/main/java/Models/Produit/ProduitDB.java b/src/main/java/Models/Produit/ProduitDB.java new file mode 100644 index 0000000..da42b5d --- /dev/null +++ b/src/main/java/Models/Produit/ProduitDB.java @@ -0,0 +1,297 @@ +package Models.Produit; + + +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * @author Maher Ben Tili + */ +public class ProduitDB { + + connexion cnx = new connexion(); + ShowDialog SD = new ShowDialog(); + contro clt = new contro(); + + public Produit getProduit (String ref) + { + Produit prod = new Produit(); + String req = "SELECT * FROM `produit` WHERE (`reference` LIKE '"+Adaptateur.addSlashes(ref)+"') OR (`code_barre` = '"+Adaptateur.addSlashes(ref)+"'); "; + 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){ + //on repace le curseur avant la première ligne + resultat.beforeFirst(); + while ( resultat.next() ) { + prod.setReference(resultat.getString("reference")); + prod.setCodebarre(resultat.getString("code_barre")); + prod.setCategorie(resultat.getString("nomcategorie_cate")); + prod.setDesignation(resultat.getString("designation")); + + prod.setCapacite(resultat.getString("capacite")); + prod.setCouleur(resultat.getString("couleur")); + prod.setDescription(resultat.getString("description")); + prod.setDimensions(resultat.getString("dimension")); + prod.setGarantie(resultat.getInt("garantie")); + + prod.setMarque(resultat.getString("marque")); + prod.setPoids(resultat.getString("poids")); + prod.setPuissance(resultat.getString("puissance")); + + prod.setPrixachatht(Adaptateur.ArrondStringToString(resultat.getString("prix_achat_ht"))); + prod.setTvaachat(Adaptateur.ArrondStringToString(resultat.getString("tva_achat"))); + prod.setPrixachatttc(Adaptateur.ArrondStringToString(resultat.getString("prix_achat_ttc"))); + + prod.setMarge(Adaptateur.ArrondStringToString(resultat.getString("marge"))); + + prod.setPrixventeht(Adaptateur.ArrondStringToString(resultat.getString("prix_vente_ht"))); + prod.setTvavente(Adaptateur.ArrondStringToString(resultat.getString("tva_vente"))); + prod.setPrixventettc(Adaptateur.ArrondStringToString(resultat.getString("prix_vente_ttc"))); + + prod.setVitesse(resultat.getString("vitesse")); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return prod ; + } + public Integer UpdateProduit (Produit prod ,String ref) + { + String Garantie = "NULL"; + if(prod.getGarantie() != null){ + Garantie = "'"+prod.getGarantie()+"'"; + } + //Adaptateur.addSlashes() + String req = "UPDATE `produit` SET `reference`= '"+Adaptateur.addSlashes(prod.getReference())+"', `designation`= \""+Adaptateur.addSlashes(prod.getDesignation())+"\", `nomcategorie_cate` = '"+Adaptateur.addSlashes(prod.getCategorie())+"', `marque`= '"+Adaptateur.addSlashes(prod.getMarque())+"', `garantie`= "+Garantie+", `prix_achat_ht` = '"+prod.getPrixachatht()+"', `tva_achat` = '"+prod.getTvaachat()+"', `prix_achat_ttc` = '"+prod.getPrixachatttc()+"', `marge` = '"+prod.getMarge()+"', `prix_vente_ht` = '"+prod.getPrixventeht()+"', `tva_vente` = '"+prod.getTvavente()+"', `prix_vente_ttc` = '"+prod.getPrixventettc()+"', `description` = '"+Adaptateur.addSlashes(prod.getDescription())+"', `poids` = '"+prod.getPoids()+"', `couleur` = '"+prod.getCouleur()+"', `dimension` = '"+prod.getDimensions()+"', `vitesse`= '"+prod.getVitesse()+"', `puissance`= '"+prod.getPuissance()+"', `capacite`='"+prod.getCapacite()+"' WHERE `produit`.`reference` = '"+Adaptateur.addSlashes(ref)+"';" ; + return cnx.MettreAJour(req); + } + + /********************************** Search *******************************/ + + public ObservableList SearchProduit(Integer debut, Integer nbr, Boolean stock, String Reference, String Category, String CodeBarre, String Designation) + { + ObservableList data =FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(Reference)){ + Where += " (p.reference LIKE \"%"+Adaptateur.addSlashes(Reference)+"%\") AND "; + } + + if(!clt.isStringNull(Category)){ + Where += " (p.nomcategorie_cate LIKE \"%"+Adaptateur.addSlashes(Category)+"%\") AND "; + } + + if(!clt.isStringNull(CodeBarre)){ + Where += " (p.code_barre = '"+Adaptateur.addSlashes(CodeBarre)+"') AND "; + } + + if(!clt.isStringNull(Designation)){ + Where += " (p.designation LIKE \"%"+Adaptateur.addSlashes(Designation)+"%\") AND "; + } + + + + String req="SELECT p.reference, p.code_barre, p.designation, p.marque, p.nomcategorie_cate, p.marge, p.tva_vente, p.nomcategorie_cate, p.prix_vente_ttc, IFNULL(s.quantite,0) AS quantite, IFNULL(p.prix_vente_ht,0) AS prix_vente_ht, IFNULL(p.prix_vente_ttc,0) AS prix_vente_ttc, IFNULL(p.tva_vente,0) AS tva_vente, IFNULL(p.prix_achat_ht,0) AS prix_achat_ht, IFNULL(p.prix_achat_ttc,0) AS prix_achat_ttc, IFNULL(p.tva_achat,0) AS tva_achat " + + "FROM produit p, stock s " + + "WHERE " + Where + + " (p.reference = s.produit_reference) AND (s.local_nom = '"+ParametreSystem.NomLocalPC+"') "+ + "ORDER BY p.datecreation DESC "+ + "LIMIT "+debut+" , "+nbr ; + + //true stock négative (vente produit en négatif) + if(stock){ + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + req= "SELECT p.reference, p.code_barre, p.designation, p.marque, p.nomcategorie_cate, p.marge, p.tva_vente, p.nomcategorie_cate, p.prix_vente_ttc, IFNULL(s.quantite,0) AS quantite, IFNULL(p.prix_vente_ht,0) AS prix_vente_ht, IFNULL(p.prix_vente_ttc,0) AS prix_vente_ttc, IFNULL(p.tva_vente,0) AS tva_vente, IFNULL(p.prix_achat_ht,0) AS prix_achat_ht, IFNULL(p.prix_achat_ttc,0) AS prix_achat_ttc, IFNULL(p.tva_achat,0) AS tva_achat " + + "FROM produit p " + + "LEFT JOIN stock s ON p.reference = s.produit_reference " + + Where + + "ORDER BY p.datecreation 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 reference = resultat.getString("reference"); + String code_barre = resultat.getString("code_barre"); + String designation=resultat.getString("designation"); + String marque =resultat.getString("marque"); + String nomcategorie =resultat.getString("nomcategorie_cate"); + String quantite = Adaptateur.ArrondStringToString(resultat.getString("quantite")); + + String prix_vente_ht = Adaptateur.ArrondStringToString(resultat.getString("prix_vente_ht")); + String prix_vente_ttc= Adaptateur.ArrondStringToString(resultat.getString("prix_vente_ttc")); + String tva_vente= Adaptateur.ArrondStringToString(resultat.getString("tva_vente")); + + String marge = Adaptateur.ArrondStringToString(resultat.getString("marge")); + + String prix_achat_ht = Adaptateur.ArrondStringToString(resultat.getString("prix_achat_ht")); + String prix_achat_ttc = Adaptateur.ArrondStringToString(resultat.getString("prix_achat_ttc")); + String tva_achat = Adaptateur.ArrondStringToString(resultat.getString("tva_achat")); + + + data.add(new Produit(reference, code_barre, designation, marque, nomcategorie, quantite, prix_vente_ht, prix_vente_ttc, tva_vente, marge, prix_achat_ht, prix_achat_ttc, tva_achat)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + else{ + SD.ShowAletDialog(); + } + return data ; + + } + + + public Integer nbrSearchProduit(Boolean stock, String Reference, String Category, String CodeBarre, String Designation) + { + String Where = ""; + + if(!clt.isStringNull(Reference)){ + Where += " (p.reference LIKE \"%"+Adaptateur.addSlashes(Reference)+"%\") AND "; + } + + if(!clt.isStringNull(Category)){ + Where += " (p.nomcategorie_cate LIKE \"%"+Adaptateur.addSlashes(Category)+"%\") AND "; + } + + if(!clt.isStringNull(CodeBarre)){ + Where += " (p.code_barre = '"+Adaptateur.addSlashes(CodeBarre)+"') AND "; + } + + if(!clt.isStringNull(Designation)){ + Where += " (p.designation LIKE \"%"+Adaptateur.addSlashes(Designation)+"%\") AND "; + } + + String req="SELECT COUNT(p.reference) " + + "FROM produit p, stock s " + + "WHERE " + Where + + " (p.reference = s.produit_reference) AND (s.local_nom = '"+ParametreSystem.NomLocalPC+"') ;"; + + + //true stock négative (vente produit en négatif) + if(stock){ + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + req = "SELECT count(*) FROM produit p "+ Where + " ;"; + } + + 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 ; + } + + + + /******************************************************************************/ + public boolean addProduit(Produit prod) + { + String Garantie = "NULL"; + if(prod.getGarantie() != null){ + Garantie = "'"+prod.getGarantie()+"'"; + } + String CodeBarre = "NULL"; + if(prod.getCodebarre()!= null){ + CodeBarre = "'"+prod.getCodebarre()+"'"; + } + + String req ="INSERT INTO `produit` (`reference`, `code_barre`, `designation`, `nomcategorie_cate`, `marque`, `garantie`, `prix_achat_ht`, `tva_achat`, `prix_achat_ttc`, `marge`, `prix_vente_ht`, `tva_vente`, `prix_vente_ttc`, `description`, `poids`, `couleur`, `dimension`, `vitesse`, `puissance`, `capacite`,`datecreation`) VALUES ('"+prod.getReference()+"', '"+prod.getCodebarre()+"', '"+Adaptateur.addSlashes(prod.getDesignation())+"', '"+prod.getCategorie()+"', '"+Adaptateur.addSlashes(prod.getMarque())+"', "+Garantie+", '"+prod.getPrixachatht().replace(',','.')+"', '"+prod.getTvaachat().replace(',','.')+"', '"+prod.getPrixachatttc().replace(',','.')+"', '"+prod.getMarge().replace(',','.')+"', '"+prod.getPrixventeht().replace(',','.')+"', '"+prod.getTvavente().replace(',','.')+"', '"+prod.getPrixventettc().replace(',','.')+"', '"+Adaptateur.addSlashes(prod.getDescription())+"', '"+prod.getPoids()+"', '"+prod.getCouleur()+"', '"+prod.getDimensions()+"', '"+prod.getVitesse()+"', '"+prod.getPuissance()+"', '"+prod.getCapacite()+"', CURDATE());"; + return cnx.insertion(req); + } + + public boolean verifyReferenceProduit(String ref) + { + boolean result = false ; + + if(cnx.ouverture()) + { + String sql="SELECT * FROM `produit` WHERE `reference` LIKE '"+Adaptateur.addSlashes(ref)+"';"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + result= true ; + } + } + catch (SQLException ex) { + result= false ; + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + + } + return result ; + } + + public boolean verifyCodeBarreProduit(String code_barre) + { + boolean result = false ; + + if(cnx.ouverture()) + { + String sql="SELECT * FROM `produit` WHERE `code_barre` = '"+Adaptateur.addSlashes(code_barre)+"';"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + result= true ; + } + } + catch (SQLException ex) { + result= false ; + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + } + return result ; + } +} diff --git a/src/main/java/Models/Reglement/CarteElectroniqueFrs.java b/src/main/java/Models/Reglement/CarteElectroniqueFrs.java new file mode 100644 index 0000000..e0a5a9f --- /dev/null +++ b/src/main/java/Models/Reglement/CarteElectroniqueFrs.java @@ -0,0 +1,81 @@ +/* + * 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.Reglement; + +/** + * + * @author Maher + */ +public class CarteElectroniqueFrs { + + private String CodeCarte; + private String NumeroTransaction; + private String NumeroCarte; + private String DateTransaction; + private String HeurTransaction; + private String Banque; + private String Mantant; + + + public String getCodeCarte() { + return CodeCarte; + } + + public void setCodeCarte(String CodeCarte) { + this.CodeCarte = CodeCarte; + } + + public String getNumeroTransaction() { + return NumeroTransaction; + } + + public void setNumeroTransaction(String NumeroTransaction) { + this.NumeroTransaction = NumeroTransaction; + } + + public String getNumeroCarte() { + return NumeroCarte; + } + + public void setNumeroCarte(String NumeroCarte) { + this.NumeroCarte = NumeroCarte; + } + + + public String getDateTransaction() { + return DateTransaction; + } + + public void setDateTransaction(String DateTransaction) { + this.DateTransaction = DateTransaction; + } + + public String getHeurTransaction() { + return HeurTransaction; + } + + public void setHeurTransaction(String HeurTransaction) { + this.HeurTransaction = HeurTransaction; + } + + public String getBanque() { + return Banque; + } + + public void setBanque(String Banque) { + this.Banque = Banque; + } + + public String getMantant() { + return Mantant; + } + + public void setMantant(String Mantant) { + this.Mantant = Mantant; + } + + +} diff --git a/src/main/java/Models/Reglement/ChequeFrs.java b/src/main/java/Models/Reglement/ChequeFrs.java new file mode 100644 index 0000000..632b78b --- /dev/null +++ b/src/main/java/Models/Reglement/ChequeFrs.java @@ -0,0 +1,109 @@ +/* + * 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.Reglement; + +import Models.User.Profile; + +/** + * + * @author Maher + */ +public class ChequeFrs { + + private String CodeChequeFrs ; + private String NumeroChequeFrs ; + private String BanqueChequeFrs ; + private String MontantChequeFrs ; + private String NomCompletChequeFrs ; + private String DatePaiement; + private String DateCreation; + private Profile profile; + + public ChequeFrs(String CodeChequeFrs, String NumeroChequeFrs, String BanqueChequeFrs, String MontantChequeFrs, String NomCompletChequeFrs, String DatePaiement, String DateCreation) { + this.CodeChequeFrs = CodeChequeFrs; + this.NumeroChequeFrs = NumeroChequeFrs; + this.BanqueChequeFrs = BanqueChequeFrs; + this.MontantChequeFrs = MontantChequeFrs; + this.NomCompletChequeFrs = NomCompletChequeFrs; + this.DatePaiement = DatePaiement; + this.DateCreation = DateCreation; + } + + + public ChequeFrs(){ + + } + + + + + public String getCodeChequeFrs() { + return CodeChequeFrs; + } + + public void setCodeChequeFrs(String CodeChequeFrs) { + this.CodeChequeFrs = CodeChequeFrs; + } + + public String getNumeroChequeFrs() { + return NumeroChequeFrs; + } + + public void setNumeroChequeFrs(String NumeroChequeFrs) { + this.NumeroChequeFrs = NumeroChequeFrs; + } + + public String getBanqueChequeFrs() { + return BanqueChequeFrs; + } + + public void setBanqueChequeFrs(String BanqueChequeFrs) { + this.BanqueChequeFrs = BanqueChequeFrs; + } + + public String getMontantChequeFrs() { + return MontantChequeFrs; + } + + public void setMontantChequeFrs(String MontantChequeFrs) { + this.MontantChequeFrs = MontantChequeFrs; + } + + public String getNomCompletChequeFrs() { + return NomCompletChequeFrs; + } + + public void setNomCompletChequeFrs(String NomCompletChequeFrs) { + this.NomCompletChequeFrs = NomCompletChequeFrs; + } + + public String getDatePaiement() { + return DatePaiement; + } + + public void setDatePaiement(String DatePaiement) { + this.DatePaiement = DatePaiement; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + public Profile getProfile() { + return profile; + } + + public void setProfile(Profile profile) { + this.profile = profile; + } + + + +} diff --git a/src/main/java/Models/Reglement/Reglement.java b/src/main/java/Models/Reglement/Reglement.java new file mode 100644 index 0000000..060f716 --- /dev/null +++ b/src/main/java/Models/Reglement/Reglement.java @@ -0,0 +1,192 @@ +/* + * 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.Reglement; + +import Controllers.Traitement.Adaptateur; +import Models.FactureFrs.FactureFrs; +import Models.Fournisseur.Fournisseur; +import Models.User.Profile; +import java.text.DecimalFormat; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class Reglement { + + public String Numero; + public Fournisseur Fournisseur; + public ObservableList ListFacture; + public String DateTimeCreation; + public String Montant; + public String TypePaiement ; // 0 Comptant | 1 Facilité + public String ModePaiement; //0 :espace | 1:Chèque | 2 :carte bancaire | 3: Traite + public String EtatReglement; // 0:En Cour | 1:Payer | 2:Retart + public Profile Profile; + + //public + public CarteElectroniqueFrs Carte; + public ChequeFrs Cheque; + + public ObservableList ListCheque; + public ObservableList ListTraite; + + + public String getNumero() { + return Numero; + } + + public void setNumero(String Numero) { + this.Numero = Numero; + } + + public String getMontant() { + return Montant; + } + + public void setMontant(String Montant) { + this.Montant = Montant; + } + + + public String getEtatReglement() { + return EtatReglement; + } + + public void setEtatReglement(String EtatReglement) { + this.EtatReglement = EtatReglement; + } + + public CarteElectroniqueFrs getCarte() { + return Carte; + } + + public void setCarte(CarteElectroniqueFrs Carte) { + this.Carte = Carte; + } + + public ChequeFrs getCheque() { + return Cheque; + } + + public void setCheque(ChequeFrs Cheque) { + this.Cheque = Cheque; + } + + public ObservableList getListCheque() { + return ListCheque; + } + + + + public void setListCheque(ObservableList ListCheque) { + this.ListCheque = ListCheque; + } + + public ObservableList getListTraite() { + return ListTraite; + } + + public ObservableList getListTraiteString() { + ObservableList NewListTraite = FXCollections.observableArrayList(); + DecimalFormat Formatter = new DecimalFormat("##,###.## "); + for(TraiteFrs Trait : ListTraite) { + String DatePaiement = Adaptateur.NormalDateFormat(Trait.getDatePaiement()); + String DateCreation = Adaptateur.NormalDateTimeFormat(Trait.getDateCreation()); + String Montant = Formatter.format(Float.parseFloat(Trait.getMontant())); + NewListTraite.add(new TraiteFrs(Trait.getCodeTraiteClt(), DatePaiement, DateCreation, Montant, Trait.getProfile())); + } + return NewListTraite; + } + + public void setListTraite(ObservableList ListTraite) { + this.ListTraite = ListTraite; + } + + + + + public Fournisseur getFournisseur() { + return Fournisseur; + } + + public void setFournisseur(Fournisseur Fournisseur) { + this.Fournisseur = Fournisseur; + } + + public ObservableList getListFacture() { + return ListFacture; + } + + public void setListFacture(ObservableList ListFacture) { + this.ListFacture = ListFacture; + } + + public String getDateTimeCreation() { + return DateTimeCreation; + } + + public String getDateTimeCreationString() { + return Adaptateur.NormalDateTimeFormat(DateTimeCreation); + } + + public void setDateTimeCreation(String DateTimeCreation) { + this.DateTimeCreation = DateTimeCreation; + } + + + + public String getModePaiement() { + return ModePaiement; + } + + public String getModePaiementString() { + //0 :espace | 1:Chèque | 2 :carte bancaire | 3: Traite + if(ModePaiement.equals("0")){ + return "Espace"; + }else if(ModePaiement.equals("1")){ + return "Chèque"; + }else if(ModePaiement.equals("2")){ + return "Carte bancaire"; + }else if(ModePaiement.equals("3")){ + return "Traite"; + } + return ModePaiement; + } + + public void setModePaiement(String ModePaiement) { + this.ModePaiement = ModePaiement; + } + + public String getTypePaiement() { + return TypePaiement; + } + + // 0 Comptant | 1 Facilité + public String getTypePaiementString() { + if(TypePaiement.equals("0")){ + return "Comptant"; + }else{ + return "Facilité"; + } + } + + public void setTypePaiement(String TypePaiement) { + this.TypePaiement = TypePaiement; + } + + public Profile getProfile() { + return Profile; + } + + public void setProfile(Profile Profile) { + this.Profile = Profile; + } + + +} diff --git a/src/main/java/Models/Reglement/ReglementDB.java b/src/main/java/Models/Reglement/ReglementDB.java new file mode 100644 index 0000000..628a680 --- /dev/null +++ b/src/main/java/Models/Reglement/ReglementDB.java @@ -0,0 +1,508 @@ +/* + * 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.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 Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * @author Maher + */ +public class ReglementDB { + + connexion cnx = new connexion(); + 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_fourisseur`, `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+"');"; + String IdNumero = cnx.InsertGetLastId(Query); + reglement.setNumero(IdNumero); + + + 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+");"; + cnx.MettreAJour(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); + } + } + return reglement; + } + + public ObservableList SearchGestionReglementGestion(Integer debut, Integer nbr, String Numero, String IdFournisseur, String Montant, String DatePayer, String TypeRegement, String Paiement){ + + ObservableList ListReglement = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(Numero)){ + Where += " (R.`id_reglement_frs` = \""+Numero+"\") AND "; + } + + if(!clt.isStringNull(IdFournisseur)){ + Where += " (R.`id_fourisseur` = \""+IdFournisseur+"\") AND "; + } + + if(!clt.isStringNull(Montant)){ + Where += " (R.`montant` = \""+Montant+"\") AND "; + } + + if(!clt.isStringNull(DatePayer)){ + Where += " (DATE(R.`date_creation`) = \""+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_fourisseur = R.id_fourisseur) AND " + Where; + }else{ + Where =" WHERE (F.id_fourisseur = R.id_fourisseur) "; + } + + String req="SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y %H:%i') as date_creat " + + " FROM reglement_frs R, fournisseur F " + + Where + + " ORDER BY id_reglement_frs 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() ) { + Reglement reglement = new Reglement(); + + reglement.setNumero(resultat.getString("id_reglement_frs")); + + Fournisseur fournisseur = new Fournisseur(); + fournisseur.setCode(resultat.getString("id_fourisseur")); + 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); + } + } + return ListReglement; + } + + public Integer nbrGestionReglementGestion(String Numero, String IdFournisseur, String Montant, String DatePayer, String TypeRegement, String Paiement) + { + String Where = ""; + + if(!clt.isStringNull(Numero)){ + Where += " (`id_reglement_frs` = \""+Numero+"\") AND "; + } + + if(!clt.isStringNull(IdFournisseur)){ + Where += " (`id_fourisseur` = \""+IdFournisseur+"\") AND "; + } + + if(!clt.isStringNull(Montant)){ + Where += " (`montant` = \""+Montant+"\") AND "; + } + + if(!clt.isStringNull(DatePayer)){ + Where += " (DATE(`date_creation`) = \""+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(`id_reglement_frs`) " + + " FROM `facture_frs` " + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + + /*public ObservableList getDataReglement(String tab,String mot, Integer debut, Integer nbr){ + + ObservableList ListReglement = FXCollections.observableArrayList(); + + String Limit = ""; + if(debut != null || nbr!= null){ + Limit = "LIMIT "+debut+" , "+nbr; + } + String req="SELECT *, DATE_FORMAT(date_creation, '%d/%m/%Y %H:%i') as date_creat FROM reglement_frs R, fournisseur F WHERE (F.id_fourisseur = R.id_fourisseur) AND ("+tab+" "+mot+") ORDER BY id_reglement_frs DESC "+Limit+" ;"; + + + 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() ) { + Reglement reglement = new Reglement(); + + reglement.setNumero(resultat.getString("id_reglement_frs")); + + //Fournisseur Frs = new FournisseurDB().GetFournisseurDB(resultat.getString("id_fourisseur")); + //Facture.setFournisseur(Frs); + Fournisseur fournisseur = new Fournisseur(); + fournisseur.setCode(resultat.getString("id_fourisseur")); + 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); + } + } + return ListReglement; + } + + public String nbrReglementFrs(String tab, String mot){ + + String req = "SELECT count(*) FROM reglement_frs R, fournisseur F WHERE (F.id_fourisseur = R.id_fourisseur) AND ("+tab+" "+mot+") ;"; + + int sommme =0; + if(cnx.ouverture()){ + try{ + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return Integer.toString(sommme) ; + }*/ + + public Reglement getReglementDB(String IdReglement){ + Reglement reglement = new Reglement(); + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery("SELECT * FROM `reglement_frs` WHERE `id_reglement_frs` = "+IdReglement+" ;"); + //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){ + 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_fourisseur"))); + 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("Erreur SQL ! \n"+ex.getMessage()); + } + } + return reglement; + } + + + public void setListChequeDB(ObservableList 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()+"', CURTIME() ),"; + } + ListValue = ListValue.substring(0, ListValue.length()-1) + ";"; + + String Query = "INSERT INTO `cheque_frs` (`id_reglement_frs`, `numero`, `banque`, `montant`, `nom_complet`, `date_paiement`, `date_creation`) VALUES "+ListValue; + + cnx.insertion(Query); + } + + public ObservableList getListChequeDB(String IdReglement){ + ObservableList ListCheque = FXCollections.observableArrayList(); + String req = "SELECT * FROM `cheque_frs` WHERE `id_reglement_frs` = "+IdReglement+";"; //local avec la quel appartient l'utilisateur + if(cnx.ouverture()){ + try{ + /* Exécution d'une requête de lecture */ + ResultSet resultat = cnx.excutionquery(req); + resultat.last();//on place le curseur sur le dernier tuple + int nombreLignes = resultat.getRow(); //on récupère le numéro de la ligne + if(nombreLignes>0){ + resultat.beforeFirst();//on repace le curseur avant la première ligne + 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) { + Logger.getLogger(ReglementDB.class.getName()).log(Level.SEVERE, null, ex); + } + } + return ListCheque; + } + + public void setListTraiteDB(ObservableList ListTraite, String IdReglement){ + String ListValue = ""; + for(TraiteFrs Traite : ListTraite ) { + ListValue += "('"+IdReglement+"', '"+Traite.getMontant().replace(",",".")+"', '"+Traite.getDatePaiement()+"', CURTIME()),"; + } + ListValue = ListValue.substring(0, ListValue.length()-1) + ";"; + + String Query = "INSERT INTO `traite_frs` (`id_reglement_frs`, `montant`, `date_paiement`, `date_creation`) VALUES "+ListValue; + + cnx.insertion(Query); + } + + public ObservableList getListTraiteDB(String IdReglement){ + ObservableList ListTraite = FXCollections.observableArrayList(); + String req = "SELECT * FROM `traite_frs` WHERE `id_reglement_frs` = "+IdReglement+";"; //local avec la quel appartient l'utilisateur + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(req); /* Exécution d'une requête de lecture */ + resultat.last();//on place le curseur sur le dernier tuple + int nombreLignes = resultat.getRow(); //on récupère le numéro de la ligne + if(nombreLignes>0){ + resultat.beforeFirst();//on repace le curseur avant la première ligne + 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(req); + System.err.println(ex.toString()); + } + } + return ListTraite; + } + + public ChequeFrs setChequeDB(ChequeFrs Cheque, String IdReglement){ + String Query = "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()+"', CURTIME() )"; + String IdCheque= cnx.InsertGetLastId(Query); + Cheque.setCodeChequeFrs(IdCheque); + return Cheque; + } + + public ChequeFrs getChequeDB(String IdReglement){ + ChequeFrs Cheque = new ChequeFrs(); + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery("SELECT * FROM `cheque_frs` WHERE `id_reglement_frs` = "+IdReglement+";"); + //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){ + 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("Erreur SQL ! \n"+ex.getMessage()); + } + } + + return Cheque; + } + + public CarteElectroniqueFrs setCarteElectroniqueDB(CarteElectroniqueFrs CarteElectronique, String IdReglement){ + String Query = "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(",",".")+"')"; + String IdCart = cnx.InsertGetLastId(Query); + CarteElectronique.setCodeCarte(IdCart); + return CarteElectronique; + } + + public CarteElectroniqueFrs getCarteElectroniqueDB(String IdReglement){ + CarteElectroniqueFrs CarteElectronique = new CarteElectroniqueFrs(); + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery("SELECT *, DATE_FORMAT(date_transaction, '%d/%m/%Y') as date_trans, DATE_FORMAT(date_transaction, '%H:%i') as heur_trans FROM `carte_electronique_frs` WHERE `id_reglement_frs` = "+IdReglement+";"); + //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){ + 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("Erreur SQL ! \n"+ex.getMessage()); + } + } + + return CarteElectronique; + } + +} diff --git a/src/main/java/Models/Reglement/TraiteFrs.java b/src/main/java/Models/Reglement/TraiteFrs.java new file mode 100644 index 0000000..cf910eb --- /dev/null +++ b/src/main/java/Models/Reglement/TraiteFrs.java @@ -0,0 +1,75 @@ +/* + * 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.Reglement; + +import Models.User.Profile; + +/** + * + * @author Maher + */ +public class TraiteFrs { + + private String CodeTraiteClt; + private String DatePaiement; + private String DateCreation; + private String Montant; + public Profile Profile; + + + + public TraiteFrs(String CodeTraiteClt, String DatePaiement, String DateCreation, String Montant, Profile Profile) { + this.CodeTraiteClt = CodeTraiteClt; + this.DatePaiement = DatePaiement; + this.DateCreation = DateCreation; + this.Montant = Montant; + this.Profile = Profile; + } + + + + public String getCodeTraiteClt() { + return CodeTraiteClt; + } + + public void setCodeTraiteClt(String CodeTraiteClt) { + this.CodeTraiteClt = CodeTraiteClt; + } + + public String getDatePaiement() { + return DatePaiement; + } + + public void setDatePaiement(String DatePaiement) { + this.DatePaiement = DatePaiement; + } + + public String getDateCreation() { + return DateCreation; + } + + public void setDateCreation(String DateCreation) { + this.DateCreation = DateCreation; + } + + public String getMontant() { + return Montant; + } + + public void setMontant(String Montant) { + this.Montant = Montant; + } + + public Profile getProfile() { + return Profile; + } + + public void setProfile(Profile Profile) { + this.Profile = Profile; + } + + +} diff --git a/src/main/java/Models/Stock/BonEntree.java b/src/main/java/Models/Stock/BonEntree.java new file mode 100644 index 0000000..a4f8eac --- /dev/null +++ b/src/main/java/Models/Stock/BonEntree.java @@ -0,0 +1,84 @@ +/* + * 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.Stock; +import Controllers.Stock.ListProduitBon; +import java.sql.Date; +import java.sql.Time; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class BonEntree { + + private String id ; + private Date date ; + private Time heur ; + private String local_emetteur; + private String local_recepteur; + private String transporteur ; + private ObservableList Liste_prod ; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public Time getHeur() { + return heur; + } + + public void setHeur(Time heur) { + this.heur = heur; + } + + public String getLocal_emetteur() { + return local_emetteur; + } + + public void setLocal_emetteur(String local_emetteur) { + this.local_emetteur = local_emetteur; + } + + public String getLocal_recepteur() { + return local_recepteur; + } + + public void setLocal_recepteur(String local_recepteur) { + this.local_recepteur = local_recepteur; + } + + public String getTransporteur() { + return transporteur; + } + + public void setTransporteur(String transporteur) { + this.transporteur = transporteur; + } + + public ObservableList getListe_prod() { + return Liste_prod; + } + + public void setListe_prod(ObservableList Liste_prod) { + this.Liste_prod = Liste_prod; + } + + + +} diff --git a/src/main/java/Models/Stock/BonEntreeListeProd.java b/src/main/java/Models/Stock/BonEntreeListeProd.java new file mode 100644 index 0000000..88c1efa --- /dev/null +++ b/src/main/java/Models/Stock/BonEntreeListeProd.java @@ -0,0 +1,64 @@ +/* + * 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.Stock; + +import java.math.BigInteger; + +/** + * + * @author Maher + */ +public class BonEntreeListeProd { + + private BigInteger id_bon_enter ; + private String reference_prod; + private Integer quantite ; + private Integer tva ; + private Float prix_venttc ; + + public BigInteger getId_bon_enter() { + return id_bon_enter; + } + + public void setId_bon_enter(BigInteger id_bon_enter) { + this.id_bon_enter = id_bon_enter; + } + + public String getReference_prod() { + return reference_prod; + } + + public void setReference_prod(String reference_prod) { + this.reference_prod = reference_prod; + } + + public Integer getQuantite() { + return quantite; + } + + public void setQuantite(Integer quantite) { + this.quantite = quantite; + } + + public Integer getTva() { + return tva; + } + + public void setTva(Integer tva) { + this.tva = tva; + } + + public Float getPrix_venttc() { + return prix_venttc; + } + + public void setPrix_venttc(Float prix_venttc) { + this.prix_venttc = prix_venttc; + } + + + +} diff --git a/src/main/java/Models/Stock/BonSortie.java b/src/main/java/Models/Stock/BonSortie.java new file mode 100644 index 0000000..2d330a3 --- /dev/null +++ b/src/main/java/Models/Stock/BonSortie.java @@ -0,0 +1,81 @@ +/* + * 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.Stock; + +import Controllers.Stock.ListProduitBon; +import java.sql.Date; +import java.sql.Time; +import javafx.collections.ObservableList; + +/** + * + * @author PC-Maher + */ +public class BonSortie { + private String id ; + private Date date ; + private Time heur ; + private String local_emetteur; + private String local_recepteur; + private String transporteur ; + private ObservableList Liste_prod ; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public Time getHeur() { + return heur; + } + + public void setHeur(Time heur) { + this.heur = heur; + } + + public String getLocal_emetteur() { + return local_emetteur; + } + + public void setLocal_emetteur(String local_emetteur) { + this.local_emetteur = local_emetteur; + } + + public String getLocal_recepteur() { + return local_recepteur; + } + + public void setLocal_recepteur(String local_recepteur) { + this.local_recepteur = local_recepteur; + } + + public String getTransporteur() { + return transporteur; + } + + public void setTransporteur(String transporteur) { + this.transporteur = transporteur; + } + + public ObservableList getListe_prod() { + return Liste_prod; + } + + public void setListe_prod(ObservableList Liste_prod) { + this.Liste_prod = Liste_prod; + } +} diff --git a/src/main/java/Models/Stock/BondeEntrerDB.java b/src/main/java/Models/Stock/BondeEntrerDB.java new file mode 100644 index 0000000..8a24279 --- /dev/null +++ b/src/main/java/Models/Stock/BondeEntrerDB.java @@ -0,0 +1,216 @@ +/* + * 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.Stock; + + +import Controllers.Stock.BondeEntrerDetailController; +import Controllers.Stock.ListProduitBon; +import Controllers.Stock.ListProduitRech; +import Controllers.Traitement.Adaptateur; +import static Controllers.Traitement.Adaptateur.StringToFloat; +import Controllers.Traitement.contro; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * @author Maher Ben Tili + */ +public class BondeEntrerDB { + + connexion cnx = new connexion(); + + contro clt = new contro(); + + public ObservableList getdataProdBE(String Reference, String Designation, String CodeBarre, String Category) + { + ObservableList data= FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(Reference)){ + Where += " (reference LIKE \"%"+Adaptateur.addSlashes(Reference)+"%\") AND "; + } + + if(!clt.isStringNull(Category)){ + Where += " (nomcategorie_cate LIKE \"%"+Adaptateur.addSlashes(Category)+"%\") AND "; + } + + if(!clt.isStringNull(CodeBarre)){ + Where += " (code_barre = '"+Adaptateur.addSlashes(CodeBarre)+"') AND "; + } + + if(!clt.isStringNull(Designation)){ + Where += " (designation LIKE \"%"+Adaptateur.addSlashes(Designation)+"%\") AND "; + } + + if(!Where.equals("")){ + Where = Where.substring(0, Where.length() - 4); + Where = "WHERE " + Where; + } + + String req = "SELECT * FROM `produit` "+Where+" ORDER BY `datecreation` DESC ;"; + + 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 reference = resultat.getString("reference"); + String designation=resultat.getString("designation"); + String marque =resultat.getString("marque"); + String nomcategorie =resultat.getString("nomcategorie_cate"); + String prixttc =resultat.getString("prix_vente_ttc"); + String TVA =resultat.getString("tva_vente"); + data.add(new ListProduitRech(reference, designation, marque, nomcategorie, prixttc, TVA, "")); + + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return data ; + } + + + public boolean VerifyIdBonEnter(String idbonenter){ + //true id exsiste false n'exsiste pas + boolean result = false ; + if(cnx.ouverture()){ + String sql="SELECT * FROM `entre` WHERE `id_entre` = "+idbonenter+" ;"; + + try { + ResultSet resultat = cnx.excutionquery(sql); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + result= true ; + } + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(sql); + } + } + return result ; + } + + + /******************************Insertion Bon d'entrée************************************************/ + // 1) il faut insérer la bon enter table "enter" + // 2) il faut insérer la liste des produits qui corsponder à la bon d'enter table "liste_produit_entre" + // 3) appéle à la fonction PLSQL "addBonEntrer" qui se charge a insérer les données à les table suivant: + // 3.1) insertion dans la table "liste_produit_entre" + // 3.2) insertion dans la table "detail_stock" + // 3.2) insertion dans la table "detail_entre" les données 'idBonEnter', LAST_INSERT_ID de 'detail_stock' + // 3.3) update ou insertion les produit à la table "stock" + // 3.4) Si le traitement est effectuer comme prévu la fonction "addBonEntrer" retourne 4 + + public boolean addBonEntrer(BonEntree mybe, ObservableList data){ + Boolean result= false ; + String req = "INSERT INTO `entre` (`id_entre`, `date`, `heur`, `local_emetteur`, `local_recepteur`, `transporteur`) VALUES ('"+mybe.getId()+"', '"+mybe.getDate().toString()+"', CURTIME(), '"+mybe.getLocal_emetteur()+"', '"+mybe.getLocal_recepteur()+"', '"+mybe.getTransporteur()+"');"; + if(cnx.ouverture()){ + String IdEnter = cnx.InsertGetLastId(req); + if(IdEnter != null){ + + String Query = "INSERT INTO liste_produit_entre (id_bon_entre, reference_produit, designation ,quantite, tva, prix_vente_ttc) VALUE "; + + ObservableList ListStockDetail=FXCollections.observableArrayList(); + + for(ListProduitBon listeprod : data){ + String TVA =listeprod.getTva().replace("%","").replace(",","."); + String TotalTTC= listeprod.getPrixttc().replace(",","."); + Query = Query + "("+IdEnter+", '"+listeprod.getReference()+"', \""+listeprod.getDesignaton()+"\", "+listeprod.getQuantite()+", "+TVA+", '"+TotalTTC+"'),"; + + ListStockDetail.add(new StockDetail(listeprod.getReference(), StringToFloat(listeprod.getQuantite()), IdEnter, null, null, null, null, null)); + } + Query = Query.substring(0, Query.length()-1)+";"; + + result = cnx.insertion(Query); + + new StockDetailDB().InsertStockDetail(ListStockDetail); + + BondeEntrerDetailController.id_bondentree = mybe.getId() ; + } + } + + return result; + } + + + /******************************get Bon d'entrée************************************************/ + + public BonEntree getBonEntree(String id_BonEntree){ + BonEntree bonenter = new BonEntree(); + String req = "SELECT * FROM `entre` WHERE `id_entre` = "+id_BonEntree+" ;"; + 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() ) { + bonenter.setId(resultat.getString("id_entre")); + bonenter.setDate(resultat.getDate("date")); + bonenter.setHeur(resultat.getTime("heur")); + bonenter.setLocal_emetteur(resultat.getString("local_emetteur")); + bonenter.setLocal_recepteur(resultat.getString("local_recepteur")); + bonenter.setTransporteur(resultat.getString("transporteur")); + } + + ///Pour La liste des Produits + String reqPro = "SELECT * FROM `liste_produit_entre` , `produit` WHERE `reference`=`reference_produit` AND `id_bon_entre`= "+id_BonEntree+" ;"; + ResultSet resultatListePro = cnx.excutionquery(reqPro); + resultatListePro.last(); + resultatListePro.beforeFirst(); + ObservableList data=FXCollections.observableArrayList(); + while ( resultatListePro.next() ) { + String reference = resultatListePro.getString("reference_produit"); + String designation=resultatListePro.getString("designation"); + String quantite =resultatListePro.getString("quantite"); + String marque =resultatListePro.getString("marque"); + String nomcategorie =resultatListePro.getString("nomcategorie_cate"); + String tva =resultatListePro.getString("tva_vente"); + String prix_vente_ttc =resultatListePro.getString("prix_vente_ttc"); + data.add(new ListProduitBon(reference, designation, marque, nomcategorie, prix_vente_ttc, quantite, tva)); + + } + bonenter.setListe_prod(data); + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return bonenter ; + } + + + + +} diff --git a/src/main/java/Models/Stock/BondeSortieDB.java b/src/main/java/Models/Stock/BondeSortieDB.java new file mode 100644 index 0000000..93348d5 --- /dev/null +++ b/src/main/java/Models/Stock/BondeSortieDB.java @@ -0,0 +1,191 @@ +/* + * 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.Stock; + +import Controllers.Stock.BondeSortieDetailController; +import Controllers.Stock.ListProduitBon; +import Controllers.Stock.ListProduitRech; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author Maher + */ +public class BondeSortieDB { + + connexion cnx = new connexion(); + + + public ObservableList getdataProdBS(String ref, String desig, String codeBarre, String catego, boolean StockNegative){ + ObservableList data=FXCollections.observableArrayList(); + + String req="SELECT p.reference, p.designation, p.marque, p.nomcategorie_cate, p.tva_vente, p.nomcategorie_cate, p.prix_vente_ttc, s.quantite " + + "FROM stock AS s , produit AS p " + + "WHERE p.reference = s.produit_reference AND local_nom = '"+ParametreSystem.NomLocalPC+"' AND (s.quantite > 0) AND (p.reference LIKE '%"+Adaptateur.addSlashes(ref)+"%') AND (p.nomcategorie_cate LIKE '%"+Adaptateur.addSlashes(catego)+"%') AND (p.designation LIKE '%"+Adaptateur.addSlashes(desig)+"%') AND (p.code_barre = '"+Adaptateur.addSlashes(codeBarre)+"') ORDER BY p.datecreation DESC ;"; + + if(StockNegative){ + req="SELECT p.reference, p.designation, p.marque, p.nomcategorie_cate, p.tva_vente, p.nomcategorie_cate, p.prix_vente_ttc, IFNULL(s.quantite,0) AS quantite " + + "FROM produit p LEFT JOIN stock s ON p.reference = s.produit_reference " + + "WHERE p.reference LIKE '%"+Adaptateur.addSlashes(ref)+"%' AND p.nomcategorie_cate LIKE '%"+Adaptateur.addSlashes(catego)+"%' AND p.designation LIKE '%"+Adaptateur.addSlashes(desig)+"%' AND (p.code_barre = '"+Adaptateur.addSlashes(codeBarre)+"') ORDER BY p.datecreation DESC ;"; + } + + 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 reference = resultat.getString("reference"); + String designation=resultat.getString("designation"); + String marque =resultat.getString("marque"); + String nomcategorie =resultat.getString("nomcategorie_cate"); + String prixttc =resultat.getString("prix_vente_ttc"); + String TVA =resultat.getString("tva_vente"); + String quantite =resultat.getString("quantite"); + data.add(new ListProduitRech(reference, designation, marque, nomcategorie, prixttc, TVA, quantite)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return data ; + } + + public int GetQuantiteStock(String Reference){ + String req = "SELECT quantite FROM stock WHERE produit_reference = '"+Reference+"' AND local_nom = '"+ParametreSystem.NomLocalPC+"' ;"; + Integer q = 0 ; + if(cnx.ouverture()){ + try { + ResultSet resultat = cnx.excutionquery(req); + resultat.last(); //on place le curseur sur le dernier tuple + if(resultat.getRow()>0){ + q = resultat.getInt("quantite"); + } + } + catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return q ; + } + + /******************************get Bon de Sortie************************************************/ + + public BonSortie getBonSortie(String id_BonSortie){ + BonSortie bonsortie = new BonSortie(); + + String req = "SELECT * FROM `sortie` WHERE `id_sortie` = "+id_BonSortie+" AND local_emetteur = '"+ParametreSystem.NomLocalPC+"' ;"; + if(cnx.ouverture()){ + + try{ + /* Exécution d'une requête de lecture */ + ResultSet resultat = cnx.excutionquery(req); + + resultat.last(); //on place le curseur sur le dernier tuple + + //on récupère le numéro de la ligne + int nombreLignes = resultat.getRow(); + + if(nombreLignes>0){ + + bonsortie.setId(resultat.getString("id_sortie")); + bonsortie.setDate(resultat.getDate("date")); + bonsortie.setHeur(resultat.getTime("heur")); + bonsortie.setLocal_emetteur(resultat.getString("local_emetteur")); + bonsortie.setLocal_recepteur(resultat.getString("local_recepteur")); + bonsortie.setTransporteur(resultat.getString("transporteur")); + + ///Pour La liste des Produits + String reqPro = "SELECT * FROM `liste_produit_sortie` , `produit` WHERE `reference`=`reference_produit` AND `id_bon_sortie`= "+id_BonSortie+" ;"; + ResultSet resultatListePro = cnx.excutionquery(reqPro); + resultatListePro.last(); + resultatListePro.beforeFirst(); + ObservableList data=FXCollections.observableArrayList(); + while ( resultatListePro.next() ) { + String reference = resultatListePro.getString("reference_produit"); + String designation=resultatListePro.getString("designation"); + Integer quantite =resultatListePro.getInt("quantite"); + quantite = quantite * -1 ; + String marque =resultatListePro.getString("marque"); + String nomcategorie =resultatListePro.getString("nomcategorie_cate"); + String tva =resultatListePro.getString("tva_vente"); + String prix_vente_ttc =resultatListePro.getString("prix_vente_ttc"); + data.add(new ListProduitBon(reference, designation, marque, nomcategorie, prix_vente_ttc, quantite.toString(), tva)); + } + bonsortie.setListe_prod(data); + } + + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return bonsortie ; + } + + + + public boolean addBonSortie(BonSortie mybe){ + Boolean result= false ; + String req = "INSERT INTO `sortie` (`date`, `heur`, `local_emetteur`, `local_recepteur`, `transporteur`) VALUES ('"+mybe.getDate().toString()+"', CURTIME(), '"+mybe.getLocal_emetteur()+"', '"+mybe.getLocal_recepteur()+"', '"+mybe.getTransporteur()+"');"; + if(cnx.ouverture()){ + String IdSortie = cnx.InsertGetLastId(req); + if(!IdSortie.isEmpty()){ + + String Query = "INSERT INTO liste_produit_sortie (id_bon_sortie, reference_produit, designation, quantite, tva, prix_vente_ttc) VALUES "; + + ObservableList ListStockDetail=FXCollections.observableArrayList(); + + for(ListProduitBon listeprod : mybe.getListe_prod()){ + String TVA =listeprod.getTva().replace("%","").replace(",","."); + String TotalTTC= listeprod.getPrixttc().replace(",","."); + Float NewQuantite= Adaptateur.StringToFloat(listeprod.getQuantite()) * -1; + Query = Query + "("+IdSortie+", '"+listeprod.getReference()+"', \""+listeprod.getDesignaton()+"\", "+NewQuantite+", "+TVA+", '"+TotalTTC+"'),"; + + ListStockDetail.add(new StockDetail(listeprod.getReference(), NewQuantite, null, IdSortie, null, null, null, null)); + + } + Query = Query.substring(0, Query.length()-1)+";"; + + result = cnx.insertion(Query); + + new StockDetailDB().InsertStockDetail(ListStockDetail); + + BondeSortieDetailController.id_bonsortie = IdSortie ; + } + } + + return result; + } + + + + + + + + + +} diff --git a/src/main/java/Models/Stock/ListeMouvement.java b/src/main/java/Models/Stock/ListeMouvement.java new file mode 100644 index 0000000..305769c --- /dev/null +++ b/src/main/java/Models/Stock/ListeMouvement.java @@ -0,0 +1,49 @@ +/* + * 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.Stock; + +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class ListeMouvement { + + private final SimpleStringProperty Code; + private final SimpleStringProperty Type; + private final SimpleStringProperty Mouvement; + private final SimpleStringProperty Quantite; + private final SimpleStringProperty Date; + + public ListeMouvement(String code, String type, String mouvement, String quantite, String date){ + this.Code = new SimpleStringProperty(code); + this.Type = new SimpleStringProperty(type); + this.Mouvement = new SimpleStringProperty(mouvement); + this.Quantite = new SimpleStringProperty(quantite); + this.Date = new SimpleStringProperty(date); + } + + public String getCode() { + return Code.get(); + } + + public String getType() { + return Type.get(); + } + + public String getMouvement() { + return Mouvement.get(); + } + + public String getQuantite() { + return Quantite.get(); + } + public String getDate() { + return Date.get(); + } + +} diff --git a/src/main/java/Models/Stock/StockDB.java b/src/main/java/Models/Stock/StockDB.java new file mode 100644 index 0000000..3145db6 --- /dev/null +++ b/src/main/java/Models/Stock/StockDB.java @@ -0,0 +1,287 @@ +/* + * 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.Stock; + +import static Controllers.Traitement.Adaptateur.StringDeleZero; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Produit.ListeProduit; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + + +public class StockDB { + + connexion cnx = new connexion(); + + contro Controle = new contro(); + + public ObservableList getDataStockDetail(String local, String reference, String date_debut, Integer debut, Integer nbr){ + + ObservableList ListMouvement = FXCollections.observableArrayList(); + + String WhereDate = ""; + if(!Controle.isStringNull(date_debut)){ + WhereDate = " AND (DATE(`date_add`) >= '"+date_debut+"') "; + } + + String req = " SELECT *, DATE_FORMAT(date_add, '%d/%m/%Y %H:%i') as dateAdd "; + req += " FROM stock_detail "; + req += " WHERE (local_nom LIKE '"+local+"') "; + req += " AND (reference_produit LIKE '"+reference+"') "; + req += WhereDate; + req += " ORDER BY date_add DESC "; + + if(debut!= null && nbr!=null){ + req += " 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 quantite = StringDeleZero(resultat.getString("quantite")); + float quantity = resultat.getFloat("quantite"); + + + String dateAdd = resultat.getString("dateAdd"); + + String id_bon_entre = resultat.getString("id_bon_entre"); + String id_bon_sortie = resultat.getString("id_bon_sortie"); + String id_bon_livraison = resultat.getString("id_bon_livraison"); + String id_bon_reception = resultat.getString("id_bon_reception"); + String id_facture_frs = resultat.getString("id_facture_frs"); + String id_vente_sans_facture = resultat.getString("id_vente_sans_facture"); + + String code = ""; + String type = ""; + + String mouvement = "enter"; + if(quantity<0){ mouvement = "sortie";} + + if(!Controle.isStringNull(id_bon_entre)){ + code = id_bon_entre; + type = "Bon d'entrée"; + }else if(!Controle.isStringNull(id_bon_sortie)){ + code = id_bon_sortie; + type = "Bon de sortie"; + }else if(!Controle.isStringNull(id_bon_livraison)){ + code = id_bon_livraison; + type = "Bon de livraison"; + }else if(!Controle.isStringNull(id_bon_reception)){ + code = id_bon_reception; + type = "Bon de réception"; + }else if(!Controle.isStringNull(id_facture_frs)){ + code = id_facture_frs; + type = "Facture FRS"; + }else if(!Controle.isStringNull(id_vente_sans_facture)){ + code = id_vente_sans_facture; + type = "Vente sans facture"; + } + + ListMouvement.add(new ListeMouvement(code, type, mouvement, quantite, dateAdd)); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return ListMouvement; + } + + public String getNbrStockDetail(String local, String reference, String date_debut){ + + String WhereDate = ""; + if(!Controle.isStringNull(date_debut)){ + WhereDate = " AND (DATE(`date_add`) >= '"+date_debut+"') "; + } + + String req = " SELECT COUNT(*) "; + req += " FROM stock_detail "; + req += " WHERE (local_nom LIKE '"+local+"') "; + req += WhereDate; + req += " AND (reference_produit LIKE '"+reference+"'); "; + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return Integer.toString(sommme) ; + } + + public ObservableList getProduitInStock(String Local, String Categorie, String Reference, String Designation){ + + ObservableList listProduits = FXCollections.observableArrayList(); + + String WhereCategorie = ""; + if(!Controle.isStringNull(Categorie)){ + WhereCategorie = " AND (P.nomcategorie_cate LIKE '%"+Categorie.replaceAll("'","\\\\'")+"%') "; + } + + String WhereReference = ""; + if(!Controle.isStringNull(Reference)){ + WhereReference = " AND (S.produit_reference LIKE '%"+Reference.replaceAll("'","\\\\'")+"%') "; + } + + String WhereDesignation = ""; + if(!Controle.isStringNull(Designation)){ + WhereDesignation = " AND (P.designation LIKE '%"+Designation.replaceAll("'","\\\\'")+"%') "; + } + + String Query = " SELECT S.produit_reference, S.quantite, P.designation " + + " FROM `stock` S, `produit` P " + + " WHERE (S.local_nom = '"+Local+"') AND (P.reference = S.produit_reference) "+ + WhereCategorie+ + WhereReference+ + WhereDesignation+ + " ORDER BY S.quantite DESC; "; + + if(cnx.ouverture()){ + try{ + ResultSet resultat= cnx.FetchALL(Query); + + while ( resultat.next() ) { + + String reference = resultat.getString("produit_reference"); + String designation = resultat.getString("designation"); + String quantity = resultat.getString("quantite"); + listProduits.add(new ListeProduit(reference, designation, quantity, "", "", "", "", "")); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + + return listProduits; + } + + + //methode qui permet de récupére la liste des locals souf le local qui appartin l'utilisateur + public ArrayList getAllListLocal(){ + ArrayList listLocale = new ArrayList<>(); + String req = "SELECT * FROM `local` ;"; //local avec la quel appartient l'utilisateur + 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 nomlocal=resultat.getString("nom"); + listLocale.add(nomlocal); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+req); + } + } + return listLocale ; + } + + //methode qui permet de récupére la liste des locals souf le local qui appartin l'utilisateur + public ArrayList getListLocal(){ + ArrayList listLocale = new ArrayList<>(); + String req = "SELECT * FROM `local` WHERE `nom` != '"+ParametreSystem.NomLocalPC+"' ;"; //local avec la quel appartient l'utilisateur + 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 nomlocal=resultat.getString("nom"); + listLocale.add(nomlocal); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+req); + } + } + return listLocale ; + } + + + public ArrayList getListCategorie(){ + ArrayList listCategorie = new ArrayList<>(); + String req = "SELECT * FROM `categorie` ;"; + 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 nomCategorie=resultat.getString("nomcategorie"); + listCategorie.add(nomCategorie); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+req); + } + } + return listCategorie ; + } + + /*********************supprimer les produit dans la table stock *****************************************/ + //Méthode qui pérmet de supprimer la liste du produit dont la quantite est égale a 0 + public void DeleteProdStock(){ + String req = "DELETE FROM stock WHERE (local_nom='"+ParametreSystem.NomLocalPC+"') AND (quantite ='0')"; + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + } +} diff --git a/src/main/java/Models/Stock/StockDetail.java b/src/main/java/Models/Stock/StockDetail.java new file mode 100644 index 0000000..1b3eb51 --- /dev/null +++ b/src/main/java/Models/Stock/StockDetail.java @@ -0,0 +1,139 @@ +/* + * 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.Stock; + +/** + * + * @author Maher + */ +public class StockDetail { + + public String id_detail_stock ; + public String local_nom; + public String reference_produit ; + public Float quantite; + public String date_add; + public Integer id_profile; + public String id_bon_entre; + public String id_bon_sortie; + public String id_bon_livraison; + public String id_bon_reception; + public String id_facture_frs; + public String id_vente_sans_facture; + + public StockDetail(String reference_produit, Float quantite, String id_bon_entre, String id_bon_sortie, String id_bon_livraison, String id_bon_reception, String id_facture_frs, String id_vente_sans_facture) { + this.reference_produit = reference_produit; + this.quantite = quantite; + this.id_bon_entre = id_bon_entre; + this.id_bon_sortie = id_bon_sortie; + this.id_bon_livraison = id_bon_livraison; + this.id_bon_reception = id_bon_reception; + this.id_facture_frs = id_facture_frs; + this.id_vente_sans_facture = id_vente_sans_facture; + } + + + + + public String getId_detail_stock() { + return id_detail_stock; + } + + public void setId_detail_stock(String id_detail_stock) { + this.id_detail_stock = id_detail_stock; + } + + public String getLocal_nom() { + return local_nom; + } + + public void setLocal_nom(String local_nom) { + this.local_nom = local_nom; + } + + public String getReference_produit() { + return reference_produit; + } + + public void setReference_produit(String reference_produit) { + this.reference_produit = reference_produit; + } + + public Float getQuantite() { + return quantite; + } + + public void setQuantite(Float quantite) { + this.quantite = quantite; + } + + public String getDate_add() { + return date_add; + } + + public void setDate_add(String date_add) { + this.date_add = date_add; + } + + public Integer getId_profile() { + return id_profile; + } + + public void setId_profile(Integer id_profile) { + this.id_profile = id_profile; + } + + public String getId_bon_entre() { + return id_bon_entre; + } + + public void setId_bon_entre(String id_bon_entre) { + this.id_bon_entre = id_bon_entre; + } + + public String getId_bon_sortie() { + return id_bon_sortie; + } + + public void setId_bon_sortie(String id_bon_sortie) { + this.id_bon_sortie = id_bon_sortie; + } + + public String getId_bon_livraison() { + return id_bon_livraison; + } + + public void setId_bon_livraison(String id_bon_livraison) { + this.id_bon_livraison = id_bon_livraison; + } + + public String getId_bon_reception() { + return id_bon_reception; + } + + public void setId_bon_reception(String id_bon_reception) { + this.id_bon_reception = id_bon_reception; + } + + public String getId_facture_frs() { + return id_facture_frs; + } + + public void setId_facture_frs(String id_facture_frs) { + this.id_facture_frs = id_facture_frs; + } + + + public String getId_vente_sans_facture() { + return id_vente_sans_facture; + } + + public void setId_vente_sans_facture(String id_vente_sans_facture) { + this.id_vente_sans_facture = id_vente_sans_facture; + } + + +} diff --git a/src/main/java/Models/Stock/StockDetailDB.java b/src/main/java/Models/Stock/StockDetailDB.java new file mode 100644 index 0000000..a6343a8 --- /dev/null +++ b/src/main/java/Models/Stock/StockDetailDB.java @@ -0,0 +1,68 @@ +/* + * 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.Stock; + +import Controllers.Traitement.ParametreSystem; +import Models.connexion; +import javafx.collections.ObservableList; +import Models.User.User; + +/** + * + * @author Maher + */ +public class StockDetailDB { + + connexion cnx = new connexion(); + + public boolean InsertStockDetail(ObservableList ListStockDetail){ + + String Query = "INSERT INTO stock_detail (`local_nom`, `reference_produit`, `quantite`, `date_add`, `id_profile`, `id_bon_entre`, `id_bon_sortie`, `id_bon_livraison`, `id_bon_reception`, `id_facture_frs`, `id_vente_sans_facture`) VALUES "; + + for(StockDetail ValStockDetail : ListStockDetail){ + + String ReferenceProduit = ValStockDetail.getReference_produit(); + Float Quantite = ValStockDetail.getQuantite(); + String IdBonEntre = ValStockDetail.getId_bon_entre(); + String IdBonSortie = ValStockDetail.getId_bon_sortie(); + String IdBonLivraison = ValStockDetail.getId_bon_livraison(); + String IdBonReception = ValStockDetail.getId_bon_reception(); + String IdFactureFrs = ValStockDetail.getId_facture_frs(); + String IdVenteSansFacture = ValStockDetail.getId_vente_sans_facture(); + + if( (IdBonEntre == null) || (IdBonEntre.isEmpty()) ){ + IdBonEntre = "NULL"; + } + + if( (IdBonSortie == null) || (IdBonSortie.isEmpty()) ){ + IdBonSortie = "NULL"; + } + + if( (IdBonLivraison == null) || (IdBonLivraison.isEmpty() ) ){ + IdBonLivraison = "NULL"; + } + + if( (IdBonReception == null) ||(IdBonReception.isEmpty()) ){ + IdBonReception = "NULL"; + } + + if( (IdFactureFrs == null) ||(IdFactureFrs.isEmpty()) ){ + IdFactureFrs = "NULL"; + } + + if( (IdVenteSansFacture == null) ||(IdVenteSansFacture.isEmpty()) ){ + IdVenteSansFacture = "NULL"; + } + + Query = Query + "(\""+ParametreSystem.NomLocalPC+"\", \""+ReferenceProduit+"\", '"+Quantite+"', CURTIME(), '"+User.idprofile+"', "+IdBonEntre+", "+IdBonSortie+", "+IdBonLivraison+", "+IdBonReception+", "+IdFactureFrs+", "+IdVenteSansFacture+" ),"; + } + + Query = Query.substring(0, Query.length()-1)+";"; + + return cnx.insertion(Query); + } + +} diff --git a/src/main/java/Models/TraiteClt/DatePickerCell.java b/src/main/java/Models/TraiteClt/DatePickerCell.java new file mode 100644 index 0000000..7f47912 --- /dev/null +++ b/src/main/java/Models/TraiteClt/DatePickerCell.java @@ -0,0 +1,194 @@ +package Models.TraiteClt; + +import Models.TraiteClt.TraiteList; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Calendar; +import java.util.Date; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.event.Event; +import javafx.event.EventHandler; +import javafx.geometry.Pos; +import javafx.scene.control.ContentDisplay; +import javafx.scene.control.DatePicker; +import javafx.scene.control.TableCell; + +/** + * DatePicker cell object. + * + * @author Fabrice Sommavilla + * @param + * @param + */ +public class DatePickerCell extends TableCell { + + private DatePicker datePicker; + private ObservableList birthdayData; + + /** + * Constructor. + * + * @param listBirthdays + */ + public DatePickerCell(ObservableList listBirthdays) { + + super(); + + this.birthdayData = listBirthdays; + + if (datePicker == null) { + createDatePicker(); + } + setGraphic(datePicker); + setContentDisplay(ContentDisplay.GRAPHIC_ONLY); + + Platform.runLater(new Runnable() { + @Override + public void run() { + datePicker.requestFocus(); + } + }); + } + + /** + * Override TableCell updateItem method. + * + * @param item + * @param empty + */ + @Override + public void updateItem(Date item, boolean empty) { + + super.updateItem(item, empty); + + SimpleDateFormat smp = new SimpleDateFormat("dd/MM/yyyy"); + + if (null == this.datePicker) { + System.out.println("datePicker is NULL"); + } + + if (empty) { + setText(null); + setGraphic(null); + } else { + + if (isEditing()) { + setContentDisplay(ContentDisplay.TEXT_ONLY); + + } else { + setDatepikerDate(smp.format(item)); + setText(smp.format(item)); + setGraphic(this.datePicker); + setContentDisplay(ContentDisplay.GRAPHIC_ONLY); + } + } + } + + /** + * + * @param dateAsStr + */ + private void setDatepikerDate(String dateAsStr) { + + LocalDate ld = null; + int jour, mois, annee; + + jour = mois = annee = 0; + try { + jour = Integer.parseInt(dateAsStr.substring(0, 2)); + mois = Integer.parseInt(dateAsStr.substring(3, 5)); + annee = Integer.parseInt(dateAsStr.substring(6, dateAsStr.length())); + } catch (NumberFormatException e) { + System.out.println("setDatepikerDate / unexpected error " + e); + } + + ld = LocalDate.of(annee, mois, jour); + datePicker.setValue(ld); + } + + /** + * This method create a textfield with key and focus events. + */ + private void createDatePicker() { + this.datePicker = new DatePicker(); + datePicker.setPromptText("jj/mm/aaaa"); + datePicker.setEditable(true); + + datePicker.setOnAction(new EventHandler() { + public void handle(Event t) { + + LocalDate date = datePicker.getValue(); + int index = getIndex(); + + SimpleDateFormat smp = new SimpleDateFormat("dd/MM/yyyy"); + Calendar cal = Calendar.getInstance(); + if(datePicker.getValue() != null){ + cal.set(Calendar.DAY_OF_MONTH, date.getDayOfMonth()); + cal.set(Calendar.MONTH, date.getMonthValue() - 1); + cal.set(Calendar.YEAR, date.getYear()); + + setText(smp.format(cal.getTime())); + commitEdit(cal.getTime()); + + if (null != getBirthdayData()) { + getBirthdayData().get(index).setDate(cal.getTime()); + } + } + + } + }); + + setAlignment(Pos.CENTER); + } + + /** + * + */ + @Override + public void startEdit() { + super.startEdit(); + } + + /** + * Override TableCell cancelEdit method. + */ + @Override + public void cancelEdit() { + super.cancelEdit(); + setContentDisplay(ContentDisplay.TEXT_ONLY); + } + + /** + * + * @return + */ + public ObservableList getBirthdayData() { + return birthdayData; + } + + /** + * + * @param birthdayData + */ + public void setBirthdayData(ObservableList birthdayData) { + this.birthdayData = birthdayData; + } + + /** + * + * @return + */ + public DatePicker getDatePicker() { + return datePicker; + } + + /** + * + * @param datePicker + */ + public void setDatePicker(DatePicker datePicker) { + this.datePicker = datePicker; + } + +} diff --git a/src/main/java/Models/TraiteClt/TraiteClt.java b/src/main/java/Models/TraiteClt/TraiteClt.java new file mode 100644 index 0000000..9457754 --- /dev/null +++ b/src/main/java/Models/TraiteClt/TraiteClt.java @@ -0,0 +1,98 @@ +/* + * 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.TraiteClt; + +/** + * + * @author PC-Maher + */ +public class TraiteClt { + + private String CodeTraiteClt ; + private String id_reglement ; + private String dateTraiteClt ; + private String datePaiementTraiteClt ; + private String dateCreationTraiteClt ; + private String MontantTraiteClt ; + private String CodeFactureClt; + private String LocalNom; + private String IdProfile; + + + public String getCodeTraiteClt() { + return CodeTraiteClt; + } + + public void setCodeTraiteClt(String CodeTraiteClt) { + this.CodeTraiteClt = CodeTraiteClt; + } + + public String getId_reglement() { + return id_reglement; + } + + public void setId_reglement(String id_reglement) { + this.id_reglement = id_reglement; + } + + public String getDateTraiteClt() { + return dateTraiteClt; + } + + public void setDateTraiteClt(String dateTraiteClt) { + this.dateTraiteClt = dateTraiteClt; + } + + public String getDatePaiementTraiteClt() { + return datePaiementTraiteClt; + } + + public void setDatePaiementTraiteClt(String datePaiementTraiteClt) { + this.datePaiementTraiteClt = datePaiementTraiteClt; + } + + public String getDateCreationTraiteClt() { + return dateCreationTraiteClt; + } + + public void setDateCreationTraiteClt(String dateCreationTraiteClt) { + this.dateCreationTraiteClt = dateCreationTraiteClt; + } + + public String getMontantTraiteClt() { + return MontantTraiteClt; + } + + public void setMontantTraiteClt(String MontantTraiteClt) { + this.MontantTraiteClt = MontantTraiteClt; + } + + public String getCodeFactureClt() { + return CodeFactureClt; + } + + public void setCodeFactureClt(String CodeFactureClt) { + this.CodeFactureClt = CodeFactureClt; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public String getIdProfile() { + return IdProfile; + } + + public void setIdProfile(String IdProfile) { + this.IdProfile = IdProfile; + } + + +} diff --git a/src/main/java/Models/TraiteClt/TraiteCltDB.java b/src/main/java/Models/TraiteClt/TraiteCltDB.java new file mode 100644 index 0000000..a093754 --- /dev/null +++ b/src/main/java/Models/TraiteClt/TraiteCltDB.java @@ -0,0 +1,400 @@ +/* + * 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.TraiteClt; + +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Caisse.CaisseClt; +import Models.Caisse.CaisseDB; +import Models.User.User; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * + * @author PC-Maher + */ +public class TraiteCltDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + + public Map GetChequePaiementTraite(String IdTraitePaiementCheque){ + + Map map = new HashMap<>(); + + String Query = " SELECT t_p_c_clt.numero, t_p_c_clt.banque, t_clt.id_traite, " + + " CASE " + + " WHEN f_clt.typeclt = 0 THEN c.nom " + + " WHEN f_clt.typeclt = 1 THEN e_clt.nomentrepise " + + " WHEN f_clt.typeclt = 2 THEN p_clt.nom " + + " END AS Nom, " + + " CASE " + + " WHEN f_clt.typeclt = 0 THEN c.prenom " + + " WHEN f_clt.typeclt = 1 THEN e_clt.matricule_fiscale " + + " WHEN f_clt.typeclt = 2 THEN p_clt.prenom " + + " END AS Prenom " + + " FROM traite_paiement_cheque_clt t_p_c_clt, traite_clt t_clt, factureclt f_clt " + + " LEFT JOIN cltentreprise e_clt ON (f_clt.idcltentreprise = e_clt.idcliententreprise) AND (e_clt.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " LEFT JOIN client c ON (f_clt.idcltexiste = c.codeclient) AND (c.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " LEFT JOIN cltpassageur p_clt ON (f_clt.idcltpassageur = p_clt.idcltpassageur) AND (p_clt.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " WHERE (t_p_c_clt.id_traite_paiement_cheque = "+IdTraitePaiementCheque+") AND (t_clt.id_traite = t_p_c_clt.id_traite) AND (t_clt.id_factureclt = f_clt.idfactureclt) AND (t_p_c_clt.local_nom = '"+ParametreSystem.NomLocalPC+"');"; + + if(cnx.ouverture()){ + try { + + ResultSet resultat= cnx.Fetch(Query); + + map.put("IdTraite", resultat.getString("id_traite")); + map.put("Nom", resultat.getString("nom")); + map.put("Prenom", resultat.getString("prenom")); + map.put("numero", resultat.getString("numero")); + map.put("banque", resultat.getString("banque")); + + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+Query); + } + } + + return map; + } + + public Map GetCartePaiementTraite(String id_traite_paiement_carte){ + + Map map = new HashMap<>(); + + String Query = " SELECT t_p_c_clt.numero_carte, t_p_c_clt.banque, t_clt.id_traite," + + " CASE " + + " WHEN f_clt.typeclt = 0 THEN c.nom " + + " WHEN f_clt.typeclt = 1 THEN e_clt.nomentrepise " + + " WHEN f_clt.typeclt = 2 THEN p_clt.nom " + + " END AS Nom, " + + " CASE " + + " WHEN f_clt.typeclt = 0 THEN c.prenom " + + " WHEN f_clt.typeclt = 1 THEN e_clt.matricule_fiscale " + + " WHEN f_clt.typeclt = 2 THEN p_clt.prenom " + + " END AS Prenom " + + " FROM traite_paiement_carte_clt t_p_c_clt, traite_clt t_clt, factureclt f_clt " + + " LEFT JOIN cltentreprise e_clt ON (f_clt.idcltentreprise = e_clt.idcliententreprise) AND (e_clt.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " LEFT JOIN client c ON (f_clt.idcltexiste = c.codeclient) AND (c.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " LEFT JOIN cltpassageur p_clt ON (f_clt.idcltpassageur = p_clt.idcltpassageur) AND (p_clt.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " WHERE (t_p_c_clt.id_traite_paiement_carte = "+id_traite_paiement_carte+") AND (t_clt.id_traite = t_p_c_clt.id_traite) AND (t_clt.id_factureclt = f_clt.idfactureclt) AND (t_p_c_clt.local_nom = '"+ParametreSystem.NomLocalPC+"');"; + + if(cnx.ouverture()){ + try { + + ResultSet resultat= cnx.Fetch(Query); + + map.put("IdTraite", resultat.getString("id_traite")); + map.put("Nom", resultat.getString("nom")); + map.put("Prenom", resultat.getString("prenom")); + map.put("numero_carte", resultat.getString("numero_carte")); + map.put("banque", resultat.getString("banque")); + + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+Query); + } + } + + return map; + } + + public Map GetEspacePaiementTraite(String id_traite_paiement_espace){ + + Map map = new HashMap<>(); + + String Query = " SELECT " + + " t_clt.id_traite, " + + " CASE " + + " WHEN f_clt.typeclt = 0 THEN c.nom " + + " WHEN f_clt.typeclt = 1 THEN e_clt.nomentrepise " + + " WHEN f_clt.typeclt = 2 THEN p_clt.nom " + + " END AS Nom, " + + " CASE " + + " WHEN f_clt.typeclt = 0 THEN c.prenom " + + " WHEN f_clt.typeclt = 1 THEN e_clt.matricule_fiscale " + + " WHEN f_clt.typeclt = 2 THEN p_clt.prenom " + + " END AS Prenom " + + " FROM traite_paiement_espace_clt t_p_e_clt, traite_clt t_clt, factureclt f_clt " + + " LEFT JOIN cltentreprise e_clt ON (f_clt.idcltentreprise = e_clt.idcliententreprise) AND (e_clt.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " LEFT JOIN client c ON (f_clt.idcltexiste = c.codeclient) AND (c.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " LEFT JOIN cltpassageur p_clt ON (f_clt.idcltpassageur = p_clt.idcltpassageur) AND (p_clt.local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " WHERE (t_p_e_clt.id_traite_paiement_espace = "+id_traite_paiement_espace+") AND (t_clt.id_traite = t_p_e_clt.id_traite) AND (t_clt.id_factureclt = f_clt.idfactureclt) AND (t_p_e_clt.local_nom = '"+ParametreSystem.NomLocalPC+"');"; + + if(cnx.ouverture()){ + try { + + ResultSet resultat= cnx.Fetch(Query); + + map.put("IdTraite", resultat.getString("id_traite")); + map.put("Nom", resultat.getString("nom")); + map.put("Prenom", resultat.getString("prenom")); + + } catch (SQLException ex) { + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+Query); + } + } + + return map; + } + + public void AddListeTraiteClt(ArrayList ListTraites, String CodeFactureClt){ + String ReqTraiClt = "INSERT INTO traite_clt (`date_traite`, `montant_traite`, `date_creation`, `id_factureclt`, `local_nom`, id_profile) VALUES "; + String Req = ""; + + for(int i=0; i getListPaiementTraiteClt(String IdTraite){ + + ObservableList DataPaiementList = FXCollections.observableArrayList(); + + String QueryEspace = "SELECT id_traite_paiement_espace AS id_traite_paiement, 'espace' AS 'type', '' AS banque, '' AS numero, DATE_FORMAT(date_payer, '%d/%m/%Y') AS date_paiement, DATE_FORMAT(date_payer, '%H:%i:%s') AS heur_paiement, montant_payer FROM `traite_paiement_espace_clt` WHERE (`id_traite` = '"+IdTraite+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " UNION ALL " + + "SELECT id_traite_paiement_cheque AS id_traite_paiement, 'chèque' AS 'type', banque, numero, DATE_FORMAT(date_payer, '%d/%m/%Y') AS date_paiement, DATE_FORMAT(date_payer, '%H:%i:%s') AS heur_paiement, montant_payer FROM traite_paiement_cheque_clt WHERE (`id_traite` = '"+IdTraite+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"')" + + " UNION ALL " + + "SELECT id_traite_paiement_carte AS id_traite_paiement, 'carte bancaire' AS 'type', banque, numero_carte AS numero, DATE_FORMAT(date_payer, '%d/%m/%Y') AS date_paiement, DATE_FORMAT(date_payer, '%H:%i:%s') AS heur_paiement, montant_payer FROM traite_paiement_carte_clt WHERE (`id_traite` = '"+IdTraite+"') AND (local_nom = '"+ParametreSystem.NomLocalPC+"');"; + if(cnx.ouverture()){ + try{ + ResultSet Resultat = cnx.excutionquery(QueryEspace); + Resultat.last(); + int nombreLignes = Resultat.getRow(); + if(nombreLignes>0){ + Resultat.beforeFirst(); + while (Resultat.next()){ + String id_paiement = Resultat.getString("id_traite_paiement"); + String montant_paiement = Resultat.getString("montant_payer"); + String date_paiement = Resultat.getString("date_paiement"); + String heur_paiement = Resultat.getString("heur_paiement"); + String type = Resultat.getString("type"); + String banque = Resultat.getString("banque"); + String numero = Resultat.getString("numero"); + DataPaiementList.add(new TraiteCltPaiementListe( id_paiement, type, montant_paiement, date_paiement, heur_paiement, banque, numero)); + } + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(QueryEspace); + } + } + return DataPaiementList; + } + + public ObservableList SearchTraiteCltRetard(Integer debut, Integer nbr, String DateDebut, String IdFacture, String NomLocal, String CodeClt, String CINClt, String NomClt, boolean All) + { + String WhereReq1 = " WHERE (T.date_paiement IS NULL) AND (T.date_traite < now()) AND (T.id_factureclt = F.idfactureclt) AND "; + + if(!clt.isStringNull(NomLocal)){ + WhereReq1 += " (T.local_nom = \""+NomLocal+"\") AND "; + } + + if(!clt.isStringNull(IdFacture)){ + WhereReq1 += " (T.id_factureclt = \""+IdFacture+"\") AND "; + } + + if(!clt.isStringNull(DateDebut)){ + WhereReq1 += " (T.date_traite >= \""+DateDebut+"\") AND "; + } + + if(!clt.isStringNull(CodeClt)){ + WhereReq1 += " ( (C.codeclient = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + } + + if(!clt.isStringNull(CINClt)){ + WhereReq1 += " ( (C.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + } + + if(!clt.isStringNull(NomClt)){ + WhereReq1 += " ( (C.nom LIKE \"%"+NomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomClt+"%\") OR (C.prenom LIKE \"%"+NomClt+"%\") OR (C.prenom LIKE \"%"+NomClt+"%\") OR (E.matricule_fiscale LIKE \"%"+NomClt+"%\") ) AND "; + } + + WhereReq1 = WhereReq1.substring(0, WhereReq1.length() - 4); + + ObservableList DataListTraiteClt = FXCollections.observableArrayList(); + + String Limit = ""; + if(All == false){ + Limit = " LIMIT "+debut+" , "+nbr+" ;"; + } + String req= "SELECT T.*, F.typeclt, DATE_FORMAT(T.date_traite, '%d/%m/%Y') AS DateTraite, " + + " C.codeclient, C.cin, concat(C.nom, \" \",C.prenom) AS nom_prenom_client, " + + " E.idcliententreprise, E.matricule_fiscale, E.nomentrepise " + + " FROM `traite_clt` T, `factureclt` F " + + " LEFT JOIN `client` C ON (F.idcltexiste = C.codeclient) " + + " LEFT JOIN `cltentreprise` E ON (F.idcltentreprise = E.idcliententreprise) " + + WhereReq1 + + Limit ; + + ResultSet resultat= cnx.FetchALL(req); + + try{ + + while ( resultat.next() ) { + String NumTraite = resultat.getString("id_traite"); + String Facture = resultat.getString("id_factureclt"); + String DateTraite = resultat.getString("DateTraite"); + String MontantTraite = Adaptateur.StringToStringEspace(resultat.getString("montant_traite")); + String LocalNom = resultat.getString("local_nom"); + float FMontant = resultat.getFloat("montant_traite"); + + //0 Personne 1 Entreprise + Integer Typeclt = resultat.getInt("typeclt"); + + String CodeClient = ""; + String NomPrenom = ""; + if(Typeclt == 0){ + CodeClient = resultat.getString("codeclient"); + NomPrenom = resultat.getString("nom_prenom_client"); + }if(Typeclt == 1){ + CodeClient = resultat.getString("idcliententreprise"); + NomPrenom = resultat.getString("nomentrepise"); + } + + DataListTraiteClt.add(new TraiteCltGestionListe(NumTraite, "", Facture, CodeClient, LocalNom, NomPrenom, DateTraite, "", MontantTraite, FMontant)); + } + } catch(SQLException ex){ + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + return DataListTraiteClt; + } + + + public Integer nbrTraiteCltRetard(String DateDebut, String IdFacture, String NomLocal, String CodeClt, String CINClt, String NomClt) + { + String WhereReq1 = " WHERE (T.date_paiement IS NULL) AND (T.date_traite < now()) AND (T.id_factureclt = F.idfactureclt) AND "; + + if(!clt.isStringNull(NomLocal)){ + WhereReq1 += " (T.local_nom = \""+NomLocal+"\") AND "; + } + + if(!clt.isStringNull(IdFacture)){ + WhereReq1 += " (T.id_factureclt = \""+IdFacture+"\") AND "; + } + + if(!clt.isStringNull(DateDebut)){ + WhereReq1 += " (T.date_traite >= \""+DateDebut+"\") AND "; + } + + if(!clt.isStringNull(CodeClt)){ + WhereReq1 += " ( (C.codeclient = \""+CodeClt+"\") OR (E.idcliententreprise = \""+CodeClt+"\" ) ) AND "; + } + + if(!clt.isStringNull(CINClt)){ + WhereReq1 += " ( (C.cin LIKE \"%"+CINClt+"%\") OR (E.matricule_fiscale LIKE \"%"+CINClt+"%\") ) AND "; + } + + if(!clt.isStringNull(NomClt)){ + WhereReq1 += " ( (C.nom LIKE \"%"+NomClt+"%\") OR (E.nomentrepise LIKE \"%"+NomClt+"%\") OR (C.prenom LIKE \"%"+NomClt+"%\") OR (C.prenom LIKE \"%"+NomClt+"%\") OR (E.matricule_fiscale LIKE \"%"+NomClt+"%\") ) AND "; + } + + WhereReq1 = WhereReq1.substring(0, WhereReq1.length() - 4); + + + String req = " SELECT COUNT(T.id_traite) " + + " FROM `traite_clt` T, `factureclt` F " + + " LEFT JOIN `client` C ON (F.idcltexiste = C.codeclient) " + + " LEFT JOIN `cltentreprise` E ON (F.idcltentreprise = E.idcliententreprise) " + + WhereReq1 + " ; "; + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + + +} diff --git a/src/main/java/Models/TraiteClt/TraiteCltGestionDB.java b/src/main/java/Models/TraiteClt/TraiteCltGestionDB.java new file mode 100644 index 0000000..e5cc099 --- /dev/null +++ b/src/main/java/Models/TraiteClt/TraiteCltGestionDB.java @@ -0,0 +1,213 @@ +/* + * 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.TraiteClt; + +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Produit.Produit; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + + +/** + * + * @author Maher + */ +public class TraiteCltGestionDB { + + connexion cnx = new connexion(); + contro clt = new contro(); + ShowDialog SD = new ShowDialog(); + + public ResultSet GetDetailTraite(String IdTraiteClt){ + ResultSet Resultat = null; + + String Query = "SELECT T.*, F.typeclt, F.net_a_payer, DATE_FORMAT(date_traite, '%d/%m/%Y') AS date_traite_format, " + + "IF(montant_traite <= montant_payer, '1', IF(date_traite >= CURTIME() OR date_traite >= date_paiement, '2', '3') ) AS etat, " + + " C.codeclient, C.cin, C.nom, C.prenom, " + + "E.idcliententreprise, E.matricule_fiscale, E.nomentrepise " + + "FROM traite_clt T, factureclt F " + + "LEFT JOIN client C ON (C.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = C.codeclient) " + + "LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + "WHERE (T.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (T.id_factureclt = F.idfactureclt) " + + "AND (T.id_traite = "+IdTraiteClt+") "; + + cnx.ouverture(); + + try { + Resultat = cnx.excutionquery(Query); + + Resultat.next(); + + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println("req "+Query); + } + + return Resultat; + } + + + + /********************************** Search *******************************/ + + public ObservableList SearchTraiteClt(Integer debut, Integer nbr, String idTraite, String idFactureclt, String dateTraite, String codeClient, String cin, String nom) + { + ObservableList DataListTraiteClt = FXCollections.observableArrayList(); + + String Where = ""; + + if(!clt.isStringNull(idTraite)){ + Where += " (T.id_traite = \""+Adaptateur.addSlashes(idTraite)+"\") AND "; + } + + if(!clt.isStringNull(idFactureclt)){ + Where += " (F.idfactureclt = \""+Adaptateur.addSlashes(idFactureclt)+"\") AND "; + } + + if(!clt.isStringNull(codeClient)){ + Where += "( (F.idcltentreprise = \""+Adaptateur.addSlashes(codeClient)+"\") OR (F.idcltexiste = \""+Adaptateur.addSlashes(codeClient)+"\") ) AND "; + } + + if(!clt.isStringNull(nom)){ + Where += "( (E.nomentrepise LIKE \"%"+Adaptateur.addSlashes(nom)+"%\") OR (C.nomcomplet LIKE \"%"+Adaptateur.addSlashes(nom)+"%\") ) AND "; + } + + if(!clt.isStringNull(cin)){ + Where += "( (C.cin = \""+Adaptateur.addSlashes(cin)+"\") OR (E.matricule_fiscale = \""+Adaptateur.addSlashes(cin)+"\") ) AND "; + } + + if(!clt.isStringNull(dateTraite)){ + Where += " (T.date_traite = \""+dateTraite+"\") AND "; + } + + if(!Where.equals("")){ + Where = " AND "+Where.substring(0, Where.length() - 4); + } + + String req = "SELECT T.*, F.typeclt, " + + "IF(montant_traite >= montant_payer, '1', IF(date_traite >= CURTIME() OR date_traite >= date_paiement, '2', '3') ) AS etat, " + + "C.codeclient, C.cin, concat(C.nom, \" \",C.prenom) AS nom_prenom_client, " + + "E.idcliententreprise, E.matricule_fiscale, E.nomentrepise " + + "FROM traite_clt T, factureclt F " + + "LEFT JOIN client C ON (C.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = C.codeclient) " + + "LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + "WHERE (T.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (T.id_factureclt = F.idfactureclt) " + + Where + + "LIMIT "+debut+" , "+nbr+" ;"; + + try { + ResultSet resultat= cnx.FetchALL(req); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date_system = sdf.parse(sdf.format(new Date())); + + while ( resultat.next() ) { + String NumTraite = resultat.getString("id_traite"); + String Facture = resultat.getString("id_factureclt"); + String DatePayer = resultat.getString("date_paiement"); + String DateTraite = resultat.getString("date_traite"); + float FMontant = resultat.getFloat("montant_traite"); + //1 Payer 2 En Cours 3 En Retart + String Etat = resultat.getString("etat"); + + //0 Personne 1 Entreprise + Integer Typeclt = resultat.getInt("typeclt"); + String TypeClient = ""; String CodeClt = ""; String NomPrenom = ""; + if(Typeclt == 0){ + TypeClient = "Personne"; + CodeClt = resultat.getString("codeclient"); + NomPrenom = resultat.getString("nom_prenom_client"); + }if(Typeclt == 1){ + TypeClient = "Entreprise"; + CodeClt = resultat.getString("idcliententreprise"); + NomPrenom = resultat.getString("nomentrepise"); + } + + Date date_traite = sdf.parse(DateTraite); + + DataListTraiteClt.add(new TraiteCltGestionListe(NumTraite, Etat, Facture, CodeClt, TypeClient, NomPrenom, Adaptateur.NormalDateFormat(DateTraite), Adaptateur.NormalDateFormat(DatePayer), "", FMontant)); + } + + } catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } catch (ParseException ex) { + Logger.getLogger(TraiteCltGestionDB.class.getName()).log(Level.SEVERE, null, ex); + } + + return DataListTraiteClt; + + } + + + public Integer nbrSearchTraiteClt(String idTraite, String idFactureclt, String dateTraite, String codeClient, String cin, String nom) + { + String Where = ""; + + if(!clt.isStringNull(idTraite)){ + Where += " (T.id_traite = \""+Adaptateur.addSlashes(idTraite)+"\") AND "; + } + + if(!clt.isStringNull(idFactureclt)){ + Where += " (F.idfactureclt = \""+Adaptateur.addSlashes(idFactureclt)+"\") AND "; + } + + if(!clt.isStringNull(codeClient)){ + Where += "( (F.idcltentreprise = \""+Adaptateur.addSlashes(codeClient)+"\") OR (F.idcltexiste = \""+Adaptateur.addSlashes(codeClient)+"\") ) AND "; + } + + if(!clt.isStringNull(nom)){ + Where += "( (E.nomentrepise LIKE \"%"+Adaptateur.addSlashes(nom)+"%\") OR (C.nomcomplet LIKE \"%"+Adaptateur.addSlashes(nom)+"%\") ) AND "; + } + + if(!clt.isStringNull(cin)){ + Where += "( (C.cin = \""+Adaptateur.addSlashes(cin)+"\") OR (E.matricule_fiscale = \""+Adaptateur.addSlashes(cin)+"\") ) AND "; + } + + if(!clt.isStringNull(dateTraite)){ + Where += " (T.date_traite = \""+dateTraite+"\") AND "; + } + + if(!Where.equals("")){ + Where = " AND "+Where.substring(0, Where.length() - 4); + } + + String req= "SELECT COUNT(*)" + + "FROM traite_clt T, factureclt F " + + "LEFT JOIN client C ON (C.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltexiste = C.codeclient) " + + "LEFT JOIN cltentreprise E ON (E.local_nom= '"+ParametreSystem.NomLocalPC+"') AND (F.idcltentreprise = E.idcliententreprise) " + + "WHERE (T.local_nom = '"+ParametreSystem.NomLocalPC+"') AND (T.id_factureclt = F.idfactureclt) " + + Where +" ;"; + + 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 ; + } + + +} diff --git a/src/main/java/Models/TraiteClt/TraiteCltGestionListe.java b/src/main/java/Models/TraiteClt/TraiteCltGestionListe.java new file mode 100644 index 0000000..6cc09f7 --- /dev/null +++ b/src/main/java/Models/TraiteClt/TraiteCltGestionListe.java @@ -0,0 +1,85 @@ +/* + * 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.TraiteClt; + +import javafx.beans.property.SimpleFloatProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class TraiteCltGestionListe { + + private final SimpleStringProperty NumTraite; + private final SimpleStringProperty Etat; + private final SimpleStringProperty Facture; + private final SimpleStringProperty CodeClt; + private final SimpleStringProperty TypeClient; + private final SimpleStringProperty NomPrenom; + private final SimpleStringProperty DateTraite; + private final SimpleStringProperty DatePayer; + private final SimpleStringProperty Montant; + private final SimpleFloatProperty MontantFloat; + + public TraiteCltGestionListe(String num_traite, String etat, String facture, String code_clt, String type_clt, String nom_prenom, String date_traite, String date_payer, String montant, Float fmontant) { + this.NumTraite= new SimpleStringProperty(num_traite); + this.Etat = new SimpleStringProperty(etat); + this.Facture = new SimpleStringProperty(facture); + this.CodeClt = new SimpleStringProperty(code_clt); + this.TypeClient = new SimpleStringProperty(type_clt); + this.NomPrenom = new SimpleStringProperty(nom_prenom); + this.DateTraite = new SimpleStringProperty(date_traite); + this.DatePayer= new SimpleStringProperty(date_payer); + this.Montant= new SimpleStringProperty(montant); + this.MontantFloat= new SimpleFloatProperty(fmontant); + } + + public String getNumTraite() { + return NumTraite.get(); + } + + public String getEtat() { + return Etat.get(); + } + + public String getFacture() { + return Facture.get(); + } + + public String getCodeClt() { + return CodeClt.get(); + } + + public String getTypeClient() { + return TypeClient.get(); + } + + public String getNomPrenom() { + return NomPrenom.get(); + } + + public String getDateTraite() { + return DateTraite.get(); + } + + public String getDatePayer() { + return DatePayer.get(); + } + + public String getMontant() { + return Montant.get(); + } + + public void setMontant(String montant) { + Montant.set(montant); + } + + + public Float getMontantFloat() { + return MontantFloat.get(); + } +} diff --git a/src/main/java/Models/TraiteClt/TraiteCltPaiementListe.java b/src/main/java/Models/TraiteClt/TraiteCltPaiementListe.java new file mode 100644 index 0000000..b49dd8a --- /dev/null +++ b/src/main/java/Models/TraiteClt/TraiteCltPaiementListe.java @@ -0,0 +1,58 @@ +/* + * 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.TraiteClt; + +import javafx.beans.property.SimpleStringProperty; + +public class TraiteCltPaiementListe { + + private final SimpleStringProperty IdPaiement; + private final SimpleStringProperty TypePaiement; + private final SimpleStringProperty MontantPaiement; + private final SimpleStringProperty DatePaiement; + private final SimpleStringProperty HeurPaiement; + private final SimpleStringProperty BanquePaiement; + private final SimpleStringProperty NumeroPaiement; + + public TraiteCltPaiementListe(String id_paiement, String type_paiement, String montant_paiement, String date_paiement, String heur_paiement, String banque_paiement, String numero_banque) { + this.IdPaiement= new SimpleStringProperty(id_paiement); + this.TypePaiement = new SimpleStringProperty(type_paiement); + this.MontantPaiement = new SimpleStringProperty(montant_paiement); + this.DatePaiement = new SimpleStringProperty(date_paiement); + this.HeurPaiement = new SimpleStringProperty(heur_paiement); + this.BanquePaiement = new SimpleStringProperty(banque_paiement); + this.NumeroPaiement = new SimpleStringProperty(numero_banque); + } + + public String getIdPaiement() { + return IdPaiement.get(); + } + + public String getTypePaiement() { + return TypePaiement.get(); + } + + public String getMontantPaiement() { + return MontantPaiement.get(); + } + + public String getDatePaiement() { + return DatePaiement.get(); + } + + public String getHeurPaiement() { + return HeurPaiement.get(); + } + + public String getBanquePaiement() { + return BanquePaiement.get(); + } + + public String getNumeroPaiement() { + return NumeroPaiement.get(); + } + +} diff --git a/src/main/java/Models/TraiteClt/TraiteList.java b/src/main/java/Models/TraiteClt/TraiteList.java new file mode 100644 index 0000000..2077444 --- /dev/null +++ b/src/main/java/Models/TraiteClt/TraiteList.java @@ -0,0 +1,77 @@ +package Models.TraiteClt; + +import java.text.SimpleDateFormat; +import java.util.Date; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; + +/** + * Birthday event jfx object. + * + * @author Fabrice Sommavilla + */ +public class TraiteList { + + private final SimpleObjectProperty dateTraite; + private final StringProperty MontantTraite; + + /** + * + * @param MontantTraite + * @param date + */ + public TraiteList(String MontantTraite, Date date) { + this.MontantTraite = new SimpleStringProperty(MontantTraite); + this.dateTraite = new SimpleObjectProperty(date); + } + + /** + * @return the MontantTraite + */ + public String getMontantTraite() { + return MontantTraite.get(); + } + + /** + * @param MontantTraite the MontantTraite to set + */ + public void setMontantTraite(String MontantTraite) { + this.MontantTraite.set(MontantTraite); + } + + /** + * @return the MontantTraite + */ + public StringProperty MontantTraiteProperty() { + return MontantTraite; + } + + /** + * + * @return + */ + public Date getDate() { + return (Date) dateTraite.get(); + } + + /** + * + * @return + */ + public String getDateAsString() { + SimpleDateFormat smp = new SimpleDateFormat("dd MMMMM yyyy"); + String strDate = (null == dateTraite || null == dateTraite.get()) + ? "" : smp.format(dateTraite.get()); + + return strDate; + } + + /** + * + * @param date + */ + public void setDate(Date date) { + this.dateTraite.set(date); + } +} diff --git a/src/main/java/Models/User/Authentification.java b/src/main/java/Models/User/Authentification.java new file mode 100644 index 0000000..6d03ede --- /dev/null +++ b/src/main/java/Models/User/Authentification.java @@ -0,0 +1,92 @@ +package Models.User; + +/** + * @author Maher Ben Tili + */ +public class Authentification { + + private String IdAuthentification; + private String Login; + private String Password; + private String TypeCompte; + private String QuestionSecrete; + private String ReponceQuestion; + private boolean EtatCompte; + private boolean StockNegatif; + private String LocalNom ; + + public String getIdAuthentification() { + return IdAuthentification; + } + + public void setIdAuthentification(String IdAuthentification) { + this.IdAuthentification = IdAuthentification; + } + + public String getLogin() { + return Login; + } + + public void setLogin(String Login) { + this.Login = Login; + } + + public String getPassword() { + return Password; + } + + public void setPassword(String Password) { + this.Password = Password; + } + + public String getTypeCompte() { + return TypeCompte; + } + + public void setTypeCompte(String TypeCompte) { + this.TypeCompte = TypeCompte; + } + + public String getQuestionSecrete() { + return QuestionSecrete; + } + + public void setQuestionSecrete(String QuestionSecrete) { + this.QuestionSecrete = QuestionSecrete; + } + + public String getReponceQuestion() { + return ReponceQuestion; + } + + public void setReponceQuestion(String Reponce_question) { + this.ReponceQuestion = Reponce_question; + } + + public boolean isEtatCompte() { + return EtatCompte; + } + + public void setEtatCompte(boolean EtatCompte) { + this.EtatCompte = EtatCompte; + } + + public boolean isStockNegatif() { + return StockNegatif; + } + + public void setStockNegatif(boolean StockNegatif) { + this.StockNegatif = StockNegatif; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + + +} diff --git a/src/main/java/Models/User/ListUserDB.java b/src/main/java/Models/User/ListUserDB.java new file mode 100644 index 0000000..dcd9438 --- /dev/null +++ b/src/main/java/Models/User/ListUserDB.java @@ -0,0 +1,153 @@ +/* + * 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.User; + + +import Controllers.Dialog.ShowDialog; +import Controllers.PrincipalController; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + + + +/** + * + * @author Maher + */ +public class ListUserDB extends PrincipalController{ + + + connexion cnx = new connexion(); + ShowDialog SD = new ShowDialog(); + + + + + public String nbrUsers(){ + + String req = "SELECT COUNT(`idprofile`) FROM `profile` , `authentification` WHERE `idprofile` = `idauhentification` ;"; + 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()); + } + } + + else{ + + SD.ShowAletDialog(); + + } + return Integer.toString(sommme) ; + } + + + + public ObservableList rechercheData(String ch){ + + ObservableList data=FXCollections.observableArrayList(); + String req = "SELECT `idprofile` , `type_compte`, `login` , `nom` , `prenom` , `num_tele` " + + " FROM `profile` , `auhentification`" + + " WHERE `idprofile` = `idauhentification` " + + " AND `idprofile` = "+ch+" ;"; + System.out.println(req); + 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() ) { + + int idprofile = resultat.getInt( "idprofile" ); + String type_compte=resultat.getString("type_compte"); + String login=resultat.getString("login"); + String nom=resultat.getString("nom"); + String prenom=resultat.getString("prenom"); + int tele=resultat.getInt("num_tele"); + + data.add(new ListUsers(idprofile,type_compte, login, nom, prenom, tele)); + + } + + } + + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + else{ + SD.ShowAletDialog(); + } + return data ; + } + + + + + + + public ObservableList getdata(){ + + ObservableList data=FXCollections.observableArrayList(); + String req = "SELECT `idprofile` , `type_compte`, `login` , `nom` , `prenom` , `num_tele` FROM `profile` , `authentification`WHERE `idprofile` = `idauhentification` ;"; + + 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() ) { + + int idprofile = resultat.getInt( "idprofile" ); + String type_compte=resultat.getString("type_compte"); + String login=resultat.getString("login"); + String nom=resultat.getString("nom"); + String prenom=resultat.getString("prenom"); + int tele=resultat.getInt("num_tele"); + + data.add(new ListUsers(idprofile,type_compte, login, nom, prenom, tele)); + + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + else{ + SD.ShowAletDialog(); + } + return data ; + } + +} diff --git a/src/main/java/Models/User/ListUsers.java b/src/main/java/Models/User/ListUsers.java new file mode 100644 index 0000000..0a556e0 --- /dev/null +++ b/src/main/java/Models/User/ListUsers.java @@ -0,0 +1,60 @@ +/* + * 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.User; + +import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleStringProperty; + +/** + * + * @author Maher + */ +public class ListUsers { + private final SimpleIntegerProperty id; + private final SimpleStringProperty type; + private final SimpleStringProperty login; + private final SimpleStringProperty nom; + private final SimpleStringProperty prenom; + private final SimpleIntegerProperty tele; + + public ListUsers(Integer id, String type, String login, String nom, String prenom, Integer tele) { + this.id = new SimpleIntegerProperty(id); + this.type = new SimpleStringProperty(type); + this.login = new SimpleStringProperty(login); + this.nom = new SimpleStringProperty(nom); + this.prenom = new SimpleStringProperty(prenom); + this.tele = new SimpleIntegerProperty(tele); + } + + public Integer getId() { + return id.get(); + } + + public String getType() { + return type.get(); + } + + public String getLogin() { + return login.get(); + } + + public String getNom() { + return nom.get(); + } + + public String getPrenom() { + return prenom.get(); + } + + public Integer getTele() { + return tele.get(); + } + + + + + +} diff --git a/src/main/java/Models/User/Profile.java b/src/main/java/Models/User/Profile.java new file mode 100644 index 0000000..d58c64e --- /dev/null +++ b/src/main/java/Models/User/Profile.java @@ -0,0 +1,127 @@ +/* + * 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.User; + +import java.util.Date; + + +public class Profile { + + private int idprofile; + private String nom ; + private String prenom; + private String naissance; + private int sexe ; + private int tele ; + private String mail ; + private String adresse ; + private String pays ; + + + + private Authentification authentification; + + public int getIdprofile() { + return idprofile; + } + + public String getNom() { + return nom; + } + + public String getPrenom() { + return prenom; + } + + public String getNaissance() { + return naissance; + } + + public int getSexe() { + return sexe; + } + + public String getSexeString() { + if(this.sexe== 1){ + return "Homme"; + } + else{ + return "Femme"; + } + } + public int getTele() { + return tele; + } + + public String getMail() { + return mail; + } + + public String getAdresse() { + return adresse; + } + + public String getPays() { + return pays; + } + + + public void setIdprofile(int idprofile) { + this.idprofile = idprofile; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public void setNaissance(String naissance) { + this.naissance = naissance; + } + + public void setSexe(int sexe) { + this.sexe = sexe; + } + + public void setSexeString(String sexe) { + if(sexe.equals("Homme")){ + this.sexe=1; + } + else{ + this.sexe=0; + } + + } + public void setTele(int tele) { + this.tele = tele; + } + + public void setMail(String mail) { + this.mail = mail; + } + + public void setAdresse(String adresse) { + this.adresse = adresse; + } + + public void setPays(String pays) { + this.pays = pays; + } + + + public Authentification getAuthentification() { + return authentification; + } + + public void setAuthentification(Authentification authentification) { + this.authentification = authentification; + } + + +} diff --git a/src/main/java/Models/User/ProfileDB.java b/src/main/java/Models/User/ProfileDB.java new file mode 100644 index 0000000..b27966a --- /dev/null +++ b/src/main/java/Models/User/ProfileDB.java @@ -0,0 +1,154 @@ +package Models.User; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * @author Maher Ben Tili + */ +public class ProfileDB { + + + connexion cnx = new connexion(); + + public Profile getProfileByConnexion(String login, String password) + { + Profile profile = new Profile(); + + String Query = "SELECT * " + + "FROM `authentification` A, `profile` P " + + "WHERE (A.id_profile = P.idprofile) AND (A.`login`= '"+Adaptateur.addSlashes(login)+"') AND (A.`password` = '"+Adaptateur.addSlashes(password)+"') ;"; + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + //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){ + Authentification authentification = new Authentification(); + + authentification.setIdAuthentification(resultat.getString("idauhentification")); + authentification.setLogin(resultat.getString("login")); + authentification.setPassword(resultat.getString("password")); + authentification.setEtatCompte(resultat.getBoolean("etat_compte")); + authentification.setStockNegatif(resultat.getBoolean("stock_negatif")); + authentification.setLocalNom(resultat.getString("local_nom")); + + profile.setAuthentification(authentification); + profile.setIdprofile(resultat.getInt("idprofile")); + profile.setNom(resultat.getString("nom")); + profile.setPrenom(resultat.getString("prenom")); + profile.setNaissance(resultat.getString("naissance")); + profile.setSexe(resultat.getInt("sexe")); + profile.setTele(resultat.getInt("num_tele")); + profile.setMail(resultat.getString("mail")); + profile.setAdresse(resultat.getString("adresse")); + + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + return profile; + } + + + public boolean updateAuthentification(String idAuhentification, Authentification authentification){ + String req = "UPDATE `authentification` SET " + + " `password` = '"+Adaptateur.addSlashes(authentification.getPassword())+"', " + + " `question_secrete` = '"+Adaptateur.addSlashes(authentification.getQuestionSecrete())+"', " + + " `reponce_question` = '"+Adaptateur.addSlashes(authentification.getReponceQuestion())+"' " + + " WHERE `idauhentification` = "+idAuhentification+" ;"; + + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + } + catch(SQLException ex){ + System.err.println(req); + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + return false ; + } + return true; + } + else{ + return false ; + } + + + } + public boolean updateProfile(int idprofile, Profile profile) + { + String req = "UPDATE `profile`, `authentification` SET `mail` = '"+Adaptateur.addSlashes(profile.getMail())+"', `nom` = '"+Adaptateur.addSlashes(profile.getNom())+"', `prenom` = '"+Adaptateur.addSlashes(profile.getPrenom())+"', `naissance` = '"+profile.getNaissance()+"', `sexe` = '"+profile.getSexe()+"', `num_tele` = "+profile.getTele()+", `mail` = '"+Adaptateur.addSlashes(profile.getMail())+"', `adresse` = '"+Adaptateur.addSlashes(profile.getAdresse())+"', `pays` = '"+Adaptateur.addSlashes(profile.getPays())+"' WHERE (`idprofile` = "+idprofile+"); "; + if(cnx.ouverture()){ + try{ + int nbr = cnx.executionupdate(req); + } + catch(SQLException ex){ + System.err.println(req); + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + return false ; + } + return true; + } + else{ + return false ; + } + + } + + + + + public Profile getpro(int idprofile){ + Profile myprofile = new Profile(); + String req = "SELECT * " + + "FROM `authentification` A, `profile` P " + + "WHERE (P.`idprofile` = A.`id_profile`) AND " + + " (P.`idprofile`= "+idprofile+") AND " + + " (A.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){ + //on repace le curseur avant la première ligne + resultat.beforeFirst(); + while ( resultat.next() ) { + + Authentification authentification = new Authentification(); + authentification.setIdAuthentification(resultat.getString("idauhentification")); + authentification.setLogin(resultat.getString("login")); + authentification.setPassword(resultat.getString("password")); + authentification.setEtatCompte(resultat.getBoolean("etat_compte")); + authentification.setStockNegatif(resultat.getBoolean("stock_negatif")); + authentification.setLocalNom(resultat.getString("local_nom")); + + myprofile.setAuthentification(authentification); + myprofile.setIdprofile(resultat.getInt("idprofile")); + myprofile.setNom(resultat.getString("nom")); + myprofile.setPrenom(resultat.getString("prenom")); + myprofile.setNaissance(resultat.getString("naissance")); + myprofile.setSexe(resultat.getInt("sexe")); + myprofile.setTele(resultat.getInt("num_tele")); + myprofile.setMail(resultat.getString("mail")); + myprofile.setAdresse(resultat.getString("adresse")); + } + } + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return myprofile; + } +} diff --git a/src/main/java/Models/User/User.java b/src/main/java/Models/User/User.java new file mode 100644 index 0000000..214996f --- /dev/null +++ b/src/main/java/Models/User/User.java @@ -0,0 +1,51 @@ +/* + * 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.User; + +/** + * + * @author Maher + */ +public class User { + + public static int idprofile ; + public static String nom ; + public static String prenom ; + public static String UserLocal ; + + //true stock (négative vente produit en négatif) + public static boolean SotckNegatif; + + + public static int getIdprofile() { + return idprofile; + } + + + + public static String getNom() { + return nom; + } + + public static String getPrenom() { + return prenom; + } + + + public static void setNom(String nom) { + User.nom = nom; + } + + public static void setPrenom(String prenom) { + User.prenom = prenom; + } + + public static void setIdprofile(int idprofile) { + User.idprofile = idprofile; + } + + +} diff --git a/src/main/java/Models/VenteRapideClt/ListeVenteSansFacture.java b/src/main/java/Models/VenteRapideClt/ListeVenteSansFacture.java new file mode 100644 index 0000000..310157c --- /dev/null +++ b/src/main/java/Models/VenteRapideClt/ListeVenteSansFacture.java @@ -0,0 +1,67 @@ +/* + * 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.VenteRapideClt; + +import javafx.beans.property.SimpleStringProperty; + +/** + * @author Maher Ben Tili + */ +public class ListeVenteSansFacture { + + private final SimpleStringProperty Code; + private final SimpleStringProperty Date; + private final SimpleStringProperty NbrProd; + private final SimpleStringProperty Paiement; + private final SimpleStringProperty NomPrenomClient; + private final SimpleStringProperty Montant; + private final SimpleStringProperty Operation; + private final SimpleStringProperty DateOperation; + + public ListeVenteSansFacture(String code, String date, String nbr_prod, String paiement, String nom_prenom_client, String montant, String opertation, String date_opertation){ + this.Code = new SimpleStringProperty(code); + this.Date = new SimpleStringProperty(date); + this.NbrProd = new SimpleStringProperty(nbr_prod); + this.Paiement = new SimpleStringProperty(paiement); + this.NomPrenomClient = new SimpleStringProperty(nom_prenom_client); + this.Montant = new SimpleStringProperty(montant); + this.Operation = new SimpleStringProperty(opertation); + this.DateOperation = new SimpleStringProperty(date_opertation); + } + + public String getCode() { + return Code.get(); + } + + public String getDate() { + return Date.get(); + } + + public String getNbrProd() { + return NbrProd.get(); + } + + public String getPaiement() { + return Paiement.get(); + } + + public String getNomPrenomClient() { + return NomPrenomClient.get(); + } + + public String getMontant() { + return Montant.get(); + } + + public String getOperation() { + return Operation.get(); + } + + public String getDateOperation() { + return DateOperation.get(); + } + +} diff --git a/src/main/java/Models/VenteRapideClt/VenteSansFacture.java b/src/main/java/Models/VenteRapideClt/VenteSansFacture.java new file mode 100644 index 0000000..89cba77 --- /dev/null +++ b/src/main/java/Models/VenteRapideClt/VenteSansFacture.java @@ -0,0 +1,148 @@ +package Models.VenteRapideClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.contro; +import Models.Caisse.CarteBancaireClt; +import Models.ChequeClt.ChequeClt; +import Models.Produit.ListeProduit; +import javafx.collections.ObservableList; + +/** + * @author Maher + */ +public class VenteSansFacture { + + public String IdVenteSansFacture; + public String DateVente; + public String Paiement; // 0:espèce | 1:chèque | 2:Carte bancaire + public String NomPrenomClient; + + public String Operation; //0:Modifier | 1:Supprimer + public String DateOperation; + + public String Montant; + public Float FMontant; + public ChequeClt Cheque; + public CarteBancaireClt CarteBancaire; + public ObservableList ListProduit ; + public String LocalNom; + public Integer IdProfile; + + contro Controle = new contro(); + + public String getIdVenteSansFacture() { + return IdVenteSansFacture; + } + + public void setIdVenteSansFacture(String IdVenteSansFacture) { + this.IdVenteSansFacture = IdVenteSansFacture; + } + + public String getDateVente() { + return DateVente; + } + + public void setDateVente(String DateVente) { + this.DateVente = DateVente; + } + + public String getPaiement() { + return Paiement; + } + + public void setPaiement(String Paiement) { + this.Paiement = Paiement; + } + + public String getNomPrenomClient() { + if(Controle.isStringNull(this.NomPrenomClient)){ + return null; + }else{ + return this.NomPrenomClient; + } + } + + public void setNomPrenomClient(String NomPrenomClient) { + this.NomPrenomClient = NomPrenomClient; + } + + public String getOperation() { + return Operation; + } + + public void setOperation(String Operation) { + this.Operation = Operation; + } + + public String getDateOperation() { + return DateOperation; + } + + public void setDateOperation(String DateOperation) { + this.DateOperation = DateOperation; + } + + + public String getMontant() { + if(Controle.isStringNull(this.Montant)){ + return Adaptateur.ArrondFloatToString(this.FMontant); + }else{ + return this.Montant; + } + } + + public void setMontant(String Montant) { + this.Montant = Montant; + } + + public Float getFMontant() { + return FMontant; + } + + public void setFMontant(Float FMontant) { + this.FMontant = FMontant; + } + + + public ChequeClt getCheque() { + return Cheque; + } + + public void setCheque(ChequeClt Cheque) { + this.Cheque = Cheque; + } + + public CarteBancaireClt getCarteBancaire() { + return CarteBancaire; + } + + public void setCarteBancaire(CarteBancaireClt CarteBancaire) { + this.CarteBancaire = CarteBancaire; + } + + public ObservableList getListProduit() { + return ListProduit; + } + + public void setListProduit(ObservableList ListProduit) { + this.ListProduit = ListProduit; + } + + public String getLocalNom() { + return LocalNom; + } + + public void setLocalNom(String LocalNom) { + this.LocalNom = LocalNom; + } + + public Integer getIdProfile() { + return IdProfile; + } + + public void setIdProfile(Integer IdProfile) { + this.IdProfile = IdProfile; + } + + +} diff --git a/src/main/java/Models/VenteRapideClt/VenteSansFactureDB.java b/src/main/java/Models/VenteRapideClt/VenteSansFactureDB.java new file mode 100644 index 0000000..ca80604 --- /dev/null +++ b/src/main/java/Models/VenteRapideClt/VenteSansFactureDB.java @@ -0,0 +1,279 @@ +package Models.VenteRapideClt; + +import Controllers.Traitement.Adaptateur; +import Controllers.Traitement.ParametreSystem; +import Controllers.Traitement.contro; +import Models.Caisse.CaisseClt; +import Models.Caisse.CaisseDB; +import Models.Caisse.CarteBancaireClt; +import Models.Caisse.CarteBancaireCltDB; +import Models.ChequeClt.ChequeCltDB; +import Models.Produit.ListeProduit; +import Models.Stock.StockDetail; +import Models.Stock.StockDetailDB; +import Models.User.User; + +import Models.connexion; +import java.sql.ResultSet; +import java.sql.SQLException; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +/** + * @author Maher + */ +public class VenteSansFactureDB { + + connexion cnx = new connexion(); + + contro clt = new contro(); + + public boolean DeleteVenteSansFacture(VenteSansFacture Vente){ + + String IdVenteSansFacture = Vente.getIdVenteSansFacture(); + String req = "UPDATE `vente_sans_facture` SET `operation` = '1', `date_operation` = CURTIME() WHERE `vente_sans_facture`.`id_vente_sans_facture` = "+IdVenteSansFacture+";" ; + int updateVSF = cnx.MettreAJour(req); + if(updateVSF>0){ + ObservableList ListStockDetail = FXCollections.observableArrayList(); + for(ListeProduit listeprod : Vente.getListProduit()){ + if(listeprod.getReference() != ""){ + ListStockDetail.add(new StockDetail(listeprod.getReference(), Adaptateur.StringToFloat(listeprod.getQuantite()), null, null, null, null, null, IdVenteSansFacture)); + } + } + new StockDetailDB().InsertStockDetail(ListStockDetail); + CaisseClt Caisse = new CaisseClt(); + Caisse.setTypeMouvement("6"); + Caisse.setIdVenteSansFactureClt(IdVenteSansFacture); + Caisse.setMontant(Vente.getMontant().replace(",",".")); + new CaisseDB().AddCaisse(Caisse); + return true; + } + + return false; + } + + public VenteSansFacture SetVenteSansFacture(VenteSansFacture Vente){ + + CaisseClt Caisse = new CaisseClt(); + Caisse.setTypeMouvement("5"); + + String IdCarteBancaire = "NULL"; + String IdChequeClt = "NULL"; + if(Vente.getPaiement().equals("2")){ + CarteBancaireCltDB CarteBancaireDB = new CarteBancaireCltDB(); + CarteBancaireClt CarteBancaire = CarteBancaireDB.SetCarteBancaire(Vente.getCarteBancaire()); + Vente.setCarteBancaire(CarteBancaire); + IdCarteBancaire = "'"+CarteBancaire.getIdCarteBancaire()+"'"; + }else if(Vente.getPaiement().equals("1")){ + ChequeCltDB ChequeDB = new ChequeCltDB(); + IdChequeClt = "'"+ChequeDB.AddChequeClt(Vente.getCheque())+"'"; + } + + String NomPrenomClient = "NULL"; + if(Vente.getNomPrenomClient() != null){ + NomPrenomClient = "'"+Vente.getNomPrenomClient()+"'"; + } + + String Montant = Vente.getMontant().replace(",","."); + + String Query ="INSERT INTO `vente_sans_facture` (`date_vente`, `paiement`, `nom_prenom_client`, `operation`, `montant`, `id_chequeclt`, `id_carte_bancaire`, `id_profile`, `local_nom`) VALUES (CURTIME(), '"+Vente.getPaiement()+"', "+NomPrenomClient+", NULL, '"+Montant+"', "+IdChequeClt+", "+IdCarteBancaire+", '"+User.idprofile+"', '"+ParametreSystem.NomLocalPC+"');"; + + String IdVenteSansFacture = cnx.InsertGetLastId(Query); + + Vente.setIdVenteSansFacture(IdVenteSansFacture); + + ObservableList ListStockDetail = FXCollections.observableArrayList(); + + String QueryProd = "INSERT INTO `liste_prod_vente_sans_facture` (`id_liste_prod_vente_sans_facture`, `id_vente_sans_facture`, `produit_reference`, `designation_produit`, `quantite`, `p_u_h_t`, `remise`, `p_u_h_t_net`, `tva`, `montant`, `local_nom`) VALUES "; + String req = ""; + for(ListeProduit listeprod : Vente.getListProduit()){ + if(listeprod.getReference() != ""){ + String PrixHT ; String Remise ; String TotalHT ; String TVA ; String TotalTTC ; + PrixHT = listeprod.getPrixHT().replace(",","."); + Remise= listeprod.getRemise().replace("%","").replace(",","."); + TotalHT= listeprod.getTotalHT().replace(",","."); + TVA=listeprod.getTVA().replace("%","").replace(",","."); + TotalTTC= listeprod.getTotalTTC().replace(",","."); + + req += "(NULL, '"+IdVenteSansFacture+"', '"+listeprod.getReference()+"', '"+Adaptateur.addSlashes(listeprod.getDesignation())+"', '"+listeprod.getQuantite()+"', "+PrixHT+", '"+Remise+"', '"+TotalHT+"', '"+TVA+"', '"+TotalTTC+"', '"+ParametreSystem.NomLocalPC+"'),"; + ListStockDetail.add(new StockDetail(listeprod.getReference(), Adaptateur.StringToFloat(listeprod.getQuantite())* -1, null, null, null, null, null, IdVenteSansFacture)); + } + } + if(req != ""){ + req = req.substring(0, req.length()-1) + ";"; + if(cnx.insertion(QueryProd+req)){ + new StockDetailDB().InsertStockDetail(ListStockDetail); + Caisse.setIdVenteSansFactureClt(IdVenteSansFacture); + Caisse.setMontant(Montant); + new CaisseDB().AddCaisse(Caisse); + } + } + return Vente; + } + + + + public VenteSansFacture getVenteSansFacture(String IdVenteSansFacture){ + VenteSansFacture venteSansFacture = new VenteSansFacture(); + + String Query = "SELECT *, DATE_FORMAT(date_vente, '%d/%m/%Y %H:%i:%s') as datetime_vente FROM `vente_sans_facture` WHERE `id_vente_sans_facture` = "+IdVenteSansFacture+";"; + + if(cnx.ouverture()){ + try{ + ResultSet resultat = cnx.excutionquery(Query); + //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){ + venteSansFacture.setIdVenteSansFacture(IdVenteSansFacture); + + // 0:espèce | 1:chèque | 2:Carte bancaire + venteSansFacture.setPaiement(resultat.getString("paiement")); + if(venteSansFacture.getPaiement().equals("1")){ + venteSansFacture.setCheque(new ChequeCltDB().getChequeClt(resultat.getString("id_chequeclt"))); + }else if(venteSansFacture.getPaiement().equals("2")){ + venteSansFacture.setCarteBancaire(new CarteBancaireCltDB().getCarteBancaireClt(resultat.getString("id_carte_bancaire"))); + } + + venteSansFacture.setDateVente(resultat.getString("datetime_vente")); + venteSansFacture.setFMontant(resultat.getFloat("montant")); + venteSansFacture.setIdProfile(resultat.getInt("id_profile")); + venteSansFacture.setLocalNom(resultat.getString("local_nom")); + venteSansFacture.setMontant(resultat.getString("montant")); + venteSansFacture.setNomPrenomClient(resultat.getString("nom_prenom_client")); + + venteSansFacture.setOperation(resultat.getString("operation")); + venteSansFacture.setDateOperation(resultat.getString("date_operation")); + + venteSansFacture.setListProduit(this.getListProduit(IdVenteSansFacture)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(Query); + } + } + + return venteSansFacture; + } + + + + + public ObservableList getListProduit(String IdVenteSansFacture){ + ObservableList ListProd = FXCollections.observableArrayList(); + if(cnx.ouverture()){ + try{ + String Query = "SELECT * FROM `liste_prod_vente_sans_facture` WHERE `id_vente_sans_facture` = "+IdVenteSansFacture+";"; + ResultSet ResultListProd = cnx.excutionquery(Query); + ResultListProd.beforeFirst(); + while (ResultListProd.next() ) { + String reference = ResultListProd.getString("produit_reference"); + String designation = ResultListProd.getString("designation_produit"); + String quantite = ResultListProd.getString("quantite").replace(",","."); + String PrixHT = ResultListProd.getString("p_u_h_t").replace(",","."); + String Remise = ResultListProd.getString("remise").replace(",",".").replace("%",""); + String TotalHT = ResultListProd.getString("p_u_h_t_net").replace(",","."); + String TVA = ResultListProd.getString("tva").replace(",",".").replace("%",""); + String TotalTTC= ResultListProd.getString("montant").replace(",","."); + ListProd.add(new ListeProduit(reference, designation, quantite, PrixHT, Remise, TotalHT, TVA, TotalTTC)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return ListProd; + } + + public ObservableList SearchVenteSansFactureGestion(Integer debut, Integer nbr, String Code, String Montant, String Date){ + + ObservableList ListeVSF = FXCollections.observableArrayList(); + + if(cnx.ouverture()){ + + String WhereCondition = ""; + + if(!clt.isStringNull(Code)){ + WhereCondition += " (VSF.`id_vente_sans_facture` = '"+Code+"') AND"; + } + if(!clt.isStringNull(Date)){ + WhereCondition += " (DATE(VSF.`date_vente`) = '"+Date+"' ) AND"; + } + if(!clt.isStringNull(Montant)){ + WhereCondition += " (VSF.`montant` LIKE '%"+Montant+"%') AND"; + } + + if(!WhereCondition.equals("")){ + WhereCondition = WhereCondition.substring(0, WhereCondition.length() - 4); + WhereCondition = "WHERE " + WhereCondition; + } + + String Query = "SELECT VSF.`id_vente_sans_facture`, DATE_FORMAT(VSF.`date_vente`, '%d/%m/%Y %H:%i:%s') AS `date_vente` , VSF.`paiement`, VSF.`nom_prenom_client`, VSF.`montant`, VSF.`operation`, DATE_FORMAT(VSF.`date_operation`, '%d/%m/%Y %H:%i:%s') AS dateOperation, (SELECT COUNT(*) FROM `liste_prod_vente_sans_facture` LPVSF WHERE LPVSF.id_vente_sans_facture = VSF.id_vente_sans_facture) AS nbr_prod " + + " FROM `vente_sans_facture` VSF " + + WhereCondition + + " ORDER BY VSF.`date_vente` DESC " + + " LIMIT "+debut+" , "+nbr+";"; + try{ + ResultSet ResultListeVSF = cnx.excutionquery(Query); + ResultListeVSF.beforeFirst(); + while (ResultListeVSF.next() ) { + String id_vente_sans_facture = ResultListeVSF.getString("id_vente_sans_facture"); + String date_vente = ResultListeVSF.getString("date_vente"); + String nbr_prod= ResultListeVSF.getString("nbr_prod"); + String paiement = ResultListeVSF.getString("paiement"); + String nom_prenom_client = ResultListeVSF.getString("nom_prenom_client"); + String montant = Adaptateur.FloatToStringEspace(ResultListeVSF.getFloat("montant")); + String operation = ResultListeVSF.getString("operation"); + String date_operation = ResultListeVSF.getString("dateOperation"); + + ListeVSF.add(new ListeVenteSansFacture(id_vente_sans_facture, date_vente, nbr_prod, paiement, nom_prenom_client, montant, operation, date_operation)); + } + }catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+Query); + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + } + } + return ListeVSF; + } + + public Integer nbrVenteSansFactureGestion(String Code, String Montant, String Date) + { + String WhereCondition = ""; + + if(!clt.isStringNull(Code)){ + WhereCondition += " (VSF.`id_vente_sans_facture` = '"+Code+"') AND"; + } + if(!clt.isStringNull(Date)){ + WhereCondition += " (DATE(VSF.`date_vente`) = '"+Date+"' ) AND"; + } + if(!clt.isStringNull(Montant)){ + WhereCondition += " (VSF.`montant` LIKE '%"+Montant+"%') AND"; + } + + if(!WhereCondition.equals("")){ + WhereCondition = WhereCondition.substring(0, WhereCondition.length() - 4); + WhereCondition = "WHERE " + WhereCondition; + } + + String req=" SELECT COUNT(VSF.`id_vente_sans_facture`) " + + " FROM `vente_sans_facture` VSF " + + WhereCondition+ " ;"; + + 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("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return sommme ; + } + +} diff --git a/src/main/java/Models/connexion.java b/src/main/java/Models/connexion.java new file mode 100644 index 0000000..7241d4d --- /dev/null +++ b/src/main/java/Models/connexion.java @@ -0,0 +1,276 @@ +package Models; + +import Controllers.Dialog.ShowDialog; +import Controllers.Traitement.ParametreSystem; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +/** + *@author Maher Ben Tili + */ +public class connexion { + + String url = ParametreSystem.JdbcUrl; + String dbName = ParametreSystem.JdbcDB; + String userName = ParametreSystem.JdbcUser; + String password = ParametreSystem.JdbcPassword; + + /*String url = "jdbc:mysql://localhost:3306/powerpme?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; + String dbName = "powerpme"; + String userName = "root"; + String password = "bentili";*/ + Connection conn = null; + Statement statement = null; + ResultSet resultat = null; + + public boolean insertion(String req) + { + boolean resulta = false ; + + if(this.ouverture()){ + try{ + int statut = statement.executeUpdate(req); + if(statut>0){ + resulta= true ; + } + } + catch(SQLException ex){ + System.out.println("requête d'insertion : \n" +req); + ShowDialog SD = new ShowDialog(); + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + SD.ShowAletDialog(); + resulta= false ; + + } + finally { + this.fermeture(); + } + } + else{ + resulta= false ; + } + return resulta ; + } + + + public int MettreAJour(String sql){ + Integer nbr = 0 ; + if(this.ouverture()){ + try{ + nbr = this.executionupdate(sql); + } + catch(SQLException ex){ + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + System.out.println("requête d'insertion : \n" +sql); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + finally { + this.fermeture(); + } + } + return nbr ; + } + + + public String InsertGetLastId(String req) + { + String LastId = null ; + if(this.ouverture()){ + try{ + PreparedStatement pstmt = conn.prepareStatement(req, statement.RETURN_GENERATED_KEYS); + pstmt.executeUpdate(); + ResultSet keys = pstmt.getGeneratedKeys(); + keys.next(); + LastId = keys.getLong(1)+""; + } + catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + + ShowDialog SD = new ShowDialog(); + ShowDialog.setTitre("Erreur SQL !"); + ShowDialog.setDetail(ex.getMessage()+"\n"+ex.getSQLState()); + SD.ShowAletDialog(); + } + finally { + this.fermeture(); + + } + } + return LastId ; + } + + public ResultSet excutionquery(String req) throws SQLException{ + /* Exécution d'une requête de lecture */ + resultat = statement.executeQuery(req); + /* Récupération des données du résultat de la requête de lecture */ + return resultat; + + } + + public ResultSet FetchALL(String req){ + if(this.ouverture()){ + try{ + // Exécution d'une requête de lecture + resultat = this.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(); + } + } catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return resultat; + } + + + public ResultSet Fetch(String req){ + if(this.ouverture()){ + try{ + // Exécution d'une requête de lecture + resultat = this.excutionquery(req); + + //on place le curseur sur le dernier tuple + resultat.last(); + + } catch(SQLException ex){ + System.err.println("Erreur SQL ! \n"+ex.getMessage()); + System.out.println(req); + } + } + return resultat; + } + + public Integer CoutNumber(String Query){ + Integer Sommme = 0; + if(this.ouverture()){ + try{ + ResultSet resultat = statement.executeQuery(Query); + + 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(Query); + } + finally { + this.fermeture(); + } + } + return Sommme; + } + + + + public int executionupdate(String req) throws SQLException{ + /* Exécution d'une requête de lecture */ + int nbr = statement.executeUpdate(req); + /* Récupération des données du résultat de la requête de lecture */ + this.fermeture(); + return nbr; + + } + + + public CallableStatement executePLSQL(String sql){ + try { + Class.forName( "com.mysql.cj.jdbc.Driver" ); + conn = DriverManager.getConnection (url,userName,password); + return conn.prepareCall(sql); + } + catch (ClassNotFoundException e ) { + System.err.println("Erreur lors du chargement : le driver n'a pas été trouvé dans le classpath !"); + return null; + } + catch (SQLException ex) { + System.err.println("Erreur lors d\'ouverture de la base de données"); + return null; + } + + } + + + + /* Connexion et ouverture de la base de données */ + public boolean ouverture(){ + try { + Class.forName( "com.mysql.cj.jdbc.Driver" ); + conn = DriverManager.getConnection (url,userName,password); + conn.setAutoCommit(false); + statement = conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); + return true; + } + catch (ClassNotFoundException e ) { + ShowDialog.setTitre("Erreur lors du chargement : le driver n'a pas été trouvé dans le classpath !"); + ShowDialog.setDetail(e.getMessage()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + return false; + } + catch (SQLException ex) { + ShowDialog.setTitre("Erreur lors d\'ouverture de la base de données"); + ShowDialog.setDetail(ex.getMessage()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + return false; + } + } + + + + /*Femiture de la connexion de base de données*/ + public void fermeture(){ + if ( resultat != null ) { + try { + resultat.close(); + } catch ( SQLException ignore ) { + ShowDialog.setTitre("Erreur lors du Fermeture BD:"); + ShowDialog.setDetail(ignore.getMessage()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + + } + } + + if ( statement != null ) { + try { + statement.close(); + } catch ( SQLException ignore ) { + ShowDialog.setTitre("Error statement: BD:"); + ShowDialog.setDetail(ignore.getMessage()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + } + + if ( conn != null ) { + try { + conn.commit(); + //conn.close(); + } catch ( SQLException ignore ) { + ShowDialog.setTitre("Erreur lors de fermeture de Connexion: "); + ShowDialog.setDetail(ignore.getMessage()); + ShowDialog SD = new ShowDialog(); + SD.ShowAletDialog(); + } + } + } + +} \ No newline at end of file diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java new file mode 100644 index 0000000..93bb406 --- /dev/null +++ b/src/main/java/module-info.java @@ -0,0 +1,118 @@ +module Controllers { + + requires javafx.controls; + + requires javafx.fxml; + + requires java.sql; + + requires icu4j; + + requires org.controlsfx.controls; + + requires com.gluonhq.charm.glisten; + + requires javafx.web; + requires java.base; + + requires log4j; + + opens Controllers to javafx.fxml; + exports Controllers; + + opens Controllers.Home to javafx.fxml; + exports Controllers.Home; + opens Models.Home to javafx.fxml; + exports Models.Home; + + opens Controllers.BonLivraisonClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.BonLivraisonClt; + opens Models.BonLivraisonClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.BonLivraisonClt; + + opens Controllers.BonReceptionFrs to javafx.fxml, log4j, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.BonReceptionFrs; + opens Models.BonReceptionFrs to javafx.fxml, log4j, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.BonReceptionFrs; + + opens Controllers.Caisse to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Caisse; + opens Models.Caisse to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Caisse; + + opens Controllers.Categorie to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Categorie; + opens Models.Categorie to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Categorie; + + opens Controllers.ChequeClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.ChequeClt; + opens Models.ChequeClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.ChequeClt; + + opens Controllers.Client to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Client; + opens Models.Client to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Client; + + opens Controllers.CommandeClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.CommandeClt; + opens Models.CommandeClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.CommandeClt; + + opens Controllers.DevisClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.DevisClt; + opens Models.DevisClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.DevisClt; + + opens Controllers.Dialog to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Dialog; + + opens Controllers.FactureClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.FactureClt; + opens Models.FactureClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.FactureClt; + + opens Controllers.FactureFrs to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.FactureFrs; + opens Models.FactureFrs to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.FactureFrs; + + opens Controllers.Fournisseur to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Fournisseur; + opens Models.Fournisseur to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Fournisseur; + + + opens Controllers.Produit to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Produit; + opens Models.Produit to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Produit; + + opens Controllers.Reglement to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Reglement; + opens Models.Reglement to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Reglement; + + opens Controllers.Stock to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.Stock; + opens Models.Stock to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.Stock; + + opens Controllers.TraiteClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.TraiteClt; + opens Models.TraiteClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.TraiteClt; + + opens Controllers.User to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.User; + opens Models.User to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.User; + + opens Controllers.VenteRapideClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Controllers.VenteRapideClt; + opens Models.VenteRapideClt to javafx.fxml, javafx.controls, java.sql, org.controlsfx.controls, com.gluonhq.charm.glisten, javafx.web; + exports Models.VenteRapideClt; + +} + diff --git a/src/main/resources/Public/CSS/StylePrincipal.css b/src/main/resources/Public/CSS/StylePrincipal.css new file mode 100644 index 0000000..6108eb1 --- /dev/null +++ b/src/main/resources/Public/CSS/StylePrincipal.css @@ -0,0 +1,590 @@ +/******************************************************************************* + * * + * Text + Font * + * * + ******************************************************************************/ +/*@font-face{ + font-family: 'Raleway-SemiBold'; src: url('/Fonts/Raleway-SemiBold.ttf'); +} +*/ +.testtext{ + -fx-font-family: "Raleway-SemiBold"; + -fx-font-size:18; +} + +.testtext2{ + -fx-font-family: "Raleway-Medium"; + -fx-font-size:30; + +} + + +/******************************************************************************* + * * + * Progress Indicator * + * * + ******************************************************************************/ +.ProgressIndicator-Default{ + -fx-progress-color:#ffffff; +} + + + +/******************************************************************************* + * * + * AnchorPane + Pane * + * * + ******************************************************************************/ + + +.AnchorPane-Default{ + -fx-background-color:#ffffff; +} + +.Pane-Default{ + -fx-background-color:#ffffff; +} + + +.pane2hautdroit{ + -fx-border-color: #d2d2d2; + -fx-background-color:#ffffff; +} + + + + +/******************************************************************************* + * * + * Icon Print PDF EXCEL * + * * + ******************************************************************************/ +.btn-icon-Show{ + -fx-background-color: #337ab7; + -fx-background-radius: 5; + -fx-background-image: url("../icon/detailbutton.png"); + -fx-background-repeat: stretch; + -fx-background-size: 16 16; + -fx-background-position: 10 10; + -fx-alignment:CENTER; + -fx-font-family: "System"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; +} +.icon-Print{ + -fx-background-color: #404040; + -fx-background-radius: 5; + -fx-background-image: url("../icon/icon-print.png"); + -fx-background-repeat: stretch; + -fx-background-size: 32 32; + -fx-background-position: center center; + +} + +.btn-icon-search{ + -fx-background-color: transparent; + -fx-background-image: url("../icon/search.png"); + -fx-background-repeat: stretch; + -fx-background-size: 20 22; + -fx-background-position: 5 9; + -fx-alignment:CENTER_RIGHT; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-text-fill: #000000; + -fx-font-weight:bold; + -fx-border-radius: 5 5 5 5; +} +.btn-icon-search:hover{ + -fx-background-color:#EFEFEF; + -fx-border-color: #959595; + -fx-border-radius: 5 5 5 5; + +} + + +.btn-icon-Print{ + -fx-background-color: #404040; + -fx-background-radius: 5; + -fx-background-image: url("../icon/icon-print.png"); + -fx-background-repeat: stretch; + -fx-background-size: 20 22; + -fx-background-position: 5 5; + -fx-alignment:CENTER_RIGHT; + -fx-font-family: "System"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; +} +.icon-Print:hover{ + -fx-background-color: #2E2E2E; +} + +.icon-PDF{ + -fx-background-color: #f20606; + -fx-background-radius: 5; + -fx-background-image: url("../icon/icon-pdf.png"); + -fx-background-repeat: stretch; + -fx-background-size: 32 37; + -fx-background-position: center center; +} +.btn-icon-PDF{ + -fx-background-color: #f20606; + -fx-background-radius: 5; + -fx-background-image: url("../icon/icon-pdf.png"); + -fx-background-repeat: stretch; + -fx-background-size: 17 22; + -fx-background-position: 5 5; + -fx-alignment:CENTER_RIGHT; + -fx-font-family: "System"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; +} + +.icon-PDF:hover{ + -fx-background-color: #cd0505; +} + +.icon-Excel{ + -fx-background-color: #4DAE4D; + -fx-background-radius: 5; + -fx-background-image: url("../icon/icon-excel.png"); + -fx-background-repeat: stretch; + -fx-background-size: 32 37; + -fx-background-position: center center; + +} +.icon-Excel:hover{ + -fx-background-color: #3c873c; +} + +.btn-icon-Excel{ + -fx-background-color: #4DAE4D; + -fx-background-radius: 5; + -fx-background-image: url("../icon/icon-excel.png"); + -fx-background-repeat: stretch; + -fx-background-size: 17 22; + -fx-background-position: 5 5; + -fx-background-color: #4DAE4D; + -fx-font-family: "System"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; +} + +.btn-icon-primary{ + -fx-background-color:#337ab7; +} + +.btn-icon-primary:hover{ + -fx-background-color:#286090; +} + +/******************************************************************************* + * * + * Panel title * + * * + ******************************************************************************/ + +.panel-default{ + -fx-border-color:#E5E5E5; + -fx-border-radius: 5px 5px 0px 0px; + +} +.panel-default-titre{ + -fx-background-color: #F5F5F5; + -fx-background-radius: 5px 5px 0px 0px; +} + +.panel-bleu{ + -fx-border-color:#428BCA; + -fx-border-radius: 5px 5px 0px 0px; + -fx-background-color: #e0e0e0; + +} +.panel-bleu-titre{ + -fx-background-color: #428BCA; + -fx-background-radius: 5px 5px 0px 0px; +} + + +.panel-success{ + -fx-border-color:#4DAE4D; + -fx-border-radius: 5px 5px 0px 0px; + -fx-background-color: #e0e0e0; +} +.panel-success-titre{ + -fx-background-color: #4DAE4D; + -fx-background-radius: 5px 5px 0px 0px; +} + + +.panel-balck{ + -fx-border-color:#000000; + -fx-border-radius: 5px 5px 0px 0px; + -fx-background-color: #e0e0e0; +} +.panel-balck-titre{ + -fx-background-color: #000000; + -fx-background-radius: 5px 5px 0px 0px; +} + +/******************************************************************************* + * * + * Liste de selection * + * * + ******************************************************************************/ + +.liste-select{ + -fx-background-color:#ffffff; + -fx-border-color: #cccccc; + -fx-border-width: 1px; + -fx-border-radius: 3px; +} + +.liste-select:hover{ + -fx-background-color:#E6E6E6; +} + + + + + + + + + + +/******************************************************************************* + * * + * PopupMenu * + * * + ******************************************************************************/ + +.context-menu { + -fx-background-color: white; + -fx-background-insets: 0, 1, 2; + -fx-background-radius: 0 0 0 0, 0 0 0 0, 0 0 0 0; + -fx-padding: 0.333333em 0em 0.333333em 0em; /* 4 1 4 1 */ + -fx-border-color: #EFEFEF; + /* TODO: the border color below is not being respected - it appears as gray instead of black. After this gets fixed remove the comments so that + the border will become black. + */ +/* -fx-border-color: #212121; + -fx-border-style: solid;*/ +} + +.context-menu .separator .line{ + -fx-padding: 0.0em 0.333333em 0.0em 0.333333em; /*0 4 0 4 */ + -fx-border-style: solid; + -fx-background-color: #c2c2c2; + -fx-border-width: 0.5px; +} + +/* TODO: try to scope the menu-item style to the contextmenu */ +.menu-item { + -fx-background-color: transparent; + -fx-padding: 0.666666em 0.999999em 0.4999995em 0.999999em; /*6 12 6 12 */ + +} + +.menu-item .label { + -fx-padding: 0em 0.5em 0em 0em; + -fx-text-fill: #212121; + -fx-font-family: "Segoe UI", Helvetica, Arial, sans-serif; + -fx-font-size: 9pt; + +} + + +.menu-item:focused { + -fx-background: -fx-accent; + -fx-background-color: #dedede; +} + +.menu-item:pressed{ + -fx-background-color: #212121; + -fx-text-fill: white; +} + +.menu-item:pressed .label{ + -fx-text-fill: white; +} + + +/******************************************************************************* + * * + * TextField * + * * + ******************************************************************************/ +.text-field:focused{ + -fx-effect: dropshadow(three-pass-box, #66afe9, 10, 0, 0, 0); + -fx-border-color: transparent; + +} + + + + + + + + +/******************************************************************************* + * * + * Button * * + * * + ******************************************************************************/ +.btn-success{ + -fx-background-color: #4DAE4D; + -fx-font-family: "System"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; +} +.btn-success:hover{ + -fx-background-color:#3c873c; + -fx-font-family: "System"; + -fx-font-size: 10pt; + -fx-font-weight:bold; +} +.btn-simple{ + -fx-background-color:#FFFFFF; + -fx-border-color: #CCCCCC; + -fx-border-radius: 5 5 5 5; + -fx-font-weight:bold; + -fx-text-fill: #000000; + -fx-font-family: "Arial"; + -fx-font-size: 9pt; +} + +.btn-simple:hover{ + -fx-background-color:#E6E6E6; + -fx-border-color: #ADADAD; +} +.btn-danger{ + -fx-background-color: #f20606; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; + +} +.btn-danger:hover{ + -fx-background-color:#cd0505; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-font-weight:bold; +} + +.btn-default{ + -fx-background-color:#EFEFEF; + -fx-border-color: #959595; + -fx-border-radius: 5 5 5 5; +} +.btn-default:hover{ + -fx-background-color:#E6E6E6; +} + +.btn-primary{ + -fx-background-color:#337ab7; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; + +} + +.btn-primary:hover{ + -fx-background-color:#286090; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-font-weight:bold; +} + +.btn-black{ + -fx-background-color:#373737; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-text-fill: white; + -fx-font-weight:bold; + +} +.btn-black:hover{ + -fx-background-color:#2c2c2c; + -fx-font-family: "Arial"; + -fx-font-size: 10pt; + -fx-font-weight:bold; + +} +/******************************************************************************* + * * + * Alert AnchorPane * * + * * + ******************************************************************************/ + +.AnchorPane-Alert{ + -fx-background-color: rgba(0,0,0,0.6); + +} +.Panel-Alert{ + -fx-background-color:#ffffff; + -fx-border-color: #212121; + -fx-border-radius: 10 10 0 0; + -fx-background-radius: 10 10 0 0; + +} +.RectangleTitre-Alert{ + -fx-background-color:linear-gradient(to bottom, #585858, #333333); + -fx-background-radius: 10 10 0 0; +} + +.RectangleProble-Alert{ + -fx-background-color:linear-gradient(to bottom, #E2E2E2, #EDEDED); + -fx-border-color: #B4B4B4; +} + + + +/******************************************************************************* + * * + * TableView * * + * * + ******************************************************************************/ +.table-view:focused { + -fx-background-color: transparent ; + +} + +.table-view .column-header .label { + -fx-font-family: "Verdana"; + -fx-text-fill: black; + -fx-font-size: 9pt; + -fx-alignment: center-left; + +} +.table-view .column-header.Center .label { + -fx-font-family: "Verdana"; + -fx-text-fill: black; + -fx-font-size: 9pt; + -fx-alignment: CENTER; + +} +.table-view .table-row-cell { + -fx-font-family: "Arial"; + -fx-font-size: 11pt; + -fx-text-alignment: center ; +} +.table-column { + -fx-alignment: CENTER_LEFT ; +} + +.table-row-cell:selected{ + -fx-background-color:#90b7d8 ; +} + +.table-view .column-header, .table-view .filler { + -fx-background-color:#ffffff; +} + +.table-view .column-header, .table-view .filler { + -fx-border-color: transparent transparent transparent transparent; + -fx-border-insets: 0 0 0 0; + -fx-border-width: 2px; + +} + +.cerclenextlast:hover{ + -fx-stroke: #3eb472; + -fx-stroke-width: 2; +} + + +/******************************************************************************* + * * + * TablePane * * + * * + ******************************************************************************/ +.Table-Pane { + -fx-border-color: #DDDDDD; +} +.Table-Pane .tab-header-area .tab-header-background{ + -fx-background-color:#F5F5F5; + -fx-border-insets: -1 -1 0 -1; + -fx-border-color: #DDDDDD; +} +.Table-Pane:top .tab-header-area .headers-region .tab:top:selected .tab-container .focus-indicator{ + -fx-border-color: transparent; +} + +.Table-Pane:top .tab-header-area .headers-region .tab:top .tab-container .tab-label .text{ + -fx-fill: #ffffff; +} +.Table-Pane:top .tab-header-area .headers-region .tab:selected:top .tab-container .tab-label .text{ + -fx-fill: #000000; +} +.tab{ + -fx-background-color: #4cae4c; + -fx-padding: 8px; + -fx-background-radius: 0; + -fx-font-weight:bold; +} + +.tab:selected{ + -fx-background-color: #ffffff; + -fx-border-color: #4cae4c; + -fx-border-insets: 0 -2 -2 -2; + -fx-border-width: 2; + -fx-translate-y: 1; + +} + + + +/******************************************************************************* + * * + * SplitPane * + * * + ******************************************************************************/ +.split-pane:vertical .split-pane-divider{ + visibility: false ; +} + +/******************************************************************************* + * * + * Progress Bar * + * * + ******************************************************************************/ +.progress-bar:determinate .bar{ + -fx-background-color: #5fc65f; +} + +.progress-bar:indeterminate .pb-track{ + -fx-background-color: #ffffff; +} + + +/******************************************************************************* + * * + * Chart * + * * + ******************************************************************************/ +.chart-plot-background { + -fx-background-color: transparent; +} +.chart-vertical-grid-lines { + -fx-stroke: transparent; +} +.chart-horizontal-grid-lines { + -fx-stroke: transparent; +} +.chart-alternative-row-fill { + -fx-fill: transparent; + -fx-stroke: transparent; + -fx-stroke-width: 0; +} + +.default-color0.chart-series-line { -fx-stroke: #e9967a; } +.default-color1.chart-series-line { -fx-stroke: #f0e68c; } +.default-color2.chart-series-line { -fx-stroke: #dda0dd; } \ No newline at end of file diff --git a/src/main/resources/Public/CSS/StyleSheetAccordion.css b/src/main/resources/Public/CSS/StyleSheetAccordion.css new file mode 100644 index 0000000..4a71c44 --- /dev/null +++ b/src/main/resources/Public/CSS/StyleSheetAccordion.css @@ -0,0 +1,105 @@ +/* +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. +*/ +/* + Created on : 8 déc. 2014, 13:27:11 + Author : Maher +*/ +/*.paneArccordion{ + -fx-background-color: #d2d2d2; +}*/ +.PaneAccordion{ + -fx-background-color: #373737; +} + +.titled-pane { + -fx-border-color: #2C2C2C; +} +.titled-pane .title{ + -fx-padding: 5; + -fx-background-color: #373737; + -fx-border-insets:0px 0px 0px 0px; + -fx-border-width:0px 0px 2px 0px; + -fx-font-weight:bold; +} + + .titled-pane .title .text{ + -fx-fill: #ffffff; + -fx-font-size: 13px; + -fx-font-family: "inherit"; + -fx-translate-x:15; + + } + + + +.titled-pane .content{ + -fx-background-color: #373737; + -fx-border-color: #2C2C2C; +} + +.titled-pane .title:hover{ + -fx-background-color: #2C2C2C; +} + + + +.titled-pane .title .arrow-button .arrow{ + -fx-background-color:#ffffff; + visibility: hidden; + -fx-padding:18; +} + + + +.dashboard .title .arrow-button{ + -fx-background-image: url("../icon/dashboard.png");-fx-background-repeat: stretch;-fx-background-size: 23px 18px; + -fx-translate-y:6; + -fx-translate-x:10; +} + + +.achat .title .arrow-button{ + -fx-background-image: url("../icon/achat.png");-fx-background-repeat: stretch;-fx-background-size: 30px 28px; + -fx-translate-y:6; + -fx-translate-x:10; +} + +.vente .title .arrow-button{ + -fx-background-image: url("../icon/vente.png");-fx-background-repeat: stretch;-fx-background-size: 28px 20px; + -fx-translate-y:6; + -fx-translate-x:10; +} + +.stock .title .arrow-button{ + -fx-background-image: url("../icon/Stock.png");-fx-background-repeat: stretch;-fx-background-size: 30px 19px; + -fx-translate-y:6; + -fx-translate-x:10; +} + +.outil .title .arrow-button{ + -fx-background-image: url("../icon/outil.png");-fx-background-repeat: stretch;-fx-background-size: 22px 22px; + -fx-translate-y:6; + -fx-translate-x:10; +} + +/*******************************AnchorPane***********************************************/ + + +.AnchorPane{ + -fx-background-color: #2c2c2c; +} +.ButtonAnchorPane{ + -fx-background-color: #2c2c2c; + -fx-text-fill: #a0a0a0; + -fx-font-size: 13px; + -fx-font-weight:bold; +} + + +.ButtonAnchorPane:hover{ + -fx-background-color: #373737; + -fx-text-fill: #FFFFFF; +} diff --git a/src/main/resources/Public/CSS/StyleSheetPanelHaut.css b/src/main/resources/Public/CSS/StyleSheetPanelHaut.css new file mode 100644 index 0000000..9e825b6 --- /dev/null +++ b/src/main/resources/Public/CSS/StyleSheetPanelHaut.css @@ -0,0 +1,50 @@ +/* +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. +*/ +/* + Created on : 8 déc. 2014, 13:40:26 + Author : Maher +*/ + +.paneMenuHaut{ + -fx-border-color: #d2d2d2; +} + +.BouttonMessage{ + -fx-background-color: transparent; +} +.BouttonMessage:hover{ + -fx-background-color: #F7F7F7; + +} + +.BouttonListeProfile{ + -fx-background-color: #ffffff; + +} + +/*****************************************/ +.context-menu { + -fx-skin: "com.sun.javafx.scene.control.skin.ContextMenuSkin"; + -fx-border-color: #d2d2d2; + + +} + +.menu-item { + -fx-background-color: transparent; + -fx-border-width: 0 0 1 0; + -fx-border-color: #ffffff #ffffff #d2d2d2 #ffffff; + -fx-font-size: 9px; + -fx-padding: 5px 30px; + } + +.menu-item:focused { + -fx-background-color:#EEEEEE; +} + +.menu-item:focused .label { + -fx-background-color:#EEEEEE; +} \ No newline at end of file diff --git a/src/main/resources/Public/CSS/StyleSheetPrint.css b/src/main/resources/Public/CSS/StyleSheetPrint.css new file mode 100644 index 0000000..d7c5ae8 --- /dev/null +++ b/src/main/resources/Public/CSS/StyleSheetPrint.css @@ -0,0 +1,47 @@ +/* + Created on : 08 mai. 2023, 13:28:01 + Author : Maher Ben Tili +*/ +/******************************************************************************* + * * + * TableView Print * * + * * + ******************************************************************************/ +.table-view { + -fx-border-color: #000000; + -fx-border-width: 0.5; +} + +.table-view .column-header{ + -fx-border-color: #000000; + -fx-border-width: 0 0.5 0.5 0; + -fx-font-family: "Arial"; + -fx-background-color: #ffffff; +} + +.table-view .table-column{ + -fx-font-family: "Arial"; + -fx-text-fill: black; + -fx-font-size: 7pt; + + -fx-border-color: #000000; + -fx-border-width: 0 0.5 0 0; +} + +.table-view .table-row-cell{ + -fx-border-color: #000000; + -fx-border-width: 0 0 0.5 0; +} + + + +/******************************************************************************* + * * + * GridPane (imprimer) * * + * * + ******************************************************************************/ + +.grid-pane-print{ + -fx-border-color:#000000; + +} \ No newline at end of file diff --git a/src/main/resources/Public/CSS/StyleSheetProfile.css b/src/main/resources/Public/CSS/StyleSheetProfile.css new file mode 100644 index 0000000..6319096 --- /dev/null +++ b/src/main/resources/Public/CSS/StyleSheetProfile.css @@ -0,0 +1,39 @@ +/* +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. +*/ +/* + Created on : 8 déc. 2014, 13:28:01 + Author : Maher +*/ + +.PaneProfilGauche{ + -fx-background-color: #373737; +} + +/**************************Button*********************************************/ +.buttonDecnx{ + -fx-background-color: transparent; +} + + + +.toolbar-button .arrow { + -fx-background-insets: 1 0 -1 0, 0; + -fx-background-color: -fx-mark-color, #FFFFFF; + -fx-padding: 0.25em; /* 3 */ + -fx-shape: "M 0 -3.5 v 7 l 4 -3.5 z"; +} + +.toolbar-button:hover .arrow { + -fx-background-insets: 1 0 -1 0, 0; + -fx-background-color: -fx-mark-highlight-color, -fx-mark-color; + -fx-padding: 0.25em; /* 3 */ + -fx-shape: "M 0 -3.5 v 7 l 4 -3.5 z"; +} + +.toolbar-button:openvertically .arrow { + -fx-padding: 0.166667em 0.333333em 0.166667em 0.333333em; /* 2 4 2 4 */ + -fx-shape: "M 0 0 h 7 l -3.5 4 z"; +} \ No newline at end of file diff --git a/src/main/resources/Public/Fonts/Raleway-Medium.ttf b/src/main/resources/Public/Fonts/Raleway-Medium.ttf new file mode 100644 index 0000000..127cdaa Binary files /dev/null and b/src/main/resources/Public/Fonts/Raleway-Medium.ttf differ diff --git a/src/main/resources/Public/Fonts/Raleway-SemiBold.ttf b/src/main/resources/Public/Fonts/Raleway-SemiBold.ttf new file mode 100644 index 0000000..64b54a7 Binary files /dev/null and b/src/main/resources/Public/Fonts/Raleway-SemiBold.ttf differ diff --git a/src/main/resources/Public/icon/Client.png b/src/main/resources/Public/icon/Client.png new file mode 100644 index 0000000..ce36bc1 Binary files /dev/null and b/src/main/resources/Public/icon/Client.png differ diff --git a/src/main/resources/Public/icon/IconUserBleu.png b/src/main/resources/Public/icon/IconUserBleu.png new file mode 100644 index 0000000..7471135 Binary files /dev/null and b/src/main/resources/Public/icon/IconUserBleu.png differ diff --git a/src/main/resources/Public/icon/ImageMessage.png b/src/main/resources/Public/icon/ImageMessage.png new file mode 100644 index 0000000..907f9dc Binary files /dev/null and b/src/main/resources/Public/icon/ImageMessage.png differ diff --git a/src/main/resources/Public/icon/ImageNotification.png b/src/main/resources/Public/icon/ImageNotification.png new file mode 100644 index 0000000..67e8307 Binary files /dev/null and b/src/main/resources/Public/icon/ImageNotification.png differ diff --git a/src/main/resources/Public/icon/Logo.png b/src/main/resources/Public/icon/Logo.png new file mode 100644 index 0000000..32a0ffd Binary files /dev/null and b/src/main/resources/Public/icon/Logo.png differ diff --git a/src/main/resources/Public/icon/NotifiMessa.png b/src/main/resources/Public/icon/NotifiMessa.png new file mode 100644 index 0000000..f0968d0 Binary files /dev/null and b/src/main/resources/Public/icon/NotifiMessa.png differ diff --git a/src/main/resources/Public/icon/Shopping.png b/src/main/resources/Public/icon/Shopping.png new file mode 100644 index 0000000..4e96a89 Binary files /dev/null and b/src/main/resources/Public/icon/Shopping.png differ diff --git a/src/main/resources/Public/icon/Stock.png b/src/main/resources/Public/icon/Stock.png new file mode 100644 index 0000000..87b419c Binary files /dev/null and b/src/main/resources/Public/icon/Stock.png differ diff --git a/src/main/resources/Public/icon/Usericon.png b/src/main/resources/Public/icon/Usericon.png new file mode 100644 index 0000000..5f9afd1 Binary files /dev/null and b/src/main/resources/Public/icon/Usericon.png differ diff --git a/src/main/resources/Public/icon/achat.png b/src/main/resources/Public/icon/achat.png new file mode 100644 index 0000000..fa6d377 Binary files /dev/null and b/src/main/resources/Public/icon/achat.png differ diff --git a/src/main/resources/Public/icon/cheque.png b/src/main/resources/Public/icon/cheque.png new file mode 100644 index 0000000..6de6e7c Binary files /dev/null and b/src/main/resources/Public/icon/cheque.png differ diff --git a/src/main/resources/Public/icon/client_ajouter.png b/src/main/resources/Public/icon/client_ajouter.png new file mode 100644 index 0000000..93d20b0 Binary files /dev/null and b/src/main/resources/Public/icon/client_ajouter.png differ diff --git a/src/main/resources/Public/icon/client_detail.png b/src/main/resources/Public/icon/client_detail.png new file mode 100644 index 0000000..e351502 Binary files /dev/null and b/src/main/resources/Public/icon/client_detail.png differ diff --git a/src/main/resources/Public/icon/client_fidele.png b/src/main/resources/Public/icon/client_fidele.png new file mode 100644 index 0000000..ef69d64 Binary files /dev/null and b/src/main/resources/Public/icon/client_fidele.png differ diff --git a/src/main/resources/Public/icon/client_retard.png b/src/main/resources/Public/icon/client_retard.png new file mode 100644 index 0000000..719611a Binary files /dev/null and b/src/main/resources/Public/icon/client_retard.png differ diff --git a/src/main/resources/Public/icon/dashboard.png b/src/main/resources/Public/icon/dashboard.png new file mode 100644 index 0000000..bf2b7ab Binary files /dev/null and b/src/main/resources/Public/icon/dashboard.png differ diff --git a/src/main/resources/Public/icon/detailbutton.png b/src/main/resources/Public/icon/detailbutton.png new file mode 100644 index 0000000..cf28e0f Binary files /dev/null and b/src/main/resources/Public/icon/detailbutton.png differ diff --git a/src/main/resources/Public/icon/dialog_error.png b/src/main/resources/Public/icon/dialog_error.png new file mode 100644 index 0000000..ba06bec Binary files /dev/null and b/src/main/resources/Public/icon/dialog_error.png differ diff --git a/src/main/resources/Public/icon/dialog_notification.png b/src/main/resources/Public/icon/dialog_notification.png new file mode 100644 index 0000000..54ba901 Binary files /dev/null and b/src/main/resources/Public/icon/dialog_notification.png differ diff --git a/src/main/resources/Public/icon/dialoginform.png b/src/main/resources/Public/icon/dialoginform.png new file mode 100644 index 0000000..ed89dfd Binary files /dev/null and b/src/main/resources/Public/icon/dialoginform.png differ diff --git a/src/main/resources/Public/icon/entropot_sortie72.png b/src/main/resources/Public/icon/entropot_sortie72.png new file mode 100644 index 0000000..2f109cd Binary files /dev/null and b/src/main/resources/Public/icon/entropot_sortie72.png differ diff --git a/src/main/resources/Public/icon/glyphicon-lock.png b/src/main/resources/Public/icon/glyphicon-lock.png new file mode 100644 index 0000000..cf972bd Binary files /dev/null and b/src/main/resources/Public/icon/glyphicon-lock.png differ diff --git a/src/main/resources/Public/icon/glyphicon-user.png b/src/main/resources/Public/icon/glyphicon-user.png new file mode 100644 index 0000000..e4b6d00 Binary files /dev/null and b/src/main/resources/Public/icon/glyphicon-user.png differ diff --git a/src/main/resources/Public/icon/icon-excel.png b/src/main/resources/Public/icon/icon-excel.png new file mode 100644 index 0000000..165f611 Binary files /dev/null and b/src/main/resources/Public/icon/icon-excel.png differ diff --git a/src/main/resources/Public/icon/icon-pdf.png b/src/main/resources/Public/icon/icon-pdf.png new file mode 100644 index 0000000..049a587 Binary files /dev/null and b/src/main/resources/Public/icon/icon-pdf.png differ diff --git a/src/main/resources/Public/icon/icon-print.png b/src/main/resources/Public/icon/icon-print.png new file mode 100644 index 0000000..34e57c3 Binary files /dev/null and b/src/main/resources/Public/icon/icon-print.png differ diff --git a/src/main/resources/Public/icon/icon-relogin.png b/src/main/resources/Public/icon/icon-relogin.png new file mode 100644 index 0000000..3258f3d Binary files /dev/null and b/src/main/resources/Public/icon/icon-relogin.png differ diff --git a/src/main/resources/Public/icon/icon-success.png b/src/main/resources/Public/icon/icon-success.png new file mode 100644 index 0000000..41b9f18 Binary files /dev/null and b/src/main/resources/Public/icon/icon-success.png differ diff --git a/src/main/resources/Public/icon/iconNotification.png b/src/main/resources/Public/icon/iconNotification.png new file mode 100644 index 0000000..55b4608 Binary files /dev/null and b/src/main/resources/Public/icon/iconNotification.png differ diff --git a/src/main/resources/Public/icon/iconadd.png b/src/main/resources/Public/icon/iconadd.png new file mode 100644 index 0000000..30ce22b Binary files /dev/null and b/src/main/resources/Public/icon/iconadd.png differ diff --git a/src/main/resources/Public/icon/iconaffecter.png b/src/main/resources/Public/icon/iconaffecter.png new file mode 100644 index 0000000..b1f156a Binary files /dev/null and b/src/main/resources/Public/icon/iconaffecter.png differ diff --git a/src/main/resources/Public/icon/iconalert.png b/src/main/resources/Public/icon/iconalert.png new file mode 100644 index 0000000..9641d39 Binary files /dev/null and b/src/main/resources/Public/icon/iconalert.png differ diff --git a/src/main/resources/Public/icon/icondelete.png b/src/main/resources/Public/icon/icondelete.png new file mode 100644 index 0000000..b6beb25 Binary files /dev/null and b/src/main/resources/Public/icon/icondelete.png differ diff --git a/src/main/resources/Public/icon/iconedit.png b/src/main/resources/Public/icon/iconedit.png new file mode 100644 index 0000000..10416c5 Binary files /dev/null and b/src/main/resources/Public/icon/iconedit.png differ diff --git a/src/main/resources/Public/icon/iconsave.png b/src/main/resources/Public/icon/iconsave.png new file mode 100644 index 0000000..140e2af Binary files /dev/null and b/src/main/resources/Public/icon/iconsave.png differ diff --git a/src/main/resources/Public/icon/logo1.png b/src/main/resources/Public/icon/logo1.png new file mode 100644 index 0000000..d96c81a Binary files /dev/null and b/src/main/resources/Public/icon/logo1.png differ diff --git a/src/main/resources/Public/icon/outil.png b/src/main/resources/Public/icon/outil.png new file mode 100644 index 0000000..59ae72f Binary files /dev/null and b/src/main/resources/Public/icon/outil.png differ diff --git a/src/main/resources/Public/icon/product.png b/src/main/resources/Public/icon/product.png new file mode 100644 index 0000000..b149650 Binary files /dev/null and b/src/main/resources/Public/icon/product.png differ diff --git a/src/main/resources/Public/icon/profiluser.jpg b/src/main/resources/Public/icon/profiluser.jpg new file mode 100644 index 0000000..a85318a Binary files /dev/null and b/src/main/resources/Public/icon/profiluser.jpg differ diff --git a/src/main/resources/Public/icon/search.png b/src/main/resources/Public/icon/search.png new file mode 100644 index 0000000..858bdc3 Binary files /dev/null and b/src/main/resources/Public/icon/search.png differ diff --git a/src/main/resources/Public/icon/successfully.png b/src/main/resources/Public/icon/successfully.png new file mode 100644 index 0000000..0ef8fa9 Binary files /dev/null and b/src/main/resources/Public/icon/successfully.png differ diff --git a/src/main/resources/Public/icon/uses.png b/src/main/resources/Public/icon/uses.png new file mode 100644 index 0000000..3d5c34c Binary files /dev/null and b/src/main/resources/Public/icon/uses.png differ diff --git a/src/main/resources/Public/icon/vente.png b/src/main/resources/Public/icon/vente.png new file mode 100644 index 0000000..c92608c Binary files /dev/null and b/src/main/resources/Public/icon/vente.png differ diff --git a/src/main/resources/Public/icon/vente_2.png b/src/main/resources/Public/icon/vente_2.png new file mode 100644 index 0000000..15bc726 Binary files /dev/null and b/src/main/resources/Public/icon/vente_2.png differ diff --git a/src/main/resources/Views/Authentification.fxml b/src/main/resources/Views/Authentification.fxml new file mode 100644 index 0000000..39329b5 --- /dev/null +++ b/src/main/resources/Views/Authentification.fxml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/BonLivraisonClt/BonLivraisonCltAjouter.fxml b/src/main/resources/Views/BonLivraisonClt/BonLivraisonCltAjouter.fxml new file mode 100644 index 0000000..86f23a8 --- /dev/null +++ b/src/main/resources/Views/BonLivraisonClt/BonLivraisonCltAjouter.fxml @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/Client/GestionClientPersonne.fxml b/src/main/resources/Views/Client/GestionClientPersonne.fxml new file mode 100644 index 0000000..f4eaa44 --- /dev/null +++ b/src/main/resources/Views/Client/GestionClientPersonne.fxml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/Client/MenuClient.fxml b/src/main/resources/Views/Client/MenuClient.fxml new file mode 100644 index 0000000..1abc18f --- /dev/null +++ b/src/main/resources/Views/Client/MenuClient.fxml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/Client/RechercherClientEntreprise.fxml b/src/main/resources/Views/Client/RechercherClientEntreprise.fxml new file mode 100644 index 0000000..57d9114 --- /dev/null +++ b/src/main/resources/Views/Client/RechercherClientEntreprise.fxml @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/Client/RechercherClientPersonne.fxml b/src/main/resources/Views/Client/RechercherClientPersonne.fxml new file mode 100644 index 0000000..fd4ba53 --- /dev/null +++ b/src/main/resources/Views/Client/RechercherClientPersonne.fxml @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/CommandeClt/CommandeCltDetail.fxml b/src/main/resources/Views/CommandeClt/CommandeCltDetail.fxml new file mode 100644 index 0000000..638d1ed --- /dev/null +++ b/src/main/resources/Views/CommandeClt/CommandeCltDetail.fxml @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/Devis/DevisCltGestion.fxml b/src/main/resources/Views/Devis/DevisCltGestion.fxml new file mode 100644 index 0000000..4ae4653 --- /dev/null +++ b/src/main/resources/Views/Devis/DevisCltGestion.fxml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/FactureClt/FactureCltAjouter.fxml b/src/main/resources/Views/FactureClt/FactureCltAjouter.fxml new file mode 100644 index 0000000..b8a96d2 --- /dev/null +++ b/src/main/resources/Views/FactureClt/FactureCltAjouter.fxml @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml b/src/main/resources/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml new file mode 100644 index 0000000..25980df --- /dev/null +++ b/src/main/resources/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/Views/Reglement/ReglementAjouter1.fxml b/src/main/resources/Views/Reglement/ReglementAjouter1.fxml new file mode 100644 index 0000000..6372be9 --- /dev/null +++ b/src/main/resources/Views/Reglement/ReglementAjouter1.fxml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/Client/GestionClientPersonne.fxml b/target/classes/Views/Client/GestionClientPersonne.fxml new file mode 100644 index 0000000..f4eaa44 --- /dev/null +++ b/target/classes/Views/Client/GestionClientPersonne.fxml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/Client/MenuClient.fxml b/target/classes/Views/Client/MenuClient.fxml new file mode 100644 index 0000000..1abc18f --- /dev/null +++ b/target/classes/Views/Client/MenuClient.fxml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/Client/RechercherClientEntreprise.fxml b/target/classes/Views/Client/RechercherClientEntreprise.fxml new file mode 100644 index 0000000..57d9114 --- /dev/null +++ b/target/classes/Views/Client/RechercherClientEntreprise.fxml @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/Client/RechercherClientPersonne.fxml b/target/classes/Views/Client/RechercherClientPersonne.fxml new file mode 100644 index 0000000..fd4ba53 --- /dev/null +++ b/target/classes/Views/Client/RechercherClientPersonne.fxml @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/CommandeClt/CommandeCltDetail.fxml b/target/classes/Views/CommandeClt/CommandeCltDetail.fxml new file mode 100644 index 0000000..638d1ed --- /dev/null +++ b/target/classes/Views/CommandeClt/CommandeCltDetail.fxml @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/Devis/DevisCltGestion.fxml b/target/classes/Views/Devis/DevisCltGestion.fxml new file mode 100644 index 0000000..4ae4653 --- /dev/null +++ b/target/classes/Views/Devis/DevisCltGestion.fxml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/FactureClt/FactureCltAjouter.fxml b/target/classes/Views/FactureClt/FactureCltAjouter.fxml new file mode 100644 index 0000000..b8a96d2 --- /dev/null +++ b/target/classes/Views/FactureClt/FactureCltAjouter.fxml @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml b/target/classes/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml new file mode 100644 index 0000000..25980df --- /dev/null +++ b/target/classes/Views/FactureFrs/FactureFrsBonReceptionAjouter.fxml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/target/classes/Views/Reglement/ReglementAjouter1.fxml b/target/classes/Views/Reglement/ReglementAjouter1.fxml new file mode 100644 index 0000000..6372be9 --- /dev/null +++ b/target/classes/Views/Reglement/ReglementAjouter1.fxml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +