UNPKG

kpiplus

Version:

KPI+

1 lines 2.66 kB
var qts=require("../models/qts"),qtsdieuchinh=require("../models/qts_dieuchinh"),sotinhkh=require("../models/sotinhkh"),arrayfuncs=require("./array-funcs"),async=require("async"),underscore=require("underscore"),moment=require("moment");module.exports=function(n,i){if(n&&n.id_ts&&n.thang&&n.nam){var _=n.id_ts,t=n.thang,a=n.nam,h=n.id_app,e=n.tinh_kh_theo_ngay,r=moment(new Date(a,t,0)).endOf("date").toDate(),u=moment(new Date(a,t-1,1)).startOf("date").toDate(),g="this.nam *12+ this.ky<="+(12*a+t),o=function(n,i){var _="this.nam*12 + this.thang<"+(12*a+t).toString(),g={id_ts:n.id_ts,id_app:h,$where:_};void 0===n.dieuchinh&&null===n.dieuchinh||(n.dieuchinh=!1),g.dieuchinh=n.dieuchinh,sotinhkh.find(g).lean().exec(function(_,t){if(_)return i(_);var a=0,h=0,g=t.length;g>0?(a=t.csum("gia_tri_kh_ky"),h=n.gia_tri_con_lai-a,a=n.gia_tri_da_kh+a):(a=n.gia_tri_da_kh,h=n.gia_tri_con_lai);var o=n.so_ky_kh-g;if(o<0||h<=0)return i(null,null);var s=n.nguyen_gia,c=0;0===o?c=h:(c=n.tinh_kh_gia_tri_con_lai?Math.round(h/o,0):n.gia_tri_kh_ky,e&&n.so_ngay_of_thang!=n.so_ngay_kh&&(c=Math.round(c/n.so_ngay_of_thang*n.so_ngay_kh,0)),n.lam_tron_kh<=0&&(n.lam_tron_kh=1),h-c<=n.lam_tron_kh&&(c=h)),i(null,{nguyen_gia:s,gia_tri_da_kh:a,gia_tri_con_lai:h,gia_tri_kh_ky:c,id_ts:n.id_ts,dieuchinh:n.dieuchinh,ngay_dau_thang:u,ngay_cuoi_thang:r,so_ngay_kh:n.so_ngay_kh})})};async.parallel({ts:function(n){qts.findOne({_id:_}).lean().exec(function(i,_){if(i)return n(i);if(!_)return n("Tài sản này không tồn tại");if(_.so_ky_kh<=0)return n(null,null);if(_.ngay_tinh_kh>r)return n(null,null);if(_.ngay_giam&&!_.ngay_thoi_kh&&(_.ngay_thoi_kh=_.ngay_giam),_.ngay_thoi_kh&&_.ngay_thoi_kh<u)return n(null,null);_.ngay_thoi_kh&&_.ngay_thoi_kh<r&&(r=_.ngay_thoi_kh),_.ngay_kh.getMonth()*_.ngay_kh.getFullYear()==u.getMonth()*u.getFullYear()&&(u=_.ngay_kh);var t=r.getDate();u.getDate();_.so_ngay_of_thang=t,_.so_ngay_kh=t-u.getDate()+1,_.nguyen_gia=_.details.csum("nguyen_gia"),_.gia_tri_da_kh=_.details.csum("gia_tri_da_kh"),_.gia_tri_con_lai=_.details.csum("gia_tri_con_lai"),_.gia_tri_kh_ky=_.details.csum("gia_tri_kh_ky"),_.id_ts=_._id,o(_,function(i,_){n(i,_)})})},dieuchinh:function(n){qtsdieuchinh.find({id_ts:_,$where:g}).sort({ngay_ct:-1}).lean().exec(function(i,_){return i?n(i):0===_.length?n():void async.map(_,function(n,i){n.dieuchinh=!0,n.so_ngay_of_thang=r.getDate(),n.so_ngay_kh=n.so_ngay_of_thang,o(n,function(n,_){i(n,_)})},function(i,_){n(i,_)})})}},function(n,_){if(n)return i(n);var t=[];_.ts&&t.push(_.ts),_.dieuchinh&&_.dieuchinh.forEach(function(n){n&&t.push(n)}),i(null,t)})}else i("Lỗi: Báo cáo này yêu cầu các tham số: id_ts,thang,nam")};