(557,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:Presupuesto]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:Presupuesto]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:Presupuesto]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:Presupuesto]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:Presupuesto]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:Presupuesto]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:Presupuesto]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:Presupuesto]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:Presupuesto]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:Presupuesto]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:Presupuesto]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:Presupuesto]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:Presupuesto]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación FORM:Presupuesto>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación FORM:Presupuesto>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de FORM:Presupuestos>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(558,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(559,'== Descripción ==\nDespliega cartel indicador de Presupuesto Expirado en [[FORM:Presupuesto]]. Se asocia a [[MACRO:ControlFormPresupuesto]]\n== Composición ==\nTABLA:contactos\nFORM:Presupuesto\n== Código ==\n<pre>\n</pre>\n== Bitácora ==\n*20120911\n**Cambio de macro por diseño de [[FORM:Presupuesto]]\n<small><pre>\nSub PresupuestoExpirado (oEvent As Object)\n\nDim oForm		As Object\nDim oContactoID	As String\nDim oExpirado	As String\nDim oVigencia	As Integer\n\'Dim oFechaPresu As String\n\n	oForm		= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n	if Not(oForm.IsNew) Then\n		oExpirado	= \"\"\n		oCondicion	= \"\"\n		\'oContactoID	= oForm.getByName(\"txtVidQuoteCliente\").CurrentValue\n		\'oFechaPresu	= CDatefromISO(oForm.getByName(\"fmtVidQuoteFecha\").CurrentValue)\n		oContactoID	= oForm.Columns.getByName(\"VidQuoteCliente\").getString()\n		oFecha		= oForm.Columns.getByName(\"VidQuoteFecha\").getDate()\n		oFechaPresu	= DateSerial(oFecha.year,oFecha.Month,oFecha.day)\n		oCondicion	= oCondicion & \"ContactoID=\"&chr(39)& oContactoID &chr(39)\n		oVigencia	= Val(QuerySimple(\"VigenciaDocs\",\"\",\"contactos\",oCondicion,\"Integer\"))\n		oDiferencia	= DateDiff(\"d\",oFechaPresu,date())\n		if oDiferencia > oVigencia Then\n			oForm.getByName(\"Expirado\").setString(\"Expirado\")\n		else\n			oForm.getByName(\"Expirado\").setString(\"Vigente\")\n		end if\n	end if\nend Sub\n</pre></small>\n== Uso ==\n[[FORM:Presupuesto]]\n[[MACRO:ControlFormPresupuesto]]','utf-8'),(560,'== Descripción ==\nDespliega cartel indicador de Presupuesto Expirado en [[FORM:Presupuesto]]. Se asocia a [[MACRO:ControlFormPresupuesto]]\n== Composición ==\n*[[TABLA:contactos]]\n*[[FORM:Presupuesto]]\n\n== Código ==\n<pre>\n</pre>\n== Bitácora ==\n*20120911\n**Cambio de macro por diseño de [[FORM:Presupuesto]]\n<small><pre>\nSub PresupuestoExpirado (oEvent As Object)\n\nDim oForm		As Object\nDim oContactoID	As String\nDim oExpirado	As String\nDim oVigencia	As Integer\n\'Dim oFechaPresu As String\n\n	oForm		= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n	if Not(oForm.IsNew) Then\n		oExpirado	= \"\"\n		oCondicion	= \"\"\n		\'oContactoID	= oForm.getByName(\"txtVidQuoteCliente\").CurrentValue\n		\'oFechaPresu	= CDatefromISO(oForm.getByName(\"fmtVidQuoteFecha\").CurrentValue)\n		oContactoID	= oForm.Columns.getByName(\"VidQuoteCliente\").getString()\n		oFecha		= oForm.Columns.getByName(\"VidQuoteFecha\").getDate()\n		oFechaPresu	= DateSerial(oFecha.year,oFecha.Month,oFecha.day)\n		oCondicion	= oCondicion & \"ContactoID=\"&chr(39)& oContactoID &chr(39)\n		oVigencia	= Val(QuerySimple(\"VigenciaDocs\",\"\",\"contactos\",oCondicion,\"Integer\"))\n		oDiferencia	= DateDiff(\"d\",oFechaPresu,date())\n		if oDiferencia > oVigencia Then\n			oForm.getByName(\"Expirado\").setString(\"Expirado\")\n		else\n			oForm.getByName(\"Expirado\").setString(\"Vigente\")\n		end if\n	end if\nend Sub\n</pre></small>\n== Uso ==\n[[FORM:Presupuesto]]\n[[MACRO:ControlFormPresupuesto]]','utf-8'),(561,'== Descripción ==\nDespliega cartel indicador de Presupuesto Expirado en [[FORM:Presupuesto]]. Se asocia a [[MACRO:ControlFormPresupuesto]]\n== Composición ==\n*[[TABLA:contactos]]\n*[[FORM:Presupuesto]]\n\n== Código ==\n<pre>\n</pre>\n== Bitácora ==\n*20120911\n**Cambio de macro por diseño de [[FORM:Presupuesto]]\n<small><pre>\nSub PresupuestoExpirado (oEvent As Object)\n\nDim oForm		As Object\nDim oContactoID	As String\nDim oExpirado	As String\nDim oVigencia	As Integer\n\'Dim oFechaPresu As String\n\n	oForm		= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n	if Not(oForm.IsNew) Then\n		oExpirado	= \"\"\n		oCondicion	= \"\"\n		\'oContactoID	= oForm.getByName(\"txtVidQuoteCliente\").CurrentValue\n		\'oFechaPresu	= CDatefromISO(oForm.getByName(\"fmtVidQuoteFecha\").CurrentValue)\n		oContactoID	= oForm.Columns.getByName(\"VidQuoteCliente\").getString()\n		oFecha		= oForm.Columns.getByName(\"VidQuoteFecha\").getDate()\n		oFechaPresu	= DateSerial(oFecha.year,oFecha.Month,oFecha.day)\n		oCondicion	= oCondicion & \"ContactoID=\"&chr(39)& oContactoID &chr(39)\n		oVigencia	= Val(QuerySimple(\"VigenciaDocs\",\"\",\"contactos\",oCondicion,\"Integer\"))\n		oDiferencia	= DateDiff(\"d\",oFechaPresu,date())\n		if oDiferencia > oVigencia Then\n			oForm.getByName(\"Expirado\").setString(\"Expirado\")\n		else\n			oForm.getByName(\"Expirado\").setString(\"Vigente\")\n		end if\n	end if\nend Sub\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:ControlFormPresupuesto]]','utf-8'),(562,'==Tablas, Vistas==\n<pre>\n== Descripción ==\n== Composición ==\n== Estructura ==\n< pre>\n< /pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n== Uso ==\n== URL ==\n</pre>\n==Formularios==\n<pre>\n== Descripción ==\n== Composición ==\n== Estructura ==\n== Código Relacionado ==\n== Bitácora ==\n== Uso ==\n</pre>\n==Macros==\n<pre>\n== Descripción ==\n== Composición ==\n== Código ==\n< small>< pre>\n< /pre>< /small>\n== Bitácora ==\n== Uso ==\n</pre>','utf-8'),(563,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*ListBoxes de Productos\n*Asigna Defaults\n== Composición ==\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120912\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Uso ==','utf-8'),(564,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*ListBoxes de Productos\n*Asigna Defaults\n== Composición ==\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120912\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(565,'== Descripción ==\nEjecuta controles de:\n*Licencia\n<strike>*ListBoxes de Productos</strike>(20120912)\n*Asigna Defaults\n\n== Composición ==\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120912\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(566,'== Descripción ==\nEjecuta controles de:\n*Licencia\n<strike>*ListBoxes de Productos</strike> (20120912)\n*Asigna Defaults\n\n== Composición ==\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120912\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(567,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*<strike>ListBoxes de Productos</strike> (20120912)\n*Asigna Defaults\n\n== Composición ==\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120912\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(568,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*<strike>ListBoxes de Productos</strike> (20120912)\n*Asigna Defaults\n\n== Composición ==\n*[[MACRO:ChequeoValorLicenciaOK]]\n\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120912\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(569,'== Descripción ==\nChequea que haya pasado correctamente el acceso a la base de datos y que no esté en modalidad de desarrollo ([[VARG:oCheckEstadoLicencia]])\n== Composición ==\n== Código ==\n<small><pre>\nFunction ChequeoValorLicenciaOK(oEvent as Object)\n\nDim oMensaje 	As String\n\n	\'MsgBox(\"Licenciamiento= \" & CStr(oEstadoLicenciamientoOK))\n	\'MsgBox(\"Cambio a 0\")\n	\'oEstadoLicenciamientoOK=0\n	if oEstadoLicenciamientoOK=1 Then\n		\'MsgBox(\"Licencia Ok\")\n	else\n		oMensaje = \"\"\n		oMensaje = oMensaje + \"Chequeo de Licencia Erronea.\" + Chr(13)\n		oMensaje = oMensaje + \"Solicite sea instalado nuevamente por CloudOffice (R)\" + Chr(13)\n		oMensaje = oMensaje + \"Mensajes a info@cloudoffice.com.ar\" + Chr(13)\n		MsgBox(oMensaje, 16, \"Error Fatal\")\n		if oCheckEstadoLicencia Then\n			oEvent.Source.ActiveConnection.close()\n			StarDesktop.Terminate()\n		else\n			oEstadoLicenciamientoOK=1\n		end if\n	endif\n	\'MsgBox(\"ChequeoValorLicenciaOK: Fin\")\n\nend Function\n</pre></small>\n== Bitácora ==\n== Uso ==','utf-8'),(570,'== Descripción ==\nChequea que haya pasado correctamente el acceso a la base de datos y que no esté en modalidad de desarrollo ([[VARG:oCheckEstadoLicencia]])\n== Composición ==\n== Código ==\n<small><pre>\nFunction ChequeoValorLicenciaOK(oEvent as Object)\n\nDim oMensaje 	As String\n\n	\'MsgBox(\"Licenciamiento= \" & CStr(oEstadoLicenciamientoOK))\n	\'MsgBox(\"Cambio a 0\")\n	\'oEstadoLicenciamientoOK=0\n	if oEstadoLicenciamientoOK=1 Then\n		\'MsgBox(\"Licencia Ok\")\n	else\n		oMensaje = \"\"\n		oMensaje = oMensaje + \"Chequeo de Licencia Erronea.\" + Chr(13)\n		oMensaje = oMensaje + \"Solicite sea instalado nuevamente por CloudOffice (R)\" + Chr(13)\n		oMensaje = oMensaje + \"Mensajes a info@cloudoffice.com.ar\" + Chr(13)\n		MsgBox(oMensaje, 16, \"Error Fatal\")\n		if oCheckEstadoLicencia Then\n			oEvent.Source.ActiveConnection.close()\n			StarDesktop.Terminate()\n		else\n			oEstadoLicenciamientoOK=1\n		end if\n	endif\n	\'MsgBox(\"ChequeoValorLicenciaOK: Fin\")\n\nend Function\n</pre></small>\n== Bitácora ==\n== Uso ==\n*[[MACRO:Main]]\n*[[FORM:Presupuesto]]','utf-8'),(571,'== Descripción ==\nChequea que haya pasado correctamente el acceso a la base de datos y que no esté en modalidad de desarrollo ([[VARG:oCheckEstadoLicencia]])\n== Composición ==\n== Código ==\n<small><pre>\nFunction ChequeoValorLicenciaOK(oEvent as Object)\n\nDim oMensaje 	As String\n\n	\'MsgBox(\"Licenciamiento= \" & CStr(oEstadoLicenciamientoOK))\n	\'MsgBox(\"Cambio a 0\")\n	\'oEstadoLicenciamientoOK=0\n	if oEstadoLicenciamientoOK=1 Then\n		\'MsgBox(\"Licencia Ok\")\n	else\n		oMensaje = \"\"\n		oMensaje = oMensaje + \"Chequeo de Licencia Erronea.\" + Chr(13)\n		oMensaje = oMensaje + \"Solicite sea instalado nuevamente por CloudOffice (R)\" + Chr(13)\n		oMensaje = oMensaje + \"Mensajes a info@cloudoffice.com.ar\" + Chr(13)\n		MsgBox(oMensaje, 16, \"Error Fatal\")\n		if oCheckEstadoLicencia Then\n			oEvent.Source.ActiveConnection.close()\n			StarDesktop.Terminate()\n		else\n			oEstadoLicenciamientoOK=1\n		end if\n	endif\n	\'MsgBox(\"ChequeoValorLicenciaOK: Fin\")\n\nend Function\n</pre></small>\n== Bitácora ==\n== Uso ==\n*[[MACRO:Main]]\n*[[MACRO:EventoWhenLoadingFromCabecera]]\n*[[FORM:Presupuesto]]','utf-8'),(572,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*<strike>ListBoxes de Productos</strike> (20120912)\n*Asigna Defaults\n\n== Composición ==\n*[[MACRO:ChequeoValorLicenciaOK]]\n\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n== Bitácora ==\n*20120911\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n*20120912\n**Optimización por nuevo diseño de [[FORM:Presupuesto]]\n\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(573,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*<strike>ListBoxes de Productos</strike> (20120912)\n*Asigna Defaults\n\n== Composición ==\n*[[MACRO:ChequeoValorLicenciaOK]]\n\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oForm	 		As Object\n\n	\'EventoWhenLoadingFromCabecera - Inicio\n    ChequeoValorLicenciaOK(oEvent)\n	oForm 	= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n	\'EventoWhenLoadingFromCabecera - Fin\n	\nend Sub\n\'***********************************************************\n</pre></small>\n\n== Bitácora ==\n*20120911\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n*20120912\n**Optimización por nuevo diseño de [[FORM:Presupuesto]]\n\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(574,'== Descripción ==\nEjecuta controles de:\n*Licencia\n*<strike>ListBoxes de Productos</strike> (20120912)\n*Asigna Defaults\n\n== Composición ==\n*[[MACRO:ChequeoValorLicenciaOK]]\n\n== Código ==\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oForm	 		As Object\n\n	\'EventoWhenLoadingFromCabecera - Inicio\n	ChequeoValorLicenciaOK(oEvent)\n	oForm 	= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	\'Inicialización de Tareas y objetos\n	Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n	\'EventoWhenLoadingFromCabecera - Fin\n	\nend Sub\n\'***********************************************************\n</pre></small>\n\n== Bitácora ==\n*20120911\n**Cambio de Diseño [[FORM:Presupuestos]]\n<small><pre>\n\'***********************************************************\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oDocument 		As Object\nDim oForm	 		As Object\nDim oCampo			As Object\nDim oSubForm 		As Object\nDim oSubSubForm 	As Object\nDim oSubSubFormGrid	As Object\nDim oListBox		As Object\n\n    \'ChequeaLicenciaOK\n    \'MsgBox(\"EventoWhenLoadingFromCabecera: Inicio\")\n    \'MsgBox(\"Call ChequeoValorLicenciaOK\")\n    ChequeoValorLicenciaOK(oEvent)\n\n    oDocument 		= ThisComponent\n	oForm 			= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm 		= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm 	= oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")\n	\n	oListBox 		= oSubSubFormGrid.getByName(\"txtElementoID\")\n	oListBox.ListSource = Array(\"\")\n	oListBox.Refresh\n\n    oEstadoListBoxDetalleProducto	= 0\n    \'Inicialización de Tareas y objetos\n    Hoy(oForm,oForm.getbyname(\"fmtVidQuoteFecha\"))\n    \'MsgBox(\"Call NewResetListBox from EventoWhenLoadingFromCabecera\")\n	NewResetListBoxDetalleProducto(oEvent)\n	\'MsgBox(\"EventoWhenLoadingFromCabecera: Fin\")\n	\nend Sub\n\'***********************************************************\n</pre></small>\n*20120912\n**Optimización por nuevo diseño de [[FORM:Presupuesto]]\n\n== Uso ==\n*[[FORM:Presupuesto]]\n**Form:Cabecera','utf-8'),(575,'== Descripción ==\nControl de Registro de [[TABLA:vidquoten1]] y su cascada. Despliegue de datos de acuerdo a condiciones propias de los atributos del registro.\n== Composición ==\n[[FORM:Presupuesto]]\n== Código ==\n<small><pre>\nSub ControlFormPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source\n	if NOT(oForm.IsNew) Then\n		oEstado			= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n		\n		\'Bloquea FormCabecera\n		oForm.getByName(\"txtVidQuoteClienteDSC\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"txtVidQuoteCliente\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"datVidQuoteFecha\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"txtVidQuoteACom\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"fmtVidQuoteObra\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"txtVidQuoteEstado\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"txtVidQuoteAComDSC\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		\n		oForm.getByName(\"BtnContactoExpress\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oForm.getByName(\"BtnActualizar\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	\n		\'Bloquea FormProductos\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubForm.getByName(\"fmtVidQuoteProdCantidad\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"txtVidQuoteQuick\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"txtVidQuoteProdID\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"txtVidQuoteProdDSC\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"fmtVidQuoteAncho\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"fmtVidQuoteAlto\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		\n		\'Bloquea FormComponentesDisplay\n		oSSubForm		= oSubForm.getByName(\"ComponentesDisplay\")\n		oSSubForm.getByName(\"BtnEditar\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSSubForm.getByName(\"BtnAplicar\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSSubForm.getByName(\"BtnReset\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		\n		\'Despliega Estado (Expirado)\n		oContactoID	= oForm.getByName(\"txtVidQuoteCliente\").CurrentValue\n		oFecha		= CDateFromIso(oForm.getByName(\"datVidQuoteFecha\").CurrentValue)\n		oCondicion	= oCondicion & \"ContactoID=\"&chr(39)& oContactoID &chr(39)\n		oVigencia	= Val(QuerySimple(\"VigenciaDocs\",\"\",\"contactos\",oCondicion,\"Integer\"))\n		oDiferencia	= DateDiff(\"d\",oFecha,date())\n		oStatus		= iif(oDiferencia > oVigencia,\"Expirado\",\"Vigente\")\n		oForm.getByName(\"Expirado\").setString(iif(oDiferencia > oVigencia,\"Expirado\",\"Vigente\"))\n	end if\n	\'MsgBox \"Test\"\nend Sub\n</pre></small>\n== Bitácora ==\n*20120910\n**Alta de MACRO\n== Uso ==\nFORM:Presupuesto','utf-8'),(576,'== Descripción ==\nFunción para aplicar ante acción de eliminar registro en [[TABLA:vidquoten1]] y [[TABLA:vidquoten2]] dentro de [[FORM:Presupuesto]]\n<small><pre>\nFunction ConfirmaDeletePresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n	\n	select case oEvent.Source.Model.Name\n		Case \"Cabecera\"\n			oForm			= oEvent.Source.Model\n			oEstado			= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n			if oEstado Then\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"No es posible eliminar un Presupuesto Aprobado\"\n				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,\"Atención\")\n				ConfirmaDeletePresupuesto	= False\n			else\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"Se procederá a eliminar el Presupuesto seleccionado. ¿Desea continuar?\"\n				if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION,\"Atención!\") = IDYES Then\n					\'MsgBox \"Eliminó\"\n					ConfirmaDeletePresupuesto	= True\n				else\n					ConfirmaDeletePresupuesto	= False\n				end if\n			end if\n		Case \"Productos\"\n			oForm		= oEvent.Source.Model.Parent\n			oSubForm	= oEvent.Source.Model\n			oEstado		= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n			if oEstado Then\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"No es posible eliminar Productos de un Presupuesto Aprobado\"\n				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,\"Atención\")\n				ConfirmaDeletePresupuesto	= False\n			else\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"Se procederá a eliminar el Producto seleccionado. ¿Desea continuar?\"\n				if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION,\"Atención!\") = IDYES Then\n					\'MsgBox \"Eliminó\"\n					ConfirmaDeletePresupuesto	= True\n				else\n					ConfirmaDeletePresupuesto	= False\n				end if\n			end if\n	end select\nend Function\n</pre></small>\n== Bitácora ==\n== Uso ==','utf-8'),(577,'== Descripción ==\nFunción para aplicar ante acción de eliminar registro en [[TABLA:vidquoten1]] y [[TABLA:vidquoten2]] dentro de [[FORM:Presupuesto]]\n== Composición ==\n[[FORM:Presupuesto]]\n== Código ==\n<small><pre>\nFunction ConfirmaDeletePresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n	\n	select case oEvent.Source.Model.Name\n		Case \"Cabecera\"\n			oForm			= oEvent.Source.Model\n			oEstado			= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n			if oEstado Then\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"No es posible eliminar un Presupuesto Aprobado\"\n				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,\"Atención\")\n				ConfirmaDeletePresupuesto	= False\n			else\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"Se procederá a eliminar el Presupuesto seleccionado. ¿Desea continuar?\"\n				if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION,\"Atención!\") = IDYES Then\n					\'MsgBox \"Eliminó\"\n					ConfirmaDeletePresupuesto	= True\n				else\n					ConfirmaDeletePresupuesto	= False\n				end if\n			end if\n		Case \"Productos\"\n			oForm		= oEvent.Source.Model.Parent\n			oSubForm	= oEvent.Source.Model\n			oEstado		= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n			if oEstado Then\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"No es posible eliminar Productos de un Presupuesto Aprobado\"\n				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,\"Atención\")\n				ConfirmaDeletePresupuesto	= False\n			else\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"Se procederá a eliminar el Producto seleccionado. ¿Desea continuar?\"\n				if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION,\"Atención!\") = IDYES Then\n					\'MsgBox \"Eliminó\"\n					ConfirmaDeletePresupuesto	= True\n				else\n					ConfirmaDeletePresupuesto	= False\n				end if\n			end if\n	end select\nend Function\n</pre></small>\n== Bitácora ==\n== Uso ==\n*[[FORM:Presupuesto]]\n**EVNT:ConfirmDelete','utf-8'),(578,'== Descripción ==\nFunción para aplicar ante acción de eliminar registro en [[TABLA:vidquoten1]] y [[TABLA:vidquoten2]] dentro de [[FORM:Presupuesto]]\n== Composición ==\n[[FORM:Presupuesto]]\n== Código ==\n<small><pre>\nFunction ConfirmaDeletePresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n	\n	select case oEvent.Source.Model.Name\n		Case \"Cabecera\"\n			oForm			= oEvent.Source.Model\n			oEstado			= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n			if oEstado Then\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"No es posible eliminar un Presupuesto Aprobado\"\n				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,\"Atención\")\n				ConfirmaDeletePresupuesto	= False\n			else\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"Se procederá a eliminar el Presupuesto seleccionado. ¿Desea continuar?\"\n				if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION,\"Atención!\") = IDYES Then\n					\'MsgBox \"Eliminó\"\n					ConfirmaDeletePresupuesto	= True\n				else\n					ConfirmaDeletePresupuesto	= False\n				end if\n			end if\n		Case \"Productos\"\n			oForm		= oEvent.Source.Model.Parent\n			oSubForm	= oEvent.Source.Model\n			oEstado		= oForm.getByName(\"txtVidQuoteEstado\").CurrentValue\n			if oEstado Then\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"No es posible eliminar Productos de un Presupuesto Aprobado\"\n				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,\"Atención\")\n				ConfirmaDeletePresupuesto	= False\n			else\n				oMensaje	= \"\"\n				oMensaje	= oMensaje & \"Se procederá a eliminar el Producto seleccionado. ¿Desea continuar?\"\n				if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION,\"Atención!\") = IDYES Then\n					\'MsgBox \"Eliminó\"\n					ConfirmaDeletePresupuesto	= True\n				else\n					ConfirmaDeletePresupuesto	= False\n				end if\n			end if\n	end select\nend Function\n</pre></small>\n== Bitácora ==\n*20120909\n**Alta de MACRO\n\n== Uso ==\n*[[FORM:Presupuesto]]\n**EVNT:ConfirmDelete','utf-8'),(579,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(580,'=== Estructuras de Datos ===\n==== Tablas ====\n* [[TABLA:accreceiv]]\n* [[TABLA:accpayab]]\n* [[TABLA:catinsumos]]\n* [[TABLA:cmoneda]]\n* [[TABLA:composicion]]\n* [[TABLA:composicionqry]]\n* [[TABLA:contactos]]\n* [[TABLA:cpar]]\n* [[TABLA:debugstmt]]\n* [[TABLA:elementos]]\n* [[TABLA:insumos]]\n* [[TABLA:listasprecios]]\n* [[TABLA:logprecios]]\n* [[TABLA:monedas]]\n* [[TABLA:precios]]\n* [[TABLA:preciosqry]]\n* [[TABLA:productos]]\n* [[TABLA:reppresqry]]\n* [[TABLA:tdocumento]]\n* [[TABLA:telemecomp]]\n* [[TABLA:transacciones]]\n* [[TABLA:ttransac]]\n* [[TABLA:vidquoten1]]\n* [[TABLA:vidquoten2]]\n* [[TABLA:vidquoten3]]\n* [[TABLA:vidquoten3tmp]]\n* [[TABLA:vidquoten4]]\n===== Template Layout General =====\n* [[TEMP:LayoutGeneral]]\n\n==== Vistas ====\n[http://sqlformat.appspot.com/ SQLFormatBeautify]\n*[[VISTA:acomerciales]]\n*[[VISTA:clientes]]\n*[[VISTA:listavigente]]\n*[[VISTA:precioscmpl]]\n*[[VISTA:preciosvigact]]\n*[[VISTA:preciosvigentes]]\n*[[VISTA:proveedores]]\n*[[VISTA:viscabdetalla]]\n*[[VISTA:viscompcnt]]\n*[[VISTA:viscompodis]]\n*[[VISTA:viscomposimpl]]\n*[[VISTA:visdetaobs]]\n*[[VISTA:visdocpcob]]\n*[[VISTA:vistranscrm]]\n*[[VISTA:visintdetpre]]\n*[[VISTA:vislineabs]]\n*[[VISTA:visprdparam]]\n*[[VISTA:visprestot]]\n*[[VISTA:visprodadic]]\n*[[VISTA:visreppres]]\n*[[VISTA:visrprescmp]]\n*[[VISTA:vissubxitem]]\n*[[VISTA:chqactivos]]\n*[[VISTA:vischtdisp]]\n*[[VISTA:vistotprod]]\n\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Objetos ===\n==== Formularios ====\n*[[FORM:Presupuesto]]\n*[[FORM:CopiaComposicion]]\n*[[FORM:Pagos]]\n*[[FORM:Cobranzas]]\n\n==== Reportes ====\n*[[REPORTE:Presupuestos]]\n*[[REPORTE:PresupuestosDirecto]]\n\n=== Procedimientos ===\n* [[PROC:AltaItemPresupuesto]]\n* [[PROC:AltaItemPresupuestoTmp]]\n* [[PROC:CalculoPrecio]]\n* [[PROC:CalculoMedidaReal]]\n* [[PROC:DuplicaProductoCompo]]\n* [[PROC:AgregaProductoCompo]]\n\n=== Subrutinas ===\n*[[MACRO:PresupuestoExpirado]]\n===== BotonEnviarCorreoPresupuesto =====\n*FORM:Presupuesto#Cabecera\n*EVNT:MouseButtonPressed\n===== BotonImprimirPresupuesto =====\n*FORM:Presupuesto#Cabecera\n*EVNT:MouseButtonPressed\n===== CambioEstadoItem =====\n===== ConfirmeEliminarProducto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordAction\n*FORM:Presupuesto#DetalleProducto\n*EVNT:ConfirmDeletion\n===== DateStampPrecioUpdate =====\n===== DebugAcc =====\n*FORM:\n*EVNT: Test\n\n===== EventoAfterRecordAction =====\n*FORM:\n*EVNT: Test\n\n===== EventoBeforeRecordChange =====\n*FORM:\n*EVNT: Test\n\n===== EventoBeforeReloading =====\n*FORM:\n*EVNT: Test\n\n===== EventoBRADetallePresupuesto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordAction\n\n===== EventoBRCDetallePresupuesto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordChange\n===== EventoWhenLoadingFormCabecera =====\n===== EventoWhenLoading =====\n*FORM:Presupuesto#Cabecera\n*EVNT:WhenLoading\n===== EventoWhenReloading =====\n===== GeneraNuevoDefaultListaPrecio =====\n===== Hoy =====\n===== LookupData =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:AfterUpdating\n===== Main =====\n*FORM:Presupuesto#Forms\n*EVNT:MainForDebug \n===== MouseAdentro =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:Test \n===== NewProductoListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:MouseButtonPressed \n===== NewResetListBoxDetalleProducto =====\n*FORM:Presupuesto#DetallePresupuesto =====\n*EVNT:BeforeReloading\n*FORM:Presupuesto#DetalleProducto\n*EVNT:BeforeReloading\n*FORM:Presupuesto#DetallePresupuestoGrid\n*EVNT:AfterUpdating\n===== ProdDetaProdDSCListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A\n===== ProdDetaProdIDListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A \n===== ResetListBoxDetalleProducto =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A','utf-8'),(581,'==Tablas, Vistas==\n<pre>\n== Descripción ==\n== Composición ==\n== Estructura ==\n< pre>\n< /pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n== Uso ==\n== URL ==\n</pre>\n==Formularios==\n<pre>\n== Descripción ==\n== Composición ==\n== Estructura ==\n== Código Relacionado ==\n== Bitácora ==\n== Uso ==\n</pre>\n==Macros==\n<pre>\n== Descripción ==\n== Biblioteca ==\n== Composición ==\n== Código ==\n< small>< pre>\n< /pre>< /small>\n== Bitácora ==\n== Uso ==\n</pre>','utf-8'),(582,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(583,'== Descripción ==\n== Biblioteca ==\n== Composición ==\n== Código ==\n<small><pre>\n</pre></small>\n== Bitácora ==\n*20120914\n**Cambio por rediseño [[FORM:Presupuesto]]\n<small><pre>\nSub EventoBRCDetallePresupuesto (oEvent as Object)\n\nDim oDocument as Object\nDim oForm as Object\nDim oSubForm as Object\nDim oSubSubForm as Object\nDim oSubSubFormGrid as Object\nDim SQLStatement as Variant\nDim oNombreImpControlador as String\nDim oNombreImpFormularios as String\nDim oVidQuoteProdID as String\nDim aVidQuoteProdID as String\nDim oMensaje as String\nDim verifica\nDim strSQLSearch as String\nDim oContadorRegistros as Double\n\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Inicio\")\n	oDocument = ThisComponent\n	oForm = ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm = oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm = oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")  \n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n\n	If (oEvent.Source.ImplementationName=oNombreImpFormularios) Then\n	  	\'MsgBox(\"oEvent.Source.ImplementationName=oNombreImpFormularios\")\n		\'if oEvent.Source.Row = 0 Then\n	    if oEvent.Source.RowCount = 0 Then\n		    oMensaje=\"First Time Call in Loading: \"\n		    oMensaje=oMensaje & oEvent.Source.ImplementationName\n		    \'MsgBox(oMensaje)\n	    else\n	    	\'MsgBox(\"oEvent.Source.RowCount != 0\")\n			if oEvent.Source.RowCount > 0 Then\n			   \n				\'Read of current RowSet from DetallePresupuesto\n				if oEvent.Source.Row <> 0 Then \'First Read of Data\n					\'MRI oSubForm\n					oVidQuoteID=oSubForm.Columns.getByName(\"VidQuoteID\").getInt()\n					oVidQuoteLPre=oSubForm.Columns.getByName(\"VidQuoteLPre\").getInt()\n					oVidQuoteItem=oSubForm.Columns.getByName(\"VidQuoteItem\").getInt()\n					oVidQuoteProdID=oSubForm.Columns.getByName(\"VidQuoteProdID\").getString()\n					oVidQuoteProdCantidad=oSubForm.Columns.getByName(\"VidQuoteProdCantidad\").getInt()\n					oVidQuoteAncho=oSubForm.Columns.getByName(\"VidQuoteAncho\").getInt()\n					oVidQuoteAlto=oSubForm.Columns.getByName(\"VidQuoteAlto\").getInt()\n			\n					Select Case oEstadoRegistroDetallePresupuesto\n					    Case 1		\'It is an Elements massive insert\n							\'VidQuoteN3	massive insert\n							\'MsgBox(\"BP001\")\n							oConnection = oEvent.Source.ActiveConnection\n							SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteLPre)\n							SQLStatement.setint(3,oVidQuoteItem)\n							SQLStatement.setstring(4,oVidQuoteProdID)\n							SQLStatement.setstring(5,oVidQuoteProdCantidad)	    \n							SQLStatement.setint(6,oVidQuoteAncho)\n							SQLStatement.setint(7,oVidQuoteAlto)\n							SQLStatement.execute()\n							SQLStatement.close()\n							\n							\'VidQuoteN4 massive insert\n							oMensaje = \"\"\n							oMensaje = oMensaje & \"BP002\"\n							oMensaje = oMensaje & \"Presupuesto: \" & CStr(oVidQuoteID) & Chr(13)\n							oMensaje = oMensaje & \"Item       : \" & CStr(oVidQuoteItem) & Chr(13)\n							oMensaje = oMensaje & \"Producto   : \" & oVidQuoteProdID & Chr(13)\n							oMensaje = oMensaje & \"Elemento   : \" & \"12345678\" & Chr(13)\n							\'MsgBox(oMensaje)\n							\n							SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteItem)\n							SQLStatement.setstring(3,oVidQuoteProdID)\n							SQLStatement.setstring(4,\"12345678\")\n							\'Set pCondicion for Procedure Inheritance depending on previous REM	    \n							SQLStatement.setint(5,2)\n							\'\n							SQLStatement.execute()\n							\'MsgBox(\"BP003\")\n							SQLStatement.close()\n				\n						Case 2		\'It is an Product Quote Data update\n							strSQLSearch = \"SELECT Count(*) FROM vidquoten3 WHERE \"\n							strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n							strSQLSearch = strSQLSearch & \" AND \"\n							strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n							\n							oConnection = oEvent.Source.ActiveConnection       \n							SQLStatement = oConnection.createStatement()\n							verifica = SQLStatement.executeQuery(strSQLSearch)\n							verifica.Next()						\'Lee la primera línea del query\n							oContadorRegistros=verifica.GetDouble(1)			\'Valor Anterior\n							SQLStatement.close()\n				\n							if oContadorRegistros > 0 Then\n							\n								strSQLSearch = \"SELECT VidQuoteProdID FROM vidquoten3 WHERE \"\n								strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n								strSQLSearch = strSQLSearch & \" AND \"\n								strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n								strSQLSearch = strSQLSearch & \" GROUP BY VidQuoteID,VidQuoteItem\"\n							\n								oConnection = oEvent.Source.ActiveConnection        \n							    SQLStatement = oConnection.createStatement()\n							    verifica = SQLStatement.executeQuery(strSQLSearch)\n							    verifica.Next()						\'Lee la primera línea del query\n							    aVidQuoteProdID=verifica.GetString(1)			\'Valor Anterior\n							    SQLStatement.close()		 \n							 \n							    if aVidQuoteProdID <> oVidQuoteProdID Then 	\'Check if the same product code\n							    \n									\'Delete previous records due to change product code\n								  			\n									strSQLSearch = \"DELETE FROM vidquoten3 WHERE \"\n									strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									strSQLSearch = strSQLSearch & \" AND \"\n									strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n									\n									\'Insert New records -Elements- with new Quote Product Code\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setstring(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									SQLStatement.close()\n									\n									\'VidQuoteN4 massive insert with new Quote Product Code\n									\n									SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteItem)\n									SQLStatement.setstring(3,oVidQuoteProdID)\n									SQLStatement.setstring(4,\"12345678\")	    \n									SQLStatement.setint(5,2)\n									SQLStatement.execute()\n									SQLStatement.close()\n							\n							    else\n							   		\'It is the same Product Code. Update VidQuoten3 Columns except Product Code\n							   		\n									\'strSQLSearch = \"\"\n									\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteProdCantidad = \" & CStr(oVidQuoteProdCantidad) & \",\"			\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAncho = \" & CStr(oVidQuoteAncho) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAlto = \"  & CStr(oVidQuoteAlto) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre),\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre) * \"&CStr(oVidQuoteProdCantidad)\n									\'strSQLSearch = strSQLSearch & \" WHERE \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									\'strSQLSearch = strSQLSearch & \" AND \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosProductoProposal(?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setint(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									\'SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n								end if\n								MsgBox(\"Recuerde revisar/actualizar valores adicionales\")\n							end if\n							\'MsgBox(\"Fin IF Nº4\")\n						Case 3\n							\'MsgBox(\"Elimina\"). Design and Complete MakingUp by TriggerTiger\n					end Select\n				end if\n				oEstadoRegistroDetallePresupuesto=0\n				\'MsgBox(\"Fin Case\")\n			end if\n			\'MsgBox(\"Fin IF Nº3\")\n		end if\n		\'MsgBox(\"Fin IF Nº2\")\n	end if\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Fin\")\nend Sub\n</pre></small>\n== Uso ==','utf-8'),(584,'== Descripción ==\n== Biblioteca ==\n== Composición ==\n== Código ==\n<small><pre>\n</pre></small>\n== Bitácora ==\n*20120914\n**Cambio por rediseño [[FORM:Presupuesto]]\n<small><pre>\nSub EventoBRCDetallePresupuesto (oEvent as Object)\n\nDim oDocument as Object\nDim oForm as Object\nDim oSubForm as Object\nDim oSubSubForm as Object\nDim oSubSubFormGrid as Object\nDim SQLStatement as Variant\nDim oNombreImpControlador as String\nDim oNombreImpFormularios as String\nDim oVidQuoteProdID as String\nDim aVidQuoteProdID as String\nDim oMensaje as String\nDim verifica\nDim strSQLSearch as String\nDim oContadorRegistros as Double\n\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Inicio\")\n	oDocument = ThisComponent\n	oForm = ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm = oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm = oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")  \n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n\n	If (oEvent.Source.ImplementationName=oNombreImpFormularios) Then\n	  	\'MsgBox(\"oEvent.Source.ImplementationName=oNombreImpFormularios\")\n		\'if oEvent.Source.Row = 0 Then\n	    if oEvent.Source.RowCount = 0 Then\n		    oMensaje=\"First Time Call in Loading: \"\n		    oMensaje=oMensaje & oEvent.Source.ImplementationName\n		    \'MsgBox(oMensaje)\n	    else\n	    	\'MsgBox(\"oEvent.Source.RowCount != 0\")\n			if oEvent.Source.RowCount > 0 Then\n			   \n				\'Read of current RowSet from DetallePresupuesto\n				if oEvent.Source.Row <> 0 Then \'First Read of Data\n					\'MRI oSubForm\n					oVidQuoteID=oSubForm.Columns.getByName(\"VidQuoteID\").getInt()\n					oVidQuoteLPre=oSubForm.Columns.getByName(\"VidQuoteLPre\").getInt()\n					oVidQuoteItem=oSubForm.Columns.getByName(\"VidQuoteItem\").getInt()\n					oVidQuoteProdID=oSubForm.Columns.getByName(\"VidQuoteProdID\").getString()\n					oVidQuoteProdCantidad=oSubForm.Columns.getByName(\"VidQuoteProdCantidad\").getInt()\n					oVidQuoteAncho=oSubForm.Columns.getByName(\"VidQuoteAncho\").getInt()\n					oVidQuoteAlto=oSubForm.Columns.getByName(\"VidQuoteAlto\").getInt()\n			\n					Select Case oEstadoRegistroDetallePresupuesto\n					    Case 1		\'It is an Elements massive insert\n							\'VidQuoteN3	massive insert\n							\'MsgBox(\"BP001\")\n							oConnection = oEvent.Source.ActiveConnection\n							SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteLPre)\n							SQLStatement.setint(3,oVidQuoteItem)\n							SQLStatement.setstring(4,oVidQuoteProdID)\n							SQLStatement.setstring(5,oVidQuoteProdCantidad)	    \n							SQLStatement.setint(6,oVidQuoteAncho)\n							SQLStatement.setint(7,oVidQuoteAlto)\n							SQLStatement.execute()\n							SQLStatement.close()\n							\n							\'VidQuoteN4 massive insert\n							oMensaje = \"\"\n							oMensaje = oMensaje & \"BP002\"\n							oMensaje = oMensaje & \"Presupuesto: \" & CStr(oVidQuoteID) & Chr(13)\n							oMensaje = oMensaje & \"Item       : \" & CStr(oVidQuoteItem) & Chr(13)\n							oMensaje = oMensaje & \"Producto   : \" & oVidQuoteProdID & Chr(13)\n							oMensaje = oMensaje & \"Elemento   : \" & \"12345678\" & Chr(13)\n							\'MsgBox(oMensaje)\n							\n							SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteItem)\n							SQLStatement.setstring(3,oVidQuoteProdID)\n							SQLStatement.setstring(4,\"12345678\")\n							\'Set pCondicion for Procedure Inheritance depending on previous REM	    \n							SQLStatement.setint(5,2)\n							\'\n							SQLStatement.execute()\n							\'MsgBox(\"BP003\")\n							SQLStatement.close()\n				\n						Case 2		\'It is an Product Quote Data update\n							strSQLSearch = \"SELECT Count(*) FROM vidquoten3 WHERE \"\n							strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n							strSQLSearch = strSQLSearch & \" AND \"\n							strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n							\n							oConnection = oEvent.Source.ActiveConnection       \n							SQLStatement = oConnection.createStatement()\n							verifica = SQLStatement.executeQuery(strSQLSearch)\n							verifica.Next()						\'Lee la primera línea del query\n							oContadorRegistros=verifica.GetDouble(1)			\'Valor Anterior\n							SQLStatement.close()\n				\n							if oContadorRegistros > 0 Then\n							\n								strSQLSearch = \"SELECT VidQuoteProdID FROM vidquoten3 WHERE \"\n								strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n								strSQLSearch = strSQLSearch & \" AND \"\n								strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n								strSQLSearch = strSQLSearch & \" GROUP BY VidQuoteID,VidQuoteItem\"\n							\n								oConnection = oEvent.Source.ActiveConnection        \n							    SQLStatement = oConnection.createStatement()\n							    verifica = SQLStatement.executeQuery(strSQLSearch)\n							    verifica.Next()						\'Lee la primera línea del query\n							    aVidQuoteProdID=verifica.GetString(1)			\'Valor Anterior\n							    SQLStatement.close()		 \n							 \n							    if aVidQuoteProdID <> oVidQuoteProdID Then 	\'Check if the same product code\n							    \n									\'Delete previous records due to change product code\n								  			\n									strSQLSearch = \"DELETE FROM vidquoten3 WHERE \"\n									strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									strSQLSearch = strSQLSearch & \" AND \"\n									strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n									\n									\'Insert New records -Elements- with new Quote Product Code\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setstring(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									SQLStatement.close()\n									\n									\'VidQuoteN4 massive insert with new Quote Product Code\n									\n									SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteItem)\n									SQLStatement.setstring(3,oVidQuoteProdID)\n									SQLStatement.setstring(4,\"12345678\")	    \n									SQLStatement.setint(5,2)\n									SQLStatement.execute()\n									SQLStatement.close()\n							\n							    else\n							   		\'It is the same Product Code. Update VidQuoten3 Columns except Product Code\n							   		\n									\'strSQLSearch = \"\"\n									\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteProdCantidad = \" & CStr(oVidQuoteProdCantidad) & \",\"			\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAncho = \" & CStr(oVidQuoteAncho) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAlto = \"  & CStr(oVidQuoteAlto) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre),\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre) * \"&CStr(oVidQuoteProdCantidad)\n									\'strSQLSearch = strSQLSearch & \" WHERE \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									\'strSQLSearch = strSQLSearch & \" AND \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosProductoProposal(?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setint(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									\'SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n								end if\n								MsgBox(\"Recuerde revisar/actualizar valores adicionales\")\n							end if\n							\'MsgBox(\"Fin IF Nº4\")\n						Case 3\n							\'MsgBox(\"Elimina\"). Design and Complete MakingUp by TriggerTiger\n					end Select\n				end if\n				oEstadoRegistroDetallePresupuesto=0\n				\'MsgBox(\"Fin Case\")\n			end if\n			\'MsgBox(\"Fin IF Nº3\")\n		end if\n		\'MsgBox(\"Fin IF Nº2\")\n	end if\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Fin\")\nend Sub\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(585,'== Descripción ==\nEjecuta las acciones adicionales a cada operación sobre los registros de [[TABLA:vidquoten2]] más allá de la acción en si sobre esos registros dentro del [[FORM:Presupuesto]]:\n*1:Insertar\n*2:Modificar\n*3:Eliminar\n\n== Biblioteca ==\n== Composición ==\n== Código ==\n<small><pre>\n</pre></small>\n== Bitácora ==\n*20120914\n**Cambio por rediseño [[FORM:Presupuesto]]\n<small><pre>\nSub EventoBRCDetallePresupuesto (oEvent as Object)\n\nDim oDocument as Object\nDim oForm as Object\nDim oSubForm as Object\nDim oSubSubForm as Object\nDim oSubSubFormGrid as Object\nDim SQLStatement as Variant\nDim oNombreImpControlador as String\nDim oNombreImpFormularios as String\nDim oVidQuoteProdID as String\nDim aVidQuoteProdID as String\nDim oMensaje as String\nDim verifica\nDim strSQLSearch as String\nDim oContadorRegistros as Double\n\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Inicio\")\n	oDocument = ThisComponent\n	oForm = ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm = oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm = oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")  \n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n\n	If (oEvent.Source.ImplementationName=oNombreImpFormularios) Then\n	  	\'MsgBox(\"oEvent.Source.ImplementationName=oNombreImpFormularios\")\n		\'if oEvent.Source.Row = 0 Then\n	    if oEvent.Source.RowCount = 0 Then\n		    oMensaje=\"First Time Call in Loading: \"\n		    oMensaje=oMensaje & oEvent.Source.ImplementationName\n		    \'MsgBox(oMensaje)\n	    else\n	    	\'MsgBox(\"oEvent.Source.RowCount != 0\")\n			if oEvent.Source.RowCount > 0 Then\n			   \n				\'Read of current RowSet from DetallePresupuesto\n				if oEvent.Source.Row <> 0 Then \'First Read of Data\n					\'MRI oSubForm\n					oVidQuoteID=oSubForm.Columns.getByName(\"VidQuoteID\").getInt()\n					oVidQuoteLPre=oSubForm.Columns.getByName(\"VidQuoteLPre\").getInt()\n					oVidQuoteItem=oSubForm.Columns.getByName(\"VidQuoteItem\").getInt()\n					oVidQuoteProdID=oSubForm.Columns.getByName(\"VidQuoteProdID\").getString()\n					oVidQuoteProdCantidad=oSubForm.Columns.getByName(\"VidQuoteProdCantidad\").getInt()\n					oVidQuoteAncho=oSubForm.Columns.getByName(\"VidQuoteAncho\").getInt()\n					oVidQuoteAlto=oSubForm.Columns.getByName(\"VidQuoteAlto\").getInt()\n			\n					Select Case oEstadoRegistroDetallePresupuesto\n					    Case 1		\'It is an Elements massive insert\n							\'VidQuoteN3	massive insert\n							\'MsgBox(\"BP001\")\n							oConnection = oEvent.Source.ActiveConnection\n							SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteLPre)\n							SQLStatement.setint(3,oVidQuoteItem)\n							SQLStatement.setstring(4,oVidQuoteProdID)\n							SQLStatement.setstring(5,oVidQuoteProdCantidad)	    \n							SQLStatement.setint(6,oVidQuoteAncho)\n							SQLStatement.setint(7,oVidQuoteAlto)\n							SQLStatement.execute()\n							SQLStatement.close()\n							\n							\'VidQuoteN4 massive insert\n							oMensaje = \"\"\n							oMensaje = oMensaje & \"BP002\"\n							oMensaje = oMensaje & \"Presupuesto: \" & CStr(oVidQuoteID) & Chr(13)\n							oMensaje = oMensaje & \"Item       : \" & CStr(oVidQuoteItem) & Chr(13)\n							oMensaje = oMensaje & \"Producto   : \" & oVidQuoteProdID & Chr(13)\n							oMensaje = oMensaje & \"Elemento   : \" & \"12345678\" & Chr(13)\n							\'MsgBox(oMensaje)\n							\n							SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteItem)\n							SQLStatement.setstring(3,oVidQuoteProdID)\n							SQLStatement.setstring(4,\"12345678\")\n							\'Set pCondicion for Procedure Inheritance depending on previous REM	    \n							SQLStatement.setint(5,2)\n							\'\n							SQLStatement.execute()\n							\'MsgBox(\"BP003\")\n							SQLStatement.close()\n				\n						Case 2		\'It is an Product Quote Data update\n							strSQLSearch = \"SELECT Count(*) FROM vidquoten3 WHERE \"\n							strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n							strSQLSearch = strSQLSearch & \" AND \"\n							strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n							\n							oConnection = oEvent.Source.ActiveConnection       \n							SQLStatement = oConnection.createStatement()\n							verifica = SQLStatement.executeQuery(strSQLSearch)\n							verifica.Next()						\'Lee la primera línea del query\n							oContadorRegistros=verifica.GetDouble(1)			\'Valor Anterior\n							SQLStatement.close()\n				\n							if oContadorRegistros > 0 Then\n							\n								strSQLSearch = \"SELECT VidQuoteProdID FROM vidquoten3 WHERE \"\n								strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n								strSQLSearch = strSQLSearch & \" AND \"\n								strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n								strSQLSearch = strSQLSearch & \" GROUP BY VidQuoteID,VidQuoteItem\"\n							\n								oConnection = oEvent.Source.ActiveConnection        \n							    SQLStatement = oConnection.createStatement()\n							    verifica = SQLStatement.executeQuery(strSQLSearch)\n							    verifica.Next()						\'Lee la primera línea del query\n							    aVidQuoteProdID=verifica.GetString(1)			\'Valor Anterior\n							    SQLStatement.close()		 \n							 \n							    if aVidQuoteProdID <> oVidQuoteProdID Then 	\'Check if the same product code\n							    \n									\'Delete previous records due to change product code\n								  			\n									strSQLSearch = \"DELETE FROM vidquoten3 WHERE \"\n									strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									strSQLSearch = strSQLSearch & \" AND \"\n									strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n									\n									\'Insert New records -Elements- with new Quote Product Code\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setstring(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									SQLStatement.close()\n									\n									\'VidQuoteN4 massive insert with new Quote Product Code\n									\n									SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteItem)\n									SQLStatement.setstring(3,oVidQuoteProdID)\n									SQLStatement.setstring(4,\"12345678\")	    \n									SQLStatement.setint(5,2)\n									SQLStatement.execute()\n									SQLStatement.close()\n							\n							    else\n							   		\'It is the same Product Code. Update VidQuoten3 Columns except Product Code\n							   		\n									\'strSQLSearch = \"\"\n									\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteProdCantidad = \" & CStr(oVidQuoteProdCantidad) & \",\"			\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAncho = \" & CStr(oVidQuoteAncho) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAlto = \"  & CStr(oVidQuoteAlto) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre),\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre) * \"&CStr(oVidQuoteProdCantidad)\n									\'strSQLSearch = strSQLSearch & \" WHERE \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									\'strSQLSearch = strSQLSearch & \" AND \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosProductoProposal(?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setint(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									\'SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n								end if\n								MsgBox(\"Recuerde revisar/actualizar valores adicionales\")\n							end if\n							\'MsgBox(\"Fin IF Nº4\")\n						Case 3\n							\'MsgBox(\"Elimina\"). Design and Complete MakingUp by TriggerTiger\n					end Select\n				end if\n				oEstadoRegistroDetallePresupuesto=0\n				\'MsgBox(\"Fin Case\")\n			end if\n			\'MsgBox(\"Fin IF Nº3\")\n		end if\n		\'MsgBox(\"Fin IF Nº2\")\n	end if\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Fin\")\nend Sub\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(586,'== Descripción ==\nEjecuta las acciones adicionales a cada operación sobre los registros de [[TABLA:vidquoten2]] más allá de la acción en si sobre esos registros dentro del [[FORM:Presupuesto]]:\n*1:Insertar\n*2:Modificar\n*3:Eliminar\n\n== Biblioteca ==\n*[[LIBR:FazzGlassMcr]]\n\n== Composición ==\n== Código ==\n<small><pre>\n</pre></small>\n== Bitácora ==\n*20120914\n**Cambio por rediseño [[FORM:Presupuesto]]\n<small><pre>\nSub EventoBRCDetallePresupuesto (oEvent as Object)\n\nDim oDocument as Object\nDim oForm as Object\nDim oSubForm as Object\nDim oSubSubForm as Object\nDim oSubSubFormGrid as Object\nDim SQLStatement as Variant\nDim oNombreImpControlador as String\nDim oNombreImpFormularios as String\nDim oVidQuoteProdID as String\nDim aVidQuoteProdID as String\nDim oMensaje as String\nDim verifica\nDim strSQLSearch as String\nDim oContadorRegistros as Double\n\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Inicio\")\n	oDocument = ThisComponent\n	oForm = ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm = oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm = oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")  \n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n\n	If (oEvent.Source.ImplementationName=oNombreImpFormularios) Then\n	  	\'MsgBox(\"oEvent.Source.ImplementationName=oNombreImpFormularios\")\n		\'if oEvent.Source.Row = 0 Then\n	    if oEvent.Source.RowCount = 0 Then\n		    oMensaje=\"First Time Call in Loading: \"\n		    oMensaje=oMensaje & oEvent.Source.ImplementationName\n		    \'MsgBox(oMensaje)\n	    else\n	    	\'MsgBox(\"oEvent.Source.RowCount != 0\")\n			if oEvent.Source.RowCount > 0 Then\n			   \n				\'Read of current RowSet from DetallePresupuesto\n				if oEvent.Source.Row <> 0 Then \'First Read of Data\n					\'MRI oSubForm\n					oVidQuoteID=oSubForm.Columns.getByName(\"VidQuoteID\").getInt()\n					oVidQuoteLPre=oSubForm.Columns.getByName(\"VidQuoteLPre\").getInt()\n					oVidQuoteItem=oSubForm.Columns.getByName(\"VidQuoteItem\").getInt()\n					oVidQuoteProdID=oSubForm.Columns.getByName(\"VidQuoteProdID\").getString()\n					oVidQuoteProdCantidad=oSubForm.Columns.getByName(\"VidQuoteProdCantidad\").getInt()\n					oVidQuoteAncho=oSubForm.Columns.getByName(\"VidQuoteAncho\").getInt()\n					oVidQuoteAlto=oSubForm.Columns.getByName(\"VidQuoteAlto\").getInt()\n			\n					Select Case oEstadoRegistroDetallePresupuesto\n					    Case 1		\'It is an Elements massive insert\n							\'VidQuoteN3	massive insert\n							\'MsgBox(\"BP001\")\n							oConnection = oEvent.Source.ActiveConnection\n							SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteLPre)\n							SQLStatement.setint(3,oVidQuoteItem)\n							SQLStatement.setstring(4,oVidQuoteProdID)\n							SQLStatement.setstring(5,oVidQuoteProdCantidad)	    \n							SQLStatement.setint(6,oVidQuoteAncho)\n							SQLStatement.setint(7,oVidQuoteAlto)\n							SQLStatement.execute()\n							SQLStatement.close()\n							\n							\'VidQuoteN4 massive insert\n							oMensaje = \"\"\n							oMensaje = oMensaje & \"BP002\"\n							oMensaje = oMensaje & \"Presupuesto: \" & CStr(oVidQuoteID) & Chr(13)\n							oMensaje = oMensaje & \"Item       : \" & CStr(oVidQuoteItem) & Chr(13)\n							oMensaje = oMensaje & \"Producto   : \" & oVidQuoteProdID & Chr(13)\n							oMensaje = oMensaje & \"Elemento   : \" & \"12345678\" & Chr(13)\n							\'MsgBox(oMensaje)\n							\n							SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteItem)\n							SQLStatement.setstring(3,oVidQuoteProdID)\n							SQLStatement.setstring(4,\"12345678\")\n							\'Set pCondicion for Procedure Inheritance depending on previous REM	    \n							SQLStatement.setint(5,2)\n							\'\n							SQLStatement.execute()\n							\'MsgBox(\"BP003\")\n							SQLStatement.close()\n				\n						Case 2		\'It is an Product Quote Data update\n							strSQLSearch = \"SELECT Count(*) FROM vidquoten3 WHERE \"\n							strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n							strSQLSearch = strSQLSearch & \" AND \"\n							strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n							\n							oConnection = oEvent.Source.ActiveConnection       \n							SQLStatement = oConnection.createStatement()\n							verifica = SQLStatement.executeQuery(strSQLSearch)\n							verifica.Next()						\'Lee la primera línea del query\n							oContadorRegistros=verifica.GetDouble(1)			\'Valor Anterior\n							SQLStatement.close()\n				\n							if oContadorRegistros > 0 Then\n							\n								strSQLSearch = \"SELECT VidQuoteProdID FROM vidquoten3 WHERE \"\n								strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n								strSQLSearch = strSQLSearch & \" AND \"\n								strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n								strSQLSearch = strSQLSearch & \" GROUP BY VidQuoteID,VidQuoteItem\"\n							\n								oConnection = oEvent.Source.ActiveConnection        \n							    SQLStatement = oConnection.createStatement()\n							    verifica = SQLStatement.executeQuery(strSQLSearch)\n							    verifica.Next()						\'Lee la primera línea del query\n							    aVidQuoteProdID=verifica.GetString(1)			\'Valor Anterior\n							    SQLStatement.close()		 \n							 \n							    if aVidQuoteProdID <> oVidQuoteProdID Then 	\'Check if the same product code\n							    \n									\'Delete previous records due to change product code\n								  			\n									strSQLSearch = \"DELETE FROM vidquoten3 WHERE \"\n									strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									strSQLSearch = strSQLSearch & \" AND \"\n									strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n									\n									\'Insert New records -Elements- with new Quote Product Code\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setstring(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									SQLStatement.close()\n									\n									\'VidQuoteN4 massive insert with new Quote Product Code\n									\n									SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteItem)\n									SQLStatement.setstring(3,oVidQuoteProdID)\n									SQLStatement.setstring(4,\"12345678\")	    \n									SQLStatement.setint(5,2)\n									SQLStatement.execute()\n									SQLStatement.close()\n							\n							    else\n							   		\'It is the same Product Code. Update VidQuoten3 Columns except Product Code\n							   		\n									\'strSQLSearch = \"\"\n									\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteProdCantidad = \" & CStr(oVidQuoteProdCantidad) & \",\"			\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAncho = \" & CStr(oVidQuoteAncho) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAlto = \"  & CStr(oVidQuoteAlto) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre),\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre) * \"&CStr(oVidQuoteProdCantidad)\n									\'strSQLSearch = strSQLSearch & \" WHERE \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									\'strSQLSearch = strSQLSearch & \" AND \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosProductoProposal(?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setint(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									\'SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n								end if\n								MsgBox(\"Recuerde revisar/actualizar valores adicionales\")\n							end if\n							\'MsgBox(\"Fin IF Nº4\")\n						Case 3\n							\'MsgBox(\"Elimina\"). Design and Complete MakingUp by TriggerTiger\n					end Select\n				end if\n				oEstadoRegistroDetallePresupuesto=0\n				\'MsgBox(\"Fin Case\")\n			end if\n			\'MsgBox(\"Fin IF Nº3\")\n		end if\n		\'MsgBox(\"Fin IF Nº2\")\n	end if\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Fin\")\nend Sub\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(587,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(588,'* [[Actualizacion DB]]\n[[Título del enlace]]=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(589,'===20120702===\n====Agregado de atributo de Medicion en Obra====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \n	ADD COLUMN `VidQuoteMedCheck` CHAR(1) NULL DEFAULT 0 AFTER `VidQuoteACom`;\n</pre>\n\n====Actualización de dato de Vigencia de Documentos====\n<pre>\nALTER TABLE `fzggestion`.`contactos`\n	CHANGE COLUMN `CoeficienteAC` `CoeficienteAC` DECIMAL(5,2) NULL DEFAULT 1,\n	CHANGE COLUMN `VigenciaDocs` `VigenciaDocs` INT(2) NULL DEFAULT 15;\nUPDATE `fzggestion`.`contactos`\n	SET `VigenciaDocs` = 15\n	WHERE `VigenciaDocs`= 0 OR ISNULL(`VigenciaDocs`);\n</pre>\n====Actualización de datos para el control de Cobranzas====\nALTER TABLE `fzggestion`.`accreceiv` \n	ADD COLUMN `ClienteAR` CHAR(8) NULL DEFAULT NULL  AFTER `ImporteAR`,\n	DROP PRIMARY KEY,\n	ADD PRIMARY KEY (`TTransaccion`, `NTransaccion`);\n====Crear [[VISTA:vistranscrm]]====\n====Crear [[TABLA:clientescrmqry]]====\n====Crear [[VISTA:chqactivos]]====\n====Crear [[TABLA:accpayab]]====\n<pre>\ndelimiter $$\nCREATE TABLE `accpayab` (\n  `TTransaccion` char(2) NOT NULL DEFAULT \'AP\',\n  `NTransaccion` int(11) NOT NULL AUTO_INCREMENT,\n  `FechaAutAP` date DEFAULT NULL,\n  `FechaAP` date DEFAULT NULL,\n  `FormaAP` char(3) DEFAULT NULL,\n  `ImporteAP` decimal(10,2) DEFAULT NULL,\n  `ProveedAP` char(8) DEFAULT NULL,\n  `TDocumentoOrg` char(2) DEFAULT NULL,\n  `NDocumentoOrg` int(11) DEFAULT NULL,\n  `DDocumentoOrg` varchar(100) DEFAULT NULL,\n  PRIMARY KEY (`TTransaccion`,`NTransaccion`)\n) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1$$\n\nCREATE TRIGGER `fzggestion`.`Alta_Pago`\nBEFORE INSERT ON `fzggestion`.`accpayab`\nFOR EACH ROW\nBEGIN\n	SET NEW.FechaAutAP = CURDATE();\nEND\n$$\n</pre>\n====Modifica [[TABLA:fPago]]====\n<pre>\nALTER TABLE `fzggestion`.`fpago`\n	ADD COLUMN `FPagoAR` CHAR(1) NULL AFTER `FPagoDSC`,\n	ADD COLUMN `FPagoAP` CHAR(1) NULL AFTER `FPagoAR`;\n</pre>\n====Rediseña [[TABLA:tdocumento]]====\n\n====Crea [[VISTA:vischtdisp]]====\n====Crea [[VISTA:vistotprod]]====\n====Crea [[TABLA:vidquoten3tmp]====\n====Reemplazar todos los ElementoPM en Componentes por los nuevos valores====\n<pre>\nUPDATE fzggestion.composicion SET ElementoPM=2 WHERE ElementoPM=0;\nUPDATE fzggestion.composicion SET ElementoPM=0 WHERE ElementoPM=1;\n</pre>\n\'\'\'20120831\'\'\'\n====Agregar Nombre de Usuario [[TABLA:precios]]====\n<pre>\nALTER TABLE `fzggestion`.`precios` \n	ADD COLUMN `UserModificacion` VARCHAR(20) NULL AFTER `HoraModificacion` ;\nALTER TABLE `fzggestion`.`precios` \n	CHANGE COLUMN `FechaModificacion` `FechaEvento` DATE NULL DEFAULT NULL,\n	CHANGE COLUMN `HoraModificacion` `HoraEvento` TIME NULL DEFAULT NULL,\n	CHANGE COLUMN `UserModificacion` `UserEvento` VARCHAR(20) NULL DEFAULT NULL;\n</pre>\n\n====Modificación de Triggers [[TABLA:precios]]====\n<pre>\nDELIMITER $$\n\nUSE `fzggestion`$$\n\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Alta_Precio`\nBEFORE INSERT ON `fzggestion`.`precios`\nFOR EACH ROW\nBEGIN\n	SET\n	NEW.FechaEvento = CURDATE(),\n	NEW.HoraEvento = CURTIME(),\n	NEW.UserEvento	= USER();\nEND$$\n\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Actualiza_Precio`\nBEFORE UPDATE ON `fzggestion`.`precios`\nFOR EACH ROW\nBEGIN\n	SET\n	NEW.FechaEvento = CURDATE(),\n	NEW.HoraEvento = CURTIME(),\n	NEW.UserEvento	= USER();\nEND$$\n</pre>\n====Modificacion de Estructura [[TABLA:contactos]]====\n<pre>\nUPDATE contactos SET ClienteTag=1 WHERE ClienteTag=\"x\";\nUPDATE contactos SET ProveedorTag=1 WHERE ProveedorTag=\"x\";\nUPDATE contactos SET AComercialTag=1 WHERE AComercialTag=\"x\";\nUPDATE contactos SET OtrosTag=1 WHERE OtrosTag=\"x\";\nALTER TABLE `fzggestion`.`contactos` \n	CHANGE COLUMN `ClienteTag` `ClienteTag` INT(1) NULL DEFAULT NULL,\n	CHANGE COLUMN `ProveedorTag` `ProveedorTag` INT(1) NULL DEFAULT NULL, \n	CHANGE COLUMN `AComercialTag` `AComercialTag` INT(1) NULL DEFAULT NULL,\n	CHANGE COLUMN `OtrosTag` `OtrosTag` INT(1) NULL DEFAULT NULL;\n</pre>\nVerificar los casos que no coincidan con los prefijos establecidos: 0->Cliente, 3->Proveedor, 5->Otros, 8->Agentes Comerciales\n\n====Cambio de Condición para [[VISTA:clientes]]====\n====Alta de Tabla [[TABLA:telemecomp]]====\n====Actualizar Routine [[PROC:DuplicaProductoCompo]] en DB====\n====Agregar atributo ComposicID a [[TABLA:vidquoten3]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` \nCHANGE COLUMN `VidQuoteElementoID` `VidQuoteElementoID` CHAR(8) NOT NULL AFTER `VidQuoteProdID`,\nCHANGE COLUMN `VidQuoteLPre` `VidQuoteLPre` INT(1) NULL DEFAULT NULL AFTER `VidQuoteElementoID;\n\nALTER TABLE `fzggestion`.`vidquoten3`\nADD COLUMN `VidQuoteComposicID` INT NOT NULL AFTER `VidQuoteElementoID` ,\nDROP PRIMARY KEY , ADD PRIMARY KEY (`VidQuoteID`,\n                                    `VidQuoteItem`,\n                                    `VidQuoteProdID`,\n                                    `VidQuoteElementoID`,\n                                    `VidQuoteComposicID`) ;\n</pre>\n====Agregar atributo ComposicID a [[TABLA:vidquoten3tmp]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` \nCHANGE COLUMN `VidQuoteElementoID` `VidQuoteElementoID` CHAR(8) NOT NULL AFTER `VidQuoteProdID`,\nCHANGE COLUMN `VidQuoteProdCantidad` `VidQuoteProdCantidad` INT(5) NULL DEFAULT NULL  AFTER `VidQuoteElementoID`;\n\nALTER TABLE `fzggestion`.`vidquoten3tmp`\nADD COLUMN `VidQuoteComposicID` INT NOT NULL AFTER `VidQuoteElementoID` ,\nDROP PRIMARY KEY , ADD PRIMARY KEY (`VidQuoteID`,\n                                    `VidQuoteItem`,\n                                    `VidQuoteProdID`,\n                                    `VidQuoteElementoID`,\n                                    `VidQuoteComposicID`) ;\n</pre>\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3tmp]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n====Reemplazar el código de [[PROC:GrabaItemPresupuestoTmp]] y [[PROC:AltaItemPresupuestoTmp]]====\nIncluye las modificaciones de inclusión de ElementoPM\n====Crea [[PROC:ResetEdicionItemTmp]]====\n====Cambiar [[VISTA:acomerciales]]====\nRefleja el cambio de la estructura de la [[TABLA:contactos]]\n====Agregar en [[TABLA:contactos]]====\nAgregar atributo que responde al imagen asociada al contacto.\n<pre>\nALTER TABLE `fzggestion`.`contactos` ADD COLUMN `ImgContacto` BLOB NULL  AFTER `VigenciaDocs` ;\n</pre>','utf-8'),(590,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de AComerciales.\n== Composición ==\n*[[TABLA:contactos]]\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\nCREATE VIEW `acomerciales` AS\nSELECT `contactos`.`ContactoID` AS `AComercialID`,\n       `contactos`.`ContactoIDAbrv` AS `Abreviatura`,\n       `contactos`.`RazonSocial` AS `RazonSocial`,\n       `contactos`.`Direccion` AS `Direccion`,\n       `contactos`.`Localidad` AS `Localidad`,\n       `contactos`.`Provincia` AS `Provincia`,\n       `contactos`.`Pais` AS `Pais`,\n       `contactos`.`CPostal` AS `CPostal`,\n       `contactos`.`CUIT` AS `CUIT`,\n       `contactos`.`Area` AS `Area`,\n       `contactos`.`Telefono1` AS `Telefono1`,\n       `contactos`.`Telefono2` AS `Telefono2`,\n       `contactos`.`Telefono3` AS `Telefono3`,\n       `contactos`.`TelefonoM` AS `TelefonoM`,\n       `contactos`.`TelefonoF` AS `TelefonoF`,\n       `contactos`.`Correo1` AS `Correo1`,\n       `contactos`.`Correo2` AS `Correo2`,\n       `contactos`.`NContacto` AS `NContacto`,\n       `contactos`.`AContacto` AS `AContacto`,\n       `contactos`.`Notas` AS `Notas`,\n       `contactos`.`ImgContacto` AS `LogoAC`\nFROM `contactos`\nWHERE (`contactos`.`AComercialTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120125\n**Alta Vista\n*20120911\n**Cambio de Condición para reflejar el cambio de estructura de la [[TABLA:contactos]]\n== Uso ==\n*[[FORM:presupuesto]]','utf-8'),(591,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de AComerciales.\n== Composición ==\n*[[TABLA:contactos]]\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\nCREATE VIEW `acomerciales` AS\nSELECT `contactos`.`ContactoID` AS `AComercialID`,\n       `contactos`.`ContactoIDAbrv` AS `Abreviatura`,\n       `contactos`.`RazonSocial` AS `RazonSocial`,\n       `contactos`.`Direccion` AS `Direccion`,\n       `contactos`.`Localidad` AS `Localidad`,\n       `contactos`.`Provincia` AS `Provincia`,\n       `contactos`.`Pais` AS `Pais`,\n       `contactos`.`CPostal` AS `CPostal`,\n       `contactos`.`CUIT` AS `CUIT`,\n       `contactos`.`Area` AS `Area`,\n       `contactos`.`Telefono1` AS `Telefono1`,\n       `contactos`.`Telefono2` AS `Telefono2`,\n       `contactos`.`Telefono3` AS `Telefono3`,\n       `contactos`.`TelefonoM` AS `TelefonoM`,\n       `contactos`.`TelefonoF` AS `TelefonoF`,\n       `contactos`.`Correo1` AS `Correo1`,\n       `contactos`.`Correo2` AS `Correo2`,\n       `contactos`.`NContacto` AS `NContacto`,\n       `contactos`.`AContacto` AS `AContacto`,\n       `contactos`.`Notas` AS `Notas`,\n       `contactos`.`ImgContacto` AS `LogoAC`\nFROM `contactos`\nWHERE (`contactos`.`AComercialTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120125\n**Alta Vista\n*20120911\n**Cambio de Condición para reflejar el cambio de estructura de la [[TABLA:contactos]]\n*20120917\n**Cambia denominación ID y agrega el atributo de \"ImgContacto\" como \"LogoAC\"\n\n== Uso ==\n*[[FORM:presupuesto]]','utf-8'),(592,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(593,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de AComerciales.\n== Composición ==\n*[[TABLA:contactos]]\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\nCREATE VIEW `acomerciales` AS\nSELECT `contactos`.`ContactoID` AS `AComercialID`,\n       `contactos`.`ContactoIDAbrv` AS `Abreviatura`,\n       `contactos`.`RazonSocial` AS `RazonSocial`,\n       `contactos`.`Direccion` AS `Direccion`,\n       `contactos`.`Localidad` AS `Localidad`,\n       `contactos`.`Provincia` AS `Provincia`,\n       `contactos`.`Pais` AS `Pais`,\n       `contactos`.`CPostal` AS `CPostal`,\n       `contactos`.`CUIT` AS `CUIT`,\n       `contactos`.`Area` AS `Area`,\n       `contactos`.`Telefono1` AS `Telefono1`,\n       `contactos`.`Telefono2` AS `Telefono2`,\n       `contactos`.`Telefono3` AS `Telefono3`,\n       `contactos`.`TelefonoM` AS `TelefonoM`,\n       `contactos`.`TelefonoF` AS `TelefonoF`,\n       `contactos`.`Correo1` AS `Correo1`,\n       `contactos`.`Correo2` AS `Correo2`,\n       `contactos`.`NContacto` AS `NContacto`,\n       `contactos`.`AContacto` AS `AContacto`,\n       `contactos`.`CoeficienteAC` AS `CoeficienteAC`,\n       `contactos`.`Notas` AS `Notas`,\n       `contactos`.`ImgContacto` AS `LogoAC`\nFROM `contactos`\nWHERE (`contactos`.`AComercialTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120125\n**Alta Vista\n*20120911\n**Cambio de Condición para reflejar el cambio de estructura de la [[TABLA:contactos]]\n*20120917\n**Cambia denominación ID y agrega el atributo de \"ImgContacto\" como \"LogoAC\"\n\n== Uso ==\n*[[FORM:presupuesto]]','utf-8'),(594,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de Clientes\n== Composición ==\n*[[TABLA:contactos]]\n== SQL ==\n<pre>\nCREATE VIEW `clientes` AS\nSELECT \n    `contactos`.`ContactoID` AS `ClienteID`,\n    `contactos`.`RazonSocial` AS `RazonSocial`,\n    `contactos`.`Direccion` AS `Direccion`,\n    `contactos`.`Localidad` AS `Localidad`,\n    `contactos`.`Provincia` AS `Provincia`,\n    `contactos`.`Pais` AS `Pais`,\n    `contactos`.`CPostal` AS `CPostal`,\n    `contactos`.`CUIT` AS `CUIT`,\n    `contactos`.`Area` AS `Area`,\n    `contactos`.`Telefono1` AS `Telefono1`,\n    `contactos`.`Telefono2` AS `Telefono2`,\n    `contactos`.`Telefono3` AS `Telefono3`,\n    `contactos`.`TelefonoM` AS `TelefonoM`,\n    `contactos`.`TelefonoF` AS `TelefonoF`,\n    `contactos`.`Correo1` AS `Correo1`,\n    `contactos`.`Correo2` AS `Correo2`,\n    `contactos`.`NContacto` AS `NContacto`,\n    `contactos`.`AContacto` AS `AContacto`,\n    `contactos`.`ListaPrecio` AS `ListaPrecio`,\n    `contactos`.`CoeficienteAC` AS `CoeficienteAC`,\n    `contactos`.`VigenciaDocs` AS `VigenciaDocs`,\n    `contactos`.`ImgContacto` AS `ImgContacto`,\n    `contactos`.`Notas` AS `Notas`\nFROM `contactos`\nWHERE (`contactos`.`ClienteTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120831\n**Cambio de Condición por cambio de tipo de variable \n== Uso ==\n== URL ==','utf-8'),(595,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de Clientes\n== Composición ==\n*[[TABLA:contactos]]\n== SQL ==\n<pre>\nCREATE VIEW `clientes` AS\nSELECT \n    `contactos`.`ContactoID` AS `ClienteID`,\n    `contactos`.`RazonSocial` AS `RazonSocial`,\n    `contactos`.`Direccion` AS `Direccion`,\n    `contactos`.`Localidad` AS `Localidad`,\n    `contactos`.`Provincia` AS `Provincia`,\n    `contactos`.`Pais` AS `Pais`,\n    `contactos`.`CPostal` AS `CPostal`,\n    `contactos`.`CUIT` AS `CUIT`,\n    `contactos`.`Area` AS `Area`,\n    `contactos`.`Telefono1` AS `Telefono1`,\n    `contactos`.`Telefono2` AS `Telefono2`,\n    `contactos`.`Telefono3` AS `Telefono3`,\n    `contactos`.`TelefonoM` AS `TelefonoM`,\n    `contactos`.`TelefonoF` AS `TelefonoF`,\n    `contactos`.`Correo1` AS `Correo1`,\n    `contactos`.`Correo2` AS `Correo2`,\n    `contactos`.`NContacto` AS `NContacto`,\n    `contactos`.`AContacto` AS `AContacto`,\n    `contactos`.`ListaPrecio` AS `ListaPrecio`,\n    `contactos`.`CoeficienteAC` AS `CoeficienteAC`,\n    `contactos`.`VigenciaDocs` AS `VigenciaDocs`,\n    `contactos`.`ImgContacto` AS `ImgContacto`,\n    `contactos`.`Notas` AS `Notas`\nFROM `contactos`\nWHERE (`contactos`.`ClienteTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120831\n**Cambio de Condición por cambio de tipo de variable\n*20120917\n**Agregado de atributos de Logo, Vigencia y Coeficiente a la vista.\n\n== Uso ==\n== URL ==','utf-8'),(596,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de Clientes\n== Composición ==\n*[[TABLA:contactos]]\n== SQL ==\n<pre>\nCREATE VIEW `clientes` AS\nSELECT \n    `contactos`.`ContactoID` AS `ClienteID`,\n    `contactos`.`RazonSocial` AS `RazonSocial`,\n    `contactos`.`Direccion` AS `Direccion`,\n    `contactos`.`Localidad` AS `Localidad`,\n    `contactos`.`Provincia` AS `Provincia`,\n    `contactos`.`Pais` AS `Pais`,\n    `contactos`.`CPostal` AS `CPostal`,\n    `contactos`.`CUIT` AS `CUIT`,\n    `contactos`.`Area` AS `Area`,\n    `contactos`.`Telefono1` AS `Telefono1`,\n    `contactos`.`Telefono2` AS `Telefono2`,\n    `contactos`.`Telefono3` AS `Telefono3`,\n    `contactos`.`TelefonoM` AS `TelefonoM`,\n    `contactos`.`TelefonoF` AS `TelefonoF`,\n    `contactos`.`Correo1` AS `Correo1`,\n    `contactos`.`Correo2` AS `Correo2`,\n    `contactos`.`NContacto` AS `NContacto`,\n    `contactos`.`AContacto` AS `AContacto`,\n    `contactos`.`ListaPrecio` AS `ListaPrecio`,\n    `contactos`.`CoeficienteAC` AS `CoeficienteAC`,\n    `contactos`.`VigenciaDocs` AS `VigenciaDocs`,\n    `contactos`.`ImgContacto` AS `ImgContacto`,\n    `contactos`.`Notas` AS `Notas`\nFROM `contactos`\nWHERE (`contactos`.`ClienteTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120831\n**Cambio de Condición por cambio de tipo de variable\n*20120917\n**Agregado de atributos de Logo, Vigencia y Coeficiente a la vista.\n\n== Uso ==\nFORM:Presupuesto\n\n== URL ==','utf-8'),(597,'== Descripción ==\nVista de Tabla de Contactos solo con el Tag de Clientes\n== Composición ==\n*[[TABLA:contactos]]\n== SQL ==\n<pre>\nCREATE VIEW `clientes` AS\nSELECT \n    `contactos`.`ContactoID` AS `ClienteID`,\n    `contactos`.`RazonSocial` AS `RazonSocial`,\n    `contactos`.`Direccion` AS `Direccion`,\n    `contactos`.`Localidad` AS `Localidad`,\n    `contactos`.`Provincia` AS `Provincia`,\n    `contactos`.`Pais` AS `Pais`,\n    `contactos`.`CPostal` AS `CPostal`,\n    `contactos`.`CUIT` AS `CUIT`,\n    `contactos`.`Area` AS `Area`,\n    `contactos`.`Telefono1` AS `Telefono1`,\n    `contactos`.`Telefono2` AS `Telefono2`,\n    `contactos`.`Telefono3` AS `Telefono3`,\n    `contactos`.`TelefonoM` AS `TelefonoM`,\n    `contactos`.`TelefonoF` AS `TelefonoF`,\n    `contactos`.`Correo1` AS `Correo1`,\n    `contactos`.`Correo2` AS `Correo2`,\n    `contactos`.`NContacto` AS `NContacto`,\n    `contactos`.`AContacto` AS `AContacto`,\n    `contactos`.`ListaPrecio` AS `ListaPrecio`,\n    `contactos`.`CoeficienteAC` AS `CoeficienteAC`,\n    `contactos`.`VigenciaDocs` AS `VigenciaDocs`,\n    `contactos`.`ImgContacto` AS `ImgContacto`,\n    `contactos`.`Notas` AS `Notas`\nFROM `contactos`\nWHERE (`contactos`.`ClienteTag` = 1)\n</pre>\n\n== Bitácora ==\n*20120831\n**Cambio de Condición por cambio de tipo de variable\n*20120917\n**Agregado de atributos de Logo, Vigencia y Coeficiente a la vista.\n\n== Uso ==\n*[[FORM:Presupuesto]]\n\n== URL ==','utf-8'),(598,'== Descripcion ==\nUna vez que ingresa los datos básicos de un producto, verifica que este producto tenga alguna composicion (solo los elementos básicos). Si la tiene, divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.\n\n== Composicion ==\n*[[VISTA:visproadic]]->\n*->[[TABLA:vidquoten3]]\n== SQL ==\n<small><pre>\ndelimiter |\nCREATE PROCEDURE AltaItemPresupuesto (IN pVidQuoteID INT(5), IN pVidQuoteLPre INT(1), IN pVidQuoteItem INT(5), IN pVidQuoteProdID CHAR(8), IN pVidQuoteProdCantidad INT(5), IN pVidQuoteAncho INT(5), IN pVidQuoteAlto INT(5)) \nBEGIN\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteLPre,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteAncho,\n		VidQuoteAlto,\n		VidQuoteElementoID,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID,\n		pVidQuoteLPre,\n		pVidQuoteItem,\n		pVidQuoteProdID,\n		pVidQuoteProdCantidad,\n		pVidQuoteAncho,\n		pVidQuoteAlto,\n		`T3`.`ProdCmpID`,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`)) AS pVidQuotePrecio,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`) * pVidQuoteProdCantidad) AS pVidQuotePrecioP\n	FROM\n		(\n		SELECT\n		`T1`.`ProductoID` AS ProductoID,\n		`T1`.`ProductoID` AS ProdCmpID,\n		`T1`.`ElementoID`,\n		`T1`.`ValorElemento`,\n		`T1`.`Descripcion`,\n		`T1`.`Magnitud`,\n		`T1`.`OffsetVanoAncho`,\n		`T1`.`OffsetVanoAlto`,\n		`T1`.`CoefVanoAncho`,\n		`T1`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T1`.`PrecioProd00`\n		 WHEN 1 THEN `T1`.`PrecioProd01`\n		 WHEN 2 THEN `T1`.`PrecioProd02`\n		 WHEN 3 THEN `T1`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T1\n		WHERE ProductoID=pVidQuoteProdID AND ElementoID=pVidQuoteProdID AND ElementoPM=1\n		UNION\n		SELECT \n		pVidQuoteProdID AS ProductoID,\n		`T2`.`ProductoID` AS ProdCmpID,\n		`T2`.`ElementoID`,\n		`T2`.`ValorElemento`,\n		`T2`.`Descripcion`,\n		`T2`.`Magnitud`,\n		`T2`.`OffsetVanoAncho`,\n		`T2`.`OffsetVanoAlto`,\n		`T2`.`CoefVanoAncho`,\n		`T2`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T2`.`PrecioProd00`\n		 WHEN 1 THEN `T2`.`PrecioProd01`\n		 WHEN 2 THEN `T2`.`PrecioProd02`\n		 WHEN 3 THEN `T2`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T2\n		WHERE ProductoID IN \n			 (SELECT ElementoID \n			  FROM visprodadic \n			  WHERE ProductoID=pVidQuoteProdID AND ElementoID<>pVidQuoteProdID AND ElementoPM=1\n		 )\n		) AS T3\n	GROUP BY ProdCmpID;\nEND;|		\n</pre></small>\n\n== Bitácora ==\n*20120419\n**Cambio de esquema para colocar el cálculo de subitems.\n*20120917\n**Cambio de diseño [[FORM:Presupuesto]]\n\n== Uso ==\n*MACR:EventoBRCDetallePresupuesto\n\n== URL ==\nFZG.Procedure.AltaItemPresupuesto.sql','utf-8'),(599,'== Descripcion ==\nUna vez que ingresa los datos básicos de un producto, verifica que este producto tenga alguna composicion (solo los elementos básicos). Si la tiene, divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.\n\n== Composicion ==\n*[[VISTA:visproadic]]->\n*->[[TABLA:vidquoten3]]\n== SQL ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `AltaItemPresupuesto`(\n	IN pVidQuoteID INT(5), \n	IN pVidQuoteLPre INT(1), \n	IN pVidQuoteItem INT(5), \n	IN pVidQuoteProdID CHAR(8), \n	IN pVidQuoteProdCantidad INT(5), \n	IN pVidQuoteAncho INT(5), \n	IN pVidQuoteAlto INT(5), \n	IN pCoeficienteMU DECIMAL(5,2)\nBEGIN\n    DECLARE vVarNum INT(5);\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registro de Auditoria\n	-- --------------------------------------------------------------------------------\n    CALL DebugCheckPoint(\n        CONCAT(\n        \"PROC:AltaItemPresupuestoTmp\",\"/\",\n        CAST(pVidQuoteID AS CHAR),\"-\",\n        CAST(pVidQuoteLPre AS CHAR),\"-\",\n        CAST(pVidQuoteItem AS CHAR),\"-\",\n        pVidQuoteProdID,\"-\",\n        CAST(pVidQuoteProdCantidad AS CHAR),\"-\",\n        CAST(pVidQuoteAncho AS CHAR),\"-\",\n        CAST(pVidQuoteAlto AS CHAR),\"-\",\n        CAST(pCoeficienteMU AS CHAR)\n        ));\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registraciones pausibles de incorporar de acuerdo al tipo de \n	-- --------------------------------------------------------------------------------\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteElementoID,\n		VidQuoteComposicID,\n      VidQuoteElementoPM,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID as VidQuoteID,\n		pVidQuoteItem as VidQuoteItem,\n		R1.ProductoID AS VidQuoteProdID,\n		pVidQuoteProdCantidad AS VidQuoteProdCantidad,\n		R1.ProdCmpID AS VidQuoteElementoID,\n		R1.ComposicID AS VidQuoteComposicID,\n      R1.ElementoPM AS VidQuoteElementoPM,\n		SUM(\n          CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pCoeficienteMU) AS VidQuotePrecio,\n		SUM(\n         CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pVidQuoteProdCantidad * pCoeficienteMU) AS VidQuotePrecioP\n\n	FROM\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion iguales al producto \n		-- --------------------------------------------------------------------------------\n		((\n		SELECT \n		U1.ProductoID,\n		U1.ElementoID AS ProdCmpID,\n		U1.ComposicID,\n		U1.ElementoID,\n		U1.ElementoPM,\n		U2.Magnitud,\n		U1.ValorElemento,\n		U1.OffsetVanoAncho,\n		U1.OffsetVanoAlto,\n		U1.CoefVanoAncho,\n		U1.CoefVanoAlto,\n		(CASE (2)\n		  WHEN 0 THEN U3.PrecioProd00\n		  WHEN 1 THEN U3.PrecioProd01\n		  WHEN 2 THEN U3.PrecioProd02\n		  WHEN 3 THEN U3.PrecioProd03\n		END) AS PrecioProd\n		FROM\n		fzggestion.productos AS U2,\n		fzggestion.composicion AS U1,\n		fzggestion.precios AS U3\n		WHERE\n		U2.ProductoID = U1.ElementoID AND \n		U3.ProductoID = U2.ProductoID AND \n		U1.ProductoID = pVidQuoteProdID AND \n		U1.ElementoID = pVidQuoteProdID AND \n		U1.ElementoPM = 0)\n		-- --------------------------------------------------------------------------------\n		UNION\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion diferentes al producto\n		-- --------------------------------------------------------------------------------\n		(\n		SELECT \n			T1.ProductoID,\n			T1.ElementoID AS ProdCmpID,\n			T1.ComposicID,\n			T2.ElementoID,\n			T1.ElementoPM,\n			T3.Magnitud,\n			T1.ValorElemento,        \n			T1.OffsetVanoAncho,\n			T1.OffsetVanoAlto,\n			T1.CoefVanoAncho,\n			T1.CoefVanoAlto,\n			(CASE (2)\n				WHEN 0 THEN `T4`.`PrecioProd00`\n				WHEN 1 THEN `T4`.`PrecioProd01`\n				WHEN 2 THEN `T4`.`PrecioProd02`\n				WHEN 3 THEN `T4`.`PrecioProd03`\n			END) AS PrecioProd\n		FROM\n			fzggestion.composicion AS T2,\n			fzggestion.composicion AS T1,\n			fzggestion.productos AS T3,\n			fzggestion.precios AS T4\n		WHERE\n			T2.ProductoID = T1.ElementoID AND \n			T3.ProductoID = T2.ElementoID AND \n			T4.ProductoID = T3.ProductoID AND \n			T1.ProductoID <> T1.ElementoID AND \n			T2.ElementoPM = 0 AND \n			T1.ProductoID = pVidQuoteProdID AND \n			T1.ElementoPM = 0\n		ORDER BY\n			T1.ProductoID ASC ,\n			T1.ElementoID ASC ,\n			T1.ComposicID ASC ,\n			T2.ElementoID ASC)\n		-- --------------------------------------------------------------------------------\n		-- R1 es el sinónimo de la union de las tablas \n		-- --------------------------------------------------------------------------------\n		) AS R1\n		GROUP BY\n			VidQuoteElementoID,\n			VidQuoteComposicID;\nEND\n</pre></small>\n== Bitácora ==\n*20120419\n**Cambio de esquema para colocar el cálculo de subitems.\n*20120917\n**Cambio de diseño [[FORM:Presupuesto]]\n<small><pre>\ndelimiter |\nCREATE PROCEDURE AltaItemPresupuesto (IN pVidQuoteID INT(5), IN pVidQuoteLPre INT(1), IN pVidQuoteItem INT(5), IN pVidQuoteProdID CHAR(8), IN pVidQuoteProdCantidad INT(5), IN pVidQuoteAncho INT(5), IN pVidQuoteAlto INT(5)) \nBEGIN\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteLPre,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteAncho,\n		VidQuoteAlto,\n		VidQuoteElementoID,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID,\n		pVidQuoteLPre,\n		pVidQuoteItem,\n		pVidQuoteProdID,\n		pVidQuoteProdCantidad,\n		pVidQuoteAncho,\n		pVidQuoteAlto,\n		`T3`.`ProdCmpID`,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`)) AS pVidQuotePrecio,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`) * pVidQuoteProdCantidad) AS pVidQuotePrecioP\n	FROM\n		(\n		SELECT\n		`T1`.`ProductoID` AS ProductoID,\n		`T1`.`ProductoID` AS ProdCmpID,\n		`T1`.`ElementoID`,\n		`T1`.`ValorElemento`,\n		`T1`.`Descripcion`,\n		`T1`.`Magnitud`,\n		`T1`.`OffsetVanoAncho`,\n		`T1`.`OffsetVanoAlto`,\n		`T1`.`CoefVanoAncho`,\n		`T1`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T1`.`PrecioProd00`\n		 WHEN 1 THEN `T1`.`PrecioProd01`\n		 WHEN 2 THEN `T1`.`PrecioProd02`\n		 WHEN 3 THEN `T1`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T1\n		WHERE ProductoID=pVidQuoteProdID AND ElementoID=pVidQuoteProdID AND ElementoPM=1\n		UNION\n		SELECT \n		pVidQuoteProdID AS ProductoID,\n		`T2`.`ProductoID` AS ProdCmpID,\n		`T2`.`ElementoID`,\n		`T2`.`ValorElemento`,\n		`T2`.`Descripcion`,\n		`T2`.`Magnitud`,\n		`T2`.`OffsetVanoAncho`,\n		`T2`.`OffsetVanoAlto`,\n		`T2`.`CoefVanoAncho`,\n		`T2`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T2`.`PrecioProd00`\n		 WHEN 1 THEN `T2`.`PrecioProd01`\n		 WHEN 2 THEN `T2`.`PrecioProd02`\n		 WHEN 3 THEN `T2`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T2\n		WHERE ProductoID IN \n			 (SELECT ElementoID \n			  FROM visprodadic \n			  WHERE ProductoID=pVidQuoteProdID AND ElementoID<>pVidQuoteProdID AND ElementoPM=1\n		 )\n		) AS T3\n	GROUP BY ProdCmpID;\nEND;|		\n</pre></small>\n== Uso ==\n*[[MACRO:EventoBRCDetallePresupuesto]]\n== URL ==\nFZG.Procedure.AltaItemPresupuesto.sql','utf-8'),(600,'== Descripcion ==\n<strike>Una vez que ingresa los datos básicos de un producto, verifica que este producto tenga alguna composicion (solo los elementos básicos). Si la tiene, divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.</strike>\nUna vez que ingresa los datos básicos de un producto, inserta en [[TABLA:vidquoten3]] los componentes del producto señalado (solo los elementos básicos). Divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de [[TABLA:componentes]], [[TABLA:productos]] y [[TABLA:precios]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de de [[TABLA:componentes]], [[TABLA:productos]] y [[TABLA:precios]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.\n\n== Composicion ==\n*[[VISTA:visproadic]]->\n*->[[TABLA:vidquoten3]]\n== SQL ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `AltaItemPresupuesto`(\n	IN pVidQuoteID INT(5), \n	IN pVidQuoteLPre INT(1), \n	IN pVidQuoteItem INT(5), \n	IN pVidQuoteProdID CHAR(8), \n	IN pVidQuoteProdCantidad INT(5), \n	IN pVidQuoteAncho INT(5), \n	IN pVidQuoteAlto INT(5), \n	IN pCoeficienteMU DECIMAL(5,2)\nBEGIN\n    DECLARE vVarNum INT(5);\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registro de Auditoria\n	-- --------------------------------------------------------------------------------\n    CALL DebugCheckPoint(\n        CONCAT(\n        \"PROC:AltaItemPresupuestoTmp\",\"/\",\n        CAST(pVidQuoteID AS CHAR),\"-\",\n        CAST(pVidQuoteLPre AS CHAR),\"-\",\n        CAST(pVidQuoteItem AS CHAR),\"-\",\n        pVidQuoteProdID,\"-\",\n        CAST(pVidQuoteProdCantidad AS CHAR),\"-\",\n        CAST(pVidQuoteAncho AS CHAR),\"-\",\n        CAST(pVidQuoteAlto AS CHAR),\"-\",\n        CAST(pCoeficienteMU AS CHAR)\n        ));\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registraciones pausibles de incorporar de acuerdo al tipo de \n	-- --------------------------------------------------------------------------------\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteElementoID,\n		VidQuoteComposicID,\n      VidQuoteElementoPM,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID as VidQuoteID,\n		pVidQuoteItem as VidQuoteItem,\n		R1.ProductoID AS VidQuoteProdID,\n		pVidQuoteProdCantidad AS VidQuoteProdCantidad,\n		R1.ProdCmpID AS VidQuoteElementoID,\n		R1.ComposicID AS VidQuoteComposicID,\n      R1.ElementoPM AS VidQuoteElementoPM,\n		SUM(\n          CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pCoeficienteMU) AS VidQuotePrecio,\n		SUM(\n         CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pVidQuoteProdCantidad * pCoeficienteMU) AS VidQuotePrecioP\n\n	FROM\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion iguales al producto \n		-- --------------------------------------------------------------------------------\n		((\n		SELECT \n		U1.ProductoID,\n		U1.ElementoID AS ProdCmpID,\n		U1.ComposicID,\n		U1.ElementoID,\n		U1.ElementoPM,\n		U2.Magnitud,\n		U1.ValorElemento,\n		U1.OffsetVanoAncho,\n		U1.OffsetVanoAlto,\n		U1.CoefVanoAncho,\n		U1.CoefVanoAlto,\n		(CASE (2)\n		  WHEN 0 THEN U3.PrecioProd00\n		  WHEN 1 THEN U3.PrecioProd01\n		  WHEN 2 THEN U3.PrecioProd02\n		  WHEN 3 THEN U3.PrecioProd03\n		END) AS PrecioProd\n		FROM\n		fzggestion.productos AS U2,\n		fzggestion.composicion AS U1,\n		fzggestion.precios AS U3\n		WHERE\n		U2.ProductoID = U1.ElementoID AND \n		U3.ProductoID = U2.ProductoID AND \n		U1.ProductoID = pVidQuoteProdID AND \n		U1.ElementoID = pVidQuoteProdID AND \n		U1.ElementoPM = 0)\n		-- --------------------------------------------------------------------------------\n		UNION\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion diferentes al producto\n		-- --------------------------------------------------------------------------------\n		(\n		SELECT \n			T1.ProductoID,\n			T1.ElementoID AS ProdCmpID,\n			T1.ComposicID,\n			T2.ElementoID,\n			T1.ElementoPM,\n			T3.Magnitud,\n			T1.ValorElemento,        \n			T1.OffsetVanoAncho,\n			T1.OffsetVanoAlto,\n			T1.CoefVanoAncho,\n			T1.CoefVanoAlto,\n			(CASE (2)\n				WHEN 0 THEN `T4`.`PrecioProd00`\n				WHEN 1 THEN `T4`.`PrecioProd01`\n				WHEN 2 THEN `T4`.`PrecioProd02`\n				WHEN 3 THEN `T4`.`PrecioProd03`\n			END) AS PrecioProd\n		FROM\n			fzggestion.composicion AS T2,\n			fzggestion.composicion AS T1,\n			fzggestion.productos AS T3,\n			fzggestion.precios AS T4\n		WHERE\n			T2.ProductoID = T1.ElementoID AND \n			T3.ProductoID = T2.ElementoID AND \n			T4.ProductoID = T3.ProductoID AND \n			T1.ProductoID <> T1.ElementoID AND \n			T2.ElementoPM = 0 AND \n			T1.ProductoID = pVidQuoteProdID AND \n			T1.ElementoPM = 0\n		ORDER BY\n			T1.ProductoID ASC ,\n			T1.ElementoID ASC ,\n			T1.ComposicID ASC ,\n			T2.ElementoID ASC)\n		-- --------------------------------------------------------------------------------\n		-- R1 es el sinónimo de la union de las tablas \n		-- --------------------------------------------------------------------------------\n		) AS R1\n		GROUP BY\n			VidQuoteElementoID,\n			VidQuoteComposicID;\nEND\n</pre></small>\n== Bitácora ==\n*20120419\n**Cambio de esquema para colocar el cálculo de subitems.\n*20120917\n**Cambio de diseño [[FORM:Presupuesto]]\n<small><pre>\ndelimiter |\nCREATE PROCEDURE AltaItemPresupuesto (IN pVidQuoteID INT(5), IN pVidQuoteLPre INT(1), IN pVidQuoteItem INT(5), IN pVidQuoteProdID CHAR(8), IN pVidQuoteProdCantidad INT(5), IN pVidQuoteAncho INT(5), IN pVidQuoteAlto INT(5)) \nBEGIN\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteLPre,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteAncho,\n		VidQuoteAlto,\n		VidQuoteElementoID,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID,\n		pVidQuoteLPre,\n		pVidQuoteItem,\n		pVidQuoteProdID,\n		pVidQuoteProdCantidad,\n		pVidQuoteAncho,\n		pVidQuoteAlto,\n		`T3`.`ProdCmpID`,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`)) AS pVidQuotePrecio,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`) * pVidQuoteProdCantidad) AS pVidQuotePrecioP\n	FROM\n		(\n		SELECT\n		`T1`.`ProductoID` AS ProductoID,\n		`T1`.`ProductoID` AS ProdCmpID,\n		`T1`.`ElementoID`,\n		`T1`.`ValorElemento`,\n		`T1`.`Descripcion`,\n		`T1`.`Magnitud`,\n		`T1`.`OffsetVanoAncho`,\n		`T1`.`OffsetVanoAlto`,\n		`T1`.`CoefVanoAncho`,\n		`T1`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T1`.`PrecioProd00`\n		 WHEN 1 THEN `T1`.`PrecioProd01`\n		 WHEN 2 THEN `T1`.`PrecioProd02`\n		 WHEN 3 THEN `T1`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T1\n		WHERE ProductoID=pVidQuoteProdID AND ElementoID=pVidQuoteProdID AND ElementoPM=1\n		UNION\n		SELECT \n		pVidQuoteProdID AS ProductoID,\n		`T2`.`ProductoID` AS ProdCmpID,\n		`T2`.`ElementoID`,\n		`T2`.`ValorElemento`,\n		`T2`.`Descripcion`,\n		`T2`.`Magnitud`,\n		`T2`.`OffsetVanoAncho`,\n		`T2`.`OffsetVanoAlto`,\n		`T2`.`CoefVanoAncho`,\n		`T2`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T2`.`PrecioProd00`\n		 WHEN 1 THEN `T2`.`PrecioProd01`\n		 WHEN 2 THEN `T2`.`PrecioProd02`\n		 WHEN 3 THEN `T2`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T2\n		WHERE ProductoID IN \n			 (SELECT ElementoID \n			  FROM visprodadic \n			  WHERE ProductoID=pVidQuoteProdID AND ElementoID<>pVidQuoteProdID AND ElementoPM=1\n		 )\n		) AS T3\n	GROUP BY ProdCmpID;\nEND;|		\n</pre></small>\n== Uso ==\n*[[MACRO:EventoBRCDetallePresupuesto]]\n== URL ==\nFZG.Procedure.AltaItemPresupuesto.sql','utf-8'),(601,'== Descripcion ==\n<strike>Una vez que ingresa los datos básicos de un producto, verifica que este producto tenga alguna composicion (solo los elementos básicos). Si la tiene, divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.</strike> \'\'\'20120917\'\'\'\nUna vez que ingresa los datos básicos de un producto, inserta en [[TABLA:vidquoten3]] los componentes del producto señalado (solo los elementos básicos). Divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de [[TABLA:componentes]], [[TABLA:productos]] y [[TABLA:precios]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de de [[TABLA:componentes]], [[TABLA:productos]] y [[TABLA:precios]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.\n\n== Composicion ==\n*[[VISTA:visproadic]]->\n*->[[TABLA:vidquoten3]]\n== SQL ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `AltaItemPresupuesto`(\n	IN pVidQuoteID INT(5), \n	IN pVidQuoteLPre INT(1), \n	IN pVidQuoteItem INT(5), \n	IN pVidQuoteProdID CHAR(8), \n	IN pVidQuoteProdCantidad INT(5), \n	IN pVidQuoteAncho INT(5), \n	IN pVidQuoteAlto INT(5), \n	IN pCoeficienteMU DECIMAL(5,2)\nBEGIN\n    DECLARE vVarNum INT(5);\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registro de Auditoria\n	-- --------------------------------------------------------------------------------\n    CALL DebugCheckPoint(\n        CONCAT(\n        \"PROC:AltaItemPresupuestoTmp\",\"/\",\n        CAST(pVidQuoteID AS CHAR),\"-\",\n        CAST(pVidQuoteLPre AS CHAR),\"-\",\n        CAST(pVidQuoteItem AS CHAR),\"-\",\n        pVidQuoteProdID,\"-\",\n        CAST(pVidQuoteProdCantidad AS CHAR),\"-\",\n        CAST(pVidQuoteAncho AS CHAR),\"-\",\n        CAST(pVidQuoteAlto AS CHAR),\"-\",\n        CAST(pCoeficienteMU AS CHAR)\n        ));\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registraciones pausibles de incorporar de acuerdo al tipo de \n	-- --------------------------------------------------------------------------------\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteElementoID,\n		VidQuoteComposicID,\n      VidQuoteElementoPM,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID as VidQuoteID,\n		pVidQuoteItem as VidQuoteItem,\n		R1.ProductoID AS VidQuoteProdID,\n		pVidQuoteProdCantidad AS VidQuoteProdCantidad,\n		R1.ProdCmpID AS VidQuoteElementoID,\n		R1.ComposicID AS VidQuoteComposicID,\n      R1.ElementoPM AS VidQuoteElementoPM,\n		SUM(\n          CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pCoeficienteMU) AS VidQuotePrecio,\n		SUM(\n         CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pVidQuoteProdCantidad * pCoeficienteMU) AS VidQuotePrecioP\n\n	FROM\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion iguales al producto \n		-- --------------------------------------------------------------------------------\n		((\n		SELECT \n		U1.ProductoID,\n		U1.ElementoID AS ProdCmpID,\n		U1.ComposicID,\n		U1.ElementoID,\n		U1.ElementoPM,\n		U2.Magnitud,\n		U1.ValorElemento,\n		U1.OffsetVanoAncho,\n		U1.OffsetVanoAlto,\n		U1.CoefVanoAncho,\n		U1.CoefVanoAlto,\n		(CASE (2)\n		  WHEN 0 THEN U3.PrecioProd00\n		  WHEN 1 THEN U3.PrecioProd01\n		  WHEN 2 THEN U3.PrecioProd02\n		  WHEN 3 THEN U3.PrecioProd03\n		END) AS PrecioProd\n		FROM\n		fzggestion.productos AS U2,\n		fzggestion.composicion AS U1,\n		fzggestion.precios AS U3\n		WHERE\n		U2.ProductoID = U1.ElementoID AND \n		U3.ProductoID = U2.ProductoID AND \n		U1.ProductoID = pVidQuoteProdID AND \n		U1.ElementoID = pVidQuoteProdID AND \n		U1.ElementoPM = 0)\n		-- --------------------------------------------------------------------------------\n		UNION\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion diferentes al producto\n		-- --------------------------------------------------------------------------------\n		(\n		SELECT \n			T1.ProductoID,\n			T1.ElementoID AS ProdCmpID,\n			T1.ComposicID,\n			T2.ElementoID,\n			T1.ElementoPM,\n			T3.Magnitud,\n			T1.ValorElemento,        \n			T1.OffsetVanoAncho,\n			T1.OffsetVanoAlto,\n			T1.CoefVanoAncho,\n			T1.CoefVanoAlto,\n			(CASE (2)\n				WHEN 0 THEN `T4`.`PrecioProd00`\n				WHEN 1 THEN `T4`.`PrecioProd01`\n				WHEN 2 THEN `T4`.`PrecioProd02`\n				WHEN 3 THEN `T4`.`PrecioProd03`\n			END) AS PrecioProd\n		FROM\n			fzggestion.composicion AS T2,\n			fzggestion.composicion AS T1,\n			fzggestion.productos AS T3,\n			fzggestion.precios AS T4\n		WHERE\n			T2.ProductoID = T1.ElementoID AND \n			T3.ProductoID = T2.ElementoID AND \n			T4.ProductoID = T3.ProductoID AND \n			T1.ProductoID <> T1.ElementoID AND \n			T2.ElementoPM = 0 AND \n			T1.ProductoID = pVidQuoteProdID AND \n			T1.ElementoPM = 0\n		ORDER BY\n			T1.ProductoID ASC ,\n			T1.ElementoID ASC ,\n			T1.ComposicID ASC ,\n			T2.ElementoID ASC)\n		-- --------------------------------------------------------------------------------\n		-- R1 es el sinónimo de la union de las tablas \n		-- --------------------------------------------------------------------------------\n		) AS R1\n		GROUP BY\n			VidQuoteElementoID,\n			VidQuoteComposicID;\nEND\n</pre></small>\n== Bitácora ==\n*20120419\n**Cambio de esquema para colocar el cálculo de subitems.\n*20120917\n**Cambio de diseño [[FORM:Presupuesto]]\n<small><pre>\ndelimiter |\nCREATE PROCEDURE AltaItemPresupuesto (IN pVidQuoteID INT(5), IN pVidQuoteLPre INT(1), IN pVidQuoteItem INT(5), IN pVidQuoteProdID CHAR(8), IN pVidQuoteProdCantidad INT(5), IN pVidQuoteAncho INT(5), IN pVidQuoteAlto INT(5)) \nBEGIN\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteLPre,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteAncho,\n		VidQuoteAlto,\n		VidQuoteElementoID,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID,\n		pVidQuoteLPre,\n		pVidQuoteItem,\n		pVidQuoteProdID,\n		pVidQuoteProdCantidad,\n		pVidQuoteAncho,\n		pVidQuoteAlto,\n		`T3`.`ProdCmpID`,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`)) AS pVidQuotePrecio,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`) * pVidQuoteProdCantidad) AS pVidQuotePrecioP\n	FROM\n		(\n		SELECT\n		`T1`.`ProductoID` AS ProductoID,\n		`T1`.`ProductoID` AS ProdCmpID,\n		`T1`.`ElementoID`,\n		`T1`.`ValorElemento`,\n		`T1`.`Descripcion`,\n		`T1`.`Magnitud`,\n		`T1`.`OffsetVanoAncho`,\n		`T1`.`OffsetVanoAlto`,\n		`T1`.`CoefVanoAncho`,\n		`T1`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T1`.`PrecioProd00`\n		 WHEN 1 THEN `T1`.`PrecioProd01`\n		 WHEN 2 THEN `T1`.`PrecioProd02`\n		 WHEN 3 THEN `T1`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T1\n		WHERE ProductoID=pVidQuoteProdID AND ElementoID=pVidQuoteProdID AND ElementoPM=1\n		UNION\n		SELECT \n		pVidQuoteProdID AS ProductoID,\n		`T2`.`ProductoID` AS ProdCmpID,\n		`T2`.`ElementoID`,\n		`T2`.`ValorElemento`,\n		`T2`.`Descripcion`,\n		`T2`.`Magnitud`,\n		`T2`.`OffsetVanoAncho`,\n		`T2`.`OffsetVanoAlto`,\n		`T2`.`CoefVanoAncho`,\n		`T2`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T2`.`PrecioProd00`\n		 WHEN 1 THEN `T2`.`PrecioProd01`\n		 WHEN 2 THEN `T2`.`PrecioProd02`\n		 WHEN 3 THEN `T2`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T2\n		WHERE ProductoID IN \n			 (SELECT ElementoID \n			  FROM visprodadic \n			  WHERE ProductoID=pVidQuoteProdID AND ElementoID<>pVidQuoteProdID AND ElementoPM=1\n		 )\n		) AS T3\n	GROUP BY ProdCmpID;\nEND;|		\n</pre></small>\n== Uso ==\n*[[MACRO:EventoBRCDetallePresupuesto]]\n== URL ==\nFZG.Procedure.AltaItemPresupuesto.sql','utf-8'),(602,'== Descripcion ==\n<strike>Una vez que ingresa los datos básicos de un producto, verifica que este producto tenga alguna composicion (solo los elementos básicos). Si la tiene, divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de la [[VISTA:visprodadic]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.</strike> \'\'\'20120917\'\'\'\nUna vez que ingresa los datos básicos de un producto, inserta en [[TABLA:vidquoten3]] los componentes del producto señalado (solo los elementos básicos). Divide el proceso en 2 partes\n#Une 2 grupos de datos dentro del mismo subconjunto\n##Todos los productos-elementos de [[TABLA:componentes]], [[TABLA:productos]] y [[TABLA:precios]] cuyo codigo de producto sea igual al código de producto madre y que sea \"propiamente dichos\" (cuyo código de producto sea igual al código de elemento)\n##Todos los productos-elementos de de [[TABLA:componentes]], [[TABLA:productos]] y [[TABLA:precios]] cuyo codigo de producto sea igual al código de producto madre y el código de producto sea diferente al codigo de elemento.\n###Incluye todos los productos-elementos de un nivel inferior. Esto se realiza seleccionando los elementos de la composicion como si fuesen productos y esos productos son la clave de búsqueda dentro de la misma tabla de composición.\n\n== Composicion ==\n*<strike>[[VISTA:visproadic]]-></strike>\n*[[TABLA:productos]]->\n*[[TABLA:precios]]->\n*[[TABLA:componentes]]->\n*->[[TABLA:vidquoten3]]\n\n== SQL ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `AltaItemPresupuesto`(\n	IN pVidQuoteID INT(5), \n	IN pVidQuoteLPre INT(1), \n	IN pVidQuoteItem INT(5), \n	IN pVidQuoteProdID CHAR(8), \n	IN pVidQuoteProdCantidad INT(5), \n	IN pVidQuoteAncho INT(5), \n	IN pVidQuoteAlto INT(5), \n	IN pCoeficienteMU DECIMAL(5,2)\nBEGIN\n    DECLARE vVarNum INT(5);\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registro de Auditoria\n	-- --------------------------------------------------------------------------------\n    CALL DebugCheckPoint(\n        CONCAT(\n        \"PROC:AltaItemPresupuestoTmp\",\"/\",\n        CAST(pVidQuoteID AS CHAR),\"-\",\n        CAST(pVidQuoteLPre AS CHAR),\"-\",\n        CAST(pVidQuoteItem AS CHAR),\"-\",\n        pVidQuoteProdID,\"-\",\n        CAST(pVidQuoteProdCantidad AS CHAR),\"-\",\n        CAST(pVidQuoteAncho AS CHAR),\"-\",\n        CAST(pVidQuoteAlto AS CHAR),\"-\",\n        CAST(pCoeficienteMU AS CHAR)\n        ));\n	-- --------------------------------------------------------------------------------\n	-- Inserta Registraciones pausibles de incorporar de acuerdo al tipo de \n	-- --------------------------------------------------------------------------------\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteElementoID,\n		VidQuoteComposicID,\n      VidQuoteElementoPM,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID as VidQuoteID,\n		pVidQuoteItem as VidQuoteItem,\n		R1.ProductoID AS VidQuoteProdID,\n		pVidQuoteProdCantidad AS VidQuoteProdCantidad,\n		R1.ProdCmpID AS VidQuoteElementoID,\n		R1.ComposicID AS VidQuoteComposicID,\n      R1.ElementoPM AS VidQuoteElementoPM,\n		SUM(\n          CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pCoeficienteMU) AS VidQuotePrecio,\n		SUM(\n         CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`R1`.`PrecioProd`,\n			`R1`.`Magnitud`,\n			`R1`.`OffsetVanoAlto`,\n			`R1`.`OffsetVanoAncho`,\n			`R1`.`CoefVanoAlto`,\n			`R1`.`CoefVanoAncho`,\n			`R1`.`ValorElemento`) * pVidQuoteProdCantidad * pCoeficienteMU) AS VidQuotePrecioP\n\n	FROM\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion iguales al producto \n		-- --------------------------------------------------------------------------------\n		((\n		SELECT \n		U1.ProductoID,\n		U1.ElementoID AS ProdCmpID,\n		U1.ComposicID,\n		U1.ElementoID,\n		U1.ElementoPM,\n		U2.Magnitud,\n		U1.ValorElemento,\n		U1.OffsetVanoAncho,\n		U1.OffsetVanoAlto,\n		U1.CoefVanoAncho,\n		U1.CoefVanoAlto,\n		(CASE (2)\n		  WHEN 0 THEN U3.PrecioProd00\n		  WHEN 1 THEN U3.PrecioProd01\n		  WHEN 2 THEN U3.PrecioProd02\n		  WHEN 3 THEN U3.PrecioProd03\n		END) AS PrecioProd\n		FROM\n		fzggestion.productos AS U2,\n		fzggestion.composicion AS U1,\n		fzggestion.precios AS U3\n		WHERE\n		U2.ProductoID = U1.ElementoID AND \n		U3.ProductoID = U2.ProductoID AND \n		U1.ProductoID = pVidQuoteProdID AND \n		U1.ElementoID = pVidQuoteProdID AND \n		U1.ElementoPM = 0)\n		-- --------------------------------------------------------------------------------\n		UNION\n		-- --------------------------------------------------------------------------------\n		-- Selecciona elementos de composicion diferentes al producto\n		-- --------------------------------------------------------------------------------\n		(\n		SELECT \n			T1.ProductoID,\n			T1.ElementoID AS ProdCmpID,\n			T1.ComposicID,\n			T2.ElementoID,\n			T1.ElementoPM,\n			T3.Magnitud,\n			T1.ValorElemento,        \n			T1.OffsetVanoAncho,\n			T1.OffsetVanoAlto,\n			T1.CoefVanoAncho,\n			T1.CoefVanoAlto,\n			(CASE (2)\n				WHEN 0 THEN `T4`.`PrecioProd00`\n				WHEN 1 THEN `T4`.`PrecioProd01`\n				WHEN 2 THEN `T4`.`PrecioProd02`\n				WHEN 3 THEN `T4`.`PrecioProd03`\n			END) AS PrecioProd\n		FROM\n			fzggestion.composicion AS T2,\n			fzggestion.composicion AS T1,\n			fzggestion.productos AS T3,\n			fzggestion.precios AS T4\n		WHERE\n			T2.ProductoID = T1.ElementoID AND \n			T3.ProductoID = T2.ElementoID AND \n			T4.ProductoID = T3.ProductoID AND \n			T1.ProductoID <> T1.ElementoID AND \n			T2.ElementoPM = 0 AND \n			T1.ProductoID = pVidQuoteProdID AND \n			T1.ElementoPM = 0\n		ORDER BY\n			T1.ProductoID ASC ,\n			T1.ElementoID ASC ,\n			T1.ComposicID ASC ,\n			T2.ElementoID ASC)\n		-- --------------------------------------------------------------------------------\n		-- R1 es el sinónimo de la union de las tablas \n		-- --------------------------------------------------------------------------------\n		) AS R1\n		GROUP BY\n			VidQuoteElementoID,\n			VidQuoteComposicID;\nEND\n</pre></small>\n== Bitácora ==\n*20120419\n**Cambio de esquema para colocar el cálculo de subitems.\n*20120917\n**Cambio de diseño [[FORM:Presupuesto]]\n<small><pre>\ndelimiter |\nCREATE PROCEDURE AltaItemPresupuesto (IN pVidQuoteID INT(5), IN pVidQuoteLPre INT(1), IN pVidQuoteItem INT(5), IN pVidQuoteProdID CHAR(8), IN pVidQuoteProdCantidad INT(5), IN pVidQuoteAncho INT(5), IN pVidQuoteAlto INT(5)) \nBEGIN\n	INSERT INTO vidquoten3 (\n		VidQuoteID,\n		VidQuoteLPre,\n		VidQuoteItem,\n		VidQuoteProdID,\n		VidQuoteProdCantidad,\n		VidQuoteAncho,\n		VidQuoteAlto,\n		VidQuoteElementoID,\n		VidQuotePrecio,\n		VidQuotePrecioP)\n	SELECT\n		pVidQuoteID,\n		pVidQuoteLPre,\n		pVidQuoteItem,\n		pVidQuoteProdID,\n		pVidQuoteProdCantidad,\n		pVidQuoteAncho,\n		pVidQuoteAlto,\n		`T3`.`ProdCmpID`,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`)) AS pVidQuotePrecio,\n		SUM(CalculoPrecio(\n			pVidQuoteAncho, \n			pVidQuoteAlto,\n			`T3`.`PrecioProd`,\n			`T3`.`Magnitud`,\n			`T3`.`OffsetVanoAlto`,\n			`T3`.`OffsetVanoAncho`,\n			`T3`.`CoefVanoAlto`,\n			`T3`.`CoefVanoAncho`,\n			`T3`.`ValorElemento`) * pVidQuoteProdCantidad) AS pVidQuotePrecioP\n	FROM\n		(\n		SELECT\n		`T1`.`ProductoID` AS ProductoID,\n		`T1`.`ProductoID` AS ProdCmpID,\n		`T1`.`ElementoID`,\n		`T1`.`ValorElemento`,\n		`T1`.`Descripcion`,\n		`T1`.`Magnitud`,\n		`T1`.`OffsetVanoAncho`,\n		`T1`.`OffsetVanoAlto`,\n		`T1`.`CoefVanoAncho`,\n		`T1`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T1`.`PrecioProd00`\n		 WHEN 1 THEN `T1`.`PrecioProd01`\n		 WHEN 2 THEN `T1`.`PrecioProd02`\n		 WHEN 3 THEN `T1`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T1\n		WHERE ProductoID=pVidQuoteProdID AND ElementoID=pVidQuoteProdID AND ElementoPM=1\n		UNION\n		SELECT \n		pVidQuoteProdID AS ProductoID,\n		`T2`.`ProductoID` AS ProdCmpID,\n		`T2`.`ElementoID`,\n		`T2`.`ValorElemento`,\n		`T2`.`Descripcion`,\n		`T2`.`Magnitud`,\n		`T2`.`OffsetVanoAncho`,\n		`T2`.`OffsetVanoAlto`,\n		`T2`.`CoefVanoAncho`,\n		`T2`.`CoefVanoAlto`,\n		(CASE (pVidQuoteLPre)\n		 WHEN 0 THEN `T2`.`PrecioProd00`\n		 WHEN 1 THEN `T2`.`PrecioProd01`\n		 WHEN 2 THEN `T2`.`PrecioProd02`\n		 WHEN 3 THEN `T2`.`PrecioProd03`\n		END) AS PrecioProd\n		FROM visprodadic AS T2\n		WHERE ProductoID IN \n			 (SELECT ElementoID \n			  FROM visprodadic \n			  WHERE ProductoID=pVidQuoteProdID AND ElementoID<>pVidQuoteProdID AND ElementoPM=1\n		 )\n		) AS T3\n	GROUP BY ProdCmpID;\nEND;|		\n</pre></small>\n== Uso ==\n*[[MACRO:EventoBRCDetallePresupuesto]]\n== URL ==\nFZG.Procedure.AltaItemPresupuesto.sql','utf-8'),(603,'=== Estructuras de Datos ===\n==== Estructuras Tipo ====\n[[Estructuras Tipo]]\n==== Tablas ====\n* [[TABLA:accreceiv]]\n* [[TABLA:accpayab]]\n* [[TABLA:catinsumos]]\n* [[TABLA:cmoneda]]\n* [[TABLA:composicion]]\n* [[TABLA:composicionqry]]\n* [[TABLA:contactos]]\n* [[TABLA:cpar]]\n* [[TABLA:debugstmt]]\n* [[TABLA:elementos]]\n* [[TABLA:insumos]]\n* [[TABLA:listasprecios]]\n* [[TABLA:logprecios]]\n* [[TABLA:monedas]]\n* [[TABLA:precios]]\n* [[TABLA:preciosqry]]\n* [[TABLA:productos]]\n* [[TABLA:reppresqry]]\n* [[TABLA:tdocumento]]\n* [[TABLA:telemecomp]]\n* [[TABLA:transacciones]]\n* [[TABLA:ttransac]]\n* [[TABLA:vidquoten1]]\n* [[TABLA:vidquoten2]]\n* [[TABLA:vidquoten3]]\n* [[TABLA:vidquoten3tmp]]\n* [[TABLA:vidquoten4]]\n===== Template Layout General =====\n* [[TEMP:LayoutGeneral]]\n\n==== Vistas ====\n[http://sqlformat.appspot.com/ SQLFormatBeautify]\n*[[VISTA:acomerciales]]\n*[[VISTA:clientes]]\n*[[VISTA:listavigente]]\n*[[VISTA:precioscmpl]]\n*[[VISTA:preciosvigact]]\n*[[VISTA:preciosvigentes]]\n*[[VISTA:proveedores]]\n*[[VISTA:viscabdetalla]]\n*[[VISTA:viscompcnt]]\n*[[VISTA:viscompodis]]\n*[[VISTA:viscomposimpl]]\n*[[VISTA:visdetaobs]]\n*[[VISTA:visdocpcob]]\n*[[VISTA:vistranscrm]]\n*[[VISTA:visintdetpre]]\n*[[VISTA:vislineabs]]\n*[[VISTA:visprdparam]]\n*[[VISTA:visprestot]]\n*[[VISTA:visprodadic]]\n*[[VISTA:visreppres]]\n*[[VISTA:visrprescmp]]\n*[[VISTA:vissubxitem]]\n*[[VISTA:chqactivos]]\n*[[VISTA:vischtdisp]]\n*[[VISTA:vistotprod]]\n\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Objetos ===\n==== Formularios ====\n*[[FORM:Presupuesto]]\n*[[FORM:CopiaComposicion]]\n*[[FORM:Pagos]]\n*[[FORM:Cobranzas]]\n\n==== Reportes ====\n*[[REPORTE:Presupuestos]]\n*[[REPORTE:PresupuestosDirecto]]\n\n=== Procedimientos ===\n* [[PROC:AltaItemPresupuesto]]\n* [[PROC:AltaItemPresupuestoTmp]]\n* [[PROC:CalculoPrecio]]\n* [[PROC:CalculoMedidaReal]]\n* [[PROC:DuplicaProductoCompo]]\n* [[PROC:AgregaProductoCompo]]\n\n=== Subrutinas ===\n*[[MACRO:PresupuestoExpirado]]\n===== BotonEnviarCorreoPresupuesto =====\n*FORM:Presupuesto#Cabecera\n*EVNT:MouseButtonPressed\n===== BotonImprimirPresupuesto =====\n*FORM:Presupuesto#Cabecera\n*EVNT:MouseButtonPressed\n===== CambioEstadoItem =====\n===== ConfirmeEliminarProducto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordAction\n*FORM:Presupuesto#DetalleProducto\n*EVNT:ConfirmDeletion\n===== DateStampPrecioUpdate =====\n===== DebugAcc =====\n*FORM:\n*EVNT: Test\n\n===== EventoAfterRecordAction =====\n*FORM:\n*EVNT: Test\n\n===== EventoBeforeRecordChange =====\n*FORM:\n*EVNT: Test\n\n===== EventoBeforeReloading =====\n*FORM:\n*EVNT: Test\n\n===== EventoBRADetallePresupuesto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordAction\n\n===== EventoBRCDetallePresupuesto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordChange\n===== EventoWhenLoadingFormCabecera =====\n===== EventoWhenLoading =====\n*FORM:Presupuesto#Cabecera\n*EVNT:WhenLoading\n===== EventoWhenReloading =====\n===== GeneraNuevoDefaultListaPrecio =====\n===== Hoy =====\n===== LookupData =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:AfterUpdating\n===== Main =====\n*FORM:Presupuesto#Forms\n*EVNT:MainForDebug \n===== MouseAdentro =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:Test \n===== NewProductoListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:MouseButtonPressed \n===== NewResetListBoxDetalleProducto =====\n*FORM:Presupuesto#DetallePresupuesto =====\n*EVNT:BeforeReloading\n*FORM:Presupuesto#DetalleProducto\n*EVNT:BeforeReloading\n*FORM:Presupuesto#DetallePresupuestoGrid\n*EVNT:AfterUpdating\n===== ProdDetaProdDSCListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A\n===== ProdDetaProdIDListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A \n===== ResetListBoxDetalleProducto =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A','utf-8'),(604,'=== Estructuras de Datos ===\n==== Estructuras Tipo ====\n[[Estructuras SQL]]\n\n==== Tablas ====\n* [[TABLA:accreceiv]]\n* [[TABLA:accpayab]]\n* [[TABLA:catinsumos]]\n* [[TABLA:cmoneda]]\n* [[TABLA:composicion]]\n* [[TABLA:composicionqry]]\n* [[TABLA:contactos]]\n* [[TABLA:cpar]]\n* [[TABLA:debugstmt]]\n* [[TABLA:elementos]]\n* [[TABLA:insumos]]\n* [[TABLA:listasprecios]]\n* [[TABLA:logprecios]]\n* [[TABLA:monedas]]\n* [[TABLA:precios]]\n* [[TABLA:preciosqry]]\n* [[TABLA:productos]]\n* [[TABLA:reppresqry]]\n* [[TABLA:tdocumento]]\n* [[TABLA:telemecomp]]\n* [[TABLA:transacciones]]\n* [[TABLA:ttransac]]\n* [[TABLA:vidquoten1]]\n* [[TABLA:vidquoten2]]\n* [[TABLA:vidquoten3]]\n* [[TABLA:vidquoten3tmp]]\n* [[TABLA:vidquoten4]]\n===== Template Layout General =====\n* [[TEMP:LayoutGeneral]]\n\n==== Vistas ====\n[http://sqlformat.appspot.com/ SQLFormatBeautify]\n*[[VISTA:acomerciales]]\n*[[VISTA:clientes]]\n*[[VISTA:listavigente]]\n*[[VISTA:precioscmpl]]\n*[[VISTA:preciosvigact]]\n*[[VISTA:preciosvigentes]]\n*[[VISTA:proveedores]]\n*[[VISTA:viscabdetalla]]\n*[[VISTA:viscompcnt]]\n*[[VISTA:viscompodis]]\n*[[VISTA:viscomposimpl]]\n*[[VISTA:visdetaobs]]\n*[[VISTA:visdocpcob]]\n*[[VISTA:vistranscrm]]\n*[[VISTA:visintdetpre]]\n*[[VISTA:vislineabs]]\n*[[VISTA:visprdparam]]\n*[[VISTA:visprestot]]\n*[[VISTA:visprodadic]]\n*[[VISTA:visreppres]]\n*[[VISTA:visrprescmp]]\n*[[VISTA:vissubxitem]]\n*[[VISTA:chqactivos]]\n*[[VISTA:vischtdisp]]\n*[[VISTA:vistotprod]]\n\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Cross\'\'\'</center>\n\n|-\n| Viscabdetalla\n| FZG.Vista.viscabdetalla.sql\n| Vista utilizada para agregar la información de cual es la lista de precios a utilizar para el cliente del presupuesto en tiempo real.FORM: Presupuesto\n| Contactos, Vidquoten1\n\n|-\n| Proveedores\n| FZG.Vista.proveedores.sql\n| Visualización de Contactos “Proveedores”\n| Contactos\n\n|-\n| Clientes\n| FZG.Vista.clientes.sql\n| Visualización de Contactos “Clientes”\n| Contactos\n\n|-\n| Visreppres\n| FZG.Vista.visreppres.sql\n| Vista Reporte Presupuesto Individual. Para generar una línea completa con la información de detalle de los presupuestos con las combinaciones de información a incluir en el mismo. No contiene la información estática del cliente.\n| Vislineabs, Visdetaobs\n\n|-\n| Viscompodis\n| FZG.Vista.viscompodis.sql\n| Vista de productos (DISTINCT productos) dentro de la tabla de composición ordenada por alfabéticamente.\n| \n\n|-\n| Viscoposimpl\n| FZG.Vista.viscomposimpl.sql\n| Vista de los elementos de composicion con información para query\n| Productos, Composición\n\n|-\n| Visdetaobs\n| FZG.Vista.visdetaobs.sql\n| Une todas las Observaciones de cada item para los casos que se encuentren señaladas con la Descripción del Producto-Item\n| Productos, Vidquoten3\n\n|-\n| Visintdetpre\n| FZG.Vista.visintdetpre.sql\n| Reducción de vista Visprodadic aplicable al cálculo de presupuesto con los datos en tiempo real del presupuesto activo en formulario y calculando el precio correcto de acuerdo al cliente y el cálculo del valor del elemento de acuerdo al los valores de Alto y Ancho del Vano en tiempo real\n| Visprodadic, Vidquoten2\n\n|-\n| Vislineabs\n| [[FZG.Vista.vislineabs.sql]]\n| Define linea básica para reporte teniendo como base Vidquoten2, agregando la información de la cabecera + datos de descrpción de producto + el subtotal por Producto-Item\n| Vidquoten1, Vidquoten2, Productos, Vissubxitem\n\n|-\n| Visprodadic\n| FZG.Vista.visproadic.sql\n| Vista de tabla de componentes con la información de cada elemento como producto y de los precios vigentes.\n| Productos, Composicion, PreciosVigentes\n\n|-\n| Vissubxitem\n| FZG.Vista.vissubxitem.sql\n| Subtotal por Item de Presupuesto en tiempo real\n| Vidquoten3\n\n|-\n| Listavigente\n| \n| Selecciona solo el primer registro ordenado en forma descendente de la tabla de listasprecios\n| Listasprecios\n\n|-\n| Preciosvigentes\n| FZG.Vista.preciosvigentes.sql\n| Es la selección de la tabla de precios referenciando el mayor valor dentro de la tabla de listasprecios\n| Listasprecios, Precios\n\n|-\n| Preciosvigact\n| FZG.Vista.preciosvigact.sql\n| Vista de lista de precios vigentes con datos de productos para actualización columnar.FORM: Actualización por tipo de lista\n| Preciosvigentes, Productos\n\n|-\n| Precioscmpl\n| [[FZG.Vista.precioscmpl.sql]]\n| Vista de lista de precios completa con datos de productos. [[FORM: Precios Tabular x Proceso]]\n| Precios, Productos\n\n|-\n| Visprestot\n| FZG.Vista.visprestot.sql\n| Vista de Presupuestos Totalizados por Cliente\n| Visreppres\n\n|-\n| Viscompcnt\n| [[FZG.Vista.viscompcnt.sql]]\n| Vista resumen de Componentes completa con indicadores de estado de composición\n| composicion, producto\n|}</small>\n\n=== Objetos ===\n==== Formularios ====\n*[[FORM:Presupuesto]]\n*[[FORM:CopiaComposicion]]\n*[[FORM:Pagos]]\n*[[FORM:Cobranzas]]\n\n==== Reportes ====\n*[[REPORTE:Presupuestos]]\n*[[REPORTE:PresupuestosDirecto]]\n\n=== Procedimientos ===\n* [[PROC:AltaItemPresupuesto]]\n* [[PROC:AltaItemPresupuestoTmp]]\n* [[PROC:CalculoPrecio]]\n* [[PROC:CalculoMedidaReal]]\n* [[PROC:DuplicaProductoCompo]]\n* [[PROC:AgregaProductoCompo]]\n\n=== Subrutinas ===\n*[[MACRO:PresupuestoExpirado]]\n===== BotonEnviarCorreoPresupuesto =====\n*FORM:Presupuesto#Cabecera\n*EVNT:MouseButtonPressed\n===== BotonImprimirPresupuesto =====\n*FORM:Presupuesto#Cabecera\n*EVNT:MouseButtonPressed\n===== CambioEstadoItem =====\n===== ConfirmeEliminarProducto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordAction\n*FORM:Presupuesto#DetalleProducto\n*EVNT:ConfirmDeletion\n===== DateStampPrecioUpdate =====\n===== DebugAcc =====\n*FORM:\n*EVNT: Test\n\n===== EventoAfterRecordAction =====\n*FORM:\n*EVNT: Test\n\n===== EventoBeforeRecordChange =====\n*FORM:\n*EVNT: Test\n\n===== EventoBeforeReloading =====\n*FORM:\n*EVNT: Test\n\n===== EventoBRADetallePresupuesto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordAction\n\n===== EventoBRCDetallePresupuesto =====\n*FORM:Presupuesto#DetallePresupuesto\n*EVNT:BeforeRecordChange\n===== EventoWhenLoadingFormCabecera =====\n===== EventoWhenLoading =====\n*FORM:Presupuesto#Cabecera\n*EVNT:WhenLoading\n===== EventoWhenReloading =====\n===== GeneraNuevoDefaultListaPrecio =====\n===== Hoy =====\n===== LookupData =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:AfterUpdating\n===== Main =====\n*FORM:Presupuesto#Forms\n*EVNT:MainForDebug \n===== MouseAdentro =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:Test \n===== NewProductoListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:MouseButtonPressed \n===== NewResetListBoxDetalleProducto =====\n*FORM:Presupuesto#DetallePresupuesto =====\n*EVNT:BeforeReloading\n*FORM:Presupuesto#DetalleProducto\n*EVNT:BeforeReloading\n*FORM:Presupuesto#DetallePresupuestoGrid\n*EVNT:AfterUpdating\n===== ProdDetaProdDSCListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A\n===== ProdDetaProdIDListbox =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A \n===== ResetListBoxDetalleProducto =====\n*FORM:Presupuesto#DetalleProductoGrid\n*EVNT:N/A','utf-8'),(605,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio\n*[[SQLCODE0001]]','utf-8'),(606,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio\n#*[[SQLCODE0001]]','utf-8'),(607,'<pre>\nSELECT \n    T1.VidQuoteID,\n    T1.VidQuoteItem,\n    T1.VidQuoteProdID,\n    T1.VidQuoteElementoID,\n    T1.VidQuoteComposicID,\n    T1.VidQuotePrecio,\n    T1.VidQuotePrecioP,\n    T2.OffsetVanoAncho,\n    T2.OffsetVanoAlto,\n    T2.CoefVanoAncho,\n    T2.CoefVanoAlto,\n    T3.PrecioProd01,\n    T3.PrecioProd02,\n    T3.PrecioProd03,\n    T4.Magnitud\nFROM\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4\nWHERE\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T3.ProductoID = T2.ElementoID AND \n    T4.ProductoID = T3.ProductoID\nORDER BY \n    T1.VidQuoteID ASC , \n    T1.VidQuoteItem ASC\n</pre>','utf-8'),(608,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio sin la indicación del tipo de lista\n#*[[SQLCODE0001]]','utf-8'),(609,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio sin la indicación del tipo de lista\n#*[[SQLCODE0001]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] \n#*[[SQLCODE0002]]','utf-8'),(610,'<pre>\nSET @Lista = 2;\nSET @Ancho =1000;\nSET @Alto = 1000;\nSET @Cantidad = 1;\nSET @Coeficiente = 1;\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        @Ancho, \n                        @Alto,\n                        (CASE (@Lista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * @Coeficiente,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        @Ancho, \n                        @Alto,\n                        (CASE (@Lista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * @Coeficiente * @Cantidad \nWHERE\n    T1.VidQuoteProdID = T1.VidQuoteElementoID AND \n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T3.ProductoID = T2.ElementoID AND \n    T4.ProductoID = T3.ProductoID\n</pre>','utf-8'),(611,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio sin la indicación del tipo de lista\n#*[[SQLCODE0001]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado\n#*[[SQLCODE0002]]','utf-8'),(612,'<pre>\nSET @Presupuesto = 50;\nSET @PresupuestoItem = 3;\nSET @Lista = 2;\nSET @Ancho =1000;\nSET @Alto = 1000;\nSET @Cantidad = 2;\nSET @Coeficiente = 1;\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        @Ancho, \n                        @Alto,\n                        (CASE (@Lista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * @Coeficiente,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        @Ancho, \n                        @Alto,\n                        (CASE (@Lista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * @Coeficiente * @Cantidad \nWHERE\n    T1.VidQuoteID = @Presupuesto AND\n    T1.VidQuoteItem = @PresupuestoItem AND\n    T1.VidQuoteProdID = T1.VidQuoteElementoID AND \n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T3.ProductoID = T2.ElementoID AND \n    T4.ProductoID = T3.ProductoID\n</pre>','utf-8'),(613,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio sin la indicación del tipo de lista\n#*[[SQLCODE0001]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado para Producto=Elemento\n#*[[SQLCODE0002]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado para Producto<>Elemento\n#*[[SQLCODE0003]]\n\n\nSET @Presupuesto = 50;\nSET @PresupuestoItem = 3;\nSET @Lista = 1;\nSET @Ancho =1000;\nSET @Alto = 1000;\nSET @Cantidad = 1;\nSET @Coeficiente = 1;\nSELECT \n    V1.VidQuoteID,\n    V1.VidQuoteItem,\n    V1.VidQuoteProdID,\n    V1.VidQuoteElementoID,\n    V1.VidQuoteComposicID,\n    V3.ElementoID,\n    V3.ElementoPM,\n    SUM(CalculoPrecio(\n        @Ancho, \n        @Alto,\n        (CASE (@Lista)\n          WHEN 0 THEN V4.PrecioProd00\n          WHEN 1 THEN V4.PrecioProd01\n          WHEN 2 THEN V4.PrecioProd02\n          WHEN 3 THEN V4.PrecioProd03\n        END),\n        V5.Magnitud,\n        V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n        V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n        V2.CoefVanoAlto * V3.CoefVanoAlto,\n        V2.CoefVanoAncho * V3.CoefVanoAncho,\n        V2.ValorElemento * V3.ValorElemento)) * @Coeficiente AS VidQuotePrecio,\n    SUM(CalculoPrecio(\n        @Ancho, \n        @Alto,\n        (CASE (@Lista)\n          WHEN 0 THEN V4.PrecioProd00\n          WHEN 1 THEN V4.PrecioProd01\n          WHEN 2 THEN V4.PrecioProd02\n          WHEN 3 THEN V4.PrecioProd03\n        END),\n        V5.Magnitud,\n        V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n        V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n        V2.CoefVanoAlto * V3.CoefVanoAlto,\n        V2.CoefVanoAncho * V3.CoefVanoAncho,\n        V2.ValorElemento * V3.ValorElemento)) * @Coeficiente * @Cantidad AS VidQuotePrecioP, \n    V5.Magnitud\nFROM\n    fzggestion.composicion AS V3,\n    fzggestion.composicion AS V2,\n    fzggestion.vidquoten3 AS V1,\n    fzggestion.precios AS V4,\n    fzggestion.productos AS V5\nWHERE\n    V3.ProductoID = V2.ElementoID AND \n    V2.ProductoID = V1.VidQuoteProdID AND \n    V2.ElementoID = V1.VidQuoteElementoID AND \n    V2.ComposicID = V1.VidQuoteComposicID AND \n    V4.ProductoID = V3.ElementoID AND \n    V5.ProductoID = V4.ProductoID AND \n    V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n    V3.ElementoPM = 0\nGROUP BY V1.VidQuoteElementoID , V1.VidQuoteComposicID','utf-8'),(614,'<pre>\nSET @Presupuesto = 50;\nSET @PresupuestoItem = 3;\nSET @Lista = 1;\nSET @Ancho =1000;\nSET @Alto = 1000;\nSET @Cantidad = 1;\nSET @Coeficiente = 1;\nSELECT \n    V1.VidQuoteID,\n    V1.VidQuoteItem,\n    V1.VidQuoteProdID,\n    V1.VidQuoteElementoID,\n    V1.VidQuoteComposicID,\n    V3.ElementoID,\n    V3.ElementoPM,\n    SUM(CalculoPrecio(\n        @Ancho, \n        @Alto,\n        (CASE (@Lista)\n          WHEN 0 THEN V4.PrecioProd00\n          WHEN 1 THEN V4.PrecioProd01\n          WHEN 2 THEN V4.PrecioProd02\n          WHEN 3 THEN V4.PrecioProd03\n        END),\n        V5.Magnitud,\n        V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n        V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n        V2.CoefVanoAlto * V3.CoefVanoAlto,\n        V2.CoefVanoAncho * V3.CoefVanoAncho,\n        V2.ValorElemento * V3.ValorElemento)) * @Coeficiente AS VidQuotePrecio,\n    SUM(CalculoPrecio(\n        @Ancho, \n        @Alto,\n        (CASE (@Lista)\n          WHEN 0 THEN V4.PrecioProd00\n          WHEN 1 THEN V4.PrecioProd01\n          WHEN 2 THEN V4.PrecioProd02\n          WHEN 3 THEN V4.PrecioProd03\n        END),\n        V5.Magnitud,\n        V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n        V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n        V2.CoefVanoAlto * V3.CoefVanoAlto,\n        V2.CoefVanoAncho * V3.CoefVanoAncho,\n        V2.ValorElemento * V3.ValorElemento)) * @Coeficiente * @Cantidad AS VidQuotePrecioP, \n    V5.Magnitud\nFROM\n    fzggestion.composicion AS V3,\n    fzggestion.composicion AS V2,\n    fzggestion.vidquoten3 AS V1,\n    fzggestion.precios AS V4,\n    fzggestion.productos AS V5\nWHERE\n    V3.ProductoID = V2.ElementoID AND \n    V2.ProductoID = V1.VidQuoteProdID AND \n    V2.ElementoID = V1.VidQuoteElementoID AND \n    V2.ComposicID = V1.VidQuoteComposicID AND \n    V4.ProductoID = V3.ElementoID AND \n    V5.ProductoID = V4.ProductoID AND \n    V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n    V3.ElementoPM = 0\nGROUP BY V1.VidQuoteElementoID , V1.VidQuoteComposicID\n</pre>','utf-8'),(615,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio sin la indicación del tipo de lista\n#*[[SQLCODE0001]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado para Producto=Elemento\n#*[[SQLCODE0002]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado para Producto<>Elemento\n#*[[SQLCODE0003]]','utf-8'),(616,'#Lista [[TABLA:vidquoten3]] con todos los elementos para poder calcular el precio sin la indicación del tipo de lista\n#*[[SQLCODE0001]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado para Producto=Elemento\n#*[[SQLCODE0002]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado para Producto<>Elemento\n#*[[SQLCODE0003]]\n#Actualiza los precios de elementos en [[TABLA:vidquoten3]] para un Presupuesto e Item determinado.\n#*[[SQLCODE0004]]','utf-8'),(617,'==Tablas, Vistas==\n<pre>\n== Descripción ==\n== Composición ==\n== Estructura ==\n< pre>\n< /pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n== Uso ==\n== URL ==\n</pre>\n==Formularios==\n<pre>\n== Descripción ==\n== Composición ==\n== Estructura ==\n== Código Relacionado ==\n== Bitácora ==\n== Uso ==\n</pre>\n==Macros==\n<pre>\n== Descripción ==\n== Biblioteca ==\n== Composición ==\n== Código ==\n< small>< pre>\n< /pre>< /small>\n== Bitácora ==\n== Uso ==\n</pre>\n==SqlCode==\n<pre>\n< small>< pre>\n< /pre>< /small>\n</pre>','utf-8'),(618,'<small><pre>\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        @Ancho, \n                        @Alto,\n                        (CASE (@Lista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * @Coeficiente,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        @Ancho, \n                        @Alto,\n                        (CASE (@Lista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * @Coeficiente * @Cantidad \nWHERE\n    T1.VidQuoteID = @Presupuesto AND\n    T1.VidQuoteItem = @PresupuestoItem AND\n    T1.VidQuoteProdID = T1.VidQuoteElementoID AND \n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T3.ProductoID = T2.ElementoID AND \n    T4.ProductoID = T3.ProductoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            @Ancho, \n            @Alto,\n            (CASE (@Lista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * @Coeficiente AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            @Ancho, \n            @Alto,\n            (CASE (@Lista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * @Coeficiente * @Cantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5\n    WHERE\n        V1.VidQuoteID = @Presupuesto AND\n        V1.VidQuoteItem = @PresupuestoItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY V1.VidQuoteElementoID , V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND \n    W1.VidQuoteID = @Presupuesto AND\n    W1.VidQuoteItem = @PresupuestoItem AND\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\nEND\n</pre></small>','utf-8'),(619,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n****[[MACRO:BotonActualizarPresupuesto]]\n*****Adaptación al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(620,'== Descripción ==\n== Biblioteca ==\n== Composición ==\n== Código ==\n< small>< pre>\n< /pre>< /small>\n== Bitácora ==\n*20120920\n**Cambio debido al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n<small><pre>\nSub BotonActualizarPresupuesto (oEvent as Object)\n\nDim oMensaje 		as String\nDim oForm 		as Object\nDim oSubForm 		as Object\nDim strSQLSearch	as String\nDim SQLStatement	as Object\nDim oVidQuoteID		as String\n\n   	oForm	= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n   	oSubForm= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n   	if oForm.IsNew Then\n		MsgBox(\"No es posible ejecutar esta operacion\",1,\"¡Atencion!\")\n	else\n		select case msgBox( \"¿Está seguro de Actualizar este Presupuesto con los precios actuales?\", 1, \"!Atención!\" )\n	        case 1 : \n        		oVidQuoteID		= oForm.getByName(\"fmtVidQuoteID\").CurrentValue\n				\'\'strSQLSearch = \"\"\n				\'\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre),\"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre) * VidQuoteProdCantidad\"\n				\'\'strSQLSearch = strSQLSearch & \" WHERE \"\n				\'\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(Int(oVidQuoteID))\n				\'\'oConnection = oEvent.Source.Model.Parent.ActiveConnection		\'Event from Button\n				\'\'SQLStatement = oConnection.createStatement()\n				\'\'SQLStatement.executeUpdate(strSQLSearch)\n				\'\'SQLStatement.close()\n				oConnection = oForm.ActiveConnection\n				SQLStatement = oConnection.createStatement()\n				SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosPresupuesto (?)\")\n				SQLStatement.setint(1,oVidQuoteID)\n				SQLStatement.execute()\n				oSubForm.reload()\n        	case 2 : False\n	    end select        	\n   	endif\nEnd Sub\n</pre></small>\n== Uso ==','utf-8'),(621,'== Descripción ==\nEjecuta la llamada al [[PROC:ActualizaPreciosPresupuesto]] con los parámetros del Presupuesto indicado.\n\n== Biblioteca ==\n== Composición ==\n== Código ==\n< small>< pre>\n< /pre>< /small>\n== Bitácora ==\n*20120920\n**Cambio debido al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n<small><pre>\nSub BotonActualizarPresupuesto (oEvent as Object)\n\nDim oMensaje 		as String\nDim oForm 		as Object\nDim oSubForm 		as Object\nDim strSQLSearch	as String\nDim SQLStatement	as Object\nDim oVidQuoteID		as String\n\n   	oForm	= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n   	oSubForm= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n   	if oForm.IsNew Then\n		MsgBox(\"No es posible ejecutar esta operacion\",1,\"¡Atencion!\")\n	else\n		select case msgBox( \"¿Está seguro de Actualizar este Presupuesto con los precios actuales?\", 1, \"!Atención!\" )\n	        case 1 : \n        		oVidQuoteID		= oForm.getByName(\"fmtVidQuoteID\").CurrentValue\n				\'\'strSQLSearch = \"\"\n				\'\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre),\"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre) * VidQuoteProdCantidad\"\n				\'\'strSQLSearch = strSQLSearch & \" WHERE \"\n				\'\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(Int(oVidQuoteID))\n				\'\'oConnection = oEvent.Source.Model.Parent.ActiveConnection		\'Event from Button\n				\'\'SQLStatement = oConnection.createStatement()\n				\'\'SQLStatement.executeUpdate(strSQLSearch)\n				\'\'SQLStatement.close()\n				oConnection = oForm.ActiveConnection\n				SQLStatement = oConnection.createStatement()\n				SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosPresupuesto (?)\")\n				SQLStatement.setint(1,oVidQuoteID)\n				SQLStatement.execute()\n				oSubForm.reload()\n        	case 2 : False\n	    end select        	\n   	endif\nEnd Sub\n</pre></small>\n== Uso ==','utf-8'),(622,'== Descripción ==\nEjecuta la llamada al [[PROC:ActualizaPreciosPresupuesto]] con los parámetros del Presupuesto indicado.\n\n== Biblioteca ==\n== Composición ==\n*[[PROC:ActualizaPreciosPresupuesto]]\n*[[FORM:Presupuesto]]\n\n== Código ==\n< small>< pre>\n< /pre>< /small>\n== Bitácora ==\n*20120920\n**Cambio debido al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n<small><pre>\nSub BotonActualizarPresupuesto (oEvent as Object)\n\nDim oMensaje 		as String\nDim oForm 		as Object\nDim oSubForm 		as Object\nDim strSQLSearch	as String\nDim SQLStatement	as Object\nDim oVidQuoteID		as String\n\n   	oForm	= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n   	oSubForm= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n   	if oForm.IsNew Then\n		MsgBox(\"No es posible ejecutar esta operacion\",1,\"¡Atencion!\")\n	else\n		select case msgBox( \"¿Está seguro de Actualizar este Presupuesto con los precios actuales?\", 1, \"!Atención!\" )\n	        case 1 : \n        		oVidQuoteID		= oForm.getByName(\"fmtVidQuoteID\").CurrentValue\n				\'\'strSQLSearch = \"\"\n				\'\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre),\"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre) * VidQuoteProdCantidad\"\n				\'\'strSQLSearch = strSQLSearch & \" WHERE \"\n				\'\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(Int(oVidQuoteID))\n				\'\'oConnection = oEvent.Source.Model.Parent.ActiveConnection		\'Event from Button\n				\'\'SQLStatement = oConnection.createStatement()\n				\'\'SQLStatement.executeUpdate(strSQLSearch)\n				\'\'SQLStatement.close()\n				oConnection = oForm.ActiveConnection\n				SQLStatement = oConnection.createStatement()\n				SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosPresupuesto (?)\")\n				SQLStatement.setint(1,oVidQuoteID)\n				SQLStatement.execute()\n				oSubForm.reload()\n        	case 2 : False\n	    end select        	\n   	endif\nEnd Sub\n</pre></small>\n== Uso ==','utf-8'),(623,'== Descripción ==\nActualizador de precios de un presupuesto indicado. Toma toda la información existente y la actualiza de acuerdo a la lista de precios vigente\n== Composición ==\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten2]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n*[[TABLA:composicion]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto`(IN pVidQuoteID INT(5), IN pVidQuoteLista INT(1), IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4,\n    vidquoten2 AS T5\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * T5.VidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T5.VidQuoteID = T1.VidQuoteID AND \n    T5.VidQuoteItem = T1.VidQuoteItem AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * V6.VidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5,\n        fzggestion.vidquoten2 AS V6\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n        V6.VidQuoteID = V1.VidQuoteID AND \n        V6.VidQuoteItem = V1.VidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\n-- ----------------------------------------------------------\n-- Update Precios Resume on vidquoten2\n-- ----------------------------------------------------------\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n== Bitácora ==\n*2012\n*20120921\n**Actualización de acuerdo al cambio de diseño de [[FORM:Presupuesto]]\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto_OLD`(IN pVidQuoteID INT(5))\nBEGIN\n	UPDATE vidquoten3 AS T5,\n    (\n    SELECT\n		T4.VidQuoteProdID,\n      T4.VidQuoteElementoID,\n		T4.VidQuoteProdCantidad,\n		T4.VidQuoteAncho,\n		T4.VidQuoteAlto,\n      T4.PrecioProd,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento)) AS VidQuotePrecio,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento) * T4.VidQuoteProdCantidad) AS VidQuotePrecioP\n	FROM\n	((SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T2.ValorElemento AS ValorElemento,\n		 T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T2.CoefVanoAncho AS CoefVanoAncho,\n		 T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteProdID AND T2.ElementoID = T1.VidQuoteElementoID }\n	WHERE\n		 T1.VidQuoteProdID=VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	UNION\n	(SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T3.ValorElemento * T2.ValorElemento AS ValorElemento,\n		 T3.OffsetVanoAncho + T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T3.OffsetVanoAlto + T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T3.CoefVanoAncho * T2.CoefVanoAncho AS CoefVanoAncho,\n		 T3.CoefVanoAlto * T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteElementoID },\n		 fzggestion.visprodadic AS T3\n	WHERE\n		 T3.ProductoID = T1.VidQuoteProdID AND \n		 T3.ElementoID = T1.VidQuoteElementoID AND \n		 T1.VidQuoteProdID <> T1.VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	ORDER BY VidQuoteProdID,VidQuoteElementoID,ElementoID) AS T4\n	GROUP BY VidQuoteProdID,VidQuoteElementoID) AS T6\n	SET T5.VidQuotePrecio = T6.VidQuotePrecio, T5.VidQuotePrecioP = T6.VidQuotePrecioP\n	WHERE\n		 T5.VidQuoteID = pVidQuoteID AND \n		 T5.VidQuoteProdID = T6.VidQuoteProdID AND \n		 T5.VidQuoteElementoID = T6.VidQuoteElementoID;\nEND\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]','utf-8'),(624,'== Descripción ==\nEjecuta la llamada al [[PROC:ActualizaPreciosPresupuesto]] con los parámetros del Presupuesto indicado.\n\n== Biblioteca ==\n== Composición ==\n*[[PROC:ActualizaPreciosPresupuesto]]\n*[[FORM:Presupuesto]]\n\n== Código ==\n<small><pre>\nSub BotonActualizarPresupuesto (oEvent as Object)\n\nDim oMensaje 		as String\nDim oForm 			as Object\nDim strSQLSearch	as String\nDim SQLStatement	as Object\nDim oEstado			as Boolean\nDim oVidQuoteID		as Integer\nDim oVidQuoteLPre	as Integer\nDim oVidQuoteCoefCL	as Double\nDim oVidQuoteCoefAC	as Double\n\n   	oForm		= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n   	if oForm.IsNew Then\n		MsgBox(\"No es posible ejecutar esta operacion\",MB_OK+MB_ICONEXCLAMATION,\"¡Atencion!\")\n	else\n		if oForm.getByName(\"txtVidQuoteEstado\").CurrentValue = 0 Then\n			oMensaje	= \"¿Está seguro de Actualizar este Presupuesto con los precios vigentes?\"\n			if MsgBox(SplitMsg(oMensaje,40),MB_YESNO+MB_ICONEXCLAMATION, \"!Atención!\" ) = IDYES Then\n			\n        		oVidQuoteID		= oForm.getByName(\"fmtVidQuoteID\").CurrentValue\n				oVidQuoteLPre	= oForm.getByName(\"DataCliente\").getByName(\"fmtListaPrecio\").CurrentValue\n				oVidQuoteCoefCL	= oForm.getByName(\"DataCliente\").getByName(\"fmtCoeficienteAC\").CurrentValue\n				oVidQuoteCoefAC	= oForm.getByName(\"DataAgente\").getByName(\"fmtCoeficienteAC\").CurrentValue\n					\n				oConnection = oForm.ActiveConnection\n				SQLStatement = oConnection.createStatement()\n				SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosPresupuesto (?,?,?)\")\n				SQLStatement.setInt(1,oVidQuoteID)\n				SQLStatement.setInt(2,oVidQuoteLPre)\n				SQLStatement.setDouble(3,oVidQuoteCoefCL * oVidQuoteCoefAC)\n				\'SQLStatement.execute()\n				oForm.getByName(\"Productos\").reload()\n				oForm.getByName(\"Productos\").getByName(\"ComponentesDisplay\").reload()\n			end if\n		else\n			oMensaje	= \"Este Presupuesto se encuentra en estado Aprobado\"\n			MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION, \"!Atención!\" )\n	    end if       	\n   	endif\nEnd Sub\n</pre></small>\n\n== Bitácora ==\n*20120920\n**Cambio debido al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n<small><pre>\nSub BotonActualizarPresupuesto (oEvent as Object)\n\nDim oMensaje 		as String\nDim oForm 		as Object\nDim oSubForm 		as Object\nDim strSQLSearch	as String\nDim SQLStatement	as Object\nDim oVidQuoteID		as String\n\n   	oForm	= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")\n   	oSubForm= oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n   	if oForm.IsNew Then\n		MsgBox(\"No es posible ejecutar esta operacion\",1,\"¡Atencion!\")\n	else\n		select case msgBox( \"¿Está seguro de Actualizar este Presupuesto con los precios actuales?\", 1, \"!Atención!\" )\n	        case 1 : \n        		oVidQuoteID		= oForm.getByName(\"fmtVidQuoteID\").CurrentValue\n				\'\'strSQLSearch = \"\"\n				\'\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre),\"\n				\'\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,T3.VidQuoteAncho,T3.VidQuoteAlto,T3.VidQuoteLPre) * VidQuoteProdCantidad\"\n				\'\'strSQLSearch = strSQLSearch & \" WHERE \"\n				\'\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(Int(oVidQuoteID))\n				\'\'oConnection = oEvent.Source.Model.Parent.ActiveConnection		\'Event from Button\n				\'\'SQLStatement = oConnection.createStatement()\n				\'\'SQLStatement.executeUpdate(strSQLSearch)\n				\'\'SQLStatement.close()\n				oConnection = oForm.ActiveConnection\n				SQLStatement = oConnection.createStatement()\n				SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosPresupuesto (?)\")\n				SQLStatement.setint(1,oVidQuoteID)\n				SQLStatement.execute()\n				oSubForm.reload()\n        	case 2 : False\n	    end select        	\n   	endif\nEnd Sub\n</pre></small>\n== Uso ==','utf-8'),(625,'===20120702===\n====Agregado de atributo de Medicion en Obra====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \n	ADD COLUMN `VidQuoteMedCheck` CHAR(1) NULL DEFAULT 0 AFTER `VidQuoteACom`;\n</pre>\n\n====Actualización de dato de Vigencia de Documentos====\n<pre>\nALTER TABLE `fzggestion`.`contactos`\n	CHANGE COLUMN `CoeficienteAC` `CoeficienteAC` DECIMAL(5,2) NULL DEFAULT 1,\n	CHANGE COLUMN `VigenciaDocs` `VigenciaDocs` INT(2) NULL DEFAULT 15;\nUPDATE `fzggestion`.`contactos`\n	SET `VigenciaDocs` = 15\n	WHERE `VigenciaDocs`= 0 OR ISNULL(`VigenciaDocs`);\n</pre>\n====Actualización de datos para el control de Cobranzas====\nALTER TABLE `fzggestion`.`accreceiv` \n	ADD COLUMN `ClienteAR` CHAR(8) NULL DEFAULT NULL  AFTER `ImporteAR`,\n	DROP PRIMARY KEY,\n	ADD PRIMARY KEY (`TTransaccion`, `NTransaccion`);\n====Crear [[VISTA:vistranscrm]]====\n====Crear [[TABLA:clientescrmqry]]====\n====Crear [[VISTA:chqactivos]]====\n====Crear [[TABLA:accpayab]]====\n<pre>\ndelimiter $$\nCREATE TABLE `accpayab` (\n  `TTransaccion` char(2) NOT NULL DEFAULT \'AP\',\n  `NTransaccion` int(11) NOT NULL AUTO_INCREMENT,\n  `FechaAutAP` date DEFAULT NULL,\n  `FechaAP` date DEFAULT NULL,\n  `FormaAP` char(3) DEFAULT NULL,\n  `ImporteAP` decimal(10,2) DEFAULT NULL,\n  `ProveedAP` char(8) DEFAULT NULL,\n  `TDocumentoOrg` char(2) DEFAULT NULL,\n  `NDocumentoOrg` int(11) DEFAULT NULL,\n  `DDocumentoOrg` varchar(100) DEFAULT NULL,\n  PRIMARY KEY (`TTransaccion`,`NTransaccion`)\n) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1$$\n\nCREATE TRIGGER `fzggestion`.`Alta_Pago`\nBEFORE INSERT ON `fzggestion`.`accpayab`\nFOR EACH ROW\nBEGIN\n	SET NEW.FechaAutAP = CURDATE();\nEND\n$$\n</pre>\n====Modifica [[TABLA:fPago]]====\n<pre>\nALTER TABLE `fzggestion`.`fpago`\n	ADD COLUMN `FPagoAR` CHAR(1) NULL AFTER `FPagoDSC`,\n	ADD COLUMN `FPagoAP` CHAR(1) NULL AFTER `FPagoAR`;\n</pre>\n====Rediseña [[TABLA:tdocumento]]====\n\n====Crea [[VISTA:vischtdisp]]====\n====Crea [[VISTA:vistotprod]]====\n====Crea [[TABLA:vidquoten3tmp]====\n====Reemplazar todos los ElementoPM en Componentes por los nuevos valores====\n<pre>\nUPDATE fzggestion.composicion SET ElementoPM=2 WHERE ElementoPM=0;\nUPDATE fzggestion.composicion SET ElementoPM=0 WHERE ElementoPM=1;\n</pre>\n\'\'\'20120831\'\'\'\n====Agregar Nombre de Usuario [[TABLA:precios]]====\n<pre>\nALTER TABLE `fzggestion`.`precios` \n	ADD COLUMN `UserModificacion` VARCHAR(20) NULL AFTER `HoraModificacion` ;\nALTER TABLE `fzggestion`.`precios` \n	CHANGE COLUMN `FechaModificacion` `FechaEvento` DATE NULL DEFAULT NULL,\n	CHANGE COLUMN `HoraModificacion` `HoraEvento` TIME NULL DEFAULT NULL,\n	CHANGE COLUMN `UserModificacion` `UserEvento` VARCHAR(20) NULL DEFAULT NULL;\n</pre>\n\n====Modificación de Triggers [[TABLA:precios]]====\n<pre>\nDELIMITER $$\n\nUSE `fzggestion`$$\n\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Alta_Precio`\nBEFORE INSERT ON `fzggestion`.`precios`\nFOR EACH ROW\nBEGIN\n	SET\n	NEW.FechaEvento = CURDATE(),\n	NEW.HoraEvento = CURTIME(),\n	NEW.UserEvento	= USER();\nEND$$\n\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Actualiza_Precio`\nBEFORE UPDATE ON `fzggestion`.`precios`\nFOR EACH ROW\nBEGIN\n	SET\n	NEW.FechaEvento = CURDATE(),\n	NEW.HoraEvento = CURTIME(),\n	NEW.UserEvento	= USER();\nEND$$\n</pre>\n====Modificacion de Estructura [[TABLA:contactos]]====\n<pre>\nUPDATE contactos SET ClienteTag=1 WHERE ClienteTag=\"x\";\nUPDATE contactos SET ProveedorTag=1 WHERE ProveedorTag=\"x\";\nUPDATE contactos SET AComercialTag=1 WHERE AComercialTag=\"x\";\nUPDATE contactos SET OtrosTag=1 WHERE OtrosTag=\"x\";\nALTER TABLE `fzggestion`.`contactos` \n	CHANGE COLUMN `ClienteTag` `ClienteTag` INT(1) NULL DEFAULT NULL,\n	CHANGE COLUMN `ProveedorTag` `ProveedorTag` INT(1) NULL DEFAULT NULL, \n	CHANGE COLUMN `AComercialTag` `AComercialTag` INT(1) NULL DEFAULT NULL,\n	CHANGE COLUMN `OtrosTag` `OtrosTag` INT(1) NULL DEFAULT NULL;\n</pre>\nVerificar los casos que no coincidan con los prefijos establecidos: 0->Cliente, 3->Proveedor, 5->Otros, 8->Agentes Comerciales\n\n====Cambio de Condición para [[VISTA:clientes]]====\n====Alta de Tabla [[TABLA:telemecomp]]====\n====Actualizar Routine [[PROC:DuplicaProductoCompo]] en DB====\n====Agregar atributo ComposicID a [[TABLA:vidquoten3]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` \nCHANGE COLUMN `VidQuoteElementoID` `VidQuoteElementoID` CHAR(8) NOT NULL AFTER `VidQuoteProdID`,\nCHANGE COLUMN `VidQuoteLPre` `VidQuoteLPre` INT(1) NULL DEFAULT NULL AFTER `VidQuoteElementoID;\n\nALTER TABLE `fzggestion`.`vidquoten3`\nADD COLUMN `VidQuoteComposicID` INT NOT NULL AFTER `VidQuoteElementoID` ,\nDROP PRIMARY KEY , ADD PRIMARY KEY (`VidQuoteID`,\n                                    `VidQuoteItem`,\n                                    `VidQuoteProdID`,\n                                    `VidQuoteElementoID`,\n                                    `VidQuoteComposicID`) ;\n</pre>\n====Agregar atributo ComposicID a [[TABLA:vidquoten3tmp]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` \nCHANGE COLUMN `VidQuoteElementoID` `VidQuoteElementoID` CHAR(8) NOT NULL AFTER `VidQuoteProdID`,\nCHANGE COLUMN `VidQuoteProdCantidad` `VidQuoteProdCantidad` INT(5) NULL DEFAULT NULL  AFTER `VidQuoteElementoID`;\n\nALTER TABLE `fzggestion`.`vidquoten3tmp`\nADD COLUMN `VidQuoteComposicID` INT NOT NULL AFTER `VidQuoteElementoID` ,\nDROP PRIMARY KEY , ADD PRIMARY KEY (`VidQuoteID`,\n                                    `VidQuoteItem`,\n                                    `VidQuoteProdID`,\n                                    `VidQuoteElementoID`,\n                                    `VidQuoteComposicID`) ;\n</pre>\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3tmp]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n====Reemplazar el código de [[PROC:GrabaItemPresupuestoTmp]] y [[PROC:AltaItemPresupuestoTmp]]====\nIncluye las modificaciones de inclusión de ElementoPM\n====Crea [[PROC:ResetEdicionItemTmp]]====\n====Cambiar [[VISTA:acomerciales]]====\nRefleja el cambio de la estructura de la [[TABLA:contactos]]\n====Agregar en [[TABLA:contactos]]====\nAgregar atributo que responde al imagen asociada al contacto.\n<pre>\nALTER TABLE `fzggestion`.`contactos` ADD COLUMN `ImgContacto` BLOB NULL  AFTER `VigenciaDocs` ;\n</pre>\n====Renovación del [[PROC:ActualizaPreciosPresupuesto]]====','utf-8'),(626,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n* [[PROC:AltaItemPresupuesto]]. Correcciones y Test.\n* [[PROC:ActualizarItemPresupuesto]]. Correcciones y Test\n* [[TRIG:Alta_Item_Presupuesto]]. Creación para reemplazar la actividad BEFORE UPDATE sobre la [[TABLA:vidquoten2]] en [[MACRO:EventoBRCDetallePresupuesto]]. Cuando activa el UPDATE, la [[MACRO:EventoBRCDetallePresupuesto]] solo refresca la [[TABLA:vidquoten3]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n****[[MACRO:BotonActualizarPresupuesto]]\n*****Adaptación al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(627,'== Descripción ==\nEjecuta las acciones adicionales a cada operación sobre los registros de [[TABLA:vidquoten2]] más allá de la acción en si sobre esos registros dentro del [[FORM:Presupuesto]]:\n*1:Insertar\n*2:Modificar\n*3:Eliminar\n\n== Biblioteca ==\n*[[LIBR:FazzGlassMcr]]\n\n== Composición ==\n== Código ==\n<small><pre>\nSub EventoBRCDetallePresupuesto (oEvent as Object)\n\nDim oDocument as Object\nDim oForm as Object\nDim oSubForm as Object\nDim oSubSubForm as Object\nDim oSubSubFormGrid as Object\nDim SQLStatement as Variant\nDim oNombreImpControlador as String\nDim oNombreImpFormularios as String\nDim oVidQuoteProdID as String\nDim aVidQuoteProdID as String\nDim oMensaje as String\nDim verifica\nDim strSQLSearch as String\nDim oContadorRegistros as Double\n\n	\'EventoBRCDetallePresupuesto: Inicio\n	\'MRI oEvent\n	oMensaje	= \"\"\n	oMensaje	= oMensaje & \"RowCount: \" & CStr(oEvent.Source.RowCount) + chr(13)\n	oMensaje	= oMensaje & \"Row: \" & CStr(oEvent.Source.Row) + chr(13)\n	oMensaje	= oMensaje & oEvent.Source.ImplementationName + chr(13)\n	\'MsgBox oMensaje\n	\'Situado en SubForm:Productos\n	\n	if oEstadoRegistroDetallePresupuesto <> 0 Then\n		oForm 					= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n		oSubFormAgente			= oForm.getByName(\"DataAgente\")	\n		oSubFormGrid 			= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\")  \n		oNombreImpControlador	=\"org.openoffice.comp.svx.FormController\"\n		oNombreImpFormularios	=\"com.sun.star.comp.forms.ODatabaseForm\"\n	\n		If (oEvent.Source.ImplementationName=oNombreImpFormularios) Then\n		    if oEvent.Source.RowCount = 0 Then\n			    oMensaje=\"First Time Call in Loading: \"\n			    oMensaje=oMensaje & oEvent.Source.ImplementationName\n			    \'MsgBox(oMensaje)\n		    else\n		    	\'oEvent.Source.RowCount != 0					Just plain cycle of RowSet View\n				if oEvent.Source.RowCount > 0 Then\n				   \n					\'Read of current RowSet from DetallePresupuesto\n					if oEvent.Source.Row <> 0 Then \'First Read of Data\n						\'MRI oForm.getByName(\"Productos\").getByName(\"ProductosGrid\")\n					\n						\'It suppose Form data was commited into record\n						oVidQuoteID				= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"fmtVidQuoteID\").CurrentValue\n						oVidQuoteLPre			= oForm.getByName(\"DataCliente\").getByName(\"fmtListaPrecio\").CurrentValue\n						oVidQuoteCoefCL			= oForm.getByName(\"DataCliente\").getByName(\"fmtCoeficienteAC\").CurrentValue\n						oVidQuoteCoefAC			= oForm.getByName(\"DataAgente\").getByName(\"fmtCoeficienteAC\").CurrentValue	\n						oVidQuoteItem			= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"fmtVidQuoteItem\").CurrentValue\n						oVidQuoteProdID			= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"txtVidQuoteProdID\").CurrentValue					\n						oVidQuoteProdCantidad	= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"fmtVidQuoteProdCantidad\").CurrentValue\n						oVidQuoteAncho			= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"fmtVidQuoteAncho\").CurrentValue					\n						oVidQuoteAlto			= oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"fmtVidQuoteAlto\").CurrentValue\n\n						oMensaje	= \"\"\n						oMensaje	= oMensaje & \"RowCount: \" & CStr(oEvent.Source.RowCount) + chr(13)\n						oMensaje	= oMensaje & \"Row: \" & CStr(oEvent.Source.Row) + chr(13)\n						oMensaje	= oMensaje & \"New: \" & CStr(oEvent.Source.IsNew) + chr(13)\n						oMensaje	= oMensaje & \"Upd: \" & CStr(oEvent.Source.IsModified) + chr(13)\n						oMensaje	= oMensaje & oEvent.Source.ImplementationName + chr(13)\n						\'MsgBox oMensaje\n						Select Case oEstadoRegistroDetallePresupuesto\n						    Case 1								\'It is an Elements massive insert\n								\'VidQuoteN3	massive insert\n								\'MsgBox(\"BP001\")\n								oConnection = oEvent.Source.ActiveConnection\n								SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?,?)\")\n								SQLStatement.setInt(1,oVidQuoteID)\n								SQLStatement.setInt(2,oVidQuoteLPre)\n								SQLStatement.setInt(3,oVidQuoteItem)\n								SQLStatement.setString(4,oVidQuoteProdID)\n								SQLStatement.setString(5,oVidQuoteProdCantidad)	    \n								SQLStatement.setInt(6,oVidQuoteAncho)\n								SQLStatement.setInt(7,oVidQuoteAlto)\n								SQLStatement.setDouble(8,oVidQuoteCoefCL*oVidQuoteCoefAC)						\n								SQLStatement.execute()\n								SQLStatement.close()\n								\n								oForm.getByName(\"Productos\").getByName(\"ComponentesDisplay\").reload()\n								oSubTotProducto	= oForm.getByName(\"Productos\").getByName(\"ComponentesDisplay\").getByName(\"SubTotalProducto\").getByName(\"fmtSubTotalProducto\").CurrentValue\n								oForm.getByName(\"Productos\").getByName(\"ProductosGrid\").getByName(\"fmtVidQuotePrecio\").BoundField.UpdateDouble(oSubTotProducto)\n								oForm.getByName(\"Productos\").UpdateRow()								\n							Case 2		\'It is an Product Quote Data update. Complete by Trigger\n								\'MsgBox(\"BP002\")\n								oForm.getByName(\"Productos\").getByName(\"ComponentesDisplay\").reload()\n						\'		\'MsgBox(\"Fin IF Nº4\")\n							Case 3\n								\'Complete by Trigger\n						end Select\n					end if\n					oEstadoRegistroDetallePresupuesto=0\n					\'MsgBox(\"Fin Case\")\n				end if\n				\'MsgBox(\"Fin IF Nº3\")\n			end if\n			\'MsgBox(\"Fin IF Nº2\")\n		end if\n		\'MsgBox(\"EventoBRCDetallePresupuesto: Fin\")\n	end if\nend Sub\n</pre></small>\n\n== Bitácora ==\n*20120914\n**Cambio por rediseño [[FORM:Presupuesto]]\n<small><pre>\nSub EventoBRCDetallePresupuesto (oEvent as Object)\n\nDim oDocument as Object\nDim oForm as Object\nDim oSubForm as Object\nDim oSubSubForm as Object\nDim oSubSubFormGrid as Object\nDim SQLStatement as Variant\nDim oNombreImpControlador as String\nDim oNombreImpFormularios as String\nDim oVidQuoteProdID as String\nDim aVidQuoteProdID as String\nDim oMensaje as String\nDim verifica\nDim strSQLSearch as String\nDim oContadorRegistros as Double\n\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Inicio\")\n	oDocument = ThisComponent\n	oForm = ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm = oForm.getByName(\"CabeceraAmpliada\").getByName(\"DetallePresupuesto\")\n	oSubSubForm = oSubForm.getByName(\"DetalleProducto\")\n	oSubSubFormGrid = oSubSubForm.getByName(\"DetalleProductoGrid\")  \n	oNombreImpControlador=\"org.openoffice.comp.svx.FormController\"\n	oNombreImpFormularios=\"com.sun.star.comp.forms.ODatabaseForm\"\n\n	If (oEvent.Source.ImplementationName=oNombreImpFormularios) Then\n	  	\'MsgBox(\"oEvent.Source.ImplementationName=oNombreImpFormularios\")\n		\'if oEvent.Source.Row = 0 Then\n	    if oEvent.Source.RowCount = 0 Then\n		    oMensaje=\"First Time Call in Loading: \"\n		    oMensaje=oMensaje & oEvent.Source.ImplementationName\n		    \'MsgBox(oMensaje)\n	    else\n	    	\'MsgBox(\"oEvent.Source.RowCount != 0\")\n			if oEvent.Source.RowCount > 0 Then\n			   \n				\'Read of current RowSet from DetallePresupuesto\n				if oEvent.Source.Row <> 0 Then \'First Read of Data\n					\'MRI oSubForm\n					oVidQuoteID=oSubForm.Columns.getByName(\"VidQuoteID\").getInt()\n					oVidQuoteLPre=oSubForm.Columns.getByName(\"VidQuoteLPre\").getInt()\n					oVidQuoteItem=oSubForm.Columns.getByName(\"VidQuoteItem\").getInt()\n					oVidQuoteProdID=oSubForm.Columns.getByName(\"VidQuoteProdID\").getString()\n					oVidQuoteProdCantidad=oSubForm.Columns.getByName(\"VidQuoteProdCantidad\").getInt()\n					oVidQuoteAncho=oSubForm.Columns.getByName(\"VidQuoteAncho\").getInt()\n					oVidQuoteAlto=oSubForm.Columns.getByName(\"VidQuoteAlto\").getInt()\n			\n					Select Case oEstadoRegistroDetallePresupuesto\n					    Case 1		\'It is an Elements massive insert\n							\'VidQuoteN3	massive insert\n							\'MsgBox(\"BP001\")\n							oConnection = oEvent.Source.ActiveConnection\n							SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteLPre)\n							SQLStatement.setint(3,oVidQuoteItem)\n							SQLStatement.setstring(4,oVidQuoteProdID)\n							SQLStatement.setstring(5,oVidQuoteProdCantidad)	    \n							SQLStatement.setint(6,oVidQuoteAncho)\n							SQLStatement.setint(7,oVidQuoteAlto)\n							SQLStatement.execute()\n							SQLStatement.close()\n							\n							\'VidQuoteN4 massive insert\n							oMensaje = \"\"\n							oMensaje = oMensaje & \"BP002\"\n							oMensaje = oMensaje & \"Presupuesto: \" & CStr(oVidQuoteID) & Chr(13)\n							oMensaje = oMensaje & \"Item       : \" & CStr(oVidQuoteItem) & Chr(13)\n							oMensaje = oMensaje & \"Producto   : \" & oVidQuoteProdID & Chr(13)\n							oMensaje = oMensaje & \"Elemento   : \" & \"12345678\" & Chr(13)\n							\'MsgBox(oMensaje)\n							\n							SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n							SQLStatement.setint(1,oVidQuoteID)\n							SQLStatement.setint(2,oVidQuoteItem)\n							SQLStatement.setstring(3,oVidQuoteProdID)\n							SQLStatement.setstring(4,\"12345678\")\n							\'Set pCondicion for Procedure Inheritance depending on previous REM	    \n							SQLStatement.setint(5,2)\n							\'\n							SQLStatement.execute()\n							\'MsgBox(\"BP003\")\n							SQLStatement.close()\n				\n						Case 2		\'It is an Product Quote Data update\n							strSQLSearch = \"SELECT Count(*) FROM vidquoten3 WHERE \"\n							strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n							strSQLSearch = strSQLSearch & \" AND \"\n							strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n							\n							oConnection = oEvent.Source.ActiveConnection       \n							SQLStatement = oConnection.createStatement()\n							verifica = SQLStatement.executeQuery(strSQLSearch)\n							verifica.Next()						\'Lee la primera línea del query\n							oContadorRegistros=verifica.GetDouble(1)			\'Valor Anterior\n							SQLStatement.close()\n				\n							if oContadorRegistros > 0 Then\n							\n								strSQLSearch = \"SELECT VidQuoteProdID FROM vidquoten3 WHERE \"\n								strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n								strSQLSearch = strSQLSearch & \" AND \"\n								strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n								strSQLSearch = strSQLSearch & \" GROUP BY VidQuoteID,VidQuoteItem\"\n							\n								oConnection = oEvent.Source.ActiveConnection        \n							    SQLStatement = oConnection.createStatement()\n							    verifica = SQLStatement.executeQuery(strSQLSearch)\n							    verifica.Next()						\'Lee la primera línea del query\n							    aVidQuoteProdID=verifica.GetString(1)			\'Valor Anterior\n							    SQLStatement.close()		 \n							 \n							    if aVidQuoteProdID <> oVidQuoteProdID Then 	\'Check if the same product code\n							    \n									\'Delete previous records due to change product code\n								  			\n									strSQLSearch = \"DELETE FROM vidquoten3 WHERE \"\n									strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									strSQLSearch = strSQLSearch & \" AND \"\n									strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n									\n									\'Insert New records -Elements- with new Quote Product Code\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.preparestatement(\"CALL AltaItemPresupuesto (?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setstring(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									SQLStatement.close()\n									\n									\'VidQuoteN4 massive insert with new Quote Product Code\n									\n									SQLStatement = oConnection.preparestatement(\"CALL AltaParamItemPresupuesto (?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteItem)\n									SQLStatement.setstring(3,oVidQuoteProdID)\n									SQLStatement.setstring(4,\"12345678\")	    \n									SQLStatement.setint(5,2)\n									SQLStatement.execute()\n									SQLStatement.close()\n							\n							    else\n							   		\'It is the same Product Code. Update VidQuoten3 Columns except Product Code\n							   		\n									\'strSQLSearch = \"\"\n									\'strSQLSearch = strSQLSearch & \"UPDATE vidquoten3 AS T3 SET \"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteProdCantidad = \" & CStr(oVidQuoteProdCantidad) & \",\"			\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAncho = \" & CStr(oVidQuoteAncho) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuoteAlto = \"  & CStr(oVidQuoteAlto) & \",\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecio = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre),\"\n									\'strSQLSearch = strSQLSearch & \"T3.VidQuotePrecioP = CalculaPrecioBase(T3.VidQuoteProdID,T3.VidQuoteElementoID,\"&CStr(oVidQuoteAncho)&\",\"&CStr(oVidQuoteAlto)&\",T3.VidQuoteLPre) * \"&CStr(oVidQuoteProdCantidad)\n									\'strSQLSearch = strSQLSearch & \" WHERE \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteID=\" & CStr(oVidQuoteID)\n									\'strSQLSearch = strSQLSearch & \" AND \"\n									\'strSQLSearch = strSQLSearch & \"VidQuoteItem=\" & CStr(oVidQuoteItem)\n									\n									oConnection = oEvent.Source.ActiveConnection\n									SQLStatement = oConnection.createStatement()\n									SQLStatement = oConnection.preparestatement(\"CALL ActualizaPreciosProductoProposal(?,?,?,?,?,?,?)\")\n									SQLStatement.setint(1,oVidQuoteID)\n									SQLStatement.setint(2,oVidQuoteLPre)\n									SQLStatement.setint(3,oVidQuoteItem)\n									SQLStatement.setstring(4,oVidQuoteProdID)\n									SQLStatement.setint(5,oVidQuoteProdCantidad)\n									SQLStatement.setint(6,oVidQuoteAncho)\n									SQLStatement.setint(7,oVidQuoteAlto)\n									SQLStatement.execute()\n									\'SQLStatement.executeUpdate(strSQLSearch)\n									SQLStatement.close()\n								end if\n								MsgBox(\"Recuerde revisar/actualizar valores adicionales\")\n							end if\n							\'MsgBox(\"Fin IF Nº4\")\n						Case 3\n							\'MsgBox(\"Elimina\"). Design and Complete MakingUp by TriggerTiger\n					end Select\n				end if\n				oEstadoRegistroDetallePresupuesto=0\n				\'MsgBox(\"Fin Case\")\n			end if\n			\'MsgBox(\"Fin IF Nº3\")\n		end if\n		\'MsgBox(\"Fin IF Nº2\")\n	end if\n	\'MsgBox(\"EventoBRCDetallePresupuesto: Fin\")\nend Sub\n</pre></small>\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(628,'== Descripción ==\nActualizador de precios de un presupuesto indicado. Toma toda la información existente y la actualiza de acuerdo a la lista de precios vigente\n== Composición ==\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten2]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n*[[TABLA:composicion]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto`(IN pVidQuoteID INT(5), IN pVidQuoteLista INT(1), IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4,\n    vidquoten2 AS T5\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * T5.VidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T5.VidQuoteID = T1.VidQuoteID AND \n    T5.VidQuoteItem = T1.VidQuoteItem AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * V6.VidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5,\n        fzggestion.vidquoten2 AS V6\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n        V6.VidQuoteID = V1.VidQuoteID AND \n        V6.VidQuoteItem = V1.VidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\n-- ----------------------------------------------------------\n-- Update Precios Resume on vidquoten2\n-- ----------------------------------------------------------\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n== Bitácora ==\n*2012\n*20120921\n**Actualización de acuerdo al cambio de diseño de [[FORM:Presupuesto]]\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto_OLD`(IN pVidQuoteID INT(5))\nBEGIN\n	UPDATE vidquoten3 AS T5,\n    (\n    SELECT\n		T4.VidQuoteProdID,\n      T4.VidQuoteElementoID,\n		T4.VidQuoteProdCantidad,\n		T4.VidQuoteAncho,\n		T4.VidQuoteAlto,\n      T4.PrecioProd,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento)) AS VidQuotePrecio,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento) * T4.VidQuoteProdCantidad) AS VidQuotePrecioP\n	FROM\n	((SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T2.ValorElemento AS ValorElemento,\n		 T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T2.CoefVanoAncho AS CoefVanoAncho,\n		 T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteProdID AND T2.ElementoID = T1.VidQuoteElementoID }\n	WHERE\n		 T1.VidQuoteProdID=VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	UNION\n	(SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T3.ValorElemento * T2.ValorElemento AS ValorElemento,\n		 T3.OffsetVanoAncho + T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T3.OffsetVanoAlto + T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T3.CoefVanoAncho * T2.CoefVanoAncho AS CoefVanoAncho,\n		 T3.CoefVanoAlto * T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteElementoID },\n		 fzggestion.visprodadic AS T3\n	WHERE\n		 T3.ProductoID = T1.VidQuoteProdID AND \n		 T3.ElementoID = T1.VidQuoteElementoID AND \n		 T1.VidQuoteProdID <> T1.VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	ORDER BY VidQuoteProdID,VidQuoteElementoID,ElementoID) AS T4\n	GROUP BY VidQuoteProdID,VidQuoteElementoID) AS T6\n	SET T5.VidQuotePrecio = T6.VidQuotePrecio, T5.VidQuotePrecioP = T6.VidQuotePrecioP\n	WHERE\n		 T5.VidQuoteID = pVidQuoteID AND \n		 T5.VidQuoteProdID = T6.VidQuoteProdID AND \n		 T5.VidQuoteElementoID = T6.VidQuoteElementoID;\nEND\n</pre></small>\n*20120925\n**Reestructura actualización del atributo de precio debido a que se incorpora el [[TRIG:Actualiza_Item_Presupuesto]] y produce un dead-lock al gestionar las mismas tablas. Se modifica el [[TRIG:Actualiza_Item_Presupuesto]] y se hace un UPDATE falso para forzar el Trigger de actualización a hacer el recálculo.\n<small><pre>\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]','utf-8'),(629,'== Descripción ==\nActualizador de precios de un presupuesto indicado. Toma toda la información existente y la actualiza de acuerdo a la lista de precios vigente\n== Composición ==\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten2]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n*[[TABLA:composicion]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto`(IN pVidQuoteID INT(5), IN pVidQuoteLista INT(1), IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4,\n    vidquoten2 AS T5\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * T5.VidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T5.VidQuoteID = T1.VidQuoteID AND \n    T5.VidQuoteItem = T1.VidQuoteItem AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * V6.VidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5,\n        fzggestion.vidquoten2 AS V6\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n        V6.VidQuoteID = V1.VidQuoteID AND \n        V6.VidQuoteItem = V1.VidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\n-- ----------------------------------------------------------\n-- Update Precios Resume on vidquoten2\n-- ----------------------------------------------------------\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n== Bitácora ==\n*20120921\n**Actualización de acuerdo al cambio de diseño de [[FORM:Presupuesto]]\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto_OLD`(IN pVidQuoteID INT(5))\nBEGIN\n	UPDATE vidquoten3 AS T5,\n    (\n    SELECT\n		T4.VidQuoteProdID,\n      T4.VidQuoteElementoID,\n		T4.VidQuoteProdCantidad,\n		T4.VidQuoteAncho,\n		T4.VidQuoteAlto,\n      T4.PrecioProd,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento)) AS VidQuotePrecio,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento) * T4.VidQuoteProdCantidad) AS VidQuotePrecioP\n	FROM\n	((SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T2.ValorElemento AS ValorElemento,\n		 T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T2.CoefVanoAncho AS CoefVanoAncho,\n		 T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteProdID AND T2.ElementoID = T1.VidQuoteElementoID }\n	WHERE\n		 T1.VidQuoteProdID=VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	UNION\n	(SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T3.ValorElemento * T2.ValorElemento AS ValorElemento,\n		 T3.OffsetVanoAncho + T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T3.OffsetVanoAlto + T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T3.CoefVanoAncho * T2.CoefVanoAncho AS CoefVanoAncho,\n		 T3.CoefVanoAlto * T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteElementoID },\n		 fzggestion.visprodadic AS T3\n	WHERE\n		 T3.ProductoID = T1.VidQuoteProdID AND \n		 T3.ElementoID = T1.VidQuoteElementoID AND \n		 T1.VidQuoteProdID <> T1.VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	ORDER BY VidQuoteProdID,VidQuoteElementoID,ElementoID) AS T4\n	GROUP BY VidQuoteProdID,VidQuoteElementoID) AS T6\n	SET T5.VidQuotePrecio = T6.VidQuotePrecio, T5.VidQuotePrecioP = T6.VidQuotePrecioP\n	WHERE\n		 T5.VidQuoteID = pVidQuoteID AND \n		 T5.VidQuoteProdID = T6.VidQuoteProdID AND \n		 T5.VidQuoteElementoID = T6.VidQuoteElementoID;\nEND\n</pre></small>\n*20120925\n**Reestructura actualización del atributo de precio debido a que se incorpora el [[TRIG:Actualiza_Item_Presupuesto]] y produce un dead-lock al gestionar las mismas tablas. Se modifica el [[TRIG:Actualiza_Item_Presupuesto]] y se hace un UPDATE falso para forzar el Trigger de actualización a hacer el recálculo.\n<small><pre>\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]','utf-8'),(630,'== Descripción ==\nActualizador de precios de un presupuesto indicado. Toma toda la información existente y la actualiza de acuerdo a la lista de precios vigente\n== Composición ==\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten2]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n*[[TABLA:composicion]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto`(\n    IN pVidQuoteID INT(5),\n--    IN pVidQuoteItem INT(5),\n    IN pVidQuoteLista INT(1),\n    IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4,\n    vidquoten2 AS T5\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * T5.VidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n--    T1.VidQuoteItem = IF(ISNULL(pVidQuoteItem),T1.VidQuoteItem,pVidQuoteItem) AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T5.VidQuoteID = T1.VidQuoteID AND \n    T5.VidQuoteItem = T1.VidQuoteItem AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * V6.VidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5,\n        fzggestion.vidquoten2 AS V6\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n--       V1.VidQuoteItem = IF(ISNULL(pVidQuoteItem),V1.VidQuoteItem,pVidQuoteItem) AND\n        V6.VidQuoteID = V1.VidQuoteID AND \n        V6.VidQuoteItem = V1.VidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\n-- ----------------------------------------------------------\n-- Update Precios Resumen on vidquoten2. No effect on others\n-- fields than VidQuotePrecio\n-- ----------------------------------------------------------\nUPDATE\n    vidquoten2 AS T1\nSET\n    T1.VidQuoteProdCantidad=T1.VidQuoteProdCantidad\nWHERE\n    T1.VidQuoteID = pVidQuoteID;\nEND\n</pre></small>\n\n== Bitácora ==\n*20120921\n**Actualización de acuerdo al cambio de diseño de [[FORM:Presupuesto]]\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto_OLD`(IN pVidQuoteID INT(5))\nBEGIN\n	UPDATE vidquoten3 AS T5,\n    (\n    SELECT\n		T4.VidQuoteProdID,\n      T4.VidQuoteElementoID,\n		T4.VidQuoteProdCantidad,\n		T4.VidQuoteAncho,\n		T4.VidQuoteAlto,\n      T4.PrecioProd,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento)) AS VidQuotePrecio,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento) * T4.VidQuoteProdCantidad) AS VidQuotePrecioP\n	FROM\n	((SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T2.ValorElemento AS ValorElemento,\n		 T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T2.CoefVanoAncho AS CoefVanoAncho,\n		 T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteProdID AND T2.ElementoID = T1.VidQuoteElementoID }\n	WHERE\n		 T1.VidQuoteProdID=VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	UNION\n	(SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T3.ValorElemento * T2.ValorElemento AS ValorElemento,\n		 T3.OffsetVanoAncho + T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T3.OffsetVanoAlto + T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T3.CoefVanoAncho * T2.CoefVanoAncho AS CoefVanoAncho,\n		 T3.CoefVanoAlto * T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteElementoID },\n		 fzggestion.visprodadic AS T3\n	WHERE\n		 T3.ProductoID = T1.VidQuoteProdID AND \n		 T3.ElementoID = T1.VidQuoteElementoID AND \n		 T1.VidQuoteProdID <> T1.VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	ORDER BY VidQuoteProdID,VidQuoteElementoID,ElementoID) AS T4\n	GROUP BY VidQuoteProdID,VidQuoteElementoID) AS T6\n	SET T5.VidQuotePrecio = T6.VidQuotePrecio, T5.VidQuotePrecioP = T6.VidQuotePrecioP\n	WHERE\n		 T5.VidQuoteID = pVidQuoteID AND \n		 T5.VidQuoteProdID = T6.VidQuoteProdID AND \n		 T5.VidQuoteElementoID = T6.VidQuoteElementoID;\nEND\n</pre></small>\n*20120925\n**Reestructura actualización del atributo de precio debido a que se incorpora el [[TRIG:Actualiza_Item_Presupuesto]] y produce un dead-lock al gestionar las mismas tablas. Se modifica el [[TRIG:Actualiza_Item_Presupuesto]] y se hace un UPDATE falso para forzar el Trigger de actualización a hacer el recálculo.\n<small><pre>\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]','utf-8'),(631,'== Descripción ==\nActualizador de precios de un presupuesto indicado. Toma toda la información existente y la actualiza de acuerdo a la lista de precios vigente. Luego de actualizar los precios a nivel Elemento, procede a actualizar los precios del detalle del presupuesto invocando un UPDATE ficticio para que ejecute sin Dead-Lock a través del [[TRIG:Actualiza_Item_Presupuesto]]\n\n== Composición ==\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten2]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n*[[TABLA:composicion]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto`(\n    IN pVidQuoteID INT(5),\n--    IN pVidQuoteItem INT(5),\n    IN pVidQuoteLista INT(1),\n    IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4,\n    vidquoten2 AS T5\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * T5.VidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n--    T1.VidQuoteItem = IF(ISNULL(pVidQuoteItem),T1.VidQuoteItem,pVidQuoteItem) AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T5.VidQuoteID = T1.VidQuoteID AND \n    T5.VidQuoteItem = T1.VidQuoteItem AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * V6.VidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5,\n        fzggestion.vidquoten2 AS V6\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n--       V1.VidQuoteItem = IF(ISNULL(pVidQuoteItem),V1.VidQuoteItem,pVidQuoteItem) AND\n        V6.VidQuoteID = V1.VidQuoteID AND \n        V6.VidQuoteItem = V1.VidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\n-- ----------------------------------------------------------\n-- Update Precios Resumen on vidquoten2. No effect on others\n-- fields than VidQuotePrecio\n-- ----------------------------------------------------------\nUPDATE\n    vidquoten2 AS T1\nSET\n    T1.VidQuoteProdCantidad=T1.VidQuoteProdCantidad\nWHERE\n    T1.VidQuoteID = pVidQuoteID;\nEND\n</pre></small>\n\n== Bitácora ==\n*20120921\n**Actualización de acuerdo al cambio de diseño de [[FORM:Presupuesto]]\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto_OLD`(IN pVidQuoteID INT(5))\nBEGIN\n	UPDATE vidquoten3 AS T5,\n    (\n    SELECT\n		T4.VidQuoteProdID,\n      T4.VidQuoteElementoID,\n		T4.VidQuoteProdCantidad,\n		T4.VidQuoteAncho,\n		T4.VidQuoteAlto,\n      T4.PrecioProd,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento)) AS VidQuotePrecio,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento) * T4.VidQuoteProdCantidad) AS VidQuotePrecioP\n	FROM\n	((SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T2.ValorElemento AS ValorElemento,\n		 T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T2.CoefVanoAncho AS CoefVanoAncho,\n		 T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteProdID AND T2.ElementoID = T1.VidQuoteElementoID }\n	WHERE\n		 T1.VidQuoteProdID=VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	UNION\n	(SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T3.ValorElemento * T2.ValorElemento AS ValorElemento,\n		 T3.OffsetVanoAncho + T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T3.OffsetVanoAlto + T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T3.CoefVanoAncho * T2.CoefVanoAncho AS CoefVanoAncho,\n		 T3.CoefVanoAlto * T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteElementoID },\n		 fzggestion.visprodadic AS T3\n	WHERE\n		 T3.ProductoID = T1.VidQuoteProdID AND \n		 T3.ElementoID = T1.VidQuoteElementoID AND \n		 T1.VidQuoteProdID <> T1.VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	ORDER BY VidQuoteProdID,VidQuoteElementoID,ElementoID) AS T4\n	GROUP BY VidQuoteProdID,VidQuoteElementoID) AS T6\n	SET T5.VidQuotePrecio = T6.VidQuotePrecio, T5.VidQuotePrecioP = T6.VidQuotePrecioP\n	WHERE\n		 T5.VidQuoteID = pVidQuoteID AND \n		 T5.VidQuoteProdID = T6.VidQuoteProdID AND \n		 T5.VidQuoteElementoID = T6.VidQuoteElementoID;\nEND\n</pre></small>\n*20120925\n**Reestructura actualización del atributo de precio debido a que se incorpora el [[TRIG:Actualiza_Item_Presupuesto]] y produce un dead-lock al gestionar las mismas tablas. Se modifica el [[TRIG:Actualiza_Item_Presupuesto]] y se hace un UPDATE falso para forzar el Trigger de actualización a hacer el recálculo.\n<small><pre>\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]','utf-8'),(632,'== Descripción ==\nActualizador de precios de un presupuesto indicado. Toma toda la información existente y la actualiza de acuerdo a la lista de precios vigente. Luego de actualizar los precios a nivel Elemento, procede a actualizar los precios del detalle del presupuesto invocando un UPDATE ficticio para que ejecute sin Dead-Lock a través del [[TRIG:Actualiza_Item_Presupuesto]]\n\n== Composición ==\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten2]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n*[[TABLA:composicion]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto`(\n    IN pVidQuoteID INT(5),\n--    IN pVidQuoteItem INT(5),\n    IN pVidQuoteLista INT(1),\n    IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4,\n    vidquoten2 AS T5\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        T5.VidQuoteAncho, \n                        T5.VidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * T5.VidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n--    T1.VidQuoteItem = IF(ISNULL(pVidQuoteItem),T1.VidQuoteItem,pVidQuoteItem) AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T5.VidQuoteID = T1.VidQuoteID AND \n    T5.VidQuoteItem = T1.VidQuoteItem AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            V6.VidQuoteAncho, \n            V6.VidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * V6.VidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5,\n        fzggestion.vidquoten2 AS V6\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n--       V1.VidQuoteItem = IF(ISNULL(pVidQuoteItem),V1.VidQuoteItem,pVidQuoteItem) AND\n        V6.VidQuoteID = V1.VidQuoteID AND \n        V6.VidQuoteItem = V1.VidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\n-- ----------------------------------------------------------\n-- Update Precios Resumen on vidquoten2. No effect on others\n-- fields than VidQuotePrecio\n-- ----------------------------------------------------------\nUPDATE\n    vidquoten2 AS T1\nSET\n    T1.VidQuoteProdCantidad=T1.VidQuoteProdCantidad\nWHERE\n    T1.VidQuoteID = pVidQuoteID;\nEND\n</pre></small>\n\n== Bitácora ==\n*20120921\n**Actualización de acuerdo al cambio de diseño de [[FORM:Presupuesto]]\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaPreciosPresupuesto_OLD`(IN pVidQuoteID INT(5))\nBEGIN\n	UPDATE vidquoten3 AS T5,\n    (\n    SELECT\n		T4.VidQuoteProdID,\n      T4.VidQuoteElementoID,\n		T4.VidQuoteProdCantidad,\n		T4.VidQuoteAncho,\n		T4.VidQuoteAlto,\n      T4.PrecioProd,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento)) AS VidQuotePrecio,\n		SUM(CalculoPrecio(\n			T4.VidQuoteAncho, \n			T4.VidQuoteAlto,\n			T4.PrecioProd,\n			T4.Magnitud,\n			T4.OffsetVanoAlto,\n			T4.OffsetVanoAncho,\n			T4.CoefVanoAlto,\n			T4.CoefVanoAncho,\n			T4.ValorElemento) * T4.VidQuoteProdCantidad) AS VidQuotePrecioP\n	FROM\n	((SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T2.ValorElemento AS ValorElemento,\n		 T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T2.CoefVanoAncho AS CoefVanoAncho,\n		 T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteProdID AND T2.ElementoID = T1.VidQuoteElementoID }\n	WHERE\n		 T1.VidQuoteProdID=VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	UNION\n	(SELECT \n		 T1.VidQuoteLPre AS VidQuoteLPre,\n		 T1.VidQuoteProdID AS VidQuoteProdID,\n		 T1.VidQuoteElementoID AS VidQuoteElementoID,\n		 T2.ElementoID AS ElementoID,\n		 T1.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n		 T1.VidQuoteAncho AS VidQuoteAncho,\n		 T1.VidQuoteAlto AS VidQuoteAlto,\n		 T2.Magnitud,\n		 T3.ValorElemento * T2.ValorElemento AS ValorElemento,\n		 T3.OffsetVanoAncho + T2.OffsetVanoAncho AS OffsetVanoAncho,\n		 T3.OffsetVanoAlto + T2.OffsetVanoAlto AS OffsetVanoAlto,\n		 T3.CoefVanoAncho * T2.CoefVanoAncho AS CoefVanoAncho,\n		 T3.CoefVanoAlto * T2.CoefVanoAlto AS CoefVanoAlto,\n		(CASE (T1.VidQuoteLPre)\n		     WHEN 0 THEN T2.`PrecioProd00`\n			WHEN 1 THEN T2.`PrecioProd01`\n			WHEN 2 THEN T2.`PrecioProd02`\n			WHEN 3 THEN T2.`PrecioProd03`\n			END) AS PrecioProd\n	FROM\n		 { OJ fzggestion.visprodadic AS T2\n		     RIGHT OUTER JOIN\n		 fzggestion.vidquoten3 AS T1 ON T2.ProductoID = T1.VidQuoteElementoID },\n		 fzggestion.visprodadic AS T3\n	WHERE\n		 T3.ProductoID = T1.VidQuoteProdID AND \n		 T3.ElementoID = T1.VidQuoteElementoID AND \n		 T1.VidQuoteProdID <> T1.VidQuoteElementoID AND T1.VidQuoteID = pVidQuoteID)\n	ORDER BY VidQuoteProdID,VidQuoteElementoID,ElementoID) AS T4\n	GROUP BY VidQuoteProdID,VidQuoteElementoID) AS T6\n	SET T5.VidQuotePrecio = T6.VidQuotePrecio, T5.VidQuotePrecioP = T6.VidQuotePrecioP\n	WHERE\n		 T5.VidQuoteID = pVidQuoteID AND \n		 T5.VidQuoteProdID = T6.VidQuoteProdID AND \n		 T5.VidQuoteElementoID = T6.VidQuoteElementoID;\nEND\n</pre></small>\n*20120925\n**Reestructura actualización del atributo de precio debido a que se incorpora el [[TRIG:Actualiza_Item_Presupuesto]] y produce un dead-lock al gestionar las mismas tablas. Se modifica el [[TRIG:Actualiza_Item_Presupuesto]] y se hace un UPDATE falso para forzar el Trigger de actualización a hacer el recálculo.\n<small><pre>\nUPDATE\n    vidquoten2 AS T1,\n    (SELECT \n        VidQuoteID,\n        VidQuoteItem,\n        VidQuoteProdCantidad,\n        VidQuoteProdID,\n        SUM(VidQuotePrecioP) AS VidQuotePrecioP\n    FROM\n        vidquoten3\n    GROUP BY\n        VidQuoteID,\n        VidQuoteItem) AS T2\nSET\n    T1.VidQuotePrecio=T2.VidQuotePrecioP\nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteID = T2.VidQuoteID AND\n    T1.VidQuoteItem = T2.VidQuoteItem;\nEND\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]\n*[[TRIG:Actualiza_Item_Presupuesto]]','utf-8'),(633,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n* [[PROC:AltaItemPresupuesto]]. Correcciones y Test.\n* [[PROC:ActualizarItemPresupuesto]]. Correcciones y Test\n* [[TRIG:Alta_Item_Presupuesto]]. Creación para reemplazar la actividad BEFORE UPDATE sobre la [[TABLA:vidquoten2]] en [[MACRO:EventoBRCDetallePresupuesto]]. Cuando activa el UPDATE, la [[MACRO:EventoBRCDetallePresupuesto]] solo refresca la [[TABLA:vidquoten3]]\n* [[TRIG:Actualiza_Item_Presupuesto]]. Creación en el evento SQL BEFORE UPDATE sobre [[TABLA:vidquoten2]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n****[[MACRO:BotonActualizarPresupuesto]]\n*****Adaptación al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(634,'== Descripción ==\nTrigger del evento BEFORE UPDATE de [[TABLA:vidquoten2]]\n== Composición ==\n*[[TABLA:vidquoten1]]\n*[[TABLA:vidquoten3]]\n*[[VISTA:acomerciales]]\n*[[VISTA:clientes]]\n== Código ==\n<small><pre>\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Actualiza_Item_Presupuesto`\nBEFORE UPDATE ON `fzggestion`.`vidquoten2`\nFOR EACH ROW\nBEGIN\n    -- --------------------------------------------------------\n    -- Changes on Price, change previous other attributes\n    -- --------------------------------------------------------\n    IF OLD.VidQuotePrecio = NEW.VidQuotePrecio THEN\n        SELECT VidQuoteCliente,VidQuoteACom INTO @Cliente,@AComercial FROM vidquoten1 WHERE vidquoten1.VidQuoteID = OLD.VidQuoteID;\n        SELECT CoeficienteAC INTO @CoeficienteAC from acomerciales WHERE acomerciales.Abreviatura = @AComercial;\n        SELECT CoeficienteAC,ListaPrecio INTO @CoeficienteCL,@Lista from clientes WHERE clientes.ClienteID = @Cliente;\n        CASE\n        WHEN NEW.VidQuoteProdID <> OLD.VidQuoteProdID THEN\n            -- --------------------------------------------------------\n            -- Changes on ProdID, change previous other attributes\n            -- --------------------------------------------------------\n            DELETE\n                FROM vidquoten3\n                WHERE\n                    vidquoten3.VidQuoteID = OLD.VidQuoteID AND\n                    vidquoten3.VidQuoteItem = OLD.VidQuoteItem;\n            CALL AltaItemPresupuesto(\n                OLD.VidQuoteID,\n                @Lista,\n                OLD.VidQuoteItem,\n                NEW.VidQuoteProdID,\n                NEW.VidQuoteProdCantidad,\n                NEW.VidQuoteAncho,\n                NEW.VidQuoteAlto,\n                @CoeficienteCL*@CoeficienteAC);\n        WHEN NEW.VidQuoteProdCantidad <> OLD.VidQuoteProdCantidad OR\n             NEW.VidQuoteAncho <> OLD.VidQuoteAncho OR\n             NEW.VidQuoteAlto <> OLD.VidQuoteAlto THEN\n            -- --------------------------------------------------------\n            -- Suppose Changes other attributes\n            -- --------------------------------------------------------\n--             CALL DebugCheckPoint(\n--                 CONCAT(\n--                 \"TRIG:Actualiza_Item_Presupuesto\",\"/OLD/\",\n--                 CAST(OLD.VidQuoteID AS CHAR),\"-\",\n--                 CAST(@Lista AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteItem AS CHAR),\"-\",\n--                 OLD.VidQuoteProdID,\"-\",\n--                 CAST(OLD.VidQuoteProdCantidad AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteAncho AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteAlto AS CHAR),\"-\",\n--                 CAST(OLD.VidQuotePrecio AS CHAR),\"-\",\n--                 CAST(@CoeficienteCL*@CoeficienteAC AS CHAR)\n--                 ));\n            CALL ActualizaItemPresupuesto(\n                OLD.VidQuoteID,\n                OLD.VidQuoteItem,\n                NEW.VidQuoteProdCantidad,\n                NEW.VidQuoteAncho,\n                NEW.VidQuoteAlto,\n                @Lista,\n                @CoeficienteCL*@CoeficienteAC);\n        ELSE\n                SET @fly = NULL;\n        END CASE;\n        SET NEW.VidQuotePrecio = \n            (SELECT SUM(VidQuotePrecioP) AS VidQuotePrecioP\n            FROM\n                vidquoten3\n            WHERE\n                vidquoten3.VidQuoteID = OLD.VidQuoteID AND\n                vidquoten3.VidQuoteItem = OLD.VidQuoteItem\n            GROUP BY\n                VidQuoteID,VidQuoteItem);\n --        CALL DebugCheckPoint(\n --            CONCAT(\n --            \"TRIG:Actualiza_Item_Presupuesto\",\"/NEW/\",\n --            CAST(NEW.VidQuoteID AS CHAR),\"-\",\n --            CAST(@Lista AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteItem AS CHAR),\"-\",\n --            NEW.VidQuoteProdID,\"-\",\n --            CAST(NEW.VidQuoteProdCantidad AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteAncho AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteAlto AS CHAR),\"-\",\n --            CAST(NEW.VidQuotePrecio AS CHAR),\"-\",\n --            CAST(@CoeficienteCL*@CoeficienteAC AS CHAR)\n --            ));\n    END IF;\nEND$$\n</pre></small>\n== Bitácora ==\n*20120925\n**Lanzamiento debido a nuevo diseño de FORM:Presupuesto.\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(635,'== Descripción ==\nTrigger del evento BEFORE UPDATE de [[TABLA:vidquoten2]]\n== Composición ==\n*[[TABLA:vidquoten1]]\n*[[TABLA:vidquoten3]]\n*[[VISTA:acomerciales]]\n*[[VISTA:clientes]]\n*[[PROC:AltaItemPresupuesto]]\n\n== Código ==\n<small><pre>\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Actualiza_Item_Presupuesto`\nBEFORE UPDATE ON `fzggestion`.`vidquoten2`\nFOR EACH ROW\nBEGIN\n    -- --------------------------------------------------------\n    -- Changes on Price, change previous other attributes\n    -- --------------------------------------------------------\n    IF OLD.VidQuotePrecio = NEW.VidQuotePrecio THEN\n        SELECT VidQuoteCliente,VidQuoteACom INTO @Cliente,@AComercial FROM vidquoten1 WHERE vidquoten1.VidQuoteID = OLD.VidQuoteID;\n        SELECT CoeficienteAC INTO @CoeficienteAC from acomerciales WHERE acomerciales.Abreviatura = @AComercial;\n        SELECT CoeficienteAC,ListaPrecio INTO @CoeficienteCL,@Lista from clientes WHERE clientes.ClienteID = @Cliente;\n        CASE\n        WHEN NEW.VidQuoteProdID <> OLD.VidQuoteProdID THEN\n            -- --------------------------------------------------------\n            -- Changes on ProdID, change previous other attributes\n            -- --------------------------------------------------------\n            DELETE\n                FROM vidquoten3\n                WHERE\n                    vidquoten3.VidQuoteID = OLD.VidQuoteID AND\n                    vidquoten3.VidQuoteItem = OLD.VidQuoteItem;\n            CALL AltaItemPresupuesto(\n                OLD.VidQuoteID,\n                @Lista,\n                OLD.VidQuoteItem,\n                NEW.VidQuoteProdID,\n                NEW.VidQuoteProdCantidad,\n                NEW.VidQuoteAncho,\n                NEW.VidQuoteAlto,\n                @CoeficienteCL*@CoeficienteAC);\n        WHEN NEW.VidQuoteProdCantidad <> OLD.VidQuoteProdCantidad OR\n             NEW.VidQuoteAncho <> OLD.VidQuoteAncho OR\n             NEW.VidQuoteAlto <> OLD.VidQuoteAlto THEN\n            -- --------------------------------------------------------\n            -- Suppose Changes other attributes\n            -- --------------------------------------------------------\n--             CALL DebugCheckPoint(\n--                 CONCAT(\n--                 \"TRIG:Actualiza_Item_Presupuesto\",\"/OLD/\",\n--                 CAST(OLD.VidQuoteID AS CHAR),\"-\",\n--                 CAST(@Lista AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteItem AS CHAR),\"-\",\n--                 OLD.VidQuoteProdID,\"-\",\n--                 CAST(OLD.VidQuoteProdCantidad AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteAncho AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteAlto AS CHAR),\"-\",\n--                 CAST(OLD.VidQuotePrecio AS CHAR),\"-\",\n--                 CAST(@CoeficienteCL*@CoeficienteAC AS CHAR)\n--                 ));\n            CALL ActualizaItemPresupuesto(\n                OLD.VidQuoteID,\n                OLD.VidQuoteItem,\n                NEW.VidQuoteProdCantidad,\n                NEW.VidQuoteAncho,\n                NEW.VidQuoteAlto,\n                @Lista,\n                @CoeficienteCL*@CoeficienteAC);\n        ELSE\n                SET @fly = NULL;\n        END CASE;\n        SET NEW.VidQuotePrecio = \n            (SELECT SUM(VidQuotePrecioP) AS VidQuotePrecioP\n            FROM\n                vidquoten3\n            WHERE\n                vidquoten3.VidQuoteID = OLD.VidQuoteID AND\n                vidquoten3.VidQuoteItem = OLD.VidQuoteItem\n            GROUP BY\n                VidQuoteID,VidQuoteItem);\n --        CALL DebugCheckPoint(\n --            CONCAT(\n --            \"TRIG:Actualiza_Item_Presupuesto\",\"/NEW/\",\n --            CAST(NEW.VidQuoteID AS CHAR),\"-\",\n --            CAST(@Lista AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteItem AS CHAR),\"-\",\n --            NEW.VidQuoteProdID,\"-\",\n --            CAST(NEW.VidQuoteProdCantidad AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteAncho AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteAlto AS CHAR),\"-\",\n --            CAST(NEW.VidQuotePrecio AS CHAR),\"-\",\n --            CAST(@CoeficienteCL*@CoeficienteAC AS CHAR)\n --            ));\n    END IF;\nEND$$\n</pre></small>\n== Bitácora ==\n*20120925\n**Lanzamiento debido a nuevo diseño de FORM:Presupuesto.\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(636,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n* [[PROC:AltaItemPresupuesto]]. Correcciones y Test.\n* [[PROC:ActualizarItemPresupuesto]]. Correcciones y Test\n* [[TRIG:Actualiza_Item_Presupuesto]]. Creación en el evento SQL BEFORE UPDATE sobre [[TABLA:vidquoten2]] para reemplazar la ejecución del proceso de actualización en [[MACRO:EventoBRCDetallePresupuesto]]. Cuando activa el UPDATE, la [[MACRO:EventoBRCDetallePresupuesto]] solo refresca la [[TABLA:vidquoten3]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n****[[MACRO:BotonActualizarPresupuesto]]\n*****Adaptación al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(637,'* [[Actualizacion DB]]\n=== Versión 1.1 ===\n\'\'\'Release 20120912\'\'\'\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataCliente para evitar repetir la consulta de los datos del cliente (descripción, coeficientes agregados, etc.)\n* [[FORM:Presupuesto]]. Diseño. Agregado de Form:DataAgente para evitar repetir la consulta ya que se agrega la modalidad de aplicar el coeficiente que tiene el agente comercial adicional al del cliente y a los definidos en el módulo de precios.\n* [[FORM:Presupuesto]]. Corrección. El [[CTRL:Presupuesto.ListaProducto]] pasa a depender de [[CTRL:Presupuesto.Cabecera]]\n* [[VISTA:acomerciales]]. Se cambia el nombre del ID principal por AComercialID y se agregan los datos de Coeficiente que proviene de la [[TABLA:contactos]].\n* [[TABLA:contactos]]. Se agrega un atributo que puede representar la fotografía o logo de la empresa contacto.\n* [[PROC:AltaItemPresupuesto]]. Correcciones y Test.\n* [[PROC:ActualizaItemPresupuesto]]. Correcciones y Test\n* [[TRIG:Actualiza_Item_Presupuesto]]. Creación en el evento SQL BEFORE UPDATE sobre [[TABLA:vidquoten2]] para reemplazar la ejecución del proceso de actualización en [[MACRO:EventoBRCDetallePresupuesto]]. Cuando activa el UPDATE, la [[MACRO:EventoBRCDetallePresupuesto]] solo refresca la [[TABLA:vidquoten3]]\n\'\'\'Release 20120901\'\'\'\n* [[FORM:Presupuesto]]. Cambio de diseño.\n* [[TABLA:precios]]. Agrega atributo para identificar el usuario del último cambio.\n* [[FORM:PreciosTabularNormal]]. Modificación. Agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:PreciosGeneral]]. Modificación. Ajustes de forma y agregado de columna de Usuario Evento.\n* [[FORM:ConsumoMasivoPrecios]]. Modificacion. Ajustes de forma y agregado de columnas a la vista de la tabla. Fecha de última modificación y Usuario.\n* [[FORM:Contactos]]. Ajuste y Rediseño. Se colocó el tipo de contacto en primer lugar para poder utilizar la función de sugerencia de código de contacto. Se rediseñó la función de sugerencia de código de contacto para que abarque todos los tipos de contactos.\n* [[VISTA:clientes]]. Cambio de condicion de la [[TABLA:contactos]] por cambio de tipo de variable del tag de clientes y el agregado de Coeficiente de MarkUp.\n* [[TABLA:telemecomp]]. Alta de Tabla.\n* [[FORM:ComposicionMasivoxProducto]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Modificación. Se modificó el orden y el tipo de control de atributo ElementoPM\n* [[FORM:ComposicionProductoElemento]]. Modificacion. Se cambió el tipo de lista de control del atributo ElementoPM\n* [[FORM:CopiaComposicion]]. Corrección. Se actualizó la [[MACRO:CopiaComposicion]] para fijar posicion sobre la decisión de copiar datos anteriores\n* [[PROC:DuplicaProductoCompo]]. Se agrega el parámetro de descripción del producto destino.\n* [[TABLA:composicion]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[FORM:ComposicionMasivoxProducto]]. Se edita para que adapte el ingreso del atributo Composic. Luego de las pruebas de test, la eliminación de un registro de Producto/Elemento similar, eliminaba todos los iguales.\n* [[TABLA:vidquoten3]]. Agrega atributo ComposicID autoincremental para diferenciar aquellos que están duplicados.\n* [[TABLA:vidquoten3tmp]]. Agrega atributo ComposicID para diferenciar aquellos que están duplicados.\n* [[PROC:AltaItemPresupuestoTmp]]. Se revisó e introdujeron los cambios asociados a la incorporación del atributo ComposicID de las [[TABLA:vidquoten3tmp]] y [[TABLA:vidquoten3]]\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección / Verificación de Fórmulas del Release 20120424.[[File:warning-icon-hi.png|20px]]\n* [[PROC:GrabaItemPresupuestoTmp]]. Generación para cerrar el círculo de edición de componentes durante el presupuesto.\n* [[PROC:ResetEdicionItemTmp]]. Creación para eliminar las registraciones temporarias en [[TABLA:vidquoten3tmp]]\n* [[FORM:Presupuesto]]. Cambios\n** Se habilita la posibilidad de solo consulta para todos los Presupuestos Aprobados con [[MACRO:ControlFormPresupuesto]].\n** Se limita la posibilidad de eliminar Presupuesto / Producto para Presupuestos Aprobados y se habilita el LOC (Last Opportunity Check) con [[MACRO:ConfirmaDeletePresupuesto]]\n** Chequeos [[FORM:PresupuestoV1.0]].\n***Form:Cabecera\n****[[MACRO:NewResetListBox]]: No es necesario. No se usa más la modificación del contenido del ListBox OTA.\n****[[MACRO:PresupuestoExpirado]]: Optimizar y agregar como función dentro de [[MACRO:ControlFormPresupuesto]]\n****[[MACRO:EventoWhenLoadingFromCabecera]]\n*****Confirmar [[MACRO:ChequeoLicenciaOK]]\n*****Eliminar limpieza ListBox\n*****Asigna default Fecha Presupuesto con [[MACRO:Hoy]]\n*****Eliminar Reset ListBoxes\n****[[MACRO:EventoBRADetallePresupuesto]]\n*****Sin Cambios\n****[[MACRO:EventoBRCDetallePresupuesto]]\n****[[MACRO:BotonActualizarPresupuesto]]\n*****Adaptación al nuevo [[PROC:ActualizaPreciosPresupuesto]]\n\n=== Versión 1 ===\n\'\'\'Release 20120720\'\'\'\n* [[FORM:Pagos]]. Creación.\n* [[TABLA:tdocumento]]. Rediseño. Se incorporan atributos para indicar cuales son los procesos que se incluye el documento para un posterior filtro.\n* [[FORM:ClientesCRM]]. Rediseño. Se reemplaza las tablas y se confecciona a partir de los presupuestos aprobados/pendientes y de las cobranzas.\n* [[FORM:Cobranzas]]. Modificación. Se agrega la posibilidad de asignación por cliente (cuenta corriente).\n* [[TABLA:accpayab]]. Creación.\n\'\'\'Release 20120628\'\'\'\n* [[FORM:Categorias]]. Rediseño. Se rediseña la interfaz de acuerdo a el nuevo lineamiento y se agrega un control de Grid para su mejor visualización.\n* [[FORM:PreciosGeneral]]. Rediseño. Se agrega el Control Grid sobre la [[TABLA:precios]] y los controles de navegación.\n* [[TABLA:vidquoten1]]. Se agrega el atributo para controlar si se efectua la medición en obra.\n\'\'\'Release 20120627\'\'\'\n* [[FORM:CopiaComposicion]]: Modificado: Se generan una nueva forma de copia duplicación de componentes. Se agregan además las funciones de Agregado masivo a partir de otro producto y de control de repetición de producto.\n* [[FORM:PresupuestoV1.0]]. Modificado. Se prepara el acceso de los Módulos permitiendo la copia de un módulo predefinido en forma completa.\n* [[FORM:ComposicionMasivoxProducto]]. Modificado. Se agrega un control de navegación para cada grupo de datos: Productos y Elementos.\n\'\'\'Release 20120608\'\'\'\n* [[FORM:Predefinidos]]. Creación. Genera una nueva instancia inicial con presupuestos \"preformateados\" que simulen un nivel inmediato superior al esquema Producto-Elemento-Parámetro que permitiría inicialmente generar anteproyectos. Queda pendiente el ingreso de este grupo como elemento manipulable.[[File:warning-icon-hi.png|20px]]\n* [[TABLA:predefcab]]. Creación\n* [[TABLA:predefdet]]. Creación\n\'\'\'Release 20120515\'\'\'\n* [[FORM:Productos]]. Modificación. Cambio del control de verificación del campo ProductoID. Cambio de Control y verificación en [[TABLA:productos]], [[TABLA:composicion]] y [[TABLA:precios]]. Se habilita función específica de verificación de integridad. Ok\n* [[FORM:Productos]]. Modificación. Corrección de código por bug en función iif en Basic en el evento AfterChangeRecordFORMProductos.\n* [[REPORTE:PresupuestoDirecto]]. Modificación. Agregado de Numéración de páginas para el caso de presupuestos de más de una hoja de extensión.\n* [[PROC:CalculaPrecioBase]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[PROC:CalculoPrecio]]. Incorpora el cálculo de las magnitudes \"2H\" (cálculo en base a la altura indicada multiplicada por 2) y \"2W\" (cálculo en base al ancho indicado multiplicado por 2).\n* [[FORM:MasivoCoeficienteActualizacion]]. Asigna [[MACRO:CambioMasivoCoeficientesPrecios]] y agrega botón de limpieza con [[MACRO:LimpiarMasivoCoeficientesPrecios]]\n* [[PROC:CalculaPrecioBase]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoPrecio]]. Modificación. Se agrega la alternativa dentro de la fórmula de Metro Lineal (ML) que calcule también en caso de:\n** Cuando se realice el calculo de componentes de un producto cuya valorización se debe definir Ancho y Alto (por si tiene elementos con magnitudes de Metro Cuadrado -M2-)\n** Cuando tenga algún componente que se refiera exclusivamente al Alto o Al Ancho, en cuyo caso se debe administrar el uso a través del CoeficienteAncho y CoeficienteAlto.[[File:warning-icon-hi.png|20px]]\n* [[PROC:CalculoMedidaReal]]. Se agrega la función para facilitar el cálculo de la medida real (con respecto al Vano) para la información para Producción.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120507\'\'\'\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección posicion botones ejecución. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Corrección alineamiento lbl Filtro. Ok.\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:Productos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabularXProceso]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:PrecioTabuladoNormal]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXProducto]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:CambioMasivo]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:ComposicionProductos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado de Control de Navegación. Ok\n* [[FORM:GestionMasivaXElementos]]. Modificación. Agregado BoxControls, Activación de filtro. Ok\n\'\'\'Release 20120424\'\'\'\n* [[PROC:ActualizaPreciosTabular]]. Modificación. Corrección de Formulas.[[File:warning-icon-hi.png|20px]]\n\'\'\'Release 20120409\'\'\'\n* [[FORM:PresupuestoV1.0]]. Reemplazo de Iconos operativos por gráficos. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Copia de Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Proceso de Filtro de Presupuestos con Boton On/Off. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Agregado de Hide/UnHide del Bloque de Parámetros de Elementos. Nuevo. Ok\n* [[TABLA:Precios]]. Reducción de decimales por cálculo automático de precios. Modificado. Ok.\n* [[FORM:Contactos]]. Reemplazo del Formulario por otro Diseño. Nuevo. Ok.\n* [[FORM:Contactos]]. Agregado de Proceso de Sugerencia de Contacto. Nuevo. Ok.\n* [[FORM:PrecioTabularNormal]]. Cambio de formato de campos de precios debido al cambio de estructura. Modificado. Ok.\n* [[FORM:MasivoCoeficientesActualizacion]]. Agregado de Formulario. Nuevo. Ok.\n* [[FORM:Productos]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n** Agregado de Esquema de Filtro.\n** Agregado de Hide/UnHide del Bloque de Filtro.\n* Corrección \"On Error\" en Acceso inicial a DB con 3 repeticiones posibles. Nuevo. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Corrección de los procesos de envío directo de correo al cliente. Ok.\n* [[FORM:PresupuestoV1.0]]. Modificación. Agregado del proceso de Aprobación de Presupuesto dentro del mismo formulario de ingreso / consulta para facilitar el proceso administrativo. Ok.\n* [[TABLA:Productos]]. Modificación. Agregado del atributo Reposicion. Ok. Enviado a Batch de Actualización de DB.\n* [[FORM:Productos]]. Modificación. Agregado del atributo Reposicion. Ok\n* [[FORM:Productos]]. Nuevo. Agregado de control tipo tabla en Filtro para búsqueda rápida. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de Relación entre DetallePresupuesto / Detalle Producto. Agregado de valores de Alto y Ancho. [[File:warning-icon-hi.png|20px]]\n* [[PROC:AltaItemPresupuesto]]. Modificacion. Cambio de esquema para incorporar subitems.\n* [[PROC:CalculoPrecio]]. Nuevo. Procedimiento para solo establecer el cálculo sin buscar los valores necesarios en [[VISTA:valprodadic]]\n\'\'\'Release 20120328\'\'\'\n* [[FORM:PresupuestoV1.0]]. Chequeo de Eliminación de Elemento Básico en Detalle de Producto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Chequeo de incorporación de Elementos restantes. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Imposibilidad de modificar un Elemento básico en un Presupuesto. Nuevo. Ok\n* [[FORM:PresupuestoV1.0]]. Cambio de esquema de Eventos en la cascada de subformularios. Modificado. Ok\n* [[FORM:PresupuestoV1.0]]. Incorporación de Botón de Actualización de Precios. Nuevo. Ok.\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PrecioTabularXProceso]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:GestionMasivaPorProducto]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Cambio de Esquema de Filtro Inicial. Nuevo. Ok\n* [[FORM:PreciosGeneral]]. Boton de limpieza campo Filtro. Nuevo. Ok\n* [[FORM:ProductosElementos]]. Eliminación Campo MarkUP. Modificado. Ok.\n* [[FORM:Contactos]]. Rediseño. Nuevo. En proceso de desarrollo.\n* Varios: Corrección de Acceso a URL de imagenes sobreimpresas de botones de acción. Correr carpeta \"Graficos\" como subdirectorio del main.\n\'\'\'Release 20120112\'\'\'\n* Activación de Wiki\n* Desarrollo y test de [[TRIGGER:Alta_Productos]]\n* Modificación de [[VISTA:visindetpre]]\n* Modificación de [[TABLA:composicion]]\n** Default values para Coeficientes Alto/Ancho y Offset Alto/Ancho\n\'\'\'Release 20120113\'\'\'\n* Alta Formulario Presupuesto: Aprobación\n** Por el período de prueba se visualizan todos los valores de VidQuoteEstado.\n* Alta Formulario Presupuestos Aprobados\n* Modificación Formulario Presupuesto: Alta + Pendientes\n** Solo se visualizarán los VidQuoteEstado<>1\n* Modificación de Mantenimiento>Productos\n** Control de ingreso de Magnitudes\n* Test Formulario Presupuesto\n** Errores generados por combinación padre-hijo-nieto en el esquema de VidQuoteEstado<>1.<br/><strike>El error estaba dado porque cuando daba de alta el registro de VidQuoten1 con VidQuoteEstado=NULL, grababa el registro saltaba al subformulario (bug?) pero no tenía referencia posible ya que se encontraba vigente el filtro VidQuoteEstado<>1 y perdía el registro padre, entonces duplicaba los registros hijo y generaba error de insert record por duplicación de clave.<br/>Se procedió a definir por default el valor 0 para el atributo VidQuoteEstado</Strike>\n\'\'\'Release 20120118\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se detecta la incompatibilidad en la integración de Triggers en MySQL - ODBC - LibreOffice.\n** Búsqueda de soluciones a partir de comportamiento de Eventos. Se cambia la gestión de resultados del despliegue de datos de Precios por código asociado al cambio de valores dentro del grid.\n** Se generan las funciones de usuario de Cálculo de Precio\n\'\'\'Release 20120119\'\'\'\n* Continua de 20120118\n** Se procede a eliminar los Triggers asociados a TABLA:vidquoten2\n** Se genera el procedimiento de Alta obligatoria de elementos asociados a producto\n\'\'\'Release 20120120\'\'\'\n* Modificación [[FORM:PresupuestoV1.0]]>Alta + Pendientes:\n** Se realiza código para reemplazar los Triggers asociados a TABLA:vidquoten2\n*** Se activan los eventos de BeforeAction para controlar la operación y AfterAction para ejecutar la operación. Se confeccionan procedimientos de control de registraciones\n*** Se activan los eventos de para la corrección de atributos de SUBFORM:DetalleProducto\n\'\'\'Release 20120122\'\'\'\n* Modificación de TABLA:contactos. Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación FORM:Contactos: Se agrega el atributo ContactoIDAbrv (\"Abreviatura\").\n* Modificación VISTA:Proveedores: Se agrega el atributo Abreviatura (\"Abreviatura\")\n* Modificación FORM:Productos: Se agregan los atributos Coeficientes Precios 1/2/3 y Proveedor.\n* Modificación FORM:Productos: Se corrige el ListBox de Magnitud y se cambia el ValueList por la consulta de la TABLA:Productos de las magnitudes existentes.\n\'\'\'Release 20120123\'\'\'\n* Control de Procedimiento de Impresión asignada (REPORT:Presupuesto Directo). OK.\n* Investigación sobre com.sun...executeDispatch\n* Investigación sobre Environmental Variables + MAC\n* Investigación sobre ExportToPDF Method.\n\'\'\'Release 20120124\'\'\'\n* Funcionalidad a botón de [[FORM:PresupuestoV1.0]]>Alta+Pendientes sobre envío de Correo.\n** Se detecta un bug en la integración Thunderbird - LibreOffice Basic: La bandera de \"No mostrar Dialogo\" no funciona.\n\'\'\'Release 20120125\'\'\'\n* Agregado de Agente Comercial\n** Agregado en [[TABLA:vidquoten1]]\n** Agregado en [[TABLA:contactos]]\n** Agregado de [[VISTA:acomerciales]]\n** Modificación de [[FORM:Contactos]].\n*** Agregado de Option\n** Modificación de [[FORM:Presupuestos>Alta+Pendientes]]\n*** Agregado de campo AComercial con Listbox en Abreviatura del ContactoID.\n\'\'\'Release 20120127\'\'\'\n* Modificacion [[TRIGGER:Alta_Producto]]\n** Agrega registro de Producto Básico en [[TABLA:composicion]].\n\'\'\'Release 20120203\'\'\'\n* Generación de [[REPORTE:Composicion.Productos]]\n* Generación de [[REPORTE:Lista.Precios.Vigentes]]\n* Generación de [[REPORTE:Contactos.Resumen]]\n* Modificación de [[REPORTE:Presupuesto]]\n** Ampliar Campo Producto\n** Cambiar variable filtro por \"_\"\n** Cambiar Dirección de Cliente.\n\'\'\'Release 20120206\'\'\'\n* Modificación [[TABLA:productos]]\n** Agregado ProductoPID:VARCHAR(15).\n** Identifica el código puente del proveedor para hacer el pedido correspondiente\n* Modificación [[FORM:productos]]\n** Agregado de campo de código puente','utf-8'),(638,'== Descripción ==\nTrigger del evento BEFORE UPDATE de [[TABLA:vidquoten2]]\n== Composición ==\n*[[TABLA:vidquoten1]]\n*[[TABLA:vidquoten3]]\n*[[VISTA:acomerciales]]\n*[[VISTA:clientes]]\n*[[PROC:AltaItemPresupuesto]]\n*[[PROC:ActualizaItemPresupuesto]]\n\n== Código ==\n<small><pre>\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Actualiza_Item_Presupuesto`\nBEFORE UPDATE ON `fzggestion`.`vidquoten2`\nFOR EACH ROW\nBEGIN\n    -- --------------------------------------------------------\n    -- Changes on Price, change previous other attributes\n    -- --------------------------------------------------------\n    IF OLD.VidQuotePrecio = NEW.VidQuotePrecio THEN\n        SELECT VidQuoteCliente,VidQuoteACom INTO @Cliente,@AComercial FROM vidquoten1 WHERE vidquoten1.VidQuoteID = OLD.VidQuoteID;\n        SELECT CoeficienteAC INTO @CoeficienteAC from acomerciales WHERE acomerciales.Abreviatura = @AComercial;\n        SELECT CoeficienteAC,ListaPrecio INTO @CoeficienteCL,@Lista from clientes WHERE clientes.ClienteID = @Cliente;\n        CASE\n        WHEN NEW.VidQuoteProdID <> OLD.VidQuoteProdID THEN\n            -- --------------------------------------------------------\n            -- Changes on ProdID, change previous other attributes\n            -- --------------------------------------------------------\n            DELETE\n                FROM vidquoten3\n                WHERE\n                    vidquoten3.VidQuoteID = OLD.VidQuoteID AND\n                    vidquoten3.VidQuoteItem = OLD.VidQuoteItem;\n            CALL AltaItemPresupuesto(\n                OLD.VidQuoteID,\n                @Lista,\n                OLD.VidQuoteItem,\n                NEW.VidQuoteProdID,\n                NEW.VidQuoteProdCantidad,\n                NEW.VidQuoteAncho,\n                NEW.VidQuoteAlto,\n                @CoeficienteCL*@CoeficienteAC);\n        WHEN NEW.VidQuoteProdCantidad <> OLD.VidQuoteProdCantidad OR\n             NEW.VidQuoteAncho <> OLD.VidQuoteAncho OR\n             NEW.VidQuoteAlto <> OLD.VidQuoteAlto THEN\n            -- --------------------------------------------------------\n            -- Suppose Changes other attributes\n            -- --------------------------------------------------------\n--             CALL DebugCheckPoint(\n--                 CONCAT(\n--                 \"TRIG:Actualiza_Item_Presupuesto\",\"/OLD/\",\n--                 CAST(OLD.VidQuoteID AS CHAR),\"-\",\n--                 CAST(@Lista AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteItem AS CHAR),\"-\",\n--                 OLD.VidQuoteProdID,\"-\",\n--                 CAST(OLD.VidQuoteProdCantidad AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteAncho AS CHAR),\"-\",\n--                 CAST(OLD.VidQuoteAlto AS CHAR),\"-\",\n--                 CAST(OLD.VidQuotePrecio AS CHAR),\"-\",\n--                 CAST(@CoeficienteCL*@CoeficienteAC AS CHAR)\n--                 ));\n            CALL ActualizaItemPresupuesto(\n                OLD.VidQuoteID,\n                OLD.VidQuoteItem,\n                NEW.VidQuoteProdCantidad,\n                NEW.VidQuoteAncho,\n                NEW.VidQuoteAlto,\n                @Lista,\n                @CoeficienteCL*@CoeficienteAC);\n        ELSE\n                SET @fly = NULL;\n        END CASE;\n        SET NEW.VidQuotePrecio = \n            (SELECT SUM(VidQuotePrecioP) AS VidQuotePrecioP\n            FROM\n                vidquoten3\n            WHERE\n                vidquoten3.VidQuoteID = OLD.VidQuoteID AND\n                vidquoten3.VidQuoteItem = OLD.VidQuoteItem\n            GROUP BY\n                VidQuoteID,VidQuoteItem);\n --        CALL DebugCheckPoint(\n --            CONCAT(\n --            \"TRIG:Actualiza_Item_Presupuesto\",\"/NEW/\",\n --            CAST(NEW.VidQuoteID AS CHAR),\"-\",\n --            CAST(@Lista AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteItem AS CHAR),\"-\",\n --            NEW.VidQuoteProdID,\"-\",\n --            CAST(NEW.VidQuoteProdCantidad AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteAncho AS CHAR),\"-\",\n --            CAST(NEW.VidQuoteAlto AS CHAR),\"-\",\n --            CAST(NEW.VidQuotePrecio AS CHAR),\"-\",\n --            CAST(@CoeficienteCL*@CoeficienteAC AS CHAR)\n --            ));\n    END IF;\nEND$$\n</pre></small>\n== Bitácora ==\n*20120925\n**Lanzamiento debido a nuevo diseño de FORM:Presupuesto.\n== Uso ==\n*[[FORM:Presupuesto]]','utf-8'),(639,'== Descripción ==\nActualiza los precios unitario y subtotal en la TABLA:vidquoten3 de un Producto determinado para todos sus componentes.\n== Composición ==\n*[[TABLA:composicion]]\n*[[TABLA:vidquoten3]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaItemPresupuesto`(\n    IN pVidQuoteID INT(5),\n    IN pVidQuoteItem INT(5),\n    IN pVidQuoteProdCantidad INT(5),\n    IN pVidQuoteAncho INT(5),\n    IN pVidQuoteAlto INT(5),\n    IN pVidQuoteLista INT(1),\n    IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\n-- SET\n-- @pVidQuoteID = 50,\n-- @pVidQuoteItem = 3,\n-- @pVidQuoteProdCantidad = 1,\n-- @pVidQuoteAncho = 1000,\n-- @pVidQuoteAlto = 1000,\n-- @pVidQuoteLista = 1,\n-- @pCoeficienteAC = 1.0;\n-- CALL DebugCheckPoint(\n--     CONCAT(\n--     \"PROC:ActualizaItemPresupuesto\",\"/VAR/\",\n--     CAST(pVidQuoteID AS CHAR),\"-\",\n--     CAST(pVidQuoteLista AS CHAR),\"-\",\n--     CAST(pVidQuoteItem AS CHAR),\"-\",\n--     CAST(pVidQuoteProdCantidad AS CHAR),\"-\",\n--     CAST(pVidQuoteAncho AS CHAR),\"-\",\n--     CAST(pVidQuoteAlto AS CHAR),\"-\",\n--     CAST(pCoeficienteAC AS CHAR)\n--     ));\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        pVidQuoteAncho, \n                        pVidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        pVidQuoteAncho, \n                        pVidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * pVidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteItem = pVidQuoteItem AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            pVidQuoteAncho, \n            pVidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            pVidQuoteAncho, \n            pVidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * pVidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n        V1.VidQuoteItem = pVidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\nEND\n</pre></small>\n== Bitácora ==\n*20120921\n**Alta ante rediseño de [[FORM:Presupuesto]]\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[TRIG:Actualiza_Item_Presupuesto]]','utf-8'),(640,'== Descripción ==\nActualiza los precios unitario y subtotal en la [[TABLA:vidquoten3]] de un Producto determinado para todos sus componentes.\n\n== Composición ==\n*[[TABLA:composicion]]\n*[[TABLA:vidquoten3]]\n*[[TABLA:precios]]\n*[[TABLA:productos]]\n== Código ==\n<small><pre>\n-- --------------------------------------------------------------------------------\n-- Routine DDL\n-- Note: comments before and after the routine body will not be stored by the server\n-- --------------------------------------------------------------------------------\nDELIMITER $$\n\nCREATE DEFINER=`sas_admin`@`%` PROCEDURE `ActualizaItemPresupuesto`(\n    IN pVidQuoteID INT(5),\n    IN pVidQuoteItem INT(5),\n    IN pVidQuoteProdCantidad INT(5),\n    IN pVidQuoteAncho INT(5),\n    IN pVidQuoteAlto INT(5),\n    IN pVidQuoteLista INT(1),\n    IN pCoeficienteAC DECIMAL(10,5))\nBEGIN\n-- ----------------------------------------------------\n-- Update from tables with ProductoID=ElementoID\n-- ----------------------------------------------------\n-- SET\n-- @pVidQuoteID = 50,\n-- @pVidQuoteItem = 3,\n-- @pVidQuoteProdCantidad = 1,\n-- @pVidQuoteAncho = 1000,\n-- @pVidQuoteAlto = 1000,\n-- @pVidQuoteLista = 1,\n-- @pCoeficienteAC = 1.0;\n-- CALL DebugCheckPoint(\n--     CONCAT(\n--     \"PROC:ActualizaItemPresupuesto\",\"/VAR/\",\n--     CAST(pVidQuoteID AS CHAR),\"-\",\n--     CAST(pVidQuoteLista AS CHAR),\"-\",\n--     CAST(pVidQuoteItem AS CHAR),\"-\",\n--     CAST(pVidQuoteProdCantidad AS CHAR),\"-\",\n--     CAST(pVidQuoteAncho AS CHAR),\"-\",\n--     CAST(pVidQuoteAlto AS CHAR),\"-\",\n--     CAST(pCoeficienteAC AS CHAR)\n--     ));\nUPDATE\n    composicion AS T2,\n    vidquoten3 AS T1,\n    precios AS T3,\n    productos AS T4\nSET \n    T1.VidQuotePrecio = CalculoPrecio(\n                        pVidQuoteAncho, \n                        pVidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC,\n    T1.VidQuotePrecioP= CalculoPrecio(\n                        pVidQuoteAncho, \n                        pVidQuoteAlto,\n                        (CASE (pVidQuoteLista)\n                          WHEN 0 THEN T3.PrecioProd00\n                          WHEN 1 THEN T3.PrecioProd01\n                          WHEN 2 THEN T3.PrecioProd02\n                          WHEN 3 THEN T3.PrecioProd03\n                        END),\n                        T4.Magnitud,\n                        T2.OffsetVanoAlto,\n                        T2.OffsetVanoAncho,\n                        T2.CoefVanoAlto,\n                        T2.CoefVanoAncho,\n                        T2.ValorElemento) * pCoeficienteAC * pVidQuoteProdCantidad \nWHERE\n    T1.VidQuoteID = pVidQuoteID AND\n    T1.VidQuoteItem = pVidQuoteItem AND\n    T2.ProductoID = T1.VidQuoteProdID AND \n    T2.ElementoID = T1.VidQuoteElementoID AND \n    T2.ComposicID = T1.VidQuoteComposicID AND \n    T4.ProductoID = T3.ProductoID AND \n    T3.ProductoID = T2.ElementoID AND \n    T1.VidQuoteProdID = T1.VidQuoteElementoID;\n-- ----------------------------------------------------\n-- Update from tables with ProductoID<>ElementoID\n-- ----------------------------------------------------\nUPDATE\n    vidquoten3 AS W1,\n    (SELECT \n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteProdID,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID,\n        SUM(CalculoPrecio(\n            pVidQuoteAncho, \n            pVidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC AS VidQuotePrecio,\n        SUM(CalculoPrecio(\n            pVidQuoteAncho, \n            pVidQuoteAlto,\n            (CASE (pVidQuoteLista)\n              WHEN 0 THEN V4.PrecioProd00\n              WHEN 1 THEN V4.PrecioProd01\n              WHEN 2 THEN V4.PrecioProd02\n              WHEN 3 THEN V4.PrecioProd03\n            END),\n            V5.Magnitud,\n            V2.OffsetVanoAlto + V3.OffsetVanoAlto,\n            V2.OffsetVanoAncho + V3.OffsetVanoAncho,\n            V2.CoefVanoAlto * V3.CoefVanoAlto,\n            V2.CoefVanoAncho * V3.CoefVanoAncho,\n            V2.ValorElemento * V3.ValorElemento)) * pCoeficienteAC * pVidQuoteProdCantidad AS VidQuotePrecioP\n    FROM\n        fzggestion.composicion AS V3,\n        fzggestion.composicion AS V2,\n        fzggestion.vidquoten3 AS V1,\n        fzggestion.precios AS V4,\n        fzggestion.productos AS V5\n    WHERE\n        V1.VidQuoteID = pVidQuoteID AND\n        V1.VidQuoteItem = pVidQuoteItem AND\n        V3.ProductoID = V2.ElementoID AND \n        V2.ProductoID = V1.VidQuoteProdID AND \n        V2.ElementoID = V1.VidQuoteElementoID AND \n        V2.ComposicID = V1.VidQuoteComposicID AND \n        V4.ProductoID = V3.ElementoID AND \n        V5.ProductoID = V4.ProductoID AND \n        V1.VidQuoteProdID <> V1.VidQuoteElementoID AND \n        V3.ElementoPM = 0\n    GROUP BY\n        V1.VidQuoteID,\n        V1.VidQuoteItem,\n        V1.VidQuoteElementoID,\n        V1.VidQuoteComposicID) AS W2\nSET\n    W1.VidQuotePrecio = W2.VidQuotePrecio,\n    W1.VidQuotePrecioP = W2.VidQuotePrecioP\nWHERE\n    -- ----------------------------------------------------------\n    -- Join between result of calculating prices and vidquoten3\n    -- ----------------------------------------------------------\n    W2.VidQuoteID = W1.VidQuoteID AND \n    W2.VidQuoteItem = W1.VidQuoteItem AND \n    W2.VidQuoteProdID = W1.VidQuoteProdID AND \n    W2.VidQuoteElementoID = W1.VidQuoteElementoID AND \n    W2.VidQuoteComposicID = W1.VidQuoteComposicID AND\n    -- ----------------------------------------------------------\n    -- Select what Qoute will be affected\n    -- ----------------------------------------------------------\n    W1.VidQuoteID = pVidQuoteID AND\n    -- ----------------------------------------------------------\n    -- Select records not PPD\n    -- ----------------------------------------------------------\n    W1.VidQuoteProdID <> W1.VidQuoteElementoID;\nEND\n</pre></small>\n== Bitácora ==\n*20120921\n**Alta ante rediseño de [[FORM:Presupuesto]]\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[TRIG:Actualiza_Item_Presupuesto]]','utf-8'),