flexbiz-server
Version:
Flexible Server
40 lines (39 loc) • 19.8 kB
JavaScript
const ckvt=require("./ckvt"),sokho=global.getModel("sokho"),socai=global.getModel("socai"),dmvt=global.getModel("dmvt"),giatb=global.getModel("giatb"),dmqddvt=global.getModel("dmqddvt"),tinhgiatb1vt=require("./tinhgiatb1vt"),async=require("async"),_=require("lodash"),Controller=require("../controllers/controller"),moment=require("moment"),{getCurrentSession}=require("./sessionContext");
module.exports=async function($condition$$,$fn$$){if($condition$$&&$condition$$.tu_thang&&$condition$$.den_thang&&$condition$$.nam&&$condition$$.id_app){$condition$$.tu_thang=Number($condition$$.tu_thang);$condition$$.den_thang=Number($condition$$.den_thang);var $ma_kho$$=$condition$$.ma_kho,$tu_ngay$$=moment(new Date($condition$$.nam,$condition$$.tu_thang-1,15)).startOf("month").toDate(),$den_ngay$$=moment(new Date($condition$$.nam,$condition$$.den_thang-1,15)).endOf("month").toDate(),$id_app$$=
$condition$$.id_app,$app_query_dmvt$$=await global.getModel("app").findOne({_id:$id_app$$},{options:1}).lean();if(!$app_query_dmvt$$)return $fn$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $f_tien$$=($app_query_dmvt$$.options||{}).f_tien||0;$app_query_dmvt$$={id_app:$id_app$$,gia_xuat:"1"};$condition$$.ma_nvt&&($app_query_dmvt$$.ma_nvt=$condition$$.ma_nvt);$condition$$.ma_ncc&&($app_query_dmvt$$.ma_ncc=$condition$$.ma_ncc);$condition$$.ma_vt&&($app_query_dmvt$$.ma_vt=$condition$$.ma_vt);
Logger.info(`\ud83d\udd25[tinhgiatb] t\u00ednh gi\u00e1 trung b\u00ecnh, kho:${$condition$$.ma_kho}, sessionID=${getCurrentSession()?._debugId}`);dmvt.find($app_query_dmvt$$).lean().then(function($dmvts$$){async.map($dmvts$$,function($vt$$,$callback$$){let $query$$={id_app:$id_app$$,tu_ngay:$tu_ngay$$,den_ngay:$den_ngay$$,ma_vt:$vt$$.ma_vt,ma_kho:$ma_kho$$};tinhgiatb1vt($query$$,function($error$$,$gia$$){if($error$$)return Logger.error("[tinhgiatb] Kh\u00f4ng th\u1ec3 t\u00ednh gi\u00e1 trung b\u00ecnh cho v\u1eadt t\u01b0",
$query$$.ma_vt,$error$$),$callback$$($error$$);$gia$$.id_app=$id_app$$;$gia$$.ma_kho=$ma_kho$$;$gia$$.status=!0;$callback$$(null,$gia$$)})},function($error$$,$bang_gia$$){if($error$$)return $fn$$($error$$);$error$$=[];for(let $t$$=$condition$$.tu_thang;$t$$<=$condition$$.den_thang;$t$$++)$error$$.push($t$$);async.mapSeries($error$$,async function($t$$){var $gias_query_delete$$={id_app:$id_app$$,ma_vt:{$in:$bang_gia$$.map($g$$=>$g$$.ma_vt)},nam:$condition$$.nam,thang:$t$$};$ma_kho$$&&($gias_query_delete$$.ma_kho=
$ma_kho$$);await giatb.deleteMany($gias_query_delete$$);$gias_query_delete$$=$bang_gia$$.map($gia$$=>({...$gia$$,thang:$t$$,nam:$condition$$.nam}));return await giatb.create($gias_query_delete$$)},function($error$$){if($error$$)return $fn$$($error$$);Logger.info(`[tinhgiatb] L\u1ea5y c\u00e1c ch\u1ee9ng t\u1eeb c\u1ea7n c\u1eadp nh\u1eadt s\u1ed5 s\u00e1ch ma_kho=${$condition$$.ma_kho}`);let $vouchers_x$$={},$vouchers_n$$={},$ma_vts$$=$bang_gia$$.map($v$$=>$v$$.ma_vt);const $id_ct_need_delete$$=[];
async.parallel({xuat:function($callback$$){setImmediate(async()=>{var $cac_ma_ct_query_sokho_x$$={id_app:$id_app$$,ngay_ct:{$gte:$tu_ngay$$,$lte:$den_ngay$$},nxt:2,ma_vt:{$in:$ma_vts$$},px_gia_dd:!1};$ma_kho$$&&($cac_ma_ct_query_sokho_x$$.ma_kho=$ma_kho$$);const $sks$$=await sokho.find($cac_ma_ct_query_sokho_x$$).lean();if($sks$$.length===0)return $callback$$(null,$vouchers_x$$);$cac_ma_ct_query_sokho_x$$=[...(new Set($sks$$.map($sk$$=>$sk$$.ma_ct)))];async.map($cac_ma_ct_query_sokho_x$$,async function($ma_ct$$){var $ctrl_ids$$=
global.controllers[$ma_ct$$.toUpperCase()],$ct_vouchers$$=$ctrl_ids$$?$ctrl_ids$$.getProperty("model"):mongoose.models[$ma_ct$$.toLowerCase()];if($ct_vouchers$$){$ctrl_ids$$=[...(new Set($sks$$.filter($sk$$=>$sk$$.ma_ct===$ma_ct$$).map($sk$$=>$sk$$.id_ct)))];$ct_vouchers$$=await $ct_vouchers$$.find({_id:{$in:$ctrl_ids$$}});for(let $v$$ of $ct_vouchers$$)$vouchers_x$$[$v$$._id.toString()]=$v$$;for(let $id_ct$$ of $ctrl_ids$$.filter($id$$=>!$vouchers_x$$[$id$$]))Logger.info("\u26a0\ufe0f [tinhgiatb] Khong tim thay phieu xuat. chuong trinh da xoa phieu nay khoi s\u1ed5 s\u00e1ch, id_ct=",
$id_ct$$,"ma_ct=",$ma_ct$$),$id_ct_need_delete$$.push($id_ct$$)}else Logger.info("\u26a0\ufe0f [tinhgiatb] Khong tim model cho ma_ct=",$ma_ct$$);return null},function($error$$){if($error$$)return Logger.error("\u274c [tinhgiatb] co loi lay phieu xuat",$error$$),$callback$$($error$$);$callback$$(null,$vouchers_x$$)})})},nhap:function($callback$$){setImmediate(async()=>{var $ds_ma_ct_query_sokho_n$$={id_app:$id_app$$,ngay_ct:{$gte:$tu_ngay$$,$lte:$den_ngay$$},nxt:1,ma_vt:{$in:$ma_vts$$},pn_gia_tb:!0,
ma_ct:{$ne:"PXC"}};$ma_kho$$&&($ds_ma_ct_query_sokho_n$$.ma_kho=$ma_kho$$);const $sks$$=await sokho.find($ds_ma_ct_query_sokho_n$$).lean();if($sks$$.length===0)return $callback$$(null,$vouchers_n$$);$ds_ma_ct_query_sokho_n$$=[...(new Set($sks$$.map($sk$$=>$sk$$.ma_ct)))];async.map($ds_ma_ct_query_sokho_n$$,async function($ma_ct$$){var $ctrl$jscomp$1_ids$$=global.controllers[$ma_ct$$.toUpperCase()],$ct$jscomp$1_vouchers$$=$ctrl$jscomp$1_ids$$?$ctrl$jscomp$1_ids$$.getProperty("model"):mongoose.models[$ma_ct$$.toLowerCase()];
if($ct$jscomp$1_vouchers$$){$ctrl$jscomp$1_ids$$=[...(new Set($sks$$.filter($sk$$=>$sk$$.ma_ct===$ma_ct$$).map($sk$$=>$sk$$.id_ct)))];$ct$jscomp$1_vouchers$$=await $ct$jscomp$1_vouchers$$.find({_id:{$in:$ctrl$jscomp$1_ids$$}});for(let $v$$ of $ct$jscomp$1_vouchers$$)$vouchers_n$$[$v$$._id.toString()]=$v$$;for(let $id_ct$$ of $ctrl$jscomp$1_ids$$.filter($id$$=>!$vouchers_n$$[$id$$]))Logger.warn("\u26a0\ufe0f [tinhgiatb] Khong tim thay phieu nh\u1eadp. chuong trinh da xoa phieu nay khoi s\u1ed5 s\u00e1ch, id_ct=",
$id_ct$$,"ma_ct=",$ma_ct$$),$id_ct_need_delete$$.push($id_ct$$)}else Logger.info("\u26a0\ufe0f [tinhgiatb] Khong tim model cho ma_ct=",$ma_ct$$);return null},$error$$=>{if($error$$)return Logger.error("\u274c [tinhgiatb] co loi lay phieu nhap",$error$$),$callback$$($error$$);$callback$$(null,$vouchers_n$$)})})},nhap_dc:$callback$$=>{if($ma_kho$$){let $query_sokho_pnc$$={id_app:$id_app$$,ma_ct:"PNC",ngay_ct:{$gte:$tu_ngay$$,$lte:$den_ngay$$},$or:[{ma_kho_x:$ma_kho$$},{"details.ma_kho_x":$ma_kho$$}],
"details.px_gia_dd":!1};global.getModel("pnc").find($query_sokho_pnc$$).then($pnc$$=>{$pnc$$.forEach($p$$=>{$vouchers_n$$[$p$$._id.toString()]=$p$$});$callback$$()}).catch($e$$=>{Logger.error("[tinhgiatb] co loi lay phieu nhap dieu chuyen",$e$$);return $callback$$($e$$)})}else $callback$$()}},async function($error$$){if($error$$)return $fn$$($error$$);$id_ct_need_delete$$.length>0&&(await sokho.deleteMany({id_app:$id_app$$,id_ct:{$in:$id_ct_need_delete$$}}),await socai.deleteMany({id_app:$id_app$$,
id_ct:{$in:$id_ct_need_delete$$}}));async.waterfall([function($callback$$){Logger.info("[tinhgiatb] C\u1eadp nh\u1eadt gi\u00e1 xu\u1ea5t kho...");async.mapSeries(_.values($vouchers_x$$),($voucher_x$$,$callback$$)=>{setImmediate(async()=>{try{const $details$$=$voucher_x$$.details.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$d$$.ma_kho_x||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($details$$.map($d$$=>
(async()=>{var $gia$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$$=$gia$$?$gia$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.roundBy($d$$.sl_xuat*$d$$.gia_von,$f_tien$$)})()));if($voucher_x$$.details_doi){const $details_doi$$=$voucher_x$$.details_doi.filter($d$$=>
(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($details_doi$$.map($d$$=>(async()=>{var $gia$jscomp$3_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$3_gia_chuan$$=$gia$jscomp$3_gia_chuan$$?$gia$jscomp$3_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&
($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$3_gia_chuan$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.roundBy($d$$.sl_xuat*$d$$.gia_von,$f_tien$$)})()))}await Promise.all($voucher_x$$.details.filter($d$$=>$d$$.promotion&&$d$$.promotion.details_km).map($d$$=>(async()=>{const $details_km$$=$d$$.promotion.details_km.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||
$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($details_km$$.map($d$$=>(async()=>{var $gia$jscomp$4_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$4_gia_chuan$$=$gia$jscomp$4_gia_chuan$$?$gia$jscomp$4_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$4_gia_chuan$$*
$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.roundBy(($d$$.sl_xuat||$d$$.sl_km||0)*$d$$.gia_von,$f_tien$$)})()))})()));await Promise.all($voucher_x$$.details.filter($d$$=>$d$$.combo&&$d$$.combo.length>0&&!$d$$.px_gia_dd).map($detail$$=>(async()=>{const $combo$$=$detail$$.combo.filter($c$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$c$$.ma_vt)&&(!$ma_kho$$||$ma_kho$$===($detail$$.ma_kho||$detail$$.ma_kho_x||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($combo$$.map($d$$=>(async()=>
{var $gia$jscomp$5_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$5_gia_chuan$$=$gia$jscomp$5_gia_chuan$$?$gia$jscomp$5_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$5_gia_chuan$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.roundBy(($d$$.sl_xuat||0)*$d$$.gia_von,$f_tien$$)})()));
$detail$$.tien_xuat=$detail$$.tien_xuat_nt=$detail$$.combo.map($c$$=>$c$$.tien_xuat_nt||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$detail$$.gia_von=$detail$$.gia_von_nt=Math.roundBy($detail$$.sl_xuat?$detail$$.tien_xuat_nt/$detail$$.sl_xuat:0,$f_tien$$)})()));if($voucher_x$$.promotion){const $details_kmc$$=$voucher_x$$.promotion.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($details_kmc$$.map($d$$=>
(async()=>{var $gia$jscomp$6_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$6_gia_chuan$$=$gia$jscomp$6_gia_chuan$$?$gia$jscomp$6_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$6_gia_chuan$$*$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt;$d$$.tien_xuat_nt=Math.roundBy(($d$$.sl_xuat||$d$$.sl_km||
0)*$d$$.gia_von,$f_tien$$);$d$$.tien_xuat=$d$$.tien_xuat_nt})()))}let $voucher_x_data$$=$voucher_x$$.toObject();const $ctrl$$=global.controllers[$voucher_x$$.ma_ct.toUpperCase()];await ($ctrl$$?$ctrl$$.getProperty("model"):mongoose.models[$voucher_x$$.ma_ct.toLowerCase()]).updateOne({_id:$voucher_x$$._id},$voucher_x_data$$);$ctrl$$&&$ctrl$$.post&&await new Promise(($resolve$$,$reject$$)=>{Controller.postData($voucher_x_data$$,$ctrl$$,($e$$,$rs$$)=>{if($e$$)return Logger.error("\u274c [tinhgiatb] [postData] L\u1ed7i:",
$e$$.message,$voucher_x_data$$.so_ct,$voucher_x_data$$.ma_ct),$reject$$($e$$);$resolve$$($rs$$)},{kiem_tra_han_muc_cong_no:!1})});$callback$$(null,$voucher_x$$)}catch($e$$){Logger.error("\u274c [tinhgiatb] L\u1ed7i c\u1eadp nh\u1eadt phi\u1ebfu xu\u1ea5t:",$voucher_x$$.ma_ct,$voucher_x$$.so_ct,$e$$.message||$e$$.error||$e$$),$callback$$($e$$)}})},$error$$=>{$callback$$($error$$,$vouchers_x$$)})},function($_vouchers_x$$,$callback$$){Logger.info("[tinhgiatb] C\u1eadp nh\u1eadt gi\u00e1 nh\u1eadp kho...");
async.mapSeries(_.values($vouchers_n$$),($voucher_n$$,$callback$$)=>{setImmediate(async()=>{try{const $details_pnk$$=$voucher_n$$.details.filter($d$$=>(!$d$$.combo||$d$$.combo.length==0)&&(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&($d$$.pn_gia_tb||$voucher_n$$.ma_ct==="PNC"&&!$d$$.px_gia_dd||$voucher_n$$.ma_ct==="PKK"&&!$d$$.px_gia_dd)&&(!$ma_kho$$||$ma_kho$$===$d$$.ma_kho||$ma_kho$$===$d$$.ma_kho_x||$ma_kho$$===$voucher_n$$.ma_kho||$ma_kho$$===$voucher_n$$.ma_kho_n));await Promise.all($details_pnk$$.map($d$$=>
(async()=>{var $gia$jscomp$7_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$7_gia_chuan$$=$gia$jscomp$7_gia_chuan$$?$gia$jscomp$7_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$vouchers_n$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$7_gia_chuan$$*$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt;$voucher_n$$.ma_ct==="PNC"||$voucher_n$$.ma_ct==="PKK"?($d$$.tien_xuat_nt=
Math.roundBy($d$$.sl_xuat*$d$$.gia_von,$f_tien$$),$d$$.tien_xuat=$d$$.tien_xuat_nt):($d$$.tien_nhap_nt=Math.roundBy($d$$.sl_nhap*$d$$.gia_von,$f_tien$$),$d$$.tien_nhap=$d$$.tien_nhap_nt)})()));await Promise.all($voucher_n$$.details.filter($d$$=>$d$$.combo&&$d$$.combo.length>0&&($d$$.pn_gia_tb||$voucher_n$$.ma_ct==="PNC"&&!$d$$.px_gia_dd||$voucher_n$$.ma_ct==="PKK"&&!$d$$.px_gia_dd)).map($detail$$=>(async()=>{const $combo$$=$detail$$.combo.filter($c$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$c$$.ma_vt)&&
(!$ma_kho$$||$ma_kho$$===($detail$$.ma_kho||$voucher_n$$.ma_kho||$voucher_n$$.ma_kho_n)));await Promise.all($combo$$.map($d$$=>(async()=>{var $gia$jscomp$8_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$8_gia_chuan$$=$gia$jscomp$8_gia_chuan$$?$gia$jscomp$8_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_n$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=
$d$$.gia_von_nt=$gia$jscomp$8_gia_chuan$$*$he_so_qd$$;$voucher_n$$.ma_ct==="PNC"||$voucher_n$$.ma_ct==="PKK"?($d$$.tien_xuat_nt=Math.roundBy($d$$.sl_xuat*$d$$.gia_von,$f_tien$$),$d$$.tien_xuat=$d$$.tien_xuat_nt):($d$$.tien_nhap_nt=Math.roundBy($d$$.sl_nhap*$d$$.gia_von,$f_tien$$),$d$$.tien_nhap=$d$$.tien_nhap_nt)})()));$voucher_n$$.ma_ct==="PNC"||$voucher_n$$.ma_ct==="PKK"?($detail$$.tien_xuat=$detail$$.tien_xuat_nt=$detail$$.combo.map($c$$=>$c$$.tien_xuat_nt||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0),
$detail$$.gia_von=$detail$$.gia_von_nt=Math.roundBy($detail$$.sl_xuat?$detail$$.tien_xuat_nt/$detail$$.sl_xuat:0,$f_tien$$)):($detail$$.tien_nhap=$detail$$.tien_nhap_nt=$detail$$.combo.map($c$$=>$c$$.tien_nhap_nt||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$detail$$.gia_von=$detail$$.gia_von_nt=Math.roundBy($detail$$.sl_nhap?$detail$$.tien_nhap_nt/$detail$$.sl_nhap:0,$f_tien$$))})()));if($voucher_n$$.details_doi){const $details_doi$$=$voucher_n$$.details_doi.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===
$d$$.ma_vt)&&$d$$.pn_gia_tb&&(!$ma_kho$$||$ma_kho$$===$d$$.ma_kho));await Promise.all($details_doi$$.map($d$$=>(async()=>{var $gia$jscomp$9_gia_chuan$$=_.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$9_gia_chuan$$=$gia$jscomp$9_gia_chuan$$?$gia$jscomp$9_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$vouchers_n$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$9_gia_chuan$$*
$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt;$d$$.tien_xuat_nt=Math.roundBy($d$$.sl_xuat*$d$$.gia_von,$f_tien$$);$d$$.tien_xuat=$d$$.tien_xuat_nt})()))}let $voucher_n_data$$=$voucher_n$$.toObject();const $ctrl$$=global.controllers[$voucher_n_data$$.ma_ct.toUpperCase()];await ($ctrl$$?$ctrl$$.getProperty("model"):mongoose.models[$voucher_n_data$$.ma_ct.toLowerCase()]).updateOne({_id:$voucher_n_data$$._id},$voucher_n_data$$);$ctrl$$&&$ctrl$$.post&&await new Promise(($resolve$$,$reject$$)=>{Controller.postData($voucher_n_data$$,
$ctrl$$,function($e$$,$rs$$){if($e$$)return Logger.error("\u274c [tinhgiatb][postData] l\u1ed7i:",$e$$.message,$voucher_n_data$$.so_ct,$voucher_n_data$$.ma_ct),$reject$$($e$$);$resolve$$($rs$$)},{kiem_tra_han_muc_cong_no:!1})});$callback$$(null,$voucher_n$$)}catch($e$$){Logger.error("\u274c [tinhgiatb] L\u1ed7i c\u1eadp nh\u1ea5t phi\u1ebfu nh\u1eadp",$voucher_n$$.ma_ct,$voucher_n$$.so_ct,$e$$.error||$e$$.message||$e$$),$callback$$($e$$)}})},function($error$$){$callback$$($error$$)})}],function($e$$){if($e$$)return $fn$$($e$$);
Logger.info("[tinhgiatb] \u0110\u00e1nh gi\u00e1 ch\u00eanh l\u1ec7ch...");$e$$={id_app:$condition$$.id_app,ngay:$den_ngay$$,chenh_lech:1};$condition$$.ma_vt&&($e$$.ma_vt=$condition$$.ma_vt);$condition$$.ma_kho&&($e$$.ma_kho=$condition$$.ma_kho);ckvt($e$$,($e$$,$du_cuoi_ky$$)=>{if($e$$)return $fn$$($e$$);$du_cuoi_ky$$=_.filter($du_cuoi_ky$$,$r$$=>$r$$.du00!==0&&($r$$.ton00==0||Math.abs($r$$.ton00)<.001));$vouchers_x$$=_.sortBy(_.values($vouchers_x$$),$v$$=>-(new Date($v$$.ngay_ct)).getTime());$vouchers_n$$=
_.sortBy(_.values($vouchers_n$$),$v$$=>-(new Date($v$$.ngay_ct)).getTime());let $chung_tu_cap_nhat_chenh_lech$$={};async.mapSeries($du_cuoi_ky$$,($vt$$,$callback$$)=>{let $d_voucher$$=null;($d_voucher$$=_.find($vouchers_x$$,$x$$=>_.find($x$$.details,$vc$$=>{if($vc$$.ma_vt!=$vt$$.ma_vt||$vc$$.px_gia_dd||$ma_kho$$&&$ma_kho$$!==$vc$$.ma_kho&&$ma_kho$$!==$x$$.ma_kho)return!1;$vc$$.tien_xuat_nt+=$vt$$.du00;$vc$$.tien_xuat=Math.roundBy($vc$$.tien_xuat_nt,$f_tien$$);$vc$$.sl_xuat&&($vc$$.gia_von_nt=$vc$$.gia_von=
Math.roundBy($vc$$.tien_xuat_nt/$vc$$.sl_xuat,0));return!0})))||($d_voucher$$=_.find($vouchers_n$$,$n$$=>_.find($n$$.details,$vc$$=>{if($vc$$.ma_vt!=$vt$$.ma_vt||$vc$$.pn_gia_tb||$ma_kho$$&&$ma_kho$$!==$vc$$.ma_kho&&$ma_kho$$!==$n$$.ma_kho)return!1;$vc$$.tien_nhap_nt-=$vt$$.du00;$vc$$.tien_nhap=Math.roundBy($vc$$.tien_nhap_nt,$f_tien$$);$vc$$.sl_nhap&&($vc$$.gia_von_nt=$vc$$.gia_von=Math.roundBy($vc$$.tien_nhap_nt/$vc$$.sl_nhap,0));return!0})));$d_voucher$$&&($chung_tu_cap_nhat_chenh_lech$$[$d_voucher$$._id.toString()]=
$d_voucher$$);$callback$$(null,$d_voucher$$)},$_vouchers_chenh_lech_e$$=>{if($_vouchers_chenh_lech_e$$)return $fn$$($_vouchers_chenh_lech_e$$);$_vouchers_chenh_lech_e$$=_.values($chung_tu_cap_nhat_chenh_lech$$);Logger.info("\u26a0\ufe0f [tinhgiatb] C\u1eadp nh\u1eadt phi\u1ebfu ch\u00eanh l\u1ec7ch...",$_vouchers_chenh_lech_e$$.length);async.mapSeries($_vouchers_chenh_lech_e$$,($voucher$$,$callback$$)=>{setImmediate(async()=>{try{let $voucher_data$$=$voucher$$.toObject();const $ctrl$$=global.controllers[$voucher_data$$.ma_ct.toUpperCase()];
await ($ctrl$$?$ctrl$$.getProperty("model"):mongoose.models[$voucher_data$$.ma_ct.toLowerCase()]).updateOne({_id:$voucher_data$$._id},$voucher_data$$);$ctrl$$&&$ctrl$$.post?Controller.postData($voucher_data$$,$ctrl$$,($e$$,$rs$$)=>{$e$$&&Logger.error("\u274c [tinhgiatb] [postData] L\u1ed7i:",$e$$.message,$voucher_data$$.so_ct,$voucher_data$$.ma_ct);$callback$$($e$$,$rs$$)},{kiem_tra_han_muc_cong_no:!1}):$callback$$(null)}catch($error$$){return $callback$$($error$$)}})},async $e$$=>{if($e$$)return $fn$$($e$$);
$bang_gia$$.joinModel2($id_app$$,dmvt,[{where:"ma_vt",fields:"ten_vt"}],()=>{$fn$$(null,$bang_gia$$)})})})})})})})})}).catch($e$$=>{$fn$$($e$$)})}else $fn$$("L\u1ed7i: T\u00ednh n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_thang,den_thang,nam,id_app")};