UNPKG

flexbiz-server

Version:

Flexible Server

14 lines (13 loc) 6.24 kB
const dmvt=global.getModel("dmvt"),sokho=global.getModel("sokho"),hanmucton=global.getModel("hanmucton"),ckvtcapphat=require("./ckvtcapphat"),utils=require("./utils"),_=require("lodash"),moment=require("moment"),buildAggregatePipeline=($match$$,$groupByCols$$)=>{const $groupId$$={};$groupByCols$$.forEach($col$$=>$groupId$$[$col$$]=`$${$col$$}`);return[{$match:$match$$},{$group:{_id:$groupId$$,sl_nhap:{$sum:"$sl_nhap_qd"},sl_xuat:{$sum:"$sl_xuat_qd"},tien_nhap:{$sum:"$tien_nhap"},tien_xuat:{$sum:"$tien_xuat"}, ton00:{$sum:"$ton00"},du00:{$sum:"$du00"}}},{$project:{_id:0,...$groupByCols$$.reduce(($acc$$,$curr$$)=>({...$acc$$,[$curr$$]:`$_id.${$curr$$}`}),{}),sl_nhap:1,sl_xuat:1,tien_nhap:1,tien_xuat:1,ton00:1,du00:1}}]}; module.exports=async($condition$$,$fn$$)=>{$fn$$||=()=>{};try{!$condition$$.ngay&&$condition$$.den_ngay&&($condition$$.ngay=$condition$$.den_ngay);const {ma_dvcs:$ma_dvcs$$,ma_kho:$ma_kho$$,id_app:$id_app$$}=$condition$$;let $ma_vt$$=$condition$$.ma_vt;if(_.isString($ma_vt$$)&&$ma_vt$$.includes("["))try{$ma_vt$$=JSON.parse($ma_vt$$),$ma_vt$$.length===0&&($ma_vt$$=void 0)}catch($e$$){Logger.error("[ckvt] parse ma_vt",$e$$,$ma_vt$$)}$ma_vt$$&&_.isArray($ma_vt$$)&&($ma_vt$$={$in:$ma_vt$$});let $groupBy$$= $condition$$.groupBy||$condition$$.groupby||["ma_vt"];if(_.isString($groupBy$$))try{$groupBy$$=$groupBy$$.includes("[")?JSON.parse($groupBy$$):$groupBy$$.split(",")}catch($e$$){$groupBy$$=["ma_vt"]}const $ngay$$=moment($condition$$.ngay).endOf("date").toDate(),[$app$$,$lastLockData$$]=await Promise.all([global.getModel("app").findOne({_id:$id_app$$},{ngay_ks:1}).lean(),global.getModel("cdvttheongay").findOne({id_app:$id_app$$,den_ngay:{$lte:moment($ngay$$).startOf("date").toDate()}},{den_ngay:1}).sort({den_ngay:-1}).lean()]); if(!$app$$)return $fn$$("C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i");let $ngay_ks$$=$lastLockData$$?$lastLockData$$.den_ngay:null;$ngay_ks$$&&=moment($ngay_ks$$).endOf("date").toDate();var $merge_ngay_tinh_dn$$=$condition$$.tu_ngay&&new Date($condition$$.tu_ngay)<$ngay$$?moment($condition$$.tu_ngay).endOf("date").toDate():$ngay$$;let $ngay_dn$$=moment($merge_ngay_tinh_dn$$).startOf("year").toDate(),$nam$$,$CdvtModel$$;!$ngay_ks$$||$ngay_ks$$<$ngay_dn$$?($CdvtModel$$=global.getModel("cdvt"),$nam$$= $merge_ngay_tinh_dn$$.getFullYear()):($CdvtModel$$=global.getModel("cdvttheongay"),$ngay_dn$$=moment($ngay_ks$$).startOf("date").add(1,"days").toDate());const $buildFilter$$=($base$$={})=>{const $q$$={...$base$$};$ma_kho$$&&($q$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($q$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($q$$.ma_vt=$ma_vt$$);["ma_lo","han_sd","ma_tt1","ma_tt2","ma_tt3"].forEach($f$$=>{$condition$$[$f$$]&&($q$$[$f$$]=$condition$$[$f$$])});return $q$$},$pCkcapphat$$=new Promise($resolve$$=>ckvtcapphat($condition$$, ($e$$,$rs$$)=>$resolve$$($rs$$||[]))),$pDauKy$$=(async()=>{const $c_dk$$={id_app:$id_app$$};$nam$$?$c_dk$$.nam=$nam$$:$c_dk$$.den_ngay=$ngay_ks$$;Object.assign($c_dk$$,$buildFilter$$());return $CdvtModel$$.aggregate(buildAggregatePipeline($c_dk$$,$groupBy$$))})(),$pPhatSinh$$=(async()=>{var $pipeline_query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lte:$ngay$$}};Object.assign($pipeline_query$$,$buildFilter$$());$condition$$.id_ct&&($pipeline_query$$.id_ct={$ne:$condition$$.id_ct});$pipeline_query$$= buildAggregatePipeline($pipeline_query$$,$groupBy$$);return sokho.aggregate($pipeline_query$$).inTxn()})(),$pHanMuc$$=hanmucton.find($buildFilter$$({id_app:$id_app$$})).lean(),$pDefault$$=(async()=>{const $q$$={id_app:$id_app$$,ton_kho_mac_dinh:{$nin:[null,void 0,0]}};$ma_vt$$&&($q$$.ma_vt=$ma_vt$$);return dmvt.find($q$$,{ma_vt:1,ton_kho_mac_dinh:1}).lean()})(),[$ckData$$,$dnData$$,$psData$$,$hmData$$,$dfData$$]=await Promise.all([$pCkcapphat$$,$pDauKy$$,$pPhatSinh$$,$pHanMuc$$,$pDefault$$]),$dataMap$$= new Map,$getGroupKey$$=$item$$=>$groupBy$$.map($k$$=>$item$$[$k$$]||"").join("||");$merge_ngay_tinh_dn$$=($JSCompiler_temp_const$jscomp$0$$,$type$$)=>{if($JSCompiler_temp_const$jscomp$0$$)for(const $item$$ of $JSCompiler_temp_const$jscomp$0$$){const $key$$=$getGroupKey$$($item$$);if(!$dataMap$$.has($key$$)){$JSCompiler_temp_const$jscomp$0$$=$dataMap$$;var $JSCompiler_temp_const$$=$JSCompiler_temp_const$jscomp$0$$.set;const $obj$$=_.pick($item$$,$groupBy$$);$obj$$.ton00=0;$obj$$.du00=0;$obj$$.sl_nhap= 0;$obj$$.sl_xuat=0;$obj$$.tien_nhap=0;$obj$$.tien_xuat=0;$obj$$.ton00_capphat=0;$obj$$.du00_capphat=0;$obj$$.ton_kho_mac_dinh=0;$obj$$.ton_toi_thieu=0;$obj$$.ton_toi_da=0;$JSCompiler_temp_const$$.call($JSCompiler_temp_const$jscomp$0$$,$key$$,$obj$$)}$JSCompiler_temp_const$jscomp$0$$=$dataMap$$.get($key$$);$type$$==="dn"?($JSCompiler_temp_const$jscomp$0$$.ton00+=$item$$.ton00||0,$JSCompiler_temp_const$jscomp$0$$.du00+=$item$$.du00||0):$type$$==="ps"?($JSCompiler_temp_const$jscomp$0$$.sl_nhap+=$item$$.sl_nhap|| 0,$JSCompiler_temp_const$jscomp$0$$.sl_xuat+=$item$$.sl_xuat||0,$JSCompiler_temp_const$jscomp$0$$.tien_nhap+=$item$$.tien_nhap||0,$JSCompiler_temp_const$jscomp$0$$.tien_xuat+=$item$$.tien_xuat||0):$type$$==="capphat"?($JSCompiler_temp_const$jscomp$0$$.ton00_capphat+=$item$$.ton00||0,$JSCompiler_temp_const$jscomp$0$$.du00_capphat+=$item$$.du00||0):$type$$==="default"?$JSCompiler_temp_const$jscomp$0$$.ton_kho_mac_dinh=$item$$.ton_kho_mac_dinh||0:$type$$==="hanmuc"&&($JSCompiler_temp_const$jscomp$0$$.ton_toi_thieu= $item$$.ton_toi_thieu||0,$JSCompiler_temp_const$jscomp$0$$.ton_toi_da=$item$$.ton_toi_da||0)}};$merge_ngay_tinh_dn$$($dnData$$,"dn");$merge_ngay_tinh_dn$$($psData$$,"ps");$merge_ngay_tinh_dn$$($ckData$$,"capphat");$merge_ngay_tinh_dn$$($dfData$$,"default");$merge_ngay_tinh_dn$$($hmData$$,"hanmuc");const $results$$=Array.from($dataMap$$.values()).map($r$$=>{$r$$.sl_nhap=utils.round($r$$.sl_nhap,4);$r$$.sl_xuat=utils.round($r$$.sl_xuat,4);$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat, 4);$r$$.du00=Math.roundBy($r$$.du00,0)+Math.roundBy($r$$.tien_nhap,0)-Math.roundBy($r$$.tien_xuat,0);$r$$.sl_nhap=0;$r$$.sl_xuat=0;$r$$.tien_nhap=0;$r$$.tien_xuat=0;$r$$.ton=utils.round($r$$.ton00-($r$$.ton00_capphat>0?$r$$.ton00_capphat:0),4);$r$$.du=$r$$.du00-($r$$.du00_capphat>0?$r$$.du00_capphat:0);return $r$$});$fn$$(null,$results$$);return $results$$}catch($e$$){throw $fn$$($e$$),$e$$;}};