From 1bbd9cc4c632f5a88c641092ca01bedd7b4d27b0 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Fri, 12 Dec 2025 15:23:15 +0700 Subject: [PATCH] fix run2 plant calculation --- .../__pycache__/service.cpython-311.pyc | Bin 14330 -> 14396 bytes src/masterdata/service.py | 4 ++-- src/modules/plant/run2.py | 22 ++++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/masterdata/__pycache__/service.cpython-311.pyc b/src/masterdata/__pycache__/service.cpython-311.pyc index 72d2c352f3fc6d943e56e14665e25d50ad4c8755..2024b4cb0ed1e54995a06289a27953132cc94ed6 100644 GIT binary patch delta 1049 zcmaiyOK1~87{_Ol>^4c0rc&Fa+F;UHyGg1^)V5k9h>F&O4^X5~C5G&x(KJbCQ!j36 zpHQ%f`uW6HFSZ3m)D^t=xOk9)7@>y}EcE8l2%bd2`I>mB7eAQa{O5b@%ziUJGq1BX zGj_X`a8o|*NFI`&*L-z(icM@F9m}TT>0B%kPbCIY@mw;KjwQ~-)29`t=)YVWOjH4% zJ0PCnr7Q_Y-BGH+6?X%b^cnYe6CH#*&9CX0e%#kb={US!A88-L)LM?BkW3}dDNN+r zFES_k#}Q)~6cd@gzD$~ppl1{UEpB>Q?{4`>={3Ef^%-?4Jm5Die~HPMbQPh&qSQri zfy@8M(9#9({0YNL1N8f{@OyJD#MV1N59nsulsBIyc?+BkdhP6lfsnj4U#*E#7FcDe zKWLq%ggoY>YZ`LeRHr%DtwsIFrR_wy_{@rC#)yR~c*RF=4wxH4c!~##-+=AsO@muvm+bE^O zaBS0?`g{BgDxS{cVG^I%eGa&=$qV~K0lE+RLrubU?m7lnLk-RwT=^Z$h>2!|2Qdt9 zL(LZlP-1h7VmzBw(sHHA+`~(jZ|pXv+(C>WMmdUAOi5&ztQM;)BGwnrvNagTTPr#S zvT{79$gxV84PvMf;X>R*>?Wj&s17bYa4PJzPIL8(5A_RN3O{UK@<|1grz8?*eO}sLBCCZC4%inNskM1agj&K2!BD{_Ets7!7dhNni1w6>hHCLU;rM|l z5rgnQnDrx@H`1hqFe+LIDjuk4;Vcd!-c2`2hxPZi_x3)pfSXQv#lI-UiRDBd9yRKyR(tq6HH4+ zqYi;Qe|Kj1g=^jP#i}MzSd*w^ww+MmD2>>?swA^qr73&FIu7a_3~>Y_^cB7$s%VhG zDZR0OSKtDD*0g~qC80Tu@f6)X-iB|`x|W8}6pJtkD60}eIxS?#O=g*3kyHRjRfwB; zsFQqdD4t4@k`!;*!gy8+xYn?RmE}>8127Se;WooK{pk+lIojrVDr@YZJDvnymLlF5 zRwPkDL#KUCZRU~;p@O!cqw7A~fOZiIUx87Rf<9;7*Ae0rdHo`IufV7YMtQx6XHMoU z`xb=qV9V?B>Q&{U0(=#8?TAfnC>Zma1p_^(HDf&;^xMseRfq#yoCjEi)%^_BS%WD{8t4oCG;$UNwDq18!K0q?0X+j$}+cu^eABpoAJ zE}r8ZR|Mkd>kShMj$`!~sz%O{j*B^-fI~b??$GxEGsOQKXzIv;SM?Uls(3cbXSlz& z31*Lpu(OhT4EGsoPesGQ#z48QmW~@Dd_o|cND9ou#$aW*%Mb;KCIBr3ow}!>{AQL- z`ZD;Wp`t<-Td{xF?OTqmSw6bEx82T`x9+U~>QBJ3wl z2KMS6d9B21ZdRQr2S5we8c4}%`V>ue`MR$Q(N_(+pK@vSJgi$wYR+6N^?aCZWZ(|vea-o F_y?H*@w)&3 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__":