Producto: | TOTVS Backoffice |
Línea de producto: | Línea Protheus |
Segmento: | Backoffice |
Módulo: | SIGAFAT - Facturación |
Función: | MATI410EC1 - Pedidos de venta por mensaje único SalesOrder |
El punto de entrada MT410VAR permite manejar los array del encabezado e ítems que se enviarán a la rutina automática del MATA410 durante la integración por mensaje único SalesOrder, que permite incluir, modificar o eliminar campos.
Importante
No se permite realizar solamente la eliminación de ítem(s) del Pedido de Venta en el proceso de integración del mensaje SALESORDER, para realizar el proceso de eliminación, es necesario eliminar el pedido de venta y crear uno nuevo, informando solamente los ítems deseados.
Existe la posibilidad de utilizar este punto de entrada (MT410VAR) que permite eliminar solamente ítem(s) en la modificación. Para esto, es necesario manejar el array aItens, incluyendo las informaciones de LINPOS y AUTODELETA según el siguiente ejemplo documentado en el ítem 06.
MT410VAR() ---> aRet
Nombre | Tipo | Descripción | Estándar | Obligatorio | Referencia |
PARAMIXB | Vector | Vector con los datos del pedido que se está ejecutando en el mensaje único SalesOrder, donde: |
Respuesta | Tipo | Descripción | Obligatorio |
---|---|---|---|
aRet | Array | Array que contiene los datos de los campos que se procesarán en la rutina Pedido de Ventas. | Sí |
#Include'Totvs.ch' User Function MT410VAR Local aCab := aClone(PARAMIXB[1]) //Encabezado Local aItens := aClone(PARAMIXB[2]) //Ítems Local aRet := {} //Respuesta de las personalizaciones del usuario Local nPosCli := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" }) Local nPosCPag := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" }) Local nPosNum := 0 Local nPosProd := 0 Local nPosCC := 0 Local nPosDes := 0 Local nX := 0 oJson := fwEAIobj():new() oJson:Activate() oJson:loadJson(PARAMIXB[3]) //JSON If cEvent == "UPSERT" //Inclusión o Modificación If (nPosNum := Ascan(aCab,{ |X| X[1] == "C5_NUM" })) > 0 //Modificación If aCab[nPosCli][2] == "FAT001" aCab[nPosCPag][2] := "001" EndIf For nX:= 1 To Len(aItens) If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0 If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001" If (nPosCC := Ascan(aItens[nX],{ |X| X[1] == "C6_CC" })) > 0 aItens[nX][nPosCC][2] := "FAT000002" Else aAdd( aItens[nX], { "C6_CC", "FAT000002", Nil } ) EndIf EndIf EndIf Next Else //Inclusión If aCab[nPosCli][2] == "FAT001" aCab[nPosCPag][2] := "002" EndIf For nX:= 1 To Len(aItens) If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0 If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001" If (nPosCC := Ascan(aItens[nX],{ |X| X[1] == "C6_CC" })) > 0 //C6_VALDESC aItens[nX][nPosCC][2] := "FAT000001" Else aAdd( aItens[nX], { "C6_CC", "FAT000001", Nil } ) EndIf EndIf EndIf Next EndIf ElseIf cEvent == "DELETE" //Eliminación For nX:= 1 To Len(aItens) If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0 If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001" If (nPosDes := Ascan(aItens[nX],{ |X| X[1] == "C6_VALDESC" })) > 0 aItens[nX][nPosDes][2] := 0 EndIf EndIf EndIf Next EndIf aRet := {aCab,aItens} Return aRet