Salve salve....
Ponto de entrada NFECTSEV - ( Compras - Documento de Entrada )
MATA103-NFECTSEV - Customiza dados das múltiplas naturezas. MULTINATUREZA no compras
#INCLUDE "TOTVS.CH" /*/{Protheus.doc} NFECTSEV Customiza dados das múltiplas naturezas. MULTINATUREZA no compras @type function @author Eurai Rapelli @since 2023.01.01 /*/ User Function NFECTSEV() Local cFilialSB1 := xFilial('SB1') as character Local cFilialSF4 := xFilial('SF4') as character Local nTamArray1 := 0 as numeric Local nTamArray2 := 0 as numeric Local nTamArray3 := 0 as numeric Local nTotalNF := 0 as numeric Local nTotalItem := 0 as numeric Local nX := 0 as numeric Local nY := 0 as numeric Local nPosAt := 0 as numeric Local nDesconto := MaFisRet(,"NF_DESCONTO") as numeric Local nFrete := MaFisRet(,"NF_FRETE") as numeric Local nDespesa := MaFisRet(,"NF_DESPESA") as numeric Local nSeguro := MaFisRet(,"NF_SEGURO") as numeric Local nTotal := MaFisRet(,"NF_TOTAL") as numeric Local aHeadSEV := PARAMIXB[1] as array Local aColsSEV := PARAMIXB[2] as array Local aNaturez := {} as array aColsSEV := {} nTamArray1 := Len( aCols ) nTamArray3 := Len( aHeader ) For nX:=1 to nTamArray1 If( aCols[nX][nTamArray3 + 1] ) Loop Endif SB1->( MsSeek( cFilialSB1 + aCols[nX][ GdFieldPos('D1_COD') ] ) ) SF4->( MsSeek( cFilialSF4 + aCols[nX][ GdFieldPos('D1_TES') ] ) ) If( SF4->F4_DUPLIC == 'N' ) Loop Endif If( Empty( SB1->B1_XNAT ) ) Loop Endif nTotalItem := aCols[nX][ GdFieldPos('D1_TOTAL') ] + aCols[nX][ GdFieldPos('D1_VALIPI') ] nTotalNF += nTotalItem nPosAt := aScan( aNaturez, { |x| x[1] == SB1->B1_XNAT } ) If( nPosAt == 0 ) aAdd( aNaturez, { SB1->B1_XNAT, nTotalItem } ) Else aNaturez[nPosAt][2] += nTotalItem Endif Next nI nTamArray2 := Len( aNaturez ) For nX:=1 to nTamArray2 aAdd( aColsSEV, Array( Len( aHeadSEV ) + 1 ) ) For nY := 1 To Len( aHeadSEV ) If IsHeadRec(aHeadSEV[nY][2]) aColsSEV[Len( aColsSEV )][nY] := 0 ElseIf IsHeadAlias(aHeadSEV[nY][2]) aColsSEV[Len( aColsSEV )][nY] := "SEV" Else aColsSEV[Len( aColsSEV )][nY] := CriaVar( aHeadSEV[nY,2], .F. ) EndIf Next nY aColsSEV[Len( aColsSEV )][Len( aHeadSEV )+1] := .F. aColsSEV[nX][1] := aNaturez[nX][1] aColsSEV[nX][2] := ( aNaturez[nX][2] / nTotalNF ) * 100 Next nX Return( { aHeadSEV, aColsSEV } )
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎
Um abraço, e até a próxima