Untitled

 avatar
unknown
python
16 days ago
3.4 kB
6
Indexable
# Funzione che trova il cliente con l'esposizione (importo) massima
def EsposizioneMaxCliente(T1):
    # Dizionario per tenere traccia del totale per ogni cliente
    totali = {}
    
    # Scorre ogni riga della tabella T1
    for riga in T1:
        # Estrae il codice cliente e l'importo dalla riga corrente
        codice_cliente = riga[1]    # Il codice cliente è nella seconda colonna
        importo = riga[2]           # L'importo è nella terza colonna
        
        # Se il cliente è già presente nel dizionario
        if codice_cliente in totali:
            # Aggiunge l'importo al totale esistente per quel cliente
            totali[codice_cliente] = totali[codice_cliente] + importo
        else:
            # Se è la prima volta che vediamo questo cliente, inizializza il suo totale
            totali[codice_cliente] = importo
    
    # Inizializza le variabili per trovare il massimo
    max_cliente = None     # Cliente con l'importo massimo
    max_totale = 0        # L'importo massimo trovato finora
    
    # Scorre il dizionario dei totali per trovare il massimo
    for cliente, totale in totali.items():
        # Se trova un totale maggiore del massimo corrente
        if totale > max_totale:
            # Aggiorna sia il cliente che il totale massimo
            max_cliente = cliente
            max_totale = totale
    
    # Restituisce una lista con il codice del cliente e il suo totale massimo
    return [max_cliente, max_totale]

# Funzione che calcola le differenze tra importi ordinati e pagamenti
def ReportFlussiMonetari(T1, T2):
    # Lista che conterrà i risultati [cliente, differenza]
    risultato = []
    
    # Scorre ogni riga della tabella T1 (ordini)
    for riga_t1 in T1:
        cod_cliente = riga_t1[1]    # Codice cliente dall'ordine
        cod_ordine = riga_t1[0]     # Codice ordine
        importo_t1 = riga_t1[2]     # Importo dell'ordine
        
        # Inizializza la somma dei pagamenti per questo ordine
        somma_t2 = 0
        
        # Cerca tutti i pagamenti relativi a questo ordine in T2
        for riga_t2 in T2:
            # Se trova un pagamento che corrisponde al codice ordine
            if riga_t2[4] == cod_ordine:
                # Aggiunge l'importo del pagamento al totale
                somma_t2 = somma_t2 + riga_t2[3]
        
        # Calcola la differenza tra pagamenti e importo ordine
        differenza = somma_t2 - importo_t1
        
        # Aggiunge alla lista risultato il cliente e la differenza
        risultato.append([cod_cliente, differenza])
    
    # Restituisce la lista completa dei risultati
    return risultato

# Dati di esempio per gli ordini (T1)
# Struttura: [codice_ordine, codice_cliente, importo, data]
T1 = [
    [25, "A16", 357, "02/04/24"],  # Ordine 25 del cliente A16
    [13, "A17", 150, "08/01/24"],  # Ordine 13 del cliente A17
    [26, "A16", 280, "23/06/22"]   # Ordine 26 del cliente A16
]

# Dati di esempio per i pagamenti (T2)
# Struttura: [codice_prodotto, tipo, data, importo, codice_ordine]
T2 = [
    ["P1", "Carne", "24/01/24", 300, 25],    # Pagamento per ordine 25
    ["P22", "Verdura", "13/05/22", 17, 13],   # Pagamento per ordine 13
    ["P22", "Verdura", "04/10/23", 79, 13],   # Altro pagamento per ordine 13
    ["P2", "Carne", "30/11/23", 57, 25]       # Altro pagamento per ordine 25
]

# Stampa il report dei flussi monetari
print(ReportFlussiMonetari(T1,T2))
Editor is loading...
Leave a Comment