fix:(fot) ajuste bug no gasto de captaçao
This commit is contained in:
parent
8703f9c8a8
commit
421ca81ee4
5 changed files with 31 additions and 22 deletions
|
|
@ -598,16 +598,15 @@ const updateCadastroFotGastos = `-- name: UpdateCadastroFotGastos :exec
|
|||
UPDATE cadastro_fot SET
|
||||
gastos_captacao = $2,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = $1 AND regiao = $3
|
||||
WHERE id = $1
|
||||
`
|
||||
|
||||
type UpdateCadastroFotGastosParams struct {
|
||||
ID pgtype.UUID `json:"id"`
|
||||
GastosCaptacao pgtype.Numeric `json:"gastos_captacao"`
|
||||
Regiao pgtype.Text `json:"regiao"`
|
||||
}
|
||||
|
||||
func (q *Queries) UpdateCadastroFotGastos(ctx context.Context, arg UpdateCadastroFotGastosParams) error {
|
||||
_, err := q.db.Exec(ctx, updateCadastroFotGastos, arg.ID, arg.GastosCaptacao, arg.Regiao)
|
||||
_, err := q.db.Exec(ctx, updateCadastroFotGastos, arg.ID, arg.GastosCaptacao)
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -653,16 +653,11 @@ func (q *Queries) ListTransactionsPaginatedFiltered(ctx context.Context, arg Lis
|
|||
const sumTotalByFot = `-- name: SumTotalByFot :one
|
||||
SELECT COALESCE(SUM(total_pagar), 0)::NUMERIC
|
||||
FROM financial_transactions
|
||||
WHERE fot_id = $1 AND regiao = $2
|
||||
WHERE fot_id = $1
|
||||
`
|
||||
|
||||
type SumTotalByFotParams struct {
|
||||
FotID pgtype.UUID `json:"fot_id"`
|
||||
Regiao pgtype.Text `json:"regiao"`
|
||||
}
|
||||
|
||||
func (q *Queries) SumTotalByFot(ctx context.Context, arg SumTotalByFotParams) (pgtype.Numeric, error) {
|
||||
row := q.db.QueryRow(ctx, sumTotalByFot, arg.FotID, arg.Regiao)
|
||||
func (q *Queries) SumTotalByFot(ctx context.Context, fotID pgtype.UUID) (pgtype.Numeric, error) {
|
||||
row := q.db.QueryRow(ctx, sumTotalByFot, fotID)
|
||||
var column_1 pgtype.Numeric
|
||||
err := row.Scan(&column_1)
|
||||
return column_1, err
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ WHERE c.fot = $1 AND c.regiao = @regiao;
|
|||
UPDATE cadastro_fot SET
|
||||
gastos_captacao = $2,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
WHERE id = $1 AND regiao = @regiao;
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: SearchFot :many
|
||||
SELECT
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ ORDER BY t.data_cobranca DESC NULLS LAST;
|
|||
-- name: SumTotalByFot :one
|
||||
SELECT COALESCE(SUM(total_pagar), 0)::NUMERIC
|
||||
FROM financial_transactions
|
||||
WHERE fot_id = $1 AND regiao = @regiao;
|
||||
WHERE fot_id = $1;
|
||||
|
||||
-- name: UpdateTransaction :one
|
||||
UPDATE financial_transactions SET
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ func (s *Service) Create(ctx context.Context, params generated.CreateTransaction
|
|||
}
|
||||
|
||||
if params.FotID.Valid {
|
||||
_ = s.updateFotExpenses(ctx, params.FotID, regiao)
|
||||
_ = s.updateFotExpenses(ctx, params.FotID)
|
||||
}
|
||||
|
||||
return txn, nil
|
||||
|
|
@ -44,7 +44,7 @@ func (s *Service) Update(ctx context.Context, params generated.UpdateTransaction
|
|||
|
||||
// Recalculate for the new FOT (if changed, we should technically recalc old one too, but simpler for now)
|
||||
if params.FotID.Valid {
|
||||
_ = s.updateFotExpenses(ctx, params.FotID, regiao)
|
||||
_ = s.updateFotExpenses(ctx, params.FotID)
|
||||
}
|
||||
return txn, nil
|
||||
}
|
||||
|
|
@ -63,15 +63,33 @@ func (s *Service) BulkUpdate(ctx context.Context, ids []string, valorExtra float
|
|||
return nil
|
||||
}
|
||||
|
||||
// 1. Identify affected FOTs to recalculate expenses later
|
||||
affectedFotIDs := make(map[string]pgtype.UUID)
|
||||
for _, id := range pgIDs {
|
||||
txn, err := s.queries.GetTransaction(ctx, generated.GetTransactionParams{
|
||||
ID: id,
|
||||
Regiao: pgtype.Text{String: regiao, Valid: true},
|
||||
})
|
||||
if err == nil && txn.FotID.Valid {
|
||||
affectedFotIDs[fmt.Sprintf("%x", txn.FotID.Bytes)] = txn.FotID
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Perform Bulk Update
|
||||
err := s.queries.BulkUpdateExtras(ctx, generated.BulkUpdateExtrasParams{
|
||||
ValorExtra: toNumeric(valorExtra),
|
||||
DescricaoExtra: pgtype.Text{String: descricaoExtra, Valid: true}, // Allow empty description? Yes.
|
||||
DescricaoExtra: pgtype.Text{String: descricaoExtra, Valid: true},
|
||||
Ids: pgIDs,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 3. Recalculate Expenses for affected FOTs
|
||||
for _, fotID := range affectedFotIDs {
|
||||
_ = s.updateFotExpenses(ctx, fotID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +112,7 @@ func (s *Service) Delete(ctx context.Context, id pgtype.UUID, regiao string) err
|
|||
}
|
||||
|
||||
if txn.FotID.Valid {
|
||||
_ = s.updateFotExpenses(ctx, txn.FotID, regiao)
|
||||
_ = s.updateFotExpenses(ctx, txn.FotID)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -235,11 +253,8 @@ func (s *Service) SearchFot(ctx context.Context, query string, regiao string) ([
|
|||
})
|
||||
}
|
||||
|
||||
func (s *Service) updateFotExpenses(ctx context.Context, fotID pgtype.UUID, regiao string) error {
|
||||
total, err := s.queries.SumTotalByFot(ctx, generated.SumTotalByFotParams{
|
||||
FotID: fotID,
|
||||
Regiao: pgtype.Text{String: regiao, Valid: true},
|
||||
})
|
||||
func (s *Service) updateFotExpenses(ctx context.Context, fotID pgtype.UUID) error {
|
||||
total, err := s.queries.SumTotalByFot(ctx, fotID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue