flexbiz-server 12.0.25 → 12.0.26

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.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.0.25",
5
+ "version": "12.0.26",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
package/server/app.js CHANGED
@@ -1,4 +1,5 @@
1
- 'use strict';const express=require("express"),bodyParser=require("body-parser"),session=require("express-session"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),async=require("async"),_global=require("./global"),User=global.getModel("user"),defaultConfigs=require("./defaultConfigs"),mainServer=function($app$$,$options$$={cluster:!0,port:443,useSocket:!0},$callback$jscomp$1$$=null){const $configs$$=global.configs={...defaultConfigs,...$options$$.configs};
1
+ 'use strict';require("events").EventEmitter.defaultMaxListeners=1E4;
2
+ const express=require("express"),bodyParser=require("body-parser"),session=require("express-session"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),async=require("async"),_global=require("./global"),User=global.getModel("user"),defaultConfigs=require("./defaultConfigs"),mainServer=function($app$$,$options$$={cluster:!0,port:443,useSocket:!0},$callback$jscomp$1$$=null){const $configs$$=global.configs={...defaultConfigs,...$options$$.configs};
2
3
  $configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$options$$.port||$configs$$.PORT||443;var $compress_modulesVisible_morgan_multer_root_dir_uploads$$=require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($compress_modulesVisible_morgan_multer_root_dir_uploads$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=
3
4
  $module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.use(session({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0}));$compress_modulesVisible_morgan_multer_root_dir_uploads$$=require("compression");$app$$.use($compress_modulesVisible_morgan_multer_root_dir_uploads$$());$compress_modulesVisible_morgan_multer_root_dir_uploads$$=$configs$$.paths.uploads||__dirname+"/uploads";$compress_modulesVisible_morgan_multer_root_dir_uploads$$=
4
5
  require("multer")({dest:$compress_modulesVisible_morgan_multer_root_dir_uploads$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($compress_modulesVisible_morgan_multer_root_dir_uploads$$);$app$$.use(cors({credentials:!0,origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",
package/server/cluster.js CHANGED
@@ -1,5 +1,6 @@
1
- 'use strict';const express=require("express"),bodyParser=require("body-parser"),session=require("express-session"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),sslConfig=require("./sslConfig"),clusterServer=function($app$$,$sslDir$$,$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$={},$_port_accessLogStream_rfs$$=9999,$options$$={start_import_data_pool:!1,
2
- start_report_pool:!0,useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$,cluster:0!=$options$$.cluster};$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$_port_accessLogStream_rfs$$;$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$=
1
+ 'use strict';require("events").EventEmitter.defaultMaxListeners=1E4;
2
+ const express=require("express"),bodyParser=require("body-parser"),session=require("express-session"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),sslConfig=require("./sslConfig"),clusterServer=function($app$$,$sslDir$$,$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$={},$_port_accessLogStream_rfs$$=9999,$options$$={start_import_data_pool:!1,start_report_pool:!0,
3
+ useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$,cluster:0!=$options$$.cluster};$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$_port_accessLogStream_rfs$$;$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$=
3
4
  require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=$module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.use(session({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0}));$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$=require("compression");
4
5
  $app$$.use($_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$());$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$=$configs$$.paths.uploads||__dirname+"/uploads";$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$=require("multer")({dest:$_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($_configs_compress_modulesVisible_morgan_multer_root_dir_uploads$$);$app$$.use(cors({credentials:!0,
5
6
  origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));
@@ -1,12 +1,14 @@
1
- 'use strict';let wallet=require("./wallet");const cryptoJs=require("crypto-js"),moment=require("moment"),senderSchema=new Schema({email:{type:String,required:!0,maxlength:128},signature:{type:String,required:!0}});senderSchema.index({email:1});const receiverSchema=new Schema({email:{type:String,required:!0}});receiverSchema.index({email:1});
2
- const transactionSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_trans:{type:String,required:!0,maxlength:1024},sender:senderSchema,receiver:receiverSchema,amount:{type:Number,required:!0},description:String,id_ct:String,so_ct:String,ngay_ct:{type:Date,default:Date.now},ma_ct:String,status:{type:String,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});transactionSchema.index({id_app:1});
3
- transactionSchema.index({id_ct:1});transactionSchema.index({id_trans:1});transactionSchema.index({ma_ct:1});transactionSchema.index({ngay_ct:1});transactionSchema.index({date_created:1});transactionSchema.index({status:1});transactionSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.transaction||mongoose.model("transaction",transactionSchema);model.on("index",async function($err$$){if($err$$)return console.error("Product index error",$err$$);console.log("transaction indexing complete")});
4
- model.verifyTrans=async($data$$,$trans$$)=>await wallet.verifySignature($data$$.id_app,$data$$.sender_email,{id_app:$data$$.id_app,sender_email:$data$$.sender_email,receiver_email:$data$$.receiver_email,amount:$data$$.amount},$trans$$.sender.signature);model.createTransId=($id_app$$,$sender_email$$,$receiver_email$$,$amount$$)=>{let $timestamp$$=(new Date).getTime();return cryptoJs.SHA256($id_app$$+$sender_email$$+$receiver_email$$+$amount$$.toString()+$timestamp$$).toString()};
1
+ 'use strict';let wallet=require("./wallet");const cryptoJs=require("crypto-js"),moment=require("moment"),PostSocai=require("../libs/post-socai"),senderSchema=new Schema({email:{type:String,required:!0,maxlength:128},signature:{type:String,required:!0}});senderSchema.index({email:1});const receiverSchema=new Schema({email:{type:String,required:!0}});receiverSchema.index({email:1});
2
+ const transactionSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_trans:{type:String,required:!0,maxlength:1024},sender:senderSchema,receiver:receiverSchema,amount:{type:Number,required:!0},description:String,id_ct:String,so_ct:String,ngay_ct:{type:Date,default:Date.now},ma_ct:String,tk_no:String,tk_co:String,status:{type:String,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,
3
+ default:""}});transactionSchema.index({id_app:1});transactionSchema.index({id_ct:1});transactionSchema.index({id_trans:1});transactionSchema.index({ma_ct:1});transactionSchema.index({ngay_ct:1});transactionSchema.index({date_created:1});transactionSchema.index({status:1});transactionSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.transaction||mongoose.model("transaction",transactionSchema);
4
+ model.on("index",async function($err$$){if($err$$)return console.error("Product index error",$err$$);console.log("transaction indexing complete")});model.verifyTrans=async($data$$,$trans$$)=>await wallet.verifySignature($data$$.id_app,$data$$.sender_email,{id_app:$data$$.id_app,sender_email:$data$$.sender_email,receiver_email:$data$$.receiver_email,amount:$data$$.amount},$trans$$.sender.signature);
5
+ model.createTransId=($id_app$$,$sender_email$$,$receiver_email$$,$amount$$)=>{let $timestamp$$=(new Date).getTime();return cryptoJs.SHA256($id_app$$+$sender_email$$+$receiver_email$$+$amount$$.toString()+$timestamp$$).toString()};
5
6
  model.createTrans=async $data$$=>{$data$$.otherData||($data$$.otherData={});if($data$$.receiver_email===$data$$.sender_email||!$data$$.amount)throw"Ng\u01b0\u1eddi nh\u1eadn v\u00e0 ng\u01b0\u1eddi g\u1eedi ph\u1ea3i kh\u00e1c nhau v\u00e0 s\u1ed1 l\u01b0\u1ee3ng ph\u1ea3i l\u1edbn h\u01a1n 0";let $id_trans$$=model.createTransId($data$$.id_app,$data$$.sender_email,$data$$.receiver_email,$data$$.amount),$signature$$=await wallet.sign($data$$.id_app,$data$$.sender_email,{id_app:$data$$.id_app,sender_email:$data$$.sender_email,
6
- receiver_email:$data$$.receiver_email,amount:$data$$.amount}),$trans$$=new model({id_app:$data$$.id_app,id_trans:$id_trans$$,sender:{email:$data$$.sender_email,signature:$signature$$},receiver:{email:$data$$.receiver_email},amount:$data$$.amount,description:$data$$.description,id_ct:$data$$.otherData.id_ct,so_ct:$data$$.otherData.so_ct,ngay_ct:$data$$.otherData.ngay_ct,ma_ct:$data$$.otherData.ma_ct});await new Promise(($resolve$$,$reject$$)=>{$trans$$.save(($e_users_will_receive$$,$rs$$)=>{if($e_users_will_receive$$)return console.log($e_users_will_receive$$),
7
- $reject$$(Error($e_users_will_receive$$.message));$e_users_will_receive$$=[$rs$$.sender.email,$rs$$.receiver.email];var $notificationData_title$$=`${$data$$.sender_email} \u0111\u00e3 chuy\u1ec3n cho ${$data$$.receiver_email} ${$data$$.amount} \u0111i\u1ec3m v\u1edbi n\u1ed9i dung: ${$data$$.description}`;if($data$$.sender_email===$data$$.id_app||$data$$.receiver_email===$data$$.id_app)$notificationData_title$$=`${$data$$.description}`;$notificationData_title$$={_id:$rs$$._id,id_app:$data$$.id_app,
8
- title:$notificationData_title$$,body:$notificationData_title$$,code:"transaction",event:"new",action:"NEW"};global.getModel("app").emitEvent($data$$.id_app,`${$notificationData_title$$.code}:${$notificationData_title$$.event}`,$notificationData_title$$,null,$e_users_will_receive$$,!0);$resolve$$($rs$$.toObject())})})};model.getTrans=async $id_trans$$=>new Promise($resolve$$=>{model.findOne({id_trans:$id_trans$$},($e$$,$rs$$)=>{$resolve$$($rs$$)})});
9
- model.deleteTrans=async $id_trans$$=>{$id_trans$$="string"===typeof $id_trans$$?{id_trans:$id_trans$$}:{...$id_trans$$};console.log("delete transaction",$id_trans$$);await model.deleteMany($id_trans$$)};
7
+ receiver_email:$data$$.receiver_email,amount:$data$$.amount}),$trans$$=new model({id_app:$data$$.id_app,id_trans:$id_trans$$,sender:{email:$data$$.sender_email,signature:$signature$$},receiver:{email:$data$$.receiver_email},amount:$data$$.amount,description:$data$$.description,id_ct:$data$$.otherData.id_ct,so_ct:$data$$.otherData.so_ct,ngay_ct:$data$$.otherData.ngay_ct,ma_ct:$data$$.otherData.ma_ct,tk_no:$data$$.otherData.tk_no,tk_co:$data$$.otherData.tk_co});await new Promise(($resolve$$,$reject$$)=>
8
+ {$trans$$.save(async($e_kh_no_users_will_receive$$,$rs$$)=>{if($e_kh_no_users_will_receive$$)return console.log($e_kh_no_users_will_receive$$),$reject$$(Error($e_kh_no_users_will_receive$$.message));if($rs$$.tk_no&&$rs$$.tk_co){$e_kh_no_users_will_receive$$=await global.getModel("customer").findOne({id_app:$rs$$.id_app,of_user:$rs$$.receiver.email}).lean();$kh_co_notificationData_title$$=await global.getModel("customer").findOne({id_app:$rs$$.id_app,of_user:$rs$$.sender.email}).lean();let $master$$=
9
+ $rs$$.toObject();$master$$.dien_giai=$master$$.description;(new PostSocai($master$$,[{tk_no:$rs$$.tk_no,tk_co:$rs$$.tk_co,tien_nt:$rs$$.amount,tien:$rs$$.amount,ma_nt:"VND",ma_kh_no:($e_kh_no_users_will_receive$$||{}).ma_kh,ma_kh_co:($kh_co_notificationData_title$$||{}).ma_kh}])).run($e$$=>{$e$$&&console.error($e$$)})}$e_kh_no_users_will_receive$$=[$rs$$.sender.email,$rs$$.receiver.email];var $kh_co_notificationData_title$$=`${$data$$.sender_email} \u0111\u00e3 chuy\u1ec3n cho ${$data$$.receiver_email} ${$data$$.amount} \u0111i\u1ec3m v\u1edbi n\u1ed9i dung: ${$data$$.description}`;
10
+ if($data$$.sender_email===$data$$.id_app||$data$$.receiver_email===$data$$.id_app)$kh_co_notificationData_title$$=`${$data$$.description}`;$kh_co_notificationData_title$$={_id:$rs$$._id,id_app:$data$$.id_app,title:$kh_co_notificationData_title$$,body:$kh_co_notificationData_title$$,code:"transaction",event:"new",action:"NEW"};global.getModel("app").emitEvent($data$$.id_app,`${$kh_co_notificationData_title$$.code}:${$kh_co_notificationData_title$$.event}`,$kh_co_notificationData_title$$,null,$e_kh_no_users_will_receive$$,
11
+ !0);$resolve$$($rs$$.toObject())})})};model.getTrans=async $id_trans$$=>new Promise($resolve$$=>{model.findOne({id_trans:$id_trans$$},($e$$,$rs$$)=>{$resolve$$($rs$$)})});model.deleteTrans=async $id_trans$$=>{$id_trans$$="string"===typeof $id_trans$$?{id_trans:$id_trans$$}:{...$id_trans$$};console.log("delete transaction",$id_trans$$);await model.deleteMany($id_trans$$)};
10
12
  model.balance=async($email$$,$date_to$$)=>{$date_to$$||($date_to$$=new Date);$date_to$$=moment($date_to$$).endOf("date").toDate();return(await model.find({date_created:{$lte:$date_to$$},$or:[{"sender.email":$email$$},{"receiver.email":$email$$}]})).map($tran$$=>$tran$$.sender.email===$email$$?0-$tran$$.amount:$tran$$.amount).reduce(($a$$,$b$$)=>$a$$+$b$$,0)};
11
13
  model.in=async($email$$,$date_to$$)=>{$date_to$$||($date_to$$=new Date);$date_to$$=moment($date_to$$).endOf("date").toDate();return(await model.find({date_created:{$lte:$date_to$$},$or:[{"receiver.email":$email$$}]})).map($tran$$=>$tran$$.amount).reduce(($a$$,$b$$)=>$a$$+$b$$,0)};
12
14
  model.out=async($email$$,$date_to$$)=>{$date_to$$||($date_to$$=new Date);$date_to$$=moment($date_to$$).endOf("date").toDate();return(await model.find({date_created:{$lte:$date_to$$},$or:[{"sender.email":$email$$}]})).map($tran$$=>$tran$$.amount).reduce(($a$$,$b$$)=>$a$$+$b$$,0)};model.on("index",function($err$$){$err$$?console.error("Transaction index error: %s",$err$$):console.info("Transaction indexing complete")});module.exports=model;
@@ -1,4 +1,4 @@
1
- 'use strict';var model=global.getModel("transaction"),Wallet=global.getModel("wallet"),ckdiem=require("../../libs/ckdiem");const controller=require("../../controllers/controller");var getBalance=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{ckdiem({id_app:$id_app$$,email:$email$$},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$));$resolve$$(0===$rs$$.length?0:$rs$$[0].ton00)})});
2
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"transaction",{sort:{ngay_ct:-1},onFinding:($user$$,$condition$$,$next$$)=>{$condition$$.$or=[{"sender.email":$user$$.email},{"receiver.email":$user$$.email}];$next$$(null,$condition$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{$next$$("This API is invalid")},onCreating:($user$$,$obj$$,$next$$)=>{$next$$("This API is invalid")},onDeleting:($user$$,$obj$$,$next$$)=>{$next$$("This API is invalid")}});
3
- $contr_router$$.route();$contr_router$$.createRoute("createTrans",async($data$$,$next$$)=>{let $body$$=$data$$.body,$receiver_email$$;try{$receiver_email$$=await Wallet.getEmail($data$$.user.current_id_app,$body$$.receiver)}catch($e$$){return $next$$($e$$.message)}if(await getBalance($data$$.user.current_id_app,$data$$.user.email)<$body$$.amount)return $next$$("S\u1ed1 d\u01b0 c\u1ee7a b\u1ea1n kh\u00f4ng \u0111\u1ee7 \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");$data$$={id_app:$data$$.user.current_id_app,
4
- sender_email:$data$$.user.email,receiver_email:$receiver_email$$,amount:$body$$.amount,description:$body$$.description};try{let $rs$$=await model.createTrans($data$$);$next$$(null,$rs$$)}catch($e$$){return $next$$($e$$.message||$e$$)}},{method:"POST"})};
1
+ 'use strict';const model=global.getModel("transaction"),Wallet=global.getModel("wallet"),ckdiem=require("../../libs/ckdiem"),controller=require("../../controllers/controller"),getBalance=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{ckdiem({id_app:$id_app$$,email:$email$$},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$));$resolve$$(0===$rs$$.length?0:$rs$$[0].ton00)})});
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"transaction",{sort:{ngay_ct:-1},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{$next$$("This API is invalid")},onCreating:($user$$,$obj$$,$next$$)=>{$next$$("This API is invalid")},onDeleting:($user$$,$obj$$,$next$$)=>{$next$$("This API is invalid")}});$contr_router$$.route();$contr_router$$.createRoute("createTrans",async($data$$,$next$$)=>
3
+ {let $body$$=$data$$.body,$receiver_email$$;try{$receiver_email$$=await Wallet.getEmail($data$$.user.current_id_app,$body$$.receiver)}catch($e$$){return $next$$($e$$.message)}if(await getBalance($data$$.user.current_id_app,$data$$.user.email)<$body$$.amount)return $next$$("S\u1ed1 d\u01b0 c\u1ee7a b\u1ea1n kh\u00f4ng \u0111\u1ee7 \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");$data$$={id_app:$data$$.user.current_id_app,sender_email:$data$$.user.email,receiver_email:$receiver_email$$,amount:$body$$.amount,
4
+ description:$body$$.description,otherData:{tk_no:$body$$.tk_no,tk_co:$body$$.tk_co,ngay_ct:new Date,so_ct:`TRANS${(new Date).getTime()}`,ma_ct:"transaction"}};try{let $rs$$=await model.createTrans($data$$);$next$$(null,$rs$$)}catch($e$$){return $next$$($e$$.message||$e$$)}},{method:"POST"})};
@@ -6,5 +6,6 @@ $co$$.tk_no={$regex:"^"+$req$$.query.tk_du,$options:"i"});$query$$.$and||($query
6
6
  ["tien","tien_nt"],($e$$,$rp$$)=>{$rp$$.forEach(function($r$$){$r$$.systotal=0});async.parallel([function($callback$$){$rp$$.joinModel2($req$$.query.id_app,Account,[{where:{tk_no:"tk"},fields:[{name:"ten_tk_no",value:"ten_tk"}]},{where:{tk_co:"tk"},fields:[{name:"ten_tk_co",value:"ten_tk"}]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_kh_no).joinModel2($req$$.query.id_app,Customer,[{where:{ma_kh_no:"ma_kh"},fields:[{name:"ten_kh_no",value:"ten_kh"},{name:"nh_kh_no",
7
7
  value:"nh_kh"}]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_kh_co).joinModel2($req$$.query.id_app,Customer,[{where:{ma_kh_co:"ma_kh"},fields:[{name:"ten_kh_co",value:"ten_kh"},{name:"nh_kh_co",value:"nh_kh"}]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_hd).joinModel2($req$$.query.id_app,contract,[{where:{ma_hd:"so_hd"},fields:[{name:"ten_hd",value:"ten_hd"}]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>
8
8
  $r$$.ma_dt).joinModel2($req$$.query.id_app,dmdt,[{where:"ma_dt",fields:["ten_dt"]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_phi).joinModel2($req$$.query.id_app,dmphi,[{where:"ma_phi",fields:["ten_phi"]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_nv).joinModel2($req$$.query.id_app,dmnv,[{where:"ma_nv",fields:["ten_nv"]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_vt).joinModel2($req$$.query.id_app,
9
- dmvt,[{where:"ma_vt",fields:["ten_vt"]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_sp).joinModel2($req$$.query.id_app,dmvt,[{where:{ma_sp:"ma_vt"},fields:[{ten_sp:"ten_vt"}]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.id_lenhsx).joinModel2($req$$.query.id_app,Lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],function(){$callback$$()})}],function($error$$){$rp$$.filter($r$$=>$r$$.nh_kh_no||$r$$.nh_kh_co).joinModel2($req$$.query.id_app,
10
- group,[{where:{nh_kh_no:"_id"},fields:[{name:"ten_nh_kh_no",value:"group_name"}]},{where:{nh_kh_co:"_id"},fields:[{name:"ten_nh_kh_co",value:"group_name"}]}],function(){$rp$$=underscore.sortBy($rp$$,function($r$$){return($r$$.ngay_ct?moment($r$$.ngay_ct).format("YYYYMMDD"):"0")+$r$$.ma_ct+$r$$.so_ct});const $rt$$={dien_giai:"T\u1ed5ng c\u1ed9ng",tien:$rp$$.csum("tien"),tien_nt:$rp$$.csum("tien_nt"),systotal:1,bold:!0};$rp$$.push($rt$$);$callback$jscomp$0$$($error$$,$rp$$)})})})})})};
9
+ dmvt,[{where:"ma_vt",fields:["ten_vt"]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.ma_sp).joinModel2($req$$.query.id_app,dmvt,[{where:{ma_sp:"ma_vt"},fields:[{ten_sp:"ten_vt"}]}],function(){$callback$$()})},function($callback$$){$rp$$.filter($r$$=>$r$$.id_lenhsx).joinModel2($req$$.query.id_app,Lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],function(){$callback$$()})},function($callback$$){async.map($rp$$.filter($r$$=>$r$$.ma_ct),($item$$,$cb$$)=>{global.getModel($item$$.ma_ct.toLowerCase()).findOne({_id:$item$$.id_ct},
10
+ {_id:1}).then($rs$$=>{$item$$.id_ct_goc=$rs$$?$rs$$._id:void 0;$cb$$()}).catch(()=>{$cb$$()})},()=>{$callback$$()})}],function($error$$){if(0==$req$$.query.co_ct_goc||"false"==$req$$.query.co_ct_goc)$rp$$=$rp$$.filter($r$$=>!$r$$.id_ct_goc);if(1==$req$$.query.co_ct_goc||"true"==$req$$.query.co_ct_goc)$rp$$=$rp$$.filter($r$$=>$r$$.id_ct_goc);$rp$$.filter($r$$=>$r$$.nh_kh_no||$r$$.nh_kh_co).joinModel2($req$$.query.id_app,group,[{where:{nh_kh_no:"_id"},fields:[{name:"ten_nh_kh_no",value:"group_name"}]},
11
+ {where:{nh_kh_co:"_id"},fields:[{name:"ten_nh_kh_co",value:"group_name"}]}],function(){$rp$$=underscore.sortBy($rp$$,function($r$$){return($r$$.ngay_ct?moment($r$$.ngay_ct).format("YYYYMMDD"):"0")+$r$$.ma_ct+$r$$.so_ct});const $rt$$={dien_giai:"T\u1ed5ng c\u1ed9ng",tien:$rp$$.csum("tien"),tien_nt:$rp$$.csum("tien_nt"),systotal:1,bold:!0};$rp$$.push($rt$$);$callback$jscomp$0$$($error$$,$rp$$)})})})})})};