add cancel transaction

This commit is contained in:
2026-10-05 17:17:29 +07:00
parent a12a27c7b5
commit 39131f05b8
7 changed files with 137 additions and 9 deletions

View File

@@ -38,7 +38,7 @@ class SaatPortofolio(models.Model):
def action_recalculate(self):
"""Rekalkulasi semua posisi portofolio dari transaksi. Return dict ringkas."""
self.env['saat.portofolio'].search([]).unlink()
trans = self.env['saat.transaksi'].search([], order='tanggal, id')
trans = self.env['saat.transaksi'].search([('state', '=', 'done')], order='tanggal, id')
per_saham = {}
for t in trans:
a = per_saham.setdefault(t.saham_id.id, {

View File

@@ -30,6 +30,11 @@ class SaatTransaksi(models.Model):
# IDR
return self.env.ref('base.IDR', raise_if_not_found=False) or self.env.company.currency_id
state = fields.Selection([
('done', 'Selesai'),
('cancel', 'Dibatalkan'),
], string="Status", default='done', required=True, copy=False)
@api.depends('tanggal', 'tipe', 'saham_id')
def _compute_name(self):
for r in self:
@@ -50,6 +55,14 @@ class SaatTransaksi(models.Model):
if r.harga < 0:
raise models.ValidationError("Harga tidak boleh negatif.")
def action_cancel(self):
self.write({'state': 'cancel'})
return True
def action_set_to_done(self):
self.write({'state': 'done'})
return True
# --- auto-sync portofolio: setiap transaksi berubah, portofolio diperbarui ---
def _resync_portofolio(self):
"""Rekalkulasi portofolio dari seluruh transaksi (idempoten)."""