Create orders_sales__sales_order table (header)
CREATE TABLE orders_sales__sales_order (
id uuid PRIMARY KEY,
code varchar(64) NOT NULL,
partner_code varchar(64) NOT NULL,
status varchar(16) NOT NULL,
order_date date NOT NULL,
currency_code varchar(3) NOT NULL,
total_amount numeric(18,4) NOT NULL DEFAULT 0,
ext jsonb NOT NULL DEFAULT '{}'::jsonb,
created_at timestamptz NOT NULL,
created_by varchar(128) NOT NULL,
updated_at timestamptz NOT NULL,
updated_by varchar(128) NOT NULL,
version bigint NOT NULL DEFAULT 0
);
CREATE UNIQUE INDEX orders_sales__sales_order_code_uk
ON orders_sales__sales_order (code);
CREATE INDEX orders_sales__sales_order_partner_idx
ON orders_sales__sales_order (partner_code);
CREATE INDEX orders_sales__sales_order_status_idx
ON orders_sales__sales_order (status);
CREATE INDEX orders_sales__sales_order_date_idx
ON orders_sales__sales_order (order_date);
CREATE INDEX orders_sales__sales_order_ext_gin
ON orders_sales__sales_order USING GIN (ext jsonb_path_ops);
DROP TABLE orders_sales__sales_order;
Create orders_sales__sales_order_line table (FK to header, no FK to catalog__item)
CREATE TABLE orders_sales__sales_order_line (
id uuid PRIMARY KEY,
sales_order_id uuid NOT NULL REFERENCES orders_sales__sales_order(id) ON DELETE CASCADE,
line_no integer NOT NULL,
item_code varchar(64) NOT NULL,
quantity numeric(18,4) NOT NULL,
unit_price numeric(18,4) NOT NULL,
currency_code varchar(3) NOT NULL,
created_at timestamptz NOT NULL,
created_by varchar(128) NOT NULL,
updated_at timestamptz NOT NULL,
updated_by varchar(128) NOT NULL,
version bigint NOT NULL DEFAULT 0,
CONSTRAINT orders_sales__sales_order_line_qty_pos CHECK (quantity > 0),
CONSTRAINT orders_sales__sales_order_line_price_nonneg CHECK (unit_price >= 0)
);
CREATE UNIQUE INDEX orders_sales__sales_order_line_order_lineno_uk
ON orders_sales__sales_order_line (sales_order_id, line_no);
CREATE INDEX orders_sales__sales_order_line_item_idx
ON orders_sales__sales_order_line (item_code);
DROP TABLE orders_sales__sales_order_line;