flexbiz-server
Version:
Flexible Server
42 lines (41 loc) • 21 kB
JavaScript
const options=global.getModel("options"),PostSocai=require("../../libs/post-socai"),transaction=global.getModel("transaction"),User=global.getModel("user"),Dmdvt=global.getModel("dmdvt"),Evoucher=global.getModel("evoucher"),dvcs=global.getModel("dvcs"),service=global.getModel("service"),customer=global.getModel("customer"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),contract=global.getModel("contract"),trangthai=global.getModel("trangthai"),dmdiemthuong=global.getModel("dmdiemthuong"),
currency=global.getModel("currency"),ptthanhtoan=global.getModel("ptthanhtoan"),onepay=global.getModel("onepay"),Task=global.getModel("task"),TaskReg=global.getModel("taskreg"),model=global.getModel("so3"),controller=require("../../controllers/controller"),ckdiem=require("../../libs/ckdiem"),async=require("async"),Moment=require("moment"),ma_ct="SO3",REMINDER_BEFORE_HOURS=2,creatTask=async($obj$$,$detail$$,$start_date$$,$thu_phi$$=0)=>{$start_date$$=new Date($start_date$$.getTime());$start_date$$.setHours($detail$$.gio_lam_tu.getHours());
$start_date$$.setMinutes($detail$$.gio_lam_tu.getMinutes());let $reminder_date$$=new Date($start_date$$.getTime());$reminder_date$$.setHours($reminder_date$$.getHours()-REMINDER_BEFORE_HOURS);let $due_date$$=new Date($start_date$$.getTime());$due_date$$.setHours($detail$$.gio_lam_den.getHours());$due_date$$.setMinutes($detail$$.gio_lam_den.getMinutes());let $todos$$=$detail$$.tasks.filter($t$$=>$t$$.sel);$todos$$=$todos$$.map($_t_t$$=>{$_t_t$$=Object.assign({},$_t_t$$);$_t_t$$.sel=!1;$_t_t$$.title=
$_t_t$$.title||$_t_t$$.ten_cv;return $_t_t$$});await Task.create({id_app:$obj$$.id_app,ten_cv:$detail$$.service_name,nh_cv:"5def558fab6f2e22afd9429e",id_ct:$obj$$._id.toString(),phu_trach:$obj$$.nhan_vien_thuc_hien,location:($obj$$.profile||{}).dia_chi,start_date:$start_date$$,due_date:$due_date$$,reminder:$reminder_date$$,repeat:0,priority:1,progress:0,percent:0,thu_phi:$thu_phi$$,todos:$todos$$,user_created:$obj$$.user_created,date_created:$obj$$.date_created,status:!0})},createCalendar=async $obj$$=>
{await Task.deleteMany({id_ct:$obj$$._id.toString()});($obj$$.details||[]).forEach(async $detail$$=>{var $currentDay_nextDay$$=new Date($detail$$.ngay_bat_dau.getTime());let $so_buoi$$=$detail$$.kieu_tg==="HH"?1:($detail$$.sl_xuat||1)*($detail$$.so_lan||1),$days_of_week$$=($detail$$.days_of_week||[]).filter($d$$=>$d$$.sel).map($d$$=>$d$$.index);await creatTask($obj$$,$detail$$,$currentDay_nextDay$$,$obj$$.tien_con_lai);let $stt_current_day$$=1;for(;$stt_current_day$$<$so_buoi$$;)if($currentDay_nextDay$$=
$currentDay_nextDay$$.nextDay($days_of_week$$))await creatTask($obj$$,$detail$$,$currentDay_nextDay$$),$currentDay_nextDay$$=new Date($currentDay_nextDay$$.getTime()),$stt_current_day$$+=1;else break})},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)})}),createTransactionPayment=async function($obj$$){await transaction.deleteTrans({id_ct:$obj$$._id.toString()});
if($obj$$.paymentByPoints){var $description$$=$obj$$.dien_giai;if(!$description$$&&$obj$$.details&&$obj$$.details.length>0&&($description$$=$obj$$.details[0].service_name,!$description$$))try{$description$$=await service.getInfo($obj$$.id_app,{service_code:$obj$$.details[0].service_code},"service_name")}catch($e$$){Logger.info($e$$.message,$obj$$.details[0].service_code)}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 d\u1ecbch v\u1ee5 ${$description$$||""}`,otherData:{ma_ct:$obj$$.ma_ct,so_ct:$obj$$.so_ct,ngay_ct:$obj$$.ngay_ct,id_ct:$obj$$._id.toString()}})}},createTransactionBonus=async function($obj$$){if($obj$$.trang_thai!="5"&&$obj$$.trang_thai!="4")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"),null;var $amount_ckdiemthuong_kh_ty_le_diem_thuong$$=await customer.findOne({id_app:$obj$$.id_app,
ma_kh:$obj$$.ma_kh});if($amount_ckdiemthuong_kh_ty_le_diem_thuong$$){var $lan_mua_old_trans_sl_t_tien$$=(await model.find({id_app:$obj$$.id_app,ma_kh:$obj$$.ma_kh,ngay_ct:{$lte:$obj$$.ngay_ct}})).length+1,$now$$=Moment(new Date).startOf("date").toDate();$amount_ckdiemthuong_kh_ty_le_diem_thuong$$=await dmdiemthuong.find({id_app:$obj$$.id_app,status:!0,ma_kh:{$in:[null,"",$amount_ckdiemthuong_kh_ty_le_diem_thuong$$.ma_kh]},nh_kh:{$in:[null,"",$amount_ckdiemthuong_kh_ty_le_diem_thuong$$.nh_kh]},hieu_luc_tu:{$lte:$now$$},
hieu_luc_den:{$gte:$now$$},ap_dung_lan_mua_thu:{$in:[0,$lan_mua_old_trans_sl_t_tien$$]}}).sort({hieu_luc_tu:-1}).limit(1);if($amount_ckdiemthuong_kh_ty_le_diem_thuong$$.length===0)await transaction.deleteTrans({id_ct:$obj$$._id.toString()+":bonus"},"Tr\u1ea3 l\u1ea1i \u0111i\u1ec3m th\u01b0\u1edfng \u0111\u1ec3 t\u00ednh l\u1ea1i");else{if($amount_ckdiemthuong_kh_ty_le_diem_thuong$$[0].tien){$amount_ckdiemthuong_kh_ty_le_diem_thuong$$=$amount_ckdiemthuong_kh_ty_le_diem_thuong$$[0].diem/$amount_ckdiemthuong_kh_ty_le_diem_thuong$$[0].tien;
if(!$amount_ckdiemthuong_kh_ty_le_diem_thuong$$)return;$lan_mua_old_trans_sl_t_tien$$=$obj$$.details.map($d$$=>$d$$.tien_hang-($d$$.tien_ck||0)).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$amount_ckdiemthuong_kh_ty_le_diem_thuong$$=Math.roundBy($lan_mua_old_trans_sl_t_tien$$*$amount_ckdiemthuong_kh_ty_le_diem_thuong$$,0)}else $lan_mua_old_trans_sl_t_tien$$=$obj$$.details.filter($d$$=>$d$$.tien_hang).map($d$$=>$d$$.sl_xuat||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$amount_ckdiemthuong_kh_ty_le_diem_thuong$$=Math.roundBy($amount_ckdiemthuong_kh_ty_le_diem_thuong$$[0].diem*
$lan_mua_old_trans_sl_t_tien$$,0);if($amount_ckdiemthuong_kh_ty_le_diem_thuong$$){if($lan_mua_old_trans_sl_t_tien$$=await transaction.findOne({id_ct:$obj$$._id.toString()+":bonus"}),!$lan_mua_old_trans_sl_t_tien$$||$lan_mua_old_trans_sl_t_tien$$.amount!==$amount_ckdiemthuong_kh_ty_le_diem_thuong$$)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:$amount_ckdiemthuong_kh_ty_le_diem_thuong$$,description:"\u0110i\u1ec3m th\u01b0\u1edfng s\u1eed d\u1ee5ng d\u1ecbch v\u1ee5",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")}}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")},checkEvoucher=($user$$,$obj$$)=>($obj$$.evouchers||[]).map($ev$$=>new Promise(($resolve$$,$reject$$)=>{(async()=>{const $_e$$=await Evoucher.findOne({_id:$ev$$._id});if(!$_e$$)return $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$$.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)})()})),valid=async function($user$$,$obj$$,$next$$){try{var $_checkEvoucher_i$$=checkEvoucher($user$$,
$obj$$);await Promise.all($_checkEvoucher_i$$)}catch($e$$){return $next$$($e$$.message)}if($obj$$.paymentByPoints)try{var $detail$$=await currency.getRate($obj$$.id_app,$obj$$.ma_nt);$obj$$.tien_paymentByPoints=$obj$$.paymentByPoints*$detail$$}catch($e$$){return $next$$($e$$.message)}for($_checkEvoucher_i$$=0;$_checkEvoucher_i$$<$obj$$.details.length;$_checkEvoucher_i$$++)$detail$$=$obj$$.details[$_checkEvoucher_i$$],$detail$$.line=$_checkEvoucher_i$$,$obj$$.ma_nt==="VND"&&($detail$$.tien=$detail$$.tien_nt,
$detail$$.tien_hang=$detail$$.tien_hang_nt,$detail$$.tien_ck=$detail$$.tien_ck_nt,$detail$$.gia_ban=$detail$$.gia_ban_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")})},checkUserRegistedTask=async($obj$$,$user$$)=>
{let $rss$$=await Promise.all($obj$$.details.map(async $detail$$=>{let $gio_lam_tu$$=$detail$$.gio_lam_tu.getHours()*60+$detail$$.gio_lam_tu.getMinutes(),$gio_lam_den$$=$detail$$.gio_lam_den.getHours()*60+$detail$$.gio_lam_den.getMinutes(),$days_of_week$$=$detail$$.days_of_week.filter($d$$=>$d$$.sel).map($d$$=>$d$$.index).join(",");eval(`days_of_week_compare_func = function(){return (this.gio_lam_tu.getHours()*60+this.gio_lam_tu.getMinutes())<=${$gio_lam_tu$$} && (this.gio_lam_den.getHours()*60+this.gio_lam_den.getMinutes())>=${$gio_lam_den$$} && (this.days_of_week.filter(d=>d.sel).length===0 || this.days_of_week.filter(d=>d.sel).map(d=>d.index).join(",").indexOf('${$days_of_week$$}')>=0)}`);
return await TaskReg.findOne({id_app:$obj$$.id_app,user_created:$user$$,service_code:$detail$$.service_code,trang_thai:"5",gioi_tinh:{$in:[null,void 0,"B\u1ea5t k\u1ef3",$obj$$.profile.gioi_tinh]},$where:void 0,location:{$nearSphere:{$geometry:$obj$$.profile.location,$maxDistance:1E5}}},{user_created:1})}));Logger.info("check taskreg",$obj$$.so_ct,$user$$,$rss$$);return $rss$$.find($r$$=>$r$$)};
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{isVoucher:!0,requireRecaptchaToken:!0,sort:{ngay_ct:-1,so_ct:-1},onEmitEvent:async($obj$$,$users_will_receive$$,$next$$,$notificationData$$={},$settings$$={})=>{$notificationData$$.action==="NEW"&&$settings$$.group_id&&($users_will_receive$$=(await Promise.all($users_will_receive$$.map(async $user$$=>{let $rs$$=await checkUserRegistedTask($obj$$,$user$$);return{user:$user$$,reg:$rs$$}}))).filter($r$$=>
$r$$.reg).map($r$$=>$r$$.user),Logger.info("uses registed this task",$users_will_receive$$));Logger.warn(`send notification order ${$obj$$.so_ct}, trang thai ${$obj$$.trang_thai} to ${$users_will_receive$$}`);$next$$(null,$users_will_receive$$,$notificationData$$)},onFinding:async($_service_codes_condition_taskreg$jscomp$1_regs_user$$,$condition$$,$next$$)=>{if($condition$$.partnerSearch){$_service_codes_condition_taskreg$jscomp$1_regs_user$$={id_app:$_service_codes_condition_taskreg$jscomp$1_regs_user$$.current_id_app,
user_created:$_service_codes_condition_taskreg$jscomp$1_regs_user$$.email,trang_thai:"5"};if($condition$$.service_code||$condition$$["details.service_code"])$_service_codes_condition_taskreg$jscomp$1_regs_user$$.service_code=$condition$$.service_code||$condition$$["details.service_code"];$_service_codes_condition_taskreg$jscomp$1_regs_user$$=await TaskReg.find($_service_codes_condition_taskreg$jscomp$1_regs_user$$);$_service_codes_condition_taskreg$jscomp$1_regs_user$$=new Set($_service_codes_condition_taskreg$jscomp$1_regs_user$$.map($reg$$=>
$reg$$.service_code));$condition$$["details.service_code"]={$in:Array.from($_service_codes_condition_taskreg$jscomp$1_regs_user$$)};delete $condition$$.service_code;delete $condition$$.partnerSearch;Logger.info("find so1",$condition$$);return $next$$(null,$condition$$)}$next$$(null,$condition$$)}});$contr_router$$.route();$contr_router$$.post=function($obj$$,$fn$$){$fn$$||=function(){};async.series({post_socai:function($callback$$){options.findOne({id_app:$obj$$.id_app,id_func:ma_ct.toLowerCase()}).lean().exec(function($error$$,
$rs$$){let $option$$;$option$$=$rs$$?$rs$$.option||{}:{};(new Promise($resolve$$=>{if($obj$$.pt_thanh_toan)ptthanhtoan.findOne({id_app:$obj$$.id_app,_id:$obj$$.pt_thanh_toan}).lean().exec(($e$$,$pt$$)=>{$e$$&&Logger.info($e$$);$resolve$$($pt$$||{})});else return $resolve$$({})})).then($pt$$=>{$option$$.tk_tien=$pt$$.tk_tien||$option$$.tk_tien||"1111";$option$$.tk_cn=$pt$$.tk_cn||$option$$.tk_cn||"131111";$option$$.tk_tien_dc=$option$$.tk_cn;$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||"5211";$option$$.ma_kh=$pt$$.tra_truoc?$pt$$.ma_kh||$obj$$.ma_kh:$obj$$.user_perform||$pt$$.ma_kh||$obj$$.ma_kh;const $details$$=[];if($pt$$.tra_truoc&&!$pt$$.thanh_toan_bang_diem){var $detail$$={...$obj$$};$detail$$.tk_co=$option$$.tk_cn;$detail$$.tk_no=$option$$.tk_tien;$detail$$.ma_kh=$option$$.ma_kh;$detail$$.tien_nt=$obj$$.details.map($d$$=>$d$$.tien_nt).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$detail$$.tien=$obj$$.details.map($d$$=>
$d$$.tien).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$details$$.push($detail$$)}$obj$$.details.forEach(function($d$jscomp$10_detail$$){$d$jscomp$10_detail$$={...$d$jscomp$10_detail$$};$d$jscomp$10_detail$$.tk_co=$option$$.tk_dt;$d$jscomp$10_detail$$.ma_kh=$option$$.ma_kh;$d$jscomp$10_detail$$.ngay_ct=$obj$$.ngay_thuc_hien||$obj$$.ngay_ct;$d$jscomp$10_detail$$.tk_no=$pt$$.tra_truoc?$option$$.tk_cn:$option$$.tk_tien_dc?$option$$.tk_tien_dc:$option$$.tk_tien;$d$jscomp$10_detail$$.tien_nt=$d$jscomp$10_detail$$.tien_hang_nt;
$d$jscomp$10_detail$$.tien=$d$jscomp$10_detail$$.tien_hang;$details$$.push($d$jscomp$10_detail$$)});$obj$$.details.forEach(function($d$jscomp$11_detail$$){$d$jscomp$11_detail$$={...$d$jscomp$11_detail$$};$d$jscomp$11_detail$$.tk_no=$option$$.tk_ck;$d$jscomp$11_detail$$.ma_kh=$option$$.ma_kh;$d$jscomp$11_detail$$.ngay_ct=$obj$$.ngay_thuc_hien||$obj$$.ngay_ct;$d$jscomp$11_detail$$.tk_co=$pt$$.tra_truoc?$option$$.tk_cn:$option$$.tk_tien;$d$jscomp$11_detail$$.tien_nt=$d$jscomp$11_detail$$.tien_ck_nt;
$d$jscomp$11_detail$$.tien=$d$jscomp$11_detail$$.tien_ck;$details$$.push($d$jscomp$11_detail$$)});if($obj$$.tien_ck_hd||$obj$$.tien_evoucher)$detail$$={},$detail$$.tk_no=$option$$.tk_ck,$detail$$.tk_co=$obj$$.tien_thu&&$obj$$.t_tt==$obj$$.tien_thu?$option$$.tk_tien:$option$$.tk_cn,$detail$$.tien_nt=($obj$$.tien_ck_hd||0)+($obj$$.tien_evoucher||0),$detail$$.tien=$detail$$.tien_nt,$detail$$.ma_kh=$option$$.ma_kh,$details$$.push($detail$$);(new PostSocai($obj$$,$details$$)).run(function($e$$,$rs$$){$callback$$($e$$,
$rs$$)})})})}},function($e$$,$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.creating=function($user$$,$obj$$,$next$$){$obj$$.details||($obj$$.details=[]);valid($user$$,$obj$$,async $error$$=>{if($error$$)return $next$$($error$$);if(!$obj$$.paymentByPoints)return $next$$(null,$obj$$);try{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$$){try{let $virtual_payment_client_url$$=await onepay.createVirtualPaymentClientURL($obj$$,$user$$.clientIp);await model.updateOne({_id:$obj$$._id},{virtual_payment_client_url:$virtual_payment_client_url$$}).catch(console.error);$obj$$.virtual_payment_client_url=$virtual_payment_client_url$$}catch($e$$){Logger.info("Error create Virtual Payment ClientURL",$e$$.message),$obj$$.virtual_payment_client_url=
""}await createTransactionPayment($obj$$);await createTransactionBonus($obj$$);await createCalendar($obj$$);$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>Evoucher.updateOne({_id:$e$$._id},{id_ct_used:$obj$$._id.toString()})));$next$$(null,$obj$$)};$contr_router$$.updating=async($user$$,$data$$,$obj$$,$next$$)=>{valid($user$$,$data$$,async $error$$=>{if($error$$)return $next$$($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.");
$next$$(null,$data$$,$obj$$)})};$contr_router$$.updated=async function($user$$,$obj$$,$next$$){await Task.updateMany({id_ct:$obj$$._id.toString()},{phu_trach:$obj$$.nhan_vien_thuc_hien});$obj$$.trang_thai=="1"&&await createCalendar($obj$$);$obj$$.trang_thai=="9"?(await Task.updateMany({id_ct:$obj$$._id.toString(),progress:{$ne:2}},{progress:4}),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 createTransactionBonus($obj$$);await Evoucher.updateMany({id_ct_used:$obj$$._id.toString()},{id_ct_used:""});$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>Evoucher.updateOne({_id:$e$$._id},{id_ct_used:$obj$$._id.toString()})));$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 Task.deleteMany({id_ct:$obj$$._id.toString()});$obj$$.evouchers&&await Promise.all($obj$$.evouchers.map($e$$=>Evoucher.updateOne({_id:$e$$._id},{id_ct_used:""})));$next$$(null,$obj$$)};$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.parallel({kh:function($callback$$){$items$$.joinModel2($id_app$$,customer,[{where:"ma_kh",fields:["ten_kh"]}],function(){$callback$$()})},nhan_vien_thuc_hien:function($callback$$){$items$$.joinModel2(null,
User,[{where:{nhan_vien_thuc_hien:"email"},fields:[{ten_nhan_vien_thuc_hien:"name"},{hinh_nhan_vien_thuc_hien:"picture"}]}],function(){$callback$$()})},trangthai:function($callback$$){$items$$.joinModel2(null,trangthai,[{where:{trang_thai:"ma_trang_thai",ma_ct:"ma_ct"},fields:["ten_trang_thai","color"]}],function(){$callback$$()})},ptthanhtoan:function($callback$$){$items$$.joinModel2($id_app$$,ptthanhtoan,[{where:{pt_thanh_toan:"_id"},fields:{ten_pt_thanh_toan:"ten"}}],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_ck=$r$$.details.csum("tien_ck")+$r$$.tien_ck_hd,$r$$.t_ck_nt=$r$$.details.csum("tien_ck_nt")+$r$$.tien_ck_hd):($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_ck;$r$$.t_tien_nt=$r$$.t_tien_hang_nt-$r$$.t_ck_nt;
$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_tt=$r$$.t_tien+$r$$.t_cp_cpb});$callback$$()},details_vt:function($callback$$){async.each($items$$,function($details$jscomp$1_r$$,$callback1$$){$details$jscomp$1_r$$=$details$jscomp$1_r$$.details||[];$details$jscomp$1_r$$.forEach($d$$=>{$d$$.obj_model="service"});$details$jscomp$1_r$$.joinModel2($id_app$$,service,[{where:"service_code",fields:["service_name","picture",{code:"service_code"},{title:"service_name"},
{obj_id:"_id"}]}],function(){$callback1$$()})},function(){$callback$$()})},details_dvt:function($callback$$){async.each($items$$,function($r$$,$callback1$$){($r$$.details||[]).joinModel2($id_app$$,Dmdvt,[{where:"ma_dvt",fields:["ten_dvt","kieu_tg"]}],function(){$callback1$$()})},function(){$callback$$()})},details_dt:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){($r$$.details||[]).joinModel2($id_app$$,dmdt,[{where:"ma_dt",fields:["ten_dt"]}],function(){$callback1$$()})},
function(){$callback$$()})},details_contract:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){($r$$.details||[]).joinModel2($id_app$$,contract,[{where:{ma_hd:"so_hd"},fields:"ten_hd"}],function(){$callback1$$()})},function(){$callback$$()})},details_phi:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){($r$$.details||[]).joinModel2($id_app$$,dmphi,[{where:"ma_phi",fields:["ten_phi"]}],function(){$callback1$$()})},function(){$callback$$()})}},function(){$fn$$(null,
$items$$)})}};