diff --git a/src/modules/plant/run_plant_simulation.py b/src/modules/plant/run_plant_simulation.py index aa51baf..a463795 100644 --- a/src/modules/plant/run_plant_simulation.py +++ b/src/modules/plant/run_plant_simulation.py @@ -213,25 +213,31 @@ def main(): v = param_map.get(name, default) return float(v) if v is not None else float(default) - # 0-1 Generate New data Projection (is_actual=0) if not exist - # Hapus data projection lama (is_actual = 0) - cur.execute(f""" - DELETE - FROM {table_tr_data} - WHERE is_actual = 0 {get_filter_and()} - """) - - # Hitung kebutuhan jumlah baris projection baru agar total (actual + projection) - # sama dengan parameter umur_teknis + # 0-1 Sync Projection data (is_actual=0) + # Check Total Rows cur.execute(f""" SELECT COALESCE(COUNT(*), 0) FROM {table_tr_data} - WHERE is_actual = 1 {get_filter_and()} + {get_filter_where()} """) - count_actual = cur.fetchone()[0] if cur.rowcount != -1 else 0 + count_total = cur.fetchone()[0] if cur.rowcount != -1 else 0 umur_teknis = int(get_param("umur_teknis")) - proj_needed = max(0, umur_teknis - int(count_actual)) + proj_needed = umur_teknis - int(count_total) + + if proj_needed < 0: + excess = abs(proj_needed) + delete_sql = f""" + DELETE FROM {table_tr_data} + WHERE id IN ( + SELECT id FROM {table_tr_data} + WHERE is_actual = 0 {get_filter_and()} + ORDER BY seq DESC + LIMIT {excess} + ) + """ + cur.execute(delete_sql) + proj_needed = 0 # Ambil seq dan tahun terakhir sebagai titik awal penomoran berikutnya cur.execute(f"SELECT COALESCE(MAX(seq), 0) FROM {table_tr_data} {get_filter_where()}") diff --git a/src/plant_transaction_data/__pycache__/model.cpython-311.pyc b/src/plant_transaction_data/__pycache__/model.cpython-311.pyc index 1eea0c8..e9468f9 100644 Binary files a/src/plant_transaction_data/__pycache__/model.cpython-311.pyc and b/src/plant_transaction_data/__pycache__/model.cpython-311.pyc differ diff --git a/src/plant_transaction_data/model.py b/src/plant_transaction_data/model.py index 06fc54b..8cfe166 100644 --- a/src/plant_transaction_data/model.py +++ b/src/plant_transaction_data/model.py @@ -76,20 +76,3 @@ class PlantTransactionData(Base, DefaultMixin, IdentityMixin): chart_capex_biaya_investasi_tambahan = Column(Float, nullable=True) chart_capex_acquisition_cost = Column(Float, nullable=True) chart_capex_annualized = Column(Float, nullable=True) - # fs_chart_total_revenue = Column(Float, nullable=True) - # fs_chart_revenue_a = Column(Float, nullable=True) - # fs_chart_revenue_b = Column(Float, nullable=True) - # fs_chart_revenue_c = Column(Float, nullable=True) - # fs_chart_revenue_d = Column(Float, nullable=True) - # fs_chart_revenue_annualized = Column(Float, nullable=True) - # fs_chart_fuel_cost_component_c = Column(Float, nullable=True) - # fs_chart_fuel_cost = Column(Float, nullable=True) - # fs_chart_fuel_cost_annualized = Column(Float, nullable=True) - # fs_chart_oem_component_bd = Column(Float, nullable=True) - # fs_chart_oem_bd_cost = Column(Float, nullable=True) - # fs_chart_oem_periodic_maintenance_cost = Column(Float, nullable=True) - # fs_chart_oem_annualized = Column(Float, nullable=True) - # fs_chart_capex_component_a = Column(Float, nullable=True) - # fs_chart_capex_biaya_investasi_tambahan = Column(Float, nullable=True) - # fs_chart_capex_acquisition_cost = Column(Float, nullable=True) - # fs_chart_capex_annualized = Column(Float, nullable=True) diff --git a/src/plant_transaction_data/router.py b/src/plant_transaction_data/router.py index c36b6a6..59b77bf 100644 --- a/src/plant_transaction_data/router.py +++ b/src/plant_transaction_data/router.py @@ -171,6 +171,9 @@ async def update_transaction_data( db_session=db_session, transaction_data_id=transaction_data_id ) + print(transaction_data) + print(transaction_data_id) + if not transaction_data: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND,