add cancel transaction
This commit is contained in:
@@ -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, {
|
||||
|
||||
@@ -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)."""
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<field name="name">saat.transaksi.list</field>
|
||||
<field name="model">saat.transaksi</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Transaksi Jual/Beli" create="true">
|
||||
<tree string="Transaksi Jual/Beli" create="true" decoration-muted="state == 'cancel'">
|
||||
<field name="tanggal"/>
|
||||
<field name="tipe"/>
|
||||
<field name="saham_id"/>
|
||||
@@ -12,6 +12,7 @@
|
||||
<field name="harga"/>
|
||||
<field name="fee"/>
|
||||
<field name="total"/>
|
||||
<field name="state" widget="badge" decoration-success="state == 'done'" decoration-danger="state == 'cancel'"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -21,6 +22,11 @@
|
||||
<field name="model">saat.transaksi</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Transaksi">
|
||||
<header>
|
||||
<button name="action_cancel" string="Batalkan Transaksi" type="object" class="btn-danger" invisible="state == 'cancel'"/>
|
||||
<button name="action_set_to_done" string="Set Selesai" type="object" invisible="state != 'cancel'"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="done,cancel"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
|
||||
Reference in New Issue
Block a user