From 0b8cd08fa94bae3e8bf5418498aa48c7d236ea1d Mon Sep 17 00:00:00 2001 From: cmoreno Date: Sun, 6 Sep 2026 19:10:26 -0300 Subject: [PATCH] listado de productos --- BD/modelo.mwb | Bin 11433 -> 13058 bytes BD/modelo.mwb.bak | Bin 0 -> 11433 bytes BD/tablas.sql | 128 ++++++++++++++++++ app/Http/Controllers/CategoriasController.php | 2 +- app/Http/Controllers/ProductoController.php | 7 +- app/Models/Categorias.php | 3 + app/Models/Producto.php | 11 +- resources/views/productos/index.blade.php | 120 ++++++++++++++++ routes/web.php | 2 + 9 files changed, 269 insertions(+), 4 deletions(-) create mode 100644 BD/modelo.mwb.bak create mode 100644 BD/tablas.sql create mode 100644 resources/views/productos/index.blade.php diff --git a/BD/modelo.mwb b/BD/modelo.mwb index 860f16a0dda4dfa397b4c3edfb0c4719f7d3c29d..07286707f42664d8661cf58e2f027cf8af876afb 100644 GIT binary patch delta 12663 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 diff --git a/BD/modelo.mwb.bak b/BD/modelo.mwb.bak new file mode 100644 index 0000000000000000000000000000000000000000..860f16a0dda4dfa397b4c3edfb0c4719f7d3c29d GIT binary patch literal 11433 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 K&eO~U@xK5}a()v4 literal 0 HcmV?d00001 diff --git a/BD/tablas.sql b/BD/tablas.sql new file mode 100644 index 0000000..8127864 --- /dev/null +++ b/BD/tablas.sql @@ -0,0 +1,128 @@ +-- MySQL Script generated by MySQL Workbench +-- Tue Sep 1 20:05:16 2026 +-- Model: New Model Version: 1.0 +-- MySQL Workbench Forward Engineering + +SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; +SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; +SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; + +-- ----------------------------------------------------- +-- Schema taller_bd +-- ----------------------------------------------------- + +-- ----------------------------------------------------- +-- Schema taller_bd +-- ----------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS `taller_bd` DEFAULT CHARACTER SET utf8 ; +USE `taller_bd` ; + +-- ----------------------------------------------------- +-- Table `taller_bd`.`categorias` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `taller_bd`.`categorias` ( + `id_categoria` INT NOT NULL AUTO_INCREMENT, + `nombre` VARCHAR(250) NULL, + `descripcion` TEXT NULL, + `created_at` TIMESTAMP NULL, + `deleted_at` TIMESTAMP NULL, + `updated_at` TIMESTAMP NULL, + PRIMARY KEY (`id_categoria`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `taller_bd`.`codigo_barras` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `taller_bd`.`codigo_barras` ( + `id_codigo_barras` INT NOT NULL AUTO_INCREMENT, + `codigo` VARCHAR(45) NULL, + `created_at` TIMESTAMP NULL, + `deleted_at` TIMESTAMP NULL, + `updated_at` TIMESTAMP NULL, + PRIMARY KEY (`id_codigo_barras`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `taller_bd`.`productos` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `taller_bd`.`productos` ( + `id_producto` INT NOT NULL AUTO_INCREMENT, + `nombre` VARCHAR(250) NULL, + `descripcion` TEXT NULL, + `precio` DECIMAL(10,2) NULL, + `created_at` TIMESTAMP NULL, + `updated_at` TIMESTAMP NULL, + `deleted_at` TIMESTAMP NULL, + `codigo_barras_id` INT NOT NULL, + `categoria_id` INT NOT NULL, + INDEX `fk_productos_codigo_barras_idx` (`codigo_barras_id` ASC) VISIBLE, + PRIMARY KEY (`id_producto`), + INDEX `fk_productos_categorias1_idx` (`categoria_id` ASC) VISIBLE, + CONSTRAINT `fk_productos_codigo_barras` + FOREIGN KEY (`codigo_barras_id`) + REFERENCES `taller_bd`.`codigo_barras` (`id_codigo_barras`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_productos_categorias1` + FOREIGN KEY (`categoria_id`) + REFERENCES `taller_bd`.`categorias` (`id_categoria`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `taller_bd`.`etiquetas` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `taller_bd`.`etiquetas` ( + `id_etiqueta` INT NOT NULL AUTO_INCREMENT, + `nombre` VARCHAR(250) NULL, + `created_at` TIMESTAMP NULL, + `updated_at` TIMESTAMP NULL, + `deleted_at` TIMESTAMP NULL, + PRIMARY KEY (`id_etiqueta`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `taller_bd`.`persona` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `taller_bd`.`persona` ( + `id_persona` INT NOT NULL AUTO_INCREMENT, + `nombre` VARCHAR(250) NULL, + `apellido` VARCHAR(250) NULL, + `created_at` TIMESTAMP NULL, + `deleted_at` TIMESTAMP NULL, + `updated_at` TIMESTAMP NULL, + `personacol` VARCHAR(45) NULL, + PRIMARY KEY (`id_persona`)) +ENGINE = InnoDB; + + +-- ----------------------------------------------------- +-- Table `taller_bd`.`productos_has_etiquetas` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `taller_bd`.`productos_has_etiquetas` ( + `producto_id` INT NOT NULL, + `etiqueta_id` INT NOT NULL, + PRIMARY KEY (`producto_id`, `etiqueta_id`), + INDEX `fk_productos_has_etiquetas_etiquetas1_idx` (`etiqueta_id` ASC) VISIBLE, + INDEX `fk_productos_has_etiquetas_productos1_idx` (`producto_id` ASC) VISIBLE, + CONSTRAINT `fk_productos_has_etiquetas_productos1` + FOREIGN KEY (`producto_id`) + REFERENCES `taller_bd`.`productos` (`id_producto`) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_productos_has_etiquetas_etiquetas1` + FOREIGN KEY (`etiqueta_id`) + REFERENCES `taller_bd`.`etiquetas` (`id_etiqueta`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + +SET SQL_MODE=@OLD_SQL_MODE; +SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; +SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; diff --git a/app/Http/Controllers/CategoriasController.php b/app/Http/Controllers/CategoriasController.php index e132a98..cfca509 100644 --- a/app/Http/Controllers/CategoriasController.php +++ b/app/Http/Controllers/CategoriasController.php @@ -28,7 +28,7 @@ class CategoriasController extends Controller return view('categorias.index', ["categorias"=>$categorias]); } public function show($id){ - $categoria = Categorias::findOrfail($id); + $categoria = Categorias::with('productos')->findOrfail($id); $categoria->formatear_texto(); return view('categorias.show', ["cat"=>$categoria]); } diff --git a/app/Http/Controllers/ProductoController.php b/app/Http/Controllers/ProductoController.php index 39a1900..f9efb5a 100644 --- a/app/Http/Controllers/ProductoController.php +++ b/app/Http/Controllers/ProductoController.php @@ -3,8 +3,11 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; - +use App\Models\Producto; class ProductoController extends Controller { - // + public function index(Request $request){ + $productos = Producto::with('categorias','codigo_barras')->get(); + return view('productos.index', ["productos"=>$productos]); + } } diff --git a/app/Models/Categorias.php b/app/Models/Categorias.php index 3645b36..98db9ff 100644 --- a/app/Models/Categorias.php +++ b/app/Models/Categorias.php @@ -22,5 +22,8 @@ class Categorias extends Model 'descripcion', ]; +public function productos() { +return $this->hasMany(Producto::class,'categoria_id','id_categoria'); +} } diff --git a/app/Models/Producto.php b/app/Models/Producto.php index 2df2e0d..37cde79 100644 --- a/app/Models/Producto.php +++ b/app/Models/Producto.php @@ -19,8 +19,17 @@ class Producto extends Model 'nombre', 'descripcion', 'categoria_id', - 'codigo_barras_id' + 'codigo_barras_id', + 'precio', ]; + public function categorias() { + return $this->belongsTo(Categorias::class, 'categoria_id', 'id_categoria'); + } + + public function codigo_barras(){ + + return $this->belongsTo(CodigoBarras::class,'codigo_barras_id','id_codigo_barras'); + } } diff --git a/resources/views/productos/index.blade.php b/resources/views/productos/index.blade.php new file mode 100644 index 0000000..22664ed --- /dev/null +++ b/resources/views/productos/index.blade.php @@ -0,0 +1,120 @@ +@extends('layouts.admin') +@section('contenido') + + + +
+ +
+

Listado de Productos

+
+
+ +
+ +
+ +
+ +
+
+ + + @include('compartido.mensajes') + @include('compartido.errores') + + +
+ + + + + + + + + + + + + + + + @foreach($productos as $prod) + + + + + + + + + + @endforeach + +
IdNombreDescripcionPrecioCodigo_barraCategoriaAcciones
{{ $prod->id_producto }}{{ $prod->nombre }}{{ $prod->descripcion }}{{ $prod->precio }}{{ $prod->codigo_barras->codigo }}{{ $prod->categorias->nombre}} + +
+ @csrf + @method('DELETE') + + + + + + + + + + + + + +
+ +
+
+ +
+
+ +@endsection +@push('styles') + +@endpush +@push('scripts') + +@endpush diff --git a/routes/web.php b/routes/web.php index b47bb4a..ff44ede 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\CategoriasController; +use App\Http\Controllers\ProductoController; /* |-------------------------------------------------------------------------- | Web Routes @@ -28,6 +29,7 @@ Route::put('categorias/{categoria}', [CategoriasController::class, 'update'])->n Route::resource('categorias', CategoriasController::class)->middleware('auth'); +Route::resource('productos', ProductoController::class); Route::put('categorias/restaurar/{categoria}', [CategoriasController::class, 'restaurar'])->name('categorias.restaurar')->middleware('auth'); Auth::routes(); Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');