159 lines
3.7 KiB
Plaintext
159 lines
3.7 KiB
Plaintext
CREATE TABLE users (
|
|
id SERIAL PRIMARY KEY,
|
|
username VARCHAR(100) UNIQUE NOT NULL,
|
|
password_hash TEXT NOT NULL,
|
|
role VARCHAR(50) NOT NULL, -- contoh: 'admin', 'sales', 'warehouse'
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|
updated_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE master_product_category (
|
|
id SERIAL PRIMARY KEY,
|
|
code VARCHAR(50),
|
|
name VARCHAR(100),
|
|
description TEXT
|
|
);
|
|
|
|
CREATE TABLE master_collection (
|
|
id SERIAL PRIMARY KEY,
|
|
code VARCHAR(50),
|
|
name VARCHAR(100),
|
|
description TEXT
|
|
);
|
|
|
|
CREATE TABLE master_colour (
|
|
id SERIAL PRIMARY KEY,
|
|
code VARCHAR(50),
|
|
name VARCHAR(100),
|
|
hex VARCHAR(7),
|
|
);
|
|
|
|
CREATE TABLE master_size (
|
|
id SERIAL PRIMARY KEY,
|
|
code VARCHAR(50),
|
|
name VARCHAR(100),
|
|
description TEXT
|
|
);
|
|
|
|
CREATE TABLE master_warehouse (
|
|
id SERIAL PRIMARY KEY,
|
|
kode VARCHAR(50),
|
|
name VARCHAR(100),
|
|
type VARCHAR(50),
|
|
address TEXT,
|
|
stackholder VARCHAR(100),
|
|
number VARCHAR(50),
|
|
description TEXT
|
|
);
|
|
|
|
CREATE TABLE master_product (
|
|
id SERIAL PRIMARY KEY,
|
|
category_id INT REFERENCES master_product_category(id),
|
|
collection_id INT REFERENCES master_collection(id),
|
|
colour_id INT REFERENCES master_colour(id),
|
|
size_id INT REFERENCES master_size(id),
|
|
sku VARCHAR(50),
|
|
name VARCHAR(100),
|
|
description TEXT,
|
|
price float,
|
|
hpp float,
|
|
unit_of_measure VARCHAR(50),
|
|
is_raw_material BOOLEAN,
|
|
is_finished_good BOOLEAN
|
|
);
|
|
|
|
CREATE TABLE stock_movement (
|
|
id SERIAL PRIMARY KEY,
|
|
product_id INT REFERENCES master_product(id),
|
|
origin_warehouse_id INT REFERENCES master_warehouse(id),
|
|
stock_type VARCHAR(50),
|
|
destination_warehouse_id INT REFERENCES master_warehouse(id),
|
|
date DATE,
|
|
note TEXT
|
|
);
|
|
|
|
CREATE TABLE master_product_componen (
|
|
id SERIAL PRIMARY KEY,
|
|
product_id INT REFERENCES master_product(id),
|
|
componen_id INT REFERENCES master_product(id),
|
|
quantity NUMERIC,
|
|
unit VARCHAR(10),
|
|
note TEXT
|
|
);
|
|
|
|
CREATE TABLE production_order (
|
|
id SERIAL PRIMARY KEY,
|
|
product_id INT REFERENCES master_product(id),
|
|
production_id INT REFERENCES master_warehouse(id),
|
|
target_quantity NUMERIC,
|
|
status VARCHAR(50),
|
|
start_date DATE,
|
|
end_date DATE,
|
|
note TEXT
|
|
);
|
|
|
|
|
|
CREATE TABLE customer (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(100),
|
|
address TEXT,
|
|
phone VARCHAR(20),
|
|
email VARCHAR(100)
|
|
);
|
|
|
|
CREATE TABLE sales_order (
|
|
id SERIAL PRIMARY KEY,
|
|
customer_id INT REFERENCES customer(id),
|
|
order_date DATE,
|
|
status VARCHAR(50),
|
|
total_amount NUMERIC,
|
|
note TEXT,
|
|
payment_terms VARCHAR(100),
|
|
due_date DATE,
|
|
is_dp BOOLEAN,
|
|
dp_ammount NUMERIC,
|
|
dp_paid BOOLEAN
|
|
);
|
|
|
|
CREATE TABLE sales_order_item (
|
|
id SERIAL PRIMARY KEY,
|
|
sales_order_id INT REFERENCES sales_order(id),
|
|
product_id INT REFERENCES master_product(id),
|
|
quantity NUMERIC,
|
|
unit_price NUMERIC,
|
|
discount NUMERIC,
|
|
sub_total NUMERIC
|
|
);
|
|
|
|
CREATE TABLE invoice (
|
|
id SERIAL PRIMARY KEY,
|
|
sales_order_id INT REFERENCES sales_order(id),
|
|
invoice_number VARCHAR(100),
|
|
invoice_date DATE,
|
|
due_date DATE,
|
|
status VARCHAR(50),
|
|
total_amount NUMERIC,
|
|
is_dp_invoice BOOLEAN,
|
|
is_full_invoice BOOLEAN,
|
|
parent_invoice_id INT
|
|
);
|
|
|
|
CREATE TABLE invoice_line (
|
|
id SERIAL PRIMARY KEY,
|
|
invoice_id INT REFERENCES invoice(id),
|
|
product_id INT REFERENCES master_product(id),
|
|
quantity NUMERIC,
|
|
unit_price NUMERIC,
|
|
discount NUMERIC,
|
|
sub_total NUMERIC
|
|
);
|
|
|
|
CREATE TABLE payment (
|
|
id SERIAL PRIMARY KEY,
|
|
invoice_id INT REFERENCES invoice(id),
|
|
payment_date DATE,
|
|
amount NUMERIC,
|
|
payment_method VARCHAR(100),
|
|
reference_number VARCHAR(100),
|
|
notes TEXT
|
|
); |