<?php

abstract class Type_TipoZoom extends EnumBasic
{
  const Tp_Fancybox = 0;
  const Tp_Cloudzoom = 1;
  const Tp_ElevateZoom = 2;
  const Tp_PhotoSwipe = 3;

  protected static $nickname = array(
    self::Tp_Fancybox => 'FancyBox',
    self::Tp_Cloudzoom => 'CloudZoom',
    self::Tp_ElevateZoom => 'ElevateZoom',
    self::Tp_PhotoSwipe => 'PhotoSwipe'
  );
}


abstract class Type_NivelCategoria extends EnumBasic
{
  const Tp_Grupo = 1;
  const Tp_SubGrupo = 2;
  const Tp_Departamento = 3;


  protected static $nickname = array(
    self::Tp_Grupo => 'Grupo',
    self::Tp_SubGrupo => 'SubGrupo',
    self::Tp_Departamento => 'Departamento'
  );
}

abstract class Type_IdLayout extends EnumBasic
{
  const Tp_IdHome = 1;
  const Tp_IdProduct = 2;
  const Tp_Idcategory = 3;
  const Tp_IdSearch = 4;
  const Tp_IdManufactured = 5;
  const Tp_IdConta = 6;
  const Tp_IdConfirme = 7;
  const Tp_IdContact = 8;
  const Tp_IdSiteMap = 9;
  const Tp_IdInformation = 11;
  const Tp_IdModuleList = 12;
  const Tp_IdFinishedOrder = 1000;
  const Tp_IdFidelity = 1001;
  const Tp_IdProductsSchoolList = 1002;
  const Tp_IdCart = 1003;

  protected static $nickname = array(
    self::Tp_IdHome => 'Id página Inicial',
    self::Tp_IdProduct => 'Id página produto',
    self::Tp_Idcategory => 'Id página Categoria',
    self::Tp_IdManufactured => 'Id página Fabricantes',
    self::Tp_IdConta => 'Id página Conta',
    self::Tp_IdConfirme => 'Id página Finalização Pedido',
    self::Tp_IdContact => 'Id página Contate-nos',
    self::Tp_IdSiteMap => 'Id página Mapa do Site',
    self::Tp_IdInformation => 'Id página de Informações',
    self::Tp_IdModuleList => 'Id página de Lista de Modulos',
    self::Tp_IdFinishedOrder => 'Id página de Pedido Finalizado',
    self::Tp_IdFidelity => 'Id página de Fidelidade',
    self::Tp_IdProductsSchoolList => 'Id página de Lista Escolar Produtos',
    self::Tp_IdCart => 'Id página Carrinho de Compras',
  );
}

abstract class Type_BannerHome extends EnumBasic
{
  const Tp_Largura = 1140;
  const Tp_Altura = 550;

  protected static $nickname = array(
    self::Tp_Largura => 'Largura do Banner',
    self::Tp_Altura => 'Altura do Banner'
  );
}

abstract class Type_Footer extends EnumBasic
{
  const Tp_Dinamic = 0;
  const Tp_Custom = 1;

  protected static $nickname = array(
    self::Tp_Dinamic => 'Dinâmico',
    self::Tp_Custom => 'Personalizado'
  );
}

abstract class Type_FooterDinamicFirstColumn extends EnumBasic
{
  const Tp_Dinamic = 0;

  protected static $nickname = array(
    self::Tp_Dinamic => 'Informações das páginas dinamicas',
  );
}

abstract class Type_FooterCustomFirstColumn extends EnumBasic
{
  const Tp_Dinamic = 'dynamic';
  const Tp_Custom = 'static';

  protected static $nickname = array(
    self::Tp_Dinamic => 'Informações das páginas dinamicas',
    self::Tp_Custom => 'Código primeira coluna rodapé'
  );
}

abstract class Type_FooterCustomContact extends EnumBasic
{
  const Tp_Easy = 'easy';
  const Tp_Advanced = 'advance';

  protected static $nickname = array(
    self::Tp_Easy => 'Facil',
    self::Tp_Advanced => 'Avançado'
  );
}

abstract class Type_FooterYesOrNo extends EnumBasic
{
  const Tp_No = 'no';
  const Tp_Yes = 'yes';

  protected static $nickname = array(
    self::Tp_No => 'Não',
    self::Tp_Yes => 'Sim'
  );
}

abstract class Type_FooterDinamicContainer extends EnumBasic
{
  const Tp_Auto = 0;

  protected static $nickname = array(
    self::Tp_Auto => 'Automático',
  );
}


abstract class Type_FooterCustomContainer extends EnumBasic
{
  const Tp_Auto = 0;
  const Tp_Custom = 1;

  protected static $nickname = array(
    self::Tp_Auto => 'Automático',
    self::Tp_Custom => 'Personalizado'
  );
}

abstract class Type_FooterDinamicContact extends EnumBasic
{
  const Tp_Easy = 'easy';

  protected static $nickname = array(
    self::Tp_Easy => 'Facil',
  );
}


abstract class TypeNotification_Status extends EnumBasic
{
  const Tp_Review = 0;
  const Tp_Storerating = 1;
  const Tp_SystemNotification = 2;

  protected static $nickname = array(
    self::Tp_Review      => 'Avaliação do Produto',
    self::Tp_Storerating => 'Avaliação da Loja',
    self::Tp_SystemNotification => 'Notificações para o Administrador'
  );
}

abstract class TypeProduct_Status extends EnumBasic
{
  const Tp_Desabilitado = 0;
  const Tp_Habilitado = 1;

  protected static $nickname = array(
    self::Tp_Desabilitado => 'Desabilitado',
    self::Tp_Habilitado => 'Habilitado'
  );
}

abstract class Type_Status extends EnumBasic
{
  const Tp_Desabilitado = 0;
  const Tp_Habilitado = 1;

  protected static $nickname = array(
    self::Tp_Desabilitado => 'Desabilitado',
    self::Tp_Habilitado => 'Habilitado'
  );
}

abstract class Type_OutlookTypeAuth extends EnumBasic
{
  const Tp_Delegated = 0;
  const Tp_Application = 1;

  protected static $nickname = array(
    self::Tp_Delegated => 'Delegada',
    self::Tp_Application => 'Aplicação'
  );
}

abstract class TypeCustomTags extends EnumBasic
{
  const Script = 0;
  const Metatag = 1;

  protected static $nickname = array(
    self::Script => 'Script',
    self::Metatag => 'Meta Tag'
  );
}


abstract class Type_StatusAccount extends EnumBasic
{
  const Not_Approved = 0;
  const Approved = 1;

  protected static $nickname = array(
    self::Not_Approved => 'Não aprovado',
    self::Approved => 'Aprovado'
  );
}

abstract class Type_EmailValidated extends EnumBasic
{
  const Not_validated = 0;
  const Validated = 1;

  protected static $nickname = array(
    self::Not_validated => 'Não validado',
    self::Validated => 'Validado'
  );
}


abstract class Type_SelectSearch extends EnumBasic
{
    const Tp_id = 0;
    const Tp_name = 1;

    protected static $nickname = array(
        self::Tp_id   => 'id',
        self::Tp_name => 'name'
    );
}

abstract class Type_AdvancedOrSimple extends EnumBasic
{
  const Tp_Advanced = 0;
  const Tp_Simple = 1;

  protected static $nickname = array(
    self::Tp_Advanced => 'Avançada',
    self::Tp_Simple => 'Simples'
  );
}

abstract class Type_Screen extends EnumBasic
{
  const Tp_FullScreen= 0;
  const Tp_Normal = 1;

  protected static $nickname = array(
    self::Tp_FullScreen=> 'Tela cheia',
    self::Tp_Normal => 'Normal'
  );
}

abstract class Type_ScreenPosition extends EnumBasic
{
  const Tp_Resize= 0;
  const Tp_Centralize = 1;

  protected static $nickname = array(
    self::Tp_Resize=> 'Redimensionar',
    self::Tp_Centralize => 'Centralizar'
  );
}

abstract class Type_ScreenTime extends EnumBasic
{
  const Tp_6 = 6;
  const Tp_8 = 8;
  const Tp_10 = 10;
  const Tp_12 = 12;
  const Tp_14 = 14;
  const Tp_16 = 16;
  const Tp_18 = 18;
  const Tp_20 = 20;

  protected static $nickname = array(
    self::Tp_6=> '6',
    self::Tp_8=> '8',
    self::Tp_10=> '10',
    self::Tp_12=> '12',
    self::Tp_14=> '14',
    self::Tp_16=> '16',
    self::Tp_18=> '18',
    self::Tp_20=> '20',
  );
}

abstract class Type_OpenLink extends EnumBasic
{
  const Tp_OpenOtherPage= '_blank';
  const Tp_OpenSamePage = '_self';

  protected static $nickname = array(
    self::Tp_OpenOtherPage=> 'Abrir em outra página',
    self::Tp_OpenSamePage => 'Abrir na mesma página'
  );
}

abstract class Type_AutoOrPersonalizado extends EnumBasic
{
  const Tp_Automatico = 0;
  const Tp_Personalizado = 1;

  protected static $nickname = array(
    self::Tp_Automatico => 'Automático',
    self::Tp_Personalizado => 'Personalizado'
  );
}

abstract class Type_AutoOrManual extends EnumBasic
{
  const Tp_Automatico = 1;
  const Tp_Manual = 0;

  protected static $nickname = array(
    self::Tp_Automatico => 'Automático',
    self::Tp_Manual => 'Manual'
  );
}

abstract class Type_Position extends EnumBasic
{
  const Tp_Top = 0;
  const Tp_Right = 1;
  const Tp_Left = 2;
  const Tp_Bottom = 3;

  protected static $nickname = array(
    self::Tp_Top => 'Topo',
    self::Tp_Right => 'Direita',
    self::Tp_Left => 'Esquerda',
    self::Tp_Bottom => 'Embaixo'
  );
}

abstract class Type_DashboardOrderStatus extends EnumBasic{
  const TpPSt_Digitacao    = 0;
  const TpPSt_Aberto       = 1;
  const TpPSt_Baixado      = 2;
  const TpPSt_Cancelado    = 3;
  const TpPSt_Faturado     = 4;

  protected static $nickname = array(
    self::TpPSt_Digitacao    => 'Digitacao',
    self::TpPSt_Aberto       => 'Aberto',
    self::TpPSt_Baixado      => 'Baixado',
    self::TpPSt_Cancelado    => 'Cancelado',
    self::TpPSt_Faturado     => 'Faturado'
  );
}

abstract class Type_DsimDnao extends EnumBasic
{
  const Tp_Nao = 0;
  const Tp_Sim = 1;

  protected static $nickname = array(
    self::Tp_Sim => 'Sim',
    self::Tp_Nao => 'Não'
  );
}

abstract class Type_Gtin extends EnumBasic
{
  const Tp_Upc = 0;
  const Tp_Ean = 1;
  const Tp_Jan = 2;
  const Tp_Isbn = 3;
  const Tp_Itf = 4;

  protected static $nickname = array(
    self::Tp_Upc => 'UPC',
    self::Tp_Ean => 'EAN',
    self::Tp_Jan => 'JAN',
    self::Tp_Isbn => 'ISBN',
    self::Tp_Itf => 'ITF-14',
  );
}

abstract class Type_OptInStyle extends EnumBasic
{
  const Tp_Center_Dialog = 'CENTER_DIALOG';
  const Tp_Bottom_Rigth_Dialog = 'BOTTOM_RIGHT_DIALOG';
  const Tp_Bottom_left_Dialog = 'BOTTOM_LEFT_DIALOG';
  const Tp_Top_Rigth_Dialog = 'TOP_RIGHT_DIALOG';
  const Tp_Top_left_Dialog = 'TOP_LEFT_DIALOG';
  const Tp_Bottom_Tray = 'BOTTOM_TRAY';

  protected static $nickname = array(
    self::Tp_Center_Dialog => 'CENTRALIZADO',
    self::Tp_Bottom_Rigth_Dialog => 'CANTO INFERIOR DIREITO',
    self::Tp_Bottom_left_Dialog => 'CANTO INFERIOR ESQUERDO',
    self::Tp_Top_Rigth_Dialog => 'CANTO SUPERIOR DIREITO',
    self::Tp_Top_left_Dialog => 'CANTO SUPERIOR ESQUERDO',
    self::Tp_Bottom_Tray => 'PARTE INFERIOR'
  );
}

abstract class Type_DsDn extends EnumBasic
{
  const Tp_Nao = 'N';
  const Tp_Sim = 'S';

  protected static $nickname = array(
    self::Tp_Sim => 'Sim',
    self::Tp_Nao => 'Não'
  );
}

abstract class Type_OrdemProdutos extends EnumBasic
{
  const Tp_Default = 0;
  const Tp_CadastroDec = 2;

  protected static $nickname = array(
    self::Tp_Default => 'Padrão',
    self::Tp_CadastroDec => 'Cadastro Decrescente'
  );
}

abstract class Type_EfeitoImagem extends EnumBasic
{
  const Tp_Padrao = 0;
  const Tp_MultiplasImgs = 1;

  protected static $nickname = array(
    self::Tp_Padrao => 'Sem efeito',
    self::Tp_MultiplasImgs => 'Com efeito',
  );
}

abstract class Type_LimitacaoItems extends EnumBasic
{
  const Tp_Variedades = 0;
  const Tp_Qtdtotalitens = 1;

  protected static $nickname = array(
    self::Tp_Variedades => 'Variedades',
    self::Tp_Qtdtotalitens => 'Quantidade Total de Itens'
  );
}

abstract class Type_ModulosObrigatorios extends EnumBasic
{
  const Tp_Wg24themeoptionpanel = 0;
  const Tp_Mercadolivre = 1;
  const Tp_FieldsRegisterBrazil = 2;
  const Tp_PpExpress = 3;
  const Tp_SubTotal = 4;
  const Tp_ModuloFutura = 5;
  const Tp_Shipping = 6;
  const Tp_Total = 7;

  protected static $nickname = array(
    self::Tp_Wg24themeoptionpanel => 'wg24themeoptionpanel',
    self::Tp_Mercadolivre => 'mercadolivre',
    self::Tp_FieldsRegisterBrazil => 'fields_register_brazil',
    self::Tp_SubTotal => 'sub_total',
    self::Tp_ModuloFutura => 'modulofutura',
    self::Tp_Shipping => 'shipping',
    self::Tp_Total => 'total'
  );
}

abstract class Type_StCieloPagamento extends EnumBasic
{
  const Tp_CieloCancelado = 0;
  const Tp_CieloPago = 1;

  protected static $nickname = array(
    self::Tp_CieloCancelado => 'Cancelado',
    self::Tp_CieloPago => 'Pago'
  );
}

abstract class Type_TntPeso extends EnumBasic
{
  const Tp_PesoTotal = 0;
  const Tp_Cubagem = 1;

  protected static $nickname = array(
    self::Tp_PesoTotal => 'Peso Total',
    self::Tp_Cubagem => 'Cubagem'
  );
}

abstract class Type_ClearSaleTipoPagamento extends EnumBasic
{
  const Tp_CartaoCredito = 1;
  const Tp_Boleto = 2;
  const Tp_Debito = 3;
  const Tp_DebitoDinheiro = 4;
  const Tp_DebitoCheque = 5;
  const Tp_Transferencia = 6;
  const Tp_SedexCobrar = 7;
  const Tp_Cheque = 8;
  const Tp_Dinheiro = 9;
  const Tp_Financiamento = 10;
  const Tp_Fatura = 11;
  const Tp_Cupom = 12;
  const Tp_MultiCheque = 13;
  const Tp_Outros = 14;

  protected static $nickname = array(
    self::Tp_CartaoCredito => 'Cartão de Crédito',
    self::Tp_Boleto => 'Boleto',
    self::Tp_Debito => 'Débito',
    self::Tp_DebitoDinheiro => 'Débito em Dinheiro',
    self::Tp_DebitoCheque => 'Débito em Cheque',
    self::Tp_Transferencia => 'Transferência',
    self::Tp_SedexCobrar => 'Sedex a Cobrar',
    self::Tp_Cheque => 'Cheque',
    self::Tp_Dinheiro => 'Dinheiro',
    self::Tp_Financiamento => 'Financiamento',
    self::Tp_Fatura => 'Fatura',
    self::Tp_Cupom => 'Cupom',
    self::Tp_MultiCheque => 'Multicheque',
    self::Tp_Outros => 'Outros'
  );
}

abstract class Type_CountryMercadoPago extends EnumBasic
{
  const Tp_Brasil = 0;

  protected static $nickname = array(
    self::Tp_Brasil => 'MLB'
  );
}

abstract class Type_PaisId extends EnumBasic
{
  const Tp_Brasil = 30;

  protected static $nickname = array(
    self::Tp_Brasil => 'Brasil'
  );
}

abstract class Type_JadLogPeso extends EnumBasic
{
  const Tp_PesoTotal = 0;
  const Tp_Cubagem = 1;

  protected static $nickname = array(
    self::Tp_PesoTotal => 'Peso Total',
    self::Tp_Cubagem => 'Cubagem'
  );
}

abstract class Type_ModJadlog extends EnumBasic
{
  const Tp_Expresso = 0;
  const Tp_Packge = 3;
  const Tp_Rodoviario = 4;
  const Tp_Economico = 5;
  const Tp_Doc = 6;
  const Tp_Corporate = 7;
  const Tp_Com = 9;
  const Tp_Internacional = 10;
  const Tp_Cargo = 12;
  const Tp_Emergencial = 14;

  protected static $nickname = array(
    self::Tp_Expresso => '0 - EXPRESSO',
    self::Tp_Packge => '3 - PACKAGE',
    self::Tp_Rodoviario => '4 - RODOVIÁRIO',
    self::Tp_Economico => '5 - ECONÔMICO',
    self::Tp_Doc => '6 - DOC',
    self::Tp_Corporate => '7 - CORPORATE',
    self::Tp_Com => '9 - .COM',
    self::Tp_Internacional => '10 - INTERNACIONAL',
    self::Tp_Cargo => '12 - CARGO',
    self::Tp_Emergencial => '14 - EMERGÊNCIAL'
  );
}

abstract class Type_CodFilialJamef extends EnumBasic
{
  const Tp_Aracaju_SE = '31';
  const Tp_Barieri_SP = '19';
  const Tp_Bauru_SP = '16';
  const Tp_BeloHorizonte_MG = '02';
  const Tp_Blumenau_SC = '09';
  const Tp_Brasilia_DF = '28';
  const Tp_Criciuma_SC = '26';
  const Tp_Campinas_SP = '03';
  const Tp_CaxiasDoSul_RS = '22';
  const Tp_Curitiba_PR = '04';
  const Tp_Divinopolis_MG = '38';
  const Tp_FeiraDeSantana_BA = '34';
  const Tp_Florianopolis_SC = '11';
  const Tp_Fortaleza_CE = '32';
  const Tp_Goiania_GO = '24';
  const Tp_JoaoPessoa_PB = '36';
  const Tp_JuizDeFora_MG = '23';
  const Tp_Joinville_SC = '08';
  const Tp_Londrina_PR = '10';
  const Tp_Manaus_AM = '25';
  const Tp_Maceio_AL = '33';
  const Tp_Maringa_PR = '12';
  const Tp_PortoAlegre_RS = '05';
  const Tp_PousoAlegre_MG = '27';
  const Tp_RibeiraoPreto_SP = '18';
  const Tp_Recife_PE = '30';
  const Tp_RioDeJaneiro_RJ = '06';
  const Tp_SaoPaulo_SP = '07';
  const Tp_SaoJoseDosCampos_SP = '21';
  const Tp_SaoJoseDoRioPreto_SP = '20';
  const Tp_Salvador_BA = '29';
  const Tp_Uberlandia_MG = '17';
  const Tp_VitoriaDaConquista_BA = '39';
  const Tp_Vitoria_ES = '14';


  protected static $nickname = array(
    self::Tp_Aracaju_SE => '31 - (AJU)Aracaju/SE',
    self::Tp_Barieri_SP => '19 - (BAR)Barueri/SP',
    self::Tp_Bauru_SP => '16 - (BAU)Bauru/SP',
    self::Tp_BeloHorizonte_MG => '02 - (BHZ)Belo Horizonte/MG',
    self::Tp_Blumenau_SC => '09 - (BNU)Blumenau/SC',
    self::Tp_Brasilia_DF => '28 - (BSB)Brasília/DF',
    self::Tp_Criciuma_SC => '26 - (CCM)Criciúma/SC',
    self::Tp_Campinas_SP => '03 - (CPQ)Campinas/SP',
    self::Tp_CaxiasDoSul_RS => '22 - (CXJ)Caxias do Sul/RS',
    self::Tp_Curitiba_PR => '04 - (CWB)Curitiba/PR',
    self::Tp_Divinopolis_MG => '38 - (DIV)Divinópolis/MG',
    self::Tp_FeiraDeSantana_BA => '34 - (FES)Feira de Santana/BA',
    self::Tp_Florianopolis_SC => '11 - (FLN)Florianópolis/SC',
    self::Tp_Fortaleza_CE => '32 - (FOR)Fortaleza/CE',
    self::Tp_Goiania_GO => '24 - (GYN)Goiânia/GO',
    self::Tp_JoaoPessoa_PB => '36 - (JPA)João Pessoa/PB',
    self::Tp_JuizDeFora_MG => '23 - (JDF)Juiz de Fora/MG',
    self::Tp_Joinville_SC => '08 - (JOI)Joinville/SC',
    self::Tp_Londrina_PR => '10 - (LDB)Londrina/PR',
    self::Tp_Manaus_AM => '25 - (MAO)Manaus/AM',
    self::Tp_Maceio_AL => '33 - (MCZ)Maceió/AL',
    self::Tp_Maringa_PR => '12 - (MGF)Maringá/PR',
    self::Tp_PortoAlegre_RS => '05 - (POA)Porto Alegre/RS',
    self::Tp_PousoAlegre_MG => '27 - (PSA)Pouso Alegre/MG',
    self::Tp_RibeiraoPreto_SP => '18 - (RAO)Ribeirão Preto/SP',
    self::Tp_Recife_PE => '30 - (REC)Recife/PE',
    self::Tp_RioDeJaneiro_RJ => '06 - (RIO)Rio de Janeiro/RJ',
    self::Tp_SaoPaulo_SP => '07 - (SAO)São Paulo/SP',
    self::Tp_SaoJoseDosCampos_SP => '21 - (SJK)São José dos Campos/SP',
    self::Tp_SaoJoseDoRioPreto_SP => '20 - (SJP)São José do Rio Preto/SP',
    self::Tp_Salvador_BA => '29 - (SSA)Salvador/BA',
    self::Tp_Uberlandia_MG => '17 - (UDI)Uberlândia/MG',
    self::Tp_VitoriaDaConquista_BA => '39 - (VDC)Vitória da Conquista/BA',
    self::Tp_Vitoria_ES => '14 - (VIX)Vitória/ES'
  );
}

abstract class Type_ProdutoJameF extends EnumBasic
{
  const Tp_Alimentos = '000010';
  const Tp_Calcados = '000014';
  const Tp_Confeccoes = '000008';
  const Tp_NotaFiscal = '000004';
  const Tp_Cosmeticos = '000011';
  const Tp_Jornais = '000006';
  const Tp_Livros = '000005';
  const Tp_Material = '000013';

  protected static $nickname = array(
    self::Tp_Alimentos => '000010 - ALIMENTOS INDUSTRIALIZADOS',
    self::Tp_Calcados => '000014 - CALÇADOS',
    self::Tp_Confeccoes => '000008 - CONFECÇÕES',
    self::Tp_NotaFiscal => '000004 - CONFORME NOTA FISCAL',
    self::Tp_Cosmeticos => '000011 - COSMÉTICOS / MATERIAL CIRÚRGICO',
    self::Tp_Jornais => '000006 - JORNAIS / REVISTAS',
    self::Tp_Livros => '000005 - LIVROS',
    self::Tp_Material => '000013 - MATERIAL ESCOLAR'
  );
}

abstract class Type_TransporteJameF extends EnumBasic
{
  const Tp_Rodo = '1';
  const Tp_Aero = '2';

  protected static $nickname = array(
    self::Tp_Rodo => 'Rodoviário',
    self::Tp_Aero => 'Aéreo'
  );
}

abstract class Type_UrlRewrite extends EnumBasic
{
  const Tp_File = 0;
  const Tp_Expression = 1;

  protected static $nickname = array(
    self::Tp_File => '../.htaccess',
    self::Tp_Expression => '{{cli_folder_path}}'
  );
}

abstract class Type_Domain extends EnumBasic
{
  const Tp_File = 0;
  const Tp_Begin = 1;
  const Tp_End = 2;

  protected static $nickname = array(
    self::Tp_File => '../.htaccess',
    self::Tp_Begin => '[begin][domain]',
    self::Tp_End => '[end][domain]'
  );
}

abstract class Type_SubDomain extends EnumBasic
{
  const Tp_File = 0;
  const Tp_Begin = 1;
  const Tp_End = 2;

  protected static $nickname = array(
    self::Tp_File => '../.htaccess',
    self::Tp_Begin => '[begin][subdomain]',
    self::Tp_End => '[end][subdomain]'
  );
}

abstract class Type_DefaultValues extends EnumBasic
{
  const Tp_Nenhum = 'nenhum';
  const Tp_Futuragrade_Quantidade_Exibicao = 10;
  const Tp_MaxRating = 5;
  const Tp_LimitModules99 = 99;
  const Tp_LimitModules24 = 24;
  const Tp_Isento = 'ISENTO';
  const Tp_PromocaoGeral = 9999;
  const Tp_UrlLiberada = 'api';
  const Tp_UserFuturaApp = 'contato@futurasistemas.com.br';
  const Tp_Payment = 'payment';
  const Tp_OrderStatusAbandoned = 0;
  const Tp_MlOrderSearchLimit = 50;

  protected static $nickname = array(
    self::Tp_Nenhum => 'Nenhum',
    self::Tp_Futuragrade_Quantidade_Exibicao => 'Utilizado para padronizar a quantidade de itens que será exibidos no modulo da grade',
    self::Tp_MaxRating => 'Quantidade maxima de avaliação disponivel',
    self::Tp_LimitModules99 => 'Quantidade maxima aceita nos campos de limite dos modulos de listagem de produtos quando for nas laterais e grid',
    self::Tp_LimitModules24 => 'Quantidade maxima aceita nos campos de limite dos modulos de listagem de produtos quando for listagem em slider',
    self::Tp_Isento => 'Valor padrão para clientes com inscrição estadual isentas',
    self::Tp_PromocaoGeral => 'Valor padrão para o modulo de produtos por promoção',
    self::Tp_UrlLiberada => 'Valor padrão que sempre libera a url nas telas de bloqueio.(manutenção, desenvolvimento, maior18)',
    self::Tp_UserFuturaApp => 'Usuário cadastrado para testes da playstore e appstore',
    self::Tp_Payment => 'Modulos de pagamento',
    self::Tp_OrderStatusAbandoned => 'Pedidos Abandonados',
    self::Tp_MlOrderSearchLimit => 'Limite de pedidos que podem ser pesquisados no mercado livre'
  );
}

abstract class Type_VizualizacaoProdutos extends EnumBasic
{
  const Tp_Grid = 0;
  const Tp_List = 1;

  protected static $nickname = array(
    self::Tp_Grid => 'Grade',
    self::Tp_List => 'Lista'
  );
}

abstract class Type_Destaques extends EnumBasic
{
  const Tp_Grid = 0;
  const Tp_Slider = 1;

  protected static $nickname = array(
    self::Tp_Grid => 'Grade',
    self::Tp_Slider => 'Slider'
  );
}

abstract class Type_MessageOfAge extends EnumBasic
{
  const Tp_Selecione = 0;
  const Tp_TelaInteira = 1;
  const Tp_MensagemNaTelaSuspensa = 2;

  protected static $nickname = array(
    self::Tp_Selecione => 'Selecione uma Opção',
    self::Tp_TelaInteira => 'Página Inteira',
    self::Tp_MensagemNaTelaSuspensa => 'Mensagem Suspensa'
  );
}

abstract class Type_ProdutoGrade extends EnumBasic
{
  const Tp_MercadoriaRevenda = 14;
  const Tp_ProdutoAcabado = 16;

  protected static $nickname = array(
    self::Tp_MercadoriaRevenda => '00 - Mercadoria para revenda',
    self::Tp_ProdutoAcabado => '04 - Produto acabado'
  );
}

abstract class Type_BackgroundRepeat extends EnumBasic
{
  const Tp_Repeat = 'repeat';
  const Tp_RepeatX = 'repeat-x';
  const Tp_RepeatY = 'repeat-y';
  const Tp_NoRepeat = 'no-repeat';

  protected static $nickname = array(
    self::Tp_Repeat => 'Repetir',
    self::Tp_RepeatX => 'Repetir Horizontal',
    self::Tp_RepeatY => 'Repetir Vertical',
    self::Tp_NoRepeat => 'Não Repetir'
  );
}

abstract class Type_ProdutoGradeImg extends EnumBasic
{
  const Tp_Width = 80;
  const Tp_Height = 80;

  protected static $nickname = array(
    self::Tp_Width => 'Tamanho padrão para largura das fotos da grade',
    self::Tp_Height => 'Tamanho padrão para altura das fotos da grade'
  );
}

abstract class Type_TntServico extends EnumBasic
{
  const Tp_Rodo = 'RNC';
  const Tp_Aero = 'ANC';

  protected static $nickname = array(
    self::Tp_Rodo => 'Rodoviário Nacional',
    self::Tp_Aero => 'Aéreo Nacional'
  );
}

abstract class Type_TntFrete extends EnumBasic
{
  const Tp_Cif = 'C';
  const Tp_Fob = 'F';

  protected static $nickname = array(
    self::Tp_Cif => 'Cif',
    self::Tp_Fob => 'Fob'
  );
}

/*Inicio - Tipos referente ao módulo reduzido*/

abstract class Type_SistemaReduzidoPagamento extends EnumBasic
{
  const Tp_Reduzido_Orcamento = 0;
  const Tp_Reduzido_Pagemento_Dinamico = 1;

  protected static $nickname = array(
    self::Tp_Reduzido_Orcamento => 'orcamento',
    self::Tp_Reduzido_Pagemento_Dinamico => 'pagamentodinamico'
  );
}

abstract class Type_SistemaReduzidoEnvio extends EnumBasic
{
  const Tp_Reduzido_TaxaFixa = 0;
  const Tp_Reduzido_FreteGratis = 1;
  const Tp_Reduzido_FreteCombinar = 2;
  const Tp_Reduzido_RetirarLoja = 3;

  protected static $nickname = array(
    self::Tp_Reduzido_TaxaFixa => 'flat',
    self::Tp_Reduzido_FreteGratis => 'free',
    self::Tp_Reduzido_FreteCombinar => 'freteacombinar',
    self::Tp_Reduzido_RetirarLoja => 'pickup'
  );
}

abstract class Type_SistemaReduzidoFinalizacao extends EnumBasic
{
  const Tp_Reduzido_Cupom = 0;
  const Tp_Reduzido_CreditoLoja = 1;
  const Tp_Reduzido_DescontoFaixavalorpedido = 2;
  const Tp_Reduzido_DescontoPagamento = 3;
  const Tp_Reduzido_TaxaPedidosPequenos = 4;
  const Tp_Reduzido_PontosFidelidade = 5;
  const Tp_Reduzido_Frete = 6;
  const Tp_Reduzido_SubTotal = 7;
  const Tp_Reduzido_Total = 8;
  const Tp_Reduzido_ValePresente = 9;
  const Tp_Reduzido_AcrescimoPagamento = 10;

  protected static $nickname = array(
    self::Tp_Reduzido_Cupom => 'coupon',
    self::Tp_Reduzido_CreditoLoja => 'credit',
    self::Tp_Reduzido_DescontoFaixavalorpedido => 'descontofaixavalorpedido',
    self::Tp_Reduzido_DescontoPagamento => 'descontoporpagamento',
    self::Tp_Reduzido_AcrescimoPagamento => 'acrescimoporpagamento',
    self::Tp_Reduzido_TaxaPedidosPequenos => 'low_order_fee',
    self::Tp_Reduzido_PontosFidelidade => 'reward',
    self::Tp_Reduzido_Frete => 'shipping',
    self::Tp_Reduzido_SubTotal => 'sub_total',
    self::Tp_Reduzido_Total => 'total',
    self::Tp_Reduzido_ValePresente => 'voucher'
  );
}

/*Fim - Tipos referente ao módulo reduzido*/

abstract class Type_RamoEcommerce extends EnumBasic
{
  const Tp_RmEcmrc_B2B = 0;
  const Tp_RmEcmrc_B2C = 1;

  protected static $nickname = array(
    self::Tp_RmEcmrc_B2B => 'Business to Business',
    self::Tp_RmEcmrc_B2C => 'Business to Customer'
  );
}

/*Tipos mandae*/

abstract class Type_MandaeAR extends EnumBasic
{
  const Tp_MandaeAR_SolicitoAR = 0;
  const Tp_MandaeAR_SemAR = 1;

  protected static $nickname = array(
    self::Tp_MandaeAR_SolicitoAR => 'Solicito AR (+Taxas)',
    self::Tp_MandaeAR_SemAR => 'Sem AR'
  );
}

abstract class Type_MandaeTransportadora extends EnumBasic
{
  const Tp_MandaeTrs_EscolheInteligente = 0;
  const Tp_MandaeTrs_RestricaoCorreios = 1;

  protected static $nickname = array(
    self::Tp_MandaeTrs_EscolheInteligente => 'Escolhe Inteligente',
    self::Tp_MandaeTrs_RestricaoCorreios => 'Restrição Correios'
  );
}

abstract class Type_MandaeTipoServico extends EnumBasic
{
  const Tp_MandaeTpSrvc_Rapido = 0;
  const Tp_MandaeTpSrvc_Economico = 1;
  const Tp_MandaeTpSrvc_Normal = 2;

  protected static $nickname = array(
    self::Tp_MandaeTpSrvc_Rapido => 'Rápido',
    self::Tp_MandaeTpSrvc_Economico => 'Econômico',
    self::Tp_MandaeTpSrvc_Normal => 'Normal'
  );
}

abstract class Type_WatermarkPosition extends EnumBasic
{
    const Tp_TopLeft = 1;
    const Tp_TopRigth = 2;
    const Tp_BottomLeft = 3;
    const Tp_BottomRigth = 4;
    const Tp_Center = 5;

    protected static $nickname = array(
        self::Tp_TopLeft => 'Superior à Esquerda',
        self::Tp_TopRigth => 'Superior à Direita',
        self::Tp_BottomLeft => 'Inferior à Esquerda',
        self::Tp_BottomRigth => 'Inferior à Direita',
        self::Tp_Center => 'Centralizado'
    );
}


abstract class Type_abstractFactory extends EnumBasic{
  const Tp_correios = 'shipping/correios';

  protected static $nickname = array(
    self::Tp_correios => 'correios',
  );
}

abstract class  Type_servicosAdicionais extends EnumBasic{
  const Tp_correios_aviso_recebimento     = '001';
  const Tp_correios_mao_propria           = '002';
  const Tp_correios_entrega_vizinho       = '011';
  const Tp_correios_eleicao               = '017';
  const Tp_correios_vlr_declarado_na      = '019';
  const Tp_correios_recebimento_eletr     = '021';
  const Tp_correios_reg_nacional          = '025';
  const Tp_correios_declarado_avista      = '032';
  const Tp_correios_grandes_formatos      = '057';
  const Tp_correios_declarado_standard    = '064';
  const Tp_correios_declarado_mini        = '065';
  const Tp_correios_declarado_Expre_RFID  = '075';
  const Tp_correios_declarado_stand_RFID  = '076';

  protected static $nickname = array(
    self::Tp_correios_aviso_recebimento => 'Aviso de Recebimento',
    self::Tp_correios_mao_propria => 'Mão Própria Nacional',
    self::Tp_correios_entrega_vizinho => 'Entrega no Vizinho',
    self::Tp_correios_eleicao => 'Eleição',
    self::Tp_correios_vlr_declarado_na => 'Valor Declarado Nacional Premium e Expresso',
    self::Tp_correios_recebimento_eletr => 'Aviso de Recebimento Eletrônico',
    self::Tp_correios_reg_nacional => 'Registro Nacional',
    self::Tp_correios_declarado_avista => 'VALOR DECLARADO NAC A VISTA',
    self::Tp_correios_grandes_formatos => 'Grandes Formatos (GF)',
    self::Tp_correios_declarado_standard => 'Valor Declarado Nacional Standard',
    self::Tp_correios_declarado_mini => 'Valor Declarado Correios Mini Envios',
    self::Tp_correios_declarado_Expre_RFID => 'Valor Declarado Expresso RFID',
    self::Tp_correios_declarado_stand_RFID => 'Valor Declarado Standard RFID',
  );

}

abstract class Type_CorreiosServico extends EnumBasic
{
  const Tp_correios_sedex_04014 = '04014';
  const Tp_correios_sedex_40096 = '40096';
  const Tp_correios_sedex_40436 = '40436';
  const Tp_correios_sedex_40444 = '40444';
  const Tp_correios_sedex_40568 = '40568';
  const Tp_correios_sedex_40606 = '40606';
  const Tp_correios_sedex_04162 = '04162';
  const Tp_correios_sedex_04189 = '04189';
  const Tp_correios_sedex_04197 = '04197';

  const Tp_correios_sedex_40290 = '40290';
  const Tp_correios_sedex_41599 = '41599';
  const Tp_correios_sedex_40215 = '40215';
  const Tp_correios_sedex_40169 = '40169';

  const Tp_correios_sedex_40045 = '40045';
  const Tp_correios_sedex_40126 = '40126';

  const Tp_correios_pac_04510 = '04510';
  const Tp_correios_pac_04669 = '04669';
  const Tp_correios_pac_04685 = '04685';
  const Tp_correios_pac_04693 = '04693';
  const Tp_correios_pac_41068 = '41068';

  protected static $nickname = array(
    self::Tp_correios_sedex_04014 => 'Sedex sem contrato (04014)',
    self::Tp_correios_sedex_40096 => 'Sedex com contrato (40096)',
    self::Tp_correios_sedex_40436 => 'Sedex com contrato (40436)',
    self::Tp_correios_sedex_40444 => 'Sedex com contrato (40444)',
    self::Tp_correios_sedex_40568 => 'Sedex com contrato (40568)',
    self::Tp_correios_sedex_40606 => 'Sedex com contrato (40606)',
    self::Tp_correios_sedex_04162 => 'Sedex com contrato (04162)',
    self::Tp_correios_sedex_04189 => 'Sedex com contrato (04189)',
    self::Tp_correios_sedex_04197 => 'Sedex com contrato (04197)',

    self::Tp_correios_sedex_40290 => 'Sedex hoje sem contrato (40290)',
    self::Tp_correios_sedex_41599 => 'Sedex hoje com contrato (41599)',
    self::Tp_correios_sedex_40215 => 'Sedex 10 (40215)',
    self::Tp_correios_sedex_40169 => 'Sedex 12 (40169)',

    self::Tp_correios_sedex_40045 => 'Sedex a cobrar sem contrato (40045)',
    self::Tp_correios_sedex_40126 => 'Sedex a cobrar com contrato (40126)',

    self::Tp_correios_pac_04510 => 'PAC sem contrato (04510)',
    self::Tp_correios_pac_04669 => 'PAC com contrato (04669)',
    self::Tp_correios_pac_04685 => 'PAC com contrato (04685)',
    self::Tp_correios_pac_04693 => 'PAC com contrato (04693)',
    self::Tp_correios_pac_41068 => 'PAC com contrato (41068)'
  );
}

abstract class Type_CorreiosSemValorAdd extends EnumBasic
{
  const Tp_CorreiosSemValorAdd_40045 = 0;
  const Tp_CorreiosSemValorAdd_40126 = 1;

  protected static $nickname = array(
    self::Tp_CorreiosSemValorAdd_40045 => '40045',
    self::Tp_CorreiosSemValorAdd_40126 => '40126'
  );
}

abstract class Type_CorreiosSemPeriodoAdd extends EnumBasic
{
  const Tp_CorreiosSemPeriodoAdd_40290 = 0;
  const Tp_CorreiosSemPeriodoAdd_41599 = 1;
  const Tp_CorreiosSemPeriodoAdd_40215 = 2;
  const Tp_CorreiosSemPeriodoAdd_40169 = 3;

  protected static $nickname = array(
    self::Tp_CorreiosSemPeriodoAdd_40290 => '40290',
    self::Tp_CorreiosSemPeriodoAdd_41599 => '41599',
    self::Tp_CorreiosSemPeriodoAdd_40215 => '40215',
    self::Tp_CorreiosSemPeriodoAdd_40169 => '40169'
  );
}

abstract class Type_CorreiosTipoCalculo extends EnumBasic
{
  const Tp_CorreiosTpCalcDimensao = 0;
  const Tp_CorreiosTpCalcVolume = 1;

  protected static $nickname = array(
    self::Tp_CorreiosTpCalcDimensao => 'Cálculo por dimensões',
    self::Tp_CorreiosTpCalcVolume => 'Cálculo por volume'
  );
}

abstract class Type_Estados extends EnumBasic
{
  const Tp_AC = 1;
  const Tp_AL = 2;
  const Tp_AP = 3;
  const Tp_AM = 4;
  const Tp_BA = 5;
  const Tp_CE = 6;
  const Tp_DF = 7;
  const Tp_ES = 8;
  const Tp_GO = 9;
  const Tp_MA = 10;
  const Tp_MT = 11;
  const Tp_MS = 12;
  const Tp_MG = 13;
  const Tp_PA = 14;
  const Tp_PB = 15;
  const Tp_PR = 16;
  const Tp_PE = 17;
  const Tp_PI = 18;
  const Tp_RJ = 19;
  const Tp_RN = 20;
  const Tp_RS = 21;
  const Tp_RO = 22;
  const Tp_RR = 23;
  const Tp_SC = 24;
  const Tp_SP = 25;
  const Tp_SE = 26;
  const Tp_TO = 27;

  protected static $nickname = array(
    self::Tp_AC => 'Acre',
    self::Tp_AL => 'Alagoas',
    self::Tp_AP => 'Amapá',
    self::Tp_AM => 'Amazonas',
    self::Tp_BA => 'Bahia',
    self::Tp_CE => 'Ceará',
    self::Tp_DF => 'Distrito Federal',
    self::Tp_ES => 'Espírito Santo',
    self::Tp_GO => 'Goiás',
    self::Tp_MA => 'Maranhão',
    self::Tp_MT => 'Mato Grosso',
    self::Tp_MS => 'Mato Grosso do Sul',
    self::Tp_MG => 'Minas Gerais',
    self::Tp_PA => 'Pará',
    self::Tp_PB => 'Paraíba',
    self::Tp_PR => 'Paraná',
    self::Tp_PE => 'Pernambuco',
    self::Tp_PI => 'Piauí',
    self::Tp_RJ => 'Rio de Janeiro',
    self::Tp_RN => 'Rio Grande do Norte',
    self::Tp_RS => 'Rio Grande do Sul',
    self::Tp_RO => 'Rondônia',
    self::Tp_RR => 'Roraima',
    self::Tp_SC => 'Santa Catarina',
    self::Tp_SP => 'São Paulo',
    self::Tp_SE => 'Sergipe',
    self::Tp_TO => 'Tocantins'
  );
}

abstract class Type_EstadosSigla extends EnumBasic
{
  const Tp_AC = 1;
  const Tp_AL = 2;
  const Tp_AP = 3;
  const Tp_AM = 4;
  const Tp_BA = 5;
  const Tp_CE = 6;
  const Tp_DF = 7;
  const Tp_ES = 8;
  const Tp_GO = 9;
  const Tp_MA = 10;
  const Tp_MT = 11;
  const Tp_MS = 12;
  const Tp_MG = 13;
  const Tp_PA = 14;
  const Tp_PB = 15;
  const Tp_PR = 16;
  const Tp_PE = 17;
  const Tp_PI = 18;
  const Tp_RJ = 19;
  const Tp_RN = 20;
  const Tp_RS = 21;
  const Tp_RO = 22;
  const Tp_RR = 23;
  const Tp_SC = 24;
  const Tp_SP = 25;
  const Tp_SE = 26;
  const Tp_TO = 27;

  protected static $nickname = array(
    self::Tp_AC => 'AC',
    self::Tp_AL => 'AL',
    self::Tp_AP => 'AP',
    self::Tp_AM => 'AM',
    self::Tp_BA => 'BA',
    self::Tp_CE => 'CE',
    self::Tp_DF => 'DF',
    self::Tp_ES => 'ES',
    self::Tp_GO => 'GO',
    self::Tp_MA => 'MA',
    self::Tp_MT => 'MT',
    self::Tp_MS => 'MS',
    self::Tp_MG => 'MG',
    self::Tp_PA => 'PA',
    self::Tp_PB => 'PB',
    self::Tp_PR => 'PR',
    self::Tp_PE => 'PE',
    self::Tp_PI => 'PI',
    self::Tp_RJ => 'RJ',
    self::Tp_RN => 'RN',
    self::Tp_RS => 'RS',
    self::Tp_RO => 'RO',
    self::Tp_RR => 'RR',
    self::Tp_SC => 'SC',
    self::Tp_SP => 'SP',
    self::Tp_SE => 'SE',
    self::Tp_TO => 'TO'
  );
}

abstract class Type_CadastroPessoa extends EnumBasic
{
  const Tp_Fisico = 'F';
  const Tp_Juridico = 'J';
  const Tp_Ambos = 'A';

  protected static $nickname = array(
    self::Tp_Fisico => 'Pessoa Física',
    self::Tp_Juridico => 'Pessoa Jurídica'
  );
  protected static $others = array(
    self::Tp_Ambos => 'Ambos'
  );
}

abstract class Type_HabilitarPessoa extends enumbasic
{
  const Tp_Fisico = 0;
  const Tp_Juridico = 1;
  const Tp_Ambos = 2;

  protected static $nickname = array(
    self::Tp_Fisico => 'Pessoa Física',
    self::Tp_Juridico => 'Pessoa Jurídica',
    self::Tp_Ambos => 'Ambos'
  );
}

abstract class Type_BoletoBanco extends EnumBasic
{
  const Tp_BoletoBb = 0;
  const Tp_BoletoBradesco = 1;
  const TP_BoletoSantander = 2;

  protected static $nickname = array(
    self::Tp_BoletoBb => 'boleto_bb',
    self::Tp_BoletoBradesco => 'boleto_bradesco',
    self::TP_BoletoSantander => 'boleto_santander'
  );
}

abstract class Type_StatusEn extends EnumBasic
{
  const Tp_Enable = 'enable';
  const Tp_Disable = 'disable';

  protected static $nickname = array(
    self::Tp_Enable => 'Habilitado',
    self::Tp_Disable => 'Desabilitado'
  );
}

abstract class Type_StatusENG extends EnumBasic
{
    const Tp_Desabilitado  = "disabled" ;
    const Tp_Habilitado    = "enabled" ;

    protected static $nickname = array(
        self::Tp_Desabilitado  => 'Desabilitado',
        self::Tp_Habilitado    => 'Habilitado'
    );
}

abstract class Type_UserGroup extends EnumBasic
{
  const Tp_Admin = 1;
  const Tp_Demo = 2;

  protected static $nickname = array(
    self::Tp_Admin => 'Administrador',
    self::Tp_Demo => 'Demonstração'
  );
}

abstract class Type_Tamanho extends EnumBasic
{
  const Tp_MuitoPequeno = 1;
  const Tp_Pequeno = 2;
  const Tp_Medio = 3;
  const Tp_Grande = 4;
  const Tp_MuitoGrande = 5;
  const Tp_SemEspaco = 6;

  protected static $nickname = array(
    self::Tp_MuitoPequeno => 'Muito pequeno',
    self::Tp_Pequeno => 'Pequeno',
    self::Tp_Medio => 'Medio',
    self::Tp_Grande => 'Grande',
    self::Tp_MuitoGrande => 'Muito grande',
    self::Tp_SemEspaco => 'Sem espaço'
  );
}

abstract class Type_TamanhoPadding extends EnumBasic
{
  const Tp_MuitoPequeno = 1;
  const Tp_Pequeno = 2;
  const Tp_Medio = 3;
  const Tp_Grande = 4;
  const Tp_MuitoGrande = 5;
  const Tp_SemEspaco = 6;

  protected static $nickname = array(
    self::Tp_MuitoPequeno => 'padding-x-small',
    self::Tp_Pequeno => 'padding-small',
    self::Tp_Medio => 'padding-medium',
    self::Tp_Grande => 'padding-large',
    self::Tp_MuitoGrande => 'padding-x-large',
    self::Tp_SemEspaco => ''
  );
}

abstract class Type_SpaceBetween extends EnumBasic
{
  const Tp_MuitoPequeno = 1;
  const Tp_Pequeno = 2;
  const Tp_Medio = 3;
  const Tp_Grande = 4;
  const Tp_MuitoGrande = 5;
  const Tp_SemEspaco = 6;

  protected static $nickname = array(
    self::Tp_MuitoPequeno => 8,
    self::Tp_Pequeno => 16,
    self::Tp_Medio => 24,
    self::Tp_Grande => 32,
    self::Tp_MuitoGrande => 40,
    self::Tp_SemEspaco => 0
  );
}

abstract class Type_ColunasAutomaticas extends EnumBasic
{
  const Tp_Um = 1;
  const Tp_Dois = 2;
  const Tp_Tres = 3;
  const Tp_Quatro = 4;
  const Tp_Cinco = 5;
  const Tp_Seis = 6;

  protected static $nickname = array(
    self::Tp_Um => 'col-auto-1',
    self::Tp_Dois => 'col-auto-2',
    self::Tp_Tres => 'col-auto-3',
    self::Tp_Quatro => 'col-auto-4',
    self::Tp_Cinco => 'col-auto-5',
    self::Tp_Seis => 'col-auto-6'
  );
}

abstract class Type_PositionColumn extends EnumBasic
{
  const Tp_Top = 'content_top';
  const Tp_Bottom = 'content_bottom';
  const Tp_Left = 'column_left';
  const Tp_Refinar = 'column_refinar';

  protected static $nickname = array(
    self::Tp_Top => 'Conteúdo do Topo',
    self::Tp_Bottom => 'Conteúdo do Rodapé',
    self::Tp_Left => 'Coluna da Esquerda',
    self::Tp_Refinar => 'Refinar Busca Mobile'
  );
}

abstract class Type_Desconto extends EnumBasic
{
  const Tp_Fixo = 1;
  const Tp_Porcentagem = 2;

  protected static $nickname = array(
    self::Tp_Fixo => 'Valor Fixo',
    self::Tp_Porcentagem => 'Percentual do Pedido'
  );
}

abstract class Type_Acrescimo extends EnumBasic
{
  const Tp_Fixo = 1;
  const Tp_Porcentagem = 2;

  protected static $nickname = array(
    self::Tp_Fixo => 'Valor Fixo',
    self::Tp_Porcentagem => 'Percentual do Pedido'
  );
}

abstract class Type_Discount extends EnumBasic
{
  const Percent = 1;

  protected static $nickname = array(
    self::Percent => 'Percentual do Pedido'
  );
}

abstract class Type_Addition extends Enumbasic{
  const Percent = 1;

  protected static $nickname = array(
    self::Percent => 'Percentual do Pedido'
  );
}

abstract class Type_DescontoAcrescimo extends EnumBasic
{
  const Tp_Desconto = 1;
  const Tp_Acrescimo = 2;

  protected static $nickname = array(
    self::Tp_Desconto     => 'Desconto',
    self::Tp_Acrescimo    => 'Acréscimo',
  );
}

abstract class Type_ExtensionSubType extends EnumBasic
{
  const Tp_Default = 0;
  const Tp_Totalizador = 1;
  const Tp_TotalizadorFrete = 2;
  const Tp_TotalizadorAcrescimoDesconto = 3;
  const Tp_Payment = 4;
  const Tp_Marketplace = 5;

  protected static $nickname = array(
    self::Tp_Default        => 'Padrao',
    self::Tp_Totalizador    => 'Totalizador',
    self::Tp_TotalizadorFrete => 'Totalizador de frete',
    self::Tp_TotalizadorAcrescimoDesconto  => 'Totalizador Acréscimo/Desconto',
    self::Tp_Payment  => 'Pagamento',
    self::Tp_Marketplace  => 'Marketplace',
  );
}

abstract class Type_ListCodProduct extends EnumBasic
{
  const Tp_CodReferencia = 1;
  const Tp_CodProdEcommerce = 2;
  const Tp_CodProdFuturaServer = 3;
  const Tp_CodBarras = 4;

  protected static $nickname = array(
    self::Tp_CodReferencia => 'Referência',
    self::Tp_CodProdEcommerce => 'Código do Produto no Ecommerce',
    self::Tp_CodProdFuturaServer => 'Código do Produto no Futura Server',
    self::Tp_CodBarras => 'Código de Barras GTIN/EAN/UPC'
  );
}

abstract class Type_ScriptPosition extends EnumBasic
{
  const Tp_Head = 1;
  const Tp_EndBody = 2;

  protected static $nickname = array(
    self::Tp_Head => 'Cabeçalho',
    self::Tp_EndBody => 'Rodapé'
  );
}

abstract class Type_ModulesListBanner extends EnumBasic
{
  const Tp_Bestseller = 'bestseller';
  const Tp_Latest = 'latest';
  const Tp_Random = 'random';
  const Tp_ProductViewedAll = 'product_viewed_all';
  const Tp_ProductVisualized = 'product_visualized';

  protected static $nickname = array(
    self::Tp_Bestseller => 'Mais Vendidos',
    self::Tp_Latest => 'Novos Produtos',
    self::Tp_Random => 'Produtos Aleatórios',
    self::Tp_ProductViewedAll => 'Produtos Visualizados Geral',
    self::Tp_ProductVisualized => 'Produtos Visualizados'
  );
}

abstract class Type_OrderStatus extends EnumBasic
{
  const Tp_Neutra = 0;
  const Tp_Positiva = 1;
  const Tp_Negativa = 2;

  protected static $nickname = array(
    self::Tp_Neutra => 'Neutra',
    self::Tp_Positiva => 'Positiva',
    self::Tp_Negativa => 'Negativa'
  );
}

abstract class Type_ContactTo extends EnumBasic
{
  const Tp_Newsletter = 'newsletter';
  const Tp_CustomerAll = 'customer_all';
  const Tp_All_Customers_Abandoned_Carts = 'all_customers_abandoned_carts';
  const Tp_CustomerGroup = 'customer_group';
  const Tp_Customer = 'customer';
  const Tp_Product = 'product';
  const Tp_ModuleNewsletter = 'module_newsletter';

  protected static $nickname = array(
    self::Tp_Newsletter => 'Todos os assinantes do informativo',
    self::Tp_CustomerAll => 'Todos os clientes',
    self::Tp_All_Customers_Abandoned_Carts => 'Todos os clientes com carrinho abandonado',
    self::Tp_CustomerGroup => 'Todos os grupos de clientes',
    self::Tp_Customer => 'Clientes',
    self::Tp_Product => 'Clientes que compraram produto específico',
    self::Tp_ModuleNewsletter => 'Clientes da Newsletter'
  );
}

/*
 * Ao adicionar um novo status nesse tipo verificar se não ira impactar
 * na fila de disparo de email
 */
abstract class Type_OrigemSistema extends EnumBasic
{
  const Tp_Ecommerce = 0;
  const Tp_Marketplace = 1;
  const Tp_App = 2;

  protected static $nickname = array(
    self::Tp_Ecommerce => 'E-commerce',
    self::Tp_Marketplace => 'MarketPlace',
    self::Tp_App => 'App'
  );
}

abstract class Type_EmailProtocol extends EnumBasic
{
  const Tp_Mail = 'mail';
  const Tp_Smtp = 'smtp';
  const Tp_Gmail = 'gmail';
  const Tp_Outlook = 'outlook';

  protected static $nickname = array(
    self::Tp_Mail => 'MAIL',
    self::Tp_Smtp => 'SMTP',
    self::Tp_Gmail => 'GMAIL',
    self::Tp_Outlook => 'OUTLOOK'
  );
}

abstract class Type_MarketingEmailProtocol extends EnumBasic
{
  const Tp_Mail = 'mail';
  const Tp_Smtp = 'smtp';


  protected static $nickname = array(
    self::Tp_Mail => 'MAIL',
    self::Tp_Smtp => 'SMTP'
  );
}

abstract class Type_MarketplaceInt extends EnumBasic
{
  // Esse tipo tem que bater com os tipos do futura server, então ver como está la antes de criar um novo (coisa mal feita)
  // TIPO: TPedidoEcmMarketplace
  // CAMPO: ECM_TIPO_INTEGRACAO

  const Tp_Nenhum = 0;
  const Tp_LojasAmericanas = 1;
  const Tp_Submarino = 2;
  const Tp_SouBarato = 3;
  const Tp_Shoptime = 4;
  const Tp_Extra = 5;
  const Tp_Zoom = 6;
  const Tp_RicardoEletro = 7;
  const Tp_Amazon = 8;
  const Tp_Meli = 9;
  const Tp_Carrefour = 10;
  const Tp_MagazineLuiza = 11;
  const Tp_Outros = 12;
  const Tp_GaleriaPage = 13;
  const Tp_Ifood = 14; // sim, criaram um tipo ifood lá no server, dentro do tipo MARKETPLACE ECOMMERCE :(
  const Tp_Shopee = 15;

  protected static $nickname = array(
    self::Tp_LojasAmericanas => 'Lojas Americanas',
    self::Tp_Submarino => 'Submarino',
    self::Tp_SouBarato => 'Sou Barato',
    self::Tp_Shoptime => 'Shoptime',
    self::Tp_Extra => 'Extra',
    self::Tp_Zoom => 'Zoom',
    self::Tp_RicardoEletro => 'Ricardo Eletro',
    self::Tp_Amazon => 'Amazon',
    self::Tp_Meli => 'Meli',
    self::Tp_Carrefour => 'Carrefour',
    self::Tp_MagazineLuiza => 'Magazine Luiza',
    self::Tp_Outros => 'Outros',
    self::Tp_GaleriaPage => 'Galeria Pagé',
    self::Tp_Ifood => 'iFood', // sim, criaram um tipo ifood lá no server, dentro do tipo MARKETPLACE ECOMMERCE :(
    self::Tp_Shopee => 'Shopee',
  );
}

abstract class Type_DescontoPrimeiraCompra extends EnumBasic
{
  const Tp_Monetario = 1;
  const Tp_Percentual = 2;

  protected static $nickname = array(
    self::Tp_Monetario => 'Monetário',
    self::Tp_Percentual => 'Percentual'
  );
}

abstract class Type_LayoutPersonalizado extends EnumBasic
{
  const Tp_LayoutCliente = 1;
  const Tp_LayoutEmailMercadoLivre = 2;
  const Tp_LayoutSuccess = 3;
  const Tp_LayoutIndication = 4;
  const Tp_LayoutMaintenance = 5;

  protected static $nickname = array(
    self::Tp_LayoutCliente => 'Cadastro de novas contas',
    self::Tp_LayoutEmailMercadoLivre => 'E-mail de nova compra mercado livre',
    self::Tp_LayoutSuccess => 'Layout personalizado da tela de sucesso',
    self::Tp_LayoutIndication => 'Indique e ganhe',
    self::Tp_LayoutMaintenance => 'Manutenção',
  );
}

abstract class Type_LayoutPersonalizadoVarButton extends EnumBasic
{
  const Tp_Clinome = 'cli_nome';
  const Tp_Cliemail = 'cli_email';
  const Tp_Lojnome = 'loj_nome';
  const Tp_Lojlink = 'loj_link';
  const Tp_Lojloginlink = 'loj_login_link';
  const Tp_Lojbotaoacessar = 'loj_botao_acessar';
  const Tp_Lojlogo = 'loj_logo';
  const Tp_PedidoID = 'ped_id';
  const Tp_Lojindicationlink = 'loj_indication_link';
  const Tp_Lojindicationbutton = 'loj_indication_button';

  protected static $nickname = array(
    self::Tp_Clinome => 'Nome do Cliente',
    self::Tp_Cliemail => 'E-mail do Cliente',
    self::Tp_Lojnome => 'Nome da loja',
    self::Tp_Lojlink => 'Link para a loja',
    self::Tp_Lojloginlink => 'Link para página de login',
    self::Tp_Lojbotaoacessar => 'Botão acessar conta',
    self::Tp_Lojlogo => 'Logo da loja',
    self::Tp_PedidoID => 'ID do pedido',
    self::Tp_Lojindicationlink => 'Link de indicação',
    self::Tp_Lojindicationbutton => 'Botão enviar email de indicação'
  );
}


abstract class Type_TitleModules extends EnumBasic
{
  const Tp_Outros = 0;
  const Tp_Config = 1;
  const Tp_ListProd = 2;
  const Tp_Filtros = 3;
  const Tp_Marketplace = 4;
  const Tp_Pagamento = 5;
  const Tp_Envio = 6;
  const Tp_Finalizacao = 7;

  protected static $nickname = array(
    self::Tp_Outros => 'Outros',
    self::Tp_Config => 'Configurações',
    self::Tp_ListProd => 'Lista de Produtos',
    self::Tp_Filtros => 'Filtros',
    self::Tp_Marketplace => 'Marketplace',
    self::Tp_Pagamento => 'Formas de Pagamento',
    self::Tp_Envio => 'Formas de Envio',
    self::Tp_Finalizacao => 'Finalização',
  );
}

abstract class Type_UserGroupAdm extends EnumBasic
{
  const Tp_UserFutura = 1;

  protected static $nickname = array(
    self::Tp_UserFutura => 'Grupo de usuário Futura'
  );
}

abstract class Type_OrigemCadastro extends EnumBasic
{
  const Tp_Ecommerce = 0;
  const Tp_MercadoLivre = 1;

  protected static $nickname = array(
    self::Tp_Ecommerce => 'Ecommerce',
    self::Tp_MercadoLivre => 'Mercado Livre'
  );
}

abstract class Type_NotListaProdutos extends EnumBasic
{
  const Tp_Fabricantes = 5;
  const Tp_Conta = 6;
  const Tp_FinalizarPedido = 7;
  const Tp_Contatenos = 8;
  const Tp_MapaSite = 9;

  protected static $nickname = array(
    self::Tp_Fabricantes => 'Fabricantes',
    self::Tp_Conta => 'Conta',
    self::Tp_FinalizarPedido => 'Finalizar Pedido',
    self::Tp_Contatenos => 'Contate-nos',
    self::Tp_MapaSite => 'Mapa do Site'
  );
}

abstract class Type_LayoutApp extends EnumBasic
{
    const Tp_Principal = 1;
    const Tp_Produtos = 2;
    const Tp_Information = 11;
    const Tp_Fidelidade = 1001;
    const Tp_Cart = 1003;

    protected static $nickname = array(
        self::Tp_Principal      => 'Principal',
        self::Tp_Produtos       => 'Produtos',
        self::Tp_Information    => 'Páginas de Informações',
        self::Tp_Fidelidade     => 'Fidelidade',
        self::Tp_Cart           => 'Carrinho de Compras'
    );
}

abstract class Type_ModulePosition extends EnumBasic
{
  const Tp_ContentTop = 'content_top';
  const Tp_ContentBottom = 'content_bottom';
  const Tp_ColumnLeft = 'column_left';
  const Tp_AppMobile = 'content_app';

  protected static $nickname = array(
    self::Tp_ContentTop => 'Conteúdo do Topo',
    self::Tp_ContentBottom => 'Conteúdo do Rodapé',
    self::Tp_ColumnLeft => 'Coluna da Esquerda',
    self::Tp_AppMobile => 'Conteúdo do Aplicativo'
  );
  protected static $others = array(
    self::Tp_AppMobile => 'Conteúdo do Aplicativo'
  );
}

abstract class Type_PerfilCustomerJuridico extends EnumBasic
{
  const Tp_Nenhum = 0;
  const Tp_Presumido = 1;
  const Tp_Simples = 2;
  const Tp_Lucro = 3;
  const Tp_Mei = 4;

  protected static $nickname = array(
    self::Tp_Nenhum => 'Nenhum',
    self::Tp_Presumido => 'Lucro Presumido/RPA',
    self::Tp_Simples => 'Simples Nacional',
    self::Tp_Lucro => 'Lucro Real',
    self::Tp_Mei => 'MEI'
  );
}

abstract class Type_Promocao extends EnumBasic
{
  const Tp_PercDesconto = 3;
  const Tp_Brinde = 11;

  protected static $nickname = array(
    self::Tp_PercDesconto => 'Percentual de desconto',
    self::Tp_Brinde => 'Brinde'
  );
}

abstract class Type_PromocaoStatus extends EnumBasic
{
  const Tp_Ativo = 0;
  const Tp_Inativo = 1;

  protected static $nickname = array(
    self::Tp_Ativo => 'Ativo',
    self::Tp_Inativo => 'Inativo'
  );
}

abstract class Type_Theme extends EnumBasic
{
  const Tp_Vista = 0;
  const Tp_appmobile = 1;

  protected static $nickname = array(
    self::Tp_Vista => 'vista',
    self::Tp_appmobile => 'appmobile'
  );
}

abstract class Type_FilterStock extends EnumBasic
{
  const Tp_Esgotado = 0;
  const Tp_Habilitados = 1;

  protected static $nickname = array(
    self::Tp_Esgotado => 'Produtos Esgotados',
    self::Tp_Habilitados => 'Produtos em Estoque'
  );
}

abstract class Type_ModuleListProduct extends EnumBasic
{
  const Tp_Latest = 'latest';
  const Tp_ProductVisualized = 'product_visualized';
  const Tp_ProductViewedAll = 'product_viewed_all';
  const Tp_Featured = 'featured';
  const Tp_ProdutosRelacionados = 'produtosrelacionados';
  const Tp_Special = 'special';
  const Tp_BuyLater = 'buy_later';

  protected static $nickname = array(
    self::Tp_Latest => 'Novidades',
    self::Tp_ProductVisualized => 'Produtos Visualizados',
    self::Tp_ProductViewedAll => 'Produtos Visualizados Geral',
    self::Tp_Featured => 'Produtos em Destaque',
    self::Tp_ProdutosRelacionados => 'Produtos Relacionados',
    self::Tp_Special => 'Promoções',
    self::Tp_BuyLater => 'Comprar Mais Tarde'
  );
}

abstract class Type_SpecialActionStyles extends EnumBasic{
  const Tp_Nenhum = 'Nenhum';
  const Tp_Style1 = 'style1';
  const Tp_Style2 = 'style2';
  const Tp_Style3 = 'style3';
  const Tp_Style4 = 'style4';

  protected static $nickname = array(
    self::Tp_Nenhum => 'Nenhum',
    self::Tp_Style1 => 'Bg 1',
    self::Tp_Style2 => 'Bg 2',
    self::Tp_Style3 => 'Bg 3',
    self::Tp_Style4 => 'Bg 4',
  );

}

abstract class Type_LinkTarget extends EnumBasic
{
  const Tp_Blank = '_blank';
  const Tp_Self = '_self';

  protected static $nickname = array(
    self::Tp_Blank => 'Abrir em outra página',
    self::Tp_Self => 'Abrir na mesma página'
  );
}

abstract class Type_LinkManual extends EnumBasic
{
  const Tp_LinkManualVersion = 0;
  const Tp_linkManualConfigMercadoLivre = 1;
  const Tp_linkManualConfigShopee = 2;

  protected static $nickname = array(
    self::Tp_LinkManualVersion => 'http://manual.futurasistemas.com.br/category/alteracoes-de-versoes/versao-',
    self::Tp_linkManualConfigMercadoLivre => 'http://manual.futurasistemas.com.br/manual-do-sistema/como-configurar-o-modulo-do-mercado-livre/',
    self::Tp_linkManualConfigShopee => 'https://manual.futurasistemas.com.br/sem-categoria/como-configurar-o-modulo-shopee-faq98/'
  );
}

abstract class Type_FilterContent extends EnumBasic
{
  const Tp_Contendo = 0;
  const Tp_Iguala = 1;
  const Tp_ComePor = 2;
  const Tp_TermPor = 3;
  const Tp_Default = 4;

  protected static $nickname = array(
    self::Tp_Contendo => 'Contendo',
    self::Tp_Iguala => 'Igual a',
    self::Tp_ComePor => 'Começando por',
    self::Tp_TermPor => 'Terminando por'
  );
  protected static $others = array(
    self::Tp_Default => 'Padrão'
  );
}

abstract class Type_FilterContentValue extends EnumBasic
{
  const Tp_Maior = 0;
  const Tp_MaiorIgual = 1;
  const Tp_Igual = 2;
  const Tp_MenorIgual = 3;
  const Tp_Menor = 4;
  const Tp_Diferente = 5;

  protected static $nickname = array(
    self::Tp_Maior => 'Maior:',
    self::Tp_MaiorIgual => 'Maior ou Igual:',
    self::Tp_Igual => 'Igual:',
    self::Tp_MenorIgual => 'Menor ou Igual:',
    self::Tp_Menor => 'Menor:',
    self::Tp_Diferente => 'Diferente:'
  );
}

abstract class Type_DisplayModuleOption extends EnumBasic
{
  const Tp_Ecommerce = 0;
  const Tp_Aplicativo = 1;
  const Tp_Todos = 2;

  protected static $nickname = array(
    self::Tp_Ecommerce => 'E-commerce',
    self::Tp_Aplicativo => 'Aplicativo',
    self::Tp_Todos => 'Todos'
  );
}

abstract class Type_TypeIntregationServer extends EnumBasic
{
  const Tp_ServerHabilitado = 0;

  protected static $nickname = array(
    self::Tp_ServerHabilitado => 'Por padrão no server a opção de habilitado é o 0'
  );
}

abstract class Type_ModelBannerProduct extends EnumBasic
{
  const Tp_Model_1 = 'model-1';
  const Tp_Model_2 = 'model-2';
  const Tp_Model_3 = 'model-3';
  const Tp_Model_4 = 'model-4';
  const Tp_Model_a = 'model-a';

  protected static $nickname = array(
    self::Tp_Model_1 => 'Modelo 1',
    self::Tp_Model_2 => 'Modelo 2',
    self::Tp_Model_3 => 'Modelo 3',
    self::Tp_Model_4 => 'Modelo 4',
    self::Tp_Model_a => 'Aleatório '
  );
}

abstract class Type_SearchOption extends EnumBasic
{
  const Tp_IdEcommerce = 0;
  const Tp_FuturaServer = 1;
  const Tp_Model = 2;
  const Tp_NomeProduto = 3;
  const Tp_DescricaoCompleta = 4;
  const Tp_CodigoBarras = 5;
  const Tp_Tag = 6;

  protected static $nickname = array(
    self::Tp_IdEcommerce  => 'Código E-commerce',
    self::Tp_FuturaServer => 'Código Futura Server',
    self::Tp_Model => 'Modelo - Referência',
    self::Tp_NomeProduto => 'Nome do Produto',
    self::Tp_DescricaoCompleta => 'Descrição Completa',
    self::Tp_CodigoBarras => 'Código de Barras',
    self::Tp_Tag          => 'Tag'
  );
}


abstract class Type_PaypalPaymentStatus extends EnumBasic
{
  const Tp_CanceledReversal = 'Canceled_Reversal';
  const Tp_Completed = 'Completed';
  const Tp_Denied = 'Denied';
  const Tp_Failed = 'Failed';
  const Tp_Refunded = 'Refunded';
  const Tp_Reversed = 'Reversed';
  const Tp_Voided = 'Voided';
  const Tp_InProgress = 'In-Progress';
  const Tp_Pending = 'Pending';
  const Tp_Processed = 'Processed';
  const Tp_Expired = 'Expired';
  const Tp_Created = 'Created';

  protected static $nickname = array(
    self::Tp_CanceledReversal => 'Cancelamento Revertido',
    self::Tp_Completed => 'Completo',
    self::Tp_Denied => 'Negado',
    self::Tp_Failed => 'Falha',
    self::Tp_Refunded => 'Reembolsado',
    self::Tp_Reversed => 'Revertido',
    self::Tp_Voided => 'Anulado',
    self::Tp_InProgress => 'Processando',
    self::Tp_Processed => 'Processado',
    self::Tp_Expired => 'Expirado',
    self::Tp_Created => 'Criado',
    self::Tp_Pending => 'Pendente'
  );
}

abstract class Type_Tracking extends EnumBasic
{
  const Tp_Correios = 'correios';
  const Tp_Kangu    = 'kangu';

  protected static $nickname = array(
    self::Tp_Correios => 'Correios',
    self::Tp_Kangu => 'Kangu'
  );
}

abstract class Type_TrackingLink extends EnumBasic
{
  const Tp_Correios = 'correios';
  const Tp_CorreiosRastreamento = 'correios rastreamento';
  const Tp_Jadlog = 'jadlog';
  const Tp_Tnt = 'tnt';
  const Tp_Jamef = 'jamef';
  const Tp_Dlog = 'dlog';

  protected static $nickname = array(
    self::Tp_Correios => 'https://www2.correios.com.br/sistemas/rastreamento/resultado_semcontent.cfm',
    self::Tp_CorreiosRastreamento => 'http://www2.correios.com.br/sistemas/rastreamento/',
    self::Tp_Jadlog => 'https://www.jadlog.com.br/siteInstitucional/tracking.jad',
    self::Tp_Tnt => 'https://www.tnt.com/express/pt_br/site/home.html',
    self::Tp_Jamef => 'https://www.jamef.com.br/jamef/ecp/comunidade.do?evento=portlet&pIdPlc=ecpTaxonomiaMenuPortal&app=portal&tax=20260&lang=pt_BR&pg=20004&taxn=20035&taxp=0&',
    self::Tp_Dlog => 'https://www.dlog.com.br/sistemass'
  );
}


abstract class Type_TrackingLinkEmail extends EnumBasic
{
  const Tp_Correios = 'correios';
  const Tp_Jadlog   = 'jadlog';
  const Tp_Tnt      = 'tnt';
  const Tp_Jamef    = 'jamef';
  const Tp_Dlog     = 'dlog';

  protected static $nickname = array(
    self::Tp_Correios => 'https://www2.correios.com.br/sistemas/rastreamento',
    self::Tp_Jadlog   => 'https://www.jadlog.com.br/siteInstitucional/tracking.jad',
    self::Tp_Tnt      => 'https://www.tnt.com/express/pt_br/site/home.html',
    self::Tp_Jamef    => 'https://www.jamef.com.br/jamef/ecp/comunidade.do?evento=portlet&pIdPlc=ecpTaxonomiaMenuPortal&app=portal&tax=20260&lang=pt_BR&pg=20004&taxn=20035&taxp=0&',
    self::Tp_Dlog     => 'https://www.dlog.com.br/sistemass'
  );
}


abstract class Type_Sistema extends EnumBasic
{
  const Tp_Ecommerce = 2401;
  const Tp_Marketplace = 4901;
  const Tp_Aplicativo_IOS = 5601;
  const Tp_Aplicativo_Android = 5901;

  protected static $nickname = array(
    self::Tp_Ecommerce => 'E-commerce',
    self::Tp_Marketplace => 'Marketplaces',
    self::Tp_Aplicativo_IOS => 'Aplicativo iOS',
    self::Tp_Aplicativo_Android => 'Aplicativo Android'
  );
}


abstract class Type_Period extends EnumBasic
{
  const Tp_Day = 'day';
  const Tp_Week = 'week';
  const Tp_Month = 'month';
  const Tp_Year = 'year';

  protected static $nickname = array(
    self::Tp_Day => 'Dia',
    self::Tp_Week => 'Semana',
    self::Tp_Month => 'Mês',
    self::Tp_Year => 'Ano'
  );
}

abstract class Type_ExecTimeTask extends EnumBasic
{
  const Tp_ExecTime_1min = 60;
  const Tp_ExecTime_3min = 180;
  const Tp_ExecTime_5min = 300;


  protected static $nickname = array(
    self::Tp_ExecTime_3min => '3 minutos',
    self::Tp_ExecTime_5min => '5 minutos'
  );
}

abstract class Type_PreConfigTask extends EnumBasic
{
  const Tp_PreConfigTask_Manual = 0;
  const Tp_PreConfigTask_1AM = 1;
  const TP_PreConfigTask_3AM = 2;

  protected static $nickname = array(
    self::Tp_PreConfigTask_1AM => '1:00',
    self::TP_PreConfigTask_3AM => '3:00'
  );
}

abstract class Type_TaskUrl extends EnumBasic
{
  const Tp_TaskMLPedido = 0;
  const Tp_TaskMLEstoque = 1;
  const Tp_TaskMLProduto = 2;
  const Tp_TaskMLPergunta = 3;
  const Tp_TaskPagSegAbandonado = 5;
  const Tp_TaskShopLineSonda = 6;
  const Tp_TaskRastreio = 7;
  const Tp_TaskVerificaPedidos = 8;
  const Tp_TaskVerificaNfe = 9;
  const Tp_TaskSendTask = 10;
  const Tp_TaskSkyHubPedido = 11;
  const Tp_TaskSkyHubEstoque = 13;
  const Tp_TaskSkyHubProduto = 14;
  const Tp_TaskSkyHubAttributo = 15;
  const Tp_TaskMarketplaceSendStatus = 16;
  const TP_TaskMlMetrics = 17;
  const TP_TaskSkyhubMKtInfos = 18;
  const TP_TaskMlMktInfos = 19;
  const TP_TaskGpPedido = 20;
  const TP_TaskDelTempfiles = 21;
  const TP_TaskGpProduto = 22;
  const TP_TaskFeedback = 23;
  const TP_TaskMLItems = 24;
  const TP_TaskShopeeProduto = 25;
  const TP_TaskShopeeEstoque = 26;
  const TP_TaskShopeePedido = 27;

  const TP_TaskEnvioInformativo = 28;
  //const TP_TaskShopeeItensBanidos = 29;
  const TP_TaskAttPaymentPix = 30;

  protected static $nickname = array(
    self::Tp_TaskMLPedido => 'mercadolivre/melijobs/atualizarPedidos',
    self::Tp_TaskMLEstoque => 'mercadolivre/mercadolivre/stockupdate&update=estoque',
    self::Tp_TaskMLProduto => 'mercadolivre/mercadolivre/stockupdate&update=produto',
    self::Tp_TaskMLPergunta => 'mercadolivre/mercadolivre/infos&option=question',
    self::Tp_TaskPagSegAbandonado => 'payment/pagseguro_abandoned',
    self::Tp_TaskShopLineSonda => 'retornocron',
    self::Tp_TaskRastreio => 'common/tracking',
    self::Tp_TaskVerificaPedidos => 'sincronizator/receberpedido/verificarpedidos',
    self::Tp_TaskVerificaNfe => 'sincronizator/recebernotafiscal/capturarnfe',
    self::Tp_TaskSendTask => 'common/sendtask',
    self::Tp_TaskSkyHubPedido => 'skyhub/skyjobs/atualizarPedidos',
    self::Tp_TaskSkyHubEstoque => 'skyhub/skyjobs/atualizarProdutos&update=estoque',
    self::Tp_TaskSkyHubProduto => 'skyhub/skyjobs/atualizarProdutos&update=produto',
    self::Tp_TaskSkyHubAttributo => 'skyhub/skyjobs/sincronizaAtributos',
    self::Tp_TaskMarketplaceSendStatus => 'common/sendtask&tipo_queue=2&tipo_task=9',
    self::TP_TaskMlMetrics => 'mercadolivre/melijobs/metrics',
    self::TP_TaskSkyhubMKtInfos => 'skyhub/skyjobs/getinformation',
    self::TP_TaskMlMktInfos => 'mercadolivre/melijobs/getinformation',
    self::TP_TaskGpPedido => 'galeriapage/gpjobs/atualizarPedidos',
    self::TP_TaskDelTempfiles => 'common/tempfiles/delete',
    self::TP_TaskGpProduto => 'galeriapage/gpjobs/atualizarProdutos&update=produto',
    self::TP_TaskFeedback => 'feedback/feedback/sendmessages',
    self::TP_TaskMLItems => 'mercadolivre/melijobs/updateitems',
    self::TP_TaskShopeeProduto => 'shopee/shopeejobs/atualizarProdutos&update=produto',
    self::TP_TaskShopeeEstoque => 'shopee/shopeejobs/atualizarProdutos&update=estoque',
    self::TP_TaskShopeePedido => 'shopee/shopeejobs/atualizarPedidos',
    self::TP_TaskEnvioInformativo => 'sale/contact',
    self::TP_TaskAttPaymentPix => 'payment/pixpdv/attpaymentpix'

  );
}

abstract class Type_UrlLiberada extends EnumBasic
{
  const Tp_UrlFeedGoogleBase = 0;
  const Tp_UrlFeedGoogleSitemap = 1;
  const Tp_UrlMlCallback = 2;
  const Tp_UrlMlCallbackRerite = 3;
  const Tp_UrlApiCart = 4;
  const Tp_UrlApiCategory = 5;
  const Tp_UrlConfig = 6;
  const Tp_UrlCtrlApi = 7;
  const Tp_UrlCustomer = 8;
  const Tp_UrlLoginApi = 9;
  const Tp_UrlCommonTask = 10;
  const Tp_UrlSkyhubFrete = 11;
  const Tp_UrlFeedFacebookCatalog = 12;
  const Tp_UrlMelhorEnvioCallback = 13;
  const Tp_UrlGetnetCallback = 14;
  const Tp_UrlMercadolivreAuth = 15;
  const Tp_UrlShopeeAuth = 16;
  const Tp_urlMercadoLivreCat = 17;
  const Tp_UrlPagarmeCallback = 18;

  // Search cep by Axios in BaseCep component
  const Tp_UrlCepSearch = 19;
  const Tp_UrlCepStates = 20;
  const Tp_UrlCepAddress = 21;
  const Tp_UrlCepCities = 22;
  const Tp_UrlClearSaleCallback = 23;
  const Tp_UrlERedeCallBack = 24;
  
  const Tp_UrlGmailAuth = 25;
  const Tp_Urlmicrosoftauth = 26;



  protected static $nickname = array(
    self::Tp_UrlFeedGoogleBase => 'feed/google_base',
    self::Tp_UrlFeedGoogleSitemap => 'feed/google_sitemap',
    self::Tp_UrlMlCallback => 'mercadolivre/mercadolivre/callback',
    self::Tp_UrlMlCallbackRerite => 'mercadolivrecallback',
    self::Tp_UrlApiCart => 'api/cart',
    self::Tp_UrlApiCategory => 'api/category',
    self::Tp_UrlConfig => 'api/configuracoes',
    self::Tp_UrlCtrlApi => 'api/controllerapi',
    self::Tp_UrlCustomer => 'api/customer',
    self::Tp_UrlLoginApi => 'api/loginapi',
    self::Tp_UrlCommonTask => 'common/task',
    self::Tp_UrlSkyhubFrete => 'skyhub/skyfrete/calcularFrete',
    self::Tp_UrlFeedFacebookCatalog => 'feed/facebook_catalog',
    self::Tp_UrlMelhorEnvioCallback => 'melhorenvio/melhorenvio/callback',
    self::Tp_UrlGetnetCallback => 'payment/getnet/callback',
    self::Tp_UrlMercadolivreAuth => 'mercadolivreauth',
    self::Tp_UrlShopeeAuth => 'shopeeauth',
    self::Tp_urlMercadoLivreCat => 'mercadolivre/mercadolivre/syncat',
    self::Tp_UrlPagarmeCallback => 'payment/pagarme/callback',

    // Search cep by Axios in BaseCep component
    self::Tp_UrlCepSearch => 'postcode/postcode/search',
    self::Tp_UrlCepStates => 'postcode/postcode/listStates',
    self::Tp_UrlCepAddress => 'postcode/postcode/listAddressData',
    self::Tp_UrlCepCities => 'postcode/postcode/listCities',

    self::Tp_UrlClearSaleCallback => 'clearsalecallback',
    self::Tp_UrlERedeCallBack => 'payment/rede_credito/tokenizationcallback',
    self::Tp_UrlGmailAuth => 'gmailauth',
    self::Tp_Urlmicrosoftauth => 'microsoftauth'
    );

}


abstract class Type_TaskConfigStatus extends EnumBasic
{
  const Tp_TaskMLPedido = 0;
  const Tp_TaskMLEstoque = 1;
  const Tp_TaskMLProduto = 2;
  const Tp_TaskMLPergunta = 3;
  const Tp_TaskPagSegAbandonado = 5;
  const Tp_TaskShopLineSonda = 6;
  const Tp_TaskRastreio = 7;
  const Tp_TaskVerificaPedidos = 8;
  const Tp_TaskVerificaNfe = 9;
  const Tp_TaskSendTask = 10;
  const Tp_TaskSkyHubPedido = 11;
  const Tp_TaskSkyHubEstoque = 13;
  const Tp_TaskSkyHubProduto = 14;
  const Tp_TaskSkyHubAttributo = 15;
  const Tp_TaskMarketplaceSendStatus = 16;
  const TP_TaskMlMetrics = 17;
  const TP_TaskSkyhubMKtInfos = 18;
  const TP_TaskMlMktInfos = 19;
  const TP_TaskGpPedido = 20;
  const TP_TaskDelTempfiles = 21;
  const TP_TaskGpProduto = 22;
  const TP_TaskFeedback = 23;
  const TP_TaskMLItems = 24;
  const TP_TaskShopeeProduto = 25;
  const TP_TaskShopeeEstoque = 26;
  const TP_TaskShopeePedido = 27;
  const TP_TaskSendEmail = 28;
  const TP_TaskAttPaymentPix = 30;
  
  protected static $nickname = array(
    self::Tp_TaskMLPedido => 'mercadolivre_status',
    self::Tp_TaskMLEstoque => 'mercadolivre_status',
    self::Tp_TaskMLProduto => 'mercadolivre_status',
    self::Tp_TaskMLPergunta => 'mercadolivre_status',
    self::Tp_TaskPagSegAbandonado => 'pagseguro_status',
    self::Tp_TaskShopLineSonda => 'itaushopline_status',
    self::Tp_TaskRastreio => 'correios_tracking_status|kangu_tracking_status|melhorenvio_tracking_status',
    self::Tp_TaskVerificaPedidos => 'config_verifica_pedidos',
    self::Tp_TaskVerificaNfe => 'config_verifica_notafiscal',
    self::Tp_TaskSendTask => true,
    self::Tp_TaskSkyHubPedido => 'skyhub_status',
    self::Tp_TaskSkyHubEstoque => 'skyhub_status',
    self::Tp_TaskSkyHubProduto => 'skyhub_status',
    self::Tp_TaskSkyHubAttributo => 'skyhub_status',
    self::Tp_TaskMarketplaceSendStatus => 'skyhub_status|galeriapage_status|shopee_status',
    self::TP_TaskMlMetrics => 'mercadolivre_status',
    self::TP_TaskSkyhubMKtInfos => 'skyhub_status',
    self::TP_TaskMlMktInfos => 'mercadolivre_status',
    self::TP_TaskGpPedido => 'galeriapage_status',
    self::TP_TaskDelTempfiles => true,
    self::TP_TaskGpProduto => 'galeriapage_status',
    self::TP_TaskFeedback => 'feedback_automatico_status',
    self::TP_TaskMLItems => 'mercadolivre_status',
    self::TP_TaskShopeeProduto => 'shopee_status',
    self::TP_TaskShopeeEstoque => 'shopee_status',
    self::TP_TaskShopeePedido => 'shopee_status',
    self::TP_TaskSendEmail  => 'email_status',
    self::TP_TaskAttPaymentPix  => 'pixpdv_status'
  );
}

abstract class Type_TaskTypeGroup extends EnumBasic
{
  const Tp_TaskGeral = 1;
  const Tp_TaskSistema = 2;
  const Tp_TaskMercadoLivre = 3;
  const Tp_TaskSkyhub = 4;
  const Tp_TaskGaleriaPage = 5;
  const Tp_TaskMarketplace = 6;
  const Tp_TaskShopee = 7;

  protected static $nickname = array(
    self::Tp_TaskGeral => 'Geral',
    self::Tp_TaskSistema => 'Sistema',
    self::Tp_TaskMercadoLivre => 'Mercado Livre',
    self::Tp_TaskSkyhub => 'Skyhub',
    self::Tp_TaskGaleriaPage => 'Galeria Pagé',
    self::Tp_TaskMarketplace => 'Marketplace',
    self::Tp_TaskShopee => 'Shopee',
  );

  // Essa chave só deve ser usada pra fazer a ordenação das tabs na tela de controle de tarefas
    protected static $others = array(
        self::Tp_TaskGeral => 1,
        self::Tp_TaskSistema => 2,
        self::Tp_TaskMercadoLivre => 4,
        self::Tp_TaskSkyhub => 5,
        self::Tp_TaskGaleriaPage => 6,
        self::Tp_TaskMarketplace => 3,
        self::Tp_TaskShopee => 7,
    );
}

abstract class Type_TaskConfigTime extends EnumBasic
{
  const Tp_5 = 5;
  const Tp_10 = 10;
  const Tp_20 = 20;
  const Tp_30 = 30;
  const Tp_60 = 60;
  const Tp_2H = 120;
  const Tp_5H = 300;

  protected static $nickname = array(
      self::Tp_5 => '5 Minutos',
      self::Tp_10 => '10 Minutos',
      self::Tp_20 => '20 Minutos',
      self::Tp_30 => '30 Minutos',
      self::Tp_60 => '1 Hora',
      self::Tp_2H => '2 Horas',
      self::Tp_5H => '5 Horas'
  );
}

abstract class Type_PjContribuoIcms extends EnumBasic
{
  const Tp_Contribuinte = 'S';
  const Tp_NaoContribuinte = 'N';
  const Tp_Isento = 'I';

  protected static $nickname = array(
    self::Tp_Contribuinte => 'Contribuinte',
    self::Tp_NaoContribuinte => 'Não Contribuinte',
    self::Tp_Isento => 'Isento'
  );
}

//tipo mercado livre BRAND SPECIFIC STANDARD
abstract class Type_MercadoLivreTypeCharts extends  EnumBasic
{
    const Tp_Brand      = 0;
    const Tp_Standard   = 1;
    const Tp_Specific   = 2;

    protected static $nickname = array(
        self::Tp_Brand      => 'BRAND',
        self::Tp_Standard   => 'STANDARD',
        self::Tp_Specific   => 'SPECIFIC',
    );
}

abstract class Type_Enviado extends EnumBasic
{
  const Tp_NaoEnviado = 0;
  const Tp_Enviado = 1;

  protected static $nickname = array(
    self::Tp_NaoEnviado => 'Não enviado',
    self::Tp_Enviado => 'Enviado',
  );
}

//Tipos lista escolar>>>
abstract class Type_EdicaoListaEscolar extends EnumBasic
{
  const Tp_Adicao = 0;
  const Tp_Troca = 1;
  const Tp_Restaurar = 2;

  protected static $nickname = array(
    self::Tp_Adicao => 'Adição de Item',
    self::Tp_Troca => 'Troca de Item',
    self::Tp_Restaurar => 'Restaurar Item Original',
  );
}

abstract class Type_OrdenacaoProductsListaEscolar extends EnumBasic
{
  const Tp_Sequencia = 1;
  const Tp_Descricao = 2;

  protected static $nickname = array(
    self::Tp_Sequencia => 'Sequência',
    self::Tp_Descricao => 'Descrição'
  );
}


abstract class Type_ImageUpload extends EnumBasic
{
  const Tp_Default = 0;
  const Tp_Danfe = 1;
  const Tp_Icon = 2;
  const Tp_WireCardLogoBoleto = 3;

  protected static $nickname = array(
    self::Tp_Default => 'Padrão',
    self::Tp_Danfe => 'Danfe',
    self::Tp_Icon => 'Icone',
    self::Tp_WireCardLogoBoleto => 'Logo Boleto Wirecard'
  );
}

abstract class Type_SendPostcode extends EnumBasic
{
  const Tp_Cart = 0;
  const Tp_Product = 1;
  const Tp_Confirm = 2;

  protected static $nickname = array(
    self::Tp_Cart => 'Carrinho de compra',
    self::Tp_Product => 'Produto',
    self::Tp_Confirm => 'Finalização da compra'
  );
}


abstract class Type_RamoAtividade extends EnumBasic
{
  const Tp_Outros = 0;
  const Tp_Papelaria = 1;

  protected static $nickname = array(
    self::Tp_Outros => 'Outros',
    self::Tp_Papelaria => 'Papelaria',
  );
}

abstract class TypeYoutube extends EnumBasic
{
  const Tp_Embed = 0;
  const Tp_Thumb = 1;
  const Tp_Iframe = 2;

  protected static $nickname = array(
    self::Tp_Embed => "https://www.youtube.com/embed/%s",
    self::Tp_Thumb => "https://img.youtube.com/vi/%s/0.jpg",
    self::Tp_Iframe => "<div style='position:relative;width:100%;height:0;padding-bottom:56.2095662318%;'><iframe style='position:absolute;width:100%;height:100%;top:0;left:0' src='https://www.youtube.com/embed/%s' frameborder='0' allow='autoplay'></iframe></div>"
  );
}

abstract class Type_FiltroValor extends EnumBasic
{
  const Tp_Maior = 0;
  const Tp_MaiorIgual = 1;
  const Tp_Igual = 2;
  const Tp_MenorIgual = 3;
  const Tp_Menor = 4;
  const Tp_Diferente = 5;

  protected static $nickname = array(
    self::Tp_Maior => 'Maior',
    self::Tp_MaiorIgual => 'Maior ou Igual',
    self::Tp_Igual => 'Igual',
    self::Tp_MenorIgual => 'Menor ou Igual',
    self::Tp_Menor => 'Menor',
    self::Tp_Diferente => 'Diferente'
  );
}

abstract class Type_Pagination extends EnumBasic
{
  const Tp_Button = 1;
  const Tp_More = 2;

  protected static $nickname = array(
    self::Tp_Button => 'Paginação',
    self::Tp_More => 'Ver Mais'
  );
}

abstract class Type_ItemPerPage extends EnumBasic
{
  const Tp_12 = 12;
  const Tp_24 = 24;
  const Tp_48 = 48;
  const Tp_72 = 72;
  const Tp_96 = 96;

  protected static $nickname = array(
    self::Tp_12 => '12',
    self::Tp_24 => '24',
    self::Tp_48 => '48',
    self::Tp_72 => '72',
    self::Tp_96 => '96'
  );
}

//tipos processo de vendas

abstract class Type_ProcessoVendaUtiliza extends EnumBasic
{
  const TpPrVnUt_Sim = 0;
  const TpPrVnUt_Nao = 1;
  const TpPrVnUt_Obrigatorio = 2;

  protected static $nickname = array(
    self::TpPrVnUt_Sim => 'Habilitado',
    self::TpPrVnUt_Nao => 'Desabilitado',
    self::TpPrVnUt_Obrigatorio => 'Obrigatório'
  );
}

abstract class Type_ProcessoVendaStatusPrior extends EnumBasic
{
  const TpPrVnStPrincipal = 0;
  const TpPrVnStSecundario = 1;

  protected static $nickname = array(
    self::TpPrVnStPrincipal => 'Principal',
    self::TpPrVnStSecundario => 'Secundario',
  );
}

//tipos processo de vendas
//tipo de certificado
abstract class Type_Certificado extends EnumBasic
{
  const TpCert_Desabilitado = 0;
  const TpCert_Futura = 1;
  const TpCert_Personalizado = 2;

  protected static $nickname = array(
    self::TpCert_Desabilitado => 'Desabilitado',
    self::TpCert_Futura => 'Certificado Futura',
    self::TpCert_Personalizado => 'Certificado Personalizado'
  );
}


abstract class Type_SendTask extends EnumBasic
{
  const TpSe_PedidoLoja = 0;
  const TpSe_PedidoMercadolivre = 1;
  const TpSe_PedidoListaPresente = 2;
  const TpSe_PedidoDonoListaPresente = 3;
  const TpSe_PedidoDonoLoja = 4;
  const TpSe_AddHistory = 5;
  const TpSe_Cliente = 6;
  const TpSe_ClienteDonoLoja = 8;
  const TpSe_MarketplaceStatus = 9;
  const TpSe_DevolucaoProdutoDonoLoja = 10;
  const TpSe_EnvioInformativo = 11;

  protected static $nickname = array(
    self::TpSe_PedidoLoja => 'EmailPedidoLoja',
    self::TpSe_PedidoMercadolivre => 'EmailPedidoMercadoLivre',
    self::TpSe_PedidoListaPresente => 'EmailPedidoListaPresente',
    self::TpSe_PedidoDonoListaPresente => 'EmailPedidoDonoListaPresente',
    self::TpSe_PedidoDonoLoja => 'EmailPedidoDonoLoja',
    self::TpSe_AddHistory => 'EmailPedidoStatus',
    self::TpSe_Cliente => 'EmailCliente',
    self::TpSe_ClienteDonoLoja => 'EmailClienteDonoLoja',
    self::TpSe_MarketplaceStatus => 'NotificacaoMarketplaceStatus',

    self::TpSe_DevolucaoProdutoDonoLoja => 'EmailDevolucaoProdutoDonoLoja',
    self::TpSe_EnvioInformativo => 'EnvioInformativo'
  );
}

abstract class Type_SendQueue extends EnumBasic
{
  const TpQue_Email = 1;
  const TpQue_Notificacao = 2;
  const TpQue_Whatsapp = 3;

  protected static $nickname = array(
    self::TpQue_Email => 'Fila Email',
    self::TpQue_Notificacao => 'Fila Notificacao',
    self::TpQue_Whatsapp => 'Fila de Whatsapp'
  );
}


abstract class Type_OrigemRegistro extends EnumBasic
{
  const TpOr_eCommerce = 0;
  const TpOr_Futura = 1;

  protected static $nickname = array(
    self::TpOr_eCommerce => 'eCommerce',
    self::TpOr_Futura => 'Futura'
  );
}

abstract class Type_Environment extends EnumBasic
{
  const Tp_Production = 'production';
  const Tp_Sandbox = 'sandbox';

  protected static $nickname = array(
    self::Tp_Production => 'Produção',
    self::Tp_Sandbox => 'Teste'
  );
}

abstract class  Type_sort_order extends EnumBasic
{
    const Tp_Preco = 'preco';
    const Tp_Prazo = 'prazo';

    protected static $nickname = array(
        self::Tp_Preco => 'Preço',
        self::Tp_Prazo => 'Prazo'
    );
}

abstract class Type_Card extends EnumBasic
{
  const Tp_Credito = 1;
  const Tp_Debito  = 2;

  protected static $nickname = array(
    self::Tp_Credito => 'Crédito',
    self::Tp_Debito  => 'Débito'
  );
}

abstract class Type_FormPgtoGeral extends EnumBasic
{
  const Tp_Visa = 1;
  const Tp_MasterCard = 2;
  const Tp_AmericanExpress = 3;
  const Tp_Discover = 4;
  const Tp_Elo = 5;
  const Tp_Aura = 6;
  const Tp_Jcb = 7;
  const Tp_Hipercard = 8;
  const Tp_HiperItau = 9;

  protected static $nickname = array(
    self::Tp_Visa => 'visa',
    self::Tp_MasterCard => 'mastercard',
    self::Tp_AmericanExpress => 'american express',
    self::Tp_Discover => 'discover',
    self::Tp_Elo => 'elo',
    self::Tp_Aura => 'aura',
    self::Tp_Jcb => 'jcb',
    self::Tp_Hipercard => 'hipercard',
    self::Tp_HiperItau => 'hiper',
  );
}

abstract class Type_PaymentOption extends EnumBasic
{
  const Tp_CreditCard = 'credit_card';
  const Tp_Billet = 'billet';
  const Tp_BankTransfer = 'bank_transfer';
  const Tp_ExternalCheckout = 'external_checkout';
  const Tp_Pix = 'pix';
  const Tp_Debit = 'debit';

  protected static $nickname = array(
    self::Tp_CreditCard => 'Cartão de Crédito',
    self::Tp_Billet => 'Boleto',
    self::Tp_BankTransfer => 'Transferência Bancária',
    self::Tp_ExternalCheckout => 'Checkout Externo',
    self::Tp_Pix => 'Pix',
    self::Tp_Debit => 'Cartão de Débito'
  );
}

abstract class Type_PaymentOptionCode extends EnumBasic
{
  const Tp_CreditCard = 0;
  const Tp_Billet = 1;
  const Tp_BankTransfer = 2;
  const Tp_Pix = 3;

  protected static $nickname = array(
    self::Tp_CreditCard => 'Cartão de Crédito',
    self::Tp_Billet => 'Boleto',
    self::Tp_BankTransfer => 'Transferência Bancária',
    self::Tp_Pix => 'Pix',
  );
}

abstract class Type_PaymentPhone extends EnumBasic
{
  const Tp_Celular = 1;
  const Tp_Telefone = 2;
  const Tp_Fax = 3;

  protected static $nickname = array(
    self::Tp_Celular => 'Celular',
    self::Tp_Telefone => 'Telefone',
    self::Tp_Fax => 'Fax'
  );
}

abstract class Type_Phone extends EnumBasic
{
  const Tp_Celular  = 1;
  const Tp_Telefone = 2;
  const Tp_Fax      = 3;
  const Tp_Whatsapp = 4;

  protected static $nickname = array(
    self::Tp_Celular  => 'Celular',
    self::Tp_Telefone => 'Telefone',
    self::Tp_Fax      => 'Fax',
    self::Tp_Whatsapp => 'WhatsApp',
  );
}

abstract class Type_Document extends EnumBasic
{
  const Tp_Fisico = 'CPF';
  const Tp_Juridico = 'CNPJ';

  protected static $nickname = array(
    self::Tp_Fisico => 'Cliente Pessoa Fisica',
    self::Tp_Juridico => 'Cliente Pessoa Juridica',
  );
}

abstract class Type_ProductCart extends EnumBasic
{
  const Tp_Default = 0;
  const Tp_ListaEscolar = 1;

  protected static $nickname = array(
    self::Tp_Default      => 'Padrão',
    self::Tp_ListaEscolar => 'Lista Escolar'
  );
}

abstract class Type_PagamentoPosterior extends EnumBasic
{
  const Tp_Cielo30 = 'cielo_api_credito';
  const Tp_ItauShopline = 'itaushopline';

  protected static $nickname = array(
    self::Tp_Cielo30      => 'Cielo API 3.0',
    self::Tp_ItauShopline => 'Itau Shopline'
  );
}
abstract class Type_PagamentoEstorno extends EnumBasic
{
  const Tp_Cielo15 = 'cielo_transparente';
  const Tp_Cielo30 = 'cielo_api_credito';
  const Tp_Rede = 'rede_credito';

  protected static $nickname = array(
    self::Tp_Cielo15      => 'Cielo Transparente',
    self::Tp_Cielo30      => 'Cielo API 3.0',
    self::Tp_Rede         => 'Rede Crédito'
  );
}
abstract class Type_instagramSizeImage extends EnumBasic
{
  const Tp_small  = 0;
  const Tp_medium = 1;
  const Tp_large  = 2;

  protected static $nickname = array(
    self::Tp_small  => '150',
    self::Tp_medium => '240',
    self::Tp_large  => '320'
  );
}

abstract class Type_OrigemTracking extends EnumBasic
{
  const Tp_OrigemEcommerce = 0;
  const Tp_OrigemSistema = 1;

  protected static $nickname = array(
    self::Tp_OrigemEcommerce  => 'Origem Ecommerce',
    self::Tp_OrigemSistema => 'Origem Sistema'
  );
}


abstract class Type_ProdutoBrinde extends EnumBasic
{
  const Tp_NaoBrinde = 0;
  const Tp_Brinde = 1;

  protected static $nickname = array(
    self::Tp_NaoBrinde  => 'Padrão (Não Brinde)',
    self::Tp_Brinde => 'Brinde'
  );
}

abstract class Type_TimeCache extends EnumBasic
{
  const Tp_Muito_Rapido = 60 * 20; // 20 minutos
  const Tp_Rapido = 60 * 30; // 30 minutos
  const Tp_Medio  = 60 * 60; // 1 hora
  const Tp_Max    = 60 * 60 * 12; // 12 horas

  protected static $nickname = array(
    self::Tp_Muito_Rapido => '20 minutos',
    self::Tp_Rapido  => '30 minutos',
    self::Tp_Medio   => '1 hora',
    self::Tp_Max     => '12 horas',
  );
}

abstract class Type_Cache extends EnumBasic
{
  const Tp_CacheFile = 0;
  const Tp_CacheRam  = 1;


  protected static $nickname = array(
    self::Tp_CacheFile  => 'Cache file',
    self::Tp_CacheRam   => 'Cache Ram',
  );
}

abstract class Type_gridOrListView extends EnumBasic
{
  const Tp_Grid = 'grid_view';
  const Tp_List = 'list_view';

  protected static $nickname = array(
    self::Tp_Grid => 'Grade',
    self::Tp_List => 'Lista'
  );
}

abstract class Type_MiniatureSmall extends EnumBasic
{
  const Tp_width = 40;
  const Tp_height = 40;

  protected static $nickname = array(
    self::Tp_width => 'Largura',
    self::Tp_height => 'Altura'
  );
}

abstract class Type_MiniatureMedium extends EnumBasic
{
  const Tp_width = 80;
  const Tp_height = 80;

  protected static $nickname = array(
    self::Tp_width => 'Largura',
    self::Tp_height => 'Altura'
  );
}

abstract class Type_MiniatureLarge extends EnumBasic
{
    const Tp_width = 120;
    const Tp_height = 120;

    protected static $nickname = array(
        self::Tp_width => 'Largura',
        self::Tp_height => 'Altura'
    );
}

abstract class Type_MiniatureXLarge extends EnumBasic
{
  const Tp_width = 200;
  const Tp_height = 200;

  protected static $nickname = array(
    self::Tp_width => 'Largura',
    self::Tp_height => 'Altura'
  );
}

abstract class Type_DataLanguage extends EnumBasic
{
  const Tp_Afrikaans                                   = 'af';
  const Tp_Afrikaans_Sul                               = 'af-ZA';
  const Tp_Arabe                                       = 'ar';
  const Tp_Arabe_UAE                                   = 'ar-AE';
  const Tp_Arabe_Barem                                 = 'ar-BH';
  const Tp_Arabe_Argelia                               = 'ar-DZ';
  const Tp_Arabe_Egito                                 = 'ar-EG';
  const Tp_Arabe_Iraque                                = 'ar-IQ';
  const Tp_Arabe_Jordania                              = 'ar-JO';
  const Tp_Arabe_Kuwait                                = 'ar-KW';
  const Tp_Arabe_Libano                                = 'ar-LB';
  const Tp_Arabe_Libia                                 = 'ar-LY';
  const Tp_Arabe_Marrocos                              = 'ar-MA';
  const Tp_Arabe_Oma                                   = 'ar-OM';
  const Tp_Arabe_Catar                                 = 'ar-QA';
  const Tp_Arabe_ArabiaSaudita                         = 'ar-SA';
  const Tp_Arabe_Siria                                 = 'ar-SY';
  const Tp_Arabe_Tunisia                               = 'ar-TN';
  const Tp_Arabe_Lemen                                 = 'ar-YE';
  const Tp_Azeri_Latino                                = 'az';
  const Tp_Azeri_Latino_Azerbaijao                     = 'az-AZ';
  const Tp_Azeri_Ciricila_Azerbaijao                   = 'az-AZ';
  const Tp_Bielorrusso                                 = 'be';
  const Tp_Bielorrusso_Bielorrusso                     = 'be-BY';
  const Tp_Bulgaria                                    = 'bg';
  const Tp_Bulgaria_Bulgaria                           = 'bg-BG';
  const Tp_Bosnia                                      = 'bs-BA';
  const Tp_Catalao                                     = 'ca';
  const Tp_Catalao_Espanha                             = 'ca-ES';
  const Tp_Theco                                       = 'cs';
  const Tp_Theco_Republica_Tcheca                      = 'cs-CZ';
  const Tp_Gales                                       = 'cy';
  const Tp_Gales_Reino_Unido                           = 'cy-GB';
  const Tp_Dinamarques                                 = 'da';
  const Tp_Dinamarques_Dinamarca                       = 'da-DK';
  const Tp_Alemao                                      = 'de';
  const Tp_Alemao_Austria                              = 'de-AT';
  const Tp_Alemao_Suica                                = 'de-CH';
  const Tp_Alemao_Alemanha                             = 'de-DE';
  const Tp_Alemao_Liechtenstein                        = 'de-LI';
  const Tp_Alemao_Luxemburgo                           = 'de-LU';
  const Tp_Divehi                                      = 'dv';
  const Tp_Divehi_Maldivas                             = 'dv-MV';
  const Tp_Grego                                       = 'el';
  const Tp_Grego_Grecia                                = 'el-GR';
  const Tp_Ingles                                      = 'en';
  const Tp_Ingles_Australia                            = 'en-AU';
  const Tp_Ingles_Belize                               = 'en-BZ';
  const Tp_Ingles_Canada                               = 'en-CA';
  const Tp_Ingles_Caraibas                             = 'en-CB';
  const Tp_Ingles_Reino_Unido                          = 'en-GB';
  const Tp_Ingles_Irlanda                              = 'en-IE';
  const Tp_Ingles_Jamaica                              = 'en-JM';
  const Tp_Ingles_Nova_Zelandia                        = 'en-NZ';
  const Tp_Ingles_Republica_Filipinas                  = 'en-PH';
  const Tp_Ingles_Trindade_Tobago                      = 'en-TT';
  const Tp_Ingles_Estados_Unidos                       = 'en-US';
  const Tp_Ingles_Africa_Sul                           = 'en-ZA';
  const Tp_Ingles_Zimbabue                             = 'en-ZW';
  const Tp_Esperanto                                   = 'eo';
  const Tp_Espanhol                                    = 'es';
  const Tp_Espanhol_Argentina                          = 'es-AR';
  const Tp_Espanhol_Bolivia                            = 'es-BO';
  const Tp_Espanhol_Chile                              = 'es-CL';
  const Tp_Espanhol_Colombia                           = 'es-CO';
  const Tp_Espanhol_Costa_rica                         = 'es-CR';
  const Tp_Espanhol_Republica_Dominicana               = 'es-DO';
  const Tp_Espanhol_Equador                            = 'es-EC';
  const Tp_Espanhol_Castelhano                         = 'es-ES';
  const Tp_Espanhol_Espanha                            = 'es-ES';
  const Tp_Espanhol_Guatemala                          = 'es-GT';
  const Tp_Espanhol_Honduras                           = 'es-HN';
  const Tp_Espanhol_Mexico                             = 'es-MX';
  const Tp_Espanhol_Nicaragua                          = 'es-NI';
  const Tp_Espanhol_Panama                             = 'es-PA';
  const Tp_Espanhol_Peru                               = 'es-PE';
  const Tp_Espanhol_Porto_Rico                         = 'es-PR';
  const Tp_Espanhol_Paraguai                           = 'es-PY';
  const Tp_Espanhol_Salvador                           = 'es-SV';
  const Tp_Espanhol_Uruguai                            = 'es-UY';
  const Tp_Espanhol_Venezuela                          = 'es-VE';
  const Tp_Estoniano                                   = 'et';
  const Tp_Estoniano_Estonia                           = 'et-EE';
  const Tp_Basco                                       = 'eu';
  const Tp_Basco_Espanha                               = 'eu-ES';
  const Tp_Persa                                       = 'fa';
  const Tp_Persa_Ira                                   = 'fa-IR';
  const Tp_Finlandes                                   = 'fi';
  const Tp_Finlandes_Finlandia                         = 'fi-FI';
  const Tp_Faroesa                                     = 'fo';
  const Tp_Faroesa_Ilhas_Faroe                         = 'fo-FO';
  const Tp_Frances                                     = 'fr';
  const Tp_Frances_Belgica                             = 'fr-BE';
  const Tp_Frances_Canada                              = 'fr-CA';
  const Tp_Frances_Suica                               = 'fr-CH';
  const Tp_Frances_Franca                              = 'fr-FR';
  const Tp_Frances_Luxemburgo                          = 'fr-LU';
  const Tp_Frances_Principado_Monaco                   = 'fr-MC';
  const Tp_Galega                                      = 'gl';
  const Tp_Galega_Espanha                              = 'gl-ES';
  const Tp_Gujarati                                    = 'gu';
  const Tp_Gujarati_India                              = 'gu-IN';
  const Tp_Hebraico                                    = 'he';
  const Tp_Hebraico_Israel                             = 'he-IL';
  const Tp_Hindi                                       = 'hi';
  const Tp_Hindi_India                                 = 'hi-IN';
  const Tp_Croata                                      = 'hr';
  const Tp_Croata_Bosnia_Herzegovina                   = 'hr-BA';
  const Tp_Croata_Croacia                              = 'hr-HR';
  const Tp_Hungaro                                     = 'hu';
  const Tp_Hungaro_Hungria                             = 'hu-HU';
  const Tp_Armenio                                     = 'hy';
  const Tp_Armenio_Armenia                             = 'hy-AM';
  const Tp_Indonesia                                   = 'id';
  const Tp_Indonesia_Indonesia                         = 'id-ID';
  const Tp_Islandes                                    = 'is';
  const Tp_Islandes_Islandia                           = 'is-IS';
  const Tp_Italiano                                    = 'it';
  const Tp_Italiano_Suica                              = 'it-CH';
  const Tp_Italiano_Italia                             = 'it-IT';
  const Tp_Japones                                     = 'ja';
  const Tp_Japones_Japao                               = 'ja-JP';
  const Tp_Georgiano                                   = 'ka';
  const Tp_Georgiano_Georgia                           = 'ka-GE';
  const Tp_Cazaque                                     = 'kk';
  const Tp_Cazaque_Cazaquistao                         = 'kk-KZ';
  const Tp_Kannada                                     = 'kn';
  const Tp_Kannada_India                               = 'kn-IN';
  const Tp_Coreano                                     = 'ko';
  const Tp_Coreano_Coreia                              = 'ko-KR';
  const Tp_Konkani                                     = 'kok';
  const Tp_Konkani_India                               = 'kok-IN';
  const Tp_Quirguiz                                    = 'ky';
  const Tp_Quirguiz_Quirguistao                        = 'ky-KG';
  const Tp_Lituano                                     = 'lt';
  const Tp_Lituano_Lituania                            = 'lt-LT';
  const Tp_Letao                                       = 'lv';
  const Tp_Letao_Letonia                               = 'lv-LV';
  const Tp_Maori                                       = 'mi';
  const Tp_Maori_Nova_Zelandia                         = 'mi-NZ';
  const Tp_FYRO_Macedonio                              = 'mk';
  const Tp_FYRO_Macedonio_Antiga_Republica_Jugoslava   = 'mk-MK';
  const Tp_Mongol                                      = 'mn';
  const Tp_Mongol_Mongolia                             = 'mn-MN';
  const Tp_Marathi                                     = 'mr';
  const Tp_Marathi_India                               = 'mr-IN';
  const Tp_Malaio                                      = 'ms';
  const Tp_Malaio_Brunei_Darussalam                    = 'ms-BN';
  const Tp_Malaio_Malasia                              = 'ms-MY';
  const Tp_Maltes                                      = 'mt';
  const Tp_Maltes_Malta                                = 'mt-MT';
  const Tp_Noruegues                                   = 'nb';
  const Tp_Noruegues_Noruega                           = 'nb-NO';
  const Tp_Holandes                                    = 'nl';
  const Tp_Holandes_Belgica                            = 'nl-BE';
  const Tp_Holandes_Paises_Baixos                      = 'nl-NL';
  const Tp_Noruegues_Nynorsk_Noruega                   = 'nn-NO';
  const Tp_Northern_Sotho                              = 'ns';
  const Tp_Northern_Sotho_Africa_Sul                   = 'ns-ZA';
  const Tp_Punjabi                                     = 'pa';
  const Tp_Punjabi_India                               = 'pa-IN';
  const Tp_Polones                                     = 'pl';
  const Tp_Polones_Polonia                             = 'pl-PL';
  const Tp_Pashto                                      = 'ps';
  const Tp_Pashto_Afeganistao                          = 'ps-AR';
  const Tp_Portugues                                   = 'pt';
  const Tp_Portugues_Brasil                            = 'pt-BR';
  const Tp_Portugues_Portugal                          = 'pt-PT';
  const Tp_Quechua                                     = 'qu';
  const Tp_Quechua_Bolivia                             = 'qu-BO';
  const Tp_Quechua_Equador                             = 'qu-EC';
  const Tp_Quechua_Peru                                = 'qu-PE';
  const Tp_Romeno                                      = 'ro';
  const Tp_Romeno_Romania                              = 'ro-RO';
  const Tp_Russo                                       = 'ru';
  const Tp_Russo_Russia                                = 'ru-RU';
  const Tp_Sanscrito                                   = 'sa';
  const Tp_Sanscrito_India                             = 'sa-IN';
  const Tp_Sami_Norte                                  = 'se';
  const Tp_Sami_Norte_Finlandia                        = 'se-FI';
  const Tp_Sami_Skolt_Finlandia                        = 'se-FI';
  const Tp_Sami_Inari_Finlandia                        = 'se-FI';
  const Tp_Sami_Norte_Noruega                          = 'se-NO';
  const Tp_Sami_Lule_Noruega                           = 'se-NO';
  const Tp_Sami_Sul_Noruega                            = 'se-NO';
  const Tp_Sami_Norte_Suecia                           = 'se-SE';
  const Tp_Sami_Lule_Suecia                            = 'se-SE';
  const Tp_Sami_Sul_Suecia                             = 'se-SE';
  const Tp_Eslovaco                                    = 'sk';
  const Tp_Eslovaco_Eslovaquia                         = 'sk-SK';
  const Tp_Esloveno                                    = 'sl';
  const Tp_Esloveno_Slovenia                           = 'sl-SI';
  const Tp_Albanian                                    = 'sq';
  const Tp_Albanian_Albania                            = 'sq-AL';
  const Tp_Albanes_Latino_Bosnia_Herzegovina           = 'sr-BA';
  const Tp_Servio_Cirilico_Bosnia_Herzegov             = 'sr-BA';
  const Tp_Servio_Latino_Servia_Montenegro             = 'sr-SP';
  const Tp_Servio_Cirilico_Servia_Montenegro           = 'sr-SP';
  const Tp_Sueco                                       = 'sv';
  const Tp_Sueco_Finlandia                             = 'sv-FI';
  const Tp_Sueco_Suecia                                = 'sv-SE';
  const Tp_Suaili                                      = 'sw';
  const Tp_Suaili_Quenia                               = 'sw-KE';
  const Tp_Siriaco                                     = 'syr';
  const Tp_Siriaco_Siria                               = 'syr-SY';
  const Tp_Tamil                                       = 'ta';
  const Tp_Tamil_India                                 = 'ta-IN';
  const Tp_Telugu                                      = 'te';
  const Tp_Telugu_India                                = 'te-IN';
  const Tp_Tailandes                                   = 'th';
  const Tp_Tailandes_Tailandia                         = 'th-TH';
  const Tp_Tagalo                                      = 'tl';
  const Tp_Tagalo_Filipinas                            = 'tl-PH';
  const Tp_Tswana                                      = 'tn';
  const Tp_Tswana_Africa_Sul                           = 'tn-ZA';
  const Tp_Turco                                       = 'tr';
  const Tp_Turco_Turquia                               = 'tr-TR';
  const Tp_Tartaro                                     = 'tt';
  const Tp_Tartaro_Russia                              = 'tt-RU';
  const Tp_Tsonga                                      = 'ts';
  const Tp_Ucraniano                                   = 'uk';
  const Tp_Ucraniano_Ucrania                           = 'uk-UA';
  const Tp_Urdu                                        = 'ur';
  const Tp_Urdu_Republica_Paquistao                    = 'ur-PK';
  const Tp_Uzbeque_Latino                              = 'uz';
  const Tp_Uzbeque_Latino_Usbequistao                  = 'uz-UZ';
  const Tp_Uzbeque_Cirilico_Usbequistao                = 'uz-UZ';
  const Tp_Vietnamita                                  = 'vi';
  const Tp_Vietnamita_Vietna                           = 'vi-VN';
  const Tp_Xhosa                                       = 'xh';
  const Tp_Xhosa_Africa_Sul                            = 'xh-ZA';
  const Tp_Chines                                      = 'zh';
  const Tp_Chines_S                                    = 'zh-CN';
  const Tp_Chines_Hong_Kong                            = 'zh-HK';
  const Tp_Chines_Macau                                = 'zh-MO';
  const Tp_Chines_Cingapura                            = 'zh-SG';
  const Tp_Chines_T                                    = 'zh-TW';
  const Tp_Zulu                                        = 'zu';
  const Tp_Zulu_Africa_Sul                             = 'zu-ZA';

  protected static $nickname = array(
	self::Tp_Afrikaans                                 => 'Afrikaans',
	self::Tp_Afrikaans_Sul                             => 'Afrikaans (África do Sul)',
	self::Tp_Arabe                                     => 'Árabe',
	self::Tp_Arabe_UAE                                 => 'Árabe UAE',
	self::Tp_Arabe_Barem                               => 'Árabe Barem',
	self::Tp_Arabe_Argelia                             => 'Árabe Argelia',
	self::Tp_Arabe_Egito                               => 'Árabe Egito',
	self::Tp_Arabe_Iraque                              => 'Árabe Iraque',
	self::Tp_Arabe_Jordania                            => 'Árabe Jordania',
	self::Tp_Arabe_Kuwait                              => 'Árabe Kuwait',
	self::Tp_Arabe_Libano                              => 'Árabe Libano',
	self::Tp_Arabe_Libia                               => 'Árabe Libia',
	self::Tp_Arabe_Marrocos                            => 'Árabe Marrocos',
	self::Tp_Arabe_Oma                                 => 'Árabe Oma',
	self::Tp_Arabe_Catar                               => 'Árabe Catar',
	self::Tp_Arabe_ArabiaSaudita                       => 'Árabe ArabiaSaudita',
	self::Tp_Arabe_Siria                               => 'Árabe Siria',
	self::Tp_Arabe_Tunisia                             => 'Árabe Tunisia',
	self::Tp_Arabe_Lemen                               => 'Árabe Lemen',
	self::Tp_Azeri_Latino                              => 'Azeri (Latino)',
	self::Tp_Azeri_Latino_Azerbaijao                   => 'Azeri (Latino Azerbaijao)',
	self::Tp_Azeri_Ciricila_Azerbaijao                 => 'Azeri (Ciricila Azerbaijao)',
	self::Tp_Bielorrusso                               => 'Bielorrusso',
	self::Tp_Bielorrusso_Bielorrusso                   => 'Bielorrusso (Bielorrussia)',
	self::Tp_Bulgaria                                  => 'Bulgaria',
	self::Tp_Bulgaria_Bulgaria                         => 'Bulgaria (Bulgaria)',
	self::Tp_Bosnia                                    => 'Bosnia',
	self::Tp_Catalao                                   => 'Catalão',
	self::Tp_Catalao_Espanha                           => 'Catalão (Espanha)',
	self::Tp_Theco                                     => 'Theco',
	self::Tp_Theco_Republica_Tcheca                    => 'Theco (Republica Tcheca)',
	self::Tp_Gales                                     => 'Gales',
	self::Tp_Gales_Reino_Unido                         => 'Gales (Reino Unido)',
	self::Tp_Dinamarques                               => 'Dinamarques',
	self::Tp_Dinamarques_Dinamarca                     => 'Dinamarques (Dinamarca)',
	self::Tp_Alemao                                    => 'Alemão',
	self::Tp_Alemao_Austria                            => 'Alemão (Austria)',
	self::Tp_Alemao_Suica                              => 'Alemão (Suica)',
	self::Tp_Alemao_Alemanha                           => 'Alemão (Alemanha)',
	self::Tp_Alemao_Liechtenstein                      => 'Alemão (Liechtenstein)',
	self::Tp_Alemao_Luxemburgo                         => 'Alemão (Luxemburgo)',
	self::Tp_Divehi                                    => 'Divehi',
	self::Tp_Divehi_Maldivas                           => 'Divehi (Maldivas)',
	self::Tp_Grego                                     => 'Grego',
	self::Tp_Grego_Grecia                              => 'Grego (Grecia)',
	self::Tp_Ingles                                    => 'Inglês',
	self::Tp_Ingles_Australia                          => 'Inglês (Australia)',
	self::Tp_Ingles_Belize                             => 'Inglês (Belize)',
	self::Tp_Ingles_Canada                             => 'Inglês (Canada)',
	self::Tp_Ingles_Caraibas                           => 'Inglês (Caraibas)',
	self::Tp_Ingles_Reino_Unido                        => 'Inglês (Reino Unido)',
	self::Tp_Ingles_Irlanda                            => 'Inglês (Irlanda)',
	self::Tp_Ingles_Jamaica                            => 'Inglês (Jamaica)',
	self::Tp_Ingles_Nova_Zelandia                      => 'Inglês (Nova Zelandia)',
	self::Tp_Ingles_Republica_Filipinas                => 'Inglês (Republica das Filipinas)',
	self::Tp_Ingles_Trindade_Tobago                    => 'Inglês (Trindade Tobago)',
	self::Tp_Ingles_Estados_Unidos                     => 'Inglês (Estados Unidos)',
	self::Tp_Ingles_Africa_Sul                         => 'Inglês (Africa do Sul)',
	self::Tp_Ingles_Zimbabue                           => 'Inglês (Zimbabue)',
	self::Tp_Esperanto                                 => 'Esperanto',
	self::Tp_Espanhol                                  => 'Espanhol',
	self::Tp_Espanhol_Argentina                        => 'Espanhol (Argentina)',
	self::Tp_Espanhol_Bolivia                          => 'Espanhol (Bolivia)',
	self::Tp_Espanhol_Chile                            => 'Espanhol (Chile)',
	self::Tp_Espanhol_Colombia                         => 'Espanhol (Colombia)',
	self::Tp_Espanhol_Costa_rica                       => 'Espanhol (Costa rica)',
	self::Tp_Espanhol_Republica_Dominicana             => 'Espanhol (Republica Dominicana)',
	self::Tp_Espanhol_Equador                          => 'Espanhol (Equador)',
	self::Tp_Espanhol_Castelhano                       => 'Espanhol (Castelhano)',
	self::Tp_Espanhol_Espanha                          => 'Espanhol (Espanha)',
	self::Tp_Espanhol_Guatemala                        => 'Espanhol (Guatemala)',
	self::Tp_Espanhol_Honduras                         => 'Espanhol (Honduras)',
	self::Tp_Espanhol_Mexico                           => 'Espanhol (Mexico)',
	self::Tp_Espanhol_Nicaragua                        => 'Espanhol (Nicaragua)',
	self::Tp_Espanhol_Panama                           => 'Espanhol (Panama)',
	self::Tp_Espanhol_Peru                             => 'Espanhol (Peru)',
	self::Tp_Espanhol_Porto_Rico                       => 'Espanhol (Porto Rico)',
	self::Tp_Espanhol_Paraguai                         => 'Espanhol (Paraguai)',
	self::Tp_Espanhol_Salvador                         => 'Espanhol (Salvador)',
	self::Tp_Espanhol_Uruguai                          => 'Espanhol (Uruguai)',
	self::Tp_Espanhol_Venezuela                        => 'Espanhol (Venezuela)',
	self::Tp_Estoniano                                 => 'Estoniano',
	self::Tp_Estoniano_Estonia                         => 'Estoniano (Estonia)',
	self::Tp_Basco                                     => 'Basco',
	self::Tp_Basco_Espanha                             => 'Basco (Espanha)',
	self::Tp_Persa                                     => 'Persa',
	self::Tp_Persa_Ira                                 => 'Persa (Ira)',
	self::Tp_Finlandes                                 => 'Finlandes',
	self::Tp_Finlandes_Finlandia                       => 'Finlandes (Finlandia)',
	self::Tp_Faroesa                                   => 'Faroesa',
	self::Tp_Faroesa_Ilhas_Faroe                       => 'Faroesa (Ilhas Faroe)',
	self::Tp_Frances                                   => 'Francês',
	self::Tp_Frances_Belgica                           => 'Francês (Belgica)',
	self::Tp_Frances_Canada                            => 'Francês (Canada)',
	self::Tp_Frances_Suica                             => 'Francês (Suica)',
	self::Tp_Frances_Franca                            => 'Francês (Franca)',
	self::Tp_Frances_Luxemburgo                        => 'Francês (Luxemburgo)',
	self::Tp_Frances_Principado_Monaco                 => 'Francês (Principado Monaco)',
	self::Tp_Galega                                    => 'Galega',
	self::Tp_Galega_Espanha                            => 'Galega (Espanha)',
	self::Tp_Gujarati                                  => 'Gujarati',
	self::Tp_Gujarati_India                            => 'Gujarati (India)',
	self::Tp_Hebraico                                  => 'Hebraico',
	self::Tp_Hebraico_Israel                           => 'Hebraico (Israel)',
	self::Tp_Hindi                                     => 'Hindi',
	self::Tp_Hindi_India                               => 'Hindi (India)',
	self::Tp_Croata                                    => 'Croata',
	self::Tp_Croata_Bosnia_Herzegovina                 => 'Croata (Bosnia Herzegovina)',
	self::Tp_Croata_Croacia                            => 'Croata (Croacia)',
	self::Tp_Hungaro                                   => 'Hungaro',
	self::Tp_Hungaro_Hungria                           => 'Hungaro (Hungria)',
	self::Tp_Armenio                                   => 'Armenio',
	self::Tp_Armenio_Armenia                           => 'Armenio (Armenia)',
	self::Tp_Indonesia                                 => 'Indonesia',
	self::Tp_Indonesia_Indonesia                       => 'Indonesia (Indonesia)',
	self::Tp_Islandes                                  => 'Islandes',
	self::Tp_Islandes_Islandia                         => 'Islandes (Islandia)',
	self::Tp_Italiano                                  => 'Italiano',
	self::Tp_Italiano_Suica                            => 'Italiano (Suiça)',
	self::Tp_Italiano_Italia                           => 'Italiano (Italia)',
	self::Tp_Japones                                   => 'Japonês',
	self::Tp_Japones_Japao                             => 'Japonês (Japao)',
	self::Tp_Georgiano                                 => 'Georgiano',
	self::Tp_Georgiano_Georgia                         => 'Georgiano (Georgia)',
	self::Tp_Cazaque                                   => 'Cazaque',
	self::Tp_Cazaque_Cazaquistao                       => 'Cazaque (Cazaquistão)',
	self::Tp_Kannada                                   => 'Kannada',
	self::Tp_Kannada_India                             => 'Kannada (India)',
	self::Tp_Coreano                                   => 'Coreano',
	self::Tp_Coreano_Coreia                            => 'Coreano (Coréia)',
	self::Tp_Konkani                                   => 'Konkani',
	self::Tp_Konkani_India                             => 'Konkani (India)',
	self::Tp_Quirguiz                                  => 'Quirguiz',
	self::Tp_Quirguiz_Quirguistao                      => 'Quirguiz (Quirguistão)',
	self::Tp_Lituano                                   => 'Lituano',
	self::Tp_Lituano_Lituania                          => 'Lituano (Lituânia)',
	self::Tp_Letao                                     => 'Letão',
	self::Tp_Letao_Letonia                             => 'Letão (Letônia)',
	self::Tp_Maori                                     => 'Maori',
	self::Tp_Maori_Nova_Zelandia                       => 'Maori (Nova Zelândia)',
	self::Tp_FYRO_Macedonio                            => 'FYRO Macedônio',
	self::Tp_FYRO_Macedonio_Antiga_Republica_Jugoslava => 'FYRO Macedônio (Antiga República Jugoslava',
	self::Tp_Mongol                                    => 'Mongol',
	self::Tp_Mongol_Mongolia                           => 'Mongol (Mongólia)',
	self::Tp_Marathi                                   => 'Marathi',
	self::Tp_Marathi_India                             => 'Marathi (India)',
	self::Tp_Malaio                                    => 'Malaio',
	self::Tp_Malaio_Brunei_Darussalam                  => 'Malaio (Brunei Darussalam)',
	self::Tp_Malaio_Malasia                            => 'Malaio (Malásia)',
	self::Tp_Maltes                                    => 'Maltês',
	self::Tp_Maltes_Malta                              => 'Maltês (Malta)',
	self::Tp_Noruegues                                 => 'Noruegues ',
	self::Tp_Noruegues_Noruega                         => 'Noruegues (Noruega)',
	self::Tp_Holandes                                  => 'Holandes',
	self::Tp_Holandes_Belgica                          => 'Holandes (Bélgica)',
	self::Tp_Holandes_Paises_Baixos                    => 'Holandes (Países Baixos)',
	self::Tp_Noruegues_Nynorsk_Noruega                 => 'Norueguês (Nynorsk) (Noruega)',
	self::Tp_Northern_Sotho                            => 'Northern Sotho',
	self::Tp_Northern_Sotho_Africa_Sul                 => 'Northern Sotho (África do Sul)',
	self::Tp_Punjabi                                   => 'Punjabi',
	self::Tp_Punjabi_India                             => 'Punjabi (India)',
	self::Tp_Polones                                   => 'Polones',
	self::Tp_Polones_Polonia                           => 'Polones (Polonia)',
	self::Tp_Pashto                                    => 'Pashto',
	self::Tp_Pashto_Afeganistao                        => 'Pashto (Afeganistão)',
	self::Tp_Portugues                                 => 'Português',
	self::Tp_Portugues_Brasil                          => 'Português (BR)',
	self::Tp_Portugues_Portugal                        => 'Português (Portugal)',
	self::Tp_Quechua                                   => 'Quechua',
	self::Tp_Quechua_Bolivia                           => 'Quechua (Bolivia)',
	self::Tp_Quechua_Equador                           => 'Quechua (Equador)',
	self::Tp_Quechua_Peru                              => 'Quechua (Peru)',
	self::Tp_Romeno                                    => 'Romeno',
	self::Tp_Romeno_Romania                            => 'Romeno (Romania)',
	self::Tp_Russo                                     => 'Russo',
	self::Tp_Russo_Russia                              => 'Russo(Russia)',
	self::Tp_Sanscrito                                 => 'Sânscrito',
	self::Tp_Sanscrito_India                           => 'Sânscrito (India)',
	self::Tp_Sami_Norte                                => 'Sami (Norte)',
	self::Tp_Sami_Norte_Finlandia                      => 'Sami (Norte) (Finlândia)',
	self::Tp_Sami_Skolt_Finlandia                      => 'Sami (Skolt) (Finlândia)',
	self::Tp_Sami_Inari_Finlandia                      => 'Sami (Inari) (Finlândia)',
	self::Tp_Sami_Norte_Noruega                        => 'Sami (Norte) (Noruega)',
	self::Tp_Sami_Lule_Noruega                         => 'Sami (Lule) (Noruega)',
	self::Tp_Sami_Sul_Noruega                          => 'Sami (Sul) (Noruega)',
	self::Tp_Sami_Norte_Suecia                         => 'Sami (Norte) (Suécia)',
	self::Tp_Sami_Lule_Suecia                          => 'Sami (Lule) (Suécia)',
	self::Tp_Sami_Sul_Suecia                           => 'Sami (Sul) (Suécia)',
	self::Tp_Eslovaco                                  => 'Eslovaco',
	self::Tp_Eslovaco_Eslovaquia                       => 'Eslovaco (Eslováquia)',
	self::Tp_Esloveno                                  => 'Esloveno',
	self::Tp_Esloveno_Slovenia                         => 'Esloveno (Slovenia)',
	self::Tp_Albanian                                  => 'Albanian',
	self::Tp_Albanian_Albania                          => 'Albanian (Albania)',
	self::Tp_Albanes_Latino_Bosnia_Herzegovina         => 'Albanês (Latino) (Bósnia e Herzegovina)',
	self::Tp_Servio_Cirilico_Bosnia_Herzegov           => 'Sérvio (Cirílico) (Bósnia e Herzegovina)',
	self::Tp_Servio_Latino_Servia_Montenegro           => 'Sérvio (Latino) (Sérvia e Montenegro)',
	self::Tp_Servio_Cirilico_Servia_Montenegro         => 'Sérvio (Cirílico) (Sérvia e Montenegro)',
	self::Tp_Sueco                                     => 'Sueco',
	self::Tp_Sueco_Finlandia                           => 'Sueco (Finlandia)',
	self::Tp_Sueco_Suecia                              => 'Sueco (Suécia)',
	self::Tp_Suaili                                    => 'Suaíli',
	self::Tp_Suaili_Quenia                             => 'Suaíli (Quênia)',
	self::Tp_Siriaco                                   => 'Siríaco',
	self::Tp_Siriaco_Siria                             => 'Siríaco (Síria)',
	self::Tp_Tamil                                     => 'Tâmil',
	self::Tp_Tamil_India                               => 'Tâmil (India)',
	self::Tp_Telugu                                    => 'Telugu',
	self::Tp_Telugu_India                              => 'Telugu (India)',
	self::Tp_Tailandes                                 => 'Tailandês',
	self::Tp_Tailandes_Tailandia                       => 'Tailandês (Tailândia)',
	self::Tp_Tagalo                                    => 'Tagalo',
	self::Tp_Tagalo_Filipinas                          => 'Tagalo (Filipinas)',
	self::Tp_Tswana                                    => 'Tswana',
	self::Tp_Tswana_Africa_Sul                         => 'Tswana (África do Sul)',
	self::Tp_Turco                                     => 'Turco',
	self::Tp_Turco_Turquia                             => 'Turco (Turquia)',
	self::Tp_Tartaro                                   => 'Tártaro',
	self::Tp_Tartaro_Russia                            => 'Tártaro (Russia)',
	self::Tp_Tsonga                                    => 'Tsonga',
	self::Tp_Ucraniano                                 => 'Ucraniano',
	self::Tp_Ucraniano_Ucrania                         => 'Ucraniano (Ucrânia)',
	self::Tp_Urdu                                      => 'Urdu',
	self::Tp_Urdu_Republica_Paquistao                  => 'Urdu (República Islâmica do Paquistão)',
	self::Tp_Uzbeque_Latino                            => 'Uzbeque (Latino)',
	self::Tp_Uzbeque_Latino_Usbequistao                => 'Uzbeque (Latino) (Usbequistão)',
	self::Tp_Uzbeque_Cirilico_Usbequistao              => 'Uzbeque (Cirílico) (Usbequistão)',
	self::Tp_Vietnamita                                => 'Vietnamita',
	self::Tp_Vietnamita_Vietna                         => 'Vietnamita (Vietnã)',
	self::Tp_Xhosa                                     => 'Xhosa',
	self::Tp_Xhosa_Africa_Sul                          => 'Xhosa (Africa do Sul)',
	self::Tp_Chines                                    => 'Chinês',
	self::Tp_Chines_S                                  => 'Chinês (S)',
	self::Tp_Chines_Hong_Kong                          => 'Chinês (Hong Kong)',
	self::Tp_Chines_Macau                              => 'Chinês (Macau)',
	self::Tp_Chines_Cingapura                          => 'Chinês (Cingapura)',
	self::Tp_Chines_T                                  => 'Chinês (T)',
	self::Tp_Zulu                                      => 'Zulu',
	self::Tp_Zulu_Africa_Sul                           => 'Zulu (África do Sul)'
  );
}

abstract class Type_RecordConfig extends EnumBasic
{
  const Tp_FilesLogo = 2;

  protected static $nickname = array(
    self::Tp_FilesLogo => 'view/image/pdf.jpg',
  );
}

abstract class Type_UploadFile extends EnumBasic
{
  const Tp_Image = 1;
  const Tp_Record = 2;
  const Tp_TypePdf = 3;

  protected static $nickname = array(
    self::Tp_Image => 'imagemanager',
    self::Tp_Record => 'recordmanager',
    self::Tp_TypePdf => 'pdfmanager',
  );
}

abstract class Type_ImgAllowed extends EnumBasic
{
  const Tp_Jpeg = '.jpeg';
  const Tp_Jpg = '.jpg';
  const Tp_Pjeg = '.pjpeg';
  const Tp_Png = '.png';
  const Tp_Gif = '.gif';
  const Tp_Pdf = '.pdf';
  const Tp_XShoFlash = '.x-shockwave-flash';

  protected static $nickname = array(
    self::Tp_Jpeg => 'image/jpeg',
    self::Tp_Jpg => 'image/jpg',
    self::Tp_Pjeg => 'image/pjpeg',
    self::Tp_Png => 'image/png',
    self::Tp_Gif => 'image/gif',
    self::Tp_Pdf => 'application/pdf',
    self::Tp_XShoFlash => 'application/x-shockwave-flash'
  );
}

abstract class Type_RecordAllowed extends EnumBasic
{
  const Tp_Pdf = '.pdf';

  protected static $nickname = array(
    self::Tp_Pdf => 'application/pdf',
  );
}

abstract class Type_PdfAllowed extends EnumBasic
{
  const Tp_Pdf = '.pdf';

  protected static $nickname = array(
    self::Tp_Pdf => 'application/pdf',
  );
}

abstract class Type_PaymentModule extends EnumBasic
{
  const Tp_PtgDinaminco = 'pagamentodinamico';

  protected static $nickname = array(
    self::Tp_PtgDinaminco => 'Pagamento dinâmico',
  );
}


abstract class Type_OrderMessageStatus extends EnumBasic
{
  const Tp_Enviado = 1;
  const Tp_Lido = 2;
  const Tp_ErrorEnvio = 3;
  const TP_Bloqueado = 4;

  protected static $nickname = array(
    self::Tp_Enviado => 'Enviado',
    self::Tp_Lido => 'Lido',
    self::Tp_ErrorEnvio => 'Erro no envio',
    self::TP_Bloqueado => 'Bloqueado'
  );
}

abstract class Type_OrderMessage extends EnumBasic
{
  const Tp_Enviado = 1;
  const Tp_Recebido = 2;

  protected static $nickname = array(
    self::Tp_Enviado => 'Enviado',
    self::Tp_Recebido => 'Recebido',
  );
}

abstract class Type_TipoDominio extends EnumBasic
{
    const Tp_Dominio = 0;
    const Tp_Subdominio = 1;

    protected static $nickname = array(
        self::Tp_Dominio => 'Dominio',
        self::Tp_Subdominio => 'Subdominio',
    );
}

abstract class Type_ReplicacaoStatus extends EnumBasic
{
    const Tp_Correto = 0;
    const Tp_Erro = 1;
    protected static $nickname = array(
        self::Tp_Correto => 'Aguardando/Replicado',
        self::Tp_Erro => 'Replciação em erro',
    );
}


abstract class Type_ServidorStatus extends EnumBasic
{
  const Tp_Information = 1;
  const Tp_Success = 2;
  const Tp_Redirect = 3;
  const Tp_ErrorClient = 4;
  const Tp_ErrorServer = 5;

  protected static $nickname = array(
    self::Tp_Information => 'Respostas de informação',
    self::Tp_Success => 'Respostas de sucesso',
    self::Tp_Redirect => 'Redirecionamentos',
    self::Tp_ErrorClient => 'Erros do cliente',
    self::Tp_ErrorServer => 'Erros do servidor',
  );
}

abstract class Type_AntiFraudeCheckout extends EnumBasic
{
  const Tp_SemVerificacao = 0;
  const Tp_ClearSaleStartManual = 1;
  //const Tp_AntiFraudeCielo = 2;
  const Tp_CleaSaleTotal = 3;

  protected static $nickname = array(
    self::Tp_SemVerificacao => 'Sem Verificação',
    self::Tp_ClearSaleStartManual => 'Clear Sale Start (Manual)',
    //self::Tp_AntiFraudeCielo => 'Anti Fraude Cielo',
    self::Tp_CleaSaleTotal => 'Clear Sale Total / Total Garantido'
  );
}

abstract class Type_PagamentoStatusCaptura extends EnumBasic{
  const Tp_Aguardando = 1;
  const Tp_Capturado  = 2 ;
  const Tp_Erro       = 3 ;
  const Tp_Cancelado  = 4;

  protected static $nickname = array(
    self::Tp_Aguardando => 'Autorizado / Aguardando Captura',
    self::Tp_Capturado  => 'Capturado',
    self::Tp_Erro       => 'Erro na captura',
    self::Tp_Cancelado  => 'Cancelado'
  );
}

abstract class Type_FraudeNivelRisco extends EnumBasic{
  const Tp_Baixo   = 1;
  const Tp_Medio   = 2 ;
  const Tp_Alto    = 3 ;
  const Tp_Altissimo = 4 ;

  protected static $nickname = array(
    self::Tp_Baixo  => 'Baixo Risco',
    self::Tp_Medio  => 'Medio Risco',
    self::Tp_Alto   => 'Alto Risco',
    self::Tp_Altissimo   => 'Altissimo Risco'
  );
}


abstract class Type_PagamentoTabela extends EnumBasic
{
  const Tp_Cartao = 1;
  const Tp_Boleto = 2;
  const Tp_Transferencia = 3;
  const Tp_Pix = 4;

  protected static $nickname = array(
    self::Tp_Cartao => 'oc_payment_credit_card',
    self::Tp_Boleto => 'oc_payment_billet',
    self::Tp_Transferencia => 'oc_payment_bank_transfer',
    self::Tp_Pix => 'oc_payment_pix'
  );

  protected static $description = array(
    self::Tp_Cartao => 'Cartão',
    self::Tp_Boleto => 'Boleto',
    self::Tp_Transferencia => 'Transferência'
  );
}

abstract class Type_SettingValue extends EnumBasic
{
  const Tp_Text       = 0;
  const Tp_Serialized = 1;
  const Tp_Json       = 2;

  protected static $nickname = array(
    self::Tp_Text       => 'Texto',
    self::Tp_Serialized => 'Serializado',
    self::Tp_Json       => 'Json'
  );
}

abstract class Type_UserCheck extends EnumBasic
{
    const Tp_Unconfirmed = 0;
    const Tp_Confirmed   = 1;
    const Tp_NotDisplay  = 2;

    protected static $nickname = array(
        self::Tp_Unconfirmed => 'Não confirmado',
        self::Tp_Confirmed   => 'Confirmado',
        self::Tp_NotDisplay  => 'Não exibir'
    );
}

abstract class Type_ProductBoxButton extends EnumBasic
{
  const Tp_WithoutButton = 0;
  const Tp_QuantityAndButton = 1;
  const Tp_JustButton = 2;
  const Tp_BuyButtonNoIcon = 3;

  protected static $nickname = array(
    self::Tp_WithoutButton => 'Sem o botão comprar',
    self::Tp_QuantityAndButton => 'Quantidade atacado e botão comprar',
    self::Tp_JustButton => 'Apenas o botão comprar',
    self::Tp_BuyButtonNoIcon => 'Apenas o botão comprar (Sem ícone)'
  );
}

abstract class Type_Address extends EnumBasic
{
  const Tp_Faturamento = 1;
  const Tp_Entrega = 2;
  const Tp_Retirada = 3;

  protected static $nickname = array(
    self::Tp_Faturamento => 'Faturamento',
    self::Tp_Entrega => 'Entrega',
    self::Tp_Retirada => 'Retirada',
  );
}

abstract class Type_Connection extends EnumBasic{
    const Tp_Firebird  = 1 ;
    const Tp_Mysql     = 2 ;

    protected static $nickname = array (
        self::Tp_Firebird  => 'firebird',
        self::Tp_Mysql     => 'mysql'
    );
}

abstract class Type_Appearance extends EnumBasic{
    const Tp_Light = 0;
    const Tp_Dark  = 1;

    protected static $nickname = array (
        self::Tp_Light => array(
            'index' => '',
            'text' => 'Modo claro'
        ),
        self::Tp_Dark  => array(
            'index' => 'dark',
            'text' => 'Modo escuro'
        )
    );
}

abstract class Type_StyleCategory extends EnumBasic{
    const Tp_Style_1  = 1 ;
    const Tp_Style_2  = 2 ;

    protected static $nickname = array (
        self::Tp_Style_1 => array(
            'title' => 'Modelo 1',
            'class' => 'category-style-default'
        ),
        self::Tp_Style_2 => array(
            'title' => 'Modelo 2',
            'class' => 'category-style-home'
        )
    );
}

abstract class Type_PaymentsWithComments extends EnumBasic{
  const Tp_Orcamento = 'orcamento';
  const Tp_BankTransfer = 'bank_transfer';
  const Tp_PagamentoDinamico = 'pagamentodinamico';

  protected static $nickname = array (
    self::Tp_Orcamento  => 'Orçamento',
    self::Tp_BankTransfer  => 'Transferência bancária',
    self::Tp_PagamentoDinamico  => 'Pagamento dinâmico',
  );
}

abstract class Type_paymentLogError extends EnumBasic{
  const TpGetnetCreditCard     = 'getnet_credit';
  const TpGetnetDebitCard     = 'getnet_debit';

  protected static $nickname = array (
    self::TpGetnetCreditCard  => 'Getnet cartão de credito',
    self::TpGetnetDebitCard  => 'Getnet cartão de débito',
  );

}

abstract class Type_PaymentForIntegrationUser extends EnumBasic{
    const Tp_CieloCheckoutAPI30     = 'cielo_api_credito';
    const Tp_CieloPixAPI30          = 'cielo_api_pix';
    const Tp_CieloCheckout          = 'cielointegradofutura';
    const Tp_ItauShopline           = 'itaushopline';
    const Tp_MercadoPago            = 'mercadopago2';
    const Tp_PagSeguro              = 'pagseguro';
    const Tp_PayPal                 = 'paypal';
    const Tp_PayU                   = 'payu';
    const Tp_ERede                  = 'rede_credito';
    const Tp_Yapay                  = 'yapay';
    const Tp_Wirecard               = 'wirecard';
    const Tp_TransferenciaBancaria  = 'bank_transfer';
    const Tp_PagamentoNaEntrega     = 'cod';
    const Tp_Orcamento              = 'orcamento';
    const Tp_PagamentoDinamico      = 'pagamentodinamico';
    const Tp_Getnet                 = 'getnet';
    const Tp_PagSeguroApi           = 'pagseguro_api';
    const Tp_Pagarme                = 'pagarme';
    const Tp_Matera                 = 'matera';
    const Tp_PixPdv                 = 'pixpdv';

    // Esse type é utilizado pra setar um campo da configuracao do modulo de pagamento para colocar no pedido e replicar para o futura server
    // e tambem salva um nome amigavel do modulo de pagamento que foi usado.
    // Os campos da base na tabela de pedido (oc_order) sao integracao_user(config) e payment_caption(caption)
    // No config tem que ser o campo que identifica o usuario da integracao com o pagamento
    protected static $nickname = array (
        self::Tp_CieloCheckoutAPI30     => array(
            'config' => 'cielo_api_numero',
            'caption' => 'Cielo Checkout API 3.0'
        ),
        self::Tp_CieloPixAPI30          => array(
            'config' => 'cielo_api_numero',
            'caption' => 'Cielo Pix API 3.0'
        ),
        self::Tp_CieloCheckout          => array(
            'config' => 'cielointegradofutura_id',
            'caption' => 'Cielo Checkout'
        ),
        self::Tp_ItauShopline           => array(
            'config' => 'itaushopline_afiliacao',
            'caption' => 'Itaú Shopline'
        ),
        self::Tp_MercadoPago            => array(
            'config' => 'mercadopago2_email',
            'caption' => 'Mercado Pago'
        ),
        self::Tp_PagSeguro              => array(
            'config' => 'pagseguro_email',
            'caption' => 'PagSeguro'
        ),
        self::Tp_PayPal                 => array(
            'config' => 'paypal_client_id',
            'caption' => 'PayPal'
        ),
        self::Tp_PayU                   => array(
            'config' => 'payu_merchantId',
            'caption' => 'PayU'
        ),
        self::Tp_ERede                  => array(
            'config' => 'rede_pv',
            'caption' => 'E-Rede'
        ),
        self::Tp_Yapay                  => array(
            'config' => 'yapay_token',
            'caption' => 'Yapay'
        ),
        self::Tp_Wirecard               => array(
            'config' => 'wirecard_token',
            'caption' => 'Wirecard'
        ),
        self::Tp_TransferenciaBancaria  => array(
            'config' => '',
            'caption' => 'Transferência Bancária'
        ),
        self::Tp_PagamentoNaEntrega     => array(
            'config' => '',
            'caption' => 'Pagamento na Entrega'
        ),
        self::Tp_Orcamento              => array(
            'config' => '',
            'caption' => 'Orçamento'
        ),
        self::Tp_PagamentoDinamico      => array(
            'config' => '',
            'caption' => 'Pagamento Dinâmico'
        ),
        self::Tp_Getnet                 => array(
            'config' => 'getnet_client_id',
            'caption' => 'Getnet'
        ),
        self::Tp_PagSeguroApi           => array(
            'config' => 'pagseguro_api_token',
            'caption' => 'Pagseguro API'
        ),
        self::Tp_Pagarme                => array(
            'config' => 'pagarme_client_id',
            'caption' => 'Pagar Me'
        ),
        self::Tp_Matera               => array(
            'config' => 'Matera_client_id',
            'caption' => 'Matera'
        ),
        self::Tp_PixPdv               => array(
            'config' => 'PixPdv_token',
            'caption' => 'Pix PDV'
        ),
    );
}

abstract class Type_MktPaymentForIntegrationUser extends EnumBasic{
    // Esse tipo serve pra preencher o campo "ECM_INTEGRACAO_USER" que é enviado na nota fiscal pelo futura server,
    // a nota fiscal precisa de informações do intermediador no caso de marketplace, então lá é enviado o CNPJ do marketplace,
    // e um identificador especifico que represente o usuario(vendedor) do marketplace

    const Tp_MPMercadoLivre         = 'mercadolivre_payment';
    const Tp_MPSkyHub               = 'skyhub_payment_method';
    const Tp_MPGaleriaPage          = 'galeriapage_payment';
    const Tp_MPShopee               = 'shopee_payment';

    protected static $nickname = array (
        self::Tp_MPMercadoLivre         => array(
            'config' => 'mercadolivre_app_id',
            'caption' => 'Pagamento no Mercado Livre'
        ),
        self::Tp_MPSkyHub               => array(
            'config' => 'skyhub_email',
            'caption' => 'Pagamento no SkyHub'
        ),
        self::Tp_MPGaleriaPage          => array(
            'config' => 'galeriapage_email',
            'caption' => 'Pagamento na Galeria Pagé'
        ),
        self::Tp_MPShopee               => array(
            'config' => 'shopee_shop_id',
            'caption' => 'Pagamento na Shopee'
        ),
    );
}

//Tipos padrões para os módulos que utilizam cartão de crédito ----->
abstract class Type_CalculoParcelamento extends EnumBasic
{
  const SemJuros = 1;
  const Juros    = 2;
  const Desconto = 3;

  protected static $nickname = array(
    self::SemJuros => 'Sem Juros',
    self::Juros    => 'Juros',
    self::Desconto => 'Desconto'
  );
}

abstract class Type_ConfigParcelamento extends EnumBasic
{
  const Padrao      = 1;
  const PorParcela  = 2;
  const PorBandeira = 3;

  protected static $nickname = array(
    self::Padrao      => 'Configuração padrão',
    self::PorParcela  => 'Configuração por parcela',
    self::PorBandeira => 'Configuração por bandeira'
  );
}

abstract class Type_CreditCardModule extends EnumBasic
{
  const Cielo     = 1;
  const Rede      = 2;
  const Yapay     = 3;
  const Wirecard  = 4;
  const Getnet    = 5;
  const Pagseguro = 6;
  const Pagarme   = 7;

  protected static $nickname = array(
    self::Cielo     => 'cielo_api',
    self::Rede      => 'rede',
    self::Yapay     => 'yapay',
    self::Wirecard  => 'wirecard',
    self::Getnet    => 'getnet',
  	self::Pagseguro => 'pagseguro_api',
    self::Pagarme   => 'pagarme',
  );
}
//<----- Tipos padrões para os módulos que utilizam cartão de crédito


abstract class Type_File extends EnumBasic
{
    const Xml    = 1;
    protected static $nickname = array(
        self::Xml    => 'Xml',
    );
}

abstract class TypeDevolutionStatus extends EnumBasic {
  const Pending = 1;
  const WaitingProduts = 2;
  const Completed = 3;
  protected static $nickname = array(
    self::Pending       => 'Pendente',
    self::WaitingProduts        => 'Aguardando Produtos',
    self::Completed       => 'Completa',
  );
}



abstract class TypeDevolutionReason extends EnumBasic
{
  const Broken = 1;
  const Changed = 2;
  const ErrorOrder = 3;
  const Defect = 4;
  const Others = 5;

  protected static $nickname = array(
    self::Broken       => 'Chegou quebrado',
    self::Changed       => 'Produto trocado',
    self::ErrorOrder       => 'Erro no pedido',
    self::Defect  => 'Defeito, forneça detalhes',
    self::Others => 'Outros, forneça detalhes'
  );
}



abstract class Type_Apportionment extends EnumBasic
{
  const Discount      = 1;
  const Increase      = 2;
  const Shipping      = 3;
  const MktCommission = 4;

  protected static $nickname = array(
    self::Discount       => 'desconto_valor',
    self::Increase       => 'acrescimo_valor',
    self::Shipping       => 'frete_valor',
    self::MktCommission  => 'mkt_comission'
  );
}

abstract class Type_OperationsComparation extends EnumBasic
{
    const Equals = ' = ';
    const Diferent = ' != ';
    const Bigger = ' > ';
    const BiggerEquals = ' >= ';
    const Smaller = ' < ';
    const SmallerEquals = ' <= ';
    const Like = 'like ';

    protected static $nickname = array(
        self::Equals => 'Igual',
        self::Diferent => 'Diferente',
        self::Bigger => 'Maior',
        self::BiggerEquals => 'Maior Igual',
        self::Smaller => 'Menor',
        self::SmallerEquals => 'Menor Igual',
        self::Like => 'Comparação de texto',
    );
}

abstract class Type_Shipping extends EnumBasic
// Tipo criado pra adicionar modos de fretes de forma específica para fazer a filtragem nos pedidos
{
    const Tp_MLFull = 'mercadolivre_shipping.Envio Mercado Livre Full';

    protected static $nickname = array(
        self::Tp_MLFull => 'Envio Mercado Livre Full',
    );

    protected static $others = array(
        self::Tp_MLFull => 'mercadolivre_status',
    );
}

abstract class Type_PaymentReplicacaoError extends EnumBasic
{
    const Tp_BankTransfer = 'bank_transfer';
    const Tp_CieloApi30 = 'cielo_api_credito';
    const Tp_CieloApiPix = 'cielo_api_pix';
    const Tp_CieloIntegradoFutura = 'cielo_integrado_futura';
    const Tp_CieloTransparente = 'cielo_transparente';
    const Tp_PagamentoNaEntrega = 'cod';
    const Tp_Getnet = 'getnet';
    const Tp_PagseguroAPI = 'pagseguro_api';
    const Tp_ItauShopline = 'itaushopline';
    const Tp_MercadoPago = 'mercadopago2';
    const Tp_Orcamento = 'orcamento';
    const Tp_PagamentoDinamico = 'pagamentodinamico';
    const Tp_PagamentoFidelidade = 'pagamentofidelity';
    const Tp_Pagseguro = 'pagseguro';
    const Tp_PayPal = 'paypal';
    const Tp_PayU = 'payu';
    const Tp_Rede = 'rede_credito';
    const Tp_Wirecard = 'wirecard';
    const Tp_Yapay = 'yapay';
    const Tp_Skyhub = 'skyhub_payment_method';
    const Tp_MercadoLivre = 'mercadolivre_payment';
    const Tp_GaleriaPage = 'galeriapage_payment';
    const Tp_Shopee = 'shopee_payment';
    const Tp_Pagarme = 'pagarme';
    const Tp_Matera = 'matera';
    const Tp_PixPdv = 'pixpdv';

    protected static $nickname = array(
        self::Tp_BankTransfer => 'Transferência Bancária',
        self::Tp_CieloApi30 => 'Cielo API 3.0',
        self::Tp_CieloApiPix => 'Cielo API Pix',
        self::Tp_CieloIntegradoFutura => 'Cielo Integrado Futura',
        self::Tp_CieloTransparente => 'Cielo Transparente',
        self::Tp_PagamentoNaEntrega => 'Pagamento Na Entrega',
        self::Tp_Getnet => 'Getnet',
        self::Tp_PagseguroAPI => 'Pagseguro API',
        self::Tp_ItauShopline => 'Itaú Shopline',
        self::Tp_MercadoPago => 'Mercado Pago',
        self::Tp_Orcamento => 'Orçamento',
        self::Tp_PagamentoDinamico => 'Pagamento Dinâmico',
        self::Tp_PagamentoFidelidade => 'Pagamento Fidelidade',
        self::Tp_Pagseguro => 'Pagseguro',
        self::Tp_PayPal => 'PayPal',
        self::Tp_PayU => 'PayU',
        self::Tp_Rede => 'eRede',
        self::Tp_Wirecard => 'Wirecard',
        self::Tp_Yapay => 'Yapay',
        self::Tp_Skyhub => 'Pagamento Skyhub',
        self::Tp_MercadoLivre => 'Pagamento Mercado Livre',
        self::Tp_GaleriaPage => 'Pagamento Galeria Page',
        self::Tp_Shopee => 'Pagamento Shopee',
        self::Tp_Pagarme => 'Pagar.Me',
        self::Tp_Matera => 'Matera',
        self::Tp_PixPdv => 'Pix PDV',
    );

    protected static $others = array(
        self::Tp_BankTransfer => 'bank_transfer_order_status_system_id',
        self::Tp_CieloApi30 => 'select_order_status_cielo_id',
        self::Tp_CieloApiPix => 'select_order_status_cielo_id',
        self::Tp_CieloIntegradoFutura => 'select_order_status_cielo_id',
        self::Tp_CieloTransparente => 'select_order_status_cielo_id',
        self::Tp_PagamentoNaEntrega => 'select_order_status_id',
        self::Tp_Getnet => 'getnet_order_status_replicar',
        self::Tp_ItauShopline => 'select_order_status_itaushopline_id',
        self::Tp_MercadoPago => 'select_order_status_mercadopago_id',
        self::Tp_Orcamento => 'orcamento_status_baixa',
        self::Tp_PagamentoDinamico => 'pagamentodinamico_status_baixa',
        self::Tp_PagamentoFidelidade => 'fidelity_status_initial',
        self::Tp_Pagseguro => 'select_order_status_pagseguro_id',
        self::Tp_PayPal => 'select_order_status_paypal_id',
        self::Tp_PayU => 'select_order_status_id',
        self::Tp_Rede => 'select_order_status_erede_id',
        self::Tp_Wirecard => 'wirecard_order_status_replicar',
        self::Tp_Yapay => 'yapay_order_status_replicar',
        self::Tp_Skyhub => 'skyhub_order_status_new',
        self::Tp_MercadoLivre => 'paid', //gambiarra
        self::Tp_GaleriaPage => 'gp_order_status_waiting_payment',
        self::Tp_PagseguroAPI => 'pagseguro_api_order_status_replicar',
    );
}

abstract class Type_ServerDnsAddress extends EnumBasic
{
    const Tp_DNS1 = 'ns11.futurasistemas.com.br';
    const Tp_DNS2 = 'ns12.futurasistemas.com.br';
    const Tp_IP = '168.138.237.26';

    protected static $nickname = array(
        self::Tp_DNS1 => 'DNS 1',
        self::Tp_DNS2 => 'DNS 2',
        self::Tp_IP => 'IP',
    );
}

abstract class Type_CountryCode extends EnumBasic
{
    const Tp_Brazil = '55';

    protected static $nickname = array(
        self::Tp_Brazil => 'Brazil',
    );
}

abstract class Type_GoogleAnalytics extends EnumBasic
{
    const Tp_Gtag = 'gtag';
    const Tp_Gtm = 'gtm';

    protected static $nickname = array(
        self::Tp_Gtag => 'Google Analytics',
        self::Tp_Gtm => 'Google Tag Manager',
    );
}
