|
@@ -21,9 +21,10 @@ const billsUtils = require('../lib/bills_utils');
|
|
|
|
|
|
class BaseBillsSerivce extends TreeService {
|
|
|
|
|
|
- constructor (ctx, setting, relaPosName) {
|
|
|
+ constructor (ctx, setting, relaPosName, relaAncGclName) {
|
|
|
super(ctx, setting);
|
|
|
this.relaPosService = relaPosName;
|
|
|
+ this.relaAncGclService = relaAncGclName;
|
|
|
}
|
|
|
|
|
|
async getFinalData(mid, columns) {
|
|
@@ -41,6 +42,14 @@ class BaseBillsSerivce extends TreeService {
|
|
|
return this.ctx.service[this._posName];
|
|
|
}
|
|
|
|
|
|
+ set relaAncGclService(ancGclName) {
|
|
|
+ this._ancGclName = ancGclName;
|
|
|
+ }
|
|
|
+
|
|
|
+ get relaAncGclService() {
|
|
|
+ return this._ancGclName ? this.ctx.service[this._ancGclName] : undefined;
|
|
|
+ }
|
|
|
+
|
|
|
// 继承方法
|
|
|
clearParentingData(data) {
|
|
|
data.unit_price = null;
|
|
@@ -570,12 +579,13 @@ class BaseBillsSerivce extends TreeService {
|
|
|
});
|
|
|
if (pd[0].ledger_pid !== pasteData[0][0].ledger_pid) throw '复制数据错误:仅可操作同层节点';
|
|
|
}
|
|
|
+ const userId = this.ctx.session.sessionUser.accountId;
|
|
|
this.newBills = false;
|
|
|
const selectData = await this.getDataByKid(tid, sid);
|
|
|
if (!selectData) throw '粘贴数据错误';
|
|
|
const newParentPath = selectData.full_path.replace(selectData.ledger_id, '');
|
|
|
|
|
|
- const pasteBillsData = [], pastePosData = [], leafBillsId = [];
|
|
|
+ const pasteBillsData = [], pastePosData = [], pasteAncGclData = [], leafBillsId = [];
|
|
|
const tpDecimal = this.ctx.tender.info.decimal.tp;
|
|
|
let maxId = await this._getMaxLid(this.ctx.tender.id);
|
|
|
for (const [i, pd] of pasteData.entries()) {
|
|
@@ -665,6 +675,19 @@ class BaseBillsSerivce extends TreeService {
|
|
|
newBills.total_price = this.ctx.helper.mul(newBills.quantity, newBills.unit_price, tpDecimal);
|
|
|
newBills.deal_tp = this.ctx.helper.mul(newBills.deal_qty, newBills.unit_price, tpDecimal);
|
|
|
if (defaultData) this.ctx.helper._.assignIn(newBills, defaultData);
|
|
|
+ if (d.ancGcl && d.ancGcl.length > 0) {
|
|
|
+ for (const gcl of d.ancGcl) {
|
|
|
+ const newAncGcl = {
|
|
|
+ id: this.uuid.v4(), tid: tid, lid: newBills.id,
|
|
|
+ add_user_id: userId, update_user_id: userId,
|
|
|
+ name: gcl.name, unit: gcl.unit, g_order: gcl.g_order, is_aux: gcl.is_aux,
|
|
|
+ quantity: gcl.quantity, expr: gcl.expr,
|
|
|
+ drawing_code: gcl.drawing_code, memo: gcl.memo,
|
|
|
+ };
|
|
|
+ if (defaultData) this.ctx.helper._.assignIn(newAncGcl, defaultData);
|
|
|
+ pasteAncGclData.push(newAncGcl);
|
|
|
+ }
|
|
|
+ }
|
|
|
pbd.push(newBills);
|
|
|
}
|
|
|
for (const d of pbd) {
|
|
@@ -692,6 +715,7 @@ class BaseBillsSerivce extends TreeService {
|
|
|
if (pastePosData.length > 0) {
|
|
|
await this.transaction.insert(this.relaPosService.tableName, pastePosData);
|
|
|
}
|
|
|
+ if (pasteAncGclData.length > 0 && this.relaAncGclService) await this.transaction.insert(this.relaAncGclService.tableName, pasteAncGclData);
|
|
|
await this.transaction.commit();
|
|
|
} catch (err) {
|
|
|
await this.transaction.rollback();
|
|
@@ -700,9 +724,10 @@ class BaseBillsSerivce extends TreeService {
|
|
|
|
|
|
// 查询应返回的结果
|
|
|
const updateData = await this.getNextsData(selectData.tender_id, selectData.ledger_pid, selectData.order + pasteData.length);
|
|
|
+ const ancGcl = this.relaAncGclService ? { add: pasteAncGclData } : undefined;
|
|
|
return {
|
|
|
ledger: { create: pasteBillsData, update: updateData },
|
|
|
- pos: pastePosData,
|
|
|
+ pos: pastePosData, ancGcl,
|
|
|
};
|
|
|
}
|
|
|
|