Home

Linha Microsiga Protheus

Páginas filhas
  • Exemplo de cálculo de impostos variáveis -- 11431

Exemplo de cálculo de impostos variáveis




Advanced Protheus 6.09 , Advanced Protheus 7.10

User FUNCTION IMPVAR(cCalculo,nItem,aInfo)<br>Local aImpRef, aImpVal,nI <br>Local xRet := 0<br>Local aItemINFO<br>Local aImposto<br>Local cImpIncid<br>Local nE<br>Local nOrdSFC,nRegSFC,cImp,nAliq,nBase<br>Local lXFis := (cCalculo &lt;&gt; Nil)<br><br>xRet := 0<br>cImp := aInfo[1]<br><br>Do Case<br> //Deve reetornar a base do imposto<br> Case cCalculo == &quot;B&quot;<br> xRet := MafisRet(nItem,&quot;IT_VALMERC&quot;)<br> //Verifica se existe algum imposto que incide na base de calculo,e e inclui o //valor deste na base<br> SFC-&gt;(DbSetOrder(2))<br> If (SFC-&gt;(MsSeek(xFilial(&quot;SFC&quot;)+MaFisRet(nItem,&quot;IT_TES&quot;)+aInfo[1]))) <br> ;.And. !Empty(SFC-&gt;FC_INCIMP)<br> aImpRef := MaFisRet(nItem,&quot;IT_DESCIV&quot;)<br> aImpVal := MaFisRet(nItem,&quot;IT_VALIMP&quot;)<br> For nI:=1 to Len(aImpRef)<br> If !Empty(aImpRef[nI])<br> IF Trim(aImpRef[nI][1]) $ SFC-&gt;FC_INCIMP<br> xRet += aImpVal[nI]<br> Endif<br> Endif<br> Next<br> Endif<br> //Deve retornar a aliquota do imposto (esta deve ser pega do <br> //campo FB_ALIQ)<br> Case cCalculo == &quot;A&quot;<br> SFB-&gt;(DbSetOrder(1))<br> SFB-&gt;(MsSeek(xFilial(&quot;SFB&quot;)+aInfo[1]))<br> xRet := SFB-&gt;FB_ALIQ<br> //Deve retornar o valor do imposto<br> Case cCalculo == &quot;V&quot;<br> xRet := MafisRet(nItem,&quot;IT_BASEIV&quot;+aInfo[2]) * ;<br> (MafisRet(nItem,&quot;IT_ALIQIV&quot;+aInfo[2]) /100)<br>EndCase<br><br>//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ//³Os campos onde serao gravados os valoes de base, valor e aliquota ³<br>//³devem estar definidos na tabelas SFB confome a seguinte padronizacao³<br>//³??_ALQIMPx para a aliquota, onde x e o numero de Imposto variavel ³<br>//³??_BASIMPx para a base, onde x e o numero de Imposto variavel ³<br>//³??_VALIMPx para o valor, onde x e o numero de Imposto variavel ³<br>//³este rdmake so deve tratar os calculos conforme o exemplo acima. ³<br>//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ<br><br><br>RETURN xRet<br>

Nível 1 (Acesso Clientes)
Espanhol , Inglês