import React, { useEffect, useState } from 'react' import { useInputValues, useProductionCapacityData, useROISummaryData } from '../../../../store/builder/store'; import { useSelectedProduct } from '../../../../store/simulation/useSimulationStore'; export default function ROIData() { const { inputValues } = useInputValues(); const { productionCapacityData } = useProductionCapacityData() const { selectedProduct } = useSelectedProduct(); const { setRoiSummaryData } = useROISummaryData(); useEffect(() => { if (inputValues === undefined) return; const electricityCost = parseFloat(inputValues["Electricity cost"]); const fixedCost = parseFloat(inputValues["Fixed costs"]); const laborCost = parseFloat(inputValues["Labor Cost"]); const maintenanceCost = parseFloat(inputValues["Maintenance cost"]); // Remove space typ const materialCost = parseFloat(inputValues["Material cost"]); const productionPeriod = parseFloat(inputValues["Production period"]); const salvageValue = parseFloat(inputValues["Salvage value"]); const sellingPrice = parseFloat(inputValues["Selling price"]); const initialInvestment = parseFloat(inputValues["Initial Investment"]); const shiftLength = parseFloat(inputValues["Shift length"]); const shiftsPerDay = parseFloat(inputValues["Shifts / day"]); const workingDaysPerYear = parseFloat(inputValues["Working days / year"]); if (!isNaN(electricityCost) && !isNaN(fixedCost) && !isNaN(laborCost) && !isNaN(maintenanceCost) && !isNaN(materialCost) && !isNaN(productionPeriod) && !isNaN(salvageValue) && !isNaN(sellingPrice) && !isNaN(shiftLength) && !isNaN(shiftsPerDay) && !isNaN(workingDaysPerYear) && productionCapacityData > 0) { console.log('sellingPrice: ', sellingPrice); console.log('salvageValue: ', salvageValue); console.log('productionPeriod: ', productionPeriod); console.log('materialCost: ', materialCost); console.log('maintenanceCost: ', maintenanceCost); console.log('laborCost: ', laborCost); console.log('fixedCost: ', fixedCost); console.log('electricityCost: ', electricityCost); // Revenue const RevenueForYear = productionCapacityData * sellingPrice; console.log('RevenueForYear: ', RevenueForYear); //Costs let materialCount = 1200; //Material Cost let MaterialCost = productionCapacityData * materialCost console.log('MaterialCost: ', MaterialCost); let LaborCost = laborCost * shiftLength * shiftsPerDay * workingDaysPerYear; console.log('LaborCost: ', LaborCost); let EnergyCost = electricityCost * shiftLength * shiftsPerDay * workingDaysPerYear; console.log('EnergyCost: ', EnergyCost); let MaintenceCost = maintenanceCost + fixedCost; console.log('MaintenceCost: ', MaintenceCost); //Total Anuual Cost let TotalAnnualCost = (MaterialCost * materialCount) + LaborCost + EnergyCost + MaintenceCost; console.log('TotalAnnualCost: ', TotalAnnualCost); //Profit for Year let ProfitforYear = RevenueForYear - TotalAnnualCost; console.log('ProfitforYear: ', ProfitforYear); //Net Profit let NetProfit = ProfitforYear * productionPeriod; console.log('NetProfit: ', NetProfit); //Final ROI const ROIData = ((NetProfit + salvageValue - initialInvestment) / TotalAnnualCost) * 100; console.log('ROIData: ', ROIData); // Payback Period const paybackPeriod = initialInvestment / ProfitforYear; console.log('paybackPeriod: ', paybackPeriod); setRoiSummaryData({ productName: selectedProduct.productName, roiPercentage: parseFloat((ROIData / 100).toFixed(2)), paybackPeriod: parseFloat(paybackPeriod.toFixed(2)), totalCost: TotalAnnualCost, revenueGenerated: RevenueForYear, netProfit: NetProfit > 0 ? NetProfit : 0, netLoss: NetProfit < 0 ? -NetProfit : 0 }); } }, [inputValues, productionCapacityData]); return ( <> ) }