UNPKG

flexbiz-server

Version:

Flexible Server

58 lines (57 loc) 29.1 kB
const PostBook=require("../../libs/post-book"),options=global.getModel("options"),PostSocai=require("../../libs/post-socai"),User=global.getModel("user"),Sodiemthuong=global.getModel("sodiemthuong"),transaction=global.getModel("transaction"),Evoucher=global.getModel("evoucher"),dvcs=global.getModel("dvcs"),dmvt=global.getModel("dmvt"),dmtt=global.getModel("dmtt"),dmcpmh=global.getModel("dmcpmh"),customer=global.getModel("customer"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),contract= global.getModel("contract"),trangthai=global.getModel("trangthai"),currency=global.getModel("currency"),ptthanhtoan=global.getModel("ptthanhtoan"),dmdiemthuong=global.getModel("dmdiemthuong"),model=global.getModel("so5"),pt1=global.getModel("pt1"),controller=require("../../controllers/controller"),async=require("async"),ma_ct="SO5",ckdiem=require("../../libs/ckdiem"),blockchainconnect=require("../../libs/blockchainconnect"),moment=require("moment"),App=global.getModel("app"),Introducer=global.getModel("introducer"), getPointBalance=async($id_app$$,$sender_email$$)=>new Promise(($resolve$$,$reject$$)=>{ckdiem({id_app:$id_app$$,email:$sender_email$$},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$));$resolve$$($rs$$.length===0?0:$rs$$[0].ton00)})}),getWalletBalanceOfApp=async($app_bl_id_app$$,$denom$$)=>{$app_bl_id_app$$=await App.findOne({_id:$app_bl_id_app$$});return $app_bl_id_app$$.wallet_address&&$app_bl_id_app$$.wallet_token?($app_bl_id_app$$=await blockchainconnect.bankBalancesGet($app_bl_id_app$$.wallet_address))? $app_bl_id_app$$.filter($r$$=>$r$$.denom==$denom$$).map($r$$=>Number($r$$.amount)).reduce(($a$$,$b$$)=>$a$$+$b$$,0):0:0},createTransactionBonus=async function($obj$$){if($obj$$.trang_thai!="5"&&$obj$$.trang_thai!="6")return await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng \u0111\u1ec3 t\u00ednh l\u1ea1i"),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":introduce"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng gi\u1edbi thi\u1ec7u th\u00e0nh vi\u00ean m\u1edbi \u0111\u1ec3 t\u00ednh l\u1ea1i"), null;let $kh$$=await customer.findOne({id_app:$obj$$.id_app,ma_kh:$obj$$.ma_kh})||{},$lan_mua$$=(await model.find({id_app:$obj$$.id_app,ma_kh:$obj$$.ma_kh,ngay_ct:{$lte:$obj$$.ngay_ct}})).length+1;var $_app_diem_thuong_gioi_thieu_old_trans$$=await App.findOne({_id:$obj$$.id_app}),$_intro_amount_calcDiemThuong$$=await Introducer.findOne({id_app:$obj$$.id_app,be_introduced:$obj$$.email||$obj$$.user_created});$_app_diem_thuong_gioi_thieu_old_trans$$=$_app_diem_thuong_gioi_thieu_old_trans$$.exfields.diem_thuong_gioi_thieu; $lan_mua$$===1&&$_app_diem_thuong_gioi_thieu_old_trans$$&&$_intro_amount_calcDiemThuong$$&&await transaction.createTrans({id_app:$obj$$.id_app,sender_email:$obj$$.id_app,receiver_email:$_intro_amount_calcDiemThuong$$.be_introduced_by,amount:$_app_diem_thuong_gioi_thieu_old_trans$$,description:"\u0110i\u1ec3m th\u01b0\u1edfng gi\u1edbi thi\u1ec7u kh\u00e1ch h\u00e0ng",otherData:{ma_ct:$obj$$.ma_ct,so_ct:$obj$$.so_ct,ngay_ct:$obj$$.ngay_ct,id_ct:$obj$$._id.toString()+":introduce"}});if(!$obj$$.exfields.survey)return null; let $now$$=moment(new Date).startOf("date").toDate();$_intro_amount_calcDiemThuong$$=$obj$$.details.filter($d$$=>$d$$.tien_hang).map(async $d$$=>{var $amount$$=await dmvt.findOne({ma_vt:$d$$.ma_vt,id_app:$obj$$.id_app}),$ckdiemthuong_ty_le_diem_thuong$$=await dmdiemthuong.find({id_app:$obj$$.id_app,status:!0,ma_kh:{$in:[null,"",$kh$$.ma_kh]},ma_kho:{$in:[null,"",$obj$$.ma_kho]},nh_kh:{$in:[null,"",$kh$$.nh_kh]},hieu_luc_tu:{$lte:$now$$},hieu_luc_den:{$gte:$now$$},ap_dung_lan_mua_thu:{$in:[0,$lan_mua$$]}, ma_vt:{$in:[null,"",void 0,$d$$.ma_vt]},ma_nvt:{$in:[null,"",void 0,$amount$$?$amount$$.ma_nvt:""]}}).sort({ma_vt:-1,ma_nvt:-1,hieu_luc_tu:-1}).limit(1);return $ckdiemthuong_ty_le_diem_thuong$$.length>0?($amount$$=0,$ckdiemthuong_ty_le_diem_thuong$$[0].tien?($ckdiemthuong_ty_le_diem_thuong$$=$ckdiemthuong_ty_le_diem_thuong$$[0].diem/$ckdiemthuong_ty_le_diem_thuong$$[0].tien)||($amount$$=Math.roundBy(($d$$.tien_hang-($d$$.tien_ck||0))*$ckdiemthuong_ty_le_diem_thuong$$,0)):$amount$$=$ckdiemthuong_ty_le_diem_thuong$$[0].diem* ($d$$.sl_xuat||1),$amount$$):0});if($_intro_amount_calcDiemThuong$$=(await Promise.all($_intro_amount_calcDiemThuong$$)).reduce(($a$$,$b$$)=>$a$$+$b$$,0)){if($_app_diem_thuong_gioi_thieu_old_trans$$=await transaction.findOne({id_ct:$obj$$._id.toString()+":bonus"}),!$_app_diem_thuong_gioi_thieu_old_trans$$||$_app_diem_thuong_gioi_thieu_old_trans$$.amount!==$_intro_amount_calcDiemThuong$$)return await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng \u0111\u1ec3 t\u00ednh l\u1ea1i"), await transaction.createTrans({id_app:$obj$$.id_app,sender_email:$obj$$.id_app,receiver_email:$obj$$.user_created,amount:$_intro_amount_calcDiemThuong$$,description:"\u0110i\u1ec3m th\u01b0\u1edfng mua h\u00e0ng",otherData:{ma_ct:$obj$$.ma_ct,so_ct:$obj$$.so_ct,ngay_ct:$obj$$.ngay_ct,id_ct:$obj$$._id.toString()+":bonus"}})}else await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng \u0111\u1ec3 t\u00ednh l\u1ea1i")},createTransactionPayment= async function($obj$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});$obj$$.paymentByPoints&&await transaction.createTrans({id_app:$obj$$.id_app,sender_email:$obj$$.user_created,receiver_email:$obj$$.id_app,amount:$obj$$.paymentByPoints,description:"Thanh to\u00e1n cho \u0111\u01a1n h\u00e0ng s\u1ed1 "+$obj$$.so_ct,otherData:{ma_ct:$obj$$.ma_ct,so_ct:$obj$$.so_ct,ngay_ct:$obj$$.ngay_ct,id_ct:$obj$$._id.toString()}})},BuyPoint=async function($obj$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()+ ":buy"});let $amount$$=$obj$$.details.filter($d$$=>$d$$.is_point).map($d$$=>$d$$.sl_xuat).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$amount$$&&await transaction.createTrans({id_app:$obj$$.id_app,sender_email:$obj$$.id_app,receiver_email:$obj$$.user_created,amount:$amount$$,description:$obj$$.dien_giai||"N\u1ed9p ti\u1ec1n m\u1eb7t v\u00e0o v\u00ed",otherData:{ma_ct:$obj$$.ma_ct,so_ct:$obj$$.so_ct,ngay_ct:$obj$$.ngay_ct,id_ct:$obj$$._id.toString()+":buy"}})},checkEvoucher=($user$$,$obj$$,$pre_obj$$)=>($obj$$.evouchers|| []).map($ev$$=>new Promise(($resolve$$,$reject$$)=>{(async()=>{const $_e$$=await Evoucher.findOne({ma:$ev$$.ma,id_app:$user$$.current_id_app});if(!$_e$$)return Logger.error("Th\u1ebb mua h\u00e0ng kh\u00f4ng t\u1ed3n t\u1ea1i",$ev$$),$reject$$(Error(`Th\u1ebb mua h\u00e0ng ${$ev$$.ma} kh\u00f4ng t\u1ed3n t\u1ea1i`));if($_e$$.id_ct_used&&$_e$$.id_ct_used!==($obj$$._id||"").toString())return $reject$$(Error(`Th\u1ebb mua h\u00e0ng ${$ev$$.ma} \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng`));if($_e$$.so_lan_sd>= 1&&$_e$$.id_ct_useds&&$_e$$.id_ct_useds.length>0){if($pre_obj$$&&$_e$$.id_ct_useds.indexOf($pre_obj$$._id.toString())>=0)return $resolve$$(!0);if($_e$$.id_ct_useds.length>$_e$$.so_lan_sd)return $reject$$(Error(`Th\u1ebb mua h\u00e0ng ${$ev$$.ma} \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng h\u1ebft`))}if($_e$$.user&&$_e$$.user!==($obj$$.user_created||$user$$.email))return $reject$$(Error(`Th\u1ebb mua h\u00e0ng ${$ev$$.ma} kh\u00f4ng h\u1ee3p l\u1ec7`));var $date_created_so_tien_giam$$=new Date($obj$$.date_created); if(moment($_e$$.hieu_luc_den).endOf("date").toDate().getTime()<$date_created_so_tien_giam$$.getTime())return $reject$$(Error(`Th\u1ebb mua h\u00e0ng ${$ev$$.ma} \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng`));$date_created_so_tien_giam$$=$_e$$.so_tien;$_e$$.ty_le&&($date_created_so_tien_giam$$=Math.roundBy($obj$$.details.map($d$$=>$d$$.tien_hang_nt).reduce(($a$$,$b$$)=>$a$$+$b$$,0)*$_e$$.ty_le/100));$_e$$.so_tien_max&&$date_created_so_tien_giam$$>$_e$$.so_tien_max&&($date_created_so_tien_giam$$= $_e$$.so_tien_max);if($ev$$.so_tien_giam!==$date_created_so_tien_giam$$)return $reject$$(Error(`S\u1ed1 ti\u1ec1n gi\u1ea3m cho th\u1ebb ${$ev$$.ma} kh\u00f4ng h\u1ee3p l\u1ec7`));$resolve$$(!0)})()})),updateEvoucher=async($id_app$$,$evoucher_code$$,$id_ct_rs$$)=>{if($evoucher_code$$){$id_ct_rs$$=$id_ct_rs$$.toString();var $e$$=await Evoucher.findOne({ma:$evoucher_code$$,id_app:$id_app$$});$e$$?($id_app$$=$e$$.id_ct_useds||[],$id_app$$.push($id_ct_rs$$),$id_app$$=[...(new Set($id_app$$))],$id_ct_rs$$= await Evoucher.findOneAndUpdate({_id:$e$$._id},{id_ct_useds:$id_app$$}),Logger.info("update id_ct_useds",$evoucher_code$$,$id_app$$,$id_ct_rs$$)):Logger.error("can't find evoucher",$evoucher_code$$)}},deleteEvoucher=async($id_app$jscomp$3_id_ct_useds$$,$evoucher_code$$,$id_ct$$)=>{if($evoucher_code$$){$id_ct$$=$id_ct$$.toString();var $e$jscomp$2_rs$$=await Evoucher.findOne({id_app:$id_app$jscomp$3_id_ct_useds$$,ma:$evoucher_code$$});$e$jscomp$2_rs$$&&($id_app$jscomp$3_id_ct_useds$$=($e$jscomp$2_rs$$.id_ct_useds|| []).filter($ct$$=>$ct$$!==$id_ct$$),$e$jscomp$2_rs$$=await Evoucher.findOneAndUpdate({_id:$e$jscomp$2_rs$$._id},{id_ct_useds:$id_app$jscomp$3_id_ct_useds$$}),Logger.info("update id_ct_useds",$evoucher_code$$,$id_app$jscomp$3_id_ct_useds$$,$e$jscomp$2_rs$$))}},valid=async function($user$$,$obj$$,$next$$,$_opt_detail$jscomp$1_pre_obj$$){try{const $_checkEvoucher$$=checkEvoucher($user$$,$obj$$,$_opt_detail$jscomp$1_pre_obj$$);await Promise.all($_checkEvoucher$$)}catch($e$$){return $next$$($e$$.message)}if($obj$$.tien_evoucher&& ($_opt_detail$jscomp$1_pre_obj$$=await options.findOne({id_app:$obj$$.id_app,id_func:$obj$$.ma_ct.toLowerCase()}).lean())&&$_opt_detail$jscomp$1_pre_obj$$.option&&$_opt_detail$jscomp$1_pre_obj$$.option.phan_bo_evoucher){let $tien_evoucher_da_phan_bo$$=0,$tien_evoucher$$=$obj$$.tien_evoucher,$tien_evoucher_con_lai$$=$tien_evoucher$$-$tien_evoucher_da_phan_bo$$;($obj$$.details||[]).forEach($detail$$=>{if($tien_evoucher_con_lai$$>0){var $tien_evoucher_duoc_pb_tien_hang_con_lai$$=$detail$$.tien_hang_nt- ($detail$$.tien_ck_nt||0);$tien_evoucher_duoc_pb_tien_hang_con_lai$$=$tien_evoucher_con_lai$$>$tien_evoucher_duoc_pb_tien_hang_con_lai$$?$tien_evoucher_duoc_pb_tien_hang_con_lai$$:$tien_evoucher_con_lai$$;$detail$$.tien_evoucher_duoc_pb=$tien_evoucher_duoc_pb_tien_hang_con_lai$$;$tien_evoucher_da_phan_bo$$+=$tien_evoucher_duoc_pb_tien_hang_con_lai$$;$tien_evoucher_con_lai$$=$tien_evoucher$$-$tien_evoucher_da_phan_bo$$}else $tien_evoucher_con_lai$$=0})}await ($obj$$.details||[]).asyncJoinModel2($user$$.current_id_app, dmvt,{where:"ma_vt",fields:"is_coin"});if($obj$$.paymentByPoints)try{var $he_so_qd_i$$=await currency.getRate($obj$$.id_app,$obj$$.ma_nt);$obj$$.tien_paymentByPoints=$obj$$.paymentByPoints*$he_so_qd_i$$}catch($e$$){return $next$$($e$$.message)}for($he_so_qd_i$$=0;$he_so_qd_i$$<($obj$$.details||[]).length;$he_so_qd_i$$++)$_opt_detail$jscomp$1_pre_obj$$=($obj$$.details||[])[$he_so_qd_i$$],$_opt_detail$jscomp$1_pre_obj$$.line=$he_so_qd_i$$,$obj$$.ma_nt==="VND"&&($_opt_detail$jscomp$1_pre_obj$$.tien= $_opt_detail$jscomp$1_pre_obj$$.tien_nt,$_opt_detail$jscomp$1_pre_obj$$.tien_hang=$_opt_detail$jscomp$1_pre_obj$$.tien_hang_nt,$_opt_detail$jscomp$1_pre_obj$$.tien_ck=$_opt_detail$jscomp$1_pre_obj$$.tien_ck_nt,$_opt_detail$jscomp$1_pre_obj$$.gia_ban=$_opt_detail$jscomp$1_pre_obj$$.gia_ban_nt),$_opt_detail$jscomp$1_pre_obj$$.tien_xuat=$_opt_detail$jscomp$1_pre_obj$$.tien_xuat_nt;$obj$$.ma_dvcs?$next$$(null,$obj$$):dvcs.findOne({id_app:$user$$.current_id_app},{_id:1},function($error$$,$dv$$){return $error$$? $next$$($error$$):$dv$$?($obj$$.ma_dvcs=$dv$$._id.toString(),$next$$(null,$obj$$)):$next$$("C\u00f4ng ty/c\u1eeda h\u00e0ng n\u00e0y ch\u01b0a c\u00f3 m\u1ed9t \u0111\u01a1n v\u1ecb c\u01a1 s\u1edf n\u00e0o")})}; module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{isVoucher:!0,requireRecaptchaToken:!1,requireOtp:$data$$=>$data$$.trang_thai=="0"||$data$$.trang_thai=="2"||$data$$.trang_thai=="8"?!1:!0,unique:["so_ct"],sort:{ngay_ct:-1,so_ct:-1},onEmitEvent:async($obj$$,$users_will_receive$$,$next$$)=>{$obj$$.user_nv_giao_hang&&$users_will_receive$$.push($obj$$.user_nv_giao_hang);$next$$(null,$users_will_receive$$)}});$contr_router$$.route();$contr_router$$.handleAfterPayment= async $obj$$=>{Logger.info("[so5][handleAfterPayment]xu ly nap tien vao vi",$obj$$.details);var $app$$=await App.findOne({_id:$obj$$.id_app});if($app$$.wallet_address&&$app$$.wallet_token&&$obj$$.details){try{for(let $detail$$ of $obj$$.details.filter($d$$=>$d$$.is_coin&&!$d$$.transferred&&$d$$.wallet_receiver)){let $memo$$=$obj$$.dien_giai||"N\u1ea1p ti\u1ec1n v\u00e0o v\u00ed",$amount$$=$detail$$.sl_xuat,$denom$$=$detail$$.ma_vt.toLowerCase();Logger.info("chuyen tien vao vi nguoi nap",{amount:$amount$$, denom:$denom$$,receiver:$detail$$.wallet_receiver});let $rs$$=await blockchainconnect.spend($obj$$.id_app,$app$$.wallet_token,$app$$.wallet_address,$detail$$.wallet_receiver,{amount:$amount$$,denom:$denom$$,memo:$memo$$});Logger.info("[so5][handleAfterPayment]buy point result",$rs$$,$amount$$,$denom$$,$memo$$);$detail$$.transferred=!0}await model.findOneAndUpdate({_id:$obj$$._id},{details:$obj$$.details,trang_thai:"5"});$obj$$.trang_thai="5"}catch($e$$){Logger.error($e$$),await model.findOneAndUpdate({_id:$obj$$._id}, {trang_thai:"7"}),$obj$$.trang_thai="7"}if($app$$=global.controllers.SO5)await controller.asyncPostData($obj$$,$app$$),controller.pushNotification($app$$,$obj$$)}return null};$contr_router$$.post=async function($obj$$,$fn$$){$fn$$||=function(){};let $he_so_qd$$=await currency.getRate($obj$$.id_app,$obj$$.ma_nt)||1;await ($obj$$.details||[]).asyncJoinModel2($obj$$.id_app,dmvt,{where:"ma_vt",fields:["is_point","is_coin"]});async.series({BuyPoint:$callback$$=>{BuyPoint($obj$$).then(()=>{$callback$$()}).catch($e$$=> {$callback$$($e$$)})},post_sodiemthuong:function($callback$$){const $details$$=[];$obj$$.details.filter($d$$=>$d$$.diem_thuong).forEach($d$jscomp$7_detail$$=>{$d$jscomp$7_detail$$={...$d$jscomp$7_detail$$};$d$jscomp$7_detail$$.ngay_ct=$obj$$.ngay_ct;$d$jscomp$7_detail$$.ma_kh=$obj$$.ma_kh;$d$jscomp$7_detail$$.sl_nhan=$d$jscomp$7_detail$$.diem_thuong;$details$$.push($d$jscomp$7_detail$$)});(new PostBook($obj$$,$details$$,Sodiemthuong)).run(function($e$$,$rs$$){$callback$$($e$$,$rs$$)})},post_socai:function($callback$$){if(!$obj$$.virtual_payment_client_url)return $callback$$(); options.findOne({id_app:$obj$$.id_app,id_func:ma_ct.toLowerCase()}).lean().exec(async($error$jscomp$3_tt_tt$$,$rs$$)=>{let $option$$;$option$$=$rs$$?$rs$$.option||{}:{};let $pt$$;$obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan)&&($pt$$=await ptthanhtoan.findOne({id_app:$obj$$.id_app,_id:$obj$$.pt_thanh_toan}).lean());$pt$$=$pt$$||{};$pt$$.ma_kh&&($pt$$.tk_tien=$pt$$.tk_cn);Logger.info("phuong thuc thanh toan so5",$obj$$.pt_thanh_toan,$pt$$);$option$$.tk_tien=$pt$$.tk_tien|| $option$$.tk_tien||"1111";$option$$.tk_cn=$pt$$.tk_cn||$option$$.tk_cn||"131111";$option$$.tk_dt=$pt$$.tk_dt||$option$$.tk_dt||"51111";$option$$.tk_tl=$pt$$.tk_tl||$option$$.tk_tl||"52131";$option$$.tk_ck=$pt$$.tk_ck||$option$$.tk_ck||"52111";$option$$.tk_cp_bh=$pt$$.tk_cp_bh||$option$$.tk_cp_bh||$option$$.tk_ck;$option$$.ma_kh=$pt$$.ma_kh||$obj$$.ma_kh;const $details$$=[];$obj$$.details.forEach(function($d$jscomp$8_detail$$){$d$jscomp$8_detail$$={...$d$jscomp$8_detail$$};$d$jscomp$8_detail$$.tk_co= $option$$.tk_dt;$d$jscomp$8_detail$$.tk_no=$option$$.tk_tien;$d$jscomp$8_detail$$.ma_kh_co=$obj$$.ma_kh;$d$jscomp$8_detail$$.ma_kh_no=$option$$.ma_kh;$d$jscomp$8_detail$$.tien_nt=$d$jscomp$8_detail$$.tien_hang_nt-($d$jscomp$8_detail$$.tien_ck_nt||0);$d$jscomp$8_detail$$.tien=$d$jscomp$8_detail$$.tien_hang-($d$jscomp$8_detail$$.tien_ck||0);$details$$.push($d$jscomp$8_detail$$)});$obj$$.details.filter($d$$=>$d$$.diem_thuong&&$d$$.tk_km_no&&$d$$.tk_km_co).forEach(function($d$$){let $detail$$={...$d$$}; $detail$$.tk_co=$option$$.tk_km_co||$d$$.tk_km_co;$detail$$.tk_no=$option$$.tk_km_no||$d$$.tk_km_no;$detail$$.ma_kh=$obj$$.ma_kh;$detail$$.tien=$detail$$.tien_nt=$detail$$.diem_thuong*$he_so_qd$$;$details$$.push($detail$$)});$obj$$.tt_tien_thuong&&($error$jscomp$3_tt_tt$$={},$error$jscomp$3_tt_tt$$.tk_no=$option$$.tk_cp_bh,$error$jscomp$3_tt_tt$$.tk_co=$option$$.tk_tien,$error$jscomp$3_tt_tt$$.tien_nt=$obj$$.tt_tien_thuong||0,$error$jscomp$3_tt_tt$$.tien=$error$jscomp$3_tt_tt$$.tien_nt,$error$jscomp$3_tt_tt$$.ma_kh_no= $obj$$.ma_kh,$error$jscomp$3_tt_tt$$.ma_kh_co=$option$$.ma_kh,$details$$.push($error$jscomp$3_tt_tt$$));if($obj$$.tien_ck_hd||$obj$$.tien_evoucher)$error$jscomp$3_tt_tt$$={},$error$jscomp$3_tt_tt$$.tk_no=$option$$.tk_ck,$error$jscomp$3_tt_tt$$.tk_co=$option$$.tk_tien,$error$jscomp$3_tt_tt$$.tien_nt=($obj$$.tien_ck_hd||0)+($obj$$.tien_evoucher||0),$error$jscomp$3_tt_tt$$.tien=$error$jscomp$3_tt_tt$$.tien_nt,$error$jscomp$3_tt_tt$$.ma_kh_no=$obj$$.ma_kh,$error$jscomp$3_tt_tt$$.ma_kh_co=$option$$.ma_kh, $error$jscomp$3_tt_tt$$.check_balance=!1,$details$$.push($error$jscomp$3_tt_tt$$);(new PostSocai($obj$$,$details$$)).run(function($e$$,$rs$$){$callback$$($e$$,$rs$$)})})}},function($e$$,$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.creating=async function($user$$,$obj$$,$next$$){$obj$$.details||($obj$$.details=[]);$obj$$.virtual_payment_client_url=void 0;if(!$obj$$.ma_kh){let $cust$$=await global.getModel("customer").findOne({id_app:$user$$.current_id_app,of_user:$user$$.email},{ma_kh:1,ten_kh:1}).lean(); $cust$$&&($obj$$.ma_kh=$cust$$.ma_kh)}valid($user$$,$obj$$,async $error$$=>{if($error$$)return $next$$($error$$);if(!$obj$$.paymentByPoints)return $next$$(null,$obj$$);try{let $detail_buy_coins$$=$obj$$.details.filter($d$$=>$d$$.is_coin&&!$d$$.transferred&&$d$$.wallet_receiver).asyncGroupBy(["ma_vt"],["sl_xuat"]);if($detail_buy_coins$$.length==1&&await getWalletBalanceOfApp($user$$.current_id_app,$detail_buy_coins$$[0].ma_vt.toLowerCase())<$detail_buy_coins$$[0].sl_xuat)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 n\u1ea1p ti\u1ec1n th\u1eddi gian n\u00e0y. Hay th\u1eed l\u1ea1i sau"); if($detail_buy_coins$$.length>1)return $next$$("M\u1ed7i l\u1ea7n ch\u1ec9 \u0111\u01b0\u1ee3c mua m\u1ed9t lo\u1ea1i coin");if(await getPointBalance($user$$.current_id_app,$user$$.email)<$obj$$.paymentByPoints)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 \u0111\u1ee7 \u0111i\u1ec3m \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y.");$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message)}})};$contr_router$$.created=async function($user$$,$obj$$,$next$$){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$= await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan});if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount&&$paymentServiceModel$$.createVirtualPaymentClientURL){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$; $obj$$.payment_service=$pt_thanh_toan$$.payment_service;$obj$$.payment_id=((await $paymentServiceModel$$.findOne({$or:[{id_ct:$obj$$._id.toString()},{request_id:$obj$$._id.toString()},{order_id:$obj$$._id.toString()}]})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return Logger.error($e$$),$next$$("Kh\u00f4ng tao li\u00ean k\u1ebft thanh to\u00e1n:"+($e$$.message||$e$$.error|| $e$$))}else Logger.info("Chua nhap phuong thuc thanh toan"),$obj$$.virtual_payment_client_url="";await model.updateOne({_id:$obj$$._id},{virtual_payment_client_url:$obj$$.virtual_payment_client_url,payment_id:$obj$$.payment_id,payment_service:$obj$$.payment_service}).catch(console.error);await createTransactionPayment($obj$$);await createTransactionBonus($obj$$);$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.updating= async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.pt_thanh_toan&&$data$$.pt_thanh_toan!=$obj$$.pt_thanh_toan&&($data$$.virtual_payment_client_url="",$data$$.payment_service="",$data$$.payment_id="");valid($user$$,$data$$,async $detail_buy_coins$jscomp$1_error$$=>{if($detail_buy_coins$jscomp$1_error$$)return $next$$($detail_buy_coins$jscomp$1_error$$);if(($obj$$.paymentByPoints||0)!==($data$$.paymentByPoints||0))return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt s\u1ed1 \u0111i\u1ec3m thanh to\u00e1n."); $detail_buy_coins$jscomp$1_error$$=$data$$.details.filter($d$$=>$d$$.is_coin&&!$d$$.transferred&&$d$$.wallet_receiver).asyncGroupBy(["ma_vt"],["sl_xuat"]);if($detail_buy_coins$jscomp$1_error$$.length==1&&await getWalletBalanceOfApp($user$$.current_id_app,$detail_buy_coins$jscomp$1_error$$[0].ma_vt.toLowerCase())<$detail_buy_coins$jscomp$1_error$$[0].sl_xuat)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 n\u1ea1p ti\u1ec1n th\u1eddi gian n\u00e0y. Hay th\u1eed l\u1ea1i sau");if($detail_buy_coins$jscomp$1_error$$.length> 1)return $next$$("M\u1ed7i l\u1ea7n ch\u1ec9 \u0111\u01b0\u1ee3c mua m\u1ed9t lo\u1ea1i coin");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$next$$(null,$data$$,$obj$$)},$obj$$)};$contr_router$$.updated=async function($evouchers_user$$,$obj$$,$next$$){if(!$obj$$.virtual_payment_client_url&&($obj$$.trang_thai==="1"||$obj$$.trang_thai==="0")){if($obj$$.pt_thanh_toan&&global.mongoose.Types.ObjectId.isValid($obj$$.pt_thanh_toan))try{const $pt_thanh_toan$$=await global.getModel("ptthanhtoan").findOne({_id:$obj$$.pt_thanh_toan}); if($pt_thanh_toan$$.payment_service){let $paymentServiceModel$$=global.getModel($pt_thanh_toan$$.payment_service);$obj$$.amount=$obj$$.t_tt_nt-($obj$$.tien_paymentByPoints||0);if($obj$$.amount&&$paymentServiceModel$$.createVirtualPaymentClientURL){let $virtual_payment_client_url$$=await $paymentServiceModel$$.createVirtualPaymentClientURL($obj$$,$evouchers_user$$.clientIp,$pt_thanh_toan$$);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$;$obj$$.payment_service=$pt_thanh_toan$$.payment_service; $obj$$.payment_id=((await $paymentServiceModel$$.findOne({$or:[{id_ct:$obj$$._id.toString()},{request_id:$obj$$._id.toString()},{order_id:$obj$$._id.toString()}]})||{})._id||"").toString()}else $obj$$.virtual_payment_client_url="",$obj$$.payment_service="",$obj$$.payment_id=""}else $obj$$.virtual_payment_client_url=""}catch($e$$){return Logger.error($e$$),$next$$("Error create Virtual Payment ClientURL:"+($e$$.message||$e$$.error||$e$$))}else $obj$$.virtual_payment_client_url="";await model.updateOne({_id:$obj$$._id}, {virtual_payment_client_url:$obj$$.virtual_payment_client_url,payment_id:$obj$$.payment_id,payment_service:$obj$$.payment_service}).catch(console.error)}$obj$$.trang_thai==="9"?(await transaction.deleteTrans({id_ct:$obj$$._id.toString()}),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng"),await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"})):(await createTransactionPayment($obj$$),createTransactionBonus($obj$$)); await Evoucher.updateMany({id_ct_used:$obj$$._id.toString()},{id_ct_used:null});$evouchers_user$$=await Evoucher.find({id_ct_useds:$obj$$._id.toString()});await Promise.all($evouchers_user$$.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>updateEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.deleting=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.deleted=async function($user$$, $obj$$,$next$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng");await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":buy"});$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>deleteEvoucher($e$$.id_app,$e$$.ma,$obj$$._id)));$next$$(null,$obj$$)};$contr_router$$.view=async function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;await Promise.all($items$$.filter($item$$=> $item$$.trang_thai=="0"||$item$$.trang_thai=="2"||$item$$.trang_thai=="7").map($inv$$=>(async()=>{let $tg_hien_tai$$=(new Date).getTime(),$tg_tao$$=(new Date($inv$$.date_created)).getTime();($tg_hien_tai$$-$tg_tao$$)/864E5>1&&($inv$$.trang_thai="9",await model.findOneAndUpdate({_id:$inv$$._id},{trang_thai:9}))})()));async.parallel({kh:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kh).joinModel2($id_app$$,customer,[{where:"ma_kh",fields:"ten_kh"}],function(){$callback$$()})},nhan_vien_giao_hang:function($callback$$){$items$$.filter($item$$=> $item$$.nhan_vien_giao_hang).joinModel2($id_app$$,customer,[{where:{nhan_vien_giao_hang:"ma_kh"},fields:[{ten_nhan_vien_giao_hang:"ten_kh"}]}],function(){$callback$$()})},nv_giao_hang:function($callback$$){$items$$.filter($item$$=>$item$$.user_nv_giao_hang).joinModel2(null,User,{where:{user_nv_giao_hang:"email"},fields:{ten_nv_giao_hang:"name"}},function(){$callback$$()})},trangthai:function($callback$$){$items$$.filter($item$$=>$item$$.trang_thai).joinModel2(null,trangthai,[{where:{trang_thai:"ma_trang_thai", ma_ct:"ma_ct"},fields:["ten_trang_thai","color"]}],function(){$callback$$()})},ptthanhtoan:function($callback$$){$items$$.filter($item$$=>$item$$.pt_thanh_toan).joinModel2($id_app$$,ptthanhtoan,[{where:{pt_thanh_toan:"_id"},fields:[{ten_pt_thanh_toan:"ten"},{tk_cn_thanhtoan:"tk_cn"}]}],function(){$callback$$()})},pt1:function($callback$$){$items$$.joinModel2($id_app$$,pt1,[{where:{_id:"id_so5"},fields:[{id_pt1:"_id"},{so_ct_pt1:"so_ct"},{ma_ct_pt1:"ma_ct"},{ngay_ct_pt1:"ngay_ct"}]}],function(){$callback$$()})}, t_tien:function($callback$$){$items$$.forEach(function($r$$){$r$$.details?($r$$.t_sl=$r$$.details.csum("sl_xuat"),$r$$.t_tien_hang=$r$$.details.csum("tien_hang"),$r$$.t_tien_hang_nt=$r$$.details.csum("tien_hang_nt"),$r$$.t_tien=$r$$.t_tien_hang-$r$$.details.csum("tien_ck_nt"),$r$$.t_tien_nt=$r$$.t_tien_hang_nt-$r$$.details.csum("tien_ck"),$r$$.t_ck_nt=$r$$.t_ck=$r$$.tien_ck_hd+($r$$.tien_evoucher||0)):($r$$.t_sl=0,$r$$.t_tien_hang=0,$r$$.t_tien_hang_nt=0,$r$$.t_ck=0,$r$$.t_ck_nt=0,$r$$.t_tien=$r$$.t_tien_hang, $r$$.t_tien_nt=$r$$.t_tien_hang_nt);$r$$.ctcpbhs?($r$$.t_cp_cpb_nt=$r$$.ctcpbhs.csum("tien_cp_nt"),$r$$.t_cp_cpb=$r$$.ctcpbhs.csum("tien_cp")):($r$$.t_cp_cpb_nt=0,$r$$.t_cp_cpb=0);$r$$.t_tt_nt=$r$$.t_tien_nt+$r$$.t_cp_cpb_nt-$r$$.t_ck_nt-($r$$.tt_tien_thuong||0)+($r$$.tien_phi_vc||0)-($r$$.tien_freeship||0);$r$$.t_tt=$r$$.t_tien+$r$$.t_cp_cpb-$r$$.t_ck-($r$$.tt_tien_thuong||0)+($r$$.tien_phi_vc||0)-($r$$.tien_freeship||0)});$callback$$()},details_vt:function($callback$$){async.each($items$$,function($details$jscomp$2_r$$, $callback1$$){$details$jscomp$2_r$$=$details$jscomp$2_r$$.details;if(!$details$jscomp$2_r$$)return $callback1$$();$details$jscomp$2_r$$.joinModel2($id_app$$,dmvt,[{where:"ma_vt",fields:["ten_vt"]}],function(){$callback1$$()})},function(){$callback$$()})},details_tt1:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){($r$$.details||[]).filter($item$$=>$item$$.ma_tt1).joinModel2($id_app$$,dmtt,[{where:{ma_vt:"ma_vt",ma_tt1:"ma_tt"},setFields:($item$$,$ref$$)=>{$item$$.ten_vt= $item$$.ten_vt+" - "+$ref$$.ten_tt}}],function(){$callback1$$()})},function(){$callback$$()})},details_dt:function($callback$$){async.mapSeries($items$$,function($details$jscomp$4_r$$,$callback1$$){$details$jscomp$4_r$$=$details$jscomp$4_r$$.details;if(!$details$jscomp$4_r$$)return $callback1$$();$details$jscomp$4_r$$.filter($item$$=>$item$$.ma_dt).joinModel2($id_app$$,dmdt,[{where:"ma_dt",fields:["ten_dt"]}],function(){$callback1$$()})},function(){$callback$$()})},details_contract:function($callback$$){async.mapSeries($items$$, function($details$jscomp$5_r$$,$callback1$$){$details$jscomp$5_r$$=$details$jscomp$5_r$$.details;if(!$details$jscomp$5_r$$)return $callback1$$();$details$jscomp$5_r$$.filter($item$$=>$item$$.ma_hd).joinModel2($id_app$$,contract,[{where:{ma_hd:"so_hd"},fields:["ten_hd"]}],function(){$callback1$$()})},function(){$callback$$()})},details_phi:function($callback$$){async.mapSeries($items$$,function($details$jscomp$6_r$$,$callback1$$){$details$jscomp$6_r$$=$details$jscomp$6_r$$.details;if(!$details$jscomp$6_r$$)return $callback1$$(); $details$jscomp$6_r$$.filter($item$$=>$item$$.ma_phi).joinModel2($id_app$$,dmphi,[{where:"ma_phi",fields:["ten_phi"]}],function(){$callback1$$()})},function(){$callback$$()})},details_cpbh:function($callback$$){async.each($items$$,function($ctcpbhs_r$$,$callback1$$){$ctcpbhs_r$$=$ctcpbhs_r$$.ctcpbhs;if(!$ctcpbhs_r$$)return $callback1$$();$ctcpbhs_r$$?$ctcpbhs_r$$.filter($item$$=>$item$$.ma_cp).joinModel2($id_app$$,dmcpmh,[{where:"ma_cp",fields:["ten_cp"]}],function(){$callback1$$()}):$callback1$$()}, function(){$callback$$()})}},function(){$fn$$(null,$items$$)})}};