<?php

abstract class Type_ShopeeModule extends EnumBasic{
    const Tp_Shipping  = "shopee_shipping";
    const Tp_Payment   = "shopee_payment";

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

abstract class Type_ShopeeSettings extends EnumBasic {

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

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

abstract class Type_ShopeeOrderApiStatus extends EnumBasic{
    const Tp_Unpaid           = 'UNPAID';
    const Tp_PendingInvoice   = 'PENDING_INVOICE';
    const Tp_ReadyToShip      = 'READY_TO_SHIP';
    const Tp_Processed        = 'PROCESSED';
    const Tp_RetryShip        = 'RETRY_SHIP';
    const Tp_Shipped          = 'SHIPPED';
    const Tp_ToConfirmReceive = 'TO_CONFIRM_RECEIVE';
    const Tp_InCancel         = 'IN_CANCEL';
    const Tp_Cancelled        = 'CANCELLED';
    const Tp_ToReturn         = 'TO_RETURN';
    const Tp_Completed        = 'COMPLETED';

    protected static $nickname = array(
        self::Tp_Unpaid           => "Aguardando Pagamento",
        self::Tp_PendingInvoice   => "Aguardando Nota Fiscal",
        self::Tp_ReadyToShip      => "Pronto para envio",
        self::Tp_Processed        => "Processado",
        self::Tp_RetryShip        => "Retentar envio",
        self::Tp_Shipped          => "Enviado",
        self::Tp_ToConfirmReceive => "Em confirmação de recebimento",
        self::Tp_InCancel         => "Em cancelamento",
        self::Tp_Cancelled        => "Cancelado",
        self::Tp_ToReturn         => "Devolução",
        self::Tp_Completed        => "Completo",
    );
}

abstract class Type_ShopeeErrors extends EnumBasic {
  const Tp_EmptyCategory   = 'empty_categorygp';

  protected static $nickname = array(
    self::Tp_EmptyCategory      => 'Não é possível sincronizar o produto sem categoria. Selecione "Departamento > Categoria > Sub-Categoria" para o produto na ficha técnica.'
  );
}

abstract class Type_ShopeeCondition 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_ShopeeStatus extends EnumBasic{
    const Tp_Normal = 'NORMAL';
    const Tp_Unlist = 'UNLIST';

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

abstract class Type_ShopeeAttribute extends EnumBasic{
    const Tp_Marca       = 'Brand';

    protected static $nickname = array (
        self::Tp_Marca   => 'Marca'
    );
}

abstract class Type_ShopeeAttributeTypeValidation extends EnumBasic{
    const Tp_NoType  = 0;
    const Tp_Int     = 1;
    const Tp_String  = 2;
    const Tp_Float   = 3;
    const Tp_Date    = 4;

    protected static $nickname = array (
        self::Tp_NoType       => 'Type_NoType',
        self::Tp_Int       => 'Type_Int',
        self::Tp_String       => 'Type_String',
        self::Tp_Float       => 'Type_Float',
        self::Tp_Date       => 'Type_Date',
    );
}

abstract class Type_ShopeeBrandStatus extends EnumBasic{
    const Tp_Approved   = 1;
    const Tp_InRevision = 2;

    protected static $nickname = array (
        self::Tp_Approved   => 'Aprovada',
        self::Tp_InRevision => 'Em revisão'
    );
}

abstract class Type_ShopeeGTIN extends EnumBasic {
    public const Tp_Mandatory   = 'Mandatory';
    public const Tp_Flexible    = 'Flexible';
    public const Tp_Optional    = 'Optional';

    protected static $nickname = [
        self::Tp_Mandatory => 'Obrigatório',
        self::Tp_Flexible  => 'Flexivel',
        self::Tp_Optional  => 'Opcional',
    ];
}