import { _objectSpread2 } from "../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js";
import { isArr, isBoolean } from "@pisell/utils";
import Decimal from "decimal.js";
//#region src/components/booking/info2/service/editService/utils.tsx
/**
1. 在进入编辑服务前

计算出各种需要的列表

设置默认值

判断是否需要进入编辑服务页
*/
const getAutoAllocationStorage = (id) => {
	const value = localStorage.getItem("resource-auto-allocation");
	if (value) {
		const valueObj = JSON.parse(value);
		return isBoolean(valueObj[id]) ? valueObj[id] : true;
	}
	return true;
};
const setAutoAllocationStorage = (data) => {
	const value = localStorage.getItem("resource-auto-allocation");
	if (value) {
		const valueObj = JSON.parse(value);
		localStorage.setItem("resource-auto-allocation", JSON.stringify(_objectSpread2(_objectSpread2({}, valueObj), data)));
	} else localStorage.setItem("resource-auto-allocation", JSON.stringify(_objectSpread2({}, data)));
};
/**
* 手动折扣后给商品价格和子商品价格重新计算
* 
* 计算逻辑：
* 1. 子商品（bundle + option）按折扣比例计算，直接截取两位小数（不四舍五入）
* 2. 主商品价格 = newTotal - 所有子商品价格总和（确保总价精确等于 newTotal）
* 
* @param cacheItem - 缓存的商品项
* @param newTotal - 折扣后的新总价
* @param origin_total - 原始总价
*/
const setProductPrice = (cacheItem, { newTotal, origin_total }) => {
	var _cacheItem$discount_l, _cacheItem$_extend$ot, _cacheItem$_extend$ot2, _cacheItem$_extend$ot4, _cacheItem$_extend$ot5, _cacheItem$_extend, _cacheItem$_extend2;
	if ((cacheItem === null || cacheItem === void 0 || (_cacheItem$discount_l = cacheItem.discount_list) === null || _cacheItem$discount_l === void 0 ? void 0 : _cacheItem$discount_l.length) && ((cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.discount_list) || []).some((item) => [
		"good_pass",
		"discount_card",
		"product_discount_card"
	].includes(item.type))) return cacheItem;
	if (cacheItem.discount_amount) return cacheItem;
	const discountRatio = origin_total === 0 && newTotal === 0 ? new Decimal(1) : new Decimal(newTotal).div(new Decimal(origin_total));
	let subTotal = new Decimal(0);
	if (((_cacheItem$_extend$ot = cacheItem._extend.other) === null || _cacheItem$_extend$ot === void 0 ? void 0 : _cacheItem$_extend$ot.bundle) && isArr((_cacheItem$_extend$ot2 = cacheItem._extend.other) === null || _cacheItem$_extend$ot2 === void 0 ? void 0 : _cacheItem$_extend$ot2.bundle)) {
		var _cacheItem$_extend$ot3;
		(_cacheItem$_extend$ot3 = cacheItem._extend.other) === null || _cacheItem$_extend$ot3 === void 0 || (_cacheItem$_extend$ot3 = _cacheItem$_extend$ot3.bundle) === null || _cacheItem$_extend$ot3 === void 0 || _cacheItem$_extend$ot3.forEach((bundle) => {
			var _ref, _bundle$num;
			const newPrice = new Decimal(bundle.original_price || bundle.price).mul(discountRatio).toDecimalPlaces(2, Decimal.ROUND_DOWN).toNumber();
			const quantity = (_ref = (_bundle$num = bundle.num) !== null && _bundle$num !== void 0 ? _bundle$num : bundle.quantity) !== null && _ref !== void 0 ? _ref : 1;
			subTotal = subTotal.add(new Decimal(newPrice).mul(quantity));
			bundle.price = newPrice;
			bundle.bundle_selling_price = newPrice;
		});
	}
	if (((_cacheItem$_extend$ot4 = cacheItem._extend.other) === null || _cacheItem$_extend$ot4 === void 0 ? void 0 : _cacheItem$_extend$ot4.option) && isArr((_cacheItem$_extend$ot5 = cacheItem._extend.other) === null || _cacheItem$_extend$ot5 === void 0 ? void 0 : _cacheItem$_extend$ot5.option)) {
		var _cacheItem$_extend$ot6;
		(_cacheItem$_extend$ot6 = cacheItem._extend.other) === null || _cacheItem$_extend$ot6 === void 0 || (_cacheItem$_extend$ot6 = _cacheItem$_extend$ot6.option) === null || _cacheItem$_extend$ot6 === void 0 || _cacheItem$_extend$ot6.forEach((option) => {
			var _ref2, _option$num;
			const newPrice = new Decimal(option.original_price || option.price).mul(discountRatio).toDecimalPlaces(2, Decimal.ROUND_DOWN).toNumber();
			const quantity = (_ref2 = (_option$num = option.num) !== null && _option$num !== void 0 ? _option$num : option.quantity) !== null && _ref2 !== void 0 ? _ref2 : 1;
			subTotal = subTotal.add(new Decimal(newPrice).mul(quantity));
			option.price = newPrice;
		});
	}
	cacheItem._extend.price = new Decimal(newTotal).sub(subTotal).toNumber();
	if ((_cacheItem$_extend = cacheItem._extend) === null || _cacheItem$_extend === void 0 || (_cacheItem$_extend = _cacheItem$_extend.other) === null || _cacheItem$_extend === void 0 ? void 0 : _cacheItem$_extend.product_variant_id) cacheItem._extend.other.price = cacheItem._extend.price;
	if ((_cacheItem$_extend2 = cacheItem._extend) === null || _cacheItem$_extend2 === void 0 ? void 0 : _cacheItem$_extend2.priceOverride) {
		var _cacheItem$_extend3;
		cacheItem._extend.total = new Decimal(((_cacheItem$_extend3 = cacheItem._extend) === null || _cacheItem$_extend3 === void 0 ? void 0 : _cacheItem$_extend3.priceOverride) || 0).toNumber();
	}
	return cacheItem;
};
//#endregion
export { getAutoAllocationStorage, setAutoAllocationStorage, setProductPrice };
