forked from ckh08045/AutoPercenty
46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
def calculate_margin_and_price(inputs):
|
|
# 입력값 처리
|
|
tao_low_price = inputs["tao_low_price"]
|
|
tao_high_price = inputs["tao_high_price"]
|
|
delv_fee = inputs["delv_fee"]
|
|
packing_fee = inputs["packing_fee"]
|
|
ns_low_price = inputs["ns_low_price"]
|
|
ns_high_price = inputs["ns_high_price"]
|
|
plus_margin = 5000 # 기본값
|
|
|
|
# 계산 로직
|
|
ns_avg_price = (ns_low_price + ns_high_price) / 2
|
|
tao_cost = lambda price: price * 190 * 1.035
|
|
base_margin = lambda cost: cost * 0.12
|
|
|
|
def adjust_plus_margin_for_min_margin(seller_cost, mall_cost, selling_price):
|
|
nonlocal plus_margin
|
|
target_margin_rate = 22
|
|
while True:
|
|
final_margin = selling_price - (seller_cost + mall_cost)
|
|
final_margin_rate = (final_margin / selling_price) * 100
|
|
if final_margin_rate < target_margin_rate:
|
|
plus_margin += 100 # 더하기 마진 증가
|
|
selling_price = seller_cost + plus_margin + mall_cost
|
|
mall_cost = selling_price * 0.13
|
|
else:
|
|
break
|
|
|
|
return selling_price, final_margin_rate
|
|
|
|
seller_cost = tao_cost(tao_low_price) + delv_fee + packing_fee
|
|
mall_cost = seller_cost * 0.13
|
|
selling_price = seller_cost + plus_margin + mall_cost
|
|
selling_price, final_margin_rate = adjust_plus_margin_for_min_margin(seller_cost, mall_cost, selling_price)
|
|
|
|
# 결과 반환
|
|
results = {
|
|
"selling_price": selling_price,
|
|
"final_margin_rate": final_margin_rate,
|
|
"seller_cost": seller_cost,
|
|
"base_margin": base_margin(tao_cost(tao_low_price)),
|
|
"plus_margin": plus_margin,
|
|
"ns_avg_price": ns_avg_price
|
|
}
|
|
return results
|