GFE05010 - Permitir utilizar um percentual de garantia de pagamento
Características do Requisito
Linha de Produto: | Microsiga Protheus |
Segmento: | Supply Chain - Logística |
Módulo: | SIGAGFE |
Ponto de Entrada: | GFE05010 |
Descrição: | Utiliza a placa cadastrada no romaneio e a porcentagem minima cadastrada no veiculo para calcular o rateio das notas |
Localização: | Chamado antes da chamada do cálculo (função GFECLCFRT) |
Programa Fonte: | GFEA050 - Romaneio de Carga |
Parâmetros: | Nome | Tipo | Descrição | Obrigatório |
---|
PARAMIXB[1] | Caractere | Placa do veiculo cadastrado no romaneio | Sim | PARAMIXB[1] | Array | Array das notas (aItDoc) | Sim |
|
Retorno: | Nome | Tipo | Descrição | Obrigatório |
---|
aItDoc | Array | Array contendo as alterações necessárias para o calculo | Sim |
|
#INCLUDE "PROTHEUS.CH"
User Function GFE05010()
Local GWN_PLACAD := PARAMIXB[1]
Local aItDoc := PARAMIXB[2]
Local nPesoMin := 0
Local nPesoRom := 0
Local nValorNotas := 0
Local i
for i:= 1 to len(aItDoc)
nPesoRom += aItDoc[i][9] //GW8_PESOR. definir romaneio
Next i
dbSelectArea("GU8")
GU8->(dbSetOrder(2))
If GU8->( dbSeek(xFilial("GU8") + GWN_PLACAD) )
If GU8->GU8_XPCINI <> 0 .And. GU8->GU8_CARGUT <> 0
nPesoMin := GU8->GU8_XPCINI * GU8->GU8_CARGUT / 100 //definir o peso minimo
EndIf
EndIf
If !Empty(GWN_PLACAD) .And. nPesoMin > 0 .And. nPesoMin > nPesoRom //Calculo por peso minimo
for i:= 1 to len(aItDoc)
aItDoc[i][9] += ROUND(((nPesoMin-nPesoRom)/nPesoRom*aItDoc[i][9]),2) //faz calculo do rateio para todas as notas
nValorNotas += aItDoc[i][9]
Next i
If nValorNotas != nPesoMin //verifica o valor do peso minimo com os valores arredondados adicionados nas notas
aItDoc[1][9] += nPesoMin - nValorNotas //corrige diferença na primeira nota
EndIf
EndIf
GU8->(dbCloseArea())
return aItDoc