Ir para conteúdo
  • Cadastre-se

EMBarbosa

Consultores
  • Total de ítens

    9.411
  • Registro em

  • Última visita

  • Days Won

    117

Tudo que EMBarbosa postou

  1. 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]
  2. 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..
  3. 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.
  4. ok. Obrigado pelo retorno.
  5. 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.
  6. 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]
  7. 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.
  8. 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
  9. 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.
  10. Olá Adilson, Eu acho que a versão atual do exemplo que está no SVN está mais atualizado que esse daí, não?
  11. Subi pro SVN com algumas alterações. Favor conferir e postar mais informações...
  12. 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.
  13. 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.
  14. Qual requisito você está querendo cumprir?
  15. Anexe os arquivos que você alterou aqui no fórum mesmo. Faça Update dos seus arquivos ANTES de postar, por favor.
  16. O projeto ACBr tem o componente para emissão de Notas Fiscais eletrônicas: ACBrNFe. Ele tem um subfórum só pra ele: viewforum.php?f=6
  17. A vantagem de usar tipos é que o código fica muito mais legível. Além disso, os valores a serem armazenados podem mudar com o tempo como vai acontecer com o campo IND_FRT dos registros C100 e D100; veja:http://www.djsystem.com.br/acbr/mantis/view.php?id=1093
  18. Acredito que você esteja confundindo algo. Esse comentário está aí desde que o Isaque adicionou o arquivo no SVN na revisão 2122. Ele nunca foi descomentado. Dica: use a tag code quando for postar um código. EDIT: veja esse tópico datado de maio onde os comentário aparecem
  19. Porque você não postou a dúvida aqui?
  20. Essa unit não faz parte do ACBr atual não. Creio que você está equivocado.
  21. Cara, é incompatível, o campo IND_OPER é do tipo enumerado TACBrIndicadorTpOperacao: Tu tem duas opções: with RegistroD100New do begin IND_OPER := itoContratado; end; [/code] ou [code] with RegistroD100New do begin IND_OPER := TACBrIndicadorTpOperacao(0); end; O campo IND_EMIT é semelhante.
  22. Acho que não existe C360 no SPED Fiscal. As NF-e vão para o C100 no SPED Fiscal. Para se localizar melhor, faça o download e leia atentamente o Guia Prático do SPED Fiscal (EFD). Veja: http://www1.receita.fazenda.gov.br/ vá em Projetos -> SPED Fiscal Leia a parte de legislação também. Daí você vai poder ver o que precisa e o que não precisa realmente. Se estivesse olhando os registros obrigatórios do PAF-ECF, já tem um post aqui no fórum dizendo.
  23. Desculpe Sandra, Acho que me confundi aqui. Você está mencionando sobre qual SPED? Fiscal, SPED PIS/Cofins, Contábil, FCont? Porque todos que eu vi precisam entrar. No guia prático do SPED Fiscal só exclui os Clientes do Cupom Fiscal e Notas de Venda do Consumidor (registros C350 e C460).
  24. Bom, Se o cliente for citado numa NF-e que for alistada no registro C100, então ele deve entrar no 0150 sim, seja entrada ou saída. A questão no caso da NF-e é: as notas vão ser alistadas no C100, C170?
  25. Desculpe, mas o que é que se deve corrigir?
×
×
  • 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.