flexbiz-server
Version:
Flexible Server
13 lines (12 loc) • 5.58 kB
JavaScript
const qts=global.getModel("qts"),qtsdieuchinh=global.getModel("qts_dieuchinh"),sotinhkh=global.getModel("sotinhkh"),async=require("async"),moment=require("moment");
module.exports=async function($app_condition$$,$fn$$){if($app_condition$$&&$app_condition$$.id_ts&&$app_condition$$.thang&&$app_condition$$.nam){var $id_ts$$=$app_condition$$.id_ts,$thang$$=Number($app_condition$$.thang),$nam$$=Number($app_condition$$.nam),$id_app$$=$app_condition$$.id_app,$tinh_kh_theo_ngay$$=$app_condition$$.tinh_kh_theo_ngay,$ngay_dau_thang$$=moment([$nam$$,$thang$$-1,1]).startOf("month").toDate(),$ngay_cuoi_thang$$=moment($ngay_dau_thang$$).endOf("month").toDate();$app_condition$$=
await global.getModel("app").findOne({_id:$app_condition$$.id_app},{options:1}).lean();if(!$app_condition$$)return $fn$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $f_tien$$=($app_condition$$.options||{}).f_tien||0;if(await sotinhkh.findOne({id_app:$id_app$$,id_ts:$id_ts$$,ngay_cuoi_thang:{$gt:$ngay_cuoi_thang$$}}))$fn$$("K\u1ef3 t\u00ednh kh\u1ea5u hao ph\u1ea3i l\u1edbn h\u01a1n ho\u1eb7c b\u1eb1ng k\u1ef3 t\u00ednh tr\u01b0\u1edbc \u0111\u00f3");else{var $tinhgiatridakhauhao$$=function($ts$$,
$callback$$){setImmediate(()=>{let $query$$={id_ts:$ts$$.id_ts,id_app:$id_app$$,ngay_cuoi_thang:{$lte:$ngay_dau_thang$$}};$query$$.id_ct_tang_giam_ts=$ts$$.id_ct_tang_giam_ts;$ts$$.dieuchinh|=0;$query$$.dieuchinh=$ts$$.dieuchinh;sotinhkh.find($query$$).lean().then(function($gia_tri_da_kh_stl$$){let $gia_tri_con_lai$$;var $nguyen_gia_so_ky_da_kh$$=$gia_tri_da_kh_stl$$.length;$nguyen_gia_so_ky_da_kh$$>0?($gia_tri_da_kh_stl$$=$gia_tri_da_kh_stl$$.csum("gia_tri_kh_ky"),$gia_tri_con_lai$$=$ts$$.gia_tri_con_lai-
$gia_tri_da_kh_stl$$,$gia_tri_da_kh_stl$$=$ts$$.gia_tri_da_kh+$gia_tri_da_kh_stl$$):($gia_tri_da_kh_stl$$=$ts$$.gia_tri_da_kh,$gia_tri_con_lai$$=$ts$$.gia_tri_con_lai);var $gia_tri_kh_ky_so_ky_kh_con_lai$$=$ts$$.so_ky_kh-$nguyen_gia_so_ky_da_kh$$;if($gia_tri_kh_ky_so_ky_kh_con_lai$$<0||$gia_tri_con_lai$$<=0)return $callback$$(null,null);$nguyen_gia_so_ky_da_kh$$=$ts$$.nguyen_gia;$gia_tri_kh_ky_so_ky_kh_con_lai$$===0?$gia_tri_kh_ky_so_ky_kh_con_lai$$=$gia_tri_con_lai$$:($gia_tri_kh_ky_so_ky_kh_con_lai$$=
$ts$$.tinh_kh_gia_tri_con_lai?Math.roundBy($gia_tri_con_lai$$/$gia_tri_kh_ky_so_ky_kh_con_lai$$,$f_tien$$):$ts$$.gia_tri_kh_ky,$tinh_kh_theo_ngay$$&&$ts$$.so_ngay_of_thang!=$ts$$.so_ngay_kh&&($gia_tri_kh_ky_so_ky_kh_con_lai$$=Math.roundBy($gia_tri_kh_ky_so_ky_kh_con_lai$$/$ts$$.so_ngay_of_thang*$ts$$.so_ngay_kh,$f_tien$$)),$ts$$.lam_tron_kh<=0&&($ts$$.lam_tron_kh=1),$gia_tri_con_lai$$-$gia_tri_kh_ky_so_ky_kh_con_lai$$<=$ts$$.lam_tron_kh&&($gia_tri_kh_ky_so_ky_kh_con_lai$$=$gia_tri_con_lai$$));$callback$$(null,
{nguyen_gia:$nguyen_gia_so_ky_da_kh$$,gia_tri_da_kh:$gia_tri_da_kh_stl$$,gia_tri_con_lai:$gia_tri_con_lai$$,gia_tri_kh_ky:$gia_tri_kh_ky_so_ky_kh_con_lai$$,id_ts:$ts$$.id_ts,dieuchinh:$ts$$.dieuchinh,ngay_dau_thang:$ngay_dau_thang$$,ngay_cuoi_thang:$ngay_cuoi_thang$$,so_ngay_kh:$ts$$.so_ngay_kh,id_ct_tang_giam_ts:$ts$$.id_ct_tang_giam_ts,ma_tang_giam_ts:$ts$$.ma_tang_giam_ts})}).catch($e$$=>{$callback$$($e$$)})})};async.parallel({ts:function($callback$$){setImmediate(()=>{qts.findOne({_id:$id_ts$$,
id_app:$id_app$$}).lean().then(function($ts$$){if(!$ts$$)return $callback$$("T\u00e0i s\u1ea3n n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($ts$$.so_ky_kh<=0||$ts$$.ngay_tinh_kh>$ngay_cuoi_thang$$)return $callback$$(null,null);$ts$$.ngay_giam&&!$ts$$.ngay_thoi_kh&&($ts$$.ngay_thoi_kh=$ts$$.ngay_giam);if($ts$$.ngay_thoi_kh&&$ts$$.ngay_thoi_kh<$ngay_dau_thang$$)return $callback$$(null,null);$ts$$.ngay_thoi_kh&&$ts$$.ngay_thoi_kh<$ngay_cuoi_thang$$&&($ngay_cuoi_thang$$=$ts$$.ngay_thoi_kh);$ts$$.ngay_kh.getFullYear()==
$ngay_dau_thang$$.getFullYear()&&$ts$$.ngay_kh.getMonth()==$ngay_dau_thang$$.getMonth()&&($ngay_dau_thang$$=$ts$$.ngay_kh);let $so_ngay_of_thang$$=$ngay_cuoi_thang$$.getDate();$ts$$.so_ngay_of_thang=$so_ngay_of_thang$$;$ts$$.so_ngay_kh=$so_ngay_of_thang$$-$ngay_dau_thang$$.getDate()+1;$ts$$.nguyen_gia=$ts$$.details.csum("nguyen_gia");$ts$$.gia_tri_da_kh=$ts$$.details.csum("gia_tri_da_kh");$ts$$.gia_tri_con_lai=$ts$$.details.csum("gia_tri_con_lai");$ts$$.gia_tri_kh_ky=$ts$$.details.csum("gia_tri_kh_ky");
$ts$$.id_ts=$ts$$._id;$tinhgiatridakhauhao$$($ts$$,function($e$$,$rs$$){$callback$$($e$$,$rs$$)})}).catch($e$$=>{$callback$$($e$$)})})},dieuchinh:function($callback$$){setImmediate(()=>{let $query_dieu_chinh$$={id_ts:$id_ts$$,id_app:$id_app$$};$query_dieu_chinh$$.$or=[{nam:{$lt:$nam$$}},{nam:$nam$$,ky:{$lte:$thang$$}}];qtsdieuchinh.find($query_dieu_chinh$$).sort({ngay_ct:-1}).lean().then(async function($dieuchinhs$$){if($dieuchinhs$$.length===0)return $callback$$(null,[]);async.mapSeries($dieuchinhs$$,
function($dieuchinh$$,$callback$$){setImmediate(()=>{$dieuchinh$$.dieuchinh=!0;$dieuchinh$$.so_ngay_of_thang=$ngay_cuoi_thang$$.getDate();$dieuchinh$$.so_ngay_kh=$dieuchinh$$.so_ngay_of_thang;$dieuchinh$$.id_ct_tang_giam_ts=$dieuchinh$$._id.toString();$tinhgiatridakhauhao$$($dieuchinh$$,function($e$$,$rs$$){$callback$$($e$$,$rs$$)})})},async function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$=$rs$$.filter($r$$=>$r$$);$callback$$(null,$rs$$)})}).catch($e$$=>{$callback$$($e$$)})})}},function($e$$,
$rs$$){if($e$$)return $fn$$($e$$);const $result$$=[];$rs$$.ts&&$result$$.push($rs$$.ts);$rs$$.dieuchinh&&$rs$$.dieuchinh.forEach(function($d$$){$result$$.push($d$$)});$fn$$(null,$result$$)})}}else $fn$$("L\u1ed7i: B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: id_ts,thang,nam")};