erp-core-database/seeds/dev/03-seed-subscriptions.sql
rckrdmrd 5043a640e4 refactor: Restructure DDL with numbered schema files
- Replace old DDL structure with new numbered files (01-24)
- Update migrations and seeds for new schema
- Clean up deprecated files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 00:40:32 -06:00

132 lines
4.6 KiB
SQL

-- =============================================================
-- SEED: 03-seed-subscriptions.sql
-- DESCRIPCION: Datos de desarrollo para suscripciones
-- VERSION: 1.0.0
-- PROYECTO: ERP-Core V2
-- FECHA: 2026-01-10
-- =============================================================
-- Obtener IDs de planes (los planes ya deben existir desde el DDL)
-- Los planes fueron insertados en 05-billing-usage.sql
-- Suscripciones para tenants de desarrollo
INSERT INTO billing.tenant_subscriptions (
id, tenant_id, plan_id, billing_cycle,
current_period_start, current_period_end, status,
billing_email, billing_name, tax_id,
current_price, contracted_users, contracted_branches,
auto_renew
)
SELECT
'dddd1111-1111-1111-1111-111111111111'::uuid,
'11111111-1111-1111-1111-111111111111'::uuid,
sp.id,
'monthly',
CURRENT_DATE - INTERVAL '15 days',
CURRENT_DATE + INTERVAL '15 days',
'active',
'billing@demo.com',
'Empresa Demo SA de CV',
'ABC123456XYZ',
sp.base_monthly_price,
10,
5,
TRUE
FROM billing.subscription_plans sp
WHERE sp.code = 'professional'
ON CONFLICT (tenant_id) DO NOTHING;
INSERT INTO billing.tenant_subscriptions (
id, tenant_id, plan_id, billing_cycle,
current_period_start, current_period_end, status,
trial_start, trial_end,
billing_email, billing_name, tax_id,
current_price, contracted_users, contracted_branches,
auto_renew
)
SELECT
'dddd2222-2222-2222-2222-222222222222'::uuid,
'22222222-2222-2222-2222-222222222222'::uuid,
sp.id,
'monthly',
CURRENT_DATE - INTERVAL '10 days',
CURRENT_DATE + INTERVAL '20 days',
'trial',
CURRENT_DATE - INTERVAL '10 days',
CURRENT_DATE + INTERVAL '4 days',
'billing@test.com',
'Tienda Pruebas',
'XYZ987654ABC',
0, -- Gratis durante trial
5,
1,
TRUE
FROM billing.subscription_plans sp
WHERE sp.code = 'starter'
ON CONFLICT (tenant_id) DO NOTHING;
-- Usage Tracking para el periodo actual
INSERT INTO billing.usage_tracking (
id, tenant_id, period_start, period_end,
active_users, peak_concurrent_users, active_branches,
storage_used_gb, api_calls, sales_count, sales_amount,
mobile_sessions, payment_transactions
)
VALUES
-- Uso de Demo (tenant activo)
('eeee3333-1111-1111-1111-111111111111', '11111111-1111-1111-1111-111111111111',
date_trunc('month', CURRENT_DATE), date_trunc('month', CURRENT_DATE) + INTERVAL '1 month' - INTERVAL '1 day',
4, 3, 4, 2.5, 15000, 250, 125000.00, 150, 75),
-- Uso de Test Store (trial)
('eeee4444-2222-2222-2222-222222222222', '22222222-2222-2222-2222-222222222222',
date_trunc('month', CURRENT_DATE), date_trunc('month', CURRENT_DATE) + INTERVAL '1 month' - INTERVAL '1 day',
1, 1, 1, 0.1, 500, 15, 3500.00, 10, 5)
ON CONFLICT (tenant_id, period_start) DO NOTHING;
-- Factura de ejemplo (pagada)
INSERT INTO billing.invoices (
id, tenant_id, subscription_id, invoice_number, invoice_date,
period_start, period_end,
billing_name, billing_email, tax_id,
subtotal, tax_amount, total, currency, status,
due_date, paid_at, paid_amount, payment_method, payment_reference
)
VALUES
('ffff1111-1111-1111-1111-111111111111', '11111111-1111-1111-1111-111111111111',
'dddd1111-1111-1111-1111-111111111111',
'INV-2026-000001', CURRENT_DATE - INTERVAL '1 month',
CURRENT_DATE - INTERVAL '2 months', CURRENT_DATE - INTERVAL '1 month',
'Empresa Demo SA de CV', 'billing@demo.com', 'ABC123456XYZ',
999.00, 159.84, 1158.84, 'MXN', 'paid',
CURRENT_DATE - INTERVAL '25 days', CURRENT_DATE - INTERVAL '26 days', 1158.84,
'card', 'ch_1234567890')
ON CONFLICT DO NOTHING;
-- Items de factura
INSERT INTO billing.invoice_items (
id, invoice_id, description, item_type, quantity, unit_price, subtotal
)
VALUES
(gen_random_uuid(), 'ffff1111-1111-1111-1111-111111111111',
'Suscripcion Professional - Diciembre 2025', 'subscription', 1, 999.00, 999.00)
ON CONFLICT DO NOTHING;
-- Alertas de billing de ejemplo
INSERT INTO billing.billing_alerts (
id, tenant_id, alert_type, title, message, severity, status
)
VALUES
-- Alerta resuelta
(gen_random_uuid(), '11111111-1111-1111-1111-111111111111',
'payment_due', 'Pago pendiente procesado',
'Su pago del periodo anterior ha sido procesado exitosamente.',
'info', 'resolved'),
-- Alerta de trial ending para tenant test
(gen_random_uuid(), '22222222-2222-2222-2222-222222222222',
'trial_ending', 'Su periodo de prueba termina pronto',
'Su periodo de prueba terminara en 4 dias. Seleccione un plan para continuar usando el servicio.',
'warning', 'active')
ON CONFLICT DO NOTHING;