flexbiz-server 12.3.67 → 12.4.2

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.
Files changed (61) hide show
  1. package/package.json +1 -1
  2. package/server/auths/local.js +2 -2
  3. package/server/controllers/controller.js +103 -1268
  4. package/server/controllers/controllerRPT.js +22 -336
  5. package/server/controllers/controllerUtils.js +72 -1351
  6. package/server/controllers/createHandler.js +34 -784
  7. package/server/controllers/createRouteHandler.js +4 -70
  8. package/server/controllers/deleteHandler.js +10 -235
  9. package/server/controllers/deleteManyHandler.js +2 -30
  10. package/server/controllers/exportHandler.js +17 -417
  11. package/server/controllers/findHandler.js +48 -951
  12. package/server/controllers/handlers.js +3 -38
  13. package/server/controllers/historyHandler.js +2 -38
  14. package/server/controllers/importFromExcelHandler.js +13 -295
  15. package/server/controllers/importFromGsHandler.js +10 -158
  16. package/server/controllers/importFromJsonHandler.js +7 -139
  17. package/server/controllers/importHandler.js +21 -388
  18. package/server/controllers/logHandler.js +3 -64
  19. package/server/controllers/rptCreateRouteHandler.js +4 -64
  20. package/server/controllers/rptExcelHandler.js +23 -409
  21. package/server/controllers/rptHandler.js +12 -259
  22. package/server/controllers/updateBookHandler.js +10 -175
  23. package/server/controllers/updateFieldHandler.js +12 -272
  24. package/server/controllers/updateHandler.js +39 -881
  25. package/server/controllers/updateKeyHandler.js +14 -154
  26. package/server/controllers/viewHandler.js +13 -228
  27. package/server/flow/FlowEngine.js +20 -20
  28. package/server/flow/nodes/event.js +4 -5
  29. package/server/libs/dkvt.js +6 -6
  30. package/server/libs/mongoosePatch.js +10 -190
  31. package/server/libs/optimizeBookkeeping.js +14 -468
  32. package/server/libs/permission.js +1 -1
  33. package/server/libs/redis-cache.js +17 -261
  34. package/server/libs/sessionContext.js +12 -244
  35. package/server/libs/tinhgiatb.js +39 -713
  36. package/server/libs/tinhgiatb1vt.js +5 -4
  37. package/server/libs/utils.js +77 -1344
  38. package/server/models/approve.js +9 -9
  39. package/server/models/assrequest.js +1 -1
  40. package/server/models/counter.js +1 -1
  41. package/server/models/momo.js +2 -2
  42. package/server/models/onepay.js +2 -2
  43. package/server/models/schedule.js +2 -2
  44. package/server/models/socai.js +12 -11
  45. package/server/models/sokho.js +14 -14
  46. package/server/models/tontucthoi.js +9 -174
  47. package/server/models/wallet.js +1 -1
  48. package/server/models/zalo.js +2 -2
  49. package/server/modules/lists/ls-account.js +1 -1
  50. package/server/modules/lists/ls-bds_dmnhbds.js +4 -4
  51. package/server/modules/lists/ls-bds_floordetail.js +11 -11
  52. package/server/modules/lists/ls-dmbp.js +3 -3
  53. package/server/modules/lists/ls-dmdt.js +3 -3
  54. package/server/modules/lists/ls-dmnckkm.js +3 -3
  55. package/server/modules/lists/ls_hanmucton.js +1 -1
  56. package/server/modules/reports/calc-tinhgiatb.js +1 -1
  57. package/server/modules/reports/calc-tinhgiathanh.js +1 -1
  58. package/server/modules/reports/calc-tinhkhauhaots.js +1 -1
  59. package/server/modules/reports/calc-tinhluong.js +1 -1
  60. package/server/modules/vouchers/vo-hd2.js +107 -1895
  61. package/server/modules/vouchers/vo-po1.js +15 -436
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.3.67",
5
+ "version": "12.4.2",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -9,7 +9,7 @@ $par_session_created_ug$$.group_id&&($par_session_created_ug$$=await global.getM
9
9
  $cust$$&&($cust$$.phu_trach=$intr$$.be_introduced_by);$rs$$()})})}$cust$$&&await Customer.asyncCreateCustomer($cust$$)}}
10
10
  module.exports=async function($app$$,$passport$$){const $rateLimiter$$=await global.createRateLimiterMiddleware(configs.limitRequest.auth||{},"auth");$passport$$.use(new BasicStrategy(function($username$$,$password$$,$done$$){if(!$username$$)return $done$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$username$$=$username$$.trim();let $id_app$$;if($username$$.indexOf("@app=")>0){const $user_app$$=$username$$.split("@app=");$username$$=$user_app$$[0];$id_app$$=$user_app$$[1]}$username$$=$username$$.toLowerCase();
11
11
  setImmediate(function(){findByUsername($username$$,async function($err_pars_pars$$,$user$$){if($err_pars_pars$$)return $done$$($err_pars_pars$$);if(!$user$$)return $done$$("T\u00e0i kho\u1ea3n "+$username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if($user$$.status==0)return $done$$("T\u00e0i kho\u1ea3n n\u00e0y kh\u00f4ng c\u00f2n hi\u1ec7u l\u1ef1c");if($user$$.local.rspassword)if($user$$.validRspassword($password$$))$user$$.local.password=$user$$.local.rspassword,$user$$.local.rspassword=
12
- void 0,User.findOneAndUpdate({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return console.error("Can't update password",$user$$.email,$e$$);console.log("updated new password",$user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),
12
+ void 0,User.updateOne({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return console.error("Can't update password",$user$$.email,$e$$);console.log("updated new password",$user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),
13
13
  $err_pars_pars$$.length>0?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}else{if(!$user$$.local.password)return $done$$("M\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i. H\u00e3y s\u1eed d\u1ee5ng t\u00ednh n\u0103ng kh\u00f4i ph\u1ee5c m\u1eadt kh\u1ea9u \u0111\u1ec3 \u0111\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y");
14
14
  if(!$user$$.validPassword($password$$))if($id_app$$)if(await $user$$.validAppPassword($password$$,$id_app$$))$user$$=$user$$.toObject(),$user$$.token_id_app=$id_app$$;else return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.");else return $err_pars_pars$$=await $user$$.getAppOfPassword($password$$),$err_pars_pars$$.length>0?($user$$=$user$$.toObject(),$user$$.token_id_apps=$err_pars_pars$$.map($p$$=>$p$$.id_app),$done$$(null,$user$$)):$done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,
15
15
  $user$$)})})}));$app$$.get("/send-otp/:address_receive_otp",$rateLimiter$$,async($headers_req$$,$res$$)=>{var $address_receive_otp_app$jscomp$2_id_app$$=$headers_req$$.params.address_receive_otp.trim().toLowerCase();if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){if(!$headers_req$$.query["g-recaptcha-response"])return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");try{await permission.verifyReCaptcha($headers_req$$.query["g-recaptcha-response"])}catch($e$$){return console.error("Can't verify recaptcha when send otp",
@@ -28,7 +28,7 @@ else $res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u
28
28
  $email_address$$?email.sendHtml({to:{address:$email_address$$},subject:"M\u00e3 x\u00e1c th\u1ef1c",html:`Xin vui l\u00f2ng g\u1eedi qu\u00fd kh\u00e1ch m\u00e3 x\u00e1c th\u1ef1c: ${$message$jscomp$10_message$jscomp$9_otp_code$jscomp$1_url$$}. M\u00e3 n\u00e0y s\u1ebd h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng sau 5 ph\u00fat.`},function($error$$){$error$$?(console.error("Error send otp to email",$error$$),$res$$.status(400).send(`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi email ${$username$$}`)):
29
29
  $res$$.send($optObject$$.toObject())},configs.sender_otp):$res$$.status(400).send({error:`Kh\u00f4ng th\u1ec3 g\u1eedi \u0111\u01b0\u1ee3c m\u00e3 OTP t\u1edbi t\u00e0i kho\u1ea3n ${$username$$}`})}});$app$$.get("/verify-otp/:id/:otp",$rateLimiter$$,async function($req$$,$res$$){try{const $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"ID c\u1ee7a m\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng h\u1ee3p l\u1ec7",code:4001});const $otp_code$$=
30
30
  $req$$.params.otp,$otp$$=await OTP.findById($id$$);if(!$otp$$)return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});$otp$$.tried_number=($otp$$.tried_number||0)+1;await $otp$$.save();if($otp$$.otp!=$otp_code$$||$otp$$.verified||$otp$$.tried_number>(configs.MAX_TRY_OTP||3)||$otp$$.expire_time.getTime()<(new Date).getTime())return $res$$.status(400).send({error:"M\u00e3 x\u00e1c th\u1ef1c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i ho\u1eb7c \u0111\u00e3 h\u1ebft hi\u1ec7u l\u1ef1c",
31
- code:4001});await OTP.findOneAndUpdate({_id:$id$$},{verified:!0});let $user$$=await User.findOne({email:$otp$$.phone});if(!$user$$)return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});if(!$user$$.local||!$user$$.local.active){$user$$.local=$user$$.local||{};$user$$.local.active=!0;try{await $user$$.save(),redisCache.set("user",$user$$.toObject(),function($e$$){$e$$?console.error($e$$):console.log("cache user infomation to redis")})}catch($e$$){return console.log("error verify otp, create user",
31
+ code:4001});await OTP.updateOne({_id:$id$$},{verified:!0});let $user$$=await User.findOne({email:$otp$$.phone});if(!$user$$)return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n kh\u00f4ng t\u1ed3n t\u1ea1i",code:4001});if(!$user$$.local||!$user$$.local.active){$user$$.local=$user$$.local||{};$user$$.local.active=!0;try{await $user$$.save(),redisCache.set("user",$user$$.toObject(),function($e$$){$e$$?console.error($e$$):console.log("cache user infomation to redis")})}catch($e$$){return console.log("error verify otp, create user",
32
32
  $e$$),$res$$.status(500).send($e$$)}}const $accessToken$$=generateToken($user$$);(new Token({email:$user$$.email,session_created:($req$$.cookies||{}).uid,token:$accessToken$$,agent:$req$$.headers["user-agent"],ip:"",once:$req$$.query.once==1||$req$$.query.once=="true"||$req$$.query.once==="1"?!0:!1})).save(function($e$$,$rs$$){return $e$$?$res$$.status(500).send($e$$):$res$$.send({token:$accessToken$$,once:$rs$$.once})})}catch($e$$){console.error("error verify otp",$e$$),$res$$.status(400).send($e$$.message)}});
33
33
  $app$$.post("/auth/sign",$rateLimiter$$,($req$$,$res$$,$next$$)=>{$passport$$.authenticate("basic",{session:!1},function($err$$,$user$$){if($err$$||!$user$$)return $res$$.status(401).send({message:$err$$||"Unauthorized"});$req$$.user=$user$$;$next$$()})($req$$,$res$$,$next$$)},async($req$jscomp$3_user$$,$res$$)=>{let $data$$=$req$jscomp$3_user$$.body;$req$jscomp$3_user$$=$req$jscomp$3_user$$.user;if(!$data$$)return $res$$.status(400).send("Not have data to sign");if(!$data$$.id_app)return $res$$.status(400).send("Data miss id_app property");
34
34
  try{let $signature$$=await Wallet.sign($data$$.id_app,$req$jscomp$3_user$$.email,$data$$);$res$$.send($signature$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$)}});$app$$.get("/auth/local",$rateLimiter$$,function($req$$,$res$$,$next$$){let $ip$$=($req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress).split(".").join("").split(":").join("");var $authorization_password$$=$req$$.headers.authorization;if(!$authorization_password$$)return $res$$.status(400).send({message:"Authorization is required"});