Árvore de páginas

Calculo do percentual de rateio por múltiplas naturezas e centro de custo.

 

Produto:

Microsiga Protheus

Versões:

11.8, 12.1.07 e 12.1.14

Ocorrência:

Ao incluir um título que possui rateio de múltiplas naturezas e centro de custo o sistema não esta gravando a porcentagem corretamente.

Ambiente:

SIGAFIN

Passo a passo:

Para composição do valor do percentual utilizado para distribuição do valor do titulo entre as Naturezas ou Centro de Custos utilizamos o calculo de percentagem dividindo o valor do titulo pelo valor distribuído, conforme abaixo:

Exemplo:

Incluir Titulo no valor de R$: 10.000,00

Realizar a distribuição entre as naturezas desejadas

Primeira natureza  40 % CC 30% e 70%
Segunda natureza  60 %


Gravação dos valores na tabela SEV(Múltiplas Naturezas por Título)

Valor do movimento dividido pelo valor do titulo 4.000,00/ 10.000,00

Natureza 001 EV_PERC = 0,4

Valor do movimento dividido pelo valor do titulo 6.000,00/ 10.000,00

Natureza 002 EV_PERC = 0,6

Gravação dos valores na tabela SEZ(Distribuição de naturezas por Centro de Custo)

Natureza 01 EZ_PERC = 0,3

Natureza 02 EZ_PERC = 0,7

Observações:

 Devido a limitações técnicas da linguagem ADVPL os valores de Percentuais de Distribuição acima de nove casas decimais terão seus valores arredondados.

EX: Percentual de Distribuição =  87.1756757

Gravação dos valores na tabela SEV(Múltiplas Naturezas por Título)

  EV_PERC = 0,8717568


Aviso

Ao incluir um título a pagar/receber contendo rateio de múltiplas naturezas com ou sem centro de custo e informar valores que faça com que o campo de percentual (%) fique com as 7 casas decimais preenchidas, o sistema gera valores distintos entre o rateio da inclusão e da baixa do título a pagar para alguns casos.

Quando é marcado o flag "Rateio Mult. Naturezas" a rotina verifica os percentuais de rateio já definidos e refaz o rateio com base no valor da baixa. Nesse momento, havendo dizima periódica no percentual (%) poderá haver diferença de centavos, tornando necessário aumentar o tamanho de casas decimais dos campos EV_PERC e EZ_PERC para que isso não ocorra.

Importante

O processo de alteração de títulos a pagar/receber via rotina automática não efetua alteração na estrutura de rateios multi naturezas e/ou rateios multi centros de custos e não há um processo automático para tal.

A única alteração ocorre quando se altera o valor do título, caso o mesmo não tenha sido contabilizado, já que a validação do valor faz recalcular os rateios.

Rotina Automática

Inclusão de títulos com rateios multi naturezas e centros de custos
#Include 'Protheus.ch'
#INCLUDE "TBICONN.CH"
 
USER FUNCTION 050MULT()
LOCAL aCab := {} // array que recebera o titulo a receber
LOCAL aAuxEv :={} // array auxiliar do rateio multinaturezas
LOCAL aRatEvEz:={} //array do rateio multinaturezas
LOCAL aAuxEz :={} // Array auxiliar de multiplos centros de custo
LOCAL aRatEz:={} //Array do rateio de centro de custo em multiplas naturezas
 
PREPARE ENVIRONMENT EMPRESA '01' FILIAL '0101001'
PRIVATE lMsErroAuto := .F.
 
aadd( aCab ,{"E2_PREFIXO" , 'AUT', Nil })            
aadd( aCab ,{"E2_NUM" ,GetSXeNum("SE2","E2_NUM"), Nil })
aadd( aCab ,{"E2_PARCELA" , '1', Nil })
aadd( aCab ,{"E2_TIPO" , 'NF ', Nil })
aadd( aCab ,{"E2_NATUREZ" , '001', Nil })
aadd( aCab ,{"E2_FORNECE" , '001   ', Nil })
aadd( aCab ,{"E2_LOJA" , '01', Nil })
aadd( aCab ,{"E2_EMISSAO" , dDataBase, Nil })
aadd( aCab ,{"E2_VENCTO" , dDataBase, Nil })
aadd( aCab ,{"E2_VALOR" , 100, Nil })
aadd( aCab ,{"E2_MULTNAT" , '1', Nil })//rateio multinaturezs = sim
       //Adicionando o vetor da natureza
       aadd( aAuxEv ,{"EV_NATUREZ" , padr('001',tamsx3("EV_NATUREZ")[1]), Nil })//natureza a ser rateada
       aadd( aAuxEv ,{"EV_VALOR" , 100, Nil })//valor do rateio na natureza
       aadd( aAuxEv ,{"EV_PERC" , "100", Nil })//percentual do rateio na natureza
       aadd( aAuxEv ,{"EV_RATEICC" , "1", Nil })//indicando que há rateio por centro de custo
       //Adicionando multiplos centros de custo
       //primeiro centro de custo
             aAuxEz:={}
             aadd( aAuxEz ,{"EZ_CCUSTO" , '001', Nil })//centro de custo da natureza
             aadd( aAuxEz ,{"EZ_VALOR" , 15, Nil })//valor do rateio neste centro de custo
             aadd(aRatEz,aAuxEz)
       //segundo centro de custo 
             aAuxEz:={}
             aadd( aAuxEz ,{"EZ_CCUSTO" , '002', Nil })//centro de custo na natureza
             aadd( aAuxEz ,{"EZ_VALOR" , 85, Nil })//valor do rateio neste centro de custo
             aadd(aRatEz,aAuxEz)
       aadd(aAuxEv,{"AUTRATEICC" , aRatEz, Nil })//recebendo dentro do array da natureza os multiplos centros de custo
       aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas
aAdd(aCab,{"AUTRATEEV",ARatEvEz,Nil})//adicionando ao vetor aCab o vetor do rateio
 
MsExecAuto( { |x,y,z| FINA050(x,y,z)} , aCab, ,3)//inclusao
If lMsErroAuto
    MostraErro()
Else
    Alert("Título incluído com sucesso!")
Endif
RESET ENVIRONMENT
Return