Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Facturacion (https://www.clubdelphi.com/foros/showthread.php?t=79571)

Cesar Junior 17-07-2012 17:12:23

Facturacion
 
Buenos dias amigos, despues de mucho tiempo vulevo aqui a buscar ayuda, E creado un sistema de facturación para una empresa en la qual trabajo, en lo general el sistema se porta bien solamente necesito de algunas validaciones, en especial una de ellas que los explico ahora.
En la parte de ventas tengo un DBgrid donde son insertados los productos que seran vendidos (facturados) y al realizar esse processo se descuenta el mismo producto del BD Stock (ACCESS) salvo la venta y perfectamente funciona!!. Ahora el problema es: igual si no salvo la venta al insertar el producto me descuenta del BD,si cierro el programa sin salvar me descuenta del BD, qualquie problema que venga a ocurrir con la maquina (travar-se o algo así) descuenta el producto del BD, se que es algo sencillo pero como estoy con tam poco tiempo no estoy podiendo solucionar, la idea es que no se descuente el producto del BD si la venta no esta salva. Solamente descontar la venta del Banco de Dato si la venta fue salva. Gracias amigos....

newtron 17-07-2012 18:00:59

Hola.

El tema de los acumulados como las existencias en las bases de datos de escritorio es peliagudo porque lo suyo es manejarlas desde los triggers de una base de datos más seria.

¿Cuando descuentas las existencias? ¿Cuando se introduce el artículo y la cantidad en el grid?

Casimiro Notevi 17-07-2012 18:01:27

Recuerda poner títulos descriptivos a tus preguntas, "Facturacion" no es un título que describa el problema que quieres resolver. Gracias ;)

En cuanto a tu pregunta, es casi imposible ayudarte si no explicas mucho más lo que haces, el cómo, dónde, etc. aportas código fuente, etc.

Neftali [Germán.Estévez] 17-07-2012 18:24:53

Cita:

Empezado por Cesar Junior (Mensaje 437639)
En la parte de ventas tengo un DBgrid donde son insertados los productos que seran vendidos (facturados) y al realizar esse processo se descuenta el mismo producto del BD Stock (ACCESS) salvo la venta y perfectamente funciona!!. Ahora el problema es: igual si no salvo la venta al insertar el producto me descuenta del BD,si cierro el programa sin salvar me descuenta del BD, qualquie problema que venga a ocurrir con la maquina (travar-se o algo así) descuenta el producto del BD, se que es algo sencillo pero como estoy con tam poco tiempo no estoy podiendo solucionar, la idea es que no se descuente el producto del BD si la venta no esta salva. Solamente descontar la venta del Banco de Dato si la venta fue salva.

Para estas operaciones, normalmente se usan 2 soluciones, sino he entendido mal lo que necesitas:

(1) Transacciones; Realizar las operaciones utilizando transacciones de forma que todas las operaciones de la transacción se hacen como una única operación, o todas o ninguna. Esto tiene sentido cuando las operaciones se realizan en un corto espacio de tiempo. Creo que este no es tu caso, pues entiendo que el proceso de venta puede tardar un rato.

(2) ClientDataset, MemoryDataset o similar. Significa que realizar esa "venta" en memoria, no directamente sobre la Base de Datos. Al finalizar la venta es cuando (utilizando una transacción) se realizan TODAS las operaciones de golpe en la Base de Datos; La venta en sí y los movimientos sobre el stock. Hay varios componentes que te permiten realizar algo así; El TClientDataset que viene con Delphi, las RxLib traen uno llamado MemoryTable, y algunos otros que puedes encontrar sueltos. Es posible que se pueda realizar también utilizando una tabla temporal en la misma Base de Datos, aunque la idea de funcionamiento al final siempre es la misma. Realizar las operaciones en un "lugar intermedio" y luego al aceptar la venta, grabar todo en un sólo paso.

Un saludo.


La franja horaria es GMT +2. Ahora son las 15:20:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi