Facturar con albaranes en Access

Lo primero decir que mi conocimiento de access es de grado medio pero el de Visual es prácticamente nulo.

Mi problema es que he realizado una base de datos para gestionar una pequeña empresa, con la que creo unos albaranes y esos albaranes necesito agruparlos por cliente y convertirlos en facturas, con el inconveniente que en algunas facturas tengo que incorporar algunas lineas que no son albaranes. Me explico:

Mis tablas son, clientes, albaranes, facturas y lineafactura. Tengo un formulario facturas donde cargo el cliente, fecha y numero. Y un subformulario con las lineas de factura en las cuales la idea es poder capturar en cada linea un albarán (de entre los no facturados), de tal forma que en la siguiente linea ese albarán ya no me lo deje capturar (en cada albarán solo hay un producto). También necesito incorporar en las lineas de factura alguna de aclaración y de productos de los cuales no tengo albarán.

No se si me he explicado bien, si alguien me puede iluminar se lo agradecería.

1 respuesta

Respuesta
1

Supongo que esta es tu pregunta que me decías ayer.

Lo que pides no es difícil, intentaremos hacerlo sin VB.

Puedes añadir un campo a la tabla de albaranes que te identifique si se ha usado la linea en cuestión, de modo que al usarla la línea cambie de estado.

Yo pondría un campo de tipo entero, de modo que si vale cero no se ha usado, y si vale uno sí se ha usado.

Modifica el origen de datos que te muestra los albaranes disponibles para que muestre los que están con ese campo a cero.

Después cuéntame como haces actualmente para pasar un albarán a línea de factura y seguimos, intentaré hacerlo como lo haces tú. Básicamente de lo que se trata es de que al pasar el albarán a línea de factura, aparte de copiarlo a la tabla de lineas de factura modifique el albarán para cambiar el estado.

Prueba y me cuentas.

Actualmente hago las facturas independientemente de los albaranes. Los albaranes se hacen manuscritos por los empleados, yo los grabo en la base de datos para saber quien y cuando ha realizado el albarán y que contiene el albarán (producto y precio). Posteriormente hago la factura, es decir vuelvo a grabar los datos de los albaranes en las lineas de las facturas (es por lo que quiero cambiar el sistema, por que estoy duplicando trabajo e información). Es importante que tengas en cuenta que algunas lineas de las facturas no son albaranes, necesito también escribir aclaraciones y productos que no están en albaranes.

1. He creado un campo nuevo en la tabla albaranes del tipo numérico entero con valor predeterminado cero.

2. Supongo que te refieres a que el origen de datos del subformulario de lineafactura sea una consulta con filtro de valores cero?.

Veamos el tema más en general.

La propuesta es la siguiente:

- Las líneas de albarán con ese campo a cero son las que no se han pasado a facturar.

- La idea es (y yo estoy a punto de programarme algo parecido para mi negocio) que para hacer las facturas tengas en un cuadro de lista los albaranes pendientes, de ahí que sean los que en ese campo hay un cero, al lado la factura en vacío, y un botón que, habiendo marcado un registro de la lista de albaranes, al hacer clic, copie los datos del albarán en la factura, como línea de la misma.

- Si después quieres añadir líneas de factura, obviamente podrías hacerlo.

- Una vez se ha pasado la línea de factura, como sabremos el número de albarán haremos que el programa ponga a uno ese campo para ese albarán.

- Después refrescaremos la lista de albaranes, por lo que ese ya no aparecerá.

Es una explicación muy en general.

Ahora, para seguir, me interesa saber,

a) ¿Qué estructura tiene la pantalla, si la tienes hecha, que pretender usar para hacer ese paso?, es decir, explícame qué tienes dibujado para que me haga un mapa mental,

b) ¿A partir de qué evento se abre esa pantalla? Es decir, ¿de qué dato dispongo para abrir una pantalla que me permita tener líneas de albaranes (o albaranes) disponibles.

a) El formulario Facturas tiene un cuadro combinado para capturar el nombre del cliente con su nif de la tabla Clientes, y luego un campo para fecha factura, otro para numero factura y otro para iva factura. Debajo de esto tengo un subformulario con lineasfactura que tiene campos de numero albarán, detalle e importe.

b) como te he comentado, antes lo hacia manualmente, escribiendo los datos del albarán, pero ahora tenia pensado y así había comenzado a hacerlo, con un cuadro combinado que capturase el numero de albarán de entre los albaranes sin facturar del cliente que tenia seleccionado arriba. Pero no me funcionaba o no sabia como hacerlo.

Vale

Propuesta: en lugar de usar un cuadro combinado para el albarán, usa un cuadro de lista. Es lo mismo pero ves multilínea.

Lo que haría yo es, cuando seleccionas el cliente, es decir, al actualizar el campo cliente, cambiar el origen de datos del cuadro de lista de albaranes.

Create una copia del formulario que tienes por si las moscas.

Crea el cuadro de lista y llámale, por ejemplo lstAlbaranes.

Selecciona el desplegable de clientes (lo llamaré en este ejemplo lstClientes) en modo diseño, abre la ventana de propiedades, la pestaña de eventos, y busca el evento Después de actualizar, selecciona Procedimiento de evento y haz clic en el botón ...

Entrarás en VB

Estoy suponiendo que el cuadro desplegable de clientes tiene las columnas código de cliente y nombre del cliente

Entre las lineas Sub lstClientes_AfterUpdate y End Sub tecleas:

lstAlbaranes.rowsource="SELECT <pon aquí la lista de campos de la tabla de albaranes que deseas ver separados por comas> FROM Albaranes WHERE <nombre de campo de código de cliente> = " & lstCliente & " AND <nombre del campo que identifica si se ha pasado el albarán> = 0"

Cierra el form, y prueba a ver que tal

Ten en cuenta que en modo diseño debes poner en el cuadro de lista tantas columnas como campos escribas separados por comas en la sentencia sql que te he pasado.

Ya me dirás algo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas