Línea de producto: | Microsiga Protheus | ||||
Segmento: | Servicios | ||||
Módulo: | Facturación | ||||
Rutina: |
| ||||
País(es): | Todos | ||||
Bases de Datos: | Todos | ||||
Sistema(s) operativo(s): | Todos |
Descripción: | La finalidad del punto de entrada MA411GRV es permitir manejar los datos que se grabarán en el pedido de ventas por medio del del TOTVS Colaboración. | ||||||||
Localización: | /Pedidos/Pedidos de venta | ||||||||
Eventos: | |||||||||
Programa fuente: | MATA411.PRW | ||||||||
Parámetros: | PARAMIXB[1] - Tipo: Array---> encabezado del pedido PARAMIXB[2] - Tipo: Array--> Ítems del pedido PARAMIXB[3] - Tipo: Numério--> Operación CRUD PARAMIXB[4] - Tipo: Carácter--> contenido del XML | ||||||||
Respuesta: |
|
Ejemplo:
#Include 'PROTHEUS.CH'
#Include 'XMLXFUN.CH'
#Include 'FILEIO.CH'
#Include "FWEVENTVIEWCONSTS.CH"
User Function MA411Grv()
Local aCabPed := PARAMIXB[1] //Encabezado del pedido
Local aItePed := PARAMIXB[2] //Ítems del pedido
Local nOpc := PARAMIXB[3] //Operación del sistema
Local cXML := PARAMIXB[4] //Contenido del XML
Local nPosQuant := 0
Local nPosVlrUnit := 0
Local nPosTotal := 0
Local nPosTES := 0
Local nPosCusto := 0
Local nPosStore := 0
Local nPosProd := 0
Local nX := 0
Local nY := 0
Local oXML := TXMLManager():New()
Local aItens := {}
//-------------------------------------------------------------------
// Parseia o XML.
//-------------------------------------------------------------------
If ( ! Empty( cXML ) .And. ( oXML:Read( cXML ) ) )
//-------------------------------------------------------------------
// Recupera los ítems del pedido.
//-------------------------------------------------------------------
aItens := oXML:XPathGetChildArray( "/BusinessContent/SalesOrderItens" )
nPosCusto := aScan( aCabPed, { |z| z[1] == "C5_CLIENTE" } )
nPosStore := aScan( aCabPed, { |z| z[1] == "C5_LOJACLI" } )
nPosQuant := aScan( aItePed[1], {|z| z[1] == "C6_QTDVEN" } )
nPosVlrUnit := aScan( aItePed[1], {|z| z[1] == "C6_PRCVEN" } )
nPosTotal := aScan( aItePed[1], {|z| z[1] == "C6_VALOR" } )
nPosProd := aScan( aItePed[1], { |z| z[1] == "C6_PRODUTO" } )
nPosTES := aScan( aItePed[1], { |z| z[1] == "C6_TES" } )
For nX := 1 To Len( aItens )
nVlrUnit := Val( oXML:XPathGetNodeValue( aItens[nX][2] +"/UnityPrice" ) )
//-------------------------------------------------------------------
// Modifica el precio de venta
//-------------------------------------------------------------------
If nVlrUnit > 0
aItePed[nX][nPosVlrUnit][2] := nVlrUnit + ( nVlrUnit * 0.20 )
aItePed[nX][nPosTotal][2] := A410Arred( aItePed[nX][nPosVlrUnit][2] * aItePed[nX][nPosQuant][2] , "C6_VALOR" )
EndIf
//-------------------------------------------------- ----------------
// Completa el TES de acuerdo con el TES Inteligente
// Parámetros de la rutina:
// ExpN1 = Documento de 1 - Entrada / 2 - Salida
// ExpC2 = Tipo de operación Tabla "DF" del SX5
// ExpC3 = Código de cliente o proveedor
// ExpC4 = Tienda del cliente o proveedor
// ExpC5 = Tipo CF
// ExpC6 = Producto
// ExpC7 = Campo
//-------------------------------------------------------------------
aItePed[nX][nPosTES][2] := MaTesInt( 2, '01', aCabPed[nPosCusto][2], aCabPed[nPosStore][2], 'C', aItePed[nX][nPosProd][2] )
Next nX
EndIf
Return{ aCabPed, aItePed }