name TEXT NOT NULL,
cancel_reason INT REFERENCES acq.cancel_reason( id )
DEFERRABLE INITIALLY DEFERRED,
+ deleted BOOLEAN NOT NULL DEFAULT FALSE,
prepayment_required BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT valid_po_state CHECK (state IN ('new','pending','on-order','received','cancelled'))
);
--- /dev/null
+BEGIN;
+
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
+
+ALTER TABLE acq.purchase_order ADD COLUMN deleted BOOLEAN NOT NULL DEFAULT FALSE;
+ALTER TABLE acq.lineitem ADD COLUMN deleted BOOLEAN NOT NULL DEFAULT FALSE;
+ALTER TABLE acq.lineitem_detail ADD COLUMN deleted BOOLEAN NOT NULL DEFAULT FALSE;
+ALTER TABLE acq.po_item ADD COLUMN deleted BOOLEAN NOT NULL DEFAULT FALSE;
+ALTER TABLE acq.acq_purchase_order_history ADD COLUMN deleted BOOLEAN NOT NULL;
+
+CREATE RULE protect_purchase_order_delete AS ON DELETE TO acq.purchase_order DO INSTEAD UPDATE acq.purchase_order SET deleted = TRUE WHERE OLD.id = acq.purchase_order.id;
+CREATE RULE protect_lineitem_delete AS ON DELETE TO acq.lineitem DO INSTEAD UPDATE acq.lineitem SET deleted = TRUE WHERE OLD.id = acq.lineitem.id;
+CREATE RULE protect_lineitem_detail_delete AS ON DELETE TO acq.lineitem_detail DO INSTEAD UPDATE acq.lineitem_detail SET deleted = TRUE WHERE OLD.id = acq.lineitem_detail.id;
+CREATE RULE protect_po_item_delete AS ON DELETE TO acq.po_item DO INSTEAD UPDATE acq.po_item SET deleted = TRUE WHERE OLD.id = acq.po_item.id;
+
+COMMIT;