Histórico da Página
GFEXFB19 – Cálculo
rateiode
pedágioVale Pedágio
Características do Requisito
Linha de Produto: | Microsiga Protheus |
Segmento: | Supply Chain - Logística |
Módulo: | SIGAGFE |
Ponto de Entrada - GFEXFB19
Descrição: | Alterar o valor do componente de frete no cálculo de frete. Permite realizar o cálculo do vale pedágio para a simulação do frete. Restrições para uso do ponto: Esse ponto de entrada apenas poderá ser usado se a cidade de destino do cálculo estiver marcado como "Suframa", no cadastro de Cidades do SIGAGFE. Além disso o componente que se deseja alterar no ponto de entrada deve estar marcado como Suframa igual a 1-Não se aplica ou igual a 2-Tarifa Tab. Frete, no cadastro de Componentes do SIGAGFEo campo Desconto de pedágio (GV9_DESPED) existir na base de dados. | ||||||||||||||
Localização: | Ao final do cálculo do valor de cada componentevale pedágio. | ||||||||||||||
Programa Fonte: | GFEXFUNB - Cálculo de Frete | ||||||||||||||
Parâmetro: |
| ||||||||||||||
Retorno: |
|
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
User Function GFEXFB18GFEXFB19() Local nValoraParamComp := ParamIxbPARAMIXB[1] Local cComp lSimulacao := ParamIxb[2] IF nValor < 1000 .AND. cComp = "FRETE PESO " nValor += 150 EndIf Return nValor PARAMIXB[2] Local cCidDe Local cCidAte Local cCatPed := "" Local nNrEixos Local cCatPed Local nCalPorEixo Local nX Local aRetPrPed := {} Local nVlrPed := 0 Local lError := .F. if lSimulacao GFEXFB_1AREA(lTabTemp,cTRBAGRU, @aAgrFrt) GFEXFB_BORDER(lTabTemp,cTRBAGRU, 1,0) GFEXFB_2TOP(lTabTemp, cTRBAGRU, @aAgrFrt, 0) While !GFEXFB_3EOF(lTabTemp, cTRBAGRU, @aAgrFrt, 0) nNrEixos := POSICIONE("GV3",1,xFilial("GV3") + GFEXFB_5CMP(lTabTemp, cTRBAGRU, @aAgrFrt, 0,"CDTPVC"),"GV3_EIXOS") cCatPed := POSICIONE("GV3",1,xFilial("GV3") + GFEXFB_5CMP(lTabTemp, cTRBAGRU, @aAgrFrt, 0,"CDTPVC"),"GV3_CATPED") GFEXFB_1AREA(lTabTemp,cTRBUNC, @aTRBUNC2) GFEXFB_BORDER(lTabTemp,cTRBUNC,02,6) GFEXFB_CSEEK(lTabTemp, cTRBUNC, @aTRBUNC2, 6,{GFEXFB_5CMP(lTabTemp, cTRBAGRU, @aAgrFrt, 0,"NRAGRU")}) While !GFEXFB_3EOF(lTabTemp, cTRBUNC, @aTRBUNC2, 6) .AND. ; GFEXFB_5CMP(lTabTemp, cTRBUNC, @aTRBUNC2, 6,"NRAGRU") == GFEXFB_5CMP(lTabTemp, cTRBAGRU, @aAgrFrt, 0,"NRAGRU") // Verifica as tabelas do calculo de frete GFEXFB_1AREA(lTabTemp,cTRBTCF, @aTRBTCF1) GFEXFB_BORDER(lTabTemp,cTRBTCF,01,5) GFEXFB_CSEEK(lTabTemp, cTRBTCF, @aTRBTCF1, 5,{GFEXFB_5CMP(lTabTemp, cTRBUNC, @aTRBUNC2, 6,"NRCALC")}) While !GFEXFB_3EOF(lTabTemp, cTRBTCF, @aTRBTCF1, 5) .AND. GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"NRCALC") == GFEXFB_5CMP(lTabTemp, cTRBUNC, @aTRBUNC2, 6,"NRCALC") GFEXFB_1AREA(.F.,, @aTRBGRB1) GFEXFB_BORDER(.F.,,03,4) If GFEXFB_CSEEK(.F.,, @aTRBGRB1, 4,{GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"NRGRUP")}) GFEXFB_1AREA(lTabTemp,cTRBTRE, @aTRBTRE2) GFEXFB_BORDER(lTabTemp,cTRBTRE,02,7) if GFEXFB_CSEEK(lTabTemp, cTRBTRE, @aTRBTRE2, 7,{GFEXFB_5CMP(.F. , , @aTRBGRB1, 4,"CDTPDC" ), ; GFEXFB_5CMP(.F. , , @aTRBGRB1, 4,"EMISDC" ), ; GFEXFB_5CMP(.F. , , @aTRBGRB1, 4,"SERDC" ), ; GFEXFB_5CMP(.F. , , @aTRBGRB1, 4,"NRDC" ), ; GFEXFB_5CMP(lTabTemp, cTRBUNC, @aTRBUNC2, 6,"SEQTRE")}) cCidDe := GFEXFB_5CMP(lTabTemp, cTRBTRE, @aTRBTRE2, 7,"ORIGEM") cCidAte := GFEXFB_5CMP(lTabTemp, cTRBTRE, @aTRBTRE2, 7,"DESTIN") aRetPrPed := GFEXFB19BPP(cCidDe,cCidAte,cCatPed) For nX := 1 To Len(aRetPrPed) // Quando tarifa com categoria por Eixo, calcula Valor do Pedágio x Nr Eixos If !Empty(aRetPrPed[Nx][4]) nCalPorEixo := aRetPrPed[Nx][2] * nNrEixos nVlrPed += nCalPorEixo Else nVlrPed += aRetPrPed[nX][2] EndIf Next nX EndIf EndIf GFEXFB_1AREA(lTabTemp,cTRBTCF, @aTRBTCF1) GFEXFB_8SKIP(lTabTemp, cTRBTCF, 6) EndDo GFEXFB_1AREA(lTabTemp,cTRBUNC, @aTRBUNC2) GFEXFB_8SKIP(lTabTemp, cTRBUNC, 6) EndDo GFEXFB_1AREA(lTabTemp,cTRBAGRU, @aAgrFrt) GFEXFB_8SKIP(lTabTemp, cTRBAGRU, 6) EndDo lError := CalcRatPed(@aParamComp, nVlrPed, "0") Endif Return lError |