Skip to content

Instantly share code, notes, and snippets.

@rponte
Last active January 7, 2025 12:45
Show Gist options
  • Save rponte/2e15656c98226497839896872e79f432 to your computer and use it in GitHub Desktop.
Save rponte/2e15656c98226497839896872e79f432 to your computer and use it in GitHub Desktop.
Example of code in Python to create a charge for a specific customer
async def create_charge(charge: Charge, customer: Customer) -> None:
if not customer.is_active():
raise Customer InactiveError("The customer is not active.")
if not charge.has_valid_amount():
raise InvalidChargeAmountError("The charge amount must be greater than zero.")
if not charge.has_valid_due_date():
raise InvalidDueDateError("The due date must be in the future.")
if not charge.has_supported_payment_method():
raise UnsupportedPaymentMethodError ("The payment method is not supported.")
if not charge. is_ within_credit_limit(customer):
raise ExceedsCreditLimitError("The charge exceeds the customer's credit limit.")
if customer.has_unpaid_overdue_charges():
raise UnpaidOverdueChargesError("The customer has unpaid overdue charges.")
charge.save()
customer.notify_new_charge(charge)

História de Usuário: Criar uma Cobrança

Como um(a): administrador(a) financeiro(a)

Eu quero: criar uma cobrança válida para um cliente

Para que: as transações sejam registradas de forma consistente e em conformidade com as regras de negócio.

Critérios de Aceitação

  1. Cliente ativo: Apenas clientes ativos podem receber cobranças.
  2. Valor válido: O valor da cobrança deve ser positivo e maior que zero.
  3. Limite de crédito: O cliente não pode ter cobranças pendentes que excedam seu limite de crédito.
  4. Conta ativa: A conta bancária associada à cobrança deve estar ativa.
  5. Cobrança duplicada: Não pode haver outra cobrança pendente com os mesmos dados (e.g., valor, descrição) para o cliente.
  6. Limite de cobranças mensais: O cliente não pode ultrapassar o número máximo permitido de cobranças no mês.
@rponte
Copy link
Author

rponte commented Jan 7, 2025

Code extracted from this article on LinkedIn.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment