## Changelog

### ### [1.0.1] - 2025-01-23

#### Ditambahkan

*   Perhitungan Harga Pokok Penjualan (HPP) dengan logika prioritas tanggal `modified` pada tabel `mst_parts`. Jika tanggal `modified` pada `mst_parts` lebih baru dari tanggal `created` pada `purchase_details`, maka harga beli dari `mst_parts` akan digunakan dalam perhitungan HPP.
*   Perhitungan harga per qty (`harga_per_qty`) dengan memperhitungkan diskon yang diambil dari kolom `diskon` pada tabel `workshops_dtlparts`. Perhitungan dilakukan langsung di query SQL untuk efisiensi.
*   Penanganan lengkap untuk berbagai skenario ketersediaan data:
    *   Data pembelian (`purchase_details`) dan data harga beli (`mst_parts`) tersedia: Membandingkan tanggal dan menggunakan harga yang sesuai.
    *   Hanya data harga beli (`mst_parts`) tersedia: Menggunakan harga beli.
    *   Hanya data pembelian (`purchase_details`) tersedia: Menggunakan harga dari pembelian.
    *   Tidak ada data di kedua tabel: Mencatat error ke log dan menetapkan `total_hpp` ke 0.
*   Penggunaan objek `DateTime` untuk perbandingan tanggal yang akurat dan menghindari masalah format tanggal.
*   Penggunaan `\Cake\Log\Log::error()` untuk pencatatan error yang lebih sesuai dengan framework CakePHP.

#### Diubah

*   Logika pengambilan data persediaan dan perhitungan HPP sepenuhnya dirombak untuk mendukung prioritas tanggal `modified` dan penanganan kasus-kasus khusus.
*   Perhitungan `total_sales` telah diperbaiki untuk memasukkan perhitungan diskon dengan rumus `(c.price * sub.total_qty * (1 - (c.diskon/100)))`.
*   Query SQL untuk mengambil data dari `mst_parts` sekarang menggunakan kolom `modified` dan bukan `created`.
*   Penanganan kasus `qty = 0` telah diimplementasikan secara implisit melalui query SQL, dengan menangani kasus `NULL` yang dihasilkan oleh pembagian dengan nol.

#### Diperbaiki

*   Potensi kesalahan perbandingan tanggal akibat perbedaan format tanggal telah diatasi dengan penggunaan objek `DateTime`.
*   Masalah *division by zero* saat menghitung `harga_per_qty` jika `qty` bernilai 0 telah diatasi.
*   Penanganan error telah ditingkatkan dengan pencatatan error yang lebih informatif ke log menggunakan `\Cake\Log\Log::error()`.
