fix: 合同结算单打印预览单价计算、费用赔偿计算相关,出入库内容字段报错
Reviewed-on: daoyoucloud/tachycode#663 Co-authored-by: wjh <wwwjh0710@163.com> Co-committed-by: wjh <wwwjh0710@163.com>
This commit is contained in:
parent
a329ab5727
commit
d9e851d1ca
@ -44,21 +44,23 @@ export const RecordDetails: CustomFunctionComponent = () => {
|
|||||||
// 根据关联产品名称来合并赔偿
|
// 根据关联产品名称来合并赔偿
|
||||||
if (reqRecordItemFeeItems.data) {
|
if (reqRecordItemFeeItems.data) {
|
||||||
feeItems = reqRecordItemFeeItems.data.data?.reduce((prev, current) => {
|
feeItems = reqRecordItemFeeItems.data.data?.reduce((prev, current) => {
|
||||||
const key = current.record_item.product.name;
|
if (current.record_item.product) {
|
||||||
if (!(key in prev)) {
|
const key = current.record_item.product.name;
|
||||||
prev[key] = {};
|
if (!(key in prev)) {
|
||||||
|
prev[key] = {};
|
||||||
|
}
|
||||||
|
if (!current.product) {
|
||||||
|
return prev;
|
||||||
|
}
|
||||||
|
if (!(current.product.label in prev[key])) {
|
||||||
|
prev[key][current.product.label] = {
|
||||||
|
id: current.product.id,
|
||||||
|
label: current.product.label,
|
||||||
|
count: 0,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
prev[key][current.product.label].count += current.count;
|
||||||
}
|
}
|
||||||
if (!current.product) {
|
|
||||||
return prev;
|
|
||||||
}
|
|
||||||
if (!(current.product.label in prev[key])) {
|
|
||||||
prev[key][current.product.label] = {
|
|
||||||
id: current.product.id,
|
|
||||||
label: current.product.label,
|
|
||||||
count: 0,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
prev[key][current.product.label].count += current.count;
|
|
||||||
return prev;
|
return prev;
|
||||||
}, {});
|
}, {});
|
||||||
}
|
}
|
||||||
@ -66,6 +68,7 @@ export const RecordDetails: CustomFunctionComponent = () => {
|
|||||||
|
|
||||||
if (reqRecordItems.data && feeItems) {
|
if (reqRecordItems.data && feeItems) {
|
||||||
reqRecordItems.data.data?.forEach((item) => {
|
reqRecordItems.data.data?.forEach((item) => {
|
||||||
|
if (!item.product) return;
|
||||||
const key = item.product.name;
|
const key = item.product.name;
|
||||||
const count = item.product.category.convertible ? item.count * item.product.ratio : item.count;
|
const count = item.product.category.convertible ? item.count * item.product.ratio : item.count;
|
||||||
const unit = item.product.category.convertible
|
const unit = item.product.category.convertible
|
||||||
|
@ -41,11 +41,17 @@ export class SettlementService {
|
|||||||
const lease_rules = ruleItem?.rule.lease_items;
|
const lease_rules = ruleItem?.rule.lease_items;
|
||||||
// fee_rules 费用明细
|
// fee_rules 费用明细
|
||||||
const fee_rules = ruleItem?.rule.fee_item;
|
const fee_rules = ruleItem?.rule.fee_item;
|
||||||
|
//合并产品
|
||||||
|
const countRule = [];
|
||||||
// 处理原始数据,适合后续租金数据成
|
// 处理原始数据,适合后续租金数据成
|
||||||
if (settlementAbout.records === null) {
|
if (settlementAbout.records === null) {
|
||||||
settlementAbout.records = [];
|
settlementAbout.records = [];
|
||||||
}
|
}
|
||||||
|
lease_rules.forEach((rule) => {
|
||||||
|
if (rule?.products.length > 1) {
|
||||||
|
countRule.push(...rule.products.map((value) => value));
|
||||||
|
}
|
||||||
|
});
|
||||||
// 正常租赁数据
|
// 正常租赁数据
|
||||||
lease_rules?.forEach((rule) => {
|
lease_rules?.forEach((rule) => {
|
||||||
if (rule) {
|
if (rule) {
|
||||||
@ -63,15 +69,17 @@ export class SettlementService {
|
|||||||
if (recordItem) {
|
if (recordItem) {
|
||||||
let isCount;
|
let isCount;
|
||||||
if (productLength > 1) {
|
if (productLength > 1) {
|
||||||
isCount = rule.products.find(
|
isCount = rule.products.find((productRule) => {
|
||||||
(productRule) =>
|
return (
|
||||||
productRule.product_id > RulesNumber &&
|
productRule.product_id > RulesNumber &&
|
||||||
productRule.product_id - RulesNumber === recordItem.product_category_id,
|
productRule.product_id - RulesNumber === recordItem.product_category_id
|
||||||
);
|
);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
isCount =
|
isCount =
|
||||||
rule.products[0].product_id > RulesNumber &&
|
rule.products[0].product_id > RulesNumber &&
|
||||||
rule.products[0].product_id - RulesNumber === recordItem.product_category_id;
|
rule.products[0].product_id - RulesNumber === recordItem.product_category_id &&
|
||||||
|
!countRule.find((productRule) => productRule.product_id === rule.products[0].product_id);
|
||||||
}
|
}
|
||||||
if (isCount) {
|
if (isCount) {
|
||||||
const productName = item.record_items.filter(
|
const productName = item.record_items.filter(
|
||||||
@ -99,7 +107,7 @@ export class SettlementService {
|
|||||||
is_excluded: false,
|
is_excluded: false,
|
||||||
count: recordItem.weight * Number(movement),
|
count: recordItem.weight * Number(movement),
|
||||||
unit_price: rule.unit_price * 1000,
|
unit_price: rule.unit_price * 1000,
|
||||||
amount: recordItem.weight * (rule.unit_price * 1000) * day,
|
amount: recordItem.weight * (rule.unit_price * 1000) * day * Number(movement),
|
||||||
unit_name: '吨',
|
unit_name: '吨',
|
||||||
productCategory,
|
productCategory,
|
||||||
});
|
});
|
||||||
@ -118,9 +126,10 @@ export class SettlementService {
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
isCount =
|
isCount =
|
||||||
(rule.products[0].product_id > RulesNumber &&
|
((rule.products[0].product_id > RulesNumber &&
|
||||||
rule.products[0].product_id - RulesNumber === itemValue?.product.category_id) ||
|
rule.products[0].product_id - RulesNumber === itemValue?.product.category_id) ||
|
||||||
rule.products[0].product_id === itemValue?.product.id;
|
rule.products[0].product_id === itemValue?.product.id) &&
|
||||||
|
!countRule.find((productRule) => productRule.product_id === rule.products[0].product_id);
|
||||||
}
|
}
|
||||||
return isCount;
|
return isCount;
|
||||||
});
|
});
|
||||||
@ -147,7 +156,7 @@ export class SettlementService {
|
|||||||
is_excluded: false,
|
is_excluded: false,
|
||||||
count: item.weight * Number(movement),
|
count: item.weight * Number(movement),
|
||||||
unit_price: rule.unit_price * 1000,
|
unit_price: rule.unit_price * 1000,
|
||||||
amount: item.weight * (rule.unit_price * 1000) * day,
|
amount: item.weight * (rule.unit_price * 1000) * day * Number(movement),
|
||||||
unit_name: '吨',
|
unit_name: '吨',
|
||||||
productCategory,
|
productCategory,
|
||||||
});
|
});
|
||||||
@ -207,173 +216,158 @@ export class SettlementService {
|
|||||||
if (rulefee.fee_product_id) {
|
if (rulefee.fee_product_id) {
|
||||||
const spec = rulefee.product.spec;
|
const spec = rulefee.product.spec;
|
||||||
const name = rulefee.product.name;
|
const name = rulefee.product.name;
|
||||||
if (rulefee.conversion_logic_id === ConversionLogics.ActualWeight) {
|
rule.products.forEach((productRule) => {
|
||||||
let data;
|
if (rulefee.conversion_logic_id === ConversionLogics.ActualWeight) {
|
||||||
if (
|
let data;
|
||||||
rulefee.count_source === countCource.outProduct ||
|
if (
|
||||||
rulefee.count_source === countCource.outItem
|
rulefee.count_source === countCource.outProduct ||
|
||||||
) {
|
rulefee.count_source === countCource.outItem
|
||||||
if (item.movement === '-1') {
|
) {
|
||||||
data = recordWeight(rule, item, settlementsId, rule.products, rulefee);
|
if (item.movement === '-1') {
|
||||||
|
data = recordWeight(rule, item, settlementsId, productRule, rulefee);
|
||||||
|
if (data) {
|
||||||
|
data.movement = '-1';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (
|
||||||
|
rulefee.count_source === countCource.enterProduct ||
|
||||||
|
rulefee.count_source === countCource.enterItem
|
||||||
|
) {
|
||||||
|
if (item.movement === '1') {
|
||||||
|
data = recordWeight(rule, item, settlementsId, productRule, rulefee);
|
||||||
|
if (data) {
|
||||||
|
data.movement = '1';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
data = recordWeight(rule, item, settlementsId, productRule, rulefee);
|
||||||
if (data) {
|
if (data) {
|
||||||
data.movement = '-1';
|
data.movement = '0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (
|
if (data) {
|
||||||
rulefee.count_source === countCource.enterProduct ||
|
createFeesDatas.push({ ...data, productCategory });
|
||||||
rulefee.count_source === countCource.enterItem
|
|
||||||
) {
|
|
||||||
if (item.movement === '1') {
|
|
||||||
data = recordWeight(rule, item, settlementsId, rule.products, rulefee);
|
|
||||||
if (data) {
|
|
||||||
data.movement = '1';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
data = recordWeight(rule, item, settlementsId, rule.products, rulefee);
|
item.record_items?.forEach((recordItem) => {
|
||||||
if (data) {
|
if (recordItem) {
|
||||||
data.movement = '0';
|
if (
|
||||||
}
|
productRule.product_id - RulesNumber === recordItem.product.category_id ||
|
||||||
}
|
recordItem.product_id === productRule.product_id
|
||||||
if (data) {
|
) {
|
||||||
createFeesDatas.push({ ...data, productCategory });
|
let productname;
|
||||||
}
|
switch (productCategory) {
|
||||||
} else {
|
case 'category':
|
||||||
item.record_items?.forEach((recordItem) => {
|
productname = recordItem.product.name;
|
||||||
if (recordItem) {
|
break;
|
||||||
let productRule;
|
case 'product':
|
||||||
if (productLength > 1) {
|
productname = recordItem.product.label;
|
||||||
productRule = rule.products.find(
|
break;
|
||||||
(item) =>
|
}
|
||||||
item.product_id - RulesNumber === recordItem.product.category_id ||
|
//人工录入
|
||||||
recordItem.product_id === item.product_id,
|
if (rulefee.count_source === countCource.artificial) {
|
||||||
);
|
if (rulefee.conversion_logic_id !== ConversionLogics.ActualWeight) {
|
||||||
} else {
|
if (recordItem.record_item_fee_items.length) {
|
||||||
productRule =
|
recordItem.record_item_fee_items.forEach((value) => {
|
||||||
rule.products[0].product_id - RulesNumber === recordItem.product.category_id ||
|
if (value.product_id === rulefee.fee_product_id) {
|
||||||
recordItem.product_id === rule.products[0].product_id
|
const { count, unit } = ruleCount(
|
||||||
? rule.products[0]
|
rule,
|
||||||
: null;
|
item,
|
||||||
}
|
recordItem,
|
||||||
if (productRule) {
|
value.count,
|
||||||
let productname;
|
rulefee,
|
||||||
switch (productCategory) {
|
);
|
||||||
case 'category':
|
createFeesDatas.push({
|
||||||
productname = recordItem.product.name;
|
settlement_id: settlementsId,
|
||||||
break;
|
date: item.date,
|
||||||
case 'product':
|
name: productname + '-' + spec,
|
||||||
productname = recordItem.product.label;
|
label: recordItem.product.label + '-' + spec,
|
||||||
break;
|
category: name,
|
||||||
}
|
movement: item.movement,
|
||||||
const ruleName =
|
count: count,
|
||||||
productLength > 1 ? rule.comment ?? '' + '-' + spec : productname + '-' + spec;
|
unit_price: rulefee.unit_price,
|
||||||
const ruleLabel =
|
amount: rulefee.unit_price * count,
|
||||||
productLength > 1
|
unit_name: unit,
|
||||||
? rule.comment ?? '' + '-' + spec
|
is_excluded: value.is_excluded,
|
||||||
: recordItem.product.label + '-' + spec;
|
productCategory,
|
||||||
//人工录入
|
});
|
||||||
if (rulefee.count_source === countCource.artificial) {
|
}
|
||||||
if (rulefee.conversion_logic_id !== ConversionLogics.ActualWeight) {
|
});
|
||||||
if (recordItem.record_item_fee_items.length) {
|
}
|
||||||
recordItem.record_item_fee_items.forEach((value) => {
|
}
|
||||||
if (value.product_id === rulefee.fee_product_id) {
|
} //出库
|
||||||
const { count, unit } = ruleCount(
|
else if (
|
||||||
rule,
|
rulefee.count_source === countCource.outProduct ||
|
||||||
item,
|
rulefee.count_source === countCource.outItem
|
||||||
recordItem,
|
) {
|
||||||
value.count,
|
if (item.movement === '-1') {
|
||||||
rulefee,
|
const { count, unit } = ruleCount(rule, item, recordItem, '', rulefee);
|
||||||
);
|
const recordCount = recordItemsFee(rule, item, recordItem, count, rulefee);
|
||||||
createFeesDatas.push({
|
createFeesDatas.push({
|
||||||
settlement_id: settlementsId,
|
settlement_id: settlementsId,
|
||||||
date: item.date,
|
date: item.date,
|
||||||
name: ruleName,
|
name: productname + '-' + spec,
|
||||||
label: ruleLabel,
|
label: recordItem.product.label + '-' + spec,
|
||||||
category: name,
|
category: name,
|
||||||
movement: item.movement,
|
movement: '-1',
|
||||||
count: count,
|
count: recordCount,
|
||||||
unit_price: rulefee.unit_price,
|
unit_price: rulefee.unit_price,
|
||||||
amount: rulefee.unit_price * count,
|
amount: count * rulefee.unit_price,
|
||||||
unit_name: unit,
|
unit_name: unit,
|
||||||
is_excluded: value.is_excluded,
|
is_excluded: false,
|
||||||
productCategory,
|
productCategory,
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
} //入库
|
||||||
} //出库
|
else if (
|
||||||
else if (
|
rulefee.count_source === countCource.enterProduct ||
|
||||||
rulefee.count_source === countCource.outProduct ||
|
rulefee.count_source === countCource.enterItem
|
||||||
rulefee.count_source === countCource.outItem
|
) {
|
||||||
) {
|
if (item.movement === '1') {
|
||||||
if (item.movement === '-1') {
|
const { count, unit } = ruleCount(rule, item, recordItem, '', rulefee);
|
||||||
|
const recordCount = recordItemsFee(rule, item, recordItem, count, rulefee);
|
||||||
|
createFeesDatas.push({
|
||||||
|
settlement_id: settlementsId,
|
||||||
|
date: item.date,
|
||||||
|
name: productname + '-' + spec,
|
||||||
|
label: recordItem.product.label + '-' + spec,
|
||||||
|
category: name,
|
||||||
|
movement: '1',
|
||||||
|
count: recordCount,
|
||||||
|
unit_price: rulefee.unit_price,
|
||||||
|
amount: count * rulefee.unit_price,
|
||||||
|
unit_name: unit,
|
||||||
|
is_excluded: false,
|
||||||
|
productCategory,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} //出入库
|
||||||
|
else if (
|
||||||
|
rulefee.count_source === countCource.product ||
|
||||||
|
rulefee.count_source === countCource.item
|
||||||
|
) {
|
||||||
const { count, unit } = ruleCount(rule, item, recordItem, '', rulefee);
|
const { count, unit } = ruleCount(rule, item, recordItem, '', rulefee);
|
||||||
const recordCount = recordItemsFee(rule, item, recordItem, count, rulefee);
|
const recordCount = recordItemsFee(rule, item, recordItem, count, rulefee);
|
||||||
createFeesDatas.push({
|
createFeesDatas.push({
|
||||||
settlement_id: settlementsId,
|
settlement_id: settlementsId,
|
||||||
date: item.date,
|
date: item.date,
|
||||||
name: ruleName,
|
name: productname + '-' + spec,
|
||||||
label: ruleLabel,
|
label: recordItem.product.label + '-' + spec,
|
||||||
category: name,
|
category: name,
|
||||||
movement: '-1',
|
movement: '0',
|
||||||
count: recordCount,
|
count: recordCount,
|
||||||
unit_price: rulefee.unit_price,
|
unit_price: rule.unit_price,
|
||||||
amount: count * rulefee.unit_price,
|
amount: count * rule.unit_price,
|
||||||
unit_name: unit,
|
unit_name: unit,
|
||||||
is_excluded: false,
|
is_excluded: false,
|
||||||
productCategory,
|
productCategory,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} //入库
|
|
||||||
else if (
|
|
||||||
rulefee.count_source === countCource.enterProduct ||
|
|
||||||
rulefee.count_source === countCource.enterItem
|
|
||||||
) {
|
|
||||||
if (item.movement === '1') {
|
|
||||||
const { count, unit } = ruleCount(rule, item, recordItem, '', rulefee);
|
|
||||||
const recordCount = recordItemsFee(rule, item, recordItem, count, rulefee);
|
|
||||||
createFeesDatas.push({
|
|
||||||
settlement_id: settlementsId,
|
|
||||||
date: item.date,
|
|
||||||
name: ruleName,
|
|
||||||
label: ruleLabel,
|
|
||||||
category: name,
|
|
||||||
movement: '1',
|
|
||||||
count: recordCount,
|
|
||||||
unit_price: rulefee.unit_price,
|
|
||||||
amount: count * rulefee.unit_price,
|
|
||||||
unit_name: unit,
|
|
||||||
is_excluded: false,
|
|
||||||
productCategory,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} //出入库
|
|
||||||
else if (
|
|
||||||
rulefee.count_source === countCource.product ||
|
|
||||||
rulefee.count_source === countCource.item
|
|
||||||
) {
|
|
||||||
const { count, unit } = ruleCount(rule, item, recordItem, '', rulefee);
|
|
||||||
const recordCount = recordItemsFee(rule, item, recordItem, count, rulefee);
|
|
||||||
createFeesDatas.push({
|
|
||||||
settlement_id: settlementsId,
|
|
||||||
date: item.date,
|
|
||||||
name: ruleName,
|
|
||||||
label: ruleLabel,
|
|
||||||
category: name,
|
|
||||||
movement: '0',
|
|
||||||
count: recordCount,
|
|
||||||
unit_price: rule.unit_price,
|
|
||||||
amount: count * rule.unit_price,
|
|
||||||
unit_name: unit,
|
|
||||||
is_excluded: false,
|
|
||||||
productCategory,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -827,32 +821,17 @@ export class SettlementService {
|
|||||||
* @param item
|
* @param item
|
||||||
* @param settlementsId
|
* @param settlementsId
|
||||||
*/
|
*/
|
||||||
const recordWeight = (rule, item, settlementsId, products, rulefee?) => {
|
const recordWeight = (rule, item, settlementsId, productRule, rulefee?) => {
|
||||||
let productCategory = 'category';
|
const productCategory = productRule.product_id > RulesNumber ? 'category' : 'product';
|
||||||
const productLength = products.length;
|
|
||||||
if (productLength === 1) {
|
|
||||||
productCategory = products[0].product_id > RulesNumber ? 'category' : 'product';
|
|
||||||
}
|
|
||||||
const spec = rulefee.product.spec;
|
const spec = rulefee.product.spec;
|
||||||
const name = rulefee.product.name;
|
const name = rulefee.product.name;
|
||||||
if (item.weight_items.length) {
|
if (item.weight_items.length) {
|
||||||
const itemWeight = item.weight_items.find((weightItem) => {
|
const itemWeight = item.weight_items.filter(
|
||||||
let isCount;
|
(weightItem) =>
|
||||||
if (productLength > 1) {
|
(productRule.product_id > RulesNumber &&
|
||||||
isCount = products.find(
|
productRule.product_id - RulesNumber === weightItem.product_category_id) ||
|
||||||
(productRule) =>
|
productRule.product_id === weightItem.product_category_id,
|
||||||
(productRule.product_id > RulesNumber &&
|
)[0];
|
||||||
productRule.product_id - RulesNumber === weightItem.product_category_id) ||
|
|
||||||
productRule.product_id === weightItem.product_category_id,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
isCount =
|
|
||||||
(products[0].product_id > RulesNumber &&
|
|
||||||
products[0].product_id - RulesNumber === weightItem.product_category_id) ||
|
|
||||||
products[0].product_id === weightItem.product_category_id;
|
|
||||||
}
|
|
||||||
return isCount;
|
|
||||||
});
|
|
||||||
const productsName = item.record_items?.filter(
|
const productsName = item.record_items?.filter(
|
||||||
(value) => value.product.category_id === itemWeight.product_category_id,
|
(value) => value.product.category_id === itemWeight.product_category_id,
|
||||||
)[0].product;
|
)[0].product;
|
||||||
@ -860,8 +839,8 @@ const recordWeight = (rule, item, settlementsId, products, rulefee?) => {
|
|||||||
return {
|
return {
|
||||||
settlement_id: settlementsId,
|
settlement_id: settlementsId,
|
||||||
date: item.date,
|
date: item.date,
|
||||||
name: productLength > 1 ? rule.comment ?? '' + '-' + spec : productName + '-' + spec,
|
name: productName + '-' + spec,
|
||||||
label: productLength > 1 ? rule.comment ?? '' + '-' + spec : productsName.label + '-' + spec,
|
label: productsName.label + '-' + spec,
|
||||||
category: rulefee ? name : rule.product.name,
|
category: rulefee ? name : rule.product.name,
|
||||||
movement: item.movement,
|
movement: item.movement,
|
||||||
count: itemWeight.weight,
|
count: itemWeight.weight,
|
||||||
@ -871,39 +850,28 @@ const recordWeight = (rule, item, settlementsId, products, rulefee?) => {
|
|||||||
is_excluded: false,
|
is_excluded: false,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
const isRecordItem = item.record_items.find((itemValue) => {
|
const isRecordItem = item.record_items.find(
|
||||||
let isCount;
|
(itemValue) =>
|
||||||
if (productLength > 1) {
|
(productRule.product_id > RulesNumber &&
|
||||||
isCount = products.find(
|
productRule.product_id - RulesNumber === itemValue?.product.category_id) ||
|
||||||
(productRule) =>
|
productRule.product_id === itemValue?.product.category_id,
|
||||||
(productRule.product_id > RulesNumber &&
|
);
|
||||||
productRule.product_id - RulesNumber === itemValue?.product.category_id) ||
|
|
||||||
productRule.product_id === itemValue?.product.category_id,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
isCount =
|
|
||||||
(products[0].product_id > RulesNumber &&
|
|
||||||
products[0].product_id - RulesNumber === itemValue?.product.category_id) ||
|
|
||||||
products[0].product_id === itemValue?.product.category_id;
|
|
||||||
}
|
|
||||||
return isCount;
|
|
||||||
});
|
|
||||||
if (isRecordItem) {
|
if (isRecordItem) {
|
||||||
let count = item.weight;
|
let count = item.weight;
|
||||||
item.record_items.forEach((recordItem) => {
|
item.record_items.forEach((recordItem) => {
|
||||||
if (recordItem.record_item_fee_items.length) {
|
if (recordItem.record_item_fee_items.length) {
|
||||||
const recordItemFee = recordItem.record_item_fee_items.find(
|
const recordItemFee = recordItem.record_item_fee_items.filter(
|
||||||
(value) => value.product_id === rulefee.fee_product_id,
|
(value) => value.product_id === rulefee.fee_product_id,
|
||||||
);
|
)[0];
|
||||||
count = recordItemFee?.is_excluded ? count - recordItemFee?.count : count;
|
count = recordItemFee?.is_excluded ? count - recordItemFee.count : count;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const productName = isRecordItem.product.name;
|
const productName = isRecordItem.product.name;
|
||||||
return {
|
return {
|
||||||
settlement_id: settlementsId,
|
settlement_id: settlementsId,
|
||||||
date: item.date,
|
date: item.date,
|
||||||
name: productLength > 1 ? rule.comment ?? '' + '-' + spec : productName + '-' + spec,
|
name: productName + '-' + spec,
|
||||||
label: productLength > 1 ? rule.comment ?? '' + '-' + spec : productName + '-' + spec,
|
label: productName + '-' + spec,
|
||||||
category: name,
|
category: name,
|
||||||
movement: item.movement,
|
movement: item.movement,
|
||||||
count: count,
|
count: count,
|
||||||
@ -923,10 +891,10 @@ const recordWeight = (rule, item, settlementsId, products, rulefee?) => {
|
|||||||
* @param itemCount 需要计算的订单数量
|
* @param itemCount 需要计算的订单数量
|
||||||
* @returns count,unit 返回了最后的计算数量和单位
|
* @returns count,unit 返回了最后的计算数量和单位
|
||||||
*/
|
*/
|
||||||
const ruleCount = (rules: FeeRule | LeaseRule, item: Record, recordItem: RecordItems, valueCount?, rulefee?) => {
|
const ruleCount = (lease_rules: FeeRule | LeaseRule, item: Record, recordItem: RecordItems, valueCount?, rulefee?) => {
|
||||||
let count, unit;
|
let count, unit;
|
||||||
const itemCount = valueCount ? valueCount : recordItem.count;
|
const itemCount = valueCount ? valueCount : recordItem.count;
|
||||||
const conversion_logic_id = rulefee ? rulefee.conversion_logic_id : rules.conversion_logic_id;
|
const conversion_logic_id = rulefee ? rulefee.conversion_logic_id : lease_rules.conversion_logic_id;
|
||||||
if (conversion_logic_id === ConversionLogics.Product) {
|
if (conversion_logic_id === ConversionLogics.Product) {
|
||||||
// 换算:2
|
// 换算:2
|
||||||
// 查产品分类,看产品分类是否需要换算
|
// 查产品分类,看产品分类是否需要换算
|
||||||
@ -943,7 +911,8 @@ const ruleCount = (rules: FeeRule | LeaseRule, item: Record, recordItem: RecordI
|
|||||||
count = itemCount * recordItem.product.weight;
|
count = itemCount * recordItem.product.weight;
|
||||||
unit = recordItem.product.product_category.unit;
|
unit = recordItem.product.product_category.unit;
|
||||||
} else {
|
} else {
|
||||||
const rule = rules?.ucl?.weight_items.filter(
|
const rules = rulefee ? rulefee?.weight_items : lease_rules?.ucl?.weight_items;
|
||||||
|
const rule = rules.filter(
|
||||||
(value) =>
|
(value) =>
|
||||||
value.product_id === recordItem.product_id || value.product_id - RulesNumber === recordItem.product.category_id,
|
value.product_id === recordItem.product_id || value.product_id - RulesNumber === recordItem.product.category_id,
|
||||||
)[0];
|
)[0];
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
-- 租金
|
-- 租金
|
||||||
SELECT
|
-- distinct说明:sql根据订单中产品去合同规则中找规则,如果合同存在单个产品多条规则,会连接查询出多条规则,所以需要distinct
|
||||||
|
-- 直接disinct掉,不会有任何影响,因为查询数据只关注点单产品数量,根换算逻辑,正好多条规则换算逻辑是一样的
|
||||||
|
SELECT DISTINCT
|
||||||
r.category,
|
r.category,
|
||||||
ri.comment AS item_comment,
|
ri.comment AS item_comment,
|
||||||
ri.count,
|
ri.count,
|
||||||
|
@ -43,7 +43,19 @@ SELECT
|
|||||||
SELECT
|
SELECT
|
||||||
COALESCE(
|
COALESCE(
|
||||||
JSONB_AGG(
|
JSONB_AGG(
|
||||||
JSONB_SET(TO_JSONB(cpfi), '{product}', TO_JSONB(product))
|
JSONB_SET(TO_JSONB(cpfi), '{product}', TO_JSONB(product)) || JSONB_SET(
|
||||||
|
TO_JSONB(cpfi),
|
||||||
|
'{weight_items}',
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
COALESCE(JSONB_AGG(wrs), '[]'::jsonb)
|
||||||
|
FROM
|
||||||
|
weight_rules wrs
|
||||||
|
WHERE
|
||||||
|
wrs.logic_id = cpfi.conversion_logic_id
|
||||||
|
AND cpfi.conversion_logic_id > 4
|
||||||
|
)
|
||||||
|
)
|
||||||
),
|
),
|
||||||
'[]'::jsonb
|
'[]'::jsonb
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user