mirror of
https://origin.cursor.com/mrdevmx/panels.git
synced 2026-10-09 11:23:18 +00:00
164 lines
7.1 KiB
SQL
164 lines
7.1 KiB
SQL
--liquibase formatted sql
|
|
|
|
--changeset panel:app-005a-payroll-settings endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='payroll_settings'
|
|
CREATE TABLE payroll_settings (
|
|
tenant_id INTEGER NOT NULL PRIMARY KEY,
|
|
loan_commission_enabled INTEGER NOT NULL DEFAULT 1,
|
|
loan_commission_pct REAL NOT NULL DEFAULT 10,
|
|
loan_small_max REAL NOT NULL DEFAULT 500
|
|
);
|
|
|
|
--changeset panel:app-005b-payroll-weeks endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='payroll_weeks'
|
|
CREATE TABLE payroll_weeks (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
week_start TEXT NOT NULL,
|
|
week_end TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'draft' CHECK (status IN ('draft', 'assembled', 'paid')),
|
|
required_net REAL NOT NULL DEFAULT 0,
|
|
payable_net REAL NOT NULL DEFAULT 0,
|
|
assembled_at TEXT,
|
|
paid_at TEXT,
|
|
tenant_id INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
CREATE UNIQUE INDEX idx_payroll_weeks_tenant_start ON payroll_weeks(tenant_id, week_start);
|
|
|
|
--changeset panel:app-005c-payroll-sheets endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='payroll_sheets'
|
|
CREATE TABLE payroll_sheets (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
week_id INTEGER NOT NULL REFERENCES payroll_weeks(id) ON DELETE CASCADE,
|
|
kind TEXT NOT NULL CHECK (kind IN ('obra', 'destajo', 'admin')),
|
|
project_id INTEGER REFERENCES projects(id)
|
|
);
|
|
CREATE UNIQUE INDEX idx_payroll_sheets_week_kind_project ON payroll_sheets(week_id, kind, IFNULL(project_id, 0));
|
|
|
|
--changeset panel:app-005d-payroll-week-lines endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='payroll_week_lines'
|
|
CREATE TABLE payroll_week_lines (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
sheet_id INTEGER NOT NULL REFERENCES payroll_sheets(id) ON DELETE CASCADE,
|
|
worker_id INTEGER NOT NULL REFERENCES workers(id),
|
|
destajo_cut_line_id INTEGER,
|
|
project_id INTEGER REFERENCES projects(id),
|
|
days REAL NOT NULL DEFAULT 0,
|
|
daily_wage REAL NOT NULL DEFAULT 0,
|
|
qty_planned REAL NOT NULL DEFAULT 0,
|
|
qty_actual REAL NOT NULL DEFAULT 0,
|
|
qty_extra REAL NOT NULL DEFAULT 0,
|
|
unit_price REAL NOT NULL DEFAULT 0,
|
|
unit_code TEXT,
|
|
concepto TEXT,
|
|
amount REAL NOT NULL DEFAULT 0,
|
|
gross REAL NOT NULL DEFAULT 0,
|
|
discounts REAL NOT NULL DEFAULT 0,
|
|
loan_id INTEGER REFERENCES loans(id),
|
|
loan_discount REAL NOT NULL DEFAULT 0,
|
|
loan_label TEXT,
|
|
required_net REAL NOT NULL DEFAULT 0,
|
|
payable_net REAL NOT NULL DEFAULT 0
|
|
);
|
|
|
|
--changeset panel:app-005e-destajo-units endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='destajo_units'
|
|
CREATE TABLE destajo_units (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
tenant_id INTEGER NOT NULL DEFAULT 0,
|
|
code TEXT NOT NULL,
|
|
label TEXT NOT NULL,
|
|
UNIQUE (tenant_id, code)
|
|
);
|
|
|
|
--changeset panel:app-005f-destajo-periods endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='destajo_periods'
|
|
CREATE TABLE destajo_periods (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
period_start TEXT NOT NULL,
|
|
period_end TEXT NOT NULL,
|
|
week_id INTEGER NOT NULL REFERENCES payroll_weeks(id) ON DELETE CASCADE,
|
|
tenant_id INTEGER NOT NULL DEFAULT 0,
|
|
UNIQUE (tenant_id, period_end)
|
|
);
|
|
|
|
--changeset panel:app-005g-destajo-jobs endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='destajo_jobs'
|
|
CREATE TABLE destajo_jobs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
project_id INTEGER NOT NULL REFERENCES projects(id),
|
|
worker_id INTEGER NOT NULL REFERENCES workers(id),
|
|
concepto TEXT NOT NULL,
|
|
unit_code TEXT NOT NULL,
|
|
qty_total_estimated REAL NOT NULL,
|
|
unit_price REAL NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'open' CHECK (status IN ('open', 'done')),
|
|
tenant_id INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
--changeset panel:app-005h-destajo-cut-lines endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='destajo_cut_lines'
|
|
CREATE TABLE destajo_cut_lines (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
period_id INTEGER NOT NULL REFERENCES destajo_periods(id) ON DELETE CASCADE,
|
|
job_id INTEGER NOT NULL REFERENCES destajo_jobs(id) ON DELETE CASCADE,
|
|
qty_planned REAL NOT NULL DEFAULT 0,
|
|
qty_actual REAL NOT NULL DEFAULT 0,
|
|
qty_extra REAL NOT NULL DEFAULT 0,
|
|
UNIQUE (period_id, job_id)
|
|
);
|
|
|
|
--changeset panel:app-005i-loan-payments endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='loan_payments'
|
|
CREATE TABLE loan_payments (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
loan_id INTEGER NOT NULL REFERENCES loans(id) ON DELETE CASCADE,
|
|
week_id INTEGER NOT NULL REFERENCES payroll_weeks(id),
|
|
amount REAL NOT NULL,
|
|
installment_n INTEGER NOT NULL DEFAULT 1,
|
|
label TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
--changeset panel:app-005j-loans-delivered endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM pragma_table_info('loans') WHERE name='delivered'
|
|
ALTER TABLE loans ADD COLUMN delivered REAL NOT NULL DEFAULT 0;
|
|
|
|
--changeset panel:app-005k-loans-commission-pct endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM pragma_table_info('loans') WHERE name='commission_pct'
|
|
ALTER TABLE loans ADD COLUMN commission_pct REAL NOT NULL DEFAULT 0;
|
|
|
|
--changeset panel:app-005l-loans-commission-amount endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM pragma_table_info('loans') WHERE name='commission_amount'
|
|
ALTER TABLE loans ADD COLUMN commission_amount REAL NOT NULL DEFAULT 0;
|
|
|
|
--changeset panel:app-005m-loans-plan endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM pragma_table_info('loans') WHERE name='plan'
|
|
ALTER TABLE loans ADD COLUMN plan TEXT NOT NULL DEFAULT 'single';
|
|
|
|
--changeset panel:app-005n-loans-installments endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM pragma_table_info('loans') WHERE name='installments_n'
|
|
ALTER TABLE loans ADD COLUMN installments_n INTEGER NOT NULL DEFAULT 1;
|
|
|
|
--changeset panel:app-005o-loans-first-due endDelimiter:;
|
|
--preconditions onFail:MARK_RAN
|
|
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM pragma_table_info('loans') WHERE name='first_due'
|
|
ALTER TABLE loans ADD COLUMN first_due TEXT;
|
|
|
|
--changeset panel:app-005p-loans-migrate-delivered endDelimiter:;
|
|
UPDATE loans SET delivered = amount WHERE delivered = 0 AND amount > 0;
|