crea un CRM de adminsitración de servicio de pintura y reparacion de techado
Aquí te presento un ejemplo básico de un CRM (Sistema de Gestión de Relaciones con Clientes) para la administración de servicios de pintura y reparación de techado en PHP. Este ejemplo incluye las siguientes funcionalidades: 1. Registro de clientes 2. Registro de servicios (pintura y reparación de techado) 3. Registro de empleados 4. Asignación de servicios a empleados 5. Gestión de pedidos 6. Gestión de facturas **Nota:** Este es un ejemplo básico y no incluye validaciones de seguridad ni optimizaciones para un entorno de producción. **Estructura del proyecto:** * `config.php`: archivo de configuración * `db.php`: archivo de conexión a la base de datos * `models`: carpeta con modelos de datos + `Cliente.php`: modelo de cliente + `Servicio.php`: modelo de servicio + `Empleado.php`: modelo de empleado + `Pedido.php`: modelo de pedido + `Factura.php`: modelo de factura * `controllers`: carpeta con controladores + `ClienteController.php`: controlador de clientes + `ServicioController.php`: controlador de servicios + `EmpleadoController.php`: controlador de empleados + `PedidoController.php`: controlador de pedidos + `FacturaController.php`: controlador de facturas * `views`: carpeta con vistas + `index.php`: vista de inicio + `clientes.php`: vista de clientes + `servicios.php`: vista de servicios + `empleados.php`: vista de empleados + `pedidos.php`: vista de pedidos + `facturas.php`: vista de facturas * `index.php`: archivo de inicio del proyecto **config.php** ```php <?php define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASSWORD', ''); define('DB_NAME', 'pintura_reparacion'); ?> ``` **db.php** ```php <?php require_once 'config.php'; $dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME; $pdo = new PDO($dsn, DB_USER, DB_PASSWORD); ?> ``` **models/Cliente.php** ```php <?php class Cliente { private $id; private $nombre; private $apellido; private $direccion; private $telefono; public function __construct($id, $nombre, $apellido, $direccion, $telefono) { $this->id = $id; $this->nombre = $nombre; $this->apellido = $apellido; $this->direccion = $direccion; $this->telefono = $telefono; } public function getId() { return $this->id; } public function getNombre() { return $this->nombre; } public function getApellido() { return $this->apellido; } public function getDireccion() { return $this->direccion; } public function getTelefono() { return $this->telefono; } } ?> ``` **models/Servicio.php** ```php <?php class Servicio { private $id; private $tipo; private $descripcion; private $precio; public function __construct($id, $tipo, $descripcion, $precio) { $this->id = $id; $this->tipo = $tipo; $this->descripcion = $descripcion; $this->precio = $precio; } public function getId() { return $this->id; } public function getTipo() { return $this->tipo; } public function getDescripcion() { return $this->descripcion; } public function getPrecio() { return $this->precio; } } ?> ``` **models/Empleado.php** ```php <?php class Empleado { private $id; private $nombre; private $apellido; private $direccion; private $telefono; public function __construct($id, $nombre, $apellido, $direccion, $telefono) { $this->id = $id; $this->nombre = $nombre; $this->apellido = $apellido; $this->direccion = $direccion; $this->telefono = $telefono; } public function getId() { return $this->id; } public function getNombre() { return $this->nombre; } public function getApellido() { return $this->apellido; } public function getDireccion() { return $this->direccion; } public function getTelefono() { return $this->telefono; } } ?> ``` **models/Pedido.php** ```php <?php class Pedido { private $id; private $cliente; private $servicio; private $fecha; private $total; public function __construct($id, $cliente, $servicio, $fecha, $total) { $this->id = $id; $this->cliente = $cliente; $this->servicio = $servicio; $this->fecha = $fecha; $this->total = $total; } public function getId() { return $this->id; } public function getCliente() { return $this->cliente; } public function getServicio() { return $this->servicio; } public function getFecha() { return $this->fecha; } public function getTotal() { return $this->total; } } ?> ``` **models/Factura.php** ```php <?php class Factura { private $id; private $pedido; private $fecha; private $total; public function __construct($id, $pedido, $fecha, $total) { $this->id = $id; $this->pedido = $pedido; $this->fecha = $fecha; $this->total = $total; } public function getId() { return $this->id; } public function getPedido() { return $this->pedido; } public function getFecha() { return $this->fecha; } public function getTotal() { return $this->total; } } ?> ``` **controllers/ClienteController.php** ```php <?php require_once 'db.php'; require_once 'models/Cliente.php'; class ClienteController { public function index() { $clientes = $this->getClientes(); require_once 'views/clientes.php'; } public function getClientes() { $stmt = $pdo->prepare('SELECT * FROM clientes'); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_CLASS, 'Cliente'); } public function agregarCliente() { $nombre = $_POST['nombre']; $apellido = $_POST['apellido']; $direccion = $_POST['direccion']; $telefono = $_POST['telefono']; $stmt = $pdo->prepare('INSERT INTO clientes (nombre, apellido, direccion, telefono) VALUES (?, ?, ?, ?)'); $stmt->execute([$nombre, $apellido, $direccion, $telefono]); } } ?> ``` **controllers/ServicioController.php** ```php <?php require_once 'db.php'; require_once 'models/Servicio.php'; class ServicioController { public function index() { $servicios = $this->getServicios(); require_once 'views/servicios.php'; } public function getServicios() { $stmt = $pdo->prepare('SELECT * FROM servicios'); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_CLASS, 'Servicio'); } public function agregarServicio() { $tipo = $_POST['tipo']; $descripcion = $_POST['descripcion']; $precio = $_POST['precio']; $stmt = $pdo->prepare('INSERT INTO servicios (tipo, descripcion, precio) VALUES (?, ?, ?)'); $stmt->execute([$tipo, $descripcion, $precio]); } } ?> ``` **controllers/EmpleadoController.php** ```php <?php require_once 'db.php'; require_once 'models/Empleado.php'; class EmpleadoController { public function index() { $empleados = $this->getEmpleados(); require_once 'views/empleados.php'; } public function getEmpleados() { $stmt = $pdo->prepare('SELECT * FROM empleados'); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_CLASS, 'Empleado'); } public function agregarEmpleado() { $nombre = $_POST['nombre']; $apellido = $_POST['apellido']; $direccion = $_POST['direccion']; $telefono = $_POST['telefono']; $stmt = $pdo->prepare('INSERT INTO empleados (nombre, apellido, direccion, telefono) VALUES (?, ?, ?, ?)'); $stmt->execute([$nombre, $apellido, $direccion, $telefono]); } } ?> ``` **controllers/PedidoController.php** ```php <?php require_once 'db.php'; require_once 'models/Pedido.php'; class PedidoController { public function index() { $pedidos = $this->getPedidos(); require_once 'views/pedidos.php'; } public function getPedidos() { $stmt = $pdo->prepare('SELECT * FROM pedidos'); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_CLASS, 'Pedido'); } public function agregarPedido() { $cliente = $_POST['cliente']; $servicio = $_POST['servicio']; $fecha = $_POST['fecha']; $total = $_POST['total']; $stmt = $pdo->prepare('INSERT INTO pedidos (cliente, servicio, fecha, total) VALUES (?, ?, ?, ?)'); $stmt->execute([$cliente, $servicio, $fecha, $total]); } } ?> ``` **controllers/FacturaController.php** ```php <?php require_once 'db.php'; require_once 'models/Factura.php'; class FacturaController { public function index() { $facturas = $this->getFacturas(); require_once 'views/facturas.php'; } public function getFacturas() { $stmt = $pdo->prepare('SELECT * FROM facturas'); $stmt->execute(); return $stmt->fetchAll(PDO::FETCH_CLASS, 'Factura'); } public function agregarFactura() { $pedido = $_POST['pedido']; $fecha = $_POST['fecha']; $total = $_POST['total']; $stmt = $pdo->prepare('INSERT INTO facturas (pedido, fecha, total) VALUES (?, ?, ?)'); $stmt->execute([$pedido, $fecha, $total]); } } ?> ``` **index.php** ```php <?php require_once 'config.php'; require_once 'db.php'; require_once 'controllers/ClienteController.php'; require_once 'controllers/ServicioController.php'; require_once 'controllers/EmpleadoController.php'; require_once 'controllers/PedidoController.php'; require_once 'controllers/FacturaController.php'; $clienteController = new ClienteController(); $servicioController = new ServicioController(); $empleadoController = new EmpleadoController(); $pedidoController = new PedidoController(); $facturaController = new FacturaController(); $clienteController->index(); ?> ``` **views/index.php** ```php <?php require_once 'views/clientes.php'; require_once 'views/servicios.php'; require_once 'views/empleados.php'; require_once 'views/pedidos.php'; require_once 'views/facturas.php'; ?> ``` **views/clientes.php** ```php <?php require_once 'controllers/ClienteController.php'; $clienteController = new ClienteController(); echo '<h1>Clientes</h1>'; echo '<ul>'; foreach ($clienteController->getClientes() as $cliente) { echo '<li>' . $cliente->getNombre() . ' ' . $cliente->getApellido() . '</li>'; } echo '</ul>'; echo '<form action="" method="post">'; echo '<label for="nombre">Nombre:</label>'; echo '<input type="text" id="nombre" name="nombre"><br><br>'; echo '<label for="apellido">Apellido:</label>'; echo '<input type="text" id="apellido" name="apellido"><br><br>'; echo '<label for="direccion">Direccion:</label>'; echo '<input type="text" id="direccion" name="direccion"><br><br>'; echo '<label for="telefono">Telefono:</label>'; echo '<input type="text" id="telefono" name="telefono"><br><br>'; echo '<input type="submit" value="Agregar Cliente">'; echo '</form>'; ?> ``` **views/servicios.php** ```php <?php require_once 'controllers/ServicioController.php'; $servicioController = new ServicioController(); echo '<h1>Servicios</h1>'; echo '<ul>'; foreach ($servicioController->getServicios() as $servicio) { echo '<li>' . $servicio->getTipo() . ' - ' . $servicio->getDescripcion() . '</li>'; } echo '</ul>'; echo '<form action="" method="post">'; echo '<label for="tipo">Tipo:</label>'; echo '<input type="text" id="tipo" name="tipo"><br><br>'; echo '<label for="descripcion">Descripcion:</label>'; echo '<input type="text" id="descripcion" name="descripcion"><br><br>'; echo '<label for="precio">Precio:</label>'; echo '<input type="text" id="precio" name="precio"><br><br>'; echo '<input type="submit" value="Agregar Servicio">'; echo '</form>'; ?> ``` **views/empleados.php** ```php <?php require_once 'controllers/EmpleadoController.php'; $empleadoController = new EmpleadoController(); echo '<h1>