[Php-avanzado] Tesina - Entrega Final

Sergio Marquez marquez.sergio.d en gmail.com
Mie Ago 8 14:59:38 ART 2012


Hola Leo, ayer por la tarde instalé mi tesina en el servidor de la facultad
(usuario 'smarquez').
Como te conté anteriormente algunas partes no están completamente
implementadas, pero espero que sea suficiente como para poder aprobar el
curso.
Otro problema del que me di cuenta en el Laboratorio de computación es que
una clase que implementé (MyActiveRecord) genera warnings y por lo tanto
hay q desactivarlos para no tener problemas.
Pero no todas son malas, durante el desarrollo del proyecto aprendí mucho
mucho mucho, ademas decidí completar el proyecto utilizando un framework
PHP (Laravel <http://laravel.com/>, muy recomendado).

Te adjunto mi SRS y normalizacion actualizados.

Para ingresar al sistema:
Usuario : 'yosh'
Password: 'a'

Saludos!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20120808/cdf29f4d/attachment.html>
------------ próxima parte ------------
ARTICULOS (
	ID int PK,		
	NOMBRE varchar(100),
	IDCATEGORIA int,
	COSTO decimal(10,4),
	PRECIO decimal(10,4),
	STOCK int,
	DESCRIPCION TEXT
)

ARTICULOS_CATEGORIAS (
	ID int PK ,
	NOMBRE varchar(100) ,
	DESCRIPCION TEXT
)

CLIENTES (
	ID int PK ,
	RAZON varchar(100) ,
	IDCONDIVA int,
	CUIT varchar(50),
	EMAIL varchar(100) ,
	OTROS TEXT
)

CLI_DIRECCIONES (
	ID PK ,
	DIRECCION varchar (50) ,
	IDLOCALIDAD int ,
	IDCLIENTE int
	ESTABLECIMIENTO bit(1),
	PRINCIPAL bit(1)
)

CLI_TELEFONOS (
	ID int PK,
	IDTIPO int,
	NUMERO varchar(50) ,
	IDCLIENTE int,
	PRINCIPAL bit(1)
)

CONDICIONESIVA (
	ID int PK ,
	DESCRIPCION varchar(50)
)

PROVEEDORES (
	ID int PK ,
	RAZON varchar(100) ,
	EMAIL varchar(100) ,
	WEB varchar(100) ,
	IDCONDIVA int,
	CUIT varchar (50),
	OTROS TEXT
)

PRO_DIRECCIONES (
	ID int PK ,
	DIRECCION varchar(50) ,
	IDLOCALIDAD int ,
	IDPROVEEDOR int,
	PRINCIPAL bit(1)
)

PRO_TELEFONOS (
	ID int PK ,
	IDTIPO int ,
	NUMERO varchar(50) ,
	IDPROVEEDOR int,
	PRINCIPAL bit(1)
)

FACTURAS_CLI (
	ID int PK ,
	LETRA char(1),
	NUMERO varchar(50),
	IDCLIENTE int ,
	RAZON varchar(100) ,
	IDCONDIVA int ,
	CUIT varchar (50),
	FECHA datetime ,
	DESCRIPCION TEXT ,
	PAGA bool
)

FACTURAS_PRO (
	ID int PK ,
	LETRA char(1),
	NUMERO varchar(50),
	IDPROOVEDOR int ,
	RAZON varchar(100) ,
	IDCONDIVA int ,
	CUIT varchar (50),
	FECHA datetime ,
	IVA decimal(10,4) ,
	IIBB decimal(10,4) ,
	DESCRIPCION TEXT ,
	PAGA bool
)

FACTURA_CLI_ARTICULOS (
	ID int PK,
	NOMBRE varchar(100),
	IDFACTURA int ,
	IDARTICULO int ,	
	CANTIDAD int,
	PRECIO decimal (10,4)
	IVA decimal (10,4),	
)

FACTURA_PRO_ARTICULOS (
	ID int PK ,
	NOMBRE varchar(100),
	IDFACTURA int ,
	IDARTICULO int ,	
	CANTIDAD int,
	PRECIO decimal (10,4)
	IVA decimal (10,4),
)

LOCALIDADES (
	ID int PK ,
	NOMBRE varchar(50) ,
	CP int(4) ,
	IDPROVINCIA int
)

PROVINCIAS (
	ID int PK ,
	NOMBRE varchar(50)
)


TELEFONO_TIPOS (
	ID int ,
	DESCRIPCION varchar(50) ,
)

USUARIO_TIPOS (
	ID int PK ,
	Tipo varchar(50)
)

USUARIOS (
	ID int PK ,
	USUARIO varchar(50) ,
	PASSWORD varchar(100) ,
	NOMBRE  varchar(100) ,
	APELLIDO  varchar(100) ,
	EMAIL varchar(100) ,
	ACCESO datetime
)



**********************************
** VISTAS
**********************************

CREATE OR REPLACE VIEW  v_facturas_cli AS
SELECT F.*, SUM(A.cantidad * A.precio * (1+ A.iva) ) AS valor FROM facturas_cli AS F
INNER JOIN factura_cli_articulos AS A ON F.id=A.idfactura
GROUP BY A.idfactura

CREATE OR REPLACE VIEW  v_facturas_pro AS
SELECT F.*, SUM(A.cantidad * A.precio * (1+ A.iva) ) AS valor FROM facturas_pro AS F
INNER JOIN factura_pro_articulos AS A ON F.id=A.idfactura
GROUP BY A.idfactura

CREATE OR REPLACE VIEW v_clientes_completo AS
SELECT c.id, c.razon, c.email, c.cuit, i.descripcion AS iva, d.direccion, d.establecimiento, l.nombre AS localidad, l.cp, p.nombre AS provincia, t.numero
FROM clientes AS c
INNER JOIN condicionesiva AS i ON i.id = c.idcondiva
INNER JOIN cli_direcciones AS d ON c.id = d.idcliente
INNER JOIN localidades AS l ON l.id = d.idlocalidad
INNER JOIN provincias AS p ON p.id = l.idprovincia
INNER JOIN cli_telefonos AS t ON c.id = t.idcliente
WHERE d.principal=1 AND t.principal=1

CREATE OR REPLACE VIEW v_proveedores_completo AS
SELECT P.id, P.razon, P.email, P.cuit, i.descripcion AS iva, d.direccion, l.nombre AS localidad, l.cp, p.nombre AS provincia, t.numero
FROM proveedores AS P
INNER JOIN condicionesiva AS i ON i.id = P.idcondiva
INNER JOIN pro_direcciones AS d ON P.id = d.idproveedor
INNER JOIN localidades AS l ON l.id = d.idlocalidad
INNER JOIN provincias AS p ON p.id = l.idprovincia
INNER JOIN pro_telefonos AS t ON P.id = t.idproveedor

***********************************
------------ próxima parte ------------
Requerimientos Empresariales:

 El sistema debe gestionar los movimientos comerciales de una veterinaria.

Requerimientos Funcionales:

1. El sistema debe mostrar provincias argentinas.

2. El sistema mostrar localidades argentinas con sus provincias.

3. El sistema debe gestionar direcciones con sus localidades.

4. El sistema debe mostrar tipos de telefono.

5. El sistema debe gestionar telefonos con sus tipos.

6. El sistema debe mostrar las Condiciones de Responsable IVA.

7. El sistema debe gestionar categorías de artículos.

8. El sistema debe gestionar artículos con su categoría.

9. El sistema debe gestionar clientes con sus direcciones, telefonos y su Condicion de responsable IVA.
    9.1 El sistema debe gestionar tantos telefonos de cliente como se desee.
    9.2 El sistema debe gestionar tantas direcciones de cliente como se desee.

10. El sistema debe gestionar proveedores con sus direcciones, telefonos y su Condicion de responsable IVA.
    10.1 El sistema debe gestionar tantos telefonos de cliente como se desee.
    10.2 El sistema debe gestionar tantas direcciones de cliente como se desee.

11. El sistema debe asentar facturas de compra compra con su proveedor y artículos comprados.
    11.1 El sistema debe permitir marcar la factura como paga o no paga.       

12. El sistema debe asentar facturas de venta con su cliente y artículos comprados.
   12.1 El sistema debe permitir marcar la factura como paga o no paga.   


Requerimientos no Funcionales

 1. El ingreso al sistema esta restringido por cuenta de usuario y contraseña.
 2. El sistema debe gestionar usuarios de tipo:
    2.1 Comun: tiene acceso a todos los RF y no tiene acceso al RnF 2.
    2.2 Administrador: tiene acceso a todos los RF y RnF.

------------------------------------------------------------

Diccionario de datos

• Provincias: Nombre .
• Localidades: Nombre, Codigo Postal, Provincia .
• Direcciones: Direccion, Localidad, Establecimiento . //Establecimiento indica si la direccion pertenece a un Establecimiento Agropecuario.
• Tipos de Telefonos: Nombre .
• Telefonos:  Numero, Tipo .
• Categorias de Articulo: Nombre, Descripcion .
• Artículos: Nombre, Descripción, Categoría, Costo Unitario , Precio de Venta unitario, Stock .
• Condiciones de Responsable IVA: Tipo (Responsable Inscripto, Responsable no Inscripto, Exento, Consumidor Final, Responsable Monotributista).
• Clientes: Razon Social, Direcciones, Telefonos, Email, Condicion de Responsable IVA, CUIT, Otros .
• Proveedores: Nombre, Direcciones, Telefonos, Email, Sitio web, Condicion de Responsable IVA, CUIT, Otros.
• Facturas de Venta: Numero, Letra, Fecha, Cliente, Descripcion, Importe Neto, Importe Iva, Pagado, Artículos, Cantidad de cada Articulo, Precio Unitario de cada Articulo.
• Facturas de Compra: Numero, Letra, Fecha, Proveedor, Descripcion, Importe Neto, Importe Iva, Importe IIBB, Pagado, Artículos, Cantidad de cada Articulo, Precio Unitario  de cada Articulo.
• Tipos de Usuario: Tipo(Comun, Administrador).
• Usuarios: Nombre de Usuario. Nombre, Apellido, Contraseña, Email, Tipo, Ultimo Acceso.


Más información sobre la lista de distribución Php-avanzado