Clipper On Line • Ver Tópico - PIS/COFINS aliquota Diferenciada e Aliquota Zero por NCM

PIS/COFINS aliquota Diferenciada e Aliquota Zero por NCM

Discussão sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (ECF, TEF, SINTEGRA, NF-e, ECD, EFD, etc.)

Moderador: Moderadores

 

PIS/COFINS aliquota Diferenciada e Aliquota Zero por NCM

Mensagempor rochinha » 16 Mar 2022 13:33

Amiguinhos,

Como sabemos os PIS/COFINS deve ser lançado na Notas Eletronicas conforme criticas de regime empresarial seguindo também a critica da CST envolvida.

Na apuração do PIS e da COFINS é importante identificar as formas de tributação das contribuições, pois, a depender dessa análise, veremos a formação da base de cálculo e as alíquotas aplicáveis.

Desse modo, temos duas formas de apuração da base de cálculo do PIS e da COFINS: cumulativa e não cumulativa.

Na modalidade de PIS e COFINS cumulativos, a formação da base de cálculo é a receita operacional bruta da pessoa jurídica. Nesse tipo de apuração, não temos direito a créditos dos custos e das despesas. Além disso, as alíquotas da Contribuição para o PIS/PASEP e da COFINS são, respectivamente, de 0,65% e de 3%. Por exemplo:

Receita Operacional Bruta x 3,65%, sendo 0,65% de PIS e 3% de COFINS.

Já em relação ao PIS e COFINS não cumulativos, nessa modalidade temos direito a crédito dos custos e despesas, e as alíquotas aplicáveis são, por exemplo:

Receita bruta x 9,25%, sendo 1,65% de PIS e 7,6% de COFINS nas operações que geram faturamento.

Crédito de Custos e despesas nas alíquotas de total de 9,25%, sendo 1,65% de PIS e 7,6% de COFINS.

Exemplo: O valor total da nota fiscal de venda é de R$ 5.000,00.

*Alíquota de ICMS: 18,00%
*Alíquota PIS (regime não cumulativo): 7,60%
*Alíquota COFINS (regime não cumulativo): 1,65%
*Total dos impostos em alíquotas = 27,25%

Apuração da base de cálculo:

Base de cálculo: R$ 5.000,00

ICMS devido na operação / destacado em nota: 5.000 x 18% = 900,00

PIS devido na operação: 5.000 x 1,65% = 82,00

COFINS devido na operação: 5.000 x 7,6% = 380,00

Baseado no exposto acima e incluindo os cálculos de Aliquota Zero e Aliquota Diferenciada formulei os resultados através de algums P.O.G.

Apresento alguns trechos de meus cálculos e criticas para gerar o XML
                     // Referente a CST relacionadas a PIS/COFINS
                     // 1-Lucro Real, 2-Lucro Presumido, 3-Simples Nacional
                     // Lucro Real - Regime não cumulativo: Pis - 1,65% Cofins 7,6%
                     // Lucro Presumido - Regime Cumulativo: Pis - 0,65% Cofins - 3%
                     cRegimeTrib       := substr( VerifyINI("REGIME" , "RegimeTributario", "", cPathDados+"nfw.ini", .f.), 1, 1 )
                     lRegimeCumulativo := iif( cRegimeTrib="2", .t., .f. )

                     // Aliquota Basica
                     pPIS              := iif( cSimples = "S",0,iif(lRegimeCumulativo,0.65,1.65) )
                     pCOFINS           := iif( cSimples = "S",0,iif(lRegimeCumulativo,3.00,7.60) )
                     if cCSTPIS = "02" .or. cCSTPIS = "04"
                        // Aliquota Diferenciada - forcar pela busca na nova tabela - funcao esta no NFWHFAT.PRG
                        pPISDif           := NCMCST( es->nCmfiscal, es->nBmfiscal )[2] // cCSTPIS
                        // Verifica se NCM esta na lista de Aliquota Zero forcando CST 04
                        if NCMAliquotaZero( strtran( cNCMIPI,".","" ) )
                           // Somente para SIMPLES
                           cCSTPIS        := "04"
                        endif
                        // Verifica se NCM esta na lista de Aliquota Zero forcando CST 02
                        aAliquotaDifer := NCMAliquotaDifer( strtran( cNCMIPI,".","" ) )
                        if LEN(aAliquotaDifer) > 0
                           cCSTPIS        := "02"
                           pPISDif        := aAliquotaDifer[2] // cCSTPIS
                        endif
                        pPIS    := pPISDif
                     endif
                     if cCSTCOFINS = "02" .or.  cCSTCOFINS = "04"
                        // Aliquota Diferenciada - forcar pela busca na nova tabela - funcao esta no NFWHFAT.PRG
                        pCOFINSDif        := NCMCST( es->nCmfiscal, es->nBmfiscal )[3] // cCSTCOFINS
                        // Verifica se NCM esta na lista de Aliquota Zero forcando CST 04
                        if NCMAliquotaZero( strtran( cNCMIPI,".","" ) )
                           // Somente para SIMPLES
                           cCSTCOFINS     := "04"
                        endif
                        // Verifica se NCM esta na lista de Aliquota Zero forcando CST 02
                        aAliquotaDifer := NCMAliquotaDifer( strtran( cNCMIPI,".","" ) )
                        if LEN(aAliquotaDifer) > 0
                           cCSTCOFINS     := "02"
                           pCOFINSDif     := aAliquotaDifer[3] // cCSTCOFINS
                        endif
                        pCOFINS := pCOFINSDif
                     endif


As CSTs de PIS/COFINS em meu sistema estão atreladas à CST do ICMS em uma tabela.

A função NCMCST() recebe NCM e NBM, já que através do NBM eu tenho desmembrados o mesmo NCM(mas isto não vem ao caso) mas a mesma pode pesquisar somente pelo NCM.

FUNCTION NCMCST( _nCmfiscal_, _nBmfiscal_ )
   // Base Legal
   // PIS – Lei Complementar nº 7, de 7 de setembro de 1970.
   // COFINS – Lei Complementar nº 70, de 30 de dezembro de 1991.
   oldArea    := select()
   cNCMIPI    := charrem( ".", _nCmfiscal_ )
   nNCMIPI    := 0
   nNCMPIS    := 0
   nNCMCOFINS := 0
   dbSelectArea( "NCM" )
   // Pesquisa pelos dois campos
   OrdSetFocus( 1 ) // Pesquisa por campos NCMFiscal e NBMFiscal
   dbSeek( charrem( ".", _nCmfiscal_ )+charrem( ".", _nBmfiscal_ ) )
   if !found()
         OrdSetFocus( 2 ) // Pesquisa somente pelo campo NCMFiscal
         dbSeek( charrem( ".", _nCmfiscal_ ) )
         if !found()
            cNCMIPI    := "99" // "99999900" // Tentar passar o cupom mesmo com falha de NCM
            nNCMIPI    := 0
            nNCMPIS    := 0
            nNCMCOFINS := 0
         else
            nNCMIPI    := NCM->ALIQUOTA // PESQ(es->ncmfiscal+es->nbmfiscal,"NCM",1,"ALIQUOTA")
            nNCMPIS    := iif( IsField( "PIS" )   , NCM->PIS   , 0 )
            nNCMCOFINS := iif( IsField( "COFINS" ), NCM->COFINS, 0 )
         endif
         OrdSetFocus( 1 )
   else
      nNCMIPI    := NCM->ALIQUOTA // PESQ(es->ncmfiscal+es->nbmfiscal,"NCM",1,"ALIQUOTA")
      nNCMPIS    := NCM->PIS
      nNCMCOFINS := NCM->COFINS
   endif
   dbSelectArea( oldArea )
   return { nNCMIPI, nNCMPIS, nNCMCOFINS, cNCMIPI }


As tabelas verificadas pela função são pequenas e coloquei em vetor.
FUNCTION NCMAliquotaZero( cNCMQTenho )
   aNCMRRAY := {}
   aadd( aNCMRRAY, "07133319" ) // 01
   aadd( aNCMRRAY, "07133329" ) // 02
   aadd( aNCMRRAY, "07133399" ) // 03
   aadd( aNCMRRAY, "11010010" ) // 04
   aadd( aNCMRRAY, "19012000" ) // 05
   aadd( aNCMRRAY, "19059090" ) // 06
   aadd( aNCMRRAY, "05111000" ) // 07
   aadd( aNCMRRAY, "05119910" ) // 08*
   aadd( aNCMRRAY, "05119920" ) // 09
   aadd( aNCMRRAY, "19021100" ) // 10
   aadd( aNCMRRAY, "19021900" ) // 11
   aadd( aNCMRRAY, "19022000" ) // 12*
   aadd( aNCMRRAY, "19023000" ) // 13
   aadd( aNCMRRAY, "19021100" ) // 14
   aadd( aNCMRRAY, "19021900" ) // 15
   aadd( aNCMRRAY, "19022000" ) // 16
   aadd( aNCMRRAY, "19023000" ) // 17
   aadd( aNCMRRAY, "02061000" ) // 18
   aadd( aNCMRRAY, "02102000" ) // 19
   aadd( aNCMRRAY, "05069000" ) // 20
   aadd( aNCMRRAY, "05100010" ) // 21
   aadd( aNCMRRAY, "02063000" ) // 22
   aadd( aNCMRRAY, "17019900" ) // 23
   aadd( aNCMRRAY, "17011400" ) // 24
   aadd( aNCMRRAY, "04051000" ) // 25
   aadd( aNCMRRAY, "48181000" ) // 26
   aadd( aNCMRRAY, "84433222" ) // 27
   aadd( aNCMRRAY, "84690039" ) // 28
   aadd( aNCMRRAY, "87142000" ) // 29
   aadd( aNCMRRAY, "90214000" ) // 30
   aadd( aNCMRRAY, "84433222" ) // 31
   aadd( aNCMRRAY, "87142000" ) // 32
   aadd( aNCMRRAY, "90214000" ) // 33
   aadd( aNCMRRAY, "90219082" ) // 34
   aadd( aNCMRRAY, "90219092" ) // 35
   aadd( aNCMRRAY, "84690039" ) // 36
   aadd( aNCMRRAY, "84701000" ) // 37
   aadd( aNCMRRAY, "84716090" ) // 38
   aadd( aNCMRRAY, "84719014" ) // 39
   aadd( aNCMRRAY, "84721000" ) // 40
   aadd( aNCMRRAY, "84716053" ) // 41
   aadd( aNCMRRAY, "85258019" ) // 42
   aadd( aNCMRRAY, "22011000" ) // 43
   aadd( aNCMRRAY, "22011000" ) // 44
   aadd( aNCMRRAY, "27101921" ) // 45
   aadd( aNCMRRAY, "1502101" ) // 46
   aadd( aNCMRRAY, "100620" ) // 47
   aadd( aNCMRRAY, "100630" ) // 48
   aadd( aNCMRRAY, "110620" ) // 49
   aadd( aNCMRRAY, "300230" ) // 50*
   aadd( aNCMRRAY, "110220" ) // 51
   aadd( aNCMRRAY, "110313" ) // 52
   aadd( aNCMRRAY, "010511" ) // 53
   aadd( aNCMRRAY, "902110" ) // 54
   aadd( aNCMRRAY, "90213" ) // 55
   aadd( aNCMRRAY, "02062" ) // 56
   aadd( aNCMRRAY, "02064" ) // 57*
   aadd( aNCMRRAY, "02101" ) // 58
   aadd( aNCMRRAY, "0201" ) // 59
   aadd( aNCMRRAY, "0202" ) // 60
   aadd( aNCMRRAY, "0203" ) // 61
   aadd( aNCMRRAY, "0204" ) // 62
   aadd( aNCMRRAY, "0207" ) // 63
   aadd( aNCMRRAY, "0209" ) // 64
   aadd( aNCMRRAY, "0302" ) // 65
   aadd( aNCMRRAY, "0303" ) // 66
   aadd( aNCMRRAY, "0304" ) // 67
   aadd( aNCMRRAY, "1507" ) // 68
   aadd( aNCMRRAY, "1508" ) // 69*
   aadd( aNCMRRAY, "1509" ) // 70
   aadd( aNCMRRAY, "1510" ) // 71
   aadd( aNCMRRAY, "1511" ) // 72
   aadd( aNCMRRAY, "1512" ) // 73
   aadd( aNCMRRAY, "1513" ) // 74
   aadd( aNCMRRAY, "1514" ) // 75
   aadd( aNCMRRAY, "3306" ) // 76
   aadd( aNCMRRAY, "8802" ) // 77
   aadd( aNCMRRAY, "8713" ) // 78
   aadd( aNCMRRAY, "1001" ) // 79
   aadd( aNCMRRAY, "0407" ) // 80
   aadd( aNCMRRAY, "07" ) // 81*
   aadd( aNCMRRAY, "08" ) // 82
   lAliquotaZero := .f.
   for nI2I := 1 to len( aNCMRRAY )
       for nI3I = 1 to 8
           if alltrim( substr( cNCMQTenho, 1, 9-nI3I ) ) = alltrim( aNCMRRAY[nI2I] )
              lAliquotaZero := .t.
              exit
           endif
       next
       if lAliquotaZero
          //? "nI3I",9-nI3I,nI2I,alltrim( substr( cNCMQTenho, 1, 9-nI3I ) ),alltrim( aNCMRRAY[nI2I] )
          exit
       endif
   next
   return lAliquotaZero


FUNCTION NCMAliquotaDifer( cNCMQTenho )
   aNCMRRAY := {}
   aadd( aNCMRRAY, { "30029020", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "30029092", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "30029099", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "30051010", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "30066000", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "34011190", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "34012010", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "96032100", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "84324000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84328000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84333000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84334000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "87162000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "76129012", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84324000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84328000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84333000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84334000", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "3002101", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3002102", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3002103", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3002201", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3002202", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3006301", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3006302", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "843320", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "731029", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "842481", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "843320", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "84335", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "7309", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8429", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8701", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8702", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8703", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8704", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8705", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "8706", 2.00, 9.60 } )
   aadd( aNCMRRAY, { "3001", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3003", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3004", 2.10, 9.90 } )
   aadd( aNCMRRAY, { "3303", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "3304", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "3305", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "3306", 2.20, 10.30 } )
   aadd( aNCMRRAY, { "3307", 2.20, 10.30 } )
   lAliquotaDifer := .f.
   aAliquotaDifer := {}
   for nI2I := 1 to len( aNCMRRAY )
       for nI3I = 1 to 8
           if alltrim( substr( cNCMQTenho, 1, 9-nI3I ) ) = alltrim( aNCMRRAY[nI2I][1] )
              // Se a pesquisa do NCM ou trecho estiver no array...
              lAliquotaDifer := .t.
              aAliquotaDifer := aNCMRRAY[nI2I]
              exit
           endif
       next
       if lAliquotaDifer
          //? "nI3I",9-nI3I,nI2I,alltrim( substr( cNCMQTenho, 1, 9-nI3I ) ),alltrim( aNCMRRAY[nI2I][1] ),aNCMRRAY[nI2I][2],aNCMRRAY[nI2I][3]
          exit
       endif
   next
   return aAliquotaDifer


Segue um trecho de formatação das tags PIS/COFINS para efeito de analise:
                     // Joguei os calculos dentro das criticas de PIS w COFINS
                     vBCPIS            := round( nSubtotal, 2 ) // -nDesconto // vBC // Vania-ContiMax-Nao calcular pela base reduzida e nao descontar
                     vBCCOFINS         := round( nSubtotal, 2 ) // -nDesconto // vBC // Vania-ContiMax-Nao calcular pela base reduzida e nao descontar
                     vCSTPIS           := round( (vBCPIS)*(pPIS*.01), 2 )
                     vCSTCOFINS        := round( (vBCCOFINS)*(pCOFINS*.01), 2 )

                     if cPISNat = "S" //.and. empty(ClInscrMun)
                        EDX OPEN MARK "PIS" OF oEDX
                            cTAGPIS := "PISAliq"
                            /* PISAliq 01 Basica */          if alltrim(cCSTPIS) $ "01"               ; cTAGPIS := "PISAliq"; endif
                            /* PISAliq 02 Diferenciada */    if alltrim(cCSTPIS) $ "02"               ; cTAGPIS := "PISAliq"; endif
                            /* PISQtde 03 */                 if alltrim(cCSTPIS) $ "03"               ; cTAGPIS := "PISQtde"; endif
                            /* PISNT   04...09 */            if alltrim(cCSTPIS) $ "04|05|06|07|08|09"; cTAGPIS := "PISNT"  ; pPIS := 0; endif
                            /* Somente para emitentes Simples Nacional */
                            /* PISOutr 49...99 */            if alltrim(cCSTPIS) $ "49|50|51|52|53|54|55|56|60|61|62|63|64|65|66|67|70|71|72|73|74|75|98|99"; cTAGPIS := "PISOutr"; endif
                            EDX OPEN MARK cTAGPIS OF oEDX
                                EDX OPEN MARK "CST"      TYPE "" TAG cCSTPIS AUTOCLOSE OF oEDX
                                /* PISAliq 01|02" */
                                if alltrim(cCSTPIS) $ "01|02"
                                   EDX OPEN MARK "vBC"       TYPE "" TAG str( vBCPIS,9,2 )   AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "pPIS"      TYPE "" TAG str( pPIS,7,4 ) AUTOCLOSE OF oEDX // ERRO: Estava dividindo por 100
                                   EDX OPEN MARK "vPIS"      TYPE "" TAG str( vCSTPIS,9,2 ) AUTOCLOSE OF oEDX
                                   vTTCSTPIS         := vTTCSTPIS    + vCSTPIS
            endif
                                /* PISQtde 03 */
                                if alltrim(cCSTPIS) $ "03"
                                   EDX OPEN MARK "qBCProd"   TYPE "" TAG str( IIF(ES->IDOP>0,ES->PRODUZIDAS,ES->QUANTIDADE),12,4 ) AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "vAliqProd" TYPE "" TAG str( IIF(ES->IDOP>0,ES->PRODUZIDAS,ES->QUANTIDADE)*(pPIS),12,4 ) AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "vPIS"      TYPE "" TAG str( vCSTPIS,9,2 ) AUTOCLOSE OF oEDX
                                   vTTCSTPIS         := vTTCSTPIS    + vCSTPIS
            endif
                                /* PISNT   04|05|06|07|08|09 */
                                if alltrim(cCSTPIS) $ "04|05|06|07|08|09"
            endif
                                /* PISOutr 49|50|51|52|53|54|55|56|60|61|62|63|64|65|66|67|70|71|72|73|74|75|98|99 */
                                if alltrim(cCSTPIS) $ "49|50|51|52|53|54|55|56|60|61|62|63|64|65|66|67|70|71|72|73|74|75|98|99"
                                   EDX OPEN MARK "vBC"       TYPE "" TAG str( vBCPIS,9,2 )   AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "pPIS"      TYPE "" TAG str( pPIS,6,4 ) AUTOCLOSE OF oEDX // ERRO: Estava dividindo por 100
                                  EDX OPEN MARK "vPIS"      TYPE "" TAG str( vCSTPIS,9,2 ) AUTOCLOSE OF oEDX
                                   vTTCSTPIS         := vTTCSTPIS    + vCSTPIS
            endif
                            EDX CLOSE MARK OF oEDX // pisnt
                        EDX CLOSE MARK OF oEDX // pis
                     endif

                     if cCOFINSNat = "S" //.and. empty(ClInscrMun)
                        EDX OPEN MARK "COFINS" OF oEDX
                            cTAGCOFINS := "COFINSAliq"
                            /* COFINSAliq 01 Basica */       if alltrim(cCSTCOFINS) $ "01"               ; cTAGCOFINS := "COFINSAliq"; endif
                            /* COFINSAliq 02 Diferenciada */ if alltrim(cCSTCOFINS) $ "02"               ; cTAGCOFINS := "COFINSAliq"; endif
                            /* COFINSQtde 03 */              if alltrim(cCSTCOFINS) $ "03"               ; cTAGCOFINS := "COFINSQtde"; endif
                            /* COFINSNT   04...09 */         if alltrim(cCSTCOFINS) $ "04|05|06|07|08|09"; cTAGCOFINS := "COFINSNT"  ; pCOFINS := 0; endif
                            /* Somente para emitentes Simples Nacional */
                            /* COFINSOutr 49...99 */         if alltrim(cCSTCOFINS) $ "49|50|51|52|53|54|55|56|60|61|62|63|64|65|66|67|70|71|72|73|74|75|98|99"; cTAGCOFINS := "COFINSOutr"; endif
                            EDX OPEN MARK cTAGCOFINS OF oEDX
                                EDX OPEN MARK "CST"      TYPE "" TAG cCSTCOFINS AUTOCLOSE OF oEDX
                                /* COFINSAliq 01|02" */
                                if alltrim(cCSTCOFINS) $ "01|02"
                                   EDX OPEN MARK "vBC"          TYPE "" TAG str( vBCCOFINS,9,2 )   AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "pCOFINS"      TYPE "" TAG str( pCOFINS,7,4 ) AUTOCLOSE OF oEDX // ERRO: Estava dividindo por 100
                                   EDX OPEN MARK "vCOFINS"      TYPE "" TAG str( vCSTCOFINS,9,2 ) AUTOCLOSE OF oEDX
                                   vTTCSTCOFINS      := vTTCSTCOFINS + vCSTCOFINS
            endif
                                /* COFINSQtde 03 */
                                if alltrim(cCSTCOFINS) $ "03"
                                   EDX OPEN MARK "qBCProd"      TYPE "" TAG str( IIF(ES->IDOP>0,ES->PRODUZIDAS,ES->QUANTIDADE),12,4 ) AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "vAliqProd"    TYPE "" TAG str( IIF(ES->IDOP>0,ES->PRODUZIDAS,ES->QUANTIDADE)*(pCOFINS),12,4 ) AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "vCOFINS"      TYPE "" TAG str( vCSTCOFINS,9,2 ) AUTOCLOSE OF oEDX
                                   vTTCSTCOFINS      := vTTCSTCOFINS + vCSTCOFINS
            endif
                                /* COFINSNT   04|05|06|07|08|09 */
                                if alltrim(cCSTCOFINS) $ "04|05|06|07|08|09"
            endif
                                /* COFINSOutr 49|50|51|52|53|54|55|56|60|61|62|63|64|65|66|67|70|71|72|73|74|75|98|99 */
                                if alltrim(cCSTCOFINS) $ "49|50|51|52|53|54|55|56|60|61|62|63|64|65|66|67|70|71|72|73|74|75|98|99"
                                   EDX OPEN MARK "vBC"       TYPE "" TAG str( vBCCOFINS,9,2 )   AUTOCLOSE OF oEDX
                                   EDX OPEN MARK "pCOFINS"      TYPE "" TAG str( pCOFINS,7,4 ) AUTOCLOSE OF oEDX // ERRO: Estava dividindo por 100
                                   EDX OPEN MARK "vCOFINS"      TYPE "" TAG str( vCSTCOFINS,9,2 ) AUTOCLOSE OF oEDX
                                   vTTCSTCOFINS      := vTTCSTCOFINS + vCSTCOFINS
            endif
                            EDX CLOSE MARK OF oEDX // COFINSnt
                        EDX CLOSE MARK OF oEDX // COFINS
                     endif


Bons cálculos
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes



Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro