Files
saat-app/addons/saat_invest/views/portofolio_views.xml
Alex Ardhian d657a0a8f0 Aplikasi catat jual-beli saham: Odoo 17 + Postgres 16 + addon saat_invest
- 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)
2026-09-02 11:23:39 +07:00

63 lines
2.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_saat_portofolio_list" model="ir.ui.view">
<field name="name">saat.portofolio.list</field>
<field name="model">saat.portofolio</field>
<field name="arch" type="xml">
<tree string="Portofolio Saham" create="false" delete="false">
<field name="saham_id"/>
<field name="sisa_lembar"/>
<field name="avg_cost"/>
<field name="harga_sekarang"/>
<field name="nilai_sekarang"/>
<field name="realized_pl" widget="monetary"/>
<field name="unrealized_pl" widget="monetary"/>
</tree>
</field>
</record>
<record id="view_saat_portofolio_form" model="ir.ui.view">
<field name="name">saat.portofolio.form</field>
<field name="model">saat.portofolio</field>
<field name="arch" type="xml">
<form string="Portofolio">
<sheet>
<group>
<field name="saham_id" readonly="1"/>
<field name="harga_sekarang"/>
</group>
<group string="Posisi">
<group>
<field name="total_beli_lembar"/>
<field name="total_beli_biaya"/>
<field name="total_jual_lembar"/>
<field name="total_jual_hasil"/>
</group>
<group>
<field name="sisa_lembar"/>
<field name="avg_cost"/>
<field name="nilai_sekarang"/>
<field name="realized_pl"/>
<field name="unrealized_pl"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_saat_portofolio" model="ir.actions.act_window">
<field name="name">Portofolio</field>
<field name="res_model">saat.portofolio</field>
<field name="view_mode">list,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Klik <b>Rekalkulasi</b> (menu Form) untuk memperbarui posisi dari transaksi.
</p>
</field>
</record>
<menuitem id="menu_saat_portofolio" name="Portofolio" parent="menu_saat_root"
action="action_saat_portofolio" sequence="30"/>
</odoo>