(760,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121024====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(761,'== Descripción ==\nDefinicion de Tabla de acceso Magnitudes con las formulas para la versión 2\n== Composición ==\n== Estructura ==\n<pre>\nCREATE TABLE `magnitudes` (\n  `MagnitudID` char(2) NOT NULL,\n  `MagnitudDSC` varchar(45) DEFAULT NULL,\n  `MagnitudCLC` varchar(300) DEFAULT NULL,\n  PRIMARY KEY (`MagnitudID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n*20121018\n**Alta de Tabla\n== Uso ==\n== URL ==','utf-8'),(762,'== Descripción ==\nDefinicion de Tabla de acceso Magnitudes con las formulas para la versión 2\n== Composición ==\n== Estructura ==\n<pre>\nCREATE TABLE `magnitudes` (\n  `MagnitudID` char(2) NOT NULL,\n  `MagnitudDSC` varchar(45) DEFAULT NULL,\n  `MagnitudCLC` varchar(300) DEFAULT NULL,\n  PRIMARY KEY (`MagnitudID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n*20121018\n**Alta de Tabla\n*20121022\n**Insert Datos\n<pre>\nINSERT INTO `magnitudes` VALUES (\'AL\',\'Alto\',NULL),(\'AN\',\'Ancho\',NULL),(\'KG\',\'Kilogramo\',NULL),(\'M2\',\'Metro Cuadrado\',NULL),(\'MG\',\'Magnitud Galarza\',NULL),(\'ML\',\'Metro Lineal\',NULL),(\'PR\',\'Perimetro\',NULL),(\'UN\',\'Unidad\',\'y…™Ä®�HRø×�óÆ�G|¬^Ôñ}�L��\\\'ª3ý0”æË…¨9�Â…r£�©z¤?yª3®Fßª:ðÍ�\');\n</pre>\n\n== Uso ==\n== URL ==','utf-8'),(763,'== Descripción ==\nDefinicion de Tabla de acceso Magnitudes con las formulas para la versión 2\n== Composición ==\n== Estructura ==\n<pre>\nCREATE TABLE `magnitudes` (\n  `MagnitudID` char(2) NOT NULL,\n  `MagnitudDSC` varchar(45) DEFAULT NULL,\n  `MagnitudCLC` varchar(300) DEFAULT NULL,\n  PRIMARY KEY (`MagnitudID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n*20121018\n**Alta de Tabla\n*20121022\n**Insert Datos\n<pre>\nINSERT INTO `magnitudes` \nVALUES\n(\'AL\',\'Alto\',NULL),\n(\'AN\',\'Ancho\',NULL),\n(\'KG\',\'Kilogramo\',NULL),\n(\'M2\',\'Metro Cuadrado\',NULL),\n(\'MG\',\'Magnitud Galarza\',NULL),\n(\'ML\',\'Metro Lineal\',NULL),\n(\'PR\',\'Perimetro\',NULL),\n(\'UN\',\'Unidad\',\'y…™Ä®�HRø×�óÆ�G|¬^Ôñ}�L��\\\'ª3ý0”æË…¨9�Â…r£�©z¤?yª3®Fßª:ðÍ�\');\n</pre>\n\n== Uso ==\n== URL ==','utf-8'),(764,'=== 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:magnitudes]]\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*[[RPRT:Presupuestos]]\n*[[RPRT:PresupuestosDirecto]]\n*[[RPRT:IndividualCRM]]\n\n=== Procedimientos ===\n*[[PROC:ActualizaItemPresupuesto]]\n*[[PROC:ActualizaPreciosPresupuesto]]\n*[[PROC:ActualizaPreciosTabular]]\n*[[PROC:AgregaProductoCompo]]\n*[[PROC:AltaItemPresupuesto]]\n*[[PROC:AltaItemPresupuestoTmp]]\n*[[PROC:CalculaPrecioBase]]\n*[[PROC:CalculoMedidaReal]]\n*[[PROC:CalculoPrecio]]\n*[[PROC:CopiaPresupuesto]]\n*[[PROC:DuplicaProductoCompo]]\n*[[PROC:GrabaItemPresupuestoTmp]]\n*[[PROC:ResetEdicionItemTmp]]\n\n=== Subrutinas ===\n*[[MACRO:PresupuestoExpirado]]\n*[[MACRO:SugerenciaContactoID]]','utf-8'),(765,'== Developing ==\n*[[Developing]]\n*[[SpanexDraw]]\n\n== Gestión Retail Aberturas ==\n*[[GRA: Pendientes]]\n*[[GRA: Relaciones]]\n*[[GRA: Releases]]\n*[[GRA: PreciosABT]]\n\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\n<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Reportes ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| Presupuesto\n| <pre>\nSELECT \n    visreppres.VidQuoteID,\n    visreppres.VidQuoteObra,\n    visreppres.VidQuoteCliente,\n    visreppres.VidQuoteFecha,\n    visreppres.VidQuoteItem,\n    visreppres.VidQuoteProdCantidad,\n    visreppres.VidQuoteProdID,\n    visreppres.VidQuoteDetalle,\n    visreppres.VidQuotePrecioS,\n    clientes.RazonSocial,\n    clientes.Direccion,\n    clientes.Localidad,\n    clientes.Provincia\nFROM\n    fzggestion.clientes AS clientes,\n    fzggestion.visreppres AS visreppres\nWHERE\n    clientes.ClienteID = visreppres.VidQuoteCliente\nORDER BY \n    visreppres.VidQuoteID ASC ,\n    visreppres.VidQuoteObra ASC ,\n    visreppres.VidQuoteCliente ASC ,\n    visreppres.VidQuoteItem ASC \n</pre>\n| Reporte de Presupuesto Individual\n| Filtra por Presupuesto. Visreppres\n|-\n| Productos\n| <pre>SELECT \n    productos.ProductoID,\n    productos.CategoriaID,\n    productos.Descripcion,\n    productos.Magnitud,\n    productos.InsumoIMG\nFROM\n    fzggestion.productos productos\nORDER BY \n    productos.CategoriaID,\n    productos.ProductoID</pre>\n| Reporte de Productos\n|-\n| Listado de Precios Vigentes\n| [[VISTA: visrepprec]]\n| Reporte de Precios Vigentes\n| \n|}\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wskey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) AS DecMAC,\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)) AS DecUsuarios,\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)) AS DecFechaLimite\nFROM\n	wscontrol\n</pre></small>\n\'\'\'Alargar ACL 1 mes más\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\n                  \'%Y%m%d\')+INTERVAL 1 MONTH,\'%Y%m%d\'),\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n\n{{tecla|Ctrl|A}}\n=== Instalacion .odb ===\n*Copiar el documento .odb\n*Cambiar el usuario de la base de datos\n*Cambiar la constante [[oCheckEstadoLicencia]] a True\n*Grabar documento .odb\n*Cambiar a nivel de Sistema Operativo a ReadOnly\n\n=== Documentación de Usuario ===\n[[WikiUserSpanex]]','utf-8'),(766,'*[[TABLA:projects]]\n*[[TABLA:secciones]]','utf-8'),(767,'== Descripción ==\n== Composición ==\n== Estructura ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `project` (\n  `ProjectID` int(11) NOT NULL AUTO_INCREMENT,\n  `ProjectDSC` varchar(20) DEFAULT NULL,\n  `ProjectSite` varchar(45) DEFAULT NULL,\n  `ProjectDate` date DEFAULT NULL,\n  PRIMARY KEY (`ProjectID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n== Uso ==\n== URL ==','utf-8'),(768,'== Descripción ==\n== Composición ==\n== Estructura ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `secciones` (\n  `SeccionID` int(11) NOT NULL,\n  `SeccionW` int(11) DEFAULT NULL,\n  `SeccionH` int(11) DEFAULT NULL,\n  PRIMARY KEY (`SeccionID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n< pre>\n< /pre>\n== Bitácora ==\n== Uso ==\n== URL ==','utf-8'),(769,'*[[TABLA:projects]]\n*[[TABLA:secciones]]\n*[[TABLA:frames]]','utf-8'),(770,'== Descripción ==\n== Composición ==\n== Estructura ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `frames` (\n  `FramePRJ` int(11) NOT NULL,\n  `FrameSEC` int(11) NOT NULL,\n  `FrameID` int(11) NOT NULL AUTO_INCREMENT,\n  `FrameDSC` varchar(45) DEFAULT NULL,\n  `FrameW` int(11) NOT NULL,\n  `FrameH` int(11) NOT NULL,\n  `FrameProdID` char(8) NOT NULL,\n  PRIMARY KEY (`FrameID`,`FramePRJ`,`FrameSEC`,`FrameProdID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n<pre>\n</pre>\n== Bitácora ==\n*20121025\n**Alta de Tabla\n== Uso ==\n== URL ==','utf-8'),(771,'== Descripción ==\nDefine los límites y contenidos de un frame dentro de una sección y dentro de un proyecto.\n\n== Composición ==\n== Estructura ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `frames` (\n  `FramePRJ` int(11) NOT NULL,\n  `FrameSEC` int(11) NOT NULL,\n  `FrameID` int(11) NOT NULL AUTO_INCREMENT,\n  `FrameDSC` varchar(45) DEFAULT NULL,\n  `FrameW` int(11) NOT NULL,\n  `FrameH` int(11) NOT NULL,\n  `FrameProdID` char(8) NOT NULL,\n  PRIMARY KEY (`FrameID`,`FramePRJ`,`FrameSEC`,`FrameProdID`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1$$\n</pre>\n== SQL ==\n<pre>\n</pre>\n== Bitácora ==\n*20121025\n**Alta de Tabla\n== Uso ==\n== URL ==','utf-8'),(772,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(773,'===201201005===\n====Actualización de [[PROC:AltaItemPresupuestoTmp]]====\n===20120831===\n====Agregar Nombre de Usuario [[TABLA:precios]] [[File:checked.png|20px]]====\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*20120926.1915 [[File:checked.png|20px]]\n\n====Modificación de Triggers [[TABLA:precios]] [[File:checked.png|20px]]====\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*20120926.1924 [[File:checked.png|20px]]\n\n====Modificacion de Estructura [[TABLA:contactos]] [[File:checked.png|20px]]====\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>\n*20120926.1927 [[File:checked.png|20px]]\nVerificar los casos que no coincidan con los prefijos establecidos: 0->Cliente, 3->Proveedor, 5->Otros, 8->Agentes Comerciales\n*20120926.1928 No se verificó [[File:warning-icon-hi.png|20px]]\n\n====Agrega Atributo [[TABLA:contactos]] [[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`contactos` ADD COLUMN `ImgContacto` BLOB NULL  AFTER `VigenciaDocs` ;\n</pre>\n*20120926.1939 [[File:checked.png|20px]]\n====Cambio de Condición para [[VISTA:clientes]] [[File:checked.png|20px]]====\n*20120926.1942 [[File:checked.png|20px]]\n\n====Alta de Tabla [[TABLA:telemecomp]] [[File:checked.png|20px]]====\n*20120926.1957\n** Alta generada [[File:checked.png|20px]]\n** Falta ingresar los datos [[File:warning-icon-hi.png|20px]]\n\n====Actualizar Routine [[PROC:DuplicaProductoCompo]] en DB [[File:checked.png|20px]]====\n*20120926.2007 [[File:checked.png|20px]]\n\n====Agregar atributo ComposicID a [[TABLA:vidquoten3]] [[File:checked.png|20px]]====\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*20120927.2014 [[File:checked.png|20px]]\n\n====Agregar atributo ComposicID a [[TABLA:vidquoten3tmp]] [[File:checked.png|20px]]====\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*20120926.2015 [[File:checked.png|20px]]\n\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3tmp]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n*[[20121004.1617]][[File:checked.png|20px]]\n\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n*20121004.1621 [[File:checked.png|20px]]\n\n====Reemplazar el código de [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]] y [[PROC:AltaItemPresupuestoTmp]][[File:checked.png|20px]]====\nIncluye las modificaciones de inclusión de ElementoPM\n*20121004.1625 [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]\n*20121004.1630 [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]\n\n====Crea [[PROC:ResetEdicionItemTmp]][[File:checked.png|20px]]====\n*20121004.1655 [[File:checked.png|20px]]\n\n====Cambiar [[VISTA:acomerciales]][[File:checked.png|20px]]====\nRefleja el cambio de la estructura de la [[TABLA:contactos]]\n*20121004.1657 [[File:checked.png|20px]]\n\n====Agregar en [[TABLA:contactos]][[File:checked.png|20px]]====\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*20121004.1659 [[File:checked.png|20px]]\n====Alta del [[TRIG:Actualiza_Item_Presupuesto]][[File:checked.png|20px]]====\n*20121004.1718 [[File:checked.png|20px]]\n====Renovación del [[PROC:ActualizaPreciosPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Renovación del [[PROC:ActualizaItemPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Renovación del [[PROC:CopiaPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Cambios estructura del [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]====\n*20121004.1625 [[File:checked.png|20px]]\n====Cambios estructura del [[TABLA:composicion]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`composicion` ADD COLUMN `ComposicID` INT NOT NULL AUTO_INCREMENT  AFTER `ElementoID` \n, DROP PRIMARY KEY \n, ADD PRIMARY KEY (`ProductoID`, `ElementoID`, `ComposicID`) ;\n</pre>\n*20121004.1857 [[File:checked.png|20px]]\n====Alta del [[PROC:AltaItemPresupuesto]][[File:checked.png|20px]]====\n*20121004.1937 [[File:checked.png|20px]]\n===20120702===\n====Agregado de atributo de Medicion en Obra [[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \n	ADD COLUMN `VidQuoteMedCheck` CHAR(1) NULL DEFAULT 0 AFTER `VidQuoteACom`;\n</pre>\n*20120926.1616 [[File:checked.png|20px]]\n====Actualización de dato de Vigencia de Documentos [[File:checked.png|20px]]====\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*20120926.1634 [[File:checked.png|20px]]\n====Actualización de datos para el control de Cobranzas [[File:checked.png|20px]]====\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*20120926.1651 [[File:checked.png|20px]]\n\n====Crear [[VISTA:vistranscrm]] [[File:checked.png|20px]]====\n*2012092616.55 [[File:checked.png|20px]]\n\n====Crear [[TABLA:clientescrmqry]] [[File:checked.png|20px]] ====\n*20120926 [[File:checked.png|20px]]\n\n====Crear [[VISTA:chqactivos]] [[File:checked.png|20px]]====\n*20120926.1758 [[File:checked.png|20px]]\n\n====Crear [[TABLA:accpayab]] [[File:checked.png|20px]]====\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*20120926.1804 [[File:checked.png|20px]]\n\n====Modifica [[TABLA:fPago]] [[File:checked.png|20px]]====\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*20120926.1808 [[File:checked.png|20px]]\n\n====Rediseña [[TABLA:tdocumento]]====\n\n====Crea [[VISTA:vischtdisp]] [[File:checked.png|20px]]====\n*20120926.1835 [[File:checked.png|20px]]\n\n====Crea [[VISTA:vistotprod]] [[File:checked.png|20px]]====\n*20120926.1836 [[File:checked.png|20px]]\n\n====Crea [[TABLA:vidquoten3tmp]] [[File:checked.png|20px]]====\n*20120926.1902 [[File:checked.png|20px]]\n\n====Reemplazar todos los ElementoPM en Componentes por los nuevos valores [[File:checked.png|20px]]====\n<pre>\nUPDATE fzggestion.composicion SET ElementoPM=2 WHERE ElementoPM=0;\nUPDATE fzggestion.composicion SET ElementoPM=0 WHERE ElementoPM=1;\n</pre>\n*20120926.1908 [[File:checked.png|20px]]','utf-8'),(774,'===20121005===\n====Actualización de [[PROC:AltaItemPresupuestoTmp]]====\n\n===20120831===\n====Agregar Nombre de Usuario [[TABLA:precios]] [[File:checked.png|20px]]====\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*20120926.1915 [[File:checked.png|20px]]\n\n====Modificación de Triggers [[TABLA:precios]] [[File:checked.png|20px]]====\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*20120926.1924 [[File:checked.png|20px]]\n\n====Modificacion de Estructura [[TABLA:contactos]] [[File:checked.png|20px]]====\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>\n*20120926.1927 [[File:checked.png|20px]]\nVerificar los casos que no coincidan con los prefijos establecidos: 0->Cliente, 3->Proveedor, 5->Otros, 8->Agentes Comerciales\n*20120926.1928 No se verificó [[File:warning-icon-hi.png|20px]]\n\n====Agrega Atributo [[TABLA:contactos]] [[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`contactos` ADD COLUMN `ImgContacto` BLOB NULL  AFTER `VigenciaDocs` ;\n</pre>\n*20120926.1939 [[File:checked.png|20px]]\n====Cambio de Condición para [[VISTA:clientes]] [[File:checked.png|20px]]====\n*20120926.1942 [[File:checked.png|20px]]\n\n====Alta de Tabla [[TABLA:telemecomp]] [[File:checked.png|20px]]====\n*20120926.1957\n** Alta generada [[File:checked.png|20px]]\n** Falta ingresar los datos [[File:warning-icon-hi.png|20px]]\n\n====Actualizar Routine [[PROC:DuplicaProductoCompo]] en DB [[File:checked.png|20px]]====\n*20120926.2007 [[File:checked.png|20px]]\n\n====Agregar atributo ComposicID a [[TABLA:vidquoten3]] [[File:checked.png|20px]]====\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*20120927.2014 [[File:checked.png|20px]]\n\n====Agregar atributo ComposicID a [[TABLA:vidquoten3tmp]] [[File:checked.png|20px]]====\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*20120926.2015 [[File:checked.png|20px]]\n\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3tmp]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n*[[20121004.1617]][[File:checked.png|20px]]\n\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n*20121004.1621 [[File:checked.png|20px]]\n\n====Reemplazar el código de [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]] y [[PROC:AltaItemPresupuestoTmp]][[File:checked.png|20px]]====\nIncluye las modificaciones de inclusión de ElementoPM\n*20121004.1625 [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]\n*20121004.1630 [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]\n\n====Crea [[PROC:ResetEdicionItemTmp]][[File:checked.png|20px]]====\n*20121004.1655 [[File:checked.png|20px]]\n\n====Cambiar [[VISTA:acomerciales]][[File:checked.png|20px]]====\nRefleja el cambio de la estructura de la [[TABLA:contactos]]\n*20121004.1657 [[File:checked.png|20px]]\n\n====Agregar en [[TABLA:contactos]][[File:checked.png|20px]]====\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*20121004.1659 [[File:checked.png|20px]]\n====Alta del [[TRIG:Actualiza_Item_Presupuesto]][[File:checked.png|20px]]====\n*20121004.1718 [[File:checked.png|20px]]\n====Renovación del [[PROC:ActualizaPreciosPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Renovación del [[PROC:ActualizaItemPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Renovación del [[PROC:CopiaPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Cambios estructura del [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]====\n*20121004.1625 [[File:checked.png|20px]]\n====Cambios estructura del [[TABLA:composicion]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`composicion` ADD COLUMN `ComposicID` INT NOT NULL AUTO_INCREMENT  AFTER `ElementoID` \n, DROP PRIMARY KEY \n, ADD PRIMARY KEY (`ProductoID`, `ElementoID`, `ComposicID`) ;\n</pre>\n*20121004.1857 [[File:checked.png|20px]]\n====Alta del [[PROC:AltaItemPresupuesto]][[File:checked.png|20px]]====\n*20121004.1937 [[File:checked.png|20px]]\n===20120702===\n====Agregado de atributo de Medicion en Obra [[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \n	ADD COLUMN `VidQuoteMedCheck` CHAR(1) NULL DEFAULT 0 AFTER `VidQuoteACom`;\n</pre>\n*20120926.1616 [[File:checked.png|20px]]\n====Actualización de dato de Vigencia de Documentos [[File:checked.png|20px]]====\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*20120926.1634 [[File:checked.png|20px]]\n====Actualización de datos para el control de Cobranzas [[File:checked.png|20px]]====\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*20120926.1651 [[File:checked.png|20px]]\n\n====Crear [[VISTA:vistranscrm]] [[File:checked.png|20px]]====\n*2012092616.55 [[File:checked.png|20px]]\n\n====Crear [[TABLA:clientescrmqry]] [[File:checked.png|20px]] ====\n*20120926 [[File:checked.png|20px]]\n\n====Crear [[VISTA:chqactivos]] [[File:checked.png|20px]]====\n*20120926.1758 [[File:checked.png|20px]]\n\n====Crear [[TABLA:accpayab]] [[File:checked.png|20px]]====\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*20120926.1804 [[File:checked.png|20px]]\n\n====Modifica [[TABLA:fPago]] [[File:checked.png|20px]]====\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*20120926.1808 [[File:checked.png|20px]]\n\n====Rediseña [[TABLA:tdocumento]]====\n\n====Crea [[VISTA:vischtdisp]] [[File:checked.png|20px]]====\n*20120926.1835 [[File:checked.png|20px]]\n\n====Crea [[VISTA:vistotprod]] [[File:checked.png|20px]]====\n*20120926.1836 [[File:checked.png|20px]]\n\n====Crea [[TABLA:vidquoten3tmp]] [[File:checked.png|20px]]====\n*20120926.1902 [[File:checked.png|20px]]\n\n====Reemplazar todos los ElementoPM en Componentes por los nuevos valores [[File:checked.png|20px]]====\n<pre>\nUPDATE fzggestion.composicion SET ElementoPM=2 WHERE ElementoPM=0;\nUPDATE fzggestion.composicion SET ElementoPM=0 WHERE ElementoPM=1;\n</pre>\n*20120926.1908 [[File:checked.png|20px]]','utf-8'),(775,'===20121029===\n====Actualización de [[TABLA:vidquoten1]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \nCHANGE COLUMN `VidQuoteCliente` `VidQuoteCliente` CHAR(8) NOT NULL  ,\nCHANGE COLUMN `VidQuoteACom` `VidQuoteACom` CHAR(4) NOT NULL  ;\n</pre>\n===20121005===\n====Actualización de [[PROC:AltaItemPresupuestoTmp]]====\n\n===20120831===\n====Agregar Nombre de Usuario [[TABLA:precios]] [[File:checked.png|20px]]====\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*20120926.1915 [[File:checked.png|20px]]\n\n====Modificación de Triggers [[TABLA:precios]] [[File:checked.png|20px]]====\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*20120926.1924 [[File:checked.png|20px]]\n\n====Modificacion de Estructura [[TABLA:contactos]] [[File:checked.png|20px]]====\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>\n*20120926.1927 [[File:checked.png|20px]]\nVerificar los casos que no coincidan con los prefijos establecidos: 0->Cliente, 3->Proveedor, 5->Otros, 8->Agentes Comerciales\n*20120926.1928 No se verificó [[File:warning-icon-hi.png|20px]]\n\n====Agrega Atributo [[TABLA:contactos]] [[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`contactos` ADD COLUMN `ImgContacto` BLOB NULL  AFTER `VigenciaDocs` ;\n</pre>\n*20120926.1939 [[File:checked.png|20px]]\n====Cambio de Condición para [[VISTA:clientes]] [[File:checked.png|20px]]====\n*20120926.1942 [[File:checked.png|20px]]\n\n====Alta de Tabla [[TABLA:telemecomp]] [[File:checked.png|20px]]====\n*20120926.1957\n** Alta generada [[File:checked.png|20px]]\n** Falta ingresar los datos [[File:warning-icon-hi.png|20px]]\n\n====Actualizar Routine [[PROC:DuplicaProductoCompo]] en DB [[File:checked.png|20px]]====\n*20120926.2007 [[File:checked.png|20px]]\n\n====Agregar atributo ComposicID a [[TABLA:vidquoten3]] [[File:checked.png|20px]]====\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*20120927.2014 [[File:checked.png|20px]]\n\n====Agregar atributo ComposicID a [[TABLA:vidquoten3tmp]] [[File:checked.png|20px]]====\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*20120926.2015 [[File:checked.png|20px]]\n\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3tmp]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3tmp` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n*[[20121004.1617]][[File:checked.png|20px]]\n\n====Agregar atributo ElementoPM a [[TABLA:vidquoten3]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten3` ADD COLUMN `VidQuoteElementoPM` INT(1) NULL  AFTER `VidQuoteComposicID` ;\n</pre>\n*20121004.1621 [[File:checked.png|20px]]\n\n====Reemplazar el código de [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]] y [[PROC:AltaItemPresupuestoTmp]][[File:checked.png|20px]]====\nIncluye las modificaciones de inclusión de ElementoPM\n*20121004.1625 [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]\n*20121004.1630 [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]\n\n====Crea [[PROC:ResetEdicionItemTmp]][[File:checked.png|20px]]====\n*20121004.1655 [[File:checked.png|20px]]\n\n====Cambiar [[VISTA:acomerciales]][[File:checked.png|20px]]====\nRefleja el cambio de la estructura de la [[TABLA:contactos]]\n*20121004.1657 [[File:checked.png|20px]]\n\n====Agregar en [[TABLA:contactos]][[File:checked.png|20px]]====\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*20121004.1659 [[File:checked.png|20px]]\n====Alta del [[TRIG:Actualiza_Item_Presupuesto]][[File:checked.png|20px]]====\n*20121004.1718 [[File:checked.png|20px]]\n====Renovación del [[PROC:ActualizaPreciosPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Renovación del [[PROC:ActualizaItemPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Renovación del [[PROC:CopiaPresupuesto]][[File:checked.png|20px]]====\n*20121004.1727 [[File:checked.png|20px]]\n====Cambios estructura del [[PROC:GrabaItemPresupuestoTmp]][[File:checked.png|20px]]====\n*20121004.1625 [[File:checked.png|20px]]\n====Cambios estructura del [[TABLA:composicion]][[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`composicion` ADD COLUMN `ComposicID` INT NOT NULL AUTO_INCREMENT  AFTER `ElementoID` \n, DROP PRIMARY KEY \n, ADD PRIMARY KEY (`ProductoID`, `ElementoID`, `ComposicID`) ;\n</pre>\n*20121004.1857 [[File:checked.png|20px]]\n====Alta del [[PROC:AltaItemPresupuesto]][[File:checked.png|20px]]====\n*20121004.1937 [[File:checked.png|20px]]\n===20120702===\n====Agregado de atributo de Medicion en Obra [[File:checked.png|20px]]====\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \n	ADD COLUMN `VidQuoteMedCheck` CHAR(1) NULL DEFAULT 0 AFTER `VidQuoteACom`;\n</pre>\n*20120926.1616 [[File:checked.png|20px]]\n====Actualización de dato de Vigencia de Documentos [[File:checked.png|20px]]====\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*20120926.1634 [[File:checked.png|20px]]\n====Actualización de datos para el control de Cobranzas [[File:checked.png|20px]]====\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*20120926.1651 [[File:checked.png|20px]]\n\n====Crear [[VISTA:vistranscrm]] [[File:checked.png|20px]]====\n*2012092616.55 [[File:checked.png|20px]]\n\n====Crear [[TABLA:clientescrmqry]] [[File:checked.png|20px]] ====\n*20120926 [[File:checked.png|20px]]\n\n====Crear [[VISTA:chqactivos]] [[File:checked.png|20px]]====\n*20120926.1758 [[File:checked.png|20px]]\n\n====Crear [[TABLA:accpayab]] [[File:checked.png|20px]]====\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*20120926.1804 [[File:checked.png|20px]]\n\n====Modifica [[TABLA:fPago]] [[File:checked.png|20px]]====\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*20120926.1808 [[File:checked.png|20px]]\n\n====Rediseña [[TABLA:tdocumento]]====\n\n====Crea [[VISTA:vischtdisp]] [[File:checked.png|20px]]====\n*20120926.1835 [[File:checked.png|20px]]\n\n====Crea [[VISTA:vistotprod]] [[File:checked.png|20px]]====\n*20120926.1836 [[File:checked.png|20px]]\n\n====Crea [[TABLA:vidquoten3tmp]] [[File:checked.png|20px]]====\n*20120926.1902 [[File:checked.png|20px]]\n\n====Reemplazar todos los ElementoPM en Componentes por los nuevos valores [[File:checked.png|20px]]====\n<pre>\nUPDATE fzggestion.composicion SET ElementoPM=2 WHERE ElementoPM=0;\nUPDATE fzggestion.composicion SET ElementoPM=0 WHERE ElementoPM=1;\n</pre>\n*20120926.1908 [[File:checked.png|20px]]','utf-8'),(776,'== Descripción ==\nEsquema de Cabecera de Registración de Presupuesto\n== Composición ==\n== Estructura ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `vidquoten1` (\n  `VidQuoteID` int(11) NOT NULL AUTO_INCREMENT,\n  `VidQuoteObra` char(20) DEFAULT NULL,\n  `VidQuoteCliente` char(8) NOT NULL,\n  `VidQuoteFecha` date DEFAULT NULL,\n  `VidQuoteFechaEst` date DEFAULT NULL,\n  `VidQuoteEstado` char(1) DEFAULT \'0\',\n  `VidQuoteACom` char(4) NOT NULL,\n  `VidQuoteMedCheck` char(1) DEFAULT \'0\',\n  PRIMARY KEY (`VidQuoteID`)\n) ENGINE=MyISAM AUTO_INCREMENT=72 DEFAULT CHARSET=latin1$$\n\nCREATE\nDEFINER=`sas_admin`@`%`\nTRIGGER `fzggestion`.`Baja_Presupuesto`\nAFTER DELETE ON `fzggestion`.`vidquoten1`\nFOR EACH ROW\nBEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END\n$$\n</pre>\n== SQL ==\n<pre>\n</pre>\n== Bitácora ==\n*20121026\n**Alta de esta documentación\n**Modificación de la estructura. Agregado de control de NOTNULL para los atributos de Cliente y Agente Comercial\n<pre>\nALTER TABLE `fzggestion`.`vidquoten1` \nCHANGE COLUMN `VidQuoteCliente` `VidQuoteCliente` CHAR(8) NOT NULL  ,\nCHANGE COLUMN `VidQuoteACom` `VidQuoteACom` CHAR(4) NOT NULL  ;\n</pre>\n== Uso ==\n*[[FORM:Presupuesto]]\n*[[RPRT:Presupuesto]]\n== URL ==','utf-8'),(777,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial\n* [[FORM:Presupuesto]]. Corrección. Se agregan los controles de límites para los atributos de Ancho y Alto dentro de [[FORM:Presupuestos.Productos]]. El esquema funciona haciendo un llamado al [[MACRO:CheckValidMeasure]] ante los eventos de ItemChange de ambas columnas. Se modifica también el esquema de [[MACRO:EventoBRCDetallePresupuesto]] transfiriendo la ejecución del alta de registraciones en [[TABLA:vidquoten3]] a traves de [[MACRO:AltaProductoPresupuesto]] que se ejecuta luego de la acción de alta, captada inicialmente por [[MACRO:EventoBRADetallePresupuesto]], donde efectua el chequeo [[MACRO:CheckValidMeasure]] y luego de validada traslada el control a [[MACRO:EventoARADetallePresupuesto]], donde efectua el agregado de registros. Mientras, esa función se desafecta de [[MACRO:EventoBRCDetallePresupuesto]]. Esto permite que el control de refresco de Subtotal lo haga aún si presiona el ícono de grabar sin pasar sin efectuar el commit luego de presionar el último [Enter] del registro en el [[FORM:Presupuesto.Productos.ProductosGrid]].\n\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(778,'== Descripción ==\nEvento que ejecuta cuando carga el [[FORM:Presupuesto.Cabecera]]\n== Biblioteca ==\n*[[LIBR:FazzGlassMcr]]\n\n== Composición ==\n== Código ==\n<small><pre>\nSub EventoWhenLoadingFormCabecera (oEvent as Object)\n    \nDim oForm	 		As Object\n\n	ChequeoValorLicenciaOK(oEvent)\n	oForm		= ThisComponent.Drawpage.Forms.getByName(\"Cabecera\")  \n	oSubForm	= oForm.getByName(\"Productos\")\n	Hoy(oForm,oForm.getbyname(\"datVidQuoteFecha\"))\n	\n	oSubForm.getByName(\"ComponentesDisplay\").getByName(\"ComponentesDisplayGrid\").setPropertyValue(\"EnableVisible\",True)\n	oSubForm.getByName(\"ComponentesSimple\").getByName(\"ComponentesSimpleGrid\").setPropertyValue(\"EnableVisible\",False)\n	oSubForm.getByName(\"ComponentesSimple\").getByName(\"SubTotalProducto\").getByName(\"Total\").setPropertyValue(\"EnableVisible\",False)	\n	\nend Sub\n</pre></small>\n== Bitácora ==\n== Uso ==\n*[[FORM:Presupuesto]]\n**[[FORM:Presupuesto.Cabecera]]\n***[[EVENTO:Presupuesto.Cabecera.WhenLoading]]','utf-8'),(779,'== Descripción ==\nEjecutor del Evento Before Record Action del [[FORM:Presupuesto.Productos]]. Principalmente setea la variable de entorno para que pueda ser tomada por otros procesos y ejecuta el proceso que chequea los atributos/columnas de Ancho y Alto.\n== Biblioteca ==\n[[LBRR:FazzGlassMcr]]\n== Composición ==\n== Código ==\n<small><pre>\n</pre></small>\n== Bitácora ==\n*20121026\n**Previa\n*20121026\n**Cambio de modalidad de Sub a Function para poder controlar y mantener en el misma fila columna. Se agrega el control de flujo a traves de [[MACRO:CheckValidMeasure]] a aplicar para detectar antes de efectuar el grabado del registro.\n== Uso ==','utf-8'),(780,'== Descripción ==\nEjecutor del Evento Before Record Action del [[FORM:Presupuesto.Productos]]. Principalmente setea la variable de entorno para que pueda ser tomada por otros procesos y ejecuta el proceso que chequea los atributos/columnas de Ancho y Alto.\n== Biblioteca ==\n[[LIBR:FazzGlassMcr]]\n\n== Composición ==\n== Código ==\n<small><pre>\n</pre></small>\n== Bitácora ==\n*20121026\n**Previa\n*20121026\n**Cambio de modalidad de Sub a Function para poder controlar y mantener en el misma fila columna. Se agrega el control de flujo a traves de [[MACRO:CheckValidMeasure]] a aplicar para detectar antes de efectuar el grabado del registro.\n== Uso ==','utf-8'),(781,'=== 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:magnitudes]]\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*[[RPRT:Presupuestos]]\n*[[RPRT:PresupuestosDirecto]]\n*[[RPRT:IndividualCRM]]\n\n=== Procedimientos ===\n*[[PROC:ActualizaItemPresupuesto]]\n*[[PROC:ActualizaPreciosPresupuesto]]\n*[[PROC:ActualizaPreciosTabular]]\n*[[PROC:AgregaProductoCompo]]\n*[[PROC:AltaItemPresupuesto]]\n*[[PROC:AltaItemPresupuestoTmp]]\n*[[PROC:CalculaPrecioBase]]\n*[[PROC:CalculoMedidaReal]]\n*[[PROC:CalculoPrecio]]\n*[[PROC:CopiaPresupuesto]]\n*[[PROC:DuplicaProductoCompo]]\n*[[PROC:GrabaItemPresupuestoTmp]]\n*[[PROC:ResetEdicionItemTmp]]\n\n=== Bibliotecas ===\n*[[LIBR:FazzGlassMcr]]\n*[[LIBR:SpanexB]]\n*[[LIBR:SpanexC]]','utf-8'),(782,'*[[MACRO:AccesaMRIStarDesktop]]\n*[[MACRO:AccesaMRIThisComponent]]\n*[[MACRO:AccesaMRIThisDatabaseDocument]]\n*[[MACRO:AfterUpdateElementoDProducto]]\n*[[MACRO:ApruebaPresupuesto]]\n*[[MACRO:BotonAbrirPredefinidos]]\n*[[MACRO:BotonEnviarCorreoPresupuesto]]\n*[[MACRO:BotonImprimirPresupuesto]]\n*[[MACRO:CheckLicenceOK]]\n*[[MACRO:DateStampPrecioUpdate]]\n*[[MACRO:EscondeBarras]]\n*[[MACRO:EventoAfterRecordAction]]\n*[[MACRO:EventoARADetallePresupuesto]]\n*[[MACRO:EventoBeforeRecordChange]]\n*[[MACRO:EventoBeforeReloading]]\n*[[MACRO:EventoBRADetalleProducto]]\n*[[MACRO:EventoBRAProductosCore]]\n*[[MACRO:EventoBRCDetallePresupuesto]]\n*[[MACRO:EventoBRCDetalleProducto]]\n*[[MACRO:EventoWhenLoadingFormCabecera]]\n*[[MACRO:EventoWhenLoadingFORMCobranzas]]\n*[[MACRO:EventoWhenLoadingFORMPagos]]\n*[[MACRO:EventoWhenLoading]]\n*[[MACRO:EventoWhenReloading]]\n*[[MACRO:GeneraNuevoDefaultListaPrecio]]\n*[[MACRO:GrabaScriptBkp]]\n*[[MACRO:Hoy]]\n*[[MACRO:LayoutIn]]\n*[[MACRO:LayoutOut]]\n*[[MACRO:LookupData]]\n*[[MACRO:Main]]\n*[[MACRO:NewProductoListbox]]\n*[[MACRO:NewResetListBoxDetalleProducto]]\n*[[MACRO:onClickOpenForm]]\n*[[MACRO:OpenForm]]\n*[[MACRO:OpenMainMenu]]\n*[[MACRO:OptionBtnAR]]\n*[[MACRO:OptionBtnOrdenChq]]\n*[[MACRO:PresupuestoCopia]]\n*[[MACRO:PresupuestoExpirado]]\n*[[MACRO:ReporteClientesCRM]]\n*[[MACRO:ResguardoInicializa]]\n*[[MACRO:ResguardoSalir]]\n*[[MACRO:SugerenciaImporteCheque]]\n*[[MACRO:Sugerencio]]\n*[[MACRO:TestMRI]]\n*[[MACRO:Test]]\n*[[MACRO:TestThisComponent]]\n*[[MACRO:TestThisControl]]\n*[[MACRO:VisibleDetalleElementoGrid]]\n*[[MACRO:VisibleFiltroPresupuesto]]\n*[[MACRO:ActivaFiltroCheques]]\n*[[MACRO:ActivaFiltroContactos]]\n*[[MACRO:ActivaFiltroPredefinidos]]\n*[[MACRO:ActivaFiltroPresupuesto]]\n*[[MACRO:ActivaFiltroProductosGeneral]]\n*[[MACRO:ActivaNuevaListaPrecio]]\n*[[MACRO:AfterRecordChangeFORMProductos]]\n*[[MACRO:AgregaComposicion]]\n*[[MACRO:AplicarCambioMasivoPrecios]]\n*[[MACRO:ARAEndosoCheque]]\n*[[MACRO:BotonSeleccionaPredefinido]]\n*[[MACRO:BRAEndosoCheque]]\n*[[MACRO:CambioMasivoCoeficientesPrecios]]\n*[[MACRO:CentrarMensaje]]\n*[[MACRO:ChangeFieldtxtProductoIDFORMCopiaComp]]\n*[[MACRO:ChangeFieldtxtProductoIDFORMProductos]]\n*[[MACRO:ChequeoProductoRepetido]]\n*[[MACRO:ChequeoValorLicenciaOK]]\n*[[MACRO:ConfirmeEliminarDetalleProducto]]\n*[[MACRO:ConfirmeEliminarLogPrecio]]\n*[[MACRO:ConfirmeEliminarProductoCore]]\n*[[MACRO:ConfirmeEliminarProducto]]\n*[[MACRO:CopiaComposicion]]\n*[[MACRO:DateTodbDate]]\n*[[MACRO:EliminaContenidoCampo]]\n*[[MACRO:EnviaQryPresupuesto]]\n*[[MACRO:EventoBRADetallePresupuesto]]\n*[[MACRO:FileAttributeString]]\n*[[MACRO:GeneraFechaListaPrecio]]\n*[[MACRO:GeneraResguardo]]\n*[[MACRO:ImprimeQryPresupuesto]]\n*[[MACRO:LimpiarMasivoCoeficientesPrecios]]\n*[[MACRO:QuerySimple]]\n*[[MACRO:RecalculaPrecios]]\n*[[MACRO:ReemplazaStr]]\n*[[MACRO:ResguardoEjecutar]]\n*[[MACRO:RestituyeFiltroOriginal]]\n*[[MACRO:SwitchBarras]]\n*[[MACRO:SwitchCheckboxParam]]\n*[[MACRO:TextoStatusBar]]','utf-8'),(783,'*[[MACRO:ActivaFiltroValoresGeneral]]\n*[[MACRO:ActivaRelacionForm]]\n*[[MACRO:ActualizaDB]]\n*[[MACRO:ActualizaRegistroCheckBox]]\n*[[MACRO:AltaProductoPresupuesto]]\n*[[MACRO:AprobacionPresupuesto]]\n*[[MACRO:BotonActualizarPresupuesto]]\n*[[MACRO:BotonContactosExpress]]\n*[[MACRO:BotonEditarComponentes]]\n*[[MACRO:CheckValidMeasure]]\n*[[MACRO:ConfirmaDeletePresupuesto]]\n*[[MACRO:ControlFormPresupuesto]]\n*[[MACRO:ControlLista]]\n*[[MACRO:CopiaComponenteSimple]]\n*[[MACRO:DefineAccionForm]]\n*[[MACRO:DespliegaGrid]]\n*[[MACRO:DespliegaListBox]]\n*[[MACRO:EndosarTercerosEnGrilla]]\n*[[MACRO:EnviaClienteIDCobranza]]\n*[[MACRO:EventoWhenReceivingFocus]]\n*[[MACRO:FiltroPlusText]]\n*[[MACRO:iiif]]\n*[[MACRO:MenuArbol]]\n*[[MACRO:MuestraSubForm]]\n*[[MACRO:OptionBtnAP]]\n*[[MACRO:RecalculaSubTotalProductoTmp]]\n*[[MACRO:ResetFiltroProductoFORMPresupuesto]]\n*[[MACRO:RoundN]]\n*[[MACRO:SelectC_selectionChanged]]\n*[[MACRO:SelectS_getSelection]]\n*[[MACRO:SelectS_select]]\n*[[MACRO:SplitMsg]]\n*[[MACRO:SugerenciaContactoID]]\n*[[MACRO:Tree_disposing]]\n*[[MACRO:Tree_requestChildNodes]]\n*[[MACRO:Tree_treeCollapsed]]\n*[[MACRO:Tree_treeCollapsing]]\n*[[MACRO:Tree_treeExpanded]]\n*[[MACRO:Tree_treeExpanding]]\n*[[MACRO:VisibleIngresoCheque]]','utf-8'),(784,'*[[MACRO:AccesaMRIStarDesktop]]\n*[[MACRO:AccesaMRIThisComponent]]\n*[[MACRO:AccesaMRIThisDatabaseDocument]]\n*[[MACRO:ActivaFiltroCheques]]\n*[[MACRO:ActivaFiltroContactos]]\n*[[MACRO:ActivaFiltroPredefinidos]]\n*[[MACRO:ActivaFiltroPresupuesto]]\n*[[MACRO:ActivaFiltroProductosGeneral]]\n*[[MACRO:ActivaNuevaListaPrecio]]\n*[[MACRO:AfterRecordChangeFORMProductos]]\n*[[MACRO:AfterUpdateElementoDProducto]]\n*[[MACRO:AgregaComposicion]]\n*[[MACRO:AplicarCambioMasivoPrecios]]\n*[[MACRO:ApruebaPresupuesto]]\n*[[MACRO:ARAEndosoCheque]]\n*[[MACRO:BotonAbrirPredefinidos]]\n*[[MACRO:BotonEnviarCorreoPresupuesto]]\n*[[MACRO:BotonImprimirPresupuesto]]\n*[[MACRO:BotonSeleccionaPredefinido]]\n*[[MACRO:BRAEndosoCheque]]\n*[[MACRO:CambioMasivoCoeficientesPrecios]]\n*[[MACRO:CentrarMensaje]]\n*[[MACRO:ChangeFieldtxtProductoIDFORMCopiaComp]]\n*[[MACRO:ChangeFieldtxtProductoIDFORMProductos]]\n*[[MACRO:CheckLicenceOK]]\n*[[MACRO:ChequeoProductoRepetido]]\n*[[MACRO:ChequeoValorLicenciaOK]]\n*[[MACRO:ConfirmeEliminarDetalleProducto]]\n*[[MACRO:ConfirmeEliminarLogPrecio]]\n*[[MACRO:ConfirmeEliminarProducto]]\n*[[MACRO:ConfirmeEliminarProductoCore]]\n*[[MACRO:CopiaComposicion]]\n*[[MACRO:DateStampPrecioUpdate]]\n*[[MACRO:DateTodbDate]]\n*[[MACRO:EliminaContenidoCampo]]\n*[[MACRO:EnviaQryPresupuesto]]\n*[[MACRO:EscondeBarras]]\n*[[MACRO:EventoAfterRecordAction]]\n*[[MACRO:EventoARADetallePresupuesto]]\n*[[MACRO:EventoBeforeRecordChange]]\n*[[MACRO:EventoBeforeReloading]]\n*[[MACRO:EventoBRADetallePresupuesto]]\n*[[MACRO:EventoBRADetalleProducto]]\n*[[MACRO:EventoBRAProductosCore]]\n*[[MACRO:EventoBRCDetallePresupuesto]]\n*[[MACRO:EventoBRCDetalleProducto]]\n*[[MACRO:EventoWhenLoading]]\n*[[MACRO:EventoWhenLoadingFormCabecera]]\n*[[MACRO:EventoWhenLoadingFORMCobranzas]]\n*[[MACRO:EventoWhenLoadingFORMPagos]]\n*[[MACRO:EventoWhenReloading]]\n*[[MACRO:FileAttributeString]]\n*[[MACRO:GeneraFechaListaPrecio]]\n*[[MACRO:GeneraNuevoDefaultListaPrecio]]\n*[[MACRO:GeneraResguardo]]\n*[[MACRO:GrabaScriptBkp]]\n*[[MACRO:Hoy]]\n*[[MACRO:ImprimeQryPresupuesto]]\n*[[MACRO:LayoutIn]]\n*[[MACRO:LayoutOut]]\n*[[MACRO:LimpiarMasivoCoeficientesPrecios]]\n*[[MACRO:LookupData]]\n*[[MACRO:Main]]\n*[[MACRO:NewProductoListbox]]\n*[[MACRO:NewResetListBoxDetalleProducto]]\n*[[MACRO:onClickOpenForm]]\n*[[MACRO:OpenForm]]\n*[[MACRO:OpenMainMenu]]\n*[[MACRO:OptionBtnAR]]\n*[[MACRO:OptionBtnOrdenChq]]\n*[[MACRO:PresupuestoCopia]]\n*[[MACRO:PresupuestoExpirado]]\n*[[MACRO:QuerySimple]]\n*[[MACRO:RecalculaPrecios]]\n*[[MACRO:ReemplazaStr]]\n*[[MACRO:ReporteClientesCRM]]\n*[[MACRO:ResguardoEjecutar]]\n*[[MACRO:ResguardoInicializa]]\n*[[MACRO:ResguardoSalir]]\n*[[MACRO:RestituyeFiltroOriginal]]\n*[[MACRO:SugerenciaImporteCheque]]\n*[[MACRO:Sugerencio]]\n*[[MACRO:SwitchBarras]]\n*[[MACRO:SwitchCheckboxParam]]\n*[[MACRO:Test]]\n*[[MACRO:TestMRI]]\n*[[MACRO:TestThisComponent]]\n*[[MACRO:TestThisControl]]\n*[[MACRO:TextoStatusBar]]\n*[[MACRO:VisibleDetalleElementoGrid]]\n*[[MACRO:VisibleFiltroPresupuesto]]','utf-8'),(785,'== Developing ==\n*[[Developing]]\n*[[SpanexDraw]]\n\n== Gestión Retail Aberturas ==\n*[[GRA: Pendientes]]\n*[[GRA: Relaciones]]\n*[[GRA: Releases]]\n*[[GRA: PreciosABT]]\n\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\n<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Reportes ===\n<small>\n</small>\n\n=== Procedimientos ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Nombre\'\'\'</center>\n| <center>\'\'\'Comando\'\'\'</center>\n| <center>\'\'\'Uso\'\'\'</center>\n| <center>\'\'\'Observaciones\'\'\'</center>\n|-\n| CrearNuevaListaPrecios\n| FZG.Procedure.CrearNuevaListaPrecios.sql\n| FORM: Crear Nueva Lista\n| Agrega registración al tiempo de generar una nueva lista de precios.\n|-\n| DuplicaProductoCompo\n| FZG.Procedure.DuplicaProductoCompo.sql\n| FORM: Copia Composicion\n| Copia las registraciones de un producto dentro de la tabla de composición con el atrubuto ProductoID diferente al original.\n|-\n| ActualizaPreciosTabular\n| [[FZG.Procedure.ActualizaPreciosTabular.sql]]\n| FORM: Actualiza Precios Tabular\n| Cambio Masivo de Precios de acuerdo al criterio de búsqueda ingresado en el formulario\n|}\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wskey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) AS DecMAC,\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)) AS DecUsuarios,\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)) AS DecFechaLimite\nFROM\n	wscontrol\n</pre></small>\n\'\'\'Alargar ACL 1 mes más\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\n                  \'%Y%m%d\')+INTERVAL 1 MONTH,\'%Y%m%d\'),\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n\n{{tecla|Ctrl|A}}\n=== Instalacion .odb ===\n*Copiar el documento .odb\n*Cambiar el usuario de la base de datos\n*Cambiar la constante [[oCheckEstadoLicencia]] a True\n*Grabar documento .odb\n*Cambiar a nivel de Sistema Operativo a ReadOnly\n\n=== Documentación de Usuario ===\n[[WikiUserSpanex]]','utf-8'),(786,'== Developing ==\n*[[Developing]]\n*[[SpanexDraw]]\n\n== Gestión Retail Aberturas ==\n*[[GRA: Pendientes]]\n*[[GRA: Relaciones]]\n*[[GRA: Releases]]\n*[[GRA: PreciosABT]]\n\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\n<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Reportes ===\n<small>\n</small>\n\n=== Procedimientos ===\n<small>\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wskey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) AS DecMAC,\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)) AS DecUsuarios,\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)) AS DecFechaLimite\nFROM\n	wscontrol\n</pre></small>\n\'\'\'Alargar ACL 1 mes más\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\n                  \'%Y%m%d\')+INTERVAL 1 MONTH,\'%Y%m%d\'),\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n\n{{tecla|Ctrl|A}}\n=== Instalacion .odb ===\n*Copiar el documento .odb\n*Cambiar el usuario de la base de datos\n*Cambiar la constante [[oCheckEstadoLicencia]] a True\n*Grabar documento .odb\n*Cambiar a nivel de Sistema Operativo a ReadOnly\n\n=== Documentación de Usuario ===\n[[WikiUserSpanex]]','utf-8'),(787,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial\n* [[FORM:Presupuesto]]. Corrección. Se agregan los controles de límites para los atributos de Ancho y Alto dentro de [[FORM:Presupuestos.Productos]].\n**El esquema funciona haciendo un llamado básicamente a la rutina indicada en [[MACRO:CheckValidMeasure]] ante los eventos de ItemChange de ambas columnas.\n**Se modifica el esquema de [[MACRO:EventoBRCDetallePresupuesto]] que gestionaba a la fecha escencialmente el alta de registros en [[TABLA:viquoten3]] transfiriendo esa ejecución del alta a traves de [[MACRO:AltaProductoPresupuesto]] que se ejecuta en [[MACRO:EventoARADetallePresupuesto]] con los parámetros de acción provenientes de [[MACRO:EventoBRADetallePresupuesto]]\nEs precisamente la [[MACRO:EventoARADetallePresupuesto]], donde efectua el chequeo [[MACRO:CheckValidMeasure]], que siendo declarada como función, retorna el valor del chequeo para que se mantenga dentro del mismo control en el caso de error.\n**Esta modificación general permite que el refresco del \nControl correspondiente al Subtotal lo haga aún si presiona el ícono de grabar sin efectuar el \"gesture\" natural de la secuencia de ingreso de datos (presionar [Enter]) del registro en el [[FORM:Presupuesto.Productos.ProductosGrid]].\n\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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');
INSERT INTO `peg_text` VALUES (788,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial\n* [[FORM:Presupuesto]]. Corrección. Se agregan los controles de límites para los atributos de Ancho y Alto dentro de [[FORM:Presupuestos.Productos]].\n**El esquema funciona haciendo un llamado básicamente a la rutina indicada en [[MACRO:CheckValidMeasure]] ante los eventos de ItemChange de ambas columnas.\n**Se modifica el esquema de [[MACRO:EventoBRCDetallePresupuesto]] que gestionaba a la fecha escencialmente el alta de registros en [[TABLA:viquoten3]] transfiriendo esa ejecución del alta a traves de [[MACRO:AltaProductoPresupuesto]] que se ejecuta en [[MACRO:EventoARADetallePresupuesto]] con los parámetros de acción provenientes de [[MACRO:EventoBRADetallePresupuesto]]. Es precisamente la [[MACRO:EventoARADetallePresupuesto]], donde efectua el chequeo [[MACRO:CheckValidMeasure]], que siendo declarada como función, retorna el valor del chequeo para que se mantenga dentro del mismo control en el caso de error.\n**Esta modificación general permite que el refresco del Control correspondiente al Subtotal lo haga aún si presiona el ícono de grabar sin efectuar el \"gesture\" natural de la secuencia de ingreso de datos (presionar [Enter]) del registro en el [[FORM:Presupuesto.Productos.ProductosGrid]].\n\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(789,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial.\n* [[FORM:Presupuesto]]. Corrección. Por diferencias aparentes en las versiones de la DB vs. ODBC se cambia el DataSource de [[FORM:Presupuesto.DataCliente]] para que lo haga sobre la [[TABLA:contactos]] y no sobre la [[VISTA:clientes]].\n* [[FORM:Presupuesto]]. Corrección. Se agregan los controles de límites para los atributos de Ancho y Alto dentro de [[FORM:Presupuestos.Productos]].\n**El esquema funciona haciendo un llamado básicamente a la rutina indicada en [[MACRO:CheckValidMeasure]] ante los eventos de ItemChange de ambas columnas.\n**Se modifica el esquema de [[MACRO:EventoBRCDetallePresupuesto]] que gestionaba a la fecha escencialmente el alta de registros en [[TABLA:viquoten3]] transfiriendo esa ejecución del alta a traves de [[MACRO:AltaProductoPresupuesto]] que se ejecuta en [[MACRO:EventoARADetallePresupuesto]] con los parámetros de acción provenientes de [[MACRO:EventoBRADetallePresupuesto]]. Es precisamente la [[MACRO:EventoARADetallePresupuesto]], donde efectua el chequeo [[MACRO:CheckValidMeasure]], que siendo declarada como función, retorna el valor del chequeo para que se mantenga dentro del mismo control en el caso de error.\n**Esta modificación general permite que el refresco del Control correspondiente al Subtotal lo haga aún si presiona el ícono de grabar sin efectuar el \"gesture\" natural de la secuencia de ingreso de datos (presionar [Enter]) del registro en el [[FORM:Presupuesto.Productos.ProductosGrid]].\n\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(790,'== Developing ==\n*[[Developing]]\n*[[Pendientes]]\n*[[SpanexDraw]]\n\n== Gestión Retail Aberturas ==\n*[[GRA: Pendientes]]\n*[[GRA: Relaciones]]\n*[[GRA: Releases]]\n*[[GRA: PreciosABT]]\n\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\n<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Reportes ===\n<small>\n</small>\n\n=== Procedimientos ===\n<small>\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wskey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) AS DecMAC,\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)) AS DecUsuarios,\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)) AS DecFechaLimite\nFROM\n	wscontrol\n</pre></small>\n\'\'\'Alargar ACL 1 mes más\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\n                  \'%Y%m%d\')+INTERVAL 1 MONTH,\'%Y%m%d\'),\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n\n{{tecla|Ctrl|A}}\n=== Instalacion .odb ===\n*Copiar el documento .odb\n*Cambiar el usuario de la base de datos\n*Cambiar la constante [[oCheckEstadoLicencia]] a True\n*Grabar documento .odb\n*Cambiar a nivel de Sistema Operativo a ReadOnly\n\n=== Documentación de Usuario ===\n[[WikiUserSpanex]]','utf-8'),(791,'*Modificar FORM:Productos para incluir vista Grid. \'\'\'20121017\'\'\'','utf-8'),(792,'*\'\'\'20121017\'\'\'\n**Modificar FORM:Productos para incluir vista Grid.','utf-8'),(793,'*\'\'\'20121017\'\'\'\n**Modificar [[FORM:Productos]] para incluir vista Grid.\n**Cambiar Control Magnitud en [[FORM:Productos]] para que impacte en la nueva [[TABLA:Magnitudes]]\n**No permitir el cambio de layout del [[FORM:Presupuestos.ProductosGrid]]\n*\'\'\'20101024\'\'\'\n**Veriicar comportamiento aleatorio en la eliminación de registros en [[FORM:Presupuestos.Productos]]\n**Análisis de los precios que se despliegan en los controles de grid en [[FORM:Presupuesto]] con Warning.','utf-8'),(794,'== Descripción ==\nMuestra/Esconde los componentes de un subformulario. Los parámetros son: \n*pMainForm: Formulario Padre.\n*pNSubForm: Formulario PPD.\n*pEstado: configura el estado deseado\npEtiquetas (\'\'Opcional\'\'): En el caso de estar seleccionado incluye los controles de etiquetas también (por defecto, definidos por el prefijo \"lbl\"\n== Biblioteca ==\n[[LIBR:SpanexB]]\n== Composición ==\n== Código ==\n<small><pre>\nsub MuestraSubForm (pMainForm As Object,pNSubForm As String,pEstado as Boolean,Optional pEtiquetas as Boolean)\nDim oSubForm	As object\n	oSubForm 	= pMainForm.getByName(pNSubForm)\n   \'oEtiquetas	= Incluye Etiquetas\n	If Not IsMissing (pEtiquetas) Then\n		oEtiquetas	= pEtiquetas\n	else\n		oEtiquetas	= True\n	end if\n	For i = 0 To Ubound(oSubForm.ElementNames())\n		select case True		\n			case oEtiquetas\n				oSubForm.getByName(oSubForm.ElementNames(i)).EnableVisible 	= pEstado\n			case left(oSubForm.ElementNames(i),3) <> \"lbl\"\n				oSubForm.getByName(oSubForm.ElementNames(i)).EnableVisible 	= pEstado\n		end select\n	Next i\nend sub\n</pre></small>\n== Bitácora ==\n*20121026\n**Alta de rutina\n== Uso ==\n[[FORM:Presupuestos]]','utf-8'),(795,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121030====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[MACRO:AprobacionPresupuesto]]. Corrección. Se modifica la acción posterior de redespliegue de subformularios eliminando las instrucciones anteriores y sumando la rutina [[MACRO:ControlFormPresupuesto]]\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial.\n* [[FORM:Presupuesto]]. Corrección. Por diferencias aparentes en las versiones de la DB vs. ODBC se cambia el DataSource de [[FORM:Presupuesto.DataCliente]] para que lo haga sobre la [[TABLA:contactos]] y no sobre la [[VISTA:clientes]].\n* [[FORM:Presupuesto]]. Corrección. Se agregan los controles de límites para los atributos de Ancho y Alto dentro de [[FORM:Presupuestos.Productos]].\n**El esquema funciona haciendo un llamado básicamente a la rutina indicada en [[MACRO:CheckValidMeasure]] ante los eventos de ItemChange de ambas columnas.\n**Se modifica el esquema de [[MACRO:EventoBRCDetallePresupuesto]] que gestionaba a la fecha escencialmente el alta de registros en [[TABLA:viquoten3]] transfiriendo esa ejecución del alta a traves de [[MACRO:AltaProductoPresupuesto]] que se ejecuta en [[MACRO:EventoARADetallePresupuesto]] con los parámetros de acción provenientes de [[MACRO:EventoBRADetallePresupuesto]]. Es precisamente la [[MACRO:EventoARADetallePresupuesto]], donde efectua el chequeo [[MACRO:CheckValidMeasure]], que siendo declarada como función, retorna el valor del chequeo para que se mantenga dentro del mismo control en el caso de error.\n**Esta modificación general permite que el refresco del Control correspondiente al Subtotal lo haga aún si presiona el ícono de grabar sin efectuar el \"gesture\" natural de la secuencia de ingreso de datos (presionar [Enter]) del registro en el [[FORM:Presupuesto.Productos.ProductosGrid]].\n\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(796,'== Descripción ==\nEjecuta las operaciones al marcar el VidQuoteEstado dentro de un presupuesto.\n== Biblioteca ==\n== Composición ==\n== Código ==\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		\'oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		\'oSubForm		= oForm.getByName(\"Productos\")\n		\'oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		\'oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		\'oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		ControlFormPresupuesto()\n	end if\nend Sub\n</pre></small>\n== Bitácora ==\n*20121030\n**Se eliminan las líneas afectadas a redesplegar el presupuesto de acuerdo al Estado modificado y se reemplaza por [[MACRO:ControlFormPresupuesto\n]]\n*20121029\n**Ultimo script\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	end if\nend Sub\n</pre></small>\n== Uso ==','utf-8'),(797,'== Descripción ==\nEjecuta las operaciones al marcar el VidQuoteEstado dentro de un presupuesto.\n== Biblioteca ==\n== Composición ==\n== Código ==\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		\'oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		\'oSubForm		= oForm.getByName(\"Productos\")\n		\'oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		\'oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		\'oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		ControlFormPresupuesto()\n	end if\nend Sub\n</pre></small>\n== Bitácora ==\n*20121030\n**Se eliminan las líneas afectadas a redesplegar el presupuesto de acuerdo al Estado modificado y se reemplaza por [[MACRO:ControlFormPresupuesto]]\n*20121029\n**Ultimo script\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	end if\nend Sub\n</pre></small>\n\n== Uso ==','utf-8'),(798,'== Descripción ==\nEjecuta las operaciones al marcar el VidQuoteEstado dentro de un presupuesto.\n== Biblioteca ==\n[LIBR:SpanexB]\n\n== Composición ==\n== Código ==\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		\'oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		\'oSubForm		= oForm.getByName(\"Productos\")\n		\'oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		\'oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		\'oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		ControlFormPresupuesto()\n	end if\nend Sub\n</pre></small>\n== Bitácora ==\n*20121030\n**Se eliminan las líneas afectadas a redesplegar el presupuesto de acuerdo al Estado modificado y se reemplaza por [[MACRO:ControlFormPresupuesto]]\n*20121029\n**Ultimo script\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	end if\nend Sub\n</pre></small>\n\n== Uso ==','utf-8'),(799,'== Descripción ==\nEjecuta las operaciones al marcar el VidQuoteEstado dentro de un presupuesto.\n== Biblioteca ==\n[LIBR:SpanexB]\n\n== Composición ==\n== Código ==\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		\'oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		\'oSubForm		= oForm.getByName(\"Productos\")\n		\'oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		\'oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		\'oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		ControlFormPresupuesto()\n	end if\nend Sub\n</pre></small>\n== Bitácora ==\n*20121030\n**Se eliminan las líneas afectadas a redesplegar el presupuesto de acuerdo al Estado modificado y se reemplaza por [[MACRO:ControlFormPresupuesto]]\n*20121029\n**Ultimo script\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	end if\nend Sub\n</pre></small>\n\n== Uso ==\n[[FORM:Presupuesto]]\n[[FORM:Presupuesto.Cabecera]]\n[[EVNT:Presupuesto.Cabecera.txtVidQuoteEstado.ItemChange]]','utf-8'),(800,'== Descripción ==\nEjecuta las operaciones al marcar el VidQuoteEstado dentro de un presupuesto.\n== Biblioteca ==\n[LIBR:SpanexB]\n\n== Composición ==\n== Código ==\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		\'oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		\'oSubForm		= oForm.getByName(\"Productos\")\n		\'oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		\'oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		\'oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		ControlFormPresupuesto()\n	end if\nend Sub\n</pre></small>\n== Bitácora ==\n*20121030\n**Se eliminan las líneas afectadas a redesplegar el presupuesto de acuerdo al Estado modificado y se reemplaza por [[MACRO:ControlFormPresupuesto]]\n*20121029\n**Ultimo script\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	end if\nend Sub\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n**[[FORM:Presupuesto.Cabecera]]\n***[[EVNT:Presupuesto.Cabecera.txtVidQuoteEstado.ItemChange]]','utf-8'),(801,'== Descripción ==\nEjecuta las operaciones al marcar el VidQuoteEstado dentro de un presupuesto.\n== Biblioteca ==\n[LIBR:SpanexB]\n\n== Composición ==\n== Código ==\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		\'oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		\'oSubForm		= oForm.getByName(\"Productos\")\n		\'oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		\'oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		\'oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n		ControlFormPresupuesto()\n	end if\nend Sub\n</pre></small>\n== Bitácora ==\n*20121030\n**Se eliminan las líneas afectadas a redesplegar el presupuesto de acuerdo al Estado modificado y se reemplaza por [[MACRO:ControlFormPresupuesto]]\n*20121029\n**Ultimo script\n<small><pre>\nSub AprobacionPresupuesto (oEvent as Object)\n\nDim oEstado		AS Boolean\n\n	oForm			= oEvent.Source.Model.Parent\n	oMensaje		= \"\"\n	oMensaje		= oMensaje & \"Este proceso realiza las siguientes actividades:\" & Chr(13)\n	oMensaje		= oMensaje & \"* Marca el presupuesto como aprobado y no permite su modificacion.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una obligacion para el cliente en su cuenta corriente.\" & Chr(13)\n	oMensaje		= oMensaje & \"* Genera una Orden de Trabajo (OT) para Producción/Taller.\" & Chr(13) & Chr(13)\n	oMensaje		= oMensaje & \"¿Desea Aprobar este Presupuesto?\"\n	\n	if MsgBox(oMensaje,MB_YESNO+MB_ICONEXCLAMATION,\"Atención\") = IDYES AND Not(oForm.IsNew) Then\n		oForm.getbyname(\"datVidQuoteFechaEst\").BoundField.updateString(format(Clng(CDateToIso(Date)),\"0000-00-00\"))\n		oForm.UpdateRow()\n		oEstado		= iiif(NOT(oForm.IsNew),oForm.getByName(\"txtVidQuoteEstado\").CurrentValue,0)\n		oSubForm		= oForm.getByName(\"Productos\")\n		oSubFormGrid	= oSubForm.getByName(\"ProductosGrid\")\n		oSubFormGrid.setPropertyValue(\"Enabled\",NOT(oEstado))\n		oSubForm.getByName(\"NavBarListaProductos\").setPropertyValue(\"Enabled\",NOT(oEstado))\n	end if\nend Sub\n</pre></small>\n\n== Uso ==\n*[[FORM:Presupuesto]]\n**[[FORM:Presupuesto.Cabecera]]\n***[[EVNT:Presupuesto.Cabecera.txtVidQuoteEstado.ItemStatusChange]]','utf-8'),(802,'===Esquema de Actualizaciones===\n*[[Actualizacion DB]]\n=== Versión 1.1 ===\n====Release 20121030====\n=====Problemas Conocidos=====\n*Aleatoriamente no elimina registros y cuando se visualiza o refresca la tabla, hace shutdown de la sesión\n\n=====Correcciones y Agregados=====\n* [[MACRO:AprobacionPresupuesto]]. Corrección. Se modifica la acción posterior de redespliegue de subformularios eliminando las instrucciones anteriores y sumando la rutina [[MACRO:ControlFormPresupuesto]]\n====Release 20121029====\n=====Problemas Conocidos=====\n=====Correcciones y Agregados=====\n* [[TABLA:vidquoten1]]. Corrección. Se agregan los controles de NOTNULL a los atributos de Cliente y de Agente Comercial.\n* [[FORM:Presupuesto]]. Corrección. Por diferencias aparentes en las versiones de la DB vs. ODBC se cambia el DataSource de [[FORM:Presupuesto.DataCliente]] para que lo haga sobre la [[TABLA:contactos]] y no sobre la [[VISTA:clientes]].\n* [[FORM:Presupuesto]]. Corrección. Se agregan los controles de límites para los atributos de Ancho y Alto dentro de [[FORM:Presupuestos.Productos]].\n**El esquema funciona haciendo un llamado básicamente a la rutina indicada en [[MACRO:CheckValidMeasure]] ante los eventos de ItemChange de ambas columnas.\n**Se modifica el esquema de [[MACRO:EventoBRCDetallePresupuesto]] que gestionaba a la fecha escencialmente el alta de registros en [[TABLA:viquoten3]] transfiriendo esa ejecución del alta a traves de [[MACRO:AltaProductoPresupuesto]] que se ejecuta en [[MACRO:EventoARADetallePresupuesto]] con los parámetros de acción provenientes de [[MACRO:EventoBRADetallePresupuesto]]. Es precisamente la [[MACRO:EventoARADetallePresupuesto]], donde efectua el chequeo [[MACRO:CheckValidMeasure]], que siendo declarada como función, retorna el valor del chequeo para que se mantenga dentro del mismo control en el caso de error.\n**Esta modificación general permite que el refresco del Control correspondiente al Subtotal lo haga aún si presiona el ícono de grabar sin efectuar el \"gesture\" natural de la secuencia de ingreso de datos (presionar [Enter]) del registro en el [[FORM:Presupuesto.Productos.ProductosGrid]].\n\n====Release 20121024====\n=====Correcciones y Agregados=====\n* [[FORM:PosicionCRM]]. Corrección de Data Source.\n* [[RPRT:IndividualCRM]]. Corrección de Data Source y MakeUp Fecha Detalle\n* [[FORM:ConsultaClienteCRM]]. Corrección de Data Source de [[FORM:ConsultaClienteCRM.MainForm.SFSaldo]]\n* [[TABLA:magnitudes]]. Agregado de tabla\n====Release 20121005====\n=====Problemas Conocidos=====\n* [[FORM:PosicionCRM]]. Existen diferencias en los origenes de datos por lo que muestra diferentes resultados de [[FORM:ConsultaClientesCRM]]\n=====Correcciones y Agregados=====\n* [[PROC:AltaItemPresupuestoTmp]]. Corrección. Error en el procedimiento. El error radicaba en que la condición de los registros existentes dentro de la [[TABLA:vidquoten3tmp]] para evitar el agregado de esos mismos registro por parte del procedimiento desde la [[TABLA:componentes]]. Los valores que existían eran las constantes utilizadas para las pruebas. Se procede al reemplazo por parte de los parámetros provenientes de la función que llama al procedimiento. Se agrega además un parche para asignar el atributo ElementoPM para aquellos Elementos que no han arrastrado previamente por algún motivo este elemento al momento de grabar.\n* [[VISTA:proveedores]]. Cambio de formato del tag\n* [[PROC:CalculoPrecio]]. Agregado de los cálculos correspondientes a las nuevas magnitudes ALto y ANcho.\n* [[FORM:Presupuesto]]. Corrección. Ordenamiento del vector de ProductosDSC.\n* [[FORM:Presupuesto]]. Agregado. Se agrega la opción dentro del ListBox correspondiente a ProductosDSC de \"Selección de Filtro\". Lanza la [[MACRO:ControlLista]] y recupera el valor anterior con [[MACRO:ResetFiltroProductoFORMPresupuesto]].\n* [[FORM:Presupuesto]]. Corrección. Se agrega la función para afectar las eliminaciones de productos.\n* [[FORM:Presupuesto]]. Corrección. Se elimina el tabstop del campo de aprobado.\n* [[FORM:Aux000002]]. Corrección. Se cambia la Property de Add record.\n* [[MACRO:SugerenciaContactoID]]. Se agrega la distinción para que pueda ser leido correctamente desde [[FORM:Aux000002]].\n* [[FORM:Presupuesto]]. Se elimina la visualización del boton de prueba en la zona de Composicion.\n* [[FORM:Presupuesto]]. Se agrega valor por defecto en [[CTRL:Presupuesto.txtVidQuoteACom]]\n* [[FORM:Presupuesto]]. Se agrega la visualización del FORM:ComponentesDisplay desde [[MACRO:EventoWhenLoadingFormCabecera]]\n====Release 20120912====\n=====Problemas Conocidos=====\n* [[FORM:Presupuesto]]. La ayuda específica de ingreso de la descripción de producto no funciona.\n* [[FORM:PosicionCRM]]. El reporte [[RPRT:IndividualCRM]] muestra problemas aleatorios en la última columna (despliega aleatoriamente decimales).\n=====Correcciones y Agregados=====\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* [[PROC:CopiaPresupuesto]]. Reactivación a razón del rediseño [[FORM:Presupuesto]].\n* [[FORM:Presupuesto]]. Inclusion del ordenamiento por el atributo VidQuoteID dentro de [[TABLA:vidquoten1]]\n\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'),(803,'*\'\'\'20121002\'\'\'\n**Agregar un \"MAILTO\" sobre un InputBox como Adicional\n**Agregar un PushButton para identificar valores con IVA\n**Agregar una Magnitud tipo RANGO.\n*\'\'\'20121017\'\'\'\n**Modificar [[FORM:Productos]] para incluir vista Grid.\n**Cambiar Control Magnitud en [[FORM:Productos]] para que impacte en la nueva [[TABLA:Magnitudes]]\n**No permitir el cambio de layout del [[FORM:Presupuestos.ProductosGrid]]\n*\'\'\'20101024\'\'\'\n**Veriicar comportamiento aleatorio en la eliminación de registros en [[FORM:Presupuestos.Productos]]\n**Análisis de los precios que se despliegan en los controles de grid en [[FORM:Presupuesto]] con Warning.','utf-8'),(804,'*[[MACRO:CuadroPrueba]]\n*[[MACRO:CuadroPrueba1]]\n*[[MACRO:CuadroPrueba2]]\n*[[MACRO:EventoAfterUpdatingProductoID]]\n*[[MACRO:EventoBeforeUpdating]]\n*[[MACRO:EventoChanged]]\n*[[MACRO:EventoExecAction]]\n*[[MACRO:EventoItemStatusChanged]]\n*[[MACRO:PruebaDraw]]\n*[[MACRO:ShowToolbars]]\n*[[MACRO:StartDocument]]\n*[[MACRO:XGridSelection_disposing]]\n*[[MACRO:XGridSelection_selectionChanged]]','utf-8'),(805,'== Developing ==\n*[[Developing]]\n*[[Pendientes]]\n*[[SpanexDraw]]\n\n== Gestión Retail Aberturas ==\n*[[GRA: Pendientes]]\n*[[GRA: Relaciones]]\n*[[GRA: Releases]]\n*[[GRA: PreciosABT]]\n\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\n<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Reportes ===\n<small>\n</small>\n\n=== Procedimientos ===\n<small>\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wskey3\n	) \nVALUES(\n	ENCODE(\"e0cb4ec8dae3\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"005\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20120531\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) AS DecMAC,\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)) AS DecUsuarios,\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)) AS DecFechaLimite\nFROM\n	wscontrol\n</pre></small>\n\'\'\'Alargar ACL 1 mes más\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\n                  \'%Y%m%d\')+INTERVAL 1 MONTH,\'%Y%m%d\'),\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n\'\'\'Cambiar Fecha ACL\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 \"20121231\",\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n{{tecla|Ctrl|A}}\n\n=== Instalacion .odb ===\n*Copiar el documento .odb\n*Cambiar el usuario de la base de datos\n*Cambiar la constante [[oCheckEstadoLicencia]] a True\n*Grabar documento .odb\n*Cambiar a nivel de Sistema Operativo a ReadOnly\n\n=== Documentación de Usuario ===\n[[WikiUserSpanex]]','utf-8'),(806,'== Developing ==\n*[[Developing]]\n*[[Pendientes]]\n*[[SpanexDraw]]\n\n== Gestión Retail Aberturas ==\n*[[GRA: Pendientes]]\n*[[GRA: Relaciones]]\n*[[GRA: Releases]]\n*[[GRA: PreciosABT]]\n\n=== Gestión de Magnitudes ===\n\n==== Definiciones ====\n*Coeficiente: Por defecto, el valor es 1. Si necesita sumar al valor original, el coeficiente tiene que tener la parte entera al menos en 1. En el caso de magnitudes no estándar, los valores del precio del producto puede estar incluido en el mismo, por lo que hay que verificar en este caso los valores que se ingresen en la [[Tabla:precios]]\n*Offset: Por defecto, el valor es 0\n\n==== Atributos de Productos/Elementos ====\n* M2 = Metro Cuadrado\nPrecio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho)*Coeficiente Ancho) * ((Alto + OffsetAlto)*Coeficiente Alto))/100000) * Coeficiente Elemento)\n\n* ML = Metro Lineal\n<Del>Precio Unitario = Precio determinado por tipo de cliente * (((((Ancho + OffsetAncho) * 2 * Coeficiente Ancho) + ((Alto + OffsetAlto) * 2 * Coeficiente Alto)) / 1000) * Coeficiente Elemento).</Del>\n\n* MG = Magnitud Galarza\nPrecio Unitario = Precio determinado por tipo de cliente * ((((Alto + OffsetAlto) * CoeficienteAlto) + (Ancho + OffsetAncho) * CoeficienteAncho)) / 1000) * Coeficiente Elemento)\n\n* UN = Unidad\nPrecio Unitario = Precio determinado por tipo de cliente * Coeficiente Elemento\n\n=== Triggers ===\n<small>\n{| class=\"wikitable\"\n| <center>\'\'\'Trigger\'\'\'</center>\n| <center>\'\'\'Event\'\'\'</center>\n| <center>\'\'\'Table\'\'\'</center>\n| <center>\'\'\'Statement\'\'\'</center>\n| <center>\'\'\'Timing\'\'\'</center>\n\n|-\n| Alta_ListasPrecios\n| INSERT\n| listasprecios\n| <pre>BEGIN\n   DECLARE vListaVieja,vListaNueva INT(5);\n   DECLARE vFechaModificacion DATE;\n   DECLARE vHoraModificacion TIME;\n   SET vListaNueva = (SELECT Lista FROM listavigente);\n   SET vListaVieja = (SELECT MAX(listasprecios.Lista) \n                      FROM listasprecios \n                      WHERE listasprecios.Lista <> NEW.Lista);\n   SET vFechaModificacion = CURDATE();\n   SET vHoraModificacion = CURTIME();\n   INSERT INTO precios (\n      `precios`.`Lista`,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      `precios`.`FechaModificacion`,\n      `precios`.`HoraModificacion`)(\n   SELECT    vListaNueva,\n      `precios`.`ProductoID`,\n      `precios`.`PrecioProd01`,\n      `precios`.`PrecioProd02`,\n      `precios`.`PrecioProd03`,\n      vFechaModificacion,\n      vHoraModificacion\n   FROM precios \n   WHERE `precios`.`Lista` = vListaVieja);\nEND</pre>\n| AFTER\n\n|-\n| Alta_LogPrecios\n| INSERT\n| logprecios\n| <pre>BEGIN\n   DECLARE vCategoriaID,vProveedorID,vPaso VARCHAR(5);\n   SET vCategoriaID = IF(ISNULL(`NEW`.`CategoriaID`),\' \',`NEW`.`CategoriaID`);\n   SET vProveedorID = IF(ISNULL(`NEW`.`ProveedorID`),\' \',`NEW`.`ProveedorID`);\n   SET `NEW`.`FechaModificacion` = CURDATE();\n   SET `NEW`.`HoraModificacion` = CURTIME();\n   SET `NEW`.`Lista` = (SELECT max(`listasprecios`.`Lista`) FROM `listasprecios`);\n   IF ISNULL(NEW.CategoriaID) THEN\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE    `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista`;\n         SET vPaso=\'A\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`ProveedorID` = NEW.ProveedorID;\n         SET vPaso=\'B\';\n      END IF;\n   ELSE\n      IF ISNULL(NEW.ProveedorID) THEN\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   `precios`.`ProductoID` = `productos`.`ProductoID` AND\n               `precios`.`Lista` = `NEW`.`Lista` AND\n               `productos`.`CategoriaID` = NEW.CategoriaID;\n         SET vPaso=\'C\';\n      ELSE\n         UPDATE `precios`,`productos`\n         SET    `precios`.`PrecioProd01` = `precios`.`PrecioProd01` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd02` = `precios`.`PrecioProd02` * `NEW`.`Coeficiente`,\n            `precios`.`PrecioProd03` = `precios`.`PrecioProd03` * `NEW`.`Coeficiente`,\n            `precios`.`FechaModificacion` = CURDATE(),\n            `precios`.`HoraModificacion` = CURTIME()\n         WHERE   \n            `precios`.`ProductoID` = `productos`.`ProductoID` AND\n            `precios`.`Lista` = `NEW`.`Lista` AND\n            `productos`.`CategoriaID` = vCategoriaID AND\n            `productos`.`ProveedorID` = vProveedorID;\n         SET vPaso=\'D\';\n      END IF;\n   END IF;\n   SET `NEW`.`RowsMod` = ROW_COUNT();\nEND</pre>\n| BEFORE\n\n|-\n| Alta_Precio\n| INSERT\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Actualiza_Precio\n| UPDATE\n| precios\n| <pre>\'BEGIN\n   SET    NEW.FechaModificacion = CURDATE(),\n      NEW.HoraModificacion = CURTIME();\n  END\'</pre>\n| BEFORE\n\n|-\n| Alta_Productos\n| INSERT\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = NEW.ProductoID;\n    INSERT INTO precios (`precios`.`Lista`, \n                  `precios`.`ProductoID`, \n                  `precios`.`PrecioProd00`,\n                  `precios`.`PrecioProd01`, \n                  `precios`.`PrecioProd02`, \n                  `precios`.`PrecioProd03`)\n           VALUES(vLista, vProductoID, 0, 0, 0, 0);\n    INSERT INTO composicion (`composicion`.`ProductoID`,\n                     `composicion`.`ElementoID`,\n                     `composicion`.`ValorElemento`,\n                     `composicion`.`ElementoPM`)\n           VALUES(vProductoID,vProductoID,1, 1);\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Productos\n| DELETE\n| productos\n| <pre>BEGIN\n    DECLARE vLista INT(5);\n    DECLARE vProductoID CHAR(8);\n    SET vLista = (SELECT Lista FROM listavigente);\n    SET vProductoID = OLD.ProductoID;\n    DELETE FROM precios WHERE ProductoID=OLD.ProductoID AND Lista=vLista;\n    DELETE FROM composicion WHERE ProductoID=OLD.ProductoID OR ElementoID=OLD.ProductoID;\nEND</pre>\n| AFTER\n\n|-\n| AltaTransaccion\n| INSERT\n| transacciones\n| <pre>BEGIN\n   SET   NEW.TransaccFecha = CURDATE(),\n      NEW.TransaccHora = CURTIME();\nEND</pre>\n| BEFORE\n\n|-\n| Baja_Presupuesto\n| DELETE\n| vidquoten1\n| <pre>BEGIN\n    DELETE FROM vidquoten2\n    WHERE vidquoten2.VidQuoteID=OLD.VidQuoteID;\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID;\n  END</pre>\n| AFTER\n\n|-\n| Baja_Item_Presupuesto\n| DELETE\n| vidquoten2\n| <pre>\'BEGIN\n    DELETE FROM vidquoten3\n    WHERE vidquoten3.VidQuoteID=OLD.VidQuoteID AND\n     vidquoten3.VidQuoteItem=OLD.VidQuoteItem;\n  END\'</pre>\n| AFTER\n\n|-\n| Baja_Elemento_Presupuesto\n| DELETE\n| vidquoten3\n| <pre>BEGIN\n   DELETE FROM vidquoten4\n    WHERE    vidquoten4.VidQuoteID=OLD.VidQuoteID AND\n         vidquoten4.VidQuoteItem=OLD.VidQuoteItem AND\n         vidquoten4.VidQuoteElementoID=OLD.VidQuoteElementoID;\nEND</pre>\n| AFTER\n|}\n</small>\n\n=== Reportes ===\n<small>\n</small>\n\n=== Procedimientos ===\n<small>\n</small>\n\n=== ACL ===\n# Verificar que la ODB esté registrada en el profile de LO/OO (el getcontext hace referencia a eso)\n# Grabar con semilla de nombre de datasource con el texto -> \"sdbc:mysql:odbc:\'\'<datasource>\'\'\"\n\'\'\'Ingreso de Registro en Tabla\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wsKey3\n	) \nVALUES(\n	ENCODE(<MAC Address en minúscula sin separadores>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<Cantidad de Usuarios en formato fill 0 de 3 dígitos>,\"sdbc:mysql:odbc:<datasource>\"),\n	ENCODE(<FechaLimite en ISO Format>,\"sdbc:mysql:odbc:<datasource>\")\n	)\n</pre></small>\n\'\'\'Ejemplo\'\'\'\n<small><pre>\nINSERT INTO wscontrol (\n	wskey1,\n	wskey2,\n	wskey3\n	) \nVALUES(\n	ENCODE(SUBSTRING_INDEX(UUID(), \'-\', -1),\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"001\",\"sdbc:mysql:odbc:FazzGlassGestion\"),\n	ENCODE(\"20121231\",\"sdbc:mysql:odbc:FazzGlassGestion\")\n	)\n</pre></small>\n\'\'\'Corroborar ACL\'\'\'\n<small><pre>\nSELECT\n	wskey1 AS Cantidad,\n	wskey2 AS Usuarios,\n	wskey3 AS FechaLimite,\n	CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) AS DecMAC,\n	CAST(DECODE(wskey2,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(03)) AS DecUsuarios,\n	CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)) AS DecFechaLimite\nFROM\n	wscontrol\n</pre></small>\n\'\'\'Alargar ACL 1 mes más\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 DATE_FORMAT(STR_TO_DATE(CAST(DECODE(wskey3,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(08)),\n                  \'%Y%m%d\')+INTERVAL 1 MONTH,\'%Y%m%d\'),\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n\'\'\'Cambiar Fecha ACL\'\'\'\n<small><pre>\nUPDATE wscontrol \n    SET wskey3 = ENCODE(\n                 \"20121231\",\n                 \"sdbc:mysql:odbc:FazzGlassGestion\")\n    WHERE CAST(DECODE(wskey1,\'sdbc:mysql:odbc:FazzGlassGestion\') AS Char(12)) = SUBSTRING_INDEX(UUID(),\'-\',-1)\n</pre></small>\n{{tecla|Ctrl|A}}\n\n=== Instalacion .odb ===\n*Copiar el documento .odb\n*Cambiar el usuario de la base de datos\n*Cambiar la constante [[oCheckEstadoLicencia]] a True\n*Grabar documento .odb\n*Cambiar a nivel de Sistema Operativo a ReadOnly\n\n=== Documentación de Usuario ===\n[[WikiUserSpanex]]','utf-8'),(807,'Gestión Retail Industria\n\n== Spalnex Gestion ==\nSpanex es una aplicación orientada a satisfacer la demanda de soporte a la gestión de productos y servicios de terminación del mercado de la construcción civil. Esta gestión toma forma de una serie de módulos que articulan los diferentes procesos de gestión administrativa y los concernientes a los propios de producción.\n\nBasado y diseñado en herramientas de código abierto, la aplicación desde su concepción, tiene el claro objetivo que la misma un engranaje eficiente en la cadena de maximización del retorno de la inversión.\n\nConsta de módulos que permiten desde la definición de componentes de productos y servicios hasta el control de la producción de los mismos.\nExisten 2 entidades principales con las que se trabaja dentro de la aplicación, a saber:\n\n* Productos\n* Contactos\n\nDentro del concepto de \'\'\'Productos\'\'\' quedan incluidos todos aquellos elementos que puede conformar un producto terminado, un modelo o un conjunto de elementos a comercializar como así también, aquellos que puedan ser comercializados por si solos.\nDentro del concepto de \'\'\'Contactos\'\'\' quedan incluidos todas aquellas personas físicas o jurídicas que sean objeto de alguna operación dentro de la aplicación.\n\nLa versión actual no incluye la gestión gráfica del armado de los elementos, sin que esto sea un impedimento para poder generar productos comercializables.\n\nPara profundizar en los conceptos, se detallan a continuación algunos subesquemas que son de importancia dentro de la aplicación.\n\n=== Gestión de Productos ===\nEn la gestión de productos se engloban una serie de procesos necesarios para mantener la integridad y el normal desenvolvimiento de los módulos de la aplicación. Aquí se han definido en forma individual (obviamente interrelacionadas entre si) varias entidades a saber:\n\nNota: a lo largo de esta ayuda, se podrán observar algunos gráficos conceptuales que tienen como algunas figuras que significan\n\n[[Archivo:FZG.DOCS.Procesos.Ayuda.jpg|center|Vista Conceptual del Proceso]]\n\nDenominamos productos a todos los Productos Terminados y/o Materias Primas que lo componen. Dentro de esta estructura de información incluye la información referida a las magnitudes de control del producto y los coeficientes de precios a aplicar sobre precios de costo del producto para la venta y la imagen del producto, en el caso que exista\n\n[[Archivo:FZG.DOCS.Procesos.Productos.jpg|center|Vista Conceptual del Proceso]]\n\nSe observará más adelante que el concepto de producto es amplio y que incluye subproductos, parámetros de subproductos, precios, composiciones diferenciadas y otros elementos que permiten tener un mantener un portfolio de productos muy variada. Para esto se subdivide los productos en:\n\n*Productos PPD: (Propiamente Dicho. A partir de aquí, \"Productos\"\n*Precios: Precios de los productos\n*Composiciones: Conformación de conjuntos de productos o elementos para conformar otros productos comercializables. Se incluyen aquellos aspectos de control de forma, y categoría de producto. Es necesario aclarar que dada la versatilidad de la aplicación, puede incluirse dentro de un producto compuesto, otros subproductos o elementos tales como Mano de Obra, Colocación, Transporte, etc.\n\n==== Productos ====\nAl tiempo del ingreso de la información de producto, y a efectos de mantener la integridad de las estructuras de información, una vez finalizado el ingreso de la información de ese producto, al almacenarse, también genera en forma automática registraciones dentro de las estructuras de precios y de composición, con los valores de precios en 0 y un registro de composición con los valores de coeficientes asociados en 0\n\nEs importante diferenciar los coeficientes indicados dentro de la estructura de producto y los indicados dentro de la estructura de composición. Dada la facilidad de integración de \"productos\" o \"kits\" con diferentes \"componentes\" o \"elementos\", un elemento dentro de un producto puede tener valores diferentes a el mismo elemento aplicado para otro producto. En el caso de productos como las aberturas, probablemente las dimensiones reales de los interiores de una ventana sean diferentes a las de otro modelo de ventana aunque estas ventanas en si tengan la misma dimensión. En el caso que se desee precisión de costos, estos coeficientes y valores serán de suma importancia.\n\n==== Precios ====\nSe refiere a la lista de precios. \nDebe existir una registración de precios por cada producto activo. Si el ingreso del producto se realiza dentro de los procesos normales, esta registración debiera existir.\nPor cada registración existen, a la fecha, 4 tipos de precios diferentes. Normalmente, El precio \"0\" está indicado como Precio de Costo\". El resto (3 definidos en el release 20120328) puede ser aplicado a discreción del usuario. Nuestra sugerencia es dividir la política comercial en 3 tipos de clientes. La asignación del tipo de cliente se realiza dentro del Mantenimiento de Contactos.\n\n[[Archivo:FZG.DOCS.Procesos.Precios.jpg|center|Vista Conceptual del Proceso]]\n\nLos valores de cada uno de los precios por Tipo de Cliente pueden automatizarse a través de los coeficientes de Precios establecidos dentro del esquema de datos de Producto.\n\nExisten a la fecha 5 procesos que afectan directamente este concepto:\n\n*Cambio Masivo: Aplica un coeficiente de actualización a todos los tipos de precios de acuerdo a un filtro de producto dado.\n*Masivo Coeficientes Actualización: Permite modificar los coeficientes de actualización de acuerdo al \"Precio 0\" en forma masiva de acuerdo a un filtro de producto dado.\n*Precios General: Permite modificar los valores de precios (no coeficientes) por producto individual.\n*Precios Tabular Normal: Permite modificar los valores de precios por producto en un formato tabular.\n*Precios Tabular por Proceso: Permite modificar los valores de precios por conjunto de productos, aplicando en forma selectiva el coeficiente a utilizar.\n\n==== Composición ====\nEsta estructura de información alberga una matriz de Producto-Elemento/Componente de Producto. Esta esquema permite definir los elementos componentes de un producto sean estos básicos (necesarios) o optativos.\n\n[[Archivo:FZG.DOCS.Procesos.Composicion.jpg|center|Vista Conceptual del Proceso]]\n\nUn simple ejemplo de esta definición es el siguiente:\n\n<small>\n{| class=\"wikitable\"\n|+\n!Producto\n!Componentes\n!Necesario\n|-\n|Ventana Corrediza \"XXXXX\"\n|Marco Línea \"XXXXX\"<br/>Vidrio Incoloro 4mm<br/>Vidrio Templado Opaco<br/>Accesorios Línea \"XXXXX\"<br/>Instalación Ventana Corrediza \"XXXXXX\"\n|align=\"center\" |Si<br/>No<br/>No<br/>Si<br/>Si\n|-\n|}\n</small>\n\nEn el ejemplo precedente, observamos una abertura con sus componentes y con la posibilidad de definir entre 2 opciones con que tipo de interior se podrá presupuestar.\n\nEste esquema permite mantener variable la definición de productos de acuerdo a los precios individuales de cada elemento.\n\nDebido a que de este esquema partirá el cálculo de los precios, por defecto, al ingresar un nuevo producto, en forma automática se agregará un registro de componente (mínimo) con los datos del Elemento igual al Producto. Esto no debe modificarse a menos que quiera establecer un producto compuesto, en cuyo caso, solo será necesario contar con un producto básico.\n\n==== Proveedores ====\nSe refiere a los códigos de proveedores. Inicialmente se utiliza para diferencias los productos de acuerdo a su procedencia y para facilitar el proceso de cambio de precios, siendo estos códigos los atributos de diferenciación entre materias primas similares.\n\n=== Presupuestos ===\n----\nEste módulo permite gestionar presupuestaciones para clientes de forma amena y precisa, dependiendo su amplia flexibilidad de cuales hayan sido los datos ingresados en la conformación de los productos.\n\nEs posible \n\n\n==== Presupuesto: Alta + Pendientes ====\n\nEste proceso permite la gestión de propuestas de venta para todo tipo de clientes. Cuenta con un diseño que permite una visualización integral de los productos y procesos que intervienen en la conformación de esta propuesta de venta. Las acciones posibles dentro de este proceso son:\n\n*Propuestas\n**Alta\n***Propuestas de Ventas\n***Rápida de Clientes\n**Modificación\n***Productos\n***Cantidades\n***Dimensiones\n***Inclusiones\n***Actualización de Precios\n**Consulta\n***Consulta Registro secuencial\n***Consulta por Filtros\n**Activación\n**Impresión\n**Envío por circuito de correo electrónico\n**Copia de Presupuestos\n\nEste proceso permite el ingreso y visualización de presupuestos pendientes. El formulario se divide en 4 partes:\n* \'\'\'Cabecera\'\'\': Son los datos principales del formulario.\n* \'\'\'Detalle Presupuesto\'\'\': Se detallan todos los productos que formarán parte del presupuesto\n* \'\'\'Detalle Producto\'\'\': Se detalla todos los elementos que conforma un producto y sus adicionales.\n* \'\'\'Detalle de Parámetros Adicionales de Item\'\'\': Se detallan los datos inherentes a posición, cantidades o cualquier otro dato adicional que no dependa en forma directa a los datos de Cantidad, Ancho o Largo y Alto.\n\n[[Archivo:FZG.DOCS.Procesos.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Cabecera\'\'\': Se destaca la inclusión de los datos del cliente y la asignación de un agente de venta del presupuesto. Es importante la definición de los datos del cliente ingresado dado que dependiendo de la tipificación del mismo varariá en forma directa los precios a aplicar en los presupuestos. Últimamente, se a agregado la información de Agente Comercial que corresponde a quién es responsable del presupuesto y gestor del cumplimiento del ingreso de toda la información necesaria tanto para el cálculo presupuestario sino también para su posterior fabricación en caso de ser aprobado.\n\n[[Archivo:FZG.DOCS.Pantalla.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Detalle Presupuesto\'\'\': Se detallan los datos mínimos de Productos necesarios para la confección del presupuesto. Estos datos son: Cantidad, Producto (Código y/o Descripción), Ancho/Largo y finalmente Alto. Para los casos de productos definidos con Magnitud igual a Unidad (UN), solo tomará la información indicada en el campo de Cantidad.\n\nAl tiempo del ingreso de la información de Productos, en forma automática se completará la sección de \'\'\'Detalle Producto\'\'\'. Esta sección es la que permitirá agregar los adicionales definidos en su oportunidad para completar el producto mencionado. Cabe aclarar, que solo se podrán agregar o eliminar lo elementos del Detalle de Producto que no formen parte del [[Esquema Básico de un Producto]]. A su vez, si los Elementos de los Productos ingresados tuviesen Parámetros adicionales a especificar, se agregarán en forma automática dentro de la 4º sección del formulario.\n\nDentro del detalle del producto se observan los siguientes datos:\n* Elemento: Código del elemento que forma parte del Producto\n* Descripción Elemento: Descripción del elemento que forma parte del Producto\n* Precio Unitario: Precio por Unidad de Magnitud del Producto de acuerdo a las condiciones del presupuesto (Tipo de Cliente, magnitud especificada, etc.)\n* Precio: Precio del Elemento de acuerdo a las condiciones del presupuesto y las cantidades especificadas.\n* Detalle: Indicador para incluir la Descripción del Elemento dentro de la Descripción impresa del Presupuesto al Cliente.\n\nEsta sección del formulario presenta las siguientes características:\n* Es indistinto el ingreso por Código de Elemento o por la Descripción del mismo.\n* Los campos de Código de Elemento y Descripción del Elemento poseen un botón de ayuda contextual. Solo se desplegarán los valores tanto de Código de Elemento como de Descripción de Elemento indicados dentro de la Composición de Producto.\n\nAdemás, como se mencionó anteriormente, existe una 4º Sección de \'\'\'Parámetros Adicionales\'\'\' que pueden afectar a un Presupuesto. En este caso, se detallan los valores distintos a las medidas generales que afectan al presupuesto y su posterior diseño o colocación.\nEn esta sección pueden incluirse cualquier valor y depende de lo ingresado dentro de la tabla de [[Valores Adicionales de Productos]] (Ver [[Mantenimiento de Datos Auxiliares]])\n\nLas características definidas de este formulario son las siguientes:\n* El esquema de información posee 4 grupos de datos ya comentados.\n* Los grupos de datos son independientes excepto al tiempo de ejecución de este mismo formulario y en las acciones de ingreso de información de cada grupo.\n** El alta de un Producto en el Detalle Presupuesto presupone el ingreso en forma automática de al menos una registración en el Detalle Producto.\n** El alta de un Producto se referencia a el Producto en si y su composición si la misma tiene más de un Elemento asociado.\n\n==== Presupuesto: Aprobación ====\nA los efectos futuros de gestión de fábrica y de cobranzas, cada elemento aprobado no podrá ser modificado.\n\n==== Presupuesto: Aprobados ====\nConsulta de Presupuestos Aprobados a la fecha.\n\n=== Gestión de Valores ===\n----\nUna de las características de la aplicación es que puede hacer un seguimiento de los valores afectados dentro del proceso de gestion de comercialización, sin que esto reemplaze las formas y comprobantes fiscales, siendo de exclusivo uso interno de la empresa.\n\nEsta gestión se divide en\n\n*Cheques\n*Pagos\n*Cobranzas\n\nTodos estos procesos sirven como \'\'hoja de trabajo\'\' para las registraciones legales y/o fiscales correspondientes y \'\'\'no es objetivo de la presente aplicación reemplazar las mismas\'\'\'.\n\n==== Cheques ====\nRepresenta la registración de cheques de terceros entregados en parte de pago. Los mismos son incorporados por medio del proceso de cobranza y pueden ser endosados en el proceso de Pagos.\n\nEste proceso solo es de consulta y sirve para tener control de los valores registrados y disponibles.\n\n==== Cobranzas ====\nRepresenta la registración de las cobranzas\n\n==== Pagos ====\nRepresenta la registración de las pagos de proveedores/gastos generales. Posee la característica de asociar formas de pago para un mejor control de los valores destinados a tal efecto.\nLos atributos definidos para esta registración son:\n*# de la Transaccion\n*Fecha de la Transaccion\n*Fecha Valor del Pago\n*Forma de Pago: En este caso, las formas habilitadas hasta el momento son las siguientes\n**CHT - Cheque de Terceros: Cheques de Terceros aptos para Endosar. \n**OPP - Orden de Pago Proveedores: Cheques propios o cualquier otro documento ejecutable a entregar\n**EFO - Efectivo Caja Chica\n*Proveedor / Razon Social\n*Tipo de Documento Origen: El documento que origina la obligación de pago\n**OC - Orden de Compra\n**FC - Factura\n*NºDocumento\n*Importe\n*Detalle: Permite el ingreso del detalle del pago o la factura para su clara identificación.\n*Imagen Documento Origen: Este proceso permite adosar la imagen del documento para su fácil visualización en caso de ser requerido\n\nEn la pantalla correspondiente, se despliegan 3 grandes bloques de información:\n*Filtro General: para la visualización de las registraciones de pago efectuadas\n*Pagos: para la visualiación en detalle de las registraciones de pago efectuadas\n*Documento Asociado: En esta ventana se desplegarán diferentes tipo de controles asociados a la forma de pago seleccionada o elegida para la registración de pago\nEn el caso de indicar como forma de pago el código \"CHT - Cheque de Terceros, a la derecha de la registración se desplegará la ventana de documentos asociado es en la que se emarcarán todos los cheques existentes disponibles para su endoso. Para seleccionar los mismos, pulse sobre la grilla de visualización de los documentos.\nEn el caso de indicar como forma de pago el código \"OPP - Orden de Pago Proveedores, a la derecha de la registración se desplegará la ventana con la posibilidad de inscribir el documento emitido.\nEn el caso de indicar como forma de pago el código \"EFO\" se no se habilitará la ventana de Documento asociado, solo quedando habilitados los atributos arriba indicados.\n\n== Generalidades ==\n\nEsta versión de la aplicación se encuentra desarrollada bajo un ambiente propicio para la gestión de tareas generales de oficina. Este esquema permite gestionar la información en forma clara y sencilla mientras se tenga conocimiento de la estructura de información de la aplicación.\n\nComo ya se encuentra indicado, la gestión de datos se encuentra basada en la definición de formularios que permiten en general el ingreso y mantenimiento de la información volcada dentro de la base de datos de la aplicación.\n\nMuchos de los formularios ya tienen incorporada dentro del mismo una facilidad de filtro simple, que atañe a los Productos, Categoría o Proveedor de los mismos, pero también es posible realizar búsquedas de mayor precisión con el entorno donde se ha desarrollado la aplicación\n\nEstos formularios, en su gran mayoría a menos que se especifique lo contrario, permiten gestionar el ingreso modificación y eliminación de documentos o registraciones ingresadas en la aplicación.\n\nEl otro elemento que es posible ejecutar dentro de los formularios es la de consulta y consulta parcial. Para esto último en necesario indicar cuales van a ser los atributos por los cuales esos datos van a estar desplegados. A nivel del usuario, la definición de la consulta parcial consiste en presentar el mismo formulario pero en blanco para poder indicar, campo por campo cuales van a ser los datos que servirá de atributo de selección de la visualización.\n\nPara el caso particular de los campos de texto que desconozcamos parte del criterio, el mismo puede ser reemplazado por la siguiente sintaxis:\n<small><pre>\nLIKE %<cadena de caracteres que respondan a la búsqueda>%\n</pre></small>\n\nComo se indica en el párrafo anterior, es imprescindible anteponer el prefijo \"LIKE\" antes a la cadena de caracteres. Se observa también que a ambos lados de la cadena de caracteres se sitúa el signo de porcentaje (%). Este signo tiene la función de comodín. Las siguientes cadenas sirven de ejemplo:\n<small><pre>\nLIKE Ventana%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que comiencen con la palabra \"Ventana\".\n<small><pre>\nLIKE %Vidrio%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que tengan en cualquier posición dentro del campo seleccionado la palabra \"Ventana\".\n\n== Referencia Rápida ==\n\n== Respuestas a Preguntas Frecuentes ==\n;¿Que sucede cuando se ingresa un nuevo Producto?\n:El ingreso de un nuevo Producto se utiliza cada vez que exista un producto o elemento componente de un producto para indicar los elementos mínimos de identificación de ese Producto o \"Materia Prima\" (denominado \"Elemento\"). Además, en forma automática se generan registraciones tanto en las tablas de Precios como en la de Composición, marcando en esta última el atributo de Elemento Primario para asociarlo en el caso que se coloque como elemento único dentro de una presupuestación.\n;¿Que sucede cuando elimino un presupuesto?\n:Se eliminan todas las registraciones asociadas (productos y elementos asociados al producto.\n;¿Que sucede cuando elimino un producto de un presupuesto?\n:Se eliminan todas las registraciones asociadas (de elementos componentes de ese producto en ese presupuesto, que pueden variar en cada presupuesto).\n;¿Que sucede cuando modifico las magnitudes de un producto en un presupuesto?\n:Se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico las cantidades de un producto en un presupuesto?\n:De la misma manera cuando se modifican las magnitudes, se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico un producto (Código de Producto o Descripción indistintamente)?\n:Se procede a eliminar las registraciones existentes del producto modificado y se agregan los elementos asociados a ese producto con el precio actualizado de acuerdo a la lista de precios vigente.\n;¿Se puede recuperar un presupuesto eliminado?\n:No. En el caso que se haya pulsado por error la tecla de eliminación, existe una pregunta de seguridad antes de eliminar físicamente la registración del presupuesto.\n;¿Que sucede cuando ingreso un producto en un presupuesto?\n:La aplicación automáticamente ingresa como elementos básicos aquellos que hayan sido señalados como básicos dentro del esquema de Composición de Producto. Si el Producto tiene otros elementos asociados pero no están definidos como básicos, es posible ingresarlos debajo de los básicos. En este caso en particular, solo estará permitido ingresar aquellos productos asociados en la composición previa y no otros Productos/Elementos.\n;¿Que significa Aprobar un Presupuesto?\n:Es el proceso que permite \"fijar\" un prespuesto y que no pueda ser modificado.\n;¿Porque no puedo enviar por correo electrónico un presupuesto?\n:Probablemente no esté incorporado el dato de Correo Electrónico Principal dentro de Contactos. Proceda a mantener actualizada la información de Contactos.\n;¿A que se refiere el Mantenimiento de Contactos?\n:La aplicación define como Contacto a toda persona física o jurídica que tenga relevancia dentro del proceso. Esto significa que tanto los Clientes, Proveedores, Agentes Comerciales y otras personas, deben figurar dentro de esta Entidad. La diferenciación de cada uno de ellos se encuentra en la asignación las diferentes categorías desplegadas en el formulario correspondiente.\n\n== Glosario ==\n{|\n! Concepto\n! Definición\n|-\n|\'\'Formularios\'\'\n|Los formularios ofrecen un método o rutina para el ingreso controlado de datos. En si, un formulario consiste en un conjunto de elementos o controles que mantiene un dato.\n|-\n| \'\'Base de Datos\'\'\n| Conjunto de componentes de información. Puede contener estructuras de datos como así también rutinas y funciones asociadas a las estructuras de datos\n|-\n| \'\'Tabla\'\'\n| Conjunto de datos referentes una entidad de información. Puede ser representada como una planilla de 2 dimensiones con registraciones y atributos comunes de esa entidad de información.\n|-\n| \'\'Entidad\'\'\n| Conjunto de datos referentes que conforman una unidad cuyos atributos la diferencian de otras unidades registrales. La conformación de una entidad se puede dar basada en solo una tabla o un conjunto de ellas.\n|-\n|}','utf-8'),(808,'Gestión Retail Industria\n\n== Spalnex Gestion ==\nSpanex es una aplicación orientada a satisfacer la demanda de soporte a la gestión de productos y servicios de terminación del mercado de la construcción civil. Esta gestión toma forma de una serie de módulos que articulan los diferentes procesos de gestión administrativa y los concernientes a los propios de producción.\n\nBasado y diseñado en herramientas de código abierto, la aplicación desde su concepción, tiene el claro objetivo que la misma un engranaje eficiente en la cadena de maximización del retorno de la inversión.\n\nConsta de módulos que permiten desde la definición de componentes de productos y servicios hasta el control de la producción de los mismos.\nExisten 2 entidades principales con las que se trabaja dentro de la aplicación, a saber:\n\n* Productos\n* Contactos\n\nDentro del concepto de \'\'\'Productos\'\'\' quedan incluidos todos aquellos elementos que puede conformar un producto terminado, un modelo o un conjunto de elementos a comercializar como así también, aquellos que puedan ser comercializados por si solos.\nDentro del concepto de \'\'\'Contactos\'\'\' quedan incluidos todas aquellas personas físicas o jurídicas que sean objeto de alguna operación dentro de la aplicación.\n\nLa versión actual no incluye la gestión gráfica del armado de los elementos, sin que esto sea un impedimento para poder generar productos comercializables.\n\nPara profundizar en los conceptos, se detallan a continuación algunos subesquemas que son de importancia dentro de la aplicación.\n\n=== Gestión de Productos ===\nEn la gestión de productos se engloban una serie de procesos necesarios para mantener la integridad y el normal desenvolvimiento de los módulos de la aplicación. Aquí se han definido en forma individual (obviamente interrelacionadas entre si) varias entidades a saber:\n\nNota: a lo largo de esta ayuda, se podrán observar algunos gráficos conceptuales que tienen como algunas figuras que significan\n\n[[Archivo:FZG.DOCS.Procesos.Ayuda.jpg|center|Vista Conceptual del Proceso]]\n\nDenominamos productos a todos los Productos Terminados y/o Materias Primas que lo componen. Dentro de esta estructura de información incluye la información referida a las magnitudes de control del producto y los coeficientes de precios a aplicar sobre precios de costo del producto para la venta y la imagen del producto, en el caso que exista\n\n[[Archivo:FZG.DOCS.Procesos.Productos.jpg|center|Vista Conceptual del Proceso]]\n\nSe observará más adelante que el concepto de producto es amplio y que incluye subproductos, parámetros de subproductos, precios, composiciones diferenciadas y otros elementos que permiten tener un mantener un portfolio de productos muy variada. Para esto se subdivide los productos en:\n\n*Productos PPD: (Propiamente Dicho. A partir de aquí, \"Productos\"\n*Precios: Precios de los productos\n*Composiciones: Conformación de conjuntos de productos o elementos para conformar otros productos comercializables. Se incluyen aquellos aspectos de control de forma, y categoría de producto. Es necesario aclarar que dada la versatilidad de la aplicación, puede incluirse dentro de un producto compuesto, otros subproductos o elementos tales como Mano de Obra, Colocación, Transporte, etc.\n\n==== Productos ====\nAl tiempo del ingreso de la información de producto, y a efectos de mantener la integridad de las estructuras de información, una vez finalizado el ingreso de la información de ese producto, al almacenarse, también genera en forma automática registraciones dentro de las estructuras de precios y de composición, con los valores de precios en 0 y un registro de composición con los valores de coeficientes asociados en 0\n\nEs importante diferenciar los coeficientes indicados dentro de la estructura de producto y los indicados dentro de la estructura de composición. Dada la facilidad de integración de \"productos\" o \"kits\" con diferentes \"componentes\" o \"elementos\", un elemento dentro de un producto puede tener valores diferentes a el mismo elemento aplicado para otro producto. En el caso de productos como las aberturas, probablemente las dimensiones reales de los interiores de una ventana sean diferentes a las de otro modelo de ventana aunque estas ventanas en si tengan la misma dimensión. En el caso que se desee precisión de costos, estos coeficientes y valores serán de suma importancia.\n\n==== Precios ====\nSe refiere a la lista de precios. \nDebe existir una registración de precios por cada producto activo. Si el ingreso del producto se realiza dentro de los procesos normales, esta registración debiera existir.\nPor cada registración existen, a la fecha, 4 tipos de precios diferentes. Normalmente, El precio \"0\" está indicado como Precio de Costo\". El resto (3 definidos en el release 20120328) puede ser aplicado a discreción del usuario. Nuestra sugerencia es dividir la política comercial en 3 tipos de clientes. La asignación del tipo de cliente se realiza dentro del Mantenimiento de Contactos.\n\n[[Archivo:FZG.DOCS.Procesos.Precios.jpg|center|Vista Conceptual del Proceso]]\n\nLos valores de cada uno de los precios por Tipo de Cliente pueden automatizarse a través de los coeficientes de Precios establecidos dentro del esquema de datos de Producto.\n\nExisten a la fecha 5 procesos que afectan directamente este concepto:\n\n*Cambio Masivo: Aplica un coeficiente de actualización a todos los tipos de precios de acuerdo a un filtro de producto dado.\n*Masivo Coeficientes Actualización: Permite modificar los coeficientes de actualización de acuerdo al \"Precio 0\" en forma masiva de acuerdo a un filtro de producto dado.\n*Precios General: Permite modificar los valores de precios (no coeficientes) por producto individual.\n*Precios Tabular Normal: Permite modificar los valores de precios por producto en un formato tabular.\n*Precios Tabular por Proceso: Permite modificar los valores de precios por conjunto de productos, aplicando en forma selectiva el coeficiente a utilizar.\n\n==== Composición ====\nEsta estructura de información alberga una matriz de Producto-Elemento/Componente de Producto. Esta esquema permite definir los elementos componentes de un producto sean estos básicos (necesarios) o optativos.\n\n[[Archivo:FZG.DOCS.Procesos.Composicion.jpg|center|Vista Conceptual del Proceso]]\n\nUn simple ejemplo de esta definición es el siguiente:\n\n<small>\n{| class=\"wikitable\"\n|+\n!Producto\n!Componentes\n!Necesario\n|-\n|Ventana Corrediza \"XXXXX\"\n|Marco Línea \"XXXXX\"<br/>Vidrio Incoloro 4mm<br/>Vidrio Templado Opaco<br/>Accesorios Línea \"XXXXX\"<br/>Instalación Ventana Corrediza \"XXXXXX\"\n|align=\"center\" |Si<br/>No<br/>No<br/>Si<br/>Si\n|-\n|}\n</small>\n\nEn el ejemplo precedente, observamos una abertura con sus componentes y con la posibilidad de definir entre 2 opciones con que tipo de interior se podrá presupuestar.\n\nEste esquema permite mantener variable la definición de productos de acuerdo a los precios individuales de cada elemento.\n\nDebido a que de este esquema partirá el cálculo de los precios, por defecto, al ingresar un nuevo producto, en forma automática se agregará un registro de componente (mínimo) con los datos del Elemento igual al Producto. Esto no debe modificarse a menos que quiera establecer un producto compuesto, en cuyo caso, solo será necesario contar con un producto básico.\n\n==== Proveedores ====\nSe refiere a los códigos de proveedores. Inicialmente se utiliza para diferencias los productos de acuerdo a su procedencia y para facilitar el proceso de cambio de precios, siendo estos códigos los atributos de diferenciación entre materias primas similares.\n\n=== Presupuestos ===\n----\nEste módulo permite gestionar presupuestaciones para clientes de forma amena y precisa, dependiendo su amplia flexibilidad de cuales hayan sido los datos ingresados en la conformación de los productos.\n\nEs posible \n\n\n==== Presupuestos ====\n\nEste proceso permite la gestión de propuestas de venta para todo tipo de clientes. Cuenta con un diseño que permite una visualización integral de los productos y procesos que intervienen en la conformación de esta propuesta de venta. Las acciones posibles dentro de este proceso son:\n\n*Propuestas\n**Alta\n***Propuestas de Ventas\n***Rápida de Clientes\n**Modificación\n***Productos\n***Cantidades\n***Dimensiones\n***Inclusiones\n***Actualización de Precios\n**Consulta\n***Consulta Registro secuencial\n***Consulta por Filtros\n**Activación\n**Impresión\n**Envío por circuito de correo electrónico\n**Copia de Presupuestos\n\n===== Características =====\n\n\nEste proceso permite el ingreso y visualización de presupuestos pendientes. El formulario se divide en 4 partes:\n* \'\'\'Cabecera\'\'\': Son los datos principales del formulario.\n* \'\'\'Detalle Presupuesto\'\'\': Se detallan todos los productos que formarán parte del presupuesto\n* \'\'\'Detalle Producto\'\'\': Se detalla todos los elementos que conforma un producto y sus adicionales.\n* \'\'\'Detalle de Parámetros Adicionales de Item\'\'\': Se detallan los datos inherentes a posición, cantidades o cualquier otro dato adicional que no dependa en forma directa a los datos de Cantidad, Ancho o Largo y Alto.\n\n[[Archivo:FZG.DOCS.Procesos.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Cabecera\'\'\': Se destaca la inclusión de los datos del cliente y la asignación de un agente de venta del presupuesto. Es importante la definición de los datos del cliente ingresado dado que dependiendo de la tipificación del mismo varariá en forma directa los precios a aplicar en los presupuestos. Últimamente, se a agregado la información de Agente Comercial que corresponde a quién es responsable del presupuesto y gestor del cumplimiento del ingreso de toda la información necesaria tanto para el cálculo presupuestario sino también para su posterior fabricación en caso de ser aprobado.\n\n[[Archivo:FZG.DOCS.Pantalla.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Detalle Presupuesto\'\'\': Se detallan los datos mínimos de Productos necesarios para la confección del presupuesto. Estos datos son: Cantidad, Producto (Código y/o Descripción), Ancho/Largo y finalmente Alto. Para los casos de productos definidos con Magnitud igual a Unidad (UN), solo tomará la información indicada en el campo de Cantidad.\n\nAl tiempo del ingreso de la información de Productos, en forma automática se completará la sección de \'\'\'Detalle Producto\'\'\'. Esta sección es la que permitirá agregar los adicionales definidos en su oportunidad para completar el producto mencionado. Cabe aclarar, que solo se podrán agregar o eliminar lo elementos del Detalle de Producto que no formen parte del [[Esquema Básico de un Producto]]. A su vez, si los Elementos de los Productos ingresados tuviesen Parámetros adicionales a especificar, se agregarán en forma automática dentro de la 4º sección del formulario.\n\nDentro del detalle del producto se observan los siguientes datos:\n* Elemento: Código del elemento que forma parte del Producto\n* Descripción Elemento: Descripción del elemento que forma parte del Producto\n* Precio Unitario: Precio por Unidad de Magnitud del Producto de acuerdo a las condiciones del presupuesto (Tipo de Cliente, magnitud especificada, etc.)\n* Precio: Precio del Elemento de acuerdo a las condiciones del presupuesto y las cantidades especificadas.\n* Detalle: Indicador para incluir la Descripción del Elemento dentro de la Descripción impresa del Presupuesto al Cliente.\n\nEsta sección del formulario presenta las siguientes características:\n* Es indistinto el ingreso por Código de Elemento o por la Descripción del mismo.\n* Los campos de Código de Elemento y Descripción del Elemento poseen un botón de ayuda contextual. Solo se desplegarán los valores tanto de Código de Elemento como de Descripción de Elemento indicados dentro de la Composición de Producto.\n\nAdemás, como se mencionó anteriormente, existe una 4º Sección de \'\'\'Parámetros Adicionales\'\'\' que pueden afectar a un Presupuesto. En este caso, se detallan los valores distintos a las medidas generales que afectan al presupuesto y su posterior diseño o colocación.\nEn esta sección pueden incluirse cualquier valor y depende de lo ingresado dentro de la tabla de [[Valores Adicionales de Productos]] (Ver [[Mantenimiento de Datos Auxiliares]])\n\nLas características definidas de este formulario son las siguientes:\n* El esquema de información posee 4 grupos de datos ya comentados.\n* Los grupos de datos son independientes excepto al tiempo de ejecución de este mismo formulario y en las acciones de ingreso de información de cada grupo.\n** El alta de un Producto en el Detalle Presupuesto presupone el ingreso en forma automática de al menos una registración en el Detalle Producto.\n** El alta de un Producto se referencia a el Producto en si y su composición si la misma tiene más de un Elemento asociado.\n\n==== Presupuesto: Aprobación ====\nA los efectos futuros de gestión de fábrica y de cobranzas, cada elemento aprobado no podrá ser modificado.\n\n==== Presupuesto: Aprobados ====\nConsulta de Presupuestos Aprobados a la fecha.\n\n=== Gestión de Valores ===\n----\nUna de las características de la aplicación es que puede hacer un seguimiento de los valores afectados dentro del proceso de gestion de comercialización, sin que esto reemplaze las formas y comprobantes fiscales, siendo de exclusivo uso interno de la empresa.\n\nEsta gestión se divide en\n\n*Cheques\n*Pagos\n*Cobranzas\n\nTodos estos procesos sirven como \'\'hoja de trabajo\'\' para las registraciones legales y/o fiscales correspondientes y \'\'\'no es objetivo de la presente aplicación reemplazar las mismas\'\'\'.\n\n==== Cheques ====\nRepresenta la registración de cheques de terceros entregados en parte de pago. Los mismos son incorporados por medio del proceso de cobranza y pueden ser endosados en el proceso de Pagos.\n\nEste proceso solo es de consulta y sirve para tener control de los valores registrados y disponibles.\n\n==== Cobranzas ====\nRepresenta la registración de las cobranzas\n\n==== Pagos ====\nRepresenta la registración de las pagos de proveedores/gastos generales. Posee la característica de asociar formas de pago para un mejor control de los valores destinados a tal efecto.\nLos atributos definidos para esta registración son:\n*# de la Transaccion\n*Fecha de la Transaccion\n*Fecha Valor del Pago\n*Forma de Pago: En este caso, las formas habilitadas hasta el momento son las siguientes\n**CHT - Cheque de Terceros: Cheques de Terceros aptos para Endosar. \n**OPP - Orden de Pago Proveedores: Cheques propios o cualquier otro documento ejecutable a entregar\n**EFO - Efectivo Caja Chica\n*Proveedor / Razon Social\n*Tipo de Documento Origen: El documento que origina la obligación de pago\n**OC - Orden de Compra\n**FC - Factura\n*NºDocumento\n*Importe\n*Detalle: Permite el ingreso del detalle del pago o la factura para su clara identificación.\n*Imagen Documento Origen: Este proceso permite adosar la imagen del documento para su fácil visualización en caso de ser requerido\n\nEn la pantalla correspondiente, se despliegan 3 grandes bloques de información:\n*Filtro General: para la visualización de las registraciones de pago efectuadas\n*Pagos: para la visualiación en detalle de las registraciones de pago efectuadas\n*Documento Asociado: En esta ventana se desplegarán diferentes tipo de controles asociados a la forma de pago seleccionada o elegida para la registración de pago\nEn el caso de indicar como forma de pago el código \"CHT - Cheque de Terceros, a la derecha de la registración se desplegará la ventana de documentos asociado es en la que se emarcarán todos los cheques existentes disponibles para su endoso. Para seleccionar los mismos, pulse sobre la grilla de visualización de los documentos.\nEn el caso de indicar como forma de pago el código \"OPP - Orden de Pago Proveedores, a la derecha de la registración se desplegará la ventana con la posibilidad de inscribir el documento emitido.\nEn el caso de indicar como forma de pago el código \"EFO\" se no se habilitará la ventana de Documento asociado, solo quedando habilitados los atributos arriba indicados.\n\n== Generalidades ==\n\nEsta versión de la aplicación se encuentra desarrollada bajo un ambiente propicio para la gestión de tareas generales de oficina. Este esquema permite gestionar la información en forma clara y sencilla mientras se tenga conocimiento de la estructura de información de la aplicación.\n\nComo ya se encuentra indicado, la gestión de datos se encuentra basada en la definición de formularios que permiten en general el ingreso y mantenimiento de la información volcada dentro de la base de datos de la aplicación.\n\nMuchos de los formularios ya tienen incorporada dentro del mismo una facilidad de filtro simple, que atañe a los Productos, Categoría o Proveedor de los mismos, pero también es posible realizar búsquedas de mayor precisión con el entorno donde se ha desarrollado la aplicación\n\nEstos formularios, en su gran mayoría a menos que se especifique lo contrario, permiten gestionar el ingreso modificación y eliminación de documentos o registraciones ingresadas en la aplicación.\n\nEl otro elemento que es posible ejecutar dentro de los formularios es la de consulta y consulta parcial. Para esto último en necesario indicar cuales van a ser los atributos por los cuales esos datos van a estar desplegados. A nivel del usuario, la definición de la consulta parcial consiste en presentar el mismo formulario pero en blanco para poder indicar, campo por campo cuales van a ser los datos que servirá de atributo de selección de la visualización.\n\nPara el caso particular de los campos de texto que desconozcamos parte del criterio, el mismo puede ser reemplazado por la siguiente sintaxis:\n<small><pre>\nLIKE %<cadena de caracteres que respondan a la búsqueda>%\n</pre></small>\n\nComo se indica en el párrafo anterior, es imprescindible anteponer el prefijo \"LIKE\" antes a la cadena de caracteres. Se observa también que a ambos lados de la cadena de caracteres se sitúa el signo de porcentaje (%). Este signo tiene la función de comodín. Las siguientes cadenas sirven de ejemplo:\n<small><pre>\nLIKE Ventana%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que comiencen con la palabra \"Ventana\".\n<small><pre>\nLIKE %Vidrio%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que tengan en cualquier posición dentro del campo seleccionado la palabra \"Ventana\".\n\n== Referencia Rápida ==\n\n== Respuestas a Preguntas Frecuentes ==\n;¿Que sucede cuando se ingresa un nuevo Producto?\n:El ingreso de un nuevo Producto se utiliza cada vez que exista un producto o elemento componente de un producto para indicar los elementos mínimos de identificación de ese Producto o \"Materia Prima\" (denominado \"Elemento\"). Además, en forma automática se generan registraciones tanto en las tablas de Precios como en la de Composición, marcando en esta última el atributo de Elemento Primario para asociarlo en el caso que se coloque como elemento único dentro de una presupuestación.\n;¿Que sucede cuando elimino un presupuesto?\n:Se eliminan todas las registraciones asociadas (productos y elementos asociados al producto.\n;¿Que sucede cuando elimino un producto de un presupuesto?\n:Se eliminan todas las registraciones asociadas (de elementos componentes de ese producto en ese presupuesto, que pueden variar en cada presupuesto).\n;¿Que sucede cuando modifico las magnitudes de un producto en un presupuesto?\n:Se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico las cantidades de un producto en un presupuesto?\n:De la misma manera cuando se modifican las magnitudes, se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico un producto (Código de Producto o Descripción indistintamente)?\n:Se procede a eliminar las registraciones existentes del producto modificado y se agregan los elementos asociados a ese producto con el precio actualizado de acuerdo a la lista de precios vigente.\n;¿Se puede recuperar un presupuesto eliminado?\n:No. En el caso que se haya pulsado por error la tecla de eliminación, existe una pregunta de seguridad antes de eliminar físicamente la registración del presupuesto.\n;¿Que sucede cuando ingreso un producto en un presupuesto?\n:La aplicación automáticamente ingresa como elementos básicos aquellos que hayan sido señalados como básicos dentro del esquema de Composición de Producto. Si el Producto tiene otros elementos asociados pero no están definidos como básicos, es posible ingresarlos debajo de los básicos. En este caso en particular, solo estará permitido ingresar aquellos productos asociados en la composición previa y no otros Productos/Elementos.\n;¿Que significa Aprobar un Presupuesto?\n:Es el proceso que permite \"fijar\" un prespuesto y que no pueda ser modificado.\n;¿Porque no puedo enviar por correo electrónico un presupuesto?\n:Probablemente no esté incorporado el dato de Correo Electrónico Principal dentro de Contactos. Proceda a mantener actualizada la información de Contactos.\n;¿A que se refiere el Mantenimiento de Contactos?\n:La aplicación define como Contacto a toda persona física o jurídica que tenga relevancia dentro del proceso. Esto significa que tanto los Clientes, Proveedores, Agentes Comerciales y otras personas, deben figurar dentro de esta Entidad. La diferenciación de cada uno de ellos se encuentra en la asignación las diferentes categorías desplegadas en el formulario correspondiente.\n\n== Glosario ==\n{|\n! Concepto\n! Definición\n|-\n|\'\'Formularios\'\'\n|Los formularios ofrecen un método o rutina para el ingreso controlado de datos. En si, un formulario consiste en un conjunto de elementos o controles que mantiene un dato.\n|-\n| \'\'Base de Datos\'\'\n| Conjunto de componentes de información. Puede contener estructuras de datos como así también rutinas y funciones asociadas a las estructuras de datos\n|-\n| \'\'Tabla\'\'\n| Conjunto de datos referentes una entidad de información. Puede ser representada como una planilla de 2 dimensiones con registraciones y atributos comunes de esa entidad de información.\n|-\n| \'\'Entidad\'\'\n| Conjunto de datos referentes que conforman una unidad cuyos atributos la diferencian de otras unidades registrales. La conformación de una entidad se puede dar basada en solo una tabla o un conjunto de ellas.\n|-\n|}','utf-8'),(809,'Gestión Retail Industria\n\n== Spalnex Gestion ==\nSpanex es una aplicación orientada a satisfacer la demanda de soporte a la gestión de productos y servicios de terminación del mercado de la construcción civil. Esta gestión toma forma de una serie de módulos que articulan los diferentes procesos de gestión administrativa y los concernientes a los propios de producción.\n\nBasado y diseñado en herramientas de código abierto, la aplicación desde su concepción, tiene el claro objetivo que la misma un engranaje eficiente en la cadena de maximización del retorno de la inversión.\n\nConsta de módulos que permiten desde la definición de componentes de productos y servicios hasta el control de la producción de los mismos.\nExisten 2 entidades principales con las que se trabaja dentro de la aplicación, a saber:\n\n* Productos\n* Contactos\n\nDentro del concepto de \'\'\'Productos\'\'\' quedan incluidos todos aquellos elementos que puede conformar un producto terminado, un modelo o un conjunto de elementos a comercializar como así también, aquellos que puedan ser comercializados por si solos.\nDentro del concepto de \'\'\'Contactos\'\'\' quedan incluidos todas aquellas personas físicas o jurídicas que sean objeto de alguna operación dentro de la aplicación.\n\nLa versión actual no incluye la gestión gráfica del armado de los elementos, sin que esto sea un impedimento para poder generar productos comercializables.\n\nPara profundizar en los conceptos, se detallan a continuación algunos subesquemas que son de importancia dentro de la aplicación.\n\n=== Gestión de Productos ===\nEn la gestión de productos se engloban una serie de procesos necesarios para mantener la integridad y el normal desenvolvimiento de los módulos de la aplicación. Aquí se han definido en forma individual (obviamente interrelacionadas entre si) varias entidades a saber:\n\nNota: a lo largo de esta ayuda, se podrán observar algunos gráficos conceptuales que tienen como algunas figuras que significan\n\n[[Archivo:FZG.DOCS.Procesos.Ayuda.jpg|center|Vista Conceptual del Proceso]]\n\nDenominamos productos a todos los Productos Terminados y/o Materias Primas que lo componen. Dentro de esta estructura de información incluye la información referida a las magnitudes de control del producto y los coeficientes de precios a aplicar sobre precios de costo del producto para la venta y la imagen del producto, en el caso que exista\n\n[[Archivo:FZG.DOCS.Procesos.Productos.jpg|center|Vista Conceptual del Proceso]]\n\nSe observará más adelante que el concepto de producto es amplio y que incluye subproductos, parámetros de subproductos, precios, composiciones diferenciadas y otros elementos que permiten tener un mantener un portfolio de productos muy variada. Para esto se subdivide los productos en:\n\n*Productos PPD: (Propiamente Dicho. A partir de aquí, \"Productos\"\n*Precios: Precios de los productos\n*Composiciones: Conformación de conjuntos de productos o elementos para conformar otros productos comercializables. Se incluyen aquellos aspectos de control de forma, y categoría de producto. Es necesario aclarar que dada la versatilidad de la aplicación, puede incluirse dentro de un producto compuesto, otros subproductos o elementos tales como Mano de Obra, Colocación, Transporte, etc.\n\n==== Productos ====\nAl tiempo del ingreso de la información de producto, y a efectos de mantener la integridad de las estructuras de información, una vez finalizado el ingreso de la información de ese producto, al almacenarse, también genera en forma automática registraciones dentro de las estructuras de precios y de composición, con los valores de precios en 0 y un registro de composición con los valores de coeficientes asociados en 0\n\nEs importante diferenciar los coeficientes indicados dentro de la estructura de producto y los indicados dentro de la estructura de composición. Dada la facilidad de integración de \"productos\" o \"kits\" con diferentes \"componentes\" o \"elementos\", un elemento dentro de un producto puede tener valores diferentes a el mismo elemento aplicado para otro producto. En el caso de productos como las aberturas, probablemente las dimensiones reales de los interiores de una ventana sean diferentes a las de otro modelo de ventana aunque estas ventanas en si tengan la misma dimensión. En el caso que se desee precisión de costos, estos coeficientes y valores serán de suma importancia.\n\n==== Precios ====\nSe refiere a la lista de precios. \nDebe existir una registración de precios por cada producto activo. Si el ingreso del producto se realiza dentro de los procesos normales, esta registración debiera existir.\nPor cada registración existen, a la fecha, 4 tipos de precios diferentes. Normalmente, El precio \"0\" está indicado como Precio de Costo\". El resto (3 definidos en el release 20120328) puede ser aplicado a discreción del usuario. Nuestra sugerencia es dividir la política comercial en 3 tipos de clientes. La asignación del tipo de cliente se realiza dentro del Mantenimiento de Contactos.\n\n[[Archivo:FZG.DOCS.Procesos.Precios.jpg|center|Vista Conceptual del Proceso]]\n\nLos valores de cada uno de los precios por Tipo de Cliente pueden automatizarse a través de los coeficientes de Precios establecidos dentro del esquema de datos de Producto.\n\nExisten a la fecha 5 procesos que afectan directamente este concepto:\n\n*Cambio Masivo: Aplica un coeficiente de actualización a todos los tipos de precios de acuerdo a un filtro de producto dado.\n*Masivo Coeficientes Actualización: Permite modificar los coeficientes de actualización de acuerdo al \"Precio 0\" en forma masiva de acuerdo a un filtro de producto dado.\n*Precios General: Permite modificar los valores de precios (no coeficientes) por producto individual.\n*Precios Tabular Normal: Permite modificar los valores de precios por producto en un formato tabular.\n*Precios Tabular por Proceso: Permite modificar los valores de precios por conjunto de productos, aplicando en forma selectiva el coeficiente a utilizar.\n\n==== Composición ====\nEsta estructura de información alberga una matriz de Producto-Elemento/Componente de Producto. Esta esquema permite definir los elementos componentes de un producto sean estos básicos (necesarios) o optativos.\n\n[[Archivo:FZG.DOCS.Procesos.Composicion.jpg|center|Vista Conceptual del Proceso]]\n\nUn simple ejemplo de esta definición es el siguiente:\n\n<small>\n{| class=\"wikitable\"\n|+\n!Producto\n!Componentes\n!Necesario\n|-\n|Ventana Corrediza \"XXXXX\"\n|Marco Línea \"XXXXX\"<br/>Vidrio Incoloro 4mm<br/>Vidrio Templado Opaco<br/>Accesorios Línea \"XXXXX\"<br/>Instalación Ventana Corrediza \"XXXXXX\"\n|align=\"center\" |Si<br/>No<br/>No<br/>Si<br/>Si\n|-\n|}\n</small>\n\nEn el ejemplo precedente, observamos una abertura con sus componentes y con la posibilidad de definir entre 2 opciones con que tipo de interior se podrá presupuestar.\n\nEste esquema permite mantener variable la definición de productos de acuerdo a los precios individuales de cada elemento.\n\nDebido a que de este esquema partirá el cálculo de los precios, por defecto, al ingresar un nuevo producto, en forma automática se agregará un registro de componente (mínimo) con los datos del Elemento igual al Producto. Esto no debe modificarse a menos que quiera establecer un producto compuesto, en cuyo caso, solo será necesario contar con un producto básico.\n\n==== Proveedores ====\nSe refiere a los códigos de proveedores. Inicialmente se utiliza para diferencias los productos de acuerdo a su procedencia y para facilitar el proceso de cambio de precios, siendo estos códigos los atributos de diferenciación entre materias primas similares.\n\n=== Presupuestos ===\n----\nEste módulo permite gestionar presupuestaciones para clientes de forma amena y precisa, dependiendo su amplia flexibilidad de cuales hayan sido los datos ingresados en la conformación de los productos.\n\nEs posible \n\n\n==== Presupuestos ====\n\nEste proceso permite la gestión de propuestas de venta para todo tipo de clientes. Cuenta con un diseño que permite una visualización integral de los productos y procesos que intervienen en la conformación de esta propuesta de venta. Las acciones posibles dentro de este proceso son:\n\n*Propuestas\n**Alta\n***Propuestas de Ventas\n***Rápida de Clientes\n**Modificación\n***Productos\n***Cantidades\n***Dimensiones\n***Inclusiones\n***Actualización de Precios\n**Consulta\n***Consulta Registro secuencial\n***Consulta por Filtros\n**Activación\n**Impresión\n**Envío por circuito de correo electrónico\n**Copia de Presupuestos\n\n===== Características =====\n====== Diseño ======\nLa pantalla de presentación de este proceso presenta las siguientes elementos:\n\n* \'\'\'Cabecera\'\'\': Son los datos principales del formulario.\n** \'\'\'Datos de Cliente\'\'\': Es la información del contacto \"Cliente\" seleccionado que impacta en forma directa sobre la cotización de los productos dentro de la propuesta\n* \'\'\'Productos\'\'\': Se detallan todos los productos que formarán parte del presupuesto\n* \'\'\'Composición\'\'\': Se detalla todos los elementos que conforma un producto y sus adicionales.\n** \'\'\'Detalle Composición\'\'\': Es la información de los elementos componentes de cada producto presupuestado que impactan en forma directa sobre la cotización de ese elemento dentro del producto seleccionado dentro de la propuesta.\n\n[[Archivo:FZG.DOCS.Procesos.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Cabecera\'\'\': Se destaca la inclusión de los datos del cliente y la asignación de un agente de venta del presupuesto. Es importante la definición de los datos del cliente ingresado dado que dependiendo de la tipificación del mismo varariá en forma directa los precios a aplicar en los presupuestos. Últimamente, se a agregado la información de Agente Comercial que corresponde a quién es responsable del presupuesto y gestor del cumplimiento del ingreso de toda la información necesaria tanto para el cálculo presupuestario sino también para su posterior fabricación en caso de ser aprobado.\n\n[[Archivo:FZG.DOCS.Pantalla.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Detalle Presupuesto\'\'\': Se detallan los datos mínimos de Productos necesarios para la confección del presupuesto. Estos datos son: Cantidad, Producto (Código y/o Descripción), Ancho/Largo y finalmente Alto. Para los casos de productos definidos con Magnitud igual a Unidad (UN), solo tomará la información indicada en el campo de Cantidad.\n\nAl tiempo del ingreso de la información de Productos, en forma automática se completará la sección de \'\'\'Detalle Producto\'\'\'. Esta sección es la que permitirá agregar los adicionales definidos en su oportunidad para completar el producto mencionado. Cabe aclarar, que solo se podrán agregar o eliminar lo elementos del Detalle de Producto que no formen parte del [[Esquema Básico de un Producto]]. A su vez, si los Elementos de los Productos ingresados tuviesen Parámetros adicionales a especificar, se agregarán en forma automática dentro de la 4º sección del formulario.\n\nDentro del detalle del producto se observan los siguientes datos:\n* Elemento: Código del elemento que forma parte del Producto\n* Descripción Elemento: Descripción del elemento que forma parte del Producto\n* Precio Unitario: Precio por Unidad de Magnitud del Producto de acuerdo a las condiciones del presupuesto (Tipo de Cliente, magnitud especificada, etc.)\n* Precio: Precio del Elemento de acuerdo a las condiciones del presupuesto y las cantidades especificadas.\n* Detalle: Indicador para incluir la Descripción del Elemento dentro de la Descripción impresa del Presupuesto al Cliente.\n\nEsta sección del formulario presenta las siguientes características:\n* Es indistinto el ingreso por Código de Elemento o por la Descripción del mismo.\n* Los campos de Código de Elemento y Descripción del Elemento poseen un botón de ayuda contextual. Solo se desplegarán los valores tanto de Código de Elemento como de Descripción de Elemento indicados dentro de la Composición de Producto.\n\nAdemás, como se mencionó anteriormente, existe una 4º Sección de \'\'\'Parámetros Adicionales\'\'\' que pueden afectar a un Presupuesto. En este caso, se detallan los valores distintos a las medidas generales que afectan al presupuesto y su posterior diseño o colocación.\nEn esta sección pueden incluirse cualquier valor y depende de lo ingresado dentro de la tabla de [[Valores Adicionales de Productos]] (Ver [[Mantenimiento de Datos Auxiliares]])\n\nLas características definidas de este formulario son las siguientes:\n* El esquema de información posee 4 grupos de datos ya comentados.\n* Los grupos de datos son independientes excepto al tiempo de ejecución de este mismo formulario y en las acciones de ingreso de información de cada grupo.\n** El alta de un Producto en el Detalle Presupuesto presupone el ingreso en forma automática de al menos una registración en el Detalle Producto.\n** El alta de un Producto se referencia a el Producto en si y su composición si la misma tiene más de un Elemento asociado.\n\n==== Presupuesto: Aprobación ====\nA los efectos futuros de gestión de fábrica y de cobranzas, cada elemento aprobado no podrá ser modificado.\n\n==== Presupuesto: Aprobados ====\nConsulta de Presupuestos Aprobados a la fecha.\n\n=== Gestión de Valores ===\n----\nUna de las características de la aplicación es que puede hacer un seguimiento de los valores afectados dentro del proceso de gestion de comercialización, sin que esto reemplaze las formas y comprobantes fiscales, siendo de exclusivo uso interno de la empresa.\n\nEsta gestión se divide en\n\n*Cheques\n*Pagos\n*Cobranzas\n\nTodos estos procesos sirven como \'\'hoja de trabajo\'\' para las registraciones legales y/o fiscales correspondientes y \'\'\'no es objetivo de la presente aplicación reemplazar las mismas\'\'\'.\n\n==== Cheques ====\nRepresenta la registración de cheques de terceros entregados en parte de pago. Los mismos son incorporados por medio del proceso de cobranza y pueden ser endosados en el proceso de Pagos.\n\nEste proceso solo es de consulta y sirve para tener control de los valores registrados y disponibles.\n\n==== Cobranzas ====\nRepresenta la registración de las cobranzas\n\n==== Pagos ====\nRepresenta la registración de las pagos de proveedores/gastos generales. Posee la característica de asociar formas de pago para un mejor control de los valores destinados a tal efecto.\nLos atributos definidos para esta registración son:\n*# de la Transaccion\n*Fecha de la Transaccion\n*Fecha Valor del Pago\n*Forma de Pago: En este caso, las formas habilitadas hasta el momento son las siguientes\n**CHT - Cheque de Terceros: Cheques de Terceros aptos para Endosar. \n**OPP - Orden de Pago Proveedores: Cheques propios o cualquier otro documento ejecutable a entregar\n**EFO - Efectivo Caja Chica\n*Proveedor / Razon Social\n*Tipo de Documento Origen: El documento que origina la obligación de pago\n**OC - Orden de Compra\n**FC - Factura\n*NºDocumento\n*Importe\n*Detalle: Permite el ingreso del detalle del pago o la factura para su clara identificación.\n*Imagen Documento Origen: Este proceso permite adosar la imagen del documento para su fácil visualización en caso de ser requerido\n\nEn la pantalla correspondiente, se despliegan 3 grandes bloques de información:\n*Filtro General: para la visualización de las registraciones de pago efectuadas\n*Pagos: para la visualiación en detalle de las registraciones de pago efectuadas\n*Documento Asociado: En esta ventana se desplegarán diferentes tipo de controles asociados a la forma de pago seleccionada o elegida para la registración de pago\nEn el caso de indicar como forma de pago el código \"CHT - Cheque de Terceros, a la derecha de la registración se desplegará la ventana de documentos asociado es en la que se emarcarán todos los cheques existentes disponibles para su endoso. Para seleccionar los mismos, pulse sobre la grilla de visualización de los documentos.\nEn el caso de indicar como forma de pago el código \"OPP - Orden de Pago Proveedores, a la derecha de la registración se desplegará la ventana con la posibilidad de inscribir el documento emitido.\nEn el caso de indicar como forma de pago el código \"EFO\" se no se habilitará la ventana de Documento asociado, solo quedando habilitados los atributos arriba indicados.\n\n== Generalidades ==\n\nEsta versión de la aplicación se encuentra desarrollada bajo un ambiente propicio para la gestión de tareas generales de oficina. Este esquema permite gestionar la información en forma clara y sencilla mientras se tenga conocimiento de la estructura de información de la aplicación.\n\nComo ya se encuentra indicado, la gestión de datos se encuentra basada en la definición de formularios que permiten en general el ingreso y mantenimiento de la información volcada dentro de la base de datos de la aplicación.\n\nMuchos de los formularios ya tienen incorporada dentro del mismo una facilidad de filtro simple, que atañe a los Productos, Categoría o Proveedor de los mismos, pero también es posible realizar búsquedas de mayor precisión con el entorno donde se ha desarrollado la aplicación\n\nEstos formularios, en su gran mayoría a menos que se especifique lo contrario, permiten gestionar el ingreso modificación y eliminación de documentos o registraciones ingresadas en la aplicación.\n\nEl otro elemento que es posible ejecutar dentro de los formularios es la de consulta y consulta parcial. Para esto último en necesario indicar cuales van a ser los atributos por los cuales esos datos van a estar desplegados. A nivel del usuario, la definición de la consulta parcial consiste en presentar el mismo formulario pero en blanco para poder indicar, campo por campo cuales van a ser los datos que servirá de atributo de selección de la visualización.\n\nPara el caso particular de los campos de texto que desconozcamos parte del criterio, el mismo puede ser reemplazado por la siguiente sintaxis:\n<small><pre>\nLIKE %<cadena de caracteres que respondan a la búsqueda>%\n</pre></small>\n\nComo se indica en el párrafo anterior, es imprescindible anteponer el prefijo \"LIKE\" antes a la cadena de caracteres. Se observa también que a ambos lados de la cadena de caracteres se sitúa el signo de porcentaje (%). Este signo tiene la función de comodín. Las siguientes cadenas sirven de ejemplo:\n<small><pre>\nLIKE Ventana%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que comiencen con la palabra \"Ventana\".\n<small><pre>\nLIKE %Vidrio%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que tengan en cualquier posición dentro del campo seleccionado la palabra \"Ventana\".\n\n== Referencia Rápida ==\n\n== Respuestas a Preguntas Frecuentes ==\n;¿Que sucede cuando se ingresa un nuevo Producto?\n:El ingreso de un nuevo Producto se utiliza cada vez que exista un producto o elemento componente de un producto para indicar los elementos mínimos de identificación de ese Producto o \"Materia Prima\" (denominado \"Elemento\"). Además, en forma automática se generan registraciones tanto en las tablas de Precios como en la de Composición, marcando en esta última el atributo de Elemento Primario para asociarlo en el caso que se coloque como elemento único dentro de una presupuestación.\n;¿Que sucede cuando elimino un presupuesto?\n:Se eliminan todas las registraciones asociadas (productos y elementos asociados al producto.\n;¿Que sucede cuando elimino un producto de un presupuesto?\n:Se eliminan todas las registraciones asociadas (de elementos componentes de ese producto en ese presupuesto, que pueden variar en cada presupuesto).\n;¿Que sucede cuando modifico las magnitudes de un producto en un presupuesto?\n:Se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico las cantidades de un producto en un presupuesto?\n:De la misma manera cuando se modifican las magnitudes, se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico un producto (Código de Producto o Descripción indistintamente)?\n:Se procede a eliminar las registraciones existentes del producto modificado y se agregan los elementos asociados a ese producto con el precio actualizado de acuerdo a la lista de precios vigente.\n;¿Se puede recuperar un presupuesto eliminado?\n:No. En el caso que se haya pulsado por error la tecla de eliminación, existe una pregunta de seguridad antes de eliminar físicamente la registración del presupuesto.\n;¿Que sucede cuando ingreso un producto en un presupuesto?\n:La aplicación automáticamente ingresa como elementos básicos aquellos que hayan sido señalados como básicos dentro del esquema de Composición de Producto. Si el Producto tiene otros elementos asociados pero no están definidos como básicos, es posible ingresarlos debajo de los básicos. En este caso en particular, solo estará permitido ingresar aquellos productos asociados en la composición previa y no otros Productos/Elementos.\n;¿Que significa Aprobar un Presupuesto?\n:Es el proceso que permite \"fijar\" un prespuesto y que no pueda ser modificado.\n;¿Porque no puedo enviar por correo electrónico un presupuesto?\n:Probablemente no esté incorporado el dato de Correo Electrónico Principal dentro de Contactos. Proceda a mantener actualizada la información de Contactos.\n;¿A que se refiere el Mantenimiento de Contactos?\n:La aplicación define como Contacto a toda persona física o jurídica que tenga relevancia dentro del proceso. Esto significa que tanto los Clientes, Proveedores, Agentes Comerciales y otras personas, deben figurar dentro de esta Entidad. La diferenciación de cada uno de ellos se encuentra en la asignación las diferentes categorías desplegadas en el formulario correspondiente.\n\n== Glosario ==\n{|\n! Concepto\n! Definición\n|-\n|\'\'Formularios\'\'\n|Los formularios ofrecen un método o rutina para el ingreso controlado de datos. En si, un formulario consiste en un conjunto de elementos o controles que mantiene un dato.\n|-\n| \'\'Base de Datos\'\'\n| Conjunto de componentes de información. Puede contener estructuras de datos como así también rutinas y funciones asociadas a las estructuras de datos\n|-\n| \'\'Tabla\'\'\n| Conjunto de datos referentes una entidad de información. Puede ser representada como una planilla de 2 dimensiones con registraciones y atributos comunes de esa entidad de información.\n|-\n| \'\'Entidad\'\'\n| Conjunto de datos referentes que conforman una unidad cuyos atributos la diferencian de otras unidades registrales. La conformación de una entidad se puede dar basada en solo una tabla o un conjunto de ellas.\n|-\n|}','utf-8'),(810,'== KnowledgeBase ==\n=== OOBasic / LOBasic / StarOffice Basic ===\n==== General Events ====\n{| class=\"wikitable\"\n|<center>\'\'\'Event Name\'\'\'</center>\n|<center>\'\'\'Event Type\'\'\'</center>\n|<center>\'\'\'Descripción Ejecución\'\'\'</center>\n\n|-\n|Prior To Reset\n|EventObject\n|Antes que el formulario sea reseteado. El formulario es reseteado cuando el cursos se mueve a la fila insertada\n\n|-\n|After Reset\n|EventObject\n|Luego que el formulario se resetea\n\n|-\n|When Loading\n|EventObject\n|Cuando el formulario es cargado la primera vez\n\n|-\n|Before Reloading\n|EventObject\n|Antes que el formulario es recargado -también cuando se presiona el boton de recarga desde la barra de navegación o programandolo\n\n|-\n|When Reloading\n|EventObject\n|Cuando un formulario es recargado\n\n|-\n|Before Unloading\n|EventObject\n|Antes que inicie el formulario\n\n|-\n|When Unloading\n|EventObject\n|Cuando el formulario se está descargando\n\n|-\n|Confirm Deletion\n|com.sun.star.sdb.RowChangeEvent\n|Cuando un registro es seleccionado para ser eliminado.\n\n|-\n|Before Record Action\n|com.sun.star.sdb.RowChangeEvent\n|Cuando un registro es ingresado, actualizado o eliminado\n\n|-\n|After Record Action\n|EventObject\n|Luego de una accion es ejecutada sobre un registro. Ni antes ni después se se va a ejecutar hasta que se salga del registro modificado o el boton de Grabar sea presionado.\n\n|-\n|Before Record Change\n|EventObject\n|Antes que el formulario despliegue otro registro.\n\n|-\n|After Record Change\n|\n|Después que el formulario despliegue otro registro.\n\n|}\n==== Basic IDE ====\n* Largo de archivo menor a 64K\n== Reset MW pass ==\n<pre>\nUPDATE user \nSET user_password = CONCAT(\':A:\', MD5(\'<password>\')) \nWHERE TRIM(CAST(user_email AS CHAR(40)))=<direccion>\n</pre>\n== KeyTeam ==\n{| class=\"wikitable\"\n|<center>\'\'\'Code\'\'\'</center>\n|<center>\'\'\'Site\'\'\'</center>\n|<center>\'\'\'Eq\'\'\'</center>\n|-\n|850417886\n|FZG\n|FZG001\n|-\n|707325105\n|FZG\n|FZG010\n|-\n|8504178836\n|MMV\n|ADMIN\n|}','utf-8'),(811,'== KnowledgeBase ==\n=== OOBasic / LOBasic / StarOffice Basic ===\n==== General Events ====\n{| class=\"wikitable\"\n|<center>\'\'\'Event Name\'\'\'</center>\n|<center>\'\'\'Event Type\'\'\'</center>\n|<center>\'\'\'Descripción Ejecución\'\'\'</center>\n\n|-\n|Prior To Reset\n|EventObject\n|Antes que el formulario sea reseteado. El formulario es reseteado cuando el cursos se mueve a la fila insertada\n\n|-\n|After Reset\n|EventObject\n|Luego que el formulario se resetea\n\n|-\n|When Loading\n|EventObject\n|Cuando el formulario es cargado la primera vez\n\n|-\n|Before Reloading\n|EventObject\n|Antes que el formulario es recargado -también cuando se presiona el boton de recarga desde la barra de navegación o programandolo\n\n|-\n|When Reloading\n|EventObject\n|Cuando un formulario es recargado\n\n|-\n|Before Unloading\n|EventObject\n|Antes que inicie el formulario\n\n|-\n|When Unloading\n|EventObject\n|Cuando el formulario se está descargando\n\n|-\n|Confirm Deletion\n|com.sun.star.sdb.RowChangeEvent\n|Cuando un registro es seleccionado para ser eliminado.\n\n|-\n|Before Record Action\n|com.sun.star.sdb.RowChangeEvent\n|Cuando un registro es ingresado, actualizado o eliminado\n\n|-\n|After Record Action\n|EventObject\n|Luego de una accion es ejecutada sobre un registro. Ni antes ni después se se va a ejecutar hasta que se salga del registro modificado o el boton de Grabar sea presionado.\n\n|-\n|Before Record Change\n|EventObject\n|Antes que el formulario despliegue otro registro.\n\n|-\n|After Record Change\n|\n|Después que el formulario despliegue otro registro.\n\n|}\n==== Basic IDE ====\n* Largo de archivo menor a 64K\n== Reset MW pass ==\n<pre>\nUPDATE user \nSET user_password = CONCAT(\':A:\', MD5(\'<password>\')) \nWHERE TRIM(CAST(user_email AS CHAR(40)))=<direccion>\n</pre>\n== KeyTeam ==\n{| class=\"wikitable\"\n|<center>\'\'\'Code\'\'\'</center>\n|<center>\'\'\'Site\'\'\'</center>\n|<center>\'\'\'Eq\'\'\'</center>\n|-\n|850417886\n|FZG\n|FZG001\n|-\n|707325105\n|FZG\n|FZG010\n|-\n|161523437\n|MMV\n|ADMIN\n|}','utf-8'),(812,'== KnowledgeBase ==\n=== OOBasic / LOBasic / StarOffice Basic ===\n==== General Events ====\n{| class=\"wikitable\"\n|<center>\'\'\'Event Name\'\'\'</center>\n|<center>\'\'\'Event Type\'\'\'</center>\n|<center>\'\'\'Descripción Ejecución\'\'\'</center>\n\n|-\n|Prior To Reset\n|EventObject\n|Antes que el formulario sea reseteado. El formulario es reseteado cuando el cursos se mueve a la fila insertada\n\n|-\n|After Reset\n|EventObject\n|Luego que el formulario se resetea\n\n|-\n|When Loading\n|EventObject\n|Cuando el formulario es cargado la primera vez\n\n|-\n|Before Reloading\n|EventObject\n|Antes que el formulario es recargado -también cuando se presiona el boton de recarga desde la barra de navegación o programandolo\n\n|-\n|When Reloading\n|EventObject\n|Cuando un formulario es recargado\n\n|-\n|Before Unloading\n|EventObject\n|Antes que inicie el formulario\n\n|-\n|When Unloading\n|EventObject\n|Cuando el formulario se está descargando\n\n|-\n|Confirm Deletion\n|com.sun.star.sdb.RowChangeEvent\n|Cuando un registro es seleccionado para ser eliminado.\n\n|-\n|Before Record Action\n|com.sun.star.sdb.RowChangeEvent\n|Cuando un registro es ingresado, actualizado o eliminado\n\n|-\n|After Record Action\n|EventObject\n|Luego de una accion es ejecutada sobre un registro. Ni antes ni después se se va a ejecutar hasta que se salga del registro modificado o el boton de Grabar sea presionado.\n\n|-\n|Before Record Change\n|EventObject\n|Antes que el formulario despliegue otro registro.\n\n|-\n|After Record Change\n|\n|Después que el formulario despliegue otro registro.\n\n|}\n==== Basic IDE ====\n* Largo de archivo menor a 64K\n== Reset MW pass ==\n<pre>\nUPDATE user \nSET user_password = CONCAT(\':A:\', MD5(\'<password>\')) \nWHERE TRIM(CAST(user_email AS CHAR(40)))=<direccion>\n</pre>\n== KeyTeam ==\n{| class=\"wikitable\"\n|<center>\'\'\'Code\'\'\'</center>\n|<center>\'\'\'Site\'\'\'</center>\n|<center>\'\'\'Eq\'\'\'</center>\n|-\n|850417886\n|FZG\n|FZG001\n|-\n|219838925\n|FZG\n|FZG002\n|-\n|707325105\n|FZG\n|FZG010\n|-\n|161523437\n|MMV\n|ADMIN\n|}','utf-8'),(813,'== Descripción ==\nA partir de la ejecución, se indica en [[TABLA:reppresqry]] el presupuesto fetcheado en ese momento. Se hace una combinación a partir de la [[TABLA:vidquoten2]] combinada con [[TABLA:vidquoten3]] tomando en 2 partes (por la diferencia entre el [[CTRL:VidQuoteIncluyeDet]]) seleccionando todos los registro en la 1º parte y en la segunda todos aquellos que que no tengan el valor del [[CTRL:VidQuoteIncluyeDet]] = 0 y que no se encuentren dentro de la primera parte. Se agregan para completar el cuadro los datos complementarios de [[TABLA:vidquoten1]], [[TABLA:productos]], [[VISTA:clientes]] y un totalizador por presupuesto que no es posible de generar dentro de la 4º forma normal con las tablas al tiempo de ejecuación del reporte propiamente dicho.\n\n== Composición ==\n*[[TABLA:vidquoten2]]\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten1]]\n*[[TABLA:productos]]\n*[[VISTA:clientes]]\n*[[TABLA:reppresqry]]\n== SQL ==\n\n== Bitácora ==\n*20121101\n**CheckStatus\n<small><pre>\nSELECT \n    U2.VidQuoteID,\n    U2.VidQuoteItem,\n    U2.VidQuoteProdCantidad,\n    U2.VidQuoteProdID,\n    U2.Dimension,\n    U2.Precio,\n    U2.VidQuoteFecha,\n    U2.VidQuoteCliente,\n    U2.VidQuoteObra,\n    U2.RazonSocial,\n    U2.Direccion,\n    U2.Localidad,\n    U2.Provincia,\n    U2.VidQuoteElementoID,\n    U2.VidQuoteComposicID,\n    U2.VidQuoteIncluyeDet,\n    U2.DescripcionGral,\n    U2.DescripcionElemento,\n    U1.PrecioPresup\nFROM\n-- -----------------------------------\n    (\n    SELECT\n        VidQuoteID,\n        SUM(VidQuotePrecio) AS PrecioPresup\n    FROM\n        vidquoten2\n    WHERE\n        VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)) AS U1,\n-- -----------------------------------\n    (\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten3.VidQuoteIncluyeDet = 1 AND \n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND\n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND \n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n    UNION\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry) AND\n        vidquoten3.VidQuoteIncluyeDet = 0 AND\n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND\n        vidquoten2.VidQuoteItem NOT IN (\n            SELECT \n                vidquoten2.VidQuoteItem AS VidQuoteItem\n            FROM\n                vidquoten2 AS vidquoten2,\n                vidquoten3 AS vidquoten3\n            WHERE\n                vidquoten3.VidQuoteIncluyeDet = 1 AND\n                vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n                vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n                vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n            GROUP BY\n                vidquoten2.VidQuoteItem)\n    ) AS U2 \n-- -----------------------------------\nWHERE\n    U1.VidQuoteID=U2.VidQuoteID\n</pre></small>\n*20121002\n**Cambio de Estructura por Requerimiento. Query anterior:\n<small><pre>\nSELECT \n    `visreppres`.`VidQuoteID`,\n    `visreppres`.`VidQuoteObra`,\n    `visreppres`.`VidQuoteCliente`,\n    `visreppres`.`VidQuoteFecha`,\n    `visreppres`.`VidQuoteItem`,\n    `visreppres`.`VidQuoteProdCantidad`,\n    `visreppres`.`VidQuoteProdID`,\n    `visreppres`.`VidQuoteDetalle`,\n    `visreppres`.`VidQuotePrecioS`,\n    `clientes`.`RazonSocial`,\n    `clientes`.`Direccion`,\n    `clientes`.`Localidad`,\n    `clientes`.`Provincia`\nFROM\n    `fzggestion`.`clientes` AS `clientes`,\n    `fzggestion`.`visreppres` AS `visreppres`\nWHERE\n    `clientes`.`ClienteID` = `visreppres`.`VidQuoteCliente`\nORDER BY \n    `visreppres`.`VidQuoteID` ASC,\n    `visreppres`.`VidQuoteObra` ASC,\n    `visreppres`.`VidQuoteCliente` ASC,\n    `visreppres`.`VidQuoteItem` ASC\n</pre></small>\n== URL ==','utf-8'),(814,'== Descripción ==\nA partir de la ejecución, se indica en [[TABLA:reppresqry]] el presupuesto fetcheado en ese momento. Se hace una combinación a partir de la [[TABLA:vidquoten2]] combinada con [[TABLA:vidquoten3]] tomando en 2 partes (por la diferencia entre el [[CTRL:VidQuoteIncluyeDet]]) seleccionando todos los registro en la 1º parte y en la segunda todos aquellos que que no tengan el valor del [[CTRL:VidQuoteIncluyeDet]] = 0 y que no se encuentren dentro de la primera parte. Se agregan para completar el cuadro los datos complementarios de [[TABLA:vidquoten1]], [[TABLA:productos]], [[VISTA:clientes]] y un totalizador por presupuesto que no es posible de generar dentro de la 4º forma normal con las tablas al tiempo de ejecuación del reporte propiamente dicho.\n\n== Composición ==\n*[[TABLA:vidquoten2]]\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten1]]\n*[[TABLA:productos]]\n*[[VISTA:clientes]]\n*[[TABLA:reppresqry]]\n== SQL ==\n\n== Bitácora ==\n*20121122\n**Cambio de formato visualización de Dimension a solicitud de FZG. Anterior:\n<small><pre>\nSELECT \n    U2.VidQuoteID,\n    U2.VidQuoteItem,\n    U2.VidQuoteProdCantidad,\n    U2.VidQuoteProdID,\n    U2.Dimension,\n    U2.Precio,\n    U2.VidQuoteFecha,\n    U2.VidQuoteCliente,\n    U2.VidQuoteObra,\n    U2.RazonSocial,\n    U2.Direccion,\n    U2.Localidad,\n    U2.Provincia,\n    U2.VidQuoteElementoID,\n    U2.VidQuoteComposicID,\n    U2.VidQuoteIncluyeDet,\n    U2.DescripcionGral,\n    U2.DescripcionElemento,\n    U1.PrecioPresup\nFROM\n-- -----------------------------------\n    (\n    SELECT\n        VidQuoteID,\n        SUM(VidQuotePrecio) AS PrecioPresup\n    FROM\n        vidquoten2\n    WHERE\n        VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)) AS U1,\n-- -----------------------------------\n    (\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten3.VidQuoteIncluyeDet = 1 AND \n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND\n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND \n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n    UNION\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry) AND\n        vidquoten3.VidQuoteIncluyeDet = 0 AND\n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND\n        vidquoten2.VidQuoteItem NOT IN (\n            SELECT \n                vidquoten2.VidQuoteItem AS VidQuoteItem\n            FROM\n                vidquoten2 AS vidquoten2,\n                vidquoten3 AS vidquoten3\n            WHERE\n                vidquoten3.VidQuoteIncluyeDet = 1 AND\n                vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n                vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n                vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n            GROUP BY\n                vidquoten2.VidQuoteItem)\n    ) AS U2 \n-- -----------------------------------\nWHERE\n    U1.VidQuoteID=U2.VidQuoteID\n</pre></small>\n*20121101\n**CheckStatus\n<small><pre>\nSELECT \n    U2.VidQuoteID,\n    U2.VidQuoteItem,\n    U2.VidQuoteProdCantidad,\n    U2.VidQuoteProdID,\n    U2.Dimension,\n    U2.Precio,\n    U2.VidQuoteFecha,\n    U2.VidQuoteCliente,\n    U2.VidQuoteObra,\n    U2.RazonSocial,\n    U2.Direccion,\n    U2.Localidad,\n    U2.Provincia,\n    U2.VidQuoteElementoID,\n    U2.VidQuoteComposicID,\n    U2.VidQuoteIncluyeDet,\n    U2.DescripcionGral,\n    U2.DescripcionElemento,\n    U1.PrecioPresup\nFROM\n-- -----------------------------------\n    (\n    SELECT\n        VidQuoteID,\n        SUM(VidQuotePrecio) AS PrecioPresup\n    FROM\n        vidquoten2\n    WHERE\n        VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)) AS U1,\n-- -----------------------------------\n    (\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten3.VidQuoteIncluyeDet = 1 AND \n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND\n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND \n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n    UNION\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry) AND\n        vidquoten3.VidQuoteIncluyeDet = 0 AND\n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND\n        vidquoten2.VidQuoteItem NOT IN (\n            SELECT \n                vidquoten2.VidQuoteItem AS VidQuoteItem\n            FROM\n                vidquoten2 AS vidquoten2,\n                vidquoten3 AS vidquoten3\n            WHERE\n                vidquoten3.VidQuoteIncluyeDet = 1 AND\n                vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n                vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n                vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n            GROUP BY\n                vidquoten2.VidQuoteItem)\n    ) AS U2 \n-- -----------------------------------\nWHERE\n    U1.VidQuoteID=U2.VidQuoteID\n</pre></small>\n*20121002\n**Cambio de Estructura por Requerimiento. Query anterior:\n<small><pre>\nSELECT \n    `visreppres`.`VidQuoteID`,\n    `visreppres`.`VidQuoteObra`,\n    `visreppres`.`VidQuoteCliente`,\n    `visreppres`.`VidQuoteFecha`,\n    `visreppres`.`VidQuoteItem`,\n    `visreppres`.`VidQuoteProdCantidad`,\n    `visreppres`.`VidQuoteProdID`,\n    `visreppres`.`VidQuoteDetalle`,\n    `visreppres`.`VidQuotePrecioS`,\n    `clientes`.`RazonSocial`,\n    `clientes`.`Direccion`,\n    `clientes`.`Localidad`,\n    `clientes`.`Provincia`\nFROM\n    `fzggestion`.`clientes` AS `clientes`,\n    `fzggestion`.`visreppres` AS `visreppres`\nWHERE\n    `clientes`.`ClienteID` = `visreppres`.`VidQuoteCliente`\nORDER BY \n    `visreppres`.`VidQuoteID` ASC,\n    `visreppres`.`VidQuoteObra` ASC,\n    `visreppres`.`VidQuoteCliente` ASC,\n    `visreppres`.`VidQuoteItem` ASC\n</pre></small>\n== URL ==','utf-8'),(815,'== Descripción ==\nA partir de la ejecución, se indica en [[TABLA:reppresqry]] el presupuesto fetcheado en ese momento. Se hace una combinación a partir de la [[TABLA:vidquoten2]] combinada con [[TABLA:vidquoten3]] tomando en 2 partes (por la diferencia entre el [[CTRL:VidQuoteIncluyeDet]]) seleccionando todos los registro en la 1º parte y en la segunda todos aquellos que que no tengan el valor del [[CTRL:VidQuoteIncluyeDet]] = 0 y que no se encuentren dentro de la primera parte. Se agregan para completar el cuadro los datos complementarios de [[TABLA:vidquoten1]], [[TABLA:productos]], [[VISTA:clientes]] y un totalizador por presupuesto que no es posible de generar dentro de la 4º forma normal con las tablas al tiempo de ejecuación del reporte propiamente dicho.\n\n== Composición ==\n*[[TABLA:vidquoten2]]\n*[[TABLA:vidquoten3]]\n*[[TABLA:vidquoten1]]\n*[[TABLA:productos]]\n*[[VISTA:clientes]]\n*[[TABLA:reppresqry]]\n== SQL ==\n<small><pre>\nSELECT \n    U2.VidQuoteID,\n    U2.VidQuoteItem,\n    U2.VidQuoteProdCantidad,\n    U2.VidQuoteProdID,\n    U2.Dimension,\n    U2.Precio,\n    U2.VidQuoteFecha,\n    U2.VidQuoteCliente,\n    U2.VidQuoteObra,\n    U2.RazonSocial,\n    U2.Direccion,\n    U2.Localidad,\n    U2.Provincia,\n    U2.VidQuoteElementoID,\n    U2.VidQuoteComposicID,\n    U2.VidQuoteIncluyeDet,\n    U2.DescripcionGral,\n    U2.DescripcionElemento,\n    U1.PrecioPresup\nFROM\n-- -----------------------------------\n    (\n    SELECT\n        VidQuoteID,\n        SUM(VidQuotePrecio) AS PrecioPresup\n    FROM\n        vidquoten2\n    WHERE\n        VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)) AS U1,\n-- -----------------------------------\n    (\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),\'x\',\n                CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten3.VidQuoteIncluyeDet = 1 AND \n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND\n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND \n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n    UNION\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),\'x\',\n                CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry) AND\n        vidquoten3.VidQuoteIncluyeDet = 0 AND\n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND\n        vidquoten2.VidQuoteItem NOT IN (\n            SELECT \n                vidquoten2.VidQuoteItem AS VidQuoteItem\n            FROM\n                vidquoten2 AS vidquoten2,\n                vidquoten3 AS vidquoten3\n            WHERE\n                vidquoten3.VidQuoteIncluyeDet = 1 AND\n                vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n                vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n                vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n            GROUP BY\n                vidquoten2.VidQuoteItem)\n    ) AS U2 \n-- -----------------------------------\nWHERE\n    U1.VidQuoteID=U2.VidQuoteID\n</pre></small>\n== Bitácora ==\n*20121122\n**Cambio de formato visualización de Dimension a solicitud de FZG. Anterior:\n<small><pre>\nSELECT \n    U2.VidQuoteID,\n    U2.VidQuoteItem,\n    U2.VidQuoteProdCantidad,\n    U2.VidQuoteProdID,\n    U2.Dimension,\n    U2.Precio,\n    U2.VidQuoteFecha,\n    U2.VidQuoteCliente,\n    U2.VidQuoteObra,\n    U2.RazonSocial,\n    U2.Direccion,\n    U2.Localidad,\n    U2.Provincia,\n    U2.VidQuoteElementoID,\n    U2.VidQuoteComposicID,\n    U2.VidQuoteIncluyeDet,\n    U2.DescripcionGral,\n    U2.DescripcionElemento,\n    U1.PrecioPresup\nFROM\n-- -----------------------------------\n    (\n    SELECT\n        VidQuoteID,\n        SUM(VidQuotePrecio) AS PrecioPresup\n    FROM\n        vidquoten2\n    WHERE\n        VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)) AS U1,\n-- -----------------------------------\n    (\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten3.VidQuoteIncluyeDet = 1 AND \n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND\n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND \n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n    UNION\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry) AND\n        vidquoten3.VidQuoteIncluyeDet = 0 AND\n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND\n        vidquoten2.VidQuoteItem NOT IN (\n            SELECT \n                vidquoten2.VidQuoteItem AS VidQuoteItem\n            FROM\n                vidquoten2 AS vidquoten2,\n                vidquoten3 AS vidquoten3\n            WHERE\n                vidquoten3.VidQuoteIncluyeDet = 1 AND\n                vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n                vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n                vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n            GROUP BY\n                vidquoten2.VidQuoteItem)\n    ) AS U2 \n-- -----------------------------------\nWHERE\n    U1.VidQuoteID=U2.VidQuoteID\n</pre></small>\n*20121101\n**CheckStatus\n<small><pre>\nSELECT \n    U2.VidQuoteID,\n    U2.VidQuoteItem,\n    U2.VidQuoteProdCantidad,\n    U2.VidQuoteProdID,\n    U2.Dimension,\n    U2.Precio,\n    U2.VidQuoteFecha,\n    U2.VidQuoteCliente,\n    U2.VidQuoteObra,\n    U2.RazonSocial,\n    U2.Direccion,\n    U2.Localidad,\n    U2.Provincia,\n    U2.VidQuoteElementoID,\n    U2.VidQuoteComposicID,\n    U2.VidQuoteIncluyeDet,\n    U2.DescripcionGral,\n    U2.DescripcionElemento,\n    U1.PrecioPresup\nFROM\n-- -----------------------------------\n    (\n    SELECT\n        VidQuoteID,\n        SUM(VidQuotePrecio) AS PrecioPresup\n    FROM\n        vidquoten2\n    WHERE\n        VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)) AS U1,\n-- -----------------------------------\n    (\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten3.VidQuoteIncluyeDet = 1 AND \n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND\n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND \n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n    UNION\n    SELECT \n        vidquoten2.VidQuoteID AS VidQuoteID,\n        vidquoten2.VidQuoteItem AS VidQuoteItem,\n        vidquoten2.VidQuoteProdCantidad AS VidQuoteProdCantidad,\n        vidquoten2.VidQuoteProdID AS VidQuoteProdID,\n        CASE\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Dimension(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\'x\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAlto` AS CHAR),4,\'0000\'),\']\')\n            WHEN `vidquoten2`.`VidQuoteAlto` > 0 THEN\n                CONCAT(\'Largo(mm): [\',\n                LPAD(CAST(`vidquoten2`.`VidQuoteAncho` AS CHAR),4,\'0000\'),\']\')\n            ELSE\n                \'\'\n        END AS Dimension,\n        vidquoten2.VidQuotePrecio AS Precio,\n        vidquoten1.VidQuoteFecha AS VidQuoteFecha,\n        vidquoten1.VidQuoteCliente AS VidQuoteCliente,\n        vidquoten1.VidQuoteObra AS VidQuoteObra,\n        clientes.RazonSocial AS RazonSocial,\n        clientes.Direccion AS Direccion,\n        clientes.Localidad AS Localidad,\n        clientes.Provincia AS Provincia,\n        vidquoten3.VidQuoteElementoID AS VidQuoteElementoID,\n        vidquoten3.VidQuoteComposicID AS VidQuoteComposicID,\n        vidquoten3.VidQuoteIncluyeDet AS VidQuoteIncluyeDet,\n        productos.Descripcion AS DescripcionGral,\n        IF(vidquoten3.VidQuoteIncluyeDet = 1,\n            productos_1.Descripcion,\n            \'\') AS DescripcionElemento\n    FROM\n        vidquoten1 AS vidquoten1,\n        vidquoten2 AS vidquoten2,\n        vidquoten3 AS vidquoten3,\n        productos AS productos,\n        productos AS productos_1,\n        clientes AS clientes\n    WHERE\n        vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry) AND\n        vidquoten3.VidQuoteIncluyeDet = 0 AND\n        vidquoten1.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n        vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n        vidquoten1.VidQuoteCliente = clientes.ClienteID AND\n        productos.ProductoID = vidquoten3.VidQuoteProdID AND \n        productos_1.ProductoID = vidquoten3.VidQuoteElementoID AND\n        vidquoten2.VidQuoteItem NOT IN (\n            SELECT \n                vidquoten2.VidQuoteItem AS VidQuoteItem\n            FROM\n                vidquoten2 AS vidquoten2,\n                vidquoten3 AS vidquoten3\n            WHERE\n                vidquoten3.VidQuoteIncluyeDet = 1 AND\n                vidquoten3.VidQuoteID = vidquoten2.VidQuoteID AND \n                vidquoten3.VidQuoteItem = vidquoten2.VidQuoteItem AND \n                vidquoten2.VidQuoteID IN (SELECT VidQuoteID FROM reppresqry)\n            GROUP BY\n                vidquoten2.VidQuoteItem)\n    ) AS U2 \n-- -----------------------------------\nWHERE\n    U1.VidQuoteID=U2.VidQuoteID\n</pre></small>\n*20121002\n**Cambio de Estructura por Requerimiento. Query anterior:\n<small><pre>\nSELECT \n    `visreppres`.`VidQuoteID`,\n    `visreppres`.`VidQuoteObra`,\n    `visreppres`.`VidQuoteCliente`,\n    `visreppres`.`VidQuoteFecha`,\n    `visreppres`.`VidQuoteItem`,\n    `visreppres`.`VidQuoteProdCantidad`,\n    `visreppres`.`VidQuoteProdID`,\n    `visreppres`.`VidQuoteDetalle`,\n    `visreppres`.`VidQuotePrecioS`,\n    `clientes`.`RazonSocial`,\n    `clientes`.`Direccion`,\n    `clientes`.`Localidad`,\n    `clientes`.`Provincia`\nFROM\n    `fzggestion`.`clientes` AS `clientes`,\n    `fzggestion`.`visreppres` AS `visreppres`\nWHERE\n    `clientes`.`ClienteID` = `visreppres`.`VidQuoteCliente`\nORDER BY \n    `visreppres`.`VidQuoteID` ASC,\n    `visreppres`.`VidQuoteObra` ASC,\n    `visreppres`.`VidQuoteCliente` ASC,\n    `visreppres`.`VidQuoteItem` ASC\n</pre></small>\n== URL ==','utf-8'),(816,'=== Estructuras de Datos ===\n==== Estructuras Tipo ====\n[[Estructuras SQL]]\n\n==== Tablas ====\n* [[TABLA:accreceiv]]\n* [[TABLA:accpayab]]\n* [[TABLA:bocetoscab]]\n* [[TABLA:bocetosdet]]\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:magnitudes]]\n* [[TABLA:moduloscab]]\n* [[TABLA:modulosdet]]\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*[[RPRT:Presupuestos]]\n*[[RPRT:PresupuestosDirecto]]\n*[[RPRT:IndividualCRM]]\n\n=== Procedimientos ===\n*[[PROC:ActualizaItemPresupuesto]]\n*[[PROC:ActualizaPreciosPresupuesto]]\n*[[PROC:ActualizaPreciosTabular]]\n*[[PROC:AgregaProductoCompo]]\n*[[PROC:AltaItemPresupuesto]]\n*[[PROC:AltaItemPresupuestoTmp]]\n*[[PROC:CalculaPrecioBase]]\n*[[PROC:CalculoMedidaReal]]\n*[[PROC:CalculoPrecio]]\n*[[PROC:CopiaPresupuesto]]\n*[[PROC:DuplicaProductoCompo]]\n*[[PROC:GrabaItemPresupuestoTmp]]\n*[[PROC:ResetEdicionItemTmp]]\n\n=== Bibliotecas ===\n*[[LIBR:FazzGlassMcr]]\n*[[LIBR:SpanexB]]\n*[[LIBR:SpanexC]]','utf-8'),(817,'== Descripción ==\nCabecera de Módulos de Producto\n== Composición ==\n== Estructura ==\n< pre>\n< /pre>\n== SQL ==\n< pre>\ndelimiter $$\n\nCREATE TABLE `moduloscab` (\n  `ModuloID` char(8) NOT NULL DEFAULT \'\',\n  `ModuloDSC` varchar(80) NOT NULL,\n  `ModuloVW` int(5) DEFAULT \'0\',\n  `ModuloVH` int(5) DEFAULT \'0\',\n  `ModuloIMG` blob,\n  `ModuloATH` varchar(10) NOT NULL,\n  `ModuloFec` date NOT NULL,\n  PRIMARY KEY (`ModuloID`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1$$\n< /pre>\n== Bitácora ==\n*20121121\n**Alta\n== Uso ==\n== URL ==','utf-8'),(818,'== Descripción ==\nCabecera de Módulos de Producto\n== Composición ==\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `moduloscab` (\n  `ModuloID` char(8) NOT NULL DEFAULT \'\',\n  `ModuloDSC` varchar(80) NOT NULL,\n  `ModuloVW` int(5) DEFAULT \'0\',\n  `ModuloVH` int(5) DEFAULT \'0\',\n  `ModuloIMG` blob,\n  `ModuloATH` varchar(10) NOT NULL,\n  `ModuloFec` date NOT NULL,\n  PRIMARY KEY (`ModuloID`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1$$\n</pre>\n== Bitácora ==\n*20121121\n**Alta\n== Uso ==\n== URL ==','utf-8'),(819,'\n\n== Descripción ==\nDetalle de Modulos\n== Composición ==\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `modulosdet` (\n  `ModuloID` char(8) NOT NULL,\n  `ProductoID` char(8) NOT NULL,\n  `ComposicID` int(5) NOT NULL AUTO_INCREMENT,\n  `CantidadPR` int(5) DEFAULT NULL,\n  `AnchoPredef` int(5) DEFAULT NULL,\n  `AltoPredef` int(5) DEFAULT NULL,\n  `DimensionChg` int(5) DEFAULT \'1\',\n  `CantidadChg` int(5) DEFAULT \'1\',\n  `ProductoChg` int(5) DEFAULT \'1\',\n  `SubSetAncho` int(5) DEFAULT \'1\',\n  `SubSetAlto` int(5) DEFAULT \'1\',\n  `ProductoVsb` int(5) DEFAULT \'1\',\n  PRIMARY KEY (`ModuloID`,`ProductoID`,`ComposicID`)\n) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1$$\n</pre>\n== Bitácora ==\n*20121121\n**Alta\n== Uso ==\n== URL ==','utf-8'),(820,'== Descripción ==\nDetalle de Modulos\n== Composición ==\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\ndelimiter $$\n\nCREATE TABLE `modulosdet` (\n  `ModuloID` char(8) NOT NULL,\n  `ProductoID` char(8) NOT NULL,\n  `ComposicID` int(5) NOT NULL AUTO_INCREMENT,\n  `CantidadPR` int(5) DEFAULT NULL,\n  `AnchoPredef` int(5) DEFAULT NULL,\n  `AltoPredef` int(5) DEFAULT NULL,\n  `DimensionChg` int(5) DEFAULT \'1\',\n  `CantidadChg` int(5) DEFAULT \'1\',\n  `ProductoChg` int(5) DEFAULT \'1\',\n  `SubSetAncho` int(5) DEFAULT \'1\',\n  `SubSetAlto` int(5) DEFAULT \'1\',\n  `ProductoVsb` int(5) DEFAULT \'1\',\n  PRIMARY KEY (`ModuloID`,`ProductoID`,`ComposicID`)\n) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1$$\n</pre>\n== Bitácora ==\n*20121121\n**Alta\n== Uso ==\n== URL ==','utf-8'),(821,'=== Estructuras de Datos ===\n==== Estructuras Tipo ====\n[[Estructuras SQL]]\n\n==== Tablas ====\n* [[TABLA:accreceiv]]\n* [[TABLA:accpayab]]\n* [[TABLA:bocetoscab]]\n* [[TABLA:bocetosdet]]\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:magnitudes]]\n* [[TABLA:moduloscab]]\n* [[TABLA:modulosdet]]\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:vischeckmod]]\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*[[RPRT:Presupuestos]]\n*[[RPRT:PresupuestosDirecto]]\n*[[RPRT:IndividualCRM]]\n\n=== Procedimientos ===\n*[[PROC:ActualizaItemPresupuesto]]\n*[[PROC:ActualizaPreciosPresupuesto]]\n*[[PROC:ActualizaPreciosTabular]]\n*[[PROC:AgregaProductoCompo]]\n*[[PROC:AltaItemPresupuesto]]\n*[[PROC:AltaItemPresupuestoTmp]]\n*[[PROC:CalculaPrecioBase]]\n*[[PROC:CalculoMedidaReal]]\n*[[PROC:CalculoPrecio]]\n*[[PROC:CopiaPresupuesto]]\n*[[PROC:DuplicaProductoCompo]]\n*[[PROC:GrabaItemPresupuestoTmp]]\n*[[PROC:ResetEdicionItemTmp]]\n\n=== Bibliotecas ===\n*[[LIBR:FazzGlassMcr]]\n*[[LIBR:SpanexB]]\n*[[LIBR:SpanexC]]','utf-8'),(822,'== Descripción ==\nLista los valores calculados de los subconjuntos de dimensiones definidos dentro de un módulo para corroborar el correcto dimensionamiento de un módulo\n== Composición ==\n[[TABLA:modulosdet]]\n[[TABLA:moduloscab]]\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\nCREATE VIEW vischeckmod AS\nSELECT \n    modulosdet.ModuloID,\n    \'W\' AS Dimension,\n    modulosdet.SubSetAncho AS SubSet,\n    Sum(modulosdet.AnchoPredef) AS DimCalculo,\n    moduloscab.ModuloVW as DimPredef\nFROM\n    fzggestion.modulosdet AS modulosdet,\n    fzggestion.moduloscab AS moduloscab\nWHERE\n    modulosdet.ModuloID = moduloscab.ModuloID AND\n    modulosdet.SubSetAncho IS NOT NULL\nGROUP BY\n    modulosdet.SubSetAncho\nUNION\nSELECT \n    modulosdet.ModuloID,\n    \'H\' AS Dimension,\n    modulosdet.SubSetAlto AS SubSet,\n    Sum(modulosdet.AltoPredef) AS DimCalculo,\n    moduloscab.ModuloVH as DimPredef\nFROM\n    fzggestion.modulosdet AS modulosdet,\n    fzggestion.moduloscab AS moduloscab\nWHERE\n    modulosdet.ModuloID = moduloscab.ModuloID AND\n    modulosdet.SubSetAlto IS NOT NULL\nGROUP BY\n    modulosdet.SubSetAlto\n</pre>\n== Bitácora ==\n*20121127\n**Alta Vista.\n== Uso ==\n== URL ==','utf-8'),(823,'== Descripción ==\nLista los valores calculados de los subconjuntos de dimensiones definidos dentro de un módulo para corroborar el correcto dimensionamiento de un módulo\n== Composición ==\n*[[TABLA:modulosdet]]\n*[[TABLA:moduloscab]]\n\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\nCREATE VIEW vischeckmod AS\nSELECT \n    modulosdet.ModuloID,\n    \'W\' AS Dimension,\n    modulosdet.SubSetAncho AS SubSet,\n    Sum(modulosdet.AnchoPredef) AS DimCalculo,\n    moduloscab.ModuloVW as DimPredef\nFROM\n    fzggestion.modulosdet AS modulosdet,\n    fzggestion.moduloscab AS moduloscab\nWHERE\n    modulosdet.ModuloID = moduloscab.ModuloID AND\n    modulosdet.SubSetAncho IS NOT NULL\nGROUP BY\n    modulosdet.SubSetAncho\nUNION\nSELECT \n    modulosdet.ModuloID,\n    \'H\' AS Dimension,\n    modulosdet.SubSetAlto AS SubSet,\n    Sum(modulosdet.AltoPredef) AS DimCalculo,\n    moduloscab.ModuloVH as DimPredef\nFROM\n    fzggestion.modulosdet AS modulosdet,\n    fzggestion.moduloscab AS moduloscab\nWHERE\n    modulosdet.ModuloID = moduloscab.ModuloID AND\n    modulosdet.SubSetAlto IS NOT NULL\nGROUP BY\n    modulosdet.SubSetAlto\n</pre>\n== Bitácora ==\n*20121127\n**Alta Vista.\n== Uso ==\n== URL ==','utf-8'),(824,'== Descripción ==\nLista los valores calculados de los subconjuntos de dimensiones definidos dentro de un módulo para corroborar el correcto dimensionamiento de un módulo.\n\nToma las registraciones de la [[TABLA:modulosdet]] que tengan valores significativos dentro de los atributos SubSet\'\'xxxxx\'\' y los agrupa sumarizando los valores indicados dentro de \'\'xxxxx\'\'Predef, que representan los valores originales de dimensionamiento interno.\n\n== Composición ==\n*[[TABLA:modulosdet]]\n*[[TABLA:moduloscab]]\n\n== Estructura ==\n<pre>\n</pre>\n== SQL ==\n<pre>\nCREATE VIEW vischeckmod AS\nSELECT \n    modulosdet.ModuloID,\n    \'W\' AS Dimension,\n    modulosdet.SubSetAncho AS SubSet,\n    Sum(modulosdet.AnchoPredef) AS DimCalculo,\n    moduloscab.ModuloVW as DimPredef\nFROM\n    fzggestion.modulosdet AS modulosdet,\n    fzggestion.moduloscab AS moduloscab\nWHERE\n    modulosdet.ModuloID = moduloscab.ModuloID AND\n    modulosdet.SubSetAncho IS NOT NULL\nGROUP BY\n    modulosdet.SubSetAncho\nUNION\nSELECT \n    modulosdet.ModuloID,\n    \'H\' AS Dimension,\n    modulosdet.SubSetAlto AS SubSet,\n    Sum(modulosdet.AltoPredef) AS DimCalculo,\n    moduloscab.ModuloVH as DimPredef\nFROM\n    fzggestion.modulosdet AS modulosdet,\n    fzggestion.moduloscab AS moduloscab\nWHERE\n    modulosdet.ModuloID = moduloscab.ModuloID AND\n    modulosdet.SubSetAlto IS NOT NULL\nGROUP BY\n    modulosdet.SubSetAlto\n</pre>\n== Bitácora ==\n*20121127\n**Alta Vista.\n== Uso ==\n== URL ==','utf-8'),(825,'Gestión Retail Industria\n\n== Spalnex Gestion ==\nSpanex es una aplicación orientada a satisfacer la demanda de soporte a la gestión de productos y servicios de terminación del mercado de la construcción civil. Esta gestión toma forma de una serie de módulos que articulan los diferentes procesos de gestión administrativa y los concernientes a los propios de producción.\n\nBasado y diseñado en herramientas de código abierto, la aplicación desde su concepción, tiene el claro objetivo que la misma un engranaje eficiente en la cadena de maximización del retorno de la inversión.\n\nConsta de módulos que permiten desde la definición de componentes de productos y servicios hasta el control de la producción de los mismos.\nExisten 2 entidades principales con las que se trabaja dentro de la aplicación, a saber:\n\n* Productos\n* Contactos\n\nDentro del concepto de \'\'\'Productos\'\'\' quedan incluidos todos aquellos elementos que puede conformar un producto terminado, un modelo o un conjunto de elementos a comercializar como así también, aquellos que puedan ser comercializados por si solos.\nDentro del concepto de \'\'\'Contactos\'\'\' quedan incluidos todas aquellas personas físicas o jurídicas que sean objeto de alguna operación dentro de la aplicación.\n\nLa versión actual no incluye la gestión gráfica del armado de los elementos, sin que esto sea un impedimento para poder generar productos comercializables.\n\nPara profundizar en los conceptos, se detallan a continuación algunos subesquemas que son de importancia dentro de la aplicación.\n\n=== Gestión de Productos ===\nEn la gestión de productos se engloban una serie de procesos necesarios para mantener la integridad y el normal desenvolvimiento de los módulos de la aplicación. Aquí se han definido en forma individual (obviamente interrelacionadas entre si) varias entidades a saber:\n\nNota: a lo largo de esta ayuda, se podrán observar algunos gráficos conceptuales que tienen como algunas figuras que significan\n\n[[Archivo:FZG.DOCS.Procesos.Ayuda.jpg|center|Vista Conceptual del Proceso]]\n\nDenominamos productos a todos los Productos Terminados y/o Materias Primas que lo componen. Dentro de esta estructura de información incluye la información referida a las magnitudes de control del producto y los coeficientes de precios a aplicar sobre precios de costo del producto para la venta y la imagen del producto, en el caso que exista\n\n[[Archivo:FZG.DOCS.Procesos.Productos.jpg|center|Vista Conceptual del Proceso]]\n\nSe observará más adelante que el concepto de producto es amplio y que incluye subproductos, parámetros de subproductos, precios, composiciones diferenciadas y otros elementos que permiten tener un mantener un portfolio de productos muy variada. Para esto se subdivide los productos en:\n\n*Productos PPD: (Propiamente Dicho. A partir de aquí, \"Productos\"\n*Precios: Precios de los productos\n*Composiciones: Conformación de conjuntos de productos o elementos para conformar otros productos comercializables. Se incluyen aquellos aspectos de control de forma, y categoría de producto. Es necesario aclarar que dada la versatilidad de la aplicación, puede incluirse dentro de un producto compuesto, otros subproductos o elementos tales como Mano de Obra, Colocación, Transporte, etc.\n\n==== Productos ====\nAl tiempo del ingreso de la información de producto, y a efectos de mantener la integridad de las estructuras de información, una vez finalizado el ingreso de la información de ese producto, al almacenarse, también genera en forma automática registraciones dentro de las estructuras de precios y de composición, con los valores de precios en 0 y un registro de composición con los valores de coeficientes asociados en 0\n\nEs importante diferenciar los coeficientes indicados dentro de la estructura de producto y los indicados dentro de la estructura de composición. Dada la facilidad de integración de \"productos\" o \"kits\" con diferentes \"componentes\" o \"elementos\", un elemento dentro de un producto puede tener valores diferentes a el mismo elemento aplicado para otro producto. En el caso de productos como las aberturas, probablemente las dimensiones reales de los interiores de una ventana sean diferentes a las de otro modelo de ventana aunque estas ventanas en si tengan la misma dimensión. En el caso que se desee precisión de costos, estos coeficientes y valores serán de suma importancia.\n\n==== Precios ====\nSe refiere a la lista de precios. \nDebe existir una registración de precios por cada producto activo. Si el ingreso del producto se realiza dentro de los procesos normales, esta registración debiera existir.\nPor cada registración existen, a la fecha, 4 tipos de precios diferentes. Normalmente, El precio \"0\" está indicado como Precio de Costo\". El resto (3 definidos en el release 20120328) puede ser aplicado a discreción del usuario. Nuestra sugerencia es dividir la política comercial en 3 tipos de clientes. La asignación del tipo de cliente se realiza dentro del Mantenimiento de Contactos.\n\n[[Archivo:FZG.DOCS.Procesos.Precios.jpg|center|Vista Conceptual del Proceso]]\n\nLos valores de cada uno de los precios por Tipo de Cliente pueden automatizarse a través de los coeficientes de Precios establecidos dentro del esquema de datos de Producto.\n\nExisten a la fecha 5 procesos que afectan directamente este concepto:\n\n*Cambio Masivo: Aplica un coeficiente de actualización a todos los tipos de precios de acuerdo a un filtro de producto dado.\n*Masivo Coeficientes Actualización: Permite modificar los coeficientes de actualización de acuerdo al \"Precio 0\" en forma masiva de acuerdo a un filtro de producto dado.\n*Precios General: Permite modificar los valores de precios (no coeficientes) por producto individual.\n*Precios Tabular Normal: Permite modificar los valores de precios por producto en un formato tabular.\n*Precios Tabular por Proceso: Permite modificar los valores de precios por conjunto de productos, aplicando en forma selectiva el coeficiente a utilizar.\n\n==== Composición ====\nEsta estructura de información alberga una matriz de Producto-Elemento/Componente de Producto. Esta esquema permite definir los elementos componentes de un producto sean estos básicos (necesarios) o optativos.\n\n[[Archivo:FZG.DOCS.Procesos.Composicion.jpg|center|Vista Conceptual del Proceso]]\n\nUn simple ejemplo de esta definición es el siguiente:\n\n<small>\n{| class=\"wikitable\"\n|+\n!Producto\n!Componentes\n!Necesario\n|-\n|Ventana Corrediza \"XXXXX\"\n|Marco Línea \"XXXXX\"<br/>Vidrio Incoloro 4mm<br/>Vidrio Templado Opaco<br/>Accesorios Línea \"XXXXX\"<br/>Instalación Ventana Corrediza \"XXXXXX\"\n|align=\"center\" |Si<br/>No<br/>No<br/>Si<br/>Si\n|-\n|}\n</small>\n\nEn el ejemplo precedente, observamos una abertura con sus componentes y con la posibilidad de definir entre 2 opciones con que tipo de interior se podrá presupuestar.\n\nEste esquema permite mantener variable la definición de productos de acuerdo a los precios individuales de cada elemento.\n\nDebido a que de este esquema partirá el cálculo de los precios, por defecto, al ingresar un nuevo producto, en forma automática se agregará un registro de componente (mínimo) con los datos del Elemento igual al Producto. Esto no debe modificarse a menos que quiera establecer un producto compuesto, en cuyo caso, solo será necesario contar con un producto básico.\n\n==== Proveedores ====\nSe refiere a los códigos de proveedores. Inicialmente se utiliza para diferencias los productos de acuerdo a su procedencia y para facilitar el proceso de cambio de precios, siendo estos códigos los atributos de diferenciación entre materias primas similares.\n\n=== Presupuestos ===\n----\nEste módulo permite gestionar presupuestaciones para clientes de forma amena y precisa, dependiendo su amplia flexibilidad de cuales hayan sido los datos ingresados en la conformación de los productos.\n\nEs posible \n\n\n==== Presupuestos ====\n\nEste proceso permite la gestión de propuestas de venta para todo tipo de clientes. Cuenta con un diseño que permite una visualización integral de los productos y procesos que intervienen en la conformación de esta propuesta de venta. Las acciones posibles dentro de este proceso son:\n\n*Propuestas\n**Alta\n***Propuestas de Ventas\n***Rápida de Clientes\n**Modificación\n***Productos\n***Cantidades\n***Dimensiones\n***Inclusiones\n***Actualización de Precios\n**Consulta\n***Consulta Registro secuencial\n***Consulta por Filtros\n**Activación\n**Impresión\n**Envío por circuito de correo electrónico\n**Copia de Presupuestos\n\n===== Características =====\n====== Diseño ======\nLa pantalla de presentación de este proceso presenta las siguientes elementos:\n\n* \'\'\'Cabecera\'\'\': Son los datos principales del formulario.\n** \'\'\'Datos de Cliente\'\'\': Es la información del contacto \"Cliente\" seleccionado que impacta en forma directa sobre la cotización de los productos dentro de la propuesta\n* \'\'\'Productos\'\'\': Se detallan todos los productos que formarán parte del presupuesto\n* \'\'\'Composición\'\'\': Se detalla todos los elementos que conforma un producto y sus adicionales.\n** \'\'\'Detalle Composición\'\'\': Es la información de los elementos componentes de cada producto presupuestado que impactan en forma directa sobre la cotización de ese elemento dentro del producto seleccionado dentro de la propuesta.\n\n[[Archivo:FZG.DOCS.Procesos.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Cabecera\'\'\': Se destaca la inclusión de los datos del cliente y la asignación de un agente de venta del presupuesto. Es importante la definición de los datos del cliente ingresado dado que dependiendo de la tipificación del mismo varariá en forma directa los precios a aplicar en los presupuestos. Últimamente, se a agregado la información de Agente Comercial que corresponde a quién es responsable del presupuesto y gestor del cumplimiento del ingreso de toda la información necesaria tanto para el cálculo presupuestario sino también para su posterior fabricación en caso de ser aprobado.\n\n[[Archivo:FZG.DOCS.Pantalla.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Detalle Presupuesto\'\'\': Se detallan los datos mínimos de Productos necesarios para la confección del presupuesto. Estos datos son: Cantidad, Producto (Código y/o Descripción), Ancho/Largo y finalmente Alto. Para los casos de productos definidos con Magnitud igual a Unidad (UN), solo tomará la información indicada en el campo de Cantidad.\n\nAl tiempo del ingreso de la información de Productos, en forma automática se completará la sección de \'\'\'Detalle Producto\'\'\'. Esta sección es la que permitirá agregar los adicionales definidos en su oportunidad para completar el producto mencionado. Cabe aclarar, que solo se podrán agregar o eliminar lo elementos del Detalle de Producto que no formen parte del [[Esquema Básico de un Producto]]. A su vez, si los Elementos de los Productos ingresados tuviesen Parámetros adicionales a especificar, se agregarán en forma automática dentro de la 4º sección del formulario.\n\nDentro del detalle del producto se observan los siguientes datos:\n* Elemento: Código del elemento que forma parte del Producto\n* Descripción Elemento: Descripción del elemento que forma parte del Producto\n* Precio Unitario: Precio por Unidad de Magnitud del Producto de acuerdo a las condiciones del presupuesto (Tipo de Cliente, magnitud especificada, etc.)\n* Precio: Precio del Elemento de acuerdo a las condiciones del presupuesto y las cantidades especificadas.\n* Detalle: Indicador para incluir la Descripción del Elemento dentro de la Descripción impresa del Presupuesto al Cliente.\n\nEsta sección del formulario presenta las siguientes características:\n* Es indistinto el ingreso por Código de Elemento o por la Descripción del mismo.\n* Los campos de Código de Elemento y Descripción del Elemento poseen un botón de ayuda contextual. Solo se desplegarán los valores tanto de Código de Elemento como de Descripción de Elemento indicados dentro de la Composición de Producto.\n\nAdemás, como se mencionó anteriormente, existe una 4º Sección de \'\'\'Parámetros Adicionales\'\'\' que pueden afectar a un Presupuesto. En este caso, se detallan los valores distintos a las medidas generales que afectan al presupuesto y su posterior diseño o colocación.\nEn esta sección pueden incluirse cualquier valor y depende de lo ingresado dentro de la tabla de [[Valores Adicionales de Productos]] (Ver [[Mantenimiento de Datos Auxiliares]])\n\nLas características definidas de este formulario son las siguientes:\n* El esquema de información posee 4 grupos de datos ya comentados.\n* Los grupos de datos son independientes excepto al tiempo de ejecución de este mismo formulario y en las acciones de ingreso de información de cada grupo.\n** El alta de un Producto en el Detalle Presupuesto presupone el ingreso en forma automática de al menos una registración en el Detalle Producto.\n** El alta de un Producto se referencia a el Producto en si y su composición si la misma tiene más de un Elemento asociado.\n\n==== Presupuesto: Aprobación ====\nA los efectos futuros de gestión de fábrica y de cobranzas, cada elemento aprobado no podrá ser modificado.\n\n==== Presupuesto: Aprobados ====\nConsulta de Presupuestos Aprobados a la fecha.\n\n=== Gestión de Valores ===\n----\nUna de las características de la aplicación es que puede hacer un seguimiento de los valores afectados dentro del proceso de gestion de comercialización, sin que esto reemplaze las formas y comprobantes fiscales, siendo de exclusivo uso interno de la empresa.\n\nEsta gestión se divide en\n\n*Cheques\n*Pagos\n*Cobranzas\n\nTodos estos procesos sirven como \'\'hoja de trabajo\'\' para las registraciones legales y/o fiscales correspondientes y \'\'\'no es objetivo de la presente aplicación reemplazar las mismas\'\'\'.\n\n==== Cheques ====\nRepresenta la registración de cheques de terceros entregados en parte de pago. Los mismos son incorporados por medio del proceso de cobranza y pueden ser endosados en el proceso de Pagos.\n\nEste proceso solo es de consulta y sirve para tener control de los valores registrados y disponibles.\n\n==== Cobranzas ====\nRepresenta la registración de las cobranzas\n\n==== Pagos ====\nRepresenta la registración de las pagos de proveedores/gastos generales. Posee la característica de asociar formas de pago para un mejor control de los valores destinados a tal efecto.\nLos atributos definidos para esta registración son:\n*# de la Transaccion\n*Fecha de la Transaccion\n*Fecha Valor del Pago\n*Forma de Pago: En este caso, las formas habilitadas hasta el momento son las siguientes\n**CHT - Cheque de Terceros: Cheques de Terceros aptos para Endosar. \n**OPP - Orden de Pago Proveedores: Cheques propios o cualquier otro documento ejecutable a entregar\n**EFO - Efectivo Caja Chica\n*Proveedor / Razon Social\n*Tipo de Documento Origen: El documento que origina la obligación de pago\n**OC - Orden de Compra\n**FC - Factura\n*NºDocumento\n*Importe\n*Detalle: Permite el ingreso del detalle del pago o la factura para su clara identificación.\n*Imagen Documento Origen: Este proceso permite adosar la imagen del documento para su fácil visualización en caso de ser requerido\n\nEn la pantalla correspondiente, se despliegan 3 grandes bloques de información:\n*Filtro General: para la visualización de las registraciones de pago efectuadas\n*Pagos: para la visualiación en detalle de las registraciones de pago efectuadas\n*Documento Asociado: En esta ventana se desplegarán diferentes tipo de controles asociados a la forma de pago seleccionada o elegida para la registración de pago\nEn el caso de indicar como forma de pago el código \"CHT - Cheque de Terceros, a la derecha de la registración se desplegará la ventana de documentos asociado es en la que se emarcarán todos los cheques existentes disponibles para su endoso. Para seleccionar los mismos, pulse sobre la grilla de visualización de los documentos.\nEn el caso de indicar como forma de pago el código \"OPP - Orden de Pago Proveedores, a la derecha de la registración se desplegará la ventana con la posibilidad de inscribir el documento emitido.\nEn el caso de indicar como forma de pago el código \"EFO\" se no se habilitará la ventana de Documento asociado, solo quedando habilitados los atributos arriba indicados.\n\n== Generalidades ==\n\nEsta versión de la aplicación se encuentra desarrollada bajo un ambiente propicio para la gestión de tareas generales de oficina. Este esquema permite gestionar la información en forma clara y sencilla mientras se tenga conocimiento de la estructura de información de la aplicación.\n\nComo ya se encuentra indicado, la gestión de datos se encuentra basada en la definición de formularios que permiten en general el ingreso y mantenimiento de la información volcada dentro de la base de datos de la aplicación.\n\nMuchos de los formularios ya tienen incorporada dentro del mismo una facilidad de filtro simple, que atañe a los Productos, Categoría o Proveedor de los mismos, pero también es posible realizar búsquedas de mayor precisión con el entorno donde se ha desarrollado la aplicación\n\nEstos formularios, en su gran mayoría a menos que se especifique lo contrario, permiten gestionar el ingreso modificación y eliminación de documentos o registraciones ingresadas en la aplicación.\n\nEl otro elemento que es posible ejecutar dentro de los formularios es la de consulta y consulta parcial. Para esto último en necesario indicar cuales van a ser los atributos por los cuales esos datos van a estar desplegados. A nivel del usuario, la definición de la consulta parcial consiste en presentar el mismo formulario pero en blanco para poder indicar, campo por campo cuales van a ser los datos que servirá de atributo de selección de la visualización.\n\nPara el caso particular de los campos de texto que desconozcamos parte del criterio, el mismo puede ser reemplazado por la siguiente sintaxis:\n<small><pre>\nLIKE %<cadena de caracteres que respondan a la búsqueda>%\n</pre></small>\n\nComo se indica en el párrafo anterior, es imprescindible anteponer el prefijo \"LIKE\" antes a la cadena de caracteres. Se observa también que a ambos lados de la cadena de caracteres se sitúa el signo de porcentaje (%). Este signo tiene la función de comodín. Las siguientes cadenas sirven de ejemplo:\n<small><pre>\nLIKE Ventana%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que comiencen con la palabra \"Ventana\".\n<small><pre>\nLIKE %Vidrio%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que tengan en cualquier posición dentro del campo seleccionado la palabra \"Ventana\".\n\n== Referencia Rápida ==\n===Productos===\n===Composicion===\n===Modulos===\n===Bocetos===\n===Precios===\n===Contactos===\n===Valores===\n\n== Respuestas a Preguntas Frecuentes ==\n;¿Que sucede cuando se ingresa un nuevo Producto?\n:El ingreso de un nuevo Producto se utiliza cada vez que exista un producto o elemento componente de un producto para indicar los elementos mínimos de identificación de ese Producto o \"Materia Prima\" (denominado \"Elemento\"). Además, en forma automática se generan registraciones tanto en las tablas de Precios como en la de Composición, marcando en esta última el atributo de Elemento Primario para asociarlo en el caso que se coloque como elemento único dentro de una presupuestación.\n;¿Que sucede cuando elimino un presupuesto?\n:Se eliminan todas las registraciones asociadas (productos y elementos asociados al producto.\n;¿Que sucede cuando elimino un producto de un presupuesto?\n:Se eliminan todas las registraciones asociadas (de elementos componentes de ese producto en ese presupuesto, que pueden variar en cada presupuesto).\n;¿Que sucede cuando modifico las magnitudes de un producto en un presupuesto?\n:Se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico las cantidades de un producto en un presupuesto?\n:De la misma manera cuando se modifican las magnitudes, se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico un producto (Código de Producto o Descripción indistintamente)?\n:Se procede a eliminar las registraciones existentes del producto modificado y se agregan los elementos asociados a ese producto con el precio actualizado de acuerdo a la lista de precios vigente.\n;¿Se puede recuperar un presupuesto eliminado?\n:No. En el caso que se haya pulsado por error la tecla de eliminación, existe una pregunta de seguridad antes de eliminar físicamente la registración del presupuesto.\n;¿Que sucede cuando ingreso un producto en un presupuesto?\n:La aplicación automáticamente ingresa como elementos básicos aquellos que hayan sido señalados como básicos dentro del esquema de Composición de Producto. Si el Producto tiene otros elementos asociados pero no están definidos como básicos, es posible ingresarlos debajo de los básicos. En este caso en particular, solo estará permitido ingresar aquellos productos asociados en la composición previa y no otros Productos/Elementos.\n;¿Que significa Aprobar un Presupuesto?\n:Es el proceso que permite \"fijar\" un prespuesto y que no pueda ser modificado.\n;¿Porque no puedo enviar por correo electrónico un presupuesto?\n:Probablemente no esté incorporado el dato de Correo Electrónico Principal dentro de Contactos. Proceda a mantener actualizada la información de Contactos.\n;¿A que se refiere el Mantenimiento de Contactos?\n:La aplicación define como Contacto a toda persona física o jurídica que tenga relevancia dentro del proceso. Esto significa que tanto los Clientes, Proveedores, Agentes Comerciales y otras personas, deben figurar dentro de esta Entidad. La diferenciación de cada uno de ellos se encuentra en la asignación las diferentes categorías desplegadas en el formulario correspondiente.\n\n== Glosario ==\n{|\n! Concepto\n! Definición\n|-\n|\'\'Formularios\'\'\n|Los formularios ofrecen un método o rutina para el ingreso controlado de datos. En si, un formulario consiste en un conjunto de elementos o controles que mantiene un dato.\n|-\n| \'\'Base de Datos\'\'\n| Conjunto de componentes de información. Puede contener estructuras de datos como así también rutinas y funciones asociadas a las estructuras de datos\n|-\n| \'\'Tabla\'\'\n| Conjunto de datos referentes una entidad de información. Puede ser representada como una planilla de 2 dimensiones con registraciones y atributos comunes de esa entidad de información.\n|-\n| \'\'Entidad\'\'\n| Conjunto de datos referentes que conforman una unidad cuyos atributos la diferencian de otras unidades registrales. La conformación de una entidad se puede dar basada en solo una tabla o un conjunto de ellas.\n|-\n|}','utf-8'),(826,'Gestión Retail Industria\n\n== Spalnex Gestion ==\nSpanex es una aplicación orientada a satisfacer la demanda de soporte a la gestión de productos y servicios de terminación del mercado de la construcción civil. Esta gestión toma forma de una serie de módulos que articulan los diferentes procesos de gestión administrativa y los concernientes a los propios de producción.\n\nBasado y diseñado en herramientas de código abierto, la aplicación desde su concepción, tiene el claro objetivo que la misma un engranaje eficiente en la cadena de maximización del retorno de la inversión.\n\nConsta de módulos que permiten desde la definición de componentes de productos y servicios hasta el control de la producción de los mismos.\nExisten 2 entidades principales con las que se trabaja dentro de la aplicación, a saber:\n\n* Productos\n* Contactos\n\nDentro del concepto de \'\'\'Productos\'\'\' quedan incluidos todos aquellos elementos que puede conformar un producto terminado, un modelo o un conjunto de elementos a comercializar como así también, aquellos que puedan ser comercializados por si solos.\nDentro del concepto de \'\'\'Contactos\'\'\' quedan incluidos todas aquellas personas físicas o jurídicas que sean objeto de alguna operación dentro de la aplicación.\n\nLa versión actual no incluye la gestión gráfica del armado de los elementos, sin que esto sea un impedimento para poder generar productos comercializables.\n\nPara profundizar en los conceptos, se detallan a continuación algunos subesquemas que son de importancia dentro de la aplicación.\n\n=== Gestión de Productos ===\nEn la gestión de productos se engloban una serie de procesos necesarios para mantener la integridad y el normal desenvolvimiento de los módulos de la aplicación. Aquí se han definido en forma individual (obviamente interrelacionadas entre si) varias entidades a saber:\n\nNota: a lo largo de esta ayuda, se podrán observar algunos gráficos conceptuales que tienen como algunas figuras que significan\n\n[[Archivo:FZG.DOCS.Procesos.Ayuda.jpg|center|Vista Conceptual del Proceso]]\n\nDenominamos productos a todos los Productos Terminados y/o Materias Primas que lo componen. Dentro de esta estructura de información incluye la información referida a las magnitudes de control del producto y los coeficientes de precios a aplicar sobre precios de costo del producto para la venta y la imagen del producto, en el caso que exista\n\n[[Archivo:FZG.DOCS.Procesos.Productos.jpg|center|Vista Conceptual del Proceso]]\n\nSe observará más adelante que el concepto de producto es amplio y que incluye subproductos, parámetros de subproductos, precios, composiciones diferenciadas y otros elementos que permiten tener un mantener un portfolio de productos muy variada. Para esto se subdivide los productos en:\n\n*Productos PPD: (Propiamente Dicho. A partir de aquí, \"Productos\"\n*Precios: Precios de los productos\n*Composiciones: Conformación de conjuntos de productos o elementos para conformar otros productos comercializables. Se incluyen aquellos aspectos de control de forma, y categoría de producto. Es necesario aclarar que dada la versatilidad de la aplicación, puede incluirse dentro de un producto compuesto, otros subproductos o elementos tales como Mano de Obra, Colocación, Transporte, etc.\n\n==== Productos ====\nAl tiempo del ingreso de la información de producto, y a efectos de mantener la integridad de las estructuras de información, una vez finalizado el ingreso de la información de ese producto, al almacenarse, también genera en forma automática registraciones dentro de las estructuras de precios y de composición, con los valores de precios en 0 y un registro de composición con los valores de coeficientes asociados en 0\n\nEs importante diferenciar los coeficientes indicados dentro de la estructura de producto y los indicados dentro de la estructura de composición. Dada la facilidad de integración de \"productos\" o \"kits\" con diferentes \"componentes\" o \"elementos\", un elemento dentro de un producto puede tener valores diferentes a el mismo elemento aplicado para otro producto. En el caso de productos como las aberturas, probablemente las dimensiones reales de los interiores de una ventana sean diferentes a las de otro modelo de ventana aunque estas ventanas en si tengan la misma dimensión. En el caso que se desee precisión de costos, estos coeficientes y valores serán de suma importancia.\n\n==== Precios ====\nSe refiere a la lista de precios. \nDebe existir una registración de precios por cada producto activo. Si el ingreso del producto se realiza dentro de los procesos normales, esta registración debiera existir.\nPor cada registración existen, a la fecha, 4 tipos de precios diferentes. Normalmente, El precio \"0\" está indicado como Precio de Costo\". El resto (3 definidos en el release 20120328) puede ser aplicado a discreción del usuario. Nuestra sugerencia es dividir la política comercial en 3 tipos de clientes. La asignación del tipo de cliente se realiza dentro del Mantenimiento de Contactos.\n\n[[Archivo:FZG.DOCS.Procesos.Precios.jpg|center|Vista Conceptual del Proceso]]\n\nLos valores de cada uno de los precios por Tipo de Cliente pueden automatizarse a través de los coeficientes de Precios establecidos dentro del esquema de datos de Producto.\n\nExisten a la fecha 5 procesos que afectan directamente este concepto:\n\n*Cambio Masivo: Aplica un coeficiente de actualización a todos los tipos de precios de acuerdo a un filtro de producto dado.\n*Masivo Coeficientes Actualización: Permite modificar los coeficientes de actualización de acuerdo al \"Precio 0\" en forma masiva de acuerdo a un filtro de producto dado.\n*Precios General: Permite modificar los valores de precios (no coeficientes) por producto individual.\n*Precios Tabular Normal: Permite modificar los valores de precios por producto en un formato tabular.\n*Precios Tabular por Proceso: Permite modificar los valores de precios por conjunto de productos, aplicando en forma selectiva el coeficiente a utilizar.\n\n==== Composición ====\nEsta estructura de información alberga una matriz de Producto-Elemento/Componente de Producto. Esta esquema permite definir los elementos componentes de un producto sean estos básicos (necesarios) o optativos.\n\n[[Archivo:FZG.DOCS.Procesos.Composicion.jpg|center|Vista Conceptual del Proceso]]\n\nUn simple ejemplo de esta definición es el siguiente:\n\n<small>\n{| class=\"wikitable\"\n|+\n!Producto\n!Componentes\n!Necesario\n|-\n|Ventana Corrediza \"XXXXX\"\n|Marco Línea \"XXXXX\"<br/>Vidrio Incoloro 4mm<br/>Vidrio Templado Opaco<br/>Accesorios Línea \"XXXXX\"<br/>Instalación Ventana Corrediza \"XXXXXX\"\n|align=\"center\" |Si<br/>No<br/>No<br/>Si<br/>Si\n|-\n|}\n</small>\n\nEn el ejemplo precedente, observamos una abertura con sus componentes y con la posibilidad de definir entre 2 opciones con que tipo de interior se podrá presupuestar.\n\nEste esquema permite mantener variable la definición de productos de acuerdo a los precios individuales de cada elemento.\n\nDebido a que de este esquema partirá el cálculo de los precios, por defecto, al ingresar un nuevo producto, en forma automática se agregará un registro de componente (mínimo) con los datos del Elemento igual al Producto. Esto no debe modificarse a menos que quiera establecer un producto compuesto, en cuyo caso, solo será necesario contar con un producto básico.\n\n==== Proveedores ====\nSe refiere a los códigos de proveedores. Inicialmente se utiliza para diferencias los productos de acuerdo a su procedencia y para facilitar el proceso de cambio de precios, siendo estos códigos los atributos de diferenciación entre materias primas similares.\n\n=== Presupuestos ===\n----\nEste módulo permite gestionar presupuestaciones para clientes de forma amena y precisa, dependiendo su amplia flexibilidad de cuales hayan sido los datos ingresados en la conformación de los productos.\n\nEs posible \n\n\n==== Presupuestos ====\n\nEste proceso permite la gestión de propuestas de venta para todo tipo de clientes. Cuenta con un diseño que permite una visualización integral de los productos y procesos que intervienen en la conformación de esta propuesta de venta. Las acciones posibles dentro de este proceso son:\n\n*Propuestas\n**Alta\n***Propuestas de Ventas\n***Rápida de Clientes\n**Modificación\n***Productos\n***Cantidades\n***Dimensiones\n***Inclusiones\n***Actualización de Precios\n**Consulta\n***Consulta Registro secuencial\n***Consulta por Filtros\n**Activación\n**Impresión\n**Envío por circuito de correo electrónico\n**Copia de Presupuestos\n\n===== Características =====\n====== Diseño ======\nLa pantalla de presentación de este proceso presenta las siguientes elementos:\n\n* \'\'\'Cabecera\'\'\': Son los datos principales del formulario.\n** \'\'\'Datos de Cliente\'\'\': Es la información del contacto \"Cliente\" seleccionado que impacta en forma directa sobre la cotización de los productos dentro de la propuesta\n* \'\'\'Productos\'\'\': Se detallan todos los productos que formarán parte del presupuesto\n* \'\'\'Composición\'\'\': Se detalla todos los elementos que conforma un producto y sus adicionales.\n** \'\'\'Detalle Composición\'\'\': Es la información de los elementos componentes de cada producto presupuestado que impactan en forma directa sobre la cotización de ese elemento dentro del producto seleccionado dentro de la propuesta.\n\n[[Archivo:FZG.DOCS.Procesos.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Cabecera\'\'\': Se destaca la inclusión de los datos del cliente y la asignación de un agente de venta del presupuesto. Es importante la definición de los datos del cliente ingresado dado que dependiendo de la tipificación del mismo varariá en forma directa los precios a aplicar en los presupuestos. Últimamente, se a agregado la información de Agente Comercial que corresponde a quién es responsable del presupuesto y gestor del cumplimiento del ingreso de toda la información necesaria tanto para el cálculo presupuestario sino también para su posterior fabricación en caso de ser aprobado.\n\n[[Archivo:FZG.DOCS.Pantalla.Presupuesto.jpg|center|Vista Conceptual del Proceso]]\n\n\'\'\'Detalle Presupuesto\'\'\': Se detallan los datos mínimos de Productos necesarios para la confección del presupuesto. Estos datos son: Cantidad, Producto (Código y/o Descripción), Ancho/Largo y finalmente Alto. Para los casos de productos definidos con Magnitud igual a Unidad (UN), solo tomará la información indicada en el campo de Cantidad.\n\nAl tiempo del ingreso de la información de Productos, en forma automática se completará la sección de \'\'\'Detalle Producto\'\'\'. Esta sección es la que permitirá agregar los adicionales definidos en su oportunidad para completar el producto mencionado. Cabe aclarar, que solo se podrán agregar o eliminar lo elementos del Detalle de Producto que no formen parte del [[Esquema Básico de un Producto]]. A su vez, si los Elementos de los Productos ingresados tuviesen Parámetros adicionales a especificar, se agregarán en forma automática dentro de la 4º sección del formulario.\n\nDentro del detalle del producto se observan los siguientes datos:\n* Elemento: Código del elemento que forma parte del Producto\n* Descripción Elemento: Descripción del elemento que forma parte del Producto\n* Precio Unitario: Precio por Unidad de Magnitud del Producto de acuerdo a las condiciones del presupuesto (Tipo de Cliente, magnitud especificada, etc.)\n* Precio: Precio del Elemento de acuerdo a las condiciones del presupuesto y las cantidades especificadas.\n* Detalle: Indicador para incluir la Descripción del Elemento dentro de la Descripción impresa del Presupuesto al Cliente.\n\nEsta sección del formulario presenta las siguientes características:\n* Es indistinto el ingreso por Código de Elemento o por la Descripción del mismo.\n* Los campos de Código de Elemento y Descripción del Elemento poseen un botón de ayuda contextual. Solo se desplegarán los valores tanto de Código de Elemento como de Descripción de Elemento indicados dentro de la Composición de Producto.\n\nAdemás, como se mencionó anteriormente, existe una 4º Sección de \'\'\'Parámetros Adicionales\'\'\' que pueden afectar a un Presupuesto. En este caso, se detallan los valores distintos a las medidas generales que afectan al presupuesto y su posterior diseño o colocación.\nEn esta sección pueden incluirse cualquier valor y depende de lo ingresado dentro de la tabla de [[Valores Adicionales de Productos]] (Ver [[Mantenimiento de Datos Auxiliares]])\n\nLas características definidas de este formulario son las siguientes:\n* El esquema de información posee 4 grupos de datos ya comentados.\n* Los grupos de datos son independientes excepto al tiempo de ejecución de este mismo formulario y en las acciones de ingreso de información de cada grupo.\n** El alta de un Producto en el Detalle Presupuesto presupone el ingreso en forma automática de al menos una registración en el Detalle Producto.\n** El alta de un Producto se referencia a el Producto en si y su composición si la misma tiene más de un Elemento asociado.\n\n==== Presupuesto: Aprobación ====\nA los efectos futuros de gestión de fábrica y de cobranzas, cada elemento aprobado no podrá ser modificado.\n\n==== Presupuesto: Aprobados ====\nConsulta de Presupuestos Aprobados a la fecha.\n\n=== Gestión de Valores ===\n----\nUna de las características de la aplicación es que puede hacer un seguimiento de los valores afectados dentro del proceso de gestion de comercialización, sin que esto reemplaze las formas y comprobantes fiscales, siendo de exclusivo uso interno de la empresa.\n\nEsta gestión se divide en\n\n*Cheques\n*Pagos\n*Cobranzas\n\nTodos estos procesos sirven como \'\'hoja de trabajo\'\' para las registraciones legales y/o fiscales correspondientes y \'\'\'no es objetivo de la presente aplicación reemplazar las mismas\'\'\'.\n\n==== Cheques ====\nRepresenta la registración de cheques de terceros entregados en parte de pago. Los mismos son incorporados por medio del proceso de cobranza y pueden ser endosados en el proceso de Pagos.\n\nEste proceso solo es de consulta y sirve para tener control de los valores registrados y disponibles.\n\n==== Cobranzas ====\nRepresenta la registración de las cobranzas\n\n==== Pagos ====\nRepresenta la registración de las pagos de proveedores/gastos generales. Posee la característica de asociar formas de pago para un mejor control de los valores destinados a tal efecto.\nLos atributos definidos para esta registración son:\n*# de la Transaccion\n*Fecha de la Transaccion\n*Fecha Valor del Pago\n*Forma de Pago: En este caso, las formas habilitadas hasta el momento son las siguientes\n**CHT - Cheque de Terceros: Cheques de Terceros aptos para Endosar. \n**OPP - Orden de Pago Proveedores: Cheques propios o cualquier otro documento ejecutable a entregar\n**EFO - Efectivo Caja Chica\n*Proveedor / Razon Social\n*Tipo de Documento Origen: El documento que origina la obligación de pago\n**OC - Orden de Compra\n**FC - Factura\n*NºDocumento\n*Importe\n*Detalle: Permite el ingreso del detalle del pago o la factura para su clara identificación.\n*Imagen Documento Origen: Este proceso permite adosar la imagen del documento para su fácil visualización en caso de ser requerido\n\nEn la pantalla correspondiente, se despliegan 3 grandes bloques de información:\n*Filtro General: para la visualización de las registraciones de pago efectuadas\n*Pagos: para la visualiación en detalle de las registraciones de pago efectuadas\n*Documento Asociado: En esta ventana se desplegarán diferentes tipo de controles asociados a la forma de pago seleccionada o elegida para la registración de pago\nEn el caso de indicar como forma de pago el código \"CHT - Cheque de Terceros, a la derecha de la registración se desplegará la ventana de documentos asociado es en la que se emarcarán todos los cheques existentes disponibles para su endoso. Para seleccionar los mismos, pulse sobre la grilla de visualización de los documentos.\nEn el caso de indicar como forma de pago el código \"OPP - Orden de Pago Proveedores, a la derecha de la registración se desplegará la ventana con la posibilidad de inscribir el documento emitido.\nEn el caso de indicar como forma de pago el código \"EFO\" se no se habilitará la ventana de Documento asociado, solo quedando habilitados los atributos arriba indicados.\n\n== Generalidades ==\n\nEsta versión de la aplicación se encuentra desarrollada bajo un ambiente propicio para la gestión de tareas generales de oficina. Este esquema permite gestionar la información en forma clara y sencilla mientras se tenga conocimiento de la estructura de información de la aplicación.\n\nComo ya se encuentra indicado, la gestión de datos se encuentra basada en la definición de formularios que permiten en general el ingreso y mantenimiento de la información volcada dentro de la base de datos de la aplicación.\n\nMuchos de los formularios ya tienen incorporada dentro del mismo una facilidad de filtro simple, que atañe a los Productos, Categoría o Proveedor de los mismos, pero también es posible realizar búsquedas de mayor precisión con el entorno donde se ha desarrollado la aplicación\n\nEstos formularios, en su gran mayoría a menos que se especifique lo contrario, permiten gestionar el ingreso modificación y eliminación de documentos o registraciones ingresadas en la aplicación.\n\nEl otro elemento que es posible ejecutar dentro de los formularios es la de consulta y consulta parcial. Para esto último en necesario indicar cuales van a ser los atributos por los cuales esos datos van a estar desplegados. A nivel del usuario, la definición de la consulta parcial consiste en presentar el mismo formulario pero en blanco para poder indicar, campo por campo cuales van a ser los datos que servirá de atributo de selección de la visualización.\n\nPara el caso particular de los campos de texto que desconozcamos parte del criterio, el mismo puede ser reemplazado por la siguiente sintaxis:\n<small><pre>\nLIKE %<cadena de caracteres que respondan a la búsqueda>%\n</pre></small>\n\nComo se indica en el párrafo anterior, es imprescindible anteponer el prefijo \"LIKE\" antes a la cadena de caracteres. Se observa también que a ambos lados de la cadena de caracteres se sitúa el signo de porcentaje (%). Este signo tiene la función de comodín. Las siguientes cadenas sirven de ejemplo:\n<small><pre>\nLIKE Ventana%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que comiencen con la palabra \"Ventana\".\n<small><pre>\nLIKE %Vidrio%\n</pre></small>\nIndicará que ese criterio de búsqueda será para todos los elementos que tengan en cualquier posición dentro del campo seleccionado la palabra \"Ventana\".\n\n== Referencia Rápida ==\n===Productos===\n===Composicion===\n===Modulos===\n====¿Que es un Módulo?====\nEs un conjunto de productos o elementos que componen un módulo o modelo de producto. Generalmente se aplica para productos o partes de un proyecto de construcción.\n====¿Quién genera un nuevo módulo?====\nEl usuario con capacidades de diseño de productos.\n\n===Bocetos===\n===Precios===\n===Contactos===\n===Valores===\n\n== Respuestas a Preguntas Frecuentes ==\n;¿Que sucede cuando se ingresa un nuevo Producto?\n:El ingreso de un nuevo Producto se utiliza cada vez que exista un producto o elemento componente de un producto para indicar los elementos mínimos de identificación de ese Producto o \"Materia Prima\" (denominado \"Elemento\"). Además, en forma automática se generan registraciones tanto en las tablas de Precios como en la de Composición, marcando en esta última el atributo de Elemento Primario para asociarlo en el caso que se coloque como elemento único dentro de una presupuestación.\n;¿Que sucede cuando elimino un presupuesto?\n:Se eliminan todas las registraciones asociadas (productos y elementos asociados al producto.\n;¿Que sucede cuando elimino un producto de un presupuesto?\n:Se eliminan todas las registraciones asociadas (de elementos componentes de ese producto en ese presupuesto, que pueden variar en cada presupuesto).\n;¿Que sucede cuando modifico las magnitudes de un producto en un presupuesto?\n:Se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico las cantidades de un producto en un presupuesto?\n:De la misma manera cuando se modifican las magnitudes, se actualizan los precios en ese presupuesto con la última lista de precios vigente de todos los elementos asociados a las magnitudes del producto modificado.\n;¿Que sucede cuando modifico un producto (Código de Producto o Descripción indistintamente)?\n:Se procede a eliminar las registraciones existentes del producto modificado y se agregan los elementos asociados a ese producto con el precio actualizado de acuerdo a la lista de precios vigente.\n;¿Se puede recuperar un presupuesto eliminado?\n:No. En el caso que se haya pulsado por error la tecla de eliminación, existe una pregunta de seguridad antes de eliminar físicamente la registración del presupuesto.\n;¿Que sucede cuando ingreso un producto en un presupuesto?\n:La aplicación automáticamente ingresa como elementos básicos aquellos que hayan sido señalados como básicos dentro del esquema de Composición de Producto. Si el Producto tiene otros elementos asociados pero no están definidos como básicos, es posible ingresarlos debajo de los básicos. En este caso en particular, solo estará permitido ingresar aquellos productos asociados en la composición previa y no otros Productos/Elementos.\n;¿Que significa Aprobar un Presupuesto?\n:Es el proceso que permite \"fijar\" un prespuesto y que no pueda ser modificado.\n;¿Porque no puedo enviar por correo electrónico un presupuesto?\n:Probablemente no esté incorporado el dato de Correo Electrónico Principal dentro de Contactos. Proceda a mantener actualizada la información de Contactos.\n;¿A que se refiere el Mantenimiento de Contactos?\n:La aplicación define como Contacto a toda persona física o jurídica que tenga relevancia dentro del proceso. Esto significa que tanto los Clientes, Proveedores, Agentes Comerciales y otras personas, deben figurar dentro de esta Entidad. La diferenciación de cada uno de ellos se encuentra en la asignación las diferentes categorías desplegadas en el formulario correspondiente.\n\n== Glosario ==\n{|\n! Concepto\n! Definición\n|-\n|\'\'Formularios\'\'\n|Los formularios ofrecen un método o rutina para el ingreso controlado de datos. En si, un formulario consiste en un conjunto de elementos o controles que mantiene un dato.\n|-\n| \'\'Base de Datos\'\'\n| Conjunto de componentes de información. Puede contener estructuras de datos como así también rutinas y funciones asociadas a las estructuras de datos\n|-\n| \'\'Tabla\'\'\n| Conjunto de datos referentes una entidad de información. Puede ser representada como una planilla de 2 dimensiones con registraciones y atributos comunes de esa entidad de información.\n|-\n| \'\'Entidad\'\'\n| Conjunto de datos referentes que conforman una unidad cuyos atributos la diferencian de otras unidades registrales. La conformación de una entidad se puede dar basada en solo una tabla o un conjunto de ellas.\n|-\n|}','utf-8'),