diff --git a/backend/app/Models/Administrador.php b/backend/app/Models/Administrador.php new file mode 100644 index 0000000..5e2d545 --- /dev/null +++ b/backend/app/Models/Administrador.php @@ -0,0 +1,17 @@ +belongsTo(Usuario::class); + } +} diff --git a/backend/app/Models/BoletaElectronica.php b/backend/app/Models/BoletaElectronica.php new file mode 100644 index 0000000..2cf0fb8 --- /dev/null +++ b/backend/app/Models/BoletaElectronica.php @@ -0,0 +1,21 @@ +belongsTo(Venta::class); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/BoletaExenta.php b/backend/app/Models/BoletaExenta.php new file mode 100644 index 0000000..4c2e8f5 --- /dev/null +++ b/backend/app/Models/BoletaExenta.php @@ -0,0 +1,21 @@ +belongsTo(Venta::class); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/CanalVenta.php b/backend/app/Models/CanalVenta.php new file mode 100644 index 0000000..39491dc --- /dev/null +++ b/backend/app/Models/CanalVenta.php @@ -0,0 +1,25 @@ +belongsTo(TipoCanal::class); + } + + public function sector() { + return $this->belongsTo(Sector::class); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/Categoria.php b/backend/app/Models/Categoria.php new file mode 100644 index 0000000..71399d4 --- /dev/null +++ b/backend/app/Models/Categoria.php @@ -0,0 +1,17 @@ +belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/Compra.php b/backend/app/Models/Compra.php new file mode 100644 index 0000000..983dffd --- /dev/null +++ b/backend/app/Models/Compra.php @@ -0,0 +1,29 @@ +hasMany(CompraIngrediente::class); + } + + public function facturas() { + return $this->hasMany(Factura::class); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } + + public function proveedor() { + return $this->belongsTo(Proveedor::class); + } +} diff --git a/backend/app/Models/CompraIngrediente.php b/backend/app/Models/CompraIngrediente.php new file mode 100644 index 0000000..574cc9a --- /dev/null +++ b/backend/app/Models/CompraIngrediente.php @@ -0,0 +1,21 @@ +belongsTo(Ingrediente::class); + } + + public function compra() { + return $this->belongsTo(Compra::class); + } +} diff --git a/backend/app/Models/EstadoProduccion.php b/backend/app/Models/EstadoProduccion.php new file mode 100644 index 0000000..4c99045 --- /dev/null +++ b/backend/app/Models/EstadoProduccion.php @@ -0,0 +1,13 @@ +belongsTo(Compra::class); + } +} diff --git a/backend/app/Models/Ingrediente.php b/backend/app/Models/Ingrediente.php new file mode 100644 index 0000000..4879f00 --- /dev/null +++ b/backend/app/Models/Ingrediente.php @@ -0,0 +1,22 @@ +hasMany(Receta::class, 'ingrediente_id'); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/Mesero.php b/backend/app/Models/Mesero.php new file mode 100644 index 0000000..ddccf8f --- /dev/null +++ b/backend/app/Models/Mesero.php @@ -0,0 +1,17 @@ +belongsTo(Usuario::class); + } +} diff --git a/backend/app/Models/Producto.php b/backend/app/Models/Producto.php new file mode 100644 index 0000000..f63b4a3 --- /dev/null +++ b/backend/app/Models/Producto.php @@ -0,0 +1,29 @@ +hasMany(Receta::class, 'producto_id'); + } + + public function categoria() { + return $this->belongsTo(Categoria::class); + } + + public function zonaProduccion() { + return $this->belongsTo(ZonaProduccion::class); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/Productor.php b/backend/app/Models/Productor.php new file mode 100644 index 0000000..af13f64 --- /dev/null +++ b/backend/app/Models/Productor.php @@ -0,0 +1,21 @@ +belongsTo(Usuario::class); + } + + public function zonaProduccion() { + return $this->belongsTo(ZonaProduccion::class); + } +} diff --git a/backend/app/Models/Proveedor.php b/backend/app/Models/Proveedor.php new file mode 100644 index 0000000..341e84d --- /dev/null +++ b/backend/app/Models/Proveedor.php @@ -0,0 +1,17 @@ +belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/Recaudador.php b/backend/app/Models/Recaudador.php new file mode 100644 index 0000000..8e8f90c --- /dev/null +++ b/backend/app/Models/Recaudador.php @@ -0,0 +1,17 @@ +belongsTo(Usuario::class); + } +} diff --git a/backend/app/Models/Receta.php b/backend/app/Models/Receta.php new file mode 100644 index 0000000..55d6468 --- /dev/null +++ b/backend/app/Models/Receta.php @@ -0,0 +1,20 @@ +belongsTo(Ingrediente::class); + } + + public function producto() { + return $this->belongsTo(Producto::class); + } +} diff --git a/backend/app/Models/Restaurante.php b/backend/app/Models/Restaurante.php new file mode 100644 index 0000000..011e578 --- /dev/null +++ b/backend/app/Models/Restaurante.php @@ -0,0 +1,17 @@ +belongsToMany(Usuario::class, 'usuarios_restaurantes', 'restaurante_id', 'usuario_id'); + } +} diff --git a/backend/app/Models/Sector.php b/backend/app/Models/Sector.php new file mode 100644 index 0000000..bb34502 --- /dev/null +++ b/backend/app/Models/Sector.php @@ -0,0 +1,17 @@ +belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Models/TipoCanal.php b/backend/app/Models/TipoCanal.php new file mode 100644 index 0000000..c47afda --- /dev/null +++ b/backend/app/Models/TipoCanal.php @@ -0,0 +1,13 @@ +belongsToMany(Restaurante::class, 'usuarios_restaurantes', 'usuario_id', 'restaurante_id'); + } +} diff --git a/backend/app/Models/Venta.php b/backend/app/Models/Venta.php new file mode 100644 index 0000000..488fbd3 --- /dev/null +++ b/backend/app/Models/Venta.php @@ -0,0 +1,29 @@ +belongsTo(Mesero::class); + } + + public function canal() { + return $this->belongsTo(CanalVenta::class); + } + + public function restaurante() { + return $this->belongsTo(Restaurante::class); + } + + public function productos() { + return $this->hasMany(VentaProducto::class); + } +} diff --git a/backend/app/Models/VentaProducto.php b/backend/app/Models/VentaProducto.php new file mode 100644 index 0000000..4a73ab9 --- /dev/null +++ b/backend/app/Models/VentaProducto.php @@ -0,0 +1,25 @@ +belongsTo(Venta::class); + } + + public function producto() { + return $this->belongsTo(Producto::class); + } + + public function estado() { + return $this->belongsTo(EstadoProduccion::class); + } +} diff --git a/backend/app/Models/ZonaProduccion.php b/backend/app/Models/ZonaProduccion.php new file mode 100644 index 0000000..1ea6cfd --- /dev/null +++ b/backend/app/Models/ZonaProduccion.php @@ -0,0 +1,17 @@ +belongsTo(Restaurante::class); + } +} diff --git a/backend/app/Traits/UuidPrimaryKey.php b/backend/app/Traits/UuidPrimaryKey.php new file mode 100644 index 0000000..cdb53bc --- /dev/null +++ b/backend/app/Traits/UuidPrimaryKey.php @@ -0,0 +1,16 @@ +withFacades(); +$app->withFacades(); -// $app->withEloquent(); +$app->withEloquent(); /* |-------------------------------------------------------------------------- @@ -76,9 +76,9 @@ $app->configure('app'); // App\Http\Middleware\ExampleMiddleware::class // ]); - $app->routeMiddleware([ - 'auth' => App\Http\Middleware\Auth0Middleware::class, - ]); +$app->routeMiddleware([ + 'auth' => App\Http\Middleware\Auth0Middleware::class, +]); /* |-------------------------------------------------------------------------- diff --git a/backend/routes/web.php b/backend/routes/web.php index 9f4579e..6f794e1 100644 --- a/backend/routes/web.php +++ b/backend/routes/web.php @@ -1,5 +1,6 @@ get('/', function () use ($router) { return 'Public View'; }); -$router->group(['prefix' => 'api/v1', 'middleware' => 'auth'], function () use ($router){ +$router->group(['prefix' => 'api/v1', 'middleware' => 'auth'], function () use ($router) { $router->get('/', function () use ($router) { - return 'Protected View'; + return \App\Models\Venta::with('productos')->get(); }); }); diff --git a/database/inserts.sql b/database/inserts.sql index 8b32ccc..f12ae7b 100644 --- a/database/inserts.sql +++ b/database/inserts.sql @@ -108,22 +108,22 @@ values ('2021-01-01'::date, (select id from proveedores where nombre = 'Coca-Col ('2021-02-01'::date, (select id from proveedores where nombre = 'Santa Isabel'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')), ('2021-01-01'::date, (select id from proveedores where nombre = 'Coca-Cola'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')); -insert into compra_ingredientes (unidades, monto_unitario_bruto, iva, ila, monto_unitario_neto, compra_id, ingrediente_id) -values (20, 500, 500 * .19, 0, 500 * 1.19, (select id from compras limit 1 offset 0), (select id from ingredientes where nombre = 'Coca-Cola')), - (50, 1000, 1000 * .19, 0, 1000 * 1.19, (select id from compras limit 1 offset 1), (select id from ingredientes where nombre = 'Chuletas')), - (25, 1000, 1000 * .19, 0, 1000 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Papas')), - (10, 500, 500 * .19, 0, 500 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Papas Pre-Fritas')), - (5, 300, 300 * .19, 0, 300 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Sal')), - (10, 2000, 2000 * .19, 0, 2000 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Mantequilla')), - (10, 700, 700 * .19, 0, 700 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Leche')), - (50, 1000, 1000 * .19, 0, 1000 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Aceite')), - (20, 500, 500 * .19, 0, 500 * 1.19, (select id from compras limit 1 offset 3), (select id from ingredientes where nombre = 'Coca-Cola')); +insert into compra_ingredientes (unidades, monto_unitario_bruto, monto_unitario_neto, compra_id, ingrediente_id) +values (20, 500, 500 * 1.19, (select id from compras limit 1 offset 0), (select id from ingredientes where nombre = 'Coca-Cola')), + (50, 1000, 1000 * 1.19, (select id from compras limit 1 offset 1), (select id from ingredientes where nombre = 'Chuletas')), + (25, 1000, 1000 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Papas')), + (10, 500, 500 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Papas Pre-Fritas')), + (5, 300, 300 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Sal')), + (10, 2000, 2000 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Mantequilla')), + (10, 700, 700 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Leche')), + (50, 1000, 1000 * 1.19, (select id from compras limit 1 offset 2), (select id from ingredientes where nombre = 'Aceite')), + (20, 500, 500 * 1.19, (select id from compras limit 1 offset 3), (select id from ingredientes where nombre = 'Coca-Cola')); -insert into facturas (numero, monto_bruto, iva, ila, monto_neto, fecha_emision, fecha_vencimiento, compra_id) -values ('1', 500 * 20, 500 * 20 * .19, 0, 500 * 20 * 1.19, '2021-01-01'::date, '2021-01-30'::date, (select id from compras limit 1 offset 0)), - ('1', 1000 * 50, 1000 * 50 * .19, 0, 1000 * 50 * 1.19, '2021-02-01'::date, '2021-02-28'::date, (select id from compras limit 1 offset 1)), - ('1', 108500, 20615, 0, 129115, '2021-02-10'::date, '2021-02-28'::date, (select id from compras limit 1 offset 2)), - ('1', 500 * 20, 500 * 20 * .19, 0, 500 * 20 * 1.19, '2021-01-01'::date, '2021-01-30'::date, (select id from compras limit 1 offset 0)); +insert into facturas (numero, monto_bruto, monto_neto, fecha_emision, fecha_vencimiento, compra_id) +values ('1', 500 * 20, 500 * 20 * 1.19, '2021-01-01'::date, '2021-01-30'::date, (select id from compras limit 1 offset 0)), + ('1', 1000 * 50, 1000 * 50 * 1.19, '2021-02-01'::date, '2021-02-28'::date, (select id from compras limit 1 offset 1)), + ('1', 108500, 129115, '2021-02-10'::date, '2021-02-28'::date, (select id from compras limit 1 offset 2)), + ('1', 500 * 20, 500 * 20 * 1.19, '2021-01-01'::date, '2021-01-30'::date, (select id from compras limit 1 offset 0)); ----------------------------------- --- Creando ventas para descontar del inventario diff --git a/database/schema.sql b/database/schema.sql index f3c6953..5d4cd53 100644 --- a/database/schema.sql +++ b/database/schema.sql @@ -12,7 +12,6 @@ create table categorias ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index categorias_restaurante_id on categorias (restaurante_id); create table zonas_produccion ( id uuid primary key default gen_random_uuid(), @@ -22,7 +21,6 @@ create table zonas_produccion ( updated_at timestamptz not null default current_timestamp ); -create index zonas_produccion_restaurante_id on zonas_produccion (restaurante_id); create table usuarios ( id uuid primary key default gen_random_uuid(), @@ -45,8 +43,6 @@ create table productores ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index productores_usuario_id on productores (usuario_id); -create index productores_zona_produccion_id on productores (zona_produccion_id); create table recaudadores ( id uuid primary key default gen_random_uuid(), @@ -54,7 +50,6 @@ create table recaudadores ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index recaudadores_usuario_id on recaudadores (usuario_id); create table meseros ( id uuid primary key default gen_random_uuid(), @@ -62,7 +57,6 @@ create table meseros ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index meseros_usuario_id on meseros (usuario_id); create table administradores ( id uuid primary key default gen_random_uuid(), @@ -70,7 +64,6 @@ create table administradores ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index administradores_usuario_id on administradores (usuario_id); create table ingredientes ( id uuid primary key default gen_random_uuid(), @@ -80,7 +73,6 @@ create table ingredientes ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index ingredientes_restaurante_id on ingredientes (restaurante_id); create table productos ( id uuid primary key default gen_random_uuid(), @@ -92,9 +84,6 @@ create table productos ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index productos_categoria_id on productos (categoria_id); -create index productos_zona_produccion_id on productos (zona_produccion_id); -create index productos_restaurante_id on productos (restaurante_id); create table recetas ( producto_id uuid references productos, @@ -116,7 +105,6 @@ create table proveedores ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index proveedores_restaurante_id on proveedores (restaurante_id); create table compras ( id uuid primary key default gen_random_uuid(), @@ -126,8 +114,6 @@ create table compras ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index compras_proveedor_id on compras (proveedor_id); -create index compras_restaurante_id on compras (restaurante_id); create table facturas ( id uuid primary key default gen_random_uuid(), @@ -142,22 +128,17 @@ create table facturas ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index facturas_compra_id on facturas (compra_id); create table compra_ingredientes ( id uuid primary key default gen_random_uuid(), unidades numeric not null, monto_unitario_bruto bigint not null, - iva bigint not null default 0, - ila bigint not null default 0, monto_unitario_neto bigint not null, compra_id uuid references compras, ingrediente_id uuid references ingredientes, inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index compra_ingredientes_compra_id on compra_ingredientes (compra_id); -create index compra_ingredientes_ingrediente_id on compra_ingredientes (ingrediente_id); create table sectores ( id uuid primary key default gen_random_uuid(), @@ -166,7 +147,6 @@ create table sectores ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index sectores_restaurante_id on sectores (restaurante_id); create table tipos_canal ( id uuid primary key default gen_random_uuid(), @@ -184,9 +164,6 @@ create table canales_venta ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index canales_venta_sector_id on canales_venta (sector_id); -create index canales_venta_tipo_canal_id on canales_venta (tipo_canal_id); -create index canales_venta_restaurante_id on canales_venta (restaurante_id); create table ventas ( id uuid primary key default gen_random_uuid(), @@ -197,9 +174,6 @@ create table ventas ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index ventas_mesero_id on ventas (mesero_id); -create index ventas_canal_id on ventas (canal_id); -create index ventas_restaurante_id on ventas (restaurante_id); create table boletas_electronicas ( id uuid primary key default gen_random_uuid(), @@ -209,8 +183,6 @@ create table boletas_electronicas ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index boletas_electronicas_venta_id on boletas_electronicas (venta_id); -create index boletas_electronicas_restaurante_id on boletas_electronicas (restaurante_id); create table boletas_exentas ( id uuid primary key default gen_random_uuid(), @@ -219,8 +191,6 @@ create table boletas_exentas ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); -create index boletas_exentas_venta_id on boletas_exentas (venta_id); -create index boletas_exentas_restaurante_id on boletas_exentas (restaurante_id); create table estados_produccion ( id uuid primary key default gen_random_uuid(), @@ -239,167 +209,42 @@ create table venta_productos ( inserted_at timestamptz not null default current_timestamp, updated_at timestamptz not null default current_timestamp ); + +------------------------------------ +--- Indexes para todas las referencias +------------------------------------ +create index categorias_restaurante_id on categorias (restaurante_id); +create index zonas_produccion_restaurante_id on zonas_produccion (restaurante_id); +create index productores_usuario_id on productores (usuario_id); +create index productores_zona_produccion_id on productores (zona_produccion_id); +create index recaudadores_usuario_id on recaudadores (usuario_id); +create index meseros_usuario_id on meseros (usuario_id); +create index administradores_usuario_id on administradores (usuario_id); +create index ingredientes_restaurante_id on ingredientes (restaurante_id); +create index productos_categoria_id on productos (categoria_id); +create index productos_zona_produccion_id on productos (zona_produccion_id); +create index productos_restaurante_id on productos (restaurante_id); +create index proveedores_restaurante_id on proveedores (restaurante_id); +create index compras_proveedor_id on compras (proveedor_id); +create index compras_restaurante_id on compras (restaurante_id); +create index facturas_compra_id on facturas (compra_id); +create index compra_ingredientes_compra_id on compra_ingredientes (compra_id); +create index compra_ingredientes_ingrediente_id on compra_ingredientes (ingrediente_id); +create index sectores_restaurante_id on sectores (restaurante_id); +create index canales_venta_sector_id on canales_venta (sector_id); +create index canales_venta_tipo_canal_id on canales_venta (tipo_canal_id); +create index canales_venta_restaurante_id on canales_venta (restaurante_id); +create index ventas_mesero_id on ventas (mesero_id); +create index ventas_canal_id on ventas (canal_id); +create index ventas_restaurante_id on ventas (restaurante_id); +create index boletas_electronicas_venta_id on boletas_electronicas (venta_id); +create index boletas_electronicas_restaurante_id on boletas_electronicas (restaurante_id); +create index boletas_exentas_venta_id on boletas_exentas (venta_id); +create index boletas_exentas_restaurante_id on boletas_exentas (restaurante_id); create index venta_productos_venta_id on venta_productos (venta_id); create index venta_productos_producto_id on venta_productos (producto_id); create index venta_productos_estado_id on venta_productos (estado_id); ------------------------------------- ---- Triggers para update ------------------------------------- - -CREATE OR REPLACE FUNCTION trigger_set_timestamp() - RETURNS TRIGGER AS -$$ -BEGIN - NEW.updated_at = current_timestamp; - RETURN NEW; -END; -$$ LANGUAGE plpgsql; - -create trigger trigger_update_restaurantes - before update - on restaurantes - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_categorias - before update - on categorias - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_zonas_produccion - before update - on zonas_produccion - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_usuarios - before update - on usuarios - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_usuarios_restaurantes - before update - on usuarios_restaurantes - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_productores - before update - on productores - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_recaudadores - before update - on recaudadores - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_meseros - before update - on meseros - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_administradores - before update - on administradores - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_ingredientes - before update - on ingredientes - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_productos - before update - on productos - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_recetas - before update - on recetas - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_proveedores - before update - on proveedores - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_compras - before update - on compras - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_facturas - before update - on facturas - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_compra_ingredientes - before update - on compra_ingredientes - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_sectores - before update - on sectores - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_tipos_canal - before update - on tipos_canal - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_canales_venta - before update - on canales_venta - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_ventas - before update - on ventas - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_boletas_electronicas - before update - on boletas_electronicas - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_boletas_exentas - before update - on boletas_exentas - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_estados_produccion - before update - on estados_produccion - for each row -execute procedure trigger_set_timestamp(); - -create trigger trigger_update_venta_productos - before update - on venta_productos - for each row -execute procedure trigger_set_timestamp(); - ------------------------------------ --- Views para crear la bodega ------------------------------------ @@ -414,7 +259,6 @@ from ventas join venta_productos on ventas.id = venta_productos.venta_id join productos on venta_productos.producto_id = productos.id join recetas on productos.id = recetas.producto_id; - --- View para obtener la lista de ingresos a bodega create view bodega_ingresos as select compra_ingredientes.ingrediente_id as ingrediente_id,