<?php

abstract class Type_MercadoLivreModule extends EnumBasic {
  const Tp_Shipping  = "mercadolivre_shipping";
  const Tp_Payment   = "mercadolivre_payment";

  protected static $nickname = array(
    self::Tp_Shipping  => 'Envio Mercado Livre',
    self::Tp_Payment   => 'Pagamento Mercado Livre'
  );
}

abstract class Type_MercadoLivreLogistic extends EnumBasic {
    const Tp_Fulfillment  = "fulfillment";

    protected static $nickname = array(
        self::Tp_Fulfillment  => 'Full'
    );
}

abstract class Type_CodBarraTipo extends EnumBasic{
    const Tp_CodGtin    = 'GTIN';
    const Tp_CodGtin14  = 'GTIN14';
    const Tp_CodEAN     = 'EAN';
    const Tp_CodUPC     = 'UPC';

    protected static $nickname = array (
      self::Tp_CodGtin       => 'Código universal do produto',
      self::Tp_CodGtin14     => 'GTIN-14',
      self::Tp_CodEAN        => 'EAN',
      self::Tp_CodUPC        => 'UPC'
    );
}

abstract class Type_MercadoLivreEmail extends EnumBasic{
  const Tp_Default      = 0 ;
  const Tp_Habilitado   = 1 ;
  const Tp_Desabilitado = 2 ;

  protected static $nickname = array (
    self::Tp_Default       => 'Enviar para os e-mail padrões',
    self::Tp_Habilitado    => 'Enviar para os e-mails inseridos abaixo',
    self::Tp_Desabilitado  => 'Não enviar'
  );
}

abstract class Type_MercadoLivreIDField extends EnumBasic{
    const Tp_ItemCond    = 'ITEM_CONDITION';
    const Tp_Marca       = 'BRAND';

    protected static $nickname = array (
      self::Tp_ItemCond           => 'Condição do item',
      self::Tp_Marca              => 'Marca'
    );
}

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

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

abstract class Type_MercadoLivreType extends EnumBasic{
    const Tp_IdentProduto    = 'product_identifier';

    protected static $nickname = array (
      self::Tp_IdentProduto       => 'Identificação do produto'
    );
}

abstract class Type_MercadoLivreValueType extends EnumBasic{
    const Tp_Boolean    = 'boolean';
    const Tp_Numeric    = 'number';
    const Tp_NumberUnit = 'number_unit';

    protected static $nickname = array (
      self::Tp_Boolean       => 'Boolean',
      self::Tp_Numeric       => 'Numerico',
      self::Tp_NumberUnit    => 'Tipo'
    );
}

abstract class Type_MercadoLivreId extends EnumBasic{
    const Tp_Brand    = 'BRAND';

    protected static $nickname = array (
      self::Tp_Brand       => 'Brand',
    );
}

abstract class Type_MercadoLivreMode extends EnumBasic{
    const Tp_Buy_it_now = 'buy_it_now' ;
    /*const Tp_Classified = 'classified' ;
    const Tp_Auction    = 'auction'    ;*/

    protected static $nickname = array (
      self::Tp_Buy_it_now => 'Compre Agora'
     /*self::Tp_Classified => 'Classificado',
      self::Tp_Auction    => 'Leilão'*/
    );
}


abstract class Type_MercadoLivreCondition extends EnumBasic{
    const Tp_New  = 'new'  ;
    const Tp_Used = 'used' ;

    protected static $nickname = array (
      self::Tp_New  => 'Novo',
      self::Tp_Used => 'Usado'
    );
}

abstract class Type_MercadoLivremercaListType extends EnumBasic{
    const Tp_Free         = 'free' ;
    const Tp_GoldSpecial  = 'gold_special' ;
    const Tp_GoldPro      = 'gold_pro' ;
    const Tp_Bronze       = 'bronze' ;
    const Tp_Silver       = 'silver' ;
    const Tp_GoldPremium  = 'gold_premium';
    const Tp_Gold         = 'gold';

    protected static $nickname = array (
      self::Tp_Free         => 'Grátis',
      self::Tp_GoldSpecial  => 'Clássico',
      self::Tp_GoldPro      => 'Premium'
    );

    protected static $others = array(
      self::Tp_Bronze       => 'Bronze',
      self::Tp_Silver       => 'Prata',
      self::Tp_GoldPremium  => 'Diamante',
      self::Tp_Gold         => 'Ouro'
    );
}

abstract class Type_MercadoLivreItemStatus extends EnumBasic{
    const Tp_Active   = 'active' ;
    const Tp_Paused   = 'paused' ;
    const Tp_Closed   = 'closed' ;
    const Tp_Revision = 'under_review';

    protected static $nickname = array (
      self::Tp_Active   => 'Ativo',
      self::Tp_Paused   => 'Pausado',
      self::Tp_Closed   => 'Finalizado',
      self::Tp_Revision => 'Em Revisão'
    );
}

abstract class Type_MercadoLivreModoEnvio extends EnumBasic{
    const Tp_NotSpecified   = 'not_specified' ;
    const Tp_MercadoEnvio10 = 'me10' ;
    const Tp_MercadoEnvio11 = 'me11' ;
    const Tp_MercadoEnvio20 = 'me20' ;
    const Tp_MercadoEnvio21 = 'me21' ;

    protected static $nickname = array (
      self::Tp_NotSpecified   => 'Não Especificado',
      self::Tp_MercadoEnvio10 => 'Mercado Envios modo 1',
      self::Tp_MercadoEnvio11 => 'Mercado Envios modo 1 e Retirar na Loja',
      self::Tp_MercadoEnvio20 => 'Mercado Envios modo 2',
      self::Tp_MercadoEnvio21 => 'Mercado Envios modo 2 e Retirar na Loja'
    );
}

abstract class Type_MercadoLivreStatus extends EnumBasic{
    const Tp_Confirmed        = 'confirmed' ;
    const Tp_PaymentRequired  = 'payment_required' ;
    const Tp_PaymentInProcess = 'payment_in_process' ;
    const Tp_Paid             = 'paid';
    const Tp_Cancelled        = 'cancelled';
    const Tp_ProductReadyToShip = 'ready_to_ship';
    const Tp_OrderFinally     = 'order_finally';
    const Tp_Invalid          = 'invalid';

    protected static $nickname = array (
      self::Tp_Confirmed        => 'Status Inicial do Pedido',
      self::Tp_PaymentRequired  => 'Aguardando Pagamento',
      self::Tp_PaymentInProcess => 'Pagamento em Processos',
      self::Tp_Paid             => 'Pago',
      self::Tp_Cancelled        => 'Cancelado',
      self::Tp_ProductReadyToShip => 'Produto Postado',
      self::Tp_OrderFinally     => 'Pedido Completo',
      self::Tp_Invalid          => 'Inválido'
    );
}

abstract class Type_MercadoLivreNfeStatus extends EnumBasic{
    const Tp_NfeInvoiced = 'nfe_invoiced' ;

    protected static $nickname = array (
        self::Tp_NfeInvoiced => 'Nota fiscal enviada'
    );
}

abstract class Type_MercadoLivreEnvioStatus extends EnumBasic{
  const Tp_ToBeAgreed       = 'to_be_agreed'  ;
  const Tp_Pending          = 'pending'       ;
  const Tp_Handling         = 'handling'      ;
  const Tp_Shipped          = 'shipped'       ;
  const Tp_Delivered        = 'delivered'     ;
  const Tp_NotDelivered     = 'not_delivered' ;
  const Tp_NotVerified      = 'not_verified'  ;
  const Tp_Cancelled        = 'cancelled'     ;
  const Tp_Closed           = 'closed'        ;
  const Tp_Error            = 'error'         ;
  const Tp_Active           = 'active'        ;
  const Tp_NotSpecified     = 'not_specified' ;
  const Tp_ReadyToShip      = 'ready_to_ship' ;

  protected static $nickname = array (
    self::Tp_ToBeAgreed       => 'A ser acordado',
    self::Tp_Pending          => 'Pendente',
    self::Tp_Handling         => 'Tratamento',
    self::Tp_Shipped          => 'Enviado',
    self::Tp_Delivered        => 'Entregue',
    self::Tp_NotDelivered     => 'Não Entregue',
    self::Tp_NotVerified      => 'Não Verificado',
    self::Tp_Cancelled        => 'Cancelado',
    self::Tp_Closed           => 'Fechado',
    self::Tp_Error            => 'Erro',
    self::Tp_Active           => 'Ativo',
    self::Tp_NotSpecified     => 'Não Especificado',
    self::Tp_ReadyToShip      => 'Pronto para enviar'
  );
}

abstract class Type_MercadoLivreError extends EnumBasic{
    const TP_MinNotmet                                    = 'min.notmet'                                      ;
    const TP_ItemCategoryIdInvalid                        = 'item.category_id.invalid'                        ;
    const TP_ItemCategoryIdNotModifiable                  = 'item.category_id.not_modifiable'                 ;
    const TP_ItemBuyingModeInvalid                        = 'item.buying_mode.invalid'                        ;
    const TP_ItemAttributesMissingRequired                = 'item.attributes.missing_required'                ;
    const TP_ItemListingTypeIdInvalid                     = 'item.listing_type_id.invalid'                    ;
    const TP_ItemListingTypeIdRequiresPictures            = 'item.listing_type_id.requiresPictures'           ;
    const TP_ItemSiteIdInvalid                            = 'item.site_id.invalid'                            ;
    const TP_ItemDescriptionMax                           = 'item.description.max'                            ;
    const TP_ItemPicturesMax                              = 'item.pictures.max'                               ;
    const TP_ItemAttributesInvalidLength                  = 'item.attributes.invalid_length'                  ;
    const TP_SellerUnableToList                           = 'seller.unable_to_list'                           ;
    const TP_InvalidClient                                = 'invalid_client'                                  ;
    const TP_InvalidGrant                                 = 'invalid_grant'                                   ;
    const TP_InvalidScope                                 = 'invalid_scope'                                   ;
    const TP_InvalidRequest                               = 'invalid_request'                                 ;
    const TP_UnsupportedGrantType                         = 'unsupported_grant_type'                          ;
    const TP_Forbidden                                    = 'forbidden'                                       ;
    const TP_InvalidQuestion                              = 'invalid_question'                                ;
    const TP_InvalidPostBody                              = 'invalid_post_body'                               ;
    const TP_OrderNotFound                                = 'order_not_found'                                 ;
    const TP_EmptyOrderId                                 = 'empty_order_id'                                  ;
    const TP_InvalidOrderId                               = 'invalid_order_id'                                ;
    const TP_NotIdentifiedUser                            = 'not_identified_user'                             ;
    const TP_CallerIdInvalid                              = 'caller.id.invalid'                               ;
    const TP_FeedbackNotFound                             = 'feedback_not_found'                              ;
    const TP_InvalidFulfilled                             = 'invalid_fulfilled'                               ;
    const TP_ReplyTimeExpired                             = 'reply_time_expired'                              ;
    const TP_ReplyAlreadyExists                           = 'reply_already_exists'                            ;
    const TP_ItemQuantityInvalid                          = 'item.quantity.invalid'                           ;
    const TP_AddressPending                               = 'address_pending'                                 ;
    const TP_IdentificationPending                        = 'identification_pending'                          ;
    const TP_ItemSellerNotActive                          = 'item.seller.not_active'                          ;
    const TP_ItemStartTimeInvalid                         = 'item.start_time.invalid'                         ;
    const TP_ItemAvailableQuantityInvalid                 = 'item.available_quantity.invalid'                 ;
    const TP_ItemAttributesInvalid                        = 'item.attributes.invalid'                         ;
    const TP_ItemVariationsAttributeCombinationsInvalid   = 'item.variations.attribute_combinations.invalid'  ;
    const TP_ItemShippingModeInvalid                      = 'item.shipping.mode.invalid'                      ;
    const TP_ItemPriceInvalid                             = 'item.price.invalid'                              ;
    const TP_ItemStatusInvalid                            = 'item.status.invalid'                             ;
    const TP_ItemDescriptionTypeInvalid                   = 'item.description.type.invalid'                   ;
    const TP_IemListingTypeIdUnavailable                  = 'item.listing_type_id.unavailable'                ;
    const TP_BodyInvalidFieldTypes                        = 'body.invalid_field_types'                        ;
    const TP_InvalidTokey                                 = 'invalid_token'                                   ;
    const TP_ItemAttributesOmitted                        = 'item.attributes.omitted'                         ;
    const TP_FieldConstraintViolated                      = 'field.constraint.violated'                       ;
    const TP_ExpiredToken                                 = 'expired_token'                                   ;
    const TP_ItemAttributesNonExistentLimit               = 'item.attributes.non_existent.limit_exceeded'     ;
    const TP_ItemVariationsAttributeCombinationsInvalidPk = 'item.variations.attribute_combinations.invalid_pk';
    const TP_WrongReceiverZipcode                         = 'wrong_receiver_zipcode';

    protected static $nickname = array (
      self::TP_MinNotmet                                  => 'A quantidade do produto é 0, o estoque mínimo para sincronizar o produto deve ser 1!',
      self::TP_ItemCategoryIdInvalid                      => 'Não é permitido publicar na categoria escolhida, altere a opção nas configurações do modulo mercado livre ou na ficha tecnica!',
      self::TP_ItemCategoryIdNotModifiable                => 'Não é permitido alterar a categoria de anúncios que já possuam vendas!',
      self::TP_ItemBuyingModeInvalid                      => 'Não é permitido publicar na categoria escolhida e no modo de venda configurado!',
      self::TP_ItemAttributesMissingRequired              => 'Atributos obrigatórios para esta categoria não estão especificados!',
      self::TP_ItemListingTypeIdInvalid                   => 'Tipo de anúncio selecionado é inválido!',
      self::TP_ItemListingTypeIdRequiresPictures          => 'Imagens do produtos são obrigatórias para o tipo de anúncio selecionado!',
      self::TP_ItemSiteIdInvalid                          => 'O país selecionado é inválido!',
      self::TP_ItemDescriptionMax                         => 'O descrição do produto deve ter menos que 50.000 caracteres!',
      self::TP_ItemPicturesMax                            => 'Quantidade de imagens do produto é maior que a permitida para a categoria selecionada!',
      self::TP_ItemAttributesInvalidLength                => 'Opções obrigatórias para a categoria estão inválidas!',
      self::TP_SellerUnableToList                         => 'Vendedor impossibilitado de anúnciar!',
      self::TP_InvalidClient                              => 'Id do cliente informado é inválido!',
      self::TP_InvalidGrant                               => 'Autorização para gerar token de acesso inválida!',
      self::TP_InvalidScope                               => 'O escopo solicitado é inválido!',
      self::TP_InvalidRequest                             => 'Parâmetro obrigatório inválido!',
      self::TP_UnsupportedGrantType                       => 'O servidor de autorização não aceita o tipo de conexão!',
      self::TP_Forbidden                                  => 'Acesso não autorizado!',
      self::TP_InvalidPostBody                            => 'Os parâmetros para pergunta estão inválidos!',
      self::TP_OrderNotFound                              => 'O ID do pedido não foi encontrado!',
      self::TP_EmptyOrderId                               => 'O ID do pedido deve ser preenchido, ele não pode ficar incompleto!',
      self::TP_InvalidOrderId                             => 'O ID do pedido é inválido!',
      self::TP_NotIdentifiedUser                          => 'O usuário não foi identificado!',
      self::TP_CallerIdInvalid                            => 'O ID do comprador/vendedor é inválido!',
      self::TP_FeedbackNotFound                           => 'O feedback não existe!',
      self::TP_InvalidFulfilled                           => 'O parâmetro “concluído” deve ser verdadeiro ou falso!',
      self::TP_ReplyTimeExpired                           => 'Erro ao dar resposta sobre o feedback!',
      self::TP_ReplyAlreadyExists                         => 'Erro ao dar resposta sobre o feedback!',
      self::TP_ItemQuantityInvalid                        => 'A quantidade do produto é menor que 0, estoque mínimo para sincronizar o produto deve ser 1!',
      self::TP_AddressPending                             => 'O endereço do vendedor esta pendente nas configurações do mercado livre!',
      self::TP_IdentificationPending                      => 'A identificação do vendedor esta pendente nas configurações do mercado livre!',
      self::TP_ItemSellerNotActive                        => 'A identificação do vendedor esta inativa!',
      self::TP_ItemStartTimeInvalid                       => 'O parâmetro start_time só pode ser atualizado se o status do item for NOT_YET_ACTIVE!',
      self::TP_ItemAvailableQuantityInvalid               => 'A quantidade de estoque esta maior que o permitido nesta categoria!',
      self::TP_ItemAttributesInvalid                      => 'Os atributos estão inválidos!',
      self::TP_ItemVariationsAttributeCombinationsInvalid => 'Os atributos das combinações estão inválidos!',
      self::TP_ItemShippingModeInvalid                    => 'O modo de envio selecionado é inválido!',
      self::TP_ItemPriceInvalid                           => 'Impossível anunciar produtos sem preço!',
      self::TP_ItemStatusInvalid                          => 'Status do item enviado é inválido!',
      self::TP_ItemDescriptionTypeInvalid                 => 'A descrição possui caracteres inválidos!',
      self::TP_IemListingTypeIdUnavailable                => 'Tipo de anúncio indisponível para a categoria selecionada, altere o tipo de anúncio e tente novamente!',
      self::TP_BodyInvalidFieldTypes                      => 'Dados faltantes do produto exigido pelo mercado livre',
      self::TP_InvalidTokey                               => 'Token expirado, por favor refaça a autenticação!
        <a class="text-primary text-decoration-none text-small" target="_blank" href="http://manual.futurasistemas.com.br/manual-do-sistema/como-configurar-o-modulo-do-mercado-livre/#autenticacao">Clique aqui para ver a documentação de autenticação do Mercado Livre.</a>',
      self::TP_ItemAttributesOmitted                      => 'Unidade(s) de medida do(s) atributo(s) inválida(s)',
      self::TP_FieldConstraintViolated                    => 'Erro ao enviar a imagem',
      self::TP_ExpiredToken                               => 'Token expirado, por favor refaça a autenticação!
        <a class="text-primary text-decoration-none text-small" target="_blank" href="http://manual.futurasistemas.com.br/manual-do-sistema/como-configurar-o-modulo-do-mercado-livre/#autenticacao">Clique aqui para ver a documentação de autenticação do Mercado Livre.</a>',
      self::TP_ItemAttributesNonExistentLimit             => 'O limite de atributos personalizados foi excedido, verifique as variações na ficha técnica!',
      self::TP_ItemVariationsAttributeCombinationsInvalidPk => 'Variações com diferentes combinações de atributos não são permitidas.',
      self::TP_WrongReceiverZipcode => 'O CEP da NF-e deve ser igual ao CEP do pedido.'
    );
}

abstract class Type_MercadoLivreLinkHelp extends EnumBasic{
  const Tp_ItemCategoryIdInvalid  = 'item.category_id.invalid'  ;

  protected static $nickname = array (
    self::Tp_ItemCategoryIdInvalid    => 'http://manual.futurasistemas.com.br/sem-categoria/erros-de-categorias-do-mercado-livre/'
  );
}

abstract class Type_MercadoLivreQuestionStatus extends EnumBasic{
  const Tp_Answered          = 'ANSWERED';
  const Tp_Banned            = 'BANNED';
  const Tp_ClosedUnanswered  = 'CLOSED_UNANSWERED';
  const Tp_Deleted           = 'DELETED';
  const Tp_Disabled          = 'DISABLED';
  const Tp_Unanswered        = 'UNANSWERED';
  const Tp_UnderReview       = 'UNDER_REVIEW';

  protected static $nickname = array (
    self::Tp_Answered         => 'Respondidas',
    self::Tp_Banned           => 'Banida',
    self::Tp_ClosedUnanswered => 'Fechado',
    self::Tp_Deleted          => 'Deletado',
    self::Tp_Disabled         => 'Desativado',
    self::Tp_Unanswered       => 'Não Respondida',
    self::Tp_UnderReview      => 'Sob Revisão',
  );
}

abstract class Type_MercadoLivreTags extends EnumBasic{
  const Tp_TagCod         = 'cod' ;
  const Tp_TagLinkDanfe   = 'link_danfe' ;
  const Tp_TagLinkXml     = 'link_xml' ;
  const Tp_TagChaveAcesso = 'chave_acesso';

  protected static $nickname = array (
    self::Tp_TagCod         => 'Exibir o código de rastreio',
    self::Tp_TagLinkDanfe   => 'Exibir o link da danfe',
    self::Tp_TagLinkXml     => 'Exibir o link do xml',
    self::Tp_TagChaveAcesso => 'Exibir a chave de acesso'
  );
}

abstract class Type_MlAttrTipo extends EnumBasic{
    const Tp_Normal    = 0 ;
    const Tp_Variavel  = 1 ;

    protected static $nickname = array (
        self::Tp_Normal   => 'Normal',
        self::Tp_Variavel => 'Variável'
    );
}

abstract class Type_ErrorGrade extends EnumBasic {
    const Tp_ErGrid   = 'grade_error';

    protected static $nickname = array(
        self::Tp_ErGrid      => 'Um item da grade contém um anúncio ativo no mercado livre'
    );
}


abstract class Type_Garantia extends EnumBasic {
  const Tp_GaVendedor       = 2230280;
  const Tp_GaFabrica        = 2230279;
  const Tp_GaSemGarantia    = 6150835;

  protected static $nickname = array(
      self::Tp_GaVendedor         => 'Garantia do vendedor',
      self::Tp_GaFabrica          => 'Garantia de fábrica',
      self::Tp_GaSemGarantia      => 'Sem garantia'
  );
}

abstract class Type_TempoGarantia extends EnumBasic {
  const Tp_GaDia    = 1;
  const Tp_GaMes    = 2;
  const Tp_GaAno    = 3;

  protected static $nickname = array(
      self::Tp_GaDia      => 'dias',
      self::Tp_GaMes      => 'meses',
      self::Tp_GaAno      => 'anos'
  );
}

abstract class Type_MlMe2Services extends EnumBasic{
  const Tp_Pac    = 'PAC' ;
  const Tp_Sedex  = 'Sedex' ;

  protected static $nickname = array (
    self::Tp_Pac   => 'Pac',
    self::Tp_Sedex => 'Sedex'
  );
}


abstract class TypeMercadoLivre_Situacao extends EnumBasic{
  const Tp_SituacaoRecebido      = 1 ;
  const Tp_SituacaoErro          = 2 ;
  const Tp_SituacaoNotificado    = 3 ;
  const Tp_SituacaoAguardando    = 4 ;


  protected static $nickname = array (
    self::Tp_SituacaoRecebido     => 'Recebido do Mercado Livre',
    self::Tp_SituacaoErro         => 'Erro no Mercado Livre',
    self::Tp_SituacaoNotificado   => 'Mercado Livre Notificado',
    self::Tp_SituacaoAguardando   => 'Aguardando Sincronia'
  );
}

abstract class TypeMercadoLivre_Origem extends EnumBasic{
  const Tp_Recebimento  = 1 ;
  const Tp_Envio        = 2 ;
  const Tp_Aguardando   = 3 ;

  protected static $nickname = array (
    self::Tp_Recebimento  => 'Recebimento',
    self::Tp_Envio        => 'Envio',
    self::Tp_Aguardando   => 'Aguardando'
  );
}

abstract class Type_CallbackTopic extends EnumBasic{
    const Tp_Items     = 1 ;
    const Tp_Orders    = 2 ;
    const Tp_OrdersV2  = 3 ;
    const Tp_Shipments = 4 ;
    const Tp_Questions = 5 ;

    protected static $nickname = array (
        self::Tp_Items     => 'items',
        self::Tp_Orders    => 'order',
        self::Tp_OrdersV2  => 'orders_v2',
        self::Tp_Shipments => 'shipments',
        self::Tp_Questions => 'questions',
    );
}

abstract class Type_MlSettings extends EnumBasic {

    const Geral         = 'geral' ;
    const Anuncio       = 'anuncio' ;
    const Preco         = 'preco' ;
    const StatusPedido  = 'statuspedido' ;
    const MsgAutomatica = 'msgautomatica' ;
    const Comissao      = 'comissao' ;
    const Envio         = 'envio' ;
    const Email         = 'email' ;
    const UserGroup     = 'usergroup' ;

    protected static $nickname = array (
        self::Geral         => 'Geral',
        self::Anuncio       => 'Anúncio',
        self::Preco         => 'Preço',
        self::Anuncio       => 'Anuncio',
        self::StatusPedido  => 'Status do pedido',
        self::MsgAutomatica => 'Mensagem automática',
        self::Comissao      => 'Comissões',
        self::Envio         => 'Envio',
        self::Email         => 'E-mail',
        self::UserGroup     => 'Usuário de Teste'
    );
}

abstract class Type_TabAdvertisement extends EnumBasic {

    const InfoDefault = 0 ;
    const GeneDesc   = 1 ;

    protected static $nickname = array (
        self::InfoDefault  => 'Informações Padrões',
        self::GeneDesc     => 'Descrição geral'
    );
}

abstract class Type_CatalogSetting extends EnumBasic {

  const catalogRequired = 'catalog_required' ;

  protected static $nickname = array (
    self::catalogRequired  => 'Obrigatório para o catálogo',
  );

}


abstract class Type_MercadoLivrePayment extends EnumBasic{
    const Visa          = 'visa';
    const Master        = 'master';
    const Amex          = 'amex';
    const Hipercard     = 'hipercard';
    const Diners        = 'diners';
    const Elo           = 'elo';
    const Melicard      = 'melicard';
    const BolBradesco   = 'bolbradesco';
    const AccountMoney = 'account_money';
    const Giftcard      = 'giftcard';
    const Pec           = 'pec';
    const Paypal        = 'paypal';
    const Pix           = 'pix';

    protected static $nickname = array (
		self::Visa          => 'Visa',
		self::Master        => 'Mastercard',
		self::Amex          => 'American Express',
		self::Hipercard     => 'Hipercard',
		self::Diners        => 'Diners Club International',
		self::Elo           => 'Elo',
		self::Melicard      => 'Cartão Mercado Livre',
		self::BolBradesco   => 'Boleto Bancario',
		self::AccountMoney  => 'Dinheiro em conta',
		self::Giftcard      => 'Giftcard',
		self::Pec           => 'Pagamento na Lotérica',
		self::Paypal        => 'Paypal',
		self::Pix           => 'Pix'
    );
}

abstract class Type_MercadoLivrePaymentMethod extends EnumBasic{
    const CreditCard      = 'credit_card';
    const Ticket          = 'ticket';
    const AccountMoney    = 'account_money';
    const DigitalCurrency = 'digital_currency';
    const DigitalWallet   = 'digital_wallet';
    const BankTransfer    = 'bank_transfer';

    protected static $nickname = array (
        self::CreditCard      => 'Cartão de Crédito',
        self::Ticket          => 'Boleto',
        self::AccountMoney    => 'Dinheiro em conta',
        self::DigitalCurrency => 'Giftcard',
        self::DigitalWallet   => 'Carteira Digital',
        self::BankTransfer    => 'Transferencia Bancaria',
    );
}

