-
Total de ítens
9.411 -
Registro em
-
Última visita
-
Days Won
117
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que EMBarbosa postou
-
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]
-
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..
-
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.
-
Sped Fiscal - Erro no registro G126 - Campo DT_FIM
EMBarbosa replied to programadorbq's tópico in ACBrSPEDFiscal
ok. Obrigado pelo retorno. -
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.
-
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]
-
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.
-
Novo Validador disponível para EFD-PIS/Cofins 1.0.4
um tópico no fórum postou EMBarbosa Legislação Fiscal e Tributária
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 -
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.
-
Olá Adilson, Eu acho que a versão atual do exemplo que está no SVN está mais atualizado que esse daí, não?
-
Subi pro SVN com algumas alterações. Favor conferir e postar mais informações...
-
Sped Fiscal - Erro no registro G126 - Campo DT_FIM
EMBarbosa replied to programadorbq's tópico in ACBrSPEDFiscal
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. -
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.
-
Problema com o ArquivoMFD_DLL( ) - Urgente
EMBarbosa replied to Vially Israel's tópico in ACBrSerial
Qual requisito você está querendo cumprir? -
Anexe os arquivos que você alterou aqui no fórum mesmo. Faça Update dos seus arquivos ANTES de postar, por favor.
-
Roteiro v1.7 Setembro/2011 Aplicável a ER-PAF-ECF 01.09
EMBarbosa replied to joseadolfojr's tópico in PAF-ECF
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 -
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
-
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
-
Porque você não postou a dúvida aqui?
-
Essa unit não faz parte do ACBr atual não. Creio que você está equivocado.
-
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.
-
Registro 0150 - Cadastro do Participante
EMBarbosa replied to sandrabaroni's tópico in ACBrSPEDFiscal
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. -
Registro 0150 - Cadastro do Participante
EMBarbosa replied to sandrabaroni's tópico in ACBrSPEDFiscal
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). -
Registro 0150 - Cadastro do Participante
EMBarbosa replied to sandrabaroni's tópico in ACBrSPEDFiscal
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? -
Desculpe, mas o que é que se deve corrigir?