|
@@ -8,13 +8,36 @@
|
|
|
* @version
|
|
|
*/
|
|
|
|
|
|
+const RptMemBase = require('./base');
|
|
|
+const bindData = {};
|
|
|
const ledger = require('../ledger');
|
|
|
|
|
|
-class reportMemoryBudget {
|
|
|
+class rptMemPaymentSafe extends RptMemBase {
|
|
|
constructor(ctx) {
|
|
|
- this.ctx = ctx;
|
|
|
- this.budget = null;
|
|
|
- this.getBudget = false;
|
|
|
+ super(ctx, bindData);
|
|
|
+ }
|
|
|
+
|
|
|
+ async doCheckSubProj(id) {
|
|
|
+ if (this.ctx.subProject) return;
|
|
|
+ this.ctx.subProject = await this.ctx.service.subProject.getDataById(id);
|
|
|
+ this.ctx.subProject.info = await this.ctx.service.subProjInfo.getInfo4Report(ctx.subProject.id);
|
|
|
+ if (!this.ctx.budget) {
|
|
|
+ this.ctx.budget = await this.ctx.service.budget.getCurBudget(this.ctx.subProject.budget_id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ async doCheckBudget(id) {
|
|
|
+ if (this.ctx.budget) return;
|
|
|
+ this.ctx.budget = await this.ctx.service.budget.getCurBudget(id);
|
|
|
+ if (!this.ctx.subProject) {
|
|
|
+ this.ctx.subProject = await this.ctx.service.subProject.getDataByCondition({ budget_id: id });
|
|
|
+ this.ctx.subProject.info = await this.ctx.service.subProjInfo.getInfo4Report(ctx.subProject.id);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ async doBeforeLoadReport(params) {
|
|
|
+ await this.doCheckSubProj(params.sp_id);
|
|
|
+ await this.doCheckBudget(params.budget_id);
|
|
|
}
|
|
|
|
|
|
async budgetGai(bid, showLevel = false) {
|
|
@@ -22,21 +45,24 @@ class reportMemoryBudget {
|
|
|
const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
|
|
|
tree.loadDatas(gai);
|
|
|
tree.calculateAll();
|
|
|
- return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ // return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ return tree.getDefaultDatas();
|
|
|
}
|
|
|
async budgetYu(bid, showLevel = false) {
|
|
|
const yu = await this.ctx.service.budgetYu.getAllDataByCondition({ where: { bid } });
|
|
|
const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
|
|
|
tree.loadDatas(yu);
|
|
|
tree.calculateAll();
|
|
|
- return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ // return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ return tree.getDefaultDatas();
|
|
|
}
|
|
|
async budgetGu(bid, showLevel = false) {
|
|
|
const gu = await this.ctx.service.budgetGu.getAllDataByCondition({ where: { bid } });
|
|
|
const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: ['total_price'] });
|
|
|
tree.loadDatas(gu);
|
|
|
tree.calculateAll();
|
|
|
- return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ // return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ return tree.getDefaultDatas();
|
|
|
}
|
|
|
async budgetFinal(bid, showLevel = false) {
|
|
|
const budget = this.ctx.budget && this.ctx.budget.id === bid
|
|
@@ -46,39 +72,36 @@ class reportMemoryBudget {
|
|
|
const final = await this.ctx.service.budgetFinal.getAllDataByCondition({ where: { final_id: budget.final_id } });
|
|
|
const tree = new ledger.billsTree(this.ctx, { id: 'tree_id', pid: 'tree_pid', order: 'order', level: 'level', rootId: -1, calcFields: [] });
|
|
|
tree.loadDatas(final);
|
|
|
- return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
- }
|
|
|
-
|
|
|
- async _getTenderBudget(tid) {
|
|
|
- if (this.getBudget) return;
|
|
|
-
|
|
|
- const budgets = await this.ctx.service.budget.getBudget(true);
|
|
|
- this.budget = budgets.find(x => {
|
|
|
- const relaTender = x.rela_tender.split(',');
|
|
|
- return relaTender.indexOf(tid + '') >= 0;
|
|
|
- });
|
|
|
- this.getBudget = true;
|
|
|
- }
|
|
|
-
|
|
|
- async tenderGai(tid, filter = false) {
|
|
|
- await this._getTenderBudget(tid);
|
|
|
- return this.budget ? await this.budgetGai(this.budget.id, filter) : [];
|
|
|
- }
|
|
|
-
|
|
|
- async tenderYu(tid, filter = false) {
|
|
|
- await this._getTenderBudget(tid);
|
|
|
- return this.budget ? await this.budgetYu(this.budget.id, filter) : [];
|
|
|
- }
|
|
|
-
|
|
|
- async tenderGu(tid, filter = false) {
|
|
|
- await this._getTenderBudget(tid);
|
|
|
- return this.budget ? await this.budgetGu(this.budget.id, filter) : [];
|
|
|
+ // return showLevel ? tree.getDefaultDatasByLevel(this.ctx.tender.rpt_show_level) : tree.getDefaultDatas();
|
|
|
+ return tree.getDefaultDatas();
|
|
|
}
|
|
|
|
|
|
- async tenderFinal(tid, filter = false) {
|
|
|
- await this._getTenderBudget(tid);
|
|
|
- return this.budget ? await this.budgetFinal(this.budget.id, filter) : [];
|
|
|
+ getCommonData(params, tableName, fields, customDefine, customSelect) {
|
|
|
+ switch (tableName) {
|
|
|
+ case 'mem_info':
|
|
|
+ return this.ctx.subProject.info;
|
|
|
+ case 'mem_qty_info':
|
|
|
+ return [...this.ctx.subProject.info.main_quantity, ...this.ctx.subProject.info.gcl_quantity];
|
|
|
+ case 'mem_budget_gu':
|
|
|
+ return this.budgetGu(this.ctx.budget.id);
|
|
|
+ case 'mem_budget_gai':
|
|
|
+ return this.budgetGai(this.ctx.budget.id);
|
|
|
+ case 'mem_budget_yu':
|
|
|
+ return this.budgetYu(this.ctx.budget.id);
|
|
|
+ case 'mem_budget_final':
|
|
|
+ return this.budgetFinal(this.ctx.budget.id);
|
|
|
+ case 'mem_budget_gu_filter':
|
|
|
+ return this.budgetGu(this.ctx.budget.id, true);
|
|
|
+ case 'mem_budget_gai_filter':
|
|
|
+ return this.budgetGai(this.ctx.budget.id, true);
|
|
|
+ case 'mem_budget_yu_filter':
|
|
|
+ return this.budgetYu(this.ctx.budget.id, true);
|
|
|
+ case 'mem_budget_final_filter':
|
|
|
+ return this.budgetFinal(this.ctx.budget.id, true);
|
|
|
+ default:
|
|
|
+ return [];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-module.exports = reportMemoryBudget;
|
|
|
+module.exports = rptMemPaymentSafe;
|