-- ============================================================================
-- ERP GENERIC - SEED DATA: CATALOGS (Development)
-- ============================================================================
-- Description: Base catalogs needed before other seeds (currencies, countries, UOMs)
-- Order: Must be loaded FIRST (before tenants, companies, etc.)
-- ============================================================================

-- ===========================================
-- CURRENCIES (ISO 4217)
-- ===========================================

INSERT INTO core.currencies (id, code, name, symbol, decimals, rounding, active)
VALUES
    ('00000000-0000-0000-0000-000000000001', 'MXN', 'Peso Mexicano', '$', 2, 0.01, true),
    ('00000000-0000-0000-0000-000000000002', 'USD', 'US Dollar', '$', 2, 0.01, true),
    ('00000000-0000-0000-0000-000000000003', 'EUR', 'Euro', '€', 2, 0.01, true)
ON CONFLICT (code) DO NOTHING;

-- ===========================================
-- COUNTRIES (ISO 3166-1 alpha-2)
-- ===========================================

INSERT INTO core.countries (id, code, name, phone_code, currency_code)
VALUES
    ('00000000-0000-0000-0001-000000000001', 'MX', 'México', '+52', 'MXN'),
    ('00000000-0000-0000-0001-000000000002', 'US', 'United States', '+1', 'USD'),
    ('00000000-0000-0000-0001-000000000003', 'CA', 'Canada', '+1', 'CAD'),
    ('00000000-0000-0000-0001-000000000004', 'ES', 'España', '+34', 'EUR'),
    ('00000000-0000-0000-0001-000000000005', 'DE', 'Alemania', '+49', 'EUR')
ON CONFLICT (code) DO NOTHING;

-- ===========================================
-- UOM CATEGORIES
-- ===========================================

INSERT INTO core.uom_categories (id, name, description)
VALUES
    ('00000000-0000-0000-0002-000000000001', 'Unit', 'Unidades individuales'),
    ('00000000-0000-0000-0002-000000000002', 'Weight', 'Unidades de peso'),
    ('00000000-0000-0000-0002-000000000003', 'Volume', 'Unidades de volumen'),
    ('00000000-0000-0000-0002-000000000004', 'Length', 'Unidades de longitud'),
    ('00000000-0000-0000-0002-000000000005', 'Time', 'Unidades de tiempo')
ON CONFLICT (name) DO NOTHING;

-- ===========================================
-- UNITS OF MEASURE
-- ===========================================

INSERT INTO core.uom (id, category_id, name, code, uom_type, factor, rounding, active)
VALUES
    -- Units
    ('00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0002-000000000001', 'Unit', 'UNIT', 'reference', 1.0, 1, true),
    ('00000000-0000-0000-0003-000000000002', '00000000-0000-0000-0002-000000000001', 'Dozen', 'DOZ', 'bigger', 12.0, 1, true),
    ('00000000-0000-0000-0003-000000000003', '00000000-0000-0000-0002-000000000001', 'Sheet', 'SHEET', 'reference', 1.0, 1, true),
    -- Weight
    ('00000000-0000-0000-0003-000000000010', '00000000-0000-0000-0002-000000000002', 'Kilogram', 'KG', 'reference', 1.0, 0.001, true),
    ('00000000-0000-0000-0003-000000000011', '00000000-0000-0000-0002-000000000002', 'Gram', 'G', 'smaller', 0.001, 0.01, true),
    ('00000000-0000-0000-0003-000000000012', '00000000-0000-0000-0002-000000000002', 'Pound', 'LB', 'bigger', 0.453592, 0.01, true),
    -- Volume
    ('00000000-0000-0000-0003-000000000020', '00000000-0000-0000-0002-000000000003', 'Liter', 'L', 'reference', 1.0, 0.001, true),
    ('00000000-0000-0000-0003-000000000021', '00000000-0000-0000-0002-000000000003', 'Milliliter', 'ML', 'smaller', 0.001, 1, true),
    ('00000000-0000-0000-0003-000000000022', '00000000-0000-0000-0002-000000000003', 'Gallon', 'GAL', 'bigger', 3.78541, 0.01, true),
    -- Length
    ('00000000-0000-0000-0003-000000000030', '00000000-0000-0000-0002-000000000004', 'Meter', 'M', 'reference', 1.0, 0.001, true),
    ('00000000-0000-0000-0003-000000000031', '00000000-0000-0000-0002-000000000004', 'Centimeter', 'CM', 'smaller', 0.01, 0.1, true),
    ('00000000-0000-0000-0003-000000000032', '00000000-0000-0000-0002-000000000004', 'Inch', 'IN', 'smaller', 0.0254, 0.1, true),
    -- Time
    ('00000000-0000-0000-0003-000000000040', '00000000-0000-0000-0002-000000000005', 'Hour', 'HOUR', 'reference', 1.0, 0.01, true),
    ('00000000-0000-0000-0003-000000000041', '00000000-0000-0000-0002-000000000005', 'Day', 'DAY', 'bigger', 8.0, 0.01, true),
    ('00000000-0000-0000-0003-000000000042', '00000000-0000-0000-0002-000000000005', 'Minute', 'MIN', 'smaller', 0.016667, 1, true)
ON CONFLICT (id) DO NOTHING;

-- Output confirmation
DO $$
BEGIN
    RAISE NOTICE 'Catalogs seed data loaded:';
    RAISE NOTICE '  - 3 currencies (MXN, USD, EUR)';
    RAISE NOTICE '  - 5 countries';
    RAISE NOTICE '  - 5 UOM categories';
    RAISE NOTICE '  - 15 units of measure';
END $$;
