flexbiz-server 12.7.1 → 12.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (884) hide show
  1. package/package.json +5 -5
  2. package/server/app.js +23 -348
  3. package/server/cluster.js +1 -5
  4. package/server/models/account.js +7 -0
  5. package/server/models/actionLog.js +2 -0
  6. package/server/models/afflink.js +2 -0
  7. package/server/models/aimemory.js +1 -0
  8. package/server/models/app.js +16 -0
  9. package/server/models/approve.js +95 -0
  10. package/server/models/assabcihandler.js +35 -0
  11. package/server/models/assbank.js +19 -0
  12. package/server/models/assbooking.js +4 -0
  13. package/server/models/assbuy.js +3 -0
  14. package/server/models/asscashwithdraw.js +4 -0
  15. package/server/models/assfindhash.js +2 -0
  16. package/server/models/assinvestment.js +13 -0
  17. package/server/models/assissue.js +2 -0
  18. package/server/models/asskey.js +15 -0
  19. package/server/models/assneedtobuy.js +6 -0
  20. package/server/models/assperiod.js +7 -0
  21. package/server/models/assproduct.js +13 -0
  22. package/server/models/assprofitsharing.js +4 -0
  23. package/server/models/assreceiver.js +2 -0
  24. package/server/models/assrequest.js +10 -0
  25. package/server/models/asssell.js +7 -0
  26. package/server/models/asstransaction.js +3 -0
  27. package/server/models/asstransfer.js +4 -0
  28. package/server/models/assuser_identity.js +4 -0
  29. package/server/models/asswithdraw.js +4 -0
  30. package/server/models/attend.js +2 -0
  31. package/server/models/banggiaban.js +8 -0
  32. package/server/models/bangtinhluong.js +6 -0
  33. package/server/models/base.js +1 -0
  34. package/server/models/bg1.js +9 -0
  35. package/server/models/bg2.js +10 -0
  36. package/server/models/cache.js +3 -0
  37. package/server/models/cacheDataReport.js +2 -0
  38. package/server/models/cacheSessionReport.js +5 -0
  39. package/server/models/calllog.js +4 -0
  40. package/server/models/cart.js +5 -0
  41. package/server/models/cddiem.js +2 -0
  42. package/server/models/cddt.js +3 -0
  43. package/server/models/cdkh.js +5 -0
  44. package/server/models/cdkhtheongay.js +5 -0
  45. package/server/models/cdnphep.js +2 -0
  46. package/server/models/cdtk.js +3 -0
  47. package/server/models/cdtktheongay.js +3 -0
  48. package/server/models/cdvt.js +5 -0
  49. package/server/models/cdvtnpp.js +6 -0
  50. package/server/models/cdvttheongay.js +5 -0
  51. package/server/models/chamcong.js +7 -0
  52. package/server/models/chat_message.js +2 -0
  53. package/server/models/chat_session.js +2 -0
  54. package/server/models/checkin.js +4 -0
  55. package/server/models/checkinactivity.js +3 -0
  56. package/server/models/checkinkpi.js +4 -0
  57. package/server/models/checkinlocation.js +2 -0
  58. package/server/models/chitietluongds.js +12 -0
  59. package/server/models/chitieukpi.js +3 -0
  60. package/server/models/chudethaoluan.js +3 -0
  61. package/server/models/ckgtluong.js +2 -0
  62. package/server/models/colleague.js +2 -0
  63. package/server/models/comment.js +4 -0
  64. package/server/models/congdoansx.js +4 -0
  65. package/server/models/congtacvien.js +4 -0
  66. package/server/models/congthuctinhgiaban.js +8 -0
  67. package/server/models/consultant.js +4 -0
  68. package/server/models/contract.js +6 -0
  69. package/server/models/counter.js +2 -0
  70. package/server/models/csluongtheods.js +3 -0
  71. package/server/models/csphucap.js +2 -0
  72. package/server/models/ctds.js +5 -0
  73. package/server/models/ctds2.js +7 -0
  74. package/server/models/currency.js +3 -0
  75. package/server/models/custom_report.js +1 -0
  76. package/server/models/customer.js +31 -0
  77. package/server/models/customer_care.js +2 -0
  78. package/server/models/data_list_config.js +7 -0
  79. package/server/models/databanle.js +8 -0
  80. package/server/models/datlich.js +4 -0
  81. package/server/models/deal.js +2 -0
  82. package/server/models/dh2.js +20 -0
  83. package/server/models/diagram.js +2 -0
  84. package/server/models/dinhmucsx.js +8 -0
  85. package/server/models/dkhoc.js +6 -0
  86. package/server/models/dknphep.js +2 -0
  87. package/server/models/dmban.js +4 -0
  88. package/server/models/dmbp.js +12 -0
  89. package/server/models/dmca.js +2 -0
  90. package/server/models/dmchietkhau.js +8 -0
  91. package/server/models/dmchietkhauhd.js +19 -0
  92. package/server/models/dmchinhanh.js +2 -0
  93. package/server/models/dmcpmh.js +2 -0
  94. package/server/models/dmdiemthuong.js +3 -0
  95. package/server/models/dmdoi.js +4 -0
  96. package/server/models/dmdoituongdanhgia.js +2 -0
  97. package/server/models/dmdt.js +8 -0
  98. package/server/models/dmdvt.js +3 -0
  99. package/server/models/dmgiaban.js +9 -0
  100. package/server/models/dmgiamua.js +5 -0
  101. package/server/models/dmgiathitruong.js +5 -0
  102. package/server/models/dmgiathitruong_ngay.js +2 -0
  103. package/server/models/dmgiathitruong_theodoi.js +2 -0
  104. package/server/models/dmhoahonghd.js +8 -0
  105. package/server/models/dmhoahongnpp.js +8 -0
  106. package/server/models/dmkc.js +3 -0
  107. package/server/models/dmkho.js +7 -0
  108. package/server/models/dmkhuyenmai.js +9 -0
  109. package/server/models/dmkhuyenmaihd.js +11 -0
  110. package/server/models/dmletet.js +2 -0
  111. package/server/models/dmlo.js +4 -0
  112. package/server/models/dmloaicong.js +4 -0
  113. package/server/models/dmloaitask.js +2 -0
  114. package/server/models/dmloaits.js +2 -0
  115. package/server/models/dmnckkm.js +4 -0
  116. package/server/models/dmnghiepvu.js +4 -0
  117. package/server/models/dmnguonvon.js +2 -0
  118. package/server/models/dmnhnv.js +4 -0
  119. package/server/models/dmnv.js +17 -0
  120. package/server/models/dmnvt.js +10 -0
  121. package/server/models/dmphi.js +3 -0
  122. package/server/models/dmqct.js +3 -0
  123. package/server/models/dmqddvt.js +3 -0
  124. package/server/models/dmtanggiamts.js +3 -0
  125. package/server/models/dmto.js +4 -0
  126. package/server/models/dmtt.js +6 -0
  127. package/server/models/dmvt.js +17 -0
  128. package/server/models/dmyt.js +4 -0
  129. package/server/models/dn0.js +13 -0
  130. package/server/models/dnm.js +11 -0
  131. package/server/models/dokho.js +2 -0
  132. package/server/models/domain.js +2 -0
  133. package/server/models/dvcs.js +3 -0
  134. package/server/models/ecomcategories.js +3 -0
  135. package/server/models/ecomcategories_cty.js +3 -0
  136. package/server/models/ecomproductlines.js +2 -0
  137. package/server/models/ecompromotion_flashsales.js +2 -0
  138. package/server/models/ecompromotion_freeships.js +2 -0
  139. package/server/models/email.js +2 -0
  140. package/server/models/endpoint.js +1 -0
  141. package/server/models/events.js +3 -0
  142. package/server/models/evoucher.js +5 -0
  143. package/server/models/experiencejourney.js +2 -0
  144. package/server/models/experiencejourneydata.js +4 -0
  145. package/server/models/experiencejourneypersona.js +3 -0
  146. package/server/models/experiencejourneystage.js +2 -0
  147. package/server/models/exportexceltemplate.js +2 -0
  148. package/server/models/fbconversation.js +15 -0
  149. package/server/models/fbmessage.js +2 -0
  150. package/server/models/fbpage.js +2 -0
  151. package/server/models/fbpost.js +2 -0
  152. package/server/models/fieldright.js +2 -0
  153. package/server/models/fifo_dk.js +2 -0
  154. package/server/models/fifo_lot.js +3 -0
  155. package/server/models/fifo_trace.js +4 -0
  156. package/server/models/file.js +4 -0
  157. package/server/models/filechunk.js +2 -0
  158. package/server/models/financialroadmap.js +3 -0
  159. package/server/models/flow.js +2 -0
  160. package/server/models/flowdata.js +3 -0
  161. package/server/models/flowpending.js +2 -0
  162. package/server/models/folder.js +4 -0
  163. package/server/models/follow.js +2 -0
  164. package/server/models/forminfo.js +5 -0
  165. package/server/models/giaoca.js +4 -0
  166. package/server/models/giatb.js +3 -0
  167. package/server/models/group.js +9 -0
  168. package/server/models/gt_ctgt.js +4 -0
  169. package/server/models/gt_hspb.js +3 -0
  170. package/server/models/gt_sltk.js +3 -0
  171. package/server/models/gt_thcppstk.js +3 -0
  172. package/server/models/hanmucton.js +4 -0
  173. package/server/models/hd1.js +11 -0
  174. package/server/models/hd2.js +26 -0
  175. package/server/models/hd3.js +17 -0
  176. package/server/models/hd4.js +13 -0
  177. package/server/models/hd7.js +17 -0
  178. package/server/models/hd8.js +12 -0
  179. package/server/models/hde.js +11 -0
  180. package/server/models/hmcn.js +3 -0
  181. package/server/models/hmcnct.js +2 -0
  182. package/server/models/hspbts.js +4 -0
  183. package/server/models/htl.js +13 -0
  184. package/server/models/importexceltemplate.js +2 -0
  185. package/server/models/introducebonus.js +4 -0
  186. package/server/models/introducecode.js +3 -0
  187. package/server/models/introducer.js +4 -0
  188. package/server/models/kbbtpb.js +7 -0
  189. package/server/models/kbmPttct.js +4 -0
  190. package/server/models/kbmTkgtgt.js +5 -0
  191. package/server/models/kbm_bcdkt_old.js +4 -0
  192. package/server/models/kbm_kqhdkd_old.js +3 -0
  193. package/server/models/kbm_lcttgt_old.js +5 -0
  194. package/server/models/kbm_lctttt_old.js +4 -0
  195. package/server/models/kbm_pttct_old.js +4 -0
  196. package/server/models/kbm_tkgtgt_old.js +5 -0
  197. package/server/models/kbmbcdkt.js +4 -0
  198. package/server/models/kbmbcqt.js +4 -0
  199. package/server/models/kbmkqhdkd.js +3 -0
  200. package/server/models/kbmlcttgt.js +6 -0
  201. package/server/models/kbmlctttt.js +4 -0
  202. package/server/models/kbmtmbctc.js +4 -0
  203. package/server/models/kehoachdtcp.js +3 -0
  204. package/server/models/kehoachmh.js +8 -0
  205. package/server/models/keyresult.js +7 -0
  206. package/server/models/khunghangthanhvien.js +3 -0
  207. package/server/models/label.js +2 -0
  208. package/server/models/labelinfo.js +2 -0
  209. package/server/models/lenhcapphat.js +8 -0
  210. package/server/models/lenhsx.js +8 -0
  211. package/server/models/lienhe.js +4 -0
  212. package/server/models/like_module.js +2 -0
  213. package/server/models/link.js +2 -0
  214. package/server/models/listinfo.js +1365 -0
  215. package/server/models/loaidiem.js +2 -0
  216. package/server/models/lock.js +2 -0
  217. package/server/models/log.js +8 -0
  218. package/server/models/mailaccount.js +3 -0
  219. package/server/models/mailgroup.js +3 -0
  220. package/server/models/mailreceived.js +2 -0
  221. package/server/models/mailsent.js +2 -0
  222. package/server/models/mailtemplate.js +2 -0
  223. package/server/models/maudanhgia.js +2 -0
  224. package/server/models/menuinfo.js +2 -0
  225. package/server/models/message.js +8 -0
  226. package/server/models/message2.js +4 -0
  227. package/server/models/message2setting.js +3 -0
  228. package/server/models/moduleinfo.js +4 -0
  229. package/server/models/momo.js +18 -0
  230. package/server/models/news.js +3 -0
  231. package/server/models/newsfeed.js +4 -0
  232. package/server/models/note.js +2 -0
  233. package/server/models/notification.js +8 -0
  234. package/server/models/okr.js +4 -0
  235. package/server/models/okrdiagram.js +3 -0
  236. package/server/models/onepay.js +24 -0
  237. package/server/models/opportunity.js +4 -0
  238. package/server/models/options.js +2 -0
  239. package/server/models/originimportid.js +1 -0
  240. package/server/models/otp.js +1 -0
  241. package/server/models/parameter.js +2 -0
  242. package/server/models/participant.js +21 -0
  243. package/server/models/partner.js +1 -0
  244. package/server/models/payload.js +1 -0
  245. package/server/models/pbl.js +16 -0
  246. package/server/models/pc0.js +13 -0
  247. package/server/models/pc1.js +14 -0
  248. package/server/models/pc2.js +13 -0
  249. package/server/models/pc3.js +13 -0
  250. package/server/models/pc5.js +8 -0
  251. package/server/models/pc6.js +14 -0
  252. package/server/models/pcl.js +6 -0
  253. package/server/models/pdn.js +9 -0
  254. package/server/models/pdx.js +9 -0
  255. package/server/models/pgh.js +5 -0
  256. package/server/models/phieudanhgia.js +3 -0
  257. package/server/models/pht.js +8 -0
  258. package/server/models/phucap.js +4 -0
  259. package/server/models/pkc.js +6 -0
  260. package/server/models/pkh.js +6 -0
  261. package/server/models/pkk.js +10 -0
  262. package/server/models/pkt.js +12 -0
  263. package/server/models/pn1.js +18 -0
  264. package/server/models/pn2.js +12 -0
  265. package/server/models/pn3.js +13 -0
  266. package/server/models/pn5.js +14 -0
  267. package/server/models/pn6.js +14 -0
  268. package/server/models/pn9.js +17 -0
  269. package/server/models/pnc.js +9 -0
  270. package/server/models/pnh.js +11 -0
  271. package/server/models/pnk.js +10 -0
  272. package/server/models/po1.js +19 -0
  273. package/server/models/ppb.js +6 -0
  274. package/server/models/productcode.js +2 -0
  275. package/server/models/profile.js +4 -0
  276. package/server/models/pt1.js +12 -0
  277. package/server/models/pt5.js +8 -0
  278. package/server/models/ptl.js +5 -0
  279. package/server/models/ptthanhtoan.js +6 -0
  280. package/server/models/purchase_contract.js +17 -0
  281. package/server/models/pxc.js +9 -0
  282. package/server/models/pxh.js +11 -0
  283. package/server/models/pxk.js +9 -0
  284. package/server/models/qts.js +14 -0
  285. package/server/models/qts_dieuchinh.js +3 -0
  286. package/server/models/qts_dieuchuyen.js +4 -0
  287. package/server/models/quanhuyen.js +2 -0
  288. package/server/models/reason.js +2 -0
  289. package/server/models/receivedinvoice.js +2 -0
  290. package/server/models/reportinfo.js +5 -0
  291. package/server/models/right.js +4 -0
  292. package/server/models/rpt.js +2 -0
  293. package/server/models/rptform.js +3 -0
  294. package/server/models/rptobject.js +2 -0
  295. package/server/models/sale_contract.js +9 -0
  296. package/server/models/schedule.js +18 -0
  297. package/server/models/schedule_log.js +2 -0
  298. package/server/models/shipbook.js +12 -0
  299. package/server/models/shortcut.js +2 -0
  300. package/server/models/smsaccount.js +10 -0
  301. package/server/models/smssend.js +2 -0
  302. package/server/models/so1.js +22 -0
  303. package/server/models/so5.js +15 -0
  304. package/server/models/so9.js +19 -0
  305. package/server/models/socai.js +28 -0
  306. package/server/models/socainpp.js +18 -0
  307. package/server/models/socaitc.js +6 -0
  308. package/server/models/socaitmp.js +16 -0
  309. package/server/models/socaitt.js +4 -0
  310. package/server/models/sodiemthuong.js +4 -0
  311. package/server/models/sokho.js +27 -0
  312. package/server/models/sokhocapphat.js +18 -0
  313. package/server/models/sokhokhongton.js +19 -0
  314. package/server/models/sokhonpp.js +19 -0
  315. package/server/models/sokhotc.js +8 -0
  316. package/server/models/sokhott.js +18 -0
  317. package/server/models/sophanbokh.js +3 -0
  318. package/server/models/sosanxuat.js +5 -0
  319. package/server/models/sotinhkh.js +2 -0
  320. package/server/models/spdd_ck.js +3 -0
  321. package/server/models/spdd_dk.js +3 -0
  322. package/server/models/step.js +2 -0
  323. package/server/models/strategicdiagram.js +3 -0
  324. package/server/models/strategicgoal.js +4 -0
  325. package/server/models/strategickpi.js +6 -0
  326. package/server/models/strategicobjective.js +5 -0
  327. package/server/models/strategicplan.js +5 -0
  328. package/server/models/subscribe.js +2 -0
  329. package/server/models/support.js +2 -0
  330. package/server/models/synctime.js +2 -0
  331. package/server/models/sys_job_queue_book_keeping.js +2 -0
  332. package/server/models/sysconfig.js +2 -0
  333. package/server/models/sysgroup.js +2 -0
  334. package/server/models/tableinfo.js +3 -0
  335. package/server/models/task.js +9 -0
  336. package/server/models/tc.js +2 -0
  337. package/server/models/tdttco.js +9 -0
  338. package/server/models/tdttco_tt.js +5 -0
  339. package/server/models/tdttno.js +9 -0
  340. package/server/models/tdttno_tt.js +5 -0
  341. package/server/models/templaterpt.js +2 -0
  342. package/server/models/templatestore.js +3 -0
  343. package/server/models/templatevoucher.js +3 -0
  344. package/server/models/tinhthanh.js +2 -0
  345. package/server/models/tokens.js +3 -0
  346. package/server/models/tontucthoi.js +9 -0
  347. package/server/models/trangthai.js +4 -0
  348. package/server/models/trangthaiapp.js +4 -0
  349. package/server/models/transaction.js +16 -0
  350. package/server/models/trialinfo.js +2 -0
  351. package/server/models/user.js +40 -0
  352. package/server/models/usergroup.js +7 -0
  353. package/server/models/vanchuyen.js +12 -0
  354. package/server/models/vat.js +3 -0
  355. package/server/models/vatra.js +6 -0
  356. package/server/models/vatvao.js +6 -0
  357. package/server/models/versioninfo.js +2 -0
  358. package/server/models/vietqrbanks.js +2 -0
  359. package/server/models/vsocai.js +6 -0
  360. package/server/models/wallet.js +8 -0
  361. package/server/models/warranty.js +3 -0
  362. package/server/models/warrantyclaim.js +2 -0
  363. package/server/models/warrantypolicy.js +1 -0
  364. package/server/models/workflow.js +4 -0
  365. package/server/models/xaphuong.js +2 -0
  366. package/server/models/xhd.js +10 -0
  367. package/server/models/ytdd_ck.js +4 -0
  368. package/server/models/ytdd_dk.js +4 -0
  369. package/server/models/zalo.js +17 -0
  370. package/server/modules/lists/bg-cddiem.js +6 -0
  371. package/server/modules/lists/bg-cddt.js +7 -0
  372. package/server/modules/lists/bg-cdkh.js +11 -0
  373. package/server/modules/lists/bg-cdnphep.js +6 -0
  374. package/server/modules/lists/bg-cdtk.js +9 -0
  375. package/server/modules/lists/bg-cdvt.js +8 -0
  376. package/server/modules/lists/bg-cdvtnpp.js +8 -0
  377. package/server/modules/lists/bg-fifo_dk.js +8 -0
  378. package/server/modules/lists/ls-account.js +4 -0
  379. package/server/modules/lists/ls-afflink.js +3 -0
  380. package/server/modules/lists/ls-approve.js +5 -0
  381. package/server/modules/lists/ls-assabcihandler.js +3 -0
  382. package/server/modules/lists/ls-assbank.js +3 -0
  383. package/server/modules/lists/ls-assbooking.js +20 -0
  384. package/server/modules/lists/ls-assbuy.js +8 -0
  385. package/server/modules/lists/ls-asscashwithdraw.js +8 -0
  386. package/server/modules/lists/ls-assinvestment.js +31 -0
  387. package/server/modules/lists/ls-assissue.js +3 -0
  388. package/server/modules/lists/ls-asskey.js +41 -0
  389. package/server/modules/lists/ls-assneedtobuy.js +10 -0
  390. package/server/modules/lists/ls-assperiod.js +19 -0
  391. package/server/modules/lists/ls-assproduct.js +9 -0
  392. package/server/modules/lists/ls-assprofitsharing.js +8 -0
  393. package/server/modules/lists/ls-assreceiver.js +3 -0
  394. package/server/modules/lists/ls-assrequest.js +4 -0
  395. package/server/modules/lists/ls-asssell.js +13 -0
  396. package/server/modules/lists/ls-asstransaction.js +3 -0
  397. package/server/modules/lists/ls-asstransfer.js +3 -0
  398. package/server/modules/lists/ls-assuser_identity.js +1 -0
  399. package/server/modules/lists/ls-asswithdraw.js +12 -0
  400. package/server/modules/lists/ls-bangtinhluong.js +2 -0
  401. package/server/modules/lists/ls-calllog.js +4 -0
  402. package/server/modules/lists/ls-cart.js +14 -0
  403. package/server/modules/lists/ls-chamcong.js +3 -0
  404. package/server/modules/lists/ls-chat_session.js +5 -0
  405. package/server/modules/lists/ls-checkin.js +24 -0
  406. package/server/modules/lists/ls-checkinactivity.js +8 -0
  407. package/server/modules/lists/ls-checkinkpi.js +3 -0
  408. package/server/modules/lists/ls-checkinlocation.js +1 -0
  409. package/server/modules/lists/ls-chitietluongds.js +4 -0
  410. package/server/modules/lists/ls-chitieukpi.js +1 -0
  411. package/server/modules/lists/ls-chudethaoluan.js +1 -0
  412. package/server/modules/lists/ls-ckgtluong.js +1 -0
  413. package/server/modules/lists/ls-comment.js +9 -0
  414. package/server/modules/lists/ls-congdoansx.js +3 -0
  415. package/server/modules/lists/ls-congtacvien.js +5 -0
  416. package/server/modules/lists/ls-consultant.js +2 -0
  417. package/server/modules/lists/ls-contract.js +7 -0
  418. package/server/modules/lists/ls-csluongtheods.js +1 -0
  419. package/server/modules/lists/ls-csphucap.js +1 -0
  420. package/server/modules/lists/ls-ctds.js +4 -0
  421. package/server/modules/lists/ls-ctds2.js +4 -0
  422. package/server/modules/lists/ls-currency.js +1 -0
  423. package/server/modules/lists/ls-customer.js +22 -0
  424. package/server/modules/lists/ls-customer_care.js +1 -0
  425. package/server/modules/lists/ls-datlich.js +9 -0
  426. package/server/modules/lists/ls-dckhauhaots.js +3 -0
  427. package/server/modules/lists/ls-deal.js +3 -0
  428. package/server/modules/lists/ls-diagram.js +1 -0
  429. package/server/modules/lists/ls-dkhoc.js +6 -0
  430. package/server/modules/lists/ls-dknphep.js +1 -0
  431. package/server/modules/lists/ls-dmban.js +4 -0
  432. package/server/modules/lists/ls-dmbp.js +7 -0
  433. package/server/modules/lists/ls-dmca.js +1 -0
  434. package/server/modules/lists/ls-dmchietkhau.js +19 -0
  435. package/server/modules/lists/ls-dmchietkhauhd.js +4 -0
  436. package/server/modules/lists/ls-dmchinhanh.js +1 -0
  437. package/server/modules/lists/ls-dmchucvu.js +2 -0
  438. package/server/modules/lists/ls-dmcpmh.js +1 -0
  439. package/server/modules/lists/ls-dmdiemthuong.js +4 -0
  440. package/server/modules/lists/ls-dmdoi.js +4 -0
  441. package/server/modules/lists/ls-dmdoituongdanhgia.js +1 -0
  442. package/server/modules/lists/ls-dmdt.js +11 -0
  443. package/server/modules/lists/ls-dmdvt.js +2 -0
  444. package/server/modules/lists/ls-dmgiaban.js +4 -0
  445. package/server/modules/lists/ls-dmgiamua.js +4 -0
  446. package/server/modules/lists/ls-dmgiathitruong.js +15 -0
  447. package/server/modules/lists/ls-dmgiathitruong_ngay.js +2 -0
  448. package/server/modules/lists/ls-dmgiathitruong_theodoi.js +1 -0
  449. package/server/modules/lists/ls-dmhoahonghd.js +1 -0
  450. package/server/modules/lists/ls-dmhoahongnpp.js +1 -0
  451. package/server/modules/lists/ls-dmkc.js +3 -0
  452. package/server/modules/lists/ls-dmkho.js +7 -0
  453. package/server/modules/lists/ls-dmkhuyenmai.js +5 -0
  454. package/server/modules/lists/ls-dmkhuyenmaihd.js +3 -0
  455. package/server/modules/lists/ls-dmletet.js +1 -0
  456. package/server/modules/lists/ls-dmlo.js +1 -0
  457. package/server/modules/lists/ls-dmloaicong.js +1 -0
  458. package/server/modules/lists/ls-dmloaits.js +1 -0
  459. package/server/modules/lists/ls-dmnckkm.js +7 -0
  460. package/server/modules/lists/ls-dmnghiepvu.js +1 -0
  461. package/server/modules/lists/ls-dmnguonvon.js +1 -0
  462. package/server/modules/lists/ls-dmnhnv.js +6 -0
  463. package/server/modules/lists/ls-dmnhtask.js +5 -0
  464. package/server/modules/lists/ls-dmnkh.js +6 -0
  465. package/server/modules/lists/ls-dmntt.js +6 -0
  466. package/server/modules/lists/ls-dmnv.js +14 -0
  467. package/server/modules/lists/ls-dmnvt.js +7 -0
  468. package/server/modules/lists/ls-dmphi.js +6 -0
  469. package/server/modules/lists/ls-dmqct.js +2 -0
  470. package/server/modules/lists/ls-dmqddvt.js +3 -0
  471. package/server/modules/lists/ls-dmtanggiamts.js +1 -0
  472. package/server/modules/lists/ls-dmto.js +5 -0
  473. package/server/modules/lists/ls-dmtt.js +7 -0
  474. package/server/modules/lists/ls-dmvt.js +52 -0
  475. package/server/modules/lists/ls-dmyt.js +1 -0
  476. package/server/modules/lists/ls-dokho.js +1 -0
  477. package/server/modules/lists/ls-dvcs.js +1 -0
  478. package/server/modules/lists/ls-ecomcategories.js +5 -0
  479. package/server/modules/lists/ls-ecomcategories_cty.js +5 -0
  480. package/server/modules/lists/ls-email.js +4 -0
  481. package/server/modules/lists/ls-events.js +3 -0
  482. package/server/modules/lists/ls-evoucher.js +3 -0
  483. package/server/modules/lists/ls-experiencejourney.js +1 -0
  484. package/server/modules/lists/ls-experiencejourneydata.js +3 -0
  485. package/server/modules/lists/ls-experiencejourneypersona.js +4 -0
  486. package/server/modules/lists/ls-experiencejourneystage.js +1 -0
  487. package/server/modules/lists/ls-fbconversation.js +2 -0
  488. package/server/modules/lists/ls-fbmessage.js +2 -0
  489. package/server/modules/lists/ls-fbpage.js +11 -0
  490. package/server/modules/lists/ls-fbpost.js +2 -0
  491. package/server/modules/lists/ls-file.js +38 -0
  492. package/server/modules/lists/ls-financialroadmap.js +3 -0
  493. package/server/modules/lists/ls-flow.js +6 -0
  494. package/server/modules/lists/ls-flowdata.js +1 -0
  495. package/server/modules/lists/ls-flowpending.js +3 -0
  496. package/server/modules/lists/ls-folder.js +1 -0
  497. package/server/modules/lists/ls-forminfo.js +1 -0
  498. package/server/modules/lists/ls-giaoca.js +5 -0
  499. package/server/modules/lists/ls-group.js +5 -0
  500. package/server/modules/lists/ls-hmcn.js +2 -0
  501. package/server/modules/lists/ls-hspbts.js +3 -0
  502. package/server/modules/lists/ls-introducebonus.js +4 -0
  503. package/server/modules/lists/ls-introducecode.js +10 -0
  504. package/server/modules/lists/ls-introducer.js +21 -0
  505. package/server/modules/lists/ls-kbm-bcdkt.js +1 -0
  506. package/server/modules/lists/ls-kbm-bcqt.js +5 -0
  507. package/server/modules/lists/ls-kbm-kqhdkd.js +1 -0
  508. package/server/modules/lists/ls-kbm-lcttgt.js +1 -0
  509. package/server/modules/lists/ls-kbm-lctttt.js +1 -0
  510. package/server/modules/lists/ls-kbm-pttct.js +3 -0
  511. package/server/modules/lists/ls-kbm-tkgtgt.js +3 -0
  512. package/server/modules/lists/ls-kbm-tmbctc.js +3 -0
  513. package/server/modules/lists/ls-kehoachdtcp.js +4 -0
  514. package/server/modules/lists/ls-keyresult.js +7 -0
  515. package/server/modules/lists/ls-khunghangthanhvien.js +1 -0
  516. package/server/modules/lists/ls-label.js +1 -0
  517. package/server/modules/lists/ls-lienhe.js +4 -0
  518. package/server/modules/lists/ls-like-module.js +1 -0
  519. package/server/modules/lists/ls-link.js +1 -0
  520. package/server/modules/lists/ls-loaidiem.js +1 -0
  521. package/server/modules/lists/ls-lock.js +1 -0
  522. package/server/modules/lists/ls-log.js +3 -0
  523. package/server/modules/lists/ls-mailaccount.js +5 -0
  524. package/server/modules/lists/ls-mailreceived.js +5 -0
  525. package/server/modules/lists/ls-mailsent.js +4 -0
  526. package/server/modules/lists/ls-mailtemplate.js +4 -0
  527. package/server/modules/lists/ls-maudanhgia.js +3 -0
  528. package/server/modules/lists/ls-message2.js +8 -0
  529. package/server/modules/lists/ls-message2setting.js +5 -0
  530. package/server/modules/lists/ls-news.js +7 -0
  531. package/server/modules/lists/ls-newsfeed.js +4 -0
  532. package/server/modules/lists/ls-note.js +6 -0
  533. package/server/modules/lists/ls-okr.js +5 -0
  534. package/server/modules/lists/ls-okrdiagram.js +1 -0
  535. package/server/modules/lists/ls-opportunity.js +5 -0
  536. package/server/modules/lists/ls-options.js +4 -0
  537. package/server/modules/lists/ls-parameter.js +3 -0
  538. package/server/modules/lists/ls-participant.js +12 -0
  539. package/server/modules/lists/ls-phieudanhgia.js +7 -0
  540. package/server/modules/lists/ls-phucap.js +2 -0
  541. package/server/modules/lists/ls-productcode.js +9 -0
  542. package/server/modules/lists/ls-profile.js +1 -0
  543. package/server/modules/lists/ls-ptthanhtoan.js +3 -0
  544. package/server/modules/lists/ls-qts-dieuchinh.js +2 -0
  545. package/server/modules/lists/ls-qts-dieuchuyen.js +8 -0
  546. package/server/modules/lists/ls-reason.js +1 -0
  547. package/server/modules/lists/ls-rpt.js +5 -0
  548. package/server/modules/lists/ls-rptform.js +3 -0
  549. package/server/modules/lists/ls-shortcut.js +1 -0
  550. package/server/modules/lists/ls-smsaccount.js +1 -0
  551. package/server/modules/lists/ls-smssend.js +3 -0
  552. package/server/modules/lists/ls-sosanxuat.js +4 -0
  553. package/server/modules/lists/ls-step.js +1 -0
  554. package/server/modules/lists/ls-strategicdiagram.js +1 -0
  555. package/server/modules/lists/ls-strategicgoal.js +3 -0
  556. package/server/modules/lists/ls-strategickpi.js +7 -0
  557. package/server/modules/lists/ls-strategicobjective.js +3 -0
  558. package/server/modules/lists/ls-strategicplan.js +6 -0
  559. package/server/modules/lists/ls-support.js +3 -0
  560. package/server/modules/lists/ls-task.js +28 -0
  561. package/server/modules/lists/ls-tc.js +1 -0
  562. package/server/modules/lists/ls-templaterpt.js +5 -0
  563. package/server/modules/lists/ls-templatevoucher.js +1 -0
  564. package/server/modules/lists/ls-tontucthoi.js +3 -0
  565. package/server/modules/lists/ls-trangthaiapp.js +3 -0
  566. package/server/modules/lists/ls-transaction.js +4 -0
  567. package/server/modules/lists/ls-usergroup.js +7 -0
  568. package/server/modules/lists/ls-vat.js +1 -0
  569. package/server/modules/lists/ls-vatra.js +5 -0
  570. package/server/modules/lists/ls-vatvao.js +6 -0
  571. package/server/modules/lists/ls-warranty.js +3 -0
  572. package/server/modules/lists/ls-workflow.js +1 -0
  573. package/server/modules/lists/ls_hanmucton.js +3 -0
  574. package/server/modules/lists/ls_hspb.js +4 -0
  575. package/server/modules/lists/ls_spdd_ck.js +3 -0
  576. package/server/modules/lists/ls_spdd_dk.js +3 -0
  577. package/server/modules/lists/ls_ytdd_ck.js +4 -0
  578. package/server/modules/lists/ls_ytdd_dk.js +4 -0
  579. package/server/modules/lists/sys-attend.js +4 -0
  580. package/server/modules/lists/sys-follow.js +4 -0
  581. package/server/modules/lists/sys-right.js +2 -0
  582. package/server/modules/public/app.js +4 -0
  583. package/server/modules/public/approve.js +37 -0
  584. package/server/modules/public/callin.js +7 -0
  585. package/server/modules/public/comment.js +5 -0
  586. package/server/modules/public/dmnvt.js +4 -0
  587. package/server/modules/public/dmvt.js +9 -0
  588. package/server/modules/public/file.js +11 -0
  589. package/server/modules/public/forminfo.js +1 -0
  590. package/server/modules/public/group.js +4 -0
  591. package/server/modules/public/introducecode.js +1 -0
  592. package/server/modules/public/listinfo.js +1 -0
  593. package/server/modules/public/media-webhook.js +1 -0
  594. package/server/modules/public/partner.js +1 -0
  595. package/server/modules/public/paymentCallback.js +32 -0
  596. package/server/modules/public/province.js +1 -0
  597. package/server/modules/public/ptthanhtoan.js +4 -0
  598. package/server/modules/public/subscribe.js +30 -0
  599. package/server/modules/public/support.js +3 -0
  600. package/server/modules/public/tableinfo.js +1 -0
  601. package/server/modules/public/trialinfo.js +4 -0
  602. package/server/modules/public/versioninfo.js +1 -0
  603. package/server/modules/reports/calc-tinhgiafifo.js +8 -0
  604. package/server/modules/reports/calc-tinhgiatb.js +7 -0
  605. package/server/modules/reports/calc-tinhgiathanh.js +7 -0
  606. package/server/modules/reports/calc-tinhkhauhaots.js +3 -0
  607. package/server/modules/reports/calc-tinhluong.js +68 -0
  608. package/server/modules/reports/rp-analyzedata.js +6 -0
  609. package/server/modules/reports/rp-assbonus.js +4 -0
  610. package/server/modules/reports/rp-assinterest.js +8 -0
  611. package/server/modules/reports/rp-assproductowners.js +3 -0
  612. package/server/modules/reports/rp-asssupply.js +1 -0
  613. package/server/modules/reports/rp-asstransferlog.js +10 -0
  614. package/server/modules/reports/rp-backup.js +4 -0
  615. package/server/modules/reports/rp-banggiatb.js +3 -0
  616. package/server/modules/reports/rp-bangtinhkhauhao.js +6 -0
  617. package/server/modules/reports/rp-baoCaoFifoKy.js +1 -0
  618. package/server/modules/reports/rp-baocaokhachhang.js +6 -0
  619. package/server/modules/reports/rp-bcdkt.js +11 -0
  620. package/server/modules/reports/rp-bcintroducebonus.js +4 -0
  621. package/server/modules/reports/rp-bckhtiemnang.js +3 -0
  622. package/server/modules/reports/rp-bcqt.js +85 -0
  623. package/server/modules/reports/rp-bkchamcong.js +5 -0
  624. package/server/modules/reports/rp-bkct.js +13 -0
  625. package/server/modules/reports/rp-bkshipbook.js +8 -0
  626. package/server/modules/reports/rp-bkvanchuyen.js +8 -0
  627. package/server/modules/reports/rp-bkvatra.js +7 -0
  628. package/server/modules/reports/rp-bkvatvao.js +7 -0
  629. package/server/modules/reports/rp-capnhatsocaitc.js +4 -0
  630. package/server/modules/reports/rp-cdpsdiem.js +4 -0
  631. package/server/modules/reports/rp-cdpsdt.js +5 -0
  632. package/server/modules/reports/rp-cdpskh.js +8 -0
  633. package/server/modules/reports/rp-cdpsnphep.js +3 -0
  634. package/server/modules/reports/rp-cdpstk.js +4 -0
  635. package/server/modules/reports/rp-chitietchitientheohoadon.js +12 -0
  636. package/server/modules/reports/rp-chitiettaisan.js +13 -0
  637. package/server/modules/reports/rp-chitietthutientheohoadon.js +13 -0
  638. package/server/modules/reports/rp-ckcn.js +3 -0
  639. package/server/modules/reports/rp-ckdiem.js +2 -0
  640. package/server/modules/reports/rp-cktk.js +3 -0
  641. package/server/modules/reports/rp-ckvt.js +10 -0
  642. package/server/modules/reports/rp-ckvttheokho.js +4 -0
  643. package/server/modules/reports/rp-ckvttheotg.js +4 -0
  644. package/server/modules/reports/rp-ckvttt.js +3 -0
  645. package/server/modules/reports/rp-congnophaithutheotuoino.js +3 -0
  646. package/server/modules/reports/rp-congnophaitratheotuoino.js +3 -0
  647. package/server/modules/reports/rp-congnosapthu.js +4 -0
  648. package/server/modules/reports/rp-congnosaptra.js +4 -0
  649. package/server/modules/reports/rp-congviectheobp.js +9 -0
  650. package/server/modules/reports/rp-congviectheodt.js +8 -0
  651. package/server/modules/reports/rp-congviectheokh.js +8 -0
  652. package/server/modules/reports/rp-congviectheonv.js +9 -0
  653. package/server/modules/reports/rp-congviectheotimeline.js +6 -0
  654. package/server/modules/reports/rp-ctbanle.js +15 -0
  655. package/server/modules/reports/rp-ctbanle2.js +20 -0
  656. package/server/modules/reports/rp-ctbanlectv.js +20 -0
  657. package/server/modules/reports/rp-ctbanlenpp.js +24 -0
  658. package/server/modules/reports/rp-ctdanhgianhanvien.js +8 -0
  659. package/server/modules/reports/rp-cthangbanbitralai.js +4 -0
  660. package/server/modules/reports/rp-ctmuahang.js +7 -0
  661. package/server/modules/reports/rp-cttralaihang.js +4 -0
  662. package/server/modules/reports/rp-databanle.js +10 -0
  663. package/server/modules/reports/rp-diemthuong.js +2 -0
  664. package/server/modules/reports/rp-dkcn.js +3 -0
  665. package/server/modules/reports/rp-dktk.js +2 -0
  666. package/server/modules/reports/rp-dsnhanviencm.js +9 -0
  667. package/server/modules/reports/rp-dsnhanvientb.js +9 -0
  668. package/server/modules/reports/rp-dtbanlekempk.js +12 -0
  669. package/server/modules/reports/rp-dtbanletheoct.js +22 -0
  670. package/server/modules/reports/rp-dtbanletheoctkempk.js +25 -0
  671. package/server/modules/reports/rp-dtbanletheokh.js +17 -0
  672. package/server/modules/reports/rp-dtbanletheokhnpp.js +19 -0
  673. package/server/modules/reports/rp-dtbanletheokho.js +15 -0
  674. package/server/modules/reports/rp-dtbanletheonam.js +3 -0
  675. package/server/modules/reports/rp-dtbanletheongay.js +1 -0
  676. package/server/modules/reports/rp-dtbanletheonpp.js +23 -0
  677. package/server/modules/reports/rp-dtbanletheonv.js +19 -0
  678. package/server/modules/reports/rp-dtbanletheoquy.js +3 -0
  679. package/server/modules/reports/rp-dtbanletheosp.js +9 -0
  680. package/server/modules/reports/rp-dtbanletheospnpp.js +6 -0
  681. package/server/modules/reports/rp-dtbanletheothang.js +3 -0
  682. package/server/modules/reports/rp-dtbanletheothungan.js +12 -0
  683. package/server/modules/reports/rp-dtbanletheovt.js +2 -0
  684. package/server/modules/reports/rp-dtbanletheovtnpp.js +2 -0
  685. package/server/modules/reports/rp-dutoanthuchitheodt.js +4 -0
  686. package/server/modules/reports/rp-getPXC2PNC.js +8 -0
  687. package/server/modules/reports/rp-getariseofaccountsbymonth.js +4 -0
  688. package/server/modules/reports/rp-getbtpb.js +6 -0
  689. package/server/modules/reports/rp-getcashbycashier.js +7 -0
  690. package/server/modules/reports/rp-getcschietkhau.js +5 -0
  691. package/server/modules/reports/rp-getdinhmuc4lenhcp.js +7 -0
  692. package/server/modules/reports/rp-getdinhmuc4pxk.js +9 -0
  693. package/server/modules/reports/rp-getdk4pht.js +8 -0
  694. package/server/modules/reports/rp-getdk4pkc.js +10 -0
  695. package/server/modules/reports/rp-getdttheoca.js +5 -0
  696. package/server/modules/reports/rp-getinvoice2pay.js +4 -0
  697. package/server/modules/reports/rp-getinvoice2receive.js +4 -0
  698. package/server/modules/reports/rp-getinvoice2return.js +5 -0
  699. package/server/modules/reports/rp-getinvoice2return_bl.js +6 -0
  700. package/server/modules/reports/rp-getkehoachmh4lenhcp.js +4 -0
  701. package/server/modules/reports/rp-getkhauhao.js +7 -0
  702. package/server/modules/reports/rp-getluong.js +8 -0
  703. package/server/modules/reports/rp-getluongchuyen.js +5 -0
  704. package/server/modules/reports/rp-getpn2fee.js +5 -0
  705. package/server/modules/reports/rp-getpn2return.js +5 -0
  706. package/server/modules/reports/rp-getthanhpham4pnk.js +7 -0
  707. package/server/modules/reports/rp-getvc2xhd.js +11 -0
  708. package/server/modules/reports/rp-gt_cpnvltt.js +6 -0
  709. package/server/modules/reports/rp-hangbanbitralai.js +5 -0
  710. package/server/modules/reports/rp-hangthanhvien.js +3 -0
  711. package/server/modules/reports/rp-hoadonbanhangtheohantt.js +5 -0
  712. package/server/modules/reports/rp-hoadonmuahangtheohantt.js +5 -0
  713. package/server/modules/reports/rp-hoahong.js +15 -0
  714. package/server/modules/reports/rp-kcsns.js +19 -0
  715. package/server/modules/reports/rp-kgchamcong.js +1 -0
  716. package/server/modules/reports/rp-khoaso.js +11 -0
  717. package/server/modules/reports/rp-kiemtrasocaitcvssocai.js +6 -0
  718. package/server/modules/reports/rp-kqdanhgianhanvien.js +5 -0
  719. package/server/modules/reports/rp-kqhdkd.js +1 -0
  720. package/server/modules/reports/rp-lcttgt.js +16 -0
  721. package/server/modules/reports/rp-lctttt.js +11 -0
  722. package/server/modules/reports/rp-linkslist.js +4 -0
  723. package/server/modules/reports/rp-phanbochitienchohoadon.js +11 -0
  724. package/server/modules/reports/rp-phanbothutienchohoadon.js +11 -0
  725. package/server/modules/reports/rp-ptbitralai.js +7 -0
  726. package/server/modules/reports/rp-ptcttct.js +24 -0
  727. package/server/modules/reports/rp-ptdonhang.js +8 -0
  728. package/server/modules/reports/rp-pttct.js +52 -0
  729. package/server/modules/reports/rp-pttctkho.js +32 -0
  730. package/server/modules/reports/rp-pttctkho2.js +29 -0
  731. package/server/modules/reports/rp-referredusers.js +5 -0
  732. package/server/modules/reports/rp-sctbhxh.js +4 -0
  733. package/server/modules/reports/rp-sctcnkh.js +11 -0
  734. package/server/modules/reports/rp-sctdiem.js +3 -0
  735. package/server/modules/reports/rp-sctdt.js +7 -0
  736. package/server/modules/reports/rp-sctdtcp.js +11 -0
  737. package/server/modules/reports/rp-sctluong.js +6 -0
  738. package/server/modules/reports/rp-sctthuetncn.js +4 -0
  739. package/server/modules/reports/rp-scttk.js +9 -0
  740. package/server/modules/reports/rp-sctvt.js +5 -0
  741. package/server/modules/reports/rp-sctvt_sl.js +5 -0
  742. package/server/modules/reports/rp-sctvtnpp.js +6 -0
  743. package/server/modules/reports/rp-sctvttt.js +5 -0
  744. package/server/modules/reports/rp-search.js +4 -0
  745. package/server/modules/reports/rp-socai.js +6 -0
  746. package/server/modules/reports/rp-socaitk.js +1 -0
  747. package/server/modules/reports/rp-sochut.js +7 -0
  748. package/server/modules/reports/rp-sokho.js +7 -0
  749. package/server/modules/reports/rp-sokhott.js +5 -0
  750. package/server/modules/reports/rp-sonkbh.js +5 -0
  751. package/server/modules/reports/rp-sonkc.js +6 -0
  752. package/server/modules/reports/rp-sonkct.js +5 -0
  753. package/server/modules/reports/rp-sonkmh.js +5 -0
  754. package/server/modules/reports/rp-sonktt.js +5 -0
  755. package/server/modules/reports/rp-soquy.js +11 -0
  756. package/server/modules/reports/rp-sosanhkhvatt.js +13 -0
  757. package/server/modules/reports/rp-sosanhkhvatt2.js +5 -0
  758. package/server/modules/reports/rp-sotaisan.js +13 -0
  759. package/server/modules/reports/rp-sotiengui.js +7 -0
  760. package/server/modules/reports/rp-taodinhmuctudkhoc.js +5 -0
  761. package/server/modules/reports/rp-thbanhangkempk.js +28 -0
  762. package/server/modules/reports/rp-thdanhgianhanvien.js +9 -0
  763. package/server/modules/reports/rp-thgt.js +6 -0
  764. package/server/modules/reports/rp-thnxt.js +11 -0
  765. package/server/modules/reports/rp-thnxt_sl.js +9 -0
  766. package/server/modules/reports/rp-thnxtnpp.js +10 -0
  767. package/server/modules/reports/rp-thnxttt.js +9 -0
  768. package/server/modules/reports/rp-tkbanhangtheogioithieu.js +9 -0
  769. package/server/modules/reports/rp-tkgioithieukh.js +4 -0
  770. package/server/modules/reports/rp-tkgtgt.js +76 -0
  771. package/server/modules/reports/rp-tkgtgt_old.js +7 -0
  772. package/server/modules/reports/rp-tmbctc.js +20 -0
  773. package/server/modules/reports/rp-tonghopbanhang.js +6 -0
  774. package/server/modules/reports/rp-tonghopmuahang.js +5 -0
  775. package/server/modules/reports/rp-tonghoptralaihang.js +5 -0
  776. package/server/modules/reports/rp-tongquanbanle.js +20 -0
  777. package/server/modules/reports/rp-tongquanbds.js +3 -0
  778. package/server/modules/reports/rp-tongquancongty.js +6 -0
  779. package/server/modules/reports/rp-tongquanctvnpp.js +12 -0
  780. package/server/modules/reports/rp-tongquannvbh.js +14 -0
  781. package/server/modules/reports/rp-tongquannvnpp.js +5 -0
  782. package/server/modules/reports/rp-uoctinhnvl.js +11 -0
  783. package/server/modules/reports/rp-wallet.js +3 -0
  784. package/server/modules/reports/rpt-tkdiemtichluy.js +9 -0
  785. package/server/modules/systems/sys-app.js +34 -0
  786. package/server/modules/systems/sys-colleague.js +11 -0
  787. package/server/modules/systems/sys-data_list_config.js +1 -0
  788. package/server/modules/systems/sys-domain.js +1 -0
  789. package/server/modules/systems/sys-ecomproductlines.js +1 -0
  790. package/server/modules/systems/sys-exportexceltemplate.js +1 -0
  791. package/server/modules/systems/sys-fieldright.js +1 -0
  792. package/server/modules/systems/sys-importexceltemplate.js +1 -0
  793. package/server/modules/systems/sys-labelinfo.js +4 -0
  794. package/server/modules/systems/sys-listinfo.js +10 -0
  795. package/server/modules/systems/sys-menuinfo.js +4 -0
  796. package/server/modules/systems/sys-message.js +14 -0
  797. package/server/modules/systems/sys-moduleinfo.js +4 -0
  798. package/server/modules/systems/sys-notification.js +8 -0
  799. package/server/modules/systems/sys-quanhuyen.js +1 -0
  800. package/server/modules/systems/sys-reportinfo.js +5 -0
  801. package/server/modules/systems/sys-rptobject.js +1 -0
  802. package/server/modules/systems/sys-schedule.js +10 -0
  803. package/server/modules/systems/sys-sysconfig.js +1 -0
  804. package/server/modules/systems/sys-sysgroup.js +1 -0
  805. package/server/modules/systems/sys-tableinfo.js +1 -0
  806. package/server/modules/systems/sys-templatestore.js +5 -0
  807. package/server/modules/systems/sys-tinhthanh.js +1 -0
  808. package/server/modules/systems/sys-token.js +3 -0
  809. package/server/modules/systems/sys-trangthai.js +3 -0
  810. package/server/modules/systems/sys-trialinfo.js +1 -0
  811. package/server/modules/systems/sys-user.js +45 -0
  812. package/server/modules/systems/sys-users.js +10 -0
  813. package/server/modules/systems/sys-versioninfo.js +1 -0
  814. package/server/modules/systems/sys-vietqrbanks.js +1 -0
  815. package/server/modules/systems/sys-xaphuong.js +1 -0
  816. package/server/modules/vouchers/vo-banggiaban.js +8 -0
  817. package/server/modules/vouchers/vo-bc1.js +34 -0
  818. package/server/modules/vouchers/vo-bc5.js +15 -0
  819. package/server/modules/vouchers/vo-bg1.js +10 -0
  820. package/server/modules/vouchers/vo-bg2.js +12 -0
  821. package/server/modules/vouchers/vo-bn1.js +36 -0
  822. package/server/modules/vouchers/vo-bn5.js +15 -0
  823. package/server/modules/vouchers/vo-dh2.js +35 -0
  824. package/server/modules/vouchers/vo-dinhmucsx.js +6 -0
  825. package/server/modules/vouchers/vo-dkb.js +21 -0
  826. package/server/modules/vouchers/vo-dn0.js +9 -0
  827. package/server/modules/vouchers/vo-dnm.js +20 -0
  828. package/server/modules/vouchers/vo-hd1.js +37 -0
  829. package/server/modules/vouchers/vo-hd2.js +108 -0
  830. package/server/modules/vouchers/vo-hd3.js +38 -0
  831. package/server/modules/vouchers/vo-hd4.js +13 -0
  832. package/server/modules/vouchers/vo-hd7.js +29 -0
  833. package/server/modules/vouchers/vo-hd8.js +29 -0
  834. package/server/modules/vouchers/vo-hde.js +39 -0
  835. package/server/modules/vouchers/vo-htl.js +11 -0
  836. package/server/modules/vouchers/vo-kbbtpb.js +6 -0
  837. package/server/modules/vouchers/vo-kehoachmh.js +11 -0
  838. package/server/modules/vouchers/vo-lenhcapphat.js +9 -0
  839. package/server/modules/vouchers/vo-lenhsx.js +12 -0
  840. package/server/modules/vouchers/vo-pbl.js +94 -0
  841. package/server/modules/vouchers/vo-pc0.js +14 -0
  842. package/server/modules/vouchers/vo-pc1.js +31 -0
  843. package/server/modules/vouchers/vo-pc2.js +25 -0
  844. package/server/modules/vouchers/vo-pc3.js +14 -0
  845. package/server/modules/vouchers/vo-pc5.js +15 -0
  846. package/server/modules/vouchers/vo-pc6.js +19 -0
  847. package/server/modules/vouchers/vo-pcl.js +7 -0
  848. package/server/modules/vouchers/vo-pdn.js +11 -0
  849. package/server/modules/vouchers/vo-pdx.js +9 -0
  850. package/server/modules/vouchers/vo-pgh.js +16 -0
  851. package/server/modules/vouchers/vo-pht.js +6 -0
  852. package/server/modules/vouchers/vo-pkc.js +5 -0
  853. package/server/modules/vouchers/vo-pkh.js +9 -0
  854. package/server/modules/vouchers/vo-pkk.js +12 -0
  855. package/server/modules/vouchers/vo-pkt.js +12 -0
  856. package/server/modules/vouchers/vo-pn1.js +30 -0
  857. package/server/modules/vouchers/vo-pn2.js +17 -0
  858. package/server/modules/vouchers/vo-pn3.js +18 -0
  859. package/server/modules/vouchers/vo-pn5.js +18 -0
  860. package/server/modules/vouchers/vo-pn6.js +18 -0
  861. package/server/modules/vouchers/vo-pn9.js +23 -0
  862. package/server/modules/vouchers/vo-pnc.js +19 -0
  863. package/server/modules/vouchers/vo-pnh.js +17 -0
  864. package/server/modules/vouchers/vo-pnk.js +14 -0
  865. package/server/modules/vouchers/vo-pnknpp.js +12 -0
  866. package/server/modules/vouchers/vo-po1.js +14 -0
  867. package/server/modules/vouchers/vo-ppb.js +8 -0
  868. package/server/modules/vouchers/vo-pt1.js +20 -0
  869. package/server/modules/vouchers/vo-pt5.js +15 -0
  870. package/server/modules/vouchers/vo-ptl.js +8 -0
  871. package/server/modules/vouchers/vo-purchase_contract.js +9 -0
  872. package/server/modules/vouchers/vo-pxc.js +24 -0
  873. package/server/modules/vouchers/vo-pxh.js +18 -0
  874. package/server/modules/vouchers/vo-pxk.js +15 -0
  875. package/server/modules/vouchers/vo-pxknpp.js +14 -0
  876. package/server/modules/vouchers/vo-qts.js +12 -0
  877. package/server/modules/vouchers/vo-sale_contract.js +11 -0
  878. package/server/modules/vouchers/vo-shipbook.js +17 -0
  879. package/server/modules/vouchers/vo-so1.js +125 -0
  880. package/server/modules/vouchers/vo-so5.js +57 -0
  881. package/server/modules/vouchers/vo-so7.js +97 -0
  882. package/server/modules/vouchers/vo-so9.js +119 -0
  883. package/server/modules/vouchers/vo-vanchuyen.js +14 -0
  884. package/server/modules/vouchers/vo-xhd.js +33 -0
@@ -0,0 +1,8 @@
1
+ const {ec}=require("elliptic-nodejs"),EC=new ec("secp256k1"),walletSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},privateKey:{type:String,required:!0},publicKey:{type:String,required:!0},email:{type:String,required:!0,lowercase:!0},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
2
+ (global.configs||{}).createIndexes&&(walletSchema.index({id_app:1,privateKey:1,email:1}),walletSchema.index({email:"text"}),walletSchema.index({status:1}),walletSchema.index({user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.wallet||mongoose.model("wallet",walletSchema),toHexString=$byteArray$$=>Array.from($byteArray$$,$byte$$=>("0"+($byte$$&255).toString(16)).slice(-2)).join("");
3
+ model.createWallet=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,email:$email$$},($e$$,$rs$$)=>{if($e$$||$rs$$)return $reject$$(Error($e$$?$e$$.message:"This user has wallet"));try{let $privateKey$$=EC.genKeyPair().getPrivate().toString(16),$publicKey$$=model.getPublicKeyFromPrivateKey($privateKey$$);(new model({email:$email$$,privateKey:$privateKey$$,publicKey:$publicKey$$,id_app:$id_app$$})).save($e$$=>{if($e$$)return $reject$$(Error($e$$.message));
4
+ $resolve$$($privateKey$$)})}catch($e$$){Logger.error($e$$),$reject$$(Error($e$$.message))}})});model.getPrivateKey=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,email:$email$$}).lean().then(async $rs$$=>{if($rs$$)return $resolve$$($rs$$.privateKey);try{let $privateKey$$=await model.createWallet($id_app$$,$email$$);$resolve$$($privateKey$$)}catch($e$$){$reject$$(Error($e$$.message))}}).catch($e$$=>{$reject$$(Error($e$$.message))})});
5
+ model.getPublicKey=async($id_app$$,$email$$)=>{var $privateKey$jscomp$2_publicKey$$=await model.getPrivateKey($id_app$$,$email$$);$privateKey$jscomp$2_publicKey$$=model.getPublicKeyFromPrivateKey($privateKey$jscomp$2_publicKey$$);await model.updateOne({id_app:$id_app$$,email:$email$$},{publicKey:$privateKey$jscomp$2_publicKey$$});return $privateKey$jscomp$2_publicKey$$};model.getPublicKeyFromPrivateKey=$privateKey$$=>EC.keyFromPrivate($privateKey$$,"hex").getPublic().encode("hex");
6
+ model.getEmail=async($id_app$$,$publicKey$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,publicKey:$publicKey$$}).lean().then(async $rs$$=>$rs$$?$resolve$$($rs$$.email):$reject$$(Error("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"))).catch($e$$=>{$reject$$(Error($e$$.message))})});
7
+ model.sign=async($id_app$$,$email$$,$dataToSign$$)=>{try{let $privateKey$$=await model.getPrivateKey($id_app$$,$email$$),$key$$=EC.keyFromPrivate($privateKey$$,"hex"),$msgHash$$=[JSON.stringify($dataToSign$$)];return toHexString($key$$.sign($msgHash$$).toDER())}catch($e$$){throw Error(`Can't sign data. Error: ${$e$$.message}`);}};
8
+ model.verifySignature=async($address_id_app$jscomp$5_key$$,$email$$,$data_msgHash$$,$signature$$)=>{$address_id_app$jscomp$5_key$$=await model.getPublicKey($address_id_app$jscomp$5_key$$,$email$$);$address_id_app$jscomp$5_key$$=EC.keyFromPublic($address_id_app$jscomp$5_key$$,"hex");$data_msgHash$$=[JSON.stringify($data_msgHash$$)];return $address_id_app$jscomp$5_key$$.verify($data_msgHash$$,$signature$$)};module.exports=model;
@@ -0,0 +1,3 @@
1
+ const warrantySchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_hd:{type:String,required:!0,maxlength:1024},ten_hd:String,tien_nt:{type:Number,default:0},ma_nt:{type:String,default:"VND"},mieu_ta:{type:String},start_date:{type:Date},warranty_time:{type:Number,default:0},unit_time:{type:Number,default:2},due_date:{type:Date},reminder_yn:{type:Boolean,default:!0},reminder:{type:Date},repeat:{type:Number},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,
2
+ default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]});
3
+ (global.configs||{}).createIndexes&&(warrantySchema.index({id_app:1,id_hd:1,ten_hd:1,mieu_ta:1}),warrantySchema.index({id_app:1,ten_hd:"text",mieu_ta:"text"}),warrantySchema.index({id_app:1,status:1}),warrantySchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.kbmlctttt||mongoose.model("warranty",warrantySchema);module.exports=model;
@@ -0,0 +1,2 @@
1
+ const mongoose=require("mongoose"),Schema=mongoose.Schema,warrantyClaimSchema=new Schema({id_app:{type:Schema.Types.ObjectId,ref:"app",required:!0,index:!0},ma_kh:{type:String,required:!0,index:!0},order:{type:Schema.Types.ObjectId,refPath:"order_type_model",required:!0,index:!0},order_type_model:{type:String,required:!0,enum:["hd2","pbl","so1"],default:"hd2"},ma_vt:{type:String,required:!0},warranty_info:{policy_id:{type:Schema.Types.ObjectId,ref:"warrantypolicy"},name:{type:String},duration_months:{type:Number},
2
+ start_date:{type:Date},end_date:{type:Date},status:{type:String,enum:["PENDING","ACTIVE","EXPIRED"],default:"PENDING"}},issue_description:{type:String,required:!0},trang_thai:String,resolution_type:{type:String,enum:["REPAIRED","REPLACED"]},resolution_details:{type:String},return_tracking_number:{type:String},rejection_reason:{type:String}},{timestamps:!0});module.exports=mongoose.models.warrantyclaim||mongoose.model("warrantyclaim",warrantyClaimSchema);
@@ -0,0 +1 @@
1
+ const mongoose=require("mongoose"),Schema=mongoose.Schema,warrantyPolicySchema=new Schema({id_app:{type:Schema.Types.ObjectId,ref:"app",required:!0,index:!0},name:{type:String,required:!0},durationMonths:{type:Number,required:!0,min:0},details:{type:String,required:!0},type:{type:String,enum:["SELLER","MANUFACTURER"],required:!0},isActive:{type:Boolean,default:!0}},{timestamps:!0});module.exports=mongoose.models.warrantypolicy||mongoose.model("warrantypolicy",warrantyPolicySchema);
@@ -0,0 +1,4 @@
1
+ const mongoose=require("mongoose"),{Schema}=mongoose,kpiSchema=new Schema({metric_name:String,type:{type:String,enum:["count","sum","conversion_rate"]},apiCode:String,target_value:Number}),StepSchema=new Schema({step_order:{type:Number,required:!0,description:"Th\u1ee9 t\u1ef1 c\u1ee7a b\u01b0\u1edbc trong quy tr\u00ecnh"},title:{type:String,required:!0,description:"T\u00ean b\u01b0\u1edbc (VD: \u0110\u1ea7u gi\u1edd s\u00e1ng)"},time_block:{type:String,description:"Khung gi\u1edd g\u1ee3i \u00fd (VD: 08:00 - 09:30)"},
2
+ objective:{type:String,description:"M\u1ee5c ti\u00eau c\u1ee7a b\u01b0\u1edbc n\u00e0y (VD: \u0110\u1ea3m b\u1ea3o doanh thu n\u1ec1n t\u1ea3ng)"},description:{type:String,description:"H\u01b0\u1edbng d\u1eabn chi ti\u1ebft / Thao t\u00e1c h\u1ec7 th\u1ed1ng"},dashboard_config:Schema.Types.Mixed}),WorkflowSchema=new Schema({id_app:{type:String,required:!0},code:{type:String,required:!0,uppercase:!0,description:"M\u00e3 quy tr\u00ecnh (VD: SOP_SALES_B2B)"},title:{type:String,required:!0,description:"T\u00ean quy tr\u00ecnh"},
3
+ ma_bp:{type:String,description:"Ph\u00f2ng ban \u00e1p d\u1ee5ng"},cong_viec:{type:String,description:"V\u1ecb tr\u00ed \u00e1p d\u1ee5ng (VD: Nh\u00e2n vi\u00ean kinh doanh B2B)"},status:{type:Boolean,default:!0,description:"Tr\u1ea1ng th\u00e1i ho\u1ea1t \u0111\u1ed9ng"},steps:[StepSchema],kpi_configs:[kpiSchema],date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
4
+ (global.configs||{}).createIndexes&&WorkflowSchema.index({id_app:1,code:1},{unique:!0});module.exports=mongoose.model("workflow",WorkflowSchema);
@@ -0,0 +1,2 @@
1
+ const xaphuongSchema=new Schema({ten_tinh_thanh:{type:String,required:!0,maxlength:1024,trim:!0},ten_quan_huyen:{type:String,required:!0,maxlength:1024,trim:!0},ten_xa_phuong:{type:String,required:!0,maxlength:1024,trim:!0},description:String,stt:{type:Number,default:0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
2
+ (global.configs||{}).createIndexes&&(xaphuongSchema.index({ten_tinh_thanh:1,ten_quan_huyen:1,ten_xa_phuong:1}),xaphuongSchema.index({ten_tinh_thanh:"text",ten_quan_huyen:"text",ten_xa_phuong:"text"}),xaphuongSchema.index({status:1}),xaphuongSchema.index({user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.xaphuong||mongoose.model("xaphuong",xaphuongSchema);module.exports=model;
@@ -0,0 +1,10 @@
1
+ const validAccount=require("../libs/validator-account"),validator=require("../libs/validator"),detailSchema=new Schema({id_ct:String,code_ct:String,ma_vt:{type:String,maxlength:1024},ten_vt:{type:String,maxlength:1024},ma_dvt:{type:String,maxlength:32},sl_xuat:{type:Number,default:1},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien_hang:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,
2
+ default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,default:"",maxlength:1024},ten_vt_vat:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,
3
+ uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,uppercase:!0,default:"",maxlength:32},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}}),xhdSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"XHD",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,required:"B\u1ea1n ch\u01b0a nh\u1eadp s\u1ed1 ch\u1ee9ng t\u1eeb",
4
+ uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"B\u1ea1n ch\u01b0a nh\u1eadp m\u00e3 ngo\u1ea1i t\u1ec7",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,min:0,default:1},tk_no:{type:String,uppercase:!0,required:"B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n n\u1ee3",default:"",maxlength:32},ma_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},ky_hieu_hoa_don:{type:String,default:"",
5
+ uppercase:!0,trim:!0,maxlength:32},so_hd:{type:String,uppercase:!0,maxlength:32},so_seri:{type:String,uppercase:!0,maxlength:32},ngay_hd:{type:Date,uppercase:!0},ma_thue:{type:String,uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},tk_thue_co:{type:String,uppercase:!0,maxlength:32},ma_kh:{type:String,uppercase:!0,required:"B\u1ea1n ch\u01b0a nh\u1eadp m\u00e3 kh\u00e1ch h\u00e0ng",default:"",maxlength:32},ten_kh:{type:String,default:"",maxlength:1024},dia_chi:{type:String,default:"",maxlength:1024},
6
+ ong_ba:{type:String,maxlength:1024},ma_so_thue:{type:String,maxlength:1024},ten_vt:{type:String,default:"",maxlength:1024},dien_giai_thue:{type:String,default:"",maxlength:1024},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},han_tt:{type:Number,default:0},hinh_thuc_tt:{type:String,maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
7
+ date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],details:{type:[detailSchema]},id_contract:{type:String,maxlength:1024},result_export_einvoice:Schema.Types.Mixed,ma_bp:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_dt:{type:String,uppercase:!0,
8
+ maxlength:32},ma_nv:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,maxlength:32},ma_kho:String,ten_kho:String});xhdSchema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};
9
+ (global.configs||{}).createIndexes&&(xhdSchema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1},{name:"xhd_index_1"}),xhdSchema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",so_hd:"text",so_seri:"text",ma_so_thue:"text"},{name:"xhd_index_text"}),xhdSchema.index({ma_ct:1}),xhdSchema.index({ma_kh:1}),xhdSchema.index({user_created:1,date_created:-1}),xhdSchema.index({date_updated:-1}),xhdSchema.index({status:1}),xhdSchema.index({user_created:1,visible_to:1,visible_to_users:1}),xhdSchema.index({trang_thai:1}));
10
+ module.exports=mongoose.models.xhd||mongoose.model("xhd",xhdSchema);
@@ -0,0 +1,4 @@
1
+ const ytdd_ckScheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},nam:{type:Number,required:!0},thang:{type:Number,required:!0},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_yt:{type:String,required:"L\u1ed7i: M\u00e3 y\u1ebfu t\u1ed1 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",uppercase:!0,maxlength:32},ma_sp:{type:String,uppercase:!0,default:"",maxlength:1024},ten_sp:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ten_bp:String,ma_nvl:{type:String,uppercase:!0,
2
+ default:"",maxlength:32},id_lenhsx:{type:String,maxlength:1024},tien_nt:{type:Number,default:0},tien:{type:Number,default:0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
3
+ (global.configs||{}).createIndexes&&(ytdd_ckScheam.index({id_app:1,nam:1,thang:1,ma_dvcs:1,ma_yt:1}),ytdd_ckScheam.index({ma_sp:1}),ytdd_ckScheam.index({ma_bp:1}),ytdd_ckScheam.index({ma_sp:"text",ten_sp:"text",ma_bp:"text",ten_bp:"text"},{name:"ytdd_ck_index_text"}),ytdd_ckScheam.index({id_lenhsx:1}),ytdd_ckScheam.index({ma_nvl:1}),ytdd_ckScheam.index({status:1}),ytdd_ckScheam.index({user_created:1,visible_to:1,visible_to_users:1}));
4
+ module.exports=mongoose.models.ytdd_ck||mongoose.model("ytdd_ck",ytdd_ckScheam);
@@ -0,0 +1,4 @@
1
+ const ytdd_dkScheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},nam:{type:Number,required:!0},thang:{type:Number,required:!0},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_yt:{type:String,required:"L\u1ed7i: M\u00e3 y\u1ebfu t\u1ed1 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",uppercase:!0,maxlength:32},ma_sp:{type:String,uppercase:!0,default:"",maxlength:1024},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_nvl:{type:String,uppercase:!0,default:"",maxlength:32},id_lenhsx:{type:String,
2
+ maxlength:1024},tien_nt:{type:Number,default:0},tien:{type:Number,default:0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
3
+ (global.configs||{}).createIndexes&&(ytdd_dkScheam.index({id_app:1,nam:1,thang:1,ma_dvcs:1,ma_yt:1}),ytdd_dkScheam.index({ma_sp:1}),ytdd_dkScheam.index({ma_bp:1}),ytdd_dkScheam.index({id_lenhsx:1}),ytdd_dkScheam.index({ma_nvl:1}),ytdd_dkScheam.index({ma_sp:"text",ten_sp:"text",ma_bp:"text",ten_bp:"text"},{name:"ytdd_dk_index_text"}),ytdd_dkScheam.index({status:1}),ytdd_dkScheam.index({user_created:1,visible_to:1,visible_to_users:1}));
4
+ module.exports=mongoose.models.ytdd_dk||mongoose.model("ytdd_dk",ytdd_dkScheam);
@@ -0,0 +1,17 @@
1
+ const controller=require("../controllers/controller"),Ptthanhtoan=global.getModel("ptthanhtoan"),hmacSHA256=require("crypto-js/hmac-sha256"),axios=require("axios"),moment=require("moment"),{executeInTransaction}=require("../libs/sessionContext"),zaloScheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_ct:{type:String,required:!0,maxlength:1024},apptransid:String,ma_ct:{type:String,required:!0,uppercase:!0},pt_thanh_toan:{type:String,required:!0},client_ip:{type:String,required:!0},
2
+ trang_thai:{type:String,default:"0",enum:["0","1","2"]}});(global.configs||{}).createIndexes&&(zaloScheam.index({id_app:1}),zaloScheam.index({id_ct:1}),zaloScheam.index({apptransid:1}),zaloScheam.index({trang_thai:1}),zaloScheam.index({pt_thanh_toan:1}));const model=mongoose.models.zalo||mongoose.model("zalo",zaloScheam),again_link=`${configs.domain?`https://${configs.domain}`:configs.api_url}/public/payment/again`;
3
+ model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().then($rs$$=>{if(!$rs$$)return $reject$$(Error(`Can't find transaction info, Query: ${JSON.stringify($condition$$)}`));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)}).catch($e$$=>{$reject$$($e$$)})})};
4
+ model.getConfigs=async($id_app$$,$pt_thanh_toan$$,$_paymentViazalo$$)=>{if(!$pt_thanh_toan$$||!global.mongoose.Types.ObjectId.isValid($pt_thanh_toan$$))return null;$_paymentViazalo$$||=await Ptthanhtoan.getInfo($id_app$$,{_id:$pt_thanh_toan$$});return $_paymentViazalo$$||$_paymentViazalo$$.payment_service==="zalo"?($id_app$$=$_paymentViazalo$$.zalo_configs)&&$id_app$$.endpoint&&$id_app$$.appid&&$id_app$$.key1&&$id_app$$.key2?$id_app$$:($id_app$$=configs.zalo_configs)&&$id_app$$.endpoint&&$id_app$$.appid&&
5
+ $id_app$$.key1&&$id_app$$.key2?$id_app$$:null:(Logger.error("Phuong thuc thanh toan khong ton tai"),null)};
6
+ model.createVirtualPaymentClientURL=async($order$$,$client_ip$$,$_paymentViazalo$$)=>{let $id_app$$=$order$$.id_app,$amount$$=$order$$.amount||$order$$.t_tien||0;if($amount$$<1E3)throw"S\u1ed1 ti\u1ec1n ph\u1ea3i l\u1edbn h\u01a1n ho\u1eb7c b\u1eb1ng 1000 VND";let $zalo_configs$$=await model.getConfigs($id_app$$,$order$$.pt_thanh_toan,$_paymentViazalo$$);if(!$zalo_configs$$)return Logger.error("not found zalo configs"),"";let $apptime$$=(new Date).getTime(),$apptransid$$=moment($apptime$$).format("YYMMDD")+
7
+ "_"+$order$$.so_ct,$_zalo$$=new model({id_app:$id_app$$,id_ct:$order$$._id,ma_ct:$order$$.ma_ct,apptransid:$apptransid$$,pt_thanh_toan:$order$$.pt_thanh_toan,client_ip:$client_ip$$||":11"});return new Promise(($resolve$$,$reject$$)=>{$_zalo$$.save(($appid_body_e$$,$embeddata_rs$$)=>{if($appid_body_e$$)return $reject$$(Error($appid_body_e$$.message));$appid_body_e$$=$zalo_configs$$.appid;let $appuser$$=$order$$.user_created;$embeddata_rs$$={request_id:$embeddata_rs$$._id.toString(),redirecturl:`${configs.domain?
8
+ `https://${configs.domain}`:configs.api_url}/public/${$id_app$$}/zalo/${$embeddata_rs$$._id.toString()}/callback`};let $item$$=$order$$.details.map($d$$=>({ma_vt:$d$$.ma_vt,ten_vt:$d$$.ten_vt,sl_xuat:$d$$.sl_xuat})),$bankcode$$=$zalo_configs$$.bankcode||"",$description$$=$order$$.dien_giai||"Pay with zalo";var $mac_rawSignature$$=$appid_body_e$$+"|"+$apptransid$$+"|"+$appuser$$+"|"+$amount$$+"|"+$apptime$$+"|"+JSON.stringify($embeddata_rs$$)+"|"+JSON.stringify($item$$);$mac_rawSignature$$=hmacSHA256($mac_rawSignature$$,
9
+ $zalo_configs$$.key1).toString();$appid_body_e$$={amount:$amount$$,appid:$appid_body_e$$,appuser:$appuser$$,apptime:$apptime$$,apptransid:$apptransid$$,embeddata:JSON.stringify($embeddata_rs$$),item:JSON.stringify($item$$),bankcode:$bankcode$$,mac:$mac_rawSignature$$,description:$description$$};axios.post($zalo_configs$$.endpoint,new URLSearchParams($appid_body_e$$)).then($res$$=>{if($res$$.data.returncode!=1)return Logger.error($res$$.data),$reject$$(Error($res$$.data.returnmessage));$resolve$$($res$$.data.orderurl)}).catch($error$$=>
10
+ {$reject$$($error$$)})})})};
11
+ model.handleNotify=async($id_app$$,$callback_data$$,$callback$$)=>{try{const $body_receiver$$=JSON.parse($callback_data$$);let $id_transaction$$=$body_receiver$$.embeddata.request_id;if(!$id_transaction$$)return $callback$$(null,{returncode:9,returnmessage:"Kh\u00f4ng tim th\u1ea5y giao d\u1ecbch n\u00e0y"});const $trans$$=await model.findOne({_id:$id_transaction$$}),$service_configs$$=await model.getConfigs($id_app$$,$trans$$.pt_thanh_toan);if(hmacSHA256($callback_data$$.data,$service_configs$$.key2).toString()!==
12
+ $body_receiver$$.mac)return $callback$$(null,{returncode:9,returnmessage:"Mac kh\u00f4ng kh\u1edbp"});$callback$$(null,{returncode:1,returnmessage:"Callback h\u1ee3p l\u00fd"})}catch($e$$){Logger.error($e$$),$callback$$(null,{returncode:9,returnmessage:"Kh\u00f4ng th\u1ec3 x\u00e1c th\u1ef1c giao d\u1ecbch"})}};
13
+ model.verifyReturnUrl=async($apptransid$jscomp$1_id_app$$,$id_transaction$$)=>{let $_zalo$$=await model.getInfo($apptransid$jscomp$1_id_app$$,{_id:$id_transaction$$}),$zalo_configs$$=await model.getConfigs($apptransid$jscomp$1_id_app$$,$_zalo$$.pt_thanh_toan);if(!$zalo_configs$$)throw"Miss configures for zalo";$apptransid$jscomp$1_id_app$$=$_zalo$$.apptransid;let $appid$$=$zalo_configs$$.appid,$mac$$=hmacSHA256($appid$$+"|"+$apptransid$jscomp$1_id_app$$+"|"+$zalo_configs$$.key1,$zalo_configs$$.key1).toString(),
14
+ $body$$={appid:$appid$$,apptransid:$apptransid$jscomp$1_id_app$$,mac:$mac$$};return new Promise(($resolve$$,$reject$$)=>{axios.post($zalo_configs$$.endpoint_status,new URLSearchParams($body$$)).then(async $obj_updated$jscomp$1_obj_updated$$=>{const $results$$=$obj_updated$jscomp$1_obj_updated$$.data;$results$$.isSuccess=$results$$.returncode==1;let $_v$$=global.getModel(`${$_zalo$$.ma_ct.toLowerCase()}`);if($results$$.isSuccess)try{await executeInTransaction(async()=>{await model.updateOne({_id:$id_transaction$$},
15
+ {trang_thai:$results$$.isSuccess==0?"1":"2"});await $_v$$.updateOne({_id:$_zalo$$.id_ct},{trang_thai:"5"});const $obj_updated$$=await $_v$$.findOne({_id:$_zalo$$.id_ct});let $ctrl$$=global.controllers[$_zalo$$.ma_ct.toUpperCase()];$ctrl$$&&$obj_updated$$&&($ctrl$$.post&&(await controller.asyncPostData($obj_updated$$,$ctrl$$),controller.pushNotification($ctrl$$,$obj_updated$$,"update")),$ctrl$$.handleAfterPayment&&(await $ctrl$$.handleAfterPayment($obj_updated$$),controller.pushNotification($ctrl$$,
16
+ $obj_updated$$,"payment",null,!1,{title:`Bill ${$obj_updated$$.so_ct} \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n`})),$results$$.result_url=$obj_updated$$.again_link||again_link)})}catch($e$$){Logger.error("[zalo]error update status for voucher",$_zalo$$.ma_ct,$e$$),$obj_updated$jscomp$1_obj_updated$$=await $_v$$.findOne({_id:$_zalo$$.id_ct}),$results$$.result_url=$obj_updated$jscomp$1_obj_updated$$.again_link||again_link}else $obj_updated$jscomp$1_obj_updated$$=await $_v$$.findOne({_id:$_zalo$$.id_ct}),
17
+ $results$$.result_url=$obj_updated$jscomp$1_obj_updated$$.again_link||again_link;$results$$.result_url=$results$$.result_url||again_link;$results$$.error_url="";$results$$.message=$results$$.returnmessage;$resolve$$($results$$)}).catch($error$$=>{$reject$$($error$$)})})};module.exports=model;
@@ -0,0 +1,6 @@
1
+ const model=global.getModel("cddiem"),controller=require("../../controllers/controller"),moment=require("moment"),dvcs=global.getModel("dvcs"),async=require("async"),utils=require("../../libs/utils"),cddiem=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"cddiem",{sort:{nam:-1,ma_dvcs:1,email:1}});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=$user$$.current_id_app;async.series({dvcs:function($callback$$){$result$$.joinModel2($id_app$$,
2
+ dvcs,[{where:{ma_dvcs:"_id"},fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$$.nam_bd);let $den_ngay$$=
3
+ moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn h\u1ebft ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)};$contr_router$$.updating=async function($ngay_ks$jscomp$2_user$$,$data$$,$obj$$,$callback$$){var $_app$jscomp$1_ngay_ks$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$2_user$$.current_id_app});
4
+ if(!$_app$jscomp$1_ngay_ks$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($_app$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$jscomp$1_ngay_ks$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn h\u1ebft ng\u00e0y ${moment($_app$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;
5
+ if($data$$.nam&&($den_ngay$$=moment([$data$$.nam,0,1]).endOf("year").toDate(),$ngay_ks$jscomp$2_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$$})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn h\u1ebft ng\u00e0y ${moment($ngay_ks$jscomp$2_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});
6
+ if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn h\u1ebft ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)}};module.exports=cddiem;
@@ -0,0 +1,7 @@
1
+ const model=global.getModel("cddt"),controller=require("../../controllers/controller"),moment=require("moment"),dvcs=global.getModel("dvcs"),dmtk=global.getModel("account"),dmdt=global.getModel("dmdt"),async=require("async"),utils=require("../../libs/utils"),cddt=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"cddt",{sort:{ma_dvcs:1,nam:-1,ma_dt:1,tk:1},unique:["ma_dvcs","tk","ma_dt","nam"]});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=
2
+ $user$$.current_id_app;async.series({dvcs:function($callback$$){$result$$.joinModel2($id_app$$,dvcs,[{where:{ma_dvcs:"_id"},fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function($kq$$){$callback$$(null,$kq$$)})},tk:function($callback$$){$result$$.joinModel2($id_app$$,dmtk,[{where:"tk",fields:[{name:"ten_tk",value:"ten_tk"}]}],function($kq$$){$callback$$(null,$kq$$)})},dt:function($callback$$){$result$$.joinModel2($id_app$$,dmdt,[{where:"ma_dt",fields:[{name:"ten_dt",value:"ten_dt"}]}],function($kq$$){$callback$$(null,
3
+ $kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$$.nam_bd);let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,
4
+ ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)};$contr_router$$.updating=async function($ngay_ks$jscomp$2_user$$,$data$$,$obj$$,$callback$$){var $_app$jscomp$1_ngay_ks$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$2_user$$.current_id_app});if(!$_app$jscomp$1_ngay_ks$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
5
+ let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($_app$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$jscomp$1_ngay_ks$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($_app$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;if($data$$.nam&&($den_ngay$$=moment([$data$$.nam,0,1]).startOf("date").toDate(),$ngay_ks$jscomp$2_user$$=
6
+ await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$$})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$2_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
7
+ let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)}};module.exports=cddt;
@@ -0,0 +1,11 @@
1
+ const model=global.getModel("cdkh"),controller=require("../../controllers/controller"),customer=global.getModel("customer"),dmkho=global.getModel("dmkho"),dmdt=global.getModel("dmdt"),dmnv=global.getModel("dmnv"),contract=global.getModel("contract"),dmbp=global.getModel("dmbp"),dvcs=global.getModel("dvcs"),dmtk=global.getModel("account"),async=require("async"),moment=require("moment"),utils=require("../../libs/utils"),cdkh=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,
2
+ "cdkh",{sort:{ma_dvcs:1,nam:-1,tk:1},unique:"ma_dvcs tk ma_kh ma_kho ma_dt ma_bp ma_hd ma_nv nam".split(" ")});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=$user$$.current_id_app;async.series({dv:function($callback$$){$result$$.joinModel2($id_app$$,dvcs,{where:{ma_dvcs:"_id"},fields:{ten_dvcs:"ten_dvcs"}},function(){$callback$$()})},kh:function($callback$$){$result$$.joinModel2($id_app$$,customer,{where:"ma_kh",fields:{ten_kh:"ten_kh"}},function(){$callback$$()})},
3
+ tk:function($callback$$){$result$$.joinModel2($id_app$$,dmtk,{where:"tk",fields:["ten_tk","ma_nt"]},function(){$callback$$()})},kho:function($callback$$){$result$$.joinModel2($id_app$$,dmkho,{where:"ma_kho",fields:{ten_kho:"ten_kho"}},function(){$callback$$()})},dmbp:function($callback$$){$result$$.joinModel2($id_app$$,dmbp,{where:"ma_bp",fields:{ten_bp:"ten_bp"}},function(){$callback$$()})},dmdt:function($callback$$){$result$$.joinModel2($id_app$$,dmdt,{where:"ma_dt",fields:{ten_dt:"ten_dt"}},function(){$callback$$()})},
4
+ contract:function($callback$$){$result$$.joinModel2($id_app$$,contract,{where:{ma_hd:"so_hd"},fields:{ten_hd:"ten_hd"}},function(){$callback$$()})},nv:function($callback$$){$result$$.joinModel2($id_app$$,dmnv,{where:"ma_nv",fields:{ten_nv:"ten_nv"}},function(){$callback$$()})}},function(){$fn$$(null,$result$$)})};$contr_router$$.updating=async function($id_app$jscomp$1_tk_user$$,$data$$,$obj$$,$callback$$){var $_app_ngay_ks$$=await global.getModel("app").findOne({_id:$id_app$jscomp$1_tk_user$$.current_id_app});
5
+ if(!$_app_ngay_ks$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $den_ngay_ngay_ks$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($den_ngay_ngay_ks$$=await utils.isBookLocked({id_app:$id_app$jscomp$1_tk_user$$.current_id_app,ngay_ct:$den_ngay_ngay_ks$$,ngay_ks:$_app_ngay_ks$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($den_ngay_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;if($data$$.nam&&
6
+ ($den_ngay_ngay_ks$$=moment([$data$$.nam,0,1]).endOf("year").toDate(),$_app_ngay_ks$$=await utils.isBookLocked({id_app:$id_app$jscomp$1_tk_user$$.current_id_app,ngay_ct:$den_ngay_ngay_ks$$,ngay_ks:$_app_ngay_ks$$.ngay_ks})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($_app_ngay_ks$$).format("DD/MM/YYYY")}`);$id_app$jscomp$1_tk_user$$=$id_app$jscomp$1_tk_user$$.current_id_app;$data$$.tk==void 0&&($data$$.tk=$obj$$.tk);$data$$.du_no_nt00==void 0&&($data$$.du_no_nt00=
7
+ $obj$$.du_no_nt00);$data$$.du_co_nt00==void 0&&($data$$.du_co_nt00=$obj$$.du_co_nt00);$data$$.du_no_nt1==void 0&&($data$$.du_no_nt1=$obj$$.du_no_nt1);$data$$.du_co_nt1==void 0&&($data$$.du_co_nt1=$obj$$.du_co_nt1);($id_app$jscomp$1_tk_user$$=await dmtk.findOne({tk:$data$$.tk,id_app:$id_app$jscomp$1_tk_user$$},{ma_nt:1}).lean())&&$id_app$jscomp$1_tk_user$$.ma_nt==="VND"&&($data$$.du_no_nt00=$data$$.du_no00,$data$$.du_co_nt00=$data$$.du_co00,$data$$.du_no_nt1=$data$$.du_no1,$data$$.du_co_nt1=$data$$.du_co1);
8
+ $callback$$(null,$data$$,$obj$$)};$contr_router$$.creating=async function($tk$jscomp$1_user$$,$obj$$,$callback$$){var $_app$jscomp$1_ngay_ks$$=await global.getModel("app").findOne({_id:$tk$jscomp$1_user$$.current_id_app});if(!$_app$jscomp$1_ngay_ks$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$jscomp$1_ngay_ks$$.nam_bd);let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($_app$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$tk$jscomp$1_user$$.current_id_app,
9
+ ngay_ct:$den_ngay$$,ngay_ks:$_app$jscomp$1_ngay_ks$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($_app$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);($tk$jscomp$1_user$$=await dmtk.findOne({tk:$obj$$.tk,id_app:$tk$jscomp$1_user$$.current_id_app},{ma_nt:1}).lean())&&$tk$jscomp$1_user$$.ma_nt==="VND"&&($obj$$.du_no_nt00=$obj$$.du_no00,$obj$$.du_co_nt00=$obj$$.du_co00,$obj$$.du_no_nt1=$obj$$.du_no1,$obj$$.du_co_nt1=$obj$$.du_co1);$callback$$(null,$obj$$)};
10
+ $contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);
11
+ $callback$$(null,$obj$$)}};module.exports=cdkh;
@@ -0,0 +1,6 @@
1
+ const model=global.getModel("cdnphep"),controller=require("../../controllers/controller"),moment=require("moment"),User=global.getModel("user"),async=require("async"),utils=require("../../libs/utils"),cdnphep=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"cdnphep",{sort:{nam:-1,email:1}});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){async.series({user:function($callback$$){$result$$.joinModel2(null,User,{where:{email:"email"},fields:"name"},
2
+ function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$$.nam_bd);let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,
3
+ ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)};$contr_router$$.updating=async function($ngay_ks$jscomp$2_user$$,$data$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$2_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $den_ngay$jscomp$1_ngay_ks$$=
4
+ moment([$obj$$.nam,0,1]).startOf("date").toDate();if($den_ngay$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($den_ngay$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;if($data$$.nam&&($den_ngay$jscomp$1_ngay_ks$$=moment([$data$$.nam,0,1]).endOf("year").toDate(),$ngay_ks$jscomp$2_user$$=
5
+ await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$2_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
6
+ let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)}};module.exports=cdnphep;
@@ -0,0 +1,9 @@
1
+ const model=global.getModel("cdtk"),controller=require("../../controllers/controller"),dvcs=global.getModel("dvcs"),dmtk=global.getModel("account"),dmkho=global.getModel("dmkho"),async=require("async"),moment=require("moment"),utils=require("../../libs/utils"),cdtk=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"cdtk",{sort:{ma_dvcs:1,nam:-1,tk:1},unique:["ma_dvcs","tk","nam","ma_kho"]});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=
2
+ $user$$.current_id_app;async.series({dvcs:function($callback$$){$result$$.joinModel2($id_app$$,dvcs,[{where:{ma_dvcs:"_id"},fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function($kq$$){$callback$$(null,$kq$$)})},tk:function($callback$$){$result$$.joinModel2($id_app$$,dmtk,[{where:"tk",fields:["ten_tk","ma_nt"]}],function($kq$$){$callback$$(null,$kq$$)})},ma_kho:function($callback$$){$result$$.filter($r$$=>$r$$.ma_kho).joinModel2($id_app$$,dmkho,[{where:"ma_kho",fields:[{name:"ten_kho",value:"ten_kho"}]}],
3
+ function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,$obj$$,$callback$$){var $id_app$$=$ngay_ks_user$$.current_id_app;let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$$.nam_bd);let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();
4
+ if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);($id_app$$=await dmtk.findOne({tk:$obj$$.tk,id_app:$id_app$$},{ma_nt:1}).lean())&&$id_app$$.ma_nt==="VND"&&($obj$$.du_no_nt00=$obj$$.du_no00,$obj$$.du_co_nt00=$obj$$.du_co00,$obj$$.du_no_nt1=$obj$$.du_no1,$obj$$.du_co_nt1=$obj$$.du_co1);$callback$$(null,
5
+ $obj$$)};$contr_router$$.updating=async function($tk$jscomp$1_user$$,$data$$,$obj$$,$callback$$){var $_app$jscomp$1_ngay_ks$$=await global.getModel("app").findOne({_id:$tk$jscomp$1_user$$.current_id_app});if(!$_app$jscomp$1_ngay_ks$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $den_ngay$jscomp$1_ngay_ks$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($den_ngay$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$tk$jscomp$1_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,
6
+ ngay_ks:$_app$jscomp$1_ngay_ks$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($den_ngay$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;if($data$$.nam&&($den_ngay$jscomp$1_ngay_ks$$=moment([$data$$.nam,0,1]).startOf("date").toDate(),$_app$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$tk$jscomp$1_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$jscomp$1_ngay_ks$$.ngay_ks})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($_app$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);
7
+ $data$$.tk==void 0&&($data$$.tk=$obj$$.tk);$data$$.du_no_nt00==void 0&&($data$$.du_no_nt00=$obj$$.du_no_nt00);$data$$.du_co_nt00==void 0&&($data$$.du_co_nt00=$obj$$.du_co_nt00);$data$$.du_no_nt1==void 0&&($data$$.du_no_nt1=$obj$$.du_no_nt1);$data$$.du_co_nt1==void 0&&($data$$.du_co_nt1=$obj$$.du_co_nt1);($tk$jscomp$1_user$$=await dmtk.findOne({tk:$data$$.tk,id_app:$tk$jscomp$1_user$$.current_id_app},{ma_nt:1}).lean())&&$tk$jscomp$1_user$$.ma_nt==="VND"&&($data$$.du_no_nt00=$data$$.du_no00,$data$$.du_co_nt00=
8
+ $data$$.du_co00,$data$$.du_no_nt1=$data$$.du_no1,$data$$.du_co_nt1=$data$$.du_co1);$callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,
9
+ ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)}};module.exports=cdtk;
@@ -0,0 +1,8 @@
1
+ const model=global.getModel("cdvt"),controller=require("../../controllers/controller"),dmvt=global.getModel("dmvt"),dmkho=global.getModel("dmkho"),tontucthoi=global.getModel("tontucthoi"),async=require("async"),moment=require("moment"),utils=require("../../libs/utils"),cdvt=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"cdvt",{sort:{nam:-1,ma_dvcs:1,ma_kho:1,ma_vt:1,han_sd:1},unique:"ma_dvcs nam ma_kho ma_vt ma_lo ma_tt1 ma_tt2 ma_tt3".split(" ")});$contr_router$$.route();
2
+ $contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=$user$$.current_id_app;async.parallel({vt:function($callback$$){$result$$.joinModel2($id_app$$,dmvt,[{where:"ma_vt",fields:"ten_vt ma_dvt ma_tt1_yn ma_tt2_yn ma_tt3_yn ma_lo_yn".split(" ")}],function($kq$$){$callback$$(null,$kq$$)})},kho:function($callback$$){$result$$.joinModel2($id_app$$,dmkho,[{where:"ma_kho",fields:[{name:"ten_kho",value:"ten_kho"}]}],function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);
3
+ $fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$$.nam_bd);let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);
4
+ $callback$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$callback$$){tontucthoi.tinhTonTucThoi($obj$$,$e$$=>{$e$$&&Logger.error("[cdvt] t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi",$e$$)});$callback$$(null,$obj$$)};$contr_router$$.updated=function($user$$,$obj$$,$callback$$){tontucthoi.tinhTonTucThoi($obj$$,$e$$=>{$e$$&&Logger.error("[cdvt] t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi",$e$$)});$callback$$(null,$obj$$)};$contr_router$$.updating=async function($ngay_ks$jscomp$2_user$$,$data$$,
5
+ $obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$2_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $den_ngay$jscomp$1_ngay_ks$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($den_ngay$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($den_ngay$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);
6
+ $data$$.nam=$data$$.nam||$obj$$.nam;if($data$$.nam&&($den_ngay$jscomp$1_ngay_ks$$=moment([$data$$.nam,0,1]).startOf("date").toDate(),$ngay_ks$jscomp$2_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$2_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,
7
+ $obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);
8
+ $callback$$(null,$obj$$)};$contr_router$$.deleted=function($user$$,$obj$$,$callback$$){tontucthoi.tinhTonTucThoi($obj$$,$e$$=>{$e$$&&Logger.error("[cdvt] t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi",$e$$)});$callback$$(null,$obj$$)}};module.exports=cdvt;
@@ -0,0 +1,8 @@
1
+ const model=global.getModel("cdvtnpp"),controller=require("../../controllers/controller"),dvcs=global.getModel("dvcs"),dmvt=global.getModel("dmvt"),dmkho=global.getModel("dmkho"),async=require("async"),moment=require("moment"),utils=require("../../libs/utils"),cdvtnpp=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"cdvtnpp",{sort:{nam:-1,ma_dvcs:1,ma_kho:1,ma_kh:1,ma_vt:1,han_sd:1},unique:"ma_dvcs nam ma_kho ma_kh ma_vt ma_lo ma_tt1 ma_tt2 ma_tt3".split(" ")});$contr_router$$.route();
2
+ $contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=$user$$.current_id_app;async.series({dvcs:function($callback$$){$result$$.joinModel2($id_app$$,dvcs,[{where:{ma_dvcs:"_id"},fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function($kq$$){$callback$$(null,$kq$$)})},vt:function($callback$$){$result$$.joinModel2($id_app$$,dmvt,[{where:"ma_vt",fields:"ten_vt ma_dvt ma_tt1_yn ma_tt2_yn ma_tt3_yn ma_lo_yn".split(" ")}],function($kq$$){$callback$$(null,$kq$$)})},kho:function($callback$$){$result$$.joinModel2($id_app$$,
3
+ dmkho,[{where:"ma_kho",fields:"ten_kho"}],function($kq$$){$callback$$(null,$kq$$)})},kh:function($callback$$){$result$$.filter($r$$=>$r$$.ma_kh).joinModel2($id_app$$,"customer",[{where:"ma_kh",fields:"ten_kh"}],function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
4
+ $obj$$.nam||($obj$$.nam=$_app$$.nam_bd);let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)};$contr_router$$.updating=async function($ngay_ks$jscomp$2_user$$,$data$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$2_user$$.current_id_app});
5
+ if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $den_ngay$jscomp$1_ngay_ks$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($den_ngay$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($den_ngay$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;
6
+ if($data$$.nam&&($den_ngay$jscomp$1_ngay_ks$$=moment([$data$$.nam,0,1]).startOf("date").toDate(),$ngay_ks$jscomp$2_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$2_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>
7
+ {let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);
8
+ $callback$$(null,$obj$$)}};module.exports=cdvtnpp;
@@ -0,0 +1,8 @@
1
+ const model=global.getModel("fifo_dk"),controller=require("../../controllers/controller"),dmvt=global.getModel("dmvt"),dmkho=global.getModel("dmkho"),tontucthoi=global.getModel("tontucthoi"),async=require("async"),moment=require("moment"),utils=require("../../libs/utils"),fifo_dk=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"fifo_dk",{sort:{nam:-1}});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=$user$$.current_id_app;
2
+ async.parallel({vt:function($callback$$){$result$$.joinModel2($id_app$$,dmvt,[{where:"ma_vt",fields:"ten_vt ma_dvt ma_tt1_yn ma_tt2_yn ma_tt3_yn ma_lo_yn".split(" ")}],function($kq$$){$callback$$(null,$kq$$)})},kho:function($callback$$){$result$$.joinModel2($id_app$$,dmkho,[{where:"ma_kho",fields:[{name:"ten_kho",value:"ten_kho"}]}],function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})};$contr_router$$.creating=async function($ngay_ks_user$$,
3
+ $obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.nam||($obj$$.nam=$_app$$.nam_bd);$obj$$.thang_bat_dau||($obj$$.thang_bat_dau=$_app$$.ngay_ky1);$obj$$.ngay_nhap||($obj$$.thang_bat_dau=moment($obj$$.thang_bat_dau).startOf("month").toDate());let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks_user$$=await utils.isBookLocked({id_app:$ngay_ks_user$$.current_id_app,
4
+ ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks_user$$).format("DD/MM/YYYY")}`);$callback$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$callback$$){tontucthoi.tinhTonTucThoi($obj$$,$e$$=>{$e$$&&Logger.error("[fifo_dk] t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi",$e$$)});$callback$$(null,$obj$$)};$contr_router$$.updated=function($user$$,$obj$$,$callback$$){tontucthoi.tinhTonTucThoi($obj$$,$e$$=>
5
+ {$e$$&&Logger.error("[fifo_dk] t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi",$e$$)});$callback$$(null,$obj$$)};$contr_router$$.updating=async function($ngay_ks$jscomp$2_user$$,$data$$,$obj$$,$callback$$){let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$2_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $den_ngay$jscomp$1_ngay_ks$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($den_ngay$jscomp$1_ngay_ks$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,
6
+ ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($den_ngay$jscomp$1_ngay_ks$$).format("DD/MM/YYYY")}`);$data$$.nam=$data$$.nam||$obj$$.nam;if($data$$.nam&&($den_ngay$jscomp$1_ngay_ks$$=moment([$data$$.nam,0,1]).startOf("date").toDate(),$ngay_ks$jscomp$2_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$2_user$$.current_id_app,ngay_ct:$den_ngay$jscomp$1_ngay_ks$$,ngay_ks:$_app$$.ngay_ks})))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$2_user$$).format("DD/MM/YYYY")}`);
7
+ $callback$$(null,$data$$,$obj$$)};$contr_router$$.deleting=async($ngay_ks$jscomp$3_user$$,$obj$$,$callback$$)=>{let $_app$$=await global.getModel("app").findOne({_id:$ngay_ks$jscomp$3_user$$.current_id_app});if(!$_app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");let $den_ngay$$=moment([$obj$$.nam,0,1]).startOf("date").toDate();if($ngay_ks$jscomp$3_user$$=await utils.isBookLocked({id_app:$ngay_ks$jscomp$3_user$$.current_id_app,ngay_ct:$den_ngay$$,ngay_ks:$_app$$.ngay_ks}))return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${moment($ngay_ks$jscomp$3_user$$).format("DD/MM/YYYY")}`);
8
+ $callback$$(null,$obj$$)};$contr_router$$.deleted=function($user$$,$obj$$,$callback$$){tontucthoi.tinhTonTucThoi($obj$$,$e$$=>{$e$$&&Logger.error("[fifo_dk] t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi",$e$$)});$callback$$(null,$obj$$)}};module.exports=fifo_dk;
@@ -0,0 +1,4 @@
1
+ const model=global.getModel("account"),controller=require("../../controllers/controller"),account=function($accountContr_router$$){$accountContr_router$$=new controller($accountContr_router$$,model,"account",{sort:{tk:1},unique:["tk"],notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1});$accountContr_router$$.route();$accountContr_router$$.view=function($id_app_user$$,$items$$,$fn$$){$id_app_user$$=$id_app_user$$.current_id_app;$items$$.filter($item$$=>$item$$.tk_me).joinModel($id_app_user$$,
2
+ model,[{akey:"tk_me",bkey:"tk",fields:[{name:"ten_tk_me",value:"ten_tk"}]}],function(){$fn$$(null,$items$$)})};$accountContr_router$$.deleting=function($user$$,$obj$$,$next$$){if($obj$$.loai_tk===0)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a t\u00e0i kho\u1ea3n m\u1eb9"));$next$$(null,$obj$$)};$accountContr_router$$.on("saved",async function($obj$$,$oldObj$$){let $tk_me$$=$obj$$.tk_me;$tk_me$$&&await model.updateOne({id_app:$obj$$.id_app,tk:$tk_me$$},{loai_tk:0});model.findOne({id_app:$obj$$.id_app,
3
+ tk_me:$obj$$.tk},async function($error$$,$acc$$){$error$$||($error$$=$acc$$?0:1,$obj$$.loai_tk=$error$$,await model.updateOne({_id:$obj$$._id},{loai_tk:$error$$}))});$oldObj$$&&$oldObj$$.tk_me&&$oldObj$$.tk_me!=$obj$$.tk_me&&model.findOne({id_app:$obj$$.id_app,tk_me:$oldObj$$.tk_me},async function($error$$,$acc$$){$error$$||$acc$$||await model.updateOne({id_app:$oldObj$$.id_app,tk:$oldObj$$.tk_me},{loai_tk:1})})});$accountContr_router$$.on("deleted",function($obj$$){$obj$$.tk_me&&model.findOne({id_app:$obj$$.id_app,
4
+ tk_me:$obj$$.tk_me},function($error$$,$acc$$){$error$$||$acc$$||model.updateOne({id_app:$obj$$.id_app,tk:$obj$$.tk_me},{$set:{loai_tk:1}},function($error$$,$obj$$){$error$$||$obj$$&&Logger.info("updated "+$obj$$.tk)})})})};module.exports=account;
@@ -0,0 +1,3 @@
1
+ const controller=require("../../controllers/controller"),model=global.getModel("afflink"),async=require("async");
2
+ module.exports=function($router$$){(new controller($router$$,model,"afflink",{sort:{date_created:-1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:($user$$,$items$$,$next$$)=>{async.map($items$$,($r$$,$callback$$)=>{setImmediate(async()=>{$r$$.aff_link=`${configs.api_url}/aff/${$r$$._id}`;$r$$.da_hoan_thanh=await global.getModel("so1").countDocuments({id_app:$r$$.id_app,id_afflink:$r$$._id.toString(),trang_thai:{$in:["8"]}});$r$$.da_tra_lai=await global.getModel("hd7").countDocuments({id_app:$r$$.id_app,
3
+ "details.id_afflink":$r$$._id.toString(),trang_thai:{$nin:["9"]}});$callback$$()})},()=>{$next$$(null,$items$$)})},onCreating:($user$$,$data$$,$next$$)=>{delete $data$$.da_truy_cap;delete $data$$.da_dat_hang;delete $data$$.da_giao;delete $data$$.da_huy;delete $data$$.da_tra_lai;$next$$(null,$data$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{delete $data$$.da_truy_cap;delete $data$$.da_dat_hang;delete $data$$.da_giao;delete $data$$.da_huy;delete $data$$.da_tra_lai;$next$$(null,$data$$,$obj$$)}})).route()};
@@ -0,0 +1,5 @@
1
+ const controller=require("../../controllers/controller"),model=global.getModel("approve"),Participant=global.getModel("participant"),{isSupperAdmin}=require("../../libs/utils");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"approve",{sort:{date_created:-1},notNeedRight:!0,onFinding:($user$$,$condition$$,$next$$)=>{if(isSupperAdmin($user$$.email.toLowerCase()))return $next$$(null,$condition$$);$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push({$or:[{user_created:$user$$.email},{"user_approves.email":$user$$.email},{user_request:$user$$.email}]});$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>
3
+ {await $items$$.filter($item$$=>$item$$.user_approved).asyncJoinModel2($user$$.current_id_app,Participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $items$$.filter($item$$=>$item$$.user_denied).asyncJoinModel2($user$$.current_id_app,Participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});$next$$(null,$items$$)},onCreating:($user$$,$data$$,$next$$)=>{$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o")},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{$next$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")},
4
+ onDeleting:($user$$,$obj$$,$next$$)=>{$next$$("Kh\u00f4ng th\u1ec3 xo\u00e1")}});$contr_router$$.createRoute("approve/:id_request",async($req$$,$next$$)=>{model.approve({email:$req$$.user.email,name:$req$$.user.name,id_request:$req$$.params.id_request},$e$$=>{if($e$$)return $next$$({error:$e$$});$next$$(null,{message:"B\u1ea1n \u0111\u00e3 duy\u1ec7t th\u00e0nh c\u00f4ng"})},null,{reason:($req$$.body||{}).reason})},{method:"POST"});$contr_router$$.createRoute("deny/:id_request",async($req$$,$next$$)=>
5
+ {model.deny({email:$req$$.user.email,name:$req$$.user.name,id_request:$req$$.params.id_request},$e$$=>{if($e$$)return $next$$({error:$e$$});$next$$(null,{message:"B\u1ea1n \u0111\u00e3 t\u1eeb ch\u1ed1i duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y"})},null,{reason:($req$$.body||{}).reason})},{method:"POST"});$contr_router$$.route()};
@@ -0,0 +1,3 @@
1
+ const model=global.getModel("assabcihandler"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assabcihandler",{sort:{date_created:-1}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){return isSupperAdmin($user$$.email.toLowerCase())?$fn$$(null,$obj$$):$fn$$("Kh\u00f4ng th\u1ec3 x\u00f3a")};$contr_router$$.creating=async($user$$,$data$$,$fn$$)=>$fn$$("Kh\u00f4ng th\u1ec3 t\u1ea1o");$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};
3
+ $contr_router$$.route()};
@@ -0,0 +1,3 @@
1
+ const model=global.getModel("assbank"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assbank",{sort:{date_created:-1},unique:["address","denom"],onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,"asskey",{where:{address:"address"},fields:["name","username"]});await $items$$.asyncJoinModel2(null,"user",{where:{username:"email"},fields:[{name_account:"name"}]});$next$$(null,$items$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){return isSupperAdmin($user$$.email.toLowerCase())?
3
+ $fn$$(null,$obj$$):$fn$$("Kh\u00f4ng th\u1ec3 x\u00f3a")};$contr_router$$.creating=async($user$$,$data$$,$fn$$)=>isSupperAdmin($user$$.email.toLowerCase())?$fn$$(null,$data$$):$fn$$("Kh\u00f4ng th\u1ec3 t\u1ea1o");$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){return isSupperAdmin($user$$.email.toLowerCase())?$fn$$(null,$data$$,$obj$$):$fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
@@ -0,0 +1,20 @@
1
+ const model=global.getModel("assbooking"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),{spend}=require("../../libs/blockchainconnect"),AssProduct=global.getModel("assproduct"),async=require("async"),moment=require("moment");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assbooking",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>$data$$.trang_thai=="9"||isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham",{hinh_anh_ks:"hinh_anh"},
3
+ "logo","ma_loai","wallet_hotel","ds_phong",{user_hotel2:"user_hotel"}]});$items$$.forEach(async $item$$=>{$item$$.thong_tin_phong=($item$$.ds_phong||[]).find($f$$=>($f$$.ma_phong||"").toLowerCase()===($item$$.ma_phong||"").toLowerCase());delete $item$$.ds_phong;$item$$.trang_thai=="1"&&$item$$.ngay_nhan_phong&&moment($item$$.ngay_nhan_phong).toDate().getTime()<moment().endOf("date").toDate().getTime()&&($item$$.trang_thai="8",await model.updateOne({_id:$item$$._id},{trang_thai:"8"}));$item$$.user_hotel2&&
4
+ $item$$.id_product&&$item$$.user_hotel!=$item$$.user_hotel2&&(await model.updateOne({_id:$item$$._id},{user_hotel:$item$$.user_hotel2}),$item$$.user_hotel=$item$$.user_hotel2);delete $item$$.user_hotel2});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{const $hotel$$=await global.getModel("assproduct").findOne({id_app:$obj$$.id_app,id:$obj$$.id_product,status:!0}).lean();if(!$hotel$$)return Logger.error("error booking",$obj$$),$next$$("Kh\u00e1ch s\u1ea1n kh\u00f4ng t\u1ed3n t\u1ea1i");
5
+ if(!$hotel$$.wallet_hotel||!$hotel$$.user_hotel)return Logger.error("error booking: chua khai bao dia chi vi khach san",$hotel$$.wallet_hotel,$hotel$$),$next$$("Ch\u01b0a khai b\u00e1o \u0111\u1ecba ch\u1ec9 v\u00ed v\u00e0 user cho kh\u00e1ch s\u1ea1n");if($user$$.email===$hotel$$.user_hotel.toLowerCase())return $next$$("Ch\u1ee7 kh\u00e1ch s\u1ea1n kh\u00f4ng th\u1ec3 t\u1ef1 \u0111\u1eb7t ph\u00f2ng \u1edf kh\u00e1ch s\u1ea1n m\u00ecnh");var $period_tong_so_voucher$$=await global.getModel("assperiod").findOne({id_app:$obj$$.id_app,
6
+ id_product:$obj$$.id_product,status:!0}).lean();if(!$period_tong_so_voucher$$)return $next$$("Ch\u01b0a khai b\u00e1o voucher cho kh\u00e1ch s\u1ea1n n\u00e0y");const $ds_phong$$=$hotel$$.ds_phong;if(!$ds_phong$$||$ds_phong$$.length==0)return $next$$("Ch\u01b0a khai b\u00e1o danh s\u00e1ch ph\u00f2ng cho kh\u00e1ch s\u1ea1n n\u00e0y");let $phong_dat$$=$ds_phong$$.find($p$$=>($p$$.ma_phong||"").toLowerCase()===($obj$$.ma_phong||"").toLowerCase());if(!$phong_dat$$)return Logger.error("error booking",
7
+ $ds_phong$$,$obj$$.ma_phong),$next$$("Ph\u00f2ng b\u1ea1n \u0111\u1eb7t kh\u00f4ng t\u1ed3n t\u1ea1i");if($phong_dat$$.gia_voucher!==$obj$$.don_gia_vc)return $next$$("\u0110\u01a1n gi\u00e1 m\u1ed9t \u0111\u00eam kh\u00f4ng h\u1ee3p l\u1ec7");$obj$$.user_hotel=$hotel$$.user_hotel;$obj$$.wallet_hotel=$hotel$$.wallet_hotel;$obj$$.so_luong_vc=$obj$$.don_gia_vc*$obj$$.so_dem;$obj$$.id_period=$period_tong_so_voucher$$.id;$obj$$.menh_gia=$period_tong_so_voucher$$.gia;$obj$$.gia_tri_can_thanh_toan=$obj$$.menh_gia*
8
+ $obj$$.don_gia_vc*$obj$$.so_dem+$obj$$.so_dem*($phong_dat$$.gia_tri_tra_them||0);$obj$$.voucher_thanh_toan=$obj$$.voucher_thanh_toan||[];await $obj$$.voucher_thanh_toan.asyncJoinModel2($user$$.current_id_app,"assinvestment",{where:"token",fields:["id_product","ten_san_pham","id_period"]});if($obj$$.voucher_thanh_toan.find($v$$=>!$v$$.id_period))return Logger.error("error voucher booking",$obj$$.voucher_thanh_toan),$next$$("Voucher d\u00f9ng \u0111\u1ec3 \u0111\u1eb7t ph\u00f2ng kh\u00f4ng h\u1ee3p l\u1ec7");
9
+ await $obj$$.voucher_thanh_toan.asyncJoinModel2($user$$.current_id_app,"assperiod",{where:{id_period:"id"},fields:[{menh_gia:"gia"}]});if($obj$$.voucher_thanh_toan.find($v$$=>!$v$$.menh_gia))return Logger.error("error voucher booking",$obj$$.voucher_thanh_toan),$next$$("Voucher d\u00f9ng \u0111\u1ec3 \u0111\u1eb7t ph\u00f2ng kh\u00f4ng h\u1ee3p l\u1ec7");$period_tong_so_voucher$$=$obj$$.voucher_thanh_toan.map($v$$=>$v$$.so_luong||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);if($obj$$.so_dem>$period_tong_so_voucher$$)return $next$$("M\u1ed7i \u0111\u00eam c\u1ea7n s\u1eed d\u1ee5ng \u00edt nh\u1ea5t m\u1ed9t voucher");
10
+ $obj$$.voucher_thanh_toan.forEach($v$$=>{$v$$.gia_tri=$v$$.menh_gia*$v$$.so_luong});$obj$$.gia_tri_da_thanh_toan=$obj$$.voucher_thanh_toan.map($v$$=>$v$$.gia_tri||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$obj$$.chenh_lech=$obj$$.gia_tri_can_thanh_toan-$obj$$.gia_tri_da_thanh_toan;let $to_address$$=$hotel$$.wallet_hotel;const $sent$$=[];async.mapSeries($obj$$.voucher_thanh_toan||[],($voucher$$,$cb$$)=>{setImmediate(async()=>{let $address$$=$voucher$$.wallet_address,$denom$$=$voucher$$.token,$amount$$=$voucher$$.so_luong;
11
+ try{const $rs$$=await spend($user$$.current_id_app,$user$$.token,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:"\u0110\u1eb7t ph\u00f2ng kh\u00e1ch s\u1ea1n"});if($rs$$.code){if($rs$$.code===5)return $cb$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 voucher \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");$cb$$("Kh\u00f4ng th\u1ec3 chuy\u1ec3n voucher t\u1eeb v\u00ed kh\u00e1ch h\u00e0ng sang v\u00ed kh\u00e1ch s\u1ea1n, L\u1ed7i: "+$rs$$.rawLog)}else $sent$$.push({denom:$denom$$,
12
+ amount:$amount$$,memo:"\u0110\u1eb7t ph\u00f2ng kh\u00e1ch s\u1ea1n",address:$address$$,to_address:$to_address$$}),$cb$$(null)}catch($e$$){Logger.error("error send voucher from user wallet to hotel wallet",$e$$),$cb$$($e$$.message||$e$$.error||$e$$)}})},$e$$=>{$e$$?$sent$$.length>0?async.mapSeries($sent$$,($voucher$$,$cb$$)=>{setImmediate(async()=>{let $to_address$$=$voucher$$.address,$address$$=$voucher$$.to_address,$denom$$=$voucher$$.denom,$amount$$=$voucher$$.amount;try{const $rs$$=await spend($user$$.current_id_app,
13
+ null,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:"Ho\u00e0n tr\u1ea3 l\u1ea1i voucher do \u0111\u1eb7t ph\u00f2ng th\u1ea5t b\u1ea1i",username:$hotel$$.user_hotel});if($rs$$.code)return $rs$$.code===5?$cb$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 voucher \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"):$cb$$($rs$$.rawLog);$cb$$(null)}catch($e$$){Logger.error($e$$,{username:$hotel$$.user_hotel,address:$address$$}),$cb$$($e$$.message||$e$$.error||$e$$)}})},$_e$$=>{Logger.error("Error ho\u00e0n tr\u1ea3 l\u1ea1i voucher do kh\u00f4ng \u0111\u1ee7 ti\u1ec1n",
14
+ $_e$$);$next$$($e$$)}):$next$$($e$$):$next$$(null,$obj$$)})},onErrorSave:async($user$$,$obj$$,$error$$,$action$$)=>{Logger.error("error assbooking",$error$$);if($action$$=="add"){const $hotel$$=await global.getModel("assproduct").findOne({id_app:$obj$$.id_app,id:$obj$$.id_product,status:!0}).lean();if($hotel$$&&$hotel$$.wallet_hotel&&$hotel$$.user_hotel&&$obj$$.voucher_thanh_toan){let $address$$=$hotel$$.wallet_hotel;async.mapSeries($obj$$.voucher_thanh_toan,($voucher$$,$cb$$)=>{setImmediate(async()=>
15
+ {let $to_address$$=$voucher$$.wallet_address,$denom$$=$voucher$$.token,$amount$$=$voucher$$.so_luong;try{const $rs$$=await spend($user$$.current_id_app,null,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:"Ho\u00e0n tr\u1ea3 l\u1ea1i voucher do \u0111\u1eb7t ph\u00f2ng th\u1ea5t b\u1ea1i",username:$hotel$$.user_hotel});if($rs$$.code)return $rs$$.code===5?$cb$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 voucher \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"):$cb$$($rs$$.rawLog);$cb$$(null)}catch($e$$){Logger.error($e$$,
16
+ {username:$hotel$$.user_hotel,address:$address$$}),$cb$$($e$$.message||$e$$.error||$e$$)}})},$_e$$=>{Logger.error("Error ho\u00e0n tr\u1ea3 l\u1ea1i voucher",$_e$$)})}else Logger.error("xu ly loi khi luu: khong tim thay khac san")}}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a");$fn$$(null,$obj$$)};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$fn$$){if($obj$$.trang_thai==
17
+ "7"||$obj$$.trang_thai=="8"||$obj$$.trang_thai=="9")return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt phi\u1ebfu n\u00e0y");if(moment($obj$$.ngay_nhan_phong).toDate().getTime()<moment().endOf("date").toDate().getTime())return model.updateOne({_id:$obj$$._id},{trang_thai:"8"}),$fn$$("Phi\u1ebfu \u0111\u1eb7t ph\u00f2ng n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n");const $hotel$$=await global.getModel("assproduct").findOne({id_app:$obj$$.id_app,id:$obj$$.id_product,status:!0}).lean();if(!$hotel$$)return $fn$$("Kh\u00e1ch s\u1ea1n kh\u00f4ng t\u1ed3n t\u1ea1i");
18
+ if($obj$$.trang_thai=$data$$.trang_thai)switch($data$$.trang_thai){case "7":let $address$$=$hotel$$.wallet_hotel;async.mapSeries($obj$$.voucher_thanh_toan.filter($v$$=>!$v$$.da_hoan_tra),($voucher$$,$cb$$)=>{setImmediate(async()=>{let $to_address$$=$voucher$$.wallet_address,$denom$$=$voucher$$.token,$amount$$=$voucher$$.so_luong;try{const $rs$$=await spend($user$$.current_id_app,null,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:"Ho\u00e0n tr\u1ea3 l\u1ea1i voucher do \u0111\u1eb7t ph\u00f2ng th\u1ea5t b\u1ea1i",
19
+ username:$hotel$$.user_hotel});if($rs$$.code)return $rs$$.code===5?$cb$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"):$cb$$($rs$$.rawLog);$voucher$$.da_hoan_tra=!0;$cb$$(null)}catch($e$$){Logger.error($e$$),$cb$$($e$$.message||$e$$.error||$e$$)}})},$_e$$=>{Logger.error("Error ho\u00e0n tr\u1ea3 l\u1ea1i voucher",$_e$$);$obj$$.voucher_thanh_toan=$obj$$.voucher_thanh_toan;$fn$$(null,$obj$$,$obj$$)});return}$user$$.email===$obj$$.user_created&&
20
+ $data$$.kh_xac_nhan_nhan_phong&&($obj$$.kh_xac_nhan_nhan_phong=$data$$.kh_xac_nhan_nhan_phong);$user$$.email===$hotel$$.user_hotel&&$data$$.ks_xac_nhan_nhan_phong&&($obj$$.ks_xac_nhan_nhan_phong=$data$$.ks_xac_nhan_nhan_phong);let $kh_np$$=$obj$$.kh_xac_nhan_nhan_phong||$obj$$.kh_xac_nhan_nhan_phong;($obj$$.ks_xac_nhan_nhan_phong||$obj$$.ks_xac_nhan_nhan_phong)&&$kh_np$$&&($data$$.trang_thai="9");$fn$$(null,$obj$$,$obj$$)};$contr_router$$.route()};
@@ -0,0 +1,8 @@
1
+ const model=global.getModel("assbuy"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),AssInvest=global.getModel("assinvestment"),AssSell=global.getModel("asssell"),AssProduct=global.getModel("assproduct");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assbuy",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,AssSell,{where:{id_sell:"id"},fields:["token"]});await $items$$.asyncJoinModel2($user$$.current_id_app,
3
+ AssInvest,{where:"token",fields:"id_product ten_san_pham token denom id_period ten_ky_han ngay_dao_han lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von co_phan".split(" ")});await $items$$.asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai"]});$next$$(null,$items$$)},onCreating:async($sell_user$$,$buy$$,$next$$)=>{const $id_app$$=$sell_user$$.current_id_app;if(!await global.getModel("asskey").findOne({id_app:$sell_user$$.current_id_app,
4
+ username:$sell_user$$.email,address:$buy$$.creator}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");$sell_user$$=await global.getModel("asssell").findOne({id_app:$id_app$$,id:$buy$$.id_sell});if(!$sell_user$$)return $next$$("L\u1ec7nh b\u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i");if($sell_user$$.buyer&&$sell_user$$.buyer!=$buy$$.creator)return $next$$("Ng\u01b0\u1eddi mua kh\u00f4ng h\u1ee3p l\u1ec7");if($sell_user$$.con_lai<$buy$$.so_luong)return $next$$("Purchase quantity must be less than or equal to the quantity being sold");
5
+ if($sell_user$$.gia_ban>$buy$$.gia_mua)return $next$$("The purchase price must be greater than the selling price");try{const $totalMoney$$=$buy$$.gia_mua*$buy$$.so_luong;await global.getModel("assbank").sendCoins($id_app$$,$buy$$.creator,$sell_user$$.creator,$totalMoney$$,$sell_user$$.denom,{...$buy$$.toObject(),event:"BUY",memo:`Chuy\u1ec3n ${$totalMoney$$}${$sell_user$$.denom} cho ng\u01b0\u1eddi b\u00e1n`});let $fee$$=($sell_user$$.fee||0)*$totalMoney$$/100;$fee$$&&$sell_user$$.exchange_address&&
6
+ await global.getModel("assbank").sendCoins($id_app$$,$sell_user$$.creator,$sell_user$$.exchange_address,$fee$$,$sell_user$$.denom,{...$buy$$.toObject(),event:"BUY",memo:"Ph\u00ed giao d\u1ecbch"});await global.getModel("assbank").sendCoinsFromSystemToAccount($id_app$$,$buy$$.creator,$buy$$.so_luong,$sell_user$$.token,{...$buy$$.toObject(),event:"BUY",memo:"Nh\u1eadn kho\u1ea3n \u0111\u1ea7u t\u01b0"})}catch($e$$){return $next$$($e$$)}$sell_user$$.da_ban+=$buy$$.so_luong;$sell_user$$.con_lai=$sell_user$$.so_luong-
7
+ $sell_user$$.da_ban;$sell_user$$.con_lai==0&&($sell_user$$.trang_thai=8);await $sell_user$$.save();$buy$$.denom=$sell_user$$.denom;$buy$$.token=$sell_user$$.token;$next$$(null,$buy$$)},onCreated:async($user$$,$obj$$,$next$$)=>{$obj$$.id=$obj$$._id.toString();await model.updateOne({_id:$obj$$._id},{id:$obj$$.id});$next$$(null,$obj$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a");$fn$$(null,
8
+ $obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
@@ -0,0 +1,8 @@
1
+ const model=global.getModel("asscashwithdraw"),App=global.getModel("app"),Trangthai=global.getModel("trangthai"),PC1=global.getModel("pc1"),Customer=global.getModel("customer"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asscashwithdraw",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSCASHWITHDRAW"}),fields:["ten_trang_thai",
3
+ "color"]}]);await $items$$.asyncJoinModel2(null,"user",[{where:$a$$=>({email:$a$$.user_created}),fields:["name"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,Customer,[{where:$a$$=>({of_user:$a$$.user_created}),fields:["ma_kh","ten_kh"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,PC1,[{where:$a$$=>({id_asscashwithdraw:$a$$._id}),fields:[{so_ct_pc1:"so_ct",id_pc1:"_id",ngay_ct_pc1:"ngay_ct",ma_ct_pc1:"ma_ct"}]}]);$next$$(null,$items$$)},onCreating:async($user$$,$CashWithdraw$$,
4
+ $next$$)=>{let $creator$$=$CashWithdraw$$.creator;if(!await global.getModel("asskey").findOne({id_app:$user$$.current_id_app,username:$user$$.email,address:$creator$$}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");let $app$$=await App.findOne({_id:$user$$.current_id_app}),$identity$$=await global.getModel("assuser_identity").findOne({id_app:$user$$.current_id_app,user_created:$user$$.email});if(!$identity$$)return $next$$({error:"B\u1ea1n c\u1ea7n x\u00e1c th\u1ef1c th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n giao d\u1ecbch"});
5
+ if($identity$$.trang_thai!="1")return $next$$({error:"H\u1ed3 s\u01a1 th\u00f4ng tin c\u1ee7a b\u1ea1n ch\u01b0a \u0111\u01b0\u1ee3c duy\u1ec7t"});if(!$app$$.wallet_address)return $next$$("Kh\u00f4ng th\u1ec3 y\u00eau c\u1ea7u thanh to\u00e1n. H\u00e3y th\u1eed l\u1ea1i sau");$CashWithdraw$$.payer=$app$$.wallet_address;$CashWithdraw$$.require_date=new Date;$CashWithdraw$$.trang_thai="0";try{await global.getModel("assbank").sendCoinsFromAccountToSystem($user$$.current_id_app,$creator$$,$CashWithdraw$$.amount,
6
+ $CashWithdraw$$.token)}catch($e$$){return $next$$($e$$)}$next$$(null,$CashWithdraw$$)},onCreated:async($user$$,$obj$$,$next$$)=>{$obj$$.id=$obj$$._id.toString();await model.updateOne({_id:$obj$$._id},{id:$obj$$.id});$next$$(null,$obj$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(isSupperAdmin($user$$.email.toLowerCase()))return $fn$$(null,$obj$$);if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 x\u00f3a y\u00eau c\u1ea7u n\u00e0y");if($obj$$.trang_thai==
7
+ "5")return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n");if($obj$$.trang_thai=="9")return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c h\u1ee7y")};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if($obj$$.trang_thai=="9")return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c h\u1ee7y");
8
+ if($obj$$.trang_thai=="5")return $fn$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n");if($data$$.creator&&$data$$.creator!==$obj$$.creator)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda \u0111\u1ecba ch\u1ec9 v\u00ed ng\u01b0\u1eddi t\u1ea1o")};$contr_router$$.route()};
@@ -0,0 +1,31 @@
1
+ const model=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),trangthai=global.getModel("trangthai"),introducer=global.getModel("introducer"),asskey=global.getModel("asskey"),introducecode=global.getModel("introducecode"),App=global.getModel("app"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),pt1=global.getModel("pt1"),customer=global.getModel("customer"),controller=require("../../controllers/controller"),
2
+ {isSupperAdmin}=require("../../libs/utils"),async=require("async"),moment=require("moment"),xacdinhnguoinhanhoahong=async $investment$$=>{$investment$$.ty_le_hoa_hong=void 0;$investment$$.address_hoa_hong=void 0;$investment$$.denom_hoa_hong=void 0;$investment$$.ky_tra_hoa_hong=void 0;$investment$$.introduce_code=void 0;try{const $intro$$=await introducer.findOne({id_app:$investment$$.id_app,be_introduced:$investment$$.user_created});if($intro$$&&$intro$$.introduce_code){const $introduce_code$$=await introducecode.findOne({id_app:$investment$$.id_app,
3
+ introduce_code:$intro$$.introduce_code}).lean();let $receiver$$;if($introduce_code$$){if($introduce_code$$.wallet_address_receive_reward)$receiver$$=$introduce_code$$.wallet_address_receive_reward;else{let $k$$=await asskey.findOne({id_app:$investment$$.id_app,username:$intro$$.be_introduced_by});if($k$$)$receiver$$=$k$$.address;else return}var $appInfo$$=await App.findOne({_id:$investment$$.id_app});if($appInfo$$&&$appInfo$$.wallet_token&&$appInfo$$.wallet_address){var $usergroup$$,$par$$=await Participant.findOne({id_app:$investment$$.id_app,
4
+ email:$intro$$.be_introduced_by}).lean();$par$$&&$par$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$investment$$.id_app,_id:$par$$.group_id}).lean());$usergroup$$||={};var $period$$=await assperiod.findOne({id_app:$investment$$.id_app,id:$investment$$.id_period});$period$$||={};$period$$.ty_le_hoa_hong_groups=$period$$.ty_le_hoa_hong_groups||[];var $ty_le_hoa_hong_group$$=$period$$.ty_le_hoa_hong_groups.find($t$$=>$t$$.id_user_group===$usergroup$$._id);$ty_le_hoa_hong_group$$||=$period$$.ty_le_hoa_hong_groups.find($t$$=>
5
+ !$t$$.id_user_group)||{};var $ty_le_hoa_hong$$=$ty_le_hoa_hong_group$$.ty_le_hoa_hong||$usergroup$$.ty_le_hoa_hong||$appInfo$$.ty_le_hoa_hong||0;var $tang_gioi_thieu_denom$$=$ty_le_hoa_hong_group$$.denom||$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom;$investment$$.ty_le_hoa_hong=$ty_le_hoa_hong$$;$investment$$.address_hoa_hong=$receiver$$;$investment$$.denom_hoa_hong=$tang_gioi_thieu_denom$$;$investment$$.ky_tra_hoa_hong=$period$$.ky_tra_hoa_hong;$investment$$.introduce_code=
6
+ $intro$$.introduce_code}}}else Logger.info("user nay khong co nguoi gioi thieu",$investment$$.user_created)}catch($e$$){Logger.error("Khong the tinh hoa hong cho nguoi gioi thieu",$e$$)}},phathanh=async($period$$,$obj$$,$product$$)=>{$obj$$.id_product=$period$$.id_product;$obj$$.gia=$period$$.gia;$obj$$.lai_suat_cam_ket=$period$$.lai_suat_cam_ket;$obj$$.lai_suat_truoc_han=$period$$.lai_suat_truoc_han;$obj$$.ky_han=$period$$.ky_han;$obj$$.cho_phep_rut_von=$period$$.cho_phep_rut_von;$obj$$.cho_phep_chuyen_nhuong=
7
+ $period$$.cho_phep_chuyen_nhuong;$obj$$.denom=$period$$.denom;$obj$$.tg_xu_ly_rut_von=$period$$.tg_xu_ly_rut_von;$obj$$.co_phan=$period$$.co_phan;$obj$$.goi_dau_tu=$period$$.goi_dau_tu;$obj$$.ky_tinh_lai=$period$$.ky_tinh_lai;$obj$$.co_phan?($obj$$.ngay_phat_hanh=$period$$.ngay_phat_hanh,$obj$$.ngay_dao_han=null):($obj$$.ngay_phat_hanh=new Date,$obj$$.ngay_dao_han=$obj$$.ky_han>0?moment($obj$$.ngay_phat_hanh).add($obj$$.ky_han,"days").toDate():$period$$.ngay_chia_loi_nhuan);switch($obj$$.ky_tinh_lai){case 1:$obj$$.ngay_tinh_lai_ky_truoc=
8
+ $obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"days").toDate();break;case 2:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"weeks").toDate();break;case 3:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"months").toDate();break;case 4:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;
9
+ $obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"quarters").toDate();break;case 5:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"years").toDate();break;case 9:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh,$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"hours").toDate()}var $hoahong_totalMoney$$=Number($obj$$.gia)*Number($obj$$.so_luong);const $productCreator$$=
10
+ $product$$.creator;await global.getModel("assbank").sendCoins($period$$.id_app,$obj$$.creator,$productCreator$$,$hoahong_totalMoney$$,$obj$$.denom,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Thanh to\u00e1n \u0111\u1ea7u t\u01b0"});if($obj$$.ky_tra_hoa_hong==0&&$obj$$.ty_le_hoa_hong>0&&$obj$$.address_hoa_hong){$hoahong_totalMoney$$=Math.roundBy($obj$$.ty_le_hoa_hong*$hoahong_totalMoney$$/100,0);let $denomHoaHong$$=$obj$$.denom_hoa_hong;$denomHoaHong$$==""&&($denomHoaHong$$=
11
+ $obj$$.denom);await global.getModel("assbank").sendCoins($period$$.id_app,$productCreator$$,$obj$$.address_hoa_hong,$hoahong_totalMoney$$,$denomHoaHong$$,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"BONUS-INVESTMENT",memo:"Hoa h\u1ed3ng"});$obj$$.hoa_hong_da_tra=$hoahong_totalMoney$$}await global.getModel("assbank").mintCoins($period$$.id_app,$obj$$.creator,$obj$$.so_luong,$obj$$.token,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Nh\u1eadn token \u0111\u1ea7u t\u01b0"});
12
+ $period$$.da_dau_tu=($period$$.da_dau_tu||0)+$obj$$.so_luong;await $period$$.save();$product$$.da_dau_tu=($product$$.da_dau_tu||0)+$obj$$.so_luong;$product$$.gia_tri_da_dau_tu=($product$$.gia_tri_da_dau_tu||0)+$obj$$.so_luong*$obj$$.gia;await $product$$.save()};
13
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assinvestment",{sort:{date_created:-1},unique:["token"],notNeedRight:!0,requireOtp:($data$$,$options$$)=>$data$$.trang_thai=="0"||$data$$.trang_thai=="2"||$data$$.trang_thai=="7"||isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{let $id_app$$=$user$$.current_id_app;async.mapSeries($items$$,
14
+ ($item$$,$cb$$)=>{setImmediate(async()=>{$item$$.wallet_address=$item$$.creator;$item$$.id_period&&(await [$item$$].asyncJoinModel2($id_app$$,assperiod,{where:{id_period:"id"},fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu tru_lai_da_tra han_tt".split(" ")}),await [$item$$].asyncJoinModel2($id_app$$,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham",
15
+ {product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=($item$$.gia||0)*($item$$.so_luong||0),$item$$.lai_du_tinh=Math.roundBy($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh);$item$$.con_lai=$item$$.da_dao_han?0:$item$$.so_luong-($item$$.da_rut_von||0);$item$$.han_tt||($item$$.han_tt=
16
+ 1);if($item$$.trang_thai=="0"||$item$$.trang_thai=="2"){let $tg_hien_tai$$=(new Date).getTime(),$tg_tao$$=(new Date($item$$.date_created)).getTime();($tg_hien_tai$$-$tg_tao$$)/864E5>$item$$.han_tt&&($item$$.trang_thai="7")}try{$item$$.goi_dau_tu&&($item$$.market_value=await model.getInvestmentMarketValue($item$$.id_app,$item$$.token))}catch($e$$){Logger.error($e$$)}$cb$$(null,$item$$)})},async()=>{await $items$$.asyncJoinModel2(null,trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSINVESTMENT"}),
17
+ fields:["ten_trang_thai","color"]}]);await $items$$.asyncJoinModel2($id_app$$,customer,[{where:$a$$=>({of_user:$a$$.user_created}),fields:["ma_kh","ten_kh"]}]);await $items$$.asyncJoinModel2($id_app$$,pt1,[{where:$a$$=>({id_assinvestment:$a$$._id}),fields:[{id_pt1:"_id"},{ma_ct_pt1:"ma_ct"}]}]);$next$$(null,$items$$)})},onCreating:async($frm_frm_step_product$jscomp$1_user$$,$obj$$,$next$$)=>{if(!$obj$$.id_period)return $next$$("B\u1ea1n c\u1ea7n ch\u1ecdn m\u1ed9t g\u00f3i \u0111\u1ea7u t\u01b0");
18
+ if(!await global.getModel("asskey").findOne({id_app:$frm_frm_step_product$jscomp$1_user$$.current_id_app,username:$frm_frm_step_product$jscomp$1_user$$.email,address:$obj$$.creator}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");$obj$$.da_rut_von=0;$obj$$.da_dao_han=!1;$obj$$.user_created=$frm_frm_step_product$jscomp$1_user$$.email;await xacdinhnguoinhanhoahong($obj$$);const $period$$=await assperiod.findOne({id_app:$frm_frm_step_product$jscomp$1_user$$.current_id_app,
19
+ id:$obj$$.id_period});if(!$period$$)return Logger.error("Can't find period",{id_app:$frm_frm_step_product$jscomp$1_user$$.current_id_app,id:$obj$$.id_period}),$next$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");if($period$$.goi_dau_tu&&$period$$.frm_step_code){$frm_frm_step_product$jscomp$1_user$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm_frm_step_product$jscomp$1_user$$)return $next$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
20
+ $frm_frm_step_product$jscomp$1_user$$=($frm_frm_step_product$jscomp$1_user$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm_frm_step_product$jscomp$1_user$$)return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");if($frm_frm_step_product$jscomp$1_user$$.trang_thai=="5")return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");if($frm_frm_step_product$jscomp$1_user$$.trang_thai!=
21
+ "4")return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}if(!$period$$.hoat_dong)return $next$$($period$$.ten_ky_han+" doesn't active");if($period$$.tong_so_token>0&&($period$$.da_dau_tu||0)+($obj$$.so_luong||0)>$period$$.tong_so_token)return $next$$("This package has sold out");$frm_frm_step_product$jscomp$1_user$$=await assproduct.findOne({id_app:$period$$.id_app,id:$period$$.id_product});if(!$frm_frm_step_product$jscomp$1_user$$)throw"D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i";
22
+ $obj$$.product_token=$frm_frm_step_product$jscomp$1_user$$.token;$obj$$.id=(new Date).getTime().toString();$obj$$.token=`${$obj$$.product_token}${$obj$$.id}`;if($obj$$.trang_thai!="1")return $next$$(null,$obj$$);try{await phathanh($period$$,$obj$$,$frm_frm_step_product$jscomp$1_user$$)}catch($e$$){return $next$$($e$$)}$next$$(null,$obj$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a");
23
+ $fn$$(null,$obj$$)};$contr_router$$.updating=async function($product$jscomp$2_user$$,$data$$,$obj$$,$fn$$){var $frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$=$product$jscomp$2_user$$.current_id_app,$creator_tg_tao$$=$obj$$.creator;if(!await global.getModel("asskey").findOne({id_app:$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$,username:$product$jscomp$2_user$$.email,address:$creator_tg_tao$$}).lean())return $fn$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");
24
+ if($data$$.trang_thai=="0"&&$obj$$.trang_thai!="0")return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt");if($data$$.trang_thai&&$data$$.trang_thai!="1")return $fn$$(null,$data$$,$obj$$);delete $data$$.da_rut_von;delete $data$$.da_dao_han;$data$$.user_created=$obj$$.user_created;$data$$.creator=$obj$$.creator;$data$$.id_period=$data$$.id_period||$obj$$.id_period;$data$$.id_app=$obj$$.id_app;await xacdinhnguoinhanhoahong($data$$);const $period$$=await assperiod.findOne({id_app:$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$,
25
+ id:$data$$.id_period});if(!$period$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");$product$jscomp$2_user$$=await assproduct.findOne({id_app:$period$$.id_app,id:$period$$.id_product});if(!$product$jscomp$2_user$$)throw"D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i";$data$$.product_token=$product$jscomp$2_user$$.token;$data$$.id=$obj$$.id;$data$$.token=$obj$$.token;$data$$.id&&($data$$.id=(new Date).getTime().toString());$data$$.token&&($data$$.token=`${$data$$.product_token}${$data$$.id}`);
26
+ if($data$$.trang_thai=="1"&&$obj$$.trang_thai!="1"){if($period$$.goi_dau_tu&&$period$$.frm_step_code){$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$=await global.getModel("financialroadmap").findOne({id_app:$period$$.id_app,code:$period$$.id_product.toString()}).lean();if(!$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$)return $fn$$("L\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$=
27
+ ($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$.steps||[]).find($s$$=>$s$$.code===$period$$.frm_step_code);if(!$frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$)return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh");if($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$.trang_thai=="5")return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 ho\u00e0n th\u00e0nh k\u00eau g\u1ecdi v\u1ed1n");
28
+ if($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$.trang_thai!="4")return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c")}if(!$period$$.hoat_dong)return $fn$$($period$$.ten_ky_han+" doesn't active");if($period$$.tong_so_token>0&&($period$$.da_dau_tu||0)+($obj$$.so_luong||0)>$period$$.tong_so_token)return $fn$$("This package has sold out");if($obj$$.trang_thai=="0"||$obj$$.trang_thai=="2")if($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$=
29
+ (new Date).getTime(),$creator_tg_tao$$=(new Date($obj$$.date_created)).getTime(),($frm$jscomp$1_frm_step$jscomp$1_id_app$jscomp$1_tg_hien_tai$$-$creator_tg_tao$$)/864E5>($period$$.han_tt||1))return model.updateMany({_id:$obj$$._id},{trang_thai:"7"}).then($rs$$=>{Logger.info("update investment",$rs$$.id)}),$fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n thanh to\u00e1n");$data$$.creator=$data$$.creator||$obj$$.creator;$data$$.id_period=$data$$.id_period||$obj$$.id_period;
30
+ $data$$.so_luong=$data$$.so_luong||$obj$$.so_luong;$data$$.ty_le_hoa_hong=$data$$.ty_le_hoa_hong!=void 0?Number($data$$.ty_le_hoa_hong):$obj$$.ty_le_hoa_hong;$data$$.denom_hoa_hong=$data$$.denom_hoa_hong||$obj$$.denom_hoa_hong||"";$data$$.address_hoa_hong=$data$$.address_hoa_hong||$obj$$.address_hoa_hong||"";$data$$.ky_tra_hoa_hong=$data$$.ky_tra_hoa_hong==void 0?$obj$$.ky_tra_hoa_hong:$data$$.ky_tra_hoa_hong;$data$$.ky_tinh_lai=$data$$.ky_tinh_lai!=void 0?$data$$.ky_tinh_lai:$obj$$.ky_tinh_lai;try{await phathanh($period$$,
31
+ $data$$,$product$jscomp$2_user$$)}catch($e$$){return $fn$$($e$$)}$fn$$(null,$data$$,$obj$$)}else return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
@@ -0,0 +1,3 @@
1
+ const model=global.getModel("assissue"),assbank=global.getModel("assbank"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assissue",{sort:{date_created:-1}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){return isSupperAdmin($user$$.email.toLowerCase())?$fn$$(null,$obj$$):$fn$$("Kh\u00f4ng th\u1ec3 x\u00f3a")};$contr_router$$.creating=async($user$$,$data$$,$fn$$)=>{try{await assbank.issueCoins($user$$,$data$$)}catch($e$$){return $fn$$($e$$)}$fn$$(null,$data$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,
3
+ $fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
@@ -0,0 +1,41 @@
1
+ const model=global.getModel("asskey"),assrequest=global.getModel("assrequest"),assinvestment=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),User=global.getModel("user"),Receiver=global.getModel("assreceiver"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),async=require("async"),moment=require("moment"),{getWallet,getKeyInfo,bankBalancesGet,spend,getLatestHash,getHashById,mining,validHash}=
2
+ require("../../libs/blockchainconnect");
3
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asskey",{unique:["address"],sort:{date_created:1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>$options$$.action=="delete"?!0:!1,onFinding:async($user$$,$condition$$,$next$$,$options$$={})=>{$options$$.req&&$options$$.req.query&&!$options$$.req.query.has_balance&&($options$$.req.query.has_balance=$condition$$.has_balance);$condition$$.wallet_type={$in:[9,8]};delete $condition$$.has_balance;if($options$$.req&&
4
+ $options$$.req.query&&!$options$$.req.query.count&&await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,wallet_type:9,address:{$regex:global.configs.ADDRESS_PREFIX||""}})===0)try{await model.createWallet($user$$.current_id_app,$user$$.email,$user$$.name,9)}catch($e$$){Logger.error($e$$)}$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$,$options$$={})=>{await $items$$.asyncJoinModel2(null,User,{where:{username:"email"},fields:{fullname:"name"}});$options$$.req&&
5
+ $options$$.req.query&&$options$$.req.query.has_balance?async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(async()=>{delete $item$$.mnemonic;delete $item$$.private_key;delete $item$$.privateKey;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");try{let $bls$$=await bankBalancesGet($item$$.id_app,$item$$.address);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($user$$.current_id_app,assinvestment,{where:{denom:"token"},
6
+ fields:[{price:"gia"},"id_product","id_period"]});$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$item$$.balances=$bls$$;model.updateOne({_id:$item$$._id},{balances:$bls$$}).then(()=>{}).catch($e$$=>{Logger.error("can't update balances for wallet",$item$$.address,$e$$)});$callback$$(null,$item$$)}catch($e$$){$callback$$($e$$)}})},$e$$=>$next$$($e$$)):async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(()=>
7
+ {delete $item$$.mnemonic;delete $item$$.private_key;delete $item$$.balances;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");$callback$$()})},()=>{$next$$(null,$items$$)})}});$contr_router$$.creating=async($user$$,$obj$$,$next$$)=>{if(!isSupperAdmin($user$$.email.toLowerCase())&&await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,asset:{$nin:["BTC","ETH"]}})>=3)return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 t\u1ea1o th\u00eam v\u00ed m\u1edbi");
8
+ $obj$$.username||($obj$$.username=$user$$.email);try{let {address:$address$$,privateKey:$privateKey$$}=await model.createWallet($user$$.current_id_app,$user$$.email,$obj$$.name,9,!1);$obj$$.address=$address$$;$obj$$.privateKey=$privateKey$$;$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message||$e$$.error||$e$$)}};$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("Can't delete this key");Receiver.deleteMany({address:$obj$$.address});
9
+ $fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){$fn$$("Can't update this wallet")};$contr_router$$.createRoute(":address/balance",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address;try{const $bls$$=await bankBalancesGet($req$$.user.current_id_app,$address$$);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($req$$.user.current_id_app,assinvestment,{where:{denom:"token"},asyncSetFields:async($item$$,$investment_ref$$,$callback$$)=>
10
+ {if(!$investment_ref$$.id)return $callback$$();try{$item$$.price=$investment_ref$$.gia||0;$investment_ref$$={...$investment_ref$$};await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]});await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assperiod,{where:{id_period:"id",
11
+ id_product:"id_product"},fields:"ten_lh_dt ten_ky_han id_rpt ky_han ky_tinh_lai loi_nhuan_duoc_chia goi_dau_tu tru_lai_da_tra".split(" ")});$investment_ref$$.wallet_address=$address$$;let $tong_so_luong$$=$investment_ref$$.so_luong;$investment_ref$$.so_luong=$item$$.amount;$investment_ref$$.con_lai=$item$$.amount;$investment_ref$$.lai_da_tra&&$tong_so_luong$$>0&&($investment_ref$$.lai_da_tra_1_token=Math.roundBy($investment_ref$$.lai_da_tra/$tong_so_luong$$),$investment_ref$$.lai_da_tra=$investment_ref$$.lai_da_tra_1_token*
12
+ $investment_ref$$.con_lai);$investment_ref$$.tong_gia_tri=$investment_ref$$.so_luong*$investment_ref$$.gia;$investment_ref$$.lai_du_tinh=Math.roundBy($investment_ref$$.lai_suat_cam_ket/365/100*$investment_ref$$.tong_gia_tri*$investment_ref$$.ky_han);$investment_ref$$.tong_gia_tri_dao_han=$investment_ref$$.tong_gia_tri+$investment_ref$$.lai_du_tinh;$investment_ref$$.ky_han&&!$investment_ref$$.co_phan?($investment_ref$$.so_ngay_hien_tai=Math.roundBy(((new Date).getTime()-(new Date($investment_ref$$.ngay_phat_hanh)).getTime())/
13
+ 864E5),$investment_ref$$.tien_lai_hien_tai=Math.roundBy($investment_ref$$.tong_gia_tri*$investment_ref$$.so_ngay_hien_tai*(($investment_ref$$.lai_suat_cam_ket||0)/365/100)),$investment_ref$$.tien_lai_truoc_han_hien_tai=Math.roundBy($investment_ref$$.tong_gia_tri*$investment_ref$$.so_ngay_hien_tai*(($investment_ref$$.lai_suat_truoc_han||0)/365/100))):($investment_ref$$.tien_lai_hien_tai=0,$investment_ref$$.so_ngay_hien_tai=0);$investment_ref$$.gia_ban_de_xuat=$investment_ref$$.so_luong?Math.roundBy(($investment_ref$$.tong_gia_tri+
14
+ $investment_ref$$.tien_lai_hien_tai)/$investment_ref$$.so_luong):0;if($investment_ref$$.goi_dau_tu)try{$investment_ref$$.market_value=await assinvestment.getInvestmentMarketValue($investment_ref$$.id_app,$investment_ref$$.token)}catch($e$$){Logger.error($e$$)}$item$$.investment=$investment_ref$$;$callback$$()}catch($e$$){Logger.error($e$$),$callback$$()}}});$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});model.updateOne({address:$address$$,
15
+ id_app:$req$$.user.current_id_app},{balances:$bls$$}).then(()=>{}).catch($e$$=>{Logger.error("can't update balances for wallet",$address$$,$e$$)});$fn$$(null,$bls$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});const $permission$$=require("../../libs/permission");$contr_router$$.createRoute("spend",async($req$$,$fn$$)=>{var $address$$=await global.getModel("assuser_identity").findOne({id_app:$req$$.user.current_id_app,user_created:$req$$.user.email}).lean();
16
+ if(!$address$$)return $fn$$({error:"B\u1ea1n c\u1ea7n x\u00e1c th\u1ef1c th\u00f4ng tin ng\u01b0\u1eddi d\u00f9ng tr\u01b0\u1edbc khi th\u1ef1c hi\u1ec7n giao d\u1ecbch"});if($address$$.trang_thai!=="1")return $fn$$({error:"H\u1ed3 s\u01a1 th\u00f4ng tin c\u1ee7a b\u1ea1n ch\u01b0a \u0111\u01b0\u1ee3c duy\u1ec7t"});let $data$$=$req$$.body;$address$$=$data$$.from;if(!await model.findOne({id_app:$req$$.user.current_id_app,address:$address$$,username:$req$$.user.email}).lean())return $fn$$({error:"sender's address is not valid"});
17
+ const $to_address$$=$data$$.to||$data$$.receiver_address;let {denom:$denom$$,amount:$amount$$}=$data$$;if(!($address$$&&$to_address$$&&$denom$$&&$amount$$))return $fn$$({error:"Data miss 'from' or 'to' or 'denom' or 'amount'"});if($address$$===$to_address$$)return $fn$$({error:"\u0110\u1ecba ch\u1ec9 v\u00ed g\u1eedi v\u00e0 nh\u1eadn ph\u1ea3i kh\u00e1c nhau"});try{await $permission$$.verifyOTP($req$$.user.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||
18
+ $e$$.error||$e$$,code:4001})}if($data$$.assrequest_id){if(!global.mongoose.Types.ObjectId.isValid($data$$.assrequest_id))return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});var $_url_assreq$$=await assrequest.findOne({_id:$data$$.assrequest_id,amount:$amount$$,denom:$denom$$,receiver_address:$to_address$$,request_id:$data$$.request_id,order_id:$data$$.order_id});if(!$_url_assreq$$)return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});
19
+ if($_url_assreq$$.trang_thai==="1")return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n"});if($_url_assreq$$.trang_thai==="9")return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb h\u1ee7y"})}try{const $rs$$=await spend($req$$.user.current_id_app,$req$$.user.token,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$});if($rs$$.code)return $rs$$.code===5?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):
20
+ $fn$$({error:$rs$$.rawLog});let $walletReceiver$$=await model.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$});if($walletReceiver$$){let $_userReceiver$$=await User.findOne({email:$walletReceiver$$.username});Receiver.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$,user_created:$req$$.user.email},($e$$,$rs$$)=>{$rs$$||Receiver.create({id_app:$req$$.user.current_id_app,name:$data$$.name||($_userReceiver$$||{}).name,address:$to_address$$,user_created:$req$$.user.email})})}if($_url_assreq$$){$_url_assreq$$.trang_thai=
21
+ "1";$_url_assreq$$.sender_address=$address$$;$_url_assreq$$.sender_name=$data$$.sender_name||$req$$.user.name;$_url_assreq$$.sender_user=$req$$.user.email;$_url_assreq$$.sender_date=new Date;$_url_assreq$$.date_updated=new Date;await $_url_assreq$$.save();let $ctrlReq$$=global.controllers.ASSREQUEST,$assreq_views$$=await $ctrlReq$$.asyncView($req$$.user,[$_url_assreq$$.toObject()],{req:$req$$});controller.pushNotification($ctrlReq$$,$assreq_views$$[0]);const $assreq_data$$=$_url_assreq$$.toObject();
22
+ $assreq_data$$.is_success=!0;$assreq_data$$.message="Giao d\u1ecbch th\u00e0nh c\u00f4ng";$assreq_data$$._id&&($assreq_data$$.trans_id=$assreq_data$$._id.toString());delete $assreq_data$$.trang_thai;delete $assreq_data$$._id;delete $assreq_data$$.__v;delete $assreq_data$$.transaction;delete $assreq_data$$.id_app;delete $assreq_data$$.exfields;delete $assreq_data$$.status;delete $assreq_data$$.date_created;delete $assreq_data$$.date_updated;delete $assreq_data$$.user_created;delete $assreq_data$$.user_updated;
23
+ var $JSCompiler_inline_result$$=$assreq_data$$;if($assreq_data$$.return_url){$_url_assreq$$="";for(let $key$$ in $JSCompiler_inline_result$$)$_url_assreq$$=$_url_assreq$$?`${$_url_assreq$$}&${$key$$}=${encodeURIComponent($JSCompiler_inline_result$$[$key$$])}`:`${$key$$}=${encodeURIComponent($JSCompiler_inline_result$$[$key$$])}`;$_url_assreq$$=`${$assreq_data$$.return_url}?${$_url_assreq$$}`;$JSCompiler_inline_result$$.return_url=$_url_assreq$$}return $fn$$(null,$JSCompiler_inline_result$$)}$fn$$(null,
24
+ $rs$$)}catch($e$$){Logger.error($e$$),$fn$$({error:$e$$.message||$e$$.error||$e$$})}},{method:"POST"});$contr_router$$.createRoute(":address/info",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address;try{let $info$$=await getKeyInfo($req$$.user.current_id_app,$req$$.user.email,$address$$);$fn$$(null,$info$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute(":address/download",async($req$$,$fn$$)=>
25
+ {if(!$req$$.query["otp-id"]||!$req$$.query["otp-code"])return $fn$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u otp-id v\u00e0 otp-code");try{await $permission$$.verifyOTP($req$$.user.email,$req$$.query["otp-id"],$req$$.query["otp-code"])}catch($e$$){return $fn$$($e$$.message||$e$$.error||$e$$)}let $address$$=$req$$.params.address;Logger.info("download wallet",$address$$);try{const $wallet$$=await getWallet($req$$.user.current_id_app,$req$$.user.email,$address$$);Logger.info("download wallet",
26
+ $address$$,$wallet$$);$fn$$(null,$wallet$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs/:tx_id",async($id_app_req$$,$fn$$)=>{let $tx_id$$=$id_app_req$$.params.tx_id;$id_app_req$$=$id_app_req$$.user.current_id_app;try{const $rs$$=await global.getModel("asstransaction").findOne({id_app:$id_app_req$$,_id:$tx_id$$}).lean();$fn$$(null,$rs$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);
27
+ $fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs",async($req$$,$fn$$)=>{let $page$$=Number($req$$.query.page||0),$limit$$=Number($req$$.query.limit||20),$condition$$={id_app:$req$$.user.current_id_app};for(let $key$$ in $req$$.query)$key$$!=="page"&&$key$$!=="limit"&&$key$$!=="access_token"&&$key$$!=="id_app"&&($condition$$[$key$$]=$req$$.query[$key$$]);try{let $rs$$;if($page$$){let $skip$$=(Number($page$$)-1)*$limit$$;$rs$$=await global.getModel("asstransaction").find($condition$$).skip($skip$$).limit($limit$$).sort({date_created:-1})}else $rs$$=
28
+ await global.getModel("asstransaction").find($condition$$).limit($limit$$).sort({date_created:-1});$fn$$(null,$rs$$.lean())}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});$contr_router$$.createRoute("txs",async($req$$,$fn$$)=>{let $id_app$$=$req$$.user.current_id_app,{values:$values$$,typeUrl:$typeUrl$$,from_address:$from_address$$}=$req$$.body,$cmd$$=$typeUrl$$.split(".").pop();switch($cmd$$){case "MsgCreateFindhash":if(!global.configs.COIN_CAN_MINT)return $fn$$("Can't mint coins");
29
+ if(!$values$$||!$values$$.creator)return $fn$$("findhash is not valid");if(global.configs.DAILY_MINING_LIMIT){var $rs$$=await global.getModel("assfindhash").countDocuments({id_app:$id_app$$,creator:$values$$.creator,date_created:{$gte:moment().startOf("date").toDate(),$lte:moment().endOf("date").toDate()}});if($rs$$>=global.configs.DAILY_MINING_LIMIT)return Logger.error(`${$values$$.creator} \u0111\u00e3 h\u1ebft l\u01b0\u1ee3t \u0111\u00e0o`,$rs$$,global.configs.DAILY_MINING_LIMIT),$fn$$({code:9,
30
+ msg:"B\u1ea1n \u0111\u00e3 h\u1ebft s\u1ed1 l\u01b0\u1ee3t \u0111\u01b0\u1ee3c \u0111\u00e0o trong m\u1ed9t ng\u00e0y"})}$values$$.creator=$values$$.creator||$from_address$$;try{const {id:$id$$}=await validHash($id_app$$,$values$$);await global.getModel("assfindhash").create({...$values$$,id:$id$$,id_app:$id_app$$,user_created:$req$$.user.email});await global.getModel("assbank").mintCoins($id_app$$,$values$$.creator,1,global.configs.COIN_CAN_MINT,void 0,{push_notify:!1});return $fn$$(null,{msg:`M\u1ed9t block m\u1edbi \u0111\u00e3 \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y. B\u1ea1n \u0111\u01b0\u1ee3c th\u01b0\u1edfng ${1} ${global.configs.COIN_CAN_MINT}`,
31
+ creator:$values$$.creator,amount:1,denom:global.configs.COIN_CAN_MINT})}catch($e$$){return Logger.error("txs",$cmd$$,$values$$,$e$$),$fn$$($e$$)}case "MsgCreateToken":try{if(!$req$$.body["otp-id"]||!$req$$.body["otp-code"])return $fn$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u x\u00e1c th\u1ef1c qua OTP");try{await $permission$$.verifyOTP($req$$.user.email,$req$$.body["otp-id"],$req$$.body["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}$values$$.denom=
32
+ $values$$.denom||$values$$.name;await global.getModel("assbank").issueCoins($req$$.user,$values$$);$values$$.id_app=$req$$.user.current_id_app;$values$$.user_created=$req$$.user.email;$rs$$=await global.getModel("assissue").create($values$$);return $fn$$(null,$rs$$)}catch($e$$){return Logger.error("txs",$cmd$$,$values$$,$e$$),$fn$$($e$$)}default:Logger.error("Ch\u01b0a tri\u1ec3n khai",$cmd$$,$typeUrl$$),$fn$$(`Ch\u01b0a tri\u1ec3n khai l\u1ec7nh:${$cmd$$} (${$typeUrl$$})`)}},{method:"POST"});$contr_router$$.createRoute("findhash/:id",
33
+ async($id_app$jscomp$3_req$$,$fn$$)=>{let $id$$=$id_app$jscomp$3_req$$.params.id;$id_app$jscomp$3_req$$=$id_app$jscomp$3_req$$.user.current_id_app;try{if($id$$==="latest"){let $lastest$$=await getLatestHash($id_app$jscomp$3_req$$);if(!$lastest$$)return $fn$$("Not found latest hash");$fn$$(null,$lastest$$)}else{let $hash$$=await getHashById($id_app$jscomp$3_req$$,$id$$);$fn$$(null,$hash$$)}}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}},{method:"GET"});$contr_router$$.createRoute("findhash/broadcast",
34
+ async($req$$,$fn$$)=>{if(!global.configs.COIN_CAN_MINT)return $fn$$("Can't mint coins");let {findhash:$findhash$$}=$req$$.body,$id_app$$=$req$$.user.current_id_app;if(!$findhash$$)return $fn$$("findhash is not valid");if(!$findhash$$.creator)return $fn$$("findhash miss creator's address");if(global.configs.DAILY_MINING_LIMIT){const $so_lan_dao_trong_ngay$$=await global.getModel("assfindhash").countDocuments({id_app:$id_app$$,creator:$findhash$$.creator,date_created:{$gte:moment().startOf("date").toDate(),
35
+ $lte:moment().endOf("date").toDate()}});if($so_lan_dao_trong_ngay$$>=global.configs.DAILY_MINING_LIMIT)return Logger.error(`${$findhash$$.creator} \u0111\u00e3 h\u1ebft l\u01b0\u1ee3t \u0111\u00e0o`,$so_lan_dao_trong_ngay$$,global.configs.DAILY_MINING_LIMIT),$fn$$({code:9,msg:"B\u1ea1n \u0111\u00e3 h\u1ebft s\u1ed1 l\u01b0\u1ee3t \u0111\u01b0\u1ee3c \u0111\u00e0o trong m\u1ed9t ng\u00e0y"})}try{const {id:$id$$}=await validHash($id_app$$,$findhash$$);await global.getModel("assfindhash").create({...$findhash$$,
36
+ id:$id$$,id_app:$id_app$$,user_created:$req$$.user.email});await global.getModel("assbank").mintCoins($id_app$$,$findhash$$.creator,1,global.configs.COIN_CAN_MINT,void 0,{push_notify:!0});$fn$$(null,{msg:`M\u1ed9t block m\u1edbi \u0111\u00e3 \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y. B\u1ea1n \u0111\u01b0\u1ee3c th\u01b0\u1edfng ${1} ${global.configs.COIN_CAN_MINT}`,creator:$findhash$$.creator,amount:1,denom:global.configs.COIN_CAN_MINT})}catch($e$$){$fn$$($e$$)}},{method:"POST"});$contr_router$$.createRoute("test-mining/:creator",
37
+ async($req$$,$fn$$)=>{if($req$$.user.email!=="invncur@gmail.com")return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p th\u1ef1c hi\u1ec7n ch\u1ee9c n\u0103ng n\u00e0y");mining($req$$.user.current_id_app,$fn$$)},{method:"GET"});$contr_router$$.createRoute("query",async($offset_page$jscomp$2_req$$,$fn$$)=>{var $address$jscomp$5_rs$$=$offset_page$jscomp$2_req$$.query.path;if(!$address$jscomp$5_rs$$)return $fn$$({error:"query path is required"});var $ps_query$$=$address$jscomp$5_rs$$.split("/");if($ps_query$$.length<
38
+ 3)return $fn$$({error:"Path is not valid"});$address$jscomp$5_rs$$=$ps_query$$[1];var $events_limit$$=$ps_query$$[2].split("-");$ps_query$$={id_app:$offset_page$jscomp$2_req$$.user.current_id_app};let [$action$$,$nam$$,$quy$$,$thang$$,$ngayd$$]=$events_limit$$;$nam$$&&($events_limit$$=moment().set("years",Number($nam$$)),$thang$$?$events_limit$$=$events_limit$$.set("months",Number($thang$$)-1):$quy$$&&($events_limit$$=$events_limit$$.set("quarters",Number($quy$$))),$ngayd$$&&($events_limit$$=$events_limit$$.set("dates",
39
+ Number($ngayd$$))),$ps_query$$.date_created={$gte:$events_limit$$.startOf("date").toDate(),$lte:$events_limit$$.endOf("date").toDate()});$events_limit$$=20;$offset_page$jscomp$2_req$$.query.limit&&($events_limit$$=Number($offset_page$jscomp$2_req$$.query.limit),isNaN($events_limit$$)||$events_limit$$==0)&&($events_limit$$=20);$offset_page$jscomp$2_req$$.query.page&&($offset_page$jscomp$2_req$$=Number($offset_page$jscomp$2_req$$.query.page),isNaN($offset_page$jscomp$2_req$$)||$offset_page$jscomp$2_req$$<
40
+ 1)&&($offset_page$jscomp$2_req$$=1);$offset_page$jscomp$2_req$$=0*$events_limit$$;$action$$=="receiver"?$ps_query$$["data.to_address"]=$address$jscomp$5_rs$$:$action$$=="sender"?$ps_query$$["data.from_address"]=$address$jscomp$5_rs$$:$ps_query$$.$or=[{"data.from_address":$address$jscomp$5_rs$$},{"data.to_address":$address$jscomp$5_rs$$}];$address$jscomp$5_rs$$=await global.getModel("asstransaction").find($ps_query$$).skip($offset_page$jscomp$2_req$$).limit($events_limit$$).sort({date_created:-1}).lean();
41
+ $address$jscomp$5_rs$$.forEach(($r$$,$index$$)=>{$r$$.date=(new Date($r$$.date||$r$$.date_created)).getTime()/1E3;$r$$.receiver=($r$$.data||{}).to_address;$r$$.sender=($r$$.data||{}).from_address;$r$$.amount=($r$$.data||{}).amount||0;$r$$.denom=($r$$.data||{}).denom;$r$$.memo=$r$$.memo||($r$$.data||{}).memo;$r$$.id=$index$$.toString()});$fn$$(null,{TransferLog:$address$jscomp$5_rs$$})},{method:"GET"});$contr_router$$.route()};
@@ -0,0 +1,10 @@
1
+ const model=global.getModel("assneedtobuy"),controller=require("../../controllers/controller"),Trangthai=global.getModel("trangthai"),{isSupperAdmin}=require("../../libs/utils"),async=require("async");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assneedtobuy",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{async.mapSeries($items$$,($item$$,$cb$$)=>{setImmediate(async()=>{try{await model.updateNeedToBy($item$$)}catch($e$$){Logger.error("view asssell",
3
+ $e$$)}$cb$$(null,$item$$)})},async()=>{await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSNEEDTOBUY",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)})},onCreating:async($id_app_user$$,$NeedToBuy$$,$next$$)=>{var $creator_period_totalMoney$$=$NeedToBuy$$.creator;if(!await global.getModel("asskey").findOne({id_app:$id_app_user$$.current_id_app,username:$id_app_user$$.email,address:$creator_period_totalMoney$$}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");
4
+ $id_app_user$$=$id_app_user$$.current_id_app;$creator_period_totalMoney$$=await global.getModel("assperiod").findOne({id_app:$id_app_user$$,id:$NeedToBuy$$.id_period});if(!$creator_period_totalMoney$$)return $next$$("Kh\u00f4ng t\u1ed3n t\u1ea1i g\u00f3i \u0111\u1ea7u t\u01b0");$NeedToBuy$$.id_product=$creator_period_totalMoney$$.id_product;$NeedToBuy$$.gia_mua=$creator_period_totalMoney$$.gia;$NeedToBuy$$.ky_han=$creator_period_totalMoney$$.ky_han;$NeedToBuy$$.cho_phep_rut_von=$creator_period_totalMoney$$.cho_phep_rut_von;
5
+ $NeedToBuy$$.lai_suat_truoc_han=$creator_period_totalMoney$$.lai_suat_truoc_han;$NeedToBuy$$.cho_phep_chuyen_nhuong=$creator_period_totalMoney$$.cho_phep_chuyen_nhuong;$NeedToBuy$$.so_luong_da_mua=0;$NeedToBuy$$.so_luong_con_lai=$NeedToBuy$$.so_luong;$creator_period_totalMoney$$=$NeedToBuy$$.so_luong*$NeedToBuy$$.gia_mua;try{await global.getModel("assbank").sendCoinsFromAccountToSystem($id_app_user$$,$NeedToBuy$$.creator,$creator_period_totalMoney$$,$NeedToBuy$$.denom,{...$NeedToBuy$$.toObject(),
6
+ event:"NEEDTOBUY",memo:`Chuy\u1ec3n ${$creator_period_totalMoney$$}${$NeedToBuy$$.denom} l\u00ean s\u00e0n ch\u1edd kh\u1edbp l\u1ec7nh`})}catch($e$$){return $next$$($e$$)}$next$$(null,$NeedToBuy$$)},onCreated:async($user$$,$obj$$,$next$$)=>{$obj$$.id=$obj$$._id.toString();await model.updateOne({_id:$obj$$._id},{id:$obj$$.id});$next$$(null,$obj$$)}});$contr_router$$.deleting=async function($id_app$jscomp$1_user$$,$obj$$,$next$$){if(isSupperAdmin($id_app$jscomp$1_user$$.email.toLowerCase()))return $next$$(null,
7
+ $obj$$);if($id_app$jscomp$1_user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");$id_app$jscomp$1_user$$=$obj$$.id_app;if($obj$$.so_luong_con_lai>0&&$obj$$.trang_thai=="0"){const $totalMoney$$=$obj$$.so_luong_con_lai*$obj$$.gia_mua;try{return await global.getModel("assbank").sendCoinsFromSystemToAccount($id_app$jscomp$1_user$$,$obj$$.creator,$totalMoney$$,$obj$$.denom,{...$obj$$,event:"SELL-CANCEL",memo:`Hu\u1ef7 l\u1ec7nh mua. Nh\u1eadn ${$totalMoney$$}${$obj$$.denom} c\u00f2n l\u1ea1i`}),
8
+ await model.updateOne({_id:$obj$$._id},{trang_thai:9}),$next$$("\u0110\u00e3 hu\u1ef7 th\u00e0nh c\u00f4ng l\u1ec7nh n\u00e0y")}catch($e$$){return $next$$($e$$)}}return $next$$("B\u1ea1n kh\u00f4ng th\u1ec3 xo\u00e1 l\u1ec7nh n\u00e0y")};$contr_router$$.updating=async function($id_app$jscomp$2_user$$,$data$$,$obj$$,$next$$){if($id_app$jscomp$2_user$$.email!==$obj$$.user_created&&!isSupperAdmin($id_app$jscomp$2_user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");
9
+ if($data$$.id_period!=void 0&&$data$$.id_period!==$obj$$.id_period)return $next$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt g\u00f3i \u0111\u1ea7u t\u01b0");$id_app$jscomp$2_user$$=$obj$$.id_app;if($obj$$.so_luong_con_lai>0&&$obj$$.trang_thai=="0"&&$data$$.trang_thai==9){const $totalMoney$$=$obj$$.so_luong_con_lai*$obj$$.gia_mua;try{return await global.getModel("assbank").sendCoinsFromSystemToAccount($id_app$jscomp$2_user$$,$obj$$.creator,$totalMoney$$,$obj$$.denom,{...$obj$$.toObject(),event:"SELL-CANCEL",
10
+ memo:`Hu\u1ef7 l\u1ec7nh mua. Nh\u1eadn ${$totalMoney$$}${$obj$$.denom} c\u00f2n l\u1ea1i`}),$data$$={so_luong_con_lai:0,trang_thai:9},$next$$(null,$data$$,$obj$$)}catch($e$$){return $next$$($e$$)}}$next$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt l\u1ec7nh n\u00e0y")};$contr_router$$.route()};