flexbiz-server 12.1.31 → 12.2.0

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 (817) hide show
  1. package/package.json +2 -1
  2. package/server/app.js +6 -5
  3. package/server/auths/local.js +18 -17
  4. package/server/cluster.js +13 -13
  5. package/server/controllers/controller.js +58 -55
  6. package/server/defaultConfigs.js +3 -0
  7. package/server/libs/BlockchainTransactionPool.js +0 -0
  8. package/server/libs/WorkerPool.js +0 -0
  9. package/server/libs/WorkerStaticPool.js +0 -0
  10. package/server/libs/backup.js +0 -0
  11. package/server/libs/blockchainconnect.js +0 -0
  12. package/server/libs/cdpsdiem.js +0 -0
  13. package/server/libs/cdpsdt.js +0 -0
  14. package/server/libs/cdpskh.js +0 -0
  15. package/server/libs/cdpstk.js +0 -0
  16. package/server/libs/ckcn.js +0 -0
  17. package/server/libs/ckdiem.js +0 -0
  18. package/server/libs/ckdt.js +0 -0
  19. package/server/libs/cktk.js +0 -0
  20. package/server/libs/cktt.js +0 -0
  21. package/server/libs/ckvt.js +0 -0
  22. package/server/libs/ckvtcapphat.js +0 -0
  23. package/server/libs/ckvttt.js +0 -0
  24. package/server/libs/ctdiem.js +0 -0
  25. package/server/libs/ctvt.js +0 -0
  26. package/server/libs/ctvttt.js +0 -0
  27. package/server/libs/databanle.js +0 -0
  28. package/server/libs/dkcn.js +0 -0
  29. package/server/libs/dkdiem.js +0 -0
  30. package/server/libs/dkdt.js +0 -0
  31. package/server/libs/dktk.js +0 -0
  32. package/server/libs/dktt.js +0 -0
  33. package/server/libs/dkvt.js +0 -0
  34. package/server/libs/dkvttt.js +0 -0
  35. package/server/libs/dncn.js +0 -0
  36. package/server/libs/dntk.js +0 -0
  37. package/server/libs/dntt.js +0 -0
  38. package/server/libs/dstkcn.js +0 -0
  39. package/server/libs/dstktt.js +0 -0
  40. package/server/libs/email.js +0 -0
  41. package/server/libs/excel.js +0 -0
  42. package/server/libs/getGiaban.js +5 -4
  43. package/server/libs/getNotifies.js +0 -0
  44. package/server/libs/htmlReport.js +0 -0
  45. package/server/libs/initDatabase.js +0 -0
  46. package/server/libs/load-template.js +0 -0
  47. package/server/libs/mailmanagement.js +0 -0
  48. package/server/libs/mongooseLeanId.js +0 -0
  49. package/server/libs/onepay-payment.js +0 -0
  50. package/server/libs/parse-template.js +0 -0
  51. package/server/libs/permission.js +9 -8
  52. package/server/libs/phanbokh.js +0 -0
  53. package/server/libs/post-book.js +0 -0
  54. package/server/libs/post-socai.js +0 -0
  55. package/server/libs/prototypes.js +0 -0
  56. package/server/libs/psdt.js +0 -0
  57. package/server/libs/pskh.js +0 -0
  58. package/server/libs/pstk.js +0 -0
  59. package/server/libs/redis-cache.js +0 -0
  60. package/server/libs/restore.js +0 -0
  61. package/server/libs/schedule.js +0 -0
  62. package/server/libs/textReport.js +0 -0
  63. package/server/libs/thnxt.js +0 -0
  64. package/server/libs/thnxttt.js +0 -0
  65. package/server/libs/tinhGtCapnhatPNK.js +0 -0
  66. package/server/libs/tinhGtPhanboSltp.js +0 -0
  67. package/server/libs/tinhGtPhanboYtcp.js +0 -0
  68. package/server/libs/tinhGtSltk.js +0 -0
  69. package/server/libs/tinhGtThcppstk.js +0 -0
  70. package/server/libs/tinhGtTrucTiep.js +0 -0
  71. package/server/libs/tinhGtXoa.js +0 -0
  72. package/server/libs/tinhgiatb.js +0 -0
  73. package/server/libs/tinhgiatb1vt.js +0 -0
  74. package/server/libs/tinhkhauhao1ts.js +0 -0
  75. package/server/libs/tinhkhauhaots.js +0 -0
  76. package/server/libs/utils.js +0 -0
  77. package/server/libs/validate.js +0 -0
  78. package/server/libs/validator-acc-cust.js +0 -0
  79. package/server/libs/validator-account.js +0 -0
  80. package/server/libs/validator-vt.js +0 -0
  81. package/server/libs/validator.js +0 -0
  82. package/server/libs/vsocai.js +0 -0
  83. package/server/models/account.js +2 -2
  84. package/server/models/app.js +0 -0
  85. package/server/models/approve.js +6 -6
  86. package/server/models/area.js +2 -1
  87. package/server/models/assbuy.js +0 -0
  88. package/server/models/asscashwithdraw.js +0 -0
  89. package/server/models/assinvestment.js +0 -0
  90. package/server/models/asskey.js +0 -0
  91. package/server/models/assneedtobuy.js +0 -0
  92. package/server/models/assperiod.js +2 -2
  93. package/server/models/assproduct.js +2 -2
  94. package/server/models/assreceiver.js +0 -0
  95. package/server/models/assrequest.js +2 -2
  96. package/server/models/asssell.js +0 -0
  97. package/server/models/asstransfer.js +0 -0
  98. package/server/models/asswithdraw.js +0 -0
  99. package/server/models/attend.js +0 -0
  100. package/server/models/bangtinhluong.js +0 -0
  101. package/server/models/bg1.js +1 -1
  102. package/server/models/bg2.js +3 -3
  103. package/server/models/block.js +2 -2
  104. package/server/models/building.js +2 -2
  105. package/server/models/calllog.js +2 -2
  106. package/server/models/campaign.js +1 -1
  107. package/server/models/cart.js +3 -2
  108. package/server/models/cddiem.js +0 -0
  109. package/server/models/cddt.js +0 -0
  110. package/server/models/cdkh.js +0 -0
  111. package/server/models/cdtk.js +0 -0
  112. package/server/models/cdvt.js +0 -0
  113. package/server/models/chamcong.js +0 -0
  114. package/server/models/checkin.js +0 -0
  115. package/server/models/checkinactivity.js +0 -0
  116. package/server/models/checkinkpi.js +0 -0
  117. package/server/models/chitieukpi.js +1 -1
  118. package/server/models/chudethaoluan.js +0 -0
  119. package/server/models/ckgtluong.js +0 -0
  120. package/server/models/colleague.js +0 -0
  121. package/server/models/comment.js +0 -0
  122. package/server/models/congdoansx.js +1 -1
  123. package/server/models/congtacvien.js +2 -2
  124. package/server/models/consultant.js +1 -1
  125. package/server/models/contract.js +3 -3
  126. package/server/models/counter.js +0 -0
  127. package/server/models/ctds.js +0 -0
  128. package/server/models/currency.js +0 -0
  129. package/server/models/customer.js +2 -2
  130. package/server/models/datlich.js +0 -0
  131. package/server/models/department.js +2 -2
  132. package/server/models/dh2.js +2 -2
  133. package/server/models/diagram.js +1 -1
  134. package/server/models/dinhmucsx.js +2 -2
  135. package/server/models/dkhoc.js +2 -2
  136. package/server/models/dmban.js +0 -0
  137. package/server/models/dmbp.js +3 -2
  138. package/server/models/dmca.js +2 -2
  139. package/server/models/dmchietkhau.js +0 -0
  140. package/server/models/dmchietkhauhd.js +0 -0
  141. package/server/models/dmcpmh.js +0 -0
  142. package/server/models/dmdiemthuong.js +0 -0
  143. package/server/models/dmdoi.js +2 -2
  144. package/server/models/dmdoituongdanhgia.js +2 -2
  145. package/server/models/dmdt.js +3 -2
  146. package/server/models/dmdvt.js +0 -0
  147. package/server/models/dmgiaban.js +0 -0
  148. package/server/models/dmgiamua.js +0 -0
  149. package/server/models/dmhoahonghd.js +5 -5
  150. package/server/models/dmkc.js +0 -0
  151. package/server/models/dmkho.js +1 -1
  152. package/server/models/dmkhuyenmai.js +0 -0
  153. package/server/models/dmletet.js +1 -1
  154. package/server/models/dmlo.js +1 -1
  155. package/server/models/dmloaicong.js +0 -0
  156. package/server/models/dmloaitask.js +0 -0
  157. package/server/models/dmloaits.js +0 -0
  158. package/server/models/dmnguonvon.js +0 -0
  159. package/server/models/dmnhnv.js +2 -2
  160. package/server/models/dmnv.js +0 -0
  161. package/server/models/dmnvt.js +2 -2
  162. package/server/models/dmphatdichvu.js +0 -0
  163. package/server/models/dmphi.js +0 -0
  164. package/server/models/dmqct.js +0 -0
  165. package/server/models/dmqddvt.js +0 -0
  166. package/server/models/dmtanggiamts.js +0 -0
  167. package/server/models/dmto.js +3 -2
  168. package/server/models/dmtt.js +0 -0
  169. package/server/models/dmvt.js +1 -1
  170. package/server/models/dmyt.js +0 -0
  171. package/server/models/dn0.js +1 -1
  172. package/server/models/dnm.js +1 -1
  173. package/server/models/dokho.js +0 -0
  174. package/server/models/dvcs.js +1 -1
  175. package/server/models/endpoint.js +0 -0
  176. package/server/models/events.js +0 -0
  177. package/server/models/evoucher.js +1 -1
  178. package/server/models/experiencejourney.js +0 -0
  179. package/server/models/experiencejourneydata.js +0 -0
  180. package/server/models/experiencejourneypersona.js +0 -0
  181. package/server/models/experiencejourneystage.js +0 -0
  182. package/server/models/exportexceltemplate.js +0 -0
  183. package/server/models/fieldright.js +0 -0
  184. package/server/models/file.js +1 -1
  185. package/server/models/floor.js +2 -2
  186. package/server/models/floordetail.js +0 -0
  187. package/server/models/folder.js +3 -3
  188. package/server/models/follow.js +0 -0
  189. package/server/models/form.js +2 -1
  190. package/server/models/forminfo.js +0 -0
  191. package/server/models/formvalue.js +2 -2
  192. package/server/models/giaoca.js +3 -2
  193. package/server/models/giatb.js +0 -0
  194. package/server/models/group.js +3 -3
  195. package/server/models/gt_ctgt.js +0 -0
  196. package/server/models/gt_sltk.js +0 -0
  197. package/server/models/gt_thcppstk.js +0 -0
  198. package/server/models/hanmucton.js +0 -0
  199. package/server/models/hd1.js +1 -1
  200. package/server/models/hd2.js +4 -4
  201. package/server/models/hd3.js +1 -1
  202. package/server/models/hd7.js +1 -1
  203. package/server/models/hde.js +1 -1
  204. package/server/models/hlink.js +2 -2
  205. package/server/models/hlinkvalue.js +2 -2
  206. package/server/models/hspbts.js +0 -0
  207. package/server/models/htl.js +2 -2
  208. package/server/models/importexceltemplate.js +0 -0
  209. package/server/models/introducebonus.js +2 -2
  210. package/server/models/introducecode.js +2 -1
  211. package/server/models/introducer.js +2 -2
  212. package/server/models/kbbtpb.js +0 -0
  213. package/server/models/kbmPttct.js +0 -0
  214. package/server/models/kbmTkgtgt.js +0 -0
  215. package/server/models/kbm_bcdkt.js +0 -0
  216. package/server/models/kbm_kqhdkd.js +0 -0
  217. package/server/models/kbm_lcttgt.js +0 -0
  218. package/server/models/kbm_lctttt.js +0 -0
  219. package/server/models/kbm_pttct.js +0 -0
  220. package/server/models/kbm_tkgtgt.js +0 -0
  221. package/server/models/kbmbcdkt.js +0 -0
  222. package/server/models/kbmbcqt.js +0 -0
  223. package/server/models/kbmkqhdkd.js +0 -0
  224. package/server/models/kbmlcttgt.js +0 -0
  225. package/server/models/kbmlctttt.js +0 -0
  226. package/server/models/kbmtmbctc.js +0 -0
  227. package/server/models/kehoachdtcp.js +0 -0
  228. package/server/models/kehoachmh.js +2 -2
  229. package/server/models/keyresult.js +2 -2
  230. package/server/models/khunghangthanhvien.js +3 -2
  231. package/server/models/label.js +0 -0
  232. package/server/models/labelinfo.js +0 -0
  233. package/server/models/lenhcapphat.js +2 -2
  234. package/server/models/lenhsx.js +2 -2
  235. package/server/models/lesson.js +0 -0
  236. package/server/models/license.js +0 -0
  237. package/server/models/lienhe.js +3 -3
  238. package/server/models/like_module.js +0 -0
  239. package/server/models/link.js +0 -0
  240. package/server/models/listinfo.js +17 -14
  241. package/server/models/loaidiem.js +0 -0
  242. package/server/models/lock.js +0 -0
  243. package/server/models/log.js +0 -0
  244. package/server/models/mailaccount.js +0 -0
  245. package/server/models/mailgroup.js +2 -2
  246. package/server/models/mailreceived.js +0 -0
  247. package/server/models/mailschedule.js +0 -0
  248. package/server/models/mailsent.js +0 -0
  249. package/server/models/mailtemplate.js +1 -1
  250. package/server/models/maudanhgia.js +2 -2
  251. package/server/models/message.js +0 -0
  252. package/server/models/message2.js +0 -0
  253. package/server/models/message2setting.js +0 -0
  254. package/server/models/moduleinfo.js +0 -0
  255. package/server/models/momo.js +0 -0
  256. package/server/models/news.js +0 -0
  257. package/server/models/newsfeed.js +0 -0
  258. package/server/models/nhadat.js +2 -2
  259. package/server/models/note.js +2 -2
  260. package/server/models/notification.js +0 -0
  261. package/server/models/okr.js +3 -3
  262. package/server/models/okrdiagram.js +2 -2
  263. package/server/models/onepay.js +0 -0
  264. package/server/models/opportunity.js +2 -2
  265. package/server/models/options.js +0 -0
  266. package/server/models/otp.js +0 -0
  267. package/server/models/parameter.js +0 -0
  268. package/server/models/participant.js +0 -0
  269. package/server/models/partner.js +0 -0
  270. package/server/models/payload.js +0 -0
  271. package/server/models/pbl.js +2 -2
  272. package/server/models/pc0.js +1 -1
  273. package/server/models/pc1.js +4 -3
  274. package/server/models/pc2.js +1 -1
  275. package/server/models/pc3.js +1 -1
  276. package/server/models/pc5.js +1 -1
  277. package/server/models/pc6.js +4 -3
  278. package/server/models/pdn.js +3 -3
  279. package/server/models/pdx.js +1 -1
  280. package/server/models/phieudanhgia.js +1 -1
  281. package/server/models/pht.js +2 -2
  282. package/server/models/phucap.js +3 -2
  283. package/server/models/pkc.js +2 -2
  284. package/server/models/pkh.js +1 -1
  285. package/server/models/pkk.js +3 -3
  286. package/server/models/pkt.js +3 -3
  287. package/server/models/pn1.js +1 -1
  288. package/server/models/pn2.js +1 -1
  289. package/server/models/pn3.js +2 -2
  290. package/server/models/pn5.js +1 -1
  291. package/server/models/pn6.js +3 -3
  292. package/server/models/pn9.js +3 -3
  293. package/server/models/pnc.js +2 -2
  294. package/server/models/pnh.js +2 -2
  295. package/server/models/pnk.js +2 -2
  296. package/server/models/po1.js +3 -3
  297. package/server/models/ppb.js +1 -1
  298. package/server/models/profile.js +2 -2
  299. package/server/models/pt1.js +1 -1
  300. package/server/models/pt5.js +1 -1
  301. package/server/models/ptl.js +1 -1
  302. package/server/models/ptthanhtoan.js +3 -2
  303. package/server/models/purchase_contract.js +1 -1
  304. package/server/models/pxc.js +3 -3
  305. package/server/models/pxh.js +2 -2
  306. package/server/models/pxk.js +2 -2
  307. package/server/models/qts.js +1 -1
  308. package/server/models/qts_dieuchinh.js +0 -0
  309. package/server/models/quanhuyen.js +0 -0
  310. package/server/models/reason.js +0 -0
  311. package/server/models/reportinfo.js +0 -0
  312. package/server/models/right.js +0 -0
  313. package/server/models/rpt.js +0 -0
  314. package/server/models/rptform.js +0 -0
  315. package/server/models/rptobject.js +0 -0
  316. package/server/models/sale_contract.js +1 -1
  317. package/server/models/schedule.js +0 -0
  318. package/server/models/schedule_log.js +0 -0
  319. package/server/models/service.js +1 -1
  320. package/server/models/session.js +0 -0
  321. package/server/models/shipbook.js +2 -2
  322. package/server/models/shortcut.js +0 -0
  323. package/server/models/so1.js +5 -4
  324. package/server/models/so2.js +2 -2
  325. package/server/models/so3.js +3 -2
  326. package/server/models/so4.js +0 -0
  327. package/server/models/so5.js +1 -1
  328. package/server/models/socai.js +0 -0
  329. package/server/models/sodiemthuong.js +3 -3
  330. package/server/models/sokho.js +0 -0
  331. package/server/models/sokhocapphat.js +0 -0
  332. package/server/models/sokhott.js +0 -0
  333. package/server/models/sophanbokh.js +0 -0
  334. package/server/models/sosanxuat.js +1 -1
  335. package/server/models/sotinhkh.js +0 -0
  336. package/server/models/spdd_ck.js +0 -0
  337. package/server/models/spdd_dk.js +0 -0
  338. package/server/models/step.js +2 -2
  339. package/server/models/strategicdiagram.js +1 -1
  340. package/server/models/strategicgoal.js +1 -1
  341. package/server/models/strategickpi.js +1 -1
  342. package/server/models/strategicobjective.js +1 -1
  343. package/server/models/strategicplan.js +2 -2
  344. package/server/models/subscribe.js +0 -0
  345. package/server/models/support.js +0 -0
  346. package/server/models/synctime.js +0 -0
  347. package/server/models/sysconfig.js +0 -0
  348. package/server/models/sysgroup.js +1 -1
  349. package/server/models/tableinfo.js +0 -0
  350. package/server/models/task.js +4 -3
  351. package/server/models/taskreg.js +1 -1
  352. package/server/models/tc.js +0 -0
  353. package/server/models/tdttco.js +0 -0
  354. package/server/models/tdttco_tt.js +0 -0
  355. package/server/models/tdttno.js +0 -0
  356. package/server/models/tdttno_tt.js +0 -0
  357. package/server/models/templaterpt.js +0 -0
  358. package/server/models/templatestore.js +1 -1
  359. package/server/models/templatevoucher.js +1 -1
  360. package/server/models/tinhthanh.js +0 -0
  361. package/server/models/tokens.js +0 -0
  362. package/server/models/tontucthoi.js +0 -0
  363. package/server/models/training.js +0 -0
  364. package/server/models/trangthai.js +3 -3
  365. package/server/models/transaction.js +0 -0
  366. package/server/models/trialinfo.js +0 -0
  367. package/server/models/user.js +0 -0
  368. package/server/models/usergroup.js +2 -2
  369. package/server/models/vanchuyen.js +3 -3
  370. package/server/models/vat.js +0 -0
  371. package/server/models/vatra.js +0 -0
  372. package/server/models/vatvao.js +0 -0
  373. package/server/models/versioninfo.js +0 -0
  374. package/server/models/voice-command.js +0 -0
  375. package/server/models/vsocai.js +0 -0
  376. package/server/models/waitevent.js +0 -0
  377. package/server/models/wallet.js +0 -0
  378. package/server/models/warranty.js +2 -2
  379. package/server/models/xaphuong.js +0 -0
  380. package/server/models/xhd.js +2 -2
  381. package/server/models/ytdd_ck.js +0 -0
  382. package/server/models/ytdd_dk.js +0 -0
  383. package/server/models/zalo.js +0 -0
  384. package/server/modules/lists/bg-cddiem.js +0 -0
  385. package/server/modules/lists/bg-cddt.js +0 -0
  386. package/server/modules/lists/bg-cdkh.js +0 -0
  387. package/server/modules/lists/bg-cdtk.js +0 -0
  388. package/server/modules/lists/bg-cdvt.js +0 -0
  389. package/server/modules/lists/ls-account.js +0 -0
  390. package/server/modules/lists/ls-approve.js +0 -0
  391. package/server/modules/lists/ls-area.js +0 -0
  392. package/server/modules/lists/ls-assbuy.js +0 -0
  393. package/server/modules/lists/ls-asscashwithdraw.js +0 -0
  394. package/server/modules/lists/ls-assinvestment.js +0 -0
  395. package/server/modules/lists/ls-asskey.js +0 -0
  396. package/server/modules/lists/ls-assneedtobuy.js +0 -0
  397. package/server/modules/lists/ls-assperiod.js +0 -0
  398. package/server/modules/lists/ls-assproduct.js +0 -0
  399. package/server/modules/lists/ls-assreceiver.js +0 -0
  400. package/server/modules/lists/ls-assrequest.js +0 -0
  401. package/server/modules/lists/ls-asssell.js +0 -0
  402. package/server/modules/lists/ls-asstransfer.js +0 -0
  403. package/server/modules/lists/ls-asswithdraw.js +0 -0
  404. package/server/modules/lists/ls-bangtinhluong.js +0 -0
  405. package/server/modules/lists/ls-block.js +0 -0
  406. package/server/modules/lists/ls-building.js +0 -0
  407. package/server/modules/lists/ls-calllog.js +0 -0
  408. package/server/modules/lists/ls-campaign.js +0 -0
  409. package/server/modules/lists/ls-cart.js +0 -0
  410. package/server/modules/lists/ls-chamcong.js +0 -0
  411. package/server/modules/lists/ls-checkin.js +0 -0
  412. package/server/modules/lists/ls-checkinactivity.js +0 -0
  413. package/server/modules/lists/ls-checkinkpi.js +0 -0
  414. package/server/modules/lists/ls-chitieukpi.js +0 -0
  415. package/server/modules/lists/ls-chudethaoluan.js +0 -0
  416. package/server/modules/lists/ls-ckgtluong.js +0 -0
  417. package/server/modules/lists/ls-congdoansx.js +0 -0
  418. package/server/modules/lists/ls-congtacvien.js +0 -0
  419. package/server/modules/lists/ls-consultant.js +0 -0
  420. package/server/modules/lists/ls-contract.js +0 -0
  421. package/server/modules/lists/ls-ctds.js +0 -0
  422. package/server/modules/lists/ls-currency.js +0 -0
  423. package/server/modules/lists/ls-customer.js +0 -0
  424. package/server/modules/lists/ls-datlich.js +0 -0
  425. package/server/modules/lists/ls-dckhauhaots.js +0 -0
  426. package/server/modules/lists/ls-department.js +0 -0
  427. package/server/modules/lists/ls-diagram.js +0 -0
  428. package/server/modules/lists/ls-dkhoc.js +0 -0
  429. package/server/modules/lists/ls-dmban.js +0 -0
  430. package/server/modules/lists/ls-dmbp.js +0 -0
  431. package/server/modules/lists/ls-dmca.js +0 -0
  432. package/server/modules/lists/ls-dmchietkhau.js +0 -0
  433. package/server/modules/lists/ls-dmchietkhauhd.js +0 -0
  434. package/server/modules/lists/ls-dmchucvu.js +0 -0
  435. package/server/modules/lists/ls-dmcpmh.js +0 -0
  436. package/server/modules/lists/ls-dmdiemthuong.js +0 -0
  437. package/server/modules/lists/ls-dmdoi.js +0 -0
  438. package/server/modules/lists/ls-dmdoituongdanhgia.js +0 -0
  439. package/server/modules/lists/ls-dmdt.js +0 -0
  440. package/server/modules/lists/ls-dmdvt.js +0 -0
  441. package/server/modules/lists/ls-dmgiaban.js +0 -0
  442. package/server/modules/lists/ls-dmgiamua.js +0 -0
  443. package/server/modules/lists/ls-dmkc.js +0 -0
  444. package/server/modules/lists/ls-dmkho.js +0 -0
  445. package/server/modules/lists/ls-dmkhuyenmai.js +0 -0
  446. package/server/modules/lists/ls-dmletet.js +0 -0
  447. package/server/modules/lists/ls-dmlo.js +0 -0
  448. package/server/modules/lists/ls-dmloaicong.js +0 -0
  449. package/server/modules/lists/ls-dmloaits.js +0 -0
  450. package/server/modules/lists/ls-dmnguonvon.js +0 -0
  451. package/server/modules/lists/ls-dmnhnd.js +0 -0
  452. package/server/modules/lists/ls-dmnhnv.js +0 -0
  453. package/server/modules/lists/ls-dmnhtask.js +0 -0
  454. package/server/modules/lists/ls-dmnkh.js +0 -0
  455. package/server/modules/lists/ls-dmnv.js +0 -0
  456. package/server/modules/lists/ls-dmnvt.js +3 -3
  457. package/server/modules/lists/ls-dmphatdichvu.js +0 -0
  458. package/server/modules/lists/ls-dmphi.js +0 -0
  459. package/server/modules/lists/ls-dmqct.js +0 -0
  460. package/server/modules/lists/ls-dmqddvt.js +0 -0
  461. package/server/modules/lists/ls-dmtanggiamts.js +0 -0
  462. package/server/modules/lists/ls-dmto.js +0 -0
  463. package/server/modules/lists/ls-dmvt.js +18 -16
  464. package/server/modules/lists/ls-dmyt.js +0 -0
  465. package/server/modules/lists/ls-dokho.js +0 -0
  466. package/server/modules/lists/ls-dvcs.js +0 -0
  467. package/server/modules/lists/ls-events.js +0 -0
  468. package/server/modules/lists/ls-evoucher.js +0 -0
  469. package/server/modules/lists/ls-experiencejourney.js +0 -0
  470. package/server/modules/lists/ls-experiencejourneydata.js +0 -0
  471. package/server/modules/lists/ls-experiencejourneypersona.js +0 -0
  472. package/server/modules/lists/ls-experiencejourneystage.js +0 -0
  473. package/server/modules/lists/ls-file.js +15 -14
  474. package/server/modules/lists/ls-floor.js +0 -0
  475. package/server/modules/lists/ls-floordetail.js +0 -0
  476. package/server/modules/lists/ls-form.js +0 -0
  477. package/server/modules/lists/ls-forminfo.js +0 -0
  478. package/server/modules/lists/ls-formvalue.js +0 -0
  479. package/server/modules/lists/ls-giaoca.js +0 -0
  480. package/server/modules/lists/ls-group.js +0 -0
  481. package/server/modules/lists/ls-hinhthuc.js +0 -0
  482. package/server/modules/lists/ls-hlink.js +0 -0
  483. package/server/modules/lists/ls-hlinkvalue.js +0 -0
  484. package/server/modules/lists/ls-hspbts.js +0 -0
  485. package/server/modules/lists/ls-introducecode.js +0 -0
  486. package/server/modules/lists/ls-introducer.js +0 -0
  487. package/server/modules/lists/ls-kbm-bcdkt.js +0 -0
  488. package/server/modules/lists/ls-kbm-bcqt.js +0 -0
  489. package/server/modules/lists/ls-kbm-kqhdkd.js +0 -0
  490. package/server/modules/lists/ls-kbm-lcttgt.js +0 -0
  491. package/server/modules/lists/ls-kbm-lctttt.js +0 -0
  492. package/server/modules/lists/ls-kbm-pttct.js +0 -0
  493. package/server/modules/lists/ls-kbm-tkgtgt.js +0 -0
  494. package/server/modules/lists/ls-kbm-tmbctc.js +0 -0
  495. package/server/modules/lists/ls-kehoachdtcp.js +0 -0
  496. package/server/modules/lists/ls-keyresult.js +0 -0
  497. package/server/modules/lists/ls-khunghangthanhvien.js +0 -0
  498. package/server/modules/lists/ls-kygui.js +0 -0
  499. package/server/modules/lists/ls-label.js +0 -0
  500. package/server/modules/lists/ls-lesson.js +0 -0
  501. package/server/modules/lists/ls-lienhe.js +0 -0
  502. package/server/modules/lists/ls-like-module.js +0 -0
  503. package/server/modules/lists/ls-link.js +0 -0
  504. package/server/modules/lists/ls-loaidiem.js +0 -0
  505. package/server/modules/lists/ls-lock.js +0 -0
  506. package/server/modules/lists/ls-log.js +0 -0
  507. package/server/modules/lists/ls-mailaccount.js +0 -0
  508. package/server/modules/lists/ls-mailreceived.js +0 -0
  509. package/server/modules/lists/ls-mailschedule.js +0 -0
  510. package/server/modules/lists/ls-mailsent.js +0 -0
  511. package/server/modules/lists/ls-mailtemplate.js +0 -0
  512. package/server/modules/lists/ls-maudanhgia.js +0 -0
  513. package/server/modules/lists/ls-message2.js +0 -0
  514. package/server/modules/lists/ls-message2setting.js +0 -0
  515. package/server/modules/lists/ls-news.js +0 -0
  516. package/server/modules/lists/ls-newsfeed.js +0 -0
  517. package/server/modules/lists/ls-nhadat.js +0 -0
  518. package/server/modules/lists/ls-note.js +0 -0
  519. package/server/modules/lists/ls-okr.js +0 -0
  520. package/server/modules/lists/ls-okrdiagram.js +0 -0
  521. package/server/modules/lists/ls-opportunity.js +0 -0
  522. package/server/modules/lists/ls-options.js +0 -0
  523. package/server/modules/lists/ls-parameter.js +0 -0
  524. package/server/modules/lists/ls-participant.js +0 -0
  525. package/server/modules/lists/ls-phieudanhgia.js +0 -0
  526. package/server/modules/lists/ls-phucap.js +0 -0
  527. package/server/modules/lists/ls-profile.js +0 -0
  528. package/server/modules/lists/ls-ptthanhtoan.js +0 -0
  529. package/server/modules/lists/ls-qts-dieuchinh.js +0 -0
  530. package/server/modules/lists/ls-reason.js +0 -0
  531. package/server/modules/lists/ls-rpt.js +0 -0
  532. package/server/modules/lists/ls-rptform.js +0 -0
  533. package/server/modules/lists/ls-service.js +0 -0
  534. package/server/modules/lists/ls-session.js +0 -0
  535. package/server/modules/lists/ls-shortcut.js +0 -0
  536. package/server/modules/lists/ls-sosanxuat.js +0 -0
  537. package/server/modules/lists/ls-step.js +0 -0
  538. package/server/modules/lists/ls-strategicdiagram.js +0 -0
  539. package/server/modules/lists/ls-strategicgoal.js +0 -0
  540. package/server/modules/lists/ls-strategickpi.js +0 -0
  541. package/server/modules/lists/ls-strategicobjective.js +0 -0
  542. package/server/modules/lists/ls-strategicplan.js +0 -0
  543. package/server/modules/lists/ls-support.js +0 -0
  544. package/server/modules/lists/ls-tacgia.js +0 -0
  545. package/server/modules/lists/ls-task.js +0 -0
  546. package/server/modules/lists/ls-taskreg.js +0 -0
  547. package/server/modules/lists/ls-tc.js +0 -0
  548. package/server/modules/lists/ls-templaterpt.js +0 -0
  549. package/server/modules/lists/ls-templatevoucher.js +0 -0
  550. package/server/modules/lists/ls-theloai.js +0 -0
  551. package/server/modules/lists/ls-tontucthoi.js +0 -0
  552. package/server/modules/lists/ls-training.js +0 -0
  553. package/server/modules/lists/ls-transaction.js +0 -0
  554. package/server/modules/lists/ls-usergroup.js +0 -0
  555. package/server/modules/lists/ls-vat.js +0 -0
  556. package/server/modules/lists/ls-waitevent.js +0 -0
  557. package/server/modules/lists/ls-warranty.js +0 -0
  558. package/server/modules/lists/ls_hanmucton.js +0 -0
  559. package/server/modules/lists/ls_spdd_ck.js +0 -0
  560. package/server/modules/lists/ls_spdd_dk.js +0 -0
  561. package/server/modules/lists/ls_ytdd_ck.js +0 -0
  562. package/server/modules/lists/ls_ytdd_dk.js +0 -0
  563. package/server/modules/lists/sys-attend.js +0 -0
  564. package/server/modules/lists/sys-follow.js +0 -0
  565. package/server/modules/lists/sys-right.js +0 -0
  566. package/server/modules/lists/voice-command.js +0 -0
  567. package/server/modules/public/app.js +0 -0
  568. package/server/modules/public/approve.js +0 -0
  569. package/server/modules/public/callin.js +0 -0
  570. package/server/modules/public/comment.js +0 -0
  571. package/server/modules/public/dmnvt.js +0 -0
  572. package/server/modules/public/dmvt.js +0 -0
  573. package/server/modules/public/form.js +0 -0
  574. package/server/modules/public/forminfo.js +0 -0
  575. package/server/modules/public/group.js +0 -0
  576. package/server/modules/public/hlink.js +0 -0
  577. package/server/modules/public/introducecode.js +0 -0
  578. package/server/modules/public/license.js +0 -0
  579. package/server/modules/public/listinfo.js +0 -0
  580. package/server/modules/public/media-webhook.js +0 -0
  581. package/server/modules/public/partner.js +0 -0
  582. package/server/modules/public/paymentCallback.js +0 -0
  583. package/server/modules/public/province.js +0 -0
  584. package/server/modules/public/ptthanhtoan.js +0 -0
  585. package/server/modules/public/subscribe.js +0 -0
  586. package/server/modules/public/support.js +0 -0
  587. package/server/modules/public/tableinfo.js +0 -0
  588. package/server/modules/public/trialinfo.js +0 -0
  589. package/server/modules/public/versioninfo.js +0 -0
  590. package/server/modules/reports/calc-tinhgiatb.js +0 -0
  591. package/server/modules/reports/calc-tinhgiathanh.js +0 -0
  592. package/server/modules/reports/calc-tinhkhauhaots.js +0 -0
  593. package/server/modules/reports/calc-tinhluong.js +0 -0
  594. package/server/modules/reports/rp-bangtinhkhauhao.js +0 -0
  595. package/server/modules/reports/rp-baocaokhachhang.js +0 -0
  596. package/server/modules/reports/rp-bcdkt.js +0 -0
  597. package/server/modules/reports/rp-bcqt.js +0 -0
  598. package/server/modules/reports/rp-bkct.js +0 -0
  599. package/server/modules/reports/rp-bkshipbook.js +0 -0
  600. package/server/modules/reports/rp-bkvanchuyen.js +0 -0
  601. package/server/modules/reports/rp-bkvatra.js +0 -0
  602. package/server/modules/reports/rp-bkvatvao.js +0 -0
  603. package/server/modules/reports/rp-cdpsdiem.js +0 -0
  604. package/server/modules/reports/rp-cdpsdt.js +0 -0
  605. package/server/modules/reports/rp-cdpskh.js +0 -0
  606. package/server/modules/reports/rp-cdpstk.js +0 -0
  607. package/server/modules/reports/rp-chitietchitientheohoadon.js +0 -0
  608. package/server/modules/reports/rp-chitiettaisan.js +0 -0
  609. package/server/modules/reports/rp-chitietthutientheohoadon.js +0 -0
  610. package/server/modules/reports/rp-ckcn.js +0 -0
  611. package/server/modules/reports/rp-ckdiem.js +0 -0
  612. package/server/modules/reports/rp-cktk.js +0 -0
  613. package/server/modules/reports/rp-ckvt.js +0 -0
  614. package/server/modules/reports/rp-ckvttheokho.js +0 -0
  615. package/server/modules/reports/rp-ckvttt.js +0 -0
  616. package/server/modules/reports/rp-congviectheobp.js +0 -0
  617. package/server/modules/reports/rp-congviectheodt.js +0 -0
  618. package/server/modules/reports/rp-congviectheokh.js +0 -0
  619. package/server/modules/reports/rp-congviectheonv.js +0 -0
  620. package/server/modules/reports/rp-congviectheotimeline.js +0 -0
  621. package/server/modules/reports/rp-ctbanle.js +0 -0
  622. package/server/modules/reports/rp-ctdanhgianhanvien.js +0 -0
  623. package/server/modules/reports/rp-cthangbanbitralai.js +0 -0
  624. package/server/modules/reports/rp-ctmuahang.js +0 -0
  625. package/server/modules/reports/rp-cttralaihang.js +0 -0
  626. package/server/modules/reports/rp-databanle.js +0 -0
  627. package/server/modules/reports/rp-diemthuong.js +0 -0
  628. package/server/modules/reports/rp-dkcn.js +0 -0
  629. package/server/modules/reports/rp-dktk.js +0 -0
  630. package/server/modules/reports/rp-dsnhanviencm.js +0 -0
  631. package/server/modules/reports/rp-dsnhanvientb.js +0 -0
  632. package/server/modules/reports/rp-dtbanletheokh.js +0 -0
  633. package/server/modules/reports/rp-dtbanletheokho.js +0 -0
  634. package/server/modules/reports/rp-dtbanletheonam.js +0 -0
  635. package/server/modules/reports/rp-dtbanletheongay.js +0 -0
  636. package/server/modules/reports/rp-dtbanletheonv.js +0 -0
  637. package/server/modules/reports/rp-dtbanletheoquy.js +0 -0
  638. package/server/modules/reports/rp-dtbanletheothang.js +0 -0
  639. package/server/modules/reports/rp-dtbanletheovt.js +0 -0
  640. package/server/modules/reports/rp-dutoanthuchitheodt.js +0 -0
  641. package/server/modules/reports/rp-getPXC2PNC.js +0 -0
  642. package/server/modules/reports/rp-getariseofaccountsbymonth.js +0 -0
  643. package/server/modules/reports/rp-getbtpb.js +0 -0
  644. package/server/modules/reports/rp-getcashbycashier.js +0 -0
  645. package/server/modules/reports/rp-getcschietkhau.js +0 -0
  646. package/server/modules/reports/rp-getdinhmuc4pxk.js +0 -0
  647. package/server/modules/reports/rp-getdk4pkc.js +0 -0
  648. package/server/modules/reports/rp-getdttheoca.js +0 -0
  649. package/server/modules/reports/rp-getinvoice2pay.js +0 -0
  650. package/server/modules/reports/rp-getinvoice2receive.js +0 -0
  651. package/server/modules/reports/rp-getinvoice2return.js +0 -0
  652. package/server/modules/reports/rp-getinvoice2return_bl.js +0 -0
  653. package/server/modules/reports/rp-getkehoachmh4lenhcp.js +0 -0
  654. package/server/modules/reports/rp-getkhauhao.js +0 -0
  655. package/server/modules/reports/rp-getluong.js +0 -0
  656. package/server/modules/reports/rp-getluongchuyen.js +0 -0
  657. package/server/modules/reports/rp-getpn2fee.js +0 -0
  658. package/server/modules/reports/rp-getpn2return.js +0 -0
  659. package/server/modules/reports/rp-getvc2xhd.js +0 -0
  660. package/server/modules/reports/rp-hangbanbitralai.js +0 -0
  661. package/server/modules/reports/rp-hangthanhvien.js +0 -0
  662. package/server/modules/reports/rp-hoadonbanhangtheohantt.js +0 -0
  663. package/server/modules/reports/rp-hoadonmuahangtheohantt.js +0 -0
  664. package/server/modules/reports/rp-kcsns.js +0 -0
  665. package/server/modules/reports/rp-kgchamcong.js +0 -0
  666. package/server/modules/reports/rp-kqdanhgianhanvien.js +0 -0
  667. package/server/modules/reports/rp-kqhdkd.js +0 -0
  668. package/server/modules/reports/rp-lcttgt.js +0 -0
  669. package/server/modules/reports/rp-lctttt.js +0 -0
  670. package/server/modules/reports/rp-linkslist.js +0 -0
  671. package/server/modules/reports/rp-phanbochitienchohoadon.js +0 -0
  672. package/server/modules/reports/rp-phanbothutienchohoadon.js +0 -0
  673. package/server/modules/reports/rp-ptbitralai.js +0 -0
  674. package/server/modules/reports/rp-ptcttct.js +0 -0
  675. package/server/modules/reports/rp-ptdonhang.js +0 -0
  676. package/server/modules/reports/rp-pttct.js +0 -0
  677. package/server/modules/reports/rp-pttctkho.js +0 -0
  678. package/server/modules/reports/rp-pttctkho2.js +0 -0
  679. package/server/modules/reports/rp-sctbhxh.js +0 -0
  680. package/server/modules/reports/rp-sctcnkh.js +0 -0
  681. package/server/modules/reports/rp-sctdiem.js +0 -0
  682. package/server/modules/reports/rp-sctdt.js +0 -0
  683. package/server/modules/reports/rp-sctdtcp.js +0 -0
  684. package/server/modules/reports/rp-sctluong.js +0 -0
  685. package/server/modules/reports/rp-sctthuetncn.js +0 -0
  686. package/server/modules/reports/rp-scttk.js +0 -0
  687. package/server/modules/reports/rp-sctvt.js +0 -0
  688. package/server/modules/reports/rp-sctvt_sl.js +0 -0
  689. package/server/modules/reports/rp-sctvttt.js +0 -0
  690. package/server/modules/reports/rp-search.js +0 -0
  691. package/server/modules/reports/rp-socai.js +0 -0
  692. package/server/modules/reports/rp-socaitk.js +0 -0
  693. package/server/modules/reports/rp-sochut.js +0 -0
  694. package/server/modules/reports/rp-sokho.js +0 -0
  695. package/server/modules/reports/rp-sokhott.js +0 -0
  696. package/server/modules/reports/rp-sonkbh.js +0 -0
  697. package/server/modules/reports/rp-sonkc.js +0 -0
  698. package/server/modules/reports/rp-sonkct.js +0 -0
  699. package/server/modules/reports/rp-sonkmh.js +0 -0
  700. package/server/modules/reports/rp-sonktt.js +0 -0
  701. package/server/modules/reports/rp-soquy.js +0 -0
  702. package/server/modules/reports/rp-sosanhkhvatt.js +0 -0
  703. package/server/modules/reports/rp-sotaisan.js +0 -0
  704. package/server/modules/reports/rp-sotiengui.js +0 -0
  705. package/server/modules/reports/rp-taodinhmuctudkhoc.js +0 -0
  706. package/server/modules/reports/rp-thdanhgianhanvien.js +0 -0
  707. package/server/modules/reports/rp-thgt.js +0 -0
  708. package/server/modules/reports/rp-thnxt.js +0 -0
  709. package/server/modules/reports/rp-thnxt_sl.js +0 -0
  710. package/server/modules/reports/rp-thnxttt.js +0 -0
  711. package/server/modules/reports/rp-tkbanhangtheogioithieu.js +0 -0
  712. package/server/modules/reports/rp-tkgioithieukh.js +0 -0
  713. package/server/modules/reports/rp-tkgtgt.js +0 -0
  714. package/server/modules/reports/rp-tmbctc.js +0 -0
  715. package/server/modules/reports/rp-tonghopbanhang.js +0 -0
  716. package/server/modules/reports/rp-tonghopmuahang.js +0 -0
  717. package/server/modules/reports/rp-tonghoptralaihang.js +0 -0
  718. package/server/modules/reports/rp-uoctinhnvl.js +0 -0
  719. package/server/modules/reports/rp-wallet.js +0 -0
  720. package/server/modules/reports/rpt-tkdiemtichluy.js +0 -0
  721. package/server/modules/systems/sys-app.js +0 -0
  722. package/server/modules/systems/sys-colleague.js +0 -0
  723. package/server/modules/systems/sys-exportexceltemplate.js +0 -0
  724. package/server/modules/systems/sys-fieldright.js +0 -0
  725. package/server/modules/systems/sys-importexceltemplate.js +0 -0
  726. package/server/modules/systems/sys-labelinfo.js +0 -0
  727. package/server/modules/systems/sys-license.js +0 -0
  728. package/server/modules/systems/sys-listinfo.js +0 -0
  729. package/server/modules/systems/sys-message.js +0 -0
  730. package/server/modules/systems/sys-moduleinfo.js +0 -0
  731. package/server/modules/systems/sys-notification.js +0 -0
  732. package/server/modules/systems/sys-quanhuyen.js +0 -0
  733. package/server/modules/systems/sys-reportinfo.js +0 -0
  734. package/server/modules/systems/sys-rptobject.js +0 -0
  735. package/server/modules/systems/sys-schedule.js +0 -0
  736. package/server/modules/systems/sys-sysconfig.js +0 -0
  737. package/server/modules/systems/sys-sysgroup.js +0 -0
  738. package/server/modules/systems/sys-tableinfo.js +0 -0
  739. package/server/modules/systems/sys-templatestore.js +0 -0
  740. package/server/modules/systems/sys-tinhthanh.js +0 -0
  741. package/server/modules/systems/sys-token.js +0 -0
  742. package/server/modules/systems/sys-trangthai.js +0 -0
  743. package/server/modules/systems/sys-trialinfo.js +0 -0
  744. package/server/modules/systems/sys-user.js +2 -2
  745. package/server/modules/systems/sys-users.js +0 -0
  746. package/server/modules/systems/sys-versioninfo.js +0 -0
  747. package/server/modules/systems/sys-xaphuong.js +0 -0
  748. package/server/modules/vouchers/vo-bc1.js +0 -0
  749. package/server/modules/vouchers/vo-bc5.js +0 -0
  750. package/server/modules/vouchers/vo-bg1.js +0 -0
  751. package/server/modules/vouchers/vo-bg2.js +0 -0
  752. package/server/modules/vouchers/vo-bn1.js +0 -0
  753. package/server/modules/vouchers/vo-dinhmucsx.js +0 -0
  754. package/server/modules/vouchers/vo-dn0.js +0 -0
  755. package/server/modules/vouchers/vo-dnm.js +0 -0
  756. package/server/modules/vouchers/vo-hd1.js +0 -0
  757. package/server/modules/vouchers/vo-hd2.js +0 -0
  758. package/server/modules/vouchers/vo-hd3.js +0 -0
  759. package/server/modules/vouchers/vo-hd7.js +0 -0
  760. package/server/modules/vouchers/vo-kbbtpb.js +0 -0
  761. package/server/modules/vouchers/vo-kehoachmh.js +0 -0
  762. package/server/modules/vouchers/vo-lenhcapphat.js +0 -0
  763. package/server/modules/vouchers/vo-lenhsx.js +0 -0
  764. package/server/modules/vouchers/vo-pbl.js +14 -14
  765. package/server/modules/vouchers/vo-pc0.js +0 -0
  766. package/server/modules/vouchers/vo-pc1.js +0 -0
  767. package/server/modules/vouchers/vo-pc2.js +0 -0
  768. package/server/modules/vouchers/vo-pc3.js +0 -0
  769. package/server/modules/vouchers/vo-pdn.js +0 -0
  770. package/server/modules/vouchers/vo-pdx.js +0 -0
  771. package/server/modules/vouchers/vo-pkc.js +0 -0
  772. package/server/modules/vouchers/vo-pkh.js +0 -0
  773. package/server/modules/vouchers/vo-pkk.js +0 -0
  774. package/server/modules/vouchers/vo-pkt.js +0 -0
  775. package/server/modules/vouchers/vo-pn1.js +0 -0
  776. package/server/modules/vouchers/vo-pn2.js +0 -0
  777. package/server/modules/vouchers/vo-pn3.js +0 -0
  778. package/server/modules/vouchers/vo-pn5.js +0 -0
  779. package/server/modules/vouchers/vo-pn6.js +0 -0
  780. package/server/modules/vouchers/vo-pn9.js +0 -0
  781. package/server/modules/vouchers/vo-pnc.js +0 -0
  782. package/server/modules/vouchers/vo-pnh.js +0 -0
  783. package/server/modules/vouchers/vo-pnk.js +0 -0
  784. package/server/modules/vouchers/vo-po1.js +0 -0
  785. package/server/modules/vouchers/vo-ppb.js +0 -0
  786. package/server/modules/vouchers/vo-pt1.js +0 -0
  787. package/server/modules/vouchers/vo-pt5.js +0 -0
  788. package/server/modules/vouchers/vo-ptl.js +0 -0
  789. package/server/modules/vouchers/vo-purchase_contract.js +0 -0
  790. package/server/modules/vouchers/vo-pxc.js +0 -0
  791. package/server/modules/vouchers/vo-pxh.js +0 -0
  792. package/server/modules/vouchers/vo-pxk.js +0 -0
  793. package/server/modules/vouchers/vo-qts.js +0 -0
  794. package/server/modules/vouchers/vo-sale_contract.js +0 -0
  795. package/server/modules/vouchers/vo-shipbook.js +0 -0
  796. package/server/modules/vouchers/vo-so1.js +99 -93
  797. package/server/modules/vouchers/vo-so2.js +0 -0
  798. package/server/modules/vouchers/vo-so3.js +0 -0
  799. package/server/modules/vouchers/vo-so4.js +0 -0
  800. package/server/modules/vouchers/vo-so5.js +21 -20
  801. package/server/modules/vouchers/vo-vanchuyen.js +0 -0
  802. package/server/modules/vouchers/vo-xhd.js +0 -0
  803. package/server/route.js +6 -6
  804. package/server/libs/StaticPool.js +0 -55
  805. package/server/libs/WorkerPool2.js +0 -55
  806. package/server/libs/array-funcs.js +0 -1
  807. package/server/libs/syncSQL.js +0 -7
  808. package/server/models/invpackage.js +0 -4
  809. package/server/models/invproject.js +0 -6
  810. package/server/models/invround.js +0 -4
  811. package/server/models/invuser.js +0 -3
  812. package/server/modules/bot/webhook.js +0 -185
  813. package/server/modules/lists/ls-invpackage.js +0 -4
  814. package/server/modules/lists/ls-invproject.js +0 -5
  815. package/server/modules/lists/ls-invround.js +0 -3
  816. package/server/modules/lists/ls-invuser.js +0 -4
  817. package/server/modules/systems/sys-comment.js +0 -7
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.1.31",
5
+ "version": "12.2.0",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -79,6 +79,7 @@
79
79
  "socket.io": "^4.1.2",
80
80
  "socket.io-redis": "^6.1.1",
81
81
  "sticky-session": "^1.1.2",
82
+ "toobusy-js": "^0.5.1",
82
83
  "underscore": "^1.13.1",
83
84
  "unidecode": "^0.1.8",
84
85
  "validate.js": "^0.13.1",
package/server/app.js CHANGED
@@ -1,11 +1,12 @@
1
1
  'use strict';require("events").EventEmitter.defaultMaxListeners=1E7;
2
2
  const express=require("express"),bodyParser=require("body-parser"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),async=require("async"),_global=require("./global"),User=global.getModel("user"),defaultConfigs=require("./defaultConfigs"),crypto=require("crypto"),mainServer=function($app$$,$options$$={cluster:!0,port:443,useSocket:!0},$callback$jscomp$1$$=null){const $configs$$=global.configs={...defaultConfigs,...$options$$.configs};$configs$$.admins||
3
3
  ($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$options$$.port||$configs$$.PORT||443;var $compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=
4
- $module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
5
- require("cookie-parser");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}),$req$$.cookies.uid=$uid$$);$next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());
6
- $compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie"],
7
- origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));
8
- $app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",
4
+ $module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$toobusy$$.onLag(function($currentLag$$){console.log("Event loop lag detected! Latency: "+$currentLag$$+"ms")});$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now"),$res$$.status(503).send({error:"Server is busy right now, sorry."})):
5
+ $next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,
6
+ $res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}),$req$$.cookies.uid=$uid$$);$next$$()});$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
7
+ $configs$$.paths.uploads||__dirname+"/uploads";$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||
8
+ ($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||"1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",
9
+ extended:!0}));$app$$.use(passport.initialize());$compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("morgan");var $accessLogStream_rfs$$=require("rotating-file-stream");const $logDirectory$$=$configs$$.paths.log||__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);$accessLogStream_rfs$$=$accessLogStream_rfs$$("access.log",{interval:"1d",path:$logDirectory$$});$app$$.use($compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",
9
10
  {stream:$accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server Error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(()=>{function $initSysData$$(){console.log("creating system data...");const $files$$=fs.readdirSync(__dirname+"/data/sys");async.mapSeries($files$$,function($file$$,$callback$jscomp$0$$){setImmediate(()=>{if(".js"==
10
11
  $file$$.substr(-3)){const $data$$=JSON.parse(JSON.stringify(require("./data/sys/"+$file$$).data)),$model$$=global.getModel(""+$file$$);console.log("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$jscomp$0$$($error$$,
11
12
  $rs$$)})})}else $callback$jscomp$0$$()})},function($error$$){if($error$$)return console.log($error$$);console.log("created system data")})}console.log("Connected to Database");var $Agenda_Mailmanagement_redis$$=require("redis");global.clientRedis=$Agenda_Mailmanagement_redis$$.createClient();global.clientRedis.on("connect",function(){console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set()});if(!0!==$options$$.lite){$Agenda_Mailmanagement_redis$$=require("./libs/mailmanagement");
@@ -3,8 +3,8 @@ require("../libs/permission"),OTP=global.getModel("otp"),DIGITS="0123456789",jwt
3
3
  function generateToken($user$$){var $body_n_n$$={email:$user$$.email};configs.APP_SECRET?jwt.sign({user:$body_n_n$$},configs.APP_SECRET):($body_n_n$$=new Date,_crypto.createHash("md5").update($user$$.email+$body_n_n$$.toISOString()).digest("hex"));$body_n_n$$=new Date;return _crypto.createHash("md5").update($user$$.email+$body_n_n$$.toISOString()).digest("hex")}
4
4
  function saveOTP($Phone$$,$otp_code$$,$callback$$,$expires$$=5){let $expire_time$$=new Date;$expire_time$$.setMinutes($expire_time$$.getMinutes()+$expires$$);OTP.create({phone:$Phone$$,otp:$otp_code$$,expire_time:$expire_time$$},($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$callback$$(null,$rs$$.toObject())})}
5
5
  function findByUsername($username$$,$fn$$){if(!$username$$)return $fn$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");User.findOne({$or:[{email:$username$$},{"local.phone":$username$$}]},function($error$$,$result$$){return!$error$$&&$result$$&&$result$$.local?$fn$$(null,$result$$):$fn$$($error$$||`T\u00e0i kho\u1ea3n ${$username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)})}
6
- async function addUserToApp($user$$,$body$$,$session_created$$){if($body$$.id_app){if(!await App.findById($body$$.id_app))throw console.error("Can't find app",$body$$.id_app),"Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin c\u00f4ng ty n\u00e0y";await Participant.asyncCreateParticipant({id_app:$body$$.id_app,name:$body$$.name||$user$$.email,email:$body$$.email,group_id:$body$$.group_id,active:!0,session_created:$session_created$$});await global.getModel("customer").findOne({id_app:$body$$.id_app,
7
- of_user:$user$$.email}).lean()||await Customer.asyncCreateCustomer({ten_kh:$body$$.name||$user$$.email,email:$user$$.email,id_app:$body$$.id_app,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email})}}
6
+ async function addUserToApp($user$$,$body$$,$cust_session_created$$){if($body$$.id_app){if(!await App.findById($body$$.id_app))throw console.error("Can't find app",$body$$.id_app),"Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y th\u00f4ng tin c\u00f4ng ty n\u00e0y";await Participant.asyncCreateParticipant({id_app:$body$$.id_app,name:$body$$.name||$user$$.email,email:$body$$.email,group_id:$body$$.group_id,active:!0,session_created:$cust_session_created$$});await global.getModel("customer").findOne({id_app:$body$$.id_app,
7
+ of_user:$user$$.email}).lean()||($cust_session_created$$={ten_kh:$body$$.name||$user$$.email,email:$user$$.email,id_app:$body$$.id_app,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email},$body$$.customer_info&&($cust_session_created$$={...$body$$.customer_info,...$cust_session_created$$}),$cust_session_created$$.ten_kh||($cust_session_created$$.ten_kh=$body$$.name||$user$$.email),await Customer.asyncCreateCustomer($cust_session_created$$))}}
8
8
  module.exports=async function($app$jscomp$0$$,$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().toLowerCase();setImmediate(function(){findByUsername($username$$,function($err$$,$user$$){if($err$$)return $done$$($err$$);if(!$user$$)return $done$$("T\u00e0i kho\u1ea3n "+
9
9
  $username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if(0==$user$$.status)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=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",
10
10
  $user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))return $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");if(!$user$$.validPassword($password$$))return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,
@@ -30,18 +30,19 @@ global.mongoose.Types.ObjectId.isValid($req$$.query.id_app)){const $id_app$$=$re
30
30
  {if($cust$jscomp$1_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust$jscomp$1_e$$={ten_kh:$user$$.name||$user$$.email,email:$user$$.email,id_app:$id_app$$,user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};validator.isMobilePhone($user$$.email,["vi-VN"])&&($cust$jscomp$1_e$$.dien_thoai=$user$$.email);try{await Customer.asyncCreateCustomer($cust$jscomp$1_e$$)}catch($e$$){console.error("Auto create new customer with error:",$e$$.message)}})}const $accessToken$$=
31
31
  generateToken($user$$);var $group_id_session$jscomp$1_session_created$$=($req$$.cookies||{}).uid;$group_id_session$jscomp$1_session_created$$&&User.updateOne({email:$user$$.email,session_created:null},{session_created:$group_id_session$jscomp$1_session_created$$});(new Token({email:$user$$.email,session_created:$group_id_session$jscomp$1_session_created$$,token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,
32
32
  $rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$jscomp$0$$.get("/check-user/:email",$rateLimiter$$,function($req$$,$res$$){const $email$$=$req$$.params.email;User.findOne({$or:[{email:$email$$},{"local.phone":$email$$}]},{email:1,name:1,picture:1}).lean().exec(function($e$$,$user$$){if($e$$||!$user$$)return $res$$.status(400).send($e$$||`T\u00e0i kho\u1ea3n ${$email$$} kh\u00f4ng t\u1ed3n t\u1ea1i`);$res$$.send($user$$)})});$app$jscomp$0$$.post("/signup",
33
- $rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send("Kh\u00f4ng c\u00f3 n\u1ed9i dung");if($body$$.id_app&&!global.mongoose.Types.ObjectId.isValid($body$$.id_app))return $res$$.status(400).send("id_app kh\u00f4ng h\u1ee3p l\u1ec7");if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){var $app$$=$body$$["g-recaptcha-response"]||$req$$.query["g-recaptcha-response"];if(!$app$$)return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");
34
- try{await permission.verifyReCaptcha($app$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}}let $session_created$$=($req$$.cookies||{}).uid;if($session_created$$&&$body$$.id_app){$app$$=await App.findById($body$$.id_app);if(!$app$$)return $res$$.status(400).send("C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i");if($app$$.options&&$app$$.options.one_account_per_device&&await Participant.findOne({session_created:$session_created$$,id_app:$body$$.id_app}).lean())return $res$$.status(400).send("M\u1ed7i thi\u1ebft b\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n")}if(!$body$$.email)return $res$$.status(400).send("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");
35
- $body$$.email=$body$$.email.trim().toLowerCase();if(!validator.isEmail($body$$.email)&&!validator.isMobilePhone($body$$.email,["vi-VN"]))return $res$$.status(400).send("T\u00e0i kho\u1ea3n \u0111\u0103ng nh\u1eadp ph\u1ea3i l\u00e0 1 \u0111\u1ecba ch\u1ec9 email ho\u1eb7c 1 s\u1ed1 \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng");if(!$body$$.name)return $res$$.status(400).send("H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp");User.findOne({$or:[{email:$body$$.email},{"local.phone":$body$$.email}]},async function($error$jscomp$1$$,
36
- $result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$)if($result$$.local&&$result$$.local.active&&$result$$.local.email==$body$$.email)if($body$$.id_app)try{if(await global.getModel("participant").findOne({id_app:$body$$.id_app,email:$body$$.email}))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i"});await addUserToApp($result$$,$body$$,$session_created$$);return $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+
37
- " \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng")}catch($e$$){return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}else return $res$$.status(400).send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd");else $result$$.local||($result$$.local={});else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=$body$$.name;$result$$.partner=
38
- $body$$.partner;$result$$.session_created=$session_created$$;$body$$.email2&&validator.isEmail($body$$.email2)&&($result$$.email2=$body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send("M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c");if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send("M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng");
39
- $password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($result$$.email+$password$$);$result$$.save(async function($app$jscomp$4_error$$,$newUser$$){if($app$jscomp$4_error$$)return $res$$.status(400).send("Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd");log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$4_error$$=
40
- new App;$app$jscomp$4_error$$.user_created=$result$$.email;$app$jscomp$4_error$$.user_updated=$result$$.email;$app$jscomp$4_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=new Date;$app$jscomp$4_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$4_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$4_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$4_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;
41
- $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$4_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$4_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}try{await addUserToApp($newUser$$,$body$$,$session_created$$)}catch($e$$){return await User.deleteOne({email:$body$$.email}),
42
- $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",{email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+
43
- $error$$)})}),$res$$.send("T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp")):$res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o")})})});$app$jscomp$0$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{if(configs.GOOGLE_RECAPTCHA_SECRET_KEY)try{await permission.verifyReCaptcha($req$$.query["g-recaptcha-response"])}catch($e$$){return $res$$.status(400).send($e$$.message||
44
- $e$$.error||$e$$)}let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t email");$address$$=$address$$.toLowerCase();User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$jscomp$2$$,$result$$){if($error$jscomp$2$$)return $res$$.status(400).send($error$jscomp$2$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);
45
- let $newpassword$$=_crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($result$$.email+$newpassword$$);$result$$.save(function($error$jscomp$1$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);log.create({id_app:"RESETPASSWORD",id_func:"RESETPASSWORD",action:"RESETPASSWORD"},$result$$.email,$req$$.header("user-agent"),$req$$);loadTemplate("reset mat khau.html",{receiver_name:$result$$.name,email:$result$$.email,
46
- password:$newpassword$$},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);$result$$.email&&validator.isEmail($result$$.email)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$)});$result$$.email2&&validator.isEmail($result$$.email2)&&email.sendHtml({to:{name:$result$$.name,
47
- address:$result$$.email2},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$)})});$res$$.send("M\u1eadt kh\u1ea9u c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i th\u00e0nh c\u00f4ng. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y m\u1eadt kh\u1ea9u m\u1edbi, sau \u0111\u00f3 b\u1ea1n n\u00ean \u0111\u1ed5i m\u1eadt kh\u1ea9u n\u00e0y")})})})};
33
+ $rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send({error:"Kh\u00f4ng c\u00f3 n\u1ed9i dung"});if($body$$.id_app&&!global.mongoose.Types.ObjectId.isValid($body$$.id_app))return $res$$.status(400).send("id_app kh\u00f4ng h\u1ee3p l\u1ec7");if(configs.GOOGLE_RECAPTCHA_SECRET_KEY){var $app$$=$body$$["g-recaptcha-response"]||$req$$.query["g-recaptcha-response"];if(!$app$$)return $res$$.status(400).send("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u m\u1ed9t google recaptcha token");
34
+ try{await permission.verifyReCaptcha($app$$)}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}}let $session_created$$=($req$$.cookies||{}).uid;if($session_created$$&&$body$$.id_app){$app$$=await App.findById($body$$.id_app);if(!$app$$)return $res$$.status(400).send({error:"C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i"});if($app$$.options&&$app$$.options.one_account_per_device&&await Participant.findOne({session_created:$session_created$$,id_app:$body$$.id_app}).lean())return $res$$.status(400).send({error:"M\u1ed7i thi\u1ebft b\u1ecb ch\u1ec9 \u0111\u01b0\u1ee3c t\u1ea1o m\u1ed9t t\u00e0i kho\u1ea3n"})}if(!$body$$.email)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n"});
35
+ $body$$.email=$body$$.email.trim().toLowerCase();if(!validator.isEmail($body$$.email)&&!validator.isMobilePhone($body$$.email,["vi-VN"]))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n \u0111\u0103ng nh\u1eadp ph\u1ea3i l\u00e0 1 \u0111\u1ecba ch\u1ec9 email ho\u1eb7c 1 s\u1ed1 \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng"});if(!$body$$.name)return $res$$.status(400).send({error:"H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp"});User.findOne({$or:[{email:$body$$.email},{"local.phone":$body$$.email}]},
36
+ async function($error$jscomp$1$$,$result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$)if(!$result$$.local||configs.require_verify&&!$result$$.local.active||$result$$.local.email!=$body$$.email)$result$$.local||($result$$.local={});else if($body$$.id_app)try{if(await global.getModel("participant").findOne({id_app:$body$$.id_app,email:$body$$.email}))return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n n\u00e0y \u0111\u00e3 t\u1ed3n t\u1ea1i"});await addUserToApp($result$$,
37
+ $body$$,$session_created$$);return $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd th\u00e0nh c\u00f4ng")}catch($e$$){return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}else return $res$$.status(400).send({error:"T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd"});else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=
38
+ $body$$.name;$result$$.partner=$body$$.partner;$result$$.session_created=$session_created$$;$body$$.email2&&validator.isEmail($body$$.email2)&&($result$$.email2=$body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});
39
+ if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"});$password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($result$$.email+$password$$);
40
+ $result$$.save(async function($app$jscomp$4_error$$,$newUser$$){if($app$jscomp$4_error$$)return $res$$.status(400).send({error:"Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd"});log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$4_error$$=new App;$app$jscomp$4_error$$.user_created=$result$$.email;$app$jscomp$4_error$$.user_updated=$result$$.email;$app$jscomp$4_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=
41
+ new Date;$app$jscomp$4_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$4_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$4_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$4_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;$d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$4_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$4_error$$.save(function($error$jscomp$0$$,
42
+ $obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}try{await addUserToApp($newUser$$,$body$$,$session_created$$)}catch($e$$){return await User.deleteOne({email:$body$$.email}),$res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$})}validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",
43
+ {email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+$error$$)})}),$res$$.send("T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp")):
44
+ $res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o")})})});$app$jscomp$0$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{if(configs.GOOGLE_RECAPTCHA_SECRET_KEY)try{await permission.verifyReCaptcha($req$$.query["g-recaptcha-response"])}catch($e$$){return $res$$.status(400).send($e$$.message||$e$$.error||$e$$)}let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t email");$address$$=$address$$.toLowerCase();
45
+ User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$jscomp$2$$,$result$$){if($error$jscomp$2$$)return $res$$.status(400).send($error$jscomp$2$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);let $newpassword$$=_crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($result$$.email+$newpassword$$);
46
+ $result$$.save(function($error$jscomp$1$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);log.create({id_app:"RESETPASSWORD",id_func:"RESETPASSWORD",action:"RESETPASSWORD"},$result$$.email,$req$$.header("user-agent"),$req$$);loadTemplate("reset mat khau.html",{receiver_name:$result$$.name,email:$result$$.email,password:$newpassword$$},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);$result$$.email&&validator.isEmail($result$$.email)&&
47
+ email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+$error$$)});$result$$.email2&&validator.isEmail($result$$.email2)&&email.sendHtml({to:{name:$result$$.name,address:$result$$.email2},subject:"\u0110\u1ed5i m\u1eadt kh\u1ea9u",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui thong tin tai khoan cho nguoi su dung\n"+
48
+ $error$$)})});$res$$.send("M\u1eadt kh\u1ea9u c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i th\u00e0nh c\u00f4ng. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y m\u1eadt kh\u1ea9u m\u1edbi, sau \u0111\u00f3 b\u1ea1n n\u00ean \u0111\u1ed5i m\u1eadt kh\u1ea9u n\u00e0y")})})})};
package/server/cluster.js CHANGED
@@ -1,19 +1,19 @@
1
1
  'use strict';require("events").EventEmitter.defaultMaxListeners=1E7;
2
2
  const express=require("express"),bodyParser=require("body-parser"),passport=require("passport"),https=require("https"),http=require("http"),fs=require("fs"),cors=require("cors"),crypto=require("crypto"),_global=require("./global"),defaultConfigs=require("./defaultConfigs"),sslConfig=require("./sslConfig"),clusterServer=function($app$$,$sslDir$$,$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$={},$_port_accessLogStream_rfs$$=9999,$options$$={start_import_data_pool:!1,
3
3
  start_report_pool:!0,useAgenda:!0,createRedisCache:!0}){const $configs$$=global.configs={...defaultConfigs,...$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,cluster:0!=$options$$.cluster};$configs$$.admins||($configs$$.admins=$configs$$.adminUsers.map($u$$=>$u$$.email));$configs$$.supportUsers||($configs$$.supportUsers=[...$configs$$.admins]);$configs$$.public_token||($configs$$.public_token="flex.public.token");global.port=$_port_accessLogStream_rfs$$;$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
4
- require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=$module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("express-session");
5
- $app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("cookie-parser");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),
6
- $res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}),$req$$.cookies.uid=$uid$$);$next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
7
- require("multer")({dest:$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);$app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));
8
- $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_modulesVisible_morgan_multer_root_dir_uploads_session$$=
9
- 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_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>
10
- $res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("Connected to Database");global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");global.clientRedis=$clientMongo_redis$$.createClient({enable_offline_queue:!1});global.clientRedis.on("connect",async function(){console.log("redis connected");
11
- 0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();var $Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/mailmanagement");global.mailmanagement=new $Agenda_Mailmanagement_StaticPool_StaticPool$$;!1!==$options$$.useAgenda&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("agenda"),global.agenda=new $Agenda_Mailmanagement_StaticPool_StaticPool$$({db:{address:$configs$$.database.url}}),require("./libs/schedule").define(),await global.agenda.start());global.getModel("schedule").start();
12
- require("./route")($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$.timeout=6E5;global.getModel("user").initSocket($Agenda_Mailmanagement_StaticPool_StaticPool$$);if(!1!==$options$$.cluster){if(!require("sticky-session").listen($Agenda_Mailmanagement_StaticPool_StaticPool$$,global.port))$Agenda_Mailmanagement_StaticPool_StaticPool$$.once("listening",function(){console.log("server cluster started on",
13
- global.port)});$Agenda_Mailmanagement_StaticPool_StaticPool$$=require("cluster");$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("online",function($worker$$){console.info("worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $Agenda_Mailmanagement_StaticPool_StaticPool$$.listen(global.port,
14
- ()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js"),global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=
15
- require("./libs/WorkerStaticPool"),global.reportMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js"),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",$err$$)})};
16
- process.on("uncaughtException",function($err$jscomp$2_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$2_error$$.message);console.error($err$jscomp$2_error$$.stack);$err$jscomp$2_error$$=`
4
+ require($configs$$.paths.menu||"./menu").getModules();global.modulesInMenu={};Object.values($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$).forEach(function($module$$){global.modulesInMenu[$module$$.name]=$module$$});require("moment-timezone").tz.setDefault($configs$$.timezone||"Asia/Ho_Chi_Minh");$app$$||($app$$=express());$app$$.set("trust proxy",1);const $toobusy$$=require("toobusy-js");$configs$$.maxLag&&$toobusy$$.maxLag($configs$$.maxLag);$toobusy$$.onLag(function($currentLag$$){console.log("Event loop lag detected! Latency: "+
5
+ $currentLag$$+"ms")});$app$$.use(function($req$$,$res$$,$next$$){$toobusy$$()?(console.error("Server is busy right now"),$res$$.status(503).send({error:"Server is busy right now, sorry."})):$next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("express-session");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$({secret:"QV098PVT123456HLBN",resave:!1,saveUninitialized:!0,cookie:{secure:!1}}));$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=
6
+ require("cookie-parser");$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$app$$.use(function($req$$,$res$$,$next$$){let $uid$$=$req$$.cookies.uid;$uid$$||($uid$$="uid:"+crypto.randomBytes(20).toString("hex"),$res$$.cookie("uid",$uid$$,{expires:new Date(Date.now()+31536E6),sameSite:"none",secure:!0}),$req$$.cookies.uid=$uid$$);$next$$()});$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("compression");
7
+ $app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=$configs$$.paths.uploads||__dirname+"/uploads";$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=require("multer")({dest:$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$,limits:{fileSize:$configs$$.limitFileSize||1048576}});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$);
8
+ $app$$.use(cors({credentials:!0,exposedHeaders:["set-cookie"],origin:($origin$$,$callback$$)=>{$callback$$(null,!0)}}));$configs$$.paths||($configs$$.paths={});$app$$.use("/",express.static($configs$$.paths.public||__dirname+"/public"));$app$$.use("/admin",express.static($configs$$.paths.admin||__dirname+"/admin"));$app$$.use("/templates",express.static($configs$$.paths.templates||__dirname+"/templates"));$app$$.use("/images",express.static($configs$$.paths.images||__dirname+"/images"));$app$$.use(bodyParser.json({limit:$configs$$.limitRequestSize||
9
+ "1mb"}));$app$$.use(bodyParser.urlencoded({limit:$configs$$.limitRequestSize||"1mb",extended:!0}));$app$$.use(passport.initialize());$_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$=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",
10
+ {interval:"1d",path:$logDirectory$$});$app$$.use($_configs_compress_cookieParser_modulesVisible_morgan_multer_root_dir_uploads_session$$("combined",{stream:$_port_accessLogStream_rfs$$,skip:function($req$$,$res$$){return 400>$res$$.statusCode}}));$app$$.use(function($err$$,$req$$,$res$$,$next$$){console.error($err$$.stack);$res$$.status(500).send("Server error!")});global.mongoose.connect($configs$$.database.url,{useNewUrlParser:!0}).then(async $clientMongo_redis$$=>{console.log("Connected to Database");
11
+ global.clientMongo=$clientMongo_redis$$;$clientMongo_redis$$=require("redis");global.clientRedis=$clientMongo_redis$$.createClient({enable_offline_queue:!1});global.clientRedis.on("connect",async function(){console.log("redis connected");0!=$options$$.createRedisCache&&require("./libs/redis-cache").set();var $Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/mailmanagement");global.mailmanagement=new $Agenda_Mailmanagement_StaticPool_StaticPool$$;!1!==$options$$.useAgenda&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=
12
+ require("agenda"),global.agenda=new $Agenda_Mailmanagement_StaticPool_StaticPool$$({db:{address:$configs$$.database.url}}),require("./libs/schedule").define(),await global.agenda.start());global.getModel("schedule").start();require("./route")($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$=$configs$$.use_ssl?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$Agenda_Mailmanagement_StaticPool_StaticPool$$.timeout=6E5;global.getModel("user").initSocket($Agenda_Mailmanagement_StaticPool_StaticPool$$);
13
+ if(!1!==$options$$.cluster){if(!require("sticky-session").listen($Agenda_Mailmanagement_StaticPool_StaticPool$$,global.port))$Agenda_Mailmanagement_StaticPool_StaticPool$$.once("listening",function(){console.log("server cluster started on",global.port)});$Agenda_Mailmanagement_StaticPool_StaticPool$$=require("cluster");$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){console.error("worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$Agenda_Mailmanagement_StaticPool_StaticPool$$.on("online",
14
+ function($worker$$){console.info("worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $Agenda_Mailmanagement_StaticPool_StaticPool$$.listen(global.port,()=>{console.log("server start at "+global.port+" port")});$options$$.start_import_data_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/inputWorker.js"),
15
+ global.importDataMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load import data pool")}));$options$$.start_report_pool&&($Agenda_Mailmanagement_StaticPool_StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $Agenda_Mailmanagement_StaticPool_StaticPool$$(__dirname+"/workers/reportWorker.js"),global.reportMainPool.exec({load:!0,configs:JSON.parse(JSON.stringify($configs$$))},()=>{console.log("load report pool")}))})}).catch($err$$=>{console.error("Not Connected to Database ERROR!",
16
+ $err$$)})};process.on("uncaughtException",function($err$jscomp$2_error$$){console.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$2_error$$.message);console.error($err$jscomp$2_error$$.stack);$err$jscomp$2_error$$=`
17
17
  Error: ${$err$jscomp$2_error$$.message}
18
18
  Stack: ${$err$jscomp$2_error$$.stack}
19
19
  `;try{const $logDirectory$$=__dirname+"/log";fs.existsSync($logDirectory$$)||fs.mkdirSync($logDirectory$$);fs.writeFile(`${$logDirectory$$}/error-${(new Date).getTime()}.txt`,$err$jscomp$2_error$$,()=>{console.log("wrote log error")})}catch($e$$){console.log($e$$)}process.exit(1)});module.exports=clusterServer;
@@ -14,18 +14,19 @@ class controller{constructor($router$$,$model$$,$name$$,$options$jscomp$0$$={isV
14
14
  !0===$options$jscomp$0$$.require_id_app?(this.require_id_app=!0,this.route_name=`/:id_app/${this.module}`):(this.require_id_app=!1,this.route_name=`/${this.module}`);this.collection_name=$options$jscomp$0$$.collection_name?$options$jscomp$0$$.collection_name:$name$$;this.sort=$options$jscomp$0$$.sort;this.unique=$options$jscomp$0$$.unique;this.getting=$options$jscomp$0$$.onGetting;this.finding=$options$jscomp$0$$.onFinding;this.found=$options$jscomp$0$$.onFound;this.validating=$options$jscomp$0$$.onValidating;
15
15
  this.saving=$options$jscomp$0$$.onSaving;this.creating=$options$jscomp$0$$.onCreating;this.created=$options$jscomp$0$$.onCreated;this.updating=$options$jscomp$0$$.onUpdating;this.updated=$options$jscomp$0$$.onUpdated;this.deleting=$options$jscomp$0$$.onDeleting;this.deleted=$options$jscomp$0$$.onDeleted;this.approveData=$options$jscomp$0$$.approveData;this.view=$options$jscomp$0$$.onView;this.asyncView=async($user$$,$items$$,$options$$)=>{const $self$$=this;return new Promise($resolve$$=>{$self$$.onView($user$$,
16
16
  $items$$,($error$$,$rs$$)=>{if($error$$)return console.error($error$$),$resolve$$($items$$);$resolve$$($rs$$)},$options$$)})};this.onView=($user$$,$items$$,$next$$,$options$$)=>{let $self$$=this,$fields_load$$="";$options$$&&$options$$.req&&$options$$.req.query&&$options$$.req.query.fields&&($fields_load$$=$options$$.req.query.fields);let $schema_paths$$=$model$$.schema.paths;underscore.has($schema_paths$$,"exfields")&&$items$$.forEach($item$$=>{delete $item$$.__v;$item$$.exfields||($item$$.exfields=
17
- {})});async.series({_user_created:$callback$$=>{$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_user_updated:$callback$$=>{$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>{!$fields_load$$||0<=$fields_load$$.indexOf("approve_data")?async.mapSeries($items$$,
18
- ($item$$,$next$$)=>{setImmediate(()=>{Approve.find({id_ct:$item$$._id.toString()},{title:1,trang_thai:1,user_approved:1,user_approved_name:1,date_approved:1,user_denied:1,user_denied_name:1,date_denied:1}).lean().exec(async($e$$,$rs$$)=>{setImmediate(async()=>{$item$$.approve_data=$rs$$;await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.asyncJoinModel2($item$$.id_app,
19
- Participant,{where:{user_denied:"email"},fields:{user_denied_name:"name",signature_image:"signature_image"}});$next$$(null)})})})},()=>{$callback$$(null)}):$callback$$(null)},transfer_ct:$callback$$=>{if(underscore.has($schema_paths$$,"id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue)async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()},
20
- {_id:1}).lean().exec(async($e$$,$rs$$)=>{$rs$$&&($item$$.id_ct_nhan=$rs$$._id);$next$$(null)})})},()=>{$callback$$(null)});else return $callback$$()},posted:$callback$$=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)?async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(async()=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book,$exists$$=await global.getModel($book$$).findOne({id_ct:$item$$._id.toString()},
21
- {_id:1});$item$$[`${$book$$}_posted`]=!!$exists$$;$next$$()})},()=>{$callback$$(null)}):$callback$$()}},$e$jscomp$0$$=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}setImmediate(()=>
22
- {if($self$$.view)try{$self$$.view($user$$,$items$$,function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);$self$$.dynamicView?$self$$.dynamicView($user$$,$rs$jscomp$0$$||$items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$rs$jscomp$0$$||$items$$)})},$options$$)}catch($e$$){console.error("Error on view of",$name$$,$e$$),$next$$(null,$items$$)}else $self$$.dynamicView?$self$$.dynamicView($user$$,
23
- $items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$items$$)})})};this.excelParse=$options$jscomp$0$$.onExcelParse;this.options=$options$jscomp$0$$;this.replaceIfExists=$options$jscomp$0$$.replaceIfExists;this.notNeedRight=$options$jscomp$0$$.notNeedRight}getProperty($name$$){return this[$name$$]}getNextId(){let $ma_ct$$=this.name;this.router.route(`${this.route_name}/next/:field`).get(($field$$,$res$$)=>{let $id_app$$=$field$$.user.current_id_app;
24
- $field$$=$field$$.params.field;"so_ct"===$field$$?$res$$.send({[$field$$]:$ma_ct$$}):getNextSequence($id_app$$,$ma_ct$$,$field$$,($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})}async checkData($appInfo$$,$data$$,$fn$$){const $options$$=this.options;if($data$$.trang_thai&&$data$$.ma_ct){let $tt$$=await trangthai.findOne({ma_ct:$data$$.ma_ct,ma_trang_thai:$data$$.trang_thai},{check_data:1}).lean();
25
- if($tt$$&&0==$tt$$.check_data)return $fn$$()}async.series({checkTonKho:$callback$jscomp$0$$=>{$data$$.details&&$appInfo$$&&$appInfo$$.options&&$appInfo$$.options.khong_xuat_kho_am&&0!=$options$$.check_stock?(async()=>{let $details$$=$data$$.details.filter($d$$=>$d$$.ma_vt&&$d$$.sl_xuat);await $details$$.asyncJoinModel2($appInfo$$._id,dmvt,{where:{ma_vt:"ma_vt"},fields:["tg_tk","kg_kiem_tra_ton_kho","kg_kiem_tra_ton_kho_tt","combo","ten_vt"]});$details$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.kg_kiem_tra_ton_kho||
26
- 0<($d$$.combo||[]).length);$details$$=$details$$.map($detail$$=>$detail$$.combo&&0<$detail$$.combo.length?$detail$$.combo.map($c$$=>{$c$$=$c$$.toObject?$c$$.toObject():{...$c$$};$c$$.sl_xuat*=$detail$$.sl_xuat;$c$$.ma_kho=$detail$$.ma_kho;return $c$$}):[$detail$$]).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $details$$.asyncJoinModel2($appInfo$$._id,dmqddvt,{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:"ty_le_qd"});let $data_sokho$$=[];$data$$._id&&($data_sokho$$=await Sokho.find({id_ct:$data$$._id.toString()}).lean());
27
- $details$$.forEach($d$$=>{$d$$.he_so_qd=$d$$.ty_le_qd||1;$d$$.sl_xuat_qd=$d$$.he_so_qd*$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.mapSeries($details$$,($d$$,$callback$$)=>{let $ma_kho$$=$d$$.ma_kho||$data$$.ma_kho||$data$$.ma_kho_x,$query$$={ma_vt:$d$$.ma_vt,ma_kho:$ma_kho$$,ngay:new Date,id_app:$appInfo$$._id};$d$$.kg_kiem_tra_ton_kho_tt||($d$$.ma_lo&&($query$$.ma_lo=$d$$.ma_lo),$d$$.han_sd&&($query$$.han_sd=$d$$.han_sd),$d$$.ma_tt1&&
28
- ($query$$.ma_tt1=$d$$.ma_tt1),$d$$.ma_tt2&&($query$$.ma_tt2=$d$$.ma_tt2),$d$$.ma_tt3&&($query$$.ma_tt3=$d$$.ma_tt3));ckvt($query$$,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$?($e$$=$rs$$.csum("ton"),$rs$$=$data_sokho$$.filter($s$$=>$s$$.ma_vt===$d$$.ma_vt&&$s$$.ma_kho===$ma_kho$$).reduce(($a$$,$b$$)=>($a$$.sl_xuat_qd||0)+($b$$.sl_xuat_qd||0),0),$d$$.sl_xuat_qd>utils.round($e$$+$rs$$,2)?$callback$$(`S\u1ea3n ph\u1ea9m ${$d$$.ma_vt} - ${$d$$.ten_vt} c\u00f3 s\u1ed1 l\u01b0\u1ee3ng xu\u1ea5t quy \u0111\u1ed5i (${$d$$.sl_xuat_qd}) l\u1edbn h\u01a1n s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n quy \u0111\u1ed5i (${$e$$+
17
+ {})});async.series({_Participant_created:$callback$$=>{underscore.has($schema_paths$$,"id_app")?$items$$.filter($item$$=>$item$$.user_created).joinModel2($user$$.current_id_app,Participant,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)}):$items$$.filter($item$$=>$item$$.user_created).joinModel2(null,User,{where:{user_created:"email"},fields:{name_user_created:"name"}},()=>{$callback$$(null)})},_Participant_updated:$callback$$=>{underscore.has($schema_paths$$,
18
+ "id_app")?$items$$.filter($item$$=>$item$$.user_updated).joinModel2($user$$.current_id_app,Participant,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)}):$items$$.filter($item$$=>$item$$.user_updated).joinModel2(null,User,{where:{user_updated:"email"},fields:{name_user_updated:"name"}},()=>{$callback$$(null)})},_approve:$callback$$=>{!$fields_load$$||0<=$fields_load$$.indexOf("approve_data")?async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(()=>{Approve.find({id_ct:$item$$._id.toString()},
19
+ {title:1,trang_thai:1,user_approved:1,user_approved_name:1,date_approved:1,user_denied:1,user_denied_name:1,date_denied:1}).lean().exec(async($e$$,$rs$$)=>{setImmediate(async()=>{$item$$.approve_data=$rs$$;await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name",signature_image:"signature_image"}});await $item$$.approve_data.asyncJoinModel2($item$$.id_app,Participant,{where:{user_denied:"email"},fields:{user_denied_name:"name",
20
+ signature_image:"signature_image"}});$next$$(null)})})})},()=>{$callback$$(null)}):$callback$$(null)},transfer_ct:$callback$$=>{if(underscore.has($schema_paths$$,"id_ct_chuyen")&&$user$$.current_app_info&&$user$$.current_app_info.options&&$user$$.current_app_info.options.id_app_thue)async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(()=>{$model$$.findOne({id_app:$user$$.current_app_info.options.id_app_thue,id_ct_chuyen:$item$$._id.toString()},{_id:1}).lean().exec(async($e$$,$rs$$)=>{$rs$$&&
21
+ ($item$$.id_ct_nhan=$rs$$._id);$next$$(null)})})},()=>{$callback$$(null)});else return $callback$$()},posted:$callback$$=>{$options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)?async.mapSeries($items$$,($item$$,$next$$)=>{setImmediate(async()=>{let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book,$exists$$=await global.getModel($book$$).findOne({id_ct:$item$$._id.toString()},{_id:1});$item$$[`${$book$$}_posted`]=
22
+ !!$exists$$;$next$$()})},()=>{$callback$$(null)}):$callback$$()}},$e$jscomp$0$$=>{if($e$jscomp$0$$)return $next$$($e$jscomp$0$$);if($options$$&&$options$$.req&&($options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book)){let $book$$=$options$$.req.query.show_posted_book||$options$$.req.query.show_not_post_book;$items$$=$items$$.filter($r$$=>$options$$.req.query.show_posted_book?$r$$[`${$book$$}_posted`]:!$r$$[`${$book$$}_posted`])}setImmediate(()=>{if($self$$.view)try{$self$$.view($user$$,
23
+ $items$$,function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $next$$($error$jscomp$0$$);$self$$.dynamicView?$self$$.dynamicView($user$$,$rs$jscomp$0$$||$items$$,function($error$$,$rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$rs$jscomp$0$$||$items$$)})},$options$$)}catch($e$$){console.error("Error on view of",$name$$,$e$$),$next$$(null,$items$$)}else $self$$.dynamicView?$self$$.dynamicView($user$$,$items$$,function($error$$,
24
+ $rs$$){if($error$$)return $next$$($error$$);$next$$(null,$rs$$||$items$$)}):$next$$(null,$items$$)})})};this.excelParse=$options$jscomp$0$$.onExcelParse;this.options=$options$jscomp$0$$;this.replaceIfExists=$options$jscomp$0$$.replaceIfExists;this.notNeedRight=$options$jscomp$0$$.notNeedRight}getProperty($name$$){return this[$name$$]}getNextId(){let $ma_ct$$=this.name;this.router.route(`${this.route_name}/next/:field`).get(($field$$,$res$$)=>{let $id_app$$=$field$$.user.current_id_app;$field$$=$field$$.params.field;
25
+ "so_ct"===$field$$?$res$$.send({[$field$$]:$ma_ct$$}):getNextSequence($id_app$$,$ma_ct$$,$field$$,($e$$,$rs$$)=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})}async checkData($appInfo$$,$data$$,$fn$$){const $options$$=this.options;if($data$$.trang_thai&&$data$$.ma_ct){let $tt$$=await trangthai.findOne({ma_ct:$data$$.ma_ct,ma_trang_thai:$data$$.trang_thai},{check_data:1}).lean();if($tt$$&&0==$tt$$.check_data)return $fn$$()}async.series({checkTonKho:$callback$jscomp$0$$=>
26
+ {$data$$.details&&$appInfo$$&&$appInfo$$.options&&$appInfo$$.options.khong_xuat_kho_am&&0!=$options$$.check_stock?(async()=>{let $details$$=$data$$.details.filter($d$$=>$d$$.ma_vt&&$d$$.sl_xuat);await $details$$.asyncJoinModel2($appInfo$$._id,dmvt,{where:{ma_vt:"ma_vt"},fields:["tg_tk","kg_kiem_tra_ton_kho","kg_kiem_tra_ton_kho_tt","combo","ten_vt"]});$details$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.kg_kiem_tra_ton_kho||0<($d$$.combo||[]).length);$details$$=$details$$.map($detail$$=>$detail$$.combo&&
27
+ 0<$detail$$.combo.length?$detail$$.combo.map($c$$=>{$c$$=$c$$.toObject?$c$$.toObject():{...$c$$};$c$$.sl_xuat*=$detail$$.sl_xuat;$c$$.ma_kho=$detail$$.ma_kho;return $c$$}):[$detail$$]).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);await $details$$.asyncJoinModel2($appInfo$$._id,dmqddvt,{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:"ty_le_qd"});let $data_sokho$$=[];$data$$._id&&($data_sokho$$=await Sokho.find({id_ct:$data$$._id.toString()}).lean());$details$$.forEach($d$$=>{$d$$.he_so_qd=$d$$.ty_le_qd||
28
+ 1;$d$$.sl_xuat_qd=$d$$.he_so_qd*$d$$.sl_xuat});$details$$=await $details$$.asyncGroupBy(["ma_vt","ma_kho","ten_vt"],["sl_xuat_qd"]);async.mapSeries($details$$,($d$$,$callback$$)=>{let $ma_kho$$=$d$$.ma_kho||$data$$.ma_kho||$data$$.ma_kho_x,$query$$={ma_vt:$d$$.ma_vt,ma_kho:$ma_kho$$,ngay:new Date,id_app:$appInfo$$._id};$d$$.kg_kiem_tra_ton_kho_tt||($d$$.ma_lo&&($query$$.ma_lo=$d$$.ma_lo),$d$$.han_sd&&($query$$.han_sd=$d$$.han_sd),$d$$.ma_tt1&&($query$$.ma_tt1=$d$$.ma_tt1),$d$$.ma_tt2&&($query$$.ma_tt2=
29
+ $d$$.ma_tt2),$d$$.ma_tt3&&($query$$.ma_tt3=$d$$.ma_tt3));ckvt($query$$,function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$?($e$$=$rs$$.csum("ton"),$rs$$=$data_sokho$$.filter($s$$=>$s$$.ma_vt===$d$$.ma_vt&&$s$$.ma_kho===$ma_kho$$).reduce(($a$$,$b$$)=>($a$$.sl_xuat_qd||0)+($b$$.sl_xuat_qd||0),0),$d$$.sl_xuat_qd>utils.round($e$$+$rs$$,2)?$callback$$(`S\u1ea3n ph\u1ea9m ${$d$$.ma_vt} - ${$d$$.ten_vt} c\u00f3 s\u1ed1 l\u01b0\u1ee3ng xu\u1ea5t quy \u0111\u1ed5i (${$d$$.sl_xuat_qd}) l\u1edbn h\u01a1n s\u1ed1 l\u01b0\u1ee3ng t\u1ed3n quy \u0111\u1ed5i (${$e$$+
29
30
  $rs$$})`):$callback$$()):$callback$$()})},$e$$=>{$callback$jscomp$0$$($e$$)})})():$callback$jscomp$0$$()}},$e$$=>{$fn$$($e$$)})}cacheData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());redisCache.set(this.model.collection.name.substring(0,this.model.collection.name.length-1),$obj$$,$callback$$)}deleteData($obj$$,$callback$$){$obj$$&&$obj$$.toObject&&($obj$$=$obj$$.toObject());redisCache.remove(this.model.collection.name.substring(0,this.model.collection.name.length-1),$obj$$,
30
31
  $callback$$)}createRoute($routeName_url$$,$callback$$,$_options$$={method:"GET"}){let $self$$=this;$_options$$.method=$_options$$.method?$_options$$.method.toUpperCase():"GET";let $r$$=function($req$$,$res$$){!1===$self$$.require_id_app?$callback$$($req$$,function($e$$,$rs$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$):permission.hasRight($req$$.params.id_app,$req$$.user.email,$self$$.module,
31
32
  "view",function($error$$,$hr$$){$hr$$?$callback$$($req$$,function($e$$,$rs$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)},$res$$):$res$$.status(403).send({error:$error$$||ERR_NOT_PERMIT,code:ERR_NOT_PERMIT_CODE})},{notNeedRight:$self$$.notNeedRight||$_options$$.notNeedRight})};$routeName_url$$=`${this.route_name}/${$routeName_url$$}`;let $router$$=this.router;"DELETE"==$_options$$.method?$router$$.route($routeName_url$$).delete($r$$):
@@ -36,14 +37,14 @@ $trang_thai_approve$$.trang_thai3)$trang_thai_approve$$.update_after_deny={modul
36
37
  try{return evalute($approveData_condition$$,{master:$obj$$,data:$obj$$})}catch($e$$){return console.error("check condition approve",$e$$,$approveData_condition$$),!1}});$approveDatas$$.filter($a$$=>$a$$.approve_users).forEach($approveData$$=>{setImmediate(()=>{let $title$$=$approveData$$.title||"Y\u00eau c\u1ea7u duy\u1ec7t";if(0<=$title$$.indexOf("return ")){var $ds_nguoi_duyet_str_func$$=$title$$;try{$title$$=evalute($ds_nguoi_duyet_str_func$$,{master:$obj$$,data:$obj$$})}catch($e$$){console.error($e$$,
37
38
  $ds_nguoi_duyet_str_func$$)}}$ds_nguoi_duyet_str_func$$=$approveData$$.approve_users;let $update_after_approve$$=$approveData$$.update_after_approve,$update_after_deny$$=$approveData$$.update_after_deny;if(_.isString($ds_nguoi_duyet_str_func$$))try{let $str_func$$=$ds_nguoi_duyet_str_func$$;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);$ds_nguoi_duyet_str_func$$=evalute($str_func$$,{master:$obj$$,data:$obj$$});if(!_.isArray($ds_nguoi_duyet_str_func$$)){console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",
38
39
  $ds_nguoi_duyet_str_func$$);return}}catch($e$$){console.error($e$$,$ds_nguoi_duyet_str_func$$);return}if($approveData$$.approve_users_custom)try{let $str_func$$=$approveData$$.approve_users_custom;0>$str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);let $ds_nguoi_duyet_custom$$=evalute($str_func$$,{master:$obj$$,data:$obj$$});$ds_nguoi_duyet_custom$$&&(_.isArray($ds_nguoi_duyet_custom$$)?$ds_nguoi_duyet_str_func$$=[...$ds_nguoi_duyet_str_func$$,...$ds_nguoi_duyet_custom$$]:console.error("danh s\u00e1ch ng\u01b0\u1eddi duy\u1ec7t ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng, hi\u1ec7n t\u1ea1i \u0111ang l\u00e0",
39
- $ds_nguoi_duyet_custom$$))}catch($e$$){console.error($e$$,$approveData$$.approve_users_custom)}if($ds_nguoi_duyet_str_func$$&&0!==$ds_nguoi_duyet_str_func$$.length&&($ds_nguoi_duyet_str_func$$=[...(new Set($ds_nguoi_duyet_str_func$$))],$obj$$.trang_thai==$approveData$$.trang_thai)){let $user_approves$$=$ds_nguoi_duyet_str_func$$.map($nguoi_duyet$$=>({email:$nguoi_duyet$$,name:$nguoi_duyet$$}));$user_approves$$.joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{Approve.request($user_request$$,
40
- $user_approves$$,$title$$,$obj$$,$e$$=>{$e$$&&console.error("error create request approve",$e$$.message)},$update_after_approve$$,$approveData$$.template_content,$update_after_deny$$)})}})});$next$$(null,$obj$$)}async import($user$$,$id_app$$,$data$$,$callback$jscomp$0$$,$options$$={replace:!0,req:null}){const $ctrl$$=this;let $replace$$=$options$$.replace,$rows_error$$=[];const $listInfo$$=global.getModel("listinfo");let $info$$=await $listInfo$$.findOne({code:$ctrl$$.name.toLowerCase()}).lean();
41
- $info$$&&await $listInfo$$.updateModel($info$$,$ctrl$$.model);$data$$=$data$$.filter($row$$=>{let $has_data$$=!1;for(let $key$$ in $row$$)if($row$$[$key$$]){$has_data$$=!0;break}return $has_data$$});$data$$.forEach($r$$=>{delete $r$$.ten_dvcs});await $data$$.filter($r$$=>$r$$.ma_dvcs).asyncJoinModel2($id_app$$,global.getModel("dvcs"),{where:{ma_dvcs:"_id"},fields:"ten_dvcs"});async.mapSeries($data$$,function($row$$,$callback$$){const $row_keys$$=Object.keys($row$$);$row_keys$$.filter($key$$=>$ctrl$$.model.schema.paths[$key$$]).forEach($key$$=>
42
- {let $data_type$$=$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase(),$data_value$$=$row$$[$key$$];if($data_value$$&&_.isString($data_value$$)&&("mixed"==$data_type$$||"array"==$data_type$$)&&($data_value$$=$data_value$$.trim(),0==$data_value$$.indexOf("[")||0==$data_value$$.indexOf("{")))try{$row$$[$key$$]=JSONParser($data_value$$)}catch($e$$){delete $row$$[$key$$],console.error("Error parse data",$e$$)}});setImmediate(()=>{delete $row$$.__v;$row$$.ma_dvcs&&!$row$$.ten_dvcs&&delete $row$$.ma_dvcs;
43
- $row$$.id_app&&$id_app$$!=$row$$.id_app&&delete $row$$._id;delete $row$$.id_app;if($replace$$&&($ctrl$$.unique&&0<$ctrl$$.unique.length||$row$$._id)){let $query$$={};$row$$._id?$query$$._id=$row$$._id:(0!=$ctrl$$.require_id_app&&($query$$.id_app=$id_app$$),$ctrl$$.options.unique_imp&&$row$$[$ctrl$$.options.unique_imp]?$query$$[$ctrl$$.options.unique_imp]=$row$$[$ctrl$$.options.unique_imp]:$ctrl$$.unique.forEach(function($k$$){0<=$row_keys$$.indexOf($k$$)&&($query$$[$k$$]=$row$$[$k$$])}));$ctrl$$.model.find($query$$).lean().exec(function($error$$,
44
- $rss$$){if(1<$rss$$.length)return $callback$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng:"+Object.values($query$$).join("-"));setImmediate(()=>{if($error$$)return $callback$$($error$$);if(1===$rss$$.length){let $rs$$=$rss$$[0];$row$$.id_app=$rs$$.id_app;$row$$._id=$rs$$._id.toString();$ctrl$$.unique.forEach(function($k$$){$row$$[$k$$]=$rs$$[$k$$]});update($user$$,$ctrl$$,$rs$$._id,$row$$,function($e$$){if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,
45
- error:"Error update data:"+$_e$$})}$callback$$()},"import",$options$$.req)}else create($user$$,$ctrl$$,$row$$,function($e$$){if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:$_e$$})}$callback$$()},$row$$._id,$options$$.req)})})}else create($user$$,$ctrl$$,$row$$,function($e$$){setImmediate(()=>{if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:$_e$$})}$callback$$()})},$row$$._id,$options$$.req)})},
46
- function($error$$){setImmediate(()=>{console.log("finish import...");if($error$$)return $callback$jscomp$0$$($error$$);0===$rows_error$$.length?$callback$jscomp$0$$(null,{rows_imported:$data$$.length,rows_error:[]}):$callback$jscomp$0$$(null,{rows_imported:$data$$.length-$rows_error$$.length,rows_error:$rows_error$$})})})}}controller.prototype.__proto__=EventEmitter.prototype;
40
+ $ds_nguoi_duyet_custom$$))}catch($e$$){console.error($e$$,$approveData$$.approve_users_custom)}if($ds_nguoi_duyet_str_func$$&&0!==$ds_nguoi_duyet_str_func$$.length&&($ds_nguoi_duyet_str_func$$=[...(new Set($ds_nguoi_duyet_str_func$$))],$obj$$.trang_thai==$approveData$$.trang_thai)){let $user_approves$$=$ds_nguoi_duyet_str_func$$.map($nguoi_duyet$$=>({email:$nguoi_duyet$$,name:$nguoi_duyet$$}));$user_approves$$.joinModel2($obj$$.id_app,Participant,{where:"email",fields:"name"},()=>{[$user_request$$].joinModel2($obj$$.id_app,
41
+ Participant,{where:"email",fields:"name"},()=>{Approve.request($user_request$$,$user_approves$$,$title$$,$obj$$,$e$$=>{$e$$&&console.error("error create request approve",$e$$.message)},$update_after_approve$$,$approveData$$.template_content,$update_after_deny$$)})})}})});$next$$(null,$obj$$)}async import($user$$,$id_app$$,$data$$,$callback$jscomp$0$$,$options$$={replace:!0,req:null}){const $ctrl$$=this;let $replace$$=$options$$.replace,$rows_error$$=[];const $listInfo$$=global.getModel("listinfo");
42
+ let $info$$=await $listInfo$$.findOne({code:$ctrl$$.name.toLowerCase()}).lean();$info$$&&await $listInfo$$.updateModel($info$$,$ctrl$$.model);$data$$=$data$$.filter($row$$=>{let $has_data$$=!1;for(let $key$$ in $row$$)if($row$$[$key$$]){$has_data$$=!0;break}return $has_data$$});$data$$.forEach($r$$=>{delete $r$$.ten_dvcs});await $data$$.filter($r$$=>$r$$.ma_dvcs).asyncJoinModel2($id_app$$,global.getModel("dvcs"),{where:{ma_dvcs:"_id"},fields:"ten_dvcs"});async.mapSeries($data$$,function($row$$,$callback$$){const $row_keys$$=
43
+ Object.keys($row$$);$row_keys$$.filter($key$$=>$ctrl$$.model.schema.paths[$key$$]).forEach($key$$=>{let $data_type$$=$ctrl$$.model.schema.paths[$key$$].instance.toLowerCase(),$data_value$$=$row$$[$key$$];if($data_value$$&&_.isString($data_value$$)&&("mixed"==$data_type$$||"array"==$data_type$$)&&($data_value$$=$data_value$$.trim(),0==$data_value$$.indexOf("[")||0==$data_value$$.indexOf("{")))try{$row$$[$key$$]=JSONParser($data_value$$)}catch($e$$){delete $row$$[$key$$],console.error("Error parse data",
44
+ $e$$)}});setImmediate(()=>{delete $row$$.__v;$row$$.ma_dvcs&&!$row$$.ten_dvcs&&delete $row$$.ma_dvcs;$row$$.id_app&&$id_app$$!=$row$$.id_app&&delete $row$$._id;delete $row$$.id_app;if($replace$$&&($ctrl$$.unique&&0<$ctrl$$.unique.length||$row$$._id)){let $query$$={};$row$$._id?$query$$._id=$row$$._id:(0!=$ctrl$$.require_id_app&&($query$$.id_app=$id_app$$),$ctrl$$.options.unique_imp&&$row$$[$ctrl$$.options.unique_imp]?$query$$[$ctrl$$.options.unique_imp]=$row$$[$ctrl$$.options.unique_imp]:$ctrl$$.unique.forEach(function($k$$){0<=
45
+ $row_keys$$.indexOf($k$$)&&($query$$[$k$$]=$row$$[$k$$])}));$ctrl$$.model.find($query$$).lean().exec(function($error$$,$rss$$){if(1<$rss$$.length)return $callback$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng:"+Object.values($query$$).join("-"));setImmediate(()=>{if($error$$)return $callback$$($error$$);if(1===$rss$$.length){let $rs$$=$rss$$[0];$row$$.id_app=$rs$$.id_app;$row$$._id=$rs$$._id.toString();$ctrl$$.unique.forEach(function($k$$){$row$$[$k$$]=$rs$$[$k$$]});update($user$$,
46
+ $ctrl$$,$rs$$._id,$row$$,function($e$$){if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:"Error update data:"+$_e$$})}$callback$$()},"import",$options$$.req)}else create($user$$,$ctrl$$,$row$$,function($e$$){if($e$$){let $_e$$=$e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:$_e$$})}$callback$$()},$row$$._id,$options$$.req)})})}else create($user$$,$ctrl$$,$row$$,function($e$$){setImmediate(()=>{if($e$$){let $_e$$=
47
+ $e$$;underscore.isArray($_e$$)||($_e$$=[$e$$]);$rows_error$$.push({row:$row$$,error:$_e$$})}$callback$$()})},$row$$._id,$options$$.req)})},function($error$$){setImmediate(()=>{console.log("finish import...");if($error$$)return $callback$jscomp$0$$($error$$);0===$rows_error$$.length?$callback$jscomp$0$$(null,{rows_imported:$data$$.length,rows_error:[]}):$callback$jscomp$0$$(null,{rows_imported:$data$$.length-$rows_error$$.length,rows_error:$rows_error$$})})})}}controller.prototype.__proto__=EventEmitter.prototype;
47
48
  const getNextSequence=async function($id_app$$,$ma_ct$$,$field$$,$callback$$,$options$$={}){var $condition_qct_qcts$$={status:!0,field:$field$$,id_app:$id_app$$,$and:[{$or:[{ma_ct:"#",ma_ct_khac:{$regex:$ma_ct$$,$options:"i"}},{cac_ma_ct:$ma_ct$$.toLowerCase()},{ma_ct:$ma_ct$$.toUpperCase()}]}]};$options$$.id_qct&&($condition_qct_qcts$$._id=$options$$.id_qct);if($options$$.ngay_ct){let $start_date$$=moment($options$$.ngay_ct).startOf("date").toDate(),$end_date$$=moment($options$$.ngay_ct).endOf("date").toDate();
48
49
  $condition_qct_qcts$$.$and.push({$or:[{tu_ngay:null},{tu_ngay:{$lte:$end_date$$}}]});$condition_qct_qcts$$.$and.push({$or:[{den_ngay:null},{den_ngay:{$gte:$start_date$$}}]})}$options$$.toObject&&($options$$=$options$$.toObject());$condition_qct_qcts$$=await dmqct.find($condition_qct_qcts$$).lean();const $keys$$=Object.keys($options$$),$qct$$=$condition_qct_qcts$$.find($qct$$=>{if($qct$$.dieu_kien&&0<$keys$$.length)try{let $str_func$$=$qct$$.dieu_kien;if(0<=$str_func$$.indexOf("async "))return!1;0!==
49
50
  $str_func$$.indexOf("return ")&&($str_func$$=`return ${$str_func$$}`);return evalute($str_func$$,{...$options$$,master:{...$options$$},moment,numeral})}catch($e$$){return console.error("Error find quyen chung tu",$e$$,$qct$$.dieu_kien),!1}else return!0});let $code$$=$qct$$?$qct$$._id.toString():$field$$;counter.getNextSequence($id_app$$,$ma_ct$$,$code$$,async function($error$$,$rs$$){if($error$$)console.error("auto create code for",$ma_ct$$,$code$$,$error$$),$callback$$($error$$);else{if($qct$$){let $tien_to$$=
@@ -55,41 +56,43 @@ controller.prototype.getFieldNoRight=function(){let $ctrl$$=this;this.router.rou
55
56
  controller.prototype.getSocai=function(){this.router.route(`${this.route_name}/socai/:id_ct`).get(function($req$$,$res$$){Socai.find({id_ct:$req$$.params.id_ct}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send($rs$$)})})})};
56
57
  controller.prototype.getVsocai=function(){this.router.route("/:id_app/vsocai/:id_ct").get(function($req$$,$res$$){Socai.find({id_ct:$req$$.params.id_ct}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});let $dks$$=[];$rs$$.forEach($r$$=>{$dks$$.push({no_co:"N",tk:$r$$.tk_no,tien:$r$$.tien,tien_nt:$r$$.tien_nt})});$rs$$.forEach($r$$=>{$dks$$.push({no_co:"C",tk:$r$$.tk_co,
57
58
  tien:$r$$.tien,tien_nt:$r$$.tien_nt})});$res$$.send($dks$$)})})})};controller.prototype.getSokho=function(){this.router.route(`${this.route_name}/sokho/:id_ct`).get(function($req$$,$res$$){Sokho.find({id_ct:$req$$.params.id_ct}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$rs$$.joinModel2($req$$.user.current_id_app,dmvt,{where:"ma_vt",fields:"ten_vt"},function(){$res$$.send($rs$$)})})})})};
58
- controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $sort$$,$model$$=this.model,$ctrl$$=this;const $findRoute$$=[function($req$$,$res$$,$next$$){setImmediate(()=>{var $body$jscomp$2_query$$={};underscore.isObject($req$$.body)&&($body$jscomp$2_query$$=$req$$.body);$body$jscomp$2_query$$={...$req$$.query,...$body$jscomp$2_query$$};var $condition$jscomp$1$$={...$body$jscomp$2_query$$};delete $condition$jscomp$1$$.access_token;$req$$.user&&!$body$jscomp$2_query$$.count&&
59
- "log"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($condition$jscomp$1$$)}},$req$$.user.email,$req$$.header("user-agent"),$req$$);$req$$.query=$body$jscomp$2_query$$;if($body$jscomp$2_query$$.sort)if(underscore.isObject($body$jscomp$2_query$$.sort))$sort$$=$body$jscomp$2_query$$.sort;
60
- else try{$sort$$=JSONParser($body$jscomp$2_query$$.sort)}catch($e$$){console.error("error parse json",$e$$,$body$jscomp$2_query$$.sort)}!$sort$$&&$ctrl$$.sort&&($sort$$=Object.assign({},$ctrl$$.sort));$condition$jscomp$1$$={};let $or$$=[];for(let $k$$ in $body$jscomp$2_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body$jscomp$2_query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($body$jscomp$2_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){console.error($error$$)}else{if("q"===
61
- $k$$&&$body$jscomp$2_query$$[$k$$])try{let $q$$=underscore.isObject($body$jscomp$2_query$$[$k$$])?$body$jscomp$2_query$$[$k$$]:JSONParser($body$jscomp$2_query$$[$k$$]);if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",$q$$),$res$$.status(400).send({error:"Condition is not valid"});($condition$jscomp$1$$=$q$$)||($condition$jscomp$1$$={});if($condition$jscomp$1$$.sync_from_date){let $sync_date$$=
62
- moment(new Date($condition$jscomp$1$$.sync_from_date)).startOf("date").toDate();$condition$jscomp$1$$.date_updated={$gte:$sync_date$$};delete $condition$jscomp$1$$.sync_from_date}continue}catch($e$$){return console.error($e$$,$body$jscomp$2_query$$[$k$$]),$res$$.status(400).send({error:"Condition is not valid"})}if("fields"!==$k$$&&underscore.has($model$$.schema.paths,$k$$))if($ctrl$$.options.findExact[$k$$])$condition$jscomp$1$$[$k$$]=$body$jscomp$2_query$$[$k$$];else{let $item$$={};"number"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?
63
- $item$$[$k$$]=Number($body$jscomp$2_query$$[$k$$]):"date"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=new Date($body$jscomp$2_query$$[$k$$]):"string"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]={$regex:$body$jscomp$2_query$$[$k$$],$options:"i"}:$item$$[$k$$]=$body$jscomp$2_query$$[$k$$];$or$$.push($item$$)}else"$text"===$k$$&&$or$$.push({$text:{$search:$body$jscomp$2_query$$[$k$$]}})}0!==$or$$.length&&("$and"===$body$jscomp$2_query$$.cType?$condition$jscomp$1$$.$and=
64
- $or$$:$condition$jscomp$1$$.$or=$or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition$jscomp$1$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition$jscomp$1$$,function($error$$,$condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),
65
- $e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$next$$()}):($req$$.condition=$condition$jscomp$0$$,$next$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$1$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$next$$()}):($req$$.condition=$condition$jscomp$1$$,
66
- $next$$())})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $res$$.status(403).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});if($admin$$)return $next$$();$req$$.admin=$admin$$;let $condition$$=$req$$.condition;$condition$$||($condition$$={});$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,
67
- $_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$);$req$$.condition=$condition$$;$next$$()})});else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition=$condition$$,$next$$()})},$ctrl$$.name,{notNeedRight:$ctrl$$.options.notNeedRight})},function($req$$,
68
- $res$$,$next$$){if($shareRoute$$)return $next$$();setImmediate(()=>{$ctrl$$.options.assignWiths?async.mapSeries($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($admin$$)return $callback$$();$_condition$$.id_app=$req$$.user.current_id_app;
69
- $m$$.find($_condition$$).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $callback$$($e$$);let $dsdt$$=underscore.pluck($rs$$,$col$$.ref_field);$dsdt$$.push("");$dsdt$$.push(null);$req$$.condition[$col$$.ref_field]={$in:$dsdt$$};$callback$$()})})})},$ctrl$$.name,{notNeedRight:$ctrl$$.options.notNeedRight})})},$e$$=>{setImmediate(()=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});$next$$()})}):$next$$()})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();
70
- setImmediate(()=>{if($req$$.admin||"dmdt"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_dt")||underscore.has($model$$.schema.paths,"id_dt")){let $dmdt$$=mongoose.models.dmdt;permission.getRightDataView($req$$.user.current_id_app,$dmdt$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});if($admin$$)return $next$$();$_condition$$.id_app=
71
- $req$$.user.current_id_app;$req$$.condition.ma_dt&&($_condition$$.ma_dt=$req$$.condition.ma_dt);$dmdt$$.find($_condition$$,{ma_dt:1,_id:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});if(underscore.has($model$$.schema.paths,"ma_dt")){var $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"ma_dt");$dsdt$jscomp$1_dsdt$$.push("");$dsdt$jscomp$1_dsdt$$.push(null);$dsdt$jscomp$1_dsdt$$.push(void 0);$req$$.condition.ma_dt={$in:$dsdt$jscomp$1_dsdt$$}}else $dsdt$jscomp$1_dsdt$$=
72
- underscore.pluck($rs$$,"_id"),$dsdt$jscomp$1_dsdt$$.push(""),$dsdt$jscomp$1_dsdt$$.push(null),$dsdt$jscomp$1_dsdt$$.push(void 0),$req$$.condition.id_dt={$in:$dsdt$jscomp$1_dsdt$$};$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>{if($shareRoute$$||$req$$.admin||"dmkho"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_kho")||underscore.has($model$$.schema.paths,"ma_kho_x")||underscore.has($model$$.schema.paths,"ma_kho_n")){let $dmkho$$=
73
- mongoose.models.dmkho;permission.getRightDataView($req$$.user.current_id_app,$dmkho$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $res$$.status(403).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});if($admin$$)return $next$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition.ma_kho&&($_condition$$.ma_kho=$req$$.condition.ma_kho);$dmkho$$.find($_condition$$,{ma_kho:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>
74
- {if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});let $dskho$$=underscore.pluck($rs$$,"ma_kho");$req$$.condition.ma_kho||($dskho$$.push(""),$dskho$$.push(null),$dskho$$.push(void 0));if(underscore.has($model$$.schema.paths,"ma_kho"))return $req$$.condition.ma_kho={$in:$dskho$$},$next$$();if("pxc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_x"))return $req$$.condition.ma_kho_x={$in:$dskho$$},$next$$();if("pnc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,
75
- "ma_kho_n"))return $req$$.condition.ma_kho_n={$in:$dskho$$},$next$$();$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>{if($shareRoute$$)return $next$$();permission.hasRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});
76
- if(!$req$$.permission)return $res$$.send([]);$next$$()});else{if(!$permission$$)return $res$$.send([]);$next$$()}})},{notNeedRight:$ctrl$$.options.notNeedRight})})},async function($req$$,$res$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||($condition$$={});if($shareRoute$$){$condition$$.shared=!0;var $id_sellers_query$$=(await app.find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$id_sellers_query$$}});
77
- $condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else underscore.has($model$$.schema.paths,"id_app")&&!1!==$ctrl$$.require_id_app&&($condition$$.id_app=$req$$.user.current_id_app);"public"===$req$$.user.email&&underscore.has($model$$.schema.paths,"session_created")&&($condition$$.session_created=($req$$.cookies||{}).uid);underscore.extend($condition$$,$ctrl$$.keyValues);$condition$$.$and&&0===$condition$$.$and.length&&delete $condition$$.$and;$condition$$.$or&&0===$condition$$.$or.length&&
78
- delete $condition$$.$or;$condition$$.$nor&&0===$condition$$.$nor.length&&delete $condition$$.$nor;$id_sellers_query$$=null;if($req$$.query.count)$condition$$.$where?(console.log("phai loai bo $where trong condition"),$id_sellers_query$$=$model$$.count($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})})):$id_sellers_query$$=$model$$.countDocuments($condition$$,
79
- function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})});else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}var $fields$$=$req$$.query.fields;let $gfields$$={};$fields$$&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=
80
- 1)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0});!$fields$$&&(($fields$$=$req$$.query.notfields)&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&(Object.keys($gfields$$).find($k$$=>
81
- 1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").forEach($f$$=>{$f$$&&"_id"!==$f$$&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=
82
- 0));$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);if($req$$.query.group){var $group_page$$=JSONParser($req$$.query.group);$id_sellers_query$$.group($group_page$$)}if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);$id_sellers_query$$.match($match$$)}if($req$$.query.project){var $limit_project$$=
83
- JSONParser($req$$.query.project);$id_sellers_query$$.project($limit_project$$)}else if($gfields$$&&0<Object.keys($gfields$$).length)$limit_project$$=$gfields$$;else if($limit_project$$={_id:1},$group_page$$)for(let $key$$ in $group_page$$)$limit_project$$[$key$$]=1;$id_sellers_query$$.project($limit_project$$);if($req$$.query.aggregate){let $aggregate$$=JSONParser($req$$.query.aggregate);$id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||
84
- $e$$})}else underscore.has($model$$.schema.paths,"id_app")&&0<Object.keys($gfields$$).length&&Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])&&($gfields$$.id_app=1),$id_sellers_query$$=$model$$.find($condition$$,$gfields$$);!$sort$$&&$gfields$$.textScore?$sort$$={textScore:{$meta:"textScore"}}:$sort$$&&($sort$$._id=1);$sort$$&&$id_sellers_query$$.sort($sort$$);"xlsx"!==$req$$.query.type_data&&"1"!=$req$$.query.rpt&&($group_page$$=$req$$.query.page,($limit_project$$=$req$$.query.limit)&&($limit_project$$=
85
- Number($limit_project$$)),$limit_project$$||($limit_project$$=!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name?20:1E5),$limit_project$$&&500<$limit_project$$&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($limit_project$$=500),$group_page$$?$id_sellers_query$$.skip((Number($group_page$$)-1)*$limit_project$$).limit($limit_project$$):$id_sellers_query$$.limit($limit_project$$));$id_sellers_query$$.lean&&($id_sellers_query$$=$id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,
86
- $obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,$condition$$,$gfields$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.series({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||
87
- ($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});$obj4view$$=$rs$jscomp$0$$.found;async.series({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);
88
- $callback$$(null,$viewValue$$)})},{req:$req$$,shareRoute:$shareRoute$$})}},async function($app$jscomp$1_dir_root_template_e$$,$_groupBy_func_string_rs$$){if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app$jscomp$1_dir_root_template_e$$=(configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});
89
- $excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_msg_templatePath$$=$app$jscomp$1_dir_root_template_e$$?`${path.dirname($app$jscomp$1_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app$jscomp$1_dir_root_template_e$$&&($_rs_msg_templatePath$$=`${$app$jscomp$1_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),
90
- $_rs_msg_templatePath$$&&fs.existsSync($_rs_msg_templatePath$$)||($_rs_msg_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_msg_templatePath$$))return $_rs_msg_templatePath$$="File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_msg_templatePath$$+"'",$res$$.status(400).send({error:$_rs_msg_templatePath$$});$app$jscomp$1_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=
91
- $item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!underscore.isFunction($__v$$))if(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date"))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),
92
- $item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$app$jscomp$1_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=`return (async ()=>{
59
+ controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $model$$=this.model,$ctrl$$=this;const $findRoute$$=[function($req$$,$res$$,$next$$){setImmediate(()=>{var $body$jscomp$2_query$$={};underscore.isObject($req$$.body)&&($body$jscomp$2_query$$=$req$$.body);$body$jscomp$2_query$$={...$req$$.query,...$body$jscomp$2_query$$};var $data_log_or$$={...$body$jscomp$2_query$$};delete $data_log_or$$.access_token;$req$$.user&&!$body$jscomp$2_query$$.count&&"log"!==
60
+ $ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&log.create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log_or$$)}},$req$$.user.email,$req$$.header("user-agent"),$req$$);$req$$.query=$body$jscomp$2_query$$;if($body$jscomp$2_query$$.sort)if(underscore.isObject($body$jscomp$2_query$$.sort))var $condition$jscomp$1$$=$body$jscomp$2_query$$.sort;
61
+ else try{$condition$jscomp$1$$=JSONParser($body$jscomp$2_query$$.sort)}catch($e$$){return console.error("error parse json",$e$$,$body$jscomp$2_query$$.sort),$res$$.status(400).send({error:"sort is not valid."})}!$condition$jscomp$1$$&&$ctrl$$.sort&&($condition$jscomp$1$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition$jscomp$1$$;$condition$jscomp$1$$={};$data_log_or$$=[];for(let $k$$ in $body$jscomp$2_query$$)if("id_app"!==$k$$&&"access_token"!==$k$$)if("_id"===$k$$&&global.mongoose.Types.ObjectId.isValid($body$jscomp$2_query$$._id))try{let $id$$=
62
+ global.mongoose.Types.ObjectId($body$jscomp$2_query$$._id);$data_log_or$$.push({_id:$id$$})}catch($error$$){console.error($error$$)}else{if("q"===$k$$&&$body$jscomp$2_query$$[$k$$])try{let $q$$=underscore.isObject($body$jscomp$2_query$$[$k$$])?$body$jscomp$2_query$$[$k$$]:JSONParser($body$jscomp$2_query$$[$k$$]);if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if("object"!==typeof $q$$._id&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return console.error("Condition is not valid",
63
+ $q$$),$res$$.status(400).send({error:"Condition is not valid"});($condition$jscomp$1$$=$q$$)||($condition$jscomp$1$$={});if($condition$jscomp$1$$.sync_from_date){let $sync_date$$=moment(new Date($condition$jscomp$1$$.sync_from_date)).startOf("date").toDate();$condition$jscomp$1$$.date_updated={$gte:$sync_date$$};delete $condition$jscomp$1$$.sync_from_date}continue}catch($e$$){return console.error($e$$,$body$jscomp$2_query$$[$k$$]),$res$$.status(400).send({error:"Condition is not valid"})}if("fields"!==
64
+ $k$$&&underscore.has($model$$.schema.paths,$k$$))if($ctrl$$.options.findExact[$k$$])$condition$jscomp$1$$[$k$$]=$body$jscomp$2_query$$[$k$$];else{let $item$$={};"number"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=Number($body$jscomp$2_query$$[$k$$]):"date"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]=new Date($body$jscomp$2_query$$[$k$$]):"string"==$ctrl$$.model.schema.paths[$k$$].instance.toLowerCase()?$item$$[$k$$]={$regex:$body$jscomp$2_query$$[$k$$],
65
+ $options:"i"}:$item$$[$k$$]=$body$jscomp$2_query$$[$k$$];$data_log_or$$.push($item$$)}else"$text"===$k$$&&$data_log_or$$.push({$text:{$search:$body$jscomp$2_query$$[$k$$]}})}0!==$data_log_or$$.length&&("$and"===$body$jscomp$2_query$$.cType?$condition$jscomp$1$$.$and=$data_log_or$$:$condition$jscomp$1$$.$or=$data_log_or$$);$shareRoute$$||0==$ctrl$$.require_id_app||($condition$jscomp$1$$.id_app=$req$$.user.current_id_app);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition$jscomp$1$$,function($error$$,
66
+ $condition$jscomp$0$$){setImmediate(()=>{if($error$$)return $res$$.status(400).send({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$next$$()}):($req$$.condition=$condition$jscomp$0$$,$next$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?
67
+ $ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$1$$,function($e$$,$condition$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$next$$()}):($req$$.condition=$condition$jscomp$1$$,$next$$())})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();permission.getRightByItem($req$$.user.current_id_app,$model$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>
68
+ {if($e$jscomp$0$$)return $res$$.status(403).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});if($admin$$)return $next$$();$req$$.admin=$admin$$;let $condition$$=$req$$.condition;$condition$$||($condition$$={});$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $res$$.status(403).send({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&
69
+ 0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$);$req$$.condition=$condition$$;$next$$()})});else _.isObject($_condition$$)&&0<Object.keys($_condition$$).length&&$condition$$.$and.push($_condition$$),$req$$.condition=$condition$$,$next$$()})},$ctrl$$.name,{notNeedRight:$ctrl$$.options.notNeedRight})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();setImmediate(()=>{$ctrl$$.options.assignWiths?async.mapSeries($ctrl$$.options.assignWiths,($col$$,$callback$$)=>
70
+ {setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($req$$.user.current_id_app,$m$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($admin$$)return $callback$$();$_condition$$.id_app=$req$$.user.current_id_app;$m$$.find($_condition$$).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $callback$$($e$$);let $dsdt$$=underscore.pluck($rs$$,$col$$.ref_field);$dsdt$$.push("");
71
+ $dsdt$$.push(null);$req$$.condition[$col$$.ref_field]={$in:$dsdt$$};$callback$$()})})})},$ctrl$$.name,{notNeedRight:$ctrl$$.options.notNeedRight})})},$e$$=>{setImmediate(()=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});$next$$()})}):$next$$()})},function($req$$,$res$$,$next$$){if($shareRoute$$)return $next$$();setImmediate(()=>{if($req$$.admin||"dmdt"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_dt")||underscore.has($model$$.schema.paths,
72
+ "id_dt")){let $dmdt$$=mongoose.models.dmdt;permission.getRightDataView($req$$.user.current_id_app,$dmdt$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,$admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});if($admin$$)return $next$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition.ma_dt&&($_condition$$.ma_dt=$req$$.condition.ma_dt);$dmdt$$.find($_condition$$,{ma_dt:1,_id:1}).lean().exec(($e$$,
73
+ $rs$$)=>{setImmediate(()=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});if(underscore.has($model$$.schema.paths,"ma_dt")){var $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"ma_dt");$dsdt$jscomp$1_dsdt$$.push("");$dsdt$jscomp$1_dsdt$$.push(null);$dsdt$jscomp$1_dsdt$$.push(void 0);$req$$.condition.ma_dt={$in:$dsdt$jscomp$1_dsdt$$}}else $dsdt$jscomp$1_dsdt$$=underscore.pluck($rs$$,"_id"),$dsdt$jscomp$1_dsdt$$.push(""),$dsdt$jscomp$1_dsdt$$.push(null),$dsdt$jscomp$1_dsdt$$.push(void 0),
74
+ $req$$.condition.id_dt={$in:$dsdt$jscomp$1_dsdt$$};$next$$()})})})})}else $next$$()})},function($req$$,$res$$,$next$$){setImmediate(()=>{if($shareRoute$$||$req$$.admin||"dmkho"===$ctrl$$.name)return $next$$();if(underscore.has($model$$.schema.paths,"ma_kho")||underscore.has($model$$.schema.paths,"ma_kho_x")||underscore.has($model$$.schema.paths,"ma_kho_n")){let $dmkho$$=mongoose.models.dmkho;permission.getRightDataView($req$$.user.current_id_app,$dmkho$$,$req$$.user.email,function($e$jscomp$0$$,$_condition$$,
75
+ $admin$$){setImmediate(()=>{if($e$jscomp$0$$)return $res$$.status(403).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});if($admin$$)return $next$$();$_condition$$.id_app=$req$$.user.current_id_app;$req$$.condition.ma_kho&&($_condition$$.ma_kho=$req$$.condition.ma_kho);$dmkho$$.find($_condition$$,{ma_kho:1}).lean().exec(($e$$,$rs$$)=>{setImmediate(()=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});let $dskho$$=underscore.pluck($rs$$,"ma_kho");
76
+ $req$$.condition.ma_kho||($dskho$$.push(""),$dskho$$.push(null),$dskho$$.push(void 0));if(underscore.has($model$$.schema.paths,"ma_kho"))return $req$$.condition.ma_kho={$in:$dskho$$},$next$$();if("pxc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_x"))return $req$$.condition.ma_kho_x={$in:$dskho$$},$next$$();if("pnc"===$ctrl$$.name&&underscore.has($model$$.schema.paths,"ma_kho_n"))return $req$$.condition.ma_kho_n={$in:$dskho$$},$next$$();$next$$()})})})})}else $next$$()})},function($req$$,
77
+ $res$$,$next$$){setImmediate(()=>{if($shareRoute$$)return $next$$();permission.hasRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$permission$$){setImmediate(()=>{if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $res$$.status(400).send({error:$e$$.error||$e$$.message||$e$$});if(!$req$$.permission)return $res$$.send([]);$next$$()});else{if(!$permission$$)return $res$$.send([]);$next$$()}})},{notNeedRight:$ctrl$$.options.notNeedRight})})},
78
+ async function($req$$,$res$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||($condition$$={});if($shareRoute$$){$condition$$.shared=!0;var $id_sellers_query$$=(await app.find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id);$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({id_app:{$in:$id_sellers_query$$}});$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})}else underscore.has($model$$.schema.paths,"id_app")&&!1!==$ctrl$$.require_id_app&&
79
+ ($condition$$.id_app=$req$$.user.current_id_app);"public"===$req$$.user.email&&underscore.has($model$$.schema.paths,"session_created")&&($condition$$.session_created=($req$$.cookies||{}).uid);underscore.extend($condition$$,$ctrl$$.keyValues);$condition$$.$and&&0===$condition$$.$and.length&&delete $condition$$.$and;$condition$$.$or&&0===$condition$$.$or.length&&delete $condition$$.$or;$condition$$.$nor&&0===$condition$$.$nor.length&&delete $condition$$.$nor;$id_sellers_query$$=null;if($req$$.query.count)$condition$$.$where?
80
+ (console.log("phai loai bo $where trong condition"),$id_sellers_query$$=$model$$.count($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})})):$id_sellers_query$$=$model$$.countDocuments($condition$$,function($e$$,$data$$){if($e$$)return console.error($e$$),$e$$.error?$res$$.status(400).send($e$$):$res$$.status(400).send({error:$e$$.message||$e$$});$res$$.send({rows_number:$data$$})});
81
+ else{let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}var $fields$$=$req$$.query.fields;let $gfields$$={};$fields$$&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{"_id"!==$f$$&&($gfields$$[$f$$]=1)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").filter($f$$=>$f$$&&0>$field_not_right$$.indexOf($f$$)).forEach($f$$=>{"_id"!==
82
+ $f$$&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0});!$fields$$&&(($fields$$=$req$$.query.notfields)&&(underscore.isArray($fields$$)?$fields$$.forEach($f$$=>{$f$$&&"_id"!==$f$$&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):underscore.isObject($fields$$)?$gfields$$={...$gfields$$,...$fields$$}:$fields$$.split(",").forEach($f$$=>{$f$$&&
83
+ "_id"!==$f$$&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||"public"===$req$$.user.email)&&(Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$$.$text&&($gfields$$||($gfields$$={}),$gfields$$.textScore={$meta:"textScore"});if($req$$.query.group||$req$$.query.project||$req$$.query.match||
84
+ $req$$.query.aggregate)try{$id_sellers_query$$=$model$$.aggregate([{$match:$condition$$}]);$req$$.query.group&&($group_limit_sort$$=JSONParser($req$$.query.group),$id_sellers_query$$.group($group_limit_sort$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);$id_sellers_query$$.match($match$$)}let $project$$;if($req$$.query.project)$project$$=JSONParser($req$$.query.project),$id_sellers_query$$.project($project$$);else if($gfields$$&&0<Object.keys($gfields$$).length)$project$$=
85
+ $gfields$$;else if($project$$={_id:1},$group_limit_sort$$)for(let $key$$ in $group_limit_sort$$)$project$$[$key$$]=1;$id_sellers_query$$.project($project$$);if($req$$.query.aggregate){let $aggregate$$=JSONParser($req$$.query.aggregate);$id_sellers_query$$.append($aggregate$$)}}catch($e$$){return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$})}else underscore.has($model$$.schema.paths,"id_app")&&0<Object.keys($gfields$$).length&&Object.keys($gfields$$).find($k$$=>1==$gfields$$[$k$$])&&
86
+ ($gfields$$.id_app=1),$id_sellers_query$$=$model$$.find($condition$$,$gfields$$);var $group_limit_sort$$=$req$$.sort;!$group_limit_sort$$&&$gfields$$.textScore?$group_limit_sort$$={textScore:{$meta:"textScore"}}:$group_limit_sort$$&&($group_limit_sort$$._id=1);if($group_limit_sort$$){for(var $key$jscomp$0$$ in $group_limit_sort$$)if(1!=$group_limit_sort$$[$key$jscomp$0$$]&&-1!=$group_limit_sort$$[$key$jscomp$0$$])return $res$$.status(400).send({error:"sort is not valid"});$id_sellers_query$$.sort($group_limit_sort$$)}"xlsx"!==
87
+ $req$$.query.type_data&&"1"!=$req$$.query.rpt&&($key$jscomp$0$$=$req$$.query.page,($group_limit_sort$$=$req$$.query.limit)&&($group_limit_sort$$=Number($group_limit_sort$$)),$group_limit_sort$$||($group_limit_sort$$=!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name?20:1E5),$group_limit_sort$$&&500<$group_limit_sort$$&&!$req$$.query.print&&!1!==$ctrl$$.require_id_app&&"right"!==$ctrl$$.name&&($group_limit_sort$$=500),$key$jscomp$0$$?$id_sellers_query$$.skip((Number($key$jscomp$0$$)-1)*$group_limit_sort$$).limit($group_limit_sort$$):
88
+ $id_sellers_query$$.limit($group_limit_sort$$));$id_sellers_query$$.lean&&($id_sellers_query$$=$id_sellers_query$$.lean());$id_sellers_query$$.exec(function($e$jscomp$0$$,$obj4view$$){if($e$jscomp$0$$)return console.error($e$jscomp$0$$,$condition$$,$gfields$$),$res$$.status(400).send({error:$e$jscomp$0$$.error||$e$jscomp$0$$.message||$e$jscomp$0$$});$obj4view$$||($obj4view$$=[]);async.series({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,
89
+ $items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$jscomp$0$$,$rs$jscomp$0$$){setImmediate(()=>{if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});$obj4view$$=$rs$jscomp$0$$.found;async.series({e_view:function($callback$$){$ctrl$$.onView($req$$.user,
90
+ $obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return console.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,shareRoute:$shareRoute$$})}},async function($app$jscomp$1_dir_root_template_e$$,$_groupBy_func_string_rs$$){if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.error||$error$jscomp$0$$.message||$error$jscomp$0$$});if($req$$.query.type_data&&"xlsx"==$req$$.query.type_data){$app$jscomp$1_dir_root_template_e$$=
91
+ (configs.paths||{}).templates;let $template_id$$,$excelTemplate$$;if($template_id$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($template_id$$))return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});$excelTemplate$$=await global.getModel("exportexceltemplate").findById($template_id$$);if(!$excelTemplate$$||!$excelTemplate$$.file)return $res$$.status(400).send({error:"M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i"});var $_rs_msg_templatePath$$=
92
+ $app$jscomp$1_dir_root_template_e$$?`${path.dirname($app$jscomp$1_dir_root_template_e$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app$jscomp$1_dir_root_template_e$$&&($_rs_msg_templatePath$$=`${$app$jscomp$1_dir_root_template_e$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_rs_msg_templatePath$$&&fs.existsSync($_rs_msg_templatePath$$)||($_rs_msg_templatePath$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_rs_msg_templatePath$$))return $_rs_msg_templatePath$$=
93
+ "File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_rs_msg_templatePath$$+"'",$res$$.status(400).send({error:$_rs_msg_templatePath$$});$app$jscomp$1_dir_root_template_e$$={};$_groupBy_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=$item$$[$_key$$];if(underscore.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!underscore.isFunction($__v$$))if(0<=$__key$$.indexOf("ngay")||0<=$__key$$.indexOf("date"))try{$item$$[`${$_key$$}_${$__key$$}`]=
94
+ new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&0<=$_key$$.indexOf("ngay")||0<=$_key$$.indexOf("date"))try{let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){console.error("Error convert to date",$_v$$,$e$$)}}});$app$jscomp$1_dir_root_template_e$$.detail=$_groupBy_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_groupBy_func_string_rs$$=
95
+ `return (async ()=>{
93
96
  try{
94
97
  ${$excelTemplate$$.handle_data}
95
98
  }catch(e){
@@ -9,6 +9,9 @@ exports.use_ssl = true;
9
9
  exports.timezone = 'Asia/Ho_Chi_Minh';
10
10
  exports.initSysData = false;
11
11
  exports.limitRequestSize = '50mb';
12
+ //maxLag for toobusy
13
+ exports.maxLag = 70;
14
+ //
12
15
  exports.APP_SECRET = "";
13
16
  exports.check_token_expired = false;
14
17
  exports.require_verify = true;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes