Escrituração Fiscal Digital: SPED – Usando o componente AcBrSpedFiscal - Parte 3

Nesta série de artigos, vamos ver um pequeno tutorial demonstrando o método de uso do componente AcBrSpedFiscal para gerar o arquivo EFD - Escrituração discal digital do SPED.

Nesta parte do artigo seguirá a procedure GerarDadosBlocos já com os códigos necessários para gerar o arquivo SPED.

Como o objetivo deste tutorial e demonstrar de forma rápida o processo de geração do arquivo SPED através do componente AcBr, eu não aprofundei em algumas rotinas, como por exemplo, as de acesso ao banco de dados para filtrar as informações necessárias. Mas sugiro que usem algo como um componente TQuery para através de comandos SQL, selecionar estes dados e repassar para geração do arquivo.

Sem mais delongas, segue os códigos:

procedure TForm1.GerarDadosBloco(pBloco: String); var Int1, Int2, Notas : Integer; aTotalICMS : Double; begin aTotalICMS := 0; if pBloco = '0' then begin with ACBrSpedFiscal1.Bloco_0 do begin // informações da Empresa with Registro0000New do begin COD_VER := vlVersao103; COD_FIN := raOriginal; NOME := 'RAZAO SOCIAL DO INFORMANTE'; CNPJ := ''; CPF := '12345678901'; // Deve ser uma informação valida UF := 'RJ'; IE := '0000000000'; COD_MUN := 12345678; IM := ''; SUFRAMA := ''; IND_PERFIL := pfPerfilA; IND_ATIV := atOutros; end; with Registro0001New do begin IND_MOV := imComDados; // informações complementares da Empresa with Registro0005New do begin FANTASIA := 'NOME FANTASSIA DA EMPRESA'; CEP := '21000000'; ENDERECO := 'RUA PRINCIPAL'; NUM := 'S/N'; COMPL := ''; BAIRRO := 'CENTRO'; FONE := ''; FAX := ''; EMAIL := 'email@empresa.net'; end; // informações da contabilidade. with Registro0100New do begin NOME := 'NOME DO CONTADOR'; CPF := '12345678900'; // Deve ser uma informação valida CRC := '123456'; CNPJ := ''; CEP := ''; ENDERECO := ''; NUM := ''; COMPL := ''; BAIRRO := ''; FONE := ''; FAX := ''; EMAIL := ''; COD_MUN := 3200607; end; // Clientes with Registro0150New do begin COD_PART := '000001'; NOME := 'RAZAO SOCIAL DO CLIENTE'; COD_PAIS := '001'; CNPJ := '12345678000123'; CPF := ''; IE := ''; COD_MUN := 1; SUFRAMA := ''; ENDERECO := 'ENDERECO'; NUM := ''; COMPL := 'COMPL'; BAIRRO := 'BAIRRO'; end; with Registro0190New do begin UNID := 'UN'; DESCR := 'Descricao unidade'; end; for Int1 := 1 to 6 do begin if not Registro0200.LocalizaRegistro(IntToStrZero(Int1,6)) then begin with Registro0200New do begin COD_ITEM := IntToStrZero(Int1,6); DESCR_ITEM := 'DESCRIÇÃO DO ITEM '+IntToStrZero(Int1,6); COD_BARRA := IntToStrZero(Int1,13); COD_ANT_ITEM := ''; UNID_INV := 'UN'; TIPO_ITEM := tiMercadoriaRevenda; COD_NCM := ''; EX_IPI := ''; COD_GEN := ''; COD_LST := ''; ALIQ_ICMS := 18; end; end; end; end; end; end else if pBloco = 'C' then begin Notas := StrToInt64Def(Edit2.Text,1); with ACBrSpedFiscal1.Bloco_C do begin with RegistroC001New do begin IND_MOV := imComDados; // for Int1 := 1 to Notas do begin with RegistroC100New do begin COD_PART := '000001'; IND_EMIT := edEmissaoPropria; IND_OPER := tpEntradaAquisicao; COD_MOD := '01'; COD_SIT := sdRegular; SER := ''; NUM_DOC := IntToStrZero(Int1,6); CHV_NFE := ''; DT_DOC := Date(); DT_E_S := Date(); VL_DOC := 0; IND_PGTO := tpSemPagamento; VL_DESC := 0; VL_ABAT_NT := 0; VL_MERC := 0; IND_FRT := tfSemCobrancaFrete; VL_SEG := 0; VL_OUT_DA := 0; VL_BC_ICMS := 0; VL_ICMS := 0; VL_BC_ICMS_ST := 0; VL_ICMS_ST := 0; VL_IPI := 0; VL_PIS := 0; VL_COFINS := 0; VL_PIS_ST := 0; VL_COFINS_ST := 0; //c170 for Int2 := 1 to 6 do begin with RegistroC170New do //Inicio Adicionar os Itens: begin NUM_ITEM := IntToStrZero(Int2,3); COD_ITEM := IntToStrZero(Int2,6); DESCR_COMPL := 'Descricao do item '+IntToStrZero(Int2,6); QTD := 1; UNID := 'UN'; VL_ITEM := 10; VL_DESC := 0; IND_MOV := mfNao; CST_ICMS := '000'; CFOP := '5102'; COD_NAT := ''; VL_BC_ICMS := 10; ALIQ_ICMS := 18; VL_ICMS := 1.8; VL_BC_ICMS_ST := 0; ALIQ_ST := 0; VL_ICMS_ST := 0; IND_APUR := iaMensal; CST_IPI := ipiEntradaIsenta; COD_ENQ := ''; VL_BC_IPI := 0; ALIQ_IPI := 0; VL_IPI := 0; CST_PIS := pisOutrasOperacoes; VL_BC_PIS := 0; ALIQ_PIS_PERC := 0; QUANT_BC_PIS := 0; ALIQ_PIS_R := 0; VL_PIS := 0; CST_COFINS := cofinsOutrasOperacoes; VL_BC_COFINS := 0; ALIQ_COFINS_PERC := 0; QUANT_BC_COFINS := 0; ALIQ_COFINS_R := 0; VL_COFINS := 0; COD_CTA := '000'; end; end; //c190 with RegistroC190New do begin CST_ICMS := '000'; CFOP := '5102'; ALIQ_ICMS := 18; VL_OPR := 60; VL_BC_ICMS := 60; VL_ICMS := 10.8; VL_BC_ICMS_ST := 0; VL_ICMS_ST := 0; VL_RED_BC := 0; VL_IPI := 0; COD_OBS := ''; end; aTotalICMS := aTotalICMS + 10.8; end; end; end; end; end else if pBloco = 'D' then begin with ACBrSpedFiscal1.Bloco_D do begin with RegistroD001New do begin IND_MOV := imSemDados; end; end; end else if pBloco = 'E' then begin with ACBrSpedFiscal1.Bloco_E do begin with RegistroE001New do begin IND_MOV := imComDados; with RegistroE100New do begin DT_INI := DateTimePicker1.DateTime; DT_FIN := DateTimePicker2.DateTime; end; with RegistroE110New do begin VL_TOT_DEBITOS := aTotalICMS; VL_AJ_DEBITOS := 0; VL_TOT_AJ_DEBITOS := 0; VL_ESTORNOS_CRED := 0; VL_TOT_CREDITOS := 0; VL_AJ_CREDITOS := 0; VL_TOT_AJ_CREDITOS := 0; VL_ESTORNOS_DEB := 0; VL_SLD_CREDOR_ANT := 0; VL_SLD_APURADO := aTotalICMS; VL_TOT_DED := 0; VL_ICMS_RECOLHER := aTotalICMS; VL_SLD_CREDOR_TRANSPORTAR := 0; DEB_ESP := 0; end; end; end; end else if pBloco = 'H' then begin with ACBrSpedFiscal1.Bloco_H do begin with RegistroH001New do begin IND_MOV := imComDados; // with RegistroH005New do begin DT_INV := Date; VL_INV := 1000; // FILHO for Int1 := 1 to 6 do begin with RegistroH010New do begin COD_ITEM := IntToStrZero(Int1,6); UNID := 'UN'; QTD := 1; VL_UNIT := 100; VL_ITEM := 100; IND_PROP := piInformante; COD_PART := ''; TXT_COMPL := ''; COD_CTA := ''; end; end; end; end; end; end else if pBloco = '1' then begin with ACBrSpedFiscal1.Bloco_1 do begin with Registro1001New do begin IND_MOV := imSemDados; end; end; end else if pBloco = '9' then begin ACBrSPEDFiscal1.WriteBloco_9; end end;

Artigos relacionados