flexbiz-server
Version:
Flexible Server
14 lines (13 loc) • 6.23 kB
JavaScript
const async=require("async"),qts=global.getModel("qts"),qts_dieuchinh=global.getModel("qts_dieuchinh"),sotinhkh=global.getModel("sotinhkh"),controller=require("../../controllers/controllerRPT"),moment=require("moment");
module.exports=function($router$$){new controller($router$$,"chitiettaisan",function($req$$,$callback$$){let $condition$$=$req$$.query;$condition$$.nam=$condition$$.nam?Number($condition$$.nam):(new Date).getFullYear();$condition$$.thang=$condition$$.thang?Number($condition$$.thang):(new Date).getMonth()+1;let $id_app$$=$condition$$.id_app,$ngay_cuoi_thang$$,$ngay_dau_thang$$,$toi_ky$$;$ngay_cuoi_thang$$=$condition$$.den_ngay?moment($condition$$.den_ngay).endOf("date").toDate():moment(new Date($condition$$.nam,
$condition$$.thang-1,15)).endOf("month").toDate();$toi_ky$$=$ngay_cuoi_thang$$.getMonth()+1;$ngay_dau_thang$$=moment(new Date($condition$$.nam,$condition$$.thang-1,15)).startOf("month").toDate();async.series({id_tss:function($callback$$){let $q_ts$$={id_app:$id_app$$};$q_ts$$.ngay_tang={$lte:$ngay_cuoi_thang$$};$q_ts$$.$or=[{ngay_giam:null}];if($condition$$.tu_ngay){let $tu_ngay$$=moment($condition$$.tu_ngay).startOf("date").toDate();$q_ts$$.ngay_tang.$gte=moment($condition$$.tu_ngay).startOf("date").toDate();
$q_ts$$.$or.ngay_giam={$gte:$tu_ngay$$}}else $q_ts$$.$or.ngay_giam={$gte:$ngay_dau_thang$$};$condition$$.ma_kho&&($q_ts$$.ma_kho=$condition$$.ma_kho);$condition$$.ma_loai_ts&&($q_ts$$.ma_loai_ts=$condition$$.ma_loai_ts);$condition$$.ma_gd&&($q_ts$$.ma_gd=$condition$$.ma_gd);$condition$$.id_ts&&($q_ts$$.id_ts=$condition$$.id_ts);qts.find($q_ts$$).lean().exec(function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$callback$$(null,$rs$$)})}},function($e$$,$rs$$){if($e$$)return $callback$$($e$$);const $ts$$=
$rs$$.id_tss,$dsts$$=$ts$$.map($r$$=>$r$$._id.toString());async.series({khauhao_nt:function($callback$$){sotinhkh.find({id_app:$id_app$$,nam:{$lte:$condition$$.nam-1},id_ts:{$in:$dsts$$}}).lean().exec(async function($e$$,$kh$$){if($e$$)return $callback$$($e$$);await $kh$$.filter($r$$=>$r$$.ma_tang_giam_ts).asyncJoinModel2($id_app$$,"dmtanggiamts",{where:"ma_tang_giam_ts",fields:{kieu_dc:"kieu"}});$kh$$.forEach($r$$=>{$r$$.kieu_dc=="2"&&($r$$.nguyen_gia=0-$r$$.nguyen_gia,$r$$.gia_tri_da_kh=0-$r$$.gia_tri_da_kh,
$r$$.gia_tri_con_lai=0-$r$$.gia_tri_con_lai,$r$$.gia_tri_kh_ky=0-$r$$.gia_tri_kh_ky)});$kh$$.groupBy("id_ts",["gia_tri_kh_ky"],function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$||=[];$callback$$(null,$rs$$)})})},khauhao_nn:function($callback$$){sotinhkh.find({id_app:$id_app$$,nam:$condition$$.nam,thang:{$lte:$toi_ky$$},id_ts:{$in:$dsts$$}}).lean().exec(async function($e$$,$kh$$){if($e$$)return $callback$$($e$$);await $kh$$.filter($r$$=>$r$$.ma_tang_giam_ts).asyncJoinModel2($id_app$$,"dmtanggiamts",
{where:"ma_tang_giam_ts",fields:{kieu_dc:"kieu"}});$kh$$.forEach($r$$=>{$r$$.kieu_dc=="2"&&($r$$.nguyen_gia=0-$r$$.nguyen_gia,$r$$.gia_tri_da_kh=0-$r$$.gia_tri_da_kh,$r$$.gia_tri_con_lai=0-$r$$.gia_tri_con_lai,$r$$.gia_tri_kh_ky=0-$r$$.gia_tri_kh_ky)});$kh$$.groupBy("id_ts",["gia_tri_kh_ky"],function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$||=[];$callback$$(null,$rs$$)})})},nguyengia:function($callback$$){const $q$$={id_ts:{$in:$dsts$$}};$q$$.$or=[{nam:{$lt:$condition$$.nam}},{nam:$condition$$.nam,
ky:{$lte:$toi_ky$$}}];qts_dieuchinh.find($q$$).lean().exec(async function($e$$,$rs$$){if($e$$)return $callback$$($e$$);await $rs$$.asyncJoinModel2($id_app$$,"dmtanggiamts",{where:"ma_tang_giam_ts",fields:{kieu_dc:"kieu"}});$ts$$.forEach(function($ts$$){let $nguyen_gia_dc$$=$rs$$.filter($r$$=>$r$$.id_ts==$ts$$._id.toString()).map($r$$=>$r$$.kieu_dc=="2"?0-$r$$.nguyen_gia:$r$$.nguyen_gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$gia_tri_da_kh_dc$$=$rs$$.filter($r$$=>$r$$.id_ts==$ts$$._id.toString()).map($r$$=>
$r$$.kieu_dc=="2"?0-$r$$.gia_tri_da_kh:$r$$.gia_tri_da_kh).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$gia_tri_con_lai_dc$$=$rs$$.filter($r$$=>$r$$.id_ts==$ts$$._id.toString()).map($r$$=>$r$$.kieu_dc=="2"?0-$r$$.gia_tri_con_lai:$r$$.gia_tri_con_lai).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$ts$$.nguyen_gia=$ts$$.details.csum("nguyen_gia")+$nguyen_gia_dc$$;$ts$$.gia_tri_da_kh=$ts$$.details.csum("gia_tri_da_kh")+$gia_tri_da_kh_dc$$;$ts$$.gia_tri_con_lai=$ts$$.details.csum("gia_tri_con_lai")+$gia_tri_con_lai_dc$$});$callback$$(null,
$ts$$)})}},async function($e$$,$rs$$){if($e$$)return $callback$$($e$$);let $stt$$=1;$ts$$.forEach(function($r$$){$r$$.gia_tri_kh_nam_nay=$rs$$.khauhao_nn.csum("gia_tri_kh_ky",{id_ts:$r$$._id.toString()});$r$$.gia_tri_kh_nam_truoc=$r$$.gia_tri_da_kh+$rs$$.khauhao_nt.csum("gia_tri_kh_ky",{id_ts:$r$$._id.toString()});$r$$.gia_tri_kh_luy_ke=$r$$.gia_tri_kh_nam_nay+$r$$.gia_tri_kh_nam_truoc;$r$$.gia_tri_con_lai=$r$$.nguyen_gia-$r$$.gia_tri_kh_luy_ke;$r$$.gia_tri_kh_ky=$r$$.so_ky_kh?$r$$.nguyen_gia/$r$$.so_ky_kh:
0;$r$$.stt=$stt$$;$stt$$+=1});async.mapLimit($ts$$,20,($t$$,$callback$$)=>{setImmediate(async()=>{let $bpsd$$;try{$bpsd$$=await qts.bophansudung($condition$$.id_app,$t$$._id.toString(),$ngay_cuoi_thang$$)}catch($e$$){$bpsd$$=[{ma_bp:$t$$.ma_bp,so_luong:$t$$.so_luong||1}]}$bpsd$$=$bpsd$$.map($bp$$=>{let $he_so$$=$bp$$.so_luong/($t$$.so_luong||1);$bp$$={...$t$$,...$bp$$};$bp$$.nguyen_gia*=$he_so$$;$bp$$.gia_tri_kh_nam_nay*=$he_so$$;$bp$$.gia_tri_kh_nam_truoc*=$he_so$$;$bp$$.gia_tri_da_kh*=$he_so$$;
$bp$$.gia_tri_kh_luy_ke*=$he_so$$;$bp$$.gia_tri_con_lai*=$he_so$$;return $bp$$});$callback$$(null,$bpsd$$)})},async($e$$,$rs$$)=>{$e$$=$rs$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$condition$$.ma_bp&&($e$$=$e$$.filter($r$$=>$r$$.ma_bp.toUpperCase()==$condition$$.ma_bp.toUpperCase()));await $e$$.filter($t$$=>$t$$.ma_bp).asyncJoinModel2($condition$$.id_app,"dmbp",{where:"ma_bp",fields:"ten_bp"});await $e$$.filter($t$$=>$t$$.ma_nv).asyncJoinModel2($condition$$.id_app,"dmnv",{where:"ma_nv",fields:"ten_nv"});
$rs$$={bold:!0,ten_ts:"T\u1ed5ng c\u1ed9ng",nguyen_gia:$ts$$.csum("nguyen_gia"),gia_tri_kh_nam_nay:$ts$$.csum("gia_tri_kh_nam_nay"),gia_tri_kh_nam_truoc:$ts$$.csum("gia_tri_kh_nam_truoc"),gia_tri_da_kh:$ts$$.csum("gia_tri_da_kh"),gia_tri_kh_luy_ke:$ts$$.csum("gia_tri_kh_luy_ke"),gia_tri_con_lai:$ts$$.csum("gia_tri_con_lai")};$callback$$(null,$e$$.concat($rs$$))})})})})};