{*******************************************************************************
Title: T2Ti ERP                                                                 
Description:  DTO  relacionado à tabela [NFE_DETALHE] 
                                                                                
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                                                   
                                                                                
@author Albert Eije (t2ti.com@gmail.com)
@version 1.0                                                                    
*******************************************************************************}
unit NfeDetalheDTO;

interface

uses
  Atributos, Classes, Constantes, Generics.Collections, DB,

  SynCommons,
  mORMot,

  NfeDetEspecificoVeiculoDTO, NfeDetEspecificoCombustivelDTO,
  NfeDetalheImpostoIcmsDTO, NfeDetalheImpostoIpiDTO, NfeDetalheImpostoIiDTO,
  NfeDetalheImpostoPisDTO, NfeDetalheImpostoCofinsDTO, NfeDetalheImpostoIssqnDTO,

  NfeDeclaracaoImportacaoDTO, NfeExportacaoDTO, NfeDetEspecificoMedicamentoDTO,
  NfeDetEspecificoArmamentoDTO;

type
  TNfe_Detalhe = class(TSQLRecord)
   
  private
    FPK: Integer;
    FID_PRODUTO: Integer;
    FID_NFE_CABECALHO: Integer;
    FNUMERO_ITEM: Integer;
    FCODIGO_PRODUTO: RawUTF8;
    FGTIN: RawUTF8;
    FNOME_PRODUTO: RawUTF8;
    FNCM: RawUTF8;
    FNVE: RawUTF8;
    FEX_TIPI: Integer;
    FCFOP: Integer;
    FUNIDADE_COMERCIAL: RawUTF8;
    FQUANTIDADE_COMERCIAL: Double;
    FVALOR_UNITARIO_COMERCIAL: Double;
    FVALOR_BRUTO_PRODUTO: Double;
    FGTIN_UNIDADE_TRIBUTAVEL: RawUTF8;
    FUNIDADE_TRIBUTAVEL: RawUTF8;
    FQUANTIDADE_TRIBUTAVEL: Double;
    FVALOR_UNITARIO_TRIBUTAVEL: Double;
    FVALOR_FRETE: Double;
    FVALOR_SEGURO: Double;
    FVALOR_DESCONTO: Double;
    FVALOR_OUTRAS_DESPESAS: Double;
    FENTRA_TOTAL: Integer;
    FVALOR_SUBTOTAL: Double;
    FVALOR_TOTAL: Double;
    FNUMERO_PEDIDO_COMPRA: RawUTF8;
    FITEM_PEDIDO_COMPRA: Integer;
    FINFORMACOES_ADICIONAIS: RawUTF8;
    FNUMERO_FCI: RawUTF8;
    FNUMERO_RECOPI: RawUTF8;
    FVALOR_TOTAL_TRIBUTOS: Double;
    FPERCENTUAL_DEVOLVIDO: Double;
    FVALOR_IPI_DEVOLVIDO: Double;

    //Usado no lado cliente para controlar quais registros serão persistidos
    FPersiste: RawUTF8;
    //Usado para verificar se o produto está cadastrado
    FCadastrado: RawUTF8;


    // Grupo JA
    FNfeDetEspecificoVeiculoDTO: TNfe_Det_Especifico_Veiculo; //0:1
    // Grupo LA
    FNfeDetEspecificoCombustivelDTO: TNfe_Det_Especifico_Combustivel; //0:1
    // Grupo N
    FNfeDetalheImpostoIcmsDTO: TNfe_Detalhe_Imposto_Icms; //1:1
    // Grupo O
    FNfeDetalheImpostoIpiDTO: TNfe_Detalhe_Imposto_Ipi; //0:1
    // Grupo P
    FNfeDetalheImpostoIiDTO: TNfe_Detalhe_Imposto_Ii; //0:1
    // Grupo Q
    FNfeDetalheImpostoPisDTO: TNfe_Detalhe_Imposto_Pis; //0:1
    // Grupo S
    FNfeDetalheImpostoCofinsDTO: TNfe_Detalhe_Imposto_Cofins; //0:1
    // Grupo U
    FNfeDetalheImpostoIssqnDTO: TNfe_Detalhe_Imposto_Issqn; //0:1

    // Grupo I01
    FListaNfeDeclaracaoImportacaoDTO: TObjectList<TNfe_Declaracao_Importacao>; //0:100
    // Grupo I03
    FListaNfeExportacaoDTO: TObjectList<TNfe_Exportacao>; //0:500
    // Grupo K
    FListaNfeDetEspecificoMedicamentoDTO: TObjectList<TNfe_Det_Especifico_Medicamento>; //0:500
    // Grupo L
    FListaNfeDetEspecificoArmamentoDTO: TObjectList<TNfe_Det_Especifico_Armamento>; //0:500

  public 
    [TId('ID')]
    [TGeneratedValue(sAuto)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property PK: Integer  read FPK write FPK;
  
    [TColumn('PERSISTE', 'Persiste', 60, [], True)]
    property Persiste: RawUTF8  read FPersiste write FPersiste;

    [TColumn('CADASTRADO', 'Cadastrado', 60, [], True)]
    property Cadastrado: RawUTF8  read FCadastrado write FCadastrado;


    property NfeDetEspecificoVeiculoDTO: TNfe_Det_Especifico_Veiculo read FNfeDetEspecificoVeiculoDTO write FNfeDetEspecificoVeiculoDTO;
    property NfeDetEspecificoCombustivelDTO: TNfe_Det_Especifico_Combustivel read FNfeDetEspecificoCombustivelDTO write FNfeDetEspecificoCombustivelDTO;
    property NfeDetalheImpostoIcmsDTO: TNfe_Detalhe_Imposto_Icms read FNfeDetalheImpostoIcmsDTO write FNfeDetalheImpostoIcmsDTO;
    property NfeDetalheImpostoIpiDTO: TNfe_Detalhe_Imposto_Ipi read FNfeDetalheImpostoIpiDTO write FNfeDetalheImpostoIpiDTO;
    property NfeDetalheImpostoIiDTO: TNfe_Detalhe_Imposto_Ii read FNfeDetalheImpostoIiDTO write FNfeDetalheImpostoIiDTO;
    property NfeDetalheImpostoPisDTO: TNfe_Detalhe_Imposto_Pis read FNfeDetalheImpostoPisDTO write FNfeDetalheImpostoPisDTO;
    property NfeDetalheImpostoCofinsDTO: TNfe_Detalhe_Imposto_Cofins read FNfeDetalheImpostoCofinsDTO write FNfeDetalheImpostoCofinsDTO;
    property NfeDetalheImpostoIssqnDTO: TNfe_Detalhe_Imposto_Issqn read FNfeDetalheImpostoIssqnDTO write FNfeDetalheImpostoIssqnDTO;


    property ListaNfeDeclaracaoImportacaoDTO: TObjectList<TNfe_Declaracao_Importacao> read FListaNfeDeclaracaoImportacaoDTO write FListaNfeDeclaracaoImportacaoDTO;
    property ListaNfeExportacaoDTO: TObjectList<TNfe_Exportacao> read FListaNfeExportacaoVO write FListaNfeExportacaoDTO;
    property ListaNfeDetEspecificoMedicamentoDTO: TObjectList<TNfe_Det_Especifico_Medicamento> read FListaNfeDetEspecificoMedicamentoDTO write FListaNfeDetEspecificoMedicamentoDTO;
    property ListaNfeDetEspecificoArmamentoDTO: TObjectList<TNfe_Det_Especifico_Armamento> read FListaNfeDetEspecificoArmamentoDTO write FListaNfeDetEspecificoArmamentoDTO;

  published
    [TColumn('ID_PRODUTO', 'Id Produto', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property IdProduto: Integer  read FID_PRODUTO write FID_PRODUTO;
    [TColumn('ID_NFE_CABECALHO', 'Id Nfe Cabecalho', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property IdNfeCabecalho: Integer  read FID_NFE_CABECALHO write FID_NFE_CABECALHO;
    [TColumn('NUMERO_ITEM', 'Numero Item', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property NumeroItem: Integer  read FNUMERO_ITEM write FNUMERO_ITEM;
    [TColumn('CODIGO_PRODUTO', 'Codigo Produto', 450, [ldGrid, ldLookup, ldCombobox], False)]
    property CodigoProduto: RawUTF8  read FCODIGO_PRODUTO write FCODIGO_PRODUTO;
    [TColumn('GTIN', 'Gtin', 112, [ldGrid, ldLookup, ldCombobox], False)]
    property Gtin: RawUTF8  read FGTIN write FGTIN;
    [TColumn('NOME_PRODUTO', 'Nome Produto', 450, [ldGrid, ldLookup, ldCombobox], False)]
    property NomeProduto: RawUTF8  read FNOME_PRODUTO write FNOME_PRODUTO;
    [TColumn('NCM', 'Ncm', 64, [ldGrid, ldLookup, ldCombobox], False)]
    property Ncm: RawUTF8  read FNCM write FNCM;
    [TColumn('NVE', 'Nve', 48, [ldGrid, ldLookup, ldCombobox], False)]
    property Nve: RawUTF8  read FNVE write FNVE;
    [TColumn('EX_TIPI', 'Ex Tipi', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property ExTipi: Integer  read FEX_TIPI write FEX_TIPI;
    [TColumn('CFOP', 'Cfop', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property Cfop: Integer  read FCFOP write FCFOP;
    [TColumn('UNIDADE_COMERCIAL', 'Unidade Comercial', 48, [ldGrid, ldLookup, ldCombobox], False)]
    property UnidadeComercial: RawUTF8  read FUNIDADE_COMERCIAL write FUNIDADE_COMERCIAL;
    [TColumn('QUANTIDADE_COMERCIAL', 'Quantidade Comercial', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property QuantidadeComercial: Double  read FQUANTIDADE_COMERCIAL write FQUANTIDADE_COMERCIAL;
    [TColumn('VALOR_UNITARIO_COMERCIAL', 'Valor Unitario Comercial', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorUnitarioComercial: Double  read FVALOR_UNITARIO_COMERCIAL write FVALOR_UNITARIO_COMERCIAL;
    [TColumn('VALOR_BRUTO_PRODUTO', 'Valor Bruto Produto', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorBrutoProduto: Double  read FVALOR_BRUTO_PRODUTO write FVALOR_BRUTO_PRODUTO;
    [TColumn('GTIN_UNIDADE_TRIBUTAVEL', 'Gtin Unidade Tributavel', 112, [ldGrid, ldLookup, ldCombobox], False)]
    property GtinUnidadeTributavel: RawUTF8  read FGTIN_UNIDADE_TRIBUTAVEL write FGTIN_UNIDADE_TRIBUTAVEL;
    [TColumn('UNIDADE_TRIBUTAVEL', 'Unidade Tributavel', 48, [ldGrid, ldLookup, ldCombobox], False)]
    property UnidadeTributavel: RawUTF8  read FUNIDADE_TRIBUTAVEL write FUNIDADE_TRIBUTAVEL;
    [TColumn('QUANTIDADE_TRIBUTAVEL', 'Quantidade Tributavel', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property QuantidadeTributavel: Double  read FQUANTIDADE_TRIBUTAVEL write FQUANTIDADE_TRIBUTAVEL;
    [TColumn('VALOR_UNITARIO_TRIBUTAVEL', 'Valor Unitario Tributavel', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorUnitarioTributavel: Double  read FVALOR_UNITARIO_TRIBUTAVEL write FVALOR_UNITARIO_TRIBUTAVEL;
    [TColumn('VALOR_FRETE', 'Valor Frete', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorFrete: Double  read FVALOR_FRETE write FVALOR_FRETE;
    [TColumn('VALOR_SEGURO', 'Valor Seguro', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorSeguro: Double  read FVALOR_SEGURO write FVALOR_SEGURO;
    [TColumn('VALOR_DESCONTO', 'Valor Desconto', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorDesconto: Double  read FVALOR_DESCONTO write FVALOR_DESCONTO;
    [TColumn('VALOR_OUTRAS_DESPESAS', 'Valor Outras Despesas', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorOutrasDespesas: Double  read FVALOR_OUTRAS_DESPESAS write FVALOR_OUTRAS_DESPESAS;
    [TColumn('ENTRA_TOTAL', 'Entra Total', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property EntraTotal: Integer  read FENTRA_TOTAL write FENTRA_TOTAL;
    [TColumn('VALOR_SUBTOTAL', 'Valor Subtotal', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorSubtotal: Double  read FVALOR_SUBTOTAL write FVALOR_SUBTOTAL;
    [TColumn('VALOR_TOTAL', 'Valor Total', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorTotal: Double  read FVALOR_TOTAL write FVALOR_TOTAL;
    [TColumn('NUMERO_PEDIDO_COMPRA', 'Numero Pedido Compra', 120, [ldGrid, ldLookup, ldCombobox], False)]
    property NumeroPedidoCompra: RawUTF8  read FNUMERO_PEDIDO_COMPRA write FNUMERO_PEDIDO_COMPRA;
    [TColumn('ITEM_PEDIDO_COMPRA', 'Item Pedido Compra', 80, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftZerosAEsquerda, taCenter)]
    property ItemPedidoCompra: Integer  read FITEM_PEDIDO_COMPRA write FITEM_PEDIDO_COMPRA;
    [TColumn('INFORMACOES_ADICIONAIS', 'Informacoes Adicionais', 450, [ldGrid, ldLookup, ldCombobox], False)]
    property InformacoesAdicionais: RawUTF8  read FINFORMACOES_ADICIONAIS write FINFORMACOES_ADICIONAIS;
    [TColumn('NUMERO_FCI', 'Numero Fci', 288, [ldGrid, ldLookup, ldCombobox], False)]
    property NumeroFci: RawUTF8  read FNUMERO_FCI write FNUMERO_FCI;
    [TColumn('NUMERO_RECOPI', 'Numero Recopi', 160, [ldGrid, ldLookup, ldCombobox], False)]
    property NumeroRecopi: RawUTF8  read FNUMERO_RECOPI write FNUMERO_RECOPI;
    [TColumn('VALOR_TOTAL_TRIBUTOS', 'Valor Total Tributos', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorTotalTributos: Double  read FVALOR_TOTAL_TRIBUTOS write FVALOR_TOTAL_TRIBUTOS;
    [TColumn('PERCENTUAL_DEVOLVIDO', 'Percentual Devolvido', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property PercentualDevolvido: Double  read FPERCENTUAL_DEVOLVIDO write FPERCENTUAL_DEVOLVIDO;
    [TColumn('VALOR_IPI_DEVOLVIDO', 'Valor Ipi Devolvido', 168, [ldGrid, ldLookup, ldCombobox], False)]
    [TFormatter(ftFloatComSeparador, taRightJustify)]
    property ValorIpiDevolvido: Double  read FVALOR_IPI_DEVOLVIDO write FVALOR_IPI_DEVOLVIDO;


  end;

implementation

end.
