start transaction;

-----------------------------------
--- Inserts basicos
-----------------------------------
insert into estados_produccion (nombre)
values ('Enviada'),
       ('Preparada'),
       ('Vendida'),
       ('Mermada'),
       ('Devuelta');

insert into tipos_canal (nombre)
values ('Mesa'),
       ('Delivery');

insert into medios_pago (nombre)
values ('Efectivo'),
       ('Tarjeta de Credito'),
       ('Tarjeta de Debito');

-----------------------------------
--- Creando restaurant de prueba
-----------------------------------

insert into restaurantes (nombre)
values ('Todo Rico Restaurant');

insert into categorias (nombre, restaurante_id)
values ('Platos de fondo', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Bebidas', (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into sectores (nombre, restaurante_id)
values ('Salon Principal', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Salon Secundario', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Virtual', (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into canales_venta (nombre, sector_id, tipo_canal_id, restaurante_id)
values ('1', (select id from sectores where nombre = 'Salon Principal'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('2', (select id from sectores where nombre = 'Salon Principal'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('3', (select id from sectores where nombre = 'Salon Principal'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('4', (select id from sectores where nombre = 'Salon Principal'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('5', (select id from sectores where nombre = 'Salon Principal'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('6', (select id from sectores where nombre = 'Salon Secundario'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('7', (select id from sectores where nombre = 'Salon Secundario'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('8', (select id from sectores where nombre = 'Salon Secundario'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('9', (select id from sectores where nombre = 'Salon Secundario'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('10', (select id from sectores where nombre = 'Salon Secundario'), (select id from tipos_canal where nombre = 'Mesa'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Pedidos Ya', (select id from sectores where nombre = 'Virtual'), (select id from tipos_canal where nombre = 'Delivery'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Uber Eats', (select id from sectores where nombre = 'Virtual'), (select id from tipos_canal where nombre = 'Delivery'), (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into zonas_produccion (nombre, restaurante_id)
values ('Cocina', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Barra', (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into usuarios (auth0_id, nombre)
values ('auth0|6083af726b4de900695cb232', 'Test');

insert into usuarios_restaurantes (usuario_id, restaurante_id)
values ((select id from usuarios where nombre = 'Test'), (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into productores (usuario_id, zona_produccion_id)
values ((select id from usuarios where nombre = 'Test'), (select id from zonas_produccion where nombre = 'Cocina'));

insert into recaudadores (usuario_id)
values ((select id from usuarios where nombre = 'Test'));

insert into meseros (usuario_id)
values ((select id from usuarios where nombre = 'Test'));

insert into administradores (usuario_id)
values ((select id from usuarios where nombre = 'Test'));

-----------------------------------
--- Inventando ingredientes y productos de venta
-----------------------------------

insert into ingredientes (nombre, medida, restaurante_id)
values ('Papas', 'Kg', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Papas Pre-Fritas', 'Kg', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Sal', 'Kg', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Mantequilla', 'Kg', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Leche', 'L', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Chuletas', 'Kg', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Aceite', 'L', (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Coca-Cola', 'Unidad', (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into productos (nombre, precio_venta, categoria_id, zona_produccion_id, restaurante_id)
values ('Chuleta con Pure', 4390, (select id from categorias where nombre = 'Platos de fondo'),
        (select id from zonas_produccion where nombre = 'Cocina'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Chuleta con Papas Fritas', 4690, (select id from categorias where nombre = 'Platos de fondo'),
        (select id from zonas_produccion where nombre = 'Cocina'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('Coca-Cola', 1200, (select id from categorias where nombre = 'Bebidas'),
        (select id from zonas_produccion where nombre = 'Barra'), (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into recetas (producto_id, ingrediente_id, unidades)
values ((select id from productos where nombre = 'Chuleta con Pure'), (select id from ingredientes where nombre = 'Papas'), 0.25),
       ((select id from productos where nombre = 'Chuleta con Pure'), (select id from ingredientes where nombre = 'Sal'), 0.002),
       ((select id from productos where nombre = 'Chuleta con Pure'), (select id from ingredientes where nombre = 'Mantequilla'), 0.03),
       ((select id from productos where nombre = 'Chuleta con Pure'), (select id from ingredientes where nombre = 'Leche'), 0.2),
       ((select id from productos where nombre = 'Chuleta con Pure'), (select id from ingredientes where nombre = 'Chuletas'), 0.25);

insert into recetas (producto_id, ingrediente_id, unidades)
values ((select id from productos where nombre = 'Chuleta con Papas Fritas'), (select id from ingredientes where nombre = 'Papas Pre-Fritas'), 0.25),
       ((select id from productos where nombre = 'Chuleta con Papas Fritas'), (select id from ingredientes where nombre = 'Aceite'), 0.01),
       ((select id from productos where nombre = 'Chuleta con Papas Fritas'), (select id from ingredientes where nombre = 'Sal'), 0.002),
       ((select id from productos where nombre = 'Chuleta con Papas Fritas'), (select id from ingredientes where nombre = 'Chuletas'), 0.25);

insert into recetas (producto_id, ingrediente_id, unidades)
values ((select id from productos where nombre = 'Coca-Cola'), (select id from ingredientes where nombre = 'Coca-Cola'), 1);

-----------------------------------
--- Creando compras para crear un inventario
-----------------------------------

insert into proveedores (rut, nombre, descripcion, direccion, telefono, restaurante_id)
values ('123-1', 'Coca-Cola', 'Vende Coca Cola', null, null, (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('123-1', 'Mr. Carnes', 'Vende Carnes', null, null, (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('123-1', 'Santa Isabel', 'Vende Productos Generales', null, null, (select id from restaurantes where nombre = 'Todo Rico Restaurant'));

insert into compras (fecha_compra, proveedor_id, restaurante_id)
values ('2021-01-01'::date, (select id from proveedores where nombre = 'Coca-Cola'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('2021-02-01'::date, (select id from proveedores where nombre = 'Mr. Carnes'), (select id from restaurantes where nombre = 'Todo Rico Restaurant')),
       ('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, 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, 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
-----------------------------------

insert into cajas (fondo, apertura, cierre)  values (200000, '2021-02-01'::timestamptz, null);

insert into ventas (tiempo_venta, mesero_id, canal_id, restaurante_id, medio_pago_id, caja_id)
values (current_timestamp,
        (select id from meseros limit 1),
        (select id from canales_venta where nombre = '1'),
        (select id from restaurantes where nombre = 'Todo Rico Restaurant'),
        (select id from medios_pago where nombre = 'Efectivo'),
        (select id from cajas limit 1));

insert into venta_productos (tiempo_entrada, tiempo_salida, venta_id, producto_id, estado_id)
values (current_timestamp, null, (select id from ventas limit 1), (select id from productos where nombre = 'Coca-Cola'),
        (select id from estados_produccion where nombre = 'Enviada')),
       (current_timestamp, null, (select id from ventas limit 1), (select id from productos where nombre = 'Coca-Cola'),
        (select id from estados_produccion where nombre = 'Enviada')),
       (current_timestamp, null, (select id from ventas limit 1), (select id from productos where nombre = 'Coca-Cola'),
        (select id from estados_produccion where nombre = 'Enviada')),
       (current_timestamp, null, (select id from ventas limit 1), (select id from productos where nombre = 'Chuleta con Papas Fritas'),
        (select id from estados_produccion where nombre = 'Enviada')),
       (current_timestamp, null, (select id from ventas limit 1), (select id from productos where nombre = 'Chuleta con Papas Fritas'),
        (select id from estados_produccion where nombre = 'Enviada')),
       (current_timestamp, null, (select id from ventas limit 1), (select id from productos where nombre = 'Chuleta con Pure'),
        (select id from estados_produccion where nombre = 'Enviada'));

commit;