GFEXFB16 - PERMITIR ALTERAR O VALOR DO PEDÁGIO NO CÁLCULO DO FRETE
Características do Requisito
Linha de Produto: | Microsiga Protheus |
Segmento: | Supply Chain - Logística |
Módulo: | SIGAGFE |
Ponto de Entrada: | GFEXFB16 | ||||||||||||||||
Descrição: | Altera o valor do pedágio no cálculo do frete | ||||||||||||||||
Localização: | Na função CalcRatPed - Calcula o rateio do desconto de pedágio | ||||||||||||||||
Programa Fonte: | GFEXFUNB - Serviço de Integração do Frete Embarcador (SIGAGFE) | ||||||||||||||||
Parâmetros: | Não se aplica. | ||||||||||||||||
Retorno: |
|
Exemplo: GFEXFB16
#Include 'Protheus.ch' User Function GFEXFB16() Local aVlRoteiro := {} Local cSeq := "" Local aRatPed := {} Local lRet := .T. Local nRoteiro Local nValorTotal := 0 Local nValor := 0 Local nPedagio := 0 Local nX := 0 Local aParamComp := {} If IsInCallStack("GFEWSSIMULATION") if ValType(aPedEsp) = "A" for nPedagio = 1 to len(aPedEsp) if aPedEsp[nPedagio][2] != "" .and. VAL(aPedEsp[nPedagio][2]) != 0 aAdd(aVlRoteiro,{aPedEsp[nPedagio][1],'01',VAL(aPedEsp[nPedagio][2]),0,0,.T.}) endif next nPedagio // Lógica para gravação do rateio do pedágio foi transferido do programa padrão para o específico GFEXFB_1AREA(lTabTemp,cTRBTCF, @aTRBTCF1) GFEXFB_BORDER(lTabTemp,cTRBTCF,01,5) GFEXFB_2TOP(lTabTemp, cTRBTCF, @aTRBTCF1, 5) GFEXFB_1AREA(lTabTemp,cTRBCCF, @aTRBCCF1) GFEXFB_BORDER(lTabTemp,cTRBCCF,01,9) While !GFEXFB_3EOF(lTabTemp, cTRBTCF, @aTRBTCF1, 5) cNrCalc := GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"NRCALC") cCdTrp := GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"CDTRP") cNrTab := GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"NRTAB") cNrNeg := GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"NRNEG") cCdClFr := GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"CDCLFR") cCdTpOp := GFEXFB_5CMP(lTabTemp, cTRBTCF, @aTRBTCF1, 5,"CDTPOP") GFEXFB_1AREA(lTabTemp,cTRBTRE, @aTRBTRE2) GFEXFB_BORDER(lTabTemp,cTRBTRE,01,7) If GFEXFB_CSEEK(lTabTemp, cTRBTRE, @aTRBTRE2, 7,{cNrCalc}) lRet := .F. cNrDc := GFEXFB_5CMP(lTabTemp, cTRBTRE, @aTRBTRE2, 7,"NRDC") cSeq := GFEXFB_5CMP(lTabTemp, cTRBTRE, @aTRBTRE2, 7,"SEQ") For nRoteiro := 1 to Len(aVlRoteiro) if alltrim(aVlRoteiro[nRoteiro][1]) == alltrim(cNrDc) .and. alltrim(aVlRoteiro[nRoteiro][2]) == alltrim(cSeq) GV9 -> ( dbSetOrder(01)) If GV9->( dbSeek(xFilial("GV9")+cCdTrp+cNrTab+cNrNeg) ) If !Empty(GV9->GV9_DESPED) // Somente tabelas que tem configurado o componente de desconto de pedágio pode participar do cálculo nValor := GFETotFret(cNrCalc) cCdComp := GV9->GV9_DESPED GFEXFB_1AREA(lTabTemp,cTRBCCF, @aTRBCCF1) //dbSelectArea(cTRBCCF) GFEXFB_BORDER(lTabTemp,cTRBCCF,01,9) //dbSetOrder(01) If GFEXFB_CSEEK(lTabTemp, cTRBCCF, @aTRBCCF1, 9,{cNrCalc,cCdClFr, cCdTpOp,cCdComp}) //dbSeek() cCatVal := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"CATVAL") nQtde := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"QTDE") cTotFre := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"TOTFRE") cBasImp := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"BASIMP") cBapIco := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"BAPICO") cFreMin := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"FREMIN") cIdMin := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"IDMIN") nVlrMi := GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"VLFRMI") Else cCatVal := Posicione("GV2", 1, xFilial("GV2") + cCdComp, "GV2_CATVAL") nQtde := 0 GUY -> ( dbSetOrder(01)) If GUY->( dbSeek(xFilial("GUY") + cCdTrp + cNrTab + cNrNeg + cCdComp )) cTotFre := GUY->GUY_TOTFRE cBasImp := GUY->GUY_BASIMP cBapIco := GUY->GUY_BAPICO cFreMin := GUY->GUY_FREMIN EndIf cIdMin := "2" nVlrMi := 0 EndIf lCompInfor := .T. If aScan(aRatPed,{|x| x[1] == cNrCalc}) == 0 nValorTotal := nValorTotal + nValor EndIf nVlrPed := aVlRoteiro[nRoteiro][3] * IIF(GV9->GV9_ACVPED == '2', 1, -1) aVlRoteiro[nRoteiro][1] := cNrCalc aVlRoteiro[nRoteiro][4] += nValor aVlRoteiro[nRoteiro][5] += 1 aVlRoteiro[nRoteiro][6] := .T. //aAdd(aRatPed, {cNrCalc,cCdClFr, cCdTpOp, cCdComp, cCatVal, nQtde, nValor, cTotFre, cBasImp, cBapIco, cFreMin, cIdMin, nVlrMi, aVlRoteiro[nRoteiro][2], GV9->GV9_ACVPED}) aAdd(aRatPed, {cNrCalc,cCdClFr, cCdTpOp, cCdComp, cCatVal, nQtde, nVlrPed, cTotFre, cBasImp, cBapIco, cFreMin, cIdMin, nVlrMi, aVlRoteiro[nRoteiro][2], GV9->GV9_ACVPED}) EndIf Endif Endif next Endif GFEXFB_1AREA(lTabTemp,cTRBTCF, @aTRBTCF1) GFEXFB_8SKIP(lTabTemp, cTRBTCF, 5) EndDo Endif For nX := 1 to Len(aRatPed) GFEXFB_1AREA(lTabTemp,cTRBCCF, @aTRBCCF1) GFEXFB_BORDER(lTabTemp,cTRBCCF,01,9) If GFEXFB_CSEEK(lTabTemp, cTRBCCF, @aTRBCCF1, 9,{aRatPed[nX][1], ; aRatPed[nX][2], ; aRatPed[nX][3], ; aRatPed[nX][4]}) GFEXFB_DRECLOCK(lTabTemp,cTRBCCF,.F.) GFEXFB_5CMP(lTabTemp, cTRBCCF, @aTRBCCF1, 9,"VALOR", aRatPed[nX][7]) GFEXFB_EMSUNLOCK(lTabTemp,cTRBCCF) Else If lTabTemp RecLock(cTRBCCF,.T.) (cTRBCCF)->NRCALC := aRatPed[nX][1] (cTRBCCF)->CDCLFR := aRatPed[nX][2] (cTRBCCF)->CDTPOP := aRatPed[nX][3] (cTRBCCF)->CDCOMP := aRatPed[nX][4] (cTRBCCF)->CATVAL := aRatPed[nX][5] (cTRBCCF)->VALOR := aRatPed[nX][7] (cTRBCCF)->QTDE := aRatPed[nX][6] (cTRBCCF)->TOTFRE := aRatPed[nX][8] (cTRBCCF)->BASIMP := aRatPed[nX][9] (cTRBCCF)->BAPICO := aRatPed[nX][10] (cTRBCCF)->FREMIN := aRatPed[nX][11] (cTRBCCF)->IDMIN := "2" MsUnLock(cTRBCCF) Else aAdd(aTRBCCF1,{ aRatPed[nX][1],; //NRCALC aRatPed[nX][2],; //CDCLFR aRatPed[nX][3],; // CDTPOP Space(04),; //SEQ aRatPed[nX][4],; //CDCOMP aRatPed[nX][5],; //CATVAL aRatPed[nX][6],; //QTDE aRatPed[nX][7],; //VALOR aRatPed[nX][8],; //TOTFRE aRatPed[nX][9],; //BASIMP aRatPed[nX][10],; //BAPICO aRatPed[nX][11],; //FREMIN "2",; //IDMIN 0,; //VLFRMI "0",; //DELETADO Space(6),; //NRLCENT Space(1)}) //CPEMIT EndIf GFEParamComp({ aRatPed[nX,4], ; aRatPed[nX,8], ; aRatPed[nX,9], ; aRatPed[nX,10], ; aRatPed[nX,11], ; aRatPed[nX,1]},@aParamComp) EndIf Next nX If !lTabTemp aTRBCCF2 := aClone(aTRBCCF1) aTRBCCF3 := aClone(aTRBCCF1) aSort(aTRBCCF1 ,,,{|x,y| x[01]+x[02]+x[03]+x[05] < y[01]+y[02]+y[03]+y[05]}) aSort(aTRBCCF2 ,,,{|x,y| x[01]+x[05] < y[01]+y[05]}) aSort(aTRBCCF3 ,,,{|x,y| x[01]+x[02]+x[03]+x[04] < y[01]+y[02]+y[03]+y[04]}) EndIf Endif Return {aVlRoteiro, aRatPed, lRet}
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas