<?php

abstract class Type_materaConfigs extends EnumBasic {
  const Tp_NameModule    = 'matera';

  protected static $nickname = [
    self::Tp_NameModule => 'Usado para identificar qual o metodo de pagamento que foi escolhido',
  ];
}

abstract class Type_materaPaymentStatus extends EnumBasic {
  const Tp_Open            = 'Open';
  const Tp_Created         = 'Created';
  const Tp_Approved        = 'Approved';
  const Tp_Partial         = 'Partial';
  const Tp_Overfilled      = 'Overfilled';
  const Tp_Rejected        = 'Rejected';
  const Tp_Canceled        = 'Canceled';
  const Tp_Error           = 'Error';
  
  protected static $nickname = [
    self::Tp_Open          => 'Aguardando Pagamento',
    self::Tp_Created       => 'Criado',
    self::Tp_Approved      => 'Aprovado',
    self::Tp_Partial       => 'Capturado parcialmente',
    self::Tp_Overfilled    => 'Excedido',
    self::Tp_Rejected      => 'Reprovado',
    self::Tp_Canceled      => 'Cancelado',
    self::Tp_Error         => 'Com erro',
  ];
}

abstract class Type_materaTransactionType extends EnumBasic{
  const Tp_InstantPayment = 'InstantPayment';

  protected static $nickname = [
    self::Tp_InstantPayment => 'Pagamento Instantâneo',
  ];
}

abstract class Type_CallbackMatera extends EnumBasic {
  const Tp_Account_Creation                = "ACCOUNT_CREATION";
  const Tp_Deposit_Boleto                  = "DEPOSIT_BOLETO";
  const Tp_Deposit_Direct_Debit            = "DEPOSIT_DIRECT_DEBIT" ;
  const Tp_Deposit_Instant_Payment         = "DEPOSIT_INSTANT_PAYMENT";
  const Tp_Internal_Payment                = "INTERNAL_PAYMENT";
  const Tp_Instant_Payment_Alias           = "INSTANT_PAYMENT_ALIAS";
  const Tp_Internal_Payment_Unlock         = "INTERNAL_PAYMENT_UNLOCK";
  const Tp_Med                             = "MED";
  const Tp_Payment_Boleto                  = "PAYMENT_BOLETO";
  const Tp_Payment_Boleto_Cobranca         = "PAYMENT_BOLETO_COBRANCA";
  const Tp_Payment_Direct_Debit            = "PAYMENT_DIRECT_DEBIT";
  const Tp_Payment_Instant_Payment         = "PAYMENT_INSTANT_PAYMENT";
  const Tp_Withdraw_Bank_Transfer          = "WITHDRAW_BANK_TRANSFER";
  const Tp_Withdraw_Boleto                 = "WITHDRAW_BOLETO";
  const Tp_Withdraw_Instant_Payment        = "WITHDRAW_INSTANT_PAYMENT";
  const Tp_Withdraw_Instant_Payment_Return = "WITHDRAW_INSTANT_PAYMENT_RETURN";
  const Tp_Withdraw_Utilities              = "WITHDRAW_UTILITIES";

  protected static $nickname = [
    self::Tp_Account_Creation                 => "Criacao_Conta",
    self::Tp_Deposit_Boleto                   => "Deposito_Boleto",
    self::Tp_Deposit_Direct_Debit             => "Deposito_debito_direto",
    self::Tp_Deposit_Instant_Payment          => "Deposito_pagamento_instantaneo",
    self::Tp_Internal_Payment                 => "Pagamento_interno",
    self::Tp_Instant_Payment_Alias            => "Alias_pagamento_interno",
    self::Tp_Internal_Payment_Unlock          => "Desbloqueio_pagamento_interno",
    self::Tp_Med                              => "Med",
    self::Tp_Payment_Boleto                   => "Pagamento_Boleto",
    self::Tp_Payment_Boleto_Cobranca          => "Pagamento_Boleto_Cobranca",
    self::Tp_Payment_Direct_Debit             => "Pagamento_Debito_Direto",
    self::Tp_Payment_Instant_Payment          => "Pagamento_Pagamento_Intantaneo",
    self::Tp_Withdraw_Bank_Transfer           => "Retirada_Transf_Bancaria",
    self::Tp_Withdraw_Boleto                  => "Retirada_Boleto",
    self::Tp_Withdraw_Instant_Payment         => "Retirada_Pagamento_Intantaneo",
    self::Tp_Withdraw_Instant_Payment_Return  => "Retirada_Pagamento_Intantaneo_Ret",
    self::Tp_Withdraw_Utilities               => "Retirada_Utilitarios",
  ];
}


abstract class Type_materaTaxEnum extends EnumBasic {
  const Tp_ValorFixo     =  0;
  const Tp_Percentual    =  1;
  const Tp_FaixaDeValor  =  2;

  protected static $nickname = [
    self::Tp_ValorFixo    => 'Valor Fixo',
    self::Tp_Percentual   => 'Percentual',
    self::Tp_FaixaDeValor => 'Faixa de Valor',
  ];
}
