Jump to content

Assista tectoy.png

chamada diadoacbr

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


lincolnaps
  • Este tópico foi criado há 819 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 to comment
Share on other 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 to comment
Share on other sites

  • 4 years later...

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

  • 2 years later...
  • 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
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Administradores

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

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Este tópico foi criado há 819 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • 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.