Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.28 KB | None | 0 0
  1. package miniprojet.main;
  2. import javax.swing.*;
  3. import javax.swing.table.AbstractTableModel;
  4. import javax.swing.table.TableModel;
  5.  
  6. import miniprojet.stock.Médicament;
  7. import miniprojet.vente.Client;
  8. import miniprojet.vente.Facture;
  9. import miniprojet.vente.GestionnaireVenteControleur;
  10. import miniprojet.vente.Vendeur;
  11. import miniprojet.vente.Vente;
  12.  
  13. import java.awt.event.ActionListener;
  14. import java.time.LocalDate;
  15. import java.time.format.DateTimeFormatter;
  16. import java.util.ArrayList;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.FlowLayout;
  19.  
  20.  
  21. public class CréationInterface {
  22. private static GestionnaireVenteControleur ventesControleur = new GestionnaireVenteControleur();
  23.  
  24. public static void main(String[] args) {
  25. Vendeur vendeurExemple = new Vendeur("Keanu","Reeves");
  26. Client clientExemple = new Client("Arnold", "Schwarzenegger",1213);
  27. Facture factureExemple = new Facture(12, LocalDate.now());
  28. Médicament medocExemple = new Médicament("Doliprane", 5, "Placebo");
  29. Médicament medocExemple2 = new Médicament("Paracetamol", 7, "Antipyrétique");
  30. ArrayList<Médicament> medocsVenteExemple = new ArrayList<Médicament>();
  31. medocsVenteExemple.add(medocExemple);
  32. medocsVenteExemple.add(medocExemple2);
  33. Vente venteExemple = new Vente(vendeurExemple, clientExemple, factureExemple, medocsVenteExemple);
  34.  
  35. ventesControleur.addVente(venteExemple);
  36.  
  37. JFrame f = new JFrame("Gestion de pharmacie");
  38.  
  39. // On supprime les ventes datant de plus de un an
  40. LocalDate oneYearAgo = LocalDate.now().minusYears(1);
  41. ventesControleur.getVentes().forEach(vente -> {
  42. if (vente.getDate().isBefore(oneYearAgo)) {
  43. ventesControleur.delVente(vente);
  44. }
  45. });
  46.  
  47. createMenuFrame(f);
  48. }
  49.  
  50. public static void createMenuFrame(JFrame frame) {
  51. // Nettoyage et paramétrage de la frame :
  52. frame.getContentPane().removeAll();
  53. frame.getContentPane().repaint();
  54. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  55. frame.setSize(350, 70);
  56. frame.setLocation(300,200);
  57. frame.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  58.  
  59. JButton btnStock = new JButton("Stock");
  60. btnStock.addActionListener(new ActionListener() {
  61. public void actionPerformed(ActionEvent e) {
  62. createStockFrame(frame);
  63. }
  64. });
  65. frame.getContentPane().add(btnStock);
  66.  
  67. JButton btnVente = new JButton("Vente");
  68. btnVente.addActionListener(new ActionListener() {
  69. public void actionPerformed(ActionEvent e) {
  70. createVentesFrame(frame);
  71. }
  72. });
  73. frame.getContentPane().add(btnVente);
  74.  
  75. JButton btnRecettes = new JButton("Recettes");
  76. btnRecettes.addActionListener(new ActionListener() {
  77. public void actionPerformed(ActionEvent e) {
  78. createRecettesFrame(frame);
  79. }
  80. });
  81. frame.getContentPane().add(btnRecettes);
  82.  
  83. frame.setVisible(true);
  84. frame.setResizable(false);
  85. }
  86.  
  87. public static void createStockFrame(JFrame frame) {
  88. // On nettoie la frame et on met ses paramètres
  89. frame.getContentPane().removeAll();
  90. frame.getContentPane().repaint();
  91. frame.setDefaultCloseOperation(JFrameus.EXIT_ON_CLOSE);
  92. frame.setSize(350, 70); // @Matthieu tu peux changer cette taille si elle t'arrange pas
  93. frame.setLocation(300,200);
  94.  
  95. // 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é.
  96. // 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
  97. // 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)
  98.  
  99. // Bouton pour revenir au menu principal
  100. JButton returnButton = new JButton("Retour");
  101. returnButton.addActionListener(new ActionListener() {
  102. public void actionPerformed(ActionEvent e) {
  103. createMenuFrame(frame);
  104. }
  105. });
  106. frame.getContentPane().add(returnButton);
  107.  
  108. // Affichage de la frame
  109. // @Matthieu tu peux utiliser ceci si jamais tu arrives pas à trouver une taille qui te convient, mais regarde les exemples sur discord : frame.pack();
  110. frame.setVisible(true);
  111. frame.setResizable(false);
  112. }
  113.  
  114. public static void createVentesFrame(JFrame frame) {
  115. // On nettoie la frame et on met ses paramètres
  116. frame.getContentPane().removeAll();
  117. frame.getContentPane().repaint();
  118. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  119. frame.setSize(350, 70);
  120. frame.setLocation(300,200);
  121.  
  122. // Bouton pour ajouter une vente
  123. JButton btnAddVente = new JButton("Ajouter une vente");
  124. btnAddVente.addActionListener(new ActionListener() {
  125. public void actionPerformed(ActionEvent e) {
  126. createAddVenteFrame();
  127. }
  128. });
  129. frame.getContentPane().add(btnAddVente);
  130.  
  131. // Bouton pour revenir au menu principal
  132. JButton returnButton = new JButton("Retour");
  133. returnButton.addActionListener(new ActionListener() {
  134. public void actionPerformed(ActionEvent e) {
  135. createMenuFrame(frame);
  136. }
  137. });
  138. frame.getContentPane().add(returnButton);
  139.  
  140. // Affichage des ventes
  141. ArrayList<Vente> venteList = ventesControleur.getVentes();
  142. final String[] entetes = {"Nom du client","Prénom du client", "Nom du vendeur", "Prénom du vendeur", "Date", "Prix"};
  143.  
  144. TableModel dataModel = new AbstractTableModel() {
  145. public int getColumnCount() { return entetes.length; }
  146. public int getRowCount() { return venteList.size();}
  147. public String getColumnName(int col) {return entetes[col];}
  148. public Object getValueAt(int row, int col) {
  149. switch (col) {
  150. case 0:
  151. return venteList.get(row).getClient().getName();
  152. case 1:
  153. return venteList.get(row).getClient().getSurname();
  154. case 2:
  155. return venteList.get(row).getVendeur().getName();
  156. case 3:
  157. return venteList.get(row).getVendeur().getSurname();
  158. case 4:
  159. return venteList.get(row).getDate();
  160. case 5:
  161. return venteList.get(row).getMoney();
  162. default:
  163. return null;
  164. }
  165. }
  166. };
  167.  
  168. JTable table = new JTable(dataModel);
  169. frame.getContentPane().add(new JScrollPane(table));
  170.  
  171. // Affichage de la frame
  172. frame.pack();
  173. frame.setVisible(true);
  174. frame.setResizable(false);
  175. }
  176.  
  177. public static void createAddVenteFrame() {
  178. // On crée une nouvelle frame
  179. JFrame fAddVente = new JFrame("Ajouter une vente");
  180. fAddVente.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  181. fAddVente.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  182. fAddVente.setSize(400, 250);
  183. fAddVente.setLocation(300,400);
  184.  
  185. // Le forumlaire
  186. JPanel p = new JPanel(new SpringLayout());
  187.  
  188. JLabel lblVendeurName = new JLabel("Prénom du vendeur : ", JLabel.TRAILING);
  189. p.add(lblVendeurName);
  190. JTextField txtVendeurName = new JTextField(10);
  191. lblVendeurName.setLabelFor(txtVendeurName);
  192. p.add(txtVendeurName);
  193.  
  194. JLabel lblVendeurSurname = new JLabel("Nom du vendeur : ", JLabel.TRAILING);
  195. p.add(lblVendeurSurname);
  196. JTextField txtVendeurSurname = new JTextField(10);
  197. lblVendeurSurname.setLabelFor(txtVendeurSurname);
  198. p.add(txtVendeurSurname);
  199.  
  200. JLabel lblClientName = new JLabel("Prénom du client : ", JLabel.TRAILING);
  201. p.add(lblClientName);
  202. JTextField txtClientName = new JTextField(10);
  203. lblClientName.setLabelFor(txtClientName);
  204. p.add(txtClientName);
  205.  
  206. JLabel lblClientSurname = new JLabel("Nom du client : ", JLabel.TRAILING);
  207. p.add(lblClientSurname);
  208. JTextField txtClientSurname = new JTextField(10);
  209. lblClientSurname.setLabelFor(txtClientSurname);
  210. p.add(txtClientSurname);
  211.  
  212. JLabel lblClientSecurityNumber = new JLabel("Numéro de sécurité sociale du client : ", JLabel.TRAILING);
  213. p.add(lblClientSecurityNumber);
  214. JTextField txtClientSecurityNumber = new JTextField(10);
  215. lblClientSecurityNumber.setLabelFor(txtClientSecurityNumber);
  216. p.add(txtClientSecurityNumber);
  217.  
  218. SpringUtilities.makeCompactGrid(p, 5, 2, 6, 6, 6, 6); // Affichage du formulaire
  219. fAddVente.getContentPane().add(p);
  220.  
  221. // Boutton pour enregistrer la vente (et fermer la frame)
  222. JButton confirmButton = new JButton("Allez choisir les médicaments");
  223. confirmButton.addActionListener(new ActionListener() {
  224. public void actionPerformed(ActionEvent e) {
  225. String vendeurName = txtVendeurName.getText();
  226. String vendeurSurname = txtVendeurSurname.getText();
  227. String clientSurname = txtClientSurname.getText();
  228. String clientName = txtClientName.getText();
  229. int socialSecurityNumber = Integer.parseInt(txtClientSecurityNumber.getText());
  230.  
  231. chooseMedicaments(vendeurName, vendeurSurname, clientName, clientSurname, socialSecurityNumber);
  232.  
  233. fAddVente.dispose();
  234. }
  235. });
  236. fAddVente.getContentPane().add(confirmButton);
  237.  
  238. fAddVente.setVisible(true);
  239. fAddVente.setResizable(false);
  240.  
  241. }
  242.  
  243. public static void chooseMedicaments(String vendeurName, String vendeurSurname, String clientName, String clientSurname, int socialSecurityNumber) {
  244. // On crée une nouvelle frame
  245. JFrame fChooseMedicaments = new JFrame("Choisir les médicaments");
  246. fChooseMedicaments.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  247. fChooseMedicaments.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  248. fChooseMedicaments.setSize(400, 300);
  249. fChooseMedicaments.setLocation(300,400);
  250.  
  251.  
  252. // 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).
  253. // 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.
  254. // 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.
  255.  
  256. // Ceci est temporaire, tu fais comme tu veux mais à la fin on veut money et une ArrayList des medocs.
  257. ArrayList<Médicament> medocList = null;
  258. ArrayList<Integer> quantities = null;
  259. Float money = null;
  260.  
  261. JButton confirmButton = new JButton("Confirmer");
  262. confirmButton.addActionListener(new ActionListener() {
  263. public void actionPerformed(ActionEvent e) {
  264. ventesControleur.addVente(new Vente(new Vendeur(vendeurName, vendeurSurname), new Client(clientName, clientSurname, socialSecurityNumber), new Facture(money, LocalDate.now()), medocList));
  265. fChooseMedicaments.dispose();
  266. }
  267. });
  268. fChooseMedicaments.getContentPane().add(confirmButton);
  269.  
  270. fChooseMedicaments.setVisible(true);
  271. fChooseMedicaments.setResizable(false);
  272.  
  273. }
  274.  
  275. public static void createRecettesFrame(JFrame frame) {
  276. // On nettoie la frame et on met ses paramètres
  277. frame.getContentPane().removeAll();
  278. frame.getContentPane().repaint();
  279. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  280. frame.setSize(425, 175);
  281. frame.setLocation(300,200);
  282.  
  283. // Explication
  284. JLabel lblExplciation = new JLabel("Veuillez entrez ci-dessous les critères qui définiront la recette :");
  285. frame.getContentPane().add(lblExplciation);
  286.  
  287. // Sélection de jour/semaine/mois
  288. JLabel lblJour = new JLabel("Jour :");
  289. frame.getContentPane().add(lblJour);
  290.  
  291. JRadioButton radioButton = new JRadioButton("");
  292. frame.getContentPane().add(radioButton);
  293.  
  294. JLabel lblSemaine = new JLabel("Semaine :");
  295. frame.getContentPane().add(lblSemaine);
  296.  
  297. JRadioButton radioButton_1 = new JRadioButton("");
  298. frame.getContentPane().add(radioButton_1);
  299.  
  300. JLabel lblMois = new JLabel("Mois :");
  301. frame.getContentPane().add(lblMois);
  302.  
  303. JRadioButton radioButton_2 = new JRadioButton("");
  304. frame.getContentPane().add(radioButton_2);
  305.  
  306. // On s'assure quel seul un peut être sélectionné à la fois
  307. ButtonGroup group = new ButtonGroup();
  308. group.add(radioButton);
  309. group.add(radioButton_1);
  310. group.add(radioButton_2);
  311.  
  312. // Sélection de client, vendeur, type ou rien
  313. JLabel lblTxtField = new JLabel("Veuillez entrez la spécificité :");
  314. frame.getContentPane().add(lblTxtField);
  315.  
  316. JTextField txtField = new JTextField(10);
  317. frame.getContentPane().add(txtField);
  318.  
  319. JLabel lblRien = new JLabel("Aucune restriction :");
  320. frame.getContentPane().add(lblRien);
  321.  
  322. JRadioButton radioButton_3 = new JRadioButton("");
  323. frame.getContentPane().add(radioButton_3);
  324.  
  325. JLabel lblClient = new JLabel("Client :");
  326. frame.getContentPane().add(lblClient);
  327.  
  328. JRadioButton radioButton_4 = new JRadioButton("");
  329. frame.getContentPane().add(radioButton_4);
  330.  
  331. JLabel lblVendeur = new JLabel("Vendeur :");
  332. frame.getContentPane().add(lblVendeur);
  333.  
  334. JRadioButton radioButton_5 = new JRadioButton("");
  335. radioButton_5.setBounds(162, 224, 109, 23);
  336. frame.getContentPane().add(radioButton_5);
  337.  
  338. JLabel lblType = new JLabel("Type :");
  339. frame.getContentPane().add(lblType);
  340.  
  341. JRadioButton radioButton_6 = new JRadioButton("");
  342. frame.getContentPane().add(radioButton_6);
  343.  
  344. // On s'assure quel seul un peut être sélectionné à la fois
  345. ButtonGroup group2 = new ButtonGroup();
  346. group2.add(radioButton_3);
  347. group2.add(radioButton_4);
  348. group2.add(radioButton_5);
  349. group2.add(radioButton_6);
  350.  
  351. JButton confirmButton = new JButton("Afficher");
  352. confirmButton.addActionListener(new ActionListener() {
  353. public void actionPerformed(ActionEvent e) {
  354. // Gestion du jour, semaine, mois :
  355.  
  356. LocalDate todaysDate = LocalDate.now(); // Date d'aurjoud'hui
  357. // Date depuis laquelle nous souhaitons les recettes, initiliasée à todaysDate - 1 au cas où l'utilisateur n'aurait sélectionné aucun boutton
  358. LocalDate date = LocalDate.now().minusDays(1);
  359.  
  360. if (radioButton_1.isSelected()) { // Semaine
  361. date = LocalDate.now().minusWeeks(1);
  362. } else if (radioButton_2.isSelected()) { // Mois
  363. date = LocalDate.now().minusMonths(1);
  364. }
  365.  
  366. // Gestion de Client, Vendeur, Type ou rien
  367. String client = null;
  368. String vendeur = null;
  369. String type = null;
  370. if (radioButton_4.isSelected()) { // Client
  371. client = txtField.getText();
  372. } else if (radioButton_5.isSelected()) { // Vendeur
  373. vendeur = txtField.getText();
  374. } else if (radioButton_6.isSelected()) { // Type
  375. type = txtField.getText();
  376. }
  377.  
  378. createConsultationRecetteFrame(todaysDate, date, client, vendeur, type);
  379. }
  380. });
  381. frame.getContentPane().add(confirmButton);
  382.  
  383. // Bouton pour revenir au menu principal
  384. JButton returnButton = new JButton("Retour");
  385. returnButton.addActionListener(new ActionListener() {
  386. public void actionPerformed(ActionEvent e) {
  387. createMenuFrame(frame);
  388. }
  389. });
  390. frame.getContentPane().add(returnButton);
  391.  
  392. // TODO : Ajouter la liste des ventes. On doit pouvoir cliquer sur une vente pour afficher les infos dessus (petit pop-up)
  393.  
  394. // Affichage de la frame
  395. frame.setVisible(true);
  396. frame.setResizable(false);
  397. }
  398.  
  399. public static void createConsultationRecetteFrame(LocalDate today, LocalDate date, String client, String vendeur, String type) {
  400. JFrame fAfficherRecette = new JFrame("Recette selon les critères entrés");
  401. fAfficherRecette.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  402.  
  403. fAfficherRecette.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  404. fAfficherRecette.setSize(400, 300);
  405. fAfficherRecette.setLocation(725, 200);
  406.  
  407. Float money = ventesControleur.getRecettes(date, today, client, vendeur, type);
  408.  
  409. 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.");
  410. fAfficherRecette.getContentPane().add(lblJour);
  411.  
  412. fAfficherRecette.pack();
  413. fAfficherRecette.setVisible(true);
  414. fAfficherRecette.setResizable(false);
  415. }
  416. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement