Punto de entrada - MT161CPO

Línea de producto:

Protheus

Segmento:

Manufactura

Módulo:

SIGACOM - Compras

Rutina:

Rutina

Nombre técnico

Análisis de cotizaciones

MATA161

País(es):

Brasil

Base(s) de datos:

Todos

Sistemas operativos:

Todos

Punto de entrada

Descripción:

El punto de entrada MT161CPO permite incluir campos personalizados en las grid "Productos" e "Ítem de la Propuesta", en la rutina Análisis de Cotización (MATA161).

Eventos:

La llamada del punto de entrada MT161CPO ocurre al hacer clic en la opción "Análisis da cotización" en la rutina Analiza Cotizaciones (MATA161).

Programa fuente:

MATA161.PRW

Función:

MATA161 - Análisis de la cotización - Mapa de cotización

Parámetros:

Parámetro

Tipo

Descripción

Obligatorio

PARAMIXB[1]

Array

Array que contiene los datos de las propuestas de los proveedores

No

PARAMIXB[2]

Array

Array con los datos de la grid "Productos"

No

Devolución:

Nombre

Tipo

Descripción

Obligatorio

aRet

Array

Array con cuatro dimensiones que contiene:
1 - Los datos de las propuestas de los proveedores en la misma estructura del array recibido como parámetro PARAMIXB[1], incrementado de las informaciones de los campos incluidos.
2 - Array con el nombre de los campos incluidos en la grid "Ítem de la propuesta".
3 - Los datos de los productos en la misma estructura del array recibido como parámetro PARAMIXB[2], incrementado de las informaciones de los campos incluidos.
4 - Array con el nombre de los campos incluidos en la grid "Productos".

Ejemplos:

#INCLUDE "PROTHEUS.CH"

User Function MT161CPO()  Local aPropostas := PARAMIXB[1] // Array con los datos de las propuestas de los proveedores
Local aItens 	 := PARAMIXB[2] // Array con los datos de la grid "Productos"
Local aCampos 	 := {"C8_PRECO"} // Array con los campos agregados en la grid "Ítem de la propuesta"
Local aCposProd  := {"C8_QTSEGUM","C8_SEGUM"} // Array con los campos agregados en la grid "Productos"
Local aRetorno 	 := {}
Local nX 		 := 0
Local nY 		 := 0
Local nZ 		 := 0
Local nCount 	 := 0
Local aAreaSC8   := SC8->(GetArea())

For nX := 1 To Len(aPropostas)
	For nY := 1 To Len(aPropostas[nX])
		For nZ := 1 To Len(aPropostas[nX][nY][2])
			nCount++

			//C8_FILIAL+C8_NUM+C8_FORNECE+C8_LOJA+C8_ITEM+C8_NUMPRO
			If Len(aPropostas[nX][nY][1]) > 0
				AADD(aPropostas[nX][nY][2][nZ], Posicione("SC8",1,SC8→(C8_FILIAL+C8_NUM)+aPropostas[nX][nY][1][1]+aPropostas[nX][nY][1][2]+aPropostas[nX][nY][2][nZ][2]+aPropostas[nX][nY][2][nZ][12], "C8_PRECO"))
			Else
				AADD(aPropostas[nX][nY][2][nZ],0)
			EndIf 
		Next nZ
	Next nY
Next nX

For nX := 1 To Len(aItens)
	//C8_FILIAL+C8_NUM+C8_FORNECE+C8_LOJA+C8_ITEM+C8_NUMPRO
	AADD(aItens[nX], Posicione("SC8",1,SC8→(C8_FILIAL+C8_NUM)+aItens[nX][10]+aItens[nX][11]+aItens[nX][12]+aItens[nX][13], "C8_QTSEGUM"))
	AADD(aItens[nX], Posicione("SC8",1,SC8→(C8_FILIAL+C8_NUM)+aItens[nX][10]+aItens[nX][11]+aItens[nX][12]+aItens[nX][13], "C8_SEGUM"))
Next nX

AADD(aRetorno, aPropostas)
AADD(aRetorno, aCampos)
AADD(aRetorno, aItens)
AADD(aRetorno, aCposProd)

RestArea(aAreaSC8)

Return aRetorno
#INCLUDE "PROTHEUS.CH"

User Function MT161CPO()  Local aPropostas := PARAMIXB[1] // Array con los datos de las propuestas de los proveedores
Local aItens 	 := PARAMIXB[2] // Array con los datos de la grid "Productos"
Local aCampos 	 := {"C8_XTESTE"} // Array con los campos agregados en la grid "Ítem de la propuesta"
Local aCposProd  := {"C8_XVALOR"} // Array con los campos agregados en la grid "Productos"
Local aRetorno   := {}
Local nX 		 := 0
Local nY 		 := 0
Local nZ 		 := 0
Local nCount 	 := 0

For nX := 1 To Len(aPropostas)
	For nY := 1 To Len(aPropostas[nX])
		For nZ := 1 To Len(aPropostas[nX][nY][2])
			nCount++
			AADD(aPropostas[nX][nY][2][nZ], "TESTE "+Str(nCount,2))
		Next nZ
	Next nY
Next nX

For nX := 1 To Len(aItens)
	AADD(aItens[nX], nX)
Next nX

AADD(aRetorno, aPropostas)
AADD(aRetorno, aCampos)
AADD(aRetorno, aItens)
AADD(aRetorno, aCposProd)

Return aRetorno

Informaciones adicionales:

Los nombres de los campos se deben incluir en los array de devolución en la misma orden en que se incluyeron en las informaciones de los productos y de las propuestas.
En el array de productos, todos los productos deben tener los mismos campos incluidos y, en el array de datos de las propuestas, todas las propuestas deben tener los mismos campos incluidos.
Este punto de entrada no realiza la grabación de campos en la tabla SC8 y tampoco permite editar la información de los campos personalizados en la pantalla, solo muestra la información.

Estructura del Array aPropostas

//aItens[n,x]: Número del ítem
//aItens[n,1]: C8_PRODUTO
//aItens[n,2]: C8_IDENT
//aItens[n,3]: C8_QUANT
//aItens[n,4]: C8_ UM
//aItens[n,5]: C8_ DATPRF
//aItens[n,6]: C8_ FILENT
//aItens[n,7]: valor del producto por propuesta elegida
//aItens[n,8]: Descripción del producto
//aItens[n,9]: Flag finalizado
//aItens[n,10]: Proveedor
//aItens[n,11]: Tienda
//aItens[n,12]: Ítem
//aItens[n,13]: Número de la propuesta
//aItens[n,14]: Ítem de la solicitud
//aItens[n,15]: Precio unitario
//aItens[n,16]: B1_CODITE [Integración Gestión de Concesionarias - MV_VEICULO = S]
//aItens[n,17]: B1_GRUPO [Integración Gestión de Concesionarias - MV_VEICULO = S]

//ENCABEZADO
//aPropostas[n] : Número de la página
//aPropostas[n,p] : Posición del pedido en la página (1,2)
//aPropostas[n,p,1,x] : Datos del encabezado de la propuesta
//aPropostas[n,p,1,1 ] : Cód Proveedor
//aPropostas[n,p,1,2 ] : Tienda
//aPropostas[n,p,1,3 ] : Nombre
//aPropostas[n,p,1,4 ] : Propuesta
//aPropostas[n,p,1,5 ] : Cond pago
//aPropostas[n,p,1,6 ] : Flete
//aPropostas[n,p,1,7 ] : Valor total (suma de nCusto de los ítems)


//ÍTEMS DE LA PROPUESTA//
//aPropostas[n,p,2,x] : Ítems de la propuesta
//aPropostas[n,p,2,x,1] : Flag vencedor (lWin)
//aPropostas[n,p,2,x,2] : Ítem (SC8->C8_ITEM)
//aPropostas[n,p,2,x,3] : Cód producto (SC8->C8_PRODUTO)
//aPropostas[n,p,2,x,4] : Valor total (nCusto)
//aPropostas[n,p,2,x,5] : Fecha de entrega ((DATE()+SC8->C8_PRAZO))
//aPropostas[n,p,2,x,6] : Observaciones (SC8->C8_OBS)
//aPropostas[n,p,2,x,7] : Sucursal Entrega (SC8->C8_FILENT)
//aPropostas[n,p,2,x,8] : Flag finalizado (lFim)
//aPropostas[n,p,2,x,9] : Recno SC8 (SC8->(Recno()))
//aPropostas[n,p,2,x,10] : Ident. (SC8->C8_IDENT)
//aPropostas[n,p,2,x,11] : Total de ítems de la cotización (Len(aItens))
//aPropostas[n,p,2,x,12] : Nº de la propuesta (SC8->C8_NUMPRO)
//aPropostas[n,p,2,x,13] : Precio unitario (SC8->C8_PRECO)
//aPropostas[n,p,2,x,14] : Flag vencedor (lWinAud)
//aPropostas[n,p,2,x,15] : Motivo Vencedor (SC8->C8_MOTVENC)