Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package miniprojet.main;
- import javax.swing.*;
- import javax.swing.table.AbstractTableModel;
- import javax.swing.table.TableModel;
- import miniprojet.stock.Médicament;
- import miniprojet.vente.Client;
- import miniprojet.vente.Facture;
- import miniprojet.vente.GestionnaireVenteControleur;
- import miniprojet.vente.Vendeur;
- import miniprojet.vente.Vente;
- import java.awt.event.ActionListener;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.awt.event.ActionEvent;
- import java.awt.FlowLayout;
- public class CréationInterface {
- private static GestionnaireVenteControleur ventesControleur = new GestionnaireVenteControleur();
- public static void main(String[] args) {
- Vendeur vendeurExemple = new Vendeur("Keanu","Reeves");
- Client clientExemple = new Client("Arnold", "Schwarzenegger",1213);
- Facture factureExemple = new Facture(12, LocalDate.now());
- Médicament medocExemple = new Médicament("Doliprane", 5, "Placebo");
- Médicament medocExemple2 = new Médicament("Paracetamol", 7, "Antipyrétique");
- ArrayList<Médicament> medocsVenteExemple = new ArrayList<Médicament>();
- medocsVenteExemple.add(medocExemple);
- medocsVenteExemple.add(medocExemple2);
- Vente venteExemple = new Vente(vendeurExemple, clientExemple, factureExemple, medocsVenteExemple);
- ventesControleur.addVente(venteExemple);
- JFrame f = new JFrame("Gestion de pharmacie");
- // On supprime les ventes datant de plus de un an
- LocalDate oneYearAgo = LocalDate.now().minusYears(1);
- ventesControleur.getVentes().forEach(vente -> {
- if (vente.getDate().isBefore(oneYearAgo)) {
- ventesControleur.delVente(vente);
- }
- });
- createMenuFrame(f);
- }
- public static void createMenuFrame(JFrame frame) {
- // Nettoyage et paramétrage de la frame :
- frame.getContentPane().removeAll();
- frame.getContentPane().repaint();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(350, 70);
- frame.setLocation(300,200);
- frame.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
- JButton btnStock = new JButton("Stock");
- btnStock.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createStockFrame(frame);
- }
- });
- frame.getContentPane().add(btnStock);
- JButton btnVente = new JButton("Vente");
- btnVente.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createVentesFrame(frame);
- }
- });
- frame.getContentPane().add(btnVente);
- JButton btnRecettes = new JButton("Recettes");
- btnRecettes.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createRecettesFrame(frame);
- }
- });
- frame.getContentPane().add(btnRecettes);
- frame.setVisible(true);
- frame.setResizable(false);
- }
- public static void createStockFrame(JFrame frame) {
- // On nettoie la frame et on met ses paramètres
- frame.getContentPane().removeAll();
- frame.getContentPane().repaint();
- frame.setDefaultCloseOperation(JFrameus.EXIT_ON_CLOSE);
- frame.setSize(350, 70); // @Matthieu tu peux changer cette taille si elle t'arrange pas
- frame.setLocation(300,200);
- // TODO : Créer le stock. Il doit y avoir un bouton pour ajouter un médicament ainsi qu'une liste des médicaments (juste le nom je pense) et leur quantité.
- // Quand on clique sur un médicament de la liste, petit pop-up s'ouvre où : on doit pouvoir voir ses infos ainsi que changer sa quantité ou le supprimer
- // Regarde sur Smited, j'ai mis un lien où il y a des exemples ultra complets avec tout ce qu'on veut faire (ou très proche)
- // Bouton pour revenir au menu principal
- JButton returnButton = new JButton("Retour");
- returnButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createMenuFrame(frame);
- }
- });
- frame.getContentPane().add(returnButton);
- // Affichage de la frame
- // @Matthieu tu peux utiliser ceci si jamais tu arrives pas à trouver une taille qui te convient, mais regarde les exemples sur discord : frame.pack();
- frame.setVisible(true);
- frame.setResizable(false);
- }
- public static void createVentesFrame(JFrame frame) {
- // On nettoie la frame et on met ses paramètres
- frame.getContentPane().removeAll();
- frame.getContentPane().repaint();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(350, 70);
- frame.setLocation(300,200);
- // Bouton pour ajouter une vente
- JButton btnAddVente = new JButton("Ajouter une vente");
- btnAddVente.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createAddVenteFrame();
- }
- });
- frame.getContentPane().add(btnAddVente);
- // Bouton pour revenir au menu principal
- JButton returnButton = new JButton("Retour");
- returnButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createMenuFrame(frame);
- }
- });
- frame.getContentPane().add(returnButton);
- // Affichage des ventes
- ArrayList<Vente> venteList = ventesControleur.getVentes();
- final String[] entetes = {"Nom du client","Prénom du client", "Nom du vendeur", "Prénom du vendeur", "Date", "Prix"};
- TableModel dataModel = new AbstractTableModel() {
- public int getColumnCount() { return entetes.length; }
- public int getRowCount() { return venteList.size();}
- public String getColumnName(int col) {return entetes[col];}
- public Object getValueAt(int row, int col) {
- switch (col) {
- case 0:
- return venteList.get(row).getClient().getName();
- case 1:
- return venteList.get(row).getClient().getSurname();
- case 2:
- return venteList.get(row).getVendeur().getName();
- case 3:
- return venteList.get(row).getVendeur().getSurname();
- case 4:
- return venteList.get(row).getDate();
- case 5:
- return venteList.get(row).getMoney();
- default:
- return null;
- }
- }
- };
- JTable table = new JTable(dataModel);
- frame.getContentPane().add(new JScrollPane(table));
- // Affichage de la frame
- frame.pack();
- frame.setVisible(true);
- frame.setResizable(false);
- }
- public static void createAddVenteFrame() {
- // On crée une nouvelle frame
- JFrame fAddVente = new JFrame("Ajouter une vente");
- fAddVente.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
- fAddVente.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- fAddVente.setSize(400, 250);
- fAddVente.setLocation(300,400);
- // Le forumlaire
- JPanel p = new JPanel(new SpringLayout());
- JLabel lblVendeurName = new JLabel("Prénom du vendeur : ", JLabel.TRAILING);
- p.add(lblVendeurName);
- JTextField txtVendeurName = new JTextField(10);
- lblVendeurName.setLabelFor(txtVendeurName);
- p.add(txtVendeurName);
- JLabel lblVendeurSurname = new JLabel("Nom du vendeur : ", JLabel.TRAILING);
- p.add(lblVendeurSurname);
- JTextField txtVendeurSurname = new JTextField(10);
- lblVendeurSurname.setLabelFor(txtVendeurSurname);
- p.add(txtVendeurSurname);
- JLabel lblClientName = new JLabel("Prénom du client : ", JLabel.TRAILING);
- p.add(lblClientName);
- JTextField txtClientName = new JTextField(10);
- lblClientName.setLabelFor(txtClientName);
- p.add(txtClientName);
- JLabel lblClientSurname = new JLabel("Nom du client : ", JLabel.TRAILING);
- p.add(lblClientSurname);
- JTextField txtClientSurname = new JTextField(10);
- lblClientSurname.setLabelFor(txtClientSurname);
- p.add(txtClientSurname);
- JLabel lblClientSecurityNumber = new JLabel("Numéro de sécurité sociale du client : ", JLabel.TRAILING);
- p.add(lblClientSecurityNumber);
- JTextField txtClientSecurityNumber = new JTextField(10);
- lblClientSecurityNumber.setLabelFor(txtClientSecurityNumber);
- p.add(txtClientSecurityNumber);
- SpringUtilities.makeCompactGrid(p, 5, 2, 6, 6, 6, 6); // Affichage du formulaire
- fAddVente.getContentPane().add(p);
- // Boutton pour enregistrer la vente (et fermer la frame)
- JButton confirmButton = new JButton("Allez choisir les médicaments");
- confirmButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String vendeurName = txtVendeurName.getText();
- String vendeurSurname = txtVendeurSurname.getText();
- String clientSurname = txtClientSurname.getText();
- String clientName = txtClientName.getText();
- int socialSecurityNumber = Integer.parseInt(txtClientSecurityNumber.getText());
- chooseMedicaments(vendeurName, vendeurSurname, clientName, clientSurname, socialSecurityNumber);
- fAddVente.dispose();
- }
- });
- fAddVente.getContentPane().add(confirmButton);
- fAddVente.setVisible(true);
- fAddVente.setResizable(false);
- }
- public static void chooseMedicaments(String vendeurName, String vendeurSurname, String clientName, String clientSurname, int socialSecurityNumber) {
- // On crée une nouvelle frame
- JFrame fChooseMedicaments = new JFrame("Choisir les médicaments");
- fChooseMedicaments.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
- fChooseMedicaments.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- fChooseMedicaments.setSize(400, 300);
- fChooseMedicaments.setLocation(300,400);
- // TODO : Afficher une version légèrement modifiée du stock : quand on clique sur un medoc un pop-up s'ouvre pour demander la quantité qu'on en veut (et affiche la quantité actuellement disponible).
- // Une fois la quantité entrée et le bouton "Valider" cliqué, si la quantité demandée est plus petite que la quantité disponible, le petit pop-up se ferme et l'utilisateur peut continuer à choisir des medocs à ajouter.
- // A chaque fois qu'un médicament est ajouté avec sa quantité, fait un money += medoc.getPrix()*quantité pour que "money" soit généré automatiquement.
- // Ceci est temporaire, tu fais comme tu veux mais à la fin on veut money et une ArrayList des medocs.
- ArrayList<Médicament> medocList = null;
- ArrayList<Integer> quantities = null;
- Float money = null;
- JButton confirmButton = new JButton("Confirmer");
- confirmButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- ventesControleur.addVente(new Vente(new Vendeur(vendeurName, vendeurSurname), new Client(clientName, clientSurname, socialSecurityNumber), new Facture(money, LocalDate.now()), medocList));
- fChooseMedicaments.dispose();
- }
- });
- fChooseMedicaments.getContentPane().add(confirmButton);
- fChooseMedicaments.setVisible(true);
- fChooseMedicaments.setResizable(false);
- }
- public static void createRecettesFrame(JFrame frame) {
- // On nettoie la frame et on met ses paramètres
- frame.getContentPane().removeAll();
- frame.getContentPane().repaint();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(425, 175);
- frame.setLocation(300,200);
- // Explication
- JLabel lblExplciation = new JLabel("Veuillez entrez ci-dessous les critères qui définiront la recette :");
- frame.getContentPane().add(lblExplciation);
- // Sélection de jour/semaine/mois
- JLabel lblJour = new JLabel("Jour :");
- frame.getContentPane().add(lblJour);
- JRadioButton radioButton = new JRadioButton("");
- frame.getContentPane().add(radioButton);
- JLabel lblSemaine = new JLabel("Semaine :");
- frame.getContentPane().add(lblSemaine);
- JRadioButton radioButton_1 = new JRadioButton("");
- frame.getContentPane().add(radioButton_1);
- JLabel lblMois = new JLabel("Mois :");
- frame.getContentPane().add(lblMois);
- JRadioButton radioButton_2 = new JRadioButton("");
- frame.getContentPane().add(radioButton_2);
- // On s'assure quel seul un peut être sélectionné à la fois
- ButtonGroup group = new ButtonGroup();
- group.add(radioButton);
- group.add(radioButton_1);
- group.add(radioButton_2);
- // Sélection de client, vendeur, type ou rien
- JLabel lblTxtField = new JLabel("Veuillez entrez la spécificité :");
- frame.getContentPane().add(lblTxtField);
- JTextField txtField = new JTextField(10);
- frame.getContentPane().add(txtField);
- JLabel lblRien = new JLabel("Aucune restriction :");
- frame.getContentPane().add(lblRien);
- JRadioButton radioButton_3 = new JRadioButton("");
- frame.getContentPane().add(radioButton_3);
- JLabel lblClient = new JLabel("Client :");
- frame.getContentPane().add(lblClient);
- JRadioButton radioButton_4 = new JRadioButton("");
- frame.getContentPane().add(radioButton_4);
- JLabel lblVendeur = new JLabel("Vendeur :");
- frame.getContentPane().add(lblVendeur);
- JRadioButton radioButton_5 = new JRadioButton("");
- radioButton_5.setBounds(162, 224, 109, 23);
- frame.getContentPane().add(radioButton_5);
- JLabel lblType = new JLabel("Type :");
- frame.getContentPane().add(lblType);
- JRadioButton radioButton_6 = new JRadioButton("");
- frame.getContentPane().add(radioButton_6);
- // On s'assure quel seul un peut être sélectionné à la fois
- ButtonGroup group2 = new ButtonGroup();
- group2.add(radioButton_3);
- group2.add(radioButton_4);
- group2.add(radioButton_5);
- group2.add(radioButton_6);
- JButton confirmButton = new JButton("Afficher");
- confirmButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- // Gestion du jour, semaine, mois :
- LocalDate todaysDate = LocalDate.now(); // Date d'aurjoud'hui
- // Date depuis laquelle nous souhaitons les recettes, initiliasée à todaysDate - 1 au cas où l'utilisateur n'aurait sélectionné aucun boutton
- LocalDate date = LocalDate.now().minusDays(1);
- if (radioButton_1.isSelected()) { // Semaine
- date = LocalDate.now().minusWeeks(1);
- } else if (radioButton_2.isSelected()) { // Mois
- date = LocalDate.now().minusMonths(1);
- }
- // Gestion de Client, Vendeur, Type ou rien
- String client = null;
- String vendeur = null;
- String type = null;
- if (radioButton_4.isSelected()) { // Client
- client = txtField.getText();
- } else if (radioButton_5.isSelected()) { // Vendeur
- vendeur = txtField.getText();
- } else if (radioButton_6.isSelected()) { // Type
- type = txtField.getText();
- }
- createConsultationRecetteFrame(todaysDate, date, client, vendeur, type);
- }
- });
- frame.getContentPane().add(confirmButton);
- // Bouton pour revenir au menu principal
- JButton returnButton = new JButton("Retour");
- returnButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- createMenuFrame(frame);
- }
- });
- frame.getContentPane().add(returnButton);
- // TODO : Ajouter la liste des ventes. On doit pouvoir cliquer sur une vente pour afficher les infos dessus (petit pop-up)
- // Affichage de la frame
- frame.setVisible(true);
- frame.setResizable(false);
- }
- public static void createConsultationRecetteFrame(LocalDate today, LocalDate date, String client, String vendeur, String type) {
- JFrame fAfficherRecette = new JFrame("Recette selon les critères entrés");
- fAfficherRecette.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
- fAfficherRecette.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- fAfficherRecette.setSize(400, 300);
- fAfficherRecette.setLocation(725, 200);
- Float money = ventesControleur.getRecettes(date, today, client, vendeur, type);
- JLabel lblJour = new JLabel("Du " + date.format(DateTimeFormatter.ofPattern("dd MMM yyyy")) + " au " + today.format(DateTimeFormatter.ofPattern("dd MMM yyyy")) + ", l'argent collecté selon les critères donnés est de : " + money + " francs.");
- fAfficherRecette.getContentPane().add(lblJour);
- fAfficherRecette.pack();
- fAfficherRecette.setVisible(true);
- fAfficherRecette.setResizable(false);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement