|
@@ -71,9 +71,10 @@ class BaseBillsSerivce extends TreeService {
|
|
|
async addBillsNode(tenderId, selectId, data, reviseId) {
|
|
|
if (data) {
|
|
|
if (reviseId) data.crid = reviseId;
|
|
|
+ data.check_calc = 1;
|
|
|
return await this.addNode(tenderId, selectId, data);
|
|
|
} else {
|
|
|
- return await this.addNode(tenderId, selectId, {crid: reviseId});
|
|
|
+ return await this.addNode(tenderId, selectId, {crid: reviseId, check_calc: 1});
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -104,6 +105,7 @@ class BaseBillsSerivce extends TreeService {
|
|
|
data.order = children.length + 1;
|
|
|
data.full_path = selectData.full_path + '-' + data.ledger_id;
|
|
|
data.is_leaf = true;
|
|
|
+ data.check_calc = 1;
|
|
|
if (reviseId) data.crid = reviseId;
|
|
|
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
@@ -192,6 +194,7 @@ class BaseBillsSerivce extends TreeService {
|
|
|
if (data.is_leaf === undefined) {
|
|
|
data.is_leaf = true;
|
|
|
}
|
|
|
+ data.check_calc = 1;
|
|
|
if (reviseId) data.crid = reviseId;
|
|
|
const result = await this.transaction.insert(this.tableName, data);
|
|
|
|
|
@@ -365,6 +368,7 @@ class BaseBillsSerivce extends TreeService {
|
|
|
* @return {Promise<*>}
|
|
|
*/
|
|
|
async updateCalc(tenderId, data) {
|
|
|
+ const helper = this.ctx.helper;
|
|
|
// 简单验证数据
|
|
|
if (tenderId <= 0 || !this.ctx.tender) {
|
|
|
throw '标段不存在';
|
|
@@ -390,27 +394,31 @@ class BaseBillsSerivce extends TreeService {
|
|
|
throw '提交数据错误';
|
|
|
}
|
|
|
let updateData;
|
|
|
- if (row.unit) {
|
|
|
+
|
|
|
+ // 更新单位或单价,全部数据都应重算
|
|
|
+ if (row.unit !== undefined || row.unit_price !== undefined) {
|
|
|
if (row.sgfh_qty === undefined) { row.sgfh_qty = updateNode.sgfh_qty; }
|
|
|
if (row.sjcl_qty === undefined) { row.sjcl_qty = updateNode.sjcl_qty; }
|
|
|
if (row.qtcl_qty === undefined) { row.qtcl_qty = updateNode.qtcl_qty; }
|
|
|
if (row.deal_qty === undefined) { row.deal_qty = updateNode.deal_qty; }
|
|
|
}
|
|
|
+
|
|
|
+ // 项目节、工程量清单相关
|
|
|
if (row.b_code) {
|
|
|
row.dgn_qty1 = null;
|
|
|
row.dgn_qty2 = null;
|
|
|
row.code = null;
|
|
|
}
|
|
|
- if (row.code) {
|
|
|
- row.b_code = null;
|
|
|
- }
|
|
|
+ if (row.code) row.b_code = null;
|
|
|
+
|
|
|
if (this._checkCalcField(row)) {
|
|
|
let calcData = JSON.parse(JSON.stringify(row));
|
|
|
- const precision = this.ctx.helper.findPrecision(info.precision, row.unit ? row.unit : updateNode.unit);
|
|
|
+ calcData.check_calc = 1;
|
|
|
+ const precision = helper.findPrecision(info.precision, row.unit ? row.unit : updateNode.unit);
|
|
|
// 数量保留小数位数
|
|
|
- this.ctx.helper.checkFieldPrecision(calcData, qtyFields, precision.value);
|
|
|
+ helper.checkFieldPrecision(calcData, qtyFields, precision.value);
|
|
|
// 单位保留小数位数
|
|
|
- this.ctx.helper.checkFieldPrecision(calcData, upFields, info.decimal.up);
|
|
|
+ helper.checkFieldPrecision(calcData, upFields, info.decimal.up);
|
|
|
// 未提交单价则读取数据库单价
|
|
|
if (row.unit_price === undefined) calcData.unit_price = updateNode.unit_price;
|
|
|
// 计算
|
|
@@ -420,29 +428,29 @@ class BaseBillsSerivce extends TreeService {
|
|
|
if (row.sjcl_qty === undefined) calcData.sjcl_qty = updateNode.sjcl_qty;
|
|
|
if (row.qtcl_qty === undefined) calcData.qtcl_qty = updateNode.qtcl_qty;
|
|
|
if (row.deal_qty === undefined) calcData.deal_qty = updateNode.deal_qty;
|
|
|
- calcData.quantity = this.ctx.helper.sum([calcData.sgfh_qty, calcData.sjcl_qty, calcData.qtcl_qty]);
|
|
|
- calcData.sgfh_tp = this.ctx.helper.mul(calcData.sgfh_qty, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.sjcl_tp = this.ctx.helper.mul(calcData.sjcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.qtcl_tp = this.ctx.helper.mul(calcData.qtcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.total_price = this.ctx.helper.mul(calcData.quantity, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.deal_tp = this.ctx.helper.mul(calcData.deal_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.quantity = helper.sum([calcData.sgfh_qty, calcData.sjcl_qty, calcData.qtcl_qty]);
|
|
|
+ calcData.sgfh_tp = helper.mul(calcData.sgfh_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.sjcl_tp = helper.mul(calcData.sjcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.qtcl_tp = helper.mul(calcData.qtcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.total_price = helper.mul(calcData.quantity, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.deal_tp = helper.mul(calcData.deal_qty, calcData.unit_price, info.decimal.tp);
|
|
|
} else if (row.sgfh_tp !== undefined || row.sjcl_tp !== undefined || row.qtcl_tp !== undefined || row.deal_tp !== undefined) {
|
|
|
calcData.sgfh_qty = null;
|
|
|
calcData.sjcl_qty = null;
|
|
|
calcData.qtcl_qty = null;
|
|
|
calcData.quantity = null;
|
|
|
calcData.deal_qty = null;
|
|
|
- calcData.sgfh_tp = (row.sgfh_tp !== undefined) ? this.ctx.helper.round(calcData.row.sgfh_tp, info.decimal.tp) : updateNode.sgfh_tp;
|
|
|
- calcData.sjcl_tp = (row.sgfh_tp !== undefined) ? this.ctx.helper.round(calcData.row.sjcl_tp, info.decimal.tp) : updateNode.sjcl_tp;
|
|
|
- calcData.qtcl_tp = (row.sgfh_tp !== undefined) ? this.ctx.helper.round(calcData.row.qtcl_tp, info.decimal.tp) : updateNode.qtcl_tp;
|
|
|
- calcData.total_price = this.ctx.helper.sum([calcData.sgfh_tp, calcData.sjcl_tp, calcData.qtcl_tp]);
|
|
|
- calcData.deal_tp = (row.deal_tp !== undefined) ? this.ctx.helper.round(calcData.row.deal_tp, info.decimal.tp) : updateNode.deal_tp;
|
|
|
+ calcData.sgfh_tp = helper.round(row.sgfh_tp !== undefined ? calcData.row.sgfh_tp : updateNode.sgfh_tp, info.decimal.tp);
|
|
|
+ calcData.sjcl_tp = helper.round(row.sgfh_tp !== undefined ? calcData.row.sjcl_tp : updateNode.sjcl_tp, info.decimal.tp);
|
|
|
+ calcData.qtcl_tp = helper.round(row.sgfh_tp !== undefined ? calcData.row.qtcl_tp : updateNode.qtcl_tp, info.decimal.tp);
|
|
|
+ calcData.total_price = helper.sum([calcData.sgfh_tp, calcData.sjcl_tp, calcData.qtcl_tp]);
|
|
|
+ calcData.deal_tp = helper.round(row.deal_tp !== undefined ? calcData.row.deal_tp : updateNode.deal_tp, info.decimal.tp);
|
|
|
} else if (row.unit_price !== undefined) {
|
|
|
- calcData.sgfh_tp = this.ctx.helper.mul(calcData.sgfh_qty, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.sjcl_tp = this.ctx.helper.mul(calcData.sjcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.qtcl_tp = this.ctx.helper.mul(calcData.qtcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.total_price = this.ctx.helper.mul(calcData.quantity, calcData.unit_price, info.decimal.tp);
|
|
|
- calcData.deal_tp = this.ctx.helper.mul(calcData.deal_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.sgfh_tp = helper.mul(calcData.sgfh_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.sjcl_tp = helper.mul(calcData.sjcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.qtcl_tp = helper.mul(calcData.qtcl_qty, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.total_price = helper.mul(calcData.quantity, calcData.unit_price, info.decimal.tp);
|
|
|
+ calcData.deal_tp = helper.mul(calcData.deal_qty, calcData.unit_price, info.decimal.tp);
|
|
|
}
|
|
|
updateData = this._filterUpdateInvalidField(updateNode.id, calcData);
|
|
|
} else {
|
|
@@ -592,6 +600,7 @@ class BaseBillsSerivce extends TreeService {
|
|
|
sgfh_expr: d.sgfh_expr,
|
|
|
sjcl_expr: d.sjcl_expr,
|
|
|
qtcl_expr: d.qtcl_expr,
|
|
|
+ check_calc: 1,
|
|
|
};
|
|
|
for (const c of d.children) {
|
|
|
c.ledger_pid = newBills.ledger_id;
|