Transactions

Logo

A Django app to track you finances

View the Project on GitHub leoBitto/Django-transactions

Transactions App - Applicazione di Gestione Finanziaria

Benvenuti nell’applicazione Transactions! Questa applicazione Django è progettata per aiutarti a gestire le tue finanze personali. Con Transactions, puoi tenere traccia delle tue entrate, spese, asset e debiti, tutto in un’unica piattaforma facile da usare.

Panoramica delle Funzionalità

Come Utilizzare l’App

Requisiti

Installazione

  1. Clona il repository dell’app:
    git clone https://github.com/leoBitto/transactions.git
    

Naviga nella directory del progetto:

cd transactions

Crea un ambiente virtuale (consigliato) e attivalo:

python3 -m venv venv
source venv/bin/activate

Installa i requisiti:

pip install -r requirements.txt

Applica le migrazioni:

 manage.py migrate

Avvia il server di sviluppo:

manage.py runserver

Accedi all’app nel tuo browser all’indirizzo http://localhost:8000.

Contributi Se vuoi contribuire all’applicazione Transactions, sentiti libero di aprire un problema o inviare una richiesta pull nel repository GitHub: https://github.com/leoBitto/transactions

Licenza L’applicazione è distribuita con licenza MIT. Consulta il file LICENSE per ulteriori dettagli.

Financial Management Application

Introduzione

Questa applicazione è progettata per gestire i conti correnti e il contante, tenendo traccia delle transazioni finanziarie e mantenendo un registro dello storico dei saldi. L’app consente di registrare entrate, spese e altre transazioni in modo flessibile, supportando diversi tipi di fondi come conti bancari e denaro contante.

Funzionalità Principali

Modelli

FundBase

FundBase è un modello astratto che fornisce una struttura comune per rappresentare un fondo finanziario, come un conto bancario o denaro contante. Include campi per il saldo (balance), la data di apertura (start_date) e la data di chiusura (end_date).

BankAccount

BankAccount eredita da FundBase ed è utilizzato per rappresentare conti bancari specifici. Oltre ai campi base, include il tipo di conto (account_type), il nome dell’istituto bancario (institution) e il tasso d’interesse (interest_rate).

Cash

Cash eredita da FundBase ed è utilizzato per rappresentare denaro contante. Include un campo aggiuntivo per la descrizione (description).

FundLog

FundLog tiene traccia delle modifiche del saldo per qualsiasi tipo di fondo (BankAccount o Cash). Utilizza un GenericForeignKey per collegarsi dinamicamente al modello specifico di fondo.

Transaction

Transaction rappresenta una transazione finanziaria generica. Può essere collegata a qualsiasi tipo di fondo (BankAccount o Cash) tramite una GenericForeignKey.

Income

Income è un’estensione di Transaction per rappresentare entrate finanziarie. Ogni entrata è associata a una categoria (IncomeCategory).

Expenditure

Expenditure è un’estensione di Transaction per rappresentare spese finanziarie. Ogni spesa è associata a una categoria (ExpenseCategory).

Relazioni tra Modelli

I modelli Income e Expenditure ereditano da Transaction e sono collegati a categorie specifiche tramite relazioni ForeignKey. I modelli BankAccount e Cash sono collegati al log tramite GenericForeignKey.

Esempi di Utilizzo

Di seguito un esempio di come creare e collegare un conto bancario e registrare una transazione:

# Creare un nuovo conto bancario
bank_account = BankAccount.objects.create(
    balance=1000.00,
    start_date=date.today(),
    account_type='savings',
    institution='Bank XYZ',
    interest_rate=1.5
)

# Creare una nuova transazione di entrata
income_category = IncomeCategory.objects.create(name='Salary', description='Monthly salary')
income = Income.objects.create(
    date=date.today(),
    amount=500.00,
    related_fund=ContentType.objects.get_for_model(bank_account),
    object_id=bank_account.id,
    type=income_category
)

Signal e Logging

Signal log_fund_change

Il signal log_fund_change è collegato ai modelli BankAccount e Cash. Viene attivato ogni volta che un fondo viene aggiornato (non creato) e crea un nuovo record in FundLog per registrare il cambiamento del saldo.

Gestione del Logging

Il modello FundLog utilizza un GenericForeignKey per collegarsi dinamicamente a qualsiasi tipo di fondo (BankAccount o Cash). Questo sistema di logging consente di tracciare l’andamento del saldo nel tempo, offrendo uno storico dettagliato delle operazioni sui fondi.


Form

Questa sezione descrive i moduli di form utilizzati nell’applicazione per gestire conti bancari, denaro contante, entrate e spese, e per la gestione di trasferimenti e spese ricorrenti.

BankAccountForm

Il BankAccountForm è utilizzato per creare e aggiornare i record di conti bancari. I campi del modulo includono:

Validazione

Il modulo verifica che la data di chiusura sia successiva alla data di apertura. Se non è così, viene aggiunto un errore al campo end_date.

CashForm

Il CashForm è utilizzato per creare e aggiornare i record di denaro contante. I campi del modulo includono:

Validazione

Il modulo verifica che la data di fine sia successiva alla data di inizio. Se non è così, viene aggiunto un errore al campo end_date.

IncomeForm

Il IncomeForm è utilizzato per registrare entrate finanziarie. I campi del modulo includono:

Validazione

Il modulo verifica che l’importo sia positivo. Inoltre, verifica che il fondo associato sia valido e che l’ID dell’oggetto esista.

ExpenditureForm

Il ExpenditureForm è utilizzato per registrare spese finanziarie. I campi del modulo includono:

Validazione

Il modulo verifica che l’importo sia positivo. Inoltre, verifica che il fondo associato sia valido e che l’ID dell’oggetto esista.

TransferFundsForm

Il TransferFundsForm è utilizzato per trasferire fondi tra conti o tra denaro contante. I campi del modulo includono:

Validazione

Il modulo verifica che il fondo di origine e quello di destinazione non siano lo stesso. Inoltre, controlla che l’importo sia maggiore di zero e che ci siano fondi sufficienti nel fondo di origine per coprire l’importo e la commissione.

RecurringIncomeForm

Il RecurringIncomeForm è utilizzato per impostare entrate ricorrenti. I campi del modulo includono:

Validazione

Il modulo verifica che la data di fine sia successiva alla data di inizio.

RecurringExpenseForm

Il RecurringExpenseForm è utilizzato per impostare spese ricorrenti. I campi del modulo includono:

Validazione

Il modulo verifica che la data di fine sia successiva alla data di inizio.

ciao, vorrei che tu mi aiutassi a sriver euna applicazione con django. il nostro iter di sviluppo sarà così:

  1. definizione dei modelli, già fatti ma vorrei sentire una tua opinione
  2. definizione del file admin.py
  3. definizione dei form
  4. definizione degli urls
  5. definzione delle views

ognuno di questi è già stato creato ma necessita di una revisione basata su come sono stati ristrutturati i modelli. la mia applicazione serve a gestire le finanze personali ed è necessario che faccia le seguenti cose di base: a. tenere traccia dei conti e dei loro bilanci b. tenere traccia del andamento del bilancio per ogni conto c. tenere traccia delle categorie di spesa e di reddito, che possono essere definite come gerarchie di categorie d. tenere traccia delle spese e dei redditi. e. possibilità di trasferire soldi da un conto all’altro f. possibilità di eliminare una transazione ma avere un corretto calcolo del bilancio. g. modificare una transazione e avere un corretto calcolo del bilancio.

il progetto django si chiama Arnia e la app si chiama transactions. il tree dell’app: src/transactions/ ├── admin.py ├── apps.py ├── docs │ ├── assets │ │ └── img │ │ ├── transaction_icon.png │ │ └── transaction_logo.png │ ├── _config.yml │ └── README.md ├── forms.py ├── init.py ├── migrations │ └── init.py ├── models │ └── base.py ├── templates │ └── transactions │ ├── accordion.html │ ├── account_detail.html │ ├── account.html │ ├── category_detail.html │ ├── category.html │ ├── expense.html │ ├── income.html │ └── transaction_detail.html ├── tests.py ├── urls.py └── views └── base.py

9 directories, 21 files

dimmi se hai domande su queste informazioni basilari, poi ti farò vedere i miei modelli