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á 4171 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á 4171 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.