39 lines
2.6 KiB
Python
39 lines
2.6 KiB
Python
CALCULATION_DDL = (
|
|
"""CREATE TABLE IF NOT EXISTS b08_calculation_runs (
|
|
id CHAR(36) PRIMARY KEY, project_id CHAR(36) NOT NULL, calculation_type VARCHAR(30) NOT NULL,
|
|
basis_version VARCHAR(50) NOT NULL, price_version VARCHAR(50) NOT NULL,
|
|
quantity_version INT NOT NULL, rule_version VARCHAR(50) NOT NULL,
|
|
input_hash CHAR(64) NOT NULL, status VARCHAR(20) NOT NULL,
|
|
error_json LONGTEXT NOT NULL, created_by BIGINT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
KEY ix_b08_calc_run(project_id,created_at))""",
|
|
"""CREATE TABLE IF NOT EXISTS b08_calculation_inputs (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY, run_id CHAR(36) NOT NULL,
|
|
input_type VARCHAR(30) NOT NULL, reference_id VARCHAR(80) NOT NULL,
|
|
snapshot_json LONGTEXT NOT NULL, KEY ix_b08_calc_input(run_id))""",
|
|
"""CREATE TABLE IF NOT EXISTS b08_estimate_lines (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY, run_id CHAR(36) NOT NULL,
|
|
quantity_item_id CHAR(36) NOT NULL, wbs_id CHAR(36) NOT NULL,
|
|
quantity DECIMAL(20,6) NOT NULL, unit_labor DECIMAL(20,4) NOT NULL,
|
|
unit_material DECIMAL(20,4) NOT NULL, unit_expense DECIMAL(20,4) NOT NULL,
|
|
labor_amount BIGINT NOT NULL, material_amount BIGINT NOT NULL,
|
|
expense_amount BIGINT NOT NULL, total_amount BIGINT NOT NULL,
|
|
trace_json LONGTEXT NOT NULL, KEY ix_b08_estimate_line(run_id,wbs_id))""",
|
|
"""CREATE TABLE IF NOT EXISTS b08_cost_aggregates (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY, run_id CHAR(36) NOT NULL,
|
|
aggregate_type VARCHAR(30) NOT NULL, group_key VARCHAR(100) NOT NULL,
|
|
labor_amount BIGINT NOT NULL, material_amount BIGINT NOT NULL,
|
|
expense_amount BIGINT NOT NULL, total_amount BIGINT NOT NULL,
|
|
UNIQUE KEY uq_b08_aggregate(run_id,aggregate_type,group_key))""",
|
|
"""CREATE TABLE IF NOT EXISTS b08_indirect_cost_results (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY, run_id CHAR(36) NOT NULL,
|
|
rule_code VARCHAR(80) NOT NULL, base_amount BIGINT NOT NULL,
|
|
rate_value DECIMAL(20,10) NULL, result_amount BIGINT NOT NULL,
|
|
trace_json LONGTEXT NOT NULL, sort_order INT NOT NULL,
|
|
UNIQUE KEY uq_b08_indirect(run_id,rule_code))""",
|
|
"""CREATE TABLE IF NOT EXISTS b08_final_cost_results (
|
|
run_id CHAR(36) PRIMARY KEY, direct_cost BIGINT NOT NULL, net_cost BIGINT NOT NULL,
|
|
general_admin BIGINT NOT NULL, profit BIGINT NOT NULL, total_cost BIGINT NOT NULL,
|
|
vat BIGINT NOT NULL, contract_cost BIGINT NOT NULL, government_material BIGINT NOT NULL,
|
|
procurement_fee BIGINT NOT NULL, total_project_cost BIGINT NOT NULL,
|
|
trace_json LONGTEXT NOT NULL)""",
|
|
) |