|
|
|
@ -68,16 +68,17 @@ class Eac:
|
|
|
|
cumulative_values.append(row["rc_total_cost"])
|
|
|
|
cumulative_values.append(row["rc_total_cost"])
|
|
|
|
# Menghitung NPV menggunakan rumus diskonto
|
|
|
|
# Menghitung NPV menggunakan rumus diskonto
|
|
|
|
# Rumus NPV: NPV = Σ [Ct / (1 + r)^t]
|
|
|
|
# Rumus NPV: NPV = Σ [Ct / (1 + r)^t]
|
|
|
|
# dimana Ct = cash flow pada periode t, r = inflation_rate, t = periode
|
|
|
|
# dimana Ct = cash flow pada periode t, r = disc_rate, t = periode
|
|
|
|
final_value = sum(
|
|
|
|
final_value = sum(
|
|
|
|
value / ((1 + inflation_rate) ** (i + 1))
|
|
|
|
value / ((1 + disc_rate) ** (i + 1))
|
|
|
|
for i, value in enumerate(cumulative_values)
|
|
|
|
for i, value in enumerate(cumulative_values)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
# Menghitung PMT biaya maintenance
|
|
|
|
# Menghitung PMT biaya maintenance
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# dimana PV = final_value, r = inflation_rate, n = row["seq"]
|
|
|
|
# dimana PV = final_value, r = disc_rate, n = row["seq"]
|
|
|
|
pmt_mnt_cost = -npf.pmt(inflation_rate, row["seq"], final_value)
|
|
|
|
pmt_mnt_cost = -npf.pmt(disc_rate, row["seq"], final_value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eac_disposal_cost = 0.07 * pmt_mnt_cost
|
|
|
|
# Menghitung PMT biaya akuisisi
|
|
|
|
# Menghitung PMT biaya akuisisi
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# dimana PV = rc_total_cost_0, r = disc_rate, n = row["seq"]
|
|
|
|
# dimana PV = rc_total_cost_0, r = disc_rate, n = row["seq"]
|
|
|
|
@ -102,7 +103,7 @@ class Eac:
|
|
|
|
# Update lcc_equipment_tr_data
|
|
|
|
# Update lcc_equipment_tr_data
|
|
|
|
update_query = """
|
|
|
|
update_query = """
|
|
|
|
UPDATE lcc_equipment_tr_data
|
|
|
|
UPDATE lcc_equipment_tr_data
|
|
|
|
SET eac_npv = %s, eac_annual_mnt_cost = %s, eac_annual_acq_cost = %s, eac_eac = %s
|
|
|
|
SET eac_npv = %s, eac_annual_mnt_cost = %s, eac_annual_acq_cost = %s, eac_disposal_cost = %s, eac_eac = %s
|
|
|
|
, updated_by = 'Sys', updated_at = NOW()
|
|
|
|
, updated_by = 'Sys', updated_at = NOW()
|
|
|
|
WHERE assetnum = %s AND tahun = %s;
|
|
|
|
WHERE assetnum = %s AND tahun = %s;
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
@ -112,6 +113,7 @@ class Eac:
|
|
|
|
float(final_value),
|
|
|
|
float(final_value),
|
|
|
|
float(pmt_mnt_cost),
|
|
|
|
float(pmt_mnt_cost),
|
|
|
|
float(pmt_aq_cost),
|
|
|
|
float(pmt_aq_cost),
|
|
|
|
|
|
|
|
float(eac_disposal_cost),
|
|
|
|
float(eac),
|
|
|
|
float(eac),
|
|
|
|
equipment_id,
|
|
|
|
equipment_id,
|
|
|
|
row["tahun"],
|
|
|
|
row["tahun"],
|
|
|
|
@ -158,7 +160,7 @@ class Eac:
|
|
|
|
|
|
|
|
|
|
|
|
# Total NPV pada titik proyeksi ini = NPV aktual terakhir + biaya proyeksi yang didiskontokan
|
|
|
|
# Total NPV pada titik proyeksi ini = NPV aktual terakhir + biaya proyeksi yang didiskontokan
|
|
|
|
final_value = float(last_npv) + float(discounted_proj)
|
|
|
|
final_value = float(last_npv) + float(discounted_proj)
|
|
|
|
|
|
|
|
|
|
|
|
# Gunakan seq penuh (jumlah periode dari akuisisi) untuk menghitung pembayaran tahunan pemeliharaan.
|
|
|
|
# Gunakan seq penuh (jumlah periode dari akuisisi) untuk menghitung pembayaran tahunan pemeliharaan.
|
|
|
|
# Menggunakan hanya selisih dari seq aktual terakhir
|
|
|
|
# Menggunakan hanya selisih dari seq aktual terakhir
|
|
|
|
# (sisa_periode) mengamortisasi seluruh nilai sekarang selama
|
|
|
|
# (sisa_periode) mengamortisasi seluruh nilai sekarang selama
|
|
|
|
@ -170,11 +172,12 @@ class Eac:
|
|
|
|
|
|
|
|
|
|
|
|
# Menghitung PMT
|
|
|
|
# Menghitung PMT
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# dimana PV = final_value, r = inflation_rate, n = row["seq"]
|
|
|
|
# dimana PV = final_value, r = disc_rate, n = row["seq"]
|
|
|
|
# periods adalah jumlah periode
|
|
|
|
# periods adalah jumlah periode
|
|
|
|
# final_value adalah PV pada titik proyeksi periods
|
|
|
|
# final_value adalah PV pada titik proyeksi periods
|
|
|
|
pmt_mnt_cost = -float(npf.pmt(inflation_rate, periods, final_value))
|
|
|
|
pmt_mnt_cost = -float(npf.pmt(disc_rate, periods, final_value))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eac_disposal_cost_proyeksi = 0.07 * pmt_mnt_cost
|
|
|
|
# menghitung PMT biaya akuisisi
|
|
|
|
# menghitung PMT biaya akuisisi
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# Rumus PMT: PMT = PV * [r(1 + r)^n] / [(1 + r)^n – 1]
|
|
|
|
# dimana PV = rc_total_cost_0, r = disc_rate, n = row["seq"]
|
|
|
|
# dimana PV = rc_total_cost_0, r = disc_rate, n = row["seq"]
|
|
|
|
@ -200,7 +203,7 @@ class Eac:
|
|
|
|
# Update lcc_equipment_tr_data
|
|
|
|
# Update lcc_equipment_tr_data
|
|
|
|
update_query = """
|
|
|
|
update_query = """
|
|
|
|
UPDATE lcc_equipment_tr_data
|
|
|
|
UPDATE lcc_equipment_tr_data
|
|
|
|
SET eac_npv = %s, eac_annual_mnt_cost = %s, eac_annual_acq_cost = %s, eac_eac = %s
|
|
|
|
SET eac_npv = %s, eac_annual_mnt_cost = %s, eac_annual_acq_cost = %s, eac_disposal_cost = %s,eac_eac = %s
|
|
|
|
, updated_by = 'Sys', updated_at = NOW()
|
|
|
|
, updated_by = 'Sys', updated_at = NOW()
|
|
|
|
WHERE assetnum = %s AND tahun = %s;
|
|
|
|
WHERE assetnum = %s AND tahun = %s;
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
@ -210,6 +213,7 @@ class Eac:
|
|
|
|
float(final_value),
|
|
|
|
float(final_value),
|
|
|
|
float(pmt_mnt_cost),
|
|
|
|
float(pmt_mnt_cost),
|
|
|
|
float(pmt_aq_cost),
|
|
|
|
float(pmt_aq_cost),
|
|
|
|
|
|
|
|
float(eac_disposal_cost_proyeksi),
|
|
|
|
float(eac),
|
|
|
|
float(eac),
|
|
|
|
equipment_id,
|
|
|
|
equipment_id,
|
|
|
|
row["tahun"],
|
|
|
|
row["tahun"],
|
|
|
|
|