- docker-compose.yml: odoo:17.0 (port 8069) + postgres:16 (internal, no publish) - Addon saat_invest: model saat.saham / saat.transaksi / saat.portofolio - P/L computed (realized FIFO, unrealized dari harga_sekarang) - action_recalculate() endpoint untuk Flutter - seed 5 saham IDX (BBRI, TLKM, BBCA, ASII, PTBA) - JSON-RPC end-to-end terverifikasi: create beli/jual -> recalculate -> portfolio (avg_cost 4525, realized 65000, unrealized 220000, nilai 3840000) - PLAN.md: rancangan disetujui Bozz - Login Odoo admin/admin (ganti password master di .env, jangan commit)
23 lines
766 B
Python
23 lines
766 B
Python
# -*- coding: utf-8 -*-
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class SaatSaham(models.Model):
|
|
"""Master daftar saham / emiten yang dicatat."""
|
|
_name = 'saat.saham'
|
|
_description = "Saham / Emiten"
|
|
_order = 'name'
|
|
|
|
name = fields.Char(string="Kode Saham (Ticker)", required=True)
|
|
perusahaan = fields.Char(string="Nama Perusahaan / Emiten")
|
|
bursa = fields.Char(string="Bursa", default="IDX")
|
|
sector = fields.Char(string="Sektor")
|
|
active = fields.Boolean(string="Aktif", default=True)
|
|
|
|
# o2m convenience menampilkan semua transaksi saham ini
|
|
transaksi_ids = fields.One2many('saat.transaksi', 'saham_id', string="Transaksi")
|
|
|
|
_sql_constraints = [
|
|
('saham_uniq', 'unique(name)', "Kode saham sudah terdaftar."),
|
|
]
|