BE-MiniERP/database.txt
2025-06-27 11:17:20 +07:00

156 lines
3.6 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 product_categories (
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),
type VARCHAR(20),
);
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
);
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,
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,
note TEXT,
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,
sub_total NUMERIC
);
CREATE TABLE payment (
id SERIAL PRIMARY KEY,
invoice_id INT REFERENCES invoice(id),
payment_at TIMESTAMP,
amount NUMERIC,
payment_method VARCHAR(100),
file_path VARCHAR(250),
notes TEXT
);