Foros públicos Abanq / Desarrollo de Abanq / Bug conocido en modulos oficiales 2.2, solucionado en version 2.3
Autor Mensaje
agustinhenze
Miembro
# Publicado: 27 Nov 2008 22:09 · Editado por: Administrador


Hola, acabo de bajar los módulos 2.2 oficiales, el binario del motor 2.3. Hago la siguiente prueba.
Contexto:
# Stock del articulo 1 antes de hacer algo es 3 por ej.

Abro dos programas en el primero, voy a facturación,
* inserto una nueva factura 1, pongo el cliente...
* inserto una nueva linea, por ej: articulo 1, cantidad 1
* F10
* dejo la factura 1 a mitad de transacción, o sea no la acepto, pero la linea ya está agregada

- En el otro programa
- voy facturación
- inserto una nueva factura 2
- inserto una nueva linea, por ej: articulo 1, cantidad 2
- presiono F10
- se bloquea, lo cual me parece bien porque ya hay una transacción en curso en la factura 1, pero, acá viene el problema
* En el otro programa que tenía abierta la transacción, la cierro, o sea acepto la factura 1.
- lo cual me desbloquea el programa bloqueado en el cual estaba haciendo la factura 2
- En el programa que se me acaba de desbloquear
- le doy F10
- F10 nuevamente, o sea aceptamos la factura 2
- voy a almacén, artículos, stock Físico 1.
Conclusión solamente me tomó lo de la segunda factura y el stock se perdió, porque debería haber 0.

Bueno esa es la prueba que yo he realizado, si a alguien mas le pasa lo mismo por favor avise, así vemos si realmente es un bug, o solamente me pasa a mí.

Saludos.

javierredolfi
# Publicado: 27 Nov 2008 22:36


Hola.

Agrego más datos.

He probado con los módulos 2.2 y el cliente 2.2 y 2.3 con postgreql 8.2 y me sucede lo mismo.

Talvés es la versión del postgres.

falbujer
Miembro
# Publicado: 28 Nov 2008 19:59


Hola,

este es un bug conocido en la version 2.2 de los módulos. En la versión 2.3 de los modulos oficiales ya está solucionado.

Saludos.

agustinhenze
Miembro
# Publicado: 30 Nov 2008 01:15


Hola,

vuelvo a escribir para compartir una posible solución a esto, aparte de la de los módulos oficiales 2.3. También para recibir críticas de que les parece.
Usé la función ejecutarTarea que hizo Javier Redolfi que creo que está en otro hilo de este foro. A continuación la pego, esta función se agregó en el FLObjectFactory.h en la clase FLUtil

/**
Ejecutar una tarea ( query ) en la base de datos

@param tarea Tarea a ejecutar
@param connName Nombre de la conexion
@return lo que devuelve el método exec() de qsqlquery, o sea true o false
*/
bool ejecutarTarea( const QString & tarea, const QString & conName="default" ) {
if ( tarea.isNull()||conName.isNull() ) {
qWarning("tarea o nombre de conexion nulo");
return false;
}
FLSqlDatabase *db_ = FLSqlConnections::database( conName );
if ( !db_->dbAux() ){
return false;
}
QSqlQuery *p = new QSqlQuery( db_->dbAux() );
return p->exec( tarea );
}

Y después en el script flfactalma en la función cambiarStock, agregué esto:

if (referencia == "" || !referencia || codAlmacen.isEmpty() || !codAlmacen)
return true;

var util:FLUtil = new FLUtil();
+ if (!util.ejecutarTarea( "SELECT cantidad FROM stocks WHERE referencia ='" + referencia + "' FOR UPDATE NOWAIT;" ) ){
+ MessageBox.warning(util.translate("scripts", "El artículo " + referencia + " se encuentra bloqueado, vuelva a intentar +mas tarde"),
+ MessageBox.Ok, MessageBox.NoButton, MessageBox.NoButton);
+ return false;
+ }

Bueno, las primeras desventajas que veo de esto es que no se puede facturar el mismo artículo, si o si hay que esperar a que la otra factura se termine, también que si no hay cursor auxiliar no funciona. No funciona en versiones de PostgreSQL menores a la 8, por supuesto ni se si funciona en MySQL.

Saludos.

Su respuesta

          Sin código BB *¿Ayuda?

 » Usuario  » Contraseña 
 

IMPORTANTE: La temática de los foros es única y exclusivamente para cuestiones sobre el uso o el desarrollo de AbanQ, cualquier mensaje que se salga de esta temática será eliminado por los moderadores. El repetido incumplimiento de esta norma implicará la expulsión del foro.


Para poder publicar su mensaje debe introducir el siguiente código de validación:



  
 
 


miniBB forum software © 2001-2013