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.
- package/package.json +5 -5
- package/server/app.js +23 -348
- package/server/cluster.js +1 -5
- package/server/models/account.js +7 -0
- package/server/models/actionLog.js +2 -0
- package/server/models/afflink.js +2 -0
- package/server/models/aimemory.js +1 -0
- package/server/models/app.js +16 -0
- package/server/models/approve.js +95 -0
- package/server/models/assabcihandler.js +35 -0
- package/server/models/assbank.js +19 -0
- package/server/models/assbooking.js +4 -0
- package/server/models/assbuy.js +3 -0
- package/server/models/asscashwithdraw.js +4 -0
- package/server/models/assfindhash.js +2 -0
- package/server/models/assinvestment.js +13 -0
- package/server/models/assissue.js +2 -0
- package/server/models/asskey.js +15 -0
- package/server/models/assneedtobuy.js +6 -0
- package/server/models/assperiod.js +7 -0
- package/server/models/assproduct.js +13 -0
- package/server/models/assprofitsharing.js +4 -0
- package/server/models/assreceiver.js +2 -0
- package/server/models/assrequest.js +10 -0
- package/server/models/asssell.js +7 -0
- package/server/models/asstransaction.js +3 -0
- package/server/models/asstransfer.js +4 -0
- package/server/models/assuser_identity.js +4 -0
- package/server/models/asswithdraw.js +4 -0
- package/server/models/attend.js +2 -0
- package/server/models/banggiaban.js +8 -0
- package/server/models/bangtinhluong.js +6 -0
- package/server/models/base.js +1 -0
- package/server/models/bg1.js +9 -0
- package/server/models/bg2.js +10 -0
- package/server/models/cache.js +3 -0
- package/server/models/cacheDataReport.js +2 -0
- package/server/models/cacheSessionReport.js +5 -0
- package/server/models/calllog.js +4 -0
- package/server/models/cart.js +5 -0
- package/server/models/cddiem.js +2 -0
- package/server/models/cddt.js +3 -0
- package/server/models/cdkh.js +5 -0
- package/server/models/cdkhtheongay.js +5 -0
- package/server/models/cdnphep.js +2 -0
- package/server/models/cdtk.js +3 -0
- package/server/models/cdtktheongay.js +3 -0
- package/server/models/cdvt.js +5 -0
- package/server/models/cdvtnpp.js +6 -0
- package/server/models/cdvttheongay.js +5 -0
- package/server/models/chamcong.js +7 -0
- package/server/models/chat_message.js +2 -0
- package/server/models/chat_session.js +2 -0
- package/server/models/checkin.js +4 -0
- package/server/models/checkinactivity.js +3 -0
- package/server/models/checkinkpi.js +4 -0
- package/server/models/checkinlocation.js +2 -0
- package/server/models/chitietluongds.js +12 -0
- package/server/models/chitieukpi.js +3 -0
- package/server/models/chudethaoluan.js +3 -0
- package/server/models/ckgtluong.js +2 -0
- package/server/models/colleague.js +2 -0
- package/server/models/comment.js +4 -0
- package/server/models/congdoansx.js +4 -0
- package/server/models/congtacvien.js +4 -0
- package/server/models/congthuctinhgiaban.js +8 -0
- package/server/models/consultant.js +4 -0
- package/server/models/contract.js +6 -0
- package/server/models/counter.js +2 -0
- package/server/models/csluongtheods.js +3 -0
- package/server/models/csphucap.js +2 -0
- package/server/models/ctds.js +5 -0
- package/server/models/ctds2.js +7 -0
- package/server/models/currency.js +3 -0
- package/server/models/custom_report.js +1 -0
- package/server/models/customer.js +31 -0
- package/server/models/customer_care.js +2 -0
- package/server/models/data_list_config.js +7 -0
- package/server/models/databanle.js +8 -0
- package/server/models/datlich.js +4 -0
- package/server/models/deal.js +2 -0
- package/server/models/dh2.js +20 -0
- package/server/models/diagram.js +2 -0
- package/server/models/dinhmucsx.js +8 -0
- package/server/models/dkhoc.js +6 -0
- package/server/models/dknphep.js +2 -0
- package/server/models/dmban.js +4 -0
- package/server/models/dmbp.js +12 -0
- package/server/models/dmca.js +2 -0
- package/server/models/dmchietkhau.js +8 -0
- package/server/models/dmchietkhauhd.js +19 -0
- package/server/models/dmchinhanh.js +2 -0
- package/server/models/dmcpmh.js +2 -0
- package/server/models/dmdiemthuong.js +3 -0
- package/server/models/dmdoi.js +4 -0
- package/server/models/dmdoituongdanhgia.js +2 -0
- package/server/models/dmdt.js +8 -0
- package/server/models/dmdvt.js +3 -0
- package/server/models/dmgiaban.js +9 -0
- package/server/models/dmgiamua.js +5 -0
- package/server/models/dmgiathitruong.js +5 -0
- package/server/models/dmgiathitruong_ngay.js +2 -0
- package/server/models/dmgiathitruong_theodoi.js +2 -0
- package/server/models/dmhoahonghd.js +8 -0
- package/server/models/dmhoahongnpp.js +8 -0
- package/server/models/dmkc.js +3 -0
- package/server/models/dmkho.js +7 -0
- package/server/models/dmkhuyenmai.js +9 -0
- package/server/models/dmkhuyenmaihd.js +11 -0
- package/server/models/dmletet.js +2 -0
- package/server/models/dmlo.js +4 -0
- package/server/models/dmloaicong.js +4 -0
- package/server/models/dmloaitask.js +2 -0
- package/server/models/dmloaits.js +2 -0
- package/server/models/dmnckkm.js +4 -0
- package/server/models/dmnghiepvu.js +4 -0
- package/server/models/dmnguonvon.js +2 -0
- package/server/models/dmnhnv.js +4 -0
- package/server/models/dmnv.js +17 -0
- package/server/models/dmnvt.js +10 -0
- package/server/models/dmphi.js +3 -0
- package/server/models/dmqct.js +3 -0
- package/server/models/dmqddvt.js +3 -0
- package/server/models/dmtanggiamts.js +3 -0
- package/server/models/dmto.js +4 -0
- package/server/models/dmtt.js +6 -0
- package/server/models/dmvt.js +17 -0
- package/server/models/dmyt.js +4 -0
- package/server/models/dn0.js +13 -0
- package/server/models/dnm.js +11 -0
- package/server/models/dokho.js +2 -0
- package/server/models/domain.js +2 -0
- package/server/models/dvcs.js +3 -0
- package/server/models/ecomcategories.js +3 -0
- package/server/models/ecomcategories_cty.js +3 -0
- package/server/models/ecomproductlines.js +2 -0
- package/server/models/ecompromotion_flashsales.js +2 -0
- package/server/models/ecompromotion_freeships.js +2 -0
- package/server/models/email.js +2 -0
- package/server/models/endpoint.js +1 -0
- package/server/models/events.js +3 -0
- package/server/models/evoucher.js +5 -0
- package/server/models/experiencejourney.js +2 -0
- package/server/models/experiencejourneydata.js +4 -0
- package/server/models/experiencejourneypersona.js +3 -0
- package/server/models/experiencejourneystage.js +2 -0
- package/server/models/exportexceltemplate.js +2 -0
- package/server/models/fbconversation.js +15 -0
- package/server/models/fbmessage.js +2 -0
- package/server/models/fbpage.js +2 -0
- package/server/models/fbpost.js +2 -0
- package/server/models/fieldright.js +2 -0
- package/server/models/fifo_dk.js +2 -0
- package/server/models/fifo_lot.js +3 -0
- package/server/models/fifo_trace.js +4 -0
- package/server/models/file.js +4 -0
- package/server/models/filechunk.js +2 -0
- package/server/models/financialroadmap.js +3 -0
- package/server/models/flow.js +2 -0
- package/server/models/flowdata.js +3 -0
- package/server/models/flowpending.js +2 -0
- package/server/models/folder.js +4 -0
- package/server/models/follow.js +2 -0
- package/server/models/forminfo.js +5 -0
- package/server/models/giaoca.js +4 -0
- package/server/models/giatb.js +3 -0
- package/server/models/group.js +9 -0
- package/server/models/gt_ctgt.js +4 -0
- package/server/models/gt_hspb.js +3 -0
- package/server/models/gt_sltk.js +3 -0
- package/server/models/gt_thcppstk.js +3 -0
- package/server/models/hanmucton.js +4 -0
- package/server/models/hd1.js +11 -0
- package/server/models/hd2.js +26 -0
- package/server/models/hd3.js +17 -0
- package/server/models/hd4.js +13 -0
- package/server/models/hd7.js +17 -0
- package/server/models/hd8.js +12 -0
- package/server/models/hde.js +11 -0
- package/server/models/hmcn.js +3 -0
- package/server/models/hmcnct.js +2 -0
- package/server/models/hspbts.js +4 -0
- package/server/models/htl.js +13 -0
- package/server/models/importexceltemplate.js +2 -0
- package/server/models/introducebonus.js +4 -0
- package/server/models/introducecode.js +3 -0
- package/server/models/introducer.js +4 -0
- package/server/models/kbbtpb.js +7 -0
- package/server/models/kbmPttct.js +4 -0
- package/server/models/kbmTkgtgt.js +5 -0
- package/server/models/kbm_bcdkt_old.js +4 -0
- package/server/models/kbm_kqhdkd_old.js +3 -0
- package/server/models/kbm_lcttgt_old.js +5 -0
- package/server/models/kbm_lctttt_old.js +4 -0
- package/server/models/kbm_pttct_old.js +4 -0
- package/server/models/kbm_tkgtgt_old.js +5 -0
- package/server/models/kbmbcdkt.js +4 -0
- package/server/models/kbmbcqt.js +4 -0
- package/server/models/kbmkqhdkd.js +3 -0
- package/server/models/kbmlcttgt.js +6 -0
- package/server/models/kbmlctttt.js +4 -0
- package/server/models/kbmtmbctc.js +4 -0
- package/server/models/kehoachdtcp.js +3 -0
- package/server/models/kehoachmh.js +8 -0
- package/server/models/keyresult.js +7 -0
- package/server/models/khunghangthanhvien.js +3 -0
- package/server/models/label.js +2 -0
- package/server/models/labelinfo.js +2 -0
- package/server/models/lenhcapphat.js +8 -0
- package/server/models/lenhsx.js +8 -0
- package/server/models/lienhe.js +4 -0
- package/server/models/like_module.js +2 -0
- package/server/models/link.js +2 -0
- package/server/models/listinfo.js +1365 -0
- package/server/models/loaidiem.js +2 -0
- package/server/models/lock.js +2 -0
- package/server/models/log.js +8 -0
- package/server/models/mailaccount.js +3 -0
- package/server/models/mailgroup.js +3 -0
- package/server/models/mailreceived.js +2 -0
- package/server/models/mailsent.js +2 -0
- package/server/models/mailtemplate.js +2 -0
- package/server/models/maudanhgia.js +2 -0
- package/server/models/menuinfo.js +2 -0
- package/server/models/message.js +8 -0
- package/server/models/message2.js +4 -0
- package/server/models/message2setting.js +3 -0
- package/server/models/moduleinfo.js +4 -0
- package/server/models/momo.js +18 -0
- package/server/models/news.js +3 -0
- package/server/models/newsfeed.js +4 -0
- package/server/models/note.js +2 -0
- package/server/models/notification.js +8 -0
- package/server/models/okr.js +4 -0
- package/server/models/okrdiagram.js +3 -0
- package/server/models/onepay.js +24 -0
- package/server/models/opportunity.js +4 -0
- package/server/models/options.js +2 -0
- package/server/models/originimportid.js +1 -0
- package/server/models/otp.js +1 -0
- package/server/models/parameter.js +2 -0
- package/server/models/participant.js +21 -0
- package/server/models/partner.js +1 -0
- package/server/models/payload.js +1 -0
- package/server/models/pbl.js +16 -0
- package/server/models/pc0.js +13 -0
- package/server/models/pc1.js +14 -0
- package/server/models/pc2.js +13 -0
- package/server/models/pc3.js +13 -0
- package/server/models/pc5.js +8 -0
- package/server/models/pc6.js +14 -0
- package/server/models/pcl.js +6 -0
- package/server/models/pdn.js +9 -0
- package/server/models/pdx.js +9 -0
- package/server/models/pgh.js +5 -0
- package/server/models/phieudanhgia.js +3 -0
- package/server/models/pht.js +8 -0
- package/server/models/phucap.js +4 -0
- package/server/models/pkc.js +6 -0
- package/server/models/pkh.js +6 -0
- package/server/models/pkk.js +10 -0
- package/server/models/pkt.js +12 -0
- package/server/models/pn1.js +18 -0
- package/server/models/pn2.js +12 -0
- package/server/models/pn3.js +13 -0
- package/server/models/pn5.js +14 -0
- package/server/models/pn6.js +14 -0
- package/server/models/pn9.js +17 -0
- package/server/models/pnc.js +9 -0
- package/server/models/pnh.js +11 -0
- package/server/models/pnk.js +10 -0
- package/server/models/po1.js +19 -0
- package/server/models/ppb.js +6 -0
- package/server/models/productcode.js +2 -0
- package/server/models/profile.js +4 -0
- package/server/models/pt1.js +12 -0
- package/server/models/pt5.js +8 -0
- package/server/models/ptl.js +5 -0
- package/server/models/ptthanhtoan.js +6 -0
- package/server/models/purchase_contract.js +17 -0
- package/server/models/pxc.js +9 -0
- package/server/models/pxh.js +11 -0
- package/server/models/pxk.js +9 -0
- package/server/models/qts.js +14 -0
- package/server/models/qts_dieuchinh.js +3 -0
- package/server/models/qts_dieuchuyen.js +4 -0
- package/server/models/quanhuyen.js +2 -0
- package/server/models/reason.js +2 -0
- package/server/models/receivedinvoice.js +2 -0
- package/server/models/reportinfo.js +5 -0
- package/server/models/right.js +4 -0
- package/server/models/rpt.js +2 -0
- package/server/models/rptform.js +3 -0
- package/server/models/rptobject.js +2 -0
- package/server/models/sale_contract.js +9 -0
- package/server/models/schedule.js +18 -0
- package/server/models/schedule_log.js +2 -0
- package/server/models/shipbook.js +12 -0
- package/server/models/shortcut.js +2 -0
- package/server/models/smsaccount.js +10 -0
- package/server/models/smssend.js +2 -0
- package/server/models/so1.js +22 -0
- package/server/models/so5.js +15 -0
- package/server/models/so9.js +19 -0
- package/server/models/socai.js +28 -0
- package/server/models/socainpp.js +18 -0
- package/server/models/socaitc.js +6 -0
- package/server/models/socaitmp.js +16 -0
- package/server/models/socaitt.js +4 -0
- package/server/models/sodiemthuong.js +4 -0
- package/server/models/sokho.js +27 -0
- package/server/models/sokhocapphat.js +18 -0
- package/server/models/sokhokhongton.js +19 -0
- package/server/models/sokhonpp.js +19 -0
- package/server/models/sokhotc.js +8 -0
- package/server/models/sokhott.js +18 -0
- package/server/models/sophanbokh.js +3 -0
- package/server/models/sosanxuat.js +5 -0
- package/server/models/sotinhkh.js +2 -0
- package/server/models/spdd_ck.js +3 -0
- package/server/models/spdd_dk.js +3 -0
- package/server/models/step.js +2 -0
- package/server/models/strategicdiagram.js +3 -0
- package/server/models/strategicgoal.js +4 -0
- package/server/models/strategickpi.js +6 -0
- package/server/models/strategicobjective.js +5 -0
- package/server/models/strategicplan.js +5 -0
- package/server/models/subscribe.js +2 -0
- package/server/models/support.js +2 -0
- package/server/models/synctime.js +2 -0
- package/server/models/sys_job_queue_book_keeping.js +2 -0
- package/server/models/sysconfig.js +2 -0
- package/server/models/sysgroup.js +2 -0
- package/server/models/tableinfo.js +3 -0
- package/server/models/task.js +9 -0
- package/server/models/tc.js +2 -0
- package/server/models/tdttco.js +9 -0
- package/server/models/tdttco_tt.js +5 -0
- package/server/models/tdttno.js +9 -0
- package/server/models/tdttno_tt.js +5 -0
- package/server/models/templaterpt.js +2 -0
- package/server/models/templatestore.js +3 -0
- package/server/models/templatevoucher.js +3 -0
- package/server/models/tinhthanh.js +2 -0
- package/server/models/tokens.js +3 -0
- package/server/models/tontucthoi.js +9 -0
- package/server/models/trangthai.js +4 -0
- package/server/models/trangthaiapp.js +4 -0
- package/server/models/transaction.js +16 -0
- package/server/models/trialinfo.js +2 -0
- package/server/models/user.js +40 -0
- package/server/models/usergroup.js +7 -0
- package/server/models/vanchuyen.js +12 -0
- package/server/models/vat.js +3 -0
- package/server/models/vatra.js +6 -0
- package/server/models/vatvao.js +6 -0
- package/server/models/versioninfo.js +2 -0
- package/server/models/vietqrbanks.js +2 -0
- package/server/models/vsocai.js +6 -0
- package/server/models/wallet.js +8 -0
- package/server/models/warranty.js +3 -0
- package/server/models/warrantyclaim.js +2 -0
- package/server/models/warrantypolicy.js +1 -0
- package/server/models/workflow.js +4 -0
- package/server/models/xaphuong.js +2 -0
- package/server/models/xhd.js +10 -0
- package/server/models/ytdd_ck.js +4 -0
- package/server/models/ytdd_dk.js +4 -0
- package/server/models/zalo.js +17 -0
- package/server/modules/lists/bg-cddiem.js +6 -0
- package/server/modules/lists/bg-cddt.js +7 -0
- package/server/modules/lists/bg-cdkh.js +11 -0
- package/server/modules/lists/bg-cdnphep.js +6 -0
- package/server/modules/lists/bg-cdtk.js +9 -0
- package/server/modules/lists/bg-cdvt.js +8 -0
- package/server/modules/lists/bg-cdvtnpp.js +8 -0
- package/server/modules/lists/bg-fifo_dk.js +8 -0
- package/server/modules/lists/ls-account.js +4 -0
- package/server/modules/lists/ls-afflink.js +3 -0
- package/server/modules/lists/ls-approve.js +5 -0
- package/server/modules/lists/ls-assabcihandler.js +3 -0
- package/server/modules/lists/ls-assbank.js +3 -0
- package/server/modules/lists/ls-assbooking.js +20 -0
- package/server/modules/lists/ls-assbuy.js +8 -0
- package/server/modules/lists/ls-asscashwithdraw.js +8 -0
- package/server/modules/lists/ls-assinvestment.js +31 -0
- package/server/modules/lists/ls-assissue.js +3 -0
- package/server/modules/lists/ls-asskey.js +41 -0
- package/server/modules/lists/ls-assneedtobuy.js +10 -0
- package/server/modules/lists/ls-assperiod.js +19 -0
- package/server/modules/lists/ls-assproduct.js +9 -0
- package/server/modules/lists/ls-assprofitsharing.js +8 -0
- package/server/modules/lists/ls-assreceiver.js +3 -0
- package/server/modules/lists/ls-assrequest.js +4 -0
- package/server/modules/lists/ls-asssell.js +13 -0
- package/server/modules/lists/ls-asstransaction.js +3 -0
- package/server/modules/lists/ls-asstransfer.js +3 -0
- package/server/modules/lists/ls-assuser_identity.js +1 -0
- package/server/modules/lists/ls-asswithdraw.js +12 -0
- package/server/modules/lists/ls-bangtinhluong.js +2 -0
- package/server/modules/lists/ls-calllog.js +4 -0
- package/server/modules/lists/ls-cart.js +14 -0
- package/server/modules/lists/ls-chamcong.js +3 -0
- package/server/modules/lists/ls-chat_session.js +5 -0
- package/server/modules/lists/ls-checkin.js +24 -0
- package/server/modules/lists/ls-checkinactivity.js +8 -0
- package/server/modules/lists/ls-checkinkpi.js +3 -0
- package/server/modules/lists/ls-checkinlocation.js +1 -0
- package/server/modules/lists/ls-chitietluongds.js +4 -0
- package/server/modules/lists/ls-chitieukpi.js +1 -0
- package/server/modules/lists/ls-chudethaoluan.js +1 -0
- package/server/modules/lists/ls-ckgtluong.js +1 -0
- package/server/modules/lists/ls-comment.js +9 -0
- package/server/modules/lists/ls-congdoansx.js +3 -0
- package/server/modules/lists/ls-congtacvien.js +5 -0
- package/server/modules/lists/ls-consultant.js +2 -0
- package/server/modules/lists/ls-contract.js +7 -0
- package/server/modules/lists/ls-csluongtheods.js +1 -0
- package/server/modules/lists/ls-csphucap.js +1 -0
- package/server/modules/lists/ls-ctds.js +4 -0
- package/server/modules/lists/ls-ctds2.js +4 -0
- package/server/modules/lists/ls-currency.js +1 -0
- package/server/modules/lists/ls-customer.js +22 -0
- package/server/modules/lists/ls-customer_care.js +1 -0
- package/server/modules/lists/ls-datlich.js +9 -0
- package/server/modules/lists/ls-dckhauhaots.js +3 -0
- package/server/modules/lists/ls-deal.js +3 -0
- package/server/modules/lists/ls-diagram.js +1 -0
- package/server/modules/lists/ls-dkhoc.js +6 -0
- package/server/modules/lists/ls-dknphep.js +1 -0
- package/server/modules/lists/ls-dmban.js +4 -0
- package/server/modules/lists/ls-dmbp.js +7 -0
- package/server/modules/lists/ls-dmca.js +1 -0
- package/server/modules/lists/ls-dmchietkhau.js +19 -0
- package/server/modules/lists/ls-dmchietkhauhd.js +4 -0
- package/server/modules/lists/ls-dmchinhanh.js +1 -0
- package/server/modules/lists/ls-dmchucvu.js +2 -0
- package/server/modules/lists/ls-dmcpmh.js +1 -0
- package/server/modules/lists/ls-dmdiemthuong.js +4 -0
- package/server/modules/lists/ls-dmdoi.js +4 -0
- package/server/modules/lists/ls-dmdoituongdanhgia.js +1 -0
- package/server/modules/lists/ls-dmdt.js +11 -0
- package/server/modules/lists/ls-dmdvt.js +2 -0
- package/server/modules/lists/ls-dmgiaban.js +4 -0
- package/server/modules/lists/ls-dmgiamua.js +4 -0
- package/server/modules/lists/ls-dmgiathitruong.js +15 -0
- package/server/modules/lists/ls-dmgiathitruong_ngay.js +2 -0
- package/server/modules/lists/ls-dmgiathitruong_theodoi.js +1 -0
- package/server/modules/lists/ls-dmhoahonghd.js +1 -0
- package/server/modules/lists/ls-dmhoahongnpp.js +1 -0
- package/server/modules/lists/ls-dmkc.js +3 -0
- package/server/modules/lists/ls-dmkho.js +7 -0
- package/server/modules/lists/ls-dmkhuyenmai.js +5 -0
- package/server/modules/lists/ls-dmkhuyenmaihd.js +3 -0
- package/server/modules/lists/ls-dmletet.js +1 -0
- package/server/modules/lists/ls-dmlo.js +1 -0
- package/server/modules/lists/ls-dmloaicong.js +1 -0
- package/server/modules/lists/ls-dmloaits.js +1 -0
- package/server/modules/lists/ls-dmnckkm.js +7 -0
- package/server/modules/lists/ls-dmnghiepvu.js +1 -0
- package/server/modules/lists/ls-dmnguonvon.js +1 -0
- package/server/modules/lists/ls-dmnhnv.js +6 -0
- package/server/modules/lists/ls-dmnhtask.js +5 -0
- package/server/modules/lists/ls-dmnkh.js +6 -0
- package/server/modules/lists/ls-dmntt.js +6 -0
- package/server/modules/lists/ls-dmnv.js +14 -0
- package/server/modules/lists/ls-dmnvt.js +7 -0
- package/server/modules/lists/ls-dmphi.js +6 -0
- package/server/modules/lists/ls-dmqct.js +2 -0
- package/server/modules/lists/ls-dmqddvt.js +3 -0
- package/server/modules/lists/ls-dmtanggiamts.js +1 -0
- package/server/modules/lists/ls-dmto.js +5 -0
- package/server/modules/lists/ls-dmtt.js +7 -0
- package/server/modules/lists/ls-dmvt.js +52 -0
- package/server/modules/lists/ls-dmyt.js +1 -0
- package/server/modules/lists/ls-dokho.js +1 -0
- package/server/modules/lists/ls-dvcs.js +1 -0
- package/server/modules/lists/ls-ecomcategories.js +5 -0
- package/server/modules/lists/ls-ecomcategories_cty.js +5 -0
- package/server/modules/lists/ls-email.js +4 -0
- package/server/modules/lists/ls-events.js +3 -0
- package/server/modules/lists/ls-evoucher.js +3 -0
- package/server/modules/lists/ls-experiencejourney.js +1 -0
- package/server/modules/lists/ls-experiencejourneydata.js +3 -0
- package/server/modules/lists/ls-experiencejourneypersona.js +4 -0
- package/server/modules/lists/ls-experiencejourneystage.js +1 -0
- package/server/modules/lists/ls-fbconversation.js +2 -0
- package/server/modules/lists/ls-fbmessage.js +2 -0
- package/server/modules/lists/ls-fbpage.js +11 -0
- package/server/modules/lists/ls-fbpost.js +2 -0
- package/server/modules/lists/ls-file.js +38 -0
- package/server/modules/lists/ls-financialroadmap.js +3 -0
- package/server/modules/lists/ls-flow.js +6 -0
- package/server/modules/lists/ls-flowdata.js +1 -0
- package/server/modules/lists/ls-flowpending.js +3 -0
- package/server/modules/lists/ls-folder.js +1 -0
- package/server/modules/lists/ls-forminfo.js +1 -0
- package/server/modules/lists/ls-giaoca.js +5 -0
- package/server/modules/lists/ls-group.js +5 -0
- package/server/modules/lists/ls-hmcn.js +2 -0
- package/server/modules/lists/ls-hspbts.js +3 -0
- package/server/modules/lists/ls-introducebonus.js +4 -0
- package/server/modules/lists/ls-introducecode.js +10 -0
- package/server/modules/lists/ls-introducer.js +21 -0
- package/server/modules/lists/ls-kbm-bcdkt.js +1 -0
- package/server/modules/lists/ls-kbm-bcqt.js +5 -0
- package/server/modules/lists/ls-kbm-kqhdkd.js +1 -0
- package/server/modules/lists/ls-kbm-lcttgt.js +1 -0
- package/server/modules/lists/ls-kbm-lctttt.js +1 -0
- package/server/modules/lists/ls-kbm-pttct.js +3 -0
- package/server/modules/lists/ls-kbm-tkgtgt.js +3 -0
- package/server/modules/lists/ls-kbm-tmbctc.js +3 -0
- package/server/modules/lists/ls-kehoachdtcp.js +4 -0
- package/server/modules/lists/ls-keyresult.js +7 -0
- package/server/modules/lists/ls-khunghangthanhvien.js +1 -0
- package/server/modules/lists/ls-label.js +1 -0
- package/server/modules/lists/ls-lienhe.js +4 -0
- package/server/modules/lists/ls-like-module.js +1 -0
- package/server/modules/lists/ls-link.js +1 -0
- package/server/modules/lists/ls-loaidiem.js +1 -0
- package/server/modules/lists/ls-lock.js +1 -0
- package/server/modules/lists/ls-log.js +3 -0
- package/server/modules/lists/ls-mailaccount.js +5 -0
- package/server/modules/lists/ls-mailreceived.js +5 -0
- package/server/modules/lists/ls-mailsent.js +4 -0
- package/server/modules/lists/ls-mailtemplate.js +4 -0
- package/server/modules/lists/ls-maudanhgia.js +3 -0
- package/server/modules/lists/ls-message2.js +8 -0
- package/server/modules/lists/ls-message2setting.js +5 -0
- package/server/modules/lists/ls-news.js +7 -0
- package/server/modules/lists/ls-newsfeed.js +4 -0
- package/server/modules/lists/ls-note.js +6 -0
- package/server/modules/lists/ls-okr.js +5 -0
- package/server/modules/lists/ls-okrdiagram.js +1 -0
- package/server/modules/lists/ls-opportunity.js +5 -0
- package/server/modules/lists/ls-options.js +4 -0
- package/server/modules/lists/ls-parameter.js +3 -0
- package/server/modules/lists/ls-participant.js +12 -0
- package/server/modules/lists/ls-phieudanhgia.js +7 -0
- package/server/modules/lists/ls-phucap.js +2 -0
- package/server/modules/lists/ls-productcode.js +9 -0
- package/server/modules/lists/ls-profile.js +1 -0
- package/server/modules/lists/ls-ptthanhtoan.js +3 -0
- package/server/modules/lists/ls-qts-dieuchinh.js +2 -0
- package/server/modules/lists/ls-qts-dieuchuyen.js +8 -0
- package/server/modules/lists/ls-reason.js +1 -0
- package/server/modules/lists/ls-rpt.js +5 -0
- package/server/modules/lists/ls-rptform.js +3 -0
- package/server/modules/lists/ls-shortcut.js +1 -0
- package/server/modules/lists/ls-smsaccount.js +1 -0
- package/server/modules/lists/ls-smssend.js +3 -0
- package/server/modules/lists/ls-sosanxuat.js +4 -0
- package/server/modules/lists/ls-step.js +1 -0
- package/server/modules/lists/ls-strategicdiagram.js +1 -0
- package/server/modules/lists/ls-strategicgoal.js +3 -0
- package/server/modules/lists/ls-strategickpi.js +7 -0
- package/server/modules/lists/ls-strategicobjective.js +3 -0
- package/server/modules/lists/ls-strategicplan.js +6 -0
- package/server/modules/lists/ls-support.js +3 -0
- package/server/modules/lists/ls-task.js +28 -0
- package/server/modules/lists/ls-tc.js +1 -0
- package/server/modules/lists/ls-templaterpt.js +5 -0
- package/server/modules/lists/ls-templatevoucher.js +1 -0
- package/server/modules/lists/ls-tontucthoi.js +3 -0
- package/server/modules/lists/ls-trangthaiapp.js +3 -0
- package/server/modules/lists/ls-transaction.js +4 -0
- package/server/modules/lists/ls-usergroup.js +7 -0
- package/server/modules/lists/ls-vat.js +1 -0
- package/server/modules/lists/ls-vatra.js +5 -0
- package/server/modules/lists/ls-vatvao.js +6 -0
- package/server/modules/lists/ls-warranty.js +3 -0
- package/server/modules/lists/ls-workflow.js +1 -0
- package/server/modules/lists/ls_hanmucton.js +3 -0
- package/server/modules/lists/ls_hspb.js +4 -0
- package/server/modules/lists/ls_spdd_ck.js +3 -0
- package/server/modules/lists/ls_spdd_dk.js +3 -0
- package/server/modules/lists/ls_ytdd_ck.js +4 -0
- package/server/modules/lists/ls_ytdd_dk.js +4 -0
- package/server/modules/lists/sys-attend.js +4 -0
- package/server/modules/lists/sys-follow.js +4 -0
- package/server/modules/lists/sys-right.js +2 -0
- package/server/modules/public/app.js +4 -0
- package/server/modules/public/approve.js +37 -0
- package/server/modules/public/callin.js +7 -0
- package/server/modules/public/comment.js +5 -0
- package/server/modules/public/dmnvt.js +4 -0
- package/server/modules/public/dmvt.js +9 -0
- package/server/modules/public/file.js +11 -0
- package/server/modules/public/forminfo.js +1 -0
- package/server/modules/public/group.js +4 -0
- package/server/modules/public/introducecode.js +1 -0
- package/server/modules/public/listinfo.js +1 -0
- package/server/modules/public/media-webhook.js +1 -0
- package/server/modules/public/partner.js +1 -0
- package/server/modules/public/paymentCallback.js +32 -0
- package/server/modules/public/province.js +1 -0
- package/server/modules/public/ptthanhtoan.js +4 -0
- package/server/modules/public/subscribe.js +30 -0
- package/server/modules/public/support.js +3 -0
- package/server/modules/public/tableinfo.js +1 -0
- package/server/modules/public/trialinfo.js +4 -0
- package/server/modules/public/versioninfo.js +1 -0
- package/server/modules/reports/calc-tinhgiafifo.js +8 -0
- package/server/modules/reports/calc-tinhgiatb.js +7 -0
- package/server/modules/reports/calc-tinhgiathanh.js +7 -0
- package/server/modules/reports/calc-tinhkhauhaots.js +3 -0
- package/server/modules/reports/calc-tinhluong.js +68 -0
- package/server/modules/reports/rp-analyzedata.js +6 -0
- package/server/modules/reports/rp-assbonus.js +4 -0
- package/server/modules/reports/rp-assinterest.js +8 -0
- package/server/modules/reports/rp-assproductowners.js +3 -0
- package/server/modules/reports/rp-asssupply.js +1 -0
- package/server/modules/reports/rp-asstransferlog.js +10 -0
- package/server/modules/reports/rp-backup.js +4 -0
- package/server/modules/reports/rp-banggiatb.js +3 -0
- package/server/modules/reports/rp-bangtinhkhauhao.js +6 -0
- package/server/modules/reports/rp-baoCaoFifoKy.js +1 -0
- package/server/modules/reports/rp-baocaokhachhang.js +6 -0
- package/server/modules/reports/rp-bcdkt.js +11 -0
- package/server/modules/reports/rp-bcintroducebonus.js +4 -0
- package/server/modules/reports/rp-bckhtiemnang.js +3 -0
- package/server/modules/reports/rp-bcqt.js +85 -0
- package/server/modules/reports/rp-bkchamcong.js +5 -0
- package/server/modules/reports/rp-bkct.js +13 -0
- package/server/modules/reports/rp-bkshipbook.js +8 -0
- package/server/modules/reports/rp-bkvanchuyen.js +8 -0
- package/server/modules/reports/rp-bkvatra.js +7 -0
- package/server/modules/reports/rp-bkvatvao.js +7 -0
- package/server/modules/reports/rp-capnhatsocaitc.js +4 -0
- package/server/modules/reports/rp-cdpsdiem.js +4 -0
- package/server/modules/reports/rp-cdpsdt.js +5 -0
- package/server/modules/reports/rp-cdpskh.js +8 -0
- package/server/modules/reports/rp-cdpsnphep.js +3 -0
- package/server/modules/reports/rp-cdpstk.js +4 -0
- package/server/modules/reports/rp-chitietchitientheohoadon.js +12 -0
- package/server/modules/reports/rp-chitiettaisan.js +13 -0
- package/server/modules/reports/rp-chitietthutientheohoadon.js +13 -0
- package/server/modules/reports/rp-ckcn.js +3 -0
- package/server/modules/reports/rp-ckdiem.js +2 -0
- package/server/modules/reports/rp-cktk.js +3 -0
- package/server/modules/reports/rp-ckvt.js +10 -0
- package/server/modules/reports/rp-ckvttheokho.js +4 -0
- package/server/modules/reports/rp-ckvttheotg.js +4 -0
- package/server/modules/reports/rp-ckvttt.js +3 -0
- package/server/modules/reports/rp-congnophaithutheotuoino.js +3 -0
- package/server/modules/reports/rp-congnophaitratheotuoino.js +3 -0
- package/server/modules/reports/rp-congnosapthu.js +4 -0
- package/server/modules/reports/rp-congnosaptra.js +4 -0
- package/server/modules/reports/rp-congviectheobp.js +9 -0
- package/server/modules/reports/rp-congviectheodt.js +8 -0
- package/server/modules/reports/rp-congviectheokh.js +8 -0
- package/server/modules/reports/rp-congviectheonv.js +9 -0
- package/server/modules/reports/rp-congviectheotimeline.js +6 -0
- package/server/modules/reports/rp-ctbanle.js +15 -0
- package/server/modules/reports/rp-ctbanle2.js +20 -0
- package/server/modules/reports/rp-ctbanlectv.js +20 -0
- package/server/modules/reports/rp-ctbanlenpp.js +24 -0
- package/server/modules/reports/rp-ctdanhgianhanvien.js +8 -0
- package/server/modules/reports/rp-cthangbanbitralai.js +4 -0
- package/server/modules/reports/rp-ctmuahang.js +7 -0
- package/server/modules/reports/rp-cttralaihang.js +4 -0
- package/server/modules/reports/rp-databanle.js +10 -0
- package/server/modules/reports/rp-diemthuong.js +2 -0
- package/server/modules/reports/rp-dkcn.js +3 -0
- package/server/modules/reports/rp-dktk.js +2 -0
- package/server/modules/reports/rp-dsnhanviencm.js +9 -0
- package/server/modules/reports/rp-dsnhanvientb.js +9 -0
- package/server/modules/reports/rp-dtbanlekempk.js +12 -0
- package/server/modules/reports/rp-dtbanletheoct.js +22 -0
- package/server/modules/reports/rp-dtbanletheoctkempk.js +25 -0
- package/server/modules/reports/rp-dtbanletheokh.js +17 -0
- package/server/modules/reports/rp-dtbanletheokhnpp.js +19 -0
- package/server/modules/reports/rp-dtbanletheokho.js +15 -0
- package/server/modules/reports/rp-dtbanletheonam.js +3 -0
- package/server/modules/reports/rp-dtbanletheongay.js +1 -0
- package/server/modules/reports/rp-dtbanletheonpp.js +23 -0
- package/server/modules/reports/rp-dtbanletheonv.js +19 -0
- package/server/modules/reports/rp-dtbanletheoquy.js +3 -0
- package/server/modules/reports/rp-dtbanletheosp.js +9 -0
- package/server/modules/reports/rp-dtbanletheospnpp.js +6 -0
- package/server/modules/reports/rp-dtbanletheothang.js +3 -0
- package/server/modules/reports/rp-dtbanletheothungan.js +12 -0
- package/server/modules/reports/rp-dtbanletheovt.js +2 -0
- package/server/modules/reports/rp-dtbanletheovtnpp.js +2 -0
- package/server/modules/reports/rp-dutoanthuchitheodt.js +4 -0
- package/server/modules/reports/rp-getPXC2PNC.js +8 -0
- package/server/modules/reports/rp-getariseofaccountsbymonth.js +4 -0
- package/server/modules/reports/rp-getbtpb.js +6 -0
- package/server/modules/reports/rp-getcashbycashier.js +7 -0
- package/server/modules/reports/rp-getcschietkhau.js +5 -0
- package/server/modules/reports/rp-getdinhmuc4lenhcp.js +7 -0
- package/server/modules/reports/rp-getdinhmuc4pxk.js +9 -0
- package/server/modules/reports/rp-getdk4pht.js +8 -0
- package/server/modules/reports/rp-getdk4pkc.js +10 -0
- package/server/modules/reports/rp-getdttheoca.js +5 -0
- package/server/modules/reports/rp-getinvoice2pay.js +4 -0
- package/server/modules/reports/rp-getinvoice2receive.js +4 -0
- package/server/modules/reports/rp-getinvoice2return.js +5 -0
- package/server/modules/reports/rp-getinvoice2return_bl.js +6 -0
- package/server/modules/reports/rp-getkehoachmh4lenhcp.js +4 -0
- package/server/modules/reports/rp-getkhauhao.js +7 -0
- package/server/modules/reports/rp-getluong.js +8 -0
- package/server/modules/reports/rp-getluongchuyen.js +5 -0
- package/server/modules/reports/rp-getpn2fee.js +5 -0
- package/server/modules/reports/rp-getpn2return.js +5 -0
- package/server/modules/reports/rp-getthanhpham4pnk.js +7 -0
- package/server/modules/reports/rp-getvc2xhd.js +11 -0
- package/server/modules/reports/rp-gt_cpnvltt.js +6 -0
- package/server/modules/reports/rp-hangbanbitralai.js +5 -0
- package/server/modules/reports/rp-hangthanhvien.js +3 -0
- package/server/modules/reports/rp-hoadonbanhangtheohantt.js +5 -0
- package/server/modules/reports/rp-hoadonmuahangtheohantt.js +5 -0
- package/server/modules/reports/rp-hoahong.js +15 -0
- package/server/modules/reports/rp-kcsns.js +19 -0
- package/server/modules/reports/rp-kgchamcong.js +1 -0
- package/server/modules/reports/rp-khoaso.js +11 -0
- package/server/modules/reports/rp-kiemtrasocaitcvssocai.js +6 -0
- package/server/modules/reports/rp-kqdanhgianhanvien.js +5 -0
- package/server/modules/reports/rp-kqhdkd.js +1 -0
- package/server/modules/reports/rp-lcttgt.js +16 -0
- package/server/modules/reports/rp-lctttt.js +11 -0
- package/server/modules/reports/rp-linkslist.js +4 -0
- package/server/modules/reports/rp-phanbochitienchohoadon.js +11 -0
- package/server/modules/reports/rp-phanbothutienchohoadon.js +11 -0
- package/server/modules/reports/rp-ptbitralai.js +7 -0
- package/server/modules/reports/rp-ptcttct.js +24 -0
- package/server/modules/reports/rp-ptdonhang.js +8 -0
- package/server/modules/reports/rp-pttct.js +52 -0
- package/server/modules/reports/rp-pttctkho.js +32 -0
- package/server/modules/reports/rp-pttctkho2.js +29 -0
- package/server/modules/reports/rp-referredusers.js +5 -0
- package/server/modules/reports/rp-sctbhxh.js +4 -0
- package/server/modules/reports/rp-sctcnkh.js +11 -0
- package/server/modules/reports/rp-sctdiem.js +3 -0
- package/server/modules/reports/rp-sctdt.js +7 -0
- package/server/modules/reports/rp-sctdtcp.js +11 -0
- package/server/modules/reports/rp-sctluong.js +6 -0
- package/server/modules/reports/rp-sctthuetncn.js +4 -0
- package/server/modules/reports/rp-scttk.js +9 -0
- package/server/modules/reports/rp-sctvt.js +5 -0
- package/server/modules/reports/rp-sctvt_sl.js +5 -0
- package/server/modules/reports/rp-sctvtnpp.js +6 -0
- package/server/modules/reports/rp-sctvttt.js +5 -0
- package/server/modules/reports/rp-search.js +4 -0
- package/server/modules/reports/rp-socai.js +6 -0
- package/server/modules/reports/rp-socaitk.js +1 -0
- package/server/modules/reports/rp-sochut.js +7 -0
- package/server/modules/reports/rp-sokho.js +7 -0
- package/server/modules/reports/rp-sokhott.js +5 -0
- package/server/modules/reports/rp-sonkbh.js +5 -0
- package/server/modules/reports/rp-sonkc.js +6 -0
- package/server/modules/reports/rp-sonkct.js +5 -0
- package/server/modules/reports/rp-sonkmh.js +5 -0
- package/server/modules/reports/rp-sonktt.js +5 -0
- package/server/modules/reports/rp-soquy.js +11 -0
- package/server/modules/reports/rp-sosanhkhvatt.js +13 -0
- package/server/modules/reports/rp-sosanhkhvatt2.js +5 -0
- package/server/modules/reports/rp-sotaisan.js +13 -0
- package/server/modules/reports/rp-sotiengui.js +7 -0
- package/server/modules/reports/rp-taodinhmuctudkhoc.js +5 -0
- package/server/modules/reports/rp-thbanhangkempk.js +28 -0
- package/server/modules/reports/rp-thdanhgianhanvien.js +9 -0
- package/server/modules/reports/rp-thgt.js +6 -0
- package/server/modules/reports/rp-thnxt.js +11 -0
- package/server/modules/reports/rp-thnxt_sl.js +9 -0
- package/server/modules/reports/rp-thnxtnpp.js +10 -0
- package/server/modules/reports/rp-thnxttt.js +9 -0
- package/server/modules/reports/rp-tkbanhangtheogioithieu.js +9 -0
- package/server/modules/reports/rp-tkgioithieukh.js +4 -0
- package/server/modules/reports/rp-tkgtgt.js +76 -0
- package/server/modules/reports/rp-tkgtgt_old.js +7 -0
- package/server/modules/reports/rp-tmbctc.js +20 -0
- package/server/modules/reports/rp-tonghopbanhang.js +6 -0
- package/server/modules/reports/rp-tonghopmuahang.js +5 -0
- package/server/modules/reports/rp-tonghoptralaihang.js +5 -0
- package/server/modules/reports/rp-tongquanbanle.js +20 -0
- package/server/modules/reports/rp-tongquanbds.js +3 -0
- package/server/modules/reports/rp-tongquancongty.js +6 -0
- package/server/modules/reports/rp-tongquanctvnpp.js +12 -0
- package/server/modules/reports/rp-tongquannvbh.js +14 -0
- package/server/modules/reports/rp-tongquannvnpp.js +5 -0
- package/server/modules/reports/rp-uoctinhnvl.js +11 -0
- package/server/modules/reports/rp-wallet.js +3 -0
- package/server/modules/reports/rpt-tkdiemtichluy.js +9 -0
- package/server/modules/systems/sys-app.js +34 -0
- package/server/modules/systems/sys-colleague.js +11 -0
- package/server/modules/systems/sys-data_list_config.js +1 -0
- package/server/modules/systems/sys-domain.js +1 -0
- package/server/modules/systems/sys-ecomproductlines.js +1 -0
- package/server/modules/systems/sys-exportexceltemplate.js +1 -0
- package/server/modules/systems/sys-fieldright.js +1 -0
- package/server/modules/systems/sys-importexceltemplate.js +1 -0
- package/server/modules/systems/sys-labelinfo.js +4 -0
- package/server/modules/systems/sys-listinfo.js +10 -0
- package/server/modules/systems/sys-menuinfo.js +4 -0
- package/server/modules/systems/sys-message.js +14 -0
- package/server/modules/systems/sys-moduleinfo.js +4 -0
- package/server/modules/systems/sys-notification.js +8 -0
- package/server/modules/systems/sys-quanhuyen.js +1 -0
- package/server/modules/systems/sys-reportinfo.js +5 -0
- package/server/modules/systems/sys-rptobject.js +1 -0
- package/server/modules/systems/sys-schedule.js +10 -0
- package/server/modules/systems/sys-sysconfig.js +1 -0
- package/server/modules/systems/sys-sysgroup.js +1 -0
- package/server/modules/systems/sys-tableinfo.js +1 -0
- package/server/modules/systems/sys-templatestore.js +5 -0
- package/server/modules/systems/sys-tinhthanh.js +1 -0
- package/server/modules/systems/sys-token.js +3 -0
- package/server/modules/systems/sys-trangthai.js +3 -0
- package/server/modules/systems/sys-trialinfo.js +1 -0
- package/server/modules/systems/sys-user.js +45 -0
- package/server/modules/systems/sys-users.js +10 -0
- package/server/modules/systems/sys-versioninfo.js +1 -0
- package/server/modules/systems/sys-vietqrbanks.js +1 -0
- package/server/modules/systems/sys-xaphuong.js +1 -0
- package/server/modules/vouchers/vo-banggiaban.js +8 -0
- package/server/modules/vouchers/vo-bc1.js +34 -0
- package/server/modules/vouchers/vo-bc5.js +15 -0
- package/server/modules/vouchers/vo-bg1.js +10 -0
- package/server/modules/vouchers/vo-bg2.js +12 -0
- package/server/modules/vouchers/vo-bn1.js +36 -0
- package/server/modules/vouchers/vo-bn5.js +15 -0
- package/server/modules/vouchers/vo-dh2.js +35 -0
- package/server/modules/vouchers/vo-dinhmucsx.js +6 -0
- package/server/modules/vouchers/vo-dkb.js +21 -0
- package/server/modules/vouchers/vo-dn0.js +9 -0
- package/server/modules/vouchers/vo-dnm.js +20 -0
- package/server/modules/vouchers/vo-hd1.js +37 -0
- package/server/modules/vouchers/vo-hd2.js +108 -0
- package/server/modules/vouchers/vo-hd3.js +38 -0
- package/server/modules/vouchers/vo-hd4.js +13 -0
- package/server/modules/vouchers/vo-hd7.js +29 -0
- package/server/modules/vouchers/vo-hd8.js +29 -0
- package/server/modules/vouchers/vo-hde.js +39 -0
- package/server/modules/vouchers/vo-htl.js +11 -0
- package/server/modules/vouchers/vo-kbbtpb.js +6 -0
- package/server/modules/vouchers/vo-kehoachmh.js +11 -0
- package/server/modules/vouchers/vo-lenhcapphat.js +9 -0
- package/server/modules/vouchers/vo-lenhsx.js +12 -0
- package/server/modules/vouchers/vo-pbl.js +94 -0
- package/server/modules/vouchers/vo-pc0.js +14 -0
- package/server/modules/vouchers/vo-pc1.js +31 -0
- package/server/modules/vouchers/vo-pc2.js +25 -0
- package/server/modules/vouchers/vo-pc3.js +14 -0
- package/server/modules/vouchers/vo-pc5.js +15 -0
- package/server/modules/vouchers/vo-pc6.js +19 -0
- package/server/modules/vouchers/vo-pcl.js +7 -0
- package/server/modules/vouchers/vo-pdn.js +11 -0
- package/server/modules/vouchers/vo-pdx.js +9 -0
- package/server/modules/vouchers/vo-pgh.js +16 -0
- package/server/modules/vouchers/vo-pht.js +6 -0
- package/server/modules/vouchers/vo-pkc.js +5 -0
- package/server/modules/vouchers/vo-pkh.js +9 -0
- package/server/modules/vouchers/vo-pkk.js +12 -0
- package/server/modules/vouchers/vo-pkt.js +12 -0
- package/server/modules/vouchers/vo-pn1.js +30 -0
- package/server/modules/vouchers/vo-pn2.js +17 -0
- package/server/modules/vouchers/vo-pn3.js +18 -0
- package/server/modules/vouchers/vo-pn5.js +18 -0
- package/server/modules/vouchers/vo-pn6.js +18 -0
- package/server/modules/vouchers/vo-pn9.js +23 -0
- package/server/modules/vouchers/vo-pnc.js +19 -0
- package/server/modules/vouchers/vo-pnh.js +17 -0
- package/server/modules/vouchers/vo-pnk.js +14 -0
- package/server/modules/vouchers/vo-pnknpp.js +12 -0
- package/server/modules/vouchers/vo-po1.js +14 -0
- package/server/modules/vouchers/vo-ppb.js +8 -0
- package/server/modules/vouchers/vo-pt1.js +20 -0
- package/server/modules/vouchers/vo-pt5.js +15 -0
- package/server/modules/vouchers/vo-ptl.js +8 -0
- package/server/modules/vouchers/vo-purchase_contract.js +9 -0
- package/server/modules/vouchers/vo-pxc.js +24 -0
- package/server/modules/vouchers/vo-pxh.js +18 -0
- package/server/modules/vouchers/vo-pxk.js +15 -0
- package/server/modules/vouchers/vo-pxknpp.js +14 -0
- package/server/modules/vouchers/vo-qts.js +12 -0
- package/server/modules/vouchers/vo-sale_contract.js +11 -0
- package/server/modules/vouchers/vo-shipbook.js +17 -0
- package/server/modules/vouchers/vo-so1.js +125 -0
- package/server/modules/vouchers/vo-so5.js +57 -0
- package/server/modules/vouchers/vo-so7.js +97 -0
- package/server/modules/vouchers/vo-so9.js +119 -0
- package/server/modules/vouchers/vo-vanchuyen.js +14 -0
- package/server/modules/vouchers/vo-xhd.js +33 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const model=global.getModel("assperiod"),assproduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),async=require("async");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assperiod",{sort:{hoat_dong:-1,date_created:-1},onFinding:async($pros_user$$,$condition$$,$next$$)=>{$condition$$.ma_loai&&($pros_user$$=await assproduct.find({id_app:$pros_user$$.current_id_app,ma_loai:$condition$$.ma_loai,status:!0},{id:1}),$condition$$.id_product={$in:$pros_user$$.map($p$$=>$p$$.id)},delete $condition$$.ma_loai);$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,
|
|
3
|
+
assproduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai",{product_token:"token"},"gia_tri_hien_tai","sl_nhan_vien","nganh_nghe"]});async.mapSeries($items$$,($item$$,$cb$$)=>{$item$$.id||($item$$.id=$item$$._id.toString());setImmediate(async()=>{if($item$$.goi_dau_tu&&$item$$.frm_step_code){const $frm$$=await global.getModel("financialroadmap").findOne({id_app:$item$$.id_app,code:$item$$.id_product.toString()}).lean();$frm$$&&($item$$.frm_step=($frm$$.steps||[]).find($s$$=>
|
|
4
|
+
$s$$.code===$item$$.frm_step_code),$item$$.frm_step&&$item$$.frm_step.sl_slot&&($item$$.frm_step.sl_cp_slot=$item$$.frm_step.dillution/100*$item$$.frm_step.total_share/$item$$.frm_step.sl_slot))}$cb$$(null,$item$$)})},async()=>{$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSPERIOD"}),fields:["ten_trang_thai","color"]}],function(){$next$$(null,$items$$)})})},onCreating:async($frm$jscomp$1_frm_step_product_user$$,$obj$$,$next$$)=>{var $amount_creator_so_luong_goi_dau_tu$$=
|
|
5
|
+
$obj$$.creator;if(!await global.getModel("asskey").findOne({id_app:$frm$jscomp$1_frm_step_product_user$$.current_id_app,username:$frm$jscomp$1_frm_step_product_user$$.email,address:$amount_creator_so_luong_goi_dau_tu$$}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");if($obj$$.trang_thai==="9")return $next$$(null,$obj$$);if($obj$$.goi_dau_tu&&$obj$$.frm_step_code){$frm$jscomp$1_frm_step_product_user$$=await global.getModel("financialroadmap").findOne({id_app:$frm$jscomp$1_frm_step_product_user$$.current_id_app,
|
|
6
|
+
code:$obj$$.id_product.toString()}).lean();if(!$frm$jscomp$1_frm_step_product_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");$frm$jscomp$1_frm_step_product_user$$=($frm$jscomp$1_frm_step_product_user$$.steps||[]).find($s$$=>$s$$.code===$obj$$.frm_step_code);if(!$frm$jscomp$1_frm_step_product_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");
|
|
7
|
+
if($frm$jscomp$1_frm_step_product_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$jscomp$1_frm_step_product_user$$.trang_thai!="4")return $next$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c");if($obj$$.tong_so_token!=$frm$jscomp$1_frm_step_product_user$$.sl_slot)return $next$$("S\u1ed1 l\u01b0\u1ee3ng token ph\u1ea3i b\u1eb1ng v\u1edbi s\u1ed1 l\u01b0\u1ee3ng c\u1ee7a g\u00f3i \u0111\u1ea7u t\u01b0(step) trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh")}$frm$jscomp$1_frm_step_product_user$$=
|
|
8
|
+
await global.getModel("assproduct").findOne({id_app:$obj$$.id_app,id:$obj$$.id_product});if(!$frm$jscomp$1_frm_step_product_user$$)return $next$$("D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i");$obj$$.co_phan=$frm$jscomp$1_frm_step_product_user$$.co_phan;$obj$$.co_phan&&($obj$$.lai_suat_cam_ket=0,$obj$$.lai_suat_truoc_han=0,$obj$$.ky_han=0,$obj$$.cho_phep_rut_von=!1);$obj$$.ngay_phat_hanh=new Date;if($obj$$.tong_so_token>0&&$obj$$.co_phan&&!$obj$$.goi_dau_tu){$amount_creator_so_luong_goi_dau_tu$$=
|
|
9
|
+
$obj$$.tong_so_token;let $denom$$=$frm$jscomp$1_frm_step_product_user$$.token;try{await global.getModel("assbank").mintCoins($obj$$.id_app,$obj$$.creator,$amount_creator_so_luong_goi_dau_tu$$,$denom$$)}catch($e$$){return $next$$($e$$)}}$amount_creator_so_luong_goi_dau_tu$$=(await model.find({id_app:$obj$$.id_app,id_product:$obj$$.id_product,_id:{$ne:$obj$$._id}}).lean()).map($p$$=>$p$$.tong_so_token).reduce(($a$$,$b$$)=>$a$$+$b$$,0)+$obj$$.tong_so_token;if($frm$jscomp$1_frm_step_product_user$$.co_phan&&
|
|
10
|
+
$frm$jscomp$1_frm_step_product_user$$.so_luong>0&&$amount_creator_so_luong_goi_dau_tu$$>$frm$jscomp$1_frm_step_product_user$$.so_luong&&$obj$$.goi_dau_tu==0)return $next$$("the number of tokens of investment packages must be less than the number of tokens of the project");$next$$(null,$obj$$)},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 c\u00f3 quy\u1ec1n x\u00f3a");
|
|
11
|
+
$fn$$(null,$obj$$)};$contr_router$$.updating=async function($frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$,$data$$,$obj$$,$fn$$){if($frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");$obj$$.id||($data$$.id=$obj$$._id.toString());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");
|
|
12
|
+
if($data$$.trang_thai=="9")return $fn$$(null,$data$$,$obj$$);if($data$$.trang_thai=="5")return $data$$={trang_thai:"5",hoat_dong:!1},$fn$$(null,$data$$,$obj$$);if($obj$$.trang_thai!="9")return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt th\u00f4ng tin cho g\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y");$data$$.ngay_chia_loi_nhuan=$data$$.ngay_chia_loi_nhuan||$obj$$.ngay_chia_loi_nhuan;$data$$.lai_suat_tang_them_so_huu_token==void 0&&($data$$.lai_suat_tang_them_so_huu_token=$obj$$.lai_suat_tang_them_so_huu_token);
|
|
13
|
+
$data$$.token_so_huu==void 0&&($data$$.token_so_huu=$obj$$.token_so_huu);$data$$.so_luong_so_huu==void 0&&($data$$.so_luong_so_huu=$obj$$.so_luong_so_huu);$data$$.tru_lai_da_tra==void 0&&($data$$.tru_lai_da_tra=$obj$$.tru_lai_da_tra);$data$$.laiSuatThoiGianConLai==void 0&&($data$$.laiSuatThoiGianConLai=$obj$$.laiSuatThoiGianConLai);$data$$.goi_dau_tu==void 0&&($data$$.goi_dau_tu=$obj$$.goi_dau_tu);$data$$.frm_step_code==void 0&&($data$$.frm_step_code=$obj$$.frm_step_code);$data$$.tong_so_token==void 0&&
|
|
14
|
+
($data$$.tong_so_token=$obj$$.tong_so_token);$data$$.id_product==void 0&&($data$$.id_product=$obj$$.id_product);if($data$$.goi_dau_tu&&$data$$.frm_step_code){$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$=await global.getModel("financialroadmap").findOne({id_app:$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.current_id_app,code:$data$$.id_product.toString()}).lean();if(!$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$)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");
|
|
15
|
+
$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$=($frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.steps||[]).find($s$$=>$s$$.code===$data$$.frm_step_code);if(!$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$)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$2_frm_step$jscomp$1_product$jscomp$1_user$$.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");
|
|
16
|
+
if($frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.trang_thai!="4")return $fn$$("G\u00f3i \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a c\u00f3 hi\u1ec7u l\u1ef1c");if($data$$.tong_so_token!=$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.sl_slot)return $fn$$("S\u1ed1 l\u01b0\u1ee3ng token ph\u1ea3i b\u1eb1ng v\u1edbi s\u1ed1 l\u01b0\u1ee3ng c\u1ee7a g\u00f3i \u0111\u1ea7u t\u01b0 (step) trong l\u1ed9 tr\u00ecnh t\u00e0i ch\u00ednh")}$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$=
|
|
17
|
+
await global.getModel("assproduct").findOne({id_app:$obj$$.id_app,id:$data$$.id_product});if(!$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$)return $fn$$("D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i");$data$$.co_phan=$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.co_phan;$data$$.co_phan&&($data$$.lai_suat_cam_ket=0,$data$$.lai_suat_truoc_han=0,$data$$.ky_han=0,$data$$.cho_phep_rut_von=!1);$data$$.ngay_phat_hanh=new Date;if($data$$.tong_so_token>0&&$data$$.co_phan&&!$data$$.goi_dau_tu){var $amount$jscomp$1_so_luong_goi_dau_tu$$=
|
|
18
|
+
$data$$.tong_so_token;let $denom$$=$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.token;try{await global.getModel("assbank").mintCoins($obj$$.id_app,$obj$$.creator,$amount$jscomp$1_so_luong_goi_dau_tu$$,$denom$$)}catch($e$$){return $fn$$($e$$)}}$amount$jscomp$1_so_luong_goi_dau_tu$$=(await model.find({id_app:$obj$$.id_app,id_product:$obj$$.id_product,_id:{$ne:$obj$$._id}}).lean()).map($p$$=>$p$$.tong_so_token).reduce(($a$$,$b$$)=>$a$$+$b$$,0)+$obj$$.tong_so_token;if($frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.co_phan&&
|
|
19
|
+
$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.so_luong>0&&$amount$jscomp$1_so_luong_goi_dau_tu$$>$frm$jscomp$2_frm_step$jscomp$1_product$jscomp$1_user$$.so_luong&&$obj$$.goi_dau_tu==0)return $fn$$("the number of tokens of investment packages must be less than the number of tokens of the project");$fn$$(null,$data$$,$obj$$)};$contr_router$$.route()};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const model=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),financialroadmap=global.getModel("financialroadmap"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assproduct",{sort:{date_created:-1},unique:["token"],onFinding:async($user$$,$condition$$,$next$$)=>{if($condition$$.wish&&!$condition$$.id)try{let $query$$={id_app:$user$$.current_id_app,user:$user$$.email};typeof $condition$$.wish=="object"&&($query$$={...$query$$,...$condition$$.wish});let $ps$$=await global.getModel("asswishlist").find($query$$,{ma_du_an:1}).lean();$condition$$.id={$in:$ps$$.map($r$$=>
|
|
3
|
+
$r$$.ma_du_an)}}catch($e$$){Logger.error($e$$)}delete $condition$$.wish;$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2($user$$.current_id_app,"asswishlist",{where:$item$$=>({ma_du_an:$item$$.id,user:$user$$.email}),setFields:($item$$,$ref$$)=>{$item$$.wish=$ref$$}});$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSPRODUCT"}),fields:["ten_trang_thai","color"]}],
|
|
4
|
+
function(){$items$$.filter($item$$=>$item$$.id||$item$$.id==0).joinModel2($user$$.current_id_app,financialroadmap,[{where:$a$$=>({code:$a$$.id}),fields:[{frm_id:"_id"}]}],function(){$next$$(null,$items$$)})})},onCreating:async($user$$,$obj$$,$next$$)=>{let $creator$$=$obj$$.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");
|
|
5
|
+
if($obj$$.trang_thai==="9")return $next$$(null,$obj$$);if(global.configs.FEE_CREATE_ASSPRODUCT&&global.configs.MAIN_DENOM)try{await global.getModel("assbank").sendCoinsFromAccountToSystem($obj$$.id_app,$obj$$.creator,global.configs.FEE_CREATE_ASSPRODUCT,global.configs.MAIN_DENOM)}catch($e$$){return $next$$($e$$)}$next$$(null,$obj$$)},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=
|
|
6
|
+
function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a s\u1ea3n ph\u1ea9m n\u00e0y n\u00e0y");$fn$$(null,$obj$$)};$contr_router$$.updating=async function($user$$,$data$$,$_obj$$,$fn$$){$_obj$$.id||($data$$.id=$_obj$$._id.toString());let $obj$$=$_obj$$.toObject?$_obj$$.toObject():$_obj$$;if($user$$.email!==$obj$$.user_created)return Logger.info("update product",$obj$$.trang_thai,$obj$$.ten_san_pham),$fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt s\u1ea3n ph\u1ea9m n\u00e0y");
|
|
7
|
+
if($data$$.trang_thai=="9"&&$obj$$.trang_thai!="9")return $fn$$("Kh\u00f4ng th\u1ec3 chuy\u1ec3n v\u1ec1 tr\u1ea1ng th\u00e1i ch\u01b0a \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh t\u1eeb tr\u1ea1ng th\u00e1i \u0111\u00e3 \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh");if($data$$.trang_thai=="9")return $fn$$(null,$data$$,$obj$$);if($data$$.co_phan!=void 0&&$data$$.co_phan!=$obj$$.co_phan)return $fn$$("Kh\u00f4ng th\u1ec3 \u0111\u1ed5i ki\u1ec3u d\u1ef1 \u00e1n (c\u1ed5 ph\u1ea7n ho\u1eb7c kh\u00f4ng c\u1ed5 ph\u1ea7n");
|
|
8
|
+
$data$$.trang_thai=$data$$.trang_thai||$obj$$.trang_thai;$data$$.co_phan=$obj$$.co_phan;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");if($data$$.token&&$data$$.token!==$obj$$.token)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda t\u00ean token");if($obj$$.trang_thai=="9"&&global.configs.FEE_CREATE_ASSPRODUCT&&global.configs.MAIN_DENOM)try{await global.getModel("assbank").sendCoinsFromAccountToSystem($obj$$.id_app,
|
|
9
|
+
$obj$$.creator,global.configs.FEE_CREATE_ASSPRODUCT,global.configs.MAIN_DENOM)}catch($e$$){return $fn$$($e$$)}$fn$$(null,$data$$,$_obj$$)};$contr_router$$.route()};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const model=global.getModel("assprofitsharing"),assproduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assprofitsharing",{sort:{hoat_dong:-1,date_created:-1},notNeedRight:!0,onFinding:async($pros_user$$,$condition$$,$next$$)=>{$condition$$.ma_loai&&($pros_user$$=await assproduct.find({id_app:$pros_user$$.current_id_app,ma_loai:$condition$$.ma_loai,status:!0},{id:1}),$condition$$.id_product={$in:$pros_user$$.map($p$$=>$p$$.id)},delete $condition$$.ma_loai);$next$$(null,$condition$$)},onView:async($user$$,
|
|
3
|
+
$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,assproduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai",{product_token:"token"},"gia_tri_hien_tai","sl_nhan_vien","nganh_nghe"]});$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"PROFITSHARING"}),fields:["ten_trang_thai","color"]}],function(){$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>{const $id_app$$=$user$$.current_id_app;if(!await global.getModel("asskey").findOne({id_app:$user$$.current_id_app,
|
|
4
|
+
username:$user$$.email,address:$obj$$.creator}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");if(!await global.getModel("assproduct").findOne({id_app:$id_app$$,id:$obj$$.id_product}).lean())return $next$$("D\u1ef1 \u00e1n kh\u00f4ng t\u1ed3n t\u1ea1i");if($obj$$.ty_le_chia_theo_thoi_gian>100)return $next$$("T\u1ef7 l\u1ec7 chia theo th\u1eddi gian kh\u00f4ng \u0111\u01b0\u1ee3c l\u1edbn h\u01a1n 100%");$next$$(null,$obj$$)},onCreated:async($user$$,
|
|
5
|
+
$obj$$,$next$$)=>{$obj$$.id=$obj$$._id.toString();await model.updateOne({_id:$obj$$._id},{id:$obj$$.id});$next$$(null,$obj$$)}});$contr_router$$.deleting=async function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");if($obj$$.da_chia_loi_nhuan==1)return $fn$$("Kh\u00f4ng th\u1ec3 xo\u00e1 y\u00eau c\u1ea7u n\u00e0y do \u0111\u00e3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n");if(!await global.getModel("asskey").findOne({id_app:$user$$.current_id_app,
|
|
6
|
+
username:$user$$.email,address:$obj$$.creator}).lean())return $fn$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if($obj$$.da_chia_loi_nhuan==1)return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt y\u00eau c\u1ea7u n\u00e0y do \u0111\u00e3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n");
|
|
7
|
+
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");if($obj$$.da_chia_loi_nhuan)return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt y\u00eau c\u1ea7u n\u00e0y do \u0111\u00e3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n");$data$$.ngay_chia_loi_nhuan=$data$$.ngay_chia_loi_nhuan||$obj$$.ngay_chia_loi_nhuan;$data$$.ty_le_chia_theo_thoi_gian=$data$$.ty_le_chia_theo_thoi_gian||$obj$$.ty_le_chia_theo_thoi_gian;
|
|
8
|
+
if($data$$.ty_le_chia_theo_thoi_gian>100)return $fn$$("T\u1ef7 l\u1ec7 chia theo th\u1eddi gian kh\u00f4ng \u0111\u01b0\u1ee3c l\u1edbn h\u01a1n 100%");$fn$$(null,$data$$,$obj$$)};$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("assreceiver"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assreceiver",{sort:{date_created:-1},notNeedRight:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a \u0111\u1ecba ch\u1ec9 n\u00e0y");$fn$$(null,
|
|
3
|
+
$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created)return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt \u0111\u1ecba ch\u1ec9 n\u00e0y");$fn$$(null,$data$$,$obj$$)};$contr_router$$.route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("assrequest"),app=global.getModel("app"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assrequest",{sort:{date_created:-1},notNeedRight:!0,unique:["receiver_address","request_id"],onFinding:async($user$$,$condition$$,$next$$)=>{$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{let $_app$$=await app.findOne({_id:$user$$.current_id_app});$items$$.forEach($item$$=>{$item$$.payment_url=($_app$$.domain||"")+"/#/payment/"+$item$$._id});
|
|
3
|
+
await $items$$.asyncJoinModel2(null,trangthai,{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"ASSREQUEST"}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)},onCreating:($user$$,$data$$,$next$$)=>{$data$$.trang_thai="0";$next$$(null,$data$$)}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(isSupperAdmin($user$$.email.toLowerCase()))return $fn$$(null,$obj$$);if($obj$$.trang_thai!=="0")return $fn$$("Kh\u00f4ng th\u1ec3 x\u00f3a y\u00eau c\u1ea7u n\u00e0y");$fn$$(null,
|
|
4
|
+
$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){if($obj$$.trang_thai!=="0")return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt y\u00eau c\u1ea7u n\u00e0y");$fn$$(null,$data$$,$obj$$)};$contr_router$$.route()};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const model=global.getModel("asssell"),controller=require("../../controllers/controller"),AssProduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),async=require("async"),updateSell=model.updateSell,moment=require("moment"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asssell",{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$$.filter($item$$=>($item$$.id||$item$$.id===0)&&$item$$.trang_thai=="0"),($item$$,$cb$$)=>{setImmediate(async()=>{try{if(await updateSell($item$$),
|
|
3
|
+
$item$$.goi_dau_tu)try{$item$$.market_value=await global.getModel("assinvestment").getInvestmentMarketValue($item$$.id_app,$item$$.token)}catch($e$$){Logger.error($e$$)}}catch($e$$){Logger.error("view asssell",$e$$)}$cb$$(null,$item$$)})},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSSELL",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,
|
|
4
|
+
AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai"]});$next$$(null,$items$$)})},onCreating:async($NeedToBuy_user$$,$Sell$$,$next$$)=>{var $app_creator_invest$$=$Sell$$.creator;if(!await global.getModel("asskey").findOne({id_app:$NeedToBuy_user$$.current_id_app,username:$NeedToBuy_user$$.email,address:$app_creator_invest$$}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");$app_creator_invest$$=await global.getModel("app").findOne({_id:$NeedToBuy_user$$.current_id_app}).lean();
|
|
5
|
+
$Sell$$.fee=$app_creator_invest$$.exchange_fee;$Sell$$.exchange_address=$app_creator_invest$$.wallet_address;$app_creator_invest$$=await global.getModel("assinvestment").findOne({id_app:$NeedToBuy_user$$.current_id_app,token:$Sell$$.token});if(!$app_creator_invest$$)return $next$$("Investment package is not exists");if($app_creator_invest$$.da_dao_han)return $next$$("investment package expired");if($Sell$$.id_need_to_buy!=void 0&&$Sell$$.id_need_to_buy!=null){$NeedToBuy_user$$=await global.getModel("assneedtobuy").findOne({id_app:$NeedToBuy_user$$.current_id_app,
|
|
6
|
+
id:$Sell$$.id_need_to_buy});if(!$NeedToBuy_user$$)return $next$$("The need to buy does not exist");if($NeedToBuy_user$$.trang_thai!=0)return $next$$("The need to buy has been canceled or expired");if($app_creator_invest$$.id_period!=$NeedToBuy_user$$.id_period)return $next$$("Incorrect investment package");if(moment().diff(moment($app_creator_invest$$.ngay_dao_han),"days")>$NeedToBuy_user$$.thoi_gian_con_lai)return $next$$("The remaining maturity is too long");$Sell$$.denom=$NeedToBuy_user$$.denom;
|
|
7
|
+
$Sell$$.gia_ban=$NeedToBuy_user$$.gia_mua;$Sell$$.so_luong=$Sell$$.so_luong?Math.min($Sell$$.so_luong,$NeedToBuy_user$$.so_luong_con_lai):$NeedToBuy_user$$.so_luong_con_lai;$Sell$$.da_ban=$Sell$$.so_luong;$Sell$$.con_lai=0;$Sell$$.trang_thai=8;$Sell$$.ngay_het_han=new Date;try{await global.getModel("assbank").sendCoins($app_creator_invest$$.id_app,$Sell$$.creator,$NeedToBuy_user$$.creator,$Sell$$.so_luong,$Sell$$.token,{...$Sell$$.toObject(),event:"SELL",memo:`Chuy\u1ec3n kho\u1ea3n \u0111\u1ea7u t\u01b0 ${$Sell$$.so_luong}${$Sell$$.token} cho ng\u01b0\u1eddi mua`});
|
|
8
|
+
const $totalMoney$$=$Sell$$.gia_ban*$Sell$$.so_luong;await global.getModel("assbank").sendCoinsFromSystemToAccount($app_creator_invest$$.id_app,$Sell$$.creator,$totalMoney$$,$Sell$$.denom,{...$Sell$$.toObject(),event:"SELL",memo:`Nh\u1eadn ${$totalMoney$$}${$Sell$$.denom} t\u1eeb ng\u01b0\u1eddi b\u00e1n`});let $fee$$=Math.roundBy(($Sell$$.fee||0)*$totalMoney$$/100,0);$fee$$&&!$Sell$$.exchange_address&&await global.getModel("assbank").sendCoins($app_creator_invest$$.id_app,$Sell$$.creator,$Sell$$.exchange_address,
|
|
9
|
+
$fee$$,$Sell$$.denom,{...$Sell$$.toObject(),event:"SELL",memo:"Ph\u00ed giao d\u1ecbch"});$NeedToBuy_user$$.so_luong_da_mua=($NeedToBuy_user$$.so_luong_da_mua||0)+$Sell$$.so_luong;$NeedToBuy_user$$.so_luong_con_lai=$NeedToBuy_user$$.so_luong-$NeedToBuy_user$$.so_luong_da_mua;$NeedToBuy_user$$.so_luong_con_lai==0&&($NeedToBuy_user$$.trang_thai="8");await $NeedToBuy_user$$.save()}catch($e$$){return $next$$($e$$)}}else{if((new Date($Sell$$.ngay_het_han)).getTime()<=(new Date).getTime())return $next$$("Ng\u00e0y h\u1ebft h\u1ea1n ph\u1ea3i l\u1edbn h\u01a1n ng\u00e0y hi\u1ec7n t\u1ea1i");
|
|
10
|
+
try{await global.getModel("assbank").sendCoinsFromAccountToSystem($app_creator_invest$$.id_app,$Sell$$.creator,$Sell$$.so_luong,$Sell$$.token,{...$Sell$$.toObject(),event:"SELL",memo:`Chuy\u1ec3n ${$Sell$$.so_luong}${$Sell$$.token} l\u00ean s\u00e0n`})}catch($e$$){return $next$$($e$$)}$Sell$$.da_ban=0;$Sell$$.con_lai=$Sell$$.so_luong;$Sell$$.trang_thai=0}$next$$(null,$Sell$$)},onCreated:async($user$$,$obj$$,$next$$)=>{$obj$$.id=$obj$$._id.toString();await model.updateOne({_id:$obj$$._id},{id:$obj$$.id});
|
|
11
|
+
$next$$(null,$obj$$)}});$contr_router$$.deleting=async function($user$$,$obj$$,$next$$){if(isSupperAdmin($user$$.email.toLowerCase()))return $next$$(null,$obj$$);if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n hu\u1ef7 l\u1ec7nh n\u00e0y");if($obj$$.trang_thai==0&&$obj$$.con_lai>0){try{await global.getModel("assbank").sendCoinsFromSystemToAccount($obj$$.id_app,$obj$$.creator,$obj$$.con_lai,$obj$$.token,{...$obj$$,event:"SELL-CANCEL",memo:`Hu\u1ef7 l\u1ec7nh b\u00e1n. Nh\u1eadn ${$obj$$.so_luong_con_lai}${$obj$$.token} c\u00f2n l\u1ea1i`})}catch($e$$){return $next$$($e$$)}await model.updateOne({id_app:$obj$$.id_app,
|
|
12
|
+
_id:$obj$$._id},{trang_thai:9});return $next$$("L\u1ec7nh b\u00e1n n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c hu\u1ef7 th\u00e0nh c\u00f4ng")}$next$$("Kh\u00f4ng th\u1ec3 hu\u1ef7 l\u1ec7nh n\u00e0y")};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");if($obj$$.trang_thai==0&&$obj$$.con_lai>0&&$data$$.trang_thai==9){try{await global.getModel("assbank").sendCoinsFromSystemToAccount($obj$$.id_app,
|
|
13
|
+
$obj$$.creator,$obj$$.con_lai,$obj$$.token,{...$obj$$.toObject(),event:"SELL-CANCEL",memo:`Hu\u1ef7 l\u1ec7nh b\u00e1n. Nh\u1eadn ${$obj$$.so_luong_con_lai}${$obj$$.token} c\u00f2n l\u1ea1i`})}catch($e$$){return $next$$($e$$)}$data$$={trang_thai:9};return $next$$(null,$data$$,$obj$$)}$next$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt l\u1ec7nh n\u00e0y")};$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("asstransaction"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asstransaction",{sort:{date_created:-1},onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)}});$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=function($user$$,$data$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 t\u1ea1o")};$contr_router$$.updating=
|
|
3
|
+
function($user$$,$data$$,$obj$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("asstransfer"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asstransfer",{sort:{date_created:-1},notNeedRight:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)}});$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=function($user$$,$data$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 t\u1ea1o")};$contr_router$$.updating=
|
|
3
|
+
function($user$$,$data$$,$obj$$,$fn$$){return $fn$$("Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt")};$contr_router$$.route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("assuser_identity"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"assuser_identity",{sort:{date_created:-1},unique:["so_cmnd"]})).route()};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const model=global.getModel("asswithdraw"),assinvestment=global.getModel("assinvestment"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),moment=require("moment");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asswithdraw",{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:"WITHDRAW"}),fields:["ten_trang_thai","color"]}]);
|
|
3
|
+
await $items$$.asyncJoinModel2($user$$.current_id_app,assinvestment,[{where:$a$$=>({token:$a$$.token}),fields:["ten_san_pham","product_token"]}]);$next$$(null,$items$$)},onCreating:async($id_app_user$$,$Withdraw$$,$next$$)=>{var $creator_investment$$=$Withdraw$$.creator;if(!await global.getModel("asskey").findOne({id_app:$id_app_user$$.current_id_app,username:$id_app_user$$.email,address:$creator_investment$$}).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_investment$$=await global.getModel("assinvestment").findOne({id_app:$id_app_user$$,token:$Withdraw$$.token});if(!$creator_investment$$)return $next$$("Kho\u1ea3n \u0111\u1ea7u t\u01b0 kh\u00f4ng t\u1ed3n t\u1ea1i");$creator_investment$$.da_rut_von=$creator_investment$$.da_rut_von||0;var $con_lai_period$$=$creator_investment$$.so_luong-$creator_investment$$.da_rut_von;if($con_lai_period$$<=0||$creator_investment$$.da_dao_han)return $next$$("Kho\u1ea3n \u0111\u1ea7u t\u01b0 n\u00e0y \u0111\u00e3 \u0111\u00e1o h\u1ea1n ho\u1eb7c \u0111\u00e3 r\u00fat v\u1ed1n");
|
|
5
|
+
if($Withdraw$$.so_luong>$con_lai_period$$)return $next$$("S\u1ed1 l\u01b0\u1ee3ng r\u00fat v\u1ed1n ph\u1ea3i nh\u1ecf h\u01a1n s\u1ed1 l\u01b0\u1ee3ng c\u00f2n l\u1ea1i c\u1ee7a kho\u1ea3n \u0111\u1ea7u t\u01b0");var $laiSuat_product$$=await global.getModel("assproduct").findOne({id_app:$id_app_user$$,id:$creator_investment$$.id_product});$con_lai_period$$=await global.getModel("assperiod").findOne({id_app:$id_app_user$$,id:$creator_investment$$.id_period});if(!$laiSuat_product$$||!$con_lai_period$$)return $next$$("Y\u00eau c\u1ea7u kh\u00f4ng h\u1ee3p l\u1ec7");
|
|
6
|
+
$Withdraw$$.product_owner=$laiSuat_product$$.creator;$Withdraw$$.denom=$creator_investment$$.denom;$Withdraw$$.ngay=new Date;$Withdraw$$.tg_xu_ly_rut_von=$creator_investment$$.tg_xu_ly_rut_von||0;$Withdraw$$.ngay_xu_ly=moment($Withdraw$$.ngay).add($Withdraw$$.tg_xu_ly_rut_von,"days").toDate();$Withdraw$$.trang_thai="0";$Withdraw$$.gia=$creator_investment$$.gia||0;$Withdraw$$.von=$Withdraw$$.so_luong*($creator_investment$$.gia||0);$Withdraw$$.lai_thuong=0;if(!$creator_investment$$.ngay_dao_han||moment($creator_investment$$.ngay_dao_han).diff(moment($Withdraw$$.ngay),
|
|
7
|
+
"days")>0)if($creator_investment$$.cho_phep_rut_von){if($con_lai_period$$.so_ngay_dau_tu_toi_thieu>0&&moment($Withdraw$$.ngay).diff(moment($creator_investment$$.ngay_phat_hanh),"days")<$con_lai_period$$.so_ngay_dau_tu_toi_thieu)return $next$$("Kho\u1ea3n \u0111\u1ea7u t\u01b0 n\u00e0y ch\u01b0a \u0111\u1ea1t s\u1ed1 ng\u00e0y t\u1ed1i thi\u1ec3u \u0111\u1ec3 r\u00fat tr\u01b0\u1edbc h\u1ea1n");$laiSuat_product$$=$creator_investment$$.lai_suat_truoc_han}else return $next$$("Kho\u1ea3n \u0111\u1ea7u t\u01b0 n\u00e0y kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p r\u00fat v\u1ed1n tr\u01b0\u1edbc h\u1ea1n");
|
|
8
|
+
else $laiSuat_product$$=$creator_investment$$.lai_suat_cam_ket;try{await global.getModel("assbank").sendCoinsFromAccountToSystem($id_app_user$$,$Withdraw$$.creator,$Withdraw$$.so_luong,$Withdraw$$.token)}catch($e$$){return $next$$($e$$)}$Withdraw$$.lai_suat_truoc_han=$laiSuat_product$$;$Withdraw$$.so_ngay_tinh_lai=$con_lai_period$$.tru_lai_da_tra&&$creator_investment$$.ngay_tinh_lai_ky_truoc?moment($Withdraw$$.ngay).diff(moment($creator_investment$$.ngay_tinh_lai_ky_truoc),"days"):moment($Withdraw$$.ngay).diff(moment($creator_investment$$.ngay_phat_hanh),
|
|
9
|
+
"days");$Withdraw$$.lai_truoc_han=Math.roundBy($Withdraw$$.von*$Withdraw$$.lai_suat_truoc_han*$Withdraw$$.so_ngay_tinh_lai/36500,0);$creator_investment$$.da_rut_von+=$Withdraw$$.so_luong;$creator_investment$$.da_rut_von>=$creator_investment$$.so_luong&&($creator_investment$$.trang_thai="9");await $creator_investment$$.save();if(!$Withdraw$$.tg_xu_ly_rut_von){try{await global.getModel("assbank").sendCoins($id_app_user$$,$Withdraw$$.product_owner,$Withdraw$$.creator,$Withdraw$$.von,$Withdraw$$.denom,
|
|
10
|
+
{...$Withdraw$$.toObject(),event:"WITHDRAW",memo:"R\u00fat v\u1ed1n"})}catch($e$$){return $next$$("Hi\u1ec7n t\u1ea1i kh\u00f4ng th\u1ec3 r\u00fat v\u1ed1n. B\u1ea1n hay th\u1eed l\u1ea1i sau")}try{$Withdraw$$.lai_truoc_han&&await global.getModel("assbank").sendCoins($id_app_user$$,$Withdraw$$.product_owner,$Withdraw$$.creator,$Withdraw$$.lai_truoc_han,$Withdraw$$.denom,{...$Withdraw$$.toObject(),event:"INTEREST",memo:"L\u00e3i t\u1eeb \u0111\u1ea7u t\u01b0"})}catch($e$$){return await global.getModel("assbank").sendCoins($id_app_user$$,
|
|
11
|
+
$Withdraw$$.creator,$Withdraw$$.product_owner,$Withdraw$$.von,$Withdraw$$.denom,{...$Withdraw$$.toObject(),event:"WITHDRAW",memo:"R\u00fat v\u1ed1n kh\u00f4ng th\u00e0nh c\u00f4ng. X\u1eed l\u00fd l\u1ea1i v\u1ed1n \u0111\u00e3 tr\u1ea3 \u0111\u1ec3 th\u1ef1c hi\u1ec7n sau"}),$next$$("Hi\u1ec7n t\u1ea1i kh\u00f4ng th\u1ec3 r\u00fat v\u1ed1n. B\u1ea1n hay th\u1eed l\u1ea1i sau")}$Withdraw$$.da_rut_von=!0;$Withdraw$$.trang_thai="5"}$next$$(null,$Withdraw$$)},onCreated:async($user$$,$obj$$,$next$$)=>
|
|
12
|
+
{$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,$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,2 @@
|
|
|
1
|
+
const model=global.getModel("bangtinhluong"),dmnv=global.getModel("dmnv"),dmbp=global.getModel("dmbp"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"bangtinhluong",{sort:{nam:-1,thang:-1,ma_nv:1},onView:async($user$$,$items$$,$fn$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,dmnv,[{where:{ma_nv:"ma_nv"},fields:["ten_nv","ttncn_mst"]}],function(){$fn$$(null,$items$$)});await $items$$.asyncJoinModel2($user$$.current_id_app,dmbp,[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}],function(){$fn$$(null,$items$$)});$fn$$(null,$items$$)}})).route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const controller=require("../../controllers/controller"),model=global.getModel("calllog");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"calllog",{notNeedRight:!0,sort:{date_created:-1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.filter($i$$=>$i$$.phone&&$i$$.id_kh).asyncJoinModel2($user$$.current_id_app,"customer",{where:{id_kh:"_id"},fields:"ma_kh ten_kh dia_chi ds_dien_thoai_khac dien_thoai dien_thoai2".split(" ")});await $items$$.filter($i$$=>$i$$.phone&&!$i$$.ten_kh).asyncJoinModel2($user$$.current_id_app,"customer",{where:{phone:"dien_thoai"},fields:"ma_kh ten_kh dia_chi ds_dien_thoai_khac dien_thoai dien_thoai2".split(" ")});
|
|
3
|
+
await $items$$.filter($i$$=>$i$$.phone&&!$i$$.ten_kh).asyncJoinModel2($user$$.current_id_app,"customer",{where:{phone:"dien_thoai2"},fields:"ma_kh ten_kh dia_chi ds_dien_thoai_khac dien_thoai dien_thoai2".split(" ")});await $items$$.filter($i$$=>$i$$.phone&&!$i$$.ten_kh).asyncJoinModel2($user$$.current_id_app,"customer",{where:$item$$=>({ds_dien_thoai_khac:{$regex:$item$$.phone,$options:"i"}}),fields:"ma_kh ten_kh dia_chi ds_dien_thoai_khac dien_thoai dien_thoai2".split(" ")});await $items$$.filter($i$$=>
|
|
4
|
+
$i$$.extend).asyncJoinModel2($user$$.current_id_app,"participant",{where:{extend:"email"},fields:[{name_extend:"name"}]});for(let $item$$ of $items$$)$item$$.cac_chung_tu=await global.getModel("hd2").find({id_app:$item$$.id_app,"exfields.id_log":$item$$._id.toString()}).lean();$next$$(null,$items$$)}})).route()};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),utils=require("../../libs/utils"),ckvt=require("../../libs/ckvt"),async=require("async"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},onFinding:($user$$,
|
|
2
|
+
$condition$$,$next$$,$options$$={})=>{$options$$.req&&$user$$.email==="public"?$condition$$.session_created=($options$$.req.cookies||{}).uid:$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:async($user$$,$result$$,$fn$$)=>{async.series({app:$callback$$=>{$result$$.joinModel2(null,App,{where:{id_app_vt:"_id"},fields:[{name_app_vt:"name"}]},function($kq$$){$callback$$(null,$kq$$)})},user:$callback$$=>{$result$$.joinModel2(null,User,{where:{user:"email"},fields:[{user_name:"name"},
|
|
3
|
+
{partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$$=>{$result$$.joinModel2(null,Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","ten_vt_eng","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai","ma_thue","thue_suat"]},function($kq$$){setImmediate(async()=>{await $result$$.filter($r$$=>$r$$.ma_thue).asyncJoinModel2(null,
|
|
4
|
+
"vat",{where:{ma_thue:"ma_thue",id_app_vt:"id_app"},fields:[{thue_suat:"thue_suat"}]});async.mapLimit($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),5,($item$$,$callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&$ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*
|
|
5
|
+
$ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||1),4))}$callback$$()}else{$ds_kho_online_dvtqd$$=(await global.getModel("dmkho").find({id_app:$item$$.id_app_vt,la_kho_online:!0},{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=
|
|
6
|
+
$item$$.ma_tt3);$condition$$.groupBy=["ma_vt"];$condition$$.ngay=new Date;$condition$$.ma_kho={$in:$ds_kho_online_dvtqd$$};ckvt($condition$$,async function($dvtqd$$,$rs$$){$item$$.ton=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.ma_dvt&&($dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean())&&($item$$.ton=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$$.ton*$dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$$.ton/
|
|
7
|
+
($dvtqd$$.ty_le_qd||1),4));$callback$$()})}})},()=>{$callback$$(null,$kq$$)})})})},giaban:$callback$$=>{async.mapLimit($result$$,5,($item$$,$callback$$)=>{setImmediate(()=>{if($item$$.km_yn_for&&$item$$.km_yn_for.toUpperCase()==="SO1")return $callback$$();let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt,user:$user$$};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.sl_xuat=
|
|
8
|
+
$item$$.sl_xuat;$condition$$.online=!0;getGiaBan($condition$$,async($e$$,$gia$$)=>{$e$$&&Logger.info("error when get gia_ban on cart",$e$$);$item$$.tien_hang_ct_nt=0;$item$$.tien_hang_ct=0;$item$$.tien_ck=0;$item$$.tien_ck_nt=0;$item$$.ty_le_ck=0;$e$$=$item$$.thue_suat||0;$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,$gia$$),$item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le,$item$$.gia_ban_ct=$item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100),$gia$$.sl_ap_dung?
|
|
9
|
+
$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/100*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)):$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*$item$$.sl_xuat),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/
|
|
10
|
+
100*$item$$.sl_xuat),$gia$$.promotion&&$gia$$.promotion.length>0&&await Promise.all($gia$$.promotion.map($p$$=>{($p$$.details_km||[]).forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app_vt}-${$item$$.ma_vt}`});return($p$$.details_km||[]).asyncJoinModel2($item$$.id_app_vt,global.getModel("dmvt"),{where:"ma_vt",fields:"ma_dvt chieu_cao chieu_rong chieu_sau trong_luong tg_tk kg_kiem_tra_ton_kho_tt kg_kiem_tra_ton_kho".split(" ")})}))):($item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le0,$item$$.gia_ban_ct=
|
|
11
|
+
$item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100));$item$$.tien_hang=$item$$.tien_hang_nt=Math.roundBy($item$$.gia_ban*$item$$.sl_xuat);$item$$.tien_hang_ct_nt=$item$$.tien_hang_ct=Math.roundBy($item$$.sl_xuat*$item$$.gia_ban_ct_nt);$item$$.so_tien_max&&($item$$.tien_ck=$item$$.tien_ck_nt=Math.min($item$$.so_tien_max,$item$$.tien_ck_nt));$item$$.tien_thue_nt=$item$$.tien_thue=Math.roundBy(($item$$.tien_hang_ct_nt-$item$$.tien_ck_nt)*$e$$/100);$item$$.tien=$item$$.tien_nt=$item$$.tien_hang_ct_nt-
|
|
12
|
+
($item$$.tien_ck_nt||0)+($item$$.tien_thue_nt||0);delete $item$$.ck_sl_tu2;delete $item$$.exfields;delete $item$$.user_created;delete $item$$.user_updated;$callback$$(null)})})},($e$$,$rs$$)=>{$callback$$(null,$rs$$)})}},$error$$=>{if($error$$)return $fn$$($error$$);try{let $freeshipModel$$=global.getModel("ecompromotion_freeships"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$={$gte:$tu_ngay$$};Promise.all($result$$.filter($i$$=>
|
|
13
|
+
$i$$.id_app_vt).map($item$$=>(async()=>{let $freeship$$=await $freeshipModel$$.find({id_app:$item$$.id_app_vt,hieu_luc_tu:$hieu_luc_tu$$,hieu_luc_den:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.freeship=$freeship$$})())).then(()=>{$fn$$(null,$result$$)}).catch($e$$=>{Logger.error($e$$);$fn$$(null,$result$$)})}catch($e$$){Logger.error($e$$),
|
|
14
|
+
$fn$$(null,$result$$)}})}})).route()};module.exports=cart;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("chamcong"),loaicong=global.getModel("dmloaicong"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"chamcong",{sort:{ngay:-1,ma_nv:1,ma_loai_cong:1},onFind:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async function($user$$,$items$$,$fn$$){await $items$$.asyncJoinModel2($user$$.current_id_app,loaicong,[{where:{ma_loai_cong:"ma_loai_cong"},fields:["ten_loai_cong","color"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,global.getModel("dmnv"),[{where:{ma_nv:"ma_nv"},fields:["ten_nv"]}]);await $items$$.asyncJoinModel2($user$$.current_id_app,
|
|
3
|
+
global.getModel("dmbp"),[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}]);await $items$$.filter($r$$=>$r$$.ma_kh).asyncJoinModel2($user$$.current_id_app,global.getModel("customer"),[{where:{ma_kh:"ma_kh"},fields:["ten_kh"]}]);$fn$$(null,$items$$)}})).route()};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const model=global.getModel("chat_session"),controller=require("../../controllers/controller"),agents=require("../../agents/agents"),chatController=require("../../agents/chatController");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"chat_session",{sort:{date_created:-1},onFinding:($user$$,$condition$$,$next$$)=>{$condition$$.user_id=$user$$.email;$next$$(null,$condition$$)},onView:async function($user$$,$items$$,$fn$$){await Promise.all($items$$.map($item$$=>(async()=>{$item$$.messages=await chatController.getPublicChatHistory($item$$.id_app,$item$$._id.toString(),20)})()));$fn$$(null,$items$$)},onDeleted:async($msgs_user$$,$obj$$,
|
|
3
|
+
$next$$)=>{$msgs_user$$=(await global.getModel("chat_message").find({id_app:$obj$$.id_app,session_id:$obj$$._id.toString()},{_id:1})).map($item$$=>$item$$._id.toString());await global.getModel("chat_message").deleteMany({id_app:$obj$$.id_app,session_id:$obj$$._id.toString()});await global.getModel("filechunk").deleteMany({id_app:$obj$$.id_app,file_id:{$in:$msgs_user$$}});$next$$(null,$obj$$)}});$contr_router$$.createRoute("message",async($req$$,$next$$)=>{try{const $id_app$$=$req$$.user?.current_id_app,
|
|
4
|
+
$user_id$$=$req$$.user?.email,{session_id:$session_id$$,message:$message$$,files:$files$$}=$req$$.body;if(!$id_app$$||!$user_id$$)return $next$$({success:!1,message:"Kh\u00f4ng x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1ee3c danh t\u00ednh (id_app ho\u1eb7c user_id)"});if((!$message$$||$message$$.trim()==="")&&$files$$?.length==0)return $next$$({success:!1,message:"N\u1ed9i dung tin nh\u1eafn kh\u00f4ng \u0111\u01b0\u1ee3c \u0111\u1ec3 tr\u1ed1ng"});let $result$$;$result$$=$req$$.user.appAdmin?await agents.runFinanceAgent($id_app$$,
|
|
5
|
+
$user_id$$,$session_id$$,$message$$,$files$$):await agents.runStaffAgent($id_app$$,$user_id$$,$session_id$$,$message$$,$files$$);return $next$$(null,{success:!0,data:{session_id:$result$$.session_id,answer:$result$$.answer}})}catch($error$$){return console.error("L\u1ed7i API Chat:",$error$$),$next$$({success:!1,message:$error$$.message||"\u0110\u00e3 x\u1ea3y ra l\u1ed7i trong qu\u00e1 tr\u00ecnh x\u1eed l\u00fd AI"})}},{method:"POST"});$contr_router$$.route()};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const model=global.getModel("checkin"),customer=global.getModel("customer"),moment=require("moment"),dmnv=global.getModel("dmnv"),chamcong=global.getModel("chamcong"),User=global.getModel("user"),controller=require("../../controllers/controller"),PostBook=require("../../libs/post-book"),{isSupperAdmin}=require("../../libs/utils");function deg2rad($deg$$){return Math.PI/180*$deg$$}
|
|
2
|
+
function getDistanceFromLatLonInM($a$$,$dLon_lon1$$,$lat2$$,$lon2$$){const $dLat$$=deg2rad($lat2$$-$a$$);$dLon_lon1$$=deg2rad($lon2$$-$dLon_lon1$$);$a$$=Math.sin($dLat$$/2)*Math.sin($dLat$$/2)+Math.cos(deg2rad($a$$))*Math.cos(deg2rad($lat2$$))*Math.sin($dLon_lon1$$/2)*Math.sin($dLon_lon1$$/2);return 2*Math.atan2(Math.sqrt($a$$),Math.sqrt(1-$a$$))*6371E3}
|
|
3
|
+
const postData=async($obj$$,$callback$$)=>{if($obj$$.trang_thai!="1")return $callback$$();if(global.configs?.required_device_id&&!$obj$$.device_id)return $callback$$("C\u1ea7n th\u00f4ng tin ID c\u1ee7a thi\u1ebft b\u1ecb (device_id)");const $nv$$=await global.getModel("dmnv").findOne({id_app:$obj$$.id_app,$or:[{device_user_id:$obj$$.device_user_id},{user:$obj$$.device_user_id}]}).lean();if(!$nv$$)return $callback$$(`Ch\u01b0a khai b\u00e1o th\u00f4ng tin nh\u00e2n vi\u00ean cho '${$obj$$.device_user_id}'.`);
|
|
4
|
+
if(!isSupperAdmin($obj$$.device_user_id)&&global.configs?.check_device_id){if($nv$$.trusted_device_id){if($nv$$.trusted_device_id!=$obj$$.device_id)return $callback$$("Thi\u1ebft b\u1ecb ch\u1ea5m c\u00f4ng kh\u00f4ng h\u1ee3p l\u1ec7. B\u1ea1n c\u1ea7n d\u00f9ng thi\u1ebft b\u1ecb \u0111\u00e3 ch\u1ea5m c\u00f4ng l\u1ea7n tr\u01b0\u1edbc ho\u1eb7c li\u00ean h\u1ec7 v\u1edbi admin \u0111\u1ec3 \u0111\u0103ng k\u00fd thi\u1ebft b\u1ecb m\u1edbi.");$nv$$.trusted_device_id=$obj$$.device_id}if($obj$$.device_id){var $cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$=
|
|
5
|
+
await global.getModel("dmnv").findOne({id_app:$obj$$.id_app,trusted_device_id:$obj$$.device_id},{_id:1}).lean();if($cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$&&$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$._id!==$nv$$._id)return $callback$$("Thi\u1ebft b\u1ecb n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 ch\u1ea5m cho nh\u00e2n vi\u00ean kh\u00e1c. N\u1ebfu b\u1ea1n c\u1ea7n thay \u0111\u1ed5i h\u00e3y li\u00ean h\u1ec7 v\u1edbi admin.")}if($obj$$.location&&
|
|
6
|
+
$obj$$.location.latitude&&$obj$$.location.longitude){if($nv$$.ma_cn){var $candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=await global.getModel("dmchinhanh").findOne({id_app:$obj$$.id_app,ma_cn:$nv$$.ma_cn,status:!0}).lean();if(!$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$)return $callback$$("Chi nh\u00e1nh l\u00e0m vi\u1ec7c kh\u00f4ng t\u1ed3n t\u1ea1i");if(!$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.location||
|
|
7
|
+
!$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.location.latitude||!$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.location.longitude)return $callback$$(`Ch\u01b0a khai b\u00e1o v\u1ecb tr\u00ed c\u1ee7a chi nh\u00e1nh ${$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.ten_cn}`);$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$=getDistanceFromLatLonInM($obj$$.location.latitude,$obj$$.location.longitude,
|
|
8
|
+
$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.location.latitude,$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.location.longitude);$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.location.allowed_radius||50;if($cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$>$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$&&
|
|
9
|
+
!$obj$$.ma_kh)return Logger.warn(`[CheckIn Fail] Distance: ${$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$}m. User: ${$obj$$.device_user_id}`),$callback$$(`V\u1ecb tr\u00ed ch\u1ea5m c\u00f4ng kh\u00f4ng h\u1ee3p l\u1ec7. B\u1ea1n \u0111ang c\u00e1ch c\u00f4ng ty ${Math.round($cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$)}m (Cho ph\u00e9p: ${$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$}m).`)}}else if(global.configs?.required_device_id)return $callback$$("Kh\u00f4ng x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1ee3c v\u1ecb tr\u00ed c\u1ee7a b\u1ea1n.")}$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$=
|
|
10
|
+
await model.find({id_app:$obj$$.id_app,device_user_id:$obj$$.device_user_id,record_time:{$gte:moment($obj$$.record_time).startOf("date").toDate(),$lte:moment($obj$$.record_time).endOf("date").toDate()}}).inTxn().sort({record_time:1}).lean();let $gio_vao$$,$gio_ra$$,$ma_loai_cong$$;$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$.length>0&&($gio_vao$$=$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$[0].record_time);$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$.length>
|
|
11
|
+
1&&($gio_ra$$=$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$[$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$.length-1].record_time);$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$=$gio_vao$$&&$gio_ra$$?moment($gio_ra$$).diff(moment($gio_vao$$),"hours"):0;if($gio_vao$$){$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=moment($obj$$.record_time).day().toString();$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=
|
|
12
|
+
{id_app:$obj$$.id_app,status:!0,$and:[{$or:[{nhung_ngay_trong_tuan:{$exists:!1}},{nhung_ngay_trong_tuan:$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$}]},{$or:[{tong_gio_lam_den:{$gte:$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$}},{tong_gio_lam_den:0}]},{$or:[{tong_gio_lam_tu:{$lte:$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$}},{tong_gio_lam_tu:0}]}]};$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=
|
|
13
|
+
await global.getModel("dmloaicong").find($candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$).sort({tong_gio_lam_tu:-1,ngay_cong:-1}).lean();const $getMinutesFromMidnight$$=$dateStr_m$$=>{if(!$dateStr_m$$)return null;$dateStr_m$$=moment($dateStr_m$$);return $dateStr_m$$.hours()*60+$dateStr_m$$.minutes()},$input_vao_mins$$=$getMinutesFromMidnight$$($gio_vao$$),$input_ra_mins$$=$getMinutesFromMidnight$$($gio_ra$$||$gio_vao$$);if($candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=
|
|
14
|
+
$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.find($lc$$=>$lc$$.gio_vao_toi_thieu&&$getMinutesFromMidnight$$($lc$$.gio_vao_toi_thieu)<$input_vao_mins$$||$lc$$.gio_ra_toi_thieu&&$getMinutesFromMidnight$$($lc$$.gio_ra_toi_thieu)>$input_ra_mins$$?!1:!0))$ma_loai_cong$$=$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$.ma_loai_cong}$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=$nv$$.ma_bp;$nv$$.bo_phan&&
|
|
15
|
+
$nv$$.bo_phan.length>0&&($candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$=$nv$$.bo_phan[0].ma_bp);let $data$$=$obj$$.toObject?$obj$$.toObject():{...$obj$$};$data$$.id_checkin=$obj$$.device_user_id;$data$$.ngay=$obj$$.record_time;$data$$.ma_loai_cong=$ma_loai_cong$$||"UNKNOW";$data$$.ma_nv=$nv$$.ma_nv;$data$$.ma_bp=$candidates_chiNhanh_loaicong_ma_bp_max_radius_ngay_trong_tuan_query_loai_cong$$;delete $data$$._id;delete $data$$.trang_thai;$data$$.gio_vao=$gio_vao$$;
|
|
16
|
+
$data$$.gio_ra=$gio_ra$$;$data$$.tong_gio_lam=$cac_lan_cham_cong_trong_ngay_distance_nv_device_id_tong_gio_lam$$;await chamcong.deleteMany({id_app:$obj$$.id_app,id_checkin:$obj$$.device_user_id,ngay:{$gte:moment($obj$$.record_time).startOf("date").toDate(),$lte:moment($obj$$.record_time).endOf("date").toDate()}});(new PostBook($obj$$,[$data$$],chamcong)).run(async($e$$,$rs$$)=>{if(!$e$$){let $nvDataUpdate$$={trusted_device_id:$obj$$.device_id};!$nv$$.picture&&$obj$$.hinh&&($nvDataUpdate$$.picture=
|
|
17
|
+
$obj$$.hinh);await global.getModel("dmnv").updateOne({_id:$nv$$._id},$nvDataUpdate$$)}$callback$$($e$$,$rs$$)})};
|
|
18
|
+
module.exports=function($router$$){(new controller($router$$,model,"checkin",{notNeedRight:!0,sort:{record_time:-1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.filter($item$$=>$item$$.trang_thai==="1").asyncJoinModel2($user$$.current_id_app,dmnv,{where:$item$$=>({$or:[{device_user_id:$item$$.device_user_id},{user:$item$$.device_user_id}]}),fields:["ma_nv","ten_nv","picture"]});await $items$$.filter($item$$=>$item$$.trang_thai==="2"||$item$$.trang_thai==="3").asyncJoinModel2($user$$.current_id_app,
|
|
19
|
+
customer,{where:$item$$=>({$or:[{device_user_id:$item$$.device_user_id},{of_user:$item$$.device_user_id}]}),fields:["ma_kh","ten_kh","picture"]});await $items$$.filter($item$$=>$item$$.trang_thai==="3"&&$item$$.device_user_id2).asyncJoinModel2($user$$.current_id_app,dmnv,{where:{device_user_id2:"device_user_id"},fields:["ma_nv","ten_nv",{picture_nv:"picture"}]});await $items$$.filter($item$$=>!$item$$.picture).asyncJoinModel2(null,User,{where:{of_user:"email"},fields:["picture"]});await $items$$.filter($item$$=>
|
|
20
|
+
!$item$$.picture).asyncJoinModel2(null,User,{where:{user:"email"},fields:["picture"]});await $items$$.filter($item$$=>$item$$.ma_kh).asyncJoinModel2($user$$.current_id_app,"customer",{where:"ma_kh",fields:["ten_kh"]});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{global.configs?.required_device_id&&$obj$$.location&&(isSupperAdmin($user$$.email)?$obj$$.record_time=$obj$$.record_time||new Date:$obj$$.record_time=new Date);await chamcong.deleteMany({id_app:$obj$$.id_app,id_checkin:$obj$$.device_user_id||
|
|
21
|
+
$user$$.email,ngay:{$gte:moment($obj$$.record_time).startOf("date").toDate(),$lte:moment($obj$$.record_time).endOf("date").toDate()}});$next$$(null,$obj$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.device_user_id=$obj$$.device_user_id;isSupperAdmin($user$$.email)||delete $data$$.record_time;await chamcong.deleteMany({id_app:$obj$$.id_app,id_checkin:$obj$$.device_user_id,ngay:{$gte:moment($obj$$.record_time).startOf("date").toDate(),$lte:moment($obj$$.record_time).endOf("date").toDate()}});
|
|
22
|
+
$next$$(null,$data$$,$obj$$)},onDeleting:async($user$$,$obj$$,$next$$)=>{await chamcong.deleteMany({id_app:$obj$$.id_app,id_checkin:$obj$$.device_user_id,ngay:{$gte:moment($obj$$.record_time).startOf("date").toDate(),$lte:moment($obj$$.record_time).endOf("date").toDate()}});$next$$(null,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{postData($obj$$,async $e$$=>{if($e$$)return Logger.info("l\u1ed7i l\u00fd checkin..."),await model.deleteOne({_id:$obj$$._id}),$next$$($e$$);$next$$(null,$obj$$)})},
|
|
23
|
+
onDeleted:async($obj_post_query_checkin_user$$,$obj$$,$next$$)=>{$obj_post_query_checkin_user$$={id_app:$obj$$.id_app,device_user_id:$obj$$.device_user_id,record_time:{$gte:moment($obj$$.record_time).startOf("date").toDate(),$lte:moment($obj$$.record_time).endOf("date").toDate()}};($obj_post_query_checkin_user$$=await model.findOne($obj_post_query_checkin_user$$).lean())?postData($obj_post_query_checkin_user$$,$e$$=>{if($e$$)return $next$$($e$$);$next$$(null,$obj$$)}):$next$$(null,$obj$$)},onCreated:async($user$$,
|
|
24
|
+
$obj$$,$next$$)=>{postData($obj$$,async $e$$=>{if($e$$)return await model.deleteOne({_id:$obj$$._id}),$next$$($e$$);$next$$(null,$obj$$)})}})).route()};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const model=global.getModel("checkinactivity"),keyresult=global.getModel("keyresult"),socai=global.getModel("socai"),task=global.getModel("task"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{round}=require("../../libs/utils"),Numeral=require("numeral"),moment=require("moment"),checkinactivity=function($router$$){(new controller($router$$,model,"checkinactivity",{sort:{date:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,
|
|
2
|
+
trangthai,{where:$item$$=>({ma_ct:"CHECKINACTIVITY",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,keyresult,{where:$item$$=>({_id:$item$$.id_link}),fields:["target_value","current_value","measure_as","update_interval","aim"]});$items$$.forEach($item$$=>{$item$$.measure_title=["s\u1ed1 l\u01b0\u1ee3ng","VND","%"][$item$$.measure_as-1];$item$$.interval_title=["ng\u00e0y","tu\u1ea7n","th\u00e1ng","qu\u00fd"][$item$$.update_interval-
|
|
3
|
+
1];$item$$.target_title=`${Numeral($item$$.target_value).format()} ${$item$$.measure_title}/${$item$$.interval_title}`;let $target_remain$$=Math.abs($item$$.current_value-$item$$.target_value);if($target_remain$$)switch($item$$.aim){case 1:$item$$.percent=$item$$.score<$item$$.current_value||!$item$$.score?0:round(($item$$.score-$item$$.current_value)/$target_remain$$,2)*100;break;case 2:$item$$.percent=$item$$.score>$item$$.current_value||!$item$$.score?0:round((-$item$$.score+$item$$.current_value)/
|
|
4
|
+
$target_remain$$,2)*100;break;case 3:$item$$.score<$item$$.current_value||!$item$$.score?$item$$.percent=0:($item$$.percent=round($item$$.score-$item$$.current_value/$item$$.target_value,2)*100,$item$$.percent>100&&($item$$.percent=100-($item$$.percent-100)))}else $item$$.percent=0});$next$$(null,$items$$)},onUpdating:async($key$jscomp$10_user$$,$data$$,$obj$$,$next$$)=>{$key$jscomp$10_user$$=await keyresult.findOne({id_app:$obj$$.id_app,_id:$obj$$.id_link}).lean();if(!$key$jscomp$10_user$$)return Logger.error("Not found keyresult"),
|
|
5
|
+
$next$$(null,$data$$,$obj$$);switch($key$jscomp$10_user$$.update_source){case "1":return Logger.info("checkin by input data"),$next$$(null,$data$$,$obj$$);case "2":Logger.info("checkin by socai");if($key$jscomp$10_user$$.tk_no||$key$jscomp$10_user$$.tk_co){var $condition_tu_ngay$$={id_app:$obj$$.id_app,tk_no:$key$jscomp$10_user$$.tk_no,giam_tru_no:$key$jscomp$10_user$$.giam_tru_no,tk_co:$key$jscomp$10_user$$.tk_co,giam_tru_co:$key$jscomp$10_user$$.giam_tru_co,tu_ngay:moment($obj$$.from_date).startOf("date").toDate(),
|
|
6
|
+
den_ngay:$obj$$.date};try{$data$$.score=(await socai.getArise($condition_tu_ngay$$,{tien_nt:1})).map($r$$=>$r$$.tien_nt).reduce(($a$$,$b$$)=>$a$$+$b$$,0)}catch($e$$){Logger.error($e$$)}}return $next$$(null,$data$$,$obj$$);case "7":Logger.info("checkin by task points");try{$condition_tu_ngay$$=moment(new Date($obj$$.from_date)).startOf("date").toDate();const $den_ngay$$=moment(new Date($obj$$.date)).endOf("date").toDate();let $tasks$$=await task.find({progress:3,id_app:$key$jscomp$10_user$$.id_app,
|
|
7
|
+
id_link:$key$jscomp$10_user$$._id.toString(),start_date:{$gte:$condition_tu_ngay$$,$lte:$den_ngay$$},due_date:{$lte:$den_ngay$$}}).lean();await $tasks$$.filter($item$$=>$item$$.ma_loai_cv).asyncJoinModel2($obj$$.id_app,global.getModel("dmloaitask"),{where:"ma_loai_cv",fields:["he_so"]});$tasks$$.forEach($r$$=>{$r$$.diem=($r$$.diem_du_tinh||0)*($r$$.he_so||1)*($r$$.percent||100)/100});$data$$.score=$tasks$$.map($t$$=>$t$$.diem).reduce(($a$$,$b$$)=>$a$$+$b$$,0)}catch($e$$){Logger.error($e$$)}return $next$$(null,
|
|
8
|
+
$data$$,$obj$$);default:return Logger.info("Not have source"),$next$$(null,$data$$,$obj$$)}}})).route()};module.exports=checkinactivity;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("checkinkpi"),strategickpi=global.getModel("strategickpi"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{round}=require("../../libs/utils"),checkinkpi=function($router$$){(new controller($router$$,model,"checkinkpi",{sort:{month:1,year:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,trangthai,{where:$item$$=>({ma_ct:"checkinkpi",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});
|
|
2
|
+
await $items$$.asyncJoinModel2($user$$.current_id_app,strategickpi,{where:$item$$=>({_id:$item$$.id_link}),fields:["measure_as","aim"]});$items$$.forEach($item$$=>{$item$$.measure_title=["s\u1ed1 l\u01b0\u1ee3ng","VND","%"][$item$$.measure_as-1];let $target_remain$$=Math.abs($item$$.target_value-$item$$.current_value);if($target_remain$$)switch($item$$.aim){case 1:$item$$.percent=$item$$.score<$item$$.current_value||!$item$$.score?0:round(($item$$.score-$item$$.current_value)/$target_remain$$,2)*
|
|
3
|
+
100;break;case 2:$item$$.percent=$item$$.score>$item$$.current_value||!$item$$.score?0:round((-$item$$.score+$item$$.current_value)/$target_remain$$,2)*100;break;case 3:$item$$.score<$item$$.current_value||!$item$$.score?$item$$.percent=0:($item$$.percent=round($item$$.score-$item$$.current_value/$item$$.target_value,2)*100,$item$$.percent>100&&($item$$.percent=100-($item$$.percent-100)))}else $item$$.percent=0});$next$$(null,$items$$)}})).route()};module.exports=checkinkpi;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("checkinlocation"),controller=require("../../controllers/controller"),checkinlocation=function($router$$){(new controller($router$$,model,"checkinlocation",{sort:{date_created:-1},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)}})).route()};module.exports=checkinlocation;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("chitietluongds"),controller=require("../../controllers/controller"),chitietluongds=function($router$$){(new controller($router$$,model,"chitietluongds",{sort:{ngay_ct:1,so_ct:1},onFinding:async($cs$jscomp$1_q$$,$condition$$,$next$$)=>{if(!$condition$$.ma_kh&&($condition$$.nh_kh||$condition$$.nh_kh2||$condition$$.nh_kh3)){var $cs_q$$={id_app:$cs$jscomp$1_q$$.current_id_app};$condition$$.nh_kh&&($cs_q$$.nh_kh=$condition$$.nh_kh);$condition$$.nh_kh2&&($cs_q$$.nh_kh2=$condition$$.nh_kh2);
|
|
2
|
+
$condition$$.nh_kh3&&($cs_q$$.nh_kh3=$condition$$.nh_kh3);$cs_q$$=(await global.getModel("customer").find($cs_q$$,{ma_kh:1}).lean()).map($c$$=>$c$$.ma_kh);$condition$$.ma_kh={$in:$cs_q$$};delete $condition$$.nh_kh;delete $condition$$.nh_kh2;delete $condition$$.nh_kh3}!$condition$$.ma_vt&&($condition$$.ma_nvt||$condition$$.ma_nvt2||$condition$$.ma_nvt3)&&($cs$jscomp$1_q$$={id_app:$cs$jscomp$1_q$$.current_id_app},$condition$$.ma_nvt&&($cs$jscomp$1_q$$.ma_nvt=$condition$$.ma_nvt),$condition$$.ma_nvt2&&
|
|
3
|
+
($cs$jscomp$1_q$$.ma_nvt2=$condition$$.ma_nvt2),$condition$$.ma_nvt3&&($cs$jscomp$1_q$$.ma_nvt3=$condition$$.ma_nvt3),$cs$jscomp$1_q$$=(await global.getModel("dmvt").find($cs$jscomp$1_q$$,{ma_vt:1}).lean()).map($c$$=>$c$$.ma_vt),$condition$$.ma_vt={$in:$cs$jscomp$1_q$$},delete $condition$$.ma_nvt,delete $condition$$.ma_nvt2,delete $condition$$.ma_nvt3);$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,"customer",{where:"ma_kh",
|
|
4
|
+
fields:["ten_kh","nh_kh","nh_kh2","nh_kh3"]});await $items$$.asyncJoinModel2($user$$.current_id_app,"dmvt",{where:"ma_vt",fields:["ten_vt","ma_nvt","ma_nvt2","ma_nvt3"]});await $items$$.asyncJoinModel2($user$$.current_id_app,"csluongtheods",{where:{id_cs_luong:"_id"},fields:[{ten_cs_luong:"ten_cs"},"cv_kho"]});$next$$(null,$items$$)}})).route()};module.exports=chitietluongds;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var model=global.getModel("chitieukpi");const async=require("async"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"chitieukpi",{sort:{stt:1},unique:["id_rptform","ma_kpi"],onView:function($user$$,$items$$,$next$$){async.series({dp:function($callback$$){$items$$.joinModel2($user$$.current_id_app,model,[{where:{nh_kpi:"ma_kpi"},fields:[{ten_kpi_me:"ten_kpi"}]}],function(){$callback$$(null,$items$$)})}},()=>{$next$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("chudethaoluan"),controller=require("../../controllers/controller"),chudethaoluan=function($router$$){(new controller($router$$,model,"chudethaoluan",{sort:{date_created:1}})).route()};module.exports=chudethaoluan;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("ckgtluong"),controller=require("../../controllers/controller"),ckgtluong=function($router$$){(new controller($router$$,model,"ckgtluong",{sort:{ten_giam_tru:1},unique:["ma_giam_tru"]})).route()};module.exports=ckgtluong;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const model=global.getModel("comment"),Follow=global.getModel("follow"),User=global.getModel("user"),controller=require("../../controllers/controller"),underscore=require("underscore"),{onAfterCommit}=require("../../libs/sessionContext");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"comment",{notNeedRight:!0,sort:{date_created:-1},users_receive_notification_default:[async $msg$$=>{let $sender_name$$=(await User.findOne({email:$msg$$.user_created},{name:1})||{}).name||$msg$$.user_created,$body$$=$msg$$.content,$title$$=`\u00dd ki\u1ebfn t\u1eeb @${$sender_name$$}`,$users$$=[...($msg$$.attends||[])];if($msg$$.colection_name_product&&$msg$$.id_product&&global.mongoose.Types.ObjectId.isValid($msg$$.id_product)){let $p$$=
|
|
3
|
+
await global.getModel($msg$$.colection_name_product).findOne({_id:$msg$$.id_product}).lean();if($p$$){let $ten_sp$$=$p$$.ten_vt||$p$$.ten_nd||$p$$.ten_kh||$p$$.name||$p$$.title;$msg$$.id_reply&&($title$$=`Ph\u1ea3n h\u1ed3i t\u1eeb @${$sender_name$$}`);$ten_sp$$&&($title$$=`${$title$$} v\u1ec1 '${$ten_sp$$}'`);$p$$.user_created&&$users$$.push($p$$.user_created);$p$$.phu_trach&&$users$$.push($p$$.phu_trach);$p$$.attends&&($users$$=$users$$.concat($p$$.attends))}}return{users:$users$$,title:$title$$,
|
|
4
|
+
body:$body$$,send_phu_trach:!0,send_attends:!0}}],onView:async($user$$,$items$$,$next$$)=>{for(let $item$$ of $items$$)$item$$.replies_count=await model.countDocuments({id_app:$item$$.id_app,id_reply:$item$$._id.toString()});$next$$(null,$items$$)},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)}});$contr_router$$.creating=($user$$,$obj$$,$fn$$)=>{$fn$$(null,$obj$$)};$contr_router$$.deleting=($user$$,$obj$$,$fn$$)=>{$user$$.email==$obj$$.user_created||$user$$.current_app_info.appAdmin?
|
|
5
|
+
$fn$$(null,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a n\u1ed9i dung n\u00e0y")};$contr_router$$.updating=($user$$,$data$$,$obj$$,$fn$$)=>{const $adminUsers$$=configs.admins;$user$$.email==$obj$$.user_created||underscore.contains($adminUsers$$,$user$$.email)?$fn$$(null,$data$$,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt n\u1ed9i dung n\u00e0y")};$contr_router$$.created=async($user$$,$obj_created$$,$fn$$)=>{onAfterCommit(()=>{if($obj_created$$.is_reply){var $obj$$={};underscore.extend($obj$$,
|
|
6
|
+
$obj_created$$);/<[a-z][\s\S]*>/i.test($obj$$.content)||($obj$$.content=$obj$$.content.replace(/\n/g,"<br/>"));var $query_r$$={$or:[{_id:$obj$$.id_topic}],_id:{$ne:$obj$$._id}};$obj$$.id_topic&&($query_r$$.$or.push({id_topic:$obj$$.id_topic}),$obj$$.url_topic="#!/comment/view/"+$obj$$.id_topic);$obj$$.url_topic||($obj$$.url_topic="");model.find($query_r$$,{user_created:1}).lean().then(async $emails$$=>{$emails$$=$emails$$.map($item$$=>$item$$.user_created);var $es$$=$obj$$.content.match(/(@[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
|
|
7
|
+
$es$$&&$es$$.forEach($e$$=>{$emails$$.push($e$$.substring(1))});$obj$$.attends&&$obj$$.attends.forEach($ind$$=>{$emails$$.push($ind$$)});if($obj_created$$.id_reply)try{(await model.getRelativeComments($obj_created$$.id_reply)).forEach($_comment$$=>{$emails$$.push($_comment$$.user_created)})}catch($e$$){Logger.info("error alert replay comment",$e$$.message)}$obj_created$$.user_created_obj&&$emails$$.push($obj$$.user_created_obj);if($obj_created$$.id_product)try{let $_follows$$=await Follow.asyncFind({id_object:$obj_created$$.id_product});
|
|
8
|
+
$emails$$=$emails$$.concat($_follows$$.map($f$$=>$f$$.user_created))}catch($e$$){Logger.info($e$$)}$emails$$=underscore.uniq($emails$$);let $msg$$={_id:$obj_created$$._id,code:"comment",action:"NEW"};$msg$$.title=`Comment '${$obj$$.title||$obj$$.ten_vt}'`;$msg$$.body=$obj$$.content;$msg$$.id_product=$obj_created$$.id_product;$msg$$.colection_name_product=$obj_created$$.colection_name_product;$emails$$.forEach($email$$=>{User.emitEvent($email$$,"comment:new",$msg$$,!0,null);$email$$!==$obj$$.user_created&&
|
|
9
|
+
global.createNotification($obj$$.user_updated||"SYSTEM",$email$$,$msg$$.title,$msg$$.body,$e$$=>{$e$$&&Logger.info($e$$)},$msg$$,!1,null)})}).catch($e$$=>{Logger.error($e$$)})}});$fn$$(null,$obj_created$$)};$contr_router$$.on("deleted",async $obj$$=>{await model.deleteMany({id_topic:$obj$$._id}).catch(console.error)});$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("congdoansx"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"congdoansx",{sort:{stt:1},unique:["ma_cong_doan"],onView:function($user$$,$items$$,$next$$){async.series({pt:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,$items$$)})},ph:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,
|
|
3
|
+
$items$$)})}},()=>{$next$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const model=global.getModel("congtacvien"),Participant=global.getModel("participant"),Usergroup=global.getModel("usergroup"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"congtacvien",{sort:{date_created:1},unique:["username"],onView:($user$$,$items$$,$next$$)=>{async.series({trangthai:function($callback$$){$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"CONGTACVIEN"}),fields:["ten_trang_thai","color"]}],function(){$callback$$()})}},$e$$=>{if($e$$)return $next$$($e$$);$next$$(null,$items$$)})},onCreating:async($user$$,$data$$,$next$$)=>$data$$.so_cmnd?await model.findOne({so_cmnd:$data$$.so_cmnd})?
|
|
3
|
+
$next$$(`S\u1ed1 CMND/c\u0103n c\u01b0\u1edbc '${$data$$.so_cmnd}' \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng`):$next$$(null,$data$$):$next$$(null,$data$$),onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.so_cmnd&&$data$$.so_cmnd!=$obj$$.so_cmnd){if(await model.findOne({so_cmnd:$data$$.so_cmnd}))return $next$$(`S\u1ed1 CMND/c\u0103n c\u01b0\u1edbc '${$data$$.so_cmnd}' \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng`)}else return $next$$(null,$data$$,$obj$$)},onUpdated:async($group_partner_user$$,
|
|
4
|
+
$obj$$,$next$$)=>{$group_partner_user$$=await Usergroup.findOne({id_app:$obj$$.id_app,is_partner_group:!0});let $group_customer$$=await Usergroup.findOne({id_app:$obj$$.id_app,is_customer_group:!0})||{_id:""};$group_partner_user$$?$obj$$.trang_thai==="7"?Participant.findOneAndUpdate({id_app:$obj$$.id_app,email:$obj$$.user_created},{group_id:$group_partner_user$$._id.toString()},()=>{$next$$(null,$obj$$)}):Participant.findOneAndUpdate({id_app:$obj$$.id_app,email:$obj$$.user_created},{group_id:$group_customer$$._id.toString()},
|
|
5
|
+
()=>{$next$$(null,$obj$$)}):$next$$(null,$obj$$)}})).route()};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const model=global.getModel("consultant"),group=global.getModel("group"),controller=require("../../controllers/controller"),async=require("async"),consultant=function($router$$){(new controller($router$$,model,"consultant",{sort:{stt:1},unique:["consultant_code"],onView:($user$$,$items$$,$next$$)=>{async.series({group:$callback$$=>{$items$$.joinModel2(null,group,[{where:{consultant_group:"_id"},fields:["group_name","group_name_en","color"]}],function(){$callback$$()})}},()=>{$next$$(null,$items$$)})}})).route()};
|
|
2
|
+
module.exports=consultant;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const model=global.getModel("contract"),controller=require("../../controllers/controller"),customer=global.getModel("customer"),User=global.getModel("user"),Trangthai=global.getModel("trangthai"),link=global.getModel("link"),async=require("async"),{onAfterCommit}=require("../../libs/sessionContext");
|
|
2
|
+
module.exports=function($router$$){const $createLink$$=function($user$$,$obj$$,$next$$){$obj$$.id_kh&&link.find({$or:[{id_a:$obj$$._id.toString(),id_b:$obj$$.id_kh},{id_a:$obj$$.id_kh,id_b:$obj$$._id.toString()}]}).lean().then(function($rs$$){$rs$$&&$rs$$.length!==0||(new link({id_app:$obj$$.id_app,id_a:$obj$$.id_kh,id_b:$obj$$._id.toString(),collection_a:"dmkh",collection_b:"contract"})).save(function($e$$){$e$$&&Logger.error($e$$)})}).catch($e$$=>{Logger.error($e$$)});$next$$&&$next$$(null,$obj$$)},
|
|
3
|
+
$createLinkAndCode$$=function($user$$,$obj$$,$next$$){$createLink$$($user$$,$obj$$);$obj$$.so_hd?$next$$(null,$obj$$):model.findByIdAndUpdate($obj$$._id,{$set:{so_hd:$obj$$._id.toString().toUpperCase()}},function($error$$,$kh$$){return $error$$?$next$$($error$$):$kh$$?($kh$$.so_hd=$obj$$._id.toString().toUpperCase(),$next$$(null,$kh$$)):$next$$(Error("H\u1ee3p \u0111\u1ed3ng kh\u00f4ng t\u1ed3n t\u1ea1i"))})};(new controller($router$$,model,"contract",{sort:{user_created:-1},unique:["so_hd"],onFinding:function($user$$,
|
|
4
|
+
$condition$$,$next$$){async.series({find_ten_kh:function($callback$$){$condition$$.ten_kh?customer.find({id_app:$user$$.current_id_app,ten_kh:{$regex:$condition$$.ten_kh,$options:"i"}},{_id:1}).lean().then(function($khs$$){delete $condition$$.ten_kh;let $id_khs$$=[];$khs$$.forEach(function($kh$$){$id_khs$$.push($kh$$._id.toString())});$condition$$.id_kh={$in:$id_khs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)}):$callback$$()}},function($e$$){if($e$$)return $next$$($e$$);$next$$(null,$condition$$)})},
|
|
5
|
+
onView:async function($user$$,$items$$,$next$$){await $items$$.asyncJoinModel2($user$$.current_id_app,customer,[{where:{id_kh:"_id"},fields:[{name:"ten_kh",value:"ten_kh"},{name:"ma_kh",value:"ma_kh"}]}]);await $items$$.asyncJoinModel2(null,User,[{where:{phu_trach:"email"},fields:[{name:"ten_phu_trach",value:"name"}]}]);await $items$$.asyncJoinModel2(null,Trangthai,[{where:$item$$=>$item$$.progress===void 0?{}:{ma_trang_thai:$item$$.progress.toString(),ma_ct:"CONTRACT"},fields:["ten_trang_thai","color"]}]);
|
|
6
|
+
$items$$.forEach($item$$=>{$item$$.ten_loai_hd=["H\u1ee3p \u0111\u1ed3ng mua","H\u1ee3p \u0111\u1ed3ng b\u00e1n"][$item$$.loai_hd-1]});$next$$(null,$items$$)},onCreating:function($user$$,$item$$,$next$$,$extra$$){$item$$.phu_trach||($item$$.phu_trach=$user$$.email);if($item$$.id_kh)$next$$(null,$item$$);else if($extra$$.data&&$extra$$.data.ma_kh)customer.findOne({ma_kh:$extra$$.data.ma_kh}).lean().then(function($c$$){if($c$$)$item$$.id_kh=$c$$._id;else return $next$$("M\u00e3 kh\u00e1ch h\u00e0ng '"+
|
|
7
|
+
$extra$$.data.ma_kh+"' kh\u00f4ng t\u1ed3n t\u1ea1i");$next$$(null,$item$$)}).catch($e$$=>{$next$$($e$$)});else return $next$$("H\u1ee3p \u0111\u1ed3ng y\u00eau c\u1ea7u m\u1ed9t kh\u00e1ch h\u00e0ng")},onCreated:($user$$,$obj$$,$next$$)=>{onAfterCommit(()=>{$createLinkAndCode$$($user$$,$obj$$,$e$$=>{$e$$&&Logger.error($e$$)})});$next$$(null,$obj$$)},onUpdated:($user$$,$obj$$,$next$$)=>{onAfterCommit(()=>{$createLinkAndCode$$($user$$,$obj$$,$e$$=>{$e$$&&Logger.error($e$$)})});$next$$(null,$obj$$)}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("csluongtheods"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"csluongtheods",{})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("csphucap"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"csphucap",{})).route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("ctds"),controller=require("../../controllers/controller"),dmkho=global.getModel("dmkho"),dvcs=global.getModel("dvcs"),dmnv=global.getModel("dmnv"),group=global.getModel("group"),dmbp=global.getModel("dmbp"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),async=require("async"),ctds=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"ctds",{sort:{group_id:1,ma_dvcs:1,nam:-1,tu_thang:-1,den_thang:-1,ma_kho:1},unique:"group_id ma_dvcs ma_kho ma_nv ma_phi ma_kh ma_bp ma_dt nam tu_thang den_thang".split(" ")});
|
|
2
|
+
$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({dv:function($callback$$){$result$$.filter($r$$=>$r$$.ma_dvcs).joinModel2($id_app$$,dvcs,{where:"ma_dvcs",fields:{ten_dvcs:"ten_dvcs"}},function(){$callback$$()})},kho:function($callback$$){$result$$.filter($r$$=>$r$$.ma_kho).joinModel2($id_app$$,dmkho,{where:"ma_kho",fields:{ten_kho:"ten_kho"}},function(){$callback$$()})},nv:function($callback$$){$result$$.filter($r$$=>
|
|
3
|
+
$r$$.ma_nv).joinModel2($id_app$$,dmnv,{where:"ma_nv",fields:{ten_nv:"ten_nv"}},function(){$callback$$()})},dmbp:function($callback$$){$result$$.filter($r$$=>$r$$.ma_bp).joinModel2($id_app$$,dmbp,{where:"ma_bp",fields:{ten_bp:"ten_bp"}},function(){$callback$$()})},dmdt:function($callback$$){$result$$.filter($r$$=>$r$$.ma_dt).joinModel2($id_app$$,dmdt,{where:"ma_dt",fields:{ten_dt:"ten_dt"}},function(){$callback$$()})},dmphi:function($callback$$){$result$$.filter($r$$=>$r$$.ma_phi).joinModel2($id_app$$,
|
|
4
|
+
dmphi,{where:"ma_phi",fields:{ten_phi:"ten_phi"}},function(){$callback$$()})},group:function($callback$$){$result$$.filter($r$$=>$r$$.group_id).joinModel2($id_app$$,group,{where:{group_id:"_id"},fields:{group_name:"group_name"}},function(){$callback$$()})}},function(){$fn$$(null,$result$$)})}};module.exports=ctds;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("ctds2"),controller=require("../../controllers/controller"),dmkho=global.getModel("dmkho"),dvcs=global.getModel("dvcs"),dmnv=global.getModel("dmnv"),group=global.getModel("group"),dmbp=global.getModel("dmbp"),dmdt=global.getModel("dmdt"),dmphi=global.getModel("dmphi"),async=require("async"),ctds=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"ctds2",{sort:{group_id:1,ma_dvcs:1,ma_kho:1}});$contr_router$$.route();$contr_router$$.view=function($user$$,
|
|
2
|
+
$result$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({dv:function($callback$$){$result$$.filter($r$$=>$r$$.ma_dvcs).joinModel2($id_app$$,dvcs,{where:"ma_dvcs",fields:{ten_dvcs:"ten_dvcs"}},function(){$callback$$()})},kho:function($callback$$){$result$$.filter($r$$=>$r$$.ma_kho).joinModel2($id_app$$,dmkho,{where:"ma_kho",fields:{ten_kho:"ten_kho"}},function(){$callback$$()})},nv:function($callback$$){$result$$.filter($r$$=>$r$$.ma_nv).joinModel2($id_app$$,dmnv,{where:"ma_nv",fields:{ten_nv:"ten_nv"}},
|
|
3
|
+
function(){$callback$$()})},dmbp:function($callback$$){$result$$.filter($r$$=>$r$$.ma_bp).joinModel2($id_app$$,dmbp,{where:"ma_bp",fields:{ten_bp:"ten_bp"}},function(){$callback$$()})},dmdt:function($callback$$){$result$$.filter($r$$=>$r$$.ma_dt).joinModel2($id_app$$,dmdt,{where:"ma_dt",fields:{ten_dt:"ten_dt"}},function(){$callback$$()})},dmphi:function($callback$$){$result$$.filter($r$$=>$r$$.ma_phi).joinModel2($id_app$$,dmphi,{where:"ma_phi",fields:{ten_phi:"ten_phi"}},function(){$callback$$()})},
|
|
4
|
+
group:function($callback$$){$result$$.filter($r$$=>$r$$.group_id).joinModel2($id_app$$,group,{where:{group_id:"_id"},fields:{group_name:"group_name"}},function(){$callback$$()})}},function(){$fn$$(null,$result$$)})}};module.exports=ctds;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("currency"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"currency",{sort:{ma_nt:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,unique:["ma_nt"]})).route()};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const model=global.getModel("customer"),dmnhkh=global.getModel("group"),User=global.getModel("user"),Trangthai=global.getModel("trangthai"),Participant=global.getModel("participant"),Usergroup=global.getModel("usergroup"),validator=require("validator"),group=global.getModel("group"),controller=require("../../controllers/controller"),redisCache=require("../../libs/redis-cache"),permission=require("../../libs/permission"),{isMobilePhone}=require("../../libs/utils"),{isValidObjectId}=require("mongoose"),
|
|
2
|
+
MAX_DEPTH=20,getAllChildrenUserGroup=async($id_app$$,$depth$$)=>{const $visited$$=new Set([$depth$$?.toString()].filter(Boolean));var $frontier_next$$=[$depth$$];for($depth$$=0;$frontier_next$$.length>0&&$depth$$<MAX_DEPTH;){$depth$$++;var $children_idStr$$=await Usergroup.find({id_app:$id_app$$,group_mother:{$in:$frontier_next$$},status:!0},{_id:1,group_mother:1}).lean();$frontier_next$$=[];for(const $c$$ of $children_idStr$$)$children_idStr$$=$c$$._id.toString(),$children_idStr$$===$c$$.group_mother?.toString()||
|
|
3
|
+
$visited$$.has($children_idStr$$)||($visited$$.add($children_idStr$$),$frontier_next$$.push($c$$._id));$depth$$===MAX_DEPTH&&$frontier_next$$.length>0&&Logger.warn(`[getAllChildrenUserGroup] \u0111\u1ea1t \u0111\u1ed9 s\u00e2u t\u1ed1i \u0111a ${MAX_DEPTH}, d\u1eebng.`)}return[...$visited$$]},customer=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"customer",{sort:{ten_kh:-1},unique:["ma_kh"],cache:!0,onFinding:async($user$$,$condition$$,$next$$)=>{if($condition$$.sinh_nhat_ngay||
|
|
4
|
+
$condition$$.is_birthday){const $today$$=new Date($condition$$.sinh_nhat_ngay),$tz$$=Intl.DateTimeFormat().resolvedOptions().timeZone;$condition$$.$expr=$condition$$.$expr||{};$condition$$.$expr.$and=$condition$$.$expr.$and||[];$condition$$.$expr.$and.push({$eq:[{$month:{date:"$ngay_sinh",timezone:$tz$$}},$today$$.getMonth()+1]});$condition$$.$expr.$and.push({$eq:[{$dayOfMonth:{date:"$ngay_sinh",timezone:$tz$$}},$today$$.getDate()]});delete $condition$$.sinh_nhat_ngay;delete $condition$$.is_birthday}try{await Promise.all([(async()=>
|
|
5
|
+
{if($condition$$.user_group){var $groups_ps$$=await getAllChildrenUserGroup($condition$$.id_app,$condition$$.user_group);$groups_ps$$=await global.getModel("participant").find({id_app:$user$$.current_id_app,group_id:{$in:$groups_ps$$}},{email:1}).lean();$condition$$.phu_trach={$in:$groups_ps$$.map($p$$=>$p$$.email)};delete $condition$$.user_group}})(),(async()=>{if($condition$$.ma_bp){var $users$$=await global.getModel("dmbp").getUsersByMaBP($user$$.current_id_app,$condition$$.ma_bp);Logger.info("users of department",
|
|
6
|
+
$users$$);$condition$$.phu_trach={$in:$users$$};delete $condition$$.ma_bp}})(),...["nh_kh","nh_kh2","nh_kh3","nh_kh4","nh_kh5"].map(($field$$,$idx$$)=>(async()=>{if($condition$$[$field$$]&&typeof $condition$$[$field$$]==="string"){var $result$$=await dmnhkh.getAllChildrenGroup($condition$$.id_app,$condition$$[$field$$],{status:!0,group_kind:$idx$$+1});$condition$$[$field$$]={$in:[...(new Set($result$$))]}}})())]),$next$$(null,$condition$$)}catch($e$$){$next$$($e$$)}},onFound:($user$$,$condition$$,
|
|
7
|
+
$items$$,$next$$)=>$next$$(null,$items$$),onCreating:($user$$,$obj$$,$next$$)=>{if($obj$$.dien_thoai&&!isMobilePhone($obj$$.dien_thoai,"vi-VN"))return $next$$(`S\u1ed1 \u0111i\u1ec7n tho\u1ea1i ${$obj$$.dien_thoai} l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7`);if($obj$$.dien_thoai2&&!isMobilePhone($obj$$.dien_thoai2,"vi-VN"))return $next$$(`S\u1ed1 \u0111i\u1ec7n tho\u1ea1i ${$obj$$.dien_thoai2} l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7`);$next$$(null,$obj$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.dien_thoai&&
|
|
8
|
+
!isMobilePhone($data$$.dien_thoai,"vi-VN"))return $next$$(`S\u1ed1 \u0111i\u1ec7n tho\u1ea1i ${$data$$.dien_thoai} l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7`);if($data$$.dien_thoai2&&!isMobilePhone($data$$.dien_thoai2,"vi-VN"))return $next$$(`S\u1ed1 \u0111i\u1ec7n tho\u1ea1i ${$data$$.dien_thoai2} l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7`);$next$$(null,$data$$,$obj$$)},onView:async($user$$,$items$$,$next$$,$options$$)=>{for(const $item$$ of $items$$)$item$$.email&&!validator.isEmail($item$$.email)&&($item$$.email=
|
|
9
|
+
""),delete $item$$.default_password;const $q$$=$options$$?.req?.query||{},$id_app$$=$user$$.current_id_app;try{await Promise.all([$items$$.filter($i$$=>$i$$.of_user&&!$i$$.group_user).asyncJoinModel2($id_app$$,"usergroup",[{where:{of_user:"email"},fields:[{name:"group_user",value:"_id"}]}]),$items$$.filter($i$$=>$i$$.phu_trach).asyncJoinModel2(null,User,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}]),$items$$.filter($i$$=>$i$$.phu_trach).asyncJoinModel2($id_app$$,"dmnv",[{where:{phu_trach:"user"},
|
|
10
|
+
fields:[{ma_nv_phu_trach:"ma_nv"},{ten_nv_phu_trach:"ten_nv"},{ma_bp_nv:"ma_bp"}]}]),$items$$.filter($i$$=>$i$$.nh_kh).asyncJoinModel2($id_app$$,group,[{where:{nh_kh:"_id"},fields:[{ten_nh_kh:"group_name"}]}]),(async()=>{var $all_docs_uniq$$=[...$items$$.flatMap($i$$=>$i$$.nh_kh2||[]),...$items$$.flatMap($i$$=>$i$$.nh_kh3||[]),...$items$$.flatMap($i$$=>$i$$.nh_kh4||[])];if($all_docs_uniq$$.length){$all_docs_uniq$$=[...(new Set($all_docs_uniq$$))];$all_docs_uniq$$=await group.find({id_app:$id_app$$,
|
|
11
|
+
_id:{$in:$all_docs_uniq$$}},{group_name:1}).lean();var $setMap$$=Object.fromEntries($all_docs_uniq$$.map($n$$=>[$n$$._id.toString(),$n$$.group_name]));for(const $item$$ of $items$$)$item$$.nh_kh2&&($item$$.ten_nh_kh2=$item$$.nh_kh2.map($k$$=>$setMap$$[$k$$])),$item$$.nh_kh3&&($item$$.ten_nh_kh3=$item$$.nh_kh3.map($k$$=>$setMap$$[$k$$])),$item$$.nh_kh4&&($item$$.ten_nh_kh4=$item$$.nh_kh4.map($k$$=>$setMap$$[$k$$]))}})(),$items$$.filter($i$$=>$i$$.ma_kho_npp).asyncJoinModel2($id_app$$,"dmkho",[{where:{ma_kho_npp:"ma_kho"},
|
|
12
|
+
fields:[{ten_kho_npp:"ten_kho"}]}]),$items$$.filter($i$$=>$i$$.of_user).asyncJoinModel2(null,User,[{where:{of_user:"email"},fields:[{user_name:"name"}]}]),$items$$.filter($i$$=>$i$$.trang_thai).asyncJoinModel2(null,Trangthai,[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"CUSTOMER"}),fields:["ten_trang_thai","color"]}]),(async()=>{if((!$q$$.fields||$q$$.fields.includes("ngay_mua_gan_nhat")||!$q$$.fields||$q$$.fields.includes("ngay_mua_dau_tien"))&&model.updateActives){var $needUpdate$$=
|
|
13
|
+
$items$$.filter($i$$=>$i$$.ngay_mua_gan_nhat===void 0||!$i$$.ngay_mua_dau_tien||$i$$.ngay_tuong_tac_gan_nhat===void 0);await Promise.all($needUpdate$$.map(async $item$$=>{try{const $rs$$=await model.updateActives($item$$);$item$$.ngay_mua_gan_nhat=$rs$$.ngay_mua_gan_nhat;$item$$.ngay_mua_dau_tien=$rs$$.ngay_mua_dau_tien;$item$$.so_ngay_da_mua=$rs$$.so_ngay_da_mua}catch($e$$){Logger.error($e$$)}}))}})(),(async()=>{if($q$$.fields?.includes("latest_note")){var $needNote$$=$items$$.filter($i$$=>!$i$$.latest_note);
|
|
14
|
+
await Promise.all($needNote$$.map(async $item$$=>{try{const $latest_note$$=await global.getModel("note").findOne({id_app:$item$$.id_app,id_link:$item$$._id.toString()},{content:1,date_created:1,user_created:1}).sort({date_created:-1}).lean();$latest_note$$&&($item$$.latest_note=$latest_note$$,Promise.all([model.updateOne({_id:$item$$._id},{latest_note:$latest_note$$}),new Promise($resolve$$=>{model.findById($item$$._id).then($c$$=>{redisCache.set("customer",$c$$.toObject(),$e$$=>{Logger.info("cache customer data",
|
|
15
|
+
$e$$);$resolve$$()})}).catch($resolve$$)})]).catch($e$$=>Logger.error("latest_note update error",$e$$)))}catch($e$$){Logger.error($e$$)}}))}})()]),$next$$(null,$items$$)}catch($e$$){$next$$($e$$)}}});$contr_router$$.validating=async($user$$,$obj$$,$next$$,$options$$={})=>{if($options$$.action==="add"&&!$obj$$.ma_kh&&$obj$$.ten_kh)try{const $ma_kh$$=await model.asyncCreateCustomerCode($user$$.current_id_app,$obj$$.dien_thoai||$obj$$.ten_kh);if(!$ma_kh$$)return $next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o m\u00e3 kh\u00e1ch h\u00e0ng");
|
|
16
|
+
$obj$$.ma_kh=$ma_kh$$;$next$$(null,$obj$$)}catch($e$$){Logger.error("Kh\u00f4ng th\u1ec3 t\u1ea1o m\u00e3 kh\u00e1ch h\u00e0ng",$obj$$.ten_kh,$e$$),$next$$(`Kh\u00f4ng th\u1ec3 t\u1ea1o m\u00e3 kh\u00e1ch h\u00e0ng, L\u1ed7i: ${$e$$.message||$e$$.error||$e$$}`)}else $next$$(null,$obj$$)};$contr_router$$.route();$contr_router$$.on("saved",async $data$$=>{if($data$$.of_user)try{const $query_ug$$=$data$$.group_user&&isValidObjectId($data$$.group_user)?{_id:$data$$.group_user}:{is_customer_group:!0},
|
|
17
|
+
$_usergroup$$=await Usergroup.getInfo($data$$.id_app,$query_ug$$);if($_usergroup$$)if(await User.findOne({email:$data$$.of_user}).lean())Participant.createParticipant({id_app:$data$$.id_app,email:$data$$.of_user,group_id:$_usergroup$$._id,active:!0},$e$$=>{$e$$&&Logger.info("can't add user",$data$$.of_user,"to company")});else{var $newUser$$=new User;$newUser$$.email=$data$$.of_user;$newUser$$.name=$data$$.ten_kh;$newUser$$.email2=$data$$.email;$newUser$$.local={email:$data$$.of_user,name:$data$$.ten_kh,
|
|
18
|
+
picture:"/images/avatar.jpg"};$newUser$$.local.password=$newUser$$.generateHash($newUser$$.email+($data$$.default_password||`${$newUser$$.email}@123456`));await $newUser$$.save();Participant.createParticipant({id_app:$data$$.id_app,email:$newUser$$.email,group_id:$_usergroup$$._id,active:!0},$e$$=>{$e$$&&Logger.info("can't add user",$newUser$$.email,"to company")})}}catch($e$$){Logger.error("[customer saved] error",$e$$)}});$contr_router$$.createRoute("qc/sms",async($req$$,$next$$)=>{const $body$$=
|
|
19
|
+
$req$$.body||{};if(!$body$$.id_account)return $next$$("Thi\u1ebfu t\u00e0i kho\u1ea3n sms");if(!$body$$.content)return $next$$("Thi\u1ebfu n\u1ed9i dung tin nh\u1eafn");const $account_sms$$=await global.getModel("smsaccount").findOne({_id:$body$$.id_account,id_app:$req$$.user.current_id_app}).lean();if(!$account_sms$$)return $next$$("T\u00e0i kho\u1ea3n sms kh\u00f4ng t\u1ed3n t\u1ea1i");permission.hasRight($req$$.user.current_id_app,$req$$.user.email,"smssend","add",async($custs_custs_raw_error$jscomp$2_q$$,
|
|
20
|
+
$hasPerm$$)=>{if(!$hasPerm$$)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n g\u1eedi tin nh\u1eafn qu\u1ea3ng c\u00e1o");$custs_custs_raw_error$jscomp$2_q$$=$body$$.q||{};$custs_custs_raw_error$jscomp$2_q$$.dien_thoai||($custs_custs_raw_error$jscomp$2_q$$.dien_thoai={$exists:!0});$custs_custs_raw_error$jscomp$2_q$$.id_app=$req$$.user.current_id_app;$custs_custs_raw_error$jscomp$2_q$$=await model.find($custs_custs_raw_error$jscomp$2_q$$,{dien_thoai:1}).lean();$custs_custs_raw_error$jscomp$2_q$$=
|
|
21
|
+
[...(new Set($custs_custs_raw_error$jscomp$2_q$$.map($c$$=>$c$$.dien_thoai)))];if($custs_custs_raw_error$jscomp$2_q$$.length<30)return $next$$("C\u1ea7n g\u1eedi cho t\u1ed1i thi\u1ec3u 30 kh\u00e1ch h\u00e0ng");const $custsStr$$=$custs_custs_raw_error$jscomp$2_q$$.join(",");setImmediate(async()=>{let $result$$;try{await global.getModel("smsaccount").send($account_sms$$,$custsStr$$,$body$$.content),$result$$={msg:"\u0110\u00e3 g\u1eedi y\u00eau c\u1ea7u th\u00e0nh c\u00f4ng",code:0}}catch($e$$){$result$$=
|
|
22
|
+
{msg:"Kh\u00f4ng th\u1ec3 g\u1eedi",error:$e$$.message||$e$$.error||$e$$,code:-1}}await global.getModel("smssend").create({id_app:$req$$.user.current_id_app,phone:$custsStr$$,content:$body$$.content,user_created:$req$$.user.email,result:$result$$})});$next$$()})},{method:"POST"})};module.exports=customer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("customer_care"),controller=require("../../controllers/controller"),block=function($router$$){(new controller($router$$,model,"customer_care",{sort:{date_created:-1},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{$next$$(null,$data$$,$obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)}})).route()};module.exports=block;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const model=global.getModel("datlich"),User=global.getModel("user"),controller=require("../../controllers/controller"),trangthai=global.getModel("trangthai"),dmkho=global.getModel("dmkho"),customer=global.getModel("customer"),Group=global.getModel("group"),Schedule=global.getModel("schedule"),async=require("async"),{onAfterCommit}=require("../../libs/sessionContext");
|
|
2
|
+
async function createSchedule($obj$$){onAfterCommit(async()=>{await Schedule.removeScheduleLink($obj$$._id.toString());if($obj$$.khung_gio){var $time_run$$=new Date($obj$$.ngay),$data_khung_gio$$=Number($obj$$.khung_gio.split("-")[1]);$time_run$$.setHours($data_khung_gio$$);$time_run$$.setMinutes($time_run$$.getMinutes()-$obj$$.nhac_nho_truoc);if(!($obj$$.trang_thai!=="HENLICH"&&$obj$$.trang_thai!=="XACNHAN"||!$obj$$.nhac_nho_truoc||$time_run$$<new Date)){$data_khung_gio$$=$obj$$.toObject?$obj$$.toObject():
|
|
3
|
+
{...$obj$$};var $users_will_receive$$=$data_khung_gio$$.attends||[];$data_khung_gio$$.phu_trach&&$users_will_receive$$.push($data_khung_gio$$.phu_trach);$users_will_receive$$.length===0&&$users_will_receive$$.push($data_khung_gio$$.user_created);$users_will_receive$$=[...(new Set($users_will_receive$$))];$data_khung_gio$$.title="Nh\u1eafc l\u1ecbch h\u1eb9n: "+$data_khung_gio$$.noi_dung;$data_khung_gio$$.users_will_receive=$users_will_receive$$;$data_khung_gio$$.code="datlich";Schedule.addSchedule({id_link:$data_khung_gio$$._id.toString(),
|
|
4
|
+
action:"sendNotification",data:$data_khung_gio$$,title:$data_khung_gio$$.title,time_run:$time_run$$,trang_thai:"0",status:!0,user_created:$data_khung_gio$$.user_created,user_updated:$data_khung_gio$$.user_created})}}})}
|
|
5
|
+
module.exports=function($router$$){(new controller($router$$,model,"datlich",{sort:{ngay:-1},notNeedRight:!0,users_receive_notification_default:[{trang_thai:"HENLICH",content:'L\u1ecbch "{{noi_dung}}" m\u1edbi',send_phu_trach:!0,send_attends:!0,send_admin:!0},{trang_thai:"XACNHAN",content:'L\u1ecbch "{{noi_dung}}" \u0111\u00e3 \u0111\u01b0\u1ee3c x\u00e1c nh\u1eadn',send_phu_trach:!0,send_attends:!0,send_admin:!0}],onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:($user$$,
|
|
6
|
+
$items$$,$callback$$)=>{async.series({u:$callback$$=>{$items$$.joinModel2(null,User,[{where:{datlich_user:"email"},fields:[{datlich_name:"name"},{picture:"picture"}]}],function(){$callback$$(null,$items$$)})},group:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,Group,[{where:{group_id:"_id"},fields:[{group_name:"group_name"}]}],function(){$callback$$(null,$items$$)})},phutrach:$callback$$=>{$items$$.joinModel2(null,User,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,
|
|
7
|
+
$items$$)})},kho:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,dmkho,[{where:{ma_kho:"ma_kho"},fields:[{ten_kho:"ten_kho"}]}],function(){$callback$$(null,$items$$)})},customer:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,customer,[{where:{ma_kh:"ma_kh"},fields:"ten_kh dia_chi xa_phuong quan_huyen tinh_thanh dien_thoai email".split(" ")}],function(){$callback$$(null,$items$$)})},trangthai:$callback$$=>{$items$$.joinModel2(null,trangthai,[{where:$a$$=>({ma_ct:"DATLICH",ma_trang_thai:$a$$.trang_thai}),
|
|
8
|
+
fields:["ten_trang_thai","color"]}],function(){$callback$$()})}},()=>{$callback$$(null,$items$$)})},onCreating:async($cust_user$$,$obj$$,$next$$)=>{$obj$$.ma_kh&&($cust_user$$=await customer.findOne({id_app:$cust_user$$.current_id_app,ma_kh:$obj$$.ma_kh}))&&($obj$$.id_link=$cust_user$$._id.toString());$next$$(null,$obj$$)},onCreated:async($user$$,$obj$$,$next$$)=>{createSchedule($obj$$);$next$$(null,$obj$$)},onUpdating:async($cust$jscomp$1_user$$,$data$$,$obj$$,$next$$)=>{$data$$.ma_kh&&$data$$.ma_kh!==
|
|
9
|
+
$obj$$.ma_kh&&($cust$jscomp$1_user$$=await customer.findOne({id_app:$cust$jscomp$1_user$$.current_id_app,ma_kh:$data$$.ma_kh}))&&($data$$.id_link=$cust$jscomp$1_user$$._id.toString());$next$$(null,$data$$,$obj$$)},onUpdated:($user$$,$obj$$,$next$$)=>{createSchedule($obj$$);$next$$(null,$obj$$)},onDeleted:async($user$$,$obj$$,$next$$)=>{onAfterCommit(async()=>{await Schedule.removeScheduleLink($obj$$._id.toString())});$next$$(null,$obj$$)}})).route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("sotinhkh"),qts=global.getModel("qts"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dckhauhaots",{sort:{nam:1,thang:1,so_the_ts:1}});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({ts:function($callback$$){$items$$.joinModel($id_app$$,qts,[{akey:"id_ts",bkey:"_id",fields:[{name:"ten_ts",value:"ten_ts"},{name:"so_the_ts",value:"so_the_ts"}]}],function(){$callback$$()})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,
|
|
3
|
+
$items$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("deal"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"deal",{sort:{date_created:-1},onView:async($user$$,$items$$,$callback$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,"customer",{where:"ma_kh",fields:["ten_kh","dien_thoai"]});await $items$$.filter($item$$=>$item$$.ma_dt).asyncJoinModel2($user$$.current_id_app,"dmdt",{where:"ma_dt",fields:["ten_dt"]});$callback$$(null,$items$$)},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onUpdating:($user$$,
|
|
3
|
+
$data$$,$obj$$,$next$$)=>{$next$$(null,$data$$,$obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("diagram"),controller=require("../../controllers/controller"),diagram=function($router$$){(new controller($router$$,model,"diagram",{sort:{stt:1},unique:["id"]})).route()};module.exports=diagram;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const model=global.getModel("dkhoc"),controller=require("../../controllers/controller"),dmvt=global.getModel("dmvt"),dmdt=global.getModel("dmdt"),customer=global.getModel("customer"),Pbl=global.getModel("pbl"),PostSocai=require("../../libs/post-socai"),socai=global.getModel("socai"),async=require("async"),_=require("underscore"),dkhoc=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dkhoc",{sort:{ma_kho:1,ma_dt:1,ma_vt:1},unique:["id_pbl","ma_dt","ma_kh","ma_vt"]});
|
|
2
|
+
$contr_router$$.route();$contr_router$$.post=function($obj$$,$fn$$){$fn$$||=function(){};async.series({post_socai:$callback$$=>{const $details_sc$$=[],$o$$={...$obj$$};socai.findOne({id_ct:$obj$$.id_pbl,flag:"DT_"+($o$$.ma_vt||"")}).lean().exec(($e$$,$_socai$$)=>{Logger.info("find dt pbl",{id_ct:$obj$$.id_pbl,flag:"DT_"+($o$$.ma_vt||"")},$_socai$$);$_socai$$&&$o$$.tk_dt&&($o$$.tk_co=$o$$.tk_dt,$o$$.tk_no=$_socai$$.tk_co,$o$$.tien_nt=$_socai$$.tien_nt,$o$$.tien=$_socai$$.tien,$details_sc$$.push($o$$));
|
|
3
|
+
(new PostSocai($obj$$,$details_sc$$)).run(($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}},function($e$$,$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.view=async($id_app_user$$,$items$$,$next$$)=>{$id_app_user$$=$id_app_user$$.current_id_app;await $items$$.asyncJoinModel2($id_app_user$$,dmdt,{where:"ma_dt",fields:["ten_dt","ngay_bd","ngay_kt"]});await $items$$.asyncJoinModel2($id_app_user$$,customer,{where:"ma_kh",fields:"ten_kh"});await $items$$.asyncJoinModel2($id_app_user$$,dmvt,{where:"ma_vt",fields:"ten_vt"});
|
|
4
|
+
$next$$(null,$items$$)};$contr_router$$.creating=async($user$$,$data$$,$next$$)=>{let $query$$={id_app:$user$$.current_id_app,ma_kho:$data$$.ma_kho,ma_kh:$data$$.ma_kh,trang_thai:{$in:["5","6"]},_id:$data$$.id_pbl,details:{$elemMatch:{ma_vt:$data$$.ma_vt}}};if(!await Pbl.findOne($query$$))return $next$$("H\u1ecdc vi\u00ean n\u00e0y ch\u01b0a mua kho\u00e1 h\u1ecdc n\u00e0y");$query$$={id_app:$user$$.current_id_app,ma_kho:$data$$.ma_kho,ma_dt:$data$$.ma_dt,ma_kh:$data$$.ma_kh,ma_vt:$data$$.ma_vt,id_pbl:$data$$.id_pbl};
|
|
5
|
+
if(await model.findOne($query$$))return $next$$("H\u1ecdc vi\u00ean n\u00e0y \u0111\u00e3 \u0111ang k\u00fd h\u1ecdc cho kho\u00e1 n\u00e0y");$next$$(null,$data$$)};$contr_router$$.updating=($user$$,$data$$,$obj$$,$next$$)=>{if(!_.isEqual({ma_kho:$data$$.ma_kho,ma_dt:$data$$.ma_dt,ma_kh:$data$$.ma_kh,ma_vt:$data$$.ma_vt,id_pbl:$data$$.id_pbl},{ma_kho:$obj$$.ma_kho,ma_dt:$obj$$.ma_dt,ma_kh:$obj$$.ma_kh,ma_vt:$obj$$.ma_vt,id_pbl:$obj$$.id_pbl}))return $next$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p ch\u1ec9nh s\u1eeda th\u00f4ng tin \u0111\u00e3 \u0111\u0103ng k\u00fd");
|
|
6
|
+
$next$$(null,$data$$,$obj$$)}};module.exports=dkhoc;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const controller=require("../../controllers/controller"),model=global.getModel("dknphep");module.exports=function($router$$){(new controller($router$$,model,"dknphep",{sort:{date_created:-1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1})).route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("dmban"),group=global.getModel("group"),dmkho=global.getModel("dmkho"),pbl=global.getModel("pbl"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"dmban",{sort:{ma_kho:1,stt:1,ten_ban:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,unique:["ma_ban"],onView:function($user$$,$items$$,$next$$){async.series({kho:function($callback$$){$items$$.joinModel2($user$$.current_id_app,dmkho,[{where:{ma_kho:"ma_kho"},fields:[{ten_kho:"ten_kho"}]}],function(){$callback$$(null)})},grp:function($callback$$){$items$$.joinModel2($user$$.current_id_app,
|
|
3
|
+
group,[{where:{nh_ban:"_id"},fields:[{name:"ten_nh_ban",value:"group_name"}]}],function(){$callback$$(null)})},loai:function($callback$$){$items$$.joinModel2($user$$.current_id_app,group,[{where:{loai_ban:"_id"},fields:[{name:"ten_loai_ban",value:"group_name"}]}],function(){$callback$$(null)})},trang_thai:function($callback$$){Promise.all($items$$.map($item$$=>(async()=>{let $p$$=await pbl.findOne({id_app:$item$$.id_app,ma_ban:$item$$.ma_ban,ma_kho:$item$$.ma_kho,trang_thai:{$in:["1","3"]}});$item$$.trang_thai=
|
|
4
|
+
$p$$?$p$$.trang_thai:"0";return $item$$})())).then(()=>{$items$$.joinModel2(null,trangthai,[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"DMBAN"}),fields:[{name:"ten_trang_thai",value:"group_name"},{name:"color",value:"color"}]}],function(){$callback$$(null)})})}},function(){$next$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const model=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async"),getSysorder=function($item$$,$callback$$){let $sysorder$$=($item$$.stt||"0")+"-"+$item$$.ma_bp;$item$$.ma_bp_me&&$item$$.ma_bp_me!=$item$$.ma_bp.toString()?model.findOne({ma_bp:$item$$.ma_bp_me,id_app:$item$$.id_app}).lean().then(function($item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):
|
|
2
|
+
$callback$$($sysorder$$)}).catch($e$$=>{$callback$$($e$$)}):$callback$$($sysorder$$)};
|
|
3
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmbp",{sort:{sysorder:1},unique:["ma_bp"],onView:function($user$$,$items$$,$next$$){async.parallel({pt:function($callback$$){$items$$.filter($item$$=>$item$$.phu_trach).joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,$items$$)})},ph:function($callback$$){$items$$.filter($item$$=>$item$$.phoi_hop).joinModel2($user$$.current_id_app,
|
|
4
|
+
Participant,[{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,$items$$)})}},()=>{$next$$(null,$items$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.ma_bp_me&&(await model.getAllChildrenGroup($obj$$.id_app,$obj$$.ma_bp.toString())).indexOf($data$$.ma_bp_me)>=0)return $next$$("Kh\u00f4ng th\u1ec3 ch\u1ecdn nh\u00f3m n\u00e0y l\u00e0m nh\u00f3m m\u1eb9");$next$$(null,$data$$,$obj$$)}});$contr_router$$.route();$contr_router$$.deleting=function($user$$,
|
|
5
|
+
$obj$$,$next$$){if($obj$$.loai_nh===0)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;await model.updateOne({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}}).catch(console.error);$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,
|
|
6
|
+
$next$$){getSysorder($obj$$,async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({ma_bp_me:$obj$$.ma_bp.toString(),id_app:$obj$$.id_app}).catch(console.error)&&($loai_nh_rs$$=0);$obj$$.loai_nh=$loai_nh_rs$$;await model.updateOne({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:$loai_nh_rs$$}}).catch(console.error);$next$$(null,$obj$$)})};$contr_router$$.on("saved",async function($obj$$){const $ma_bp_me$$=
|
|
7
|
+
$obj$$.ma_bp_me;$ma_bp_me$$&&await model.updateOne({id_app:$obj$$.id_app,ma_bp:$ma_bp_me$$},{$set:{loai_nh:0}}).catch(console.error)});$contr_router$$.on("deleted",async function($obj$$){$obj$$.ma_bp_me&&(await model.findOne({ma_bp_me:$obj$$.ma_bp_me,id_app:$obj$$.id_app}).select("_id").catch(console.error)||await model.updateOne({id_app:$obj$$.id_app,ma_bp:$obj$$.ma_bp_me},{$set:{loai_nh:1}}).catch(console.error))})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("dmca"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"dmca",{sort:{ma_ca:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,unique:["ma_ca"]})).route()};
|