[Php-avanzado] Tesis - Taller
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Lun Dic 1 01:26:46 ART 2008
Hola Edwin,
por suerte es Lunes, y el Miércoles nos vemos, porque lo de la
normalización de tu sistema es largo.
En general, tenés campos muy chicos para algunas cosas... el espacio de
disco es barato!!!
Te adelanto comentarios y preguntas:
El sáb, 29-11-2008 a las 06:38 -0800, Edwin Beecher escribió:
> MARCAS
> cod_mar int(11), AUTOINCREMENT
> des_mar (char(30), UNIQUE
>
> MODELOS
> cod_mar int(11)
> cod_mod int(11) AUTOINCREMENT
> des_mod char(30)
>
> AUTOS
> dominio char(15)
> cod_mod int(11)
> motor char(30)
> chasis char(30)
> tipo char(30)
qué es "tipo".
> color char(15)
> cedula char(20)
> anio int(4)
> cod_com int(1) (Combustible)
> accesorios char(80)
> observa char(80)
>
> COMBUS
> cod_com int(11) AUTOINCREMENT
> des_com char(20)
>
> CLIENTES
> cod_cli int(11)
> des_cli char(40)
> dom_cli char(60)
> local char(40)
Las localidades suelen ser recurrentes, lo que implica que es más fácil
elegirla de una combo que tipearlas cada vez... aunque no sea un dato
relevante y nunca vayas a listar por localidad nada en el sistema.
Yo por esta cuestión de comodidad al usuario, la sacaría a otra tabla
(después, si querés que sea muy muy muy fácil, hacés una interfaz que la
busque, pero que ahí mismo si no está, se agregue)
> postal char(7)
... entonces esto se iria con la localidad de esta tabla.
> tel_cli char(60)
> cod_iva int(4)
> cuit char(11)
> email varchar(80)
> observa char(80)
>
> CONDIVA
> cod_iva int(4)
> des_iva char(25)
>
> TARJETAS
> cod_tar int(4)
> des_tar char(25)
>
> REPARAR
> id_rep int(11) AUTOINCREMENT
> dominio char(15)
> ingreso timestamp
> km int(8)
> defectos Text
> egreso timestamp
> observaciones text
> cod_cli int(11)
Tal vez un "estado" para saber si el coche recién entró, o si está en
veremos, o si está listo pero no lo vinieron a buscar, es una
información útil de la reparación.
> DETAREP
> id_rep int(11)
> cod_rep int(11)
> cantidad int(4)
> precio float(10,2)
Esta es la tabla de Repuestos Usados en la Reparación, no?
> OCASIONAL
> id_rep int(11)
> nombre char(80)
> direccion char(80)
> telefonos char(80)
Qué es esto? Una tabla para los clientes ocasionales?
Edwin! Usá la de clientes y en esta interfaz de usuario pedí menos
cosas obligatorias!!!
Con esta tabla estás invirtiendo el modelo que planteás de que una
Reparación tiene un Cliente: ahora resulta que a la vez, un cliente
Ocasional tiene una reparación!?!?!?!?!
> REPUESTOS
> cod_rep int(11)
> des_rep char(60)
Sin un precio propuesto? Se va a tener que cargar cada vez, de memoria?
> FACTURAS
> id_fac int(11) autoincrement,
> fecha timestamp default CURRENT_TIMESTAMP,
> dominio char(15)
> importe float(10,2) NOT NULL default '0.00',
> tipo_vta int(1)
> cod_tar int(4)
> lote char(20)
> cupon char(20)
> numero char(20)
> cuotas int(2) default 1
> recargo float(10,2) NOT NULL default '0.00',
> id_rep int(11)
Bueno, acá forzás la cosa remitiendo a la Reparación para no armar una
tabla Maestro-Detalle con el detalle de la factura...
Esto implica que tendrás que hacer acá el control de que una Reparación
esté cerrada antes de que figure en la Factura, y que luego no sea
editable, porque si no cambiás el pasado... pero no tenés un estado de
"terminado" en la reparación para saberlo fácil, lo que te obliga a leer
si la fecha de egreso está vacía o no. Esto no está bien, porque los
campos no deben tener sentido semántico más allá del contenido: una
fecha de egreso nula significa que no está cargada la fecha de egreso, y
no que puedo usar esos datos para hacer una factura.
También, como requerimiento ponés que una factura pueda pagarse de
alguna de 3 formas o combinadas, pero a) tu tabla de tipo de venta tiene
solo 2 formas (1, contado 2, cta. cte.) y b) no hay columna o tabla
para poner qué cantidad se paga de qué forma de pago y cumplir con esto.
Creo que esto se debe a que estás mezclando los conceptos de Forma de
Pago con Medio de Pago...
> TIPOVTA
> cod_vta int(11) autoincrement
> des_vta char(20)
>
> * es una tabla fija con dos valores: (1, contado 2, cta. cte.)
>
> ------------------------------------------------------------------------------------------
>
> DESCRIPION GENERAL DEL SISTEMA
>
> -Se ingresan los datos de un vehiculo que va a ser reparado
> -Se ingresan las reparaciones a realizar
Dónde se anotan las reparaciones? En el campo "observaciones" de la
reparación?
> -Se ingresan los repuestos colocados en la reparacion.
> -Los repuestos pueden ser comprados por el taller o por el cliente
> -El precio del repuesto puede ser cero, (porque lo trajo el cliente,
> porque es mano de obra en garantia de un trabajo anterior o porque es
> gentileza de la casa)
Es decir, la interfaz tendrá un lugar para poner el precio del repuesto
usado y este repuesto puede ser cero.
> El pago puede ser en efectivo, con tarjeta, en cuenta corriente o una
> combinacion de los tres.
Arriba la nota sobre la cuestión de cómo se guarda esto.
> Si es en cuenta corriente, en el ingreso del vehiculo se debe ingresar
> los datos del cliente. El codigo de cliente debe ser de un cliente
> habitual, ingresado en la tabla de clientes
> * si es un cliente ocasional, los datos seran ingresados en la tabla
> OCASIONAL y no se puede vender en cta. cte.
Horrible! Tenés 2 tablas para lo mismo... no es buena idea porque de
tener que buscar algo, tenés que buscar en dos lugares. Más arriba ya te
observé esto mismo, pero es tan feo que acá lo pongo de vuelta ;-)
> Si existe un codigo de tarjeta, se debe llenar el lote, cupon, nro de
> tarjeta, cuotas y porcentaje de recargo
> A realizar por el sistema
> ABM y consultas de autos, marcas, modelos, tarjetas de credito,
> repuestos y clientes
>
> Consultas de autos en taller
y cómo lo vas a saber? por la fecha de egreso? En ese caso, como sabés
los terminados?
> Consulta del historial de reparaciones de un auto, ejecutada por el
> operador del sistema
>
> Otra consulta similar a la anterior, donde el cliente ingresa el
> dominio y el sistema muestra las ultimas 3 reparaciones. Si el
> vehiculo esta en el taller, debe mostrar los datos de la reparacion y
> los repuestos colocados. En esta consulta no se muestran importes.
>
> ------------------------------------------------------------
> Leo:
>
> No hice la tabla de cantidad de cuotas y recargos de cada tarjeta
> porque creo que no voy a hacer tiempo para terminar en fecha.
Podés plantear la tabla igual y no hacer los ABM. Le ponés unos datos
fijos y todo el sistema funcionará igual, pero solo se podrán elegir
esos datos.
> Espero tus comentarios.
> Saludos
=mente!
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado