Entradas

Mostrando las entradas de mayo, 2013

Pienso-Pienso: Trabajar con Facturas.(SOLUCIONES)

Imagen
En el post Trabajar con Facturas  planteaba el problema de hacer un programa siguiendo el patrón de diseño Work with y poder filtrar por una condición sobre las lineas de las facturas. En el ejemplo se planteaba que se debía poder filtrar por las facturas que tenían un determinado producto. El problema a evitar era que las lineas no se repitieran.

En los comentarios plantearon las siguientes soluciones:

1) Trabajar con lineas de facturas con una linea especial.
Gustavo planteaba agregar una linea especial a las facturas con un producto ficticio y filtrar siempre por dicho producto.
Ventaja: Es bastante sencilla de implementar, aunque hay que agregar la linea ficticia en el momento de crear facturas.
Desventaja: Hay que ocultar en el resto de la aplicación la existencia de dicho producto. No siempre es aplicable.

2) Crear una formula que concatena los productos.
Alejandro plantea crear una formula con los productos redundantes y se busca con like en dicho campo.
Ventajas: No le encuentr…

Dominio WikiPage o agregar contenido semi-estructurado a mi aplicación

Imagen
Desde hace un tiempo, vengo encontrando un patrón repetido en las aplicaciones que estamos desarrollando: Hay que agregar algún tipo de contenido no demasiado estructurado a determinadas tablas.

Para que se pueda entender pongo algunos ejemplos:

User Control en el GeneXus MarketPlace. 
Necesita una pagina con texto con formato, un titulo, una explicación, links a paginas de ejemplo y algunos archivos adjuntos para poder bajar dicho control

Sistema de Incidentes. 
Se necesita tener una explicación y una resolución con una historia de los mismos, dejando registro de quien agrega / cambia algo.
Es util tambien tener links a otros incidentes y tener adjuntos.

Proyectos de desarrollo compartido.
Es bueno tener una pagina donde se explique el alcance, los objetivos, las tareas que quedan por hacer. También es bueno tener para bajar los archivos necesarios para hacer funcionar dicho proyecto.

Varias de estas necesidades las podemos resolver con un Wiki, por lo que se me ocurría que seria conve…

Pienso-Pienso: Eliminar tabla y foreign key por Dominio con valores enumerados.

En una aplicación GeneXus, tengo las tablas

Proyectos
*ProyectoID        
 ProyectoNombre  Char(60)
 Estado (Ingresado, Cotizado,Aprobado, Suspendido, Terminado y pueden haber mas)

y

Estados de Proyecto
*Estado               Char(3)
  EstadoNombre  Char(60)
  Activo                Boolean  //Indica si el proyecto esta activo o ya esta terminado

En mi aplicación tengo que hacer referencias a determinados valores del Estado, para realizar determinadas acciones, por ejemplo para notificaciones y/o alarmas.

Un desarrollador plantea eliminar la tabla Estados de Proyectos y sustituirla con un Dominio con valores Enumerados, con lo cual se elimina una tabla y varios joins entre la tabla de Proyectos y  Estados en las navegaciones de los programas.

En la aplicación hay consultas que solo muestran los proyectos Activos (Ingresado, Cotizado, Aprobado) y no los Suspendidos y Terminados.

* Como manejaría el atributo Activo si se utilizara el Dominio con valores enumerados?
* De que forma haría las…

Pienso-Pienso: Trabajar con Facturas.

Imagen
Un problema sencillo

Tengo una tabla de facturas
*FacturaId FacturaFecha EmpresaId  (  *ProductoId   Cantidad  )
Cada factura tiene 10 productos en promedio.

Tengo que hacer un trabajar con facturas, que muestre FacturaId, FacturaFecha, EmpresaId en una grilla (sin mostrar repetidos) y permita filtrar por rango de fechas, por empresa y por producto.

De que forma lo implementarían?
Se darán puntos dobles si usan patterns (k2btools, WorkWith, WorkWithPlus, PxTools, etc) en la solución.
Alcanza que cuenten como lo harían con un pseudocodigo.

Controles de usuario GeneXus (User Controls): Úsese con precaución.

Imagen
Desde la introducción de GeneXus X, tenemos a nuestra disposición los User Controls (en adelante los llamare UC, para abreviar) .  Con ellos, podemos agregar fácilmente a nuestra aplicación funcionalidades que nativamente no se tienen.
Ademas, con la llegada del GeneXus Marketplace, la instalación y manejo de los UC se vio muy simplificada, cosa muy buena.

Algunos de los UC son muy lindos y fáciles de usar, por lo que la tentación de incorporarlos a nuestra aplicación es muy grande. Al usar cualquier componente externo en nuestra aplicación, se agregan dependencias las cuales agregan complejidad a nuestra solución, por lo que es conveniente tomarse un tiempito para  hacer una evaluación de los user controls que pensamos usar.

Algunos de los criterios que me gusta usar para dicha evaluación son:

Costo
Este es el mas fácil de analizar, porque podemos ver si se necesita pagar para usarlo.

Licenciamiento
Algunas veces, si los UC usan licencias no muy conocidas, en necesario evaluarlas con p…