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,12 @@
|
|
|
1
|
+
const model=global.getModel("participant"),User=global.getModel("user"),usergroup=global.getModel("usergroup"),controller=require("../../controllers/controller"),async=require("async"),redisCache=require("../../libs/redis-cache"),{onAfterCommit}=require("../../libs/sessionContext");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"participant",{sort:{date_created:-1},unique:["id_app","email"],onFinding:async($user$$,$condition$$,$next$$)=>{if($condition$$.groups&&!$condition$$.group_id)try{let $groups$$=(await usergroup.getList($user$$.current_id_app,$condition$$.groups)).map($g$$=>$g$$._id);delete $condition$$.groups;$groups$$=$groups$$.concat([null,"",void 0]);$condition$$.group_id={$in:$groups$$};$next$$(null,$condition$$)}catch($e$$){$next$$($e$$.message)}else $next$$(null,
|
|
3
|
+
$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.parallel({u:$callback$$=>{$items$$.joinModel2(null,User,[{where:{email:"email"},fields:[{picture:"picture"},{email2:"email2"}],setFields:($item$$,$ref$$)=>{$item$$.name||($item$$.name=$ref$$.name)}}],function(){$callback$$()})},group:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,usergroup,[{where:{group_id:"_id"},fields:["group_name","is_customer_group","is_employee_group"]}],function(){$callback$$()})},verified:$callback$$=>{mongoose.models.assuser_identity?
|
|
4
|
+
$items$$.joinModel2($user$$.current_id_app,global.getModel("assuser_identity"),[{where:{email:"user_created"},fields:[{trang_thai_xac_thuc:"trang_thai"}],setFields:($item$$,$ref$$)=>{$item$$.name||($item$$.name=$ref$$.name)}}],function(){$items$$.filter($i$$=>$i$$.trang_thai_xac_thuc).joinModel2(null,global.getModel("trangthai"),[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai_xac_thuc,ma_ct:"ASSUSER_IDENTITY"}),fields:[{ten_trang_thai_xac_thuc:"ten_trang_thai"},"color"]}],function(){$callback$$()})}):
|
|
5
|
+
$callback$$()}},()=>{$items$$.forEach($item$$=>{$item$$.real_name&&($item$$.name=$item$$.real_name);delete $item$$.password});$next$$(null,$items$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.phone){let $u$$=await global.getModel("user").findOne({$or:[{"local.phone":$data$$.phone},{email:$data$$.phone}]});if($u$$&&$u$$.email!==$obj$$.email)return $next$$("S\u1ed1 \u0111i\u1ec7n tho\u1ea1i "+$data$$.phone+" \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng")}delete $data$$.password;
|
|
6
|
+
if($data$$.admin&&!$obj$$.admin&&!$user$$.appAdmin)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1eb7t ng\u01b0\u1eddi n\u00e0y l\u00e0 ng\u01b0\u1eddi qu\u1ea3n tr\u1ecb");$next$$(null,$data$$,$obj$$)},onUpdated:async($user$$,$_obj$$,$next$$)=>{onAfterCommit(async()=>{const $obj$$=await model.findOne({_id:$_obj$$._id});$obj$$?.auto_create_user&&$obj$$?.password&&User.findOne({email:$obj$$.email},async($e$$,$rs$$)=>{if($e$$)return Logger.error("[participant] [created] error find user:",
|
|
7
|
+
$e$$),$next$$(null,$_obj$$);if($rs$$)return $next$$(null,$_obj$$);$e$$=new User;$e$$.email=$obj$$.email;$e$$.name=$obj$$.name;$e$$.local={};$e$$.local.email=$obj$$.email;$e$$.local.name=$obj$$.name;$e$$.local.phone=$obj$$.phone;$e$$.local.active=!0;$e$$.local.password=$e$$.generateHash($e$$.email+$obj$$.password);$e$$.save(async($e$$,$_user$$)=>{if($e$$)return Logger.error(`Kh\u00f4ng th\u1ec3 t\u1ea1o ng\u01b0\u1eddi d\u00f9ng ${$obj$$.email}, L\u1ed7i: ${$e$$.message}`);redisCache.set("user",$_user$$.toObject(),
|
|
8
|
+
function($e$$){$e$$&&Logger.error($e$$)})})});if($obj$$?.phone||$obj$$?.active){let $u$$=await User.findOne({email:$obj$$.email});$u$$&&($u$$.local=$u$$.local||{},$u$$.local.phone=$obj$$.phone,$u$$.local.active||($u$$.local.active=$obj$$?.active),await $u$$.save(),redisCache.set("user",$u$$.toObject(),function($e$$){$e$$&&Logger.error($e$$)}))}});$next$$(null,$_obj$$)},onCreating:async($u$jscomp$2_user$$,$data$$,$next$$)=>{if($data$$.auto_create_user&&$data$$.password&&$data$$.phone&&($u$jscomp$2_user$$=
|
|
9
|
+
await global.getModel("user").findOne({$or:[{"local.phone":$data$$.phone},{email:$data$$.phone}]}))&&$u$jscomp$2_user$$.email!==$data$$.email)return $next$$("S\u1ed1 \u0111i\u1ec7n tho\u1ea1i "+$data$$.phone+" \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng");$next$$(null,$data$$)},onCreated:async($user$$,$_obj$$,$next$$)=>{onAfterCommit(async()=>{const $obj$$=await model.findOne({_id:$_obj$$._id});$obj$$?.auto_create_user&&$obj$$?.password&&User.findOne({email:$obj$$.email},async($e$jscomp$5_result$$,
|
|
10
|
+
$rs$$)=>{if($e$jscomp$5_result$$)return Logger.error("[participant] [created] error find user:",$e$jscomp$5_result$$),$next$$(null,$_obj$$);if($rs$$)return Logger.info("[participant] user exists, update participant password..."),$rs$$.password=$rs$$.generateHash($obj$$.email+$obj$$.password),await $rs$$.save(),$next$$(null,$_obj$$);$e$jscomp$5_result$$=new User;$e$jscomp$5_result$$.email=$obj$$.email;$e$jscomp$5_result$$.name=$obj$$.name;$e$jscomp$5_result$$.local={};$e$jscomp$5_result$$.local.email=
|
|
11
|
+
$obj$$.email;$e$jscomp$5_result$$.local.name=$obj$$.name;$e$jscomp$5_result$$.local.phone=$obj$$.phone;$e$jscomp$5_result$$.local.active=!0;$e$jscomp$5_result$$.local.password=$e$jscomp$5_result$$.generateHash($e$jscomp$5_result$$.email+$obj$$.password);$e$jscomp$5_result$$.save(async($e$$,$_user$$)=>{if($e$$)return await model.deleteOne({_id:$obj$$._id}),Logger.error(`Kh\u00f4ng th\u1ec3 t\u1ea1o ng\u01b0\u1eddi d\u00f9ng ${$obj$$.email}, L\u1ed7i: ${$e$$.message}`);redisCache.set("user",$_user$$.toObject(),
|
|
12
|
+
function($e$$){$e$$&&Logger.error($e$$)})})})});$next$$(null,$_obj$$)},onDeleting:($user$$,$obj$$,$next$$)=>{if($user$$.email==$obj$$.email)return $next$$("Kh\u00f4ng th\u1ec3 xo\u00e1 ng\u01b0\u1eddi s\u1eed d\u1ee5ng n\u00e0y");$next$$(null,$obj$$)}})).route()};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const model=global.getModel("phieudanhgia"),dmbp=global.getModel("dmbp"),dmnv=global.getModel("dmnv"),dmdoi=global.getModel("dmdoi"),dmto=global.getModel("dmto"),dmnhnv=global.getModel("dmnhnv"),chitieukpi=global.getModel("chitieukpi"),group=global.getModel("group"),maudanhgia=global.getModel("maudanhgia"),async=require("async"),controller=require("../../controllers/controller"),phieudanhgia=function($router$$){(new controller($router$$,model,"phieudanhgia",{unique:["ky","nam","ma_nv"],sort:{nam:-1,
|
|
2
|
+
ky:-1,ma_bp:1,ma_doi:1,ma_to:1},onFinding:function($user$$,$condition$$,$next$$){async.series({find_ten_nv:function($callback$$){if(!$condition$$.$or)return $callback$$();let $nv$$=$condition$$.$or.find($o$$=>$o$$.ma_nv);$nv$$?dmnv.find({id_app:$user$$.current_id_app,$or:[{ma_nv:$nv$$.ma_nv},{ten_nv:$nv$$.ma_nv}]},{ma_nv:1}).lean().exec(function($e_ma_nvs$$,$nvs$$){if($e_ma_nvs$$)return $callback$$($e_ma_nvs$$);$e_ma_nvs$$=$nvs$$.map($v$$=>$v$$.ma_nv);$nv$$.ma_nv={$in:$e_ma_nvs$$};$callback$$()}):
|
|
3
|
+
$callback$$()}},function($e$$){if($e$$)return $next$$($e$$);$next$$(null,$condition$$)})},onView:($user$$,$items$$,$callback$$)=>{async.series({maudanhgia:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,maudanhgia,[{where:{ma_mau_danh_gia:"ma_mau_danh_gia"},fields:["ten_mau_danh_gia"]}],function(){$callback$$(null,$items$$)})},nhanvien:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,dmnv,[{where:{ma_nv:"ma_nv"},fields:[{ten_nv:"ten_nv"},{nguoi_danh_gia:"nguoi_danh_gia"},{user:"user"}]}],
|
|
4
|
+
function(){$callback$$(null,$items$$)})},dmbp:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,dmbp,[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}],function(){$callback$$(null,$items$$)})},dmdoi:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,dmdoi,[{where:{ma_doi:"ma_doi",ma_bp:"ma_bp"},fields:["ten_doi"]}],function(){$callback$$(null,$items$$)})},dmto:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,dmto,[{where:{ma_to:"ma_to",ma_doi:"ma_doi",ma_bp:"ma_bp"},fields:["ten_to"]}],
|
|
5
|
+
function(){$callback$$(null,$items$$)})},nhom:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,dmnhnv,[{where:{ma_to:"ma_to",ma_doi:"ma_doi",ma_bp:"ma_bp",ma_nh_nv:"ma_nh_nv"},fields:["ten_nh_nv"]}],function(){$callback$$(null,$items$$)})},chucvu:$callback$$=>{$items$$.joinModel2($user$$.current_id_app,group,[{where:{chuc_vu:"_id"},fields:[{ten_chuc_vu:"group_name"},{muc_tieu_bieu:"muc_tieu_bieu"}]}],function(){$callback$$(null,$items$$)})},chitieus:$callback$$=>{async.mapSeries($items$$,
|
|
6
|
+
($item$$,$callback$$)=>{if(!$item$$.chitieus)return $callback$$();$item$$.chitieus.joinModel2($user$$.current_id_app,chitieukpi,[{where:{id_rptform:"id_rptform",ma_kpi:"ma_kpi"},fields:[{stt:"stt"},{ma_kpi:"ma_kpi"},{ten_kpi:"ten_kpi"},{kieu_danh_gia:"kieu_danh_gia"},{ma_doi_tuong_danh_gia:"ma_doi_tuong_danh_gia"},{diem_toi_da:"diem_toi_da"},{user_groups:"user_groups"},{exfields:"exfields"}]}],()=>{$callback$$(null)})},$e$$=>{$callback$$($e$$)})}},$e$$=>{if($e$$)return $callback$$($e$$);$callback$$(null,
|
|
7
|
+
$items$$)})},onRightByItem:($user$$,$condition$$,$next$$)=>{async.series({nhan_vien:$callback$$=>{dmnv.find({id_app:$user$$.current_id_app,nguoi_danh_gia:{$elemMatch:{user:$user$$.email}}}).lean().exec(($e$$,$bps$$)=>{$callback$$(null,$bps$$)})}},($$or_e$$,$rs$$)=>{if($$or_e$$)return $next$$($$or_e$$);$$or_e$$=[{ma_nv:{$in:$rs$$.nhan_vien.map($v$$=>$v$$.ma_nv)}},{user_created:$user$$.email}];$next$$(null,{$or:$$or_e$$})})}})).route()};module.exports=phieudanhgia;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const model=global.getModel("phucap"),controller=require("../../controllers/controller"),phucap=function($router$$){(new controller($router$$,model,"phucap",{sort:{nam:1,thang:-1},onFound:($user$$,$condition$$,$items$$,$next$$)=>{Logger.info("[phucap] found",JSON.stringify($condition$$,null,2));$next$$(null,$items$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.filter($item$$=>$item$$.id_ct&&!$item$$.ngay_ct).asyncJoinModel2($user$$.current_id_app,"hd2",{where:{id_ct:"_id"},fields:["ngay_ct"]});
|
|
2
|
+
await $items$$.filter($item$$=>$item$$.id_ct&&!$item$$.so_ct).asyncJoinModel2($user$$.current_id_app,"hd2",{where:{id_ct:"_id"},fields:["so_ct"]});$next$$(null,$items$$)}})).route()};module.exports=phucap;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const model=global.getModel("productcode"),controller=require("../../controllers/controller"),crypto=require("crypto"),qr=require("qr-image"),ejs=require("ejs"),path=require("path"),viewsDir=path.join(__dirname,"../../templates"),renderView=($data$$,$templateName$$="product-verify-result.ejs")=>new Promise(($resolve$$,$reject$$)=>{const $filePath$$=path.join(viewsDir,$templateName$$);ejs.renderFile($filePath$$,$data$$,($err$$,$str$$)=>{if($err$$)return $reject$$($err$$);$resolve$$($str$$)})});
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"productcode",{unique:["code"],notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,"dmvt",{where:{dmvt:"_id"},fields:["ma_vt","ten_vt","picture"]});$next$$(null,$items$$)},onCreating:async($qrImage_user$$,$obj$$,$next$$)=>{if($obj$$.ma_vt&&!$obj$$.dmvt){let $vt$$=await global.getModel("dmvt").findOne({id_app:$qrImage_user$$.current_id_app,
|
|
3
|
+
ma_vt:$obj$$.ma_vt}).lean();if(!$vt$$)return $next$$(`S\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i ${$obj$$.ma_vt}`);$obj$$.dmvt=$vt$$._id}$qrImage_user$$=`data:image/png;base64,${qr.imageSync(`${configs.api_url||configs.domain}/api/${$qrImage_user$$.current_id_app}/productcode/verify/${$obj$$.code}?access_token=${configs.public_token}`,{type:"png",margin:2}).toString("base64")}`;$obj$$.qr_image=$qrImage_user$$;$next$$(null,$obj$$)}});$contr_router$$.createRoute("create-codes/:ma_vt/:quantity",
|
|
4
|
+
async($req$$,$next$$)=>{try{var $createdCodes_ma_vt$$=$req$$.params.ma_vt;const $quantity$$=Number($req$$.params.quantity||1),$product$$=await mongoose.model("dmvt").findOne({ma_vt:$createdCodes_ma_vt$$,id_app:$req$$.user.current_id_app}).lean();if(!$product$$)return $next$$({error:"S\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i"});$createdCodes_ma_vt$$=[];for(let $i$$=0;$i$$<($quantity$$||1);$i$$++){const $uniqueString$$=crypto.randomBytes(6).toString("hex"),$qrImage$$=`data:image/png;base64,${qr.imageSync(`${configs.api_url||
|
|
5
|
+
configs.domain}/api/${$req$$.user.current_id_app}/productcode/verify/${$uniqueString$$}?access_token=${configs.public_token}`,{type:"png",margin:2}).toString("base64")}`;await model.create({id_app:$req$$.user.current_id_app,code:$uniqueString$$,dmvt:$product$$._id,ma_vt:$product$$.ma_vt,qr_image:$qrImage$$});$createdCodes_ma_vt$$.push({uniqueString:$uniqueString$$,qrImage:$qrImage$$})}$next$$(null,{success:!0,count:$createdCodes_ma_vt$$.length})}catch($error$$){$next$$({error:$error$$.message})}},
|
|
6
|
+
{action_code:"add"});$contr_router$$.createRoute("verify/:code",async($req$$,$next$$)=>{const {code:$code$$}=$req$$.params,$clientIp$$=$req$$.headers["x-forwarded-for"]||$req$$.socket.remoteAddress,$userAgent$$=$req$$.headers["user-agent"];try{const $codeInfo$$=await model.findOne({code:$code$$,id_app:$req$$.user.current_id_app}).populate("dmvt");let $renderData$$;$codeInfo$$?($codeInfo$$.scan_history.push({ip:$clientIp$$,user_agent:$userAgent$$}),$codeInfo$$.scan_count+=1,$codeInfo$$.is_scanned?
|
|
7
|
+
(await $codeInfo$$.save(),$renderData$$={status:"WARNING",code:$code$$,company:$req$$.user.current_app_info||{},scanCount:$codeInfo$$.scan_count,product:$codeInfo$$.dmvt,message:`C\u1ea3nh b\u00e1o: S\u1ea3n ph\u1ea9m n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t tr\u01b0\u1edbc \u0111\u00f3 v\u00e0o ng\u00e0y ${$codeInfo$$.scan_history[0].scanned_at.toLocaleString()}. N\u1ebfu b\u1ea1n v\u1eeba m\u1edbi b\u00f3c tem, c\u00f3 th\u1ec3 \u0111\u00e2y l\u00e0 h\u00e0ng gi\u1ea3.`}):($codeInfo$$.is_scanned=
|
|
8
|
+
!0,await $codeInfo$$.save(),$renderData$$={status:"GENUINE",code:$code$$,company:$req$$.user.current_app_info||{},product:$codeInfo$$.dmvt,scanCount:$codeInfo$$.scan_count,message:"Ch\u00fac m\u1eebng! S\u1ea3n ph\u1ea9m ch\u00ednh h\u00e3ng v\u00e0 \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t l\u1ea7n \u0111\u1ea7u ti\u00ean."})):$renderData$$={status:"FAKE",code:$code$$,company:$req$$.user.current_app_info||{},scanCount:0,message:"M\u00e3 s\u1ea3n ph\u1ea9m kh\u00f4ng t\u1ed3n t\u1ea1i tr\u00ean h\u1ec7 th\u1ed1ng."};
|
|
9
|
+
const $html$$=await renderView($renderData$$);$next$$(null,$html$$)}catch($error$$){Logger.error("[productcode]",$error$$),$next$$("System Error")}});$contr_router$$.route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("profile"),controller=require("../../controllers/controller"),profile=function($router$$){(new controller($router$$,model,"profile",{sort:{ho_va_ten:1}})).route()};module.exports=profile;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("ptthanhtoan"),customer=global.getModel("customer"),async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"ptthanhtoan",{sort:{stt:1,ten:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:($user$$,$items$$,$next$$)=>{async.series({kh:$callback$$=>{$items$$.joinModel($user$$.current_id_app,customer,{where:{ma_kh:"ma_kh"},fields:{ten_kh:"ten_kh"}},function(){$callback$$()})},ad:$callback$$=>{$user$$.appAdmin||$items$$.forEach($data$$=>{delete $data$$.onepay_configs;
|
|
3
|
+
delete $data$$.momo_configs});$callback$$()}},async $e$$=>{$next$$($e$$,$items$$)})}});$contr_router$$.route();$contr_router$$.updating=function($user$$,$data$$,$obj$$,$next$$){$user$$.appAdmin||(delete $data$$.onepay_configs,delete $data$$.momo_configs);$next$$(null,$data$$,$obj$$)}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var model=global.getModel("qts_dieuchinh"),qts=global.getModel("qts");const async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"qtsdieuchinh",{sort:{ngay_ct:-1}});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({ts:function($callback$$){$result$$.joinModel2($id_app$$,qts,{where:{id_ts:"_id"},fields:[{name:"so_the_ts",value:"so_the_ts"},{name:"ten_ts",value:"ten_ts"}]},function(){$callback$$()})}},function(){$fn$$(null,$result$$)})}};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const model=global.getModel("qts_dieuchuyen"),qts=global.getModel("qts"),async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"qtsdieuchuyen",{sort:{ngay_ct:-1},onCreating:async($bpsd_dang_sd_user$$,$data$$,$next$$)=>{$bpsd_dang_sd_user$$=(await qts.bophansudung($bpsd_dang_sd_user$$.current_id_app,$data$$.id_ts,$data$$.ngay_ct)).filter($q$$=>$q$$.ma_bp.toUpperCase()===$data$$.tu_bp.trim().toUpperCase());$bpsd_dang_sd_user$$=$data$$.tu_nv?$bpsd_dang_sd_user$$.find($b$$=>$b$$.ma_nv.toUpperCase()==$data$$.tu_nv.toUpperCase()):$bpsd_dang_sd_user$$.find($b$$=>
|
|
3
|
+
!$b$$.ma_nv);if(!$bpsd_dang_sd_user$$)return $next$$("B\u1ed9 ph\u1eadn ho\u1eb7c nh\u00e2n vi\u00ean \u0111ang s\u1eed d\u1ee5ng kh\u00f4ng h\u1ee3p l\u1ec7");if($bpsd_dang_sd_user$$.so_luong<$data$$.so_luong)return $next$$("B\u1ed9 ph\u1eadn \u0111i\u1ec1u chuy\u1ec3n c\u00f3 s\u1ed1 l\u01b0\u1ee3ng c\u1ea7n \u0111i\u1ec1u chuy\u1ec3n kh\u00f4ng h\u1ee3p l\u1ec7");$next$$(null,$data$$)},onUpdating:async($bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$,$data$$,$obj$$,$next$$)=>{$data$$.so_luong=
|
|
4
|
+
$data$$.so_luong||$obj$$.so_luong;$data$$.tu_bp=$data$$.tu_bp||$obj$$.tu_bp;$data$$.tu_nv==void 0&&($data$$.tu_nv=$obj$$.tu_nv);$data$$.id_ts=$data$$.id_ts||$obj$$.id_ts;$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$=(await qts.bophansudung($bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$.current_id_app,$data$$.id_ts,$data$$.ngay_ct)).filter($q$$=>$q$$.ma_bp.toUpperCase()===$data$$.tu_bp.trim().toUpperCase());$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$=$data$$.tu_nv?$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$.find($b$$=>
|
|
5
|
+
$b$$.ma_nv.toUpperCase()==$data$$.tu_nv.toUpperCase()):$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$.find($b$$=>!$b$$.ma_nv);if(!$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$)return $next$$("B\u1ed9 ph\u1eadn ho\u1eb7c nh\u00e2n vi\u00ean \u0111ang s\u1eed d\u1ee5ng kh\u00f4ng h\u1ee3p l\u1ec7");$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$=$bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$.so_luong||0;$data$$.id_ts==$obj$$.id_ts&&$data$$.tu_bp==$obj$$.tu_bp&&($bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$+=
|
|
6
|
+
$obj$$.so_luong);if($bpsd$jscomp$1_dang_sd$jscomp$1_so_luong_dang_sd_user$$<$data$$.so_luong)return $next$$("B\u1ed9 ph\u1eadn \u0111i\u1ec1u chuy\u1ec3n c\u00f3 s\u1ed1 l\u01b0\u1ee3ng c\u1ea7n \u0111i\u1ec1u chuy\u1ec3n kh\u00f4ng h\u1ee3p l\u1ec7");$next$$(null,$data$$,$obj$$)}});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({ts:function($callback$$){$result$$.joinModel2($id_app$$,qts,{where:{id_ts:"_id"},fields:[{name:"so_the_ts",
|
|
7
|
+
value:"so_the_ts"},{name:"ten_ts",value:"ten_ts"}]},function(){$callback$$()})},tu_bp:$callback$$=>{$result$$.joinModel2($id_app$$,"dmbp",{where:{tu_bp:"ma_bp"},fields:[{name:"tu_ten_bp",value:"ten_bp"}]},function(){$callback$$()})},den_bp:$callback$$=>{$result$$.joinModel2($id_app$$,"dmbp",{where:{den_bp:"ma_bp"},fields:[{name:"den_ten_bp",value:"ten_bp"}]},function(){$callback$$()})},ma_nv:$callback$$=>{$result$$.joinModel2($id_app$$,"dmnv",{where:{ma_nv_sd:"ma_nv"},fields:[{name:"ten_nv_sd",value:"ten_nv"}]},
|
|
8
|
+
function(){$callback$$()})}},function(){$fn$$(null,$result$$)})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("reason"),controller=require("../../controllers/controller"),reason=function($router$$){(new controller($router$$,model,"reason",{sort:{reason_name:1}})).route()};module.exports=reason;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const model=global.getModel("rpt"),file=global.getModel("file"),parameter=global.getModel("parameter"),controller=require("../../controllers/controller"),fs=require("fs"),path=require("path"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"rpt",{sort:{ma_cn:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onFinding:($user$$,$condition$$,$next$$,$_condition_dir_root_templates_options$$={})=>{if($condition$$.ma_cn&&$_condition_dir_root_templates_options$$.req&&$_condition_dir_root_templates_options$$.req.query&&!$_condition_dir_root_templates_options$$.req.query.count){$_condition_dir_root_templates_options$$=configs.paths.templates||
|
|
3
|
+
path.dirname(__dirname);let $p$$="/templates/excels/"+$condition$$.ma_cn.toLowerCase()+".xlsx",$templatePath$$=path.dirname($_condition_dir_root_templates_options$$)+$p$$;fs.existsSync($templatePath$$)||($p$$="/templates/excels/reports/"+$condition$$.ma_cn.toLowerCase()+".xlsx",$templatePath$$=path.dirname($_condition_dir_root_templates_options$$)+$p$$);fs.existsSync($templatePath$$)?($_condition_dir_root_templates_options$$={id_app:$user$$.current_id_app,ma_cn:$condition$$.ma_cn.toUpperCase()},model.countDocuments($_condition_dir_root_templates_options$$,
|
|
4
|
+
function($error$$,$count$$){if($error$$)return $next$$($error$$);$count$$===0?model.create({id_app:$user$$.current_id_app,ma_cn:$condition$$.ma_cn,ten_mau_in:"M\u1eabu chu\u1ea9n",file_mau_in:$p$$},$e$$=>{$next$$($e$$,$condition$$)}):$next$$(null,$condition$$)})):$next$$(null,$condition$$)}else $next$$(null,$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.mapLimit($items$$,20,async $item$$=>{if($item$$.file_mau_in&&$item$$.file_mau_in.indexOf("/file/download")>0){var $_f_file_id_params$$=
|
|
5
|
+
$item$$.file_mau_in.split("/").pop();if($_f_file_id_params$$=await file.findOne({_id:$_f_file_id_params$$}))$item$$.file=$_f_file_id_params$$.file}$item$$.parameters&&$item$$.parameters.length>0||($_f_file_id_params$$=await parameter.find({id_app:$user$$.current_id_app,id_rpt:$item$$._id.toString()}).lean(),$_f_file_id_params$$.forEach(($r$$,$i$$)=>{$r$$.line=$i$$}),$item$$.parameters=$_f_file_id_params$$)},()=>{$next$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("rptform"),controller=require("../../controllers/controller"),rptform=function($router$$){(new controller($router$$,model,"rptform",{sort:{rptform_name:1},unique:["form_code"],notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:async($user$$,$items$$,$next$$,$options$$)=>{for(let $obj$$ of $items$$){var $has_field_report_report$$=$options$$&&$options$$.req&&$options$$.req.query&&(!$options$$.req.query.fields||$options$$.req.query.fields.indexOf("report")>=
|
|
2
|
+
0&&$options$$.req.query.fields.indexOf("form_kbm")>=0);if($obj$$.form_kbm&&$obj$$.report?.length==0&&$has_field_report_report$$&&($has_field_report_report$$=await global.getModel($obj$$.form_kbm).find({id_app:$user$$.current_id_app,id_rptform:$obj$$._id.toString()}).sort({stt:1}).lean(),$has_field_report_report$$.length>0)){let $form_code$$=$obj$$.form_code||$obj$$._id.toString();$obj$$.report=$has_field_report_report$$;$obj$$.form_code=$form_code$$;await model.updateOne({_id:$obj$$._id},{report:$has_field_report_report$$,
|
|
3
|
+
form_code:$form_code$$}).catch(Logger.error)}}$next$$(null,$items$$)},onCreated:async($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)}})).route()};module.exports=rptform;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("shortcut"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"shortcut",{sort:{stt:1},notNeedRight:!0,onFinding:($user$$,$condition$$,$next$$)=>{$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("smsaccount"),controller=require("../../controllers/controller"),permission=require("../../libs/permission"),async=require("async");module.exports=function($router$$){(new controller($router$$,model,"smsaccount",{onView:async($user$$,$items$$,$next$$)=>{async.map($items$$,($item$$,$cb$$)=>{permission.isAdmin($item$$.id_app,$user$$.email,function($e$$,$admin$$){$admin$$||delete $item$$.script_send;$cb$$()})},()=>{$next$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("smssend"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"smssend",{onCreated:async($user$$,$obj$$,$next$$)=>{try{let $account$$=await global.getModel("smsaccount").findOne({id_app:$obj$$.id_app,_id:$obj$$.id_account}).lean();$account$$?(await global.getModel("smsaccount").send($account$$,$obj$$.phone,$obj$$.content),$obj$$.result={msg:"\u0110\u00e3 g\u1eedi y\u00eau c\u1ea7u th\u00e0nh c\u00f4ng",code:0}):$obj$$.result={msg:"Kh\u00f4ng th\u1ec3 g\u1eedi",error:"T\u00e0i kho\u1ea3n sms kh\u00f4ng t\u1ed3n t\u1ea1i",
|
|
3
|
+
code:-1}}catch($e$$){$obj$$.result={msg:"Kh\u00f4ng th\u1ec3 g\u1eedi",error:$e$$.message||$e$$.error||$e$$,code:-1}}await model.updateOne({_id:$obj$$._id},{result:$obj$$.result}).catch(console.error);$next$$(null,$obj$$)}})).route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("sosanxuat"),Lenhsx=global.getModel("lenhsx"),Dmbp=global.getModel("dmbp"),Dmvt=global.getModel("dmvt"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"sosanxuat",{sort:{id_lenhsx:1},onView:($u$$,$items$$,$next$$)=>{let $id_app$$=$u$$.current_id_app;async.parallel({lsx:$callback$$=>{$items$$.joinModel2($id_app$$,Lenhsx,[{where:$item$$=>({_id:$item$$.id_lenhsx}),fields:[{so_lenh_sx:"so_ct",ngay_lenh_sx:"ngay_ct"}]}],function(){$callback$$()})},sp:$callback$$=>{$items$$.joinModel2($id_app$$,Dmvt,[{where:$item$$=>({ma_vt:$item$$.ma_sp}),fields:[{ten_sp:"ten_vt"}]}],function(){$callback$$()})},
|
|
3
|
+
bp:$callback$$=>{$items$$.joinModel2($id_app$$,Dmbp,[{where:$item$$=>({ma_bp:$item$$.ma_bp}),fields:[{ten_bp:"ten_bp"}]}],function(){$callback$$()})},tt:$callback$$=>{$items$$.joinModel2(null,Trangthai,[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]}],function(){$callback$$()})},tinh_sl_ht:$callback$$=>{async.mapLimit($items$$.filter($item$$=>$item$$.ma_ct==="LENHSX"),20,($item$$,$callback$$)=>{$item$$.bold=!0;model.find({id_lenhsx:$item$$.id_lenhsx,ma_cong_doan:$item$$.ma_cong_doan,
|
|
4
|
+
ma_sp:$item$$.ma_sp}).lean().exec(($e$$,$rs$$)=>{$item$$.sl_ht=$rs$$.map($r$$=>$r$$.sl_ht||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$callback$$()})},()=>{$callback$$()})}},()=>{$next$$(null,$items$$)})},onUpdating:($u$$,$data$$,$obj$$,$next$$)=>{$next$$("Kh\u00f4ng \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt danh m\u1ee5c n\u00e0y")}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("step"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"step",{sort:{date_created:-1},require_id_app:!1})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("strategicdiagram"),strategicplan=global.getModel("strategicplan"),controller=require("../../controllers/controller"),strategicdiagram=function($router$$){(new controller($router$$,model,"strategicdiagram",{onDeleted:($user$$,$obj$$,$next$$)=>{strategicplan.deleteMany({id_link:$obj$$._id.toString()});$next$$(null,$obj$$)}})).route()};module.exports=strategicdiagram;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("strategicgoal"),task=global.getModel("task"),strategicobjective=global.getModel("strategicobjective"),strategickpi=global.getModel("strategickpi"),strategicplan=global.getModel("strategicplan"),msg2=global.getModel("message2"),controller=require("../../controllers/controller"),strategicgoal=function($router$$){(new controller($router$$,model,"strategicgoal",{onView:async($user$$,$items$$,$next$$)=>{await Promise.all($items$$.map($item$$=>(async()=>{$item$$.num_tasks=await task.countDocuments({id_link:$item$$._id.toString()});
|
|
2
|
+
$item$$.objectives=await strategicobjective.find({id_link:$item$$._id.toString()},{_id:1,title:1});$item$$.kpis=await strategickpi.find({id_link:{$in:$item$$.objectives.map($g$$=>$g$$._id.toString())}},{_id:1,name:1})})()));await $items$$.asyncJoinModel2($user$$.current_id_app,strategicplan,{where:{id_link:"_id"},fields:{strategicplan_title:"title",start_year:"start_year",number_of_years:"number_of_years"}});$next$$(null,$items$$)},onDeleted:($user$$,$obj$$,$next$$)=>{strategicobjective.deleteMany({id_link:$obj$$._id.toString()});
|
|
3
|
+
msg2.deleteMany({id_link:$obj$$._id.toString()});task.deleteMany({id_job:$obj$$._id.toString()});$next$$(null,$obj$$)}})).route()};module.exports=strategicgoal;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const model=global.getModel("strategickpi"),User=global.getModel("user"),strategicobjective=global.getModel("strategicobjective"),dmbp=global.getModel("dmbp"),msg2=global.getModel("message2"),task=global.getModel("task"),checkinactivity=global.getModel("checkinkpi"),controller=require("../../controllers/controller"),{onAfterCommit}=require("../../libs/sessionContext"),createCheckin=async $item$$=>{onAfterCommit(async()=>{let $checkin_month$$=[];for(let $m$$=0;$m$$<12;$m$$++)$checkin_month$$.push($m$$+
|
|
2
|
+
1);let $remain_value$$=Math.abs($item$$.target_value-$item$$.current_value);$item$$.aim===2&&($checkin_month$$=$checkin_month$$.sort(($a$$,$b$$)=>$b$$-$a$$));await Promise.all($checkin_month$$.map($month$$=>{let $yearly_target$$=0;$remain_value$$&&($yearly_target$$=Math.roundBy($month$$/12*$remain_value$$));return checkinactivity.create({id_app:$item$$.id_app,id_link:$item$$._id.toString(),month:$month$$,year:$item$$.year,trang_thai:"0",phu_trach:$item$$.phu_trach,yearly_target:$yearly_target$$,target_value:$yearly_target$$,
|
|
3
|
+
score:0,attends:$item$$.attends})}))})},strategickpi=function($router$$){(new controller($router$$,model,"strategickpi",{sort:{year:1},unique:["id_link","year"],onView:async($user$$,$items$$,$next$$)=>{$items$$=await Promise.all($items$$.map($item$$=>model.asyncGetScore($item$$)));await $items$$.asyncJoinModel2($user$$.current_id_app,strategicobjective,{where:{id_link:"_id"},fields:{strategicobjective_title:"title"}});await $items$$.asyncJoinModel2(null,User,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});
|
|
4
|
+
await $items$$.asyncJoinModel2($user$$.current_id_app,dmbp,{where:{ma_bp:"ma_bp"},fields:{ten_bp:"ten_bp"}});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{switch($obj$$.aim){case 1:if($obj$$.target_value<$obj$$.current_value)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i l\u1edbn h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i");break;case 2:if($obj$$.target_value<$obj$$.current_value)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i nh\u1ecf h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i")}$next$$(null,
|
|
5
|
+
$obj$$)},onCreated:async($user$$,$item$$,$next$$)=>{await createCheckin($item$$);return $next$$(null,$item$$)},onUpdating:async($target_value_user$$,$data$$,$obj$$,$next$$)=>{$target_value_user$$=$data$$.target_value||$obj$$.target_value;let $current_value$$=$data$$.current_value||$obj$$.current_value;switch($data$$.aim||$obj$$.aim){case 1:if($target_value_user$$<$current_value$$)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i l\u1edbn h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i");
|
|
6
|
+
break;case 2:if($target_value_user$$<$current_value$$)return $next$$("Gi\u00e1 tr\u1ecb m\u1ee5c ti\u00eau ph\u1ea3i nh\u1ecf h\u01a1n gi\u00e1 tr\u1ecb hi\u1ec7n t\u1ea1i")}if($data$$.year&&$data$$.year!==$obj$$.year||$data$$.aim&&$data$$.aim!==$obj$$.aim)Logger.info("delete old checkins"),await checkinactivity.deleteMany({id_link:$obj$$._id.toString()});$next$$(null,$data$$,$obj$$)},onUpdated:async($user$$,$obj$$,$next$$)=>{(await checkinactivity.find({id_link:$obj$$._id.toString()})).length===
|
|
7
|
+
0&&await createCheckin($obj$$);return $next$$(null,$obj$$)},onDeleted:($user$$,$item$$,$next$$)=>{checkinactivity.deleteMany({id_link:$item$$._id.toString()});msg2.deleteMany({id_link:$item$$._id.toString()});task.deleteMany({id_link:$item$$._id.toString()});$next$$(null,$item$$)}})).route()};module.exports=strategickpi;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("strategicobjective"),strategicgoal=global.getModel("strategicgoal"),strategickpi=global.getModel("strategickpi"),strategicplan=global.getModel("strategicplan"),task=global.getModel("task"),msg2=global.getModel("message2"),controller=require("../../controllers/controller"),strategicobjective=function($router$$){(new controller($router$$,model,"strategicobjective",{onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,strategicgoal,
|
|
2
|
+
{where:{id_link:"_id"},fields:{strategicgoal_title:"title",id_plan:"id_link"}});await $items$$.asyncJoinModel2($user$$.current_id_app,strategicplan,{where:{id_plan:"_id"},fields:{strategicplan_title:"title",start_year:"start_year",number_of_years:"number_of_years"}});await Promise.all($items$$.map($item$$=>(async()=>{$item$$.num_tasks=await task.countDocuments({id_link:$item$$._id.toString()});$item$$.kpis=await strategickpi.find({id_link:$item$$._id.toString()},{_id:1,name:1})})()));$next$$(null,
|
|
3
|
+
$items$$)},onDeleted:($user$$,$obj$$,$next$$)=>{msg2.deleteMany({id_link:$obj$$._id.toString()});task.deleteMany({id_job:$obj$$._id.toString()});$next$$(null,$obj$$)}})).route()};module.exports=strategicobjective;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const model=global.getModel("strategicplan"),task=global.getModel("task"),Trangthai=global.getModel("trangthai"),User=global.getModel("user"),strategicgoal=global.getModel("strategicgoal"),strategicobjective=global.getModel("strategicobjective"),strategickpi=global.getModel("strategickpi"),msg2=global.getModel("message2"),controller=require("../../controllers/controller"),{round}=require("../../libs/utils"),getChil=async $chils_id$$=>{$chils_id$$=await model.find({id_parent:$chils_id$$.toString()}).lean();
|
|
2
|
+
$chils_id$$=$chils_id$$.map($c$$=>$c$$._id.toString());if($chils_id$$.length>0){const $cs$$=(await Promise.all($chils_id$$.map($c$$=>getChil($c$$)))).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$cs$$&&$cs$$.length>0&&($chils_id$$=[...$chils_id$$,...$cs$$])}return $chils_id$$.filter($a$$=>!!$a$$)},strategicplan=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"strategicplan",{onView:async($user$$,$items$$,$next$$)=>{await Promise.all($items$$.map($item$$=>(async()=>{var $num_krs_strategicplan_children$$=
|
|
3
|
+
await getChil($item$$._id);$num_krs_strategicplan_children$$.push($item$$._id.toString());var $krs_score_krs$$=await strategicgoal.find({id_link:{$in:$num_krs_strategicplan_children$$}});$num_krs_strategicplan_children$$=$krs_score_krs$$.length;$krs_score_krs$$=await Promise.all($krs_score_krs$$.map($ks$$=>strategicgoal.asyncGetScore($ks$$)));$item$$.score=$num_krs_strategicplan_children$$?round($krs_score_krs$$.map($ks$$=>$ks$$.score).reduce(($a$$,$b$$)=>$a$$+$b$$,0)/$num_krs_strategicplan_children$$,
|
|
4
|
+
2):0;$item$$.num_tasks=await task.countDocuments({id_job:$item$$._id.toString()});$item$$.goals=await strategicgoal.find({id_link:$item$$._id.toString()},{_id:1,title:1});$item$$.objectives=await strategicobjective.find({id_link:{$in:$item$$.goals.map($g$$=>$g$$._id.toString())}},{_id:1,title:1});$item$$.kpis=await strategickpi.find({id_link:{$in:$item$$.objectives.map($g$$=>$g$$._id.toString())}},{_id:1,name:1})})()));await $items$$.asyncJoinModel2(null,User,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});
|
|
5
|
+
await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"STRATEGICPLAN"}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)},onDeleted:($user$$,$obj$$,$next$$)=>{strategicgoal.deleteMany({id_link:$obj$$._id.toString()});msg2.deleteMany({id_link:$obj$$._id.toString()});task.deleteMany({id_job:$obj$$._id.toString()});$next$$(null,$obj$$)}});$contr_router$$.createRoute("chilrend-ids/:id_parent",async($id_parent_req$$,$callback$$)=>{$id_parent_req$$=
|
|
6
|
+
$id_parent_req$$.params.id_parent;const $ids$$=await getChil($id_parent_req$$);Logger.info("get id strategicplans",$ids$$);$callback$$(null,[...$ids$$,$id_parent_req$$])});$contr_router$$.route()};module.exports=strategicplan;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("support"),chucvu=global.getModel("group"),User=global.getModel("user"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"support",{sort:{support_user:1},unique:["id_link","support_user"],onView:($user$$,$items$$,$callback$$)=>{async.series({u:$callback$$=>{$items$$.joinModel2(null,User,[{where:{support_user:"email"},fields:[{support_name:"name"},{picture:"picture"}]}],function(){$callback$$(null,$items$$)},{cache:!1})},cv:$callback$$=>{$items$$.joinModel2(null,chucvu,[{where:{chuc_vu:"_id"},fields:[{ten_chuc_vu:"group_name"},{ten_chuc_vu_en:"group_name_en"}]}],
|
|
3
|
+
function(){$callback$$(null,$items$$)})}},()=>{$callback$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const model=global.getModel("task"),controller=require("../../controllers/controller"),customer=global.getModel("customer"),Participant=global.getModel("participant"),User=global.getModel("user"),UserGroup=global.getModel("usergroup"),Message2setting=global.getModel("message2setting"),Message2=global.getModel("message2"),Group=global.getModel("group"),dmdt=global.getModel("dmdt"),Dmbp=global.getModel("dmbp"),Dmnv=global.getModel("dmnv"),dokho=global.getModel("dokho"),link=global.getModel("link"),
|
|
2
|
+
Schedule=global.getModel("schedule"),Trangthai=global.getModel("trangthai"),File=global.getModel("file"),async=require("async"),PostSocai=require("../../libs/post-socai"),ma_ct="TASK",Moment=require("moment"),{onAfterCommit}=require("../../libs/sessionContext");
|
|
3
|
+
async function createSchedule($data_obj$$){await Schedule.removeScheduleLink($data_obj$$._id.toString());let $time_run$$=new Date($data_obj$$.start_date);$data_obj$$.nhac_nho_truoc=$data_obj$$.nhac_nho_truoc||0;$time_run$$.setMinutes($time_run$$.getMinutes()-$data_obj$$.nhac_nho_truoc);if(!($data_obj$$.progress!="0"||$time_run$$<new Date)&&$data_obj$$.nhac_nho_truoc){$data_obj$$=$data_obj$$.toObject?$data_obj$$.toObject():{...$data_obj$$};var $users_will_receive$$=$data_obj$$.attends||[];$data_obj$$.phu_trach&&
|
|
4
|
+
$users_will_receive$$.push($data_obj$$.phu_trach);$users_will_receive$$.length===0&&$users_will_receive$$.push($data_obj$$.user_created);$users_will_receive$$=[...(new Set($users_will_receive$$))];$data_obj$$.title="Nh\u1eafc c\u00f4ng vi\u1ec7c: "+$data_obj$$.ten_cv;$data_obj$$.users_will_receive=$users_will_receive$$;$data_obj$$.code="task";Schedule.addSchedule({id_link:$data_obj$$._id.toString(),action:"sendNotification",data:$data_obj$$,title:$data_obj$$.title,time_run:$time_run$$,trang_thai:"0",
|
|
5
|
+
status:!0,user_created:$data_obj$$.user_created,user_updated:$data_obj$$.user_created})}}
|
|
6
|
+
const createLink=async($user$$,$obj$$,$next$$)=>{onAfterCommit(async()=>{$obj$$.id_kh&&link.find({$or:[{id_a:$obj$$._id,id_b:$obj$$.id_kh},{id_a:$obj$$.id_kh,id_b:$obj$$._id}]}).lean().then(function($rs$$){$rs$$&&$rs$$.length!==0||(new link({id_app:$obj$$.id_app,id_a:$obj$$.id_kh,id_b:$obj$$._id,collection_a:"dmkh",collection_b:"task"})).save(function($e$$){$e$$&&Logger.error($e$$)})}).catch($e$$=>{Logger.error($e$$)});$obj$$.id_dt&&link.find({$or:[{id_a:$obj$$._id,id_b:$obj$$.id_dt},{id_a:$obj$$.id_dt,
|
|
7
|
+
id_b:$obj$$._id}]}).lean().then(function($rs$$){$rs$$&&$rs$$.length!==0||(new link({id_app:$obj$$.id_app,id_a:$obj$$.id_dt,id_b:$obj$$._id,collection_a:"dmdt",collection_b:"task"})).save(function($e$$){$e$$&&Logger.error($e$$)})}).catch($e$$=>{Logger.error($e$$)});if($obj$$.nh_cv&&global.mongoose.Types.ObjectId.isValid($obj$$.nh_cv)){let $attends$$=$obj$$.attends||[],$_group$$=await Group.findOne({_id:$obj$$.nh_cv});$_group$$&&($_group$$.attends=[...(new Set([...($_group$$.attends||[]),...$attends$$]))],
|
|
8
|
+
$_group$$.save($e$$=>{$e$$&&Logger.error("Can't update task group",$e$$,$_group$$)}))}createSchedule($obj$$);$next$$(null,$obj$$)})};
|
|
9
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{sort:{start_date:-1},users_receive_notification_default:[{trang_thai:"0",content:"C\u00f4ng vi\u1ec7c m\u1edbi: {{ten_cv}}",send_phu_trach:!0,send_attends:!0,send_to_user_created:!1},{trang_thai:"1",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111ang \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n',send_phu_trach:!0,send_attends:!0,send_to_customer:!0,send_to_user_created:!1},{trang_thai:"3",
|
|
10
|
+
content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111\u00e3 ho\u00e0n th\u00e0nh',send_phu_trach:!0,send_attends:!0,send_to_customer:!0,send_to_user_created:!1},{trang_thai:"4",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111\u00e3 t\u1ea1m d\u1eebng',send_phu_trach:!0,send_attends:!0,send_to_user_created:!1},{trang_thai:"5",content:'C\u00f4ng vi\u1ec7c "{{ten_cv}}" \u0111ang ch\u1edd',send_phu_trach:!0,send_attends:!0,send_to_user_created:!1}],onFinding:function($user$$,$condition$$,$next$$){async.parallel({find_ten_kh:function($callback$$){setImmediate(()=>
|
|
11
|
+
{$condition$$.ten_kh?customer.find({id_app:$user$$.current_id_app,ten_kh:{$regex:$condition$$.ten_kh,$options:"i"}},{_id:1}).lean().then(function($id_khs_khs$$){delete $condition$$.ten_kh;$id_khs_khs$$=$id_khs_khs$$.map($k$$=>$k$$._id);$condition$$.id_kh={$in:$id_khs_khs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)}):$callback$$()})},find_ten_dt:function($callback$$){setImmediate(()=>{$condition$$.ten_dt?dmdt.find({id_app:$user$$.current_id_app,ten_dt:{$regex:$condition$$.ten_dt,$options:"i"}},
|
|
12
|
+
{_id:1}).lean().then(function($id_khs$jscomp$1_khs$$){delete $condition$$.ten_dt;$id_khs$jscomp$1_khs$$=$id_khs$jscomp$1_khs$$.map($k$$=>$k$$._id);$condition$$.id_dt={$in:$id_khs$jscomp$1_khs$$};$callback$$()}).catch($e$$=>{$callback$$($e$$)}):$callback$$()})}},function($e$$){if($e$$)return $next$$($e$$);$next$$(null,$condition$$)})},onFound:($user$$,$condition$$,$items$$,$next$$)=>{$next$$(null,$items$$)},onView:function($user$$,$items$$,$next$$){async.series({trangthai:function($callback$$){setImmediate(()=>
|
|
13
|
+
{$items$$.filter($item$$=>$item$$.progress!==void 0).joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.progress.toString(),ma_ct:"TASK"}),fields:["ten_trang_thai","color","allow_update"]}],function(){$callback$$()})})},nh_cv:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.nh_cv).joinModel2($user$$.current_id_app,Group,[{where:{nh_cv:"_id"},fields:[{name:"ten_nh_cv",value:"group_name"}]}],function(){$callback$$(null,$items$$)})})},phu_trach:function($callback$$){setImmediate(()=>
|
|
14
|
+
{(async()=>{await $items$$.filter($item$$=>$item$$.phu_trach).asyncJoinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{name:"nhom_phu_trach",value:"group_id"},{name:"ten_phu_trach",value:"name"}]}]);await $items$$.filter($item$$=>$item$$.nhom_phu_trach).asyncJoinModel2($user$$.current_id_app,UserGroup,[{where:{nhom_phu_trach:"_id"},fields:[{name:"ten_nhom_phu_trach",value:"group_name"}]}]);await $items$$.filter($item$$=>$item$$.nguoi_kiem_tra).asyncJoinModel2(null,User,
|
|
15
|
+
[{where:{nguoi_kiem_tra:"email"},fields:[{name:"ten_nguoi_kiem_tra",value:"name"}]}]);await $items$$.filter($item$$=>$item$$.nguoi_thuc_hien).asyncJoinModel2(null,User,[{where:{nguoi_thuc_hien:"email"},fields:[{name:"ten_nguoi_thuc_hien",value:"name"}]}])})().then(()=>{$callback$$(null,$items$$)}).catch($e$$=>{$callback$$($e$$)})})},kh:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_kh).joinModel2($user$$.current_id_app,customer,[{where:{id_kh:"_id"},fields:[{name:"ten_kh",
|
|
16
|
+
value:"ten_kh"}]}],function(){$callback$$(null,$items$$)})})},dkho:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_dokho).joinModel2($user$$.current_id_app,dokho,[{where:{id_dokho:"_id"},fields:[{name:"ten_dokho",value:"ten_dokho"}]}],function(){$callback$$(null,$items$$)})})},project:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_dt).joinModel2($user$$.current_id_app,dmdt,[{where:{id_dt:"_id"},fields:[{name:"ten_dt",value:"ten_dt"}]}],function(){$callback$$(null,
|
|
17
|
+
$items$$)})})},bp:function($callback$$){setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_bp).joinModel2($user$$.current_id_app,Dmbp,[{where:{id_bp:"_id"},fields:[{name:"ten_bp",value:"ten_bp"}]}],function(){$callback$$(null,$items$$)})})},file:$callback$$=>{setImmediate(()=>{$items$$.filter($item$$=>$item$$.id_link).joinModel2($user$$.current_id_app,File,[{where:$item$$=>({id_link:$item$$._id}),setFields:($item$$,$data$$)=>{$item$$.avatarFile=$data$$}}],function(){$callback$$(null,$items$$)})})}},
|
|
18
|
+
function(){setImmediate(()=>{const $last_week$$=new Date;$last_week$$.setDate($last_week$$.getDate()-7);$items$$.forEach(function($item$$){$item$$.ten_kh===void 0&&($item$$.ten_kh="");!$item$$.saved&&$item$$.finished_date&&$item$$.progress=="3"&&(new Date($item$$.finished_date)).getTime()<=$last_week$$.getTime()&&model.updateOne({_id:$item$$._id},{saved:!0},()=>{})});$next$$(null,$items$$)})})},onCreating:async($user$$,$obj$$,$next$$)=>{$obj$$.attends&&($obj$$.attends=[...(new Set($obj$$.attends))]);
|
|
19
|
+
setImmediate(async()=>{$obj$$.ma_ct=ma_ct;$obj$$.due_date=$obj$$.due_date||$obj$$.start_date;if(!$obj$$.nh_cv&&$obj$$.group_id_link){let $g$$=await Group.findOne({id_link:$obj$$.group_id_link,id_app:$user$$.current_id_app,group_type:"TASK"});$g$$?$obj$$.nh_cv=$g$$._id.toString():$obj$$.group_name_link&&($g$$=await Group.create({group_type:"TASK",id_link:$obj$$.group_id_link,id_app:$user$$.current_id_app,group_name:$obj$$.group_name_link,phu_trach:$obj$$.phu_trach||$user$$.email,attends:$obj$$.attends}),
|
|
20
|
+
$obj$$.nh_cv=$g$$._id.toString())}if(!$obj$$.id_bp&&$obj$$.phu_trach)try{let $nv$$=await Dmnv.findOne({id_app:$obj$$.id_app,user:$obj$$.phu_trach},{ma_bp:1,bo_phan:1}).lean();if($nv$$){let $bo_phan$$=($nv$$.bo_phan||[]).filter($b$$=>!$b$$.den_ngay||$b$$.den_ngay>=new Date);if($bo_phan$$.length>0){let $id_bp$$=await Dmbp.getInfo($obj$$.id_app,{ma_bp:$bo_phan$$[0].ma_bp},"_id");$obj$$.id_bp=$id_bp$$;await model.updateOne({_id:$obj$$._id},{id_bp:$id_bp$$})}else if($nv$$.ma_bp){let $id_bp$$=await Dmbp.getInfo($obj$$.id_app,
|
|
21
|
+
{ma_bp:$nv$$.ma_bp},"_id");$obj$$.id_bp=$id_bp$$;await model.updateOne({_id:$obj$$._id},{id_bp:$id_bp$$})}}}catch($e$$){Logger.error($e$$)}$next$$(null,$obj$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{$data$$.attends=$data$$.attends||$obj$$.attends;$data$$.attends&&($data$$.attends=[...(new Set($data$$.attends))]);setImmediate(async()=>{$data$$.ma_ct=$obj$$.ma_ct||ma_ct;$data$$.due_date=$data$$.due_date||$obj$$.due_date||$data$$.start_date||$obj$$.start_date;$data$$.progress!="1"&&$data$$.progress!=
|
|
22
|
+
"2"||$data$$.nguoi_thuc_hien||$obj$$.nguoi_thuc_hien||($data$$.nguoi_thuc_hien=$user$$.email);$data$$.progress=="3"&&($data$$.nguoi_thuc_hien||$obj$$.nguoi_thuc_hien||($data$$.nguoi_thuc_hien=$user$$.email),$obj$$.progress!="2"||$data$$.nguoi_kiem_tra||($data$$.nguoi_kiem_tra=$user$$.email));let $_progress$$=$data$$.progress||$obj$$.progress;$_progress$$=="3"&&$obj$$.progress!=$_progress$$&&($data$$.finished_date=new Date,$data$$.da_thu=$obj$$.da_thu||$data$$.da_thu||$obj$$.thu_phi);if($obj$$.da_thu||
|
|
23
|
+
$data$$.da_thu)$data$$.ngay_ct=$obj$$.ngay_ct||$data$$.ngay_ct||new Date;$next$$(null,$data$$,$obj$$)})},onCreated:function($user$$,$obj$$,$next$$){createLink($user$$,$obj$$,function($e$$){if($e$$)return Logger.error($e$$)});$next$$(null,$obj$$)},onUpdated:function($user$$,$obj$$,$next$$){createLink($user$$,$obj$$,async($e$$,$obj$$)=>{if($e$$)return Logger.error($e$$);if($e$$=await Message2setting.findOne({id_link:$obj$$._id.toString()})){$obj$$.phu_trach!==$e$$.phu_trach&&($e$$.phu_trach=$obj$$.phu_trach,
|
|
24
|
+
$e$$.attends.push($obj$$.user_created));let $attends$$=[...(new Set([...$e$$.attends,...$obj$$.attends]))];$e$$.attends=$attends$$;await $e$$.save();await Message2.updateMany({id_link:$obj$$._id.toString()},{$set:{attends:$attends$$}}).catch(console.error)}});$next$$(null,$obj$$)},onDeleted:async function($user$$,$obj$$,$next$$){onAfterCommit(async()=>{await Schedule.removeScheduleLink($obj$$._id.toString());await Message2.deleteMany({id_link:$obj$$._id.toString()});await Message2setting.deleteOne({id_link:$obj$$._id.toString()})});
|
|
25
|
+
$next$$(null,$obj$$)},onSaving:async($sl_ht_user$$,$obj$$)=>{$obj$$.progress=="3"?($obj$$.percent=100,$obj$$.todos&&$obj$$.todos.length>0&&$obj$$.todos.forEach($t$$=>{$t$$.sel=!0})):$obj$$.progress=="9"?$obj$$.percent=0:$obj$$.todos&&$obj$$.todos.length>0?($sl_ht_user$$=$obj$$.todos.filter($t$$=>$t$$.sel).length,$obj$$.percent=Math.min(100,$sl_ht_user$$/$obj$$.todos.length*100)):$obj$$.percent=0}});$contr_router$$.post=function($obj$$,$fn$$){$fn$$||=function(){};async.series({post_socai:$callback$$=>
|
|
26
|
+
{setImmediate(()=>{let $_obj$$;$_obj$$=$obj$$.toObject?$obj$$.toObject():Object.assign({},$obj$$);$_obj$$.so_ct=$_obj$$.so_ct||`TDV${Moment().format("YYMMDDhh:mmss")}`;$_obj$$.ngay_ct=$_obj$$.ngay_ct||new Date;$_obj$$.trang_thai=$_obj$$.progress.toString();$_obj$$.dien_giai=`${$_obj$$.ten_cv}`;$_obj$$.ma_kh=$_obj$$.phu_trach;$_obj$$.ma_nt=$_obj$$.ma_nt||"VND";$_obj$$.ty_gia=$_obj$$.ty_gia||1;$_obj$$.ma_dvcs=$_obj$$.ma_dvcs||"--";$_obj$$.details=[];$_obj$$.da_thu&&$_obj$$.details.push({dien_giai:`Thu h\u1ed9 c\u00f4ng ty d\u1ecbch v\u1ee5 ${$_obj$$.ten_cv}`,
|
|
27
|
+
tien_nt:$_obj$$.da_thu||0,tien:$_obj$$.da_thu||0,tk_no:$_obj$$.tk_no||"131111",tk_co:$_obj$$.tk_co||"51131"});$_obj$$.tien_hoa_hong&&$_obj$$.details.push({dien_giai:`Hoa h\u1ed3ng cho d\u1ecbch v\u1ee5 ${$_obj$$.ten_cv}`,tien_nt:$_obj$$.tien_hoa_hong||0,tien:$_obj$$.tien_hoa_hong||0,tk_no:$_obj$$.tk_no_hh||"51131",tk_co:$_obj$$.tk_co_hh||"131111"});(new PostSocai($_obj$$,$_obj$$.details,function($detail$$,$callback$$){$callback$$($detail$$)})).run(($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}},function($e$$,
|
|
28
|
+
$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("tc"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"tc",{sort:{ma_tc:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,unique:["ma_tc"]})).route()};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const model=global.getModel("templaterpt"),options=global.getModel("options"),controller=require("../../controllers/controller"),fs=require("fs"),path=require("path");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"templaterpt",{sort:{ma_cn:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onFound:($user$$,$c$$,$obj4view$$,$callback$$)=>{$c$$.ma_cn&&$obj4view$$.length===0?(new Promise($resole$$=>{options.findOne({id_app:$user$$.current_id_app,id_func:{$regex:$c$$.ma_cn,$options:"i"}}).lean().exec(($e$$,$op$$)=>{let $templateDefault$$;$op$$&&$op$$.option&&$op$$.option.system&&$op$$.option.system.templateRpt&&
|
|
3
|
+
($templateDefault$$=$op$$.option.system.templateRpt);$resole$$($templateDefault$$)})})).then($templateDefault$$=>new Promise($resole$$=>{if($templateDefault$$)return Logger.info("get default rpt from options"),$resole$$($templateDefault$$);let $df_file_tmp$$=`${path.dirname(path.dirname(__dirname))}/templates/rpts/${$c$$.ma_cn.toLowerCase()}.html`;if(!fs.existsSync($df_file_tmp$$)&&($df_file_tmp$$=`${path.dirname(path.dirname(__dirname))}/templates/rpts/reports/${$c$$.ma_cn.toLowerCase()}/templates/print.html`,
|
|
4
|
+
!fs.existsSync($df_file_tmp$$)&&($df_file_tmp$$=`${path.dirname(path.dirname(__dirname))}/templates/rpts/vouchers/${$c$$.ma_cn.toLowerCase()}/templates/print.html`,!fs.existsSync($df_file_tmp$$))))return $resole$$(null);fs.readFile($df_file_tmp$$,"utf8",($err$$,$str$$)=>{Logger.info("get default rpt from file");$resole$$($str$$)})})).then($str$$=>{$str$$?(new model({ma_cn:$c$$.ma_cn,ten_mau_in:"M\u1eabu m\u1eb7c \u0111\u1ecbnh",id_app:$user$$.current_id_app,html_code:$str$$,options:{}})).save(($e$$,
|
|
5
|
+
$rs$$)=>{$rs$$&&$obj4view$$.push($rs$$.toObject());$callback$$(null,$obj4view$$)}):$callback$$(null,$obj4view$$)}):$callback$$(null,$obj4view$$)}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("templatevoucher"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"templatevoucher",{sort:{voucher_code:1,code:1},unique:["voucher_code","code"],notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1})).route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("tontucthoi"),controller=require("../../controllers/controller"),dvcs=global.getModel("dvcs"),dmvt=global.getModel("dmvt"),dmkho=global.getModel("dmkho"),async=require("async"),tontucthoi=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"tontucthoi",{sort:{ma_dvcs:1,ma_kho:1,ma_vt:1,han_sd:1}});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series({dvcs:function($callback$$){$result$$.filter($r$$=>
|
|
2
|
+
$r$$.ma_dvcs).joinModel($id_app$$,dvcs,[{akey:"ma_dvcs",bkey:"_id",fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function($kq$$){$callback$$(null,$kq$$)})},tk:function($callback$$){$result$$.filter($r$$=>$r$$.ma_vt).joinModel($id_app$$,dmvt,[{akey:"ma_vt",bkey:"ma_vt",fields:[{name:"ten_vt",value:"ten_vt"}]}],function($kq$$){$callback$$(null,$kq$$)})},kho:function($callback$$){$result$$.filter($r$$=>$r$$.ma_kho).joinModel($id_app$$,dmkho,[{akey:"ma_kho",bkey:"ma_kho",fields:[{name:"ten_kho",value:"ten_kho"}]}],
|
|
3
|
+
function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})}};module.exports=tontucthoi;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("trangthaiapp"),controller=require("../../controllers/controller"),underscore=require("underscore");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"trangthaiapp",{notNeedRight:!0,unique:["ma_ct","ma_trang_thai"],sort:{ma_ct:1,stt:1}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){underscore.contains(configs.admins,$user$$.email)?$fn$$(null,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 x\u00f3a n\u1ed9i dung n\u00e0y")};$contr_router$$.creating=function($user$$,$data$$,$fn$$){underscore.contains(configs.admins,$user$$.email)?$fn$$(null,$data$$):
|
|
3
|
+
$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 t\u1ea1o n\u1ed9i dung n\u00e0y")};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){underscore.contains(configs.admins,$user$$.email)?$fn$$(null,$data$$,$obj$$):$fn$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt n\u1ed9i dung n\u00e0y")};$contr_router$$.route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("transaction"),Wallet=global.getModel("wallet"),ckdiem=require("../../libs/ckdiem"),controller=require("../../controllers/controller"),getBalance=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{ckdiem({id_app:$id_app$$,email:$email$$},($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$));$resolve$$($rs$$.length===0?0:$rs$$[0].ton00)})});
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"transaction",{sort:{ngay_ct:-1},onFinding:($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{$next$$("This API is invalid")},onCreating:($user$$,$obj$$,$next$$)=>{$next$$("This API is invalid")},onDeleting:($user$$,$obj$$,$next$$)=>{$next$$("This API is invalid")}});$contr_router$$.route();$contr_router$$.createRoute("createTrans",async($data$$,$next$$)=>
|
|
3
|
+
{let $body$$=$data$$.body,$receiver_email$$;try{$receiver_email$$=await Wallet.getEmail($data$$.user.current_id_app,$body$$.receiver)}catch($e$$){return $next$$($e$$.message)}if(await getBalance($data$$.user.current_id_app,$data$$.user.email)<$body$$.amount)return $next$$("S\u1ed1 d\u01b0 c\u1ee7a b\u1ea1n kh\u00f4ng \u0111\u1ee7 \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");$data$$={id_app:$data$$.user.current_id_app,sender_email:$data$$.user.email,receiver_email:$receiver_email$$,amount:$body$$.amount,
|
|
4
|
+
description:$body$$.description,otherData:{tk_no:$body$$.tk_no,tk_co:$body$$.tk_co,ngay_ct:new Date,so_ct:`TRANS${(new Date).getTime()}`,ma_ct:"transaction"}};try{let $rs$$=await model.createTrans($data$$);$next$$(null,$rs$$)}catch($e$$){return $next$$($e$$.message||$e$$)}},{method:"POST"})};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const model=global.getModel("usergroup"),participant=global.getModel("participant"),controller=require("../../controllers/controller"),{onAfterCommit}=require("../../libs/sessionContext"),{getCodeChildren}=require("../../libs/utils"),getSysorder=function($item$$,$callback$$){let $sysorder$$=$item$$._id.toString();$item$$.group_mother&&$item$$.group_mother!=$item$$._id.toString()?model.findOne({_id:$item$$.group_mother}).lean().exec(function($e$$,$item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=
|
|
2
|
+
$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):$callback$$($sysorder$$)}):$callback$$($sysorder$$)},usergroup=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"usergroup",{sort:{sysorder:1},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,participant,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});await $items$$.asyncJoinModel2($user$$.current_id_app,model,{where:{group_mother:"_id"},fields:{group_mother_name:"group_name"}});
|
|
3
|
+
$next$$(null,$items$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.group_mother&&(await getCodeChildren(model,$obj$$.id_app,$obj$$._id.toString(),"_id","group_mother")).indexOf($data$$.group_mother)>=0)return $next$$("Kh\u00f4ng th\u1ec3 ch\u1ecdn nh\u00f3m n\u00e0y l\u00e0m nh\u00f3m m\u1eb9");$next$$(null,$data$$,$obj$$)},onCreated:async($user$$,$obj$$,$next$$)=>{onAfterCommit(async()=>{if($obj$$.group_mother){let $rights$$=await global.getModel("right").find({id_app:$obj$$.id_app,
|
|
4
|
+
email:$obj$$.group_mother}).lean();$rights$$.length>0&&($rights$$.forEach($r$$=>{delete $r$$._id;delete $r$$.__v;$r$$.email=$obj$$._id.toString()}),await global.getModel("right").create($rights$$))}});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$$)})},onUpdated:async($user$$,$obj$$,$next$$)=>{getSysorder($obj$$,
|
|
5
|
+
async function($loai_nh_rs$$){$obj$$.sysorder=$loai_nh_rs$$;$obj$$.bac=$loai_nh_rs$$.split("---").length;$loai_nh_rs$$=1;await model.findOne({group_mother:$obj$$._id.toString()})&&($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$$.route();$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if($obj$$.loai_nh===0)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));
|
|
6
|
+
$next$$(null,$obj$$)};$contr_router$$.deleted=async function($user$$,$obj$$,$next$$){onAfterCommit(async()=>{await global.getModel("right").deleteMany({id_app:$obj$$.id_app,email:$obj$$._id.toString()})});$next$$(null,$obj$$)};$contr_router$$.on("saved",async function($obj$$){const $group_mother$$=$obj$$.group_mother;$group_mother$$&&await model.updateOne({id_app:$obj$$.id_app,_id:$group_mother$$},{$set:{loai_nh:0}}).catch(console.error)});$contr_router$$.on("deleted",async function($obj$$){$obj$$.group_mother&&
|
|
7
|
+
!await model.findOne({group_mother:$obj$$.group_mother}).catch(console.error)&&await model.updateOne({id_app:$obj$$.id_app,_id:$obj$$.group_mother},{$set:{loai_nh:1}}).catch(console.error)})};module.exports=usergroup;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("vat"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"vat",{sort:{ten_thue:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,unique:["ma_thue"]})).route()};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const model=global.getModel("vatra"),controller=require("../../controllers/controller"),vatra=function($router$$){(new controller($router$$,model,"vatra",{sort:{ngay_hd:-1},onImport:async($id_app_user$$,$data_so_hd$$,$columns_new_data$$,$next$$)=>{$columns_new_data$$=[];$id_app_user$$=$id_app_user$$.current_id_app;try{for(let $row$$ of $data_so_hd$$)if($row$$.id&&$row$$.thttltsuat&&$row$$.thttltsuat.length>0){let $so_ct$$=$row$$.shdon,$id_ct$$=$row$$.id,$_curr$$=await model.findOne({id_ct:$id_ct$$,
|
|
2
|
+
id_app:$id_app_user$$}).lean();if(!$_curr$$||!$_curr$$.id_hd){let $ngay_ct$$=new Date($row$$.tdlap);$data_so_hd$$=$so_ct$$;let $ngay_hd$$=$ngay_ct$$,$ma_so_thue$$=$row$$.nmmst,$ma_kh$$=$ma_so_thue$$,$dien_thoai$$=$row$$.nbsdthoai,$ten_kh$$=$row$$.nmten,$dia_chi$$=$row$$.nmdchi;for(let $thue$$ of $row$$.thttltsuat){let $ma_thue$$=$thue$$.tsuat.split("%")[0],$thue_suat$$=Number($ma_thue$$);if(!$ma_thue$$||isNaN($thue_suat$$))return $next$$("D\u1eef li\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7");let $ty_gia$$=
|
|
3
|
+
$row$$.tgia||1,$t_tien$$=$thue$$.thtien*$ty_gia$$,$t_thue$$=$thue$$.tthue*$ty_gia$$,$new_row$$={ma_ct:"VATRA",id_ct:$id_ct$$,so_ct:$so_ct$$,ngay_ct:$ngay_ct$$,co_quan_thue:$row$$.cqt,ma_hoa_don:$row$$.khmshdon,ky_hieu_hoa_don:$row$$.khhdon,ma_tc:$row$$.tchat,so_hd:$data_so_hd$$,ngay_hd:$ngay_hd$$,ma_nt:$row$$.dvtte,ty_gia:$ty_gia$$,ma_kh:$ma_kh$$,ten_kh:$ten_kh$$,dia_chi:$dia_chi$$,ma_so_thue:$ma_so_thue$$,dien_giai:$row$$.gchu,ma_thue:$ma_thue$$,thue_suat:$thue_suat$$,t_tien_nt:$thue$$.thtien,t_tien:$t_tien$$,
|
|
4
|
+
t_thue_nt:$thue$$.tthue,t_thue:$t_thue$$,t_hd_nt:$thue$$.thtien=$thue$$.tthue,t_hd:$t_tien$$+$t_thue$$,hddt:$row$$};$columns_new_data$$=$columns_new_data$$.concat($new_row$$)}await model.deleteMany({id_app:$id_app_user$$,id_ct:$id_ct$$});await global.getModel("customer").findOne({id_app:$id_app_user$$,ma_kh:$ma_kh$$},{_id:1}).lean()||await global.getModel("customer").create({id_app:$id_app_user$$,ma_kh:$ma_kh$$,ten_kh:$ten_kh$$,dia_chi:$dia_chi$$,ma_so_thue:$ma_so_thue$$,dien_thoai:$dien_thoai$$})}}else $columns_new_data$$.push($row$$)}catch($e$$){return $next$$($e$$)}$next$$(null,
|
|
5
|
+
$columns_new_data$$)}})).route()};module.exports=vatra;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const model=global.getModel("vatvao"),controller=require("../../controllers/controller"),vatvao=function($router$$){(new controller($router$$,model,"vatvao",{sort:{ngay_hd:-1},onImport:async($id_app_user$$,$data_so_hd$$,$columns_new_data$$,$next$$)=>{$columns_new_data$$=[];$id_app_user$$=$id_app_user$$.current_id_app;try{for(let $row$$ of $data_so_hd$$){if($row$$.thttltsuat||$row$$.thttltsuat.length==0)$row$$.tgtcthue?$row$$.thttltsuat=[{thtien:$row$$.tgtcthue,tthue:$row$$.tgtthue,tsuat:`${Math.round($row$$.tgtthue/
|
|
2
|
+
$row$$.tgtcthue*100)}%`}]:$row$$.tgtttbso&&($row$$.thttltsuat=[{thtien:$row$$.tgtttbso,tthue:0,tsuat:0,ma_thue:"KT"}]);if($row$$.id&&$row$$.thttltsuat&&$row$$.thttltsuat.length>0){let $so_ct$$=$row$$.shdon,$id_ct$$=$row$$.id,$_curr$$=await model.findOne({id_ct:$id_ct$$,id_app:$id_app_user$$}).lean();if(!$_curr$$||!$_curr$$.id_hd){let $ngay_ct$$=new Date($row$$.tdlap);$data_so_hd$$=$so_ct$$;let $ngay_hd$$=$ngay_ct$$,$ma_so_thue$$=$row$$.nbmst,$ma_kh$$=$ma_so_thue$$,$dien_thoai$$=$row$$.nbsdthoai,$ten_kh$$=
|
|
3
|
+
$row$$.nbten,$dia_chi$$=$row$$.nbdchi;for(let $thue$$ of $row$$.thttltsuat){let $thue_suat$$=$thue$$.tsuat.split("%")[0]||0;$thue_suat$$=Number($thue_suat$$);let $ma_thue$$=$thue$$.ma_thue||$thue_suat$$.toString();if(!$ma_thue$$||isNaN($thue_suat$$))return $next$$("D\u1eef li\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7");$ma_thue$$.length==1&&($ma_thue$$=`0${$ma_thue$$}`);let $ty_gia$$=$row$$.tgia||1,$t_tien$$=$thue$$.thtien*$ty_gia$$,$t_thue$$=$thue$$.tthue*$ty_gia$$;$columns_new_data$$=$columns_new_data$$.concat({ma_ct:"VATVAO",
|
|
4
|
+
id_ct:$id_ct$$,so_ct:$so_ct$$,ngay_ct:$ngay_ct$$,co_quan_thue:$row$$.cqt,ma_hoa_don:$row$$.khmshdon,ky_hieu_hoa_don:$row$$.khhdon,ma_tc:$row$$.tchat,so_hd:$data_so_hd$$,ngay_hd:$ngay_hd$$,ma_nt:$row$$.dvtte,ty_gia:$ty_gia$$,ma_kh:$ma_kh$$,ten_kh:$ten_kh$$,dia_chi:$dia_chi$$,ma_so_thue:$ma_so_thue$$,dien_giai:$row$$.gchu,ma_thue:$ma_thue$$,thue_suat:$thue_suat$$,t_tien_nt:$thue$$.thtien,t_tien:$t_tien$$,t_thue_nt:$thue$$.tthue,t_thue:$t_thue$$,t_hd_nt:$thue$$.thtien+$thue$$.tthue,t_hd:$t_tien$$+$t_thue$$,
|
|
5
|
+
hddt:$row$$})}await model.deleteMany({id_app:$id_app_user$$,id_ct:$id_ct$$});await global.getModel("customer").findOne({id_app:$id_app_user$$,ma_kh:$ma_kh$$},{_id:1}).lean()||await global.getModel("customer").create({id_app:$id_app_user$$,ma_kh:$ma_kh$$,ten_kh:$ten_kh$$,dia_chi:$dia_chi$$,ma_so_thue:$ma_so_thue$$,dien_thoai:$dien_thoai$$})}}else $row$$.ma_ct&&$row$$.ngay_ct&&$row$$.id_ct?$columns_new_data$$.push($row$$):Logger.error("d\u1eef li\u1ec7u kh\u00f4ng h\u1ee3p l\u1ec7",$row$$)}}catch($e$$){return $next$$($e$$)}$next$$(null,
|
|
6
|
+
$columns_new_data$$)}})).route()};module.exports=vatvao;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("warranty"),controller=require("../../controllers/controller"),contract=global.getModel("contract"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"warranty",{sort:{user_created:-1},onView:function($user$$,$items$$,$next$$){async.series({contract:function($callback$$){$items$$.joinModel($user$$.current_id_app,contract,[{where:{_id:"id_hd"},fields:[{name:"ten_hd",value:"ten_hd"}]}],function(){$callback$$(null,$items$$)})},unit_time:function($callback$$){$items$$.forEach(function($item$$){$item$$.unit_time==1&&($item$$.unit_time_name="Ng\u00e0y");$item$$.unit_time==2&&($item$$.unit_time_name=
|
|
3
|
+
"Th\u00e1ng");$item$$.unit_time==3&&($item$$.unit_time_name="N\u0103m")});$callback$$()}},function(){$next$$(null,$items$$)})}})).route()};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const model=global.getModel("workflow"),controller=require("../../controllers/controller");module.exports=function($router$$){(new controller($router$$,model,"workflow",{unique:["code"]})).route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("hanmucton"),controller=require("../../controllers/controller"),dvcs=global.getModel("dvcs"),dmvt=global.getModel("dmvt"),dmkho=global.getModel("dmkho"),async=require("async"),hanmucton=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"hanmucton",{sort:{ma_dvcs:1,ma_kho:1,ma_vt:1,han_sd:1},unique:"ma_dvcs ma_kho ma_vt ma_lo ma_tt1 ma_tt2 ma_tt3".split(" ")});$contr_router$$.route();$contr_router$$.view=function($user$$,$result$$,$fn$$){const $id_app$$=
|
|
2
|
+
$user$$.current_id_app;async.parallel({dvcs:function($callback$$){$result$$.filter($r$$=>$r$$.ma_dvcs).joinModel2($id_app$$,dvcs,[{where:{ma_dvcs:"_id"},fields:[{name:"ten_dvcs",value:"ten_dvcs"}]}],function($kq$$){$callback$$(null,$kq$$)})},vt:function($callback$$){$result$$.filter($r$$=>$r$$.ma_vt).joinModel2($id_app$$,dmvt,[{where:"ma_vt",fields:[{name:"ten_vt",value:"ten_vt"}]}],function($kq$$){$callback$$(null,$kq$$)})},kho:function($callback$$){$result$$.filter($r$$=>$r$$.ma_kho).joinModel2($id_app$$,
|
|
3
|
+
dmkho,[{where:"ma_kho",fields:[{name:"ten_kho",value:"ten_kho"}]}],function($kq$$){$callback$$(null,$kq$$)})}},function($error$$){if($error$$)return $fn$$($error$$);$fn$$(null,$result$$)})}};module.exports=hanmucton;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("gt_hspb"),dmyt=global.getModel("dmyt"),dmsp=global.getModel("dmvt"),dmbp=global.getModel("dmbp"),lenhsx=global.getModel("lenhsx"),async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"gt_hspb",{sort:{nam:1,thang:1,ma_yt:1,ma_sp:1,ma_bp:1,id_lenhsx:1},unique:"nam thang ma_dvcs ma_yt ma_sp ma_bp id_lenhsx".split(" ")});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series([function($callback$$){$items$$.joinModel($id_app$$,dmyt,[{akey:"ma_yt",bkey:"ma_yt",fields:[{name:"ten_yt",value:"ten_yt"},{name:"th_sp",value:"th_sp"},{name:"th_bp",
|
|
3
|
+
value:"th_bp"},{name:"th_lsx",value:"th_lsx"},{name:"th_nvl",value:"th_nvl"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel($id_app$$,dmsp,[{akey:"ma_sp",bkey:"ma_vt",fields:[{name:"ten_sp",value:"ten_vt"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmbp,[{where:"ma_bp",fields:["ten_bp"]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],
|
|
4
|
+
function($rs$$){$callback$$(null,$rs$$)})}],function(){$fn$$(null,$items$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("spdd_ck"),dmvt=global.getModel("dmvt"),dmbp=global.getModel("dmbp"),async=require("async"),controller=require("../../controllers/controller"),lenhsx=global.getModel("lenhsx");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"spdd_ck",{sort:{ma_yt:1,ma_sp:1,ma_bp:1},unique:"nam thang ma_dvcs ma_sp ma_bp id_lenhsx".split(" ")});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series([function($callback$$){$items$$.joinModel2($id_app$$,dmvt,[{where:{ma_sp:"ma_vt"},fields:[{ten_sp:"ten_vt"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmbp,
|
|
3
|
+
[{where:"ma_bp",fields:["ten_bp"]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],$rs$$=>{$callback$$(null,$rs$$)})}],function(){$fn$$(null,$items$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const model=global.getModel("spdd_dk"),dmvt=global.getModel("dmvt"),dmbp=global.getModel("dmbp"),lenhsx=global.getModel("lenhsx"),async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"spdd_dk",{sort:{ma_yt:1,ma_sp:1,ma_bp:1},unique:"nam thang ma_dvcs ma_sp ma_bp id_lenhsx".split(" ")});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series([function($callback$$){$items$$.joinModel2($id_app$$,dmvt,[{where:{ma_sp:"ma_vt"},fields:[{ten_sp:"ten_vt"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmbp,
|
|
3
|
+
[{where:"ma_bp",fields:["ten_bp"]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],$rs$$=>{$callback$$(null,$rs$$)})}],function(){$fn$$(null,$items$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("ytdd_ck"),dmyt=global.getModel("dmyt"),dmsp=global.getModel("dmvt"),dmbp=global.getModel("dmbp"),lenhsx=global.getModel("lenhsx"),async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"ytdd_ck",{sort:{ma_yt:1,ma_sp:1,ma_bp:1},unique:"nam thang ma_dvcs ma_yt ma_sp ma_bp id_lenhsx ma_nvl".split(" ")});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series([function($callback$$){$items$$.joinModel($id_app$$,dmyt,[{akey:"ma_yt",bkey:"ma_yt",fields:[{name:"ten_yt",value:"ten_yt"},{name:"th_sp",value:"th_sp"},{name:"th_bp",value:"th_bp"},{name:"th_lsx",
|
|
3
|
+
value:"th_lsx"},{name:"th_nvl",value:"th_nvl"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel($id_app$$,dmsp,[{akey:"ma_sp",bkey:"ma_vt",fields:[{name:"ten_sp",value:"ten_vt"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmbp,[{where:"ma_bp",fields:["ten_bp"]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel($id_app$$,dmsp,[{akey:"ma_nvl",bkey:"ma_vt",fields:[{name:"ten_nvl",value:"ten_vt"}]}],
|
|
4
|
+
$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],function($rs$$){$callback$$(null,$rs$$)})}],function(){$fn$$(null,$items$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("ytdd_dk"),dmyt=global.getModel("dmyt"),dmsp=global.getModel("dmvt"),dmbp=global.getModel("dmbp"),lenhsx=global.getModel("lenhsx"),async=require("async"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"ytdd_dk",{sort:{ma_yt:1,ma_sp:1,ma_bp:1},unique:"nam thang ma_dvcs ma_yt ma_sp ma_bp id_lenhsx ma_nvl".split(" ")});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.series([function($callback$$){$items$$.joinModel($id_app$$,dmyt,[{akey:"ma_yt",bkey:"ma_yt",fields:[{name:"ten_yt",value:"ten_yt"},{name:"th_sp",value:"th_sp"},{name:"th_bp",value:"th_bp"},{name:"th_lsx",
|
|
3
|
+
value:"th_lsx"},{name:"th_nvl",value:"th_nvl"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel($id_app$$,dmsp,[{akey:"ma_sp",bkey:"ma_vt",fields:[{name:"ten_sp",value:"ten_vt"}]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmbp,[{where:"ma_bp",fields:["ten_bp"]}],$rs$$=>{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,dmsp,[{where:{ma_nvl:"ma_vt"},fields:[{name:"ten_nvl",value:"ten_vt"}]}],$rs$$=>
|
|
4
|
+
{$callback$$(null,$rs$$)})},function($callback$$){$items$$.joinModel2($id_app$$,lenhsx,[{where:{id_lenhsx:"_id"},fields:[{so_lenhsx:"so_ct"}]}],function($rs$$){$callback$$(null,$rs$$)})}],function(){$fn$$(null,$items$$)})};$contr_router$$.route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var model=global.getModel("attend");const controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"attend",{notNeedRight:!0,onFinding:function($user$$,$condition$$,$next$$,$options$$){if($options$$.req.query.collections)try{var $collections$$=JSON.parse("{"+$options$$.req.query.collections+"}");$options$$.req.query.collections=$collections$$;$condition$$.collection_name={$in:[]};for(let $key$$ in $collections$$)$condition$$.collection_name.$in.push($key$$);$next$$(null,$condition$$)}catch($e$$){$next$$($e$$)}else $next$$(null,
|
|
3
|
+
$condition$$)},onView:function($user$$,$items$$,$next$$,$options$$){$options$$.req.query.collections?async.mapLimit($items$$,20,function($item$$,$callback$$){var $fields_m_name$$=$options$$.req.query.collections[$item$$.collection_name];if($fields_m_name$$){var $_fields$$={},$title_field$$;$fields_m_name$$.split(",").forEach(function($field$$){$_fields$$[$field$$]=1;$title_field$$||=$field$$});$fields_m_name$$=$item$$.collection_name;$fields_m_name$$=="dmkh"&&($fields_m_name$$="customer");$fields_m_name$$==
|
|
4
|
+
"dmtk"&&($fields_m_name$$="account");$fields_m_name$$=="dmnt"&&($fields_m_name$$="currency");global.getModel(""+$fields_m_name$$).findOne({_id:$item$$.id_object},$_fields$$).lean().exec(function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$&&($item$$.obj=$rs$$,$item$$.obj.title=$rs$$[$title_field$$]);$callback$$()})}else $callback$$()},function($e$$){if($e$$)return $next$$($e$$);$next$$(null,$items$$)}):$next$$(null,$items$$)}})).route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const model=global.getModel("follow"),controller=require("../../controllers/controller"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"follow",{notNeedRight:!0,onFinding:function($user$$,$condition$$,$next$$,$options$$){if($options$$.req.query.collections)try{var $collections$$=JSON.parse("{"+$options$$.req.query.collections+"}");$options$$.req.query.collections=$collections$$;$condition$$.collection_name={$in:[]};for(let $key$$ in $collections$$)$condition$$.collection_name.$in.push($key$$);$next$$(null,$condition$$)}catch($e$$){$next$$($e$$)}else $next$$(null,
|
|
3
|
+
$condition$$)},onView:function($user$$,$items$$,$next$$,$options$$){$options$$.req.query.collections?async.mapLimit($items$$,20,function($item$$,$callback$$){var $fields_m_name$$=$options$$.req.query.collections[$item$$.collection_name];if($fields_m_name$$){var $_fields$$={},$title_field$$;$fields_m_name$$.split(",").forEach(function($field$$){$_fields$$[$field$$]=1;$title_field$$||=$field$$});$fields_m_name$$=$item$$.collection_name;$fields_m_name$$=="dmkh"&&($fields_m_name$$="customer");$fields_m_name$$==
|
|
4
|
+
"dmtk"&&($fields_m_name$$="account");$fields_m_name$$=="dmnt"&&($fields_m_name$$="currency");global.getModel(""+$fields_m_name$$).findOne({_id:$item$$.id_object},$_fields$$).lean().exec(function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$rs$$&&($item$$.obj=$rs$$,$item$$.obj.title=$rs$$[$title_field$$]);$callback$$()})}else $callback$$()},function($e$$){if($e$$)return $next$$($e$$);$next$$(null,$items$$)}):$next$$(null,$items$$)}})).route()};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const model=global.getModel("right"),controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($router$$){(new controller($router$$,model,"right",{require_id_app:!0,notNeedRight:!0,sort:{name:1},unique:["id_app","email","module"],onCreating:function($user$$,$obj$$,$next$$){if(!$user$$.appAdmin)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n ph\u00e2n quy\u1ec1n");$next$$(null,$obj$$)},onUpdating:function($user$$,$data$$,$obj$$,$next$$){if(!$user$$.appAdmin)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n ph\u00e2n quy\u1ec1n");$next$$(null,$data$$,$obj$$)}})).route()};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const app=global.getModel("app"),Payload=global.getModel("payload");
|
|
2
|
+
module.exports=function($router$$){$router$$.route("/payload").get(function($endpoint_ep_id_req$$,$res$$){($endpoint_ep_id_req$$=$endpoint_ep_id_req$$.query.ep)?($endpoint_ep_id_req$$=Buffer.from($endpoint_ep_id_req$$,"utf-8").toString("base64"),Payload.find({ep_id:$endpoint_ep_id_req$$,read:!1}).lean().then(function($pls$$){$pls$$.forEach(function($pl$$){Payload.findOneAndUpdate({_id:$pl$$._id},{$set:{read:!0}},function($e$$){$e$$&&Logger.info($e$$)})});$res$$.send($pls$$)}).catch($e$$=>{$res$$.status(400).send($e$$)})):
|
|
3
|
+
$res$$.status(400).send("H\u00e0m payload y\u00eau c\u1ea7u tham s\u1ed1 'ep'")});$router$$.route("/apps").get(function($query_req$$,$res$$){var $key$$=$query_req$$.query.q;$key$$?$query_req$$=JSON.parse($key$$):($key$$=$query_req$$.query.k,$query_req$$={},$key$$&&($query_req$$.$or=[],$query_req$$.$or.push({name:{$regex:$key$$,$options:"i"}}),$query_req$$.$or.push({address:{$regex:$key$$,$options:"i"}})));$query_req$$.sale_online=!0;app.find($query_req$$,{name:1,logo:1,gioi_thieu:1,nganh_nghe:1}).lean().then(function($apps$$){$apps$$.forEach(function($app$$){$app$$.logo||
|
|
4
|
+
($app$$.logo="/getfile/others/noimage.png")});$res$$.send($apps$$)}).catch($error$$=>{$res$$.status(400).send($error$$)})})};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var Approve=global.getModel("approve");module.exports=function($router$$){$router$$.route("/approve/:id").get(function($req$$,$res$$){let $goto_home$$=configs.home_url?`<a href="${configs.home_url}">M\u1edf ch\u01b0\u01a1ng tr\u00ecnh</a>`:"";Approve.approve($req$$.params.id,$e$$=>{let $msg$$="B\u1ea1n \u0111\u00e3 duy\u1ec7t th\u00e0nh c\u00f4ng.";$e$$&&($msg$$=$e$$);$res$$.send(`
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta content="width=device-width, initial-scale=1.0, shrink-to-fit=no" name="viewport"/>
|
|
5
|
+
<title>${configs.program}</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<h1 style="text-align:center;color:green">${$msg$$}</h1>
|
|
9
|
+
<div style="text-align:center">${$goto_home$$}</div>
|
|
10
|
+
</body>
|
|
11
|
+
</html>`)})});$router$$.route("/deny-approve/:id").get(function($req$$,$res$$){$res$$.send(`<html>
|
|
12
|
+
<head>
|
|
13
|
+
<meta content="width=device-width, initial-scale=1.0, shrink-to-fit=no" name="viewport"/>
|
|
14
|
+
<title>${configs.program}</title>
|
|
15
|
+
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
|
16
|
+
<script>
|
|
17
|
+
var reason = prompt("L\u00fd do t\u1eeb ch\u1ed1i:","");
|
|
18
|
+
if(reason!=null){
|
|
19
|
+
var url_deny = "/public/deny-approve/${$req$$.params.id}";
|
|
20
|
+
axios.post(url_deny, {
|
|
21
|
+
reason: reason
|
|
22
|
+
})
|
|
23
|
+
.then(function (response) {
|
|
24
|
+
alert("B\u1ea1n \u0111\u00e3 t\u1eeb ch\u1ed1i duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");
|
|
25
|
+
|
|
26
|
+
})
|
|
27
|
+
.catch(function (error) {
|
|
28
|
+
alert(error.response.data || error);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
</head>
|
|
33
|
+
<body>
|
|
34
|
+
<h1 style="text-align:center;color:red">B\u1ea1n \u0111\u00e3 t\u1eeb ch\u1ed1i duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y</h1>
|
|
35
|
+
<div style="text-align:center">${configs.home_url?`<a href="${configs.home_url}">M\u1edf ch\u01b0\u01a1ng tr\u00ecnh</a>`:""}</div>
|
|
36
|
+
</body>
|
|
37
|
+
</html>`)});$router$$.route("/deny-approve/:id").post(function($req$$,$res$$){Approve.deny($req$$.params.id,$e$$=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send({ok:!0})},null,{reason:($req$$.body||{}).reason})})};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const async=require("async"),calllog=global.getModel("calllog"),customer=global.getModel("customer"),lienhe=global.getModel("lienhe"),App=global.getModel("app"),Controller=require("../../controllers/controller");
|
|
2
|
+
module.exports=function($router$$){$router$$.route("/:id_app/call/:token").get(async function($req$$,$res$$){let $g_callData$$={...$req$$.query,...$req$$.body};$g_callData$$.phone=$g_callData$$.phone||$g_callData$$.src;$g_callData$$.extend=$g_callData$$.extend||$g_callData$$.dst;$g_callData$$.call_status=$g_callData$$.state||$g_callData$$.status||$g_callData$$.call_status;delete $g_callData$$.status;if(!$g_callData$$.phone)return $res$$.status(400).send({errors:"Phone number is required"});let $token$$=
|
|
3
|
+
$req$$.params.token,$id_app$$=$req$$.params.id_app;if(!global.mongoose.Types.ObjectId.isValid($id_app$$))return $res$$.status(400).send({error:"ID c\u00f4ng ty l\u00e0 kh\u00f4ng h\u1ee3p l\u1ec7"});App.find({voiip_access_token:$token$$,_id:$id_app$$},{_id:1,name:1}).lean().then(async $apps$$=>{async.map($apps$$,($app$$,$callback$$)=>{setImmediate(async()=>{let $callData$$={...$g_callData$$};$callData$$.id_app=$id_app$$;var $cus_phone$$=$callData$$.phone.replace("+",""),$contact_where$$={id_app:$id_app$$};
|
|
4
|
+
$cus_phone$$.length<6?$contact_where$$.dien_thoai=$cus_phone$$:($cus_phone$$.substring(0,1)==="0"&&($cus_phone$$=$cus_phone$$.substring(1)),$cus_phone$$.substring(0,2)==="84"&&($cus_phone$$=$cus_phone$$.substring(2)),$contact_where$$.$or=[{dien_thoai:{$regex:$cus_phone$$,$options:"i"}},{dien_thoai2:{$regex:$cus_phone$$,$options:"i"}},{ds_dien_thoai_khac:{$regex:$cus_phone$$,$options:"i"}}]);$cus_phone$$=await customer.findOne($contact_where$$).lean();$cus_phone$$||($contact_where$$=lienhe.findOne($contact_where$$).lean(),
|
|
5
|
+
$contact_where$$.id_kh&&($cus_phone$$=await customer.findOne({_id:$contact_where$$.id_kh}).lean()));$cus_phone$$&&($callData$$.id_kh=$cus_phone$$._id,$callData$$.ma_kh=$cus_phone$$.ma_kh,$callData$$.ten_kh=$cus_phone$$.ten_kh,$callData$$.dia_chi=$cus_phone$$.dia_chi,$callData$$.dien_thoai=$cus_phone$$.dien_thoai,$callData$$.dien_thoai2=$cus_phone$$.dien_thoai2,typeof $cus_phone$$.ds_dien_thoai_khac=="string"&&($callData$$.ds_dien_thoai_khac=$cus_phone$$.ds_dien_thoai_khac));(new calllog($callData$$)).save(async($ctrl_e$$,
|
|
6
|
+
$rs$$)=>{if($ctrl_e$$)return $callback$$($ctrl_e$$);$callData$$._id=$rs$$._id?.toString();if($callData$$.call_status==="Ring"){$ctrl_e$$=global.controllers.CALLLOG;let $users_will_receive$$;if($callData$$.extend){let $participant$$;$participant$$=await global.getModel("participant").find({id_app:$id_app$$,exts:$callData$$.extend},{email:1}).lean();$participant$$.length>0&&($users_will_receive$$=$participant$$.map($p$$=>$p$$.email))}$users_will_receive$$&&Controller.pushNotification($ctrl_e$$,$rs$$.toObject(),
|
|
7
|
+
"new",void 0,void 0,{data:$callData$$,users_will_receive:$users_will_receive$$})}$callback$$(null,$callData$$)})})},($e$$,$log$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send({result:"ok",log:$log$$})})}).catch($e$$=>{$res$$.status(400).send($e$$)})})};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const comment=global.getModel("comment");
|
|
2
|
+
module.exports=function($router$$){$router$$.route("/comment").post(function($id_app_req$$,$res$$){var $body_obj$$=$id_app_req$$.body;if(!$body_obj$$)return $res$$.status(411).send("Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u");$id_app_req$$=$id_app_req$$.query.id_app;$body_obj$$=new comment($body_obj$$);$body_obj$$.id_app=$id_app_req$$;$body_obj$$.save(function($error$$,$msgErrors_result$$){if($error$$){$msgErrors_result$$=[];for(let $k$$ in $error$$.errors)$msgErrors_result$$.push($error$$.errors[$k$$].message+"\n");
|
|
3
|
+
return $res$$.status(400).send($msgErrors_result$$)}return $res$$.send($msgErrors_result$$)})});$router$$.route("/comment").get(function($req$$,$res$$){var $condition_fields_query$$=$req$$.query.fields;let $gfields$$={};$condition_fields_query$$&&$condition_fields_query$$.split(",").forEach(function($f$$){$f$$!="_id"&&($gfields$$[$f$$]=1)});$condition_fields_query$$={};if($req$$.query.q)$condition_fields_query$$=JSON.parse($req$$.query.q);else{var $k$$=$req$$.query.k;$k$$&&($condition_fields_query$$.$or=
|
|
4
|
+
[],$condition_fields_query$$.$or.push({content:{$regex:$k$$,$options:"i"}}),$condition_fields_query$$.$or.push({name:{$regex:$k$$,$options:"i"}}))}$condition_fields_query$$=comment.find($condition_fields_query$$,$gfields$$);$k$$=$req$$.query.page;var $limit$$=$req$$.query.limit;$k$$?($limit$$||=20,$condition_fields_query$$.skip((Number($k$$)-1)*$limit$$).limit($limit$$)):$limit$$&&$condition_fields_query$$.limit($limit$$);if($req$$=$req$$.query.sort){var $gsort$$={};$req$$.split(",").forEach(function($f$$){$f$$!=
|
|
5
|
+
"_id"&&($gsort$$[$f$$]=1)});$condition_fields_query$$.sort($gsort$$)}$condition_fields_query$$.lean().then(function($result$$){$res$$.send($result$$)}).catch($e$$=>{$res$$.status(400).send({message:$e$$.message})})})};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const dmnvt=global.getModel("dmnvt");
|
|
2
|
+
module.exports=function($router$$){$router$$.route("/dmnvt").get(function($req_sort$$,$res$$){var $id_app_query$$=$req_sort$$.query.id_app,$condition_fields_page$$=$req_sort$$.query.fields;const $gfields$$={};$condition_fields_page$$&&$condition_fields_page$$.split(",").forEach(function($f$$){$f$$!="_id"&&($gfields$$[$f$$]=1)});$condition_fields_page$$={};if($req_sort$$.query.q)try{$condition_fields_page$$=JSON.parse($req_sort$$.query.q),$condition_fields_page$$.nh_me&&($condition_fields_page$$._id=
|
|
3
|
+
{$ne:$condition_fields_page$$.nh_me})}catch($e$$){Logger.error($e$$)}else{var $k_limit$$=$req_sort$$.query.k;$k_limit$$&&($condition_fields_page$$.$or=[],$condition_fields_page$$.$or.push({ten_nvt:{$regex:$k_limit$$,$options:"i"}}),$condition_fields_page$$.$or.push({sysorder:{$regex:$k_limit$$,$options:"i"}}))}$condition_fields_page$$.id_app=$id_app_query$$;$id_app_query$$=dmnvt.find($condition_fields_page$$,$gfields$$);$condition_fields_page$$=$req_sort$$.query.page;($k_limit$$=$req_sort$$.query.limit)&&
|
|
4
|
+
($k_limit$$=Number($k_limit$$));$condition_fields_page$$?($k_limit$$||=20,$id_app_query$$.skip((Number($condition_fields_page$$)-1)*$k_limit$$).limit($k_limit$$)):$k_limit$$&&$id_app_query$$.limit($k_limit$$);if($req_sort$$=$req_sort$$.query.sort){const $gsort$$={};$req_sort$$.split(",").forEach(function($f$$){$f$$!="_id"&&($gsort$$[$f$$]=1)});$id_app_query$$.sort($gsort$$)}$id_app_query$$.lean().then(function($result$$){$res$$.send($result$$)}).catch($error$$=>{$res$$.status(400).send($error$$)})})};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const dmvt=global.getModel("dmvt"),dmnvt=global.getModel("dmnvt"),async=require("async");
|
|
2
|
+
module.exports=function($router$$){$router$$.route("/dmvt").get(function($req$$,$res$$){var $id_app$$=$req$$.query.id_app,$fields_k$$=$req$$.query.fields;let $gfields$$={};$fields_k$$&&$fields_k$$.split(",").forEach(function($f$$){$f$$!="_id"&&($gfields$$[$f$$]=1)});var $condition$$={};if($req$$.query.q)$condition$$=JSON.parse($req$$.query.q);else if($fields_k$$=$req$$.query.k)$condition$$.$or=[],$condition$$.$or.push({ma_vt:{$regex:$fields_k$$,$options:"si"}}),$condition$$.$or.push({ten_vt:{$regex:$fields_k$$,
|
|
3
|
+
$options:"si"}}),$condition$$.$or.push({nhan_hieu:{$regex:$fields_k$$,$options:"si"}}),$condition$$.$or.push({xuat_xu:{$regex:$fields_k$$,$options:"si"}});async.parallel({nvt:function($callback$$){var $ma_nvt$$=$req$$.query.ma_nvt;$ma_nvt$$?dmnvt.find({id_app:$id_app$$,nh_me:$ma_nvt$$}).lean().then(function($ma_nvts_nvts$$){$ma_nvts_nvts$$=$ma_nvts_nvts$$.map($v$$=>$v$$._id);$ma_nvts_nvts$$.push($ma_nvt$$);$callback$$(null,{$in:$ma_nvts_nvts$$})}).catch($e$$=>{$callback$$($e$$)}):$callback$$()}},
|
|
4
|
+
function($e$$,$page_rs_sort$$){$page_rs_sort$$.nvt&&($condition$$.ma_nvt=$page_rs_sort$$.nvt);if($e$$=$req$$.query.xuat_xu)$condition$$.xuat_xu={$regex:$e$$,$options:"i"};if($e$$=$req$$.query.nhan_hieu)$condition$$.nhan_hieu={$regex:$e$$,$options:"i"};$condition$$.gia_ban_le={$gte:Number($req$$.query.min)||0,$lte:Number($req$$.query.max)||999E6};$condition$$.id_app=$id_app$$;$condition$$.status=!0;$e$$=dmvt.find($condition$$,$gfields$$);$page_rs_sort$$=$req$$.query.page;var $limit$$=$req$$.query.limit;
|
|
5
|
+
$limit$$&&=Number($limit$$);$page_rs_sort$$?($limit$$||=20,$e$$.skip((Number($page_rs_sort$$)-1)*$limit$$).limit($limit$$)):$limit$$&&$e$$.limit($limit$$);if($page_rs_sort$$=$req$$.query.sort){var $gsort$$={};$page_rs_sort$$.split(",").forEach(function($f$$){$f$$!="_id"&&($f$$=="name"&&($f$$="ten_vt"),$f$$=="price"&&($f$$="gia_ban_le"),$f$$=="date"?$gsort$$.date_created=-1:$gsort$$[$f$$]=1)});$e$$.sort($gsort$$)}else $e$$.sort({date_updated:-1});$e$$.lean().then(function($result$$){$result$$.forEach(function($r$$){if($r$$.picture){var $p_tuan_truoc$$=
|
|
6
|
+
$r$$.picture.split(".");$r$$.picture_thumb=$r$$.picture+".thumb."+$p_tuan_truoc$$[$p_tuan_truoc$$.length-1]}else $r$$.picture="/getfile/others/noimage.png",$r$$.picture_thumb="/getfile/others/noimage.png";$r$$.picture2&&$r$$.picture2.indexOf("noimage.png")<0?($p_tuan_truoc$$=$r$$.picture2.split("."),$r$$.picture2_thumb=$r$$.picture2+".thumb."+$p_tuan_truoc$$[$p_tuan_truoc$$.length-1]):$r$$.picture2="";$r$$.picture3&&$r$$.picture3.indexOf("noimage.png")<0?($p_tuan_truoc$$=$r$$.picture3.split("."),
|
|
7
|
+
$r$$.picture3_thumb=$r$$.picture3+".thumb."+$p_tuan_truoc$$[$p_tuan_truoc$$.length-1]):$r$$.picture3="";$r$$.picture4&&$r$$.picture4.indexOf("noimage.png")<0?($p_tuan_truoc$$=$r$$.picture4.split("."),$r$$.picture4_thumb=$r$$.picture4+".thumb."+$p_tuan_truoc$$[$p_tuan_truoc$$.length-1]):$r$$.picture4="";$r$$.picture5&&$r$$.picture5.indexOf("noimage.png")<0?($p_tuan_truoc$$=$r$$.picture5.split("."),$r$$.picture5_thumb=$r$$.picture5+".thumb."+$p_tuan_truoc$$[$p_tuan_truoc$$.length-1]):$r$$.picture5=
|
|
8
|
+
"";$r$$.tien_ck||($r$$.tien_ck=0);$r$$.ty_le_ck||($r$$.ty_le_ck=0);$r$$.ty_le_ck===0&&$r$$.tien_ck!==0&&$r$$.gia_ban_le!==0&&($r$$.ty_le_ck=Math.roundBy($r$$.tien_ck/$r$$.gia_ban_le*100,2));$r$$.gia_ban_thuc=$r$$.gia_ban_le-$r$$.tien_ck;$p_tuan_truoc$$=new Date;$p_tuan_truoc$$.setDate($p_tuan_truoc$$.getDate()-7);$r$$.sp_moi=$r$$.date_created&&$r$$.date_created>$p_tuan_truoc$$?!0:!1;switch($r$$.tinh_trang){case "1":$r$$.ten_tinh_trang="\u0110ang c\u00f3 h\u00e0ng";break;case "2":$r$$.ten_tinh_trang=
|
|
9
|
+
"S\u1eafp c\u00f3 h\u00e0ng";break;default:$r$$.ten_tinh_trang="H\u1ebft h\u00e0ng"}$r$$.mieu_ta_chi_tiet||($r$$.mieu_ta_chi_tiet=$r$$.mieu_ta)});$res$$.send($result$$)}).catch($e$$=>{$res$$.status(400).send($e$$)})})})};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const path=require("path"),fs=require("fs"),ffmpeg=require("fluent-ffmpeg"),ffmpegInstaller=require("@ffmpeg-installer/ffmpeg");ffmpeg.setFfmpegPath(ffmpegInstaller.path);
|
|
2
|
+
const sharp=require("sharp"),watermark=require("dynamic-watermark"),setWaterMark4Image=async($app_info$$,$file_name$$,$extension_root$$,$recache$$)=>{let $file_name_watermark$$=`${$file_name$$}.watermark.${$extension_root$$}.webp`;if(!$app_info$$.logo_watermark)return $file_name$$;if(!$recache$$&&fs.existsSync($file_name_watermark$$))return $file_name_watermark$$;$extension_root$$=configs.paths.images;$extension_root$$||($extension_root$$=__dirname,$extension_root$$=path.dirname($extension_root$$),
|
|
3
|
+
$extension_root$$=path.dirname($extension_root$$),$extension_root$$=path.join($extension_root$$,"images"));let $file_logo$$=path.join($extension_root$$,$app_info$$.logo_watermark.split("getfile/")[1]);return fs.existsSync($file_logo$$)?new Promise($resolve$$=>{sharp($file_name$$,{failOnError:!1}).metadata().then($value$$=>{const $watermark_size$$=$value$$.width*10/100;watermark.embed({type:"image",source:$file_name$$,logo:$file_logo$$,destination:$file_name_watermark$$,position:{logoX:$value$$.width-
|
|
4
|
+
$watermark_size$$-10,logoY:10,logoHeight:$watermark_size$$,logoWidth:$watermark_size$$}},function($status$$){$status$$.status===1?$resolve$$($file_name_watermark$$):(Logger.info("status set watermark",$status$$),$resolve$$($file_name$$))})}).catch($error$$=>{Logger.info($error$$);return $resolve$$($file_name$$)})}):(Logger.info("file logo watermark is not exists",$file_logo$$),$file_name$$)},configResizeImage=async($_size_file_name_resize$$,$file_name$$,$extension$$,$recache$$)=>{let $size$$,$cache$$;
|
|
5
|
+
if($_size_file_name_resize$$)switch($_size_file_name_resize$$.toString().toUpperCase()){case "64":case "X":$size$$=64;$cache$$=!0;break;case "256":$size$$=256;$cache$$=!0;break;case "S":case "320":$size$$=320;$cache$$=!0;break;case "512":case "M":$size$$=512;$cache$$=!0;break;case "1024":case "L":$size$$=1024;$cache$$=!0;break;case "1080":case "FULLHD":$size$$=1080;$cache$$=!0;break;case "1440":case "2K":$size$$=1440;$cache$$=!0;break;default:try{$size$$=Number($_size_file_name_resize$$)}catch($e$$){Logger.info("size param must be X or S or M or L or a number")}}return $size$$?
|
|
6
|
+
($_size_file_name_resize$$=`${$file_name$$}.${$size$$}.${$extension$$}.webp`,!$recache$$&&fs.existsSync($_size_file_name_resize$$)?{file_name_resize:$_size_file_name_resize$$,exist:!0}:{cache:$cache$$,size:$size$$,file_name_resize:$_size_file_name_resize$$}):{file_name_resize:$file_name$$}};
|
|
7
|
+
module.exports=function($router$$){$router$$.route("/file/shared/:id").get(($req$$,$res$$)=>{let $id$$=$req$$.params.id,$size$$=$req$$.query.size||$req$$.query.resize||"FULLHD";if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y"});global.getModel("file").findOne({_id:$id$$}).lean().exec(async($e$jscomp$1_extension$$,$_new_file_orgin_file_size_rs$$)=>{if($e$jscomp$1_extension$$)return $res$$.status(400).send($e$jscomp$1_extension$$);
|
|
8
|
+
if($_new_file_orgin_file_size_rs$$){if(!$_new_file_orgin_file_size_rs$$.shared)return $res$$.status(403).send({error:"Kh\u00f4ng th\u1ec3 truy c\u1eadp file n\u00e0y"});let $app_info$$=await global.getModel("app").findOne({_id:$_new_file_orgin_file_size_rs$$.id_app}).lean();$app_info$$||={};if($_new_file_orgin_file_size_rs$$.file.url)return $res$$.redirect($_new_file_orgin_file_size_rs$$.file.url);let $file_name$$=$_new_file_orgin_file_size_rs$$.file.name;$e$jscomp$1_extension$$=$_new_file_orgin_file_size_rs$$.file.extension;
|
|
9
|
+
let $root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$file_name$$=path.join($root$$,$file_name$$);if(fs.existsSync($file_name$$))if(["png","jpg","jpeg","webp"].indexOf($e$jscomp$1_extension$$)>=0){$_new_file_orgin_file_size_rs$$=await setWaterMark4Image($app_info$$,$file_name$$,$e$jscomp$1_extension$$,$req$$.query.recache);let $_resize_conf$$=await configResizeImage($size$$,$_new_file_orgin_file_size_rs$$,
|
|
10
|
+
$e$jscomp$1_extension$$,$req$$.query.recache);if($_resize_conf$$.exist)return sharp($_resize_conf$$.file_name_resize,{failOnError:!1}).pipe($res$$);let $_gm$$=sharp($_new_file_orgin_file_size_rs$$,{failOnError:!1});($_new_file_orgin_file_size_rs$$=await $_gm$$.metadata())&&$_resize_conf$$.size&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.width&&$_resize_conf$$.size<$_new_file_orgin_file_size_rs$$.height&&($_gm$$=$_gm$$.resize({width:$_resize_conf$$.size}).rotate());$_new_file_orgin_file_size_rs$$&&
|
|
11
|
+
$_new_file_orgin_file_size_rs$$.format!="webp"&&($_gm$$=$_gm$$.webp({lossless:!1}));$_resize_conf$$.cache&&setImmediate(()=>{$_gm$$.toFile($_resize_conf$$.file_name_resize,$error$$=>{if($error$$)return Logger.error("save cache image:",$error$$.message);Logger.info("cache file",$_resize_conf$$.file_name_resize)})});$_gm$$.pipe($res$$)}else $res$$.download($file_name$$,$_new_file_orgin_file_size_rs$$.file.originalname);else $res$$.status(400).send({error:"File n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"})}else $res$$.status(400).send({error:"Kh\u00f4ng t\u00ecm th\u1ea5y file n\u00e0y"})})})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const forminfo=global.getModel("forminfo");module.exports=function($router$$){$router$$.route("/forminfo/:code").get(function($code$$,$res$$){$code$$=$code$$.params.code.toUpperCase();forminfo.findOne({code:$code$$}).lean().exec(($e$$,$rs$$)=>{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($rs$$)})})};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const group=global.getModel("group");
|
|
2
|
+
module.exports=function($router$$){$router$$.route("/group").get(function($req_sort$$,$res$$){var $id_app_query$$=$req_sort$$.query.id_app,$condition_fields_page$$=$req_sort$$.query.fields;const $gfields$$={};$condition_fields_page$$&&$condition_fields_page$$.split(",").forEach(function($f$$){$f$$!="_id"&&($gfields$$[$f$$]=1)});$condition_fields_page$$={};if($req_sort$$.query.q)$condition_fields_page$$=JSON.parse($req_sort$$.query.q);else{var $k_limit$$=$req_sort$$.query.k;$k_limit$$&&($condition_fields_page$$.$or=
|
|
3
|
+
[],$condition_fields_page$$.$or.push({group_name:{$regex:$k_limit$$,$options:"i"}}),$condition_fields_page$$.$or.push({group_type:{$regex:$k_limit$$,$options:"i"}}))}$condition_fields_page$$.id_app=$id_app_query$$;$id_app_query$$=group.find($condition_fields_page$$,$gfields$$);$condition_fields_page$$=$req_sort$$.query.page;($k_limit$$=$req_sort$$.query.limit)&&($k_limit$$=Number($k_limit$$));$condition_fields_page$$?($k_limit$$||=20,$id_app_query$$.skip((Number($condition_fields_page$$)-1)*$k_limit$$).limit($k_limit$$)):
|
|
4
|
+
$k_limit$$&&$id_app_query$$.limit($k_limit$$);if($req_sort$$=$req_sort$$.query.sort){const $gsort$$={};$req_sort$$.split(",").forEach(function($f$$){$f$$!="_id"&&($gsort$$[$f$$]=1)});$id_app_query$$.sort($gsort$$)}else $id_app_query$$.sort({group_type:1});$id_app_query$$.lean().then(function($result$$){$res$$.send($result$$)}).catch($e$$=>{$res$$.status(400).send($e$$)})})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const introducecode=global.getModel("introducecode");module.exports=function($router$$){$router$$.route("/:id_app/introducecode/:introduce_code").get(async($codeInfo_req$$,$res$$)=>{const {id_app:$id_app$$,introduce_code:$introduce_code$$}=$codeInfo_req$$.params;$codeInfo_req$$=await introducecode.findOne({id_app:$id_app$$,introduce_code:$introduce_code$$});if(!$codeInfo_req$$)return $res$$.status(400).send({error:"M\u00e3 gi\u1edbi thi\u1ec7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i"});$res$$.send($codeInfo_req$$)})};
|