Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.337
  • Registro em

  • Última visita

  • Days Won

    117

Tudo que EMBarbosa postou

  1. Sim eu entendi o erro. Mas não tem como você conseguir passar as datas do registro 0205. Não existe propriedade DT_INI e DT_FIN no 0205. Você está confundindo as propriedades TACBrSPEDPISConfins.DT_INI e TACBrSPEDPISConfins.DT_FIN com TRegistro0205.DT_INI e TRegistro0205.DT_FIM. Veja o tópico que citei acima. Repito, essas duas últimas não estão implementadas. O que provavelmente está acontecendo é que para cada registro 0205 você está alterando as datas do componente e não do Registro0205.
  2. Hmm... então a alteração ao Registro M020 não era necessária... Não sei quanto ao seu validador. Como não tenho usado aqui não posso afirmar... mas o validador do SPED PIS/Confins estava com bug e foi atualizado. Não duvido que possa haver algum erro também... Teste com outros arquivos. Não tem necessidade de me enviar nada por e-mail. Se você achar necessário mais alguma alteração além dessa sugerida, pode usar aqui o fórum mesmo.
  3. Já enviei para o SVN. Favor atualizar seus fontes e testar. Obrigado,
  4. Não entendi como é que ele pega a data do 0205 se no registro 0205 nem te possibilita colocar data... veja: viewtopic.php?f=23&t=3230&p=15042&hilit=0205#p15042
  5. Já corrigi registros semelhantes no SPEDFiscal e Sintegra. Poderia, por favor, alistar quais são os campos e os registros? O código eu mesmo ajeito...
  6. Estou fazendo uma verificação aqui que o M020 também está assim. Não tenho a documentação aqui comigo do FCONT. Pode confirmar que esses registros podem ser gerados mais de um por arquivo? Outra coisa, observando o código do J930, parece que não é só trocar o count... Então a correção que deve ser feita deve ser a seguinte: function TACBrSPEDFCont.WriteRegistroM020: AnsiString; begin Result := Bloco_M.WriteRegistroM020; if Bloco_J.RegistroM020.Count > 0 then begin with Bloco_9.Registro9900.New do begin REG_BLC := 'M020'; QTD_REG_BLC := Bloco_M.RegistroM020.Count; end; end; end; function TACBrSPEDFCont.WriteRegistroM025: AnsiString; begin Result := Bloco_M.WriteRegistroM025; if Bloco_J.RegistroM025.Count > 0 then begin with Bloco_9.Registro9900.New do begin REG_BLC := 'M025'; QTD_REG_BLC := Bloco_M.RegistroM025.Count; end; end; end; [/code] EDIT: Será que pode testar aí e me dar um retorno? Sobre outros erros: 1) Crie tópicos novos sempre que os erros não tiverem relação entre si. 2) Use uma descrição mais detalhada no título possível. Não precisa economizar. Isso torna muito mais fácil pesquisar depois.
  7. E como deveria ser? Não entendi o problema...
  8. Obrigado pelo retorno e pelas contribuições.
  9. Toda vez que encontrar leitura X ou relatório X nos manuais TEF, entenda que é um Relatório Gerencial como o Fernando explicou. Isso confunde todo mundo...
  10. Na verdade não... foi falha minha mesmo... Vou corrigir logo... foi mal aí... EDIT: Mas como eu fiz algumas alterações no código, você pode confirmar se está funcionando ok?
  11. tente aí com esse código um pouquinho alterado do seu... //Quando pressiono para gerar o Txt, dispara esta rotina procedure TfrmGeraSpedPC.brnTxtClick(Sender: TObject); begin ACBrSPEDPisCofins1.LinhasBuffer := StrToIntDef(edBufferLinhas.Text, 0); with ACBrSPEDPisCofins1 do begin DT_INI := dtInicio.Date; DT_FIN := dtTermino.Date; end; // Informa o pata onde será salvo o arquivo TXT. if Trim(LMDBrowseDlg1.SelectedFolder) '' then ACBrSPEDPisCofins1.Path := LMDBrowseDlg1.SelectedFolder //'.\'; else ACBrSPEDPisCofins1.Path := ExtractFilePath(Application.ExeName); //'.\'; ACBrSPEDPisCofins1.Arquivo := edCaminhoArquivo.Text; //LMDBrowseDlg1.SelectedName; //edtFile.Text; // Habilita os checkbox ckBloco0.Checked := true; ckBloco1.Checked := true; ckBlocoA.Checked := true; ckBlocoC.Checked := true; ckBlocoD.Checked := true; ckBlocoF.Checked := true; ckBlocoM.Checked := true; cbConcomitante.Enabled := True; GerarDadosBloco('0'); GerarDadosBloco('1'); GerarDadosBloco('A'); GerarDadosBloco('C'); GerarDadosBloco('D'); GerarDadosBloco('F'); GerarDadosBloco('M'); // Método que gera o arquivo TXT. ACBrSPEDPisCofins1.SaveFileTXT; LoadToMemo; ShowMessage('Arquivo Gerado com sucesso!'); end; procedure TfrmGeraSpedPC.GerarDadosBloco(pBloco: string); const strUNID: array[0..4] of string = ('PC', 'UN', 'LT', 'PC', 'MT'); var int0140, int0150, int0190, int0200: integer; INotas, IItens, NNotas, BNotas: Integer; Notas, vCount: integer; vCD_CONTADOR: string; begin if pBloco = '0' then begin // Alimenta o componente com informações para gerar todos os registros do Bloco 0. // cbConcomitante.Enabled := False; with ACBrSPEDPisCofins1 do begin DT_INI := dtInicio.Date; DT_FIN := dtTermino.Date; edBufferLinhas.Text := '0'; LinhasBuffer := StrToIntDef(edBufferLinhas.Text, 0); IniciaGeracao; end; LoadToMemo; with ACBrSPEDPisCofins1.Bloco_0 do begin // Dados da Empresa with Registro0000New do begin COD_VER := vlVersao101; TIPO_ESCRIT := tpEscrOriginal; IND_SIT_ESP := indSitAbertura; NUM_REC_ANTERIOR := ''; NOME := DM1.tblParametro.FieldByName('PA_NOME').AsString; //'NOME DA EMPRESA'; CNPJ := Trim(tiratudo(DM1.tblParametro.FieldByName('PA_CNPJ').AsString)); //'123456789'; UF := DM1.tblParametro.FieldByName('PA_ESTA').AsString; //'ES'; with qryAux do begin Close; SQL.Clear; SQL.Text := 'SELECT CI_ID FROM CIDADE WHERE CI_NOME=' + QuotedStr(TRIM(DM1.tblParametro.FieldByName('PA_CIDA').AsString)); Open; COD_MUN := FieldByName('CI_ID').AsInteger; //3200607; Close; end; SUFRAMA := ''; IND_NAT_PJ := indNatPJSocEmpresariaGeral; IND_ATIV := indAtivPrestadorServico; end; with Registro0001New do begin IND_MOV := imComDados; // FILHO - Dados do contador. qrySql.Close; qrySql.SQL.Clear; qrySql.SQL.Text := 'SELECT EM_CONTAD FROM EMPRESA WHERE EM_CODI = ' + DM1.tblParametro.FieldByName('PA_EMPP').AsString; qrySql.Open; vCD_CONTADOR := qrySql.FieldByName('EM_CONTAD').AsString; qrySql.Close; qrySql.SQL.Clear; qrySql.SQL.Text := 'SELECT * FROM CONTADOR WHERE CT_CODI = ' + vCD_CONTADOR; qrySql.Open; if not qrySql.IsEmpty then begin with Registro0100New do begin NOME := qrySql.FieldByName('CT_NOME').AsString; //'NOME DO CONTADOR'; if qrySql.FieldByName('CT_PESSOA').AsString = 'F' then begin CPF := Trim(tiratudo(qrySql.FieldByName('CT_CPF').AsString)); //'12345678900'; // Deve ser uma informação valida CNPJ := ''; end else begin CPF := ''; //'12345678900'; // Deve ser uma informação valida CNPJ := Trim(tiratudo(qrySql.FieldByName('CT_CPF').AsString)); //''; end; CRC := qrySql.FieldByName('CT_CRC').AsString; //'123456'; CEP := tiratudo(qrySql.FieldByName('CT_CEP').AsString); //''; ENDERECO := qrySql.FieldByName('CT_END').AsString; //''; NUM := qrySql.FieldByName('CT_NUM').AsString; //''; COMPL := ''; //qrySql.FieldByName('CT_COMP').AsString; //''; BAIRRO := qrySql.FieldByName('CT_BAIRRO').AsString; //''; FONE := limpatel(qrySql.FieldByName('CT_FONE').AsString); //''; FAX := limpatel(qrySql.FieldByName('CT_FAXE').AsString); //''; EMAIL := qrySql.FieldByName('CT_EMAIL').AsString; //''; COD_MUN := StrToInt(qrySql.FieldByName('CT_CIDADE').AsString); //3200607; end; qrySql.Close; end else begin Application.MessageBox('Cadastro do contador não encontrado! Verifique.', 'Aviso', MB_ICONERROR + MB_OK); Abort; end; // FILHO - Regime de Apuração with Registro0110New do begin COD_INC_TRIB := codEscrOpIncNaoCumulativo; IND_APRO_CRED := indMetodoApropriacaoDireta; COD_TIPO_CONT := codIndTipoConExclAliqBasica; end; StatusBar1.SimpleText := 'Gerando clientes/fornecedores. Bloco 0.'; // FILHO with Registro0140New do begin qryEmpresa.Close; qryEmpresa.SQL.Clear; qryEmpresa.SQL.Text := 'SELECT * FROM EMPRESA WHERE EM_CODI = ' + DM1.tblParametro.FieldByName('PA_EMPP').AsString; qryEmpresa.Open; COD_EST := IntToStr(int0140); NOME := qryEmpresa.FieldByName('EM_FANT').AsString; //'NOME DO ESTABELECIMENTO'; CNPJ := qryEmpresa.FieldByName('EM_CNPJ').AsString; //'123456789'; UF := qryEmpresa.FieldByName('EM_ESTA').AsString; //''; IE := qryEmpresa.FieldByName('EM_INSC').AsString; //''; with qryAux do begin Close; SQL.Clear; SQL.Text := 'SELECT CI_ID FROM CIDADE WHERE CI_NOME=' + QuotedStr(TRIM(qryEmpresa.FieldByName('EM_CIDA').AsString)); Open; COD_MUN := FieldByName('CI_ID').AsString; //3200607; Close; end; IM := ''; SUFRAMA := ''; qryEmpresa.Close; // Clientes E fornecedores with qryCliFor do begin close; sql.Clear; sql.Text := 'SELECT DISTINCT NFS.NS_CLIFOR CODIGO, ''C'' TIPO FROM NFSAIDA NFS WHERE NS_SERIE ' + QuotedStr('D-1') + ' AND NFS.NS_DATA BETWEEN ' + QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' AND ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59') + ' AND NFS.NS_CUPOM IS NOT NULL AND NFS.NS_VEND IS NOT NULL' + ' union distinct' + ' SELECT DISTINCT NFE.NFE_CODCLIENTE CODIGO, ''C'' TIPO FROM NFELETRONICA NFE WHERE nfe.NFE_DATAEMISSAO BETWEEN ' + QuotedStr(DATAIB(dtInicio.date)) + ' AND ' + QuotedStr(DATAIB(dtTermino.date)) + ' union distinct' + ' SELECT DISTINCT NFE.NF_FORN CODIGO, ''F'' TIPO FROM NFENTRADA NFE WHERE NFE.NF_DATA BETWEEN ' + //' SELECT DISTINCT NFE.NF_FORN CODIGO, ''F'' TIPO FROM NFENTRADA NFE WHERE NFE.NF_DTLC BETWEEN ' + //UTILIZA DATA DE LANÇAMENTO QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' AND ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59'); open; end; pgbar.Min := 0; pgbar.max := qryCliFor.RecordCount; pgbar.Position := 0; while not qryCliFor.Eof do begin with qrySql do begin Close; SQL.Clear; sql.text := ' SELECT PE_CODI, PE_NOME, PE_ENDE, PE_BAIR, PE_CIDA, ' + ' PE_ESTA, PE_FONE, PE_CNPJ, PE_RGIN, PE_CEPC, PE_NUM, ' + ' PE_COMPLEMENTO, PE_SUFRAMA, PE_PAIS, PE_TIPODOC ' + ' FROM PESSOA' + ' WHERE ((PE_ORIGEM = ''' + qryCliFor.fieldbyname('TIPO').AsString + ''')' + ' AND (PE_CLFOR=' + qryCliFor.fieldbyname('CODIGO').AsString + '))' + ' AND PE_CLFOR 0 AND PE_CLFOR 1 '; Open; if not IsEmpty then begin First; while not Eof do begin with Registro0150New do begin COD_PART := FieldByName('PE_CODI').AsString; //'000001'; NOME := Trim(FieldByName('PE_NOME').AsString); //'RAZAO SOCIAL DO CLIENTE'; COD_PAIS := BuscaIBGEPaisPessoa(FieldByName('PE_PAIS').AsString); //'001'; if FieldByName('PE_TIPODOC').AsString = 'F' then begin CNPJ := ''; CPF := Trim(tiratudo(FieldByName('PE_CNPJ').AsString)); //''; IE := ''; //limpaRG(FieldByName('PE_RGIN').AsString); //''; end else begin CNPJ := Trim(tiratudo(FieldByName('PE_CNPJ').AsString)); //'12345678000123'; CPF := ''; IE := limpaRG(FieldByName('PE_RGIN').AsString); //''; end; with qryAux do begin Close; SQL.Clear; SQL.Text := 'SELECT CI_ID FROM CIDADE WHERE CI_NOME = ' + QuotedStr(qrySql.FieldByName('PE_CIDA').AsString); Open; if not isEmpty then COD_MUN := qryAux.FieldByName('CI_ID').AsString else COD_MUN := '4115200'; Close; end; SUFRAMA := FieldByName('PE_SUFRAMA').AsString; //''; ENDERECO := Trim(FieldByName('PE_ENDE').AsString); //'ENDERECO'; NUM := Trim(FieldByName('PE_NUM').AsString); //''; COMPL := ''; //FieldByName('PE_COMPLEMENTO').AsString; //'COMPL'; BAIRRO := Trim(FieldByName('PE_BAIR').AsString); //'BAIRRO'; end; Next; end; Close; end; end; qryCliFor.Next; pgbar.Position := pgbar.Position + 1; end; end; // FILHO with Registro0190New do begin UNID := 'UN'; //strUNID[int0190]; DESCR := 'Descricao unidade'; //'Descricao ' + strUNID[int0190]; end; // FILHO StatusBar1.SimpleText := 'Gerando Registro 200. Bloco 0.'; with qrySQL do begin Close; SQL.Clear; sql.Text := ' select distinct prod_nfeletronica.prod_codigo, prod_nfeletronica.prod_nome, prod_nfeletronica.prod_codbarras,' + ' prod_nfeletronica.prod_uncomercial, prod_nfeletronica.prod_ncm' + ' from nfeletronica inner join prod_nfeletronica on (nfeletronica.nfe_id = prod_nfeletronica.prod_nfe_id)' + ' where 1=-1 and ((nfeletronica.nfe_dataemissao between ' + QuotedStr(DATAIB(dtInicio.date)) + ' and ' + QuotedStr(DATAIB(dtTermino.date)) + ') and (nfeletronica.nfe_statusnota ''EM DIGITAÇÃO''))' + ' UNION distinct' + ' select DISTINCT prod_nf_s.ps_prod, prod_nf_s.ps_nome, prod_nf_s.ps_barr, prod_nf_s.ps_unid, ceitensm.it_ncm from nfsaida' + ' inner join prod_nf_s on (nfsaida.ns_empr = prod_nf_s.ps_empr)' + ' and (nfsaida.ns_vend = prod_nf_s.ps_vend) and (nfsaida.ns_cupom = prod_nf_s.ps_cupo)' + ' and (nfsaida.ns_codi = prod_nf_s.ps_codi) ' + ' inner join ceitensm on (prod_nf_s.ps_barr = ceitensm.it_barr)' + ' where ((nfsaida.ns_data between ' + QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' and ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59') + ')' + ' and ((nfsaida.ns_nota > 0) or (nfsaida.ns_nota is null ))) and ns_vend is not null and ns_cupom is not null ' + ' UNION distinct' + ' select distinct prod_nf_e.it_codi, prod_nf_e.nf_desc, prod_nf_e.it_barr, prod_nf_e.nf_unid, ceitensm.it_ncm from ceitensm' + ' inner join prod_nf_e on (ceitensm.it_barr = prod_nf_e.it_barr)' + ' inner join nfentrada on (prod_nf_e.nf_id = nfentrada.nf_id)' + ' where ((nfentrada.nf_DTLC between ' + QuotedStr(DATAIB(dtInicio.date) + ' 23:59:59') + ' and ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59') + '))'; Open; if not IsEmpty then begin First; while not eof do begin with Registro0200New do begin COD_ITEM := IntToStrZero(FieldByName('PROD_CODIGO').AsInteger, 6); DESCR_ITEM := FieldByName('PROD_NOME').AsString; //'DESCRIÇÃO DO ITEM ' + IntToStrZero(Int1, 6); COD_BARRA := FieldByName('PROD_CODBARRAS').AsString; //IntToStrZero(Int1, 13); COD_ANT_ITEM := ''; UNID_INV := FieldByName('PROD_UNCOMERCIAL').AsString; //'UN'; TIPO_ITEM := tiMercadoriaRevenda; COD_NCM := FieldByName('PROD_NCM').AsString; //''; EX_IPI := ''; COD_GEN := ''; COD_LST := ''; ALIQ_ICMS := 18; end; Next; end; end; end; end; end; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_0; LoadToMemo; end; end else if pbloco = 'A' then begin NNotas := 0;//StrToInt64Def(edNumNota.Text, 1); BNotas := 0;//StrToInt64Def(edBufferNotas.Text, 1); pgbar.Visible := cbConcomitante.Checked; pgbar.Max := 100;//NNotas; pgbar.Position := 0; with ACBrSPEDPisCofins1.Bloco_A do begin with RegistroA001New do begin IND_MOV := imComDados; // StatusBar1.SimpleText := 'Gerando Notas. Bloco A.'; with qryNota do // nota eletronica begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM NFELETRONICA WHERE NFE_DATAEMISSAO BETWEEN ' + QuotedStr(DATAIB(dtInicio.date)) + ' AND ' + QuotedStr(DATAIB(dtTermino.date)); Open; if not IsEmpty then begin Notas := qryNota.RecordCount; pgbar.Max := qryNota.RecordCount; end else begin Application.MessageBox('Não há NF Eletrônicas no período solicitado. Verifique e tente novamente!', 'Aviso', MB_OK); Abort; end; end; with qryNFS do //nota fiscal saida begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM NFSAIDA WHERE NS_VEND IS NOT NULL AND NS_CUPOM IS NOT NULL AND NS_MODELO =''' + '01' + ''' AND NS_CLIFOR 0 AND NS_CLIFOR 1 AND NS_DATA BETWEEN ' + QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' AND ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59') + ' ORDER BY NS_NOTA'; Open; end; with qryNFEnt do //nota fiscal de entrada begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM NFENTRADA WHERE NF_DATA BETWEEN ' + QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' AND ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59'); Open; end; with qryNFSC350 do // nota fiscal de saida serie D-1 begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM NFSAIDA WHERE NS_SERIE = ' + QuotedStr('D-1') + ' AND NS_CLIFOR 0 AND NS_CLIFOR 1 AND NS_DATA BETWEEN ' + QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' AND ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59'); Open; end; StatusBar1.SimpleText := 'Gerando NFe. Bloco A.'; qryNota.First; while not qryNota.Eof do begin with RegistroA010New do begin CNPJ := Trim(tiratudo(DM1.tblParametro.FieldByName('PA_CNPJ').AsString)); //'123456789'; if ((qryNota.FieldByName('NFE_STATUSNOTA').AsString = 'INUTILIZADA') or (qryNota.FieldByName('NFE_STATUSNOTA').AsString = 'CANCELADA')) then begin qryNota.Next; pgbar.StepIt; end else begin with RegistroA100New do begin IND_OPER := itoContratado; IND_EMIT := iedfProprio; COD_PART := BuscaCodPessoa(qryNota.FieldByName('NFE_CODCLIENTE').AsString, 'C'); //'001'; COD_SIT := sdfRegular; SER := qryNota.FieldByName('NFE_SERIE').AsString; //''; SUB := ''; NUM_DOC := qryNota.FieldByName('NFE_NUMERO').AsString; //FormatFloat('NF000000', INotas); CHV_NFSE := qryNota.FieldByName('NFE_CHAVEACESSO').AsString; //''; DT_DOC := qryNota.FieldByName('NFE_DATAEMISSAO').AsDateTime; //Date(); DT_EXE_SERV := qryNota.FieldByName('NFE_DATAEMISSAO').AsDateTime; //Date(); VL_DOC := qryNota.FieldByName('NFE_TOTALNOTA').AsCurrency; //0; if qryNota.FieldByName('NFE_TIPODOCUMENTO').AsString = '0' then IND_PGTO := tpVista else IND_PGTO := tpPrazo; VL_DESC := qryNota.FieldByName('NFE_TOTALDESCONTO').AsCurrency; VL_BC_PIS := 0; VL_PIS := qryNota.FieldByName('NFE_TOTALPIS').AsCurrency; //0; VL_BC_COFINS := 0; VL_COFINS := qryNota.FieldByName('NFE_TOTALCOFINS').AsCurrency; //0; VL_PIS_RET := 0; VL_COFINS_RET := 0; VL_ISS := 0; //A170 if (qryNota.FieldByName('NFE_STATUSNOTA').AsString = 'ENVIADA') then begin with qryProdNFE do begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM PROD_NFELETRONICA ' + ' WHERE PROD_NFE_ID = (SELECT NFE_ID FROM NFELETRONICA ' + ' WHERE NFE_NUMERO = ' + qryNota.FieldByName('NFE_NUMERO').AsString + ')'; Open; end; qryProdNFE.First; //vCount := 0; while not qryProdNFE.Eof do begin with RegistroA170New do begin //inc(vCount); NUM_ITEM := qryProdNFE.FieldByName('PROD_SEQ').AsInteger; //vCount; COD_ITEM := qryProdNFE.FieldByName('PROD_CODIGO').AsString; //'000'; DESCR_COMPL := qryProdNFE.FieldByName('PROD_NOME').AsString; // VL_ITEM := qryProdNFE.FieldByName('PROD_VALORUNITCOMERCIAL').AsCurrency; //0; VL_DESC := qryProdNFE.FieldByName('PROD_DESCONTO').AsCurrency; //0; NAT_BC_CRED := bccAqBensRevenda; IND_ORIG_CRED := opcMercadoInterno; CST_PIS := stpisOutrasOperacoesSaida; VL_BC_PIS := qryProdNFE.FieldByName('PROD_BASEPIS').AsCurrency; //0; ALIQ_PIS := qryProdNFE.FieldByName('PROD_ALIQPERCPIS').AsCurrency; //0; VL_PIS := qryProdNFE.FieldByName('PROD_VALORPIS').AsCurrency; //0; CST_COFINS := stcofinsOutrasOperacoesSaida; VL_BC_COFINS := qryProdNFE.FieldByName('PROD_BASECOFINS').AsCurrency; //0; ALIQ_COFINS := qryProdNFE.FieldByName('PROD_ALIQPERCCOFINS').AsCurrency; //0; VL_COFINS := qryProdNFE.FieldByName('PROD_VALORCOFINS').AsCurrency; //0; COD_CTA := '000'; COD_CCUS := '123'; end; qryProdNFE.Next; end; end; if cbConcomitante.Checked then begin // Grava registros na memoria para o TXT, e limpa memoria ACBrSPEDPisCofins1.WriteBloco_A(False); // False, NAO fecha o Bloco //pgbar.Position := INotas; Application.ProcessMessages; end; end; qryNota.Next; pgbar.StepIt; end; end; end; StatusBar1.SimpleText := 'Gerando NF Saída. Bloco A.'; qryNFS.First; pgbar.Max := qryNFS.RecordCount; while not qryNFS.Eof do begin with RegistroA010New do begin CNPJ := Trim(tiratudo(DM1.tblParametro.FieldByName('PA_CNPJ').AsString)); //'123456789'; with RegistroA100New do begin IND_OPER := itoContratado; IND_EMIT := iedfProprio; COD_PART := BuscaCodPessoa(qryNFS.FieldByName('NS_CLIFOR').AsString, 'C'); //'001'; COD_SIT := sdfRegular; SER := qryNFS.fieldbyname('ns_serie').asstring; //''; SUB := qryNFS.fieldbyname('ns_subserie').asstring; //''; NUM_DOC := qryNFS.FieldByName('NS_NOTA').AsString; //FormatFloat('NF000000', INotas); CHV_NFSE := ''; DT_DOC := qryNFS.FieldByName('NS_DATA').AsDateTime; //Date(); DT_EXE_SERV := qryNFS.FieldByName('NS_DATA').AsDateTime; //Date(); VL_DOC := qryNFS.FieldByName('NS_TOTAL').AsCurrency; //0; if qryNFS.FieldByName('NS_PRAZO').AsString = 'N' then IND_PGTO := tpVista else IND_PGTO := tpPrazo; VL_DESC := qryNFS.FieldByName('NS_DESCONT').AsCurrency; VL_BC_PIS := 0; VL_PIS := 0; VL_BC_COFINS := 0; VL_COFINS := 0; VL_PIS_RET := 0; VL_COFINS_RET := 0; VL_ISS := 0; //A170 with qryPRODNFS do begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM PROD_NF_S ' + ' WHERE PS_EMPR = :PS_EMPR ' + ' AND PS_VEND = :PS_VEND ' + ' AND PS_CUPO = :PS_CUPO ' + ' AND PS_CODI = :PS_CODI '; ParamByName('PS_EMPR').AsString := qryNFS.FieldByName('NS_EMPR').AsString; ParamByName('PS_VEND').AsString := qryNFS.FieldByName('NS_VEND').AsString; ParamByName('PS_CUPO').AsString := qryNFS.FieldByName('NS_CUPOM').AsString; ParamByName('PS_CODI').AsString := qryNFS.FieldByName('NS_CODI').AsString; try Open; except showmessage('Erro na Nota número ' + qryNFS.FieldByName('NS_EMPR').AsString + ': o número do cupom ou vendedor não está preenchido!') end; if IsEmpty then begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM PROD_NF_S ' + ' WHERE PS_CODI = :PS_CODI '; ParamByName('PS_CODI').AsString := qryNFS.FieldByName('NS_CODI').AsString; Open; end; end; qryPRODNFS.First; while not qryPRODNFS.Eof do begin with RegistroA170New do begin NUM_ITEM := qryPRODNFS.FieldByName('PS_SEQUE').AsInteger; COD_ITEM := IntToStrZero(qryPRODNFS.FieldByName('PS_PROD').AsInteger, 6); DESCR_COMPL := qryPRODNFS.FieldByName('PS_NOME').AsString; //'Descricao do item '+IntToStrZero(Int2,6); VL_ITEM := qryPRODNFS.FieldByName('PS_VLtota').AsFloat; //10; VL_DESC := qryPRODNFS.FieldByName('PS_VLDESC').AsFloat; //0; NAT_BC_CRED := bccAqBensRevenda; IND_ORIG_CRED := opcMercadoInterno; CST_PIS := stpisOutrasOperacoesSaida; VL_BC_PIS := 0; ALIQ_PIS := 0; VL_PIS := 0; CST_COFINS := stcofinsOutrasOperacoesSaida; VL_BC_COFINS := 0; ALIQ_COFINS := 0; VL_COFINS := 0; COD_CTA := '000'; COD_CCUS := '123'; end; qryPRODNFS.Next; end; if cbConcomitante.Checked then begin // Grava registros na memoria para o TXT, e limpa memoria ACBrSPEDPisCofins1.WriteBloco_A(False); // False, NAO fecha o Bloco //pgbar.Position := INotas; Application.ProcessMessages; end; qryNFS.Next; pgbar.StepIt; end; end; end; StatusBar1.SimpleText := 'Gerando NF Saída C350. Bloco A.'; qryNFSC350.First; pgbar.Max := qryNFSC350.RecordCount; while not qryNFSC350.Eof do begin with RegistroA010New do begin CNPJ := Trim(tiratudo(DM1.tblParametro.FieldByName('PA_CNPJ').AsString)); //'123456789'; with RegistroA100New do begin IND_OPER := itoContratado; IND_EMIT := iedfProprio; COD_PART := BuscaCodPessoa(qryNFSC350.FieldByName('NS_CLIFOR').AsString, 'C'); //'001'; COD_SIT := sdfRegular; SER := qryNFSC350.fieldbyname('ns_serie').asstring; //''; SUB := qryNFSC350.fieldbyname('ns_subserie').asstring; //''; NUM_DOC := qryNFSC350.FieldByName('NS_NUMNOTA').AsString; CHV_NFSE := ''; DT_DOC := qryNFSC350.FieldByName('NS_DATA').AsDateTime; //Date(); DT_EXE_SERV := qryNFSC350.FieldByName('NS_DATA').AsDateTime; //Date(); VL_DOC := qryNFSC350.FieldByName('NS_TOTAL').AsCurrency; //0; if qryNFSC350.FieldByName('NS_PRAZO').AsString = 'N' then IND_PGTO := tpVista else IND_PGTO := tpPrazo; VL_DESC := qryNFSC350.FieldByName('NS_DESCONT').AsCurrency; VL_BC_PIS := 0; VL_PIS := 0; VL_BC_COFINS := 0; VL_COFINS := 0; VL_PIS_RET := 0; VL_COFINS_RET := 0; VL_ISS := 0; //A170 with qryProdNFSC350 do begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM PROD_NF_S ' + ' WHERE PS_EMPR = :PS_EMPR ' + ' AND PS_VEND = :PS_VEND ' + ' AND PS_CUPO = :PS_CUPO ' + ' AND PS_CODI = :PS_CODI '; ParamByName('PS_EMPR').AsString := qryNFSC350.FieldByName('NS_EMPR').AsString; ParamByName('PS_VEND').AsString := qryNFSC350.FieldByName('NS_VEND').AsString; ParamByName('PS_CUPO').AsString := qryNFSC350.FieldByName('NS_CUPOM').AsString; ParamByName('PS_CODI').AsString := qryNFSC350.FieldByName('NS_CODI').AsString; Open; end; qryProdNFSC350.First; while not qryProdNFSC350.Eof do begin with RegistroA170New do begin NUM_ITEM := qryProdNFSC350.FieldByName('PS_SEQUE').AsInteger; COD_ITEM := IntToStrZero(qryProdNFSC350.FieldByName('PS_PROD').AsInteger, 6); DESCR_COMPL := qryProdNFSC350.FieldByName('PS_NOME').AsString; //'Descricao do item '+IntToStrZero(Int2,6); VL_ITEM := qryProdNFSC350.FieldByName('PS_VLtota').AsFloat; //10; VL_DESC := qryProdNFSC350.FieldByName('PS_VLDESC').AsFloat; //0; NAT_BC_CRED := bccAqBensRevenda; IND_ORIG_CRED := opcMercadoInterno; CST_PIS := stpisOutrasOperacoesSaida; VL_BC_PIS := 0; ALIQ_PIS := 0; VL_PIS := 0; CST_COFINS := stcofinsOutrasOperacoesSaida; VL_BC_COFINS := 0; ALIQ_COFINS := 0; VL_COFINS := 0; COD_CTA := '000'; COD_CCUS := '123'; end; qryProdNFSC350.Next; end; qryNFSC350.Next; pgbar.StepIt; end; end; end; end; end; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_A(True); // True, fecha o Bloco memoTXT.Clear; LoadToMemo; end; //pgbar.Visible := False; end else if pbloco = 'C' then begin NNotas := 0;//StrToInt64Def(edNumNota.Text, 1); BNotas := 0;//StrToInt64Def(edBufferNotas.Text, 1); pgbar.Visible := cbConcomitante.Checked; pgbar.Max := 100;//NNotas; pgbar.Position := 0; with ACBrSPEDPisCofins1.Bloco_C do begin with RegistroC001New do begin IND_MOV := imComDados; // StatusBar1.SimpleText := 'Gerando Notas. Bloco C.'; with RegistroC010New do begin CNPJ := Trim(tiratudo(DM1.tblParametro.FieldByName('PA_CNPJ').AsString)); //'123456789'; IND_ESCRI := IndEscriConsolidado; with qryNFEnt do //nota fiscal de entrada begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM NFENTRADA WHERE NF_DATA BETWEEN ' + QuotedStr(DATAIB(dtInicio.date) + ' 00:00:00') + ' AND ' + QuotedStr(DATAIB(dtTermino.date) + ' 23:59:59'); Open; end; StatusBar1.SimpleText := 'Gerando NF Entrada. Bloco C.'; qryNFEnt.First; pgbar.Max := qryNFEnt.RecordCount; while not qryNFEnt.Eof do begin with RegistroC100New do begin IND_OPER := tpEntradaAquisicao; IND_EMIT := edEmissaoPropria; COD_PART := BuscaCodPessoa(qryNFEnt.FieldByName('NF_FORN').AsString, 'F'); COD_SIT := sdRegular; SER := '1'; NUM_DOC := qryNFEnt.FieldByName('NF_DOCU').AsString; DT_DOC := qryNFEnt.FieldByName('NF_DATA').AsDateTime; DT_E_S := qryNFEnt.FieldByName('NF_DATA').AsDateTime; VL_DOC := qryNFEnt.FieldByName('NF_TOTA').AsCurrency; IND_FRT := tfSemCobrancaFrete; with qryAux do begin SQL.Clear; SQL.Text := 'SELECT * FROM PRAZOS_NFE WHERE PR_DOCU = ''' + qryNFEnt.FieldByName('NF_DOCU').AsString + ''' AND PR_FORN = ' + qryNFEnt.FieldByName('NF_FORN').AsString; Open; if not IsEmpty then IND_PGTO := tpPrazo else IND_PGTO := tpVista; end; VL_DESC := qryNFEnt.FieldByName('NF_DESCONTO').AsCurrency; VL_PIS := 0; VL_COFINS := 0; //A170 with qryPRODNFEnt do begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM PROD_NF_E WHERE NF_ID = :NF_ID ORDER BY NF_ID, NFE_ID'; ParamByName('NF_ID').AsString := qryNFEnt.FieldByName('NF_ID').AsString; Open; end; qryPRODNFEnt.First; vCount := 0; while not qryPRODNFEnt.Eof do begin with RegistroC170New do begin Inc(vCount); NUM_ITEM := IntToStrZero(vCount, 3); COD_ITEM := IntToStrZero(qryPRODNFEnt.FieldByName('IT_CODI').AsInteger, 6); DESCR_COMPL := qryPRODNFEnt.FieldByName('NF_DESC').AsString; //'Descricao do item '+IntToStrZero(Int2,6); VL_ITEM := qryPRODNFEnt.FieldByName('NF_VLUNIT').AsFloat; //10; VL_DESC := qryPRODNFEnt.FieldByName('NF_DESCONTO').AsFloat; //0; QTD := qryPRODNFEnt.FieldByName('NF_QTDE').AsFloat; //1; UNID := qryPRODNFEnt.FieldByName('NF_UNID').AsString; //'UN'; IND_MOV := mfNao; CST_ICMS := sticmsTributadaIntegralmente; CFOP := qryPRODNFEnt.FieldByName('NF_cfop').AsString; //qryNFEnt.FieldByName('NF_CFOP').AsString; COD_NAT := ''; VL_BC_ICMS := qryPRODNFEnt.FieldByName('NF_BASEICMS').AsCurrency; //10; ALIQ_ICMS := qryPRODNFEnt.FieldByName('NF_ALQICMS').AsCurrency; //18; VL_ICMS := qryPRODNFEnt.FieldByName('NF_VLRICMS').AsCurrency; //1.8; VL_BC_ICMS_ST := 0; ALIQ_ST := 0; VL_ICMS_ST := 0; IND_APUR := iaMensal; CST_IPI := stipiEntradaIsenta; COD_ENQ := ''; VL_BC_IPI := 0; ALIQ_IPI := 0; VL_IPI := qryPRODNFEnt.FieldByName('NF_VL_IPI').AsCurrency; //0; CST_PIS := stpisOutrasOperacoesEntrada; VL_BC_PIS := 0; ALIQ_PIS_PERC := 0; QUANT_BC_PIS := 0; ALIQ_PIS_R := 0; VL_PIS := 0; CST_COFINS := stcofinsOutrasOperacoesEntrada; VL_BC_COFINS := 0; ALIQ_COFINS_PERC := 0; QUANT_BC_COFINS := 0; ALIQ_COFINS_R := 0; VL_COFINS := 0; COD_CTA := '000'; end; with RegistroC190New do begin COD_MOD := ''; DT_REF_INI := Date; DT_REF_FIN := Date; COD_ITEM := ''; COD_NCM := ''; EX_IPI := ''; VL_TOT_ITEM := 0; end; //Fim dos Itens; qryPRODNFEnt.Next; end; qryNFEnt.Next; pgbar.StepIt; Application.ProcessMessages; end; end; end; end; end; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_C(True); // True, fecha o Bloco memoTXT.Clear; LoadToMemo; end; pgbar.Visible := False; end else if pbloco = 'D' then begin // Alimenta o componente com informações para gerar todos os registros do Bloco D. // with ACBrSPEDPisCofins1.Bloco_D do // begin // with RegistroD001New do // begin // IND_MOV := 1; // end; // end; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_D; LoadToMemo; end; end else if pbloco = 'F' then begin // Alimenta o componente com informações para gerar todos os registros do Bloco F. with ACBrSPEDPisCofins1.Bloco_F do begin with RegistroF001New do begin IND_MOV := imComDados; with RegistroF010New do begin CNPJ := '123456789'; with RegistroF100New do begin IND_OPER := indRepCustosDespesasEncargos; COD_PART := '001'; COD_ITEM := '000'; //Codigo do Item no registro 0200 DT_OPER := Date(); VL_OPER := 0; CST_PIS := stpisOutrasOperacoesSaida; VL_BC_PIS := 0; ALIQ_PIS := 0; VL_PIS := 0; CST_COFINS := stcofinsOutrasOperacoesSaida; VL_BC_COFINS := 0; ALIQ_COFINS := 0; VL_COFINS := 0; NAT_BC_CRED := bccAqBensRevenda; IND_ORIG_CRED := opcMercadoInterno; COD_CTA := ''; COD_CCUS := '123'; DESC_DOC_OPER := ''; end; end; end; end; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_F; memoTXT.Clear; LoadToMemo; end; end else if pbloco = 'M' then begin // Alimenta o componente com informações para gerar todos os registros do Bloco M. with ACBrSPEDPisCofins1.Bloco_M do begin with RegistroM001New do begin IND_MOV := imComDados; with RegistroM100New do begin COD_CRED := ''; IND_CRED_ORI := TACBrIndCredOri(0); VL_BC_PIS := 0; ALIQ_PIS := 0; QUANT_BC_PIS := 0; ALIQ_PIS_QUANT := 0; VL_CRED := 0; VL_AJUS_ACRES := 0; VL_AJUS_REDUC := 0; VL_CRED_DIF := 0; VL_CRED_DISP := 0; IND_DESC_CRED := TACBrIndDescCred(0); VL_CRED_DESC := 0; SLD_CRED := 0; end; end; end; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_M; memoTXT.Clear; LoadToMemo; end; end else if pbloco = '1' then begin // Alimenta o componente com informações para gerar todos os registros do Bloco 1. // with ACBrSPEDPisCofins1.Bloco_1 do // begin // with Registro1001New do // begin // IND_MOV := 1; // end; // end; btnB_1.Enabled := false; if cbConcomitante.Checked then begin ACBrSPEDPisCofins1.WriteBloco_1; LoadToMemo; end; end else if pbloco = '9' then begin ACBrSPEDPisCofins1.WriteBloco_9; memoTXT.Clear; LoadToMemo; end; end; [/code]
  12. Muito estranho... Acho que você pode ver que o DEMO funciona.... A única coisa que percebi a princípio foi que você estava chamando o método SAVEFileTXT antes de preencher os dados no componente, e isso precisa ser feito depois... Vou dar uma olhada com mais cuidado..
  13. Se a impressora for bematech, ACHO que nesse caso tem que usar o índice da alíquota. Se for isso mesmo e não minha memória falhando tem uma explicação sobre isso nas funções ou manuais do ECF.
  14. ok. Obrigado pelo retorno.
  15. Até onde sei não... deve ter algum erro na lógica aí. Faz um debug e veja se ele executa todos os métodos.
  16. EDIT: tente passar o comando SAVEFileTXT para o final, igual é feito no demo: //Quando pressiono para gerar o Txt, dispara esta rotina procedure TfrmGeraSpedPC.brnTxtClick(Sender: TObject); begin ACBrSPEDPisCofins1.LinhasBuffer := StrToIntDef(edBufferLinhas.Text, 0); with ACBrSPEDPisCofins1 do begin DT_INI := dtInicio.Date; DT_FIN := dtTermino.Date; end; // Informa o pata onde será salvo o arquivo TXT. if Trim(LMDBrowseDlg1.SelectedFolder) '' then ACBrSPEDPisCofins1.Path := LMDBrowseDlg1.SelectedFolder //'.\'; else ACBrSPEDPisCofins1.Path := ExtractFilePath(Application.ExeName); //'.\'; ACBrSPEDPisCofins1.Arquivo := edCaminhoArquivo.Text; //LMDBrowseDlg1.SelectedName; //edtFile.Text; // Habilita os checkbox ckBloco0.Checked := true; ckBloco1.Checked := true; ckBlocoA.Checked := true; ckBlocoC.Checked := true; ckBlocoD.Checked := true; ckBlocoF.Checked := true; ckBlocoM.Checked := true; GerarDadosBloco('0'); GerarDadosBloco('1'); GerarDadosBloco('A'); GerarDadosBloco('C'); GerarDadosBloco('D'); GerarDadosBloco('F'); GerarDadosBloco('M'); cbConcomitante.Enabled := True; // Método que gera o arquivo TXT. ACBrSPEDPisCofins1.SaveFileTXT; ShowMessage('Arquivo Gerado com sucesso!'); end;[/code]
  17. EMBarbosa

    Registro tipo D3

    Por favor, poste como está sendo gerado, e como deveria gerar. Se possível, código para reproduzir no demo, ou melhor ainda como corrigir.
  18. Se você tentou fazer o download do PVA (programa validador de arquivos SPED) EFD-PIS/Cofins nesses últimos dias, deve ter notado que ele estava indisponível para Download. Havia erros no executável detectados pela Receita. Agora o novo validador EFD-PIS/Cofins já foi disponibilizado: http://www.receita.fazenda.gov.br/Sped/Download/SpedPisCofinsPVA/SpedFiscalPisCofinsMultiplataforma.htm
  19. A única diferença que percebi é que o demo não tem esse botão vários blocos. Ainda assim quem sabe mais pra frente a gente não tenha exemplos mais elaborados.
  20. Olá Adilson, Eu acho que a versão atual do exemplo que está no SVN está mais atualizado que esse daí, não?
  21. Subi pro SVN com algumas alterações. Favor conferir e postar mais informações...
  22. Fiz atualizações essa semana. Você pode atualizar o seus componentes e verificar. Se não estiver corrigido, anexe aqui os códigos que você alterou para que possa ser analisado e subido para o SVN.
  23. Eu prefiro que fique no fórum para futuras consultas. Outra vantagem é que mesmo que eu não possa subir por algum motivo, outro desenvolvedor como o próprio Isaque, pode fazê-lo. Muito obrigado pela disposição.
  24. Qual requisito você está querendo cumprir?
  25. Anexe os arquivos que você alterou aqui no fórum mesmo. Faça Update dos seus arquivos ANTES de postar, por favor.
×
×
  • 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.