Jump to content

click.png click.png click.png

click.png

click.png

click.png

Seja-Profissional-Saiba-mais.png Beneficios_banner.png

 

click.png

click.png

click.png

click.png

click.png

click.png

Dúvidas na geração....


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

Recommended Posts

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|

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

Link to comment
Share on other sites

  • Consultores

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.
Link to comment
Share on other sites

  • Consultores

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.
Link to comment
Share on other sites

  • Consultores

:|

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.
Link to comment
Share on other sites

  • Consultores

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.
Link to comment
Share on other sites

  • Consultores

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.
Link to comment
Share on other sites

  • Consultores

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.
Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.