Fórmulas. Objetivos y Definición. Definir fórmulas nos brinda una forma clave de compartir conocimiento y obtener código generado optimizado



Documentos relacionados
Mantenimiento Limpieza

Guías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online

Guía de referencia para mytnt. mytnt. C.I.T Tecnología Aplicada al Cliente

Facturación Automática de Ventas WhitePaper Noviembre de 2006

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Manual para la utilización de PrestaShop

Metadatos en Plataformas ECM

Orden de ejecución de reglas y fórmulas

PARTE 3 ECUACIONES DE EQUIVALENCIA FINANCIERA T E M A S

Dirección Alumnos. Av. Benjamín Aráoz C.P Tucumán - Argentina Tels.: 0054 (0381) Fax: Internet:

Base de datos en Excel

SUB_ESTADOS DE CHEQUES DE TERCEROS

SUB_ESTADOS DE CHEQUES DE TERCEROS

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Diseño de bases de datos Diapositiva 1

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Carrito de Compras. Esta opción dentro de Jazz la podremos utilizar como cualquier otro carrito de compras de una página de Internet.

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Instructivo. VIDEOS EN: INTRODUCCION

INTRODUCCIÓN-CONCEPTOS BÁSICOS

Transacciones y bloqueos en SQL-Server

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Objeto Procedimiento

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

Plataforma Helvia. Manual de Administración Administración General. Versión

MANUAL DE CS-ALMACENES (MAYO 2012)

PREGUNTAS FRECUENTES PROCESO MIGRACIÓN CLIENTES WEB FIDUCIARIA SUCURSAL TELEFÓNICA BANCA PERSONAS Y SUCURSAL TELEFÓNICA

2) Se ha considerado únicamente la mano de obra, teniéndose en cuenta las horas utilizadas en cada actividad por unidad de página.

MANUAL DE AUTOMATRÍCULA

ESPOCH ESCUELA DE MEDICINA HERNANDEZ MAYRA FORMULAS Y DUNCIONES BASICAS ESPOCH

MÓDULO 2. LEYES FINANCIERAS DE CAPITALIZACIÓN Y DESCUENTO SIMPLE

Capítulo 9. Archivos de sintaxis

Gestión de Retales WhitePaper Noviembre de 2009


MANUAL DE AUTOMATRÍCULA

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

Manual de rol gestor de GAV para moodle 2.5

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Matrices equivalentes. El método de Gauss

6.1. Conoce la papelera

NOVEDADES Y MEJORAS. datahotel versión 9.00 TRABAJAR CON I.V.A INCLUIDO

Comerciales. Comisiones en Documentos de Venta WhitePaper Enero de 2008

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

SERVIDOR DNS DINÁMICO EN WINDOWS 2000/2003 SERVER.

E 1 E 2 E 2 E 3 E 4 E 5 2E 4

Ecuaciones de primer grado con dos incógnitas

15 CORREO WEB CORREO WEB

BREVE MANUAL DE SOLVER

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

5.8. REGISTRO DE FACTURAS.

MÓDULO 3 HERRAMIENTAS EN LA NUBE: ANFIX

PROGRAMA DE GESTIÓN DE USUARIOS, PROYECTOS Y SOLICITUDES DEL SERVICIO GENERAL DE APOYO A LA INVESTIGACIÓN SAI

II. Relación con Terceros

Movimiento a través de una. José San Martín

5.4. Manual de usuario

PROPUESTAS COMERCIALES

Tema 3. Medidas de tendencia central Introducción. Contenido

Ejemplo de tipo fijo CALCULADOR CONTABLE

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 12: Empresas y Agencias

UNIDAD 1 LAS LEYES FINANCIERAS DE CAPITALIZACIÓN DESCUENTO

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

ARGUMENTARIO PROCESOS CALCULO INFORMATICO DEL IMPUESTO SOBRE EL VALOR AÑADIDO.

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Formas de Pago y Efectos en Facturas de Venta WhitePaper Febrero de 2007

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

CREACIÓN Y CONFIGURACIÓN DE WIKIS

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS LABORATORIOS FARMACÉUTICOS Y ALMACENES MAYORISTAS DE DISTRIBUCIÓN

Notificaciones y Presentaciones Electrónicas en portal Web

Manual de administración Administración General V

Para añadir un presupuesto nuevo, seleccionaremos en el apartado Presupuestos la opción en la parte superior Añadir.

MANUAL DE USO PROGRAMA DE GESTIÓN AGENCIAS DE VIAJES

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

Manual de usuario Noticias y Accesos Directos en Facultades ÍNDICE

NUEVO SISTEMA DE MENSAJERÍA.

Actividades con GeoGebra

Manual de usuario de Solmicro BI. Página 1

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

Curso de PHP con MySQL Gratis

Cómo ingresar a la Sucursal Electrónica?

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

EJERCICIOS DE MATEMÁTICAS I HOJA 4. Ejercicio 1. Se consideran los vectores

Cierre de Ejercicios Fiscales en el Sistema ASPEL-COI 4.0

by Tim Tran:

MANUAL DE USUARIO FACTURACIÓN ELECTRÓNICA

Divisibilidad y números primos

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

SIFAC II Respuesta a Consultas de las Empresas Sanitarias

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

Soporte y mantenimiento de base de datos y aplicativos

Eurowin 8.0 SQL. Manual del módulo TALLAS Y COLORES

hay alguien ahi? por Marcelino Alvarez

Sistema Ventanilla Manual Solicitud Compra DIMERC

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

Transcripción:

97

Objetivos y Definición Definir fórmulas nos brinda una forma clave de compartir conocimiento y obtener código generado optimizado Cuando el valor de un atributo o variable puede calcularse a partir de otros atributos, constantes y/o funciones, puede definirse como una fórmula Contamos con 2 formas de definir fórmulas: - Globales: A nivel de la Base de Conocimiento - Locales: En medio de cierto código Veremos este concepto en primer lugar Veremos este concepto más adelante con más conocimientos de GeneXus Cuando definimos una fórmula, GeneXus puede combinar la consulta / cálculo asociada a la fórmula con la consulta en la cual la fórmula está presente y así generar sentencias optimizadas. 98

Globales Fórmula Global = atributo al cual el analista GeneXus le asigna un cálculo asociado. Sólo atributos pueden definirse como fórmulas globales, no variables. Cómo se realiza esta definición? Accediendo al editor de fórmulas desde la estructura de la transacción 99

Globales Decimos que: atributos fórmula globales = atributos virtuales Significando que: No se crean como atributos físicos. Para cada objeto que referencie un atributo fórmula global, GeneXus incluirá en su programa generado el código necesario para realizar el cálculo y desplegarlo en tiempo de ejecución. Tabla base / Tabla asociada a un atributo fórmula global: Tabla en la cual el atributo se almacenaría si no fuera fórmula. Como explicamos en esta diapositiva, los atributos definidos como fórmula global, no se crean como campos físicos en tablas, por lo cual decimos que son atributos virtuales. Sin embargo, decimos que tienen una tabla asociada o tabla base, para conocer el contexto en el cual se han definido, y contar con ese contexto al momento de disparar el cálculo correspondiente donde sea que se referencien. 100

Clasificación Horizontales: Una o varias expresiones aritméticas Aggregate: Sum, Count, Average, Max, Min, Find Compuestas: Conjunto de expresiones Horizontales y/o Aggregate APLICA A GLOBALES Y LOCALES Importante: TODAS PERMITEN QUE SE LES INCLUYA CONDICIÓN DE DISPARO - Cuando definimos fórmulas en GeneXus no indicamos clasificación. - La clasificación es externa a GeneXus y su finalidad es agrupar fórmulas por: Tipo de cálculo que ofrecen. Atributos que se pueden involucrar en su definición. 101

Clasificación Ejemplo de Fórmula Horizontal (Global) : Customer { CustomerId* CustomerName CustomerTotalPurchases CustomerTotalPayments CustomerBalance CustomerTotalPurchases CustomerTotalPayments DEJA DE PERTENECER FÍSICAMENTE A LA TABLA TABLA CUSTOMER CustomerId* CustomerName CustomerTotalPurchases CustomerTotalPayments En la definición de un atributo como fórmula horizontal, es posible involucrar atributos pertenecientes a la tabla asociada al atributo que se está definiendo fórmula y a su tabla extendida. En el ejemplo, al definir que el atributo CustomerBalance es fórmula, el mismo dejará de existir como campo físico de la tabla CUSTOMER. Diremos a partir de ese momento CustomerBalance es un atributo virtual y que su tabla base o asociada será CUSTOMER, ya que de almacenarse dicho atributo nuevamente (ya sea por definir el analista que deja de ser fórmula o que es fórmula redundante) se crearía como atributo físico en la tabla CUSTOMER. El tipo de cálculo de esta fórmula definida es horizontal, ya que consiste en una expresión aritmética; por lo tanto los atributos que se pueden referenciar en la definición de esta fórmula son los pertenecientes a la tabla CUSTOMER (tanto almacenados como fórmulas) y su tabla extendida. 102

Clasificación Ejemplo II de Fórmula Horizontal (Global) : Invoice { InvoiceId* CustomerId CustomerName InvoiceDate Detail { InvoiceDetailId* ProductId ProductDescription ProductPrice InvoiceDetailQuantity InvoiceDetailAmount ProductPrice*InvoiceDetailQuantity if InvoiceDetailQuantity<=100; ProductPrice*InvoiceDetailQuantity*0.9 otherwise; En este ejemplo el atributo InvoiceDetailAmount ha sido definido como fórmula global también. Es decir, utilizando el editor de fórmulas, se ha asociado un cálculo a este atributo y el mismo pasará a ser un atributo virtual. La tabla asociada al atributo InvoiceDetailAmount será INVOICEDETAIL, ya que de almacenarse dicho atributo nuevamente, se crearía en dicha tabla física. Como podemos observar la fórmula definida cae en la clasificación de horizontal, ya que consiste en 2 expresiones aritméticas condicionales. Los atributos involucrados en la definición de la fórmula pertenecen o bien a la tabla INVOICEDETAIL o bien a su tabla extendida. 103

Clasificación Ejemplos de Fórmulas Aggregate (Globales) : Invoice { InvoiceId* CustomerId CustomerName InvoiceDate InvoiceDetails Count(InvoiceDetailQuantity) InvoiceAmount Sum(InvoiceDetailAmount) Detail { InvoiceDetailId* ProductId ProductDescription ProductPrice InvoiceDetailQuantity InvoiceDetailAmount En ambos cálculos solo intervienen los registros que cumplen: INVOICEDETAIL.InvoiceId = INVOICE.InvoiceId En el ejemplo los atributos InvoiceDetails e InvoiceAmount han sido definidos como fórmulas globales, ya que utilizando el editor de fórmulas se ha definido una fórmula para cada uno de estos atributos (pasando ambos a ser atributos virtuales). Dado que las fórmulas definidas son Count y Sum respectivamente, en ambos casos se trata de fórmulas Aggregate. La tabla asociada a ambos atributos fórmula es INVOICE, ya que de almacenarse estos atributos, se crearían en dicha tabla física. Las fórmulas Aggregate no solo tienen una tabla base asociada (como todas las formulas), sino que también involucran una tabla a ser navegada. Si bien resulta intuitivo, la tabla a ser navegada en una fórmula Aggregate, es la tabla que se navegará para realizar el cálculo. GeneXus inferirá cuál es la tabla a ser navegada por una fórmula Aggregate, por los atributos involucrados en la definición de la fórmula. En nuestro ejemplo, la tabla a ser navegada en ambas fórmulas Aggregate es INVOICEDETAIL, ya que tanto en la definición de Sum como Count, hemos referenciado a un único atributo asociado a INVOICEDETAIL. Cuando definimos una fórmula Aggregate, ya tenemos conocimiento de qué tabla pretendemos navegar para efectuar el cálculo. Los atibutos que podremos referenciar en la definición de una fórmula Aggregate deberán pertenecer a la tabla a ser navegada y su tabla extendida + a la tabla asociada al atributo que se está definiendo como fórmula y su tabla extendida. De involucrar en una fórmula Aggregate atributos que no pertenezcan a este contexto mencionado, un error se reportará en el listado de navegación correspondiente. Por último, de haber atributos en común (de igual nombre) en las tablas involucradas en la definición de una fórmula, GeneXus aplicará esa relación (es decir, filtrará automaticamente por igualdad por los atributos de igual nombre). Esto es lo que sucede en estos 2 ejemplos, que GeneXus cuenta y suma las líneas relacionadas a sus cabezales (al sumar y contar, aplica automáticamente el filtro INVOICEDETAIL.InvoiceId = INVOICE.InvoiceId ). 104

Sintaxis completa de Sum, Count, Average: Sum Count Average( Expresión, [Condición Explícita, Valor por Defecto]) [if Condición Disparo]; En los 2 ejemplos de fórmulas Sum y Count que hemos visto, solamente hemos definido el parámetro obligatorio, es decir la expresión a ser sumada o contada (que en un caso consistió en un atributo almacenado y en otro caso en un atributo fórmula). También dicha expresión podría haber involucrado constantes y/o funciones. Vimos que GeneXus determina condiciones de filtro implícitas al realizar la suma, cuenta o promedio. También podríamos haber definido condiciones de filtro explícitas y en caso de haberlas, GeneXus tendrá en cuenta a ambas: implícitas + explícitas. A su vez opcionalmente es posible definir un valor por defecto a ser retornado cuando no se encuentran registros para contar, sumar o promediar. Al igual que todas las fórmulas, estas también permiten incluir condición de disparo. Por último, vale mencionar una excepción y es que en particular en las fórmulas Count, el primer parámetro debe corresponder a un atributo y no a una expresión. Puede referenciarse cualquier atributo de la tabla en la cual se quieran contar registros (que cumplan con condiciones explícitas y/o implícitas). 105

Clasificación Ejemplos de Fórmulas Aggregate (Globales) : Invoice { InvoiceId* CustomerId CustomerName InvoiceDate InvoiceDetails Count(InvoiceDetailQuantity) InvoiceAmount Sum(InvoiceDetailAmount) Detail { InvoiceDetailId* ProductId ProductDescription InvoiceDetailQuantity InvoiceDetailProductPrice InvoiceDetailAmount Product { ProductId* ProductDescription PriceList { ProductPriceListDate* ProductPriceListPrice Max(ProductPriceListDate, ProductPriceListDate<=InvoiceDate, 0, ProductPriceListPrice) InvoiceDetailProductPrice*InvoiceDetailQuantity Hemos modificado el diseño de las transacciones para que en lugar de representar que cada producto tiene un único precio, representamos que cada producto tiene una lista de precios de acuerdo a la fecha de cambio de los mismos. Al efectuar este cambio, el atributo ProductPriceListPrice no podrá estar presente en el segundo nivel de la transacción Invoice. Por qué? Porque el nuevo diseño estará representando que un producto ya no tendrá solamente un precio, sino muchos: uno por cada fecha de cambio de precio del mismo. Por lo tanto, para un producto en una línea de una factura, tendremos que buscar el precio vigente del mismo, teniendo en cuenta la fecha de la factura. Recordemos que los atributos que se pueden inferir en determinado nivel de una transacción, son los que pertenecen a la tabla extendida de la tabla base asociada al nivel en cuestión. En este ejemplo, la tabla extendida de la tabla INVOICEDETAIL, no incluye a la tabla PRODUCTPRICELIST (en la cual se encuentra el atributo ProductPriceListPrice): por lo tanto en el nivel Detail de la transacción Invoice (asociado a la tabla INVOICEDETAIL) no es posible inferir al atributo ProductPriceListPrice (almacenado en la tabla PRODUCTPRICELIST). 106

Qué ocurre si dejamos al atributo ProductPriceListPrice en el nivel Detail de la transacción Invoice? Como no se podrá inferir, entonces GeneXus no tendrá otra opción que determinar almacenarlo en la tabla INVOICEDETAIL pese a que ya estará este atributo secundario en otra tabla (PRODUCTPRICELIST). Como el resultado de esto es un modelo de datos no normalizado, se reportará el error al querer reorganizar la base de datos. Y cómo hacemos para desplegar en cada línea de la factura, el precio vigente del producto de la misma? De todos los precios correspondientes al producto de una línea, cuál queremos recuperar? Evidentemente, de todos los precios que tengan fecha menor o igual a la fecha de la factura, queremos aquel que tenga fecha mayor. Procedemos entonces a crear en el nivel Detail de la transacción Invoice, un nuevo atributo de nombre InvoiceDetailProductPrice, al que definiremos como fórmula global y por lo tanto será un atributo virtual. Le asociaremos a dicho atributo la fórmula Max: Condiciones que deben cumplir los registros para ser considerados Valor de retorno si no se encuentra ningún registro que cumpla con las condiciones Max(ProductPriceListDate, ProductPriceListDate<= InvoiceDate, 0, ProductPriceListPrice) Atributo a maximizar de entre los registros que cumplan las condiciones Para el registro encontrado, se retorna este atributo GeneXus inferirá la tabla a ser navegada por el último parámetro de la fórmula (el atributo de retorno). Como ya se ha explicado, los atibutos que podremos referenciar en la definición de una fórmula Aggregate deberán pertenecer a la tabla a ser navegada y su tabla extendida + a la tabla asociada al atributo que se está definiendo como fórmula y su tabla extendida. De involucrar atributos que no pertenezcan a este contexto mencionado, un error se reportará en el listado de navegación correspondiente. GeneXus considerará al momento de efectuar la búsqueda, la condición explícita de filtro + las condiciones ímplicitas detactadas. La fórmula Min es totalmente análoga a Max, con la única diferencia de que al encontrar un conjunto de registros que cumplan con las condiciones, se seleccionará aquel registro que tenga valor mínimo para el atributo indicado en el primer parámetro y se retornará el valor de retorno que se haya indicado en el último parámetro. La fórmula Find por su parte, también permite buscar un registro que cumpla con ciertas condiciones, sin embargo de haber más de 1 registro que cumpla con ellas, la fórmula devolverá el atributo de retorno correspondiente al primer registro encontrado (sin maximizar ni minimizar un valor en el conjunto de registros que cumplan con las condiciones). La sintaxis Find es: Find (Expresión de retorno, [Condición explícita], [Valor por defecto]) [if Condición de disparo] 107

Clasificación Ejemplo de Fórmula Compuesta (Global): Customer { CustomerId* CustomerName CustomerTotalPurchases CustomerTotalPayments CustomerBalance CustomerAverage Sum(InvoiceAmount) / Count(InvoiceAmount) 108