flexbiz-server 12.5.28 → 12.5.31
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 +1 -1
- package/server/controllers/findHandler.js +2 -2
- package/server/controllers/viewHandler.js +252 -13
- package/server/libs/joinData.js +2 -2
- package/server/libs/post-sokho.js +23 -351
- package/server/models/csphucap.js +2 -0
- package/server/models/dmbp.js +2 -2
- package/server/models/pcl.js +1 -1
- package/server/models/ptl.js +1 -2
- package/server/modules/lists/ls-checkin.js +24 -336
- package/server/modules/lists/ls-csphucap.js +1 -0
- package/server/modules/reports/calc-tinhluong.js +25 -22
- package/server/modules/reports/rp-sctluong.js +5 -3
- package/server/modules/vouchers/vo-hd2.js +82 -81
- package/server/modules/vouchers/vo-pcl.js +3 -3
- package/server/modules/vouchers/vo-ptl.js +4 -4
- package/server/templates/product-verify-result.ejs +205 -11
|
@@ -1,351 +1,23 @@
|
|
|
1
|
-
const async
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if(!item.tk_gv) item.tk_gv = ref.tk_gv;
|
|
25
|
-
item.tg_tk = ref.tg_tk;
|
|
26
|
-
item.xk_nvl = ref.xk_nvl;
|
|
27
|
-
}});
|
|
28
|
-
for(let i=0;i<dm.details.length;i++){
|
|
29
|
-
let vt = dm.details[i];
|
|
30
|
-
let sl = 0;
|
|
31
|
-
if(vt.loai_dinh_muc==1){
|
|
32
|
-
sl = vt.sl_dinh_muc * sl_xuat_qd * (1+(vt.ty_le_hao_hut||0)/100);
|
|
33
|
-
}else{
|
|
34
|
-
sl = vt.sl_dinh_muc * (1+vt.ty_le_hao_hut/100);
|
|
35
|
-
}
|
|
36
|
-
if(vt.xk_nvl){
|
|
37
|
-
let dm_of_vt = await dinhmucsx(id_app,vt.ma_vt,vt.ma_tt1||undefined,sl,vt.ma_dvt);
|
|
38
|
-
//console.log("dinh muc cua ban thanh pham",vt,dm_of_vt);
|
|
39
|
-
vts = [...vts,...dm_of_vt];
|
|
40
|
-
}else{
|
|
41
|
-
vt.sl_xuat = sl;
|
|
42
|
-
vts.push(vt);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return vts;
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
const post = function(master, details, prepare,options={}) {
|
|
49
|
-
//
|
|
50
|
-
if (!details) {
|
|
51
|
-
details =[]
|
|
52
|
-
}
|
|
53
|
-
//console.log("details",details)
|
|
54
|
-
//data
|
|
55
|
-
this.master = {...master}
|
|
56
|
-
this.details = details.map(detail=>{
|
|
57
|
-
return {...detail};
|
|
58
|
-
});
|
|
59
|
-
//prepare function
|
|
60
|
-
this.prepare = prepare;
|
|
61
|
-
this.options = options;
|
|
62
|
-
};
|
|
63
|
-
post.prototype.runPrepare = async (prepareFunction,details)=>{
|
|
64
|
-
details = details.map(d=>{
|
|
65
|
-
if(d.toObject) d = d.toObject();
|
|
66
|
-
return {...d}
|
|
67
|
-
})
|
|
68
|
-
return (new Promise(resolve=>{
|
|
69
|
-
if (prepareFunction) {
|
|
70
|
-
async.map(details,(detail,callback)=>{
|
|
71
|
-
setImmediate(()=>{
|
|
72
|
-
detail.toObject = function(){
|
|
73
|
-
return Object.assign({},detail)
|
|
74
|
-
}
|
|
75
|
-
prepareFunction(detail,(detail)=>{
|
|
76
|
-
detail.toObject = function(){
|
|
77
|
-
return Object.assign({},detail)
|
|
78
|
-
}
|
|
79
|
-
callback(null,detail);
|
|
80
|
-
})
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
},(e,details)=>{
|
|
84
|
-
resolve(details);
|
|
85
|
-
})
|
|
86
|
-
}else{
|
|
87
|
-
resolve(details);
|
|
88
|
-
}
|
|
89
|
-
}))
|
|
90
|
-
}
|
|
91
|
-
post.prototype.remove = function(callback = ()=>{}){
|
|
92
|
-
let master = this.master;
|
|
93
|
-
if(master && master.toObject) master = master.toObject();
|
|
94
|
-
if(!master._id) return callback();
|
|
95
|
-
let query_delete = {id_ct: master._id.toString(),id_app:master.id_app};
|
|
96
|
-
if(this.options.queryDelete){
|
|
97
|
-
query_delete = {...query_delete,...this.options.queryDelete,id_app:master.id_app}
|
|
98
|
-
}
|
|
99
|
-
async.series({
|
|
100
|
-
sks:(callback)=>{
|
|
101
|
-
setImmediate(()=>{
|
|
102
|
-
global.getModel("sokho").find({id_ct:master._id.toString()}).lean().then(function(sks){
|
|
103
|
-
callback(null,sks);
|
|
104
|
-
}).catch(e=>{
|
|
105
|
-
callback(e);
|
|
106
|
-
})
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
},async (e,rs)=>{
|
|
111
|
-
if(e) return callback(e);
|
|
112
|
-
//delete sokho congty
|
|
113
|
-
await global.getModel("sokho").deleteMany(query_delete);
|
|
114
|
-
//delete sokhonpp
|
|
115
|
-
await global.getModel("sokhonpp").deleteMany(query_delete);
|
|
116
|
-
//delete sokhokhongton
|
|
117
|
-
await global.getModel("sokhokhongton").deleteMany(query_delete);
|
|
118
|
-
//Tính tồn kho tức thời
|
|
119
|
-
if(rs.sks.length>0){
|
|
120
|
-
//tinh lai ton kho tuc thoi khi xoa sokho
|
|
121
|
-
tontucthoi.tinhTonTucThoi(rs.sks,(e)=>{
|
|
122
|
-
if(e) console.error("[post-sokho] Tính tồn tức thời sau khi xoá sokho của vật tư",e);
|
|
123
|
-
})
|
|
124
|
-
}
|
|
125
|
-
callback();
|
|
126
|
-
})
|
|
127
|
-
}
|
|
128
|
-
post.prototype.run = async function(callback=()=>{}) {
|
|
129
|
-
if (!this.details) {
|
|
130
|
-
console.error("details not exists")
|
|
131
|
-
return callback(null);
|
|
132
|
-
}
|
|
133
|
-
if (!this.master || !this.master._id) {
|
|
134
|
-
console.error("masters not exists",this.master)
|
|
135
|
-
return callback(null);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
let master = this.master;
|
|
139
|
-
if(master.toObject) master = master.toObject();
|
|
140
|
-
|
|
141
|
-
let details = await this.runPrepare(this.prepare,this.details);
|
|
142
|
-
await details.asyncJoinModel2(master.id_app,Dmvt,{where:"ma_vt",setFields:(item,ref)=>{
|
|
143
|
-
if(!item.tk_vt) item.tk_vt = ref.tk_vt;
|
|
144
|
-
if(!item.tk_gv) item.tk_gv = ref.tk_gv;
|
|
145
|
-
item.tg_tk = ref.tg_tk;
|
|
146
|
-
item.xk_nvl = ref.xk_nvl;
|
|
147
|
-
}});
|
|
148
|
-
//kiểm tra kho bị khoá. loại trừ phiếu kiểm kê
|
|
149
|
-
if((master.ma_ct||"").toUpperCase()!=="PKK"){
|
|
150
|
-
let ds_kho = [...new Set(details.map(d=>d.ma_kho||master.ma_kho))]
|
|
151
|
-
const kho_locked = await global.getModel('dmkho').findOne({id_app:master.id_app,lock:true,ma_kho:{$in:ds_kho}}).lean();
|
|
152
|
-
if(kho_locked) return callback(`Kho ${kho_locked.ten_kho} đã bị khoá`);
|
|
153
|
-
}
|
|
154
|
-
//dinh muc san pham
|
|
155
|
-
let sp_xk_nvl = details.filter(p=>p.xk_nvl && p.nxt==2);
|
|
156
|
-
for(let i =0;i<sp_xk_nvl.length;i++){
|
|
157
|
-
sp_xk_nvl[i].dinh_muc_nvl = await dinhmucsx(master.id_app,sp_xk_nvl[i].ma_vt,sp_xk_nvl[i].ma_tt1,sp_xk_nvl[i].sl_xuat,sp_xk_nvl[i].ma_dvt);
|
|
158
|
-
}
|
|
159
|
-
//
|
|
160
|
-
details = details.filter(d=>d.tg_tk || (d.dinh_muc_nvl && d.dinh_muc_nvl.length>0));
|
|
161
|
-
const sp_co_dm = details.filter(p=>p.xk_nvl && p.dinh_muc_nvl && p.dinh_muc_nvl.length>0);
|
|
162
|
-
for(let i =0;i<sp_co_dm.length;i++){
|
|
163
|
-
//Xác định nguyên vật liệu cho sản phẩm
|
|
164
|
-
const p = sp_co_dm[i];
|
|
165
|
-
//Tính số lượng sản phẩm sản xuất (quy đổi sang đơn vị tính chuẩn)
|
|
166
|
-
let he_so_qd=1;
|
|
167
|
-
let qd = await global.getModel("dmqddvt").findOne({id_app:master.id_app,ma_vt:p.ma_vt,ma_dvt:p.ma_dvt}).lean();
|
|
168
|
-
if(qd) he_so_qd = (qd.mau?(qd.tu/qd.mau): qd.ty_le_qd);
|
|
169
|
-
let sl_sp = p.sl_xuat * he_so_qd;
|
|
170
|
-
//
|
|
171
|
-
p.dinh_muc_nvl = p.dinh_muc_nvl.map(d=>{
|
|
172
|
-
d.nxt = p.nxt;
|
|
173
|
-
d.ma_sp = p.ma_vt;
|
|
174
|
-
d.sl_sp = sl_sp;
|
|
175
|
-
|
|
176
|
-
d.ma_tt1_sp = p.ma_tt1;
|
|
177
|
-
d.ma_tt2_sp = p.ma_tt2;
|
|
178
|
-
d.ma_tt3_sp = p.ma_tt3;
|
|
179
|
-
d.ma_kho = p.ma_kho;
|
|
180
|
-
/*if(d.loai_dinh_muc==1){
|
|
181
|
-
d.sl_xuat = d.sl_dinh_muc * p.sl_xuat * (1+(d.ty_le_hao_hut||0)/100);
|
|
182
|
-
}else{
|
|
183
|
-
d.sl_xuat = d.sl_dinh_muc * (1+p.ty_le_hao_hut/100);
|
|
184
|
-
}*/
|
|
185
|
-
return d;
|
|
186
|
-
})
|
|
187
|
-
/*await p.dinh_muc_nvl.asyncJoinModel2(master.id_app,Dmvt,{where:"ma_vt",setFields:(item,ref)=>{
|
|
188
|
-
if(!item.tk_vt) item.tk_vt = ref.tk_vt;
|
|
189
|
-
if(!item.tk_gv) item.tk_gv = ref.tk_gv;
|
|
190
|
-
item.tg_tk = ref.tg_tk;
|
|
191
|
-
item.xk_nvl = ref.xk_nvl;
|
|
192
|
-
}});*/
|
|
193
|
-
p.dinh_muc_nvl = p.dinh_muc_nvl.filter(p=>p.tg_tk);
|
|
194
|
-
//dinh muc ban thanh pham
|
|
195
|
-
}
|
|
196
|
-
//
|
|
197
|
-
let ps_kg_dm = details.filter(p=>!p.xk_nvl || !p.dinh_muc_nvl || p.dinh_muc_nvl.length===0);
|
|
198
|
-
let ps_dm = details.filter(p=>p.xk_nvl && p.dinh_muc_nvl && p.dinh_muc_nvl.length>0).map(p=>p.dinh_muc_nvl).reduce((a,b)=>a.concat(b),[]);
|
|
199
|
-
//
|
|
200
|
-
details = [...ps_kg_dm,...ps_dm];
|
|
201
|
-
//
|
|
202
|
-
await details.asyncJoinModel2(master.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]});
|
|
203
|
-
details.forEach((detail)=>{
|
|
204
|
-
detail.ma_kho = detail.ma_kho || master.ma_kho;
|
|
205
|
-
detail.he_so_qd = detail.he_so_qd || 1;
|
|
206
|
-
if(detail.mau && detail.tu){
|
|
207
|
-
detail.he_so_qd = detail.tu/detail.mau;
|
|
208
|
-
detail.sl_xuat_qd = utils.round((detail.sl_xuat||0) * detail.tu/detail.mau,round);
|
|
209
|
-
detail.sl_nhap_qd = utils.round((detail.sl_nhap||0) * detail.tu/detail.mau,round);
|
|
210
|
-
}else{
|
|
211
|
-
detail.sl_xuat_qd =utils.round( (detail.sl_xuat||0) * detail.he_so_qd,round);
|
|
212
|
-
detail.sl_nhap_qd =utils.round( (detail.sl_nhap||0) * detail.he_so_qd,round);
|
|
213
|
-
}
|
|
214
|
-
})
|
|
215
|
-
//kiểm tra các kho bị khoá
|
|
216
|
-
|
|
217
|
-
//tu dong xac dinh gia von
|
|
218
|
-
let nam = new Date(master.ngay_ct).getFullYear();
|
|
219
|
-
let thang = new Date(master.ngay_ct).getMonth() + 1;
|
|
220
|
-
await new Promise((rs)=>{
|
|
221
|
-
async.map( details.filter(p=>p.tg_tk && ((p.sl_xuat && !p.px_gia_dd) || (p.sl_nhap && p.pn_gia_tb)) && p.sl_xuat),(p,callback)=>{
|
|
222
|
-
setImmediate(async ()=>{
|
|
223
|
-
//xac dinh he so quy doi
|
|
224
|
-
let he_so_qd=1;
|
|
225
|
-
let qd = await global.getModel("dmqddvt").findOne({id_app:master.id_app,ma_vt:p.ma_vt,ma_dvt:p.ma_dvt}).lean();
|
|
226
|
-
if(qd) he_so_qd = (qd.mau?(qd.tu/qd.mau): qd.ty_le_qd);
|
|
227
|
-
//tim gia tb
|
|
228
|
-
let query = {ma_vt:p.ma_vt,nam,thang,ma_kho:{$in:[p.ma_kho,"",null]}}
|
|
229
|
-
let giatb = await global.getModel("giatb").findOne(query).sort({ma_kho:-1}).lean();
|
|
230
|
-
if(giatb){
|
|
231
|
-
p.gia_von_nt = p.gia_von = (giatb.gia||0) * he_so_qd;
|
|
232
|
-
p.tien_xuat_nt = p.tien_xuat = (p.sl_xuat||0) * p.gia_von_nt;
|
|
233
|
-
p.tien_nhap_nt = p.tien_nhap = (p.sl_nhap||0) * p.gia_von_nt;
|
|
234
|
-
callback();
|
|
235
|
-
}else{
|
|
236
|
-
let condition = {id_app:master.id_app,ma_vt:p.ma_vt,ma_kho:p.ma_kho};
|
|
237
|
-
condition.tu_ngay = moment(master.ngay_ct).startOf("month").toDate();
|
|
238
|
-
condition.den_ngay = moment(master.ngay_ct).endOf("month").toDate();
|
|
239
|
-
tinhgiatb(condition,(e,giatb)=>{
|
|
240
|
-
if(e) console.error("[postSokho] Không thể tính giá trung bình",e.message||e.error||e,condition);
|
|
241
|
-
if(rs){
|
|
242
|
-
p.gia_von_nt = p.gia_von = (giatb.gia||0) * he_so_qd;
|
|
243
|
-
}else{
|
|
244
|
-
p.gia_von_nt = p.gia_von =0;
|
|
245
|
-
}
|
|
246
|
-
p.tien_xuat_nt = p.tien_xuat = (p.sl_xuat||0) * p.gia_von_nt;
|
|
247
|
-
p.tien_nhap_nt = p.tien_nhap = (p.sl_nhap||0) * p.gia_von_nt;
|
|
248
|
-
callback();
|
|
249
|
-
})
|
|
250
|
-
}
|
|
251
|
-
})
|
|
252
|
-
},()=>{
|
|
253
|
-
rs();
|
|
254
|
-
})
|
|
255
|
-
})
|
|
256
|
-
//sync master and detail
|
|
257
|
-
details = details.map((detail,line)=>{
|
|
258
|
-
detail.id_ct = master._id.toString();
|
|
259
|
-
detail.ma_ct = master.ma_ct;
|
|
260
|
-
detail.so_ct = master.so_ct;
|
|
261
|
-
detail.ngay_ct = master.ngay_ct;
|
|
262
|
-
for (let attr in global.getModel("sokho").schema.paths) {
|
|
263
|
-
if (attr != 'id_ct' && attr != '_id' && attr != '__v' && attr != 'date_updated' && attr != 'date_created') {
|
|
264
|
-
let v = detail[attr];
|
|
265
|
-
if((v===undefined || v===null || v==="") && v!==0 && (master[attr]!==undefined)){
|
|
266
|
-
detail[attr] = master[attr]
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
detail.line = line;
|
|
271
|
-
delete detail.toObject;
|
|
272
|
-
delete detail._id;
|
|
273
|
-
delete detail.__v;
|
|
274
|
-
return detail;
|
|
275
|
-
})
|
|
276
|
-
//Xác định loại kho
|
|
277
|
-
await details.asyncJoinModel2(master.id_app,"dmkho",{where:"ma_kho",fields:"la_kho_npp"});
|
|
278
|
-
//xoá dư liệu cũ
|
|
279
|
-
const self = this;
|
|
280
|
-
self.remove(async (error)=> {
|
|
281
|
-
if (error){
|
|
282
|
-
console.error("[postSokho] error delete data post",error.message||error.error||error,master.so_ct,master.ma_ct)
|
|
283
|
-
return callback(error)
|
|
284
|
-
}
|
|
285
|
-
if(details.length==0) return callback(null,[]);
|
|
286
|
-
try{
|
|
287
|
-
//post sokho
|
|
288
|
-
let data_sokho = details.filter(d=>d.tg_tk && !d.la_kho_npp);
|
|
289
|
-
let rs_sokho = await global.getModel("sokho").create(data_sokho);
|
|
290
|
-
//console.log("post sokho",rs_sokho);
|
|
291
|
-
//post sokhonpp
|
|
292
|
-
let data_sokhonpp = details.filter(d=>d.tg_tk && d.la_kho_npp);
|
|
293
|
-
let rs_sokhnpp = await global.getModel("sokhonpp").create(data_sokhonpp);
|
|
294
|
-
//post sokhokhongton
|
|
295
|
-
let data_sokhokhongton = details.filter(d=>d.tg_tk==false);
|
|
296
|
-
let rs_sokhokhongton = await global.getModel("sokhokhongton").create(data_sokhokhongton);
|
|
297
|
-
/*if(master.ma_ct){
|
|
298
|
-
let contr = global.controllers[master.ma_ct.toUpperCase()];
|
|
299
|
-
if(contr){
|
|
300
|
-
let ct = await contr.model.findById(master._id).inTxt();
|
|
301
|
-
if(!ct){
|
|
302
|
-
console.error("[postSokho] Chứng từ không tồn tại. Xóa sổ sách",master._id,master.so_ct,master.ma_ct);
|
|
303
|
-
self.remove(()=> {
|
|
304
|
-
callback(`Chứng từ không tồn tại`);
|
|
305
|
-
})
|
|
306
|
-
}else{
|
|
307
|
-
callback(null,{rs_sokho,rs_sokhnpp,rs_sokhokhongton});
|
|
308
|
-
}
|
|
309
|
-
}else{
|
|
310
|
-
console.log("[postSokho] not found controller",master.ma_ct.toUpperCase());
|
|
311
|
-
callback(null,{rs_sokho,rs_sokhnpp,rs_sokhokhongton});
|
|
312
|
-
}
|
|
313
|
-
}else{
|
|
314
|
-
callback(null,{rs_sokho,rs_sokhnpp,rs_sokhokhongton});
|
|
315
|
-
}*/
|
|
316
|
-
callback(null,{rs_sokho,rs_sokhnpp,rs_sokhokhongton});
|
|
317
|
-
//tinh ton kho tuc thoi
|
|
318
|
-
if(rs_sokho){
|
|
319
|
-
setImmediate(()=>{
|
|
320
|
-
tontucthoi.tinhTonTucThoi(rs_sokho,(e)=>{
|
|
321
|
-
if(e) console.error("Lỗi tính tồn tức thời vật tư",rs_sokho,e.message||e.error||e,master.so_ct,master.ma_ct)
|
|
322
|
-
})
|
|
323
|
-
})
|
|
324
|
-
}
|
|
325
|
-
}catch(e){
|
|
326
|
-
console.error("[postSokho] Đã có lỗi khi post sokho",e);
|
|
327
|
-
callback(e);
|
|
328
|
-
/*let msg_error = e.message || e.error || e.toString();
|
|
329
|
-
if(msg_error.indexOf("E11000 duplicate")>=0 && msg_error.indexOf("id_ct_1_line_1")>=0){
|
|
330
|
-
let rs_sokho = await global.getModel("sokho").find({id_ct: master._id.toString()});
|
|
331
|
-
let rs_sokhnpp = await global.getModel("sokhonpp").find({id_ct: master._id.toString()});
|
|
332
|
-
let rs_sokhokhongton = await global.getModel("sokhokhongton").find({id_ct: master._id.toString()});
|
|
333
|
-
if(rs_sokho.length>0 || rs_sokhnpp.length>0 || rs_sokhokhongton.length>0 ){
|
|
334
|
-
callback(null, {rs_sokho,rs_sokhnpp,rs_sokhokhongton});
|
|
335
|
-
}else{
|
|
336
|
-
console.error("[postSokho] Error save data post",e.message||e.error||e,master.so_ct,master.ma_ct)
|
|
337
|
-
self.remove(()=> {
|
|
338
|
-
callback(e);
|
|
339
|
-
})
|
|
340
|
-
}
|
|
341
|
-
}else{
|
|
342
|
-
console.error("[postSokho] Error save data post",e.message||e.error||e,master.so_ct,master.ma_ct)
|
|
343
|
-
self.remove(()=> {
|
|
344
|
-
callback(e);
|
|
345
|
-
})
|
|
346
|
-
}*/
|
|
347
|
-
|
|
348
|
-
}
|
|
349
|
-
});
|
|
350
|
-
};
|
|
351
|
-
module.exports = post;
|
|
1
|
+
const async=require("async"),utils=require("./utils"),tontucthoi=global.getModel("tontucthoi"),Dmvt=global.getModel("dmvt"),round=4,tinhgiatb=require("../libs/tinhgiatb1vt"),moment=require("moment"),dinhmucsx=async($id_app$$,$i_ma_sp_qd$$,$dm_ma_tt1$$,$sl_xuat_sl_xuat_qd$$,$dm_of_vt_ma_dvt_vt$$)=>{let $vts$$=[];$dm_ma_tt1$$=await global.getModel("dinhmucsx").findOne({id_app:$id_app$$,ma_sp:$i_ma_sp_qd$$,ma_tt1:$dm_ma_tt1$$||void 0},{details:1}).lean();if(!$dm_ma_tt1$$||!$dm_ma_tt1$$.details||$dm_ma_tt1$$.details.length===
|
|
2
|
+
0)return $vts$$;$dm_ma_tt1$$.details=$dm_ma_tt1$$.details.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return $d$$});var $he_so_qd_sl$$=1;($i_ma_sp_qd$$=await global.getModel("dmqddvt").findOne({id_app:$id_app$$,ma_vt:$i_ma_sp_qd$$,ma_dvt:$dm_of_vt_ma_dvt_vt$$}).lean())&&($he_so_qd_sl$$=$i_ma_sp_qd$$.mau?$i_ma_sp_qd$$.tu/$i_ma_sp_qd$$.mau:$i_ma_sp_qd$$.ty_le_qd);$sl_xuat_sl_xuat_qd$$*=$he_so_qd_sl$$;await $dm_ma_tt1$$.details.asyncJoinModel2($id_app$$,Dmvt,{where:"ma_vt",setFields:($item$$,$ref$$)=>
|
|
3
|
+
{$item$$.tk_vt||($item$$.tk_vt=$ref$$.tk_vt);$item$$.tk_gv||($item$$.tk_gv=$ref$$.tk_gv);$item$$.tg_tk=$ref$$.tg_tk;$item$$.xk_nvl=$ref$$.xk_nvl}});for($i_ma_sp_qd$$=0;$i_ma_sp_qd$$<$dm_ma_tt1$$.details.length;$i_ma_sp_qd$$++)$dm_of_vt_ma_dvt_vt$$=$dm_ma_tt1$$.details[$i_ma_sp_qd$$],$he_so_qd_sl$$=0,$he_so_qd_sl$$=$dm_of_vt_ma_dvt_vt$$.loai_dinh_muc==1?$dm_of_vt_ma_dvt_vt$$.sl_dinh_muc*$sl_xuat_sl_xuat_qd$$*(1+($dm_of_vt_ma_dvt_vt$$.ty_le_hao_hut||0)/100):$dm_of_vt_ma_dvt_vt$$.sl_dinh_muc*(1+$dm_of_vt_ma_dvt_vt$$.ty_le_hao_hut/
|
|
4
|
+
100),$dm_of_vt_ma_dvt_vt$$.xk_nvl?($dm_of_vt_ma_dvt_vt$$=await dinhmucsx($id_app$$,$dm_of_vt_ma_dvt_vt$$.ma_vt,$dm_of_vt_ma_dvt_vt$$.ma_tt1||void 0,$he_so_qd_sl$$,$dm_of_vt_ma_dvt_vt$$.ma_dvt),$vts$$=[...$vts$$,...$dm_of_vt_ma_dvt_vt$$]):($dm_of_vt_ma_dvt_vt$$.sl_xuat=$he_so_qd_sl$$,$vts$$.push($dm_of_vt_ma_dvt_vt$$));return $vts$$},post=function($master$$,$details$$,$prepare$$,$options$$={}){$details$$||=[];this.master={...$master$$};this.details=$details$$.map($detail$$=>({...$detail$$}));this.prepare=
|
|
5
|
+
$prepare$$;this.options=$options$$};
|
|
6
|
+
post.prototype.runPrepare=async($prepareFunction$$,$details$$)=>{$details$$=$details$$.map($d$$=>{$d$$.toObject&&($d$$=$d$$.toObject());return{...$d$$}});return new Promise($resolve$$=>{$prepareFunction$$?async.map($details$$,($detail$$,$callback$$)=>{setImmediate(()=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$prepareFunction$$($detail$$,$detail$$=>{$detail$$.toObject=function(){return Object.assign({},$detail$$)};$callback$$(null,$detail$$)})})},($e$$,$details$$)=>{$resolve$$($details$$)}):
|
|
7
|
+
$resolve$$($details$$)})};
|
|
8
|
+
post.prototype.remove=function($callback$$=()=>{}){let $master$$=this.master;$master$$&&$master$$.toObject&&($master$$=$master$$.toObject());if(!$master$$._id)return $callback$$();let $query_delete$$={id_ct:$master$$._id.toString(),id_app:$master$$.id_app};this.options.queryDelete&&($query_delete$$={...$query_delete$$,...this.options.queryDelete,id_app:$master$$.id_app});async.series({sks:$callback$$=>{setImmediate(()=>{global.getModel("sokho").find({id_ct:$master$$._id.toString()}).lean().then(function($sks$$){$callback$$(null,$sks$$)}).catch($e$$=>
|
|
9
|
+
{$callback$$($e$$)})})}},async($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);await global.getModel("sokho").deleteMany($query_delete$$);await global.getModel("sokhonpp").deleteMany($query_delete$$);await global.getModel("sokhokhongton").deleteMany($query_delete$$);$rs$$.sks.length>0&&tontucthoi.tinhTonTucThoi($rs$$.sks,$e$$=>{$e$$&&console.error("[post-sokho] T\u00ednh t\u1ed3n t\u1ee9c th\u1eddi sau khi xo\u00e1 sokho c\u1ee7a v\u1eadt t\u01b0",$e$$)});$callback$$()})};
|
|
10
|
+
post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return console.error("details not exists"),$callback$$(null);if(!this.master||!this.master._id)return console.error("masters not exists",this.master),$callback$$(null);let $master$$=this.master;$master$$.toObject&&($master$$=$master$$.toObject());let $details$$=await this.runPrepare(this.prepare,this.details);await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",setFields:($item$$,$ref$$)=>{$item$$.tk_vt||($item$$.tk_vt=
|
|
11
|
+
$ref$$.tk_vt);$item$$.tk_gv||($item$$.tk_gv=$ref$$.tk_gv);$item$$.tg_tk=$ref$$.tg_tk;$item$$.xk_nvl=$ref$$.xk_nvl}});if(($master$$.ma_ct||"").toUpperCase()!=="PKK"){var $ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=[...(new Set($details$$.map($d$$=>$d$$.ma_kho||$master$$.ma_kho)))];if($ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=await global.getModel("dmkho").findOne({id_app:$master$$.id_app,lock:!0,ma_kho:{$in:$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$}}).lean())return $callback$$(`Kho ${$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$.ten_kho} \u0111\u00e3 b\u1ecb kho\u00e1`)}$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=
|
|
12
|
+
$details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.nxt==2);for(var $i$jscomp$1_i$$=0;$i$jscomp$1_i$$<$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$.length;$i$jscomp$1_i$$++)$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].dinh_muc_nvl=await dinhmucsx($master$$.id_app,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].ma_vt,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].ma_tt1,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].sl_xuat,$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$].ma_dvt);
|
|
13
|
+
$details$$=$details$$.filter($d$$=>$d$$.tg_tk||$d$$.dinh_muc_nvl&&$d$$.dinh_muc_nvl.length>0);$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=$details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.dinh_muc_nvl&&$p$$.dinh_muc_nvl.length>0);for($i$jscomp$1_i$$=0;$i$jscomp$1_i$$<$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$.length;$i$jscomp$1_i$$++){const $p$$=$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$[$i$jscomp$1_i$$];let $he_so_qd$$=1,$qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,
|
|
14
|
+
ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);let $sl_sp$$=$p$$.sl_xuat*$he_so_qd$$;$p$$.dinh_muc_nvl=$p$$.dinh_muc_nvl.map($d$$=>{$d$$.nxt=$p$$.nxt;$d$$.ma_sp=$p$$.ma_vt;$d$$.sl_sp=$sl_sp$$;$d$$.ma_tt1_sp=$p$$.ma_tt1;$d$$.ma_tt2_sp=$p$$.ma_tt2;$d$$.ma_tt3_sp=$p$$.ma_tt3;$d$$.ma_kho=$p$$.ma_kho;return $d$$});$p$$.dinh_muc_nvl=$p$$.dinh_muc_nvl.filter($p$$=>$p$$.tg_tk)}$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$=$details$$.filter($p$$=>
|
|
15
|
+
!$p$$.xk_nvl||!$p$$.dinh_muc_nvl||$p$$.dinh_muc_nvl.length===0);$i$jscomp$1_i$$=$details$$.filter($p$$=>$p$$.xk_nvl&&$p$$.dinh_muc_nvl&&$p$$.dinh_muc_nvl.length>0).map($p$$=>$p$$.dinh_muc_nvl).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$details$$=[...$ds_kho_kho_locked_ps_kg_dm_sp_co_dm_sp_xk_nvl$$,...$i$jscomp$1_i$$];await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]});$details$$.forEach($detail$$=>
|
|
16
|
+
{$detail$$.ma_kho=$detail$$.ma_kho||$master$$.ma_kho;$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.he_so_qd,
|
|
17
|
+
round))});let $nam$$=(new Date($master$$.ngay_ct)).getFullYear(),$thang$$=(new Date($master$$.ngay_ct)).getMonth()+1;await new Promise($rs$$=>{async.map($details$$.filter($p$$=>$p$$.tg_tk&&($p$$.sl_xuat&&!$p$$.px_gia_dd||$p$$.sl_nhap&&$p$$.pn_gia_tb)&&$p$$.sl_xuat),($p$$,$callback$$)=>{setImmediate(async()=>{let $he_so_qd$$=1;var $giatb_qd$$=await global.getModel("dmqddvt").findOne({id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_dvt:$p$$.ma_dvt}).lean();$giatb_qd$$&&($he_so_qd$$=$giatb_qd$$.mau?$giatb_qd$$.tu/
|
|
18
|
+
$giatb_qd$$.mau:$giatb_qd$$.ty_le_qd);$giatb_qd$$={ma_vt:$p$$.ma_vt,nam:$nam$$,thang:$thang$$,ma_kho:{$in:[$p$$.ma_kho,"",null]}};if($giatb_qd$$=await global.getModel("giatb").findOne($giatb_qd$$).sort({ma_kho:-1}).lean())$p$$.gia_von_nt=$p$$.gia_von=($giatb_qd$$.gia||0)*$he_so_qd$$,$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt,$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||0)*$p$$.gia_von_nt,$callback$$();else{let $condition$$={id_app:$master$$.id_app,ma_vt:$p$$.ma_vt,ma_kho:$p$$.ma_kho};
|
|
19
|
+
$condition$$.tu_ngay=moment($master$$.ngay_ct).startOf("month").toDate();$condition$$.den_ngay=moment($master$$.ngay_ct).endOf("month").toDate();tinhgiatb($condition$$,($e$$,$giatb$$)=>{$e$$&&console.error("[postSokho] Kh\u00f4ng th\u1ec3 t\u00ednh gi\u00e1 trung b\u00ecnh",$e$$.message||$e$$.error||$e$$,$condition$$);$p$$.gia_von_nt=$rs$$?$p$$.gia_von=($giatb$$.gia||0)*$he_so_qd$$:$p$$.gia_von=0;$p$$.tien_xuat_nt=$p$$.tien_xuat=($p$$.sl_xuat||0)*$p$$.gia_von_nt;$p$$.tien_nhap_nt=$p$$.tien_nhap=($p$$.sl_nhap||
|
|
20
|
+
0)*$p$$.gia_von_nt;$callback$$()})}})},()=>{$rs$$()})});$details$$=$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();$detail$$.ma_ct=$master$$.ma_ct;$detail$$.so_ct=$master$$.so_ct;$detail$$.ngay_ct=$master$$.ngay_ct;for(let $attr$$ in global.getModel("sokho").schema.paths)if($attr$$!="id_ct"&&$attr$$!="_id"&&$attr$$!="__v"&&$attr$$!="date_updated"&&$attr$$!="date_created"){let $v$$=$detail$$[$attr$$];$v$$!==void 0&&$v$$!==null&&$v$$!==""||$v$$===0||$master$$[$attr$$]===
|
|
21
|
+
void 0||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;return $detail$$});await $details$$.asyncJoinModel2($master$$.id_app,"dmkho",{where:"ma_kho",fields:"la_kho_npp"});this.remove(async $error$$=>{if($error$$)return console.error("[postSokho] error delete data post",$error$$.message||$error$$.error||$error$$,$master$$.so_ct,$master$$.ma_ct),$callback$$($error$$);if($details$$.length==0)return $callback$$(null,[]);
|
|
22
|
+
try{let $data_sokho$$=$details$$.filter($d$$=>$d$$.tg_tk&&!$d$$.la_kho_npp),$rs_sokho$$=await global.getModel("sokho").create($data_sokho$$),$data_sokhonpp$$=$details$$.filter($d$$=>$d$$.tg_tk&&$d$$.la_kho_npp),$rs_sokhnpp$$=await global.getModel("sokhonpp").create($data_sokhonpp$$),$data_sokhokhongton$$=$details$$.filter($d$$=>$d$$.tg_tk==0),$rs_sokhokhongton$$=await global.getModel("sokhokhongton").create($data_sokhokhongton$$);$callback$$(null,{rs_sokho:$rs_sokho$$,rs_sokhnpp:$rs_sokhnpp$$,rs_sokhokhongton:$rs_sokhokhongton$$});
|
|
23
|
+
$rs_sokho$$&&setImmediate(()=>{tontucthoi.tinhTonTucThoi($rs_sokho$$,$e$$=>{$e$$&&console.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",$rs_sokho$$,$e$$.message||$e$$.error||$e$$,$master$$.so_ct,$master$$.ma_ct)})})}catch($e$$){console.error("[postSokho] \u0110\u00e3 c\u00f3 l\u1ed7i khi post sokho",$e$$),$callback$$($e$$)}})};module.exports=post;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const csphucapSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ds_nv:[String],ds_bp:[String],phu_cap:[],status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
|
|
2
|
+
(global.configs||{}).createIndexes&&(csphucapSchema.index({id_app:1,ds_nv:1}),csphucapSchema.index({id_app:1,ds_bp:1}),csphucapSchema.index({id_app:1,status:1}),csphucapSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}));module.exports=mongoose.models.csphucap||mongoose.model("csphucap",csphucapSchema);
|
package/server/models/dmbp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const dmbpSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_bp:{type:String,required:!0,uppercase:!0,maxlength:32},ten_bp:{type:String,required:!0,maxlength:1024},phu_trach:{type:String,uppercase:!0,maxlength:1024},ten_phu_trach:String,phoi_hop:{type:String,uppercase:!0,maxlength:1024},ma_bp_me:{type:String,uppercase:!0,maxlength:32},ma_bp_tuong_tac:[String],nhiem_vu:{type:String},tk_cp_luong:String,tk_pt_nv:String,tk_thue_tncn:String,ma_phi:String,tinh_luong_theo_ngay:Boolean,
|
|
2
|
-
ma_loai_cong_mac_dinh:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},la_cong_doan_sx:{type:Boolean,default:!1},stt:Number,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,
|
|
3
|
-
dataview_to_users:[String]},{toJSON:{virtuals:!0}});
|
|
2
|
+
ma_loai_cong_mac_dinh:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},phu_cap:[],la_cong_doan_sx:{type:Boolean,default:!1},stt:Number,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,
|
|
3
|
+
default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});
|
|
4
4
|
(global.configs||{}).createIndexes&&(dmbpSchema.index({id_app:1,ma_bp:1},{unique:!0}),dmbpSchema.index({id_app:1,ma_bp:1,ten_bp:1}),dmbpSchema.index({id_app:1,ma_bp:1,ten_bp:1,sysorder:1,bac:1,loai_nh:1}),dmbpSchema.index({id_app:1,phu_trach:1,ten_phu_trach:1}),dmbpSchema.index({id_app:1,status:1}),dmbpSchema.index({id_app:1,ma_bp_me:1}),dmbpSchema.index({id_app:1,ma_bp_tuong_tac:1}),dmbpSchema.index({id_app:1,nhiem_vu:1}),dmbpSchema.index({id_app:1,ma_loai_cong_mac_dinh:1}),dmbpSchema.index({id_app:1,
|
|
5
5
|
user_created:1,visible_to:1,visible_to_users:1,status:1}),dmbpSchema.index({id_app:1,ma_bp:"text",ten_bp:"text",phu_trach:"text",ten_phu_trach:"text"},{name:"dmbp_index_text"}));const model=mongoose.models.dmbp||mongoose.model("dmbp",dmbpSchema);
|
|
6
6
|
model.referenceKeys={ma_bp:[{model:"socai",key:"ma_bp",error:"B\u1ed9 ph\u1eadn {{VALUE}} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong s\u1ed5 c\u00e1i"},{model:"chamcong",key:"ma_bp",error:"B\u1ed9 ph\u1eadn {{VALUE}} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong b\u1ea3ng ch\u1ea5m c\u00f4ng"},{model:"bangtinhluong",key:"ma_bp",error:"B\u1ed9 ph\u1eadn {{VALUE}} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong b\u1ea3ng t\u00ednh l\u01b0\u01a1ng"},{model:"qts",key:"ma_bp",error:"B\u1ed9 ph\u1eadn {{VALUE}} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong qu\u1ea3n l\u00fd t\u00e0i s\u1ea3n"},
|
package/server/models/pcl.js
CHANGED
|
@@ -3,4 +3,4 @@ maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_kho:{t
|
|
|
3
3
|
const pclSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"PCL",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,required:!0,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ky:{type:Number,required:!0},nam:{type:Number,required:!0},dot:{type:Number,required:!0},ty_le:{type:Number,required:!0},tk_co:{type:String,required:!0,
|
|
4
4
|
uppercase:!0,maxlength:32},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,min:0,default:1},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,
|
|
5
5
|
default:0},visible_to_users:[String],update_right:[String],delete_right:[String],details:{type:[detailSchema]},ma_kho:String,ten_kho:String});pclSchema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook};
|
|
6
|
-
(global.configs||{}).createIndexes&&(pclSchema.index({id_app:1,
|
|
6
|
+
(global.configs||{}).createIndexes&&(pclSchema.index({id_app:1,ma_ct:1,so_ct:-1,ngay_ct:-1}),pclSchema.index({id_app:1,dien_giai:"text",so_ct:"text"}),pclSchema.index({id_app:1,nam:-1,ky:-1}),pclSchema.index({id_app:1,nam:-1,ky:-1,"details.ma_nv":1}),pclSchema.index({id_app:1,status:1}),pclSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,trang_thai:1}),pclSchema.index({id_app:1,trang_thai:1}));module.exports=mongoose.models.pcl||mongoose.model("pcl",pclSchema);
|
package/server/models/ptl.js
CHANGED
|
@@ -2,5 +2,4 @@ const validAccount=require("../libs/validator-account"),validator=require("../li
|
|
|
2
2
|
maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={tk_no:validAccount.existsTk,tk_co:validAccount.existsTk};
|
|
3
3
|
const ptlSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"PTL",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,required:!0,uppercase:!0,trim:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now,required:!0},ma_nt:{type:String,required:"ma_nt is required",default:"VND",trim:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,required:!0,min:0,default:1},
|
|
4
4
|
dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],details:{type:[detailSchema]},ma_kho:String,ten_kho:String});
|
|
5
|
-
ptlSchema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook};(global.configs||{}).createIndexes&&(ptlSchema.index({id_app:1,
|
|
6
|
-
module.exports=mongoose.models.ptl||mongoose.model("ptl",ptlSchema);
|
|
5
|
+
ptlSchema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook};(global.configs||{}).createIndexes&&(ptlSchema.index({id_app:1,ma_ct:1,so_ct:-1,ngay_ct:-1}),ptlSchema.index({id_app:1,dien_giai:"text",so_ct:"text"}),ptlSchema.index({id_app:1,ma_ct:1}),ptlSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,trang_thai:1}),ptlSchema.index({id_app:1,trang_thai:1}));module.exports=mongoose.models.ptl||mongoose.model("ptl",ptlSchema);
|