kpiplus
Version:
KPI+
1 lines • 1.64 kB
JavaScript
var cdvt=require("../models/cdvt"),sokho=require("../models/sokho"),arrayfuncs=require("./array-funcs"),async=require("async"),underscore=require("underscore"),utils=require("./utils"),moment=require("moment");module.exports=function(a,t){if(!a.ngay&&a.tu_ngay&&(a.ngay=a.tu_ngay),a&&a.ngay&&a.id_app){var n=a.ma_dvcs,e=a.ma_kho,_=a.ma_vt;underscore.isArray(_)&&(_={$in:_});var r=moment(new Date(a.ngay)).startOf("date").toDate(),u=r.getFullYear(),m=moment(r).startOf("year").toDate(),o=a.id_app;async.parallel({dn:t=>{var r={id_app:o,nam:u};_&&(r.ma_vt=_),e&&(r.ma_kho=e),n&&(r.ma_dvcs=n),a.ma_lo&&(r.ma_lo=a.ma_lo),a.han_sd&&(r.han_sd=a.han_sd),a.ma_tt1&&(r.ma_tt1=a.ma_tt1),a.ma_tt2&&(r.ma_tt2=a.ma_tt2),a.ma_tt3&&(r.ma_tt3=a.ma_tt3),cdvt.find(r).lean().exec(function(a,n){a?t(a):t(null,n)})},ps:t=>{var u={id_app:o,ngay_ct:{$gte:m,$lt:r}};_&&(u.ma_vt=_),e&&(u.ma_kho=e),n&&(u.ma_dvcs=n),a.ma_lo&&(u.ma_lo=a.ma_lo),a.han_sd&&(u.han_sd=a.han_sd),a.ma_tt1&&(u.ma_tt1=a.ma_tt1),a.ma_tt2&&(u.ma_tt2=a.ma_tt2),a.ma_tt3&&(u.ma_tt3=a.ma_tt3),sokho.find(u).lean().exec(function(a,n){a?t(a):t(null,n)})}},(n,e)=>{if(n)return void t(n);let _=e.dn.concat(e.ps),r=a.groupBy;if(r||(r=["ma_vt"]),!underscore.isArray(r)&&r.indexOf("[")>=0)try{r=JSON.parse(r)}catch(a){}_.groupBy(r,["sl_nhap","sl_xuat","ton00","du00","tien_nhap","tien_xuat"],(a,n)=>{if(a)return t(a);for(let a of n)a.ton00=utils.round(a.ton00+a.sl_nhap-a.sl_xuat,2),a.du00=utils.round(a.du00,0)+utils.round(a.tien_nhap,0)-utils.round(a.tien_xuat,0),a.sl_nhap=0,a.sl_xuat=0,a.tien_nhap=0,a.tien_xuat=0;t(null,n)})})}else t("Báo cáo này yêu cầu các tham số: ngay,id_app")};