No es UNA tabla. Es el esquema lo que está mal.
Necesitas:
Cita: CLIENTE(cliente_id, nombre_cliente, rut_cuit, direccion_cliente, ....)
PRODUCTO(producto_id, codebar_producto, nombre_producto, precio_unit_producto, stock_producto, ...)
FACTURA(nro_factura, fecha_factura, cliente_id, importe_total, descuentos, impuestos_factura....)
DETALLE_FACTURA(nro_factura, nro_item, producto_id, cantidad)
A tener en cuenta:
1) Diferentes medidas de envases, volúmenes o presentaciones en un producto,
son diferentes productos de la misma marca, aunque todos sean del mismo tipo de substancia o elementos físico. Desde el momento en que tienen diferentes
presentaciones no son el mismo producto. Usualmente un cambio de packaging, por ejemplo, representa un código de barras diferente.
2) NO se almacenan subtotales, ni totales. No se almacena ningún dato
calculable, a excepción de aquellos que representan cobranzas, dado que el valor alli es final. Es decir el único momento en que el monto y subtotales de una factura se emiten es con el comprobante de pago, que representa una parte separada de la emisión de la factura, y es un esquema de tablas especifico. Los datos calculables se generan en las consutlas de los datos, por lo que guardarlos en la tabla es perdida de espacio y riesgo de
inconsistencia de datos.
3) No se almacenan datos del cliente en la factura. Es la consulta la que devuelve esos datos tomados de la tabla Cliente.
Partiendo de un esquema como el que te describo muy sucintamente, elcómo se hace en la aplicación
ya te lo describí:
Cita: 1) Dar de alta la cabecera del pedido en OrdenPedido, con los datos de Id del cliente y fecha.
2) Recuperar el numero de pedido si este se genera en forma autoincremental.
3) Recorrer uno a uno los registros virtuales del pedido en la aplicación e insertarlos en la tabla de DetallePedido, usando comodato de entrada el numero de pedido ya obtenido, el numero de producto, la cantidad y el descuento si lo hay.