<?php

abstract class TypeSkyhub_DeliveryContractType extends EnumBasic{
  const Tp_B2wenpac   = "B2WENPAC";
  const Tp_Pickup     = "PICKUP";
  const Tp_Shipstore  = "SHIPSTORE";

  protected static $nickname = array(
    self::Tp_B2wenpac   => 'B2w Pac',
    self::Tp_Pickup     => 'Retirar na loja',
    self::Tp_Shipstore  => 'Entrega motoboy'
  );
}

abstract class TypeSkyhub_Module extends EnumBasic{
  const Tp_Payment   = "skyhub_payment_method";
  const Tp_Shipping  = "skyhub_shipping_method";

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

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

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

abstract class TypeSkyHub_FreteEstrutMerc extends EnumBasic{
  const Tp_Correios     = 0 ;
  const Tp_Jadlog       = 1 ;
  const Tp_Jamef        = 2 ;
  const Tp_Dlog         = 3 ;
  const Tp_Tnt          = 4 ;
  //const Tp_Intelipost   = 5 ;
  //const Tp_loggi        = 6 ;

  protected static $nickname = array (
    self::Tp_Correios  => 'correios',
    self::Tp_Jadlog    => 'jadlog',
    self::Tp_Jamef     => 'jamef',
    self::Tp_Dlog      =>	"dlog",
    self::Tp_Tnt       =>	"tnt"
    //self::Tp_Intelipost=>	"intelipost",
    //self::Tp_loggi     =>	"loggi",
  );
}

abstract class TypeSkyHubOrder_Status extends EnumBasic{
  const Tp_book_product              = 0 ;
  const Tp_payment_received          = 1 ;
  const Tp_order_canceled            = 2 ;
  const Tp_order_shipped             = 3 ;
  const Tp_complete                  = 4 ;
  const Tp_shipment_exception        = 5 ;
  const Tp_order_invoiced            = 6 ;
  const Tp_waiting_payment           = 7 ;
  const Tp_confirm_stock             = 8 ;
  const Tp_confirmed_stock           = 9 ;
  const Tp_processing_store          = 10 ;

  //status criado para quando o confirm_stock é passado como false
  const Tp_canceled_stock            = 11 ;

  protected static $nickname = array(
    self::Tp_book_product             => 'book_product',
    self::Tp_payment_received         => 'payment_received',
    self::Tp_order_canceled           => 'order_canceled',
    self::Tp_order_shipped            => 'order_shipped',
    self::Tp_complete                 => 'complete',
    self::Tp_shipment_exception       => 'shipment_exception',
    self::Tp_order_invoiced           => 'order_invoiced',
    self::Tp_waiting_payment          => 'waiting_payment',
    self::Tp_confirm_stock            => 'confirm_stock',
    self::Tp_confirmed_stock          => 'confirmed_stock',
    self::Tp_processing_store         => 'processing_store',
  );

  protected static $others = array(
    self::Tp_canceled_stock           => 'canceled_stock',
  );

}

abstract class TypeSkyHub_Origem extends EnumBasic{
  const Tp_Recebimento  = 0 ;
  const Tp_Envio   = 1 ;
  const Tp_Aguardando  = 2 ;

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

abstract class TypeSkyHub_Situacao extends EnumBasic{
  const Tp_SituacaoRecebido      = 0 ;
  const Tp_SituacaoErro          = 1 ;
  const Tp_SituacaoNotificado    = 2 ;
  const Tp_SituacaoAguardando    = 3 ;


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



abstract class TypeSkyHubOrder_Type extends EnumBasic{
  const Tp_new                = 'NEW' ;
  const Tp_approved           = 'APPROVED' ;
  const Tp_invoiced           = 'INVOICED' ;
  const Tp_shipped            = 'SHIPPED' ;
  const Tp_delivered          = 'DELIVERED' ;
  const Tp_canceled           = 'CANCELED' ;
  const Tp_shipment_exception = 'SHIPMENT_EXCEPTION' ;
  const Tp_payment_overdue    = 'PAYMENT_OVERDUE' ;
  const Tp_confirm_stock      = 'CONFIRM_STOCK';
  const Tp_confirmed_stock    = 'CONFIRMED_STOCK';
  const Tp_processing_store   = 'PROCESSING_STORE';

  protected static $nickname = array(
    self::Tp_new                => 'Recebido',
    self::Tp_approved           => 'Aprovado',
    self::Tp_invoiced           => 'NF Enviada',
    self::Tp_shipped            => 'Enviado',
    self::Tp_delivered          => 'Entregue ',
    self::Tp_canceled           => 'Cancelado',
    self::Tp_shipment_exception => 'Problema com a entrega',
    self::Tp_payment_overdue    => 'Boleto Vencido',
    self::Tp_confirm_stock      => 'Aguardando confirmação de estoque',
    self::Tp_processing_store   => 'Aguardando retirada na loja'
  );
}


abstract class TypeSkyHubAssociationStatus extends EnumBasic{
  const Tp_Linked                = 1 ;
  const Tp_UnLink                = 2 ;
  const Tp_Pause                 = 3 ;
  const Tp_Confirmate            = 4 ;
  const Tp_Resume                = 5 ;
  const Tp_Update                = 6 ;
  const Tp_Pickup                = 7 ;
  const Tp_Associate             = 8 ;
  const Tp_Declined              = 9 ;
  const Tp_WaitingConfirmation   = 10 ;

  protected static $nickname = array(
    self::Tp_Linked                => 'linked',
    self::Tp_UnLink                => 'unlink',
    self::Tp_Pause                 => 'pause',
    self::Tp_Confirmate            => 'confirmate',
    self::Tp_Resume                => 'resume',
    self::Tp_Update                => 'update',
    self::Tp_Pickup                => 'pickup',
    self::Tp_Associate             => 'associate',
    self::Tp_Declined              => 'declined',
    self::Tp_WaitingConfirmation   => 'waiting_confirmation'
  );
}


abstract class TypeSkyHubQuestionStatus extends EnumBasic{
  const Tp_Answered               = 'ANSWERED';
  const Tp_Unanswered             = 'UNANSWERED';
  const Tp_UnansweredByYou        = 'UNANSWERED_BY_YOU';
  const Tp_Finished               = 'FINISHED';

  protected static $nickname = array(
    self::Tp_Answered         => 'Respondidas',
    self::Tp_Unanswered       => 'Não respondidas',
    self::Tp_UnansweredByYou  => 'Não respondida por você',
    self::Tp_Finished         => 'Finalizada'
  );
}

abstract class TypeSkyHubError extends EnumBasic{
  const Tp_Products         = 'products' ;
  const Tp_Orders           = 'orders' ;

  protected static $nickname = array(
    self::Tp_Products       => 'Produtos',
    self::Tp_Orders         => 'Pedidos'
  );
}

abstract class TypeSkyHubReturnApiError extends EnumBasic{
    const ProductDescription         = 1 ;

    protected static $nickname = array(
      self::ProductDescription       => 'product[description]',
    );

    protected static $description = array(
        self::ProductDescription       => 'Descrição do produto',
    );
  }



abstract class TypeSkyHubHttpCode extends EnumBasic{
    const Tp_Sucesso                         = 200 ;
    const Tp_Criado                          = 201 ;
    const Tp_SemConteudo                     = 204 ;
    const Tp_RequisicaoMalFormatada          = 400 ;
    const Tp_NaoAutenticado                  = 401 ;
    const Tp_NaoAutorizado                   = 403 ;
    const Tp_NaoEncontrado                   = 404 ;
    const Tp_FormatoNaoAceito                = 406 ;
    const Tp_FormatoMidiaNaoAceito           = 415 ;
    const Tp_ErroSemantico                   = 422 ;
    const Tp_LimiteRequisicoesUltrapassado   = 429 ;
    const Tp_ErroInterno                     = 500 ;
    const Tp_ErroInterno2                    = 502 ;
    const Tp_ServicoIndisponivel             = 503 ;
    const Tp_Timeout                         = 504 ;

    protected static $nickname = array(
        self::Tp_Sucesso     => 'Sucesso - a requisição foi processada com sucesso',
        self::Tp_Criado   => 'Criado - a requisição foi processada com sucesso e resultou em um novo recurso criado',
        self::Tp_SemConteudo => 'Sem conteúdo - a requisição foi processada com sucesso e não existe conteúdo adicional na resposta',
        self::Tp_RequisicaoMalFormatada => 'Requisição mal-formada -  a requisição não está de acordo com o formato esperado. Verifique o JSON (body) que está sendo enviado',
        self::Tp_NaoAutenticado => 'Não autenticado - os dados de autenticação estão incorretos. Verifique o cabeçalho (header) da requisição o e-mail e o token',
        self::Tp_NaoAutorizado => 'Não autorizado - você está tentando acessar um recurso ao qual não tem permissão',
        self::Tp_NaoEncontrado => 'Não encontrado - você está tentando acessar um recurso que não existe na SkyHub',
        self::Tp_FormatoNaoAceito => 'Formato não aceito - a SkyHub não suporta o formato de dados especificado no cabeçalho (Accept)',
        self::Tp_FormatoMidiaNaoAceito => 'Formato de mídia não aceito - a SkyHub não consegue processar os dados enviados por conta de seu formato. Certifique-se do uso do charset UTF-8 (tanto no header "Content-Type", quanto no próprio body da requisição)',
        self::Tp_ErroSemantico => 'Erro semântico - apesar do formato da requisição estar correto, os dados ferem alguma regra de negócio (por exemplo: transição inválida do status de pedido)',
        self::Tp_LimiteRequisicoesUltrapassado => 'Limite de requisições ultrapassado - você fez mais requisições do que o permitido em um determinado recurso',
        self::Tp_ErroInterno => 'Erro interno - ocorreu um erro no servidor da SkyHub ao tentar processar a requisição',
        self::Tp_ErroInterno2 => 'Erro interno - ocorreu um erro no servidor da SkyHub ao tentar processar a requisição',
        self::Tp_ServicoIndisponivel => 'Serviço indisponível - a API da SkyHub está temporariamente fora do ar',
        self::Tp_Timeout => 'Timeout - a requisição levou muito tempo e não pode ser processada',
    );
}


abstract class TypeSkyHubOrigem extends EnumBasic{
  const Tp_Nacional         = 0 ;
  const Tp_Importado        = 1 ;

  protected static $nickname = array(
    self::Tp_Nacional       => 'Nacional',
    self::Tp_Importado      => 'Importado'
  );
}

abstract class TypeSkyhubPlatform extends EnumBasic {
  const Tp_Skyhub     = 'skyhub' ;
  const Tp_B2W        = 'b2w' ;

  protected static $nickname = array(
    self::Tp_Skyhub    => 'Skyhub',
    self::Tp_B2W          => 'B2W',
  );
}

abstract class TypeSkyhubProductAction extends EnumBasic {
  const Tp_link         = 'link' ;
  const Tp_unlink       = 'unlink' ;
  const Tp_price_entry  = 'price_entry';

  protected static $nickname = array(
    self::Tp_link        => 'Conectar',
    self::Tp_unlink      => 'Desconectar',
    self::Tp_price_entry => 'Sincronizar estoque/preço'
  );
}

abstract class TypeSkyhubCommission extends EnumBasic
{
  const Tp_LojasAmericanas = 1;

  protected static $nickname = array(
    self::Tp_LojasAmericanas => 'Lojas Americanas',
  );
}

abstract class Type_SkySettings extends EnumBasic {

    const Geral         = 'geral' ;
    const Anuncio       = 'anuncio' ;
    const Preco         = 'preco' ;
    const Envio         = 'envio' ;
    const StatusPedido  = 'pedido' ;
    const Comissao      = 'comissao' ;


    protected static $nickname = array (
        self::Geral         => 'Geral',
        self::Anuncio       => 'Anúncio',
        self::Preco         => 'Preço',
        self::Envio         => 'Envio',
        self::StatusPedido  => 'Status do Pedido',
        self::Comissao      => 'Comissão',
    );
}

abstract class Type_SkyhubPaymentMethod extends EnumBasic {
    const DebitCard    = 'DEBIT_CARD';
    const CreditCard   = 'CREDIT_CARD';
    const BankSlip     = 'BOLETO';
    const DebitAccount = 'DEBIT_ACCOUNT';
    const Voucher      = 'VOUCHER';
    const Pix          = 'PIX';

    protected static $nickname = array (
        self::DebitCard    => 'Cartão de débito',
        self::CreditCard   => 'Cartão de crédito',
        self::BankSlip     => 'Boleto',
        self::DebitAccount => 'Débito em conta',
        self::Voucher      => 'Voucher/Vale',
        self::Pix          => 'Pix',
    );
}




