Logo Light

Cara Membangun Sistem dengan Harga Pembelian Terkunci

Sep 28, 2026

Bagikan

Kebanyakan masalah spreadsheet tidak menunjukkan dirinya secara langsung. Masalah tersebut mengendap diam-diam selama berbulan-bulan — nomor telepon pelanggan yang diketik sedikit berbeda pada tiga baris berbeda, atau harga produk yang benar saat pesanan dibuat tetapi sekarang salah di mana-mana karena seseorang memperbarui daftar harga utama. Tidak ada yang menyadarinya sampai laporan tidak menunjukkan angka yang sesuai.\n\nDalam tutorial ini, kita akan melihat bagaimana hal itu bisa menjadi kacau, membangun ulang skenario yang sama menggunakan penautan relasional yang tepat, lalu menambahkan satu lapisan lagi yang sering dilewatkan orang — mengunci harga pada saat pembelian terjadi, sehingga harga tersebut tetap aman dari perubahan harga di masa depan.\n\n> [!NOTE] Mengapa ini penting\n> Penautan (linking) mengatasi duplikasi. Namun, penautan saja memiliki kelemahan — tautan langsung berarti nilai langsung (live), sementara beberapa nilai, seperti harga yang benar-benar dibayar pelanggan, harus berhenti berubah tepat saat transaksi terjadi.\n\n---\n\n# Masalahnya Dahulu\n\nBeginilah tampilan yang sering muncul di spreadsheet — lembar Pesanan (Orders) dengan nama dan nomor telepon pelanggan yang diketik ulang di setiap baris, berdampingan dengan harga produk pada saat itu.\n\nSpreadsheet berantakan yang menunjukkan pengulangan nomor telepon pelanggan dan harga produk yang disalin ke setiap baris pesananSpreadsheet berantakan yang menunjukkan pengulangan nomor telepon pelanggan dan harga produk yang disalin ke setiap baris pesanan\n\nPerhatikan Priya Nair baik-baik — nomor teleponnya muncul tiga kali, satu di antaranya salah ketik. Dan lihat Mug Keramik — seharga $18 pada pesanan pertamanya, tetapi menjadi $22 pada pesanan berikutnya, karena seseorang memperbarui daftar harga utama di antaranya dan tidak ada cara bagi baris lama untuk mengetahui bahwa perubahan itu tidak seharusnya berlaku surut... padahal itu terjadi, karena siapa pun yang membuat lembar ini mengambil kembali harga dengan formula yang mengarah ke harga saat ini, bukan harga yang dibayar.\n\nInilah pola kesalahan yang akan kita hapus — secara tuntas.\n\n---\n\n# Kolom Tabel\n\nBerikut adalah struktur yang kita bangun ulang — tabel Pelanggan yang ditautkan ke tabel Pesanan melalui relasi One-to-Many, dengan setiap pesanan ditautkan ke Produk.\n\n- Pelanggan — Nama, Telepon\n- Pesanan — Pelanggan (tertaut), Produk (tertaut), Jumlah, Tanggal\n- Produk — Nama, Harga\n\n| Pelanggan | Pesanan | Produk |\n| --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |\n| 2.customer-order-product-table-columns.png2.customer-order-product-table-columns.png | Kolom tabel Pelanggan, Pesanan, dan Produk yang menunjukkan hubungan penautan di antaranyaKolom tabel Pelanggan, Pesanan, dan Produk yang menunjukkan hubungan penautan di antaranya | Kolom tabel Pelanggan, Pesanan, dan Produk yang menunjukkan hubungan penautan di antaranyaKolom tabel Pelanggan, Pesanan, dan Produk yang menunjukkan hubungan penautan di antaranya |\n\n---\n\n# Langkah 1: Tambahkan Pelanggan, Produk, dan Pesanan Anda\n\nTambahkan satu pelanggan, beberapa produk, dan beberapa pesanan yang menautkan semuanya.\n\nTabel Pelanggan dengan data Priya NairTabel Pelanggan dengan data Priya Nair\n\nTabel Produk yang menunjukkan Mug Keramik dengan harga 18 dolarTabel Produk yang menunjukkan Mug Keramik dengan harga 18 dolar\n\nTabel Pesanan yang menunjukkan pesanan tertaut ke Priya Nair dan Mug KeramikTabel Pesanan yang menunjukkan pesanan tertaut ke Priya Nair dan Mug Keramik\n\nUntuk panduan ini, asumsikan:\n\n* Mug Keramik — saat ini seharga $18\n* Priya Nair membuat pesanan untuk 2 unit pada 2 September 2026\n\nPerhatikan bahwa nomor telepon Priya kini berada di satu tempat saja — dalam data Pelanggannya — dan pesanannya cukup menautkan ke data tersebut, tanpa perlu mengetik ulang apa pun.\n\n---\n\n# Langkah 2: Ambil Harga dengan Lookup — dan Lihat Titik Butanya\n\nPada tabel Pesanan, tambahkan bidang Lookup yang mengambil Harga dari Produk yang tertaut.\n\nMenambahkan bidang Lookup pada tabel Pesanan yang mengambil Harga dari Produk yang tertautMenambahkan bidang Lookup pada tabel Pesanan yang mengambil Harga dari Produk yang tertaut\n\nPesanan Priya menunjukkan $18, secara tepat, yang diambil langsung dari harga Mug Keramik saat ini.\n\nData pesanan menunjukkan harga hasil lookup sebesar 18 dolarData pesanan menunjukkan harga hasil lookup sebesar 18 dolar\n\nSekarang asumsikan harga Mug Keramik naik menjadi $22 di bulan berikutnya.\n\nMemperbarui Harga Mug Keramik dari 18 menjadi 22 dolarMemperbarui Harga Mug Keramik dari 18 menjadi 22 dolar\n\nKembali dan periksa pesanan Priya di bulan September.\n\nHarga hasil Lookup pada pesanan Priya berubah dari $18 → $22, secara diam-diam, meskipun ia membayar $18.\n\nPesanan asli Priya kini secara salah menunjukkan 22 dolar setelah harga produk diperbaruiPesanan asli Priya kini secara salah menunjukkan 22 dolar setelah harga produk diperbarui\n\n> [!WARNING] Titik buta\n> Lookup melakukan persis apa yang seharusnya dilakukan — mencerminkan nilai saat ini dari data yang tertaut. Itu sempurna untuk nomor telepon pelanggan, yang memang harus selalu terkini. Tapi itu alat yang salah untuk harga yang dibayar, yang seharusnya dibekukan saat transaksi terjadi.\n\n---\n\n# Langkah 3: Perbaiki dengan Snapshot\n\nHapus bidang Lookup tersebut, dan sebagai gantinya tambahkan kolom Custom Logic sejak awal, karena bidang biasa atau Lookup tidak dapat diubah menjadi Custom Logic setelah dibuat.\n\nMenambahkan kolom Custom Logic baru untuk Harga yang DibayarMenambahkan kolom Custom Logic baru untuk Harga yang Dibayar\n\nDeskripsikan apa yang Anda inginkan — ambil Harga Produk yang tertaut saat pesanan ini dibuat, dan kunci secara permanen, sehingga tidak pernah berubah meskipun harga produk diperbarui nantinya.\n\nMendeskripsikan logika untuk mengunci harga produk saat pesanan dibuatMendeskripsikan logika untuk mengunci harga produk saat pesanan dibuat\n\nKonfirmasi layar klarifikasi, pastikan sistem memahami bahwa nilai ini harus membeku saat pembuatan, bukan tetap live seperti Lookup.\n\nLayar klarifikasi mengonfirmasi harga akan dikunci saat pembuatan data alih-alih tetap liveLayar klarifikasi mengonfirmasi harga akan dikunci saat pembuatan data alih-alih tetap live\n\nSimpan. Pesanan Priya yang sudah ada, yang dibuat saat harga mug masih $18, menghitung harga terkuncinya menggunakan nilai yang berlaku pada saat itu:\n\n* Pesanan Priya Nair → Harga Dibayar: $18\n\nData pesanan menunjukkan Harga Dibayar terkunci dengan benar pada 18 dolarData pesanan menunjukkan Harga Dibayar terkunci dengan benar pada 18 dolar\n\n> [!SUCCESS] Apa yang baru saja terjadi di balik layar\n> Ini adalah kalkulasi snapshot — dihitung sekali pada saat data dibuat, lalu disimpan secara permanen, kebal terhadap apa pun perubahan harga Produk yang tertaut setelahnya. Ini menggunakan mesin Custom Logic yang sama dengan Lookup dan Rollup, hanya saja secara sengaja diperintahkan untuk berhenti memantau setelah kalkulasi pertama.\n\n---\n\n# Langkah 4: Buktikan Bahwa Ini Bertahan Terhadap Perubahan Harga\n\nSekarang ubah lagi harga Mug Keramik, dari $22 menjadi $25.\n\nMemperbarui lagi Harga Mug Keramik dari 22 menjadi 25 dolarMemperbarui lagi Harga Mug Keramik dari 22 menjadi 25 dolar\n\nPeriksa pesanan Priya di bulan September sekali lagi.\n\nHarga Dibayar pada pesanan Priya tetap di angka $18, sama sekali tidak terpengaruh, sesering apa pun harga produk berubah setelahnya.\n\nPesanan Priya masih menunjukkan Harga Dibayar 18 dolar dengan benar meskipun ada dua kali perubahan harga setelahnyaPesanan Priya masih menunjukkan Harga Dibayar 18 dolar dengan benar meskipun ada dua kali perubahan harga setelahnya\n\nSekarang buat pesanan baru untuk Mug Keramik hari ini, dengan harga saat ini yaitu $25.\n\n* Pesanan baru → Harga Dibayar: $25, dihitung baru dengan harga hari ini\n\nPesanan baru menunjukkan Harga Dibayar terkunci dengan benar pada harga saat ini 25 dolarPesanan baru menunjukkan Harga Dibayar terkunci dengan benar pada harga saat ini 25 dolar\n\n> [!SUCCESS] Momen luar biasa\n> Dua pesanan untuk produk yang persis sama, dengan selisih beberapa bulan, kini menunjukkan dua harga berbeda secara akurat — karena itulah yang sebenarnya terjadi. Tidak ada yang perlu repot memproteksi data lama dari perubahan harga di masa depan; snapshot sudah melakukannya secara otomatis saat setiap pesanan dibuat.\n\n---\n\n# Rangkuman\n\nKita telah menyelesaikan dua masalah terpisah dalam tutorial ini:\n\n1. Duplikasi — tabel Pelanggan yang ditautkan ke Pesanan berarti nomor telepon berada di satu tempat saja, digunakan kembali di mana pun, alih-alih diketik ulang yang memicu salah ketik.\n2. Pergeseran retroaktif — Lookup biasa menarik nilai tautan secara live, yang benar untuk hal-hal seperti nomor telepon, tetapi salah untuk apa pun yang perlu mencerminkan momen tertentu dalam waktu.\n3. Solusinya — bidang snapshot Custom Logic mengunci harga produk tepat saat pesanan dibuat, kebal terhadap perubahan harga di masa depan.\n\n| Yang Anda miliki sebelumnya | Yang Anda miliki sekarang |\n| --- | --- |\n| Info pelanggan diketik ulang di setiap pesanan, rentan salah ketik | Satu data Pelanggan, ditautkan dan digunakan kembali di mana-mana |\n| Harga diambil secara live, berubah diam-diam pada pesanan lama | Harga dikunci secara permanen pada saat pembelian |\n| Tidak ada cara untuk mengetahui jumlah yang sebenarnya dibayar pelanggan | Setiap pesanan menjaga akurasi harga yang dibayar, selamanya |\n\nKombinasi yang sama ini — tautkan untuk menghindari duplikasi, snapshot untuk menjaga riwayat — berlaku jauh melampaui harga pembelian. Nilai tukar mata uang, diskon yang diterapkan, tarif pajak, atau nilai apa pun yang perlu mencerminkan "apa yang benar pada saat itu" alih-alih "apa yang benar sekarang" semuanya mengikuti pola yang sama persis ini.\n\n> [!SUCCESS] Coba sendiri\n> Konfigurasi ini tersedia sebagai templat siap pakai. Gandakan, pelajari langsung, dan jadikan milik Anda hanya dengan beberapa klik.

Coba Langsung

Artikel terkait

Jelajahi lebih banyak artikel produk dan praktik terbaik untuk tim yang membangun dengan Ambisius.

Masih Pakai Spreadsheet?
Wajib Coba Ini.

Ubah spreadsheet yang biasa digunakan menjadi sistem terstruktur yang dibangun untuk bisnis Anda

Coba Ambisius Gratis

Tanpa komitmen. Tanpa kartu kredit.

Logo Light

© 2026 Ambisius. Seluruh hak cipta dilindungi.

Cara Membangun Sistem dengan Harga Pembelian Terkunci