Files
boc/backend/db/migrations/007_visma_features.sql
T
Bernt 78b57273e2 security: Add proper authentication, RBAC, and tenant isolation
- Add password hashing with bcrypt
- Add AuthService with proper login
- Add password strength validation
- Add RBAC middleware (AdminOnly, ManagerOrAdmin)
- Add tenant isolation middleware
- Update CRM handler with tenant filtering
- Add JWT fallback for development mode
- Add user context helpers
- Build successful
2026-08-10 12:52:48 +00:00

85 lines
2.2 KiB
SQL

-- Migration 007: Visma eEkonomi features
-- Allt ett företag behöver
-- 1. LÖN (Payroll)
CREATE TABLE IF NOT EXISTS boc_payroll (
id SERIAL PRIMARY KEY,
employee_id TEXT NOT NULL,
period TEXT NOT NULL,
gross_salary NUMERIC(12,2) NOT NULL,
tax_deduction NUMERIC(12,2) NOT NULL,
employer_contribution NUMERIC(12,2) NOT NULL,
net_salary NUMERIC(12,2) NOT NULL,
payment_date DATE,
status TEXT DEFAULT 'draft',
created_at TIMESTAMP DEFAULT NOW()
);
-- 2. TID (Time tracking)
CREATE TABLE IF NOT EXISTS boc_time_entries (
id SERIAL PRIMARY KEY,
employee_id TEXT NOT NULL,
date DATE NOT NULL,
hours NUMERIC(4,2) NOT NULL,
project_id TEXT,
description TEXT,
billable BOOLEAN DEFAULT false,
created_at TIMESTAMP DEFAULT NOW()
);
-- 3. PROJEKT (redan skapad i 002, bara seed-data)
-- CREATE TABLE IF NOT EXISTS boc_projects (...); -- redan finns
-- 4. LAGER (Inventory)
CREATE TABLE IF NOT EXISTS boc_inventory (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
sku TEXT UNIQUE,
quantity INTEGER DEFAULT 0,
unit_cost NUMERIC(12,2),
unit_price NUMERIC(12,2),
category TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
-- 5. LEVERANTÖRER (Suppliers)
CREATE TABLE IF NOT EXISTS boc_suppliers (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
email TEXT,
phone TEXT,
org_number TEXT,
address TEXT,
payment_terms TEXT,
status TEXT DEFAULT 'active',
created_at TIMESTAMP DEFAULT NOW()
);
-- 6. INKÖP (Purchases)
CREATE TABLE IF NOT EXISTS boc_purchases (
id TEXT PRIMARY KEY,
supplier_id TEXT,
amount NUMERIC(12,2) NOT NULL,
currency TEXT DEFAULT 'SEK',
status TEXT DEFAULT 'draft',
due_date DATE,
created_at TIMESTAMP DEFAULT NOW()
);
-- 7. RAPPORTER (Reports)
CREATE TABLE IF NOT EXISTS boc_reports (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
type TEXT NOT NULL,
period TEXT,
data JSONB,
created_at TIMESTAMP DEFAULT NOW()
);
-- Seed data
-- INSERT INTO boc_projects (...) -- redan finns data
-- INSERT INTO boc_inventory (...) -- redan finns data
-- INSERT INTO boc_suppliers (...) -- redan finns data
-- INSERT INTO boc_purchases (...) -- redan finns data