kpiplus
Version:
KPI+
1 lines • 2.74 kB
JavaScript
;var sokho=require("../models/sokho"),socai=require("../models/socai"),dmyt=require("../models/dmyt"),gt_thcppstk=require("../models/gt_thcppstk"),spdd_dk=require("../models/spdd_dk"),spdd_ck=require("../models/spdd_ck"),ytdd_dk=require("../models/ytdd_dk"),ytdd_ck=require("../models/ytdd_ck"),arrayfuncs=require("./array-funcs"),async=require("async"),underscore=require("underscore"),moment=require("moment");module.exports=function(e,t){if(!(e&&e.thang&&e.nam&&e.id_app))return t("Lỗi: Tính năng này yêu cầu các tham số: thang,nam,id_app");let a=Number(e.thang),n=Number(e.nam),_=moment(new Date(n,a-1,1)).startOf("date").toDate(),r=moment(new Date(n,a,0)).endOf("date").toDate();dmyt.find({id_app:e.id_app}).lean().exec((a,n)=>{if(a)return t(a);let d=[];async.map(n,(t,a)=>{async.parallel({dk:a=>{new Promise((a,n)=>{let _={id_app:e.id_app,nam:e.nam,thang:e.thang,ma_yt:t.ma_yt};e.ma_bp&&(_.ma_bp=e.ma_bp.toUpperCase()),e.ma_lsx&&(_.ma_lsx=e.ma_lsx.toUpperCase()),ytdd_dk.find(_).lean().exec((e,t)=>{if(e)return n(e);for(let e of t)e.dd_dk_nt=e.tien_nt,e.dd_dk=e.tien,d.push(e);a(t)})}).then(n=>{let _={id_app:e.id_app,nam:e.nam,thang:e.thang-1,ma_yt:t.ma_yt};e.ma_bp&&(_.ma_bp=e.ma_bp.toUpperCase()),e.ma_lsx&&(_.ma_lsx=e.ma_lsx.toUpperCase()),0===_.thang&&(_.thang=12,_.nam=_.nam-1),ytdd_ck.find(_).lean().exec((e,t)=>{if(e)return a(e);for(let e of t){underscore.find(n,t=>t.ma_yt==e.ma_yt&&t.ma_sp==e.ma_sp&&t.ma_bp==e.ma_bp&&t.ma_lsx==e.ma_lsx)||(e.dd_dk_nt=tien_nt,e.dd_dk=tien,d.push(e))}a(null)})}).catch(e=>{a(e)})},ps:a=>{let n,p={id_app:e.id_app,ngay_ct:{$gte:_,$lte:r}};e.ma_bp&&(p.ma_bp=e.ma_bp.toUpperCase()),e.ma_lsx&&(p.ma_lsx=e.ma_lsx.toUpperCase()),t.th_nvl?(n=sokho,underscore.isArray(t.tk_no)&&t.tk_no.length>0&&(p.tk_du={$regex:t.tk_no.reg(),$options:"i"}),underscore.isArray(t.tk_co)&&t.tk_co.length>0&&(p.tk_vt={$regex:t.tk_co.reg(),$options:"i"})):(n=socai,underscore.isArray(t.tk_no)&&t.tk_no.length>0&&(p.tk_no={$regex:t.tk_no.reg(),$options:"i"}),underscore.isArray(t.tk_co)&&t.tk_co.length>0&&(p.tk_co={$regex:t.tk_co.reg(),$options:"i"})),n.find(p).lean().exec((e,n)=>{if(e)return a(e);let _,r=["ma_bp","ma_lsx"];t.th_sp&&r.push("ma_sp"),t.th_nvl?(r.push("ma_vt"),_=[{name:"ps_tk_nt",value:"tien_xuat_nt"},{name:"ps_tk",value:"tien_xuat"}]):_=[{name:"ps_tk_nt",value:"tien_nt"},{name:"ps_tk",value:"tien"}],n.groupBy(r,_,(e,n)=>{if(e)return a(e);n.forEach(e=>{e.ma_yt=t.ma_yt}),d=d.concat(n),a(null,n)})})}},function(e,t){a(e,t)})},(a,n)=>{if(a)return t(a);d.groupBy(["ma_yt","ma_sp","ma_bp","ma_lsx","ma_nvl"],["dd_dk_nt","dd_dk","ps_tk_nt","ps_tk"],(a,n)=>{if(a)return t(a);for(let t of n)t.nam=e.nam,t.thang=e.thang,t.id_app=e.id_app;gt_thcppstk.create(n,(e,a)=>{t(e,n)})})})})};