13 Commits

Author SHA1 Message Date
La Programmatrice Verde
dabc21988f Selezioni iniziano da 1 2025-11-27 11:26:42 +01:00
La Programmatrice Verde
ca81f23ebf Menu in RAM + correzione stringhe 2025-11-27 11:14:06 +01:00
La Programmatrice Verde
3b998a981d Refactoring 2025-11-26 00:09:08 +01:00
La Programmatrice Verde
11050bf805 Nuovo codice Fattura 2025-11-26 00:03:01 +01:00
La Programmatrice Verde
0cbb780b6a Nuovo codiceScontrino incrementale 2025-11-25 23:44:14 +01:00
La Programmatrice Verde
78d1ca2de2 rimuoviVoceMenu + controllo menu vuoto 2025-11-25 23:12:06 +01:00
La Programmatrice Verde
bb7a54de1f aggiungiVoceMenu 2025-11-25 18:33:16 +01:00
La Programmatrice Verde
f9d6859b51 Autenticazione adminMode 2025-11-25 18:19:11 +01:00
La Programmatrice Verde
a3f1c8a5fe Conferma UX 2025-11-25 16:00:48 +01:00
La Programmatrice Verde
9eb3d2825d Inserimento ordinazione completo 2025-11-25 11:54:02 +01:00
La Programmatrice Verde
641262ffe0 Opzione 1 2025-11-25 09:55:40 +01:00
La Programmatrice Verde
d8611ea642 Menu 2025-11-25 09:53:53 +01:00
La Programmatrice Verde
5b1328bde9 File menu 2025-11-25 09:52:32 +01:00
4 changed files with 430 additions and 116 deletions

View File

@@ -10,12 +10,13 @@ package fatturascontrini;
*/ */
public class Fattura { public class Fattura {
static int numeroFattura = -1; static int numeroFattura = FatturaScontrini.getCodice(1);
int numeroScontrini; int numeroScontrini;
double totaleScontrini; double totaleScontrini;
public Fattura(int numeroScontrini, double totaleScontrini) { public Fattura(int numeroScontrini, double totaleScontrini) {
numeroFattura++; numeroFattura++;
FatturaScontrini.incCodice(1);
this.numeroScontrini = numeroScontrini; this.numeroScontrini = numeroScontrini;
this.totaleScontrini = totaleScontrini; this.totaleScontrini = totaleScontrini;
} }

View File

@@ -16,7 +16,6 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.InputMismatchException; import java.util.InputMismatchException;
import java.util.Scanner; import java.util.Scanner;
import java.util.StringTokenizer;
/** /**
* *
@@ -32,9 +31,12 @@ public class FatturaScontrini {
static final String PATH_MENU = "./src/fatturascontrini/menu.txt"; static final String PATH_MENU = "./src/fatturascontrini/menu.txt";
static final String PATH_SCONTRINI = "./src/fatturascontrini/scontrini/"; static final String PATH_SCONTRINI = "./src/fatturascontrini/scontrini/";
static final String PATH_FATTURA = "./src/fatturascontrini/fatture/"; static final String PATH_FATTURA = "./src/fatturascontrini/fatture/";
static final String PATH_PROGRAM_DATA = "./src/fatturascontrini/programData.txt";
static final String ERRORE_DEFAULT = "Errore: opzione non valida."; static final String ERRORE_DEFAULT = "Errore: opzione non valida.";
static final String ERRORE_FILE = "Errore nella lettura del file: "; static final String ERRORE_FILE = "Errore nella lettura del file: ";
static int codiceScontrino = 0; static final String ERRORE_MENU_VUOTO = "Errore: il menu è vuoto.";
static String[][] menu = tabellaNomePrezzo();
static int codiceScontrino = getCodice(0);
public static void main(String[] args) { public static void main(String[] args) {
int scelta = -1; int scelta = -1;
@@ -42,9 +44,9 @@ public class FatturaScontrini {
do { do {
System.out.println("Scegliere un'opzione:"); System.out.println("Scegliere un'opzione:");
System.out.println("1. Effettuare ordinazione"); System.out.println("1. Visualizza menu");
System.out.println("2. Pagare"); System.out.println("2. Apri comanda");
System.out.println("3. Crea fattura"); System.out.println("3. Modalità amministratore");
System.out.println("0. Esci"); System.out.println("0. Esci");
System.out.print("Opzione: "); System.out.print("Opzione: ");
@@ -56,26 +58,24 @@ public class FatturaScontrini {
case 0: case 0:
break; break;
case 1: case 1:
ordinazione = placeOrdinazione(ordinazione); if (getFileSize(PATH_MENU) < 1) {
System.out.println();
} else {
stampaMenu();
}
pausa(); pausa();
break; break;
case 2: case 2:
if (ordinazione != null) { if (getFileSize(PATH_MENU) < 1) {
pagare(ordinazione); System.out.println(ERRORE_MENU_VUOTO);
} else { } else {
System.out.println( ordinazione = placeOrdinazione(ordinazione);
"Errore: è necessario effettuare un'ordinazione prima di procedere al pagamento.");
} }
pausa(); pausa();
break; break;
case 3: case 3:
if (!trovaScontrini().isEmpty()) { autenticazione();
fattura(); adminMode();
} else {
System.out.println(
"Errore: è necessario pagare prima di procedere alla creazione della fattura.");
}
pausa();
break; break;
default: default:
System.out.println("Opzione non valida."); System.out.println("Opzione non valida.");
@@ -128,7 +128,7 @@ public class FatturaScontrini {
} }
static ArrayList<int[]> ordinazione() { static ArrayList<int[]> ordinazione() {
ArrayList<int[]> ritorno = new ArrayList<>(); ArrayList<int[]> ordinazione = new ArrayList<>();
boolean exit; boolean exit;
boolean error; boolean error;
boolean isDuplicate = false; boolean isDuplicate = false;
@@ -138,21 +138,26 @@ public class FatturaScontrini {
exit = true; exit = true;
int[] ordine = { selezioneMenu(), quantita() }; int[] ordine = { selezioneMenu(), quantita() };
isDuplicate = isOrdinazioneDuplicata(ritorno, ordine); isDuplicate = isOrdinazioneDuplicata(ordinazione, ordine);
if (!isDuplicate) { if (!isDuplicate) {
ritorno.add(ordine); ordinazione.add(ordine);
} }
System.out.println(ordinazioneToString(ordinazione));
do { do {
error = false; error = false;
System.out.print("Inserire un altra ordinazione? [S/N] "); System.out.print("Modificare l'ordinazione? [S/N] ");
scelta = sc.nextLine().trim().toLowerCase(); scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) { switch (scelta) {
case "s": case "s":
ordinazione = cancellaInOrdinazione(ordinazione);
exit = false; exit = false;
break; break;
case "n": case "n":
System.out.println("Stampa dello scontrino. . .");
pagare(ordinazione);
break; break;
default: default:
System.out.println(ERRORE_DEFAULT); System.out.println(ERRORE_DEFAULT);
@@ -163,12 +168,12 @@ public class FatturaScontrini {
} while (error); } while (error);
} while (!exit); } while (!exit);
return ritorno; return ordinazione;
} }
static int selezioneMenu() { static int selezioneMenu() {
boolean error; boolean error;
int ritorno = -1; int voceSelezionata = -1;
do { do {
error = false; error = false;
@@ -177,10 +182,10 @@ public class FatturaScontrini {
System.out.print("Scelta: "); System.out.print("Scelta: ");
try { try {
ritorno = sc.nextInt(); voceSelezionata = sc.nextInt() - 1;
sc.nextLine(); sc.nextLine();
if (ritorno < 0 || ritorno >= getMenuSize()) { if (voceSelezionata < 0 || voceSelezionata >= getFileSize(PATH_MENU)) {
System.out.println(ERRORE_DEFAULT); System.out.println(ERRORE_DEFAULT);
pausa(); pausa();
error = true; error = true;
@@ -192,53 +197,43 @@ public class FatturaScontrini {
} }
} while (error); } while (error);
return ritorno; return voceSelezionata;
} }
static void stampaMenu() { static void stampaMenu() {
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) { for (int i = 0; i < menu[0].length; i++) {
StringTokenizer st; System.out.println((i+1) + ". " + menu[0][i] + ": " + menu[1][i].trim());
String riga = br.readLine();
for (int i = 0; i < getMenuSize(); i++) {
st = new StringTokenizer(riga, ":");
System.out.println(i + ". " + st.nextToken() + ": " + st.nextToken().trim());
System.out.println("\t" + st.nextToken().trim() + "\n");
riga = br.readLine();
}
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
} }
} }
static int getMenuSize() { static int getFileSize(String path) {
int i = 0; int dimensioneFile = 0;
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) { try (BufferedReader br = new BufferedReader(new FileReader(path))) {
String riga = br.readLine(); String riga = br.readLine();
while (riga != null) { while (riga != null) {
i++; dimensioneFile++;
riga = br.readLine(); riga = br.readLine();
} }
} catch (IOException e) { } catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage()); System.out.println(ERRORE_FILE + e.getMessage());
} }
return i; return dimensioneFile;
} }
static int quantita() { static int quantita() {
boolean error; boolean error;
int ritorno = -1; int quantita = -1;
do { do {
error = false; error = false;
System.out.print("Inserire la quantità da acquistare: "); System.out.print("Inserire la quantità da acquistare: ");
try { try {
ritorno = sc.nextInt(); quantita = sc.nextInt();
sc.nextLine(); sc.nextLine();
if (ritorno <= 0) { if (quantita <= 0) {
System.out.println("Errore: non è possibile selezionare una quantità minore di zero."); System.out.println("Errore: non è possibile selezionare una quantità minore di zero.");
pausa(); pausa();
error = true; error = true;
@@ -250,17 +245,17 @@ public class FatturaScontrini {
} }
} while (error); } while (error);
return ritorno; return quantita;
} }
static boolean isOrdinazioneDuplicata(ArrayList<int[]> ordinazione, int[] ordine) { static boolean isOrdinazioneDuplicata(ArrayList<int[]> ordinazione, int[] ordine) {
boolean ritorno = false; boolean isOrdinazioneDuplicata = false;
boolean error; boolean error;
String scelta; String scelta;
for (int[] ordini : ordinazione) { for (int[] ordini : ordinazione) {
if (ordini[0] == ordine[0]) { if (ordini[0] == ordine[0]) {
ritorno = true; isOrdinazioneDuplicata = true;
do { do {
error = false; error = false;
System.out System.out
@@ -284,40 +279,11 @@ public class FatturaScontrini {
} }
} }
return ritorno; return isOrdinazioneDuplicata;
}
static void pagare(ArrayList<int[]> ordinazione) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm");
Date now = new Date();
String contenutoScontrino;
File f = new File(PATH_SCONTRINI);
if (!f.exists()) {
f.mkdir();
}
try (BufferedWriter bw = new BufferedWriter(
new FileWriter(PATH_SCONTRINI + "scontrino_" + sdf.format(now) + ".txt"))) {
sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
contenutoScontrino = "Codice scontrino: " + (codiceScontrino++) +
"\nData e ora di emissione: " + sdf.format(now) +
"\n\n" +
ordinazioneToString(ordinazione);
System.out.println(contenutoScontrino);
bw.write(contenutoScontrino);
} catch (IOException e) {
System.out.println("Errore nella scrittura del file: " + e.getMessage());
}
} }
static String ordinazioneToString(ArrayList<int[]> ordinazione) { static String ordinazioneToString(ArrayList<int[]> ordinazione) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
String[][] menu = tabellaNomePrezzo();
double totale = 0; double totale = 0;
// Larghezze colonne // Larghezze colonne
@@ -337,7 +303,8 @@ public class FatturaScontrini {
sb.append(String.format(formattatoreLarghezzaPrezzoQuantita, menu[1][ordinazione.get(i)[0]].trim()));// prezzo sb.append(String.format(formattatoreLarghezzaPrezzoQuantita, menu[1][ordinazione.get(i)[0]].trim()));// prezzo
sb.append(String.format(formattatoreLarghezzaPrezzoQuantita, Integer.toString(ordinazione.get(i)[1])));// quantità sb.append(String.format(formattatoreLarghezzaPrezzoQuantita, Integer.toString(ordinazione.get(i)[1])));// quantità
sb.append("\n"); sb.append("\n");
totale += Double.parseDouble(menu[1][ordinazione.get(i)[0]].replaceFirst(",", ".")) * ordinazione.get(i)[1]; totale += Double.parseDouble(menu[1][ordinazione.get(i)[0]].replace("", "").trim())
* ordinazione.get(i)[1];
} }
sb.append("\nTotale: " + totale); sb.append("\nTotale: " + totale);
@@ -346,19 +313,360 @@ public class FatturaScontrini {
} }
static String[][] tabellaNomePrezzo() { static String[][] tabellaNomePrezzo() {
String[][] ritorno = new String[2][getMenuSize()]; String[][] tabellaNomePrezzo = new String[2][getFileSize(PATH_MENU)];
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) { try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) {
String riga = br.readLine(); String riga = br.readLine();
for (int i = 0; i < getMenuSize(); i++) { for (int i = 0; i < getFileSize(PATH_MENU); i++) {
ritorno[0][i] = riga.split(":")[0]; tabellaNomePrezzo[0][i] = riga.split(":")[0];
ritorno[1][i] = riga.split(":")[1].trim(); tabellaNomePrezzo[1][i] = riga.split(":")[1].trim();
riga = br.readLine(); riga = br.readLine();
} }
} catch (IOException e) { } catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage()); System.out.println(ERRORE_FILE + e.getMessage());
} }
return ritorno; return tabellaNomePrezzo;
}
static ArrayList<int[]> cancellaInOrdinazione(ArrayList<int[]> ordinazione) {
String scelta;
boolean error;
do {
error = false;
System.out.print("Eliminare un ordinazione? [S/N] ");
scelta = sc.nextLine().trim().toLowerCase();
switch (scelta) {
case "s":
ordinazione = cancellaOrdine(ordinazione);
System.out.println("Ordine cancellato con successo.");
pausa();
break;
case "n":
System.out.println("Nessuna ordinazione è stata cancellata.");
pausa();
break;
default:
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
break;
}
} while (error);
return ordinazione;
}
static ArrayList<int[]> cancellaOrdine(ArrayList<int[]> ordinazione) {
int scelta = -1;
boolean error;
do {
error = false;
System.out.println("Quale opzione eliminare tra le seguenti?");
for (int i = 0; i < ordinazione.size(); i++) {
System.out.println((i+1) + ". " + menu[0][ordinazione.get(i)[0]].trim() + ": "
+ menu[1][ordinazione.get(i)[0]].trim());
}
System.out.print("Scelta: ");
try {
scelta = sc.nextInt();
sc.nextLine();
if (scelta < 0 || scelta >= getFileSize(PATH_MENU)) {
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
}
} catch (InputMismatchException _) {
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
}
} while (error);
ordinazione.remove(scelta);
return ordinazione;
}
static void pagare(ArrayList<int[]> ordinazione) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Date now = new Date();
String contenutoScontrino;
File f = new File(PATH_SCONTRINI);
if (!f.exists()) {
f.mkdir();
}
try (BufferedWriter bw = new BufferedWriter(
new FileWriter(PATH_SCONTRINI + "scontrino_" + sdf.format(now) + ".txt"))) {
sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
incCodice(0);
contenutoScontrino = "Codice scontrino: " + codiceScontrino +
"\nData e ora di emissione: " + sdf.format(now) +
"\n\n" +
ordinazioneToString(ordinazione);
System.out.println(contenutoScontrino);
bw.write(contenutoScontrino);
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
}
}
static void incCodice(int tipo) {
//0: scontrino
//1: fattura
StringBuilder sb = new StringBuilder();
ArrayList<String> programData = fileToStringArray(PATH_PROGRAM_DATA);
programData.set(tipo,
programData.get(tipo).split(":")[0].trim() + ":" + Integer.toString(getCodice(tipo) + 1));
codiceScontrino++;
try (BufferedWriter bw = new BufferedWriter(
new FileWriter(PATH_PROGRAM_DATA))) {
for (String riga : programData) {
sb.append(riga);
sb.append("\n");
}
bw.write(sb.toString());
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
}
}
static int getCodice(int tipo) {
//0: scontrino
//1: fattura
return Integer.parseInt(fileToStringArray(PATH_PROGRAM_DATA).get(tipo).split(":")[1].trim());
}
static void adminMode() {
int scelta = -1;
do {
System.out.println("Scegliere un'opzione:");
System.out.println("1. Visualizza menu");
System.out.println("2. Aggiunta di un nuovo piatto al menu");
System.out.println("3. Rimozione di un nuovo piatto dal menu");
System.out.println("4. Fatturazione elettronica della giornata");
System.out.println("0. Esci dalla modalità amministratore");
System.out.print("Opzione: ");
try {
scelta = sc.nextInt();
sc.nextLine();
switch (scelta) {
case 0:
break;
case 1:
if (getFileSize(PATH_MENU) < 1) {
System.out.println(ERRORE_MENU_VUOTO);
} else {
stampaMenu();
}
pausa();
break;
case 2:
aggiungiVoceMenu();
menu = tabellaNomePrezzo();
System.out.println("Piatto aggiunto con successo.");
pausa();
break;
case 3:
if (getFileSize(PATH_MENU) < 1) {
System.out.println(ERRORE_MENU_VUOTO);
} else {
rimuoviVoceMenu();
System.out.println("Piatto rimosso con successo.");
}
pausa();
break;
case 4:
fattura();
pausa();
break;
default:
System.out.println("Opzione non valida.");
pausa();
break;
}
} catch (InputMismatchException _) {
System.out.println("Errore: scelta non valida.");
pausa();
}
} while (scelta != 0);
}
static void autenticazione() {
String username;
String password;
boolean error;
int failedLoginCount = 0;
final int MAX_FAILED_LOGIN_COUNT = 3;
String savedUsername = "";
String savedPassword = "";
try (BufferedReader br = new BufferedReader(new FileReader(PATH_PROGRAM_DATA))) {
String riga;
do {
riga = br.readLine();
} while (!riga.contains("username: "));
savedUsername = riga.split(":")[1].trim();
savedPassword = br.readLine().split(":")[1].trim();
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
}
do {
error = false;
if (failedLoginCount == MAX_FAILED_LOGIN_COUNT) {
failedLoginCount = failedLogin(failedLoginCount);
error = true;
} else {
System.out.print("Username: ");
username = sc.nextLine().trim();
password = new String(System.console().readPassword("Password: ")).trim();
if (!username.equals(savedUsername)) {
System.out.println("Errore: il nome utente non è valido.");
pausa();
error = true;
failedLoginCount++;
} else {
if (!password.equals(savedPassword)) {
System.out.println("Errore: la password non è valida.");
pausa();
error = true;
failedLoginCount++;
}
}
}
} while (error);
}
static int failedLogin(int failedLoginCount) {
long durataTimer = 7500;
final String FORMATTAZIONE_ERRORE_TIMER = "\rRiprovare tra %d secondi";
long istanteInizioTimer = System.currentTimeMillis();
durataTimer *= 2;
System.out.println("Errore: troppi tentativi di login falliti.");
while (true) {
long differenzaDiTempo = System.currentTimeMillis() - istanteInizioTimer;
// mostra il tempo rimanente ogni secondo
if (System.currentTimeMillis() % 1000 == 0) {
System.out.printf(FORMATTAZIONE_ERRORE_TIMER, (int) ((durataTimer - differenzaDiTempo) / 1000));
}
if (differenzaDiTempo >= durataTimer) {
failedLoginCount = 0;
System.out.println();
break;
}
}
return failedLoginCount;
}
static void aggiungiVoceMenu() {
String nome;
String prezzo;
StringBuilder sb = new StringBuilder();
System.out.print("Inserire il nome della nuova voce: ");
nome = sc.nextLine().trim();
System.out.println("Inserire il prezzo della nuova voce");
prezzo = Double.toString(prezzo());
if (prezzo.contains(",")) {
prezzo = prezzo.replace(",", ".");
}
try (BufferedWriter bw = new BufferedWriter(new FileWriter(PATH_MENU, true))) {
sb.append(nome);
sb.append(": ");
sb.append(prezzo);
sb.append("\n");
bw.write(sb.toString());
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
}
}
static double prezzo() {
boolean error;
double prezzo = -1;
do {
error = false;
System.out.print("Prezzo: ");
try {
prezzo = sc.nextDouble();
sc.nextLine();
if (prezzo <= 0) {
System.out.println("Errore: non è possibile impostare un prezzo minore di zero.");
pausa();
error = true;
}
} catch (InputMismatchException _) {
System.out.println(ERRORE_DEFAULT);
pausa();
error = true;
}
} while (error);
return prezzo;
}
static void rimuoviVoceMenu() {
int voceDaRimuovere = selezioneMenu();
ArrayList<String> menu = fileToStringArray(PATH_MENU);
StringBuilder sb = new StringBuilder();
menu.remove(voceDaRimuovere);
for (String voce : menu) {
sb.append(voce);
sb.append("\n");
}
try (BufferedWriter bw = new BufferedWriter(new FileWriter(PATH_MENU))) {
bw.write(sb.toString());
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
}
}
static ArrayList<String> fileToStringArray(String path) {
ArrayList<String> fileAsStringArray = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
String riga = br.readLine();
while (riga != null) {
fileAsStringArray.add(riga);
riga = br.readLine();
}
} catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage());
}
return fileAsStringArray;
} }
static void fattura() { static void fattura() {
@@ -385,46 +693,47 @@ public class FatturaScontrini {
sdf = new SimpleDateFormat(formatoDataScontrini); sdf = new SimpleDateFormat(formatoDataScontrini);
listaScontrini = trovaScontriniPerData(trovaScontrini(), sdf.format(dataRicerca)); listaScontrini = trovaScontriniPerData(sdf.format(dataRicerca));
if (listaScontrini.isEmpty()) { if (listaScontrini.isEmpty()) {
System.out.println("Errore: non sono stati trovati scontrini per la data inserita."); System.out.println("Errore: non sono stati trovati scontrini per la data inserita.");
} } else {
else{ stampaFattura(new Fattura(listaScontrini.size(), calcolaTotaleScontrini(listaScontrini)),
stampaFattura(new Fattura(listaScontrini.size(), calcolaTotaleScontrini(listaScontrini)), sdf.format(dataRicerca)); sdf.format(dataRicerca));
} }
} }
static ArrayList<File> trovaScontriniPerData(String data) {
ArrayList<File> scontrini = trovaScontrini();
ArrayList<File> listaScontriniPerData = new ArrayList<>();
for (File scontrino : scontrini) {
if (scontrino.getName().contains(data)) {
listaScontriniPerData.add(scontrino);
}
}
return listaScontriniPerData;
}
static ArrayList<File> trovaScontrini() { static ArrayList<File> trovaScontrini() {
ArrayList<File> ritorno = new ArrayList<>(); ArrayList<File> listaScontrini = new ArrayList<>();
File cartellaScontrini = new File(PATH_SCONTRINI); File cartellaScontrini = new File(PATH_SCONTRINI);
File[] listaFile = cartellaScontrini.listFiles(); File[] listaFile = cartellaScontrini.listFiles();
if (listaFile != null) { if (listaFile != null) {
for (int i = 0; i < listaFile.length; i++) { for (int i = 0; i < listaFile.length; i++) {
if (listaFile[i].isFile() && if (listaFile[i].isFile() &&
listaFile[i].getName().split("_")[0].equals("scontrino")) { listaFile[i].getName().split("_")[0].equals("scontrino")) {
ritorno.add(listaFile[i]); listaScontrini.add(listaFile[i]);
} }
} }
} }
return ritorno; return listaScontrini;
}
static ArrayList<File> trovaScontriniPerData(ArrayList<File> scontrini, String data) {
ArrayList<File> ritorno = new ArrayList<>();
for (File scontrino : scontrini) {
if (scontrino.getName().contains(data)) {
ritorno.add(scontrino);
}
}
return ritorno;
} }
static double calcolaTotaleScontrini(ArrayList<File> scontrini) { static double calcolaTotaleScontrini(ArrayList<File> scontrini) {
double ritorno = 0; double totaleScontrini = 0;
for (File scontrino : scontrini) { for (File scontrino : scontrini) {
try (BufferedReader br = new BufferedReader(new FileReader(scontrino))) { try (BufferedReader br = new BufferedReader(new FileReader(scontrino))) {
String riga = br.readLine(); String riga = br.readLine();
@@ -433,12 +742,12 @@ public class FatturaScontrini {
riga = br.readLine(); riga = br.readLine();
} while (!riga.contains("Totale: ")); } while (!riga.contains("Totale: "));
ritorno += Double.parseDouble(riga.split(":")[1]); totaleScontrini += Double.parseDouble(riga.split(":")[1]);
} catch (IOException e) { } catch (IOException e) {
System.out.println(ERRORE_FILE + e.getMessage()); System.out.println(ERRORE_FILE + e.getMessage());
} }
} }
return ritorno; return totaleScontrini;
} }
static void stampaFattura(Fattura fattura, String data) { static void stampaFattura(Fattura fattura, String data) {

View File

@@ -1,8 +1,8 @@
cappuccino:1,30:lorem ipsum dolor sit cappuccino: 1.30 €
caffè:1,00:lorem ipsum dolor sit caffè: 1.00 €
brioche:0,80:lorem ipsum dolor sit briocher: 0.80 €
brioche_marmellata:1,00:lorem ipsum dolor sit briocher_marmellata: 1.00 €
cioccolata:1,50:lorem ipsum dolor sit cioccolata: 1.50 €
spremuta:1,40:lorem ipsum dolor sit spremuta: 1.40 €
toast: 1,70:lorem ipsum dolor sit toast: 1.70
panino a scelta con affettato: 3,50:lorem ipsum dolor sit panino a scelta con affettato: 3.50

View File

@@ -0,0 +1,4 @@
numeroScontrino:258
numeroFattura:8
username: password
password: username