UNPKG

flexbiz-server

Version:

Flexible Server

22 lines (21 loc) 10 kB
const async=require("async"),utils=require("./utils"),tontucthoi=global.getModel("tontucthoi"),Dmvt=global.getModel("dmvt"),round=4,post=function($master$$,$details$$,$model_book$$,$prepare$$,$options$$={}){$details$$||=[];this.master={...$master$$};this.details=$details$$.map($detail$$=>({...$detail$$}));this.prepare=$prepare$$;this.model_book=$model_book$$;this.options=$options$$}; post.prototype.runPrepare=async($prepareFunction$$,$details$$)=>{$details$$=$details$$.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return{...$d$$}});return new Promise($resolve$$=>{$prepareFunction$$?async.map($details$$,($detail$$,$callback$$)=>{setImmediate(()=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$prepareFunction$$($detail$$,$detail$$=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$callback$$(null,$detail$$)})})},($e$$,$details$$)=>{$resolve$$($details$$)}): $resolve$$($details$$)})}; post.prototype.remove=async function($callback$$=()=>{}){var $master$$=this.master;$master$$&&$master$$.toObject&&($master$$=$master$$.toObject());if(!$master$$._id)return $callback$$();let $model_book$$=this.model_book,$query_delete$$={id_ct:$master$$._id.toString(),id_app:$master$$.id_app};this.options.queryDelete&&($query_delete$$={...$query_delete$$,...this.options.queryDelete,id_app:$master$$.id_app});$master$$=$model_book$$.modelName.toLowerCase()==="sokho"?await global.getModel("sokho").find({id_ct:$master$$._id.toString(),id_app:$master$$.id_app}).lean(): [];await $model_book$$.deleteMany($query_delete$$);$master$$.length>0&&tontucthoi.tinhTonTucThoi($master$$,$e$$=>{$e$$&&Logger.error("[post-book] [\u0110\u00e3 t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi sau khi xo\u00e1 d\u1eef li\u1ec7u sokho c\u1ee7a v\u1eadt t\u01b0]",$e$$)});$callback$$()}; post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return Logger.error("details not exists"),$callback$$(null);if(!this.master||!this.master._id)return Logger.error("[postbook] master is not exists",this.master),$callback$$(null);let $master$$=this.master;$master$$.toObject&&($master$$=$master$$.toObject());let $model_book$$=this.model_book;if($master$$.trang_thai&&$master$$.ma_ct){var $ds_kho_kho_locked_rs_tdtts_tdtts$$=await global.getModel("trangthai").findOne({ma_trang_thai:$master$$.trang_thai, ma_ct:$master$$.ma_ct}).lean();if($ds_kho_kho_locked_rs_tdtts_tdtts$$?.post_books&&$ds_kho_kho_locked_rs_tdtts_tdtts$$?.post_books?.indexOf($model_book$$.modelName.toLowerCase())<0||$ds_kho_kho_locked_rs_tdtts_tdtts$$?.not_post_books&&$ds_kho_kho_locked_rs_tdtts_tdtts$$?.not_post_books?.indexOf($model_book$$.modelName.toLowerCase())>=0)return $callback$$(null,null)}let $details$$=await this.runPrepare(this.prepare,this.details);if($model_book$$.modelName.toLowerCase()==="tdttco"&&($ds_kho_kho_locked_rs_tdtts_tdtts$$= await global.getModel("tdttco").find({id_ct:$master$$._id.toString(),id_app:$master$$.id_app},{_id:1,tat_toan:1}).lean(),$ds_kho_kho_locked_rs_tdtts_tdtts$$.length>0)){if($ds_kho_kho_locked_rs_tdtts_tdtts$$.filter($t$$=>$t$$.tat_toan).length>0)return $callback$$(null);$ds_kho_kho_locked_rs_tdtts_tdtts$$=$ds_kho_kho_locked_rs_tdtts_tdtts$$.map($t$$=>$t$$._id.toString());if(await global.getModel("tdttco_tt").findOne({id_tdtt:{$in:$ds_kho_kho_locked_rs_tdtts_tdtts$$}}))return $callback$$(null)}if($model_book$$.modelName.toLowerCase()=== "tdttno"&&($ds_kho_kho_locked_rs_tdtts_tdtts$$=await global.getModel("tdttno").find({id_ct:$master$$._id.toString(),id_app:$master$$.id_app},{_id:1,tat_toan:1}).lean(),$ds_kho_kho_locked_rs_tdtts_tdtts$$.length>0)){if($ds_kho_kho_locked_rs_tdtts_tdtts$$.filter($t$$=>$t$$.tat_toan).length>0)return $callback$$(null);$ds_kho_kho_locked_rs_tdtts_tdtts$$=$ds_kho_kho_locked_rs_tdtts_tdtts$$.map($t$$=>$t$$._id.toString());if(await global.getModel("tdttno_tt").findOne({id_tdtt:{$in:$ds_kho_kho_locked_rs_tdtts_tdtts$$}, id_app:$master$$.id_app}))return $callback$$(null)}$model_book$$.modelName.toLowerCase()==="tdttco_tt"&&await Promise.all($details$$.filter($d$$=>$d$$.id_hd&&$d$$.id_tdtt).map($detail$$=>(async()=>{let $tdtt$$=await global.getModel("tdttco").findOne({_id:$detail$$.id_tdtt},{_id:1}).lean();!$tdtt$$&&($tdtt$$=await global.getModel("tdttco").findOne({id_ct:$detail$$.id_hd,id_app:$master$$.id_app},{_id:1}).lean())&&($detail$$.id_tdtt=$tdtt$$._id.toString())})()));$model_book$$.modelName.toLowerCase()=== "tdttno_tt"&&await Promise.all($details$$.filter($d$$=>$d$$.id_hd&&$d$$.id_tdtt).map($detail$$=>(async()=>{let $tdtt$$=await global.getModel("tdttno").findOne({_id:$detail$$.id_tdtt},{_id:1}).lean();!$tdtt$$&&($tdtt$$=await global.getModel("tdttno").findOne({id_ct:$detail$$.id_hd,id_app:$master$$.id_app},{_id:1}).lean())&&($detail$$.id_tdtt=$tdtt$$._id.toString())})()));if(($master$$.ma_ct||"").toUpperCase()!=="PKK"&&($model_book$$.modelName.toLowerCase()==="sokho"||$model_book$$.modelName.toLowerCase()=== "sokhott"||$model_book$$.modelName.toLowerCase()==="sokhonpp")&&($ds_kho_kho_locked_rs_tdtts_tdtts$$=[...(new Set($details$$.map($d$$=>$d$$.ma_kho||$master$$.ma_kho)))],$ds_kho_kho_locked_rs_tdtts_tdtts$$=await global.getModel("dmkho").findOne({id_app:$master$$.id_app,lock:!0,ma_kho:{$in:$ds_kho_kho_locked_rs_tdtts_tdtts$$}}).lean()))return $callback$$(`Kho ${$ds_kho_kho_locked_rs_tdtts_tdtts$$.ten_kho} \u0111\u00e3 b\u1ecb kho\u00e1`);if($model_book$$.modelName.toLowerCase()==="sokho"||$model_book$$.modelName.toLowerCase()=== "sokhott")await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>$d$$.tg_tk),await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau, $detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=($detail$$.sl_xuat||0)*$detail$$.he_so_qd,$detail$$.sl_nhap_qd=($detail$$.sl_nhap||0)*$detail$$.he_so_qd)});$model_book$$.modelName.toLowerCase()==="sokhokhongton"&&(await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>$d$$.tg_tk== 0),await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap|| 0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))}));$model_book$$.modelName.toLowerCase()==="sokhonpp"&&(await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho; $detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))}));if($model_book$$.modelName.toLowerCase()=== "vatra"||$model_book$$.modelName.toLowerCase()==="vatvao")if($ds_kho_kho_locked_rs_tdtts_tdtts$$=await Promise.all($details$$.filter($r$$=>$r$$.so_hd&&$r$$.so_hd!="0"&&$r$$.so_hd.toUpperCase()!==($master$$.ma_ct||"").toUpperCase()).map($detail$$=>(async()=>{let $v$$=await $model_book$$.findOne({id_app:$master$$.id_app,so_hd:$detail$$.so_hd,ma_kh:$detail$$.ma_kh||$master$$.ma_kh,so_seri:$detail$$.so_seri,ky_hieu_hoa_don:$detail$$.ky_hieu_hoa_don,id_ct:{$ne:$master$$._id.toString()}});return $v$$?$v$$.so_hd: ""})())),$ds_kho_kho_locked_rs_tdtts_tdtts$$=$ds_kho_kho_locked_rs_tdtts_tdtts$$.filter($r$$=>$r$$),$ds_kho_kho_locked_rs_tdtts_tdtts$$.length>0)return $callback$$(`S\u1ed1 ho\u00e1 \u0111\u01a1n ${$ds_kho_kho_locked_rs_tdtts_tdtts$$.join(",")} \u0111\u00e3 t\u1ed3n t\u1ea1i`);$details$$=$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();$detail$$.ma_ct=$master$$.ma_ct;$detail$$.so_ct=$master$$.so_ct;$detail$$.ngay_ct=Math.max(new Date($master$$.ngay_ghi_so||$master$$.ngay_ct), new Date($master$$.ngay_ct));for(let $attr$$ in $model_book$$.schema.paths)if($attr$$!="id_ct"&&$attr$$!="_id"&&$attr$$!="__v"&&$attr$$!="date_updated"&&$attr$$!="date_created"){let $v$$=$detail$$[$attr$$];$v$$!==void 0&&$v$$!==null&&$v$$!==""||$v$$===0||$master$$[$attr$$]===void 0||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;delete $detail$$.listinfo_code;return $detail$$});this.remove($error$$=>{if($error$$)return Logger.error("[postBook] error delete data post", $error$$.error||$error$$.message||$error$$),$callback$$($error$$);if($details$$.length==0)return $callback$$(null,[]);$model_book$$.create($details$$,async($e$$,$rs$$)=>{$e$$?$callback$$($e$$):($rs$$&&$model_book$$.modelName.toLowerCase()==="sokho"&&setImmediate(()=>{tontucthoi.tinhTonTucThoi($rs$$,$e$$=>{$e$$&&Logger.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",$rs$$,$e$$)})}),$callback$$(null,$rs$$))})})};module.exports=post;