flexbiz-server 12.5.38 → 12.5.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,9 @@
1
1
  const model=global.getModel("productcode"),controller=require("../../controllers/controller"),crypto=require("crypto"),qr=require("qr-image"),ejs=require("ejs"),path=require("path"),viewsDir=path.join(__dirname,"../../templates"),renderView=($data$$,$templateName$$="product-verify-result.ejs")=>new Promise(($resolve$$,$reject$$)=>{const $filePath$$=path.join(viewsDir,$templateName$$);ejs.renderFile($filePath$$,$data$$,($err$$,$str$$)=>{if($err$$)return $reject$$($err$$);$resolve$$($str$$)})});
2
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"productcode",{unique:["code"],notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,"dmvt",{where:{dmvt:"_id"},fields:["ma_vt","ten_vt","picture"]});$next$$(null,$items$$)}});$contr_router$$.createRoute("create-codes/:ma_vt/:quantity",async($req$$,$next$$)=>{try{var $createdCodes_ma_vt$$=
3
- $req$$.params.ma_vt;const $quantity$$=Number($req$$.params.quantity||1),$product$$=await mongoose.model("dmvt").findOne({ma_vt:$createdCodes_ma_vt$$,id_app:$req$$.user.current_id_app}).lean();if(!$product$$)return $next$$({error:"S\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i"});$createdCodes_ma_vt$$=[];for(let $i$$=0;$i$$<($quantity$$||1);$i$$++){const $uniqueString$$=crypto.randomBytes(6).toString("hex"),$qrImage$$=`data:image/png;base64,${qr.imageSync(`${configs.api_url||configs.domain}/api/${$req$$.user.current_id_app}/productcode/verify/${$uniqueString$$}?access_token=${configs.public_token}`,
4
- {type:"png",margin:2}).toString("base64")}`;await model.create({id_app:$req$$.user.current_id_app,code:$uniqueString$$,dmvt:$product$$._id,qr_image:$qrImage$$});$createdCodes_ma_vt$$.push({uniqueString:$uniqueString$$,qrImage:$qrImage$$})}$next$$(null,{success:!0,count:$createdCodes_ma_vt$$.length})}catch($error$$){$next$$({error:$error$$.message})}},{right_code:"add"});$contr_router$$.createRoute("verify/:code",async($req$$,$next$$)=>{const {code:$code$$}=$req$$.params,$clientIp$$=$req$$.headers["x-forwarded-for"]||
5
- $req$$.socket.remoteAddress,$userAgent$$=$req$$.headers["user-agent"];try{const $codeInfo$$=await model.findOne({code:$code$$,id_app:$req$$.user.current_id_app}).populate("dmvt");let $renderData$$;$codeInfo$$?($codeInfo$$.scan_history.push({ip:$clientIp$$,user_agent:$userAgent$$}),$codeInfo$$.scan_count+=1,$codeInfo$$.is_scanned?(await $codeInfo$$.save(),$renderData$$={status:"WARNING",code:$code$$,company:$req$$.user.current_app_info||{},scanCount:$codeInfo$$.scan_count,product:$codeInfo$$.dmvt,
6
- message:`C\u1ea3nh b\u00e1o: S\u1ea3n ph\u1ea9m n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t tr\u01b0\u1edbc \u0111\u00f3 v\u00e0o ng\u00e0y ${$codeInfo$$.scan_history[0].scanned_at.toLocaleString()}. N\u1ebfu b\u1ea1n v\u1eeba m\u1edbi b\u00f3c tem, c\u00f3 th\u1ec3 \u0111\u00e2y l\u00e0 h\u00e0ng gi\u1ea3.`}):($codeInfo$$.is_scanned=!0,await $codeInfo$$.save(),$renderData$$={status:"GENUINE",code:$code$$,company:$req$$.user.current_app_info||{},product:$codeInfo$$.dmvt,scanCount:$codeInfo$$.scan_count,
7
- message:"Ch\u00fac m\u1eebng! S\u1ea3n ph\u1ea9m ch\u00ednh h\u00e3ng v\u00e0 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t l\u1ea7n \u0111\u1ea7u ti\u00ean."})):$renderData$$={status:"FAKE",code:$code$$,company:$req$$.user.current_app_info||{},scanCount:0,message:"M\u00e3 s\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i tr\u00ean h\u1ec7 th\u1ed1ng."};const $html$$=await renderView($renderData$$);$next$$(null,$html$$)}catch($error$$){console.error("[productcode]",$error$$),$next$$("System Error")}});$contr_router$$.route()};
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"productcode",{unique:["code"],notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,"dmvt",{where:{dmvt:"_id"},fields:["ma_vt","ten_vt","picture"]});$next$$(null,$items$$)},onCreating:async($qrImage_user$$,$obj$$,$next$$)=>{if($obj$$.ma_vt&&!$obj$$.dmvt){let $vt$$=await global.getModel("dmvt").findOne({id_app:$qrImage_user$$.current_id_app,
3
+ ma_vt:$obj$$.ma_vt}).lean();if(!$vt$$)return $next$$(`S\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i ${$obj$$.ma_vt}`);$obj$$.dmvt=$vt$$._id}$qrImage_user$$=`data:image/png;base64,${qr.imageSync(`${configs.api_url||configs.domain}/api/${$qrImage_user$$.current_id_app}/productcode/verify/${$obj$$.code}?access_token=${configs.public_token}`,{type:"png",margin:2}).toString("base64")}`;$obj$$.qr_image=$qrImage_user$$;$next$$(null,$obj$$)}});$contr_router$$.createRoute("create-codes/:ma_vt/:quantity",
4
+ async($req$$,$next$$)=>{try{var $createdCodes_ma_vt$$=$req$$.params.ma_vt;const $quantity$$=Number($req$$.params.quantity||1),$product$$=await mongoose.model("dmvt").findOne({ma_vt:$createdCodes_ma_vt$$,id_app:$req$$.user.current_id_app}).lean();if(!$product$$)return $next$$({error:"S\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i"});$createdCodes_ma_vt$$=[];for(let $i$$=0;$i$$<($quantity$$||1);$i$$++){const $uniqueString$$=crypto.randomBytes(6).toString("hex"),$qrImage$$=`data:image/png;base64,${qr.imageSync(`${configs.api_url||
5
+ configs.domain}/api/${$req$$.user.current_id_app}/productcode/verify/${$uniqueString$$}?access_token=${configs.public_token}`,{type:"png",margin:2}).toString("base64")}`;await model.create({id_app:$req$$.user.current_id_app,code:$uniqueString$$,dmvt:$product$$._id,ma_vt:$product$$.ma_vt,qr_image:$qrImage$$});$createdCodes_ma_vt$$.push({uniqueString:$uniqueString$$,qrImage:$qrImage$$})}$next$$(null,{success:!0,count:$createdCodes_ma_vt$$.length})}catch($error$$){$next$$({error:$error$$.message})}},
6
+ {right_code:"add"});$contr_router$$.createRoute("verify/:code",async($req$$,$next$$)=>{const {code:$code$$}=$req$$.params,$clientIp$$=$req$$.headers["x-forwarded-for"]||$req$$.socket.remoteAddress,$userAgent$$=$req$$.headers["user-agent"];try{const $codeInfo$$=await model.findOne({code:$code$$,id_app:$req$$.user.current_id_app}).populate("dmvt");let $renderData$$;$codeInfo$$?($codeInfo$$.scan_history.push({ip:$clientIp$$,user_agent:$userAgent$$}),$codeInfo$$.scan_count+=1,$codeInfo$$.is_scanned?(await $codeInfo$$.save(),
7
+ $renderData$$={status:"WARNING",code:$code$$,company:$req$$.user.current_app_info||{},scanCount:$codeInfo$$.scan_count,product:$codeInfo$$.dmvt,message:`C\u1ea3nh b\u00e1o: S\u1ea3n ph\u1ea9m n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t tr\u01b0\u1edbc \u0111\u00f3 v\u00e0o ng\u00e0y ${$codeInfo$$.scan_history[0].scanned_at.toLocaleString()}. N\u1ebfu b\u1ea1n v\u1eeba m\u1edbi b\u00f3c tem, c\u00f3 th\u1ec3 \u0111\u00e2y l\u00e0 h\u00e0ng gi\u1ea3.`}):($codeInfo$$.is_scanned=!0,
8
+ await $codeInfo$$.save(),$renderData$$={status:"GENUINE",code:$code$$,company:$req$$.user.current_app_info||{},product:$codeInfo$$.dmvt,scanCount:$codeInfo$$.scan_count,message:"Ch\u00fac m\u1eebng! S\u1ea3n ph\u1ea9m ch\u00ednh h\u00e3ng v\u00e0 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t l\u1ea7n \u0111\u1ea7u ti\u00ean."})):$renderData$$={status:"FAKE",code:$code$$,company:$req$$.user.current_app_info||{},scanCount:0,message:"M\u00e3 s\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i tr\u00ean h\u1ec7 th\u1ed1ng."};
9
+ const $html$$=await renderView($renderData$$);$next$$(null,$html$$)}catch($error$$){console.error("[productcode]",$error$$),$next$$("System Error")}});$contr_router$$.route()};
@@ -1,4 +1,5 @@
1
1
  const chamcong=global.getModel("chamcong"),controller=require("../../controllers/controllerRPT"),async=require("async"),permission=require("../../libs/permission");
2
2
  module.exports=function($router$$){new controller($router$$,"bkchamcong",function($req$$,$callback$$){let $id_apps$$=$req$$.query.id_apps;$req$$.query.id_apps&&$req$$.query.id_apps.length!=0||($id_apps$$=[$req$$.query.id_app]);async.map($id_apps$$,($id_app$$,$callback$$)=>{permission.hasRight($id_app$$,$req$$.user.email,"chamcong","view",async function($error$$,$permission$$){if(!$permission$$)return $callback$$(`B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n v\u1edbi c\u00f4ng ty c\u00f3 id '${$id_app$$}'`);
3
3
  $error$$={};$error$$.id_app=$id_app$$;$error$$.ngay={$gte:$req$$.query.tu_ngay,$lte:$req$$.query.den_ngay};$req$$.query.ma_nv&&($error$$.ma_nv=$req$$.query.ma_nv);$req$$.query.ma_bp&&($error$$.ma_bp=$req$$.query.ma_bp);chamcong.find($error$$).lean().then(async $congs$$=>{await $congs$$.asyncJoinModel2($id_app$$,"dmloaicong",[{where:{ma_loai_cong:"ma_loai_cong"},fields:["ten_loai_cong","color"]}]);await $congs$$.asyncJoinModel2($id_app$$,global.getModel("dmnv"),[{where:{ma_nv:"ma_nv"},fields:["ten_nv"]}]);
4
- await $congs$$.asyncJoinModel2($id_app$$,global.getModel("dmbp"),[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}]);$callback$$(null,$congs$$)}).catch($e$$=>{$callback$$($e$$)})})},async($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$e$$=$rs$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $e$$.asyncJoinModel2(null,global.getModel("app"),[{where:{id_app:"_id"},fields:[{ten_cong_ty:"name"}]}]);$callback$$(null,$e$$)})})};
4
+ await $congs$$.asyncJoinModel2($id_app$$,global.getModel("dmbp"),[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}]);await $congs$$.filter($r$$=>$r$$.ma_kh).asyncJoinModel2($id_app$$,global.getModel("customer"),[{where:{ma_kh:"ma_kh"},fields:["ten_kh"]}]);$callback$$(null,$congs$$)}).catch($e$$=>{$callback$$($e$$)})})},async($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$e$$=$rs$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $e$$.asyncJoinModel2(null,global.getModel("app"),[{where:{id_app:"_id"},fields:[{ten_cong_ty:"name"}]}]);
5
+ $callback$$(null,$e$$)})})};
@@ -6,6 +6,7 @@ $report$$=$data$$;$group_by$$&&$condition$$.show_detail&&($report$$.forEach($r$$
6
6
  await $report$$.filter($r$$=>$r$$.nh_kh).asyncJoinModel2($condition$$.id_app,"group",{where:{nh_kh:"_id"},fields:[{ten_nh_kh:"group_name"}]});await $report$$.filter($r$$=>$r$$.ma_bp).asyncJoinModel2($condition$$.id_app,"dmbp",{where:{ma_bp:"ma_bp"},fields:[{ten_bp:"ten_bp"}]});await $report$$.filter($r$$=>$r$$.ma_vt_du).asyncJoinModel2($condition$$.id_app,"dmvt",{where:{ma_vt_du:"ma_vt"},fields:[{ten_vt_du:"ten_vt"}]});await $report$$.filter($r$$=>$r$$.user_nv_giao_hang).asyncJoinModel2(null,"user",
7
7
  {where:{user_nv_giao_hang:"email"},fields:[{ten_nv_giao_hang:"name"}]});$req$$.query.group_by&&$condition$$.show_detail&&($report$$=$report$$.sort(($a$$,$b$$)=>{var $date2Diff_dateDiff_groupByDiff_sysorderDiff$$=$a$$[$req$$.query.group_by].localeCompare($b$$[$req$$.query.group_by]);if($date2Diff_dateDiff_groupByDiff_sysorderDiff$$!==0)return $date2Diff_dateDiff_groupByDiff_sysorderDiff$$;$date2Diff_dateDiff_groupByDiff_sysorderDiff$$=$a$$.sysorder-$b$$.sysorder;if($date2Diff_dateDiff_groupByDiff_sysorderDiff$$!==
8
8
  0)return $date2Diff_dateDiff_groupByDiff_sysorderDiff$$;$date2Diff_dateDiff_groupByDiff_sysorderDiff$$=new Date($a$$.ngay_ct)-new Date($b$$.ngay_ct);if($date2Diff_dateDiff_groupByDiff_sysorderDiff$$!==0)return $date2Diff_dateDiff_groupByDiff_sysorderDiff$$;$date2Diff_dateDiff_groupByDiff_sysorderDiff$$=new Date($a$$.date_created)-new Date($b$$.date_created);if($date2Diff_dateDiff_groupByDiff_sysorderDiff$$!==0)return $date2Diff_dateDiff_groupByDiff_sysorderDiff$$;$a$$=$a$$.so_ct.localeCompare($b$$.so_ct);
9
- return $a$$!==0?$a$$:0}));const $tong_cong$$={[$group_by$$?$group_by$$[0]:"ten_vt"]:"T\u1ed5ng c\u1ed9ng",sl_xuat:$report$$.csum("sl_xuat"),sl_nhap:$report$$.csum("sl_nhap"),sl_xuat_qd:$report$$.csum("sl_xuat_qd"),sl_nhap_qd:$report$$.csum("sl_nhap_qd"),sl_xuat_qd_bc:$report$$.csum("sl_xuat_qb_bc"),sl_nhap_qd_bc:$report$$.csum("sl_nhap_qd_bc"),tien_hang_nt:$report$$.csum("tien_hang_nt"),tien_hang_ct_nt:$report$$.csum("tien_hang_ct_nt"),tien_hang:$report$$.csum("tien_hang"),tien_hang_ct:$report$$.csum("tien_hang_ct"),
10
- tien_cp:$report$$.csum("tien_cp"),tien_cp_nt:$report$$.csum("tien_cp_nt"),tien_ck_nt:$report$$.csum("tien_ck_nt"),tien_ck:$report$$.csum("tien_ck"),tien_thue:$report$$.csum("tien_thue"),tien_thue_nt:$report$$.csum("tien_thue_nt"),tien:$report$$.csum("tien"),tien_nt:$report$$.csum("tien_nt"),tt:$report$$.csum("tt"),tt_nt:$report$$.csum("tt_nt"),tien_xuat_tmp:$report$$.csum("tien_xuat_tmp"),tien_xuat:$report$$.csum("tien_xuat"),tien_nhap:$report$$.csum("tien_nhap"),loi_nhuan_tmp:$report$$.csum("loi_nhuan_tmp"),
11
- loi_nhuan:$report$$.csum("loi_nhuan"),tien_hoa_hong:$report$$.csum("tien_hoa_hong"),tien_hoa_hong_gt:$report$$.csum("tien_hoa_hong_gt"),tien_hoa_hong_ctv:$report$$.csum("tien_hoa_hong_ctv"),tien_hoa_hong_ql:$report$$.csum("tien_hoa_hong_ql"),t_hoa_hong:$report$$.csum("t_hoa_hong"),sl_vt_du:$report$$.csum("sl_vt_du"),gt_vt_du:$report$$.csum("gt_vt_du"),sysorder:9,bold:!0};$report$$.push($tong_cong$$);$callback$$(null,$report$$)}catch($e$$){$callback$$($e$$)}})};
9
+ return $a$$!==0?$a$$:0}));const $tong_cong$$={[$group_by$$?$group_by$$[0]:"ten_vt"]:"T\u1ed5ng c\u1ed9ng",sl_xuat:$report$$.csum("sl_xuat",{sysorder:5}),sl_nhap:$report$$.csum("sl_nhap",{sysorder:5}),sl_xuat_qd:$report$$.csum("sl_xuat_qd",{sysorder:5}),sl_nhap_qd:$report$$.csum("sl_nhap_qd",{sysorder:5}),sl_xuat_qd_bc:$report$$.csum("sl_xuat_qb_bc",{sysorder:5}),sl_nhap_qd_bc:$report$$.csum("sl_nhap_qd_bc",{sysorder:5}),tien_hang_nt:$report$$.csum("tien_hang_nt",{sysorder:5}),tien_hang_ct_nt:$report$$.csum("tien_hang_ct_nt",
10
+ {sysorder:5}),tien_hang:$report$$.csum("tien_hang",{sysorder:5}),tien_hang_ct:$report$$.csum("tien_hang_ct",{sysorder:5}),tien_cp:$report$$.csum("tien_cp",{sysorder:5}),tien_cp_nt:$report$$.csum("tien_cp_nt",{sysorder:5}),tien_ck_nt:$report$$.csum("tien_ck_nt",{sysorder:5}),tien_ck:$report$$.csum("tien_ck",{sysorder:5}),tien_thue:$report$$.csum("tien_thue",{sysorder:5}),tien_thue_nt:$report$$.csum("tien_thue_nt",{sysorder:5}),tien:$report$$.csum("tien",{sysorder:5}),tien_nt:$report$$.csum("tien_nt",
11
+ {sysorder:5}),tt:$report$$.csum("tt",{sysorder:5}),tt_nt:$report$$.csum("tt_nt",{sysorder:5}),tien_xuat_tmp:$report$$.csum("tien_xuat_tmp",{sysorder:5}),tien_xuat:$report$$.csum("tien_xuat",{sysorder:5}),tien_nhap:$report$$.csum("tien_nhap",{sysorder:5}),loi_nhuan_tmp:$report$$.csum("loi_nhuan_tmp",{sysorder:5}),loi_nhuan:$report$$.csum("loi_nhuan",{sysorder:5}),tien_hoa_hong:$report$$.csum("tien_hoa_hong",{sysorder:5}),tien_hoa_hong_gt:$report$$.csum("tien_hoa_hong_gt",{sysorder:5}),tien_hoa_hong_ctv:$report$$.csum("tien_hoa_hong_ctv",
12
+ {sysorder:5}),tien_hoa_hong_ql:$report$$.csum("tien_hoa_hong_ql",{sysorder:5}),t_hoa_hong:$report$$.csum("t_hoa_hong",{sysorder:5}),sl_vt_du:$report$$.csum("sl_vt_du",{sysorder:5}),gt_vt_du:$report$$.csum("gt_vt_du",{sysorder:5}),sysorder:9,bold:!0};$report$$.push($tong_cong$$);$callback$$(null,$report$$)}catch($e$$){$callback$$($e$$)}})};
@@ -3,6 +3,7 @@ module.exports=function($router$$){new controller($router$$,"dtbanletheosp",asyn
3
3
  "string"&&($group_by$$=[$group_by$$]),$report$$=await $report$$.asyncGroupBy($group_by$$,"sl_xuat sl_nhap sl_xuat_qd sl_nhap_qd sl_xuat_qd_bc sl_nhap_qd_bc tien_hang_nt tien_hang_ct_nt tien_hang tien_hang_ct tien_cp tien_cp_nt tien_ck_nt tien_ck tien_thue tien_thue_nt tien tien_nt tt tt_nt tien_xuat_tmp tien_xuat tien_nhap loi_nhuan_tmp loi_nhuan tien_hoa_hong tien_hoa_hong_gt tien_hoa_hong_ctv tien_hoa_hong_ql t_hoa_hong".split(" ")));await $report$$.filter($r$$=>$r$$.ma_vt).asyncJoinModel2($condition$$.id_app,
4
4
  "dmvt",{where:"ma_vt",fields:["ten_vt","ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]});await $report$$.filter($r$$=>$r$$.ma_nvt).asyncJoinModel2($condition$$.id_app,"dmnvt",{where:{ma_nvt:"_id"},fields:["ten_nvt"]});await $report$$.filter($r$$=>$r$$.ma_nvt2).asyncJoinModel2($condition$$.id_app,"dmnvt",{where:{ma_nvt2:"_id"},fields:[{ten_nvt2:"ten_nvt"}]});await $report$$.filter($r$$=>$r$$.ma_nvt3).asyncJoinModel2($condition$$.id_app,"dmnvt",{where:{ma_nvt3:"_id"},fields:[{ten_nvt3:"ten_nvt"}]});await $report$$.filter($r$$=>
5
5
  $r$$.ma_nvt4).asyncJoinModel2($condition$$.id_app,"dmnvt",{where:{ma_nvt4:"_id"},fields:[{ten_nvt4:"ten_nvt"}]});await $report$$.filter($r$$=>$r$$.ma_kh).asyncJoinModel2($condition$$.id_app,"customer",{where:{ma_kh:"ma_kh"},fields:["ten_kh","nh_kh"]});await $report$$.filter($r$$=>$r$$.nh_kh).asyncJoinModel2($condition$$.id_app,"group",{where:{nh_kh:"_id"},fields:[{ten_nh_kh:"group_name"}]});await $report$$.filter($r$$=>$r$$.ma_bp).asyncJoinModel2($condition$$.id_app,"dmbp",{where:{ma_bp:"ma_bp"},
6
- fields:[{ten_bp:"ten_bp"}]});const $tong_cong$$={[$group_by$$?$group_by$$[0]:"ten_vt"]:"T\u1ed5ng c\u1ed9ng",sl_xuat:$report$$.csum("sl_xuat"),sl_nhap:$report$$.csum("sl_nhap"),sl_xuat_qd:$report$$.csum("sl_xuat_qd"),sl_nhap_qd:$report$$.csum("sl_nhap_qd"),sl_xuat_qd_bc:$report$$.csum("sl_xuat_qd_bc"),sl_nhap_qd_bc:$report$$.csum("sl_nhap_qd_bc"),tien_hang_nt:$report$$.csum("tien_hang_nt"),tien_hang_ct_nt:$report$$.csum("tien_hang_ct_nt"),tien_hang:$report$$.csum("tien_hang"),tien_hang_ct:$report$$.csum("tien_hang_ct"),
7
- tien_cp:$report$$.csum("tien_cp"),tien_cp_nt:$report$$.csum("tien_cp_nt"),tien_ck_nt:$report$$.csum("tien_ck_nt"),tien_ck:$report$$.csum("tien_ck"),tien_thue:$report$$.csum("tien_thue"),tien_thue_nt:$report$$.csum("tien_thue_nt"),tien:$report$$.csum("tien"),tien_nt:$report$$.csum("tien_nt"),tt:$report$$.csum("tt"),tt_nt:$report$$.csum("tt_nt"),tien_xuat_tmp:$report$$.csum("tien_xuat_tmp"),tien_xuat:$report$$.csum("tien_xuat"),tien_nhap:$report$$.csum("tien_nhap"),loi_nhuan_tmp:$report$$.csum("loi_nhuan_tmp"),
8
- loi_nhuan:$report$$.csum("loi_nhuan"),tien_hoa_hong:$report$$.csum("tien_hoa_hong"),tien_hoa_hong_gt:$report$$.csum("tien_hoa_hong_gt"),tien_hoa_hong_ctv:$report$$.csum("tien_hoa_hong_ctv"),tien_hoa_hong_ql:$report$$.csum("tien_hoa_hong_ql"),t_hoa_hong:$report$$.csum("t_hoa_hong"),bold:!0};$report$$.push($tong_cong$$);$callback$$(null,$report$$)}catch($e$$){$callback$$($e$$)}})};
6
+ fields:[{ten_bp:"ten_bp"}]});const $tong_cong$$={[$group_by$$?$group_by$$[0]:"ten_vt"]:"T\u1ed5ng c\u1ed9ng",sl_xuat:$report$$.csum("sl_xuat",{sysorder:5}),sl_nhap:$report$$.csum("sl_nhap",{sysorder:5}),sl_xuat_qd:$report$$.csum("sl_xuat_qd",{sysorder:5}),sl_nhap_qd:$report$$.csum("sl_nhap_qd",{sysorder:5}),sl_xuat_qd_bc:$report$$.csum("sl_xuat_qd_bc",{sysorder:5}),sl_nhap_qd_bc:$report$$.csum("sl_nhap_qd_bc",{sysorder:5}),tien_hang_nt:$report$$.csum("tien_hang_nt",{sysorder:5}),tien_hang_ct_nt:$report$$.csum("tien_hang_ct_nt",
7
+ {sysorder:5}),tien_hang:$report$$.csum("tien_hang",{sysorder:5}),tien_hang_ct:$report$$.csum("tien_hang_ct",{sysorder:5}),tien_cp:$report$$.csum("tien_cp",{sysorder:5}),tien_cp_nt:$report$$.csum("tien_cp_nt",{sysorder:5}),tien_ck_nt:$report$$.csum("tien_ck_nt",{sysorder:5}),tien_ck:$report$$.csum("tien_ck",{sysorder:5}),tien_thue:$report$$.csum("tien_thue",{sysorder:5}),tien_thue_nt:$report$$.csum("tien_thue_nt",{sysorder:5}),tien:$report$$.csum("tien",{sysorder:5}),tien_nt:$report$$.csum("tien_nt",
8
+ {sysorder:5}),tt:$report$$.csum("tt",{sysorder:5}),tt_nt:$report$$.csum("tt_nt",{sysorder:5}),tien_xuat_tmp:$report$$.csum("tien_xuat_tmp",{sysorder:5}),tien_xuat:$report$$.csum("tien_xuat",{sysorder:5}),tien_nhap:$report$$.csum("tien_nhap",{sysorder:5}),loi_nhuan_tmp:$report$$.csum("loi_nhuan_tmp",{sysorder:5}),loi_nhuan:$report$$.csum("loi_nhuan",{sysorder:5}),tien_hoa_hong:$report$$.csum("tien_hoa_hong",{sysorder:5}),tien_hoa_hong_gt:$report$$.csum("tien_hoa_hong_gt",{sysorder:5}),tien_hoa_hong_ctv:$report$$.csum("tien_hoa_hong_ctv",
9
+ {sysorder:5}),tien_hoa_hong_ql:$report$$.csum("tien_hoa_hong_ql",{sysorder:5}),t_hoa_hong:$report$$.csum("t_hoa_hong",{sysorder:5}),bold:!0};$report$$.push($tong_cong$$);$callback$$(null,$report$$)}catch($e$$){$callback$$($e$$)}})};
@@ -21,10 +21,11 @@ global.backupPool||($backupWorkerFile_e$$=path.dirname(path.dirname(__dirname))+
21
21
  backup_app_info:$req$$.query.backup_app_info,configs:{database:global.configs.database}},$response$$=>{if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.sendFile(path.dirname(path.dirname(__dirname))+"/backup/"+$response$$.file)})})});$contr_router$$.router.route($contr_router$$.route_name+"/restore/:id").post(async function($req$$,$res$$){let $fileZip$$;$req$$.files&&$req$$.files.backup&&$req$$.files.backup.path?$fileZip$$=$req$$.files.backup.path:$req$$.body&&$req$$.body.file_from_server&&
22
22
  fs.existsSync($req$$.body.file_from_server)&&($fileZip$$=$req$$.body.file_from_server);if(!$fileZip$$)return $res$$.status(400).send("Kh\u00f4ng t\u00ecm th\u1ea5y file backup");let $email$$=$req$$.user.email,$id_app$$=$req$$.params.id;permission.isAdmin($id_app$$,$email$$,function($backupWorkerFile$jscomp$1_e$$,$admin$$){if(!$admin$$)return $res$$.status(400).send({error:"Ch\u1ec9 admin m\u1edbi c\u00f3 quy\u1ec1n restore d\u1eef li\u1ec7u c\u1ee7a c\u00f4ng ty"});global.backupPool||($backupWorkerFile$jscomp$1_e$$=
23
23
  path.dirname(path.dirname(__dirname))+"/workers/backupApp.js",global.backupPool=new StaticPool($backupWorkerFile$jscomp$1_e$$,0,1));global.backupPool.exec({id:$id_app$$,user:$email$$,configs:{database:global.configs.database}},$response$$=>{if($response$$.error)return $res$$.status(400).send($response$$.error);global.getModel("log").create({id_app:$id_app$$,id_func:"app",action:"RESTORE",data:{backup_file:path.dirname(path.dirname(__dirname))+"/backup/"+$response$$.file,restore_file:$fileZip$$}},
24
- $req$$.user.email,$req$$.user_agent,$req$$);global.restorePool||($response$$=path.dirname(path.dirname(__dirname))+"/workers/restoreApp.js",global.restorePool=new StaticPool($response$$));global.restorePool.exec({id:$id_app$$,user:$email$$,file:$fileZip$$,configs:{database:global.configs.database}},$response$$=>{$response$$.error?_Notification.createNotification($email$$,$email$$,$response$$.error,$response$$.error,null,null,!0,$req$$.access_token,!0):_Notification.createNotification($email$$,$email$$,
25
- $response$$.result,$response$$.result,null,null,!0,$req$$.access_token,!0)});$res$$.send("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Xin ch\u1edd trong gi\u00e2y l\u00e1t")})})});$contr_router$$.router.route($contr_router$$.route_name+"/apps/:email_owner").get(async function($query_req$$,$res$$){var $_appsOfUser$jscomp$1_email$$=$query_req$$.params.email_owner;if(!underscore.contains(configs.admins,$query_req$$.user.email)&&!isSupperAdmin($query_req$$.user.email.toLowerCase()))return $res$$.status(403).send("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp t\u00ednh n\u0103ng n\u00e0y");
26
- $query_req$$={};$_appsOfUser$jscomp$1_email$$.toLowerCase()!="all"&&($_appsOfUser$jscomp$1_email$$=await Participant.appsOfUser($_appsOfUser$jscomp$1_email$$),$_appsOfUser$jscomp$1_email$$=$_appsOfUser$jscomp$1_email$$.map($p$$=>$p$$.id_app),$query_req$$._id={$in:$_appsOfUser$jscomp$1_email$$});model.find($query_req$$).lean().exec(function($error$$,$apps$$){if($error$$)return $res$$.status(400).send($error$$);$apps$$.forEach(function($item$$){calcTimeExpired($item$$)});$res$$.send($apps$$)})});$contr_router$$.router.route($contr_router$$.route_name+
27
- "/remove/:id").get(async($app_req$$,$res$$)=>{var $id_app$jscomp$2_p$$=$app_req$$.params.id;let $email$$=$app_req$$.user.email;$app_req$$=await model.findById($id_app$jscomp$2_p$$);if(!$app_req$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$app_req$$.participants&&($app_req$$.participants=$app_req$$.participants.filter($p$$=>$p$$.email!==$email$$),$app_req$$.save(()=>{}));if($id_app$jscomp$2_p$$=await Participant.findOne({id_app:$id_app$jscomp$2_p$$,email:$email$$}))await Participant.deleteOne({_id:$id_app$jscomp$2_p$$._id}),
28
- $id_app$jscomp$2_p$$=`${$id_app$jscomp$2_p$$.name} (${$email$$}) \u0111\u00e3 r\u1eddi kh\u1ecfi c\u00f4ng ty ${$app_req$$.name}`,_Notification.createNotification($email$$,$app_req$$.user_created,$id_app$jscomp$2_p$$,$id_app$jscomp$2_p$$);$res$$.send("ok")});$contr_router$$.router.route($contr_router$$.route_name+"/join/:id/:group").get(async($req$$,$res$$)=>{let $id_app$$=$req$$.params.id,$group_id$$=$req$$.params.group,$email$$=$req$$.user.email,$user$$=$req$$.user,$app$$=await model.findById($id_app$$);
29
- if(!$app$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if(!await Participant.findOne({id_app:$id_app$$,email:$email$$})&&$group_id$$&&global.mongoose.Types.ObjectId.isValid($group_id$$))try{if(!await UserGroup.findOne({_id:$group_id$$,is_customer_group:!0}))return $res$$.status(400).send("Nh\u00f3m kh\u00e1ch h\u00e0ng kh\u00f4ng t\u1ed3n t\u1ea1i");Participant.createParticipant({id_app:$id_app$$,email:$email$$,name:$user$$.name,group_id:$group_id$$,active:!0},
30
- $cust_e$$=>{if($cust_e$$)return $res$$.status(400).send("can't add user",$user$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$user$$.name,email:$user$$.email,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};isMobilePhone($user$$.email,["vi-VN"])&&($cust_e$$.dien_thoai=$user$$.email);try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}$res$$.send("ok")})}catch($e$$){$res$$.status(400).send($e$$.message)}$res$$.send("ok")})};
24
+ $req$$.user.email,$req$$.user_agent,$req$$);global.restorePool||($response$$=path.dirname(path.dirname(__dirname))+"/workers/restoreApp.js",global.restorePool=new StaticPool($response$$));global.restorePool.exec({id:$id_app$$,user:$email$$,file:$fileZip$$,configs:{database:global.configs.database}},$response$$=>{$response$$.error?(console.error("[restore data] l\u1ed7i khi restore data",$response$$.error),_Notification.createNotification($email$$,$email$$,$response$$.error,$response$$.error,null,
25
+ null,!0,$req$$.access_token,!0)):(console.log("[restore data] \u0111\u00e3 ho\u00e0n th\u00e0nh restore d\u1eef li\u1ec7u. \u0110ang g\u1eedi email th\u00f4ng b\u00e1o k\u1ebft qu\u1ea3"),_Notification.createNotification($email$$,$email$$,$response$$.result,$response$$.result,null,null,!0,$req$$.access_token,!0))});$res$$.send("Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Xin ch\u1edd trong gi\u00e2y l\u00e1t")})})});$contr_router$$.router.route($contr_router$$.route_name+"/apps/:email_owner").get(async function($query_req$$,
26
+ $res$$){var $_appsOfUser$jscomp$1_email$$=$query_req$$.params.email_owner;if(!underscore.contains(configs.admins,$query_req$$.user.email)&&!isSupperAdmin($query_req$$.user.email.toLowerCase()))return $res$$.status(403).send("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp t\u00ednh n\u0103ng n\u00e0y");$query_req$$={};$_appsOfUser$jscomp$1_email$$.toLowerCase()!="all"&&($_appsOfUser$jscomp$1_email$$=await Participant.appsOfUser($_appsOfUser$jscomp$1_email$$),$_appsOfUser$jscomp$1_email$$=$_appsOfUser$jscomp$1_email$$.map($p$$=>
27
+ $p$$.id_app),$query_req$$._id={$in:$_appsOfUser$jscomp$1_email$$});model.find($query_req$$).lean().exec(function($error$$,$apps$$){if($error$$)return $res$$.status(400).send($error$$);$apps$$.forEach(function($item$$){calcTimeExpired($item$$)});$res$$.send($apps$$)})});$contr_router$$.router.route($contr_router$$.route_name+"/remove/:id").get(async($app_req$$,$res$$)=>{var $id_app$jscomp$2_p$$=$app_req$$.params.id;let $email$$=$app_req$$.user.email;$app_req$$=await model.findById($id_app$jscomp$2_p$$);
28
+ if(!$app_req$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$app_req$$.participants&&($app_req$$.participants=$app_req$$.participants.filter($p$$=>$p$$.email!==$email$$),$app_req$$.save(()=>{}));if($id_app$jscomp$2_p$$=await Participant.findOne({id_app:$id_app$jscomp$2_p$$,email:$email$$}))await Participant.deleteOne({_id:$id_app$jscomp$2_p$$._id}),$id_app$jscomp$2_p$$=`${$id_app$jscomp$2_p$$.name} (${$email$$}) \u0111\u00e3 r\u1eddi kh\u1ecfi c\u00f4ng ty ${$app_req$$.name}`,
29
+ _Notification.createNotification($email$$,$app_req$$.user_created,$id_app$jscomp$2_p$$,$id_app$jscomp$2_p$$);$res$$.send("ok")});$contr_router$$.router.route($contr_router$$.route_name+"/join/:id/:group").get(async($req$$,$res$$)=>{let $id_app$$=$req$$.params.id,$group_id$$=$req$$.params.group,$email$$=$req$$.user.email,$user$$=$req$$.user,$app$$=await model.findById($id_app$$);if(!$app$$)return $res$$.status(400).send("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if(!await Participant.findOne({id_app:$id_app$$,
30
+ email:$email$$})&&$group_id$$&&global.mongoose.Types.ObjectId.isValid($group_id$$))try{if(!await UserGroup.findOne({_id:$group_id$$,is_customer_group:!0}))return $res$$.status(400).send("Nh\u00f3m kh\u00e1ch h\u00e0ng kh\u00f4ng t\u1ed3n t\u1ea1i");Participant.createParticipant({id_app:$id_app$$,email:$email$$,name:$user$$.name,group_id:$group_id$$,active:!0},$cust_e$$=>{if($cust_e$$)return $res$$.status(400).send("can't add user",$user$$.email,"to company",$app$$.name);$cust_e$$={ten_kh:$user$$.name,
31
+ email:$user$$.email,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};isMobilePhone($user$$.email,["vi-VN"])&&($cust_e$$.dien_thoai=$user$$.email);try{Customer.asyncCreateCustomer($cust_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}$res$$.send("ok")})}catch($e$$){$res$$.status(400).send($e$$.message)}$res$$.send("ok")})};