PDA

Ver la Versión Completa : facturacion


xalemdq
05-06-2003, 23:06:00
hola ! disculpen. soy muy novato en programacion.

necesito hacer un sistema de facturacion. como puedo hacer ? yo tengo un form que tiene un

edit : numero de cliente. este edit obtiene los datos del cliente a facturar. lo que necesito es saber como hacer para tomar los productos. no se que componentes puedo usar. me recomendaron un dbgrid. la idea es tener un boton "ingresar producto" y otro boton "borrar producto". cuando presionas click en ingresar se tiene que abrir una ventana que pide

id del producto:

detalle:

cantidad:

precio:

------------------------------

cuando ingreso, tiene que figurar el producto ingresado con los impuestos calculados. pero si quiero borrar ese producto seleccionando el producto y con un click en "borrar producto", se tiene que borrar, actualizandose el total.

cuando se terminan de ingresar los productos se pone imprimir.

necesito eso. si por favor me pueden ayudar.

muchisimas gracias.

roman
06-06-2003, 00:15:05
Lo puedes hacer así:

Ingredientes
tblClientes: TTable // tabla de clientes
tblDetalles: TTable // tabla de detalles
dsClientes: TDataSource // asociado a tblClientes
dsDetalles: TDataSource // asociado a tblDetalles
edtClienteId: TEdit // para captuar el id del cliente
btnBuscar: TButton // Para buscar al cliente
grdDetalles: TDBGrid // para mostrar los detalles

Preparación
1. Pones a dsClientes como "MasterSource" de tblDetalles y los conectas con la propiedad "MasterFields" para relacionar el id del cliente en la tabla de clientes con el campo cliente_id de la tabla de detalles.

2. Asignas dsDetalles a la propiedad "DataSource" de grdDetalles

3. En el evento OnClick de btnBuscar usas el método FindKey de tblClientes para localizar al cliente. Si devuelve false es que no existe un cliente con ese id y le mandas un mensaje al usuario.

4. En el evento OnShow del formulario activas tus tablas.

5. Ejecutas tu aplicación y ¡voilà!, escribes un id de cliente, aprietas el botón y el dbgrid te mostrará los detalles de ese cliente.

El resto te lo dejo de tarea y te recomiendo que te leas alguna introducción al uso de componentes db aware

Sugerencias para la tarea
Buscar en la ayuda de Delphi acerca de los métodos "Append", "Delete" y "FieldByName" de TTable.

// Saludos

__marcsc
06-06-2003, 00:18:41
Roman, cada dia eres más original :D

roman
06-06-2003, 00:27:40
Posteado originalmente por marcsc
Roman, cada dia eres más original :D

Pero todavía no sé si vale la pena agregarme métodos y propiedades o buscar un componente de terceros. ¿No sabes si las RXLib incluyen TRxRoman?

:D

// Saludos

xalemdq
06-06-2003, 00:33:06
la parte del cliente ya la hice con un query SELECT * FROM CLIENTES.DB WHERE ID= '+id.text+' ....

funciona bien .. me imprime todos los datos .. el problema que tengo es principalmente con los productos

ahi no se que usar.... la tabla de productos ya la tengo echa

tambien hice una ventana que pide id del producto

pide el detalle, la cantidad, y el valor del producto.

cuando aprieto el boton ingresar, lo que quiero es que me imprima eso en la ventana principal de facturacion donde estan esos detalles del cliente, etc.

no se donde ingresar esos productos .. ese es el problema principal.

despues con un boton facturar ya ! y aprendiendo un poco de Quick report jaja calculo que voy a hacer un sistemita de facturacion....


si me podes ayudar. muchas graciasss

Nelson Alberto
06-06-2003, 05:57:07
hola. a ver si te entendi, tienes una tabla llamada detalle verdad, este es un ejemplo sencillo. como ya sabes buscar el cliente. ahora guardas en detalle

1- en un edit donde tienes el codigo del producto ahi clikea
y te va a salir un codigo parecido:

//*******aqui tu localizas el producto.************
begin

producto.locate('codigo_pr',edit1.text,[]);
edit2.text := producto.fieldbyname('descripcion').asvariant;
edit3.text := producto.fieldbyname('precio').asvariant

end;

//********guardar en la tabla detalle********

2- en el boton grabar haz click

begin
detalle.insert;

detalle.fieldbyname('codigo_pr').asvariant := edit1.txt
detalle.fieldbyname('descripcion').asvariant := edit2.txt
detalle.fieldbyname('precio').asvariant := edit1.txt

detalle.post;

end;

nota:

sabes que en la tabla detalle tienes que guardar en codigo del cliente, numero de factura, fecha de la factura ademas de los campos del ejemplo.

ojala esto te sirva de algo

__marcsc
06-06-2003, 09:26:54
Posteado originalmente por roman
Pero todavía no sé si vale la pena agregarme métodos y propiedades o buscar un componente de terceros. ¿No sabes si las RXLib incluyen TRxRoman?

:D

// Saludos

Bueno, a mi no me gusta reinventar la rueda pero como me caes bien creo que será mejor preparar una nueva versión (o bebería decir receta? ;)) a usar el TRxRoman...

:D :D

Saludos.

José Luis Garcí
06-06-2003, 10:45:53
Vete a la siguiente dirección y bajate el curso de Delphi que tiene es buenisimo y aprenderas mucho, ademas tiene un ejemplo sobre facturación que aunque no este terminado, te ayudara mucho, ademas de Sql, Bde, Ide, etc, es muy facil de seguirlo y esta en PDF.

en mi esperiencia te puedo decir que para una factura utilizo tres tablas, en la primera datos basicos, en la segunda el detalle de la factura, pero luego utilizo otra que es el detalle de articulos inexistentes, explico, cuando un articulo no existe desde tu sistema de facturación debe darte la opción de poder crearlo y continuar con la facturación, pero y si es una cosa puntual, lo que hago es lo siguiente si el código es 0 o el texto de descripción del articulo se modifica, crea entonces un registro en esta base de datos, sólo en este caso, claro en el detalle esiste un campo boolean que indica si un articulo ha sido modificado y no va a la base de datos de articulos si no a la tercera.

Espero te ayude, un saludo desde Canarias.

Que cabeza la dirección es

http://webs.satlink.com/usuarios/c/cybermac/bajarDelphi.htm