erp-core-database-v2/seeds/dev/05-sample-data.sql

229 lines
9.0 KiB
SQL

-- ============================================================================
-- ERP GENERIC - SEED DATA: SAMPLE DATA (Development)
-- ============================================================================
-- Description: Sample partners, products, and transactions for testing
-- ============================================================================
-- ===========================================
-- UUID REFERENCE (from previous seeds)
-- ===========================================
-- TENANT_DEMO: 1c7dfbb0-19b8-4e87-a225-a74da6f26dbf
-- COMPANY_DEMO: 50fa9b29-504f-4c45-8f8a-3d129cfc6095
-- ===========================================
-- SAMPLE PARTNERS (Customers & Vendors)
-- ===========================================
-- Customer 1 - Acme Corporation
INSERT INTO core.partners (id, tenant_id, name, legal_name, partner_type, is_customer, is_supplier, is_company, email, phone, tax_id, created_at)
VALUES (
'dda3e76c-0f92-49ea-b647-62fde7d6e1d1',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Acme Corporation',
'Acme Corporation S.A. de C.V.',
'company',
true,
false,
true,
'ventas@acme.mx',
'+52 55 1111 2222',
'ACM123456ABC',
CURRENT_TIMESTAMP
) ON CONFLICT (id) DO NOTHING;
-- Customer 2 - Tech Solutions
INSERT INTO core.partners (id, tenant_id, name, legal_name, partner_type, is_customer, is_supplier, is_company, email, phone, tax_id, created_at)
VALUES (
'78291258-da01-4560-a49e-5047d92cf11f',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Tech Solutions',
'Tech Solutions de México S.A.',
'company',
true,
false,
true,
'contacto@techsolutions.mx',
'+52 55 3333 4444',
'TSM987654XYZ',
CURRENT_TIMESTAMP
) ON CONFLICT (id) DO NOTHING;
-- Vendor 1 - Materiales del Centro
INSERT INTO core.partners (id, tenant_id, name, legal_name, partner_type, is_customer, is_supplier, is_company, email, phone, tax_id, created_at)
VALUES (
'643c97e3-bf44-40ed-bd01-ae1f5f0d861b',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Materiales del Centro',
'Materiales del Centro S. de R.L.',
'company',
false,
true,
true,
'ventas@materialescentro.mx',
'+52 55 5555 6666',
'MDC456789DEF',
CURRENT_TIMESTAMP
) ON CONFLICT (id) DO NOTHING;
-- Vendor 2 - Distribuidora Nacional
INSERT INTO core.partners (id, tenant_id, name, legal_name, partner_type, is_customer, is_supplier, is_company, email, phone, tax_id, created_at)
VALUES (
'79f3d083-375e-4e50-920b-a3630f74d4b1',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Distribuidora Nacional',
'Distribuidora Nacional de Productos S.A.',
'company',
false,
true,
true,
'pedidos@distnacional.mx',
'+52 55 7777 8888',
'DNP321654GHI',
CURRENT_TIMESTAMP
) ON CONFLICT (id) DO NOTHING;
-- ===========================================
-- SAMPLE PRODUCT CATEGORIES
-- ===========================================
INSERT INTO core.product_categories (id, tenant_id, name, code, parent_id, full_path, active, created_at)
VALUES
('f10ee8c4-e52e-41f5-93b3-a140d09dd807', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', 'All Products', 'ALL', NULL, 'All Products', true, CURRENT_TIMESTAMP),
('b1517141-470a-4835-98ff-9250ffd18121', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', 'Raw Materials', 'RAW', 'f10ee8c4-e52e-41f5-93b3-a140d09dd807', 'All Products / Raw Materials', true, CURRENT_TIMESTAMP),
('0b55e26b-ec64-4a80-aab3-be5a55b0ca88', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', 'Finished Goods', 'FIN', 'f10ee8c4-e52e-41f5-93b3-a140d09dd807', 'All Products / Finished Goods', true, CURRENT_TIMESTAMP),
('e92fbdc8-998f-4bf2-8a00-c7efd3e8eb64', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', 'Services', 'SRV', 'f10ee8c4-e52e-41f5-93b3-a140d09dd807', 'All Products / Services', true, CURRENT_TIMESTAMP)
ON CONFLICT (id) DO NOTHING;
-- ===========================================
-- SAMPLE PRODUCTS
-- ===========================================
INSERT INTO inventory.products (id, tenant_id, name, code, barcode, category_id, product_type, uom_id, cost_price, list_price, created_at)
VALUES
-- Product 1: Raw material - Steel Sheet
(
'ccbc64d7-06f9-47a1-9ad7-6dbfbbf82955',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Steel Sheet 4x8',
'MAT-001',
'7501234567890',
'b1517141-470a-4835-98ff-9250ffd18121',
'storable',
(SELECT id FROM core.uom WHERE code = 'unit' LIMIT 1),
350.00,
500.00,
CURRENT_TIMESTAMP
),
-- Product 2: Finished good - Metal Cabinet
(
'1d4bbccb-1d83-4b15-a85d-687e378fff96',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Metal Cabinet Large',
'PROD-001',
'7501234567891',
'0b55e26b-ec64-4a80-aab3-be5a55b0ca88',
'storable',
(SELECT id FROM core.uom WHERE code = 'unit' LIMIT 1),
1800.00,
2500.00,
CURRENT_TIMESTAMP
),
-- Product 3: Service - Installation
(
'aae17b73-5bd2-433e-bb99-d9187df398b8',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'Installation Service',
'SRV-001',
NULL,
'e92fbdc8-998f-4bf2-8a00-c7efd3e8eb64',
'service',
(SELECT id FROM core.uom WHERE code = 'h' LIMIT 1),
300.00,
500.00,
CURRENT_TIMESTAMP
)
ON CONFLICT (id) DO NOTHING;
-- ===========================================
-- SAMPLE WAREHOUSE & LOCATIONS
-- ===========================================
INSERT INTO inventory.warehouses (id, tenant_id, company_id, name, code, is_default, active, created_at)
VALUES (
'40ea2e44-31aa-4e4c-856d-e5c3dd0b942f',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'50fa9b29-504f-4c45-8f8a-3d129cfc6095',
'Main Warehouse',
'WH-MAIN',
true,
true,
CURRENT_TIMESTAMP
) ON CONFLICT (id) DO NOTHING;
INSERT INTO inventory.locations (id, tenant_id, warehouse_id, name, complete_name, location_type, active, created_at)
VALUES
('7a57d418-4ea6-47d7-a3e0-2ade4c95e240', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', '40ea2e44-31aa-4e4c-856d-e5c3dd0b942f', 'Stock', 'WH-MAIN/Stock', 'internal', true, CURRENT_TIMESTAMP),
('3bea067b-5023-474b-88cf-97bb0461538b', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', '40ea2e44-31aa-4e4c-856d-e5c3dd0b942f', 'Input', 'WH-MAIN/Input', 'internal', true, CURRENT_TIMESTAMP),
('8f97bcf7-a34f-406e-8292-bfb04502a4f8', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', '40ea2e44-31aa-4e4c-856d-e5c3dd0b942f', 'Output', 'WH-MAIN/Output', 'internal', true, CURRENT_TIMESTAMP)
ON CONFLICT (id) DO NOTHING;
-- ===========================================
-- SAMPLE STOCK QUANTITIES
-- ===========================================
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'inventory' AND table_name = 'stock_quants') THEN
-- Steel Sheet 4x8 - 100 units in Stock location
PERFORM inventory.update_stock_quant(
'ccbc64d7-06f9-47a1-9ad7-6dbfbbf82955'::uuid,
'7a57d418-4ea6-47d7-a3e0-2ade4c95e240'::uuid,
NULL,
100.00
);
-- Metal Cabinet Large - 25 units in Stock location
PERFORM inventory.update_stock_quant(
'1d4bbccb-1d83-4b15-a85d-687e378fff96'::uuid,
'7a57d418-4ea6-47d7-a3e0-2ade4c95e240'::uuid,
NULL,
25.00
);
RAISE NOTICE 'Stock quantities added via update_stock_quant function';
ELSE
RAISE NOTICE 'inventory.stock_quants table does not exist, skipping stock initialization';
END IF;
END $$;
-- ===========================================
-- SAMPLE ANALYTIC ACCOUNTS
-- ===========================================
INSERT INTO analytics.analytic_plans (id, tenant_id, company_id, name, description, active, created_at)
VALUES (
'f6085dcd-dcd7-4ef5-affc-0fa3b037b1d2',
'1c7dfbb0-19b8-4e87-a225-a74da6f26dbf',
'50fa9b29-504f-4c45-8f8a-3d129cfc6095',
'Projects',
'Plan for project-based analytics',
true,
CURRENT_TIMESTAMP
) ON CONFLICT (id) DO NOTHING;
INSERT INTO analytics.analytic_accounts (id, tenant_id, company_id, plan_id, name, code, account_type, status, created_at)
VALUES
('858e16c0-773d-4cec-ac94-0241ab0c90e3', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', '50fa9b29-504f-4c45-8f8a-3d129cfc6095', 'f6085dcd-dcd7-4ef5-affc-0fa3b037b1d2', 'Project Alpha', 'PROJ-ALPHA', 'project', 'active', CURRENT_TIMESTAMP),
('41b6a320-021d-473d-b643-038b1bb86055', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', '50fa9b29-504f-4c45-8f8a-3d129cfc6095', 'f6085dcd-dcd7-4ef5-affc-0fa3b037b1d2', 'Project Beta', 'PROJ-BETA', 'project', 'active', CURRENT_TIMESTAMP),
('b950ada5-2f11-4dd7-a91b-5696dbb8fabc', '1c7dfbb0-19b8-4e87-a225-a74da6f26dbf', '50fa9b29-504f-4c45-8f8a-3d129cfc6095', 'f6085dcd-dcd7-4ef5-affc-0fa3b037b1d2', 'Operations', 'OPS', 'department', 'active', CURRENT_TIMESTAMP)
ON CONFLICT (id) DO NOTHING;
-- Output confirmation
DO $$
BEGIN
RAISE NOTICE 'Sample data loaded:';
RAISE NOTICE ' - 4 partners (2 customers, 2 vendors)';
RAISE NOTICE ' - 4 product categories';
RAISE NOTICE ' - 3 products';
RAISE NOTICE ' - 1 warehouse with 3 locations';
RAISE NOTICE ' - 3 analytic accounts';
END $$;