Facturacion

21/10/2010 - 22:47 por kes | Informe spam
Hola,
Estoy haciendo una base de datos de facturación, que tiene un
funcionamiento de los distintos modelos que se describen en el foro.
Así, la estructura de la base de datos es la siguiente:
- Una tabla CLIENTES con un ID_CLIENTE
- Una tabla FACTURAS con un un N_FACTURA, F_FACTURA y ID_CLIENTE
- Una tabla PEDIDOS con una FECHA, N_FACTURA, ID_CLIENTE, DETALLE,
CANTIDAD, PRECIO, IMPORTE

La operativa es ir introduciendo los pedidos según se van entrando,
pero no se indica en ningún momento el nº de factura, ya que no se
conoce en ese momento. La tabla de clientes también se va alimentando
a medida que entran pedidos.

El tema está en que el procedimiento que he pensado para facturar es
un formulario en el que se selecciona el cliente, se genera un número
de factura, y se indica una fecha de factura, y una fecha de
referencia, de forma que lo que se pretende es que en un subformulario
se muestren todos los pedidos de ese cliente con una fecha anterior a
la fecha de referencia introducida en el formulario. En dicho
subformulario se muestran la fecha del pedido, el detalle, la
cantidad, precio e importe, y en el pie del subformulario se muestra
el total de importe, con el iva y el sumatorio de ambos.

Tengo dos grandes temas que no sé como hacerlos:
1. Me gustaría poder realizar este filtro de datos teniendo en cuenta
el campo de fecha de referencia.
2. Como poner un botón para actualizar el campo N_FACTURA de la tabla
PEDIDOS desde el propio formulario, en función de la información que
se ha cargado.

¿A alguien se le ocurre el cómo?

Muchas gracias
 

Leer las respuestas

#1 José Mª Fueyo
22/10/2010 - 13:02 | Informe spam
Hola
Para filtrar los pedidos pendientes de facturar, basta con que busques
aquellos pedidos que tengan su campo N_FACTURA a nulo.
Podrías crear una tabla que contenga la información necesaria por
cliente y pedido, pendiente de facturar, más un campo tipo si/no que
indicará sí se quiere facturar el pedido o no (así puedes crear
asignar un pedido a una factura u a otra). En el momento en que
cargues tu formulario de facturación, borra todos los registros que
hubiera y agrega los nuevos registros de aquellos pedidos con
N_FACTURA nulo.
Crea un fomulario con los datos de ésta tabla. Este formulario será a
su vez subformulario de otro. Borra el origen de datos de éste
formulario, y configúralo para que no permita agregar.
Crea otro formulario, sin origen de datos, y agregale un combo con el
ID de cliente y su nombre, y un control subformulario.
En el evento click del combo, escribe un código que primero, haga una
sentencia SELECT de todos los campos de la tabla auxiliar que hemos
creado antes usando como criterio el ID de cliente, configuramos a
contiguación el control subformulario estableciendo su propiedad
SourceObject al nombre del formulario con los datos de pedido, y
finalmente la propiedad RecordSource de éste último formulario a la
sentecia SQL que has creado previamente
Algo así a

Dim sSQL As String
sSQL = "select * from MisPedidosCliente " & _
"where IdCliente='" & Me.cbxClientes.Column(0) & "';"
Me.ctlSubDatos.SourceObject = "frmSubDatosPedidos"
Me.ctlSubDatos.Form.RecordSource = sSQL
Me.ctlSubDatos.Form.Refresh

Esto te permitirá filtrar los datos de pedidos por cada cliente
seleccionado en el combo.
Y para facturarlos, usa la propiedad de recordsetclone del
subformulario. Por ejemplo, éste código te revisaría todos los pedidos
del cliente seleccionado, y te diría sí están marcados para facturar o
no. Genera previamente un valor de N_FACTURA y actualiza cada pedido
con dicho valor.

Dim rs As DAO.Recordset
Set rs = Me.ctlSubDatos.Form.RecordsetClone
Do Until rs.EOF
MsgBox "ID Pedido: " & rs.Fields("IdPedido") & ". A facturar:
" & rs.Fields("Facturar")
rs.MoveNext
Loop
Set rs = Nothing

Espero te sirva.

Salu2
José Mª Fueyo
[MS MVP Access]

Preguntas similares