Árvore de páginas

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 mínima cadastrada no veículo 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:

NomeTipoDescriçãoObrigatório
PARAMIXB[1]CaracterePlaca do veiculo cadastrado no romaneioSim
PARAMIXB[1]ArrayArray das notas (aItDoc)Sim

Retorno:

NomeTipoDescriçãoObrigatório
aItDocArrayArray contendo as alterações necessárias para o calculoSim
Exemplo: GFEA0508
#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