kpiplus
Version:
KPI+
1 lines • 2.07 kB
JavaScript
;var pnk=require("../models/pnk"),sokho=require("../models/sokho"),socai=require("../models/socai"),dmyt=require("../models/dmyt"),gt_thcppstk=require("../models/gt_thcppstk"),gt_ctgt=require("../models/gt_ctgt"),gt_sltk=require("../models/gt_sltk"),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(t,e){if(!(t&&t.thang&&t.nam&&t.id_app))return e("Lỗi: Tính năng này yêu cầu các tham số: thang,nam,id_app,ma_yt");let a=Number(t.thang),_=Number(t.nam);new Promise((e,n)=>{let r={id_app:t.id_app,nam:_,thang:a,yt_trung_gian:!1};t.ma_bp&&(r.ma_bp=t.ma_bp.toUpperCase()),t.ma_lsx&&(r.ma_lsx=t.ma_lsx.toUpperCase()),gt_ctgt.find(r).lean().exec((t,a)=>{if(t)return n(t);a.forEach(t=>{"2"==t.cong_tru&&(t.gt=-t.gt,t.gt_nt=-t.gt_nt,t.t_gt=-t.t_gt,t.t_gt_nt=-t.t_gt_nt)}),e(a)})}).then(t=>{return new Promise((e,a)=>{t.groupBy(["ma_sp","ma_bp","ma_lsx"],["gt","gt_nt","t_gt","t_gt_nt"],(t,_)=>{if(t)return a(t);e(_)})})}).then(n=>{let r=ctrlVouchers.PNK,s=underscore.pluck(n,"ma_sp"),m={id_app:t.id_app,ma_gd:"1",ma_ct:"PNK",ma_vt:{$in:s}};t.ma_bp&&(m.ma_bp=t.ma_bp.toUpperCase()),t.ma_lsx&&(m.ma_lsx=t.ma_lsx.toUpperCase());let d=moment(new Date(_,a-1,1)).startOf("date").toDate(),p=moment(new Date(_,a,0)).endOf("date").toDate();m.ngay_ct={$gte:d,$lte:p},sokho.find(m).lean().exec((t,a)=>{if(t)return e(t);a.groupBy(["id_ct"],["sl_nhap"],(t,a)=>{if(t)return e(t);async.map(a,(t,e)=>{pnk.findOne({_id:t.id_ct},(t,a)=>t?e(t):a?(a.details.forEach(t=>{t.ma_bp||(t.ma_bp=""),t.ma_lsx||(t.ma_lsx="");let e=underscore.find(n,e=>e.ma_sp==t.ma_vt&&e.ma_bp==t.ma_bp&&e.ma_lsx==t.ma_lsx);e&&(t.gia_von=e.gt,t.gia_von_nt=t.gia_von,t.tien_nhap=Math.round(t.gia_von*t.sl_nhap,0),t.tien_nhap_nt=t.tien_nhap)}),void a.save((t,a)=>{if(t)return e(t);r.contr.post(a,function(t){e(t)})})):e())},(t,a)=>{e(t,a)})})})}).catch(t=>{e(t)})};