flexbiz-server
Version:
Flexible Server
22 lines (21 loc) • 10.2 kB
JavaScript
'use strict';const dvcs=global.getModel("dvcs"),dmvt=global.getModel("dmvt"),dmbp=global.getModel("dmbp"),customer=global.getModel("customer"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),contract=global.getModel("contract"),model=global.getModel("dnm"),pn1=global.getModel("pn1"),pn9=global.getModel("pn9"),purchase_contract=global.getModel("purchase_contract"),po1=global.getModel("po1"),shipbook=global.getModel("shipbook"),vanchuyen=global.getModel("vanchuyen"),trangthai=global.getModel("trangthai"),
controller=require("../../controllers/controller"),hanmucton=global.getModel("hanmucton"),ckvt=require("../../libs/ckvt"),async=require("async"),ma_ct="DKB";
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{isVoucher:!0,check_stock:!1,sort:{ngay_ct:-1,so_ct:-1}});$contr_router$$.route();const $valid$$=async($i_user$$,$obj$$,$next$$)=>{for($i_user$$=0;$i_user$$<$obj$$.details.length;$i_user$$++){const $detail$$=$obj$$.details[$i_user$$];$detail$$.line=$i_user$$;$detail$$.tt_nt=$detail$$.tien_nt-$detail$$.tien_ck_nt;$detail$$.tt=$detail$$.tien-$detail$$.tien_ck;"VND"==$obj$$.ma_nt&&($detail$$.tien=
$detail$$.tien_nt,$detail$$.tien_ck=$detail$$.tien_ck_nt,$detail$$.tt=$detail$$.tt_nt)}$next$$(null,$obj$$)};$contr_router$$.creating=async($user$$,$obj$$,$next$$)=>{$obj$$.details||($obj$$.details=[]);$obj$$.id_bg2="";$obj$$.id_po1="";$obj$$.details.forEach($d$$=>{$d$$.ma_kho=$obj$$.ma_kho});if(!($user$$.current_app_info.options||{}).check_stock_max)return $next$$(null,$obj$$);let $details$$=await $obj$$.details.asyncGroupBy("ma_kho ma_vt ma_lo ma_tt1 ma_tt2 ma_tt3".split(" "),["so_luong"]);async.mapSeries($details$$,
async $detail$$=>{let $query_hanmucton$$={id_app:$user$$.current_id_app,ma_kho:$obj$$.ma_kho,ma_vt:$detail$$.ma_vt};$detail$$.ma_tt1&&$query_hanmucton$$.ma_tt1;$detail$$.ma_tt2&&$query_hanmucton$$.ma_tt2;$detail$$.ma_tt3&&$query_hanmucton$$.ma_tt3;var $hanmucs_ton_toi_da$$=await hanmucton.find($query_hanmucton$$).lean();if(0<$hanmucs_ton_toi_da$$.length&&($hanmucs_ton_toi_da$$=$hanmucs_ton_toi_da$$.map($h$$=>$h$$.ton_toi_da||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0))){if($detail$$.so_luong>$hanmucs_ton_toi_da$$)throw`V\u1eadt t\u01b0 ${$detail$$.ma_vt} s\u1ebd v\u01b0\u1ee3t t\u1ed3n t\u1ed1i \u0111a cho ph\u00e9p`;
$query_hanmucton$$.ngay=new Date;if((await ckvt($query_hanmucton$$)).map($c$$=>$c$$.ton00).reduce(($a$$,$b$$)=>$a$$+$b$$,0)+$detail$$.so_luong>$hanmucs_ton_toi_da$$)throw`V\u1eadt t\u01b0 ${$detail$$.ma_vt} s\u1ebd v\u01b0\u1ee3t t\u1ed3n t\u1ed1i \u0111a cho ph\u00e9p`;}},$e$$=>{if($e$$)return $next$$($e$$);$valid$$($user$$,$obj$$,function($error$$){if($error$$)return $next$$($error$$);$next$$(null,$obj$$)})})};$contr_router$$.created=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.updating=
async function($user$$,$data$$,$obj$$,$next$$){let $ma_kho$$=$data$$.ma_kho||$obj$$.ma_kho;var $_details_details$$=$data$$.details||$obj$$.details;$_details_details$$.forEach($d$$=>{$d$$.ma_kho=$ma_kho$$});if(!($user$$.current_app_info.options||{}).check_stock_max)return $next$$(null,$data$$,$obj$$);$_details_details$$=await $_details_details$$.asyncGroupBy("ma_kho ma_vt ma_lo ma_tt1 ma_tt2 ma_tt3".split(" "),["so_luong"]);async.mapSeries($_details_details$$,async $detail$$=>{let $query_hanmucton$$=
{id_app:$user$$.current_id_app,ma_kho:$ma_kho$$,ma_vt:$detail$$.ma_vt};$detail$$.ma_tt1&&$query_hanmucton$$.ma_tt1;$detail$$.ma_tt2&&$query_hanmucton$$.ma_tt2;$detail$$.ma_tt3&&$query_hanmucton$$.ma_tt3;var $hanmucs$jscomp$1_ton_toi_da$$=await hanmucton.find($query_hanmucton$$).lean();if(0<$hanmucs$jscomp$1_ton_toi_da$$.length&&($hanmucs$jscomp$1_ton_toi_da$$=$hanmucs$jscomp$1_ton_toi_da$$.map($h$$=>$h$$.ton_toi_da||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0))){if($detail$$.so_luong>$hanmucs$jscomp$1_ton_toi_da$$)throw`V\u1eadt t\u01b0 ${$detail$$.ma_vt} s\u1ebd v\u01b0\u1ee3t t\u1ed3n t\u1ed1i \u0111a cho ph\u00e9p`;
$query_hanmucton$$.ngay=new Date;if((await ckvt($query_hanmucton$$)).map($c$$=>$c$$.ton00).reduce(($a$$,$b$$)=>$a$$+$b$$,0)+$detail$$.so_luong>$hanmucs$jscomp$1_ton_toi_da$$)throw`V\u1eadt t\u01b0 ${$detail$$.ma_vt} s\u1ebd v\u01b0\u1ee3t t\u1ed3n t\u1ed1i \u0111a cho ph\u00e9p`;}},$e$$=>{if($e$$)return $next$$($e$$);$valid$$($user$$,$data$$,function($error$$){if($error$$)return $next$$($error$$);$next$$(null,$data$$,$obj$$)})})};$contr_router$$.updated=function($user$$,$obj$$,$next$$){$next$$(null,
$obj$$)};$contr_router$$.deleting=function($user$$,$obj$$,$next$$){$next$$(null,$obj$$)};$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({dv:function($callback$$){$items$$.filter($item$$=>$item$$.ma_dvcs).joinModel($id_app$$,dvcs,[{akey:"ma_dvcs",bkey:"_id",fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function(){$callback$$()})},kh:function($callback$$){$items$$.filter($item$$=>$item$$.ma_kh).joinModel2($id_app$$,customer,[{where:"ma_kh",fields:["ten_kh"]}],
function(){$callback$$()})},bp:function($callback$$){$items$$.filter($item$$=>$item$$.ma_bp).joinModel2($id_app$$,dmbp,[{where:"ma_bp",fields:["ten_bp"]}],function(){$callback$$()})},dt:function($callback$$){$items$$.filter($item$$=>$item$$.ma_dt).joinModel2($id_app$$,dmdt,[{where:"ma_dt",fields:["ten_dt"]}],function(){$callback$$()})},ship:function($callback$$){$items$$.joinModel2($id_app$$,shipbook,[{where:{_id:"id_dnm"},fields:[{name:"id_shipbook",value:"_id"}]}],function(){$callback$$()})},vanchuyen:function($callback$$){$items$$.joinModel2($id_app$$,
vanchuyen,[{where:{_id:"id_dnm"},fields:[{name:"id_vanchuyen",value:"_id"}]}],function(){$callback$$()})},po1:function($callback$$){$items$$.joinModel2($id_app$$,po1,[{where:{_id:"id_dnm"},fields:[{name:"id_po1",value:"_id"}]}],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","ma_trang_thai2","ten_trang_thai2","color"]}],function(){$callback$$()})},
t_tien:function($callback$$){$items$$.forEach(function($r$$){$r$$.t_tt=0;$r$$.t_tt_nt=0;$r$$.details&&($r$$.t_sl=$r$$.details.csum("so_luong"),$r$$.t_tien=$r$$.details.csum("tien"),$r$$.t_tien_nt=$r$$.details.csum("tien_nt"),$r$$.t_ck=$r$$.details.csum("tien_ck"),$r$$.t_ck_nt=$r$$.details.csum("tien_ck_nt"),$r$$.t_thue_nk_nt=$r$$.details.csum("tien_thue_nk_nt"),$r$$.t_thue_nk=$r$$.details.csum("tien_thue_nk"),$r$$.t_tt=$r$$.t_tien+($r$$.t_thue|0)-$r$$.t_ck+$r$$.t_thue_nk,$r$$.t_tt_nt=$r$$.t_tien_nt+
($r$$.t_thue_nt|0)-$r$$.t_ck_nt+$r$$.t_thue_nk_nt)});$callback$$()},details_vt:function($callback$$){async.each($items$$,function($r$$,$callback1$$){($r$$.details||[]).joinModel($id_app$$,dmvt,[{akey:"ma_vt",bkey:"ma_vt",fields:[{name:"ten_vt",value:"ten_vt"},{name:"tk_vt",value:"tk_vt"},{name:"tk_gv",value:"tk_gv"},{name:"tk_dt",value:"tk_dt"},{name:"tk_ck",value:"tk_ck"}]}],function(){$callback1$$()})},function(){$callback$$()})},details_dt:function($callback$$){async.mapSeries($items$$,function($r$$,
$callback1$$){($r$$.details||[]).filter($item$$=>$item$$.ma_dt).joinModel($id_app$$,dmdt,[{akey:"ma_dt",bkey:"ma_dt",fields:[{name:"ten_dt",value:"ten_dt"}]}],function(){$callback1$$()})},function(){$callback$$()})},contract:function($callback$$){$items$$.filter($item$$=>$item$$.ma_hd).joinModel($id_app$$,contract,[{akey:"ma_hd",bkey:"so_hd",fields:[{name:"ten_hd",value:"ten_hd"}]}],function(){$callback$$()})},details_phi:function($callback$$){async.mapSeries($items$$,function($r$$,$callback1$$){($r$$.details||
[]).filter($item$$=>$item$$.ma_phi).joinModel($id_app$$,dmphi,[{akey:"ma_phi",bkey:"ma_phi",fields:[{name:"ten_phi",value:"ten_phi"}]}],function(){$callback1$$()})},function(){$callback$$()})}},function(){async.mapSeries($items$$,($denghimua$$,$callback$jscomp$0$$)=>{async.series({purchase_contract:$callback$$=>{purchase_contract.find({id_app:$denghimua$$.id_app,id_dnm:$denghimua$$._id}).lean().exec(($e$$,$invs$$)=>{if($e$$)return $callback$$($e$$);$denghimua$$.ds_contract=$invs$$.map($p$$=>({_id:$p$$._id,
so_ct:$p$$.so_ct,ngay_ct:$p$$.ngay_ct}));let $details$$=$invs$$.map($inv$$=>$inv$$.details).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$denghimua$$.details.forEach($denghimua_detail$$=>{$denghimua_detail$$.sl_contract=$details$$.filter($detail$$=>$detail$$.ma_vt===$denghimua_detail$$.ma_vt).map($d$$=>$d$$.so_luong).reduce(($a$$,$b$$)=>$a$$+$b$$,0)});$denghimua$$.t_sl_contract=$details$$.map($d$$=>$d$$.so_luong).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$callback$$()})},pn1:$callback$$=>{pn1.find({id_app:$denghimua$$.id_app,
id_dnm:$denghimua$$._id}).lean().exec(($e$$,$invs$$)=>{if($e$$)return $callback$$($e$$);$denghimua$$.ds_pn1=$invs$$.map($p$$=>({_id:$p$$._id,so_ct:$p$$.so_ct,ngay_ct:$p$$.ngay_ct}));let $details$$=$invs$$.map($inv$$=>$inv$$.details).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$denghimua$$.details.forEach($denghimua_detail$$=>{$denghimua_detail$$.sl_da_nhap_tn=$details$$.filter($detail$$=>$detail$$.ma_vt===$denghimua_detail$$.ma_vt).map($d$$=>$d$$.sl_nhap).reduce(($a$$,$b$$)=>$a$$+$b$$,0)});$denghimua$$.t_sl_da_nhap_tn=
$details$$.map($d$$=>$d$$.sl_nhap).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$callback$$()})},pn9:$callback$$=>{pn9.find({id_app:$denghimua$$.id_app,id_dnm:$denghimua$$._id}).lean().exec(($e$$,$invs$$)=>{if($e$$)return $callback$$($e$$);$denghimua$$.ds_pn9=$invs$$.map($p$$=>({_id:$p$$._id,so_ct:$p$$.so_ct,ngay_ct:$p$$.ngay_ct}));let $details$$=$invs$$.map($inv$$=>$inv$$.details).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$denghimua$$.details.forEach($denghimua_detail$$=>{$denghimua_detail$$.sl_da_nhap_khau=
$details$$.filter($detail$$=>$detail$$.ma_vt===$denghimua_detail$$.ma_vt).map($d$$=>$d$$.sl_nhap).reduce(($a$$,$b$$)=>$a$$+$b$$,0)});$denghimua$$.t_sl_da_nhap_khau=$details$$.map($d$$=>$d$$.sl_nhap).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$callback$$()})}},$e$$=>{if($e$$)return $callback$jscomp$0$$($e$$);$denghimua$$.details.forEach($detail$$=>{$detail$$.sl_da_nhap=$detail$$.sl_da_nhap_tn+$detail$$.sl_da_nhap_khau});$denghimua$$.t_sl_da_nhap=$denghimua$$.t_sl_da_nhap_tn+$denghimua$$.t_sl_da_nhap_khau;$callback$jscomp$0$$()})},
()=>{$fn$$(null,$items$$)})})}};