![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Con mucho cuidado, sobre todo con muuuuuuucho cuidado... ;- (lo siento, no lo he podido evitar).
En mi caso yo para presupuestos no descontaría, pero como han comentado, cada empresa puede trabajar diferente. Puedes hacer los cambios desde programa o desde Base de Datos (utilizando triggers) como te han comentado. Tal vez desde programa te sea más sencillo, desde Base de Datos, a priori es más seguro (si alguien cambia un dato directamente en B.D. seguirá actualizando correctamente). Si lo haces desde programa, obligatorio revisar bien las transacciones en ese bloque para que no te queden datos incoherentes.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
|||
|
|||
|
Como descontar cantidad de stock en tabla de Articulos.
Quiero intentar hacerlo desde el SQL Manager en el trigger.
Sabiendo que uso Delphi 7 con SQL Manager for InterBase & Firebird en el datamodule utilizo aparte de la database, dataset con su datasource y los query con su datasource. en los foirmularios utilizo los componentes de data controls como son dbedit, dbgrid y dbcombobox, etc. y mis bases de datos tienen los siguientes atributos: Tabla Articulo -id_Articulo -Codigo -Nombre -Stock -Stock_Minimo -Estado_Articulo -Porcentaje -Precio -Precio_Venta Supongamos que esta tabla en ves de ser Presupuesto es Facturacion, que no lo es eso entiendo: Tabla Presupuesto -ID-presupuesto -Nro_Presupuesto -Tipo_venta -Codigo_Cliente -Nombre_Cliente -Apellido_Cliente -Tel_Cliente -CNI_Cliente -Importe_total -Observacion -Fecha Tabla Detalle P -ID_Detalle_P -Codigo -Nombre_Articulo -Cantidad_Articulo -Precio_Articulo -Total -Presupuesto_ID Suponiendo que es un negocio pequeño y que el usuario no quiere facturar solo quiere presupuestar y cada ves que vende un articulo desea que se decremente su stock y a su ves cuando decide sacar un articulo del presupuesto que ese stock se vuelva a incrementar. Como Puedo Hacer para programarlo en los triggers, ya que nunca lo hice y no me doy cuenta, apesar de que creia que me defendia bastante bien aqui me llego el agua al cuello como dicen jajaja. desde ya muchas gracias. |
|
#3
|
||||
|
||||
|
Hola.
Te recomiendo que leas este libro (ya tiene unos buenos años, para la utilización de las bases de datos ha cambiado poco desde entonces). http://www.marteens.com/pdfs/TheDarkSideOfDelphi6.pdf Aquí también encontrarás mucha información de interés. http://www.firebird.com.mx en concreto deberías leer este artículo http://www.firebird.com.mx/modules/A...php?storyid=28 Respecto a tu trigger, va a ser algo de este estilo :
Saludos
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#4
|
||||
|
||||
|
ME adhiero a Casimiro, un presupuesto nunca debe descontar stock pues no es mas que un estimado de lo que costará al cliente en caso de que quiera fincar el pedido. Luego viene el pedido, el cual tampoco debe descontar directamente de stock sino "apartar" únicamente las unidades de cada artículo de manera que si haces un inventario físico te cuadre lo que dice el sistema con lo que hay en documentos pues la regla dice:
inventario físico= stock en sistema + pedidos pendientes de surtir. El pedido al convertirse el "albarán" como dicen en España o "remisión" como decimos en México entonces sí descuenta permanentemente del stock. Ya la factura es mero trámite fiscal pues no todos los clientes, al menos en el caso de México, requerirán de la misma. Me parece que falta que definas muy bien las reglas de negocio antes de dar el primer teclazo.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#5
|
|||
|
|||
|
Como descontar cantidad de stock en tabla de Articulos.
desde ya muchas gracias a todos por los aportes, estoy empezando a morar desde otro punto de vista.
a interpretar como son los pasos en los cuales se tendría que mover una empresa. guillotmarc me marca error en el codigo: IF (deleting) THEN Precompiler Error: Syntax error - ). cree el trigger ta como me indicaste y cuando compilo me marca en rojo esa porcion de codigo es que como en el deleting tengo que darle una opcion?? IF (deleting ( ) ) THEN Hace tiempo vi algo en java donde programamos mas o menos de esta forma pero busque y no me doy cuenta que puede ser. Gracias Guillot |
|
#6
|
||||
|
||||
|
Hola.
¿ Que versión de Firebird utilizas ?. Ese condicional está escrito utilizando una variable disponible desde Firebird 2.0 en adelante. Si aún utilizas Firebird 1.0 o 1.5, probablemente ya sea hora de que hagas el cambio, estas versiones son muy antiguas. Un trigger alternativo, sin usar esa variable, sería :
NOTA: Ese condicional está para solventar el problema de que en un Trigger AFTER DELETE, las variables NEW no tienen valor, y hay que consultar el valor OLD del código de artículo (mientras que en un Trigger AFTER INSERT ocurre exactamente lo contrario). En la segunda propuesta, se solventa el problema mediante el uso de la función COALESCE. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#7
|
||||
|
||||
|
Eliminado por código SQL mal formateado.
Corrección posteada en un nuevo mensaje.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#8
|
||||
|
||||
|
Finalmente, la opción que va a funcionar en cualquier versión de Interbase o Firebird, por antigua que sea (ya que utilizamos la sintaxis más básica y común) es crear tres triggers, uno para cada operación que se puede hacer en la tabla:
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
#9
|
||||
|
||||
|
Hola ilchicho, lo que tu quieres hacer de regular Stock en presupuestos o pedidos, es una reserva o retención de mercancía, esto se hace de la siguiente manera, debes crear una nueva tabla, con el campo común del Código del producto, el del Cliente, el Tipo de Documento y número de este, además debes de añadir el campo reserva de Stock y fecha de la reserva. esto en cuanto a la tabla, se puede añadir un campo más que sería el de días de reserva, pero este último puedes controlarlo por código o tenerlo incluido en la tabla de Configuración.
Por código cuando controlas el Stock debes de añadir dos labels donde marque el Stock reservado y el Stock actual-el reservado (teniendo en cuenta siempre que sólo contaría el que este dentro del plazo dado (fecha actual esta dentro de la fecha de reserva + el número de días de la reserva)), sería bueno que eliminases las reservas ya caducadas o añadir otro campo indicando que están caducadas. Espero te sirva el planteamiento.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| descontar mercancia de una tabla a otra | elsamurai | Conexión con bases de datos | 11 | 15-12-2010 04:21:44 |
| Como borrar articulos con relacion a otra tabla | kaeltas | SQL | 5 | 12-01-2010 23:41:26 |
| tabla articulos | josi | Varios | 28 | 02-04-2008 10:30:55 |
| como puedo saber la cantidad de campos que tiene una tabla | CottonMouth | OOP | 1 | 27-06-2007 07:02:49 |
| cantidad de articulos | juanchopit | Varios | 3 | 20-09-2005 05:57:54 |
|