feat(edit): 定价试算开发、SKU 样式功能修改
This commit is contained in:
@@ -99,6 +99,17 @@ describe('十进制定价引擎', () => {
|
||||
expect(o.can_confirm).toBe(false);
|
||||
expect(Number(o.profit_cny)).toBeLessThan(0);
|
||||
});
|
||||
it('零佣金仍生成正式报价,平台佣金费用为零', () => {
|
||||
const o = calculatePricing(
|
||||
input(),
|
||||
'RUB',
|
||||
'12.3',
|
||||
[rule],
|
||||
[{ ...commission, commission_rate: '0.000000' }],
|
||||
).options[0];
|
||||
expect(o.commission_rate).toBe('0.000000');
|
||||
expect(o.fees.commission_cny).toBe('0.0000');
|
||||
});
|
||||
it('实际重、尺寸和开区间边界精确生效', () => {
|
||||
const i = input();
|
||||
i.package.shipping_weight_g = '500';
|
||||
@@ -241,3 +252,74 @@ describe('十进制定价引擎', () => {
|
||||
expect(option.can_confirm).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('导入佣金的卢布分档边界', () => {
|
||||
const bands: CommissionRule[] = [
|
||||
{
|
||||
...commission,
|
||||
min_price: '0',
|
||||
max_price: '1500',
|
||||
min_inclusive: false,
|
||||
commission_rate: '0.12',
|
||||
},
|
||||
{
|
||||
...commission,
|
||||
min_price: '1500',
|
||||
max_price: '5000',
|
||||
min_inclusive: false,
|
||||
commission_rate: '0.14',
|
||||
},
|
||||
{
|
||||
...commission,
|
||||
min_price: '5000',
|
||||
max_price: null,
|
||||
min_inclusive: false,
|
||||
commission_rate: '0.205',
|
||||
},
|
||||
];
|
||||
it.each([
|
||||
['1500', '0.12'],
|
||||
['1500.01', '0.14'],
|
||||
['5000', '0.14'],
|
||||
['5000.01', '0.205'],
|
||||
])('售价 %s 只命中对应佣金档', (price, rate) => {
|
||||
const i = input();
|
||||
i.pricing.mode = 'fixed_sale';
|
||||
i.pricing.selling_price = price;
|
||||
const result = calculatePricing(
|
||||
i,
|
||||
'RUB',
|
||||
'12.3',
|
||||
[{ ...rule, max_merchandise_value: null }],
|
||||
bands,
|
||||
);
|
||||
expect(result.options).toHaveLength(1);
|
||||
expect(Number(result.options[0].commission_rate)).toBe(Number(rate));
|
||||
});
|
||||
it('人民币售价换算卢布后匹配费率', () => {
|
||||
const i = input();
|
||||
i.pricing.mode = 'fixed_sale';
|
||||
i.pricing.selling_price = '150';
|
||||
const result = calculatePricing(
|
||||
i,
|
||||
'CNY',
|
||||
'10',
|
||||
[{ ...rule, max_merchandise_value: null }],
|
||||
bands,
|
||||
);
|
||||
expect(result.options).toHaveLength(1);
|
||||
expect(Number(result.options[0].commission_rate)).toBe(0.12);
|
||||
i.pricing.selling_price = '150.01';
|
||||
expect(
|
||||
Number(
|
||||
calculatePricing(
|
||||
i,
|
||||
'CNY',
|
||||
'10',
|
||||
[{ ...rule, max_merchandise_value: null }],
|
||||
bands,
|
||||
).options[0].commission_rate,
|
||||
),
|
||||
).toBe(0.14);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user