fix run2 plant calculation

main
MrWaradana 1 month ago
parent 4e541edbd3
commit 1bbd9cc4c6

@ -243,7 +243,7 @@ async def update(
await _trigger_masterdata_recalculation( await _trigger_masterdata_recalculation(
db_session=db_session, db_session=db_session,
run_plant_calculation=run_plant_calculation, run_plant_calculation_change=run_plant_calculation,
) )
return masterdata return masterdata
@ -302,7 +302,7 @@ async def bulk_update(
await db_session.commit() await db_session.commit()
await _trigger_masterdata_recalculation( 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 return updated_records

@ -5,6 +5,7 @@ import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from config import get_connection # harus mengembalikan koneksi psycopg2 from config import get_connection # harus mengembalikan koneksi psycopg2
from math import pow from math import pow
import numpy as np
import numpy_financial as npf import numpy_financial as npf
import math import math
import uuid import uuid
@ -14,6 +15,13 @@ def validate_number(n):
return n if n is not None else 0 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): def cumulative_npv(values, rate, initial_cf0=0.0):
""" """
Penggunaan: Penggunaan:
@ -65,7 +73,8 @@ def hitung_irr(cashflows: list):
def main(): def main():
conn = get_connection() connections = get_connection()
conn = connections[0] if isinstance(connections, tuple) else connections
if conn is None: if conn is None:
print("Koneksi ke database gagal.") print("Koneksi ke database gagal.")
sys.exit(1) sys.exit(1)
@ -474,7 +483,7 @@ def main():
calc4_free_cash_flow_on_equity_array.append(calc4_free_cash_flow_on_equity) 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) calc4_discounted_fcf_on_equity = hitung_pv(wacc_on_equity, seq, calc4_free_cash_flow_on_equity)
params.append(( row_params = (
net_capacity_factor, net_capacity_factor,
eaf, eaf,
production_bruto, production_bruto,
@ -542,7 +551,8 @@ def main():
chart_capex_acquisition_cost, chart_capex_acquisition_cost,
chart_capex_annualized, chart_capex_annualized,
seq # <-- penting: ini untuk WHERE seq # <-- penting: ini untuk WHERE
)) )
params.append(tuple(normalize_db_value(v) for v in row_params))
# 3. Bulk update dengan executemany # 3. Bulk update dengan executemany
if params: if params:
@ -595,13 +605,15 @@ def main():
conn.close() conn.close()
except Exception as e: except Exception as e:
conn.rollback() if conn:
conn.rollback()
print(f"Terjadi error, transaksi di-rollback. Error: {e}") print(f"Terjadi error, transaksi di-rollback. Error: {e}")
try: try:
cur.close() cur.close()
except Exception: except Exception:
pass pass
conn.close() if conn:
conn.close()
if __name__ == "__main__": if __name__ == "__main__":

Loading…
Cancel
Save