PDA

Ver la Versión Completa : Agregar artículos al Grid de detalle Factura


elianny
09-08-2012, 21:05:58
Hola a todos.
Estoy haciendo un pequeño sistema de ventas.

La base de datos está: Access 2007
Uso Delphi 7

Registros o mantenimientos que uso:
.- Registro Cliente (Funciona perfectamente)
.-Registro producto o artículos: (Funciona perfectamente).

El Registro Factura está dividido en dos partes:

.-Tabla: factura con los siguientes campos:
Numero Factura
Fecha
Código cliente
Nombre cliente
Apellidos
Balance.
Monto
Descuento
Total a pagar

Tabla: Detalle factura con los siguientes campos
Código articulo
Descripción
Cantidad
Precio Unitario
Subtotal

En el registro Factura tiene un botón que se llama Agregar artículos, el cual invoca la ventana de búsqueda artículo: la ventana funciona perfectamente y este es el código.


var sel:string;
begin
if trim(cboBuscar.Text) = '' then
begin
showMessage('Debe elegir una opción de búsqueda');
cboBuscar.SetFocus;
exit;
end;
If cboBuscar.Text = 'CODIGO' then
Begin
sel:= 'Select * from Tbla_Producto where cod_producto like "%'+edtBuscar.Text +'%"';
end
Else

If cboBuscar.Text = 'DESCRIPCION' then
Begin
sel:= 'Select * from Tbla_Producto where descrip_Producto like "%'+edtBuscar.Text +'%"';
end
Else
If cboBuscar.Text = 'PRECIOVENTA' then
begin
sel:= 'Select * from Tbla_Producto where precio_venta like "%'+edtBuscar.Text+'%"';
End;

edtBuscar.SetFocus;
qryBusProducto.Close;
qryBusProducto.SQL.Clear;
qryBusProducto.SQL.Add( sel);
qryBusProducto.Open;
end;


¿Cuál es el problema?
Que cuando seleccione el producto o artículo en el Grid de la ventana de búsqueda producto se agregue al grid de detalle factura y que al guardar la factura haga lo siguiente:

.- La cantidad en almacén se descuente (Registro articulo)
.- El balance del cliente se actualice.

Realmente estoy confundida, como por ejemplo para guardar el registro producto o artículo o cualquier otro registro uso este código:

DataM.Tbla_Producto.Post; y me graba perfectamente, pero estoy confundida ya que el registro factura tiene dos tablas (factura y destalle factura) ¿Cómo lo voy guardar?

Mil gracias por adelantado a alguien que me quiera ayudar.

Que Dios les Bendiga a todos

kapcomx
09-08-2012, 21:22:09
que tal elianny

como primer parte te recomendaria que le agregaras un par de campos mas a tu tabla de detalle que podria llamarse FK_numerofactura y otro id_detalle (en todas las tablas te recomiento usar un campo id. eso ayuda muchisimo).

elFK_numerofactura te va a servir para ligar la tabla detalle con la tabla factura

cuando ingreses una factura tomas su id que me imagino lo estas usando como número de factura y luego cuando guardes el detalle ingresas ese mismo numero en el campo FK_numerofactura asi lo puedes relacionar para cuando hagas una consulta

por lo demas me gustaria ayudarte pero mi experiencia con acces es casi nula

Saludos... y ojala te valla muy bien con Delphi:cool:

Casimiro Notevi
09-08-2012, 21:28:14
Bienvenido a clubdelphi, elianny, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:

http://neftali.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

roman
09-08-2012, 21:28:38
Bienvenido a los foros elianny. Te sugiero leas la guía de estilo y por favor, usa las etiquetas adecuadas para tu código.

// Saludos

roman
09-08-2012, 21:49:07
elianny,

Parece que andas algo verde con el modelo de tablas y relaciones y su uso en delphi. Como comenta kapcomx, para almacenar tus detalles de facturas es imprescindible un campo que guarde el identificador de la factura a la que pertenece el detalle. A esto se le llama llave foránea.

Por otro lado, en tu tabla de facturas prece haber campos redundantes. Es lógico que haya un campo que identifique al cliente, pero es innecesario, y, de hecho incorrecto, guardar ahí mismo el nombre y apellidos, ya que esos datos los tomarás, cuando sea necesario, de la tabla de clientes (debes tener una tabla de clientes).

Así mismo, en la tabla de detalles de las facturas, el campo descripción, si se refiere a la descripción del artículo, también estaría de más, pues dicha descripción estará en la tabla de artículos o productos. Además, el campo subtotal, en caso de ser el producto del precio unitario por la cantidad, no es necesario guardarlo en la tabla, pues es un campo calculado, es decir, su valor siempre puedes recuperarlo a partir de otros datos de la tabla.

Eso en cuanto a la estructura de tus tablas.

En cuanto al uso con delphi, te sugiero que leas este mensaje (http://clubdelphi.com/foros/showpost.php?p=439167&postcount=22) en donde esbozo una manera de hacer lo que quieres (ahí se llama ventas en lugar de facturas pero la idea es la misma).

// Saludos

elianny
09-08-2012, 22:44:58
Gracias por sus interesantes correcciones, realmente uno aprenden con las correcciones.

Les propongo hacer un tutorial de un pequeño sistema de ventas.

Estoy dispuesta a cooperar en la construcción del tutorial, ya que muchas personas que están iniciando en la programación delphi quizás tienen el mismo problema que yo.

Anímense chicos para hacer un gran aporte al foro.

Bendiciones a todos.

Casimiro Notevi
09-08-2012, 22:56:47
A ver... aquí (http://www.clubdelphi.com/foros/showthread.php?t=46017) lo tienes :D

Nuestro compañero Caral ya hizo un tutorial de un programa de facturación.
Realmente creo que puedes encontrar todo lo que se te antoje, sólo hace falta un poco de paciencia, ahí tienes nuestro menú con la opción "Buscar", tenemos un "FTP" con varios gigas de información, trucos, ayudas, ejemplos, programas completos, tutoriales, libros, etc.

Por cierto, para delphi y bases de datos, lo mejor de lo mejor, este libro (http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4.pdf.zip). Está también en nuestro FTP

Aunque te aconsejo que olvides el access y cambies a algo serio ;)