Nessun duplicato nello scontrino

This commit is contained in:
La Programmatrice Verde 2025-10-22 21:11:17 +02:00
parent 6bd776d4f0
commit f948c2e3c2

View File

@ -354,22 +354,34 @@ public class listaSpesa {
if (prodottoTrovato.checkQtaDisponibile(
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), qta) != 0) {
if (qta <= prodottoTrovato.checkQtaDisponibile(
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), qta)) {
if (prodottoTrovato.getQta() - qta == 0) {
System.out.println("Attenzione: il prodotto è stato finito.");
scontrino[trovaPosizioneLibera(scontrino)] = prodottoTrovato;
magazzino[trovaProdottoInMagazzino(prodottoTrovato)] = null;
if (trovaProdottoInScontrino(prodottoTrovato) == -1) {
if (prodottoTrovato.getQta() - qta == 0) {
System.out.println("Attenzione: il prodotto è stato finito.");
scontrino[trovaPosizioneLibera(scontrino)] = prodottoTrovato;
magazzino[trovaProdottoInMagazzino(prodottoTrovato)] = null;
} else {
int posizioneScontrino = trovaPosizioneLibera(scontrino);
prodottoTrovato.updQtaMagazzino(
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(),
prodottoTrovato.getQta() - qta);
scontrino[posizioneScontrino] = isAlimentare
? new Alimentare((Alimentare) prodottoTrovato)
: new NonAlimentare((NonAlimentare) prodottoTrovato);
scontrino[posizioneScontrino].updQtaMagazzino(
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(),
qta);
}
exit = true;
} else {
int posizioneScontrino = trovaPosizioneLibera(scontrino);
prodottoTrovato.updQtaMagazzino(
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(),
prodottoTrovato.getQta() - qta);
scontrino[posizioneScontrino] = isAlimentare ? new Alimentare((Alimentare)prodottoTrovato) : new NonAlimentare((NonAlimentare)prodottoTrovato);
scontrino[posizioneScontrino].updQtaMagazzino(
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), qta);
System.out.println("Errore: il prodotto esiste già nello scontrino.");
pausa();
error = true;
}
exit = true;
} else {
System.out.println("Errore: la quantità inserita supera quella disponibile, ovvero "
@ -445,7 +457,8 @@ public class listaSpesa {
Prodotto ritorno = null;
boolean exit = false;
for (int i = 0; i < magazzino.length && !exit; i++) {
if (magazzino[i].getNome().contains(p_nomeODescrizione) || magazzino[i].getDescrizione().contains(p_nomeODescrizione)) {
if (magazzino[i].getNome().contains(p_nomeODescrizione)
|| magazzino[i].getDescrizione().contains(p_nomeODescrizione)) {
ritorno = magazzino[i];
exit = true;
}
@ -473,6 +486,26 @@ public class listaSpesa {
return ritorno;
}
static int trovaProdottoInScontrino(Prodotto p_prodotto) {
int ritorno = -1;
boolean exit = true;
for (int i = 0; i < scontrino.length && exit; i++) {
if (scontrino[i] != null) {
exit = false;
}
}
for (int i = 0; i < scontrino.length && !exit; i++) {
if (scontrino[i] != null) {
if (scontrino[i].hashCode() == p_prodotto.hashCode()) {
ritorno = i;
exit = true;
}
}
}
return ritorno;
}
static int trovaPosizioneLibera(Prodotto[] p_prodotti) {
int ritorno = -1;
boolean exit = false;