flexbiz-server 12.4.19 → 12.4.21
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 +1 -1
- package/server/app.js +10 -10
- package/server/cluster.js +14 -13
- package/server/controllers/controllerUtils.js +20 -20
- package/server/controllers/historyHandler.js +5 -2
- package/server/controllers/logHandler.js +5 -3
- package/server/libs/optimizeBookkeeping.js +3 -3
- package/server/libs/post-book.js +16 -15
- package/server/libs/post-sokho.js +14 -13
- package/server/libs/tinhgiatb.js +19 -20
- package/server/libs/utils.js +1 -0
- package/server/models/dmkho.js +3 -3
- package/server/models/log.js +2 -1
- package/server/modules/lists/ls-email.js +1 -1
package/package.json
CHANGED
package/server/app.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require("events").EventEmitter.defaultMaxListeners=1E7;
|
|
2
|
-
const os=require("os"),express=require("express"),bodyParser=require("body-parser"),crypto=require("crypto"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),mainServer=function($app$$,$options$$={cluster:!
|
|
2
|
+
const os=require("os"),express=require("express"),bodyParser=require("body-parser"),crypto=require("crypto"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),mainServer=function($app$$,$options$$={cluster:!1,port:443,useSocket:!0},$callbackServer$$=null){const $configs$$=global.configs={...defaultConfigs,...$options$$.configs,lite:$options$$.lite};$configs$$.database.url=
|
|
3
3
|
process.env.MONGO_URI||$configs$$.database.url;const $User$$=global.getModel("user");$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");var $_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=$options$$.port||$configs$$.port||$configs$$.PORT||443;$configs$$.port=$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$;
|
|
4
4
|
global.port=$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||=express();$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),$res$$.status(503).send({error:"Server is busy right now, sorry."})):
|
|
5
5
|
$next$$()});$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=
|
|
@@ -8,15 +8,15 @@ $configs$$.paths.uploads||__dirname+"/uploads";const $limitFileSize$$=$configs$$
|
|
|
8
8
|
limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie","uid"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$options$$.lite!==!0&&($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||
|
|
9
9
|
__dirname+"/templates")),$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images")));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$=require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+
|
|
10
10
|
"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_port_compress_cookieParser_morgan_multer_root_dir_uploads_session$$("combined",{stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return $res$$.statusCode<400}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});console.log("[app] connect to mongodb",
|
|
11
|
-
$configs$$.database.url);$configs$$.database.url||(console.error("[app] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file config"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async()=>{
|
|
12
|
-
global.clientRedis.on("error",$err$$=>console.error("Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("[app] Redis connection closed.")});global.clientRedis.on("connect",function(){console.log("[app] redis connected")
|
|
13
|
-
require("sticky-session");if($configs$$.use_ssl){var $cpus_report_cpus_server_sslConfig$$=require("./sslConfig");$cpus_report_cpus_server_sslConfig$$=https.createServer($cpus_report_cpus_server_sslConfig$$($options$$.sslDir),$app$$)}else $cpus_report_cpus_server_sslConfig$$=
|
|
14
|
-
global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){console.log("[app] server started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("[app] worker "
|
|
15
|
-
global.port+" port")})}$cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_report_cpus_server_sslConfig$$/
|
|
16
|
-
Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);if($StaticPool$jscomp$0$$){const $StaticPool$$=require("./libs/WorkerStaticPool");global.inputMainPool=
|
|
17
|
-
|
|
18
|
-
$options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Report pool ready")}));$callbackServer$$&&$callbackServer$$()}):require("./route")($app$$,
|
|
19
|
-
process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
11
|
+
$configs$$.database.url);$configs$$.database.url||(console.error("[app] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file config"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async()=>{var $redis_result$$=await mongoose.connection.getClient().db().admin().command({setParameter:1,transactionLifetimeLimitSeconds:$options$$.transactionLifetimeLimitSeconds||1800});console.log("[app] T\u0103ng th\u1eddi gian ho\u1ea1t \u0111\u1ed9ng c\u1ee7a m\u1ed9t transaction:",
|
|
12
|
+
$redis_result$$);console.log("[app] Connected to Database");$redis_result$$=require("redis");const {retryStrategyRedis:$retryStrategyRedis$$}=require("./libs/utils");global.clientRedis=$redis_result$$.createClient({host:"127.0.0.1",port:6379,retry_strategy:$retryStrategyRedis$$});global.clientRedis.on("error",$err$$=>console.error("Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("[app] Redis connection closed.")});global.clientRedis.on("connect",function(){console.log("[app] redis connected");
|
|
13
|
+
$User$$.initClientSockets();$options$$.createRedisCache!=0&&require("./libs/redis-cache").set();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();$options$$.lite!==!0?require("./route")($app$$,()=>{if($options$$.createServer!==!1){var $StaticPool$$=require("sticky-session");if($configs$$.use_ssl){var $cpus_report_cpus_server_sslConfig$$=require("./sslConfig");$cpus_report_cpus_server_sslConfig$$=https.createServer($cpus_report_cpus_server_sslConfig$$($options$$.sslDir),$app$$)}else $cpus_report_cpus_server_sslConfig$$=
|
|
14
|
+
http.createServer($app$$);$cpus_report_cpus_server_sslConfig$$.timeout=6E5;$options$$.useSocket!==!1&&$User$$.initSocket($cpus_report_cpus_server_sslConfig$$);if($options$$.cluster!==!1){if(!$StaticPool$$.listen($cpus_report_cpus_server_sslConfig$$,global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){console.log("[app] server started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("[app] worker "+
|
|
15
|
+
$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[app] worker "+$worker$$.process.pid+" is online")})}else $cpus_report_cpus_server_sslConfig$$.listen(global.port,()=>{console.log("[app] server start at "+global.port+" port")})}$cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_report_cpus_server_sslConfig$$/
|
|
16
|
+
2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);if($StaticPool$jscomp$0$$){const $StaticPool$$=require("./libs/WorkerStaticPool");global.inputMainPool=
|
|
17
|
+
new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,3E5,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,
|
|
18
|
+
configs:JSON.stringify($configs$$)},()=>{console.log("[app] Import pool ready")}));$cpus_report_cpus_server_sslConfig$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[app] Report pool ready")}));$callbackServer$$&&$callbackServer$$()}):require("./route")($app$$,
|
|
19
|
+
()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{console.log("[app] Not Connected to Database ERROR! ",$err$$)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
20
20
|
Error: ${$err$jscomp$3_error$$.message}
|
|
21
21
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
22
22
|
`;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{console.log("[app] wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=mainServer;
|
package/server/cluster.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("events").EventEmitter.defaultMaxListeners=1E7;
|
|
2
2
|
const os=require("os"),express=require("express"),bodyParser=require("body-parser"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),crypto=require("crypto"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),sslConfig=require("./sslConfig"),clusterServer=function($app$$,$sslDir$$,$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$={},$_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_cookieParser_cors_morgan_multer_root_dir_uploads_session$$,cluster:$options$$.cluster
|
|
3
|
+
useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$,cluster:$options$$.cluster,lite:$options$$.lite,port:$_port_accessLogStream_rfs$$};$configs$$.database.url=process.env.MONGO_URI||$configs$$.database.url;$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||
|
|
4
4
|
($configs$$.public_token="flex.public.token");$configs$$.port=$_port_accessLogStream_rfs$$;global.port=$_port_accessLogStream_rfs$$;require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||=express();$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now. This request has been cancel:",$req$$.originalUrl),
|
|
5
5
|
$res$$.status(503).send({error:"Server is busy right now, sorry."})):$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$());
|
|
6
6
|
$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||=$req$$.headers.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}));$res$$.set("uid",$uid$$);$req$$.cookies.uid=$uid$$;$next$$()});$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$());
|
|
@@ -9,18 +9,19 @@ limits:{files:1,fileSize:$limitFileSize$$}});$app$$.use($_configs_compress_cooki
|
|
|
9
9
|
__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"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$=
|
|
10
10
|
require("morgan");$_port_accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$_port_accessLogStream_rfs$$=$_port_accessLogStream_rfs$$("access-cluster.log",{interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_cors_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return $res$$.statusCode<
|
|
11
11
|
400}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});console.log("[cluster] connect to mongodb",$configs$$.database.url);$configs$$.database.url||(console.error("[cluster] thi\u1ebfu \u0111\u01b0\u1eddng d\u1eabn k\u1ebft n\u1ed1i v\u1edbi database trong file configs"),process.exit(1));global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("[cluster] Connected to Database");
|
|
12
|
-
global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");
|
|
13
|
-
|
|
14
|
-
$
|
|
15
|
-
global.getModel("
|
|
16
|
-
{name:$StaticPool_adminUser$$.name,email:$StaticPool_adminUser$$.email,active:!0},$u$$=new $StaticPool$$($StaticPool_adminUser$$)
|
|
17
|
-
$
|
|
18
|
-
|
|
19
|
-
global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
var $result_retryStrategyRedis$$=await mongoose.connection.getClient().db().admin().command({setParameter:1,transactionLifetimeLimitSeconds:$options$$.transactionLifetimeLimitSeconds||1800});console.log("[cluster] T\u0103ng th\u1eddi gian ho\u1ea1t \u0111\u1ed9ng c\u1ee7a m\u1ed9t transaction:",$result_retryStrategyRedis$$);global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");({retryStrategyRedis:$result_retryStrategyRedis$$}=require("./libs/utils"));global.clientRedis=$clientMongo_redis$$.createClient({host:"127.0.0.1",
|
|
13
|
+
port:6379,retry_strategy:$result_retryStrategyRedis$$});global.clientRedis.on("error",$err$$=>console.error("[cluster] Redis Client Error",$err$$));global.clientRedis.on("end",()=>{console.error("[cluster] Redis connection closed.")});global.clientRedis.on("connect",async function(){function $initSysData$$(){console.log("[cluster] creating system data...");const $files$$=fs.readdirSync(__dirname+"/data/sys");$async$$.mapSeries($files$$,function($file$$,$callback$$){setImmediate(()=>{if($file$$.substr(-3)==
|
|
14
|
+
".js"){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("[cluster] creating system data...",$file$$);$model$$.deleteMany({},$e$$=>{console.error($e$$);$async$$.mapSeries($data$$,function($r$$,$callback$$){delete $r$$._id;delete $r$$.__v;delete $r$$.collection_name;delete $r$$.pkey;$model$$.create($r$$,function($error$$){if($error$$)return $callback$$($error$$);$callback$$()})},function($error$$,$rs$$){$callback$$($error$$,
|
|
15
|
+
$rs$$)})})}else $callback$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("[cluster] created system data")})}console.log("redis connected");$options$$.createRedisCache!=0&&require("./libs/redis-cache").set();global.getModel("schedule").start();$options$$.start_abci_handler&&global.getModel("assabcihandler").start();var $StaticPool$$=global.getModel("user"),$cpus_init_system_data_report_cpus_server$$=$configs$$.initSysData;$cpus_init_system_data_report_cpus_server$$||
|
|
16
|
+
await $StaticPool$$.findOne({})||($cpus_init_system_data_report_cpus_server$$=!0);for(var $StaticPool$jscomp$0$$=0;$StaticPool$jscomp$0$$<$configs$$.adminUsers.length;$StaticPool$jscomp$0$$++){var $StaticPool_adminUser$$=$configs$$.adminUsers[$StaticPool$jscomp$0$$];let $u$$=await $StaticPool$$.findOne({email:$StaticPool_adminUser$$.email});$u$$||($StaticPool_adminUser$$.local={name:$StaticPool_adminUser$$.name,email:$StaticPool_adminUser$$.email,active:!0},$u$$=new $StaticPool$$($StaticPool_adminUser$$),
|
|
17
|
+
$u$$.local.password=$u$$.generateHash($StaticPool_adminUser$$.email+$StaticPool_adminUser$$.defaultPassword),$u$$.save(function($error$$,$user$$){if($error$$)return console.error($error$$);$user$$&&console.log("[cluster] da tao thanh cong user "+$user$$.email)}))}const $async$$=require("async");$cpus_init_system_data_report_cpus_server$$&&$initSysData$$();require("./route")($app$$);$cpus_init_system_data_report_cpus_server$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);
|
|
18
|
+
$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",function(){console.log("[cluster] server cluster started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("[cluster] worker "+
|
|
19
|
+
$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,()=>{console.log("[cluster] server start at "+global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?
|
|
20
|
+
$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/
|
|
21
|
+
2))-1,2):0);$StaticPool$jscomp$0$$&&($StaticPool_adminUser$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_adminUser$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,3E5,$StaticPool$jscomp$0$$,"input pool"),global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[cluster] Crud pool ready")}));$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+
|
|
22
|
+
"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{console.log("[cluster] Import pool ready")}));$cpus_init_system_data_report_cpus_server$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_init_system_data_report_cpus_server$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,
|
|
23
|
+
configs:JSON.stringify($configs$$)},()=>{console.log("[cluster] Report pool ready")}))})}).catch($err$$=>{console.error("[cluster] Not Connected to Database ERROR!",$err$$)})};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});
|
|
24
|
+
process.on("uncaughtException",function($err$jscomp$3_error$$){console.error("[cluster]",(new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);console.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
24
25
|
Error: ${$err$jscomp$3_error$$.message}
|
|
25
26
|
Stack: ${$err$jscomp$3_error$$.stack}
|
|
26
27
|
`;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$3_error$$,()=>{console.log("[cluster] wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=clusterServer;
|
|
@@ -14,26 +14,26 @@ sip_password:0,sip_websocket:0,voiip_access_token:0,voiip_webhook:0,wallet_addre
|
|
|
14
14
|
!1);let $condition$$={};$unique$$=$unique$$.filter($key$$=>$model$$.schema.paths[$key$$]);for(let $i$$=0;$i$$<$unique$$.length;$i$$++){let $key$$=$unique$$[$i$$],$v$$=$obj$$[$key$$];$v$$!=void 0&&$model$$.schema.paths[$key$$]&&($v$$!==null?$model$$.schema.paths[$key$$].instance.toLowerCase()=="number"?$condition$$[$key$$]=Number($v$$):$model$$.schema.paths[$key$$].instance.toLowerCase()=="date"?$condition$$[$key$$]=new Date($v$$):$model$$.schema.paths[$key$$].instance.toLowerCase()=="string"?$condition$$[$key$$]=
|
|
15
15
|
$v$$.toString():$condition$$[$key$$]=$v$$:$condition$$[$key$$]=$v$$)}if($condition$$.id_app&&Object.values($condition$$).length<2||Object.values($condition$$).length<1)return $fn$$("D\u1eef li\u1ec7u kh\u00f4ng t\u1ed3n t\u1ea1i \u0111\u1ee7 c\u00e1c gi\u00e1 tr\u1ecb: "+$unique$$.join(","));$obj$$.id_app&&($condition$$.id_app=$obj$$.id_app);$replaceIfExists$$?$model$$.deleteMany($condition$$,$e$$=>{setImmediate(()=>{if($e$$)return $fn$$($e$$);$fn$$(null,!1)})}):$model$$.findOne($condition$$,{_id:1},
|
|
16
16
|
($error$$,$result$$)=>{setImmediate(()=>{if($error$$)return $fn$$($error$$);if(!$result$$)return $fn$$(null,!1);console.warn("object exists",$condition$$,"unique fields",$unique$$);$fn$$(null,!0)})})},postData=function($obj$$,$ctrl$$,$mainCallback$$,$options$$={}){const $post$$=$ctrl$$.dynamicPost||$ctrl$$.post;if(!$post$$)return $mainCallback$$();const $postOptions$$={...$ctrl$$.options,...$options$$};let $obj_created$$=$obj$$.toObject?utils.convertObjectIdsToStrings($obj$$.toObject()):{...$obj$$};
|
|
17
|
-
Object.keys($obj_created$$).forEach($key$$=>{let $p$$=$obj_created$$[$key$$];$p$$&&($p$$.toObject&&($obj_created$$[$key$$]=utils.convertObjectIdsToStrings($p$$.toObject())),_.isArray($p$$)&&($obj_created$$[$key$$]=$p$$.map($el$$=>$el$$?$el$$.toObject?utils.convertObjectIdsToStrings($el$$.toObject()):$el$$:$el$$)))});$ctrl$$.beforePost||($ctrl$$.beforePost=function($obj_created$$,$callback$$){$callback$$(null,null)});$ctrl$$.beforePost($obj_created$$,function($e$$){
|
|
18
|
-
|
|
19
|
-
$
|
|
20
|
-
|
|
21
|
-
$
|
|
22
|
-
$
|
|
23
|
-
$
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
$
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
17
|
+
Object.keys($obj_created$$).forEach($key$$=>{let $p$$=$obj_created$$[$key$$];$p$$&&($p$$.toObject&&($obj_created$$[$key$$]=utils.convertObjectIdsToStrings($p$$.toObject())),_.isArray($p$$)&&($obj_created$$[$key$$]=$p$$.map($el$$=>$el$$?$el$$.toObject?utils.convertObjectIdsToStrings($el$$.toObject()):$el$$:$el$$)))});$ctrl$$.beforePost||($ctrl$$.beforePost=function($obj_created$$,$callback$$){$callback$$(null,null)});$ctrl$$.beforePost($obj_created$$,function($e$$){if($e$$)return $mainCallback$$($e$$);
|
|
18
|
+
deletePost($obj_created$$.user_updated,$obj_created$$,async function($e$$,$_obj$$,$oldBooks$$){if($e$$)return $mainCallback$$($e$$);let $oldDanamicBook$$={};const $callback$$=async($e$$,$rs$$)=>{if($e$$){for(let $key$$ in $oldBooks$$)$oldBooks$$[$key$$].length>0&&await global.getModel($key$$.toLowerCase()).insertMany($oldBooks$$[$key$$]);if($oldDanamicBook$$)for(let $key$$ in $oldDanamicBook$$)!$oldBooks$$[$key$$]&&$oldDanamicBook$$[$key$$].length>0&&await global.getModel($key$$.toLowerCase()).insertMany($oldDanamicBook$$[$key$$])}$mainCallback$$($e$$,
|
|
19
|
+
$rs$$)};if($ctrl$$.dynamicDeletePost)try{$oldDanamicBook$$=await $ctrl$$.dynamicDeletePost($obj_created$$)}catch($e$$){return $callback$$($e$$.message||$e$$.error||$e$$)}setImmediate(async()=>{if($obj_created$$.trang_thai||$obj_created$$.trang_thai==0)$obj_created$$.trang_thai=$obj_created$$.trang_thai.toString();const $listinfo_code$$=$obj_created$$.listinfo_code;let $trang_thai$$;if($obj_created$$.trang_thai&&($listinfo_code$$&&($trang_thai$$=await trangthai.findOne({ma_ct:($listinfo_code$$||"").toUpperCase(),
|
|
20
|
+
ma_trang_thai:$obj_created$$.trang_thai})),$trang_thai$$||=await trangthai.findOne({ma_ct:($obj_created$$.ma_ct||"").toUpperCase(),ma_trang_thai:$obj_created$$.trang_thai}),!$trang_thai$$||!$trang_thai$$.post))return console.log("[controllerUtils][postData] tr\u1ea1ng th\u00e1i kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c kh\u00f4ng y\u00eau c\u1ea7u post d\u1eef li\u1ec7u",$listinfo_code$$,$obj_created$$.trang_thai),$callback$$();setImmediate(()=>{console.log("[controllerUtils][postData] run posting ...",
|
|
21
|
+
$ctrl$$.name,$obj_created$$.so_ct,$obj_created$$.trang_thai,$obj_created$$.listinfo_code,$e$$);$post$$($obj_created$$,function($e$$,$rs$$){setImmediate(()=>{if($e$$){let $msg_error$$=$e$$.message||$e$$.error||$e$$.toString();if($msg_error$$.indexOf("E11000 duplicate")>=0&&($msg_error$$.indexOf("id_ct_1_nh_dk_1")>=0||$msg_error$$.indexOf("id_ct_1_line_1")>=0))return $callback$$(null,$rs$$);console.error("[controllerUtils] [postData] error post data",$obj_created$$._id,$msg_error$$);deletePost($obj_created$$.user_updated,
|
|
22
|
+
$obj_created$$,async function($e_delete_post$$){if($e_delete_post$$)return console.error("error delete post",$e_delete_post$$),$callback$$($e_delete_post$$);if($ctrl$$.dynamicDeletePost)try{return await $ctrl$$.dynamicDeletePost($obj_created$$),$callback$$($e$$.message||$e$$.error||$e$$)}catch($e$$){return console.error("[dynamicDeletePost]",$e$$.message||$e$$.error||$e$$),$callback$$($e$$)}else $callback$$($e$$)})}else $callback$$(null,$rs$$)})},{...$postOptions$$})})})})})},pushNotification=($ctrl$$,
|
|
23
|
+
$_obj$$,$eventName$$="new",$old_obj$$=null,$justFireEvents$$=!1,$options$$={title:"",data:{}})=>{let $obj$$;$obj$$=$_obj$$.toObject?utils.convertObjectIdsToStrings($_obj$$.toObject()):{...$_obj$$};$obj$$._id&&($obj$$._id=$obj$$._id.toString());setImmediate(async()=>{var $channel_id_func_old_trang_thai$$=`${$ctrl$$.name.toLowerCase()}-${$eventName$$}`;$_obj$$.id_app&&($channel_id_func_old_trang_thai$$=`${$channel_id_func_old_trang_thai$$}-${$_obj$$.id_app}`);let $message$$=JSON.stringify($obj$$);try{await global.clientRedis.publish($channel_id_func_old_trang_thai$$,
|
|
24
|
+
$message$$)}catch($e$$){console.error("[controllerUtiles][pushNotification] fire event",$eventName$$,$e$$)}if($_obj$$.status){$options$$||={};var $exclude_token$$=$options$$.exclude_token,$trang_thai$$=($obj$$.trang_thai||($obj$$.progress==0?"0":$obj$$.progress)||"").toString();$old_obj$$&&!$justFireEvents$$&&($channel_id_func_old_trang_thai$$=($old_obj$$.trang_thai||($old_obj$$.progress==0?"0":$old_obj$$.progress)||"").toString(),$channel_id_func_old_trang_thai$$===$trang_thai$$&&($justFireEvents$$=
|
|
25
|
+
!0));var $listinfos_notifications_setting_users_receive_notification_v_options$$;($channel_id_func_old_trang_thai$$=$obj$$.listinfo_code)&&($listinfos_notifications_setting_users_receive_notification_v_options$$=await OptionsModel.find({id_app:$obj$$.id_app,id_func:$channel_id_func_old_trang_thai$$,option:{$exists:!0}},{option:1}).lean());$channel_id_func_old_trang_thai$$&&$listinfos_notifications_setting_users_receive_notification_v_options$$.length!=0||($listinfos_notifications_setting_users_receive_notification_v_options$$=
|
|
26
|
+
(await global.getModel("listinfo").find({api_code:$ctrl$$.name},{code:1}).lean()).map($a$$=>$a$$.code),$listinfos_notifications_setting_users_receive_notification_v_options$$.push($ctrl$$.name),$listinfos_notifications_setting_users_receive_notification_v_options$$=[...(new Set($listinfos_notifications_setting_users_receive_notification_v_options$$))],$channel_id_func_old_trang_thai$$={$in:$listinfos_notifications_setting_users_receive_notification_v_options$$},$listinfos_notifications_setting_users_receive_notification_v_options$$=
|
|
27
|
+
await OptionsModel.find({id_app:$obj$$.id_app,id_func:$channel_id_func_old_trang_thai$$,option:{$exists:!0}},{option:1}).lean());$listinfos_notifications_setting_users_receive_notification_v_options$$=$listinfos_notifications_setting_users_receive_notification_v_options$$.filter($v$$=>$v$$.option&&$v$$.option.users_receive_notification).map($v$$=>$v$$.option.users_receive_notification).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$listinfos_notifications_setting_users_receive_notification_v_options$$.length===
|
|
28
|
+
0&&($listinfos_notifications_setting_users_receive_notification_v_options$$=await Promise.all((($ctrl$$.options||{}).users_receive_notification_default||[]).map($n$$=>new Promise($resolve$$=>{setImmediate(async()=>{_.isFunction($n$$)?$resolve$$(await $n$$($obj$$)):$resolve$$($n$$)})}))));$listinfos_notifications_setting_users_receive_notification_v_options$$&&($listinfos_notifications_setting_users_receive_notification_v_options$$=$listinfos_notifications_setting_users_receive_notification_v_options$$.filter($u$$=>
|
|
29
|
+
!$u$$.trang_thai||$u$$.trang_thai.toString()===$trang_thai$$||$u$$.trang_thai.toString()==="delete"),$listinfos_notifications_setting_users_receive_notification_v_options$$=$listinfos_notifications_setting_users_receive_notification_v_options$$.filter($func_string_n$$=>{if(!$func_string_n$$.condition||!$func_string_n$$.condition.trim())return!0;$func_string_n$$=$func_string_n$$.condition;$func_string_n$$.indexOf("return ")<0&&($func_string_n$$=`return ${$func_string_n$$}`);try{return evalute($func_string_n$$,
|
|
30
|
+
{...$obj$$,master:$obj$$,data:$obj$$})}catch($e$$){return console.error("[controllerUtiles][pushNotification]",$e$$,$func_string_n$$),!1}}),$listinfos_notifications_setting_users_receive_notification_v_options$$.forEach(async $p$$=>{setImmediate(async()=>{let $_justFireEvents$$=$justFireEvents$$;$p$$.just_fire_events&&($_justFireEvents$$=$p$$.just_fire_events);let $notificationData$$={_id:$obj$$._id,trang_thai:$trang_thai$$,id_app:$obj$$.id_app,code:$obj$$.ma_ct||$ctrl$$.name,id_link:$obj$$.id_link||
|
|
31
|
+
$obj$$.id_product,code_link:$obj$$.code_link||$obj$$.colection_name_product,event:$eventName$$,action:$eventName$$.toUpperCase(),data:$options$$.data,key:$options$$.key,not_send_email:$p$$.not_send_email,justFireEvents:$_justFireEvents$$};if($justFireEvents$$||$eventName$$.toLowerCase()==="delete")$notificationData$$.title="",$notificationData$$.body="";else{try{$notificationData$$.body=$p$$.body?compileHtml($p$$.body,$obj$$):""}catch($e$$){$notificationData$$.body=$p$$.body,console.error("[controllerUtiles][pushNotification]",
|
|
32
|
+
$ctrl$$.name,"compileHtml body",$e$$,$obj$$)}try{$notificationData$$.title=stripHtmlTags(compileHtml($options$$.title||$p$$.title||$p$$.content||"",$obj$$))}catch($e$$){$notificationData$$.title=$options$$.title||$p$$.title||$p$$.content||"",console.error("[controllerUtiles][pushNotification]",$ctrl$$.name,"compileHtml title",$e$$,$obj$$)}}if($p$$.email_content)try{$notificationData$$.email_content=compileHtml($p$$.email_content,$obj$$)}catch($e$$){$notificationData$$.email_content=$p$$.email_content,
|
|
33
|
+
console.error("[controllerUtiles][pushNotification]",$ctrl$$.name,"compileHtml email_content",$e$$,$obj$$)}$notificationData$$.title||$notificationData$$.body||($exclude_token$$=null);let $users_will_receive$$=$p$$.users;$users_will_receive$$||=[];$options$$.users_will_receive&&$options$$.users_will_receive.length>0&&($users_will_receive$$=$users_will_receive$$.concat($options$$.users_will_receive));$p$$.send_phu_trach&&$obj$$.phu_trach&&($users_will_receive$$=$users_will_receive$$.concat([$obj$$.phu_trach]));
|
|
34
|
+
if($p$$.send_admin){var $admins_of_user_sandbox_us$$=(await Participant.find({id_app:$obj$$.id_app,admin:!0}).lean()).map($p$$=>$p$$.email);$users_will_receive$$=$users_will_receive$$.concat($admins_of_user_sandbox_us$$)}$p$$.send_attends&&$obj$$.attends&&($users_will_receive$$=$users_will_receive$$.concat($obj$$.attends));$p$$.group_id&&($admins_of_user_sandbox_us$$=(await Participant.find({id_app:$obj$$.id_app,group_id:$p$$.group_id}).lean()).map($u$$=>$u$$.email),$users_will_receive$$=$users_will_receive$$.concat($admins_of_user_sandbox_us$$));
|
|
35
|
+
$p$$.send_to_customer&&($obj$$.ma_kh||$obj$$.id_kh)&&($admins_of_user_sandbox_us$$=await mongoose.models.customer.getInfo($obj$$.id_app,{$or:[{ma_kh:$obj$$.ma_kh},{_id:$obj$$.id_kh}]},"of_user"))&&($users_will_receive$$=$users_will_receive$$.concat([$admins_of_user_sandbox_us$$]));$p$$.send_to_user_created?$users_will_receive$$=$users_will_receive$$.concat([$obj$$.user_created]):$p$$.send_to_user_created===!1&&($users_will_receive$$=$users_will_receive$$.filter($u$$=>$u$$!==$obj$$.user_created));
|
|
36
|
+
if($p$$.handle_receivers){$admins_of_user_sandbox_us$$={obj:$obj$$,users_will_receive:$users_will_receive$$,utils};try{let $str_func$$=$p$$.handle_receivers;if($str_func$$.indexOf("async ")<0){$str_func$$.indexOf("return ")<0&&($str_func$$=`return ${$str_func$$}`);let $cust_users_will_receive$$=await evalute(`return (async ()=>{
|
|
37
37
|
try{
|
|
38
38
|
${$str_func$$}
|
|
39
39
|
}catch(e){
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
const historyHandler=($
|
|
2
|
-
|
|
1
|
+
const {difference}=require("../libs/utils"),historyHandler=($ctrl$$,$req$$,$mainCallback$$)=>{var $id_query$$=$req$$.params.id;$id_query$$={id_app:$req$$.user.current_id_app,$or:[{"data.id":$id_query$$},{"data.data.id_link":$id_query$$},{"data.oldData.id_link":$id_query$$}]};let $actions$$=$req$$.query.actions;$actions$$?($actions$$=$actions$$.split(","),$id_query$$.action={$in:$actions$$,$ne:"GET"}):$id_query$$.action={$ne:"GET"};global.getModel("log").find($id_query$$).lean().then(async function($rs$$){await $rs$$.asyncJoinModel2($req$$.user.current_id_app,
|
|
2
|
+
"participant",{where:{user_created:"email"},fields:[{name_user_created:"name"}]});await $rs$$.filter($r$$=>$r$$.data_changed&&($r$$.data_changed.trang_thai||($r$$.data_changed.progress||"").toString())).map($r$$=>$r$$.data_changed).asyncJoinModel2($req$$.user.current_id_app,"trangthai",{where:$item$$=>({ma_trang_thai:$item$$.trang_thai||($item$$.progress||"").toString(),ma_ct:($ctrl$$.name||"").toUpperCase()}),fields:[{ten_trang_thai:"ten_trang_thai"}]});setImmediate(()=>{$rs$$.forEach($r$$=>{$r$$.ip=
|
|
3
|
+
$r$$.ip||""});for(var $log_rows$$ of $rs$$){$log_rows$$.data?.newData?.toObject&&($log_rows$$.data.newData=$log_rows$$.data?.newData?.toObject());$log_rows$$.data?.oldData?.toObject&&($log_rows$$.data.oldData=$log_rows$$.data?.oldData?.toObject());let $data_changed$$=$log_rows$$.data_changed||($log_rows$$.data?difference($log_rows$$.data.newData,$log_rows$$.data.oldData):{});delete $data_changed$$.is_full_data;delete $data_changed$$.collection_name;delete $data_changed$$.date_updated;delete $data_changed$$.user_updated;
|
|
4
|
+
delete $data_changed$$.approve_data;$log_rows$$.data_changed=$data_changed$$}$log_rows$$=$rs$$.map($r$$=>$r$$.data?.data).filter($r$$=>$r$$);$ctrl$$.onView($req$$.user,$log_rows$$,$e$$=>{if($e$$)return console.error("[historyHandler] log onview",$e$$),$e$$.error?$mainCallback$$($e$$):$mainCallback$$({error:$e$$.message||$e$$});$mainCallback$$(null,$rs$$)},{req:$req$$})})}).catch($e$$=>{console.error("[historyHandler] history query",$e$$);return $e$$.error?$mainCallback$$($e$$):$mainCallback$$({error:$e$$.message||
|
|
5
|
+
$e$$})})};module.exports=historyHandler;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
const moment=require("moment"),logHandler=($ctrl$$,$req$$,$callback$$)=>{var $name_query$$=$ctrl$$.name,$action_den_ngay$$=$req$$.params.action.toUpperCase();$name_query$$={id_func:$name_query$$,id_app:$req$$.user.current_id_app};$action_den_ngay$$!=="ALL"&&($name_query$$.action=$action_den_ngay$$);if($req$$.query.tu_ngay){var $date_created_tu_ngay$$=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate();$date_created_tu_ngay$$={$gte:$date_created_tu_ngay$$}}$req$$.query.den_ngay&&
|
|
2
|
-
moment(new Date($req$$.query.den_ngay)).endOf("date").toDate(),$date_created_tu_ngay$$?$date_created_tu_ngay$$.$lte=$action_den_ngay$$:$date_created_tu_ngay$$={$lte:$action_den_ngay$$});$date_created_tu_ngay$$&&($name_query$$.date_created=$date_created_tu_ngay$$);$req$$.query.user&&($name_query$$.user_created=$req$$.query.user);global.getModel("log").find($name_query$$).lean().then(function($rs$$){setImmediate(()=>{
|
|
3
|
-
|
|
1
|
+
const moment=require("moment"),{difference}=require("../libs/utils"),logHandler=($ctrl$$,$req$$,$callback$$)=>{var $name_query$$=$ctrl$$.name,$action_den_ngay$$=$req$$.params.action.toUpperCase();$name_query$$={id_func:$name_query$$,id_app:$req$$.user.current_id_app};$action_den_ngay$$!=="ALL"&&($name_query$$.action=$action_den_ngay$$);if($req$$.query.tu_ngay){var $date_created_tu_ngay$$=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate();$date_created_tu_ngay$$={$gte:$date_created_tu_ngay$$}}$req$$.query.den_ngay&&
|
|
2
|
+
($action_den_ngay$$=moment(new Date($req$$.query.den_ngay)).endOf("date").toDate(),$date_created_tu_ngay$$?$date_created_tu_ngay$$.$lte=$action_den_ngay$$:$date_created_tu_ngay$$={$lte:$action_den_ngay$$});$date_created_tu_ngay$$&&($name_query$$.date_created=$date_created_tu_ngay$$);$req$$.query.user&&($name_query$$.user_created=$req$$.query.user);global.getModel("log").find($name_query$$).lean().then(function($rs$$){setImmediate(async()=>{for(var $log_rows$$ of $rs$$){let $data_changed$$=$log_rows$$.data_changed||
|
|
3
|
+
($log_rows$$.data?difference($log_rows$$.data.newData,$log_rows$$.data.oldData):{});delete $data_changed$$.is_full_data;delete $data_changed$$.collection_name;delete $data_changed$$.date_updated;delete $data_changed$$.user_updated;delete $data_changed$$.approve_data;$log_rows$$.data_changed=$data_changed$$}await $rs$$.asyncJoinModel2($req$$.user.current_id_app,"participant",{where:{user_created:"email"},fields:[{name_user_created:"name"}]});await $rs$$.filter($r$$=>$r$$.data_changed&&($r$$.data_changed.trang_thai||
|
|
4
|
+
($r$$.data_changed.progress||"").toString())).map($r$$=>$r$$.data_changed).asyncJoinModel2($req$$.user.current_id_app,"trangthai",{where:$item$$=>({ma_trang_thai:$item$$.trang_thai||($item$$.progress||"").toString(),ma_ct:($ctrl$$.name||"").toUpperCase()}),fields:[{ten_trang_thai:"ten_trang_thai"}]});$log_rows$$=$rs$$.map($r$$=>$r$$.data?.data).filter($r$$=>$r$$);$ctrl$$.onView($req$$.user,$log_rows$$,$e$$=>{setImmediate(()=>{if($e$$)return console.error("[loghandler] log onview",$e$$),$e$$.error?
|
|
5
|
+
$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$callback$$(null,$rs$$)})},{req:$req$$})})}).catch($e$$=>{console.error("[loghandler] logs query",$e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})})};module.exports=logHandler;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
const {onAfterCommit}=require("./sessionContext"),_=require("lodash"),moment=require("moment"),processingQueue=new Map,debouncedProcessors=new Map,DEBOUNCE_WAIT_MS=1E4,_runActualCalculation=async $id_app$$=>{const $sokho$$=global.getModel("sokho"),$sokhotc$$=global.getModel("sokhotc");var $dateSet_minDate_query$$=processingQueue.get($id_app$$);if($dateSet_minDate_query$$&&$dateSet_minDate_query$$.size!==0){processingQueue.delete($id_app$$);debouncedProcessors.delete($id_app$$);var $allDates_maxDate$$=
|
|
2
2
|
Array.from($dateSet_minDate_query$$).map($d$$=>moment($d$$,"YYYY-MM-DD"));$dateSet_minDate_query$$=moment.min($allDates_maxDate$$).startOf("day").toDate();$allDates_maxDate$$=moment.max($allDates_maxDate$$).endOf("day").toDate();console.log(`[sokhotc] \ud83d\udd25 B\u1eaft \u0111\u1ea7u ch\u1ea1y debounced cho ${$id_app$$}. D\u1ea3i ng\u00e0y: ${moment($dateSet_minDate_query$$).format("YYYY-MM-DD")} T\u1edaI ${moment($allDates_maxDate$$).format("YYYY-MM-DD")}`);try{$dateSet_minDate_query$$={id_app:$id_app$$,
|
|
3
|
-
ngay_ct:{$gte:$dateSet_minDate_query$$,$lte:$allDates_maxDate$$}};await $sokhotc$$.deleteMany($dateSet_minDate_query$$);let $data_sokho$$=await $sokho$$.find($dateSet_minDate_query$$).lean();if($data_sokho$$&&$data_sokho$$.length!==0){$
|
|
4
|
-
|
|
3
|
+
ngay_ct:{$gte:$dateSet_minDate_query$$,$lte:$allDates_maxDate$$}};await $sokhotc$$.deleteMany($dateSet_minDate_query$$);let $data_sokho$$=await $sokho$$.find($dateSet_minDate_query$$).lean();if($data_sokho$$&&$data_sokho$$.length!==0){var $data_sokho_tc$$=await $data_sokho$$.asyncGroupBy("id_app ma_dvcs ma_ct ngay_ct ma_vt ma_dvt ma_lo han_sd ma_tt1 ma_tt2 ma_tt3 ma_kho ma_nt ty_gia ma_sp ma_cp ma_cong_doan".split(" "),"sl_nhap sl_xuat sl_nhap_qd sl_xuat_qd tien_hang_nt tien_hang tien_ck_nt tien_ck tien_phi_nt tien_phi tien_cp_nt tien_cp tien_hang_nk tien_hang_nk_nt tien_thue_nk tien_thue_nk_nt tien_nhap_nt tien_nhap tien_xuat tien_xuat_nt tien tien_nt tien_hang_ct_nt tien_hang_ct tien_ct tien_ct_nt tien_thue_nt tien_thue sl_sp".split(" ")),
|
|
4
|
+
$rs$$=await $sokhotc$$.insertMany($data_sokho_tc$$);console.log(`[sokhotc] \u2705 Ho\u00e0n th\u00e0nh. S\u1ed1 b\u1ea3n ghi sokho \u0111\u00e3 x\u1eed l\u00fd ${$data_sokho$$.length}, \u0111\u00e3 t\u1ea1o ${$rs$$.length} b\u1ea3n ghi sokhotc cho ${$id_app$$}.`)}else console.log(`[sokhotc] Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u sokho cho ${$id_app$$} trong d\u1ea3i ng\u00e0y.`)}catch($e$$){console.error(`[sokhotc] \u274c L\u1ed7i khi ch\u1ea1y debounced cho ${$id_app$$}:`,$e$$)}}else console.log(`[sokhotc] Debounced run cho ${$id_app$$} kh\u00f4ng c\u00f3 ng\u00e0y n\u00e0o trong h\u00e0ng \u0111\u1ee3i.`)},
|
|
5
5
|
createSokhoTC=async function($id_app$$,$tu_ngay$$,$den_ngay$$){onAfterCommit(()=>{try{processingQueue.has($id_app$$)||processingQueue.set($id_app$$,new Set);const $dateSet$$=processingQueue.get($id_app$$),$m_tu_ngay$$=moment($tu_ngay$$),$m_den_ngay$$=moment($den_ngay$$||$tu_ngay$$);let $currentDate$$=$m_tu_ngay$$.clone().startOf("day");for(;$currentDate$$.isSameOrBefore($m_den_ngay$$,"day");)$dateSet$$.add($currentDate$$.format("YYYY-MM-DD")),$currentDate$$.add(1,"day");debouncedProcessors.has($id_app$$)||
|
|
6
6
|
(console.log(`[sokhotc] \u23f3 T\u1ea1o debouncer m\u1edbi cho ${$id_app$$} (delay ${DEBOUNCE_WAIT_MS}ms)`),debouncedProcessors.set($id_app$$,_.debounce(()=>{_runActualCalculation($id_app$$)},DEBOUNCE_WAIT_MS,{leading:!1,trailing:!0})));debouncedProcessors.get($id_app$$)()}catch($e$$){console.error(`[sokhotc] L\u1ed7i khi l\u00ean l\u1ecbch (scheduling) cho ${$id_app$$}:`,$e$$)}},"createSokhoTC");return Promise.resolve()};exports.createSokhoTC=createSokhoTC;
|
|
7
7
|
const processingQueueSocai=new Map,debouncedProcessorsSocai=new Map,DEBOUNCE_WAIT_MS_SOCAI=1E4,_runActualCalculationSocai=async $id_app$$=>{const $socai$$=global.getModel("socai"),$socaitc$$=global.getModel("socaitc"),$socaitt$$=global.getModel("socaitt");var $dateSet$jscomp$2_minDate$jscomp$1_query$$=processingQueueSocai.get($id_app$$);if($dateSet$jscomp$2_minDate$jscomp$1_query$$&&$dateSet$jscomp$2_minDate$jscomp$1_query$$.size!==0){processingQueueSocai.delete($id_app$$);debouncedProcessorsSocai.delete($id_app$$);
|
|
8
8
|
var $allDates$$=Array.from($dateSet$jscomp$2_minDate$jscomp$1_query$$).map($d$$=>moment($d$$,"YYYY-MM-DD"));$dateSet$jscomp$2_minDate$jscomp$1_query$$=moment.min($allDates$$).startOf("day").toDate();var $maxDate$$=moment.max($allDates$$).endOf("day").toDate();$allDates$$=`${moment($dateSet$jscomp$2_minDate$jscomp$1_query$$).format("YYYY-MM-DD")} T\u1edaI ${moment($maxDate$$).format("YYYY-MM-DD")}`;console.log(`[socai] \ud83d\udd25 B\u1eaft \u0111\u1ea7u ch\u1ea1y debounced cho ${$id_app$$}. D\u1ea3i ng\u00e0y: ${$allDates$$}`);
|
|
9
9
|
try{$dateSet$jscomp$2_minDate$jscomp$1_query$$={id_app:$id_app$$,ngay_ct:{$gte:$dateSet$jscomp$2_minDate$jscomp$1_query$$,$lte:$maxDate$$}};await Promise.all([$socaitc$$.deleteMany($dateSet$jscomp$2_minDate$jscomp$1_query$$),$socaitt$$.deleteMany($dateSet$jscomp$2_minDate$jscomp$1_query$$)]);let $raw_data_socai$$=await $socai$$.find($dateSet$jscomp$2_minDate$jscomp$1_query$$).lean();if($raw_data_socai$$&&$raw_data_socai$$.length!==0){await $raw_data_socai$$.asyncJoinModel2($id_app$$,"account",{where:{tk_no:"tk"},
|
|
10
10
|
fields:{tk_cn_no:"tk_cn"}});await $raw_data_socai$$.asyncJoinModel2($id_app$$,"account",{where:{tk_co:"tk"},fields:{tk_cn_co:"tk_cn"}});for(let $item$$ of $raw_data_socai$$)$item$$.tk_cn_no||($item$$.ma_kh_no=""),$item$$.tk_cn_co||($item$$.ma_kh_co="");var $data_socaitc$$=await $raw_data_socai$$.asyncGroupBy("id_app ma_dvcs ma_ct ma_gd ngay_ct tk_no tk_co ma_kh_no ma_kh_co ma_kho ma_nt ty_gia ma_bp id_lenhsx ma_phi ma_hd ma_dt ma_nv ma_sp ma_cp ma_kenh ma_cong_doan".split(" "),["tien","tien_nt"]),
|
|
11
|
-
$data_socaitt$$=await $raw_data_socai$$.asyncGroupBy("id_app ma_dvcs ma_ct ma_gd ngay_ct tk_no tk_co ma_nt ty_gia ma_bp ma_phi ma_hd ma_dt ma_nv".split(" "),["tien","tien_nt"]),[$rs_tc$$,$rs_tt$$]=await Promise.all([$data_socaitc$$.length>0?$socaitc$$.insertMany($data_socaitc$$):[],$data_socaitt$$.length>0?$socaitt$$.insertMany($data_socaitt$$):[]]);console.log(`[socai] \u2705 Ho\u00e0n th\u00e0nh ${$id_app$$}.
|
|
11
|
+
$data_socaitt$$=await $raw_data_socai$$.asyncGroupBy("id_app ma_dvcs ma_ct ma_gd ngay_ct tk_no tk_co ma_nt ty_gia ma_bp ma_phi ma_hd ma_dt ma_nv".split(" "),["tien","tien_nt"]),[$rs_tc$$,$rs_tt$$]=await Promise.all([$data_socaitc$$.length>0?$socaitc$$.insertMany($data_socaitc$$):[],$data_socaitt$$.length>0?$socaitt$$.insertMany($data_socaitt$$):[]]);console.log(`[socai] \u2705 Ho\u00e0n th\u00e0nh ${$id_app$$}. \u0110\u00e3 x\u1eed l\u00fd ${$raw_data_socai$$.length} b\u1ea3n ghi socai, \u0110\u00e3 t\u1ea1o: ${$rs_tc$$.length} (socaitc), ${$rs_tt$$.length} (socaitt).`)}else console.log(`[socai] Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u socai cho ${$id_app$$} trong d\u1ea3i ng\u00e0y.`)}catch($e$$){console.error(`[socai] \u274c L\u1ed7i khi ch\u1ea1y debounced cho ${$id_app$$} (${$allDates$$}):`,
|
|
12
12
|
$e$$)}}else console.log(`[socai] Debounced run cho ${$id_app$$} kh\u00f4ng c\u00f3 ng\u00e0y n\u00e0o.`)},createSocaiTC=async function($id_app$$,$tu_ngay$$,$den_ngay$$){onAfterCommit(()=>{try{processingQueueSocai.has($id_app$$)||processingQueueSocai.set($id_app$$,new Set);const $dateSet$$=processingQueueSocai.get($id_app$$),$m_tu_ngay$$=moment($tu_ngay$$),$m_den_ngay$$=moment($den_ngay$$||$tu_ngay$$);let $currentDate$$=$m_tu_ngay$$.clone().startOf("day");for(;$currentDate$$.isSameOrBefore($m_den_ngay$$,
|
|
13
13
|
"day");)$dateSet$$.add($currentDate$$.format("YYYY-MM-DD")),$currentDate$$.add(1,"day");debouncedProcessorsSocai.has($id_app$$)||(console.log(`[socai] \u23f3 T\u1ea1o debouncer m\u1edbi cho ${$id_app$$} (delay ${DEBOUNCE_WAIT_MS_SOCAI}ms)`),debouncedProcessorsSocai.set($id_app$$,_.debounce(()=>{_runActualCalculationSocai($id_app$$)},DEBOUNCE_WAIT_MS_SOCAI,{leading:!1,trailing:!0})));debouncedProcessorsSocai.get($id_app$$)()}catch($e$$){console.error(`[socai] L\u1ed7i khi l\u00ean l\u1ecbch (scheduling) cho ${$id_app$$}:`,
|
|
14
14
|
$e$$)}},"createSokhoTC");return Promise.resolve()};exports.createSocaiTC=createSocaiTC;
|
package/server/libs/post-book.js
CHANGED
|
@@ -4,19 +4,20 @@ $resolve$$($details$$)})};
|
|
|
4
4
|
post.prototype.remove=function($callback$$=()=>{}){let $master$$=this.master;$master$$&&$master$$.toObject&&($master$$=$master$$.toObject());if(!$master$$._id)return $callback$$();let $model_book$$=this.model_book,$query_delete$$={id_ct:$master$$._id.toString(),id_app:$master$$.id_app};this.options.queryDelete&&($query_delete$$={...$query_delete$$,...this.options.queryDelete,id_app:$master$$.id_app});async.parallel({sks:$callback$$=>{setImmediate(()=>{$model_book$$.modelName.toLowerCase()==="sokho"?
|
|
5
5
|
global.getModel("sokho").find({id_ct:$master$$._id.toString()}).lean().then(function($sks$$){$callback$$(null,$sks$$)}).catch($e$$=>{$callback$$($e$$)}):$callback$$(null,[])})}},($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$model_book$$.deleteMany($query_delete$$,function($error$$){if($error$$)return $callback$$($error$$);$rs$$.sks.length>0&&tontucthoi.tinhTonTucThoi($rs$$.sks,$e$$=>{$e$$&&console.error("[post-book] [\u0110\u00e3 t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi sau khi xo\u00e1 d\u1eef li\u1ec7u sokho c\u1ee7a v\u1eadt t\u01b0]",
|
|
6
6
|
$e$$)});$callback$$()})})};
|
|
7
|
-
post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return console.error("details not exists"),$callback$$(null);if(!this.master||!this.master._id)return console.error("[postbook] master is not exists",this.master),$callback$$(null);let $master$$=this.master;$master$$.toObject&&($master$$=$master$$.toObject());let $details$$=await this.runPrepare(this.prepare,this.details),$model_book$$=this.model_book;if($model_book$$.modelName.toLowerCase()==="tdttco"){var $
|
|
8
|
-
{_id:1,tat_toan:1}).lean();if($
|
|
9
|
-
{_id:1,tat_toan:1}).lean(),$
|
|
10
|
-
{let $tdtt$$=await global.getModel("tdttco").findOne({_id:$detail$$.id_tdtt},{_id:1}).lean();!$tdtt$$&&($tdtt$$=await global.getModel("tdttco").findOne({id_ct:$detail$$.id_hd},{_id:1}).lean())&&($detail$$.id_tdtt=$tdtt$$._id.toString())})()));$model_book$$.modelName.toLowerCase()==="tdttno_tt"&&await Promise.all($details$$.filter($d$$=>$d$$.id_hd&&$d$$.id_tdtt).map($detail$$=>(async()=>{let $tdtt$$=
|
|
11
|
-
await global.getModel("tdttno").findOne({id_ct:$detail$$.id_hd},{_id:1}).lean())&&($detail$$.id_tdtt=$tdtt$$._id.toString())})()));if($model_book$$.modelName.toLowerCase()==="sokho"||$model_book$$.modelName.toLowerCase()==="sokhott"
|
|
12
|
-
|
|
13
|
-
0)*$detail$$.he_so_qd)});$model_book$$.modelName.toLowerCase()==="sokhokhongton"&&(await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>$d$$.tg_tk==0),await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||
|
|
14
|
-
1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))}));$model_book$$.modelName.toLowerCase()==="sokhonpp"&&(await $details$$.asyncJoinModel2($master$$.id_app,
|
|
7
|
+
post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return console.error("details not exists"),$callback$$(null);if(!this.master||!this.master._id)return console.error("[postbook] master is not exists",this.master),$callback$$(null);let $master$$=this.master;$master$$.toObject&&($master$$=$master$$.toObject());let $details$$=await this.runPrepare(this.prepare,this.details),$model_book$$=this.model_book;if($model_book$$.modelName.toLowerCase()==="tdttco"){var $ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=await global.getModel("tdttco").find({id_ct:$master$$._id.toString()},
|
|
8
|
+
{_id:1,tat_toan:1}).lean();if($ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.length>0){if($ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.filter($t$$=>$t$$.tat_toan).length>0)return $callback$$(null);$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.map($t$$=>$t$$._id.toString());if(await global.getModel("tdttco_tt").findOne({id_tdtt:{$in:$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$}}))return $callback$$(null)}}if($model_book$$.modelName.toLowerCase()==="tdttno"&&
|
|
9
|
+
($ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=await global.getModel("tdttno").find({id_ct:$master$$._id.toString()},{_id:1,tat_toan:1}).lean(),$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.length>0)){if($ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.filter($t$$=>$t$$.tat_toan).length>0)return $callback$$(null);$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.map($t$$=>$t$$._id.toString());if(await global.getModel("tdttno_tt").findOne({id_tdtt:{$in:$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$}}))return $callback$$(null)}$model_book$$.modelName.toLowerCase()===
|
|
10
|
+
"tdttco_tt"&&await Promise.all($details$$.filter($d$$=>$d$$.id_hd&&$d$$.id_tdtt).map($detail$$=>(async()=>{let $tdtt$$=await global.getModel("tdttco").findOne({_id:$detail$$.id_tdtt},{_id:1}).lean();!$tdtt$$&&($tdtt$$=await global.getModel("tdttco").findOne({id_ct:$detail$$.id_hd},{_id:1}).lean())&&($detail$$.id_tdtt=$tdtt$$._id.toString())})()));$model_book$$.modelName.toLowerCase()==="tdttno_tt"&&await Promise.all($details$$.filter($d$$=>$d$$.id_hd&&$d$$.id_tdtt).map($detail$$=>(async()=>{let $tdtt$$=
|
|
11
|
+
await global.getModel("tdttno").findOne({_id:$detail$$.id_tdtt},{_id:1}).lean();!$tdtt$$&&($tdtt$$=await global.getModel("tdttno").findOne({id_ct:$detail$$.id_hd},{_id:1}).lean())&&($detail$$.id_tdtt=$tdtt$$._id.toString())})()));if($model_book$$.modelName.toLowerCase()==="sokho"||$model_book$$.modelName.toLowerCase()==="sokhott"||$model_book$$.modelName.toLowerCase()==="sokhonpp")if($ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=[...(new Set($details$$.map($d$$=>$d$$.ma_kho||$master$$.ma_kho)))],$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=
|
|
12
|
+
await global.getModel("dmkho").findOne({id_app:$master$$.id_app,lock:!0,ma_kho:{$in:$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$}}).lean())return $callback$$(`Kho ${$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.ten_kho} \u0111\u00e3 b\u1ecb kho\u00e1`);if($model_book$$.modelName.toLowerCase()==="sokho"||$model_book$$.modelName.toLowerCase()==="sokhott")await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>$d$$.tg_tk),await $details$$.asyncJoinModel2($master$$.id_app,
|
|
15
13
|
global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
$
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
$
|
|
22
|
-
$
|
|
14
|
+
($detail$$.sl_xuat||0)*$detail$$.he_so_qd,$detail$$.sl_nhap_qd=($detail$$.sl_nhap||0)*$detail$$.he_so_qd)});$model_book$$.modelName.toLowerCase()==="sokhokhongton"&&(await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>$d$$.tg_tk==0),await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=
|
|
15
|
+
$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))}));
|
|
16
|
+
$model_book$$.modelName.toLowerCase()==="sokhonpp"&&(await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),
|
|
17
|
+
$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,round))}));if($model_book$$.modelName.toLowerCase()==="vatra"||$model_book$$.modelName.toLowerCase()==="vatvao")if($ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=await Promise.all($details$$.filter($r$$=>$r$$.so_hd&&$r$$.so_hd.toUpperCase()!==($master$$.ma_ct||
|
|
18
|
+
"").toUpperCase()).map($detail$$=>(async()=>{let $v$$=await $model_book$$.findOne({id_app:$master$$.id_app,so_hd:$detail$$.so_hd,ma_kh:$detail$$.ma_kh||$master$$.ma_kh,so_seri:$detail$$.so_seri,ky_hieu_hoa_don:$detail$$.ky_hieu_hoa_don,id_ct:{$ne:$master$$._id.toString()}});return $v$$?$v$$.so_hd:""})())),$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$=$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.filter($r$$=>$r$$),$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.length>0)return $callback$$(`S\u1ed1 ho\u00e1 \u0111\u01a1n ${$ds_kho_kho_locked_rs$jscomp$1_tdtts_tdtts$$.join(",")} \u0111\u00e3 t\u1ed3n t\u1ea1i`);
|
|
19
|
+
$details$$=$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();$detail$$.ma_ct=$master$$.ma_ct;$detail$$.so_ct=$master$$.so_ct;$detail$$.ngay_ct=$master$$.ngay_ct;for(let $attr$$ in $model_book$$.schema.paths)if($attr$$!="id_ct"&&$attr$$!="_id"&&$attr$$!="__v"&&$attr$$!="date_updated"&&$attr$$!="date_created"){let $v$$=$detail$$[$attr$$];$v$$!==void 0&&$v$$!==null&&$v$$!==""||$v$$===0||$master$$[$attr$$]===void 0||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;
|
|
20
|
+
delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;return $detail$$});const $self$$=this;$self$$.remove($error$$=>{if($error$$)return console.error("[postBook] error delete data post",$error$$.error||$error$$.message||$error$$),$callback$$($error$$);if($details$$.length==0)return $callback$$(null,[]);$model_book$$.create($details$$,async($e$$,$rs$$)=>{if($e$$){console.error("[postBook] \u0110\u00e3 c\u00f3 l\u1ed7i khi postdata",$e$$.message||$e$$.error||$e$$,$master$$.ma_ct,$master$$.so_ct);
|
|
21
|
+
var $contr_msg_error$$=$e$$.message||$e$$.error||$e$$.toString();$contr_msg_error$$.indexOf("E11000 duplicate")>=0&&$contr_msg_error$$.indexOf("id_ct_1_line_1")>=0?($rs$$=await $model_book$$.find({id_ct:$master$$._id.toString()}),$rs$$.length>0?$callback$$(null,$rs$$):(console.error("[postBook] Error save data post",$e$$.message||$e$$.error||$e$$),$self$$.remove(()=>{$callback$$($e$$)}))):(console.error("[postBook] Error save data post",$e$$.message||$e$$.error||$e$$),$self$$.remove(()=>{$callback$$($e$$)}))}else $master$$.ma_ct?
|
|
22
|
+
($contr_msg_error$$=global.controllers[$master$$.ma_ct.toUpperCase()])?await $contr_msg_error$$.model.findById($master$$._id)?$callback$$(null,$rs$$):(console.error("Ch\u1ee9ng t\u1eeb kh\u00f4ng t\u1ed3n t\u1ea1i. X\u00f3a s\u1ed5 s\u00e1ch",$master$$._id),$self$$.remove(()=>{$callback$$("Ch\u1ee9ng t\u1eeb kh\u00f4ng t\u1ed3n t\u1ea1i")})):(console.log("not found controller",$master$$.ma_ct.toUpperCase()),$callback$$(null,$rs$$)):$callback$$(null,$rs$$),$rs$$&&$model_book$$.modelName.toLowerCase()===
|
|
23
|
+
"sokho"&&setImmediate(()=>{tontucthoi.tinhTonTucThoi($rs$$,$e$$=>{$e$$&&console.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",$rs$$,$e$$)})})})})};module.exports=post;
|
|
@@ -8,19 +8,20 @@ $resolve$$($details$$)})};
|
|
|
8
8
|
post.prototype.remove=function($callback$$=()=>{}){let $master$$=this.master;$master$$&&$master$$.toObject&&($master$$=$master$$.toObject());if(!$master$$._id)return $callback$$();let $query_delete$$={id_ct:$master$$._id.toString(),id_app:$master$$.id_app};this.options.queryDelete&&($query_delete$$={...$query_delete$$,...this.options.queryDelete,id_app:$master$$.id_app});async.series({sks:$callback$$=>{setImmediate(()=>{global.getModel("sokho").find({id_ct:$master$$._id.toString()}).lean().then(function($sks$$){$callback$$(null,$sks$$)}).catch($e$$=>
|
|
9
9
|
{$callback$$($e$$)})})}},async($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);await global.getModel("sokho").deleteMany($query_delete$$);await global.getModel("sokhonpp").deleteMany($query_delete$$);await global.getModel("sokhokhongton").deleteMany($query_delete$$);$rs$$.sks.length>0&&tontucthoi.tinhTonTucThoi($rs$$.sks,$e$$=>{$e$$&&console.error("[post-sokho] T\u00ednh t\u1ed3n t\u1ee9c th\u1eddi sau khi xo\u00e1 sokho c\u1ee7a v\u1eadt t\u01b0",$e$$)});$callback$$()})};
|
|
10
10
|
post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return console.error("details not exists"),$callback$$(null);if(!this.master||!this.master._id)return console.error("masters not exists",this.master),$callback$$(null);let $master$$=this.master;$master$$.toObject&&($master$$=$master$$.toObject());let $details$$=await this.runPrepare(this.prepare,this.details);await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",setFields:($item$$,$ref$$)=>{$item$$.tk_vt||($item$$.tk_vt=
|
|
11
|
-
$ref$$.tk_vt);$item$$.tk_gv||($item$$.tk_gv=$ref$$.tk_gv);$item$$.tg_tk=$ref$$.tg_tk;$item$$.xk_nvl=$ref$$.xk_nvl}});var $
|
|
12
|
-
$
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
$
|
|
16
|
-
$
|
|
17
|
-
|
|
18
|
-
$
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
$
|
|
23
|
-
|
|
11
|
+
$ref$$.tk_vt);$item$$.tk_gv||($item$$.tk_gv=$ref$$.tk_gv);$item$$.tg_tk=$ref$$.tg_tk;$item$$.xk_nvl=$ref$$.xk_nvl}});var $ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=[...(new Set($details$$.map($d$$=>$d$$.ma_kho||$master$$.ma_kho)))];if($ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=await global.getModel("dmkho").findOne({id_app:$master$$.id_app,lock:!0,ma_kho:{$in:$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$}}).lean())return $callback$$(`Kho ${$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$.ten_kho} \u0111\u00e3 b\u1ecb kho\u00e1`);
|
|
12
|
+
$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=$details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.nxt==2);for(var $i$jscomp$1_i$$=0;$i$jscomp$1_i$$<$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$.length;$i$jscomp$1_i$$++)$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].dinh_muc_nvl=await dinhmucsx($master$$.id_app,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].ma_vt,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].ma_tt1,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].sl_xuat,
|
|
13
|
+
$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].ma_dvt);$details$$=$details$$.filter($d$$=>$d$$.tg_tk||$d$$.dinh_muc_nvl&&$d$$.dinh_muc_nvl.length>0);$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=$details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.dinh_muc_nvl&&$p$$.dinh_muc_nvl.length>0);for($i$jscomp$1_i$$=0;$i$jscomp$1_i$$<$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$.length;$i$jscomp$1_i$$++){const $p$$=$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$];let $he_so_qd$$=
|
|
14
|
+
1,$qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);let $sl_sp$$=$p$$.sl_xuat*$he_so_qd$$;$p$$.dinh_muc_nvl=$p$$.dinh_muc_nvl.map($d$$=>{$d$$.nxt=$p$$.nxt;$d$$.ma_sp=$p$$.ma_vt;$d$$.sl_sp=$sl_sp$$;$d$$.ma_tt1_sp=$p$$.ma_tt1;$d$$.ma_tt2_sp=$p$$.ma_tt2;$d$$.ma_tt3_sp=$p$$.ma_tt3;$d$$.ma_kho=$p$$.ma_kho;return $d$$});$p$$.dinh_muc_nvl=$p$$.dinh_muc_nvl.filter($p$$=>$p$$.tg_tk)}$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=
|
|
15
|
+
$details$$.filter($p$$=>!$p$$.xk_nvl||!$p$$.dinh_muc_nvl||$p$$.dinh_muc_nvl.length===0);$i$jscomp$1_i$$=$details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.dinh_muc_nvl&&$p$$.dinh_muc_nvl.length>0).map($p$$=>$p$$.dinh_muc_nvl).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$details$$=[...$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$,...$i$jscomp$1_i$$];await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]});
|
|
16
|
+
$details$$.forEach($detail$$=>{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||
|
|
17
|
+
0)*$detail$$.he_so_qd,round))});let $nam$$=(new Date($master$$.ngay_ct)).getFullYear(),$thang$$=(new Date($master$$.ngay_ct)).getMonth()+1;await new Promise($rs$$=>{async.map($details$$.filter($p$$=>$p$$.tg_tk&&($p$$.sl_xuat&&!$p$$.px_gia_dd||$p$$.sl_nhap&&$p$$.pn_gia_tb)&&$p$$.sl_xuat),($p$$,$callback$$)=>{setImmediate(async()=>{let $he_so_qd$$=1;var $giatb_qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$giatb_qd$$&&($he_so_qd$$=
|
|
18
|
+
$giatb_qd$$.mau?$giatb_qd$$.tu/$giatb_qd$$.mau:$giatb_qd$$.ty_le_qd);$giatb_qd$$={ma_vt:$p$$.ma_vt,nam:$nam$$,thang:$thang$$,ma_kho:{$in:[$p$$.ma_kho,"",null]}};if($giatb_qd$$=await global.getModel("giatb").findOne($giatb_qd$$).sort({ma_kho:-1}).lean())$p$$.gia_von_nt=$p$$.gia_von=($giatb_qd$$.gia||0)*$he_so_qd$$,$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt,$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt,$callback$$();else{let $condition$$={id_app:$master$$.id_app,
|
|
19
|
+
ma_vt:$p$$.ma_vt,ma_kho:$p$$.ma_kho};$condition$$.tu_ngay=moment($master$$.ngay_ct).startOf("month").toDate();$condition$$.den_ngay=moment($master$$.ngay_ct).endOf("month").toDate();tinhgiatb($condition$$,($e$$,$giatb$$)=>{$e$$&&console.error("[postSokho] Kh\u00f4ng th\u1ec3 t\u00ednh gi\u00e1 trung b\u00ecnh",$e$$.message||$e$$.error||$e$$,$condition$$);$p$$.gia_von_nt=$rs$$?$p$$.gia_von=($giatb$$.gia||0)*$he_so_qd$$:$p$$.gia_von=0;$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt;
|
|
20
|
+
$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt;$callback$$()})}})},()=>{$rs$$()})});$details$$=$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();$detail$$.ma_ct=$master$$.ma_ct;$detail$$.so_ct=$master$$.so_ct;$detail$$.ngay_ct=$master$$.ngay_ct;for(let $attr$$ in global.getModel("sokho").schema.paths)if($attr$$!="id_ct"&&$attr$$!="_id"&&$attr$$!="__v"&&$attr$$!="date_updated"&&$attr$$!="date_created"){let $v$$=$detail$$[$attr$$];$v$$!==void 0&&$v$$!==
|
|
21
|
+
null&&$v$$!==""||$v$$===0||$master$$[$attr$$]===void 0||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;return $detail$$});await $details$$.asyncJoinModel2($master$$.id_app,"dmkho",{where:"ma_kho",fields:"la_kho_npp"});const $self$$=this;$self$$.remove(async $error$jscomp$2_msg_error_rs_sokho$$=>{if($error$jscomp$2_msg_error_rs_sokho$$)return console.error("[postSokho] error delete data post",$error$jscomp$2_msg_error_rs_sokho$$.message||
|
|
22
|
+
$error$jscomp$2_msg_error_rs_sokho$$.error||$error$jscomp$2_msg_error_rs_sokho$$,$master$$.so_ct,$master$$.ma_ct),$callback$$($error$jscomp$2_msg_error_rs_sokho$$);if($details$$.length==0)return $callback$$(null,[]);try{var $data_sokho_rs_sokhnpp$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.la_kho_npp);let $rs_sokho$$=await global.getModel("sokho").create($data_sokho_rs_sokhnpp$$);var $data_sokhonpp_rs_sokhokhongton$$=$details$$.filter($d$$=>$d$$.tg_tk&&$d$$.la_kho_npp);let $rs_sokhnpp$$=await global.getModel("sokhonpp").create($data_sokhonpp_rs_sokhokhongton$$),
|
|
23
|
+
$data_sokhokhongton$$=$details$$.filter($d$$=>$d$$.tg_tk==0),$rs_sokhokhongton$$=await global.getModel("sokhokhongton").create($data_sokhokhongton$$);if($master$$.ma_ct){let $contr$$=global.controllers[$master$$.ma_ct.toUpperCase()];$contr$$?await $contr$$.model.findById($master$$._id)?$callback$$(null,{rs_sokho:$rs_sokho$$,rs_sokhnpp:$rs_sokhnpp$$,rs_sokhokhongton:$rs_sokhokhongton$$}):(console.error("[postSokho] Ch\u1ee9ng t\u1eeb kh\u00f4ng t\u1ed3n t\u1ea1i. X\u00f3a s\u1ed5 s\u00e1ch",$master$$._id,
|
|
24
|
+
$master$$.so_ct,$master$$.ma_ct),$self$$.remove(()=>{$callback$$("Ch\u1ee9ng t\u1eeb kh\u00f4ng t\u1ed3n t\u1ea1i")})):(console.log("[postSokho] not found controller",$master$$.ma_ct.toUpperCase()),$callback$$(null,{rs_sokho:$rs_sokho$$,rs_sokhnpp:$rs_sokhnpp$$,rs_sokhokhongton:$rs_sokhokhongton$$}))}else $callback$$(null,{rs_sokho:$rs_sokho$$,rs_sokhnpp:$rs_sokhnpp$$,rs_sokhokhongton:$rs_sokhokhongton$$});$rs_sokho$$&&setImmediate(()=>{tontucthoi.tinhTonTucThoi($rs_sokho$$,$e$$=>{$e$$&&console.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",
|
|
24
25
|
$rs_sokho$$,$e$$.message||$e$$.error||$e$$,$master$$.so_ct,$master$$.ma_ct)})})}catch($e$$){console.error("[postSokho] \u0110\u00e3 c\u00f3 l\u1ed7i khi post sokho",$e$$),$error$jscomp$2_msg_error_rs_sokho$$=$e$$.message||$e$$.error||$e$$.toString(),$error$jscomp$2_msg_error_rs_sokho$$.indexOf("E11000 duplicate")>=0&&$error$jscomp$2_msg_error_rs_sokho$$.indexOf("id_ct_1_line_1")>=0?($error$jscomp$2_msg_error_rs_sokho$$=await global.getModel("sokho").find({id_ct:$master$$._id.toString()}),$data_sokho_rs_sokhnpp$$=
|
|
25
26
|
await global.getModel("sokhonpp").find({id_ct:$master$$._id.toString()}),$data_sokhonpp_rs_sokhokhongton$$=await global.getModel("sokhokhongton").find({id_ct:$master$$._id.toString()}),$error$jscomp$2_msg_error_rs_sokho$$.length>0||$data_sokho_rs_sokhnpp$$.length>0||$data_sokhonpp_rs_sokhokhongton$$.length>0?$callback$$(null,{rs_sokho:$error$jscomp$2_msg_error_rs_sokho$$,rs_sokhnpp:$data_sokho_rs_sokhnpp$$,rs_sokhokhongton:$data_sokhonpp_rs_sokhokhongton$$}):(console.error("[postSokho] Error save data post",
|
|
26
27
|
$e$$.message||$e$$.error||$e$$,$master$$.so_ct,$master$$.ma_ct),$self$$.remove(()=>{$callback$$($e$$)}))):(console.error("[postSokho] Error save data post",$e$$.message||$e$$.error||$e$$,$master$$.so_ct,$master$$.ma_ct),$self$$.remove(()=>{$callback$$($e$$)}))}})};module.exports=post;
|
package/server/libs/tinhgiatb.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
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");
|
|
2
2
|
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$$=
|
|
3
3
|
$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);
|
|
4
|
-
console.log(`\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.mapLimit($dmvts$$,
|
|
5
|
-
$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.map($error$$,function($t
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
$
|
|
11
|
-
$
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$
|
|
16
|
-
$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$$)})()))
|
|
17
|
-
$
|
|
18
|
-
(
|
|
19
|
-
ma_vt
|
|
20
|
-
|
|
21
|
-
$
|
|
22
|
-
(
|
|
23
|
-
($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},
|
|
4
|
+
console.log(`\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.mapLimit($dmvts$$,100,function($vt$$,$callback$$){setImmediate(()=>{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 console.error("[tinhgiatb] Kh\u00f4ng th\u1ec3 t\u00ednh gi\u00e1 trung b\u00ecnh cho v\u1eadt t\u01b0",
|
|
5
|
+
$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.map($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=
|
|
6
|
+
$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$$);console.log(`[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);async.parallel({xuat:function($callback$$){setImmediate(async()=>
|
|
7
|
+
{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()],
|
|
8
|
+
$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$$]))console.log("\u26a0\ufe0f [tinhgiatb] Khong tim thay phieu xuat. chuong trinh da xoa phieu nay khoi s\u1ed5 s\u00e1ch, id_ct=",
|
|
9
|
+
$id_ct$$,"ma_ct=",$ma_ct$$),await sokho.deleteMany({id_ct:$id_ct$$}),await socai.deleteMany({id_ct:$id_ct$$})}else console.log("\u26a0\ufe0f [tinhgiatb] Khong tim model cho ma_ct=",$ma_ct$$);return null},function($error$$){if($error$$)return console.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$$},
|
|
10
|
+
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"):
|
|
11
|
+
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$$]))console.warn("\u26a0\ufe0f [tinhgiatb] Khong tim thay phieu nh\u1eadp. chuong trinh da xoa phieu nay khoi s\u1ed5 s\u00e1ch, id_ct=",
|
|
12
|
+
$id_ct$$,"ma_ct=",$ma_ct$$),await sokho.deleteMany({id_ct:$id_ct$$}),await socai.deleteMany({id_ct:$id_ct$$})}else console.log("\u26a0\ufe0f [tinhgiatb] Khong tim model cho ma_ct=",$ma_ct$$);return null},$error$$=>{if($error$$)return console.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$$},
|
|
13
|
+
{"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$$=>{console.error("[tinhgiatb] co loi lay phieu nhap dieu chuyen",$e$$);return $callback$$($e$$)})}else $callback$$()}},function($error$$){if($error$$)return $fn$$($error$$);async.waterfall([function($callback$$){console.log("[tinhgiatb] C\u1eadp nh\u1eadt gi\u00e1 xu\u1ea5t kho...");async.mapLimit(_.values($vouchers_x$$),
|
|
14
|
+
100,($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,
|
|
15
|
+
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$$=>
|
|
16
|
+
(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$$=>
|
|
17
|
+
$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$$=
|
|
18
|
+
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$$=>
|
|
19
|
+
(!$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$$&&
|
|
20
|
+
($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$$=
|
|
21
|
+
$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,
|
|
22
|
+
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},
|
|
24
23
|
$voucher_x_data$$);$ctrl$$&&$ctrl$$.post&&await new Promise(($resolve$$,$reject$$)=>{Controller.postData($voucher_x_data$$,$ctrl$$,($e$$,$rs$$)=>{if($e$$)return console.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$$){console.error("\u274c [tinhgiatb] L\u1ed7i c\u1eadp nh\u1eadt phi\u1ebfu xu\u1ea5t:",$voucher_x$$.ma_ct,$voucher_x$$.so_ct,
|
|
25
24
|
$e$$.message||$e$$.error||$e$$),$callback$$($e$$)}})},$error$$=>{$callback$$($error$$,$vouchers_x$$)})},function($_vouchers_x$$,$callback$$){console.log("[tinhgiatb] C\u1eadp nh\u1eadt gi\u00e1 nh\u1eadp kho...");async.mapLimit(_.values($vouchers_n$$),100,($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"&&
|
|
26
25
|
!$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,
|
package/server/libs/utils.js
CHANGED
|
@@ -75,3 +75,4 @@ exports.decrypt=$decrypted_encryptedText_iv$$=>{var $decipher_key$jscomp$13_pass
|
|
|
75
75
|
crypto.createDecipheriv(ALGORITHM,$decipher_key$jscomp$13_password$$,$decrypted_encryptedText_iv$$);$decrypted_encryptedText_iv$$=$decipher_key$jscomp$13_password$$.update($encryptedData$$,"hex","utf8");$decrypted_encryptedText_iv$$+=$decipher_key$jscomp$13_password$$.final("utf8");return JSON.parse($decrypted_encryptedText_iv$$)};
|
|
76
76
|
exports.retryStrategyRedis=$options$$=>{if($options$$.error&&$options$$.error.code==="ECONNREFUSED")return console.error("L\u1ed7i k\u1ebft n\u1ed1i Redis: Server t\u1eeb ch\u1ed1i k\u1ebft n\u1ed1i."),Error("Server t\u1eeb ch\u1ed1i k\u1ebft n\u1ed1i.");if($options$$.attempt>10)return console.error("\u0110\u00e3 th\u1eed k\u1ebft n\u1ed1i l\u1ea1i Redis qu\u00e1 10 l\u1ea7n. B\u1ecf cu\u1ed9c."),Error("Kh\u00f4ng th\u1ec3 k\u1ebft n\u1ed1i \u0111\u1ebfn Redis sau nhi\u1ec1u l\u1ea7n th\u1eed.");
|
|
77
77
|
const $delay$$=Math.min($options$$.attempt*100,3E3);console.log(`M\u1ea5t k\u1ebft n\u1ed1i Redis. Th\u1eed k\u1ebft n\u1ed1i l\u1ea1i sau ${$delay$$}ms. L\u1ea7n th\u1eed th\u1ee9 ${$options$$.attempt}...`);return $delay$$};
|
|
78
|
+
const transform=require("lodash/transform"),isEqual=require("lodash/isEqual"),isObject=require("lodash/isObject"),difference=function($object$$,$base$$){return transform($object$$,($result$$,$value$$,$key$$)=>{isEqual($value$$,$base$$[$key$$])||($result$$[$key$$]=isObject($value$$)&&isObject($base$$[$key$$])?difference($value$$,$base$$[$key$$]):$value$$)})};exports.difference=difference;
|
package/server/models/dmkho.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const dmkhoSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_kho:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ten_kho:{type:String,required:!0,maxlength:1024},stt:Number,ma_kh:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_cn:{type:String,maxlength:32,trim:!0},tk_dt:{type:String,maxlength:32,trim:!0},tk_tl:{type:String,maxlength:32,trim:!0},tk_ck:{type:String,maxlength:32,trim:!0},tk_gv:{type:String,maxlength:32,trim:!0},tk_tien:{type:String,maxlength:32,trim:!0},
|
|
2
2
|
tk_cp_bh:{type:String,maxlength:32,trim:!0},tk_cp_gh:{type:String,maxlength:32,trim:!0},tk_cp_ctv:{type:String,maxlength:32,trim:!0},tk_cn_ctv:{type:String,maxlength:32,trim:!0},tk_no_hoa_hong:String,tk_co_hoa_hong:String,dia_chi:{type:String,maxlength:1024},kho_dl:{type:Boolean,default:!1},kho_dc:{type:Boolean,default:!1},la_cua_hang:Boolean,user_quan_ly:String,theo_doi_sl_ht:Boolean,printers:[],la_kho_thue:Boolean,user_cho_thue:String,ds_ctv_kho_thue:[],la_kho_npp:Boolean,user_npp:String,ds_ctv_npp:[],
|
|
3
|
-
exfields:Schema.Types.Mixed,status:{type:Boolean,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:""},location:Schema.Types.Mixed,location2:global.customTypes.Point,visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});
|
|
4
|
-
(global.configs||{}).createIndexes&&(dmkhoSchema.index({id_app:1,ma_kho:1},{unique:!0}),dmkhoSchema.index({id_app:1,ma_kho:1,ten_kho:1,stt:1}),dmkhoSchema.index({id_app:1,ma_kho:1,ten_kho:1,stt:1,status:1}),dmkhoSchema.index({id_app:1,dia_chi:1}),dmkhoSchema.index({id_app:1,stt:1}),dmkhoSchema.index({id_app:1,la_kho_thue:1,user_cho_thue:1,ds_ctv_kho_thue:1}),dmkhoSchema.index({id_app:1,la_kho_npp:1,user_npp:1,ds_ctv_npp:1}),dmkhoSchema.index({id_app:1,
|
|
5
|
-
{name:"dmkho_index_text"}),dmkhoSchema.index({id_app:1,status:1}),dmkhoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}),dmkhoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,ma_kho:1,ten_kho:1}),dmkhoSchema.index({location2:"2dsphere"},{background:!1}));const model=mongoose.models.dmkho||mongoose.model("dmkho",dmkhoSchema);model.referenceKeys={ma_kho:[{model:"sokho",key:"ma_kho",error:"Kho ${obj.ten_kho} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong s\u1ed5 kho"}]};
|
|
3
|
+
lock:Boolean,exfields:Schema.Types.Mixed,status:{type:Boolean,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:""},location:Schema.Types.Mixed,location2:global.customTypes.Point,visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});
|
|
4
|
+
(global.configs||{}).createIndexes&&(dmkhoSchema.index({id_app:1,ma_kho:1},{unique:!0}),dmkhoSchema.index({id_app:1,ma_kho:1,ten_kho:1,stt:1}),dmkhoSchema.index({id_app:1,ma_kho:1,ten_kho:1,stt:1,status:1}),dmkhoSchema.index({id_app:1,dia_chi:1}),dmkhoSchema.index({id_app:1,stt:1}),dmkhoSchema.index({id_app:1,lock:1,ma_kho:1}),dmkhoSchema.index({id_app:1,la_kho_thue:1,user_cho_thue:1,ds_ctv_kho_thue:1}),dmkhoSchema.index({id_app:1,la_kho_npp:1,user_npp:1,ds_ctv_npp:1}),dmkhoSchema.index({id_app:1,
|
|
5
|
+
ma_kho:"text",ten_kho:"text",dia_chi:"text"},{name:"dmkho_index_text"}),dmkhoSchema.index({id_app:1,status:1}),dmkhoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}),dmkhoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,ma_kho:1,ten_kho:1}),dmkhoSchema.index({location2:"2dsphere"},{background:!1}));const model=mongoose.models.dmkho||mongoose.model("dmkho",dmkhoSchema);model.referenceKeys={ma_kho:[{model:"sokho",key:"ma_kho",error:"Kho ${obj.ten_kho} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong s\u1ed5 kho"}]};
|
|
6
6
|
module.exports=model;
|
package/server/models/log.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const logSchema=new Schema({id_app:{type:String},id_func:{type:String},action:{type:String},description:{type:String},data:{},result:Schema.Types.Mixed,ip:{type:String},user_agent:{type:String},status:{type:Boolean,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:""}});
|
|
2
|
-
(global.configs||{}).createIndexes&&(logSchema.index({id_app:1,id_func:1,action:1,date_created:-1}),logSchema.index({id_app:1,"data.
|
|
2
|
+
(global.configs||{}).createIndexes&&(logSchema.index({id_app:1,id_func:1,action:1,date_created:-1}),logSchema.index({id_app:1,id_func:1,"data.data.id_link":1}),logSchema.index({id_app:1,id_func:1,"data.newData.id_link":1}),logSchema.index({id_app:1,"data.id":1}),logSchema.index({id_app:1,"data.id":1,"data.data.id_link":1,"data.oldData.id_link":1,action:1,date_created:-1}),logSchema.index({id_app:1,ip:1}),logSchema.index({id_app:1,user_created:1,date_created:-1}),logSchema.index({id_func:"text",action:"text",
|
|
3
|
+
user_created:"text",description:"text"}),logSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}));const Log=mongoose.models.log||mongoose.model("log",logSchema);
|
|
3
4
|
Log.create=async function($ip_log$$,$user_created$$,$user_agent$$,$req$$){const $l$$=new Log;$l$$.id_app=$ip_log$$.id_app;$l$$.id_func=$ip_log$$.id_func;$l$$.action=$ip_log$$.action;$l$$.description=$ip_log$$.description;$l$$.data=$ip_log$$.data;$l$$.user_agent=$user_agent$$;$l$$.user_created=$user_created$$;$req$$&&($req$$.headers||$req$$.connection)&&(($ip_log$$=$req$$.ip)||($req$$.headers?$req$$.headers["x-forwarded-for"]:""),$ip_log$$||=$req$$.connection?$req$$.connection.remoteAddress:"",$l$$.ip=
|
|
4
5
|
$ip_log$$||"");return await $l$$.save()};module.exports=Log;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
const model=global.getModel("email"),controller=require("../../controllers/controller"),emailService=require("../../libs/email"),htmlReport=require("../../libs/htmlReport");
|
|
2
2
|
module.exports=function($router$$){(new controller($router$$,model,"email",{sort:{date_created:-1},notNeedRight:!0,onFinding:function($user$$,$condition$$,$next$$){$next$$(null,$condition$$)},onView:function($user$$,$items$$,$next$$){$next$$(null,$items$$)},onCreating:async function($user$$,$item$$,$next$$){if(!$item$$.to||!$item$$.to.trim())return $next$$("Ch\u01b0a c\u00f3 ng\u01b0\u1eddi nh\u1eadn");const $to$$=$item$$.to.split(",").map($t$$=>({address:$t$$.trim()}));$item$$.attachments?.length||
|
|
3
|
-
($item$$.attachments=$item$$.exfields?.__files__||[]);try{let $content$$=await htmlReport($item$$.
|
|
3
|
+
($item$$.attachments=$item$$.exfields?.__files__||[]);try{let $content$$=await htmlReport($item$$.content,{data:$item$$});emailService.sendHtml({to:$to$$,cc:$item$$.cc,bcc:$item$$.bcc,subject:$item$$.subject.replace(/<[^>]*>?/gm,""),html:$content$$,attachments:$item$$.attachments,app_info:$user$$.current_app_info},async $e$$=>{if($e$$)return $next$$($e$$.message||$e$$.error||$e$$);$item$$.sent=!0;$next$$(null,$item$$)})}catch($e$$){$next$$($e$$.message||$e$$.error||$e$$)}},onCreated:function($user$$,
|
|
4
4
|
$item$$,$next$$){$next$$(null,$item$$)},onUpdating:function($user$$,$data$$,$item$$,$next$$){return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")}})).route()};
|