Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

GFE05011 -

...

PERMITIR A CRIAÇÃO DA NUMERAÇÃO ESPECÍFICA DO ROMANEIO 

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Supply Chain - Logística

Módulo:

SIGAGFE

Ponto de Entrada:GFE05011

Descrição:

Utiliza a placa cadastrada no romaneio e a porcentagem minima cadastrada no veiculo para calcular o rateio das notas
Permite a geração específica de romaneio, conforme a necessidade do cliente.

Localização:

Chamado antes da chamada do cálculo (função GFECLCFRT)

Dentro da função GFE50NRROM() que é utilizada na criação de Romaneio, quando parametrizado para realizar integração com ERP Protheus e ERP Datasul.
A função GFE50NRROM() também pode ser utilizada para colocar na inicialização do campo GWN_NRROM.

Importante: PE não se aplica para integração OMS (OMSA200) e atualização protheus (OMSM011) de cargas do OMS (DAK).

Programa Fonte:

GFEA050 - Romaneio de Carga

Parâmetros

Retorno:

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

Retorno:

NomeTipoDescriçãoObrigatórioaItDocArrayArray contendo as alterações necessárias para o calculo
cNewNrRomCaracterNumero do romaneio.Sim
Bloco de código
languagedelphi
firstline1
titleExemplo: GFEA0508GFEA0511
linenumberstrue
#INCLUDE "PROTHEUS.CH"

User Function GFE05010GFE05011()
	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 aItDocreturn GETSXENUM("GWN","GWN_NRROM")