{ *******************************************************************************
Title: T2Ti ERP
Description:  DTO  relacionado à tabela [PRODUTO]

The MIT License

Copyright: Copyright (C) 2017 T2Ti.COM

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

The author may be contacted at:
t2ti.com@gmail.com</p>

@author Albert Eije (t2ti.com@gmail.com)
@version 1.0
******************************************************************************* }
unit ProdutoDTO;

interface

uses
    SynCommons,
  mORMot, Classes, Generics.Collections,

  Atributos, Constantes, DTO;

type
  TProduto = class(TDTO)
  private
    FPK: Integer;
    FID_TRIBUT_ICMS_CUSTOM_CAB: Integer;
    FID_UNIDADE_PRODUTO: Integer;
    FID_ALMOXARIFADO: Integer;
    FID_GRUPO_TRIBUTARIO: Integer;
    FID_MARCA_PRODUTO: Integer;
    FID_SUBGRUPO: Integer;
    FGTIN: RawUTF8;
    FCODIGO_INTERNO: RawUTF8;
    FNCM: RawUTF8;
    FNOME: RawUTF8;
    FDESCRICAO: RawUTF8;
    FDESCRICAO_PDV: RawUTF8;
    FVALOR_COMPRA: Double;
    FVALOR_VENDA: Double;
    FPRECO_VENDA_MINIMO: Double;
    FPRECO_SUGERIDO: Double;

    FCUSTO_UNITARIO: Double;
    FCUSTO_PRODUCAO: Double;

    FCUSTO_MEDIO_LIQUIDO: Double;
    FPRECO_LUCRO_ZERO: Double;
    FPRECO_LUCRO_MINIMO: Double;
    FPRECO_LUCRO_MAXIMO: Double;
    FMARKUP: Double;
    FQUANTIDADE_ESTOQUE: Double;
    FQUANTIDADE_ESTOQUE_ANTERIOR: Double;
    FESTOQUE_MINIMO: Double;
    FESTOQUE_MAXIMO: Double;
    FESTOQUE_IDEAL: Double;
    FEXCLUIDO: RawUTF8;
    FINATIVO: RawUTF8;
    FDATA_CADASTRO: TDateTime;
    FFOTO_PRODUTO: RawUTF8;
    FEX_TIPI: RawUTF8;
    FCODIGO_LST: RawUTF8;
    FCLASSE_ABC: RawUTF8;
    FIAT: RawUTF8;
    FIPPT: RawUTF8;
    FTIPO_ITEM_SPED: RawUTF8;
    FPESO: Double;
    FPORCENTO_COMISSAO: Double;
    FPONTO_PEDIDO: Double;
    FLOTE_ECONOMICO_COMPRA: Double;
    FALIQUOTA_ICMS_PAF: Double;
    FALIQUOTA_ISSQN_PAF: Double;
    FTOTALIZADOR_PARCIAL: RawUTF8;
    FCODIGO_BALANCA: Integer;
    FDATA_ALTERACAO: TDateTime;
    FTIPO: RawUTF8;

    FUnidadeProdutoSigla: RawUTF8;
    FAlmoxarifadoNome: RawUTF8;
    FTributIcmsCustomCabDescricao: RawUTF8;
    FTributGrupoTributarioDescricao: RawUTF8;
    FProdutoMarcaNome: RawUTF8;
    FProdutoGrupoNome: RawUTF8;
    FProdutoSubGrupoNome: RawUTF8;

    FImagem: RawUTF8;
    FTipoImagem: RawUTF8;

  public
    [TId('ID', [ldGrid, ldLookup, ldComboBox])]
    [TGeneratedValue(sAuto)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property PK: Integer  read FPK write FPK;

  published

    [TColumn('GTIN', 'Gtin', 112, [ldGrid, ldLookup, ldComboBox], False)]
    property Gtin: RawUTF8 read FGTIN write FGTIN;
    [TColumn('NOME', 'Nome', 450, [ldGrid, ldLookup], False)]
    property Nome: RawUTF8 read FNOME write FNOME;

    [TColumn('ID_UNIDADE_PRODUTO', 'Id Unidade', 70, [], False)]
    property IdUnidade: Integer read FID_UNIDADE_PRODUTO write FID_UNIDADE_PRODUTO;

    [TColumn('ID_ALMOXARIFADO', 'Id Almoxarifado', 80, [], False)]
    property IdAlmoxarifado: Integer read FID_ALMOXARIFADO write FID_ALMOXARIFADO;

    [TColumn('ID_TRIBUT_ICMS_CUSTOM_CAB', 'Id Icms Customizado', 120, [ldLookup], False)]
    property IdIcmsCustomizado: Integer read FID_TRIBUT_ICMS_CUSTOM_CAB write FID_TRIBUT_ICMS_CUSTOM_CAB;

    [TColumn('ID_GRUPO_TRIBUTARIO', 'Id Grupo Tributário', 120, [ldLookup], False)]
    property IdGrupoTributario: Integer read FID_GRUPO_TRIBUTARIO write FID_GRUPO_TRIBUTARIO;

    [TColumn('ID_MARCA_PRODUTO', 'Id Marca', 70, [], False)]
    property IdProdutoMarca: Integer read FID_MARCA_PRODUTO write FID_MARCA_PRODUTO;

    [TColumn('ID_SUBGRUPO', 'Id Subgrupo', 70, [], False)]
    property IdSubGrupo: Integer read FID_SUBGRUPO write FID_SUBGRUPO;

    [TColumn('CODIGO_INTERNO', 'Código Interno', 450, [ldGrid, ldLookup, ldComboBox], False)]
    property CodigoInterno: RawUTF8 read FCODIGO_INTERNO write FCODIGO_INTERNO;
    [TColumn('NCM', 'Ncm', 64, [ldGrid, ldLookup, ldComboBox], False)]
    property Ncm: RawUTF8 read FNCM write FNCM;
    [TColumn('DESCRICAO', 'Descrição', 450, [ldGrid, ldLookup, ldComboBox], False)]
    property Descricao: RawUTF8 read FDESCRICAO write FDESCRICAO;
    [TColumn('DESCRICAO_PDV', 'Descrição Pdv', 240, [ldGrid, ldLookup], False)]
    property DescricaoPdv: RawUTF8 read FDESCRICAO_PDV write FDESCRICAO_PDV;
    [TColumn('VALOR_COMPRA', 'Valor Compra', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorCompra: Double read FVALOR_COMPRA write FVALOR_COMPRA;
    [TColumn('VALOR_VENDA', 'Valor Venda', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorVenda: Double read FVALOR_VENDA write FVALOR_VENDA;
    [TColumn('PRECO_VENDA_MINIMO', 'Preço Venda Mínimo', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PrecoVendaMinimo: Double read FPRECO_VENDA_MINIMO write FPRECO_VENDA_MINIMO;

    [TColumn('PRECO_SUGERIDO', 'Preço Sugerido', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PrecoSugerido: Double read FPRECO_SUGERIDO write FPRECO_SUGERIDO;

    [TColumn('CUSTO_UNITARIO', 'Custo Unitário', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property CustoUnitario: Double read FCUSTO_UNITARIO write FCUSTO_UNITARIO;
    [TColumn('CUSTO_PRODUCAO', 'Custo Produção', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property CustoProducao: Double read FCUSTO_PRODUCAO write FCUSTO_PRODUCAO;

    [TColumn('CUSTO_MEDIO_LIQUIDO', 'Custo Médio Líquido', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property CustoMedioLiquido: Double read FCUSTO_MEDIO_LIQUIDO write FCUSTO_MEDIO_LIQUIDO;
    [TColumn('PRECO_LUCRO_ZERO', 'Preço Lucro Zero', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PrecoLucroZero: Double read FPRECO_LUCRO_ZERO write FPRECO_LUCRO_ZERO;
    [TColumn('PRECO_LUCRO_MINIMO', 'Preço Lucro Mínimo', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PrecoLucroMinimo: Double read FPRECO_LUCRO_MINIMO write FPRECO_LUCRO_MINIMO;
    [TColumn('PRECO_LUCRO_MAXIMO', 'Preço Lucro Máximo', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PrecoLucroMaximo: Double read FPRECO_LUCRO_MAXIMO write FPRECO_LUCRO_MAXIMO;
    [TColumn('MARKUP', 'Markup', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property Markup: Double read FMARKUP write FMARKUP;
    [TColumn('QUANTIDADE_ESTOQUE', 'Qtde Estoque', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property QuantidadeEstoque: Double read FQUANTIDADE_ESTOQUE write FQUANTIDADE_ESTOQUE;
    [TColumn('QUANTIDADE_ESTOQUE_ANTERIOR', 'Qtde Estoque Anterior', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property QuantidadeEstoqueAnterior: Double read FQUANTIDADE_ESTOQUE_ANTERIOR write FQUANTIDADE_ESTOQUE_ANTERIOR;
    [TColumn('ESTOQUE_MINIMO', 'Estoque Mínimo', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property EstoqueMinimo: Double read FESTOQUE_MINIMO write FESTOQUE_MINIMO;
    [TColumn('ESTOQUE_MAXIMO', 'Estoque Máximo', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property EstoqueMaximo: Double read FESTOQUE_MAXIMO write FESTOQUE_MAXIMO;
    [TColumn('ESTOQUE_IDEAL', 'Estoque Ideal', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property EstoqueIdeal: Double read FESTOQUE_IDEAL write FESTOQUE_IDEAL;
    [TColumn('EXCLUIDO', 'Excluido', 8, [], False)]
    property Excluido: RawUTF8 read FEXCLUIDO write FEXCLUIDO;
    [TColumn('INATIVO', 'Inativo', 50, [ldGrid, ldLookup], False)]
    property Inativo: RawUTF8 read FINATIVO write FINATIVO;
    [TColumn('DATA_CADASTRO', 'Data Cadastro', 80, [ldGrid, ldLookup, ldComboBox], False)]
    property DataCadastro: TDateTime read FDATA_CADASTRO write FDATA_CADASTRO;
    [TColumn('FOTO_PRODUTO', 'Foto Produto', 450, [ldGrid, ldLookup], False)]
    property FotoProduto: RawUTF8 read FFOTO_PRODUTO write FFOTO_PRODUTO;
    [TColumn('EX_TIPI', 'Ex Tipi', 50, [ldGrid, ldLookup], False)]
    property ExTipi: RawUTF8 read FEX_TIPI write FEX_TIPI;
    [TColumn('CODIGO_LST', 'Código Lst', 80, [ldGrid, ldLookup], False)]
    property CodigoLst: RawUTF8 read FCODIGO_LST write FCODIGO_LST;
    [TColumn('CLASSE_ABC', 'Classe ABC', 80, [ldGrid, ldLookup], False)]
    property ClasseAbc: RawUTF8 read FCLASSE_ABC write FCLASSE_ABC;
    [TColumn('IAT', 'Iat', 50, [ldGrid, ldLookup], False)]
    property Iat: RawUTF8 read FIAT write FIAT;
    [TColumn('IPPT', 'Ippt', 50, [ldGrid, ldLookup], False)]
    property Ippt: RawUTF8 read FIPPT write FIPPT;
    [TColumn('TIPO_ITEM_SPED', 'Tipo Item Sped', 100, [ldGrid, ldLookup], False)]
    property TipoItemSped: RawUTF8 read FTIPO_ITEM_SPED write FTIPO_ITEM_SPED;
    [TColumn('PESO', 'Peso', 168, [ldGrid, ldLookup], False)]
    property Peso: Double read FPESO write FPESO;
    [TColumn('PORCENTO_COMISSAO', 'Porcento Comissão', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PorcentoComissao: Double read FPORCENTO_COMISSAO write FPORCENTO_COMISSAO;
    [TColumn('PONTO_PEDIDO', 'Ponto Pedido', 168, [ldGrid, ldLookup], False)]
    property PontoPedido: Double read FPONTO_PEDIDO write FPONTO_PEDIDO;
    [TColumn('LOTE_ECONOMICO_COMPRA', 'Lote Econômico Compra', 168, [ldGrid, ldLookup], False)]
    property LoteEconomicoCompra: Double read FLOTE_ECONOMICO_COMPRA write FLOTE_ECONOMICO_COMPRA;
    [TColumn('ALIQUOTA_ICMS_PAF', 'Alíquota ICMS PAF', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property AliquotaIcmsPaf: Double read FALIQUOTA_ICMS_PAF write FALIQUOTA_ICMS_PAF;
    [TColumn('ALIQUOTA_ISSQN_PAF', 'Alíquota ISS PAF', 168, [ldGrid, ldLookup], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property AliquotaIssqnPaf: Double read FALIQUOTA_ISSQN_PAF write FALIQUOTA_ISSQN_PAF;
    [TColumn('TOTALIZADOR_PARCIAL', 'Totalizador Parcial', 100, [ldGrid, ldLookup], False)]
    property TotalizadorParcial: RawUTF8 read FTOTALIZADOR_PARCIAL write FTOTALIZADOR_PARCIAL;
    [TColumn('CODIGO_BALANCA', 'Código Balança', 100, [ldGrid, ldLookup], False)]
    property CodigoBalanca: Integer read FCODIGO_BALANCA write FCODIGO_BALANCA;
    [TColumn('DATA_ALTERACAO', 'Data Alteração', 80, [ldGrid, ldLookup], False)]
    property DataAlteracao: TDateTime read FDATA_ALTERACAO write FDATA_ALTERACAO;
    [TColumn('TIPO', 'Tipo', 100, [ldGrid, ldLookup], False)]
    property Tipo: RawUTF8 read FTIPO write FTIPO;

    [TColumn('IMAGEM', 'Imagem', 80, [], True)]
    property Imagem: RawUTF8 read FImagem write FImagem;
    [TColumn('TIPO_IMAGEM', 'Tipo Imagem', 80, [], True)]
    property TipoImagem: RawUTF8 read FTipoImagem write FTipoImagem;

  end;

implementation

end.
