Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2007
Petolansa Petolansa is offline
Miembro
 
Registrado: jul 2005
Posts: 159
Poder: 19
Petolansa Va por buen camino
Consulta con diseño de BD

Buenas gente, mi consulta es la siguiente, estoy diseñando las tablas de un sistemita de gestion para una optica, la cual uno de los modulos es la facturacion de ventas.
Al observar otros diseños de BD noto que al momento de diseñar la tabla de ventas siempre se realiza otra de movimientos de ventas, o sea que en la de tabla ventas se asienta todos los datos de la venta en general, y en la otra de movimientos, se asientan todos los detalles de la venta, o sea todas las lineas de los articulos que se venden, los precios unitarios de cada uno de los productos con sus codigos etc.
Mi pregunta es la siguiente, esta es la manera correcta de diseñar el modulo de ventas, o sea con una tabla para los detalles y otra para asentar el total de la venta. Por favor agradeceria alguna guia de como diseñar BD, pero por lo pronto me gustaria saber si esto es asi, y porque motivo se diseña de esta forma.


Desde ya muchas gracias

agradecido de antemano.
Responder Con Cita
  #2  
Antiguo 08-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Petolansa,
El modelo relacional trabaja así. Y si, asi es la manera en que se debe hacer.

Todo se resume en base al paradigma en el que se apoya el modelo relacional. Recuerda que lo que dice el paradigma que todo se resume en operaciones elmentales, que permiten "reconstruir" un objeto representativo de la realidad.

Veamoslo con un ejemplo. Una venta no existe, no la vemos caminando. Pero a pesar de ser un elemento abstracto a los fines del problema, es un elemento a representar. En la jerga: pertenece al dominio.
Ahora bien, una venta estará compuesta por uno o más artículos. Sabemos que como mínimo podemos vender uno. Si vemos a la venta como una sola "cosa" no hay manera de saber otras representaciones que le pertenecen al mismo dominio.
Si decimos que venta es la sucesión o la lista o detalles de por lo menos un artículo. Descubrimos otra porción del problema y otra entidad de la realidad: los artículos. Y bajamos a otros niveles de abstracción.

Ahora, lo que sabemos es que el modelo relacional "parte" o disgrega a una o varias entidades en porciones más atómicas. Gracias a la relaciones que se construyen por la identidad referencial o manejos de claves primarias y foráneas, junto con las operaciones: left, join, union y demás. Conseguimos unir aquellas partes para reconstruir aquel elemento que estamos representando.

No se si me explico. La cantidad de niveles con que contará tu base de datos seguirá el mismo nivel de profundidad que tenga en análisis del problema. Tus tablas se armarán de acuerdo a lo que DESES (mejor dicho DEBES) registrar.

Si tienes más dudas, avisame.
Y perdona si lo que dije suena un poco "académico". Me cuesta un poco encontrar algunas palabras sencillas para explicarte.
Hazme saber si no se entiende... voy a hacer un mayor esfuerzo para la próxima.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 08-08-2007 a las 21:47:15.
Responder Con Cita
  #3  
Antiguo 08-08-2007
Petolansa Petolansa is offline
Miembro
 
Registrado: jul 2005
Posts: 159
Poder: 19
Petolansa Va por buen camino
Gracias

Gracias Delphius y si se entiende, y quedo claro lo de la tabla de detalles y luego la de ventas, lo que me queda sin entender, es lo siguiente, en que momento se hacen los calculos para pasar los datos de la tabla de detalles a ventas, ej en que momento se calculan importes y stock, desde ya muchas gracias y espero no preguntar tanto.
Responder Con Cita
  #4  
Antiguo 09-08-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Aca los calculamos cuando se cierra la venta...

Vamos, que manejamos diferentes etapas.

Cuando inicia la venta, se crea un folio para ser procesado, este folio puede tener su registro maestro (Código del cliente, fecha, quien lo atiende, demás datos generales) pero podría no contener detalles (el cliente todavía no se decide que quiere).

En esta etapa puedes agregar o quitar tantos artículos quieras, haciendo los cálculos de totales correspondientes de manera temporal.

Cuando el cliente por fin se decide que es lo quiere y esta listo para pagar. En ese momento se guarda toda la información y se hace el cálculo final de totales y se guardan en la base de datos. En fin, que el folio en proceso, paaa a ser folio cerrado. Se genera el ticket o recibo y no se pueden hacer más cambios.

Si fuera necesario, se podría generar una factura con esa información, lo cuál cambia el estatus de el folio a facturado.

Considera tambien cancelaciones, devoluciones (o notas de crédito) y/o devoluciones parciales.

Pero en fin, para contestar tu pregunta, los cálculos de totales, se van haciendo según se agreguen artículos en el detalle, pero no se guardan como datos finales.

Cuando se cambia de "proceso" a "cerrado", en ese momento hacemos los cálculos de totales y guardamos la información definitiva.


la facturación, cancelación o devolución, se hacen en base a un folio cerrado, un folio en proceso es libre de moverse cuantas veces quiera.

Así que, como te podrás dar cuenta, para nosotros es muy importante llevar un control muy estricto a la hora de manejar el estatus de los movimientos.
__________________

Responder Con Cita
  #5  
Antiguo 09-08-2007
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
A fin de darle otra vuelta al tornillo, me permito entrometerme, no sin antes pedir las debidas disculpas por ello

en mi caso no calculo los totales a fin e evitar inconsistencia de datos, es decir calculo totales solo en reportes, en realidad a nivel cabecera, por llamarlo de algún modo, nunca guardo totales de los detalles, ahora que leo lo anterior me pregunto en realidad es necesario guardarlos?, si el numero de veces que consulto por dichos totales es reducido no es mejor calcularlos "on the fly"? que se me esta pasando??


saludos
Responder Con Cita
  #6  
Antiguo 09-08-2007
Petolansa Petolansa is offline
Miembro
 
Registrado: jul 2005
Posts: 159
Poder: 19
Petolansa Va por buen camino
Y voy entendiendo

Gracias por su ayuda gente, y a medida que aumentan las respuestas voy entendiendo cada vez mas, y siento que toy mas cerca de cerrar los diseños de las tablas de una vez.
Por lo que me respondes, tengo entenddio que se puede hacer todo temnporalmente hasta finalizar la centa y asentar los datos definitivos de una vez.
Mi incertidumbre es la siguiente.

yo tenia pensado crear las siguientes tablas

VENTAS
nrofac - nro de factura
fecfac - fecha de factura
horfac - hora de factura
tipfac - tipo de factura
etc

y asi sucesivamente detalles y bajo esta tabla guardar el importe final, y en esta otra tabla que detallo a continuacion tenia pensado los siguientes campos

VENTASMOV
numcfac - numero de factura
dfecmov - fecha del movimiento
ccodpro - codigo del producto
prepro - precio producto

donde los campos en un futuro aparecerian de la siguiente manera

VENTAS
nrofac fecfac horfac tipfac impfac
00001 08/08/2007 13:30 A 123,00


VENTASMOV
numfac dfecmov ccodpro prepro
00001 08/08/2007 123 100,00
00001 08/08/2007 345 23,00


Quisiera que opinen si esto estaria bien, la funcion de la tabla ventas mov es para llevar el control de stock y precios de la venta por linea y la de ventas guardaria el precio del total sin detalles del producto. Esto es correcto?

Desde ya muchas gracias, agradecido de antemano
Responder Con Cita
  #7  
Antiguo 11-08-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Petolansa Ver Mensaje
[..] Por lo que me respondes, tengo entenddio que se puede hacer todo temnporalmente hasta finalizar la centa y asentar los datos definitivos de una vez. [..]
Eso depende de las necesidades de cada uno, en mi caso, mis clientes quieren todo en tiempo real, si en un tpv están vendiendo un tornillo, los demás tpvs deben ver la cantidad que quedan, exactamente, en ese momento. Y no esperar a que termine de procesar la venta completa para actualizar el stock.
Como bien te han comentado los compañeros, todo depende de cada caso.
Responder Con Cita
  #8  
Antiguo 11-08-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Petolansa, Como podrás ver... parte de lo tratado aqui como en otros hilos se ha perdido debido a una falla que hubo.

No se si abrás leído las respuestas y recomendaciones que se te fueron dando. Si no has leído dichas respuestas, hazlo saber para que nuevamente tratemos el tema y podamos evacuarte las dudas.

Exitos con tu diseño.
Saludos,

EDITO:Recuerdo que una parte de lo dicho aquí lo tenía copiado a mi disco. Recuerdo que expuse esto:

Cita:
Gracias Delphius y si se entiende, y quedo claro lo de la tabla de detalles y luego la de ventas, lo que me queda sin entender, es lo siguiente, en que momento se hacen los calculos para pasar los datos de la tabla de detalles a ventas, ej en que momento se calculan importes y stock, desde ya muchas gracias y espero no preguntar tanto.
Me alegro que me entiendas.
No tengas miedo de preguntar... aqui estamos para ayudarnos.

¿Cuando calcular? Como te dije antes: todo dependerá del estudio y análisis del dominio.
En la forma práctica, se resume así:
1. Se arma un nuevo registro Maestro o cabecera (o como prefieras llamarle).
2. Por cada registro Esclavo, o detalle (o como prefieras):
2.1. Calcular el subtotal: Cantidad x Precio del artículo.
2.1.1. "Pedir" o extraer: de la tabla Artículos (o de donde corresponda) lo necesario: ID, Descripción y Precio.
2.2.2. Reducir en dicha Cantidad el stock:
2.2.2.1. Actualizar el stock de dicho Artículo en la tabla stock, o movimiento de estock.... todo dependerá de como se lleva.
2.2.2.2. Ingresar en la tabla "Pedidos" si la cantidad de stock cae en el límite del stock mínimo. Si es que se manejan los pedidos... y si el análisis corresponde...

Ahora, esta manera de trabajar se puede conseguir de miles de manera: con procedimientos almacenados, tiggers, etc... Y bajo diferentes paradigmas o enfoques: POO, lo clásico: estructural...

Esta es una manera... como te dije, todo dependerá de tu problema de tu análisis. Te recomiendo, si es que no lo estás realizado, de que lleves un buen esquema visual del problema: Parte de unos Casos de Usos... son buenos para detectar estos tipos de cosas.

Si puedes dar más detalles de como estás llevando el trabajo te podemos ser de mayor ayuda.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 11-08-2007 a las 02:32:34. Razón: Nuevos detalles recuperados
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
en diseño web miamuxi Conexión con bases de datos 6 19-01-2007 20:13:50
Diseño DB Biblioteca cancerbero Tablas planas 2 14-08-2004 12:51:54
Diseño pepelu1975 Varios 1 31-05-2004 09:55:36
valor de un tedit en una consulta en diseño maruenda Varios 2 21-04-2004 17:20:55
Consulta sobre Diseño pablo Conexión con bases de datos 4 04-11-2003 15:54:21


La franja horaria es GMT +2. Ahora son las 20:21:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi