summaryrefslogtreecommitdiff
path: root/db/migrations
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrations')
-rw-r--r--db/migrations/0097_poa_initial_setup.sql95
1 files changed, 95 insertions, 0 deletions
diff --git a/db/migrations/0097_poa_initial_setup.sql b/db/migrations/0097_poa_initial_setup.sql
new file mode 100644
index 00000000..fae3f4d1
--- /dev/null
+++ b/db/migrations/0097_poa_initial_setup.sql
@@ -0,0 +1,95 @@
+-- Drop existing tables and views
+DROP VIEW IF EXISTS change_orders_detail_view;
+DROP TABLE IF EXISTS change_order_items CASCADE;
+DROP TABLE IF EXISTS change_orders CASCADE;
+DROP VIEW IF EXISTS poa_detail_view;
+DROP TABLE IF EXISTS poa CASCADE;
+
+-- Create POA table
+CREATE TABLE poa (
+ id SERIAL PRIMARY KEY,
+ contract_no VARCHAR(100) NOT NULL,
+ original_contract_no VARCHAR(100) NOT NULL,
+ project_id INTEGER NOT NULL,
+ vendor_id INTEGER NOT NULL,
+ original_contract_name VARCHAR(255) NOT NULL,
+ original_status VARCHAR(50) NOT NULL,
+ delivery_terms TEXT,
+ delivery_date DATE,
+ delivery_location VARCHAR(255),
+ currency VARCHAR(10),
+ total_amount NUMERIC(12,2),
+ discount NUMERIC(12,2),
+ tax NUMERIC(12,2),
+ shipping_fee NUMERIC(12,2),
+ net_total NUMERIC(12,2),
+ change_reason TEXT,
+ approval_status VARCHAR(50) DEFAULT 'PENDING',
+ created_at TIMESTAMP NOT NULL DEFAULT NOW(),
+ updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
+ CONSTRAINT poa_original_contract_no_contracts_contract_no_fk
+ FOREIGN KEY (original_contract_no)
+ REFERENCES contracts(contract_no)
+ ON DELETE CASCADE,
+ CONSTRAINT poa_project_id_projects_id_fk
+ FOREIGN KEY (project_id)
+ REFERENCES projects(id)
+ ON DELETE CASCADE,
+ CONSTRAINT poa_vendor_id_vendors_id_fk
+ FOREIGN KEY (vendor_id)
+ REFERENCES vendors(id)
+ ON DELETE CASCADE
+);
+
+-- Create POA detail view
+CREATE VIEW poa_detail_view AS
+SELECT
+ -- POA primary information
+ poa.id,
+ poa.contract_no,
+ poa.change_reason,
+ poa.approval_status,
+
+ -- Original PO information
+ poa.original_contract_no,
+ poa.original_contract_name,
+ poa.original_status,
+ c.start_date as original_start_date,
+ c.end_date as original_end_date,
+
+ -- Project information
+ poa.project_id,
+ p.code as project_code,
+ p.name as project_name,
+
+ -- Vendor information
+ poa.vendor_id,
+ v.vendor_name,
+
+ -- Changed delivery details
+ poa.delivery_terms,
+ poa.delivery_date,
+ poa.delivery_location,
+
+ -- Changed financial information
+ poa.currency,
+ poa.total_amount,
+ poa.discount,
+ poa.tax,
+ poa.shipping_fee,
+ poa.net_total,
+
+ -- Timestamps
+ poa.created_at,
+ poa.updated_at,
+
+ -- Electronic signature status
+ EXISTS (
+ SELECT 1
+ FROM contract_envelopes
+ WHERE contract_envelopes.contract_id = poa.id
+ ) as has_signature
+FROM poa
+LEFT JOIN contracts c ON poa.original_contract_no = c.contract_no
+LEFT JOIN projects p ON poa.project_id = p.id
+LEFT JOIN vendors v ON poa.vendor_id = v.id; \ No newline at end of file