Files
2026-08-04 19:24:03 -03:00

126 lines
3.2 KiB
PHP

<?php
require_once __DIR__ . '/../database/database.php';
class proveedorModel {
private PDO $db;
public function __construct() {
$this->db = Database::getConnection();
}
// LISTAR PROVEEDORES
public function listarProveedores(): array {
$sql = "SELECT id, razon_social, telefono, email from proveedores ORDER BY id ASC";
$stmt = $this->db->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// CREAR PROVEEDOR
public function crearProveedor(array $data): bool {
$sql = "INSERT INTO proveedores (razon_social, telefono, email, cuit, cond_iva) VALUES (:razon_social, :telefono, :email, :cuit, :cond_iva)";
$stmt = $this->db->prepare($sql);
return $stmt->execute([
':razon_social' => $data['razon_social'],
':telefono' => $data['telefono'],
':email' => $data['email'],
':cuit' => $data['cuit'],
':cond_iva' => $data['cond_iva']
]);
}
// BUSCAR PROVEEDOR POR ID
public function obtenerPorId(int $id): ?array {
$sql = "SELECT id, razon_social, telefono, email, cuit, cond_iva FROM proveedores WHERE id = :id LIMIT 1";
$stmt = $this->db->prepare($sql);
$stmt->execute([':id' => $id]);
$proveedor = $stmt->fetch(PDO::FETCH_ASSOC);
return $proveedor ?: null;
}
// EDITAR PROVEEDOR
public function actualizarProveedor(int $id, array $data): bool {
if (empty($data)) {
return false;
}
$campos = [];
$params = [];
foreach ($data as $campo => $valor) {
$campos[] = "$campo = :$campo";
$params[":$campo"] = $valor;
}
$params[':id'] = $id;
$sql = "UPDATE proveedores SET " . implode(', ', $campos) . " WHERE id = :id";
$stmt = $this->db->prepare($sql);
return $stmt->execute($params);
}
// OBTENER ID DE PROVEEDOR CORRESPONDIENTE A UN ID DE PEDIDO
public function obtenerIDProveedorPorPedido(int $idPedido): ?array {
$sql = "SELECT p.id, p.razon_social, p.telefono, p.email FROM proveedores AS p
INNER JOIN pedidos AS pe ON (p.id = pe.id_proveedor)
WHERE (pe.id = :id_pedido) LIMIT 1";
$stmt = $this->db->prepare($sql);
$stmt->execute([':id_pedido' => $idPedido]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
// VERIFICAR EXISTENCIA DE PROVEEDOR
public function verificarExistencia(array $datosProveedor, ?int $idExcluir = null): bool {
$sql = "SELECT 1 FROM proveedores WHERE (razon_social = :razon_social OR email = :email OR cuit = :cuit)";
if ($idExcluir !== null) {
$sql .= " AND id <> :id_excluir";
}
$sql .= " LIMIT 1";
$stmt = $this->db->prepare($sql);
$params = [
':razon_social' => $datosProveedor['razon_social'],
':email' => $datosProveedor['email'],
':cuit' => $datosProveedor['cuit']
];
if ($idExcluir !== null) {
$params[':id_excluir'] = $idExcluir;
}
$stmt->execute($params);
return (bool) $stmt->fetchColumn();
}
}