Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Tabla ventas

Estas en el tema de Tabla ventas en el foro de Bases de Datos General en Foros del Web. Hola chic@s, aprovecho este post para presentarme, Me callo Carol resido en España, tengo 30 años y soy una apasionada de la programación, he llegado ...
  #1 (permalink)  
Antiguo 13/03/2016, 04:32
 
Fecha de Ingreso: marzo-2016
Mensajes: 17
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: FK Tabla ventas

Hola chic@s, aprovecho este post para presentarme, Me callo Carol resido en España, tengo 30 años y soy una apasionada de la programación, he llegado a este foro y en concreto a este post por unas necesidades que me he encontrado desarrollando una aplicación de gestion de ventas para un comercio.

Aprovecho para preguntaros sobre la estructura de mi base de datos, ya que la tengo montada como indica al final @Maurikius1983, tengo todas la entidades normales, como cliente, vendedor, productos, categorias, proveedores, transportitas, etc.

Lo que sucede es que yo no tengo creada entidad Ventas, directamente tengo entidad Factura y detalle factura, y me encuentro con un caso similar, el cliente quiere que cree una entidad recibo donde no incluya clientes, ni I.V.A (Impuesto en España). Inicialmente he creado la entidad recibo independientemente con su detalle. es correcto o debo seguir otra estructura.
  #2 (permalink)  
Antiguo 13/03/2016, 04:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tabla ventas

@caroldev13: Bienvenida a FDW.
He debido separar tu post del thread donde lo colgaste porque meter preguntas propias en hilos ajenos es una falta a la cortesía y buenas firmas en los foros, y eso es en todo foro.
Si tienes preguntas, abres un tema, no posteas en hilo ajeno.

Dicho esto, Postea el esquema de tus tablas para ver como las tienes y veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/03/2016, 05:24
 
Fecha de Ingreso: marzo-2016
Mensajes: 17
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Tabla ventas

Disculpa el error, no volverá a suceder y gracias por la bienvenida, te detallo la estructura.

Tabla cliente: id, nombre, apellido, fnacimiento, dni, dirección, teléfono, fax.
Tabla vendedor: id, nombre, apellido, teléfono.
Tabla categoría: id, nombre, detalle
Tabla producto: id, idcategoria, nombre, stock, precio
Tabla cabfactura: Id, numfactura, femisión, idcliente, idvendedor,iva , metodopago, pagado
Tabla detfactura: id, idcabfactura, idproducto, cantidad, precio
Tabla cabrecibo: id, numrecibo, femision, idvendedor, metodopago, pagado
Tabla detrecibo: id, idcabrecibo, idproducto, cantidad, precio

Gracias ;)
  #4 (permalink)  
Antiguo 13/03/2016, 16:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tabla ventas

Por empezar, recordemos una frase que dijo el profesor de Análisis de Sistemas I e primer día de clase: "Un mismo problema puede ser analizado por dos analistas diferentes, y arribar a soluciones completamente diferentes e incluso interexcluyentes, y aun así ser correctas ambas soluciones."
¿Que significa eso?
Que la solución que te puedo sugerir no es la única posible, sino la que YO considero mas adecuada, y bien puede ser que alguien tenga una visión diferente.
La mía parte de la experiencia que he tenido, luego de aprendizaje formal.

Por empezar, noto un abuso innecesario de la creación de claves primarias denomiandas "ID", cuando en realidad no sin necesarias, son redundantes, y ,pueden terminar complicando tus consultas por un inadecuado manejo de alias.
Mira, si tienes campos como DNI, NUMRECIBO, NUMFACTURA y cosas así los campos "ID" son redundantes e innecesarios.
Si cada cliente tiene un único DNI, ese campo debería ser PK de la tabla. Sólo se requeriría la existencia de un campo diferente como PK si la entidad es identificada dentro de la empresa con un código de identificación particular o heredado, como podría ser un numero de cliente, por ejemplo. Y aún en ese caso es ese codigo el ID, no un campo inventado numérico y autoincremental.
Además, poner a todos "ID" es una mala práctica, que luego te causa problemas en las consultas. No bromeo.

En consecuencia, deberías normalizar mejor las PK, poniendo como tal los atributos unicos que existan en la entidad, como son los ya mencionados DNI, NUMRECIBO, NUMFACTURA, por ejemplo, y anteponiendole un prefijo a los ID que no se puedan evitar, como CATEGORIA_ID, PRODUCTO_ID, VENDEDOR_ID, y usar esos mismso nombres luego en las FK cuando apunten a esos campos.

Sería mas o menos esto:
Cita:
CLIENTE(DNI, nombre, apellido, fnacimiento, dirección, teléfono, fax, IVA)
VENDEDOR(vendedor_id, nombre, apellido, teléfono)
CATEGORIA(categoria_id, nombre, detalle)
PRODUCTO(producto_id, categoria_id, nombre, stock, precio)
Respecto a Facturas y REcibos, por regla general, se requiere una tabla diferente cuando el documento a nivel contable es diferente, po rlo cual aunque Facturas y Tickets se usen para el mismo fin, ambos representan documentos de pago diferentes, que se deben analizar de forma diferente, reportar de forma diferente, y contienen datos distintivos (un ticker, po r ejemplo, implica la existencia de una impresora fiscal, y la factura no).
En consecuencia son tablas diferentes:
Cita:
FACTURA(numfactura, femisión, DNI, idvendedor, metodopago)
DETALLE_FACTURA(numfactura, orden_item, producto_id, cantidad, descuento)
RECIBO(numrecibo, femision, vendedor_id, metodopago)
DETALLE_RECIBO(numrecibo, orden_item, productoid, cantidad, descuento)
Que te quede claro: Luego se necesitará analizar por separado ambas cosas, y además los ciclos de análisis y cierre son diferentes (una factura se puede analizar en forma independiente, un ticker requiere el cierre de caja usualmente). POr eso los pagos y sumas totales (que son calculables) no deben ir ni en el detalle, ni en la cabecera de los documentos.
Además, todo dato transitivo, como el precio, el nombre del producto, la categoría de IVA del cliente, se obtienen de los JOIN y no deben replicarse de tabla en tabla.

Luego, hay un detalle: El pago, la acción de pago es usualmente una acción diferente, y que se registra de forma independiente.

Una factura o un recibo son la certificación de una venta que genera una deuda del cliente, pero la emisión de una factura o recibo no implica el pago de caja. El pago es un evento contable separado, donde se ingresa el dinero en algún modo de pago en especial. Ese PAGO es una tabla separada, no solo por esto, sino porque además hay que tomar en cuenta si existen o no cuentas corrientes de los clientes. De haberlas, los pagos son únicos por periodos y pueden imputarse a mas de una factura... y el sistema tiene que tener la flexibilidad necesaria para darle soporte.

Suponiendo una única entidad para eso, no podríamos poner una FK, sino administrarlo programáticamente, para lo cual necesitamos conocer el tipo de documento que se paga, su numero, la fecha y el importe...
Algo como:
Cita:
PAGOS(tipo_doc, nro_documento, fecha_pago, importepago, ... otros datos...)

Nota bene: Este bosquejo es puramente teórico y solo te serviría para un trabajo práctico. La realidad es MUCHO mas compleja.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/03/2016 a las 16:19
  #5 (permalink)  
Antiguo 14/03/2016, 10:44
 
Fecha de Ingreso: marzo-2016
Mensajes: 17
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Tabla ventas

Muchas gracias @gnzsoloyo, muy didáctica y completa tu respuesta, me surgen varias duda:
1 - El IVA porque lo contemplas en el cliente, mi idea es generarlo como una entidad independiente para poder cambiarlo si así lo necesitamos (cosa normal por el gobierno español cuando hay elecciones) y dejar reflejado en el documento el valor en ese momento.

2 - Con respecto a los pago, me parece interesante, inicialmente había pensado solo poner un valor booleano para la exportación de los deudores fácilmente , pero me limita los pagos parciales, voy a implementarlo como indicas y le añado el campo pagado para las búsquedas.

Muchas gracias otra vez Carol ;)
  #6 (permalink)  
Antiguo 14/03/2016, 11:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tabla ventas

Cita:
1 - El IVA porque lo contemplas en el cliente, mi idea es generarlo como una entidad independiente para poder cambiarlo si así lo necesitamos (cosa normal por el gobierno español cuando hay elecciones) y dejar reflejado en el documento el valor en ese momento.
En Argentina se considera como dato fijo porque en el cliente no es un porcentaje, sino una categoría de registración impositiva. Esto significa que el cliente puede tener las condiuciones Responsable Inscripto, No Responsable, Responsable Monotributo, Exento o Consumidor Final, pero ninguna otra. Entonces pasa a ser una condición que depende de Leyes y no de politicas impositivas.
La alícuota si es algo variable y dependería de cambios de gobierno, pero la alicuota se usa para calcular el importe del impuesto en un momento dado del tiempo, es decir al momento en que se realiza la venta. En ese sentido si se requiere una tabla especial para las alicuotas, pero esta debería ser usada para todos los impuestos y no solo para el IVA (ignoro como es el esquema impositivo de España). En todo caso es una tabla histórica y depende de otras mas, como por ejemplo la aplicación por regiones de residencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 14/03/2016, 11:29
 
Fecha de Ingreso: marzo-2016
Mensajes: 17
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Tabla ventas

Actualmente en España el IVA (Impuesto Válido Añadido) está en:

IVA superreducido (4%): es aplicado a los productos de primera necesidad como el pan, la leche, las frutas, los cereales y los quesos. Otros productos con este tipo de IVA superreducido son los libros, periódicos y revistas no publicitarios, medicamentos, sillas de ruedas, protesís y VPO.
IVA reducido (10%): en este tipo impositivo entran muchísimos productos, como los alimentos en general (salvo los del IVA superreducido), transporte de viajeros, plantas hortícolas y espectáculos deportivos amateur entre otros. Anteriormente este tipo impositivo estaba en el 8%.
IVA general (21%): el porcentaje que se aplica a casi todos los productos y servicios, salvo los que están incluidos en los anteriores apartados. De hecho, en la última modificación del IVA se aumentó el número de productos y servicios incluidos en este tipo impositivo con algunos servicios como el material escolar, salas de cine y teatro, veterinarios, peluquería, gimnasios, hostelería y otros parecidos. (Antes era el 18%).

Por eso lo mantengo por separado. Muchas gracias has sido de gran ayuda
  #8 (permalink)  
Antiguo 14/03/2016, 11:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tabla ventas

OK... por simple curiosidad:
¿Y cómo hacen para determinar qué IVA se aplica?
El hecho de que un vendedor sea una empresa, una tienda pequeña o un particular, genera algún cambio en que le aplique una alícuota u otra a un cliente al venderle algo?
Es decir, ¿qué condición determina que el vendedor debe aplicar uno u otro?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 14/03/2016, 16:02
 
Fecha de Ingreso: marzo-2016
Mensajes: 17
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Tabla ventas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
OK... por simple curiosidad:
¿Y cómo hacen para determinar qué IVA se aplica?
El hecho de que un vendedor sea una empresa, una tienda pequeña o un particular, genera algún cambio en que le aplique una alícuota u otra a un cliente al venderle algo?
Es decir, ¿qué condición determina que el vendedor debe aplicar uno u otro?
Ya suelen aplicarse en los productos al por mayor, es decir, desde que el productor saca un producto y lo distribuye tiene el impuesto que le corresponde a su sector, por ejemplo un lechero vende su leche con el impuesto superreducido, el vendedor de un comercio tiene que calcularlo otra vez y añadirlo al producto que vende independientemente de sus beneficios, serian como ventas distintas. Por regla general los TPV suelen detectarlo por productos, hay otros que los seleccionas manualmente, pero ya te digo, producto a producto. En mi caso lo selecciona en un desplegable. ¿tu lo añadirías a la tabla Producto? en mi caso lo calculo.

Te dejo un enlace con un ejemplo

https://www.microdata.es/wp-content/uploads/imagen-44.jpg

Última edición por caroldev13; 14/03/2016 a las 16:08
  #10 (permalink)  
Antiguo 14/03/2016, 16:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tabla ventas

La verdad, no entendiste la pregunta...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:39.