Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Bom dia a todos,

 

No meu sistema tenho o gerador do SPED Fiscal e PisCofins, no Fiscal quando passo

valores 0 (zero) para campos como VL_BC_ICMS (Valor da Base de Calc. do ICMS) o arquivo gera 0 ou 0,00

já no Pis Cofins quando passo o valor o registro fica um "pipe-pipe"  ||.

 

Atualizei o componente e revi o código, mas não consigo achar o motivo disso acontecer e o validador

do SPED me acusa que este campo é de preenchimento obrigatório.

 

 

Segue o código, o erro e parte do arquivo.

 

 

 

Código:

   with RegistroC001New do
      begin
      IND_MOV := imComDados;
      with RegistroC010New do
         begin
         CNPJ := FrmPrincipal.QryEmpresaAtiva.FieldByName('EMP_CNPJ').AsString;
         IND_ESCRI := IndEscriIndividualizado; {Tipo de escrituração - Fixo Individualizado (C100 e C170 - Notas; C400, C405, C481 e C485 - ECFs}

         QC100.Close;
         QC100.Sql.Clear;
         QC100.SQL.Add('SELECT * FROM SPED_C100;');
         QC100.Open;
         QC100.FetchAll;
         FrmPisCofins.ProcessaGauge(QC100.RecordCount, 'BLOCO C - Gerando Registros C100 (NFe - Saídas)...');
         QC100.First;
         while not QC100.Eof do
            begin
            with RegistroC100New do
               begin
               if QC100.FieldByName('C100_CFOP').AsInteger >= 5000 then
                  IND_OPER   := tpSaidaPrestacao
               else
                  IND_OPER   := tpEntradaAquisicao;

               IND_EMIT      := edEmissaoPropria;
               COD_MOD       := '55';
               SER           := FormatFloat('000', QC100.FieldByName('C100_SERIE').AsInteger);
               NUM_DOC       := QC100.FieldByName('C100_NUMERO').AsString;
               CHV_NFE       := QC100.FieldByName('C100_CHAVENFE').AsString;
               if QC100.FieldByName('C100_STATUS').AsInteger = 100 then
                  begin
                  COD_SIT       := sdRegular;
                  COD_PART      := CodPart(QC100.FieldByName('C100_CNPJ').AsString);
                  DT_DOC        := QC100.FieldByName('C100_DATA').AsDateTime;
                  DT_E_S        := QC100.FieldByName('C100_DATA').AsDateTime;
                  VL_DOC        := QC100.FieldByName('C100_VL_DOC').AsFloat;
                  case QC100.FieldByName('C100_TIPOPAGTO').AsInteger of
                     0: IND_PGTO := tpVista;
                     1: IND_PGTO := tpPrazo;
                     2: IND_PGTO := tpNenhum;
                     end;
                  VL_DESC       := QC100.FieldByName('C100_VL_DESC').AsFloat;
                  VL_ABAT_NT    := QC100.FieldByName('C100_VL_ABAT_NT').AsFloat;
                  VL_MERC       := QC100.FieldByName('C100_VL_MERC').AsFloat;
                  case QC100.FieldByName('C100_IND_FRETE').AsInteger of
                     0: IND_FRT := tfPorContaEmitente;
                     1: IND_FRT := tfPorContaDestinatario;
                     2: IND_FRT := tfPorContaTerceiros;
                     9: IND_FRT := tfSemCobrancaFrete;
                     end;
                  VL_FRT        := QC100.FieldByName('C100_VL_FRETE').AsFloat;
                  VL_SEG        := QC100.FieldByName('C100_VL_SEGURO').AsFloat;
                  VL_OUT_DA     := QC100.FieldByName('C100_VL_OUT_DA').AsFloat;
                  VL_BC_ICMS    := QC100.FieldByName('C100_VL_BC_ICMS').AsFloat;
                  VL_ICMS       := QC100.FieldByName('C100_VL_ICMS').AsFloat;
                  VL_BC_ICMS_ST := QC100.FieldByName('C100_VL_BC_ICMS_ST').AsFloat;
                  VL_ICMS_ST    := QC100.FieldByName('C100_VL_ICMS_ST').AsFloat;
                  VL_IPI        := QC100.FieldByName('C100_VL_IPI').AsFloat;
                  VL_PIS        := QC100.FieldByName('C100_VL_PIS').AsFloat;
                  VL_COFINS     := QC100.FieldByName('C100_VL_COFINS').AsFloat;
                  VL_PIS_ST     := QC100.FieldByName('C100_VL_PIS_ST').AsFloat;
                  VL_COFINS_ST  := QC100.FieldByName('C100_VL_COFINS_ST').AsFloat;

                  QC170.Close;
                  QC170.Sql.Clear;
                  QC170.Sql.Add('SELECT * FROM SPED_C170 WHERE C100_CHAVENFE = :C100_CHAVENFE;');
                  QC170.ParamByName('C100_CHAVENFE').AsString := QC100.FieldByName('C100_CHAVENFE').AsString;
                  QC170.Open;
                  QC170.FetchAll;
                  IItens := 1;
                  QC170.First;
                  while not QC170.eof do
                     begin
                     with RegistroC170New do
                        begin
                        NUM_ITEM         := FormatFloat('000', IItens);
                        COD_ITEM         := QC170.FieldByName('PRO_CODIGO').AsString + 'P';
                        DESCR_COMPL      := PesquisaBanco('SELECT PRO_DESCRICAO FROM PRODUTO WHERE PRO_CODIGO = '+QC170.FieldByName('PRO_CODIGO').AsString,nil);
                        QTD              := QC170.FieldByName('C170_QTDE').AsFloat;
                        UNID             := PesquisaBanco('SELECT U.UNI_SIGLA FROM PRODUTO P INNER JOIN UNIDADES U ON U.UNI_CODIGO = P.UNI_CODIGO WHERE PRO_CODIGO = '+QC170.FieldByName('PRO_CODIGO').AsString,nil);
                        VL_ITEM          := QC170.FieldByName('C170_QTDE').AsFloat * QC170.FieldByName('C170_VL_ITEM').AsFloat;
                        VL_DESC          := 0;
                        IND_MOV          := mfSim;
                        CST_ICMS         := F_CST_ICMS(QC170.FieldByName('C170_CST_ICMS').AsString);
                        CFOP             := QC170.FieldByName('C170_CFOP').AsString;
                        COD_NAT          := '';
                        VL_BC_ICMS       := QC170.FieldByName('C170_BC_ICMS').AsFloat;
                        ALIQ_ICMS        := QC170.FieldByName('C170_ALIQ_ICMS').AsFloat;
                        VL_ICMS          := QC170.FieldByName('C170_VL_ICMS').AsFloat;
                        VL_BC_ICMS_ST    := QC170.FieldByName('C170_BC_ICMS_ST').AsFloat;
                        Aliq_ST          := QC170.FieldByName('C170_ALIQ_ICMS_ST').AsFloat;
                        VL_ICMS_ST       := QC170.FieldByName('C170_VL_ICMS_ST').AsFloat;
                        IND_APUR         := iaMensal;
                        CST_IPI          := F_CST_IPI(QC170.FieldByName('C170_CST_IPI').AsString);
                        COD_ENQ          := '';
                        VL_BC_IPI        := QC170.FieldByName('C170_BC_IPI').AsFloat;
                        ALIQ_IPI         := QC170.FieldByName('C170_ALIQ_IPI').AsFloat;
                        VL_IPI           := QC170.FieldByName('C170_VL_IPI').AsFloat;
                        CST_PIS          := F_CST_PIS(QC170.FieldByName('C170_CST_PIS').AsString,0);
                        CST_COFINS       := F_CST_COFINS(QC170.FieldByName('C170_CST_COFINS').AsString, 0);
                        VL_BC_PIS        := QC170.FieldByName('C170_BC_PIS').AsFloat;
                        ALIQ_PIS_PERC    := QC170.FieldByName('C170_ALIQ_PIS').AsFloat;
                        QUANT_BC_PIS     := 0;
                        ALIQ_PIS_R       := 0;
                        VL_PIS           := QC170.FieldByName('C170_BC_PIS').AsFloat * (QC170.FieldByName('C170_ALIQ_PIS').AsFloat/100);
                        VL_BC_COFINS     := QC170.FieldByName('C170_BC_COFINS').AsFloat;
                        ALIQ_COFINS_PERC := QC170.FieldByName('C170_ALIQ_COFINS').AsFloat;
                        QUANT_BC_COFINS  := 0;
                        ALIQ_COFINS_R    := 0;
                        VL_COFINS        := VL_BC_COFINS * (ALIQ_COFINS_PERC/100);
                        COD_CTA          := '';
                        Inc(IItens);
                        end;
                     QC170.Next;
                     end;
                  end
               else
                  COD_SIT    := sdCancelado;
               end;
            QC100.Next;
            end;

 

 

 

Arquivo:

 

PisCofins-Dezembro-2012.txt

 

Erros:

 

post-2984-0-21815700-1358173586_thumb.jp

 

 

Base:

post-2984-0-13091600-1358174780_thumb.pn

 

post-2984-0-56693500-1358174796_thumb.jp

 

 

 

Desde já agradeço a ajuda,

 

 

Att, Marcos Spirito

Editado por Marcos Spirito

Marcos Gerene

[email protected]

Postado

Achei o erro...

 

 

no unit ACBrEPCBloco_C_Class tá assim:

 

 

          Add(
              {01} LFill('C170')                 +
              {02} LFill( NUM_ITEM )             +
              {03} LFill( COD_ITEM )             +
              {04} LFill( DESCR_COMPL )          +
              {05} DFill( QTD, 5 )               +
              {06} LFill( UNID )                 +
              {07} LFill( VL_ITEM,0,2 )          +
              {08} LFill( VL_DESC,0,2 )          +
              {09} LFill( strIND_MOV )           +
              {10} LFill( strCST_ICMS)           +
              {11} LFill( CFOP,4 )               +
              {12} LFill( COD_NAT )              +
              {13} LFill( VL_BC_ICMS,0,2 )       +
              {14} LFill( ALIQ_ICMS,0,2 )        +
              {15} LFill( VL_ICMS,0,2 )          +
              {16} LFill( VL_BC_ICMS_ST,0,2 )    +
              {17} LFill( ALIQ_ST,0,2 )          +
              {18} LFill( VL_ICMS_ST,0,2 )       +
              {19} LFill( strIND_APUR )          +
              {20} LFill( strCST_IPI )           +
              {21} LFill( COD_ENQ )              +
              {22} LFill( VL_BC_IPI,0,2 )        +
              {23} LFill( ALIQ_IPI,0,2 )         +
              {24} LFill( VL_IPI,0,2 )           +
              {25} LFill( strCST_PIS )           +
              {26} DFill( VL_BC_PIS,     2, True ) +
              {27} DFill( ALIQ_PIS_PERC, 4, True ) +
              {28} DFill( QUANT_BC_PIS,  3, True ) +
              {29} DFill( ALIQ_PIS_R,    4, True ) +
              {30} LFill( VL_PIS,0,2 )           +
              {31} LFill( strCST_COFINS )        +
              {32} DFill( VL_BC_COFINS,     2, True ) +
              {33} DFill( ALIQ_COFINS_PERC, 4, True ) +
              {34} DFill( QUANT_BC_COFINS,  3, True ) +
              {35} DFill( ALIQ_COFINS_R,    4, True ) +
              {36} LFill( VL_COFINS,0,2 )        +
              {37} LFill( COD_CTA ) ) ;
        end;
        RegistroC990.QTD_LIN_C := RegistroC990.QTD_LIN_C + 1;
     end;
     /// Variavél para armazenar a quantidade de registro do tipo.
     FRegistroC170Count := FRegistroC170Count + RegC100.RegistroC170.Count;
  end;
end;

 

ele passa true para a função DFill na base de calculo do pis cofins e os campos que estão dando erro, e quando é nulo e 0 essa função retorna ||

 

na função:

 

 

function TACBrTXTClass.DFill(Value: Double;
                        Decimal: Integer = 2;
                        Nulo: Boolean = false): String;
begin
  /// Se o parametro Nulo = true e Value = 0, será retornado '|'
  if (Nulo) and (Value = 0) then
  begin
     Result := FDelimitador;
     Exit;
  end;
  Result := FDelimitador + FormatFloat('#0.' + StringOfChar('0', Decimal), Value); //FormatCurr não permite precisão acima de 4 casas decimais
end;

 

 

 

Hoje é assim ou existe alguma versão mais atual que seja diferente?

 

 

 

Marcos Gerene

[email protected]

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

The popup will be closed in 10 segundos...