Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Andei navegando pelos tópicos e como não achei tópico parecido....

Seguinte, to tentando gerar o arquivo do Sped Pis/Cofins...

A tela no programa ficou uma mescla entre a tela do Sped Fiscal com a do Pis/Cofins...

O problema é que não está gerando os Blocos A, C...

Como no exemplo do Pis/Cofins so tem um registro (a menos q eu esteja equivocado), queria saber como gerar os A100/A170 e C100/C170...

Em anexo rotina_problema.pas está a rotina com problemas....

No arquivo gerado fica assim:

//***************************

|0200|000008|P2 V|7890002000084||UN|00|73110000||||18,00|

|0200|000065|PIK TEL LIQUIGAS 1,00MT|7890003000656||UN|00|||||18,00|

|0200|000103|P8|7890001001037||UN|00|27111910||||18,00|

|0200|000161|SERVIÇOS GERAIS|7890005001613||UN|00|||||18,00|

|0990|37|

|A001|0|

|A990|2|

|C001|0|

|C990|2|

|D001|0|

|D990|2|

|F001|0|

|F990|2|

|M001|0|

//******************************************

  • Consultores
Postado

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]

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Não adiantou, continua sem aparecer o A100, A110, A170, C100, C170... etc...

Ele gera o arquivo, mas n gera justamente estes registros...

Queria saber se há algo q falte q possa fazer não gerar, por ex....

  • Consultores
Postado

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.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

:|

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..

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

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]

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

Mas o DEMO funciona certo? Você vai ter que debugar pra procurar o que ele está fazendo diferente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Caro EMBarbosa...

Sim, o DEMO funciona...

Qto a debugar, já o fiz milhares de vezes e ele percorre tds os laços, já verifiquei os SELECTs (já tinha respondido isso, portanto, aguardo NOVAS sugestões)...

  • Consultores
Postado

Me refiro a debugar o componente também...

Ele tem que chamar os comandos WriteRegistroXXXX para adicionar ao TStringList interno (FConteudo). Talvez note os comandos ADD nessa procedure.

Depois, a cada Bloco_X.WriteBuffer, ele salva no arquivo definido os dados.

Então algum passo desses deve estar falhando. Tente descobrir onde e o porquê, pois sem o seu código fonte para essa parte e seu banco de dados, eu não tenho como testar aqui.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 4747 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

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

Criar uma conta

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

Crie uma nova conta

Entrar

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

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

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