[[Category:MACRO]]
== Descripción ==
Ejecuta el proceso core del menú principal.

Consta de 4 vectores:
#Menu
#:Screener del menú. Tiene que ser igual al objeto Listbox del FORM.
#Tipo
#:Tipo de objeto seleccionado: F=Form, S=Separador, R=Report
#Objeto
#:Nombre del Objeto
#Path
#:Cual es el árbol a recorrer (anidamiento del menú) para lograr la ejecución del proceso
== Biblioteca ==
*[[LIBR:SpanexM]]

== Composición ==
== Código ==
<small><pre>
Sub ExecuteProcess (oEvent AS Object)
Dim oParser As String
Dim vMenu()
Dim vTipo()
Dim vObjeto()

	ItemSeleccionado 	=  oEvent.Source.SelectedItem
	' * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	' Warning. If MsgBox function call, oEvent is reset, so, take a value object to maintain parameters
	' * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	vMenu	()		= Array("Contactos","Precios","Presupuestos","Productos","Valores","Salida"
	vMenu(0)	= Array("Consulta Clientes CRM",_
									"Contactos",_
									"Posicion CRM",_
									"Bitacora CRM",_
									"Reportes",_
									" > Contactos")
	vMenu(1)	= Array("Cambio Masivo",_
									"Masivo Coeficientes Actualizacion",_
									"Precios General",_
									"Precios Tabular Normal",_
									"Precios Tabular por Procesos",_
									"Reportes",_
									" > Lista de Precios")
	vMenu(2)	= Array("Presupuestos",_
									"Reportes",_
									" > Presupuesto Activo")
	vMenu(3)	= Array("Categorias",_
									"Composiciones",_
									"  > Copia Composicion",_
									"  > Masivo por Elemento",_
									"  > Masivo por Producto",_
									"  > Productos - Elementos",_
									"Modulos",_
									"  > Bocetos",_
									"  > Modulos",_
									"  > Modulos por Linea Control",_
									"Productos",_
									"Reportes",_
									" > Productos")
	vMenu(4)	= Array("Cheques",_
									"Cobranzas",_
									"Pagos")
	vTipo()		= Array("Contactos","Precios","Presupuestos","Productos","Valores","Salida"
	vTipo(0)		= Array("F","F","F","F","S","R")
	vTipo(1)		= Array("F","F","F","F","F","S","R")
	vTipo(2)		= Array("F","S","R")
	vTipo(3)		= Array("F","S","F","F","F","F","S","F","F","F","F","S","R")
	vTipo(4)		= Array("F","F","F")
	vObjeto()	= Array("Contactos","Precios","Presupuestos","Productos","Valores","Salida"
	vObjeto(0)	= Array("Consulta Clientes CRM",_
									"Contactos",_
									"Posicion CRM",_
									"Bitacora CRM",_
									"SeparadorReportes",_
									"Contactos -Resumen-")
	vObjeto(1)	= Array("Cambio Masivo",_
									"Masivo Coeficientes Actualizacion",_
									"Precios General",_
									"Precios Tabular Normal",_
									"Precios Tabular por Procesos",_
									"SeparadorReportes",_
									"Lista de Precios")
	vObjeto(2)	= Array("Presupuestos",_
									"SeparadorReportes",_
									"Presupuestos")
	vObjeto(3)	= Array("Categoria",_
									"Composiciones",_
									"Copia Composicion",_
									"Masivo por Elemento",_
									"Masivo por Producto",_
									"Productos-Elementos",_
									"Modulos",_
									"Bocetos",_
									"Modulos",_
									"Modulos por Linea Control",_
									"Productos",_
									"SeparadorReportes",_
									"Productos")
	vObjeto(4)	= Array("Cheques",_
									"Cobranzas",_
									"Pagos")
	vPath()	= Array("Contactos","Precios","Presupuestos","Productos","Valores","Salida")
	vPath(0)	= Array("1.Gestion:Contactos:Consulta Clientes CRM",_
								"1.Gestion:Contactos:Contactos",_
								"1.Gestion:Contactos:Posicion CRM",_
								"1.Gestion:Contactos:Bitacora CRM",_
								"SeparadorReportes",_
								"Contactos -Resumen-")
	vPath(1)	= Array("1.Gestion:Precios:Cambio Masivo",_
								"1.Gestion:Precios:Masivo Coeficientes Actualizacion",_
								"1.Gestion:Precios:Precios General",_
								"1.Gestion:Precios:Precios Tabular Normal",_
								"1.Gestion:Precios:Precios Tabular por Procesos",_
								"SeparadorReportes",_
								"Lista de Precios")
	vPath(2)	= Array("1.Gestion:Presupuestos:Presupuestos",_
								"SeparadorReportes",_
								"Presupuestos")
	vPath(3)	= Array("1.Gestion:Productos:Categoria",_
								"1.Gestion:Productos:Composiciones",_
								"1.Gestion:Productos:Composicion:Copia Composicion",_
								"1.Gestion:Productos:Composicion:Masivo por Elemento",_
								"1.Gestion:Productos:Composicion:Masivo por Producto",_
								"1.Gestion:Productos:Composicion:Productos-Elementos",_
								"1.Gestion:Productos:Modulos:Modulos",_
								"1.Gestion:Productos:Modulos:Bocetos",_
								"1.Gestion:Productos:Modulos:Modulos",_
								"1.Gestion:Productos:Modulos:Modulos por Linea Control",_
								"1.Gestion:Productos:Productos",_
								"SeparadorReportes",_
								"Productos")
	vPath(4)	= Array("1.Gestion:Valores:Cheques",_
								"1.Gestion:Valores:Cobranzas",_
								"1.Gestion:Valores:Pagos")
	select case oEvent.Source.ImplementationName
		case "com.sun.star.comp.forms.OButtonControl"
		case "com.sun.star.comp.forms.OListBoxControl"
			For i = 0 To UBound(vMenu())
				oUbicacion	= aSeek(vMenu(i),oEvent.Source.SelectedItem)
				if 	oUbicacion <> -1 Then 
					'i	= UBound(vMenu(i))
					select case vTipo(i)(oUbicacion)
						case "F":
							oFormLaunch	= ThisDatabaseDocument.FormDocuments
							vParser	= Split(vPath(i)(oUbicacion),":")
							for j=0 to uBound(vParser())
								oFormLaunch = oFormLaunch.getByName(vParser(j))
							Next
							oFormLaunch.Open()
						case "R":
							oReportLaunch	= ThisDatabaseDocument.ReportDocuments
							vParser	= Split(vPath(i)(oUbicacion),":")
							oParser	=  ""
							for j=0 to uBound(vParser())
								oReportLaunch = oReportLaunch.getByName(vParser(j))
								oParser				= vParser(j)
							Next
							oContenedor	= ThisDatabaseDocument.ReportDocuments
							oConexion		= ThisComponent.Parent.CurrentController.ActiveConnection
							OpenReport(oContenedor, oConexion, oParser)
					end select
					i	= UBound(vMenu())
				end if
			Next i
	end select
end Sub
</pre></small>
== Bitácora ==
==== Bitácora.20131018 ====
Se corrige el código en el marco de la eliminación de un elemento del menú mal ingresado [[FORM:FormMenu#Bitácora.20131018]]

== Uso ==