create method

Future<InvoiceModel> create({
  1. required String email,
  2. required DateTime dueDate,
  3. required List<Item> items,
  4. String? returnUrl,
  5. String? expiredUrl,
  6. String? notificationUrl,
  7. String? customerId,
  8. String? subscriptionId,
  9. int? credits,
  10. Logs? logs,
  11. List<CustomVariables>? customVariables,
  12. PayerModel? payer,
  13. List<EarlyPaymentDiscounts>? earlyPaymentDiscounts,
  14. int? taxCents,
  15. int? discountCents,
  16. bool ignoreDueEmail = false,
  17. bool earlyPaymentDiscount = false,
  18. String? customApiToken,
  19. String paymentMethod = 'bank_slip',
})
Cria uma Fatura para um Cliente (Podendo ser apenas um e-mail). E-Mail do cliente Data de Expiração (DD/MM/AAAA) Itens da Fatura (opcional) Cliente é redirecionado para essa URL após efetuar o pagamento da Fatura pela página de Fatura da Iugu (opcional) Cliente é redirecionado para essa URL se a Fatura que estiver acessando estiver expirada (opcional) URL chamada para todas as notificações de Fatura, assim como os webhooks (Gatilhos) são chamados (opcional) Valor dos Impostos em centavos (opcional) Valor dos Descontos em centavos (opcional) ID do Cliente (opcional) Booleano que ignora o envio do e-mail de cobrança (opcional) Amarra essa Fatura numa Assinatura (opcional) Caso tenha o subscription_id, pode-se enviar o número de créditos a adicionar nessa Assinatura quando a Fatura for paga (opcional) Logs da Fatura (opcional) Variáveis Personalizadas Dados do pagador, obrigatórios para boletos registrados Token customizado opcional, mais utilizado em marketplaces

Implementation

Future<InvoiceModel> create({
  required String email,
  required DateTime dueDate,
  required List<Item> items,
  String? returnUrl,
  String? expiredUrl,
  String? notificationUrl,
  String? customerId,
  String? subscriptionId,
  int? credits,
  Logs? logs,
  List<CustomVariables>? customVariables,
  PayerModel? payer,
  List<EarlyPaymentDiscounts>? earlyPaymentDiscounts,
  int? taxCents,
  int? discountCents,
  bool ignoreDueEmail = false,
  bool earlyPaymentDiscount = false,
  String? customApiToken,
  String paymentMethod = 'bank_slip',
}) async {
  var invoice = InvoiceRequestMessage(
      email: email,
      dueDate: dueDate.toString(),
      items: items,
      returnUrl: returnUrl,
      expiredUrl: expiredUrl,
      taxCents: taxCents,
      discountCents: discountCents,
      customerId: customerId,
      ignoreDueDateMail: ignoreDueEmail,
      subscriptionId: subscriptionId,
      credits: credits,
      logs: logs == null
          ? null
          : [
              logs
            ],
      customVariables: customVariables,
      notificationUrl: notificationUrl,
      enableEarlyPaymentDiscount: earlyPaymentDiscount,
      earlyPaymentDiscounts: earlyPaymentDiscounts,
      payer: payer,
      paymentMethod: paymentMethod);

  var retorno = await apiResource.post(data: invoice.toMap(), apiUserToken: customApiToken);
  return InvoiceModel.fromMap(retorno);
}