From d2861e1a35c2ce5594e0176d3ed81259a4797b43 Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Tue, 23 Dec 2025 14:53:04 +0700 Subject: [PATCH] refactor: Streamline actual data queries by removing labor details, add optional asset filtering, and update EAC disposal cost calculation. --- src/modules/equipment/Eac.py | 3 +- .../equipment/__pycache__/Eac.cpython-311.pyc | Bin 15261 -> 15388 bytes .../insert_actual_data.cpython-311.pyc | Bin 51652 -> 51445 bytes .../equipment/__pycache__/run.cpython-311.pyc | Bin 2686 -> 2998 bytes src/modules/equipment/insert_actual_data.py | 36 ++++++++---------- src/modules/equipment/run.py | 10 ++--- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/modules/equipment/Eac.py b/src/modules/equipment/Eac.py index 867a82c..e91a793 100644 --- a/src/modules/equipment/Eac.py +++ b/src/modules/equipment/Eac.py @@ -186,7 +186,8 @@ class Eac: # final_value adalah PV pada titik proyeksi periods pmt_mnt_cost = -float(npf.pmt(disc_rate, periods, final_value)) - eac_disposal_cost_proyeksi = 0.07 * pmt_mnt_cost + eac_disposal_cost_proyeksi = -npf.pmt(disc_rate, row["seq"], 0, 0.05 * rc_total_cost_0) if row["seq"] > 0 else 0.0 + # menghitung PMT biaya akuisisi # Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1] # dimana PV = rc_total_cost_0, r = disc_rate, n = row["seq"] diff --git a/src/modules/equipment/__pycache__/Eac.cpython-311.pyc b/src/modules/equipment/__pycache__/Eac.cpython-311.pyc index 880816ff5640b88937036df29544b7f292e4c1e0..08b9fa69e2549a7194b95f8f4fcb114f24fa2fa8 100644 GIT binary patch delta 372 zcmbPRKBt0jIWI340}xnxd1V?qZRA_W#Kgh1c^^|fE90fjb{vx!Cof@*oqUt?8Kd~* z16*eruT1Xap35jPS%=4yOVY2138?j#w9Dj=M#7sX@%-grN>rWfC^T=gg_t)p&skOm zh95tEG%$Q%O5fZsY0b>;!^kW2k-=y3MVadk*?AZ8ORi*>UZ|+NlwEltyK-&vn)D5s z2ZRrV9+5f`cp)IgC1XE?~} zC<&wvDFo;NsmuIaA&ktIC1rzcm@nI~hA?jSlxJpTl$`9Va)(iRvX<%_M%l^YYCjki zCJU(FV^rGwUi}~w(5vpQkV3@4K z^_*3rR;-3)a)G}1WPR>UtgC967w}JBs30=Az(`;+7f&gpfYc>bu3&NIOZu|GLd=(i zScAnkpO9x}Wt5nFM&%Bp)Z~?_Zy04JPgDEBC_lMh{T`#@<~)sqOpJdv8)$!E5>97k zHTb}QM24|XcGMG|?5oGV*;h}5ozY=)l4${}MG*_5KjQ}m+|);i+!s_O8JoGRg%|;& Cn`s&V diff --git a/src/modules/equipment/__pycache__/insert_actual_data.cpython-311.pyc b/src/modules/equipment/__pycache__/insert_actual_data.cpython-311.pyc index 0c990aba1d5407c1f652593c04c6b94c31499878..1dee995c90eacecc3a27a82b9c30c6cde72989a0 100644 GIT binary patch delta 4420 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 diff --git a/src/modules/equipment/__pycache__/run.cpython-311.pyc b/src/modules/equipment/__pycache__/run.cpython-311.pyc index e53b8ce9b711f692d89b1c392157b2cc0d6db792..ef5c1fd1b2fdb1f17012b63118f815c1bac17ab2 100644 GIT binary patch delta 948 zcmah`O=uHA6rP`*>`%J+p{Y$=q=^;_QcWvCrI15w7fTO<2!fY}lHI^++@{kBtzlQ| zQ53OE!9&PF&?@LH(0i-BNAMH~-bB1uZ=Q-16A5XHzMYwUZ{FMQ``+7w*!HmgM%OhU z?0aV3xw4`EKyhi~;8q3#_wpIQq;{%fqkx|CA(Q{c09cTzy~u++g2#0D09xQCuz)W- z{uQ3(b5I{f9Qx9B6{f8;L9SbwX?or1-(EO zSOcCcPTf7Z> z+j8ayJS1TCX2Z)4wM@!Kgp$o6`Z&NP|uL{By>ywiHtfU)Cnnz@#UJYc>oGFyQ zh>e5y+H?|ck4zhQ#~{Mp86BGmf!&aH72)0Z$V?XRW{L1W1g0;|X2Hj-W=`TgdBhyY Rd*j5Mp2oN?$c*?G zLJND4T=n4I1WzIa{S^c1)teqYh}cng$LPUox~YCuuj*ADW$!!8ebY2R+K;v=cdTY! z<1JFVpI-=3fEcQRpW(C_elmvl5Ws=FPlkZOPw+;1fvf*8fFk&VA#ULjuE+5Jiy7Q+ z;w{`{GYF+8j!|DaB;1VCmNjvNhw_;i2?+lX|9FSE!(FMD@)VvG1EkBLb@E!MmueBD zzKOp-g!b+b7v%eRV&zehU*fq~Yd~3I69cq%4b?X}a*a$E3rcoa-;{osU`C+s0!s#( zeA|KqGj|o%Ue`k1`zWjG&)s@>PV_0=!&(#j&uryT$=!?h;@0t6oGazU%QwpZLAxRJgnDMP!5f!dB-xGtYSvT=bod>MD