Duda
¿Cuál es el punto de entrada para agregar/modificar items de Productos (aCols) usando la opción "Otras Acciones >> Facturas" en la carga de documentos del tipo NCP/NDP?
Ambiente
Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Compras (SIGACOM) - A partir de la versión 11
Solución
El punto de entrada LOCXPE54 permite agregar o modificar los ítems del array aCols. Este punto de entrada se ejecuta en el proceso de carga de documentos del tipo NCP/NDP a través de la opción "Otras Acciones >> Facturas".
El punto de entrada LOCXPE54 recibe como parámetro el tipo de documento que está cargando en el sistema. A continuación, se comparte un ejemplo de la función de usuario para el punto de entrada LOCXPE54.
#Include 'Protheus.ch'
User Function LOCXPE54()
Local nTipoDoc := StrZero(Paramixb[1], 2)
Local nUsado := Len(aHeader)
Local nPItem := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_ITEM', 'D2_ITEM')})
Local nPProduto := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_COD', 'D2_COD')})
Local nPLocal := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_LOCAL', 'D2_LOCAL')})
Local nPTes := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_TES', 'D2_TES')})
Local nCfo := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_CF', 'D2_CF')})
Local nPUM := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_UM', 'D2_UM')})
Local nPTotal := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_TOTAL', 'D2_TOTAL')})
Local nPVlUnit := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_VUNIT', 'D2_PRCVEN')})
Local nPProvEn := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_PROVENT', 'D2_PROVENT')})
Local nPFornec := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_FORNECE', 'D2_CLIENTE')})
Local nPFornLj := Ascan(aHeader,{|x| Alltrim(x[2]) == IIf( nTipoDoc $ '08/09', 'D1_LOJA', 'D2_LOJA')})
Local cItem := aCols[Len(aCols)][nPItem]
Local nX, nY := 0
If !MsgYesNo("¿Agregar item adicional?","LOCXPE54")
Return
EndIf
Aadd(aCols, Array(nUsado+1))
nX := Len(aCols)
For nY := 1 to Len(aHeader)
aCols[nX][nY] := CriaVar(aHeader[nY][2])
Next nY
aCols[nX][nUsado+1] := .F.
If nPItem > 0
cItem := Soma1(cItem)
If nPItem <> 0
aCols[nX][nPItem] := cItem
EndIf
Endif
If nPProduto > 0 ; aCols[nX][nPProduto] := '000000000000002' ; EndIf
If nPLocal > 0 ; aCols[nX][nPLocal] := '01' ; EndIf
If nPTes > 0 ; aCols[nX][nPTes] := IIf( nTipoDoc $ '08/09', '006', '501') ; EndIf
If nCfo > 0 ; aCols[nX][nCfo] := IIf( nTipoDoc $ '08/09', '112', '612') ; EndIf
If nPUM > 0 ; aCols[nX][nPUM] := 'PC' ; EndIf
If nPTotal > 0 ; aCols[nX][nPTotal] := 10.00 ; EndIf
If nPVlUnit > 0 ; aCols[nX][nPVlUnit] := 10.00 ; EndIf
If nPProvEn > 0 ; aCols[nX][nPProvEn] := 'BA' ; EndIf
If nPFornec > 0 ; aCols[nX][nPFornec] := IIf( nTipoDoc $ '08/09', M->F1_FORNECE, M->F2_CLIENTE) ; EndIf
If nPFornLj > 0 ; aCols[nX][nPFornLj] := IIf( nTipoDoc $ '08/09', M->F1_LOJA, M->F2_LOJA) ; EndIf
Return
0 Comentarios