84 lines
4.5 KiB
SQL
84 lines
4.5 KiB
SQL
-- ============================================================================
|
|
-- SEED DATA: Catálogos de Clínica
|
|
-- FASE-8 ERP-Core - ERP Clínicas
|
|
-- ============================================================================
|
|
-- NOTA: Ejecutar después de SET app.current_tenant_id = 'UUID-DEL-TENANT';
|
|
-- ============================================================================
|
|
|
|
-- Categorías de almacén para clínicas
|
|
INSERT INTO inventory.storage_categories (tenant_id, name, max_weight, allow_new_product,
|
|
requiere_refrigeracion, temperatura_min, temperatura_max, es_controlado, requiere_receta)
|
|
SELECT current_setting('app.current_tenant_id', true)::UUID, name, max_weight, allow_new_product,
|
|
requiere_refrigeracion, temperatura_min, temperatura_max, es_controlado, requiere_receta
|
|
FROM (VALUES
|
|
('Farmacia General', 5000.0, 'mixed', false, NULL, NULL, false, false),
|
|
('Refrigerados', 500.0, 'same', true, 2.0, 8.0, false, true),
|
|
('Medicamentos Controlados', 100.0, 'same', false, NULL, NULL, true, true),
|
|
('Material Quirúrgico', 1000.0, 'mixed', false, NULL, NULL, false, false),
|
|
('Insumos Laboratorio', 500.0, 'mixed', false, NULL, NULL, false, false),
|
|
('Vacunas', 200.0, 'same', true, 2.0, 8.0, false, true)
|
|
) AS t(name, max_weight, allow_new_product, requiere_refrigeracion, temperatura_min, temperatura_max, es_controlado, requiere_receta)
|
|
WHERE current_setting('app.current_tenant_id', true) IS NOT NULL
|
|
AND current_setting('app.current_tenant_id', true) != ''
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Tipos de paquete para medicamentos
|
|
INSERT INTO inventory.package_types (tenant_id, name, height, width, length, base_weight, max_weight, sequence)
|
|
SELECT current_setting('app.current_tenant_id', true)::UUID, name, height, width, length, base_weight, max_weight, seq
|
|
FROM (VALUES
|
|
('Caja Medicamentos', 20.0, 15.0, 10.0, 0.1, 2.0, 10),
|
|
('Blister', 15.0, 10.0, 1.0, 0.01, 0.1, 20),
|
|
('Frasco', 10.0, 5.0, 5.0, 0.05, 0.5, 30),
|
|
('Ampolleta', 8.0, 2.0, 2.0, 0.01, 0.05, 40),
|
|
('Bolsa Suero', 30.0, 20.0, 5.0, 0.1, 1.0, 50),
|
|
('Jeringa', 15.0, 3.0, 3.0, 0.02, 0.1, 60)
|
|
) AS t(name, height, width, length, base_weight, max_weight, seq)
|
|
WHERE current_setting('app.current_tenant_id', true) IS NOT NULL
|
|
AND current_setting('app.current_tenant_id', true) != ''
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Métodos de pago para clínicas
|
|
INSERT INTO financial.payment_methods (tenant_id, name, code, payment_type, aplica_seguro, requiere_factura, porcentaje_seguro)
|
|
SELECT current_setting('app.current_tenant_id', true)::UUID, name, code, payment_type::financial.payment_method_type, aplica_seguro, requiere_factura, porcentaje_seguro
|
|
FROM (VALUES
|
|
('Efectivo', 'efectivo', 'inbound', false, false, 0),
|
|
('Tarjeta Débito', 'td', 'inbound', false, false, 0),
|
|
('Tarjeta Crédito', 'tc', 'inbound', false, true, 0),
|
|
('Transferencia', 'transfer', 'inbound', false, true, 0),
|
|
('Seguro GMM', 'seguro_gmm', 'inbound', true, true, 80),
|
|
('Seguro GMA', 'seguro_gma', 'inbound', true, true, 70),
|
|
('Convenio Empresa', 'convenio', 'inbound', false, true, 0)
|
|
) AS t(name, code, payment_type, aplica_seguro, requiere_factura, porcentaje_seguro)
|
|
WHERE current_setting('app.current_tenant_id', true) IS NOT NULL
|
|
AND current_setting('app.current_tenant_id', true) != ''
|
|
ON CONFLICT (tenant_id, code) DO NOTHING;
|
|
|
|
-- Estructuras de nómina para clínicas
|
|
INSERT INTO hr.payslip_structures (tenant_id, name, code, tipo_pago)
|
|
SELECT current_setting('app.current_tenant_id', true)::UUID, name, code, tipo_pago
|
|
FROM (VALUES
|
|
('Nómina Quincenal', 'NOM-QUIN', 'quincenal'),
|
|
('Nómina Semanal', 'NOM-SEM', 'semanal'),
|
|
('Honorarios Médicos', 'HON-MED', 'honorarios'),
|
|
('Pago por Guardia', 'PAG-GUAR', 'guardia'),
|
|
('Comisión por Consulta', 'COM-CONS', 'comision')
|
|
) AS t(name, code, tipo_pago)
|
|
WHERE current_setting('app.current_tenant_id', true) IS NOT NULL
|
|
AND current_setting('app.current_tenant_id', true) != ''
|
|
ON CONFLICT (tenant_id, code) DO NOTHING;
|
|
|
|
-- Tipos de consultorio
|
|
INSERT INTO hr.work_locations (tenant_id, name, tipo_consultorio, capacidad)
|
|
SELECT current_setting('app.current_tenant_id', true)::UUID, name, tipo, capacidad
|
|
FROM (VALUES
|
|
('Consultorio 1', 'general', 1),
|
|
('Consultorio 2', 'general', 1),
|
|
('Consultorio Especialidad', 'especialidad', 1),
|
|
('Área de Urgencias', 'urgencias', 3),
|
|
('Laboratorio', 'laboratorio', 5),
|
|
('Farmacia', 'farmacia', 2)
|
|
) AS t(name, tipo, capacidad)
|
|
WHERE current_setting('app.current_tenant_id', true) IS NOT NULL
|
|
AND current_setting('app.current_tenant_id', true) != ''
|
|
ON CONFLICT DO NOTHING;
|