Pular para conteúdo

Models

Account

Bases: Model

Representação da conta financeira do usuário.

Atributos

owner: O usuário associado a esta conta. name: O tipo de conta. Por exemplo, Conta Corrente. balance: O valor monetário atual disponível na conta. created_at: A data e hora da criação da conta.

Métodos

str: Retorna uma representação em string da conta.

Source code in finances/models.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Account(models.Model):
    """
    Representação da conta financeira do usuário.

    Atributos:
        owner: O usuário associado a esta conta.
        name: O tipo de conta. Por exemplo, Conta Corrente.
        balance: O valor monetário atual disponível na conta.
        created_at: A data e hora da criação da conta.

    Métodos:
        __str__: Retorna uma representação em string da conta.
    """

    owner = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        blank=True,
        null=True
    )
    name = models.CharField(max_length=65)
    balance = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'Account of {self.owner.first_name} {self.owner.last_name} - '\
            f'{self.name}'

Budget

Bases: Model

Representação do orçamento associado a uma categoria.

Atributos

account: A conta à qual o orçamento pertence. category: A categoria à qual o orçamento pertence. amount: O valor monetário do orçamento. start_date: A data de início do período do orçamento. end_date: A data de término do período do orçamento. spent: O valor gasto dentro do período de orçamento.

Métodos

str: Retorna uma representação em string do orçamento. update_spent: Atualiza o valor gasto com base nas transações dentro do período do orçamento.

Source code in finances/models.py
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
class Budget(models.Model):
    """
    Representação do orçamento associado a uma categoria.

    Atributos:
        account: A conta à qual o orçamento pertence.
        category: A categoria à qual o orçamento pertence.
        amount: O valor monetário do orçamento.
        start_date: A data de início do período do orçamento.
        end_date: A data de término do período do orçamento.
        spent: O valor gasto dentro do período de orçamento.

    Métodos:
        __str__: Retorna uma representação em string do orçamento.
        update_spent: Atualiza o valor gasto com base nas transações dentro do
        período do orçamento.
    """

    account = models.ForeignKey(
        Account,
        on_delete=models.CASCADE,
        blank=True,
        null=True
    )
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    start_date = models.DateField()
    end_date = models.DateField()
    spent = models.DecimalField(max_digits=10, decimal_places=2, default=0)

    def __str__(self):
        return f'Budget to {self.category.name} - {self.amount}'

    def update_spent(self, transaction_amount):
        """
        Atualiza o valor gasto com base nas transações dentro do período do
        orçamento.
        """

        if transaction_amount == 0:
            return

        spent_amount = Transaction.objects.filter(
            category=self.category,
            account=self.account,
            date__range=(self.start_date, self.end_date)
        ).aggregate(Sum('amount'))['amount__sum'] or 0

        self.spent = spent_amount
        self.save()

update_spent(transaction_amount)

Atualiza o valor gasto com base nas transações dentro do período do orçamento.

Source code in finances/models.py
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
def update_spent(self, transaction_amount):
    """
    Atualiza o valor gasto com base nas transações dentro do período do
    orçamento.
    """

    if transaction_amount == 0:
        return

    spent_amount = Transaction.objects.filter(
        category=self.category,
        account=self.account,
        date__range=(self.start_date, self.end_date)
    ).aggregate(Sum('amount'))['amount__sum'] or 0

    self.spent = spent_amount
    self.save()

Category

Bases: Model

Representação da categoria da transação.

Atributos

name: O nome da categoria. Por exemplo, "Alimentação".

Métodos

str: Retorna uma representação em string da categoria.

Source code in finances/models.py
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class Category(models.Model):
    """
    Representação da categoria da transação.

    Atributos:
        name: O nome da categoria. Por exemplo, "Alimentação".

    Métodos:
        __str__: Retorna uma representação em string da categoria.
    """

    name = models.CharField(max_length=100)

    def __str__(self):
        return f'Category: {self.name}'

Transaction

Bases: Model

Representação da transação financeira associada a uma conta.

Atributos

account: A conta à qual a transação pertence. category: A categoria da transação. amount: O valor monetário da transação. description: Uma descrição opcional da transação, feita pelo usuário. timestamp: O timestamp da criação da transação.

Métodos

str: Retorna uma representação em string da transação.

Source code in finances/models.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
class Transaction(models.Model):
    """
    Representação da transação financeira associada a uma conta.

    Atributos:
        account: A conta à qual a transação pertence.
        category: A categoria da transação.
        amount: O valor monetário da transação.
        description: Uma descrição opcional da transação, feita pelo usuário.
        timestamp: O timestamp da criação da transação.

    Métodos:
        __str__: Retorna uma representação em string da transação.
    """

    account = models.ForeignKey(Account, on_delete=models.CASCADE)
    category = models.ForeignKey(
        Category,
        on_delete=models.CASCADE,
        blank=True,
        null=True
    )
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    date = models.DateTimeField(default=timezone.now)
    description = models.TextField()

    def __str__(self):
        return f'Value: {self.amount} - Description: {self.description}'