flexbiz-server
Version:
Flexible Server
29 lines (28 loc) • 12.7 kB
JavaScript
const moment=require("moment"),sokhoSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},id_ct:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ma_gd:{type:String,default:"0",maxlength:32,trim:!0},ngay_ct:{type:Date,required:!0},ngay_ct_full:Date,so_ct:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},nxt:{type:Number,required:!0},ma_nt:{type:String,default:"VND",required:!0,
uppercase:!0,maxlength:32,trim:!0},ty_gia:{type:Number,default:1},ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024,trim:!0},ma_dvt:{type:String,maxlength:32,trim:!0},ma_kho:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ma_kho_n:{type:String},ma_kho_x:{type:String},sl_nhap:{type:Number,default:0},sl_xuat:{type:Number,default:0},he_so_qd:{type:Number,default:1},sl_nhap_qd:{type:Number,default:0},sl_xuat_qd:{type:Number,default:0},pn_gia_tb:{type:Boolean,default:!1},px_gia_dd:{type:Boolean,
default:!1},gia_von_nt:{type:Number,default:0},gia_von:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},tien_hang:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_phi_nt:{type:Number,default:0},tien_phi:{type:Number,default:0},tien_cp_nt:{type:Number,default:0},tien_cp:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},tien_thue_nk:{type:Number,
default:0},tien_thue_nk_nt:{type:Number,default:0},tien_nhap_nt:{type:Number,default:0},tien_nhap:{type:Number,default:0},tien_xuat:{type:Number,default:0},tien_xuat_nt:{type:Number,default:0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},gia_ban_ct:{type:Number,default:0},gia_ban_ct_nt:{type:Number,default:0},tien_hang_ct_nt:{type:Number,default:0},tien_hang_ct:{type:Number,default:0},tien_ct:{type:Number,default:0},
tien_ct_nt:{type:Number,default:0},thue_suat:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},tien_thue:{type:Number,default:0},tk_vt:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_gv:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_du:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_tl:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_dt:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_ck:{type:String,uppercase:!0,maxlength:32,trim:!0},ma_kh:{type:String,uppercase:!0,default:"",
maxlength:32,trim:!0},dien_giai:{type:String,default:"",maxlength:1024},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_phi:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_hd:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_dt:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_nv:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_nv_giao_hang:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},phu_xe:{type:String,default:"",
uppercase:!0,maxlength:32,trim:!0},loai_phuong_tien:String,ma_lo:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},gio:Number,ngay:Number,thang:Number,quy:Number,nam:Number,ma_kenh:String,ma_td1:Schema.Types.Mixed,
ma_td2:Schema.Types.Mixed,ma_td3:Schema.Types.Mixed,ma_td4:Schema.Types.Mixed,ma_td5:Schema.Types.Mixed,ma_td6:Schema.Types.Mixed,ma_td7:Schema.Types.Mixed,ma_td8:Schema.Types.Mixed,ma_td9:Schema.Types.Mixed,pt_thanh_toan:String,pt_thanh_toan2:String,tien_paymentByPoints:Number,tien_evoucher:Number,cashier:String,ma_sp:{type:String,default:"",uppercase:!0,maxlength:1024,trim:!0},sl_sp:Number,ma_dvt_sp:{type:String,maxlength:32,trim:!0},ma_tt1_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},
ma_tt2_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_cum_chi_tiet:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_cum_chi_tiet:{type:String,default:"",maxlength:1024},ma_cong_doan:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},id_lenhsx:{type:String,maxlength:1024},id_dinhmucsx:{type:String,maxlength:1024},id_lenhcapphat:{type:String,maxlength:1024},id_cs:{type:String,maxlength:1024},
id_cs_ck:{type:String,maxlength:1024},ma_ca:{type:String,uppercase:!0,maxlength:32,trim:!0},trang_thai:{type:String,maxlength:32},id_reason:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,exfields_detail:Schema.Types.Mixed,user_nv:String,ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,user_gt:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,user_ctv:String,
ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,user_ql:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,so_seri:String,line:Number,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},id_client:String,listinfo_code:String},
{toJSON:{virtuals:!0}});
(global.configs||{}).createIndexes&&(sokhoSchema.index({id_app:1}),sokhoSchema.index({id_app:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_dvcs:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,so_ct:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_ct:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_ct:1,ngay_ct:-1,ma_vt:1,ma_nv:1,ma_kh:1}),sokhoSchema.index({id_app:1,ma_ct:1,ngay_ct:-1,ma_vt:1,ma_nv_giao_hang:1,ma_kh:1}),sokhoSchema.index({id_app:1,ma_ct:1,ngay_ct:-1,ma_vt:1,phu_xe:1,ma_kh:1}),sokhoSchema.index({id_app:1,
ma_vt:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_vt:1,ma_lo:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_vt:1,ma_lo:1,han_sd:-1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_vt:1,ma_tt1:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_vt:1,ma_tt2:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_vt:1,ma_tt3:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,ma_lo:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,
ma_kho:1,ma_vt:1,ma_lo:1,han_sd:-1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,ma_tt1:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,ma_tt2:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,ma_tt3:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,nxt:1,pn_gia_tb:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho:1,ma_vt:1,nxt:1,px_gia_dd:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho_n:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kho_x:1,ngay_ct:-1}),
sokhoSchema.index({id_app:1,ma_kh:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_bp:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_phi:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_nv:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_dt:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_kenh:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,ma_tt1_sp:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,ma_tt2_sp:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,
ma_tt3_sp:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,ma_cum_chi_tiet:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,ma_cong_doan:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,id_lenhsx:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,id_dinhmucsx:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_sp:1,id_lenhcapphat:1,ngay_ct:-1}),sokhoSchema.index({id_ct:1}),sokhoSchema.index({id_app:1,id_ct:1}),sokhoSchema.index({id_app:1,id_cs:1}),sokhoSchema.index({id_app:1,id_cs_ck:1}),sokhoSchema.index({id_app:1,
cashier:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,nam:-1,quy:1,thang:1,ngay:1,gio:1}),sokhoSchema.index({id_app:1,ma_td1:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_td2:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,ma_td3:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,user_nv:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,user_ctv:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,user_ql:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,user_gt:1,ngay_ct:-1}),sokhoSchema.index({id_app:1,date_created:-1}));
const {createSokhoTC}=require("../libs/utils"),{onAfterCommit,getCurrentSession,getCurrentStore}=require("../libs/sessionContext"),handleCreateSokhoTc=async $data$$=>{if($data$$)try{let $params$$=$data$$;typeof $data$$==="string"&&($params$$=JSON.parse($data$$));$params$$.id_app&&$params$$.ngay_ct&&await createSokhoTC($params$$.id_app,$params$$.ngay_ct,$params$$.ngay_ct)}catch($e$$){Logger.error("handleCreateSokhoTc error",$data$$,$e$$)}};
sokhoSchema.pre("save",function($next$$){this.ma_nt==="VND"?(this.tien_nhap_nt=Math.roundBy(this.tien_nhap_nt,0),this.tien_xuat_nt=Math.roundBy(this.tien_xuat_nt,0),this.tien_nhap=this.tien_nhap_nt,this.tien_xuat=this.tien_xuat_nt):(this.tien_nhap=Math.roundBy(this.tien_nhap,0),this.tien_xuat=Math.roundBy(this.tien_xuat,0));this.ngay_ct_full=new Date(this.ngay_ct);var $ngay_ct_session$$=moment(this.ngay_ct);this.gio=$ngay_ct_session$$.get("hours");this.ngay=$ngay_ct_session$$.get("dates");this.quy=
$ngay_ct_session$$.get("quarters");this.thang=$ngay_ct_session$$.get("months")+1;this.nam=$ngay_ct_session$$.get("year");this.ngay_ct=$ngay_ct_session$$.startOf("date").toDate();this.han_sd&&(this.han_sd=moment(this.han_sd).endOf("date").toDate());$ngay_ct_session$$=getCurrentSession();const $store$$=getCurrentStore();$ngay_ct_session$$&&$store$$&&(this.$__param_store=$store$$,this.$__param_session=$store$$.session);$next$$()});
sokhoSchema.post("save",async function($doc$$){const $capturedStore$$=this.$__param_store,$capturedSession$$=this.$__param_session,$handleSaveAfterCommit$$=async()=>{let $key$$=JSON.stringify({id_app:$doc$$.id_app,ngay_ct:$doc$$.ngay_ct});handleCreateSokhoTc($key$$)};if($capturedSession$$&&$capturedStore$$)onAfterCommit($handleSaveAfterCommit$$,"X\u1eed l\u00fd s\u1ef1 ki\u1ec7n sau khi l\u01b0u sokho",$capturedSession$$,$capturedStore$$);else try{await $handleSaveAfterCommit$$()}catch($e$$){Logger.error("\u274c post save immediate error:",
$e$$)}});
async function preDelete($next$$){try{const $query$$=this.getQuery(),$deletedDocsStr$$=(await global.getModel("sokho").find($query$$,{id_app:1,ngay_ct:1}).lean()).map($r$$=>JSON.stringify({id_app:$r$$.id_app,ngay_ct:$r$$.ngay_ct}));this.$__deletedDocs=[...(new Set($deletedDocsStr$$))];const $session$$=this.options?.session||getCurrentSession(),$store$$=getCurrentStore();$session$$&&$store$$&&(this.$__param_store=$store$$,this.$__param_session=$store$$.session);$next$$()}catch($e$$){$next$$($e$$)}}
async function postDelete(){const $capturedStore$$=this.$__param_store,$capturedSession$$=this.$__param_session,$deletedDocs$$=this.$__deletedDocs;if($deletedDocs$$&&$deletedDocs$$.length>0){const $handleDeletionAfterCommit$$=async()=>{const $promises$$=$deletedDocs$$.map($docStr$$=>handleCreateSokhoTc($docStr$$));await Promise.all($promises$$)};if($capturedSession$$&&$capturedStore$$)onAfterCommit($handleDeletionAfterCommit$$,"X\u1eed l\u00fd s\u1ef1 ki\u1ec7n sau khi xo\u00e1 sokho",$capturedSession$$,
$capturedStore$$);else try{await $handleDeletionAfterCommit$$()}catch($e$$){Logger.error("\u274c post delete immediate error:",$e$$)}}}
const handleInsertMany=async function($docs$$){const $session$$=getCurrentSession(),$store$$=getCurrentStore(),$handleBatch$$=async()=>{let $itemsToProcess$$=$docs$$.map($d$$=>({id_app:$d$$.id_app,ngay_ct:$d$$.ngay_ct}));for(let $item$$ of $itemsToProcess$$)await handleCreateSokhoTc($item$$)};if($session$$&&$store$$)onAfterCommit($handleBatch$$,"X\u1eed l\u00fd insertMany",$session$$,$store$$);else try{await $handleBatch$$()}catch($e$$){Logger.error("\u274c insertMany hook error:",$e$$)}};
sokhoSchema.post("insertMany",handleInsertMany);sokhoSchema.pre("deleteMany",preDelete);sokhoSchema.post("deleteMany",postDelete);sokhoSchema.pre("deleteOne",preDelete);sokhoSchema.post("deleteOne",postDelete);const model=mongoose.models.sokho||mongoose.model("sokho",sokhoSchema);if((global.configs||{}).createIndexes)model.on("index",async function($err$$){$err$$?Logger.error("sokho index error",$err$$):Logger.info("sokho indexing complete")});module.exports=model;