Ir para conteúdo
  • Cadastre-se

dev botao

acbrNFe qual campo devo usar Icms SitTrib Subst


ario
  • Este tópico foi criado há 4912 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom Dia, estou usando o componente acbrnfe, e preciso passar o campo da minha tabela para o campo do componente acbrnfe que contenha o campo da situacao tributaria do icms com substituicao, os campos valor e taxa.

grato pela atencao

Felippe

Link para o comentário
Compartilhar em outros sites

agradeço ao pessoal que direta e indiretamente cooperaram para meu entendimento, vou estar anexando os campos para que caso alguem necessite saber,boa sorte a todos, abraços

////////////////////////////////////////////////////////////////////////////////
// //
// Descrição: Classes para geração/leitura dos arquivos xml da NFe //
// //
////////////////////////////////////////////////////////////////////////////////

unit pcnModeloNFe;

interface uses

SysUtils, Classes,
{$IFNDEF VER130}
Variants,
{$ENDIF}
pcnAuxiliar, pcnConversao, pcnNFe, pcnNFeW;

procedure ModeloNFe;

implementation

procedure ModeloNFe;
var
NFe: TNFe;
NFeW: TNFeW;
i, j, k: integer;
s: string;
ReferenciadaTipoNFe: boolean;
Opcao1: boolean;
begin

// IMPORTANTE: Os laços For - Next codificados nesses modelo são meramente descritivos.
// Esse arquivo é apenas um modelo e deve ser adaptado conforme as suas necessidades.

Opcao1 := True; // Esta variavel esta sendo usada nesse modelo para indicar os locais onde
// devem ser tomadas decissões por parte do programador conforme a regras
// de negocio de cada cliente.

NFe := TNFe.create;

s := NFe.infNFe.ID; // ATENÇÃO: Esse campo representa a chave da NFe
// Não utilize esse campo para escrita (apenas para leitura)
// pois a chave é gerada automaticamente no momento da geração do arquivo

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo das informações de identificação da NF-e - - Ocorrência 1-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

NFe.Ide.cUF := 0; // B02 - Código da UF do emitente do Documento Fiscal - Tabela do IBGE
// Você pode utilizar a função UFparaCodigo caso não sáiba o código da UF
// ex: NFe.Ide.cUF := UFparaCodigo(MinhaUF);
NFe.Ide.cNF := -1; // B03 - Código Numérico que compõe a Chave de Acesso
// Se nenhum valor for informado será atribuido um valor aleatório
// Se for informado o valor -1; será gerado um valor baseado no numero da NFe
NFe.Ide.natOp := ''; // B04 - Descrição da Natureza da Operação
NFe.Ide.indPag := ipVista; // B05 - Indicador da forma de pagamento (*)
// (0)=ipVista
// (1)=ipPrazo
// (2)=ipOutras
NFe.Ide.modelo := 55; // B06 - Código do Modelo do Documento Fiscal Utilizar o código 55 para identificação da NF-e, emitida em substituição ao modelo 1 ou 1A.
NFe.Ide.serie := 0; // B07 - Série do Documento Fiscal, informar 0 (zero) para série única.
NFe.Ide.nNF := 0; // B08 - Número do Documento Fiscal
NFe.Ide.dEmi := null; // B09 - Data de emissão do Documento Fiscal
NFe.Ide.dSaiEnt := null; // B10 - Data de Saída ou da Entrada da Mercadoria/Produto
NFe.Ide.tpNF := tnSaida; // B11 - Tipo do Documento Fiscal (*)
// (0)=tnEntrada
// (1)=tnSaida
NFe.Ide.cMunFG := 0; // B12 - Código do Município de Ocorrência do Fato Gerador do ICMS ( Tab. IBGE )
NFe.Ide.tpImp := tiRetrato; // B21 - Formato de Impressão do DANFE (*)
// (1)=tiRetrato
// (2)=tiPaisagem
NFe.Ide.tpEmis := teNormal; // B22 - Forma de Emissão da NF-e (*)
// (1)=teNormal
// (2)=teContingencia
// (3)=teSCAN
// (4)=teDPEC
// (5)=teFSDA
// Ex: i := NFe.Ide.cDv; // B23 - Dígito Verificador da Chave de Acesso da NF-e
// Não utilize esse campo para escrita (apenas para leitura)
// pois o digito é gerado automaticamente no momento da geração do arquivo
NFe.Ide.tpAmb := taProducao; // B24 - Identificação do Ambiente (*)
// (1)=Produção
// (2)=Homologação
NFe.Ide.finNFe := fnNormal; // B25 - Finalidade de emissão da NF-e (*)
// (1)=fnNormal
// (2)=fnComplementar
// (3)=fnAjuste
NFe.Ide.procEmi := // B26 - Processo de emissão da NF-e (*)
peAplicativoContribuinte; // (0)=peAplicativoContribuinte - emissão de NF-e com aplicativo do contribuinte;
// (1)=peAvulsaFisco - emissão de NF-e avulsa pelo Fisco;
// (2)=peAvulsaContribuinte - emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco;
// (3)=peContribuinteAplicativoFisco - emissão NF-e pelo contribuinte com aplicativo fornecido pelo Fisco.
NFe.Ide.verProc := ''; // B27 - Versão do Processo de emissão da NF-e

ReferenciadaTipoNFe := True; // TAG - Informação das NF/NF-e referenciadas - - Ocorrência 0-N ********
if ReferenciadaTipoNFe then
begin // Se a nota referenciada for um NFe preencher o campo abaixo:
NFe.Ide.NFref.Add;
NFe.Ide.NFref[0].refNFe := ''; // B13 - Chave de acesso das NF-e referenciadas
end;
if not ReferenciadaTipoNFe then
begin // Se a nota referenciada não for uma NFe preencher o campos abaixo:
NFe.Ide.NFref.Add;
NFe.Ide.NFref[1].RefNF.cUF := 0; // B15 - Código da UF do emitente do Documento Fiscal - Tabela do IBGE
NFe.Ide.NFref[1].RefNF.AAMM := ''; // B16 - Ano e Mês de emissão da NF-e
NFe.Ide.NFref[1].RefNF.CNPJ := ''; // B17 - CNPJ do emitente
NFe.Ide.NFref[1].RefNF.modelo := 0; // B18 - Modelo do Documento Fiscal - Ex. 01
NFe.Ide.NFref[1].RefNF.serie := 0; // B19 - Série do Documento Fiscal - informar zero se inexistente
NFe.Ide.NFref[1].RefNF.nNF := 0; // B20 - Número do Documento Fiscal
end;

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de identificação do emitente da NF-e - - Ocorrência 1-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

NFe.Emit.CNPJCPF := ''; // C02 - CNPJ do emitente / CPF do remetente
NFe.Emit.xNome := ''; // C03 - Razão Social ou Nome do emitente
NFe.Emit.xFant := ''; // C04 - Nome fantasia
NFe.Emit.IE := ''; // C17 - Inscrição Estadual do emitente
NFe.Emit.IEST := ''; // C18 - Inscrição Estadual do Substituto Tributário da UF de destino da mercadoria, quando houver a retenção do ICMS ST para a UF de destino.
NFe.Emit.IM := ''; // C19 - Inscrição Municipal (NF-e conjugada, com prestação de serviços sujeitos ao ISSQN e fornecimento de peças sujeitos ao ICMS.)
NFe.Emit.CNAE := ''; // C20 - CNAE fiscal Este campo deve ser informado quando o campo NFe.Emit.IM for informado.
// TAG de grupo do Endereço do emitente - - Ocorrência 1-1 ********
NFe.Emit.enderEmit.xLgr := ''; // C06 - Logradouro
NFe.Emit.enderEmit.nro := ''; // C07 - Número
NFe.Emit.enderEmit.xCpl := ''; // C08 - Complemento
NFe.Emit.enderEmit.xBairro := ''; // C09 - Bairro
NFe.Emit.enderEmit.cMun := 0; // C10 - Código do município (Tabela do IBGE - '9999999' para operações com o exterior))
NFe.Emit.enderEmit.xMun := ''; // C11 - Nome do município ('EXTERIOR' para operações com o exterior)
NFe.Emit.enderEmit.UF := ''; // C12 - Sigla da UF ('EX' para operações com o exterior.)
NFe.Emit.enderEmit.CEP := 0; // C13 - Código do CEP
NFe.Emit.enderEmit.cPais := 0; // C14 - Código do País (Tabela do BACEN )
NFe.Emit.enderEmit.xPais := ''; // C15 - Nome do País
NFe.Emit.enderEmit.fone := ''; // C16 - Telefone ( Código DDD + número do telefone. )


(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de Identificação do Fisco Emitente da NF-e - - Ocorrência 0-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// D01 - Grupo para uso exclusivo do fisco
NFe.Avulsa.CNPJ := '';
NFe.Avulsa.xOrgao := '';
NFe.Avulsa.matr := '';
NFe.Avulsa.xAgente := '';
NFe.Avulsa.fone := '';
NFe.Avulsa.UF := '';
NFe.Avulsa.nDAR := '';
NFe.Avulsa.dEmi := null;
NFe.Avulsa.vDAR := 0;
NFe.Avulsa.repEmi := '';
NFe.Avulsa.dPag := null;

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de identificação do Destinatário da NF-e - - Ocorrência 1-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

NFe.Dest.CNPJCPF := ''; // E02 - CNPJ do destinatário / CPF do destinatário
NFe.Dest.xNome := ''; // E04 - Razão Social ou nome do destinatário
NFe.Dest.IE := ''; // E17 - Inscrição Estadual do destinatário
NFe.Dest.ISUF := ''; // E18 - Inscrição na SUFRAMA
// TAG de grupo de endereço do Destinatário da NF-e - - Ocorrência 1-1 *
NFe.Dest.enderDest.xLgr := ''; // E06 - Logradouro
NFe.Dest.enderDest.nro := ''; // E07 - Número
NFe.Dest.enderDest.xCpl := ''; // E08 - Complemento
NFe.Dest.enderDest.xBairro := ''; // E09 - Bairro
NFe.Dest.enderDest.cMun := 0; // E10 - Código do município (Tabela do IBGE - '9999999' para operações com o exterior))
NFe.Dest.enderDest.xMun := ''; // E11 - Nome do município ('EXTERIOR' para operações com o exterior)
NFe.Dest.enderDest.UF := ''; // E12 - Sigla da UF ('EX' para operações com o exterior.)
NFe.Dest.enderDest.CEP := 0; // E13 - Código do CEP
NFe.Dest.enderDest.cPais := 0; // E14 - Código do País (Tabela do BACEN )
NFe.Dest.enderDest.xPais := ''; // E15 - Nome do País
NFe.Dest.enderDest.fone := ''; // E16 - Telefone ( Código DDD + número do telefone. )

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de identificação do Local de retirada - - Ocorrência 0-N *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// Informar os valores desse grupo somente se o endereço de
// retirada for diferente do endereço do remetente.
// Assim se retirada.xLgr '' o gerador grava o grupo no XML

NFe.Retirada.CNPJ := ''; // F02 - CNPJ
NFe.Retirada.xLgr := ''; // F03 - Logradouro
NFe.Retirada.nro := ''; // F04 - Número
NFe.Retirada.xCpl := ''; // F05 - Complemento
NFe.Retirada.xBairro := ''; // F06 - Bairro
NFe.Retirada.cMun := 0; // F07 - Código do município (Tabela do IBGE - '9999999' para operações com o exterior))
NFe.Retirada.xMun := ''; // F08 - Nome do município ('EXTERIOR' para operações com o exterior)
NFe.Retirada.UF := ''; // F09 - Sigla da UF ('EX' para operações com o exterior.)

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de identificação do Local de entrega - - Ocorrência 0-N *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// Informar os valores desse grupo somente se o
// endereço de entrega for diferente do endereço do destinatario.
// Assim se entrega.xLgr '' o gerador grava o grupo no XML

NFe.Entrega.CNPJ := ''; // G02 - CNPJ
NFe.Entrega.xLgr := ''; // G03 - Logradouro
NFe.Entrega.nro := ''; // G04 - Número
NFe.Entrega.xCpl := ''; // G05 - Complemento
NFe.Entrega.xBairro := ''; // G06 - Bairro
NFe.Entrega.cMun := 0; // G07 - Código do município (Tabela do IBGE - '9999999' para operações com o exterior))
NFe.Entrega.xMun := ''; // G08 - Nome do município ('EXTERIOR' para operações com o exterior)
NFe.Entrega.UF := ''; // G09 - Sigla da UF ('EX' para operações com o exterior.)

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo do detalhamento de Produtos e Serviços da NF-e - - Ocorrência 1-990 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

for i := 0 to 1 do
begin

NFe.Det.Add;

NFe.Det[i].infAdProd := ''; // - Informações Adicionais do Produto

NFe.Det[i].Prod.nItem := 1 + i; // H02 - Número do item DE 1 a 990
NFe.Det[i].Prod.cProd := ''; // I02 - Código do produto ou serviço
NFe.Det[i].Prod.cEAN := ''; // I03 - GTIN (Global Trade Item Number) do produto, antigo código EAN ou código de barra
NFe.Det[i].Prod.xProd := ''; // I04 - Descrição do produto ou serviço
NFe.Det[i].Prod.NCM := ''; // I05 - Código NCM (Em caso de serviço, não incluir a TAG.)
NFe.Det[i].Prod.EXTIPI := ''; // I06 - Código EX da TIPI (Em caso de serviço, não incluir a TAG.)
NFe.Det[i].Prod.genero := 0; // I07 - Gênero do Produto ou Serviço (Tabela de Capítulos da NCM)(Em caso de serviço, não incluir a TAG.)
NFe.Det[i].Prod.CFOP := ''; // I08 - Código Fiscal de Operações e Prestações

NFe.Det[i].Prod.uCom := ''; // I09 - Unidade Comercial
NFe.Det[i].Prod.qCom := 0; // I10 - Quantidade Comercial
NFe.Det[i].Prod.vUnCom := 0; // I10a Valor Unitário de comercialização
NFe.Det[i].Prod.vProd := 0; // I11 - Valor Total Bruto dos Produtos ou Serviços
NFe.Det[i].Prod.uTrib := ''; // I13 - Unidade Tributável
NFe.Det[i].Prod.qTrib := 0; // I14 - Quantidade Tributável
NFe.Det[i].Prod.vUnTrib := 0; // I14a Valor Unitário de tributação

(* EXEMPLO *) // NFe.Det[i].Prod.uCom := 'CX';
// NFe.Det[i].Prod.qCom := 2; Vendidas 2 caixas ( com 10 unidades cada )
// NFe.Det[i].Prod.vUnCom := 50; R$ 50,00 cada caixa
// NFe.Det[i].Prod.vProd := 100; R$ 100,00 Valor dos produtos
// NFe.Det[i].Prod.uTrib := 'UN';
// NFe.Det[i].Prod.qTrib := 20; 2 caixas X 10 unidades por caixa = 20 unidades
// NFe.Det[i].Prod.vUnTrib := 5; R$ 100,00 / 20 unidades = R$ 5,00 cada unidade

NFe.Det[i].Prod.cEANTrib := ''; // I12 - GTIN (Global Trade Item Number) da unidade tributável, antigo código EAN ou código de barras ??
NFe.Det[i].Prod.vFrete := 0; // I15 - Valor Total do Frete
NFe.Det[i].Prod.vSeg := 0; // I16 - Valor Total do Seguro
NFe.Det[i].Prod.vDesc := 0; // I17 - Valor do Desconto

// Tag da Declaração de Importação - - Ocorrência 0-N

for j := 0 to 1 do
begin
NFe.Det[i].Prod.DI.Add;
NFe.Det[i].Prod.DI[j].nDi := ''; // I19 - Número do Documento de Importação DI/DSI/DA (DI/DSI/DA)
NFe.Det[i].Prod.DI[j].dDi := null; // I20 - Data de Registro da DI/DSI/DA
NFe.Det[i].Prod.DI[j].xLocDesemb := ''; // I21 - Local de desembaraço
NFe.Det[i].Prod.DI[j].UFDesemb := ''; // I22 - Sigla da UF onde ocorreu o Desembaraço Aduaneiro
NFe.Det[i].Prod.DI[j].dDesemb := null; // I23 - Data do Desembaraço Aduaneiro
NFe.Det[i].Prod.DI[j].cExportador := ''; // I24 - Código do exportador
for k := 0 to 1 do
begin
NFe.Det[i].Prod.DI[j].adi.Add; // Tag de Adições - - Ocorrência 1-N
NFe.Det[i].Prod.DI[j].adi[k].nAdicao := 0; // I26 - Numero da adição
NFe.Det[i].Prod.DI[j].adi[k].nSeqAdi := 0; // I27 - Numero seqüencial do item dentro da adição
NFe.Det[i].Prod.DI[j].adi[k].cFabricante := ''; // I28 - Código do fabricante estrangeiro
NFe.Det[i].Prod.DI[j].adi[k].vDescDI := 0; // I29 - Valor do desconto do item da DI – adição
end;
end;

// TAG de grupo do detalhamento de Veículos novos - - Ocorrência 0-1

// Este grupo será criado no XML somente se o campo for informado.
NFe.Det[i].prod.veicProd.tpOP := toVendaDireta; // J02 - Tipo da operação
// (1)=toVendaConcessionaria
// (2)=toFaturamentoDireto
// (3)=toVendaDireta
// (0)=toOutros
NFe.Det[i].prod.veicProd.chassi := ''; // J03 - Chassi do veículo
NFe.Det[i].prod.veicProd.cCor := ''; // J04 - Cor
NFe.Det[i].prod.veicProd.xCor := ''; // J05 - Descrição da Cor
NFe.Det[i].prod.veicProd.pot := ''; // J06 - Potência Motor
NFe.Det[i].prod.veicProd.CM3 := ''; // J07 - CM3 (Potência)
NFe.Det[i].prod.veicProd.pesoL := ''; // J08 - Peso Líquido
NFe.Det[i].prod.veicProd.pesoB := ''; // J09 - Peso Bruto
NFe.Det[i].prod.veicProd.nSerie := ''; // J10 - Serial (série)
NFe.Det[i].prod.veicProd.tpComb := ''; // J11 - Tipo de combustível
NFe.Det[i].prod.veicProd.nMotor := ''; // J12 - Número de Motor
NFe.Det[i].prod.veicProd.CMKG := ''; // J13 - CMKG
NFe.Det[i].prod.veicProd.dist := ''; // J14 - Distância entre eixos
NFe.Det[i].prod.veicProd.RENAVAM := ''; // J15 - RENAVAM (Não informar a TAG na exportação)
NFe.Det[i].prod.veicProd.anoMod := 0; // J16 - Ano Modelo de Fabricação
NFe.Det[i].prod.veicProd.anoFab := 0; // J17 - Ano de Fabricação
NFe.Det[i].prod.veicProd.tpPint := ''; // J18 - Tipo de Pintura
NFe.Det[i].prod.veicProd.tpVeic := 0; // J19 - Tipo de Veículo (Utilizar Tabela RENAVAM)
NFe.Det[i].prod.veicProd.espVeic := 0; // J20 - Espécie de Veículo (Utilizar Tabela RENAVAM)
NFe.Det[i].prod.veicProd.VIN := ''; // J21 - Condição do VIN
NFe.Det[i].prod.veicProd.condVeic := cvAcabado; // J22 - Condição do Veículo (1-Acabado; 2-Inacabado; 3-Semi-acabado)
NFe.Det[i].prod.veicProd.cMod := ''; // J23 - Código Marca Modelo (Utilizar Tabela RENAVAM)

// TAG de grupo do detalhamento de Medicamentos - - Ocorrência 0-N
for j := 0 to 1 do
begin
NFe.Det[i].prod.med.add;
NFe.Det[i].prod.med[j].nLote := ''; // K02 - Número do Lote do medicamento
NFe.Det[i].prod.med[j].qLote := 0; // K03 - Quantidade de produto no Lote do medicamento
NFe.Det[i].prod.med[j].dFab := null; // K04 - Data de fabricação
NFe.Det[i].prod.med[j].dVal := null; // K05 - Data de validade
NFe.Det[i].prod.med[j].vPMC := 0; // K06 - Preço máximo consumidor
end;

// TAG de grupo do detalhamento de Armamento - - Ocorrência 0-N
for j := 0 to 1 do
begin
NFe.Det[i].prod.arma.add;
NFe.Det[i].prod.arma[j].tpArma := taUsoPermitido; // L02 - Indicador do tipo de arma de fogo
// (0)=taUsoPermitido
// (1)=taUsoRestrito
NFe.Det[i].prod.arma[j].nSerie := 0; // L03 - Número de série da arma
NFe.Det[i].prod.arma[j].nCano := 0; // L04 - Número de série do cano
NFe.Det[i].prod.arma[j].descr := ''; // L05 - Descrição completa da arma, compreendendo: calibre, marca, capacidade, etc)
end;

// TAG de grupo de informações específicas para combustíveis

// líquidos - - Ocorrência 0-1
// Se for informado algum dos valores abaixo:
// a TAG grava o grupo no XML ********************************************
NFe.Det[i].prod.comb.cProdANP := 0; // L102 - Código de produto da ANP - codificação de produtos do SIMP
NFe.Det[i].prod.comb.CODIF := ''; // L103 - Código de autorização / registro do CODIF
NFe.Det[i].prod.comb.qTemp := 0; // L104 - Quantidade de combustível faturada à temperatura ambiente.
// TAG de grupo da CIDE - - Ocorrência 0-1
NFe.Det[i].prod.comb.CIDE.qBCprod := 0; // L106 - BC da CIDE em quantidad
NFe.Det[i].prod.comb.CIDE.vAliqProd := 0; // L107 - Valor da alíquota da CIDE
NFe.Det[i].prod.comb.CIDE.vCIDE := 0; // L108 - Valor da CIDE
// TAG de grupo do ICMS - - Ocorrência 1-1
NFe.Det[i].prod.comb.ICMS.vBCICMS := 0; // L110 - BC do ICMS
NFe.Det[i].prod.comb.ICMS.vICMS := 0; // L111 - Valor do ICMS
NFe.Det[i].prod.comb.ICMS.vBCICMSST := 0; // L112 - BC do ICMS ST retido
NFe.Det[i].prod.comb.ICMS.vICMSST := 0; // L113 - Valor do ICMS ST retido
// TAG de grupo do ICMSST de operação interestadual - - Ocorrência 0-1
NFe.Det[i].prod.comb.ICMSInter.vBCICMSSTDest := 0; // L115 - BC do ICMS ST da UF de destino
NFe.Det[i].prod.comb.ICMSInter.vICMSSTDest := 0; // L116 - Valor do ICMS ST da UF de destino
// TAG de ICMS para consumo em UF diversa da UF de localização do destinatário do produto - - Ocorrência 0-1
NFe.Det[i].prod.comb.ICMSCons.vBCICMSSTCons := 0; // L118 - BC do ICMS ST da UF de consumo
NFe.Det[i].prod.comb.ICMSCons.vICMSSTCons := 0; // L119 - Valor do ICMS ST da UF de consumo
NFe.Det[i].prod.comb.ICMSCons.UFcons := ''; // L120 - Sigla da UF de consumo

// TAG de grupo do ICMS da Operação própria e ST - - Ocorrência 1-1

NFe.Det[i].Imposto.ICMS.orig := oeNacional; // N11 - Origem da mercadoria
// (0)=oeNacional
// (1)=oeEstrangeiraImportacaoDireta
// (2)=oeEstrangeiraAdquiridaBrasil
NFe.Det[i].Imposto.ICMS.CST := cst00; // N12 - Tributação do ICMS
// (00)=cst00
// (10)=cst10
// (20)=cst20
// (30)=cst30
// (40)=cst40
// (41)=cst41
// (50)=cst50
// (51)=cst51
// (60)=cst60
// (70)=cst70
// (90)=cst90
if NFe.Det[i].Imposto.ICMS.CST = cst00 then
begin
NFe.Det[i].Imposto.ICMS.modBC := dbiMargemValorAgregado; // N13 - Modalidade de determinação da BC do ICMS
NFe.Det[i].Imposto.ICMS.vBC := 0; // N15 - Valor da BC do ICMS
NFe.Det[i].Imposto.ICMS.pICMS := 0; // N16 - Alíquota do imposto
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
end;
if NFe.Det[i].Imposto.ICMS.CST = cst10 then
begin
NFe.Det[i].Imposto.ICMS.modBC := dbiMargemValorAgregado; // N13 - Modalidade de determinação da BC do ICMS
NFe.Det[i].Imposto.ICMS.vBC := 0; // N15 - Valor da BC do ICMS
NFe.Det[i].Imposto.ICMS.pICMS := 0; // N16 - Alíquota do imposto
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
NFe.Det[i].Imposto.ICMS.modBCST := dbisMargemValorAgregado; // N18 - Modalidade de determinação da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pMVAST := 0; // N19 - Percentual da margem de valor Adicionado do ICMS ST
NFe.Det[i].Imposto.ICMS.pRedBCST := 0; // N20 - Percentual da Redução de BC do ICMS ST
NFe.Det[i].Imposto.ICMS.vBCST := 0; // N21 - Valor da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pICMSST := 0; // N22 - Alíquota do imposto do ICMS ST
NFe.Det[i].Imposto.ICMS.vICMSST := 0; // N23 - Valor do ICMS ST
end;
if NFe.Det[i].Imposto.ICMS.CST = cst20 then
begin
NFe.Det[i].Imposto.ICMS.modBC := dbiMargemValorAgregado; // N13 - Modalidade de determinação da BC do ICMS
NFe.Det[i].Imposto.ICMS.pRedBC := 0; // N14 - Percentual da Redução de BC do ICMS
NFe.Det[i].Imposto.ICMS.vBC := 0; // N15 - Valor da BC do ICMS
NFe.Det[i].Imposto.ICMS.pICMS := 0; // N16 - Alíquota do imposto
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
end;
if NFe.Det[i].Imposto.ICMS.CST = cst30 then
begin
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
NFe.Det[i].Imposto.ICMS.pMVAST := 0; // N19 - Percentual da margem de valor Adicionado do ICMS ST
NFe.Det[i].Imposto.ICMS.pRedBCST := 0; // N20 - Percentual da Redução de BC do ICMS ST
NFe.Det[i].Imposto.ICMS.vBCST := 0; // N21 - Valor da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pICMSST := 0; // N22 - Alíquota do imposto do ICMS ST
NFe.Det[i].Imposto.ICMS.vICMSST := 0; // N23 - Valor do ICMS ST
end;
if NFe.Det[i].Imposto.ICMS.CST = cst51 then
begin
NFe.Det[i].Imposto.ICMS.modBC := dbiMargemValorAgregado; // N13 - Modalidade de determinação da BC do ICMS
NFe.Det[i].Imposto.ICMS.pRedBC := 0; // N14 - Percentual da Redução de BC do ICMS
NFe.Det[i].Imposto.ICMS.vBC := 0; // N15 - Valor da BC do ICMS
NFe.Det[i].Imposto.ICMS.pICMS := 0; // N16 - Alíquota do imposto
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
end;
if NFe.Det[i].Imposto.ICMS.CST = cst60 then
begin
NFe.Det[i].Imposto.ICMS.vBCST := 0; // N21 - Valor da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.vICMSST := 0; // N23 - Valor do ICMS ST
end;
if NFe.Det[i].Imposto.ICMS.CST = cst70 then
begin
NFe.Det[i].Imposto.ICMS.modBC := dbiMargemValorAgregado; // N13 - Modalidade de determinação da BC do ICMS
NFe.Det[i].Imposto.ICMS.pRedBC := 0; // N14 - Percentual da Redução de BC do ICMS
NFe.Det[i].Imposto.ICMS.vBC := 0; // N15 - Valor da BC do ICMS
NFe.Det[i].Imposto.ICMS.pICMS := 0; // N16 - Alíquota do imposto
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
NFe.Det[i].Imposto.ICMS.modBCST := dbisMargemValorAgregado; // N18 - Modalidade de determinação da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pMVAST := 0; // N19 - Percentual da margem de valor Adicionado do ICMS ST
NFe.Det[i].Imposto.ICMS.pRedBCST := 0; // N20 - Percentual da Redução de BC do ICMS ST
NFe.Det[i].Imposto.ICMS.vBCST := 0; // N21 - Valor da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pICMSST := 0; // N22 - Alíquota do imposto do ICMS ST
NFe.Det[i].Imposto.ICMS.vICMSST := 0; // N23 - Valor do ICMS ST
end;
if NFe.Det[i].Imposto.ICMS.CST = cst90 then
begin
NFe.Det[i].Imposto.ICMS.modBC := dbiMargemValorAgregado; // N13 - Modalidade de determinação da BC do ICMS
NFe.Det[i].Imposto.ICMS.pRedBC := 0; // N14 - Percentual da Redução de BC do ICMS
NFe.Det[i].Imposto.ICMS.vBC := 0; // N15 - Valor da BC do ICMS
NFe.Det[i].Imposto.ICMS.pICMS := 0; // N16 - Alíquota do imposto
NFe.Det[i].Imposto.ICMS.vICMS := 0; // N17 - Valor do ICMS
NFe.Det[i].Imposto.ICMS.modBCST := dbisMargemValorAgregado; // N18 - Modalidade de determinação da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pMVAST := 0; // N19 - Percentual da margem de valor Adicionado do ICMS ST
NFe.Det[i].Imposto.ICMS.pRedBCST := 0; // N20 - Percentual da Redução de BC do ICMS ST
NFe.Det[i].Imposto.ICMS.vBCST := 0; // N21 - Valor da BC do ICMS ST
NFe.Det[i].Imposto.ICMS.pICMSST := 0; // N22 - Alíquota do imposto do ICMS ST
NFe.Det[i].Imposto.ICMS.vICMSST := 0; // N23 - Valor do ICMS ST
end;
// N13 - Modalidade de determinação da BC do ICMS
// (0)=dbiMargemValorAgregado
// (1)=dbiPauta
// (2)=dbiPrecoTabelado
// (3)=dbiValorOperacao

// N18 - Modalidade de determinação da BC do ICMS ST
// (0)=dbisPrecoTabelado – Preço tabelado ou máximo sugerido;
// (1)=dbisListaNegativa - Lista Negativa (valor);
// (2)=dbisListaPositiva - Lista Positiva (valor);
// (3)=dbisListaNeutra - Lista Neutra (valor);
// (4)=dbisMargemValorAgregado - Margem Valor Agregado (%);
// (5)=dbisPauta - Pauta (valor);)

// TAG de grupo do IPI - - Ocorrência 0-1

NFe.Det[i].Imposto.IPI.clEnq := ''; // O02 - Classe de enquadramento do IPI para Cigarros e Bebidas
NFe.Det[i].Imposto.IPI.CNPJProd := ''; // O03 - CNPJ do produtor da mercadoria, quando diferente do emitente. Somente para os casos de exportação direta ou indireta.
NFe.Det[i].Imposto.IPI.cSelo := ''; // O04 - Código do selo de controle IPI
NFe.Det[i].Imposto.IPI.qSelo := 0; // O05 - Quantidade de selo de controle
NFe.Det[i].Imposto.IPI.cEnq := ''; // O06 - Código de Enquadramento Legal do IPI (Tabela a ser criada pela RFB, informar 999 enquanto a tabela não for criada)
NFe.Det[i].Imposto.IPI.CST := ipi00; // O09 - Código da situação tributária do IPI
// (00)=ipi00 - Entrada com recuperação de crédito
// (49)=ipi49 - Outras entradas
// (50)=ipi50 - Saída tributada
// (99)=ipi99 - Outras saídas
// (01)=ipi01 - Entrada tributada com alíquota zero
// (02)=ipi02 - Entrada isenta
// (03)=ipi03 - Entrada não-tributada
// (04)=ipi04 - Entrada imune
// (05)=ipi05 - Entrada com suspensão
// (51)=ipi51 - Saída tributada com alíquota zero
// (52)=ipi52 - Saída isenta
// (53)=ipi53 - Saída não-tributada
// (54)=ipi54 - Saída imune
// (55)=ipi55 - Saída com suspensão

if (NFe.Det[i].Imposto.IPI.CST = ipi00) or
(NFe.Det[i].Imposto.IPI.CST = ipi49) or
(NFe.Det[i].Imposto.IPI.CST = ipi50) or
(NFe.Det[i].Imposto.IPI.CST = ipi99) then
begin
if opcao1 then
begin
NFe.Det[ i].Imposto.IPI.vBC := 0; // O10 - Valor da BC do IPI
NFe.Det[ i].Imposto.IPI.pIPI := 0; // 013 - Alíquota do IPI
NFe.Det[i].Imposto.IPI.vIPI := 0; // O14 - Valor do IPI
end;
if not opcao1 then
begin
NFe.Det[ i].Imposto.IPI.qUnid := 0; // O11 - Qtde total na unidade padrão para tributação (somente para os produtos tributados por unidade)
NFe.Det[ i].Imposto.IPI.vUnid := 0; // O12 - Valor por Unidade Tributável
NFe.Det[i].Imposto.IPI.vIPI := 0; // O14 - Valor do IPI
end;
end;

// TAG de grupo do Imposto de Importação - - Ocorrência 0-1

// Informar apenas quando o item for sujeito ao II
NFe.Det[i].Imposto.II.vBc := 0; // P02 - Valor da BC do Imposto de Importação
NFe.Det[i].Imposto.II.vDespAdu := 0; // P03 - Valor das despesas aduaneiras
NFe.Det[i].Imposto.II.vII := 0; // P04 - Valor do Imposto de Importação
NFe.Det[i].Imposto.II.vIOF := 0; // P05 - Valor do Imposto sobre Operações Financeiras

// TAG de grupo do PIS - - Ocorrência 1-1

NFe.Det[i].Imposto.PIS.CST := pis01; // Q06 - Código de Situação Tributária do PIS
// (01)=pis01 – Operação Tributável (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
// (02)=pis02 - Operação Tributável (base de cálculo = valor da operação (alíquota diferenciada));
// (03)=pis03 - Operação Tributável (base de cálculo = quantidade vendida x alíquota por unidade de produto )
// (04)=pis04 - Operação Tributável (tributação monofásica (alíquota zero));
// (06)=pis06 - Operação Tributável (alíquota zero);
// (07)=pis07 - Operação Isenta da Contribuição;
// (08)=pis08 - Operação Sem Incidência da Contribuição;
// (09)=pis09 - Operação com Suspensão da Contribuição;
// (99)=pis99 - Outras Operações;

if (NFe.Det[i].Imposto.PIS.CST = pis01) or
(NFe.Det[i].Imposto.PIS.CST = pis02) then
begin
NFe.Det[i].Imposto.PIS.vBC := 0; // Q07 - Valor da Base de Cálculo do PIS
NFe.Det[i].Imposto.PIS.pPIS := 0; // Q08 - Alíquota do PIS (em percentual)
NFe.Det[i].Imposto.PIS.qBCProd := 0; // Q10 - Quantidade Vendida
NFe.Det[i].Imposto.PIS.vAliqProd := 0; // Q11 - Alíquota do PIS (em reais)
NFe.Det[i].Imposto.PIS.vPIS := 0; // Q09 - Valor do PIS
end;
if (NFe.Det[i].Imposto.PIS.CST = pis03) then
begin
NFe.Det[i].Imposto.PIS.qBCProd := 0; // Q10 - Quantidade Vendida
NFe.Det[i].Imposto.PIS.vAliqProd := 0; // Q11 - Alíquota do PIS (em reais)
NFe.Det[i].Imposto.PIS.vPIS := 0; // Q09 - Valor do PIS
end;
if (NFe.Det[i].Imposto.PIS.CST = pis03) and (opcao1)then
begin
NFe.Det[i].Imposto.PIS.vBC := 0; // Q07 - Valor da Base de Cálculo do PIS
NFe.Det[i].Imposto.PIS.pPIS := 0; // Q08 - Alíquota do PIS (em percentual)
NFe.Det[i].Imposto.PIS.vPIS := 0; // Q09 - Valor do PIS
end;
if (NFe.Det[i].Imposto.PIS.CST = pis03) and (not opcao1)then
begin
NFe.Det[i].Imposto.PIS.qBCProd := 0; // Q10 - Quantidade Vendida
NFe.Det[i].Imposto.PIS.vAliqProd := 0; // Q11 - Alíquota do PIS (em reais)
NFe.Det[i].Imposto.PIS.vPIS := 0; // Q09 - Valor do PIS
end;

// TAG do grupo de PIS Substituição Tributária - - Ocorrência 0-1

if opcao1 then
begin
NFe.Det[i].Imposto.PISST.vBc := 0; // R02 - Valor da Base de Cálculo do PIS
NFe.Det[i].Imposto.PISST.pPis := 0; // R03 - Alíquota do PIS (em percentual)
NFe.Det[i].Imposto.PISST.vPIS := 0; // R06 - Valor do PIS
end;
if not opcao1 then
begin
NFe.Det[i].Imposto.PISST.qBCProd := 0; // R04 - Quantidade Vendida
NFe.Det[i].Imposto.PISST.vAliqProd := 0; // R05 - Alíquota do PIS (em reais)
NFe.Det[i].Imposto.PISST.vPIS := 0; // R06 - Valor do PIS
end;

// TAG de grupo do COFINS - - Ocorrência 1-1

NFe.Det[i].Imposto.COFINS.CST := cof01; // S06 - Código de Situação Tributária do COFINS
// (01) – Operação Tributável (base de cálculo = valor da operação alíquota normal (cumulativo/não cumulativo));
// (02) - Operação Tributável (base de cálculo = valor da operação
// (03) - Operação Tributável (base de cálculo = quantidade vendida x alíquota por unidade de produto);
// (04) - Operação Tributável (tributação monofásica (alíquota zero));
// (06) - Operação Tributável (alíquota zero);
// (07) - Operação Isenta da Contribuição;
// (08) - Operação Sem Incidência da Contribuição;
// (09) - Operação com Suspensão da Contribuição;
// (99) - Outras Operações;

if (NFe.Det[i].Imposto.COFINS.CST = cof01) or (NFe.Det[i].Imposto.COFINS.CST = cof02) then
begin
NFe.Det[i].Imposto.COFINS.vBC := 0; // S07 - Valor da Base de Cálculo da COFINS
NFe.Det[i].Imposto.COFINS.pCOFINS := 0; // S08 - Alíquota da COFINS (em percentual)
NFe.Det[i].Imposto.COFINS.vCOFINS := 0; // S11 - Valor do COFINS
end;
if NFe.Det[i].Imposto.COFINS.CST = cof03 then
begin
NFe.Det[i].Imposto.COFINS.vBCProd := 0; // S09 - Valor do COFINS
NFe.Det[i].Imposto.COFINS.vAliqProd := 0; // S10 - Alíquota do COFINS (em reais)
NFe.Det[i].Imposto.COFINS.vCOFINS := 0; // S11 - Valor do COFINS
end;
if ( NFe.Det[i].Imposto.COFINS.CST = cof99) and (opcao1) then
begin
NFe.Det[i].Imposto.COFINS.vBC := 0; // S07 - Valor da Base de Cálculo da COFINS
NFe.Det[i].Imposto.COFINS.pCOFINS := 0; // S08 - Alíquota da COFINS (em percentual)
NFe.Det[i].Imposto.COFINS.vCOFINS := 0; // S11 - Valor do COFINS
end;
if ( NFe.Det[i].Imposto.COFINS.CST = cof99) and (not opcao1) then
begin
NFe.Det[i].Imposto.COFINS.qBCProd := 0; // S09 - Quantidade Vendida
NFe.Det[i].Imposto.COFINS.vAliqProd := 0; // S10 - Alíquota do COFINS (em reais)
NFe.Det[i].Imposto.COFINS.vCOFINS := 0; // S11 - Valor do COFINS
end;

// TAG do grupo de COFINS Substituição Tributária - - Ocorrência 0-1

if opcao1 then
begin
NFe.Det[i].Imposto.COFINSST.vBC := 0; // T02 - Valor da Base de Cálculo da COFINS
NFe.Det[i].Imposto.COFINSST.pCOFINS := 0; // T03 - Alíquota da COFINS (em percentual)
NFe.Det[i].Imposto.COFINSST.vCOFINS := 0; // T06 - Valor do COFINS
end;
if not opcao1 then
begin
NFe.Det[i].Imposto.COFINSST.qBCProd := 0; // T04 - Quantidade Vendida
NFe.Det[i].Imposto.COFINSST.vAliqProd := 0; // T05 - Alíquota do COFINS (em reais)
NFe.Det[i].Imposto.COFINSST.vCOFINS := 0; // T06 - Valor do COFINS
end;

// TAG do grupo do ISSQN - - Ocorrência 0-1

NFe.Det[i].Imposto.ISSQN.vBC := 0; // U02 - Valor da Base de Cálculo do ISSQN
NFe.Det[i].Imposto.ISSQN.vAliq := 0; // U03 - Alíquota do ISSQN
NFe.Det[i].Imposto.ISSQN.vISSQN := 0; // U04 - Valor do ISSQN
NFe.Det[i].Imposto.ISSQN.cMunFG := 0; // U05 - Código do município de ocorrência do fato gerador do ISSQN
NFe.Det[i].Imposto.ISSQN.cListServ := 0; // U06 - Código da Lista de Serviços

end;

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de Valores Totais da NF-e - - Ocorrência 1-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// TAG de grupo de Valores Totais referentes ao ICMS - - Ocorrência 1-1
NFe.Total.ICMSTot.vBC := 0; // W03 - Base de Cálculo do ICMS
NFe.Total.ICMSTot.vICMS := 0; // W04 - Valor Total do ICMS
NFe.Total.ICMSTot.vBCST := 0; // W05 - Base de Cálculo do ICMS ST
NFe.Total.ICMSTot.vST := 0; // W06 - Valor Total do ICMS ST
NFe.Total.ICMSTot.vProd := 0; // W07 - Valor Total dos produtos e serviços
NFe.Total.ICMSTot.vFrete := 0; // W08 - Valor Total do Frete
NFe.Total.ICMSTot.vSeg := 0; // W09 - Valor Total do Seguro
NFe.Total.ICMSTot.vDesc := 0; // W10 - Valor Total do Desconto
NFe.Total.ICMSTot.vII := 0; // W11 - Valor Total do II
NFe.Total.ICMSTot.vIPI := 0; // W12 - Valor Total do IPI
NFe.Total.ICMSTot.vPIS := 0; // W13 - Valor do PIS
NFe.Total.ICMSTot.vCOFINS := 0; // W14 - Valor do COFINS
NFe.Total.ICMSTot.vOutro := 0; // W15 - Outras Despesas acessórias
NFe.Total.ICMSTot.vNF := 0; // W16 - Valor Total da NF-e

// TAG de grupo de Valores Totais referentes ao ISSQN - - Ocorrência 0-1
NFe.Total.ISSQNtot.vServ := 0; // W18 - Valor Total dos Serviços sob nãoincidência ou não tributados pelo ICMS
NFe.Total.ISSQNtot.vBC := 0; // W19 - Base de Cálculo do ISS
NFe.Total.ISSQNtot.vISS := 0; // W20 - Valor Total do ISS
NFe.Total.ISSQNtot.vPIS := 0; // W21 - Valor do PIS sobre serviços
NFe.Total.ISSQNtot.vCOFINS := 0; // W22 - Valor do COFINS sobre serviços

// TAG de grupo de Retenções de Tributos - - Ocorrência 0-1
NFe.Total.retTrib.vRetPIS := 0; // W24 - Valor Retido de PIS
NFe.Total.retTrib.vRetCOFINS := 0; // W25 - Valor Retido de COFINS
NFe.Total.retTrib.vRetCSLL := 0; // W26 - Valor Retido de CSLL
NFe.Total.retTrib.vBCIRRF := 0; // W27 - Base de Cálculo do IRRF
NFe.Total.retTrib.vIRRF := 0; // W28 - Valor Retido do IRRF
NFe.Total.retTrib.vBCRetPrev := 0; // W29 - Base de Cálculo da Retenção da Previdência Social
NFe.Total.retTrib.vRetPrev := 0; // W30 - Valor da Retenção da Previdência Social

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de Informações do Transporte da NF-e - - Ocorrência 1-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

NFe.Transp.modFrete := mfContaEmitente; // X02 - Modalidade do frete
// (0)=mfContaEmitente – por conta do emitente;
// (1)=mfContaDestinatario – por conta do destinatário)
// TAG de grupo Transportador - - Ocorrência 0-1
NFe.Transp.Transporta.CNPJCPF := ''; // X05 - Informar o CNPJ ou o CPF do Transportador, preenchendo os zeros não significativos.
NFe.Transp.Transporta.xNome := ''; // X06 - Razão Social ou nome
NFe.Transp.Transporta.IE := ''; // X07 - Inscrição Estadual
NFe.Transp.Transporta.xEnder := ''; // X08 - Endereço Completo
NFe.Transp.Transporta.xMun := ''; // X09 - Nome do município
NFe.Transp.Transporta.UF := ''; // X10 - Sigla da UF
// TAG de grupo de Retenção do ICMS do transporte - - Ocorrência 0-1
NFe.Transp.retTransp.vServ := 0; // X12 - Valor do Serviço
NFe.Transp.retTransp.vBCRet := 0; // X13 - BC da Retenção do ICMS
NFe.Transp.retTransp.pICMSRet := 0; // X14 - Alíquota da Retenção
NFe.Transp.retTransp.vICMSRet := 0; // X15 - Valor do ICMS Retido
NFe.Transp.retTransp.CFOP := ''; // X16 - CFOP (Utilizar Tabela de CFOP)
NFe.Transp.retTransp.cMunFG := 0; // X17 - Código do município de ocorrência do fato gerador do ICMS do transporte (Tabela do IBGE)
// TAG de grupo Veículo - - Ocorrência 0-1
NFe.Transp.veicTransp.placa := ''; // X19 - Placa do Veículo
NFe.Transp.veicTransp.UF := ''; // X20 - Sigla da UF
NFe.Transp.veicTransp.RNTC := ''; // X21 - Registro Nacional de Transportador de Carga (ANTT)

for i := 0 to 1 do
begin
NFe.Transp.Reboque.Add; // TAG de grupo Reboque - - Ocorrência 0-2
NFe.Transp.Reboque[i].placa := ''; // X23 - Placa do Veículo
NFe.Transp.Reboque[i].UF := ''; // X24 - Sigla da UF
NFe.Transp.Reboque[i].RNTC := ''; // X25 - Registro Nacional de Transportador de Carga (ANTT)
end;

for i := 0 to 1 do
begin
NFe.Transp.Vol.add; // TAG de grupo Volumes - - Ocorrência 0-N
NFe.Transp.Vol[i].qVol := 0; // X27 - Quantidade de volumes transportados
NFe.Transp.vol[i].esp := ''; // X28 - Espécie dos volumes transportados
NFe.Transp.Vol[i].marca := ''; // X29 - Marca dos volumes transportados
NFe.Transp.Vol[i].nVol := ''; // X30 - Numeração dos volumes transportados
NFe.Transp.Vol[i].pesoL := 0; // X31 - Peso Líquido (em kg)
NFe.Transp.Vol[i].pesoB := 0; // X32 - Peso Bruto (em kg)
for j := 0 to 1 do
begin
NFe.transp.Vol[i].lacres.add; // TAG de grupo de Lacres - - Ocorrência 0-N
NFe.transp.Vol[i].lacres[j].nLacre := ''; // X34 - Número dos Lacres
// Para Combustíveis, um Caminhão (Toco, Truck, Carreta, Bi-Tren) pode ter até 32 bocas.
// Ou seja até 32 lacres. Cada lacre pode ser um número de até 8 digitos.
end;
end;

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de Cobrança - - Ocorrência 0-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// >>> TAG de grupo da Fatura - - Ocorrência 0-1
NFe.Cobr.Fat.nFat := ''; // Y03 - Número da Fatura
NFe.Cobr.Fat.vOrig := 0; // Y04 - Valor Original da Fatura
NFe.Cobr.Fat.vDesc := 0; // Y05 - Valor do desconto
NFe.Cobr.Fat.vLiq := 0; // Y06 - Valor Líquido da Fatura
for i := 0 to 1 do
begin
NFe.Cobr.Dup.Add; // >>> TAG de grupo da Duplicata - - Ocorrência 0-N
NFe.Cobr.Dup[i].nDup := ''; // Y08 - Número da Duplicata
NFe.Cobr.Dup[i].dVenc := now; // Y09 - Data de vencimento
NFe.Cobr.Dup[i].vDup := 0; // Y10 - Valor da duplicata
end;

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG de grupo de Informações Adicionais - - Ocorrência 0-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

NFe.InfAdic.infAdFisco := ''; // Z02 - Informações Adicionais de Interesse do Fisco
NFe.InfAdic.infCpl := ''; // Z03 - Informações Complementares de interesse do Contribuinte
for i := 0 to 9 do
begin
NFe.InfAdic.obsCont.Add; // >>> TAG de grupo do campo de uso livre do contribuinte - - Ocorrência 0-10
NFe.InfAdic.obsCont[i].xCampo := ''; // Z05 - Identificação do campo (TAM : 1-20)
NFe.InfAdic.obsCont[i].xTexto := ''; // Z06 - Conteúdo do campo (TAM : 1-60)
end;
for i := 0 to 9 do
begin
NFe.InfAdic.obsFisco.Add; // >>> TAG de grupo do campo de uso livre do Fisco - - Ocorrência 0-10
NFe.InfAdic.obsFisco[i].xCampo := ''; // Z08 - Identificação do campo (TAM : 1-20)
NFe.InfAdic.obsFisco[i].xTexto := ''; // Z09 - Conteúdo do campo (TAM : 1-60)
end;
for i := 0 to 1 do
begin
NFe.InfAdic.procRef.Add; // >>> Tag de grupo do processo referenciado - - Ocorrência 0-N
NFe.InfAdic.procRef[i].nProc := ''; // Z08 - Indentificador do processo ou ato concessório
NFe.InfAdic.procRef[i].indProc := ipSEFAZ; // Z09 - Indicador da origem do processo (0 - SEFAZ; 1 - Justiça Federal; 2 - Justiça Estadual; 3 - Secex/RFB; 9 - Outros)
end;

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG do Grupo de Exportação - - Ocorrência 0-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// O grupo sera gravado se um dos campos abaixo for preenchido
NFe.exporta.UFembarq := ''; // ZA02 - Sigla da UF onde ocorrerá o Embarque dos produtos
NFe.exporta.xLocEmbarq := ''; // ZA03 - Local onde ocorrerá o Embarque dos produtos

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG do Grupo de Compra - - Ocorrência 0-1 *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// O grupo sera gravado se um dos campos abaixo for preenchido
NFe.compra.xNEmp := ''; // ZB02 - Nota de Empenho quando se tratar de compras públicas
NFe.compra.xPed := ''; // ZB03 - Pedido
NFe.compra.xCont := ''; // ZB04 - Contrato de Compra

(* ----------------------------------------------------------------------------------------------------------------- *)
(* TAG do Assinatura - *)
(* ----------------------------------------------------------------------------------------------------------------- *)

// Opcionalmente pode gerar o template da assinatura - Isso não sginifica assinar o arquivo!

NFe.signature.URI := NFe.infNFe.Id;

(****************************************************************************)
(* *)
(* G E R A R O A R Q U I V O X M L *)
(* *)
(****************************************************************************)

// Criar a class TNFeW para a geração do arquivo conforme os dados inseridos
// em NFe passar o objeto que contém os dados para a geração do arquivo xml

NFeW := TNFeW.Create(NFe);

// Informa as opções especificas de TNFeW

NFeW.schema := tsPL005C;

NFeW.Opcoes.AjustarTagNro := True; // Ajusta o tamanho do campo para 3 posições com zero a esquerda
NFew.Opcoes.GerarTagIPIparaNaoTributado := True; // No caso de produto não tributado gera a TAG especifica
NFeW.Opcoes.GerarTXTSimultaneamente := False; // Possibilita gerar um arquivo TXT do formato do programa SEFAZ-SP
NFeW.Opcoes.NormatizarMunicipios := False; // Realiza a normatização do nome do municipio conforme a tabela do IBGE
NFeW.Opcoes.PathArquivoMunicipios := 'C:\meuCaminho\MunIBGE\'; // Indicar para aonde estão os arquivo com os nomes dos municipios
NFeW.Opcoes.GerarTagAssinatura := taNunca; // Opção de gerar o template da assinature em branco
NFeW.Opcoes.ValidarInscricoes := False; // Valida as Inscrições. (É melhor quando essa validação é feita no ERP)

// Informar as opções comuns ao gerador ( Abaixo opcões Default)

NFeW.Gerador.Opcoes.IdentarXML := False; // Os arquivos que serão enviados para o SEFAZ não devem estar identados
NFeW.Gerador.Opcoes.TamanhoIdentacao := 3; // Tamanho da identação do arquivo
NFeW.Gerador.Opcoes.FormatoAlerta := 'TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%.'; // Formato em que a mensagem vai ser gravada a ListaDeAlertas
NFeW.Gerador.Opcoes.RetirarEspacos := True; // Retira os espaços em branco duplos nas tag do xml
NFeW.Gerador.Opcoes.SuprimirDecimais := False; // Ignora valores não significativos nas casa decimais
NFeW.Gerador.Opcoes.SomenteValidar := False; // Não gera o arquivo apenas valida as informações

// Gerar o arquivo XML

NFeW.GerarXml;

// Carrega erros

// if NFeW.Gerador.ListaDeAlertas.Count > 0 then
// memo1.Lines.Add(NFeW.gerador.ListaDeAlertas.Text);

// Gravar o arquivo no HD

if NFeW.Gerador.ListaDeAlertas.Count = 0 then // Se não contiver nenhum erro, grava
begin
NFeW.gerador.SalvarArquivo('C:\Meu-Caminho\' + NFeW.ObterNomeArquivo); // Não é necessário informar o parametro fpXML pois ele é default
if NFeW.Opcoes.GerarTXTSimultaneamente then
NFeW.gerador.SalvarArquivo('C:\Meu-Caminho\' + NFeW.ObterNomeArquivo + '.txt',fgTXT); // Informar o parametro fgTXT para gerar o arquivo no formato TEXTO
end;

NFeW.Free;
NFe.Free;

end;

end.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4912 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.