Ir para conteúdo
  • Cadastre-se

dev botao

Registros 0100, 0140 e 0150 Duplicando


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

Recommended Posts

  • Consultores

No DEMO funciona? Qual o seu código? Você observou que o código do DEMO é gerado para empresas com 2 estabelecimentos?

[]'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 para o comentário
Compartilhar em outros sites

No DEMO funciona? Qual o seu código? Você observou que o código do DEMO é gerado para empresas com 2 estabelecimentos?

Segue o código:

with ACBrSPEDPisCofins1.Bloco_0 do

begin

// Dados da Empresa

with Registro0000New do

begin

COD_VER := vlVersao101;

IF cbTpEscrit.ItemIndex = 0 then

TIPO_ESCRIT := tpEscrOriginal else

IF cbTpEscrit.ItemIndex = 1 then

TIPO_ESCRIT := tpEscrRetificadora;

IF cbIndSitEspecial.ItemIndex = 0 THEN

IND_SIT_ESP := indSitAbertura ELSE

IF cbIndSitEspecial.ItemIndex = 1 THEN

IND_SIT_ESP := indSitCisao else

IF cbIndSitEspecial.ItemIndex = 2 THEN

IND_SIT_ESP := indSitFusao else

IF cbIndSitEspecial.ItemIndex = 3 THEN

IND_SIT_ESP := indSitIncorporacao else

IF cbIndSitEspecial.ItemIndex = 4 THEN

IND_SIT_ESP := indSitEncerramento;

NUM_REC_ANTERIOR := edNum_Rec_Ant.Text; //'';

NOME := edtEmitRazao;

//'NOME DA EMPRESA';

CNPJ := edtEmitCNPJ; //'123456789';

UF := edtEmitUF; //'ES';

COD_MUN := StrToInt(edtEmitCodCidade); //3200607; edtEmitCodCidade

SUFRAMA := edtSUFRAMA;

if cbIndNatPJ.ItemIndex = 0 then

IND_NAT_PJ := indNatPJSocEmpresariaGeral else

if cbIndNatPJ.ItemIndex = 1 then

IND_NAT_PJ := indNatPJSocCooperativa else

if cbIndNatPJ.ItemIndex = 2 then

IND_NAT_PJ := indNatPJEntExclusivaFolhaSal;

if IndTipoAtividade.ItemIndex=0 then

IND_ATIV := indAtivIndustrial else

if IndTipoAtividade.ItemIndex=1 then

IND_ATIV := indAtivPrestadorServico else

if IndTipoAtividade.ItemIndex=2 then

IND_ATIV := indAtivComercio else

if IndTipoAtividade.ItemIndex=3 then

IND_ATIV := indAtivoFincanceira else

if IndTipoAtividade.ItemIndex=4 then

IND_ATIV := indAtivoImobiliaria else

if IndTipoAtividade.ItemIndex=5 then

IND_ATIV := indAtivoOutros;

with Registro0001New do

begin

IND_MOV := imComDados;

// FILHO - Dados do contador.

with Registro0100New do

begin

NOME := DMFiscal.QryContabiIistaNOME.Value; //'NOME DO CONTADOR';

CPF := DMFiscal.QryContabiIistaCPF.Value; //'12345678900'; // Deve ser uma informação valida

CRC := DMFiscal.QryContabiIistaCRC.Value;

CNPJ := DMFiscal.QryContabiIistaCNPJ.Value; //'123456789';

CEP := DMFiscal.QryContabiIistaCEP.Value;

ENDERECO := DMFiscal.QryContabiIistaENDERECO.Value;

NUM := DMFiscal.QryContabiIistaNUMERO.Value;

COMPL := DMFiscal.QryContabiIistaCOMPLEMENTO.Value;

BAIRRO := DMFiscal.QryContabiIistaBAIRRO.Value;

FONE := DMFiscal.QryContabiIistaFONE.Value;

FAX := DMFiscal.QryContabiIistaFAX.Value;

EMAIL := DMFiscal.QryContabiIistaEMAIL.Value;

COD_MUN := DMFiscal.QryContabiIistaCOD_MUN.Value;

end;

// FILHO - Regime de Apuração

with Registro0110New do

begin

if cbRegime.ItemIndex = 0 then

COD_INC_TRIB := codEscrOpIncNaoCumulativo else

if cbRegime.ItemIndex = 1 then

COD_INC_TRIB := codEscrOpIncCumulativo else

if cbRegime.ItemIndex = 2 then

COD_INC_TRIB := codEscrOpIncAmbos;

if cbMetodo.ItemIndex = 0 then

IND_APRO_CRED := indMetodoApropriacaoDireta else

if cbMetodo.ItemIndex = 1 then

IND_APRO_CRED := indMetodoDeRateioProporcional;

if cbTpContribuicao.ItemIndex = 0 then

COD_TIPO_CONT := codIndTipoConExclAliqBasica else

if cbTpContribuicao.ItemIndex = 1 then

COD_TIPO_CONT := codIndTipoAliqEspecificas;

end;

//0140 - Tabela de Cadastro de Estabelecimento

for int0140 := 1 to 1 do

begin

// FILHO

with Registro0140New do

begin

COD_EST := IntToStr(int0140);

NOME := edtEmitRazao; //'NOME DO ESTABELECIMENTO';

CNPJ := edtEmitCNPJ; //'123456789';

UF := edtEmitUF; //'';

IE := edtEmitIE; //'';

COD_MUN := StrToInt(edtEmitCodCidade); //0;

IM := '';

SUFRAMA := edtSUFRAMA ;

with FrmDMNotas do

begin

QryTB_Reg150.Open;

QryTB_Reg150.First;

While not QryTB_Reg150.Eof do

begin

with Registro0150New do

begin

if (QryTB_Reg150TIPO.Value='E') and not(QryTB_Reg150CNPJ.IsNull) then

COD_PART := Trim_All( QryTB_Reg150CNPJ.Value)else

COD_PART := Trim_All( QryTB_Reg150CPF.Value); //IntToStr(I); //IntToStr(int0150); //ver logo esse num. tem que ser controle do sistema

NOME := QryTB_Reg150NOME.Value; //'NOME DO CLIENTE';

COD_PAIS := '01058'; //Ver isso depois

//if Copy(QryFornecSPEDCGC_CPF.Value,1,3)= 'CPF' then

if not(QryTB_Reg150CNPJ.IsNull) then

CNPJ := Trim_All(QryTB_Reg150CNPJ.Value ) else

CPF := Trim_All( QryTB_Reg150CPF.Value);

IE := Trim_All( QryTB_Reg150IE.Value);

if not QryTB_Reg150COD_MUN.IsNull then

COD_MUN := QryTB_Reg150COD_MUN.Value;

SUFRAMA := ''; //mudar por esse motivo

ENDERECO := QryTB_Reg150ENDERECO.Value ; //mudar por esse motivo

NUM := QryTB_Reg150NUM.Value; //onlyNumber(QryFornecSPEDENDERECO.Value);//''; //mudar por esse motivo

COMPL := QryTB_Reg150COMPL.Value;

BAIRRO := QryTB_Reg150BAIRRO.Value;

end;

QryTB_Reg150.Next;

end;

end;

with FrmDMNotas do

begin

QryUnidadeSPED.Open;

QryUnidadeSPED.First;

While not QryUnidadeSPED.Eof do

begin

with Registro0190New do

begin

UNID := QryUnidadeSPEDCODIGO.AsString;

DESCR := QryUnidadeSPEDNOME.AsString +' '+QryUnidadeSPEDCODIGO.AsString;

end;

QryUnidadeSPED.Next;

end;

end;

with FrmDMNotas do

begin

Regi0200PIS_COFINS.Open;

Regi0200PIS_COFINS.First;

While not Regi0200PIS_COFINS.Eof do

begin

with Registro0200New do

begin

COD_ITEM := Regi0200PIS_COFINSCOD_PROD.AsString; //FormatFloat('000000', int0200);

DESCR_ITEM := Regi0200PIS_COFINSDESCRICAO.AsString; //'DESCRIÇÃO DO ITEM';

COD_BARRA := Regi0200PIS_COFINSCOD_BARRAS.AsString; //'';

COD_ANT_ITEM := '';

UNID_INV := Regi0200PIS_COFINSUN.AsString; //'';

if (Regi0200PIS_COFINSTIPO_ITEM.IsNull) or (Regi0200PIS_COFINSTIPO_ITEM.Value ='00') then

TIPO_ITEM := tiMercadoriaRevenda;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='01' THEN

TIPO_ITEM := tiMateriaPrima;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='02' THEN

TIPO_ITEM := tiEmbalagem;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='03' THEN

TIPO_ITEM := tiProdutoProcesso;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='04' THEN

TIPO_ITEM := tiProdutoAcabado;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='05' THEN

TIPO_ITEM := tiSubproduto;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='06' THEN

TIPO_ITEM := tiProdutoIntermediario;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='07' THEN

TIPO_ITEM := tiMaterialConsumo;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='08' THEN

TIPO_ITEM := tiAtivoImobilizado;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='09' THEN

TIPO_ITEM := tiServicos;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='10' THEN

TIPO_ITEM := tiOutrosInsumos;

IF Regi0200PIS_COFINSTIPO_ITEM.Value ='11' THEN

TIPO_ITEM := tiOutras;

COD_NCM := Regi0200PIS_COFINSCOD_NCM.AsString; //'12345678';

EX_IPI := '';

COD_GEN := '';

COD_LST := '';

ALIQ_ICMS := Regi0200PIS_COFINSALIQICMS.Value;

{ //Cria uma alteração apenas para o item 5...

if (int0200 = 5) then with Registro0205New do

begin

DESCR_ANT_ITEM := 'DESCRIÇÃO ANTERIOR DO ITEM 5';

DT_INI := StrToDate('01/04/2011');

DT_FIM := StrToDate('15/04/2011');

end; }

end;

Regi0200PIS_COFINS.Next;

end;

End;

end;

end;

// FILHO - REGISTRO 0500: PLANO DE CONTAS CONTÁBEIS

{with Registro0500New do

begin

DT_ALT := StrToDate('01/04/2011');

COD_NAT_CC := ncgAtivo;

IND_CTA := indCTASintetica;

NIVEL := '0';

COD_CTA := '01';

NOME_CTA := 'NOME CTA';

COD_CTA_REF := '0';

CNPJ_EST := '33333333000191';

end;}

end;

end;

end;

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Se você usa só um estabelecimento você deve remover o for ... do que cria os registros 0140.

Usar um loop para criar apenas um registro é anti-pattern.

Verifique se isso resolve.

Observe também se os dados não estão sendo duplicados na sua Query ou se não está sendo executada a função que cria os registros duas vezes.

[]'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 para o comentário
Compartilhar em outros sites

Se você usa só um estabelecimento você deve remover o for ... do que cria os registros 0140.

Usar um loop para criar apenas um registro é anti-pattern.

Verifique se isso resolve.

Observe também se os dados não estão sendo duplicados na sua Query ou se não está sendo executada a função que cria os registros duas vezes.

Já fiz isso, e não funcionou, reinstalei o componente (atualizado), memo assim continua.

P.S.: Deixei o for com este loop somente para demonstrar que estava seguindo o mesmo código do Demo, desculpa ai eu sei que é Anti-pattern. Valeu!

[]´s

regtrind.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Beleza então.

Olhando por alto, não consegui detectar nenhum problema diretamente no seu código.

Então, sugiro colocar um breakpoint na execução do seu código para verificar se não estão sendo criados duas vezes o mesmo registro.

Coloque o breakpoint por exemplo na linha que cria o registro 0140 ou na próxima depois dela (COD_EST := IntToStr(int0140)).

Quando parar ali você pode verificar o quantas vezes ele está gerando o registro.

[]'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 para o comentário
Compartilhar em outros sites

Beleza então.

Olhando por alto, não consegui detectar nenhum problema diretamente no seu código.

Então, sugiro colocar um breakpoint na execução do seu código para verificar se não estão sendo criados duas vezes o mesmo registro.

Coloque o breakpoint por exemplo na linha que cria o registro 0140 ou na próxima depois dela (COD_EST := IntToStr(int0140)).

Quando parar ali você pode verificar o quantas vezes ele está gerando o registro.

Valeu a força, fiz o que vc disse e acabei descubrindo o que houve. Nem eu mesmo acreditei no que vi!

O evento OnExit do botão "Bloco C" continha o evento OnClick do botoão "Bloco 0". Deve ter ocorrido por delays, pois ontem trabalhei com esta parte do código remotamente longe do meu local de trabalho[...]. Fica então a dica.

Muito obrigado, valeu mesmo!

Forte abraço,

regtrind.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Que bom que resolveu! :)

[]'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 para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4446 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.