Jump to content

dev botao

Bloco C - Impostos Com || Ao Invéz De |0,00| Ou |0|


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

Recommended Posts

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

Edited by Marcos Spirito

Marcos Gerene

[email protected]

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

The popup will be closed in 10 seconds...