Hola!!
Necesitas como bien lo dices agregar los campos para poder generar el reporte a tu cliente, te explico como lo tengo yo y es lo que necesitas:
En mi tabla de Catalogo de Articulos o Productos, esta es la estructura, bueno parte
Tabla Productos
idproducto - el identificador unico de cada producto
codigobarras - para guardar el codigo de barras
producto - descripcion del producto
idagrupado - para agrupar el producto con otro producto
idgrupo - identificador del grupo al que pertenece el producto (leches, granel, bebes, etc.)
cantidad_paquete - Para saber si se vende por paquete normalmente siempre es Uno
unidadmedida_paquetre - para saber si es por BULTO, pieza, caja, etc.
cantidad_piezas - La cantidad de piezas que contiene el paquete
unidadmedida_piezas - de igual forma para saber si es pieza, bulto, granel etc.
Ejemplo
idproducto - producto - cantidad_paquete - unidadmedida_paquetre - cantidad_piezas - unidadmedida_piezas
1478 - crema sanitaria - 1 - PZA - 1 - PZA
14 - shampoo - 1 - PZA -1 - PZA
212 - AZUCAR POR BULTO - 1 - BULTO - 50 - KILOS
213 - AZUCAR POR KILO - 1 - KILO - 1 - KILO
500 - PAQUETE CIGARROS - 1 - PAQUETE - 30 - PIEZAS
520 - CAJETILLA DE CIGARROS - 1 - PIEZA - 1 - PIEZA
En el caso del ejemplo del azucar y de los cigarros como puedes ver los registre como 2 productos diferentes, pero para eso tengo el campo IDAGRUPAR para agruparlos POR idPRODUCTO y asi cando consulte alguno de los dos siempre vere como si fuera uno.
Con esta estructura básica puedes vender por paquete o por pieza y saber si vendiste por cualqueira de las 2, pero esta misma la debe tener incluida tu tabla de detalle de ventas, que seria algo asi
Tabla Ventas_prodictos
idventa
idproducto
producto
cantidad_paquete
unidadmedida_paquete
cantidad_pieza
unidadmeida_pieza
precio_unitario
importe
Ya tu programa debe almacenar los campos correspodientes, asi si pasa el codigo de los cigarros en pantalla quedaria asi, Claro que al usuario solo le mostraras de esta forma
CodifoBarras - Cantidad - Unidad De Medida - Descripcion - Precio Unitario - Importe
500 - 1 - PAQUETE - CIGARROS - 100.00 - 100.00
520 - 1 - PIEZA - CAJETILLA DE CIGARROS - 10.00 - 10.00
Pero internamente es donde esta el truco jajaj, es decir en tu tabla debes guardar en el caso del paquete de cigarros en el campo Cantidad_piezas serian = 50 y en unidadmedida_pieza = PIEZAS, y para el ejemplo de la cajetilla almacenarias cantidad_piezas = 1 y unidadmedida_piezas = PIEZA
Luego por medio de un simple Select a la tabla obtienes el resultado de la sigueinte forma
Para saber cuantos paquetes vendiste
Select Sum(cantidad_paquete) form ventas_productos where idproducto = "500" group by unidadmedida_paquete
Para saber cuantas piezas lo mismo pero con otro campos
Select Sum(cantidad_pieza) form ventas_productos where idproducto = "520" group by unidadmedida_piezas
Tambien lo puedes hacer en un solo select de muchas maneras, pero solo te trato de explicar los campos que necesitas para poder obtener el resultado, ahora bien me diras que son 2 productos diferentes como te decia tengo un campo idagrupar para resolver ese problema, pero eso es un poquito mas largo de explicar.
saludos
Antonio Meza