diff --git a/src/masterdata/__pycache__/service.cpython-311.pyc b/src/masterdata/__pycache__/service.cpython-311.pyc index 72d2c35..2024b4c 100644 Binary files a/src/masterdata/__pycache__/service.cpython-311.pyc and b/src/masterdata/__pycache__/service.cpython-311.pyc differ diff --git a/src/masterdata/service.py b/src/masterdata/service.py index 5271e22..f91ce29 100644 --- a/src/masterdata/service.py +++ b/src/masterdata/service.py @@ -243,7 +243,7 @@ async def update( await _trigger_masterdata_recalculation( db_session=db_session, - run_plant_calculation=run_plant_calculation, + run_plant_calculation_change=run_plant_calculation, ) return masterdata @@ -302,7 +302,7 @@ async def bulk_update( await db_session.commit() await _trigger_masterdata_recalculation( - db_session=db_session, run_plant_calculation=run_plant_calculation_change, + db_session=db_session, run_plant_calculation_change=run_plant_calculation_change, ) return updated_records diff --git a/src/modules/plant/run2.py b/src/modules/plant/run2.py index 9d00ff7..7208a19 100644 --- a/src/modules/plant/run2.py +++ b/src/modules/plant/run2.py @@ -5,6 +5,7 @@ import sys sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from config import get_connection # harus mengembalikan koneksi psycopg2 from math import pow +import numpy as np import numpy_financial as npf import math import uuid @@ -14,6 +15,13 @@ def validate_number(n): return n if n is not None else 0 +def normalize_db_value(value): + """Convert numpy scalars to native Python types for psycopg2.""" + if isinstance(value, np.generic): + return value.item() + return value + + def cumulative_npv(values, rate, initial_cf0=0.0): """ Penggunaan: @@ -65,7 +73,8 @@ def hitung_irr(cashflows: list): def main(): - conn = get_connection() + connections = get_connection() + conn = connections[0] if isinstance(connections, tuple) else connections if conn is None: print("Koneksi ke database gagal.") sys.exit(1) @@ -474,7 +483,7 @@ def main(): calc4_free_cash_flow_on_equity_array.append(calc4_free_cash_flow_on_equity) calc4_discounted_fcf_on_equity = hitung_pv(wacc_on_equity, seq, calc4_free_cash_flow_on_equity) - params.append(( + row_params = ( net_capacity_factor, eaf, production_bruto, @@ -542,7 +551,8 @@ def main(): chart_capex_acquisition_cost, chart_capex_annualized, seq # <-- penting: ini untuk WHERE - )) + ) + params.append(tuple(normalize_db_value(v) for v in row_params)) # 3. Bulk update dengan executemany if params: @@ -595,13 +605,15 @@ def main(): conn.close() except Exception as e: - conn.rollback() + if conn: + conn.rollback() print(f"Terjadi error, transaksi di-rollback. Error: {e}") try: cur.close() except Exception: pass - conn.close() + if conn: + conn.close() if __name__ == "__main__":