|
@@ -11,6 +11,7 @@
|
|
|
const RptMemBase = require('./base');
|
|
|
const bindData = {};
|
|
|
const changeConst = require('../../const/change');
|
|
|
+const Ledger = require('../ledger');
|
|
|
|
|
|
class rptMemChange extends RptMemBase {
|
|
|
constructor(ctx) {
|
|
@@ -84,10 +85,32 @@ class rptMemChange extends RptMemBase {
|
|
|
return changeBills;
|
|
|
}
|
|
|
|
|
|
- async getChangeLedgerBillsData(showLevel) {
|
|
|
- try {
|
|
|
- await this.ctx.service.tender.checkTender(tid);
|
|
|
+ _getNewBillsTree(calcFields) {
|
|
|
+ return new Ledger.billsTree(this.ctx, {
|
|
|
+ id: 'ledger_id',
|
|
|
+ pid: 'ledger_pid',
|
|
|
+ order: 'order',
|
|
|
+ level: 'level',
|
|
|
+ rootId: -1,
|
|
|
+ keys: ['id', 'tender_id', 'ledger_id'],
|
|
|
+ stageId: 'id',
|
|
|
+ calcFields: calcFields || ['deal_tp', 'total_price', 'sgfh_tp', 'sjcl_tp', 'qtcl_tp'],
|
|
|
+ calc: function (node, helper) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
+ _calcLeafXmjRela(billsTree) {
|
|
|
+ for (const node of billsTree.nodes) {
|
|
|
+ if (node.b_code) {
|
|
|
+ const leafXmj = billsTree.getLeafXmjParent(node);
|
|
|
+ node.leaf_xmj_id = leafXmj ? leafXmj.id : -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ async getChangeLedgerBillsData(fields, showLevel) {
|
|
|
+ try {
|
|
|
const billsData = await this.ctx.service.ledger.getData(this.ctx.tender.id);
|
|
|
const changeBillsData = await this.ctx.service.changeLedger.getAllDataByCondition({ where: { ccid: this.ctx.change.id } });
|
|
|
billsData.push(...changeBillsData);
|
|
@@ -96,7 +119,7 @@ class rptMemChange extends RptMemBase {
|
|
|
billsTree.loadDatas(billsData);
|
|
|
billsTree.calculateAll();
|
|
|
|
|
|
- if (this._checkFieldsExist(fields, [''])) {
|
|
|
+ if (this._checkFieldsExist(fields, ['leaf_xmj_id'])) {
|
|
|
this._calcLeafXmjRela(billsTree);
|
|
|
}
|
|
|
|
|
@@ -111,10 +134,17 @@ class rptMemChange extends RptMemBase {
|
|
|
const posData = await this.ctx.service.pos.getAllDataByCondition({ where: {tid: this.ctx.tender.id }});
|
|
|
const changePosData = await this.ctx.service.changePos.getAllDataByCondition({ where: { ccid: this.ctx.change.id } });
|
|
|
posData.push(...changePosData);
|
|
|
- this.pos.loadDatas(posData);
|
|
|
- this.pos.calculateAll();
|
|
|
|
|
|
- return this.pos.getDatas();
|
|
|
+ const pos = new Ledger.pos({
|
|
|
+ id: 'id', ledgerId: 'lid',
|
|
|
+ updateFields: ['contract_qty', 'qc_qty', 'postil'],
|
|
|
+ calc: function (p) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ pos.loadDatas(posData);
|
|
|
+ pos.calculateAll();
|
|
|
+
|
|
|
+ return pos.getDatas();
|
|
|
} catch (err) {
|
|
|
return [];
|
|
|
}
|
|
@@ -137,9 +167,9 @@ class rptMemChange extends RptMemBase {
|
|
|
case 'mem_tender_info':
|
|
|
return [this.ctx.tender.info];
|
|
|
case 'mem_change_ledger_bills':
|
|
|
- return this.getChangeLedgerBillsData();
|
|
|
+ return this.getChangeLedgerBillsData(fields);
|
|
|
case 'mem_change_ledger_bills_filter':
|
|
|
- return this.getChangeLedgerBillsData(true);
|
|
|
+ return this.getChangeLedgerBillsData(fields, true);
|
|
|
case 'mem_change_ledger_pos':
|
|
|
return this.getChangeLedgerPosData();
|
|
|
default:
|