🔧 FIX: Restore missing calculator files from src/ to app/ directory
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
from ..utils.cost_factor_loader import get_cost_factors
|
||||
|
||||
def calculate_base_price(mold_main_type, mold_sub_type, mold_specific_type, sliders_count, cavity_count, digital_texture_type, complexity_high_sidewall=False):
|
||||
"""
|
||||
Calculate the base price for a mold based on various factors.
|
||||
|
||||
Args:
|
||||
mold_main_type (str): The main type of the mold
|
||||
mold_sub_type (str): The sub type of the mold
|
||||
mold_specific_type (str): The specific type of the mold
|
||||
sliders_count (int): Number of sliders
|
||||
cavity_count (int): Number of cavities
|
||||
digital_texture_type (str): Type of digital texture
|
||||
complexity_high_sidewall (bool): Whether the mold has high sidewall complexity
|
||||
|
||||
Returns:
|
||||
dict: A dictionary containing all cost components
|
||||
"""
|
||||
# Get cost factors from database (or fallback to defaults)
|
||||
cost_factors, tax_rates, default_net_base = get_cost_factors()
|
||||
|
||||
# Start with the default net base
|
||||
base_price = default_net_base
|
||||
|
||||
# Apply mold type factor
|
||||
if mold_specific_type in cost_factors['mold']:
|
||||
base_price *= cost_factors['mold'][mold_specific_type]
|
||||
|
||||
# Calculate complexity cost
|
||||
complexity_cost = 0
|
||||
# Add slider complexity
|
||||
if sliders_count > 0:
|
||||
complexity_cost += base_price * (sliders_count * cost_factors['complexity']['slider'])
|
||||
|
||||
# Add cavity complexity
|
||||
if cavity_count > 1:
|
||||
complexity_cost += base_price * ((cavity_count - 1) * cost_factors['complexity']['cavity'])
|
||||
|
||||
# Add high sidewall complexity
|
||||
if complexity_high_sidewall:
|
||||
complexity_cost += base_price * cost_factors['complexity']['high_sidewall']
|
||||
|
||||
# Calculate texture cost
|
||||
texture_cost = 0
|
||||
if digital_texture_type in cost_factors['texture']:
|
||||
texture_cost = base_price * cost_factors['texture'][digital_texture_type]
|
||||
|
||||
# Calculate total cost
|
||||
total_cost = base_price + complexity_cost + texture_cost
|
||||
|
||||
return {
|
||||
'base_price': round(base_price, 2),
|
||||
'complexity_cost': round(complexity_cost, 2),
|
||||
'texture_cost': round(texture_cost, 2),
|
||||
'total_cost': round(total_cost, 2)
|
||||
}
|
||||
Reference in New Issue
Block a user