CREATE TABLE IF NOT EXISTS public.mst_standar_harga (
	id_unik_standar_harga uuid DEFAULT public.uuid_generate_v7() NOT NULL,
    id_standar_harga_lama integer DEFAULT 0 NOT NULL,
    tahun integer DEFAULT 0 NOT NULL,
    id_daerah integer DEFAULT 0 NOT NULL,
    tipe_standar_harga integer DEFAULT 0 NOT NULL,
    locked boolean DEFAULT false NOT NULL,
    kode_sub_rincian_objek character varying(60) DEFAULT ''::character varying NOT NULL,
    kode_standar_harga character varying(50) DEFAULT ''::character varying NOT NULL,
    nama_standar_harga text DEFAULT ''::text NOT NULL,
    spesifikasi_umum text DEFAULT ''::text NOT NULL,
    deskripsi_standar_harga text DEFAULT ''::text NOT NULL,
    satuan text DEFAULT ''::text NOT NULL,
    harga_satuan numeric(17,2) DEFAULT 0 NOT NULL,
    harga_satuan_zonasi jsonb DEFAULT '[]'::jsonb NOT NULL,
    nilai_pdn double precision DEFAULT 0 NOT NULL,
    id_rekening_lra jsonb DEFAULT '[]'::jsonb NOT NULL,
    created_at timestamp(6) without time zone DEFAULT now() NOT NULL,
    created_by integer DEFAULT 0 NOT NULL,
    updated_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    updated_by integer DEFAULT 0 NOT NULL,
    deleted_at timestamp(6) without time zone DEFAULT '0001-01-01 00:00:00'::timestamp without time zone NOT NULL,
    deleted_by integer DEFAULT 0 NOT NULL
);

ALTER TABLE public.mst_standar_harga ADD CONSTRAINT mst_standar_harga_pkey PRIMARY KEY (id_unik_standar_harga, tahun, id_daerah);
ALTER TABLE public.mst_standar_harga ADD CONSTRAINT mst_standar_harga_unique_key UNIQUE (tahun, id_daerah, kode_sub_rincian_objek, kode_standar_harga);

COMMENT ON TABLE public.mst_standar_harga IS 'Tabel master yang menyimpan data Standar Harga Barang/Jasa dan digunakan sebagai pedoman belanja barang/jasa dalam penyusunan anggaran.';
COMMENT ON COLUMN public.mst_standar_harga.id_unik_standar_harga IS 'ID unik UUID sebagai ID primary key.';
COMMENT ON COLUMN public.mst_standar_harga.id_standar_harga_lama IS 'Primary key tabel lama.';
COMMENT ON COLUMN public.mst_standar_harga.tahun IS 'Tahun standar harga digunakan.';
COMMENT ON COLUMN public.mst_standar_harga.id_daerah IS 'Daerah provinsi/kab/kota pemilik data standar harga.';
COMMENT ON COLUMN public.mst_standar_harga.tipe_standar_harga IS 'klasifikasi standar harga yang dibagi menjadi 1=SSH, 2=HSPK, 3=ASB, 4=SBU.';
COMMENT ON COLUMN public.mst_standar_harga.locked IS 'Status data standar harga dapat dipilih atau tidak (true/false).';
COMMENT ON COLUMN public.mst_standar_harga.kode_sub_rincian_objek IS 'Kode sub rincian objek berdasarkan klasifikasi kelompok standar harga.';
COMMENT ON COLUMN public.mst_standar_harga.kode_standar_harga IS 'Kode unik untuk standar harga tertentu.';
COMMENT ON COLUMN public.mst_standar_harga.nama_standar_harga IS 'Nama barang/jasa sesuai standar harga.';
COMMENT ON COLUMN public.mst_standar_harga.spesifikasi_umum IS 'Spesifikasi umum barang/jasa.';
COMMENT ON COLUMN public.mst_standar_harga.deskripsi_standar_harga IS 'Deskripsi tambahan mengenai standar harga.';
COMMENT ON COLUMN public.mst_standar_harga.satuan IS 'Satuan ukuran barang/jasa (misal: unit, meter, liter).';
COMMENT ON COLUMN public.mst_standar_harga.harga_satuan IS 'Nilai harga satuan standar.';
COMMENT ON COLUMN public.mst_standar_harga.harga_satuan_zonasi IS 'Harga satuan yang dibedakan berdasarkan zona wilayah (format JSON).';
COMMENT ON COLUMN public.mst_standar_harga.nilai_pdn IS 'Persentase kandungan produk dalam negeri (PDN).';
COMMENT ON COLUMN public.mst_standar_harga.id_rekening_lra IS 'Daftar rekening belanja yang dikaitkan dengan item standar harga format JSON.';
COMMENT ON COLUMN public.mst_standar_harga.created_at IS 'Tanggal dan waktu data dibuat.';
COMMENT ON COLUMN public.mst_standar_harga.created_by IS 'ID pengguna yang membuat data.';
COMMENT ON COLUMN public.mst_standar_harga.updated_at IS 'Tanggal dan waktu terakhir data diperbarui.';
COMMENT ON COLUMN public.mst_standar_harga.updated_by IS 'ID pengguna yang memperbarui data.';
COMMENT ON COLUMN public.mst_standar_harga.deleted_at IS 'Tanggal dan waktu data dihapus (soft delete).';
COMMENT ON COLUMN public.mst_standar_harga.deleted_by IS 'ID pengguna yang menghapus data.';

CREATE INDEX mst_standar_harga_id_unik_standar_harga_idx ON public.mst_standar_harga USING btree (id_unik_standar_harga);
CREATE INDEX mst_standar_harga_tahun_idx ON public.mst_standar_harga USING btree (tahun);
CREATE INDEX mst_standar_harga_id_daerah_idx ON public.mst_standar_harga USING btree (id_daerah);
CREATE INDEX mst_standar_harga_kode_sub_rincian_objek_idx ON public.mst_standar_harga USING btree (kode_sub_rincian_objek);
CREATE INDEX mst_standar_harga_kode_standar_harga_idx ON public.mst_standar_harga USING btree (kode_standar_harga);

