Pluton.id
Catatan

Memundurkan Tanggal Pesanan Tanpa Meminjam Promosi Hari Ini

Pesanan yang ditanggalmundurkan harus memakai aturan promosi yang berlaku pada tanggal efektifnya, sambil mempertahankan jejak audit yang jelas untuk ketepatan akuntansi.


Masalahnya

Pesanan yang ditanggalmundurkan adalah pesanan yang dimasukkan hari ini tetapi merepresentasikan transaksi komersial yang terjadi lebih awal. Hal ini sering terjadi ketika kanal penjualan melaporkan terlambat, dokumen diperbaiki, atau pesanan offline baru dimasukkan kemudian.

Risikonya tidak selalu terlihat: jika sistem mengevaluasi promosi berdasarkan waktu pesanan dimasukkan, pesanan tersebut dapat menerima diskon hari ini, bukan diskon yang tersedia pada tanggal efektif pesanan. Hal ini menghasilkan harga yang salah, melemahkan jejak audit, dan dapat memengaruhi ketepatan akuntansi.

Pisahkan timestamp yang penting

Kami memperlakukan pesanan sebagai data yang memiliki setidaknya dua tanggal berbeda:

  • effective_at: waktu penjualan dianggap terjadi untuk keperluan bisnis, penetapan harga, pajak, dan akuntansi.
  • recorded_at: waktu sistem menerima atau membuat catatan tersebut.

Dalam beberapa alur kerja, kami juga menyimpan:

  • submitted_at: waktu pelanggan atau kanal eksternal mengirimkan pesanan.
  • fulfilled_at: waktu barang dikirim, diterima, atau diambil.
  • approved_at: waktu pengguna yang berwenang menyetujui pemunduran tanggal atau koreksi.

Aturan utamanya sederhana: kelayakan promosi harus dievaluasi berdasarkan tanggal efektif, bukan tanggal pencatatan.

Modelkan aturan promosi dengan validitas temporal

Aturan promosi memerlukan rentang masa berlaku yang eksplisit. Promosi tidak cukup hanya memiliki status aktif; promosi harus menyatakan kapan promosi tersebut berlaku.

promotion:
  id: SUMMER-10
  valid_from: 2025-06-01T00:00:00+07:00
  valid_until: 2025-06-30T23:59:59+07:00
  discount: 10 percent

Saat menentukan harga pesanan, kami mengevaluasi promosi terhadap effective_at dalam zona waktu bisnis yang terkait dengan pesanan. Pemeriksaan validitas temporal ini berlaku untuk seluruh ketentuan promosi, termasuk:

  • Tanggal mulai dan berakhir.
  • Kelayakan pelanggan.
  • Cakupan produk atau kategori.
  • Kuantitas minimum atau nilai belanja minimum.
  • Batas penggunaan.
  • Penerbitan dan penukaran kupon.
  • Kemungkinan digabungkan dengan promosi lain.

Promosi yang dimulai hari ini tidak boleh tersedia untuk pesanan yang efektif kemarin. Sebaliknya, promosi yang berakhir minggu lalu masih dapat berlaku untuk pesanan yang benar-benar dibuat dalam masa berlakunya tetapi tercatat terlambat.

Hindari memakai konfigurasi promosi saat ini

Ada dua hal yang saling terkait tetapi berbeda:

  1. Apakah promosi berlaku pada tanggal efektif pesanan.
  2. Seperti apa isi aturan promosi tersebut pada waktu itu.

Memeriksa rentang tanggal saja tidak selalu cukup. Administrator dapat mengubah diskon, cakupan, atau ambang promosi setelah pesanan dibuat. Jika sistem menimpa konfigurasi lama, penghitungan ulang pesanan historis dapat menghasilkan nilai yang berbeda.

Karena itu, kami membuat versi aturan promosi atau menyimpan snapshot harga pada pesanan. Snapshot pada tingkat pesanan yang berguna mencakup:

  • Pengidentifikasi promosi dan versi aturan.
  • Keputusan kelayakan.
  • Dasar diskon dan nilai diskon yang dihitung.
  • Mata uang, perlakuan pajak, dan metode pembulatan.
  • Timestamp efektif dan zona waktu yang dipakai untuk evaluasi.
  • Setiap override manual beserta alasannya.

Dengan demikian, pesanan lama tetap dapat dijelaskan walaupun aturan promosi saat ini telah berubah.

Gunakan urutan penetapan harga yang deterministik

Untuk pesanan yang ditanggalmundurkan, kami menerapkan urutan penetapan harga yang sama seperti pesanan yang dicatat tepat waktu, tetapi memakai timestamp efektif sebagai konteks evaluasi.

  1. Validasi bahwa tanggal efektif diizinkan untuk dimundurkan.
  2. Muat harga, pajak, kurs, dan aturan promosi yang berlaku pada tanggal tersebut.
  3. Evaluasi kelayakan promosi memakai aturan historis tersebut.
  4. Hitung diskon, pajak, dan total dengan pengaturan perhitungan historis.
  5. Simpan snapshot harga yang dihasilkan.
  6. Catat siapa yang memasukkan atau menyetujui pesanan bertanggal mundur dan alasannya.

Sistem tidak boleh diam-diam menerapkan promosi apa pun yang kebetulan aktif saat ini.

Tanggal yang dipakai untuk aturan komersial harus terlihat dalam catatan perhitungan, bukan disimpulkan dari waktu pengguna menekan Simpan.

Tentukan apa yang dapat ditanggalmundurkan

Memundurkan tanggal bukan hanya pilihan teknis. Ini juga merupakan keputusan bisnis dan pengendalian. Kami menetapkan kebijakan tentang kolom mana yang boleh dipindahkan ke masa lalu dan kolom mana yang harus tetap terkait dengan waktu pencatatan.

Pilihan kebijakan yang umum meliputi:

  • Mengizinkan tanggal efektif hanya dalam periode akuntansi tertentu.
  • Memerlukan persetujuan untuk tanggal sebelum periode yang telah ditutup atau direkonsiliasi.
  • Mencegah pemunduran tanggal setelah pelaporan pajak atau penutupan keuangan, kecuali digunakan proses penyesuaian formal.
  • Membatasi override promosi manual pada peran yang berwenang.
  • Memerlukan kode alasan dan penjelasan teks bebas untuk pengecualian.

Pengendalian ini mengurangi kemungkinan pemunduran tanggal dipakai untuk memperoleh promosi yang tidak memenuhi syarat atau mengubah pendapatan yang dilaporkan tanpa peninjauan.

Tangani periode tertutup dengan hati-hati

Ketepatan akuntansi mungkin memerlukan lebih dari sekadar penetapan harga historis. Jika tanggal efektif berada dalam periode akuntansi tertutup, perubahan pada periode asal mungkin tidak diizinkan walaupun penjualan dasarnya memang terjadi pada periode tersebut.

Dalam keadaan ini, kami menyimpan tanggal efektif historis untuk tujuan komersial dan audit, tetapi mengikuti kebijakan akuntansi untuk pengakuan. Bergantung pada prosesnya, hal itu dapat berarti membukukan penyesuaian pada periode terbuka saat ini, bukan membuka kembali periode tertutup.

Keputusan harga dan keputusan pembukuan akuntansi harus saling terkait, tetapi tidak harus direpresentasikan oleh timestamp yang sama.

Buat override bersifat eksplisit

Terkadang bisnis memang ingin menghormati promosi saat ini untuk pesanan lama, atau menghormati promosi yang sudah berakhir sebagai pemulihan layanan. Itu adalah keputusan komersial manual, bukan evaluasi promosi historis yang normal.

Kami merepresentasikannya secara terpisah dari kelayakan otomatis:

promotion_decision:
  automatic_eligibility: false
  automatic_reason: Promotion started after effective order date
  override_applied: true
  override_reason: Approved customer service exception
  approved_by: user reference
  approved_at: recorded timestamp

Pemisahan ini mencegah pengecualian manual dianggap sebagai aturan promosi yang valid. Pemisahan ini juga memungkinkan pelaporan membedakan diskon standar dari penyesuaian diskresioner.

Uji kasus batas

Logika promosi sering gagal pada batas, bukan pada jalur normal. Kami menguji kasus seperti:

  • Pesanan yang dimasukkan hari ini dengan tanggal efektif sebelum promosi hari ini dimulai.
  • Pesanan yang dimasukkan setelah promosi berakhir dengan tanggal efektif di dalam masa promosi.
  • Promosi yang diubah setelah tanggal efektif pesanan.
  • Promosi yang berakhir tepat tengah malam dalam zona waktu bisnis yang relevan.
  • Peralihan waktu musim panas, bila berlaku.
  • Pesanan bertanggal mundur dalam periode akuntansi tertutup.
  • Override promosi yang disetujui secara manual.
  • Kupon dengan batas penggunaan historis yang berubah sejak tanggal efektifnya.

Pengujian ini harus memverifikasi total akhir sekaligus penjelasan tersimpan mengenai bagaimana total tersebut dihitung.

Rekomendasi operasional

Kami membuat tanggal efektif terlihat jelas dalam alur entri pesanan ketika pengguna membuat pesanan bertanggal mundur. Sebelum konfirmasi, pengguna seharusnya dapat melihat tanggal evaluasi promosi, diskon yang diterapkan, dan alasan promosi saat ini dikecualikan.

Untuk sebagian besar sistem, rancangan yang tahan lama adalah:

  • Gunakan timestamp efektif pesanan sebagai konteks temporal untuk aturan promosi.
  • Buat versi definisi promosi atau simpan snapshot harga yang tidak dapat diubah.
  • Pertahankan timestamp pencatatan agar tidak dapat diubah untuk tujuan audit.
  • Wajibkan persetujuan dan alasan eksplisit untuk pengecualian.
  • Terapkan pengendalian periode akuntansi secara terpisah dari kelayakan promosi.

Pendekatan ini memungkinkan kami mencatat pesanan terlambat secara akurat tanpa membiarkannya meminjam promosi hari ini.