Ir para conteúdo
  • Cadastre-se

dev botao

Bloco H - Registro H005 E H010 Não Aparecem No Arquivo Gerado


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

Recommended Posts

Estou enfrentando um problema no momento de gerar os dados do inventário, apesar de preencher os registro e informar que existem dados a serem informados no bloco, os registro não aparecem no arquivo txt gerado. Alguém sabe qual a causa desse problema? Segue em o código:

 

No bloco H aparece apenas a abertura e o fechamento:

|H001|1|
|H990|2|
sped->Bloco_H->RegistroH001New()->IND_MOV = imComDados;

void TPrincipal::registroH005_H010() {
	String codItem = "";
	Currency totInv = 200.0;

	TRegistroH005* h005 = sped->Bloco_H->RegistroH005New();
	h005->DT_INV = sped->DT_FIN;
	h005->MOT_INV = miFinalPeriodo;
	h005->VL_INV = totInv;

	TUniQuery* sql = new TUniQuery(NULL);
	sql->Connection = conn;

	sql->SQL->Add("/*Inventario - Pecas*/");
	sql->SQL->Add("SELECT");
	sql->SQL->Add("	(CASE WHEN produto.original IS True THEN produto.codigobarra ELSE produto.id::varchar(20) END) AS cod_item,");
	sql->SQL->Add(" produto.nome AS descr_item,");
	sql->SQL->Add(" produto.codigobarra AS cod_barra,");
	sql->SQL->Add(" classificacaofiscal.ncm,");
	sql->SQL->Add(" '17' AS aliq_icms,");
	sql->SQL->Add(" COALESCE(unidade, 'UN') AS unid,");
	sql->SQL->Add(" produto.estoqueatual AS qtd,");
	sql->SQL->Add(" produto.precovenda AS vl_unit,");
	sql->SQL->Add(" (precovenda * estoqueatual) AS vl_item,");
	sql->SQL->Add(" '0' AS ind_prop");
	sql->SQL->Add("FROM");
	sql->SQL->Add("	produto");
	sql->SQL->Add(" LEFT OUTER JOIN unidade ON (produto.idunidadevenda = unidade.id)");
	sql->SQL->Add(" LEFT OUTER JOIN classificacaofiscal ON (produto.idclassificacao = classificacaofiscal.id)");
	sql->SQL->Add("WHERE");
	sql->SQL->Add("	produto.ativo = 't'");
	sql->SQL->Add(" AND");
	sql->SQL->Add(" produto.estoqueatual > 0");
	sql->SQL->Add(" AND");
	sql->SQL->Add("	produto.precovenda > '0'");
	sql->Execute();

	for (int i = 0; i < sql->RecordCount; i++) {
		codItem = sql->FieldByName("cod_item")->AsString;

		if (dadosProd->Locate("CodItem", codItem, TLocateOptions())) {
			// Cadastra só o inventário.

			TRegistroH010* h010 = sped->Bloco_H->RegistroH010New();
			h010->COD_ITEM = codItem;
			h010->UNID = dadosProdUnidInv->Value;
			h010->QTD = sql->FieldByName("qtd")->AsInteger;
			h010->VL_UNIT = sql->FieldByName("vl_unit")->AsCurrency;
			h010->VL_ITEM = sql->FieldByName("vl_item")->AsCurrency;
			h010->IND_PROP = piInformante;

			totInv = totInv + h010->VL_ITEM;
//				h010->COD_CTA
		} else {
			// Cadastra o produto, depois o inventário.

			TRegistro0200* prod = sped->Bloco_0->Registro0200New();
			prod->COD_ITEM = codItem;
			prod->DESCR_ITEM = sql->FieldByName("descr_item")->AsString;
			prod->COD_BARRA = sql->FieldByName("cod_barra")->AsString;
			prod->UNID_INV = sql->FieldByName("unid")->AsString;
			prod->TIPO_ITEM = tiMercadoriaRevenda;
			prod->COD_NCM = sql->FieldByName("ncm")->AsString;
			prod->ALIQ_ICMS = sql->FieldByName("aliq_icms")->Value;

			TRegistroH010* h010 = sped->Bloco_H->RegistroH010New();
			h010->COD_ITEM = codItem;
			h010->UNID = sql->FieldByName("unid")->AsString;
			h010->QTD = sql->FieldByName("qtd")->AsInteger;
			h010->VL_UNIT = sql->FieldByName("vl_unit")->AsCurrency;
			h010->VL_ITEM = sql->FieldByName("vl_item")->AsCurrency;
			h010->IND_PROP = piInformante;

			totInv = totInv + h010->VL_ITEM;

			//				h010->COD_CTA
		}
	}
	// Totais do inventário
	h005->VL_INV = totInv;

}
Link para o comentário
Compartilhar em outros sites

  • Consultores

|H001|1|  -> Significa "Bloco com dados não informados"

 

Mude para:

|H001|0|

 

Acho que já tem vários tópicos mencionando isso para diversos blocos diferentes...

[]'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

  • 4 anos depois...

Boa Tarde, 

Não consigo fazer com o registro H001 fique como |H001|0|

segue trecho de código:

  with FACBrSpedFiscal.Bloco_H do
  begin

    with RegistroH001New do
    begin
      IND_MOV := imComDados;

      qsInventario := getQAux;
      qsInventario.SQL.Clear;
      qsInventario.SQL.Text := 'select produto.procodigo,                                          '+
                               '       produto.unicodigo,                                          '+
                               '       estoqueatual,                                               '+
                               '       coalesce(propreco.pprvalor,0) pprvalor,                     '+
                               '       coalesce(produto.provlrcusto,0) provlrcusto,                '+
                               '       (estoqueatual*coalesce(propreco.pprvalor,0)) AS TOTALVENDA, '+
                               '       (estoqueatual*coalesce(produto.provlrcusto,0)) AS TOTALCUSTO'+
                               '  from (                                                           '+
                               '           select codigo,                                          '+
                               '                  sum(estoqueatual) estoqueatual                   '+
                               '             from (                                                '+
                               '                   select estoque.procodigo codigo,                '+
                               '                          case estoque.esttipo                     '+
                               '                           when 1 then (estoque.estqtde * (-1))    '+
                               '                           when 2 then estoque.estqtde             '+
                               '                          end estoqueatual                         '+
                               '                     from estoque                                  '+
                               '                    where estoque.estdata <= :data                 '+
                               '                  ) contagem                                       '+
                               '         group by 1) contagem2                                     '+
                               ' inner join produto                                                '+
                               '         on produto.procodigo = codigo                             '+
                               ' inner join preco                                                  '+
                               '         on preco.prepadrao = 1                                    '+
                               ' inner join propreco                                               '+
                               '         on propreco.precodigo = preco.precodigo                   '+
                               '        and propreco.procodigo = produto.procodigo                 '+
                               '      where estoqueatual > 0                                       ';
      qsInventario.ParamByName('data').AsDate := FDataFinal;
      qsInventario.Close;
      qsInventario.Open;
      qsInventario.First;

      with RegistroH005New do
      begin
        DT_INV := FDataFinal;

        while not qsInventario.Eof do
        begin
            with RegistroH010New do
            begin
              COD_ITEM   := getLinha(qsInventario.FieldByName('PROCODIGO').AsString);
              UNID       := qsInventario.FieldByName('unicodigo').AsString;

              if qsInventario.FieldByName('estoqueatual').AsCurrency > 0 then
                QTD        := qsInventario.FieldByName('estoqueatual').AsCurrency
              else
                QTD        := 0;

              VL_UNIT    := qsInventario.FieldByName('provlrcusto').AsCurrency;
              VL_ITEM    := qsInventario.FieldByName('pprvalor').AsCurrency;
              IND_PROP   := piInformante;
              COD_PART   := '';
              TXT_COMPL  := '';
              COD_CTA    := '';
            end;

            valorInv := valorInv+qsInventario.FieldByName('TOTALCUSTO').AsCurrency;
            qsInventario.Next;
        end;

        VL_INV := valorInv;
      end;
    end;
  end;

  FACBrSpedFiscal.WriteBloco_H;
 

Alguma dica por favor?

 

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • Administradores

Bom dia.

Como vc alimentou o componente? Sugiro observar o demo e ver se esqueceu de algum detalhe.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Tópico fechado por falta de retorno do usuário

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1451 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.