flexbiz-server 12.0.10 → 12.0.13
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 +2 -1
- package/server/auths/facebook.js +10 -9
- package/server/auths/google.js +9 -8
- package/server/controllers/controller.js +79 -78
- package/server/global.js +2 -2
- package/server/libs/blockchainconnect.js +11 -10
- package/server/libs/ckvt.js +10 -9
- package/server/libs/ckvtcapphat.js +2 -2
- package/server/libs/ckvttt.js +5 -5
- package/server/libs/databanle.js +14 -14
- package/server/libs/dkvt.js +2 -2
- package/server/libs/dkvttt.js +3 -3
- package/server/libs/permission.js +12 -12
- package/server/libs/post-book.js +2 -2
- package/server/libs/thnxt.js +7 -7
- package/server/libs/thnxttt.js +7 -7
- package/server/libs/tinhgiatb.js +22 -19
- package/server/models/app.js +4 -4
- package/server/models/asskey.js +2 -2
- package/server/models/asssell.js +3 -3
- package/server/models/dmvt.js +5 -5
- package/server/models/hd2.js +5 -5
- package/server/models/listinfo.js +2 -2
- package/server/models/pbl.js +5 -5
- package/server/models/pn1.js +2 -2
- package/server/models/pn5.js +3 -3
- package/server/models/pn9.js +2 -2
- package/server/models/po1.js +1 -1
- package/server/models/so1.js +3 -3
- package/server/models/tontucthoi.js +3 -3
- package/server/models/transaction.js +3 -3
- package/server/models/user.js +7 -6
- package/server/modules/lists/ls-asskey.js +17 -14
- package/server/modules/lists/ls-asssell.js +13 -12
- package/server/modules/lists/ls-cart.js +12 -9
- package/server/modules/lists/ls-dmvt.js +32 -27
- package/server/modules/lists/ls-file.js +13 -13
- package/server/modules/lists/ls-participant.js +4 -4
- package/server/modules/public/file.js +10 -0
- package/server/modules/reports/rp-bkct.js +7 -7
- package/server/modules/reports/rp-ckvt.js +8 -4
- package/server/modules/reports/rp-dtbanletheovt.js +6 -6
- package/server/modules/reports/rp-thnxt.js +8 -7
- package/server/modules/reports/rp-tkbanhangtheogioithieu.js +6 -6
- package/server/modules/reports/rpt-tkdiemtichluy.js +2 -2
- package/server/modules/vouchers/vo-bn1.js +9 -7
- package/server/modules/vouchers/vo-hd2.js +7 -7
- package/server/modules/vouchers/vo-lenhsx.js +4 -4
- package/server/modules/vouchers/vo-pbl.js +26 -24
- package/server/modules/vouchers/vo-pc1.js +8 -6
- package/server/modules/vouchers/vo-so1.js +25 -22
- package/server/route.js +9 -9
package/server/models/dmvt.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';const validAccount=require("../libs/validator-account"),validator=require("../libs/validator"),unidecode=require("unidecode"),dmvtSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_vt:{type:String,required:"M\u00e3 v\u1eadt t\u01b0 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",uppercase:!0,trim:!0,maxlength:1024},ma_vt2:{type:String,maxlength:1024,uppercase:!0,trim:!0},ma_can:{type:String,maxlength:1024,uppercase:!0,trim:!0},ten_vt:{type:String,required:"T\u00ean v\u1eadt t\u01b0 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",
|
|
2
2
|
maxlength:1024},ten_vt_kd:String,ma_dvt:{type:String,required:"M\u00e3 \u0111\u01a1n v\u1ecb t\u00ednh kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",maxlength:32},ma_lvt:{type:String,required:!1,maxlength:32},ma_nvt:{type:String,required:!1,maxlength:1024},ten_nvt:String,ma_nvt2:{type:String,required:!1,maxlength:1024},ma_nvt3:{type:String,required:!1,maxlength:1024},ma_nvt4:{type:String,required:!1,maxlength:1024},ma_ncc:{type:String,required:!1,maxlength:32},ten_ncc:String,tg_tk:{type:Boolean,default:!0},
|
|
3
3
|
kg_kiem_tra_ton_kho:{type:Boolean,default:!1},kg_kiem_tra_ton_kho_tt:{type:Boolean,default:!1},gia_xuat:{type:String,default:"1",maxlength:32},tk_vt:{type:String,default:"1561",maxlength:32},tk_dt:{type:String,maxlength:32},tk_gv:{type:String,maxlength:32},tk_dl:{type:String,maxlength:32},tk_tl:{type:String,maxlength:32},gia_ban_le0:{type:Number,default:0},gia_ban_buon0:{type:Number,default:0},gia_ban_le:{type:Number,default:0},gia_ban_buon:{type:Number,default:0},ban_theo_tg:{type:Boolean,default:!1},
|
|
4
|
-
sp_yeu_cau_che_bien:{type:Boolean,default:!1},sp_yeu_cau_pha_che:{type:Boolean,default:!1},gia_mua:{type:Number,default:0},ty_le_ck0:{type:Number,default:0},tien_ck0:{type:Number,default:0},thue_suat_nk0:{type:Number,default:0},ton_kho_mac_dinh:{type:Number,default:0},
|
|
5
|
-
maxlength:1024},picture4:{type:String,maxlength:1024},picture5:{type:String,maxlength:1024},picture6:{type:String,maxlength:1024},mieu_ta:{type:String},mieu_ta_chi_tiet:{type:String},khuyen_mai:{type:String},bao_hang:{type:String},xuat_xu:{type:String},nhan_hieu:{type:String},hot:{type:Boolean},bestseller:{type:Boolean},banner_large:{type:Boolean},banner_small:{type:Boolean},tinh_trang:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,labels:[String],ma_lo_yn:Boolean,
|
|
6
|
-
ma_tt3_yn:Boolean,thuoc_tinh:Schema.Types.Mixed,cong_doan_sx:[Schema.Types.Mixed],is_service:{type:Boolean,default:!1},is_digital:{type:Boolean,default:!1},is_coin:Boolean,is_point:Boolean,file_digital:String,combo:[],shared:{type:Boolean,default:!0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,
|
|
7
|
-
{toJSON:{virtuals:!0}});
|
|
4
|
+
sp_yeu_cau_che_bien:{type:Boolean,default:!1},sp_yeu_cau_pha_che:{type:Boolean,default:!1},gia_mua:{type:Number,default:0},ty_le_ck0:{type:Number,default:0},tien_ck0:{type:Number,default:0},thue_suat_nk0:{type:Number,default:0},ton_kho_mac_dinh:{type:Number,default:0},ton_kho_online_hien_tai:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},ma_thue:{type:String,maxlength:32},picture_slide:{type:String,maxlength:1024},picture:{type:String,maxlength:1024},picture2:{type:String,maxlength:1024},
|
|
5
|
+
picture3:{type:String,maxlength:1024},picture4:{type:String,maxlength:1024},picture5:{type:String,maxlength:1024},picture6:{type:String,maxlength:1024},mieu_ta:{type:String},mieu_ta_chi_tiet:{type:String},khuyen_mai:{type:String},bao_hang:{type:String},xuat_xu:{type:String},nhan_hieu:{type:String},hot:{type:Boolean},bestseller:{type:Boolean},banner_large:{type:Boolean},banner_small:{type:Boolean},tinh_trang:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,labels:[String],ma_lo_yn:Boolean,
|
|
6
|
+
ma_tt1_yn:Boolean,ma_tt2_yn:Boolean,ma_tt3_yn:Boolean,thuoc_tinh:Schema.Types.Mixed,cong_doan_sx:[Schema.Types.Mixed],is_service:{type:Boolean,default:!1},is_digital:{type:Boolean,default:!1},is_coin:Boolean,is_point:Boolean,file_digital:String,combo:[],shared:{type:Boolean,default:!0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,
|
|
7
|
+
default:0},visible_to_users:[String]},{toJSON:{virtuals:!0}});
|
|
8
8
|
dmvtSchema.validate={tk_vt:validAccount.existsTk,ma_dvt:validator.existsDvt,ma_thue:validator.existsVat,gia_xuat:[function($id_app$$,$gx$$,$callback$$){"1"!=$gx$$&&"2"!=$gx$$&&"3"!=$gx$$?$callback$$(!1):$callback$$(!0)},"Ph\u01b0\u01a1ng ph\u00e1p t\u00ednh gi\u00e1 xu\u1ea5t: 1- Trung b\u00ecnh th\u00e1ng, 2- Nh\u1eadp tr\u01b0\u1edbc xu\u1ea5t tr\u01b0\u1edbc, 3- \u0110\u00edch danh"],tinh_trang:[function($id_app$$,$gx$$,$callback$$){"1"!=$gx$$&&"2"!=$gx$$&&"3"!=$gx$$?$callback$$(!1):$callback$$(!0)},
|
|
9
|
-
"T\u00ecnh tr\u1ea1ng: 1- \u0110ang c\u00f3 h\u00e0ng, 2- S\u1eafp c\u00f3 h\u00e0ng, 3- H\u1ebft h\u00e0ng"]};dmvtSchema.index({id_app:1});dmvtSchema.index({ma_nvt:1});dmvtSchema.index({is_service:1});dmvtSchema.index({is_digital:1});dmvtSchema.index({date_updated:-1});dmvtSchema.index({date_created:-1});dmvtSchema.index({user_created:1});dmvtSchema.index({
|
|
9
|
+
"T\u00ecnh tr\u1ea1ng: 1- \u0110ang c\u00f3 h\u00e0ng, 2- S\u1eafp c\u00f3 h\u00e0ng, 3- H\u1ebft h\u00e0ng"]};dmvtSchema.index({id_app:1});dmvtSchema.index({ma_nvt:1});dmvtSchema.index({is_service:1});dmvtSchema.index({is_digital:1});dmvtSchema.index({date_updated:-1});dmvtSchema.index({date_created:-1});dmvtSchema.index({user_created:1});dmvtSchema.index({ton_kho_online_hien_tai:1});dmvtSchema.index({ten_vt_kd:1});
|
|
10
10
|
dmvtSchema.index({ten_vt:"text",mieu_ta:"text",ma_vt:"text",ma_vt2:"text",ma_can:"text",nhan_hieu:"text",xuat_xu:"text",ma_nvt:"text",ten_nvt:"text",ma_ncc:"text",ten_ncc:"text",labels:"text"},{name:"product_index"});dmvtSchema.index({id_app:1,ma_vt:1},{unique:!0});dmvtSchema.index({ma_vt2:1});dmvtSchema.index({ma_can:1});dmvtSchema.index({ten_vt:1});dmvtSchema.index({ma_dvt:1});dmvtSchema.index({ma_lvt:1});dmvtSchema.index({ma_nvt:1});dmvtSchema.index({ten_nvt:1});dmvtSchema.index({ma_ncc:1});dmvtSchema.index({ten_ncc:1});
|
|
11
11
|
dmvtSchema.index({nhan_hieu:1});dmvtSchema.index({xuat_xu:1});dmvtSchema.index({labels:1});dmvtSchema.index({mieu_ta:1});dmvtSchema.index({status:1});dmvtSchema.index({user_created:1,visible_to:1,visible_to_users:1});dmvtSchema.pre("save",function($next$$){const $self$$=this;$self$$.ten_vt?setImmediate(()=>{const $ten_vt_kd$$=unidecode($self$$.ten_vt);$self$$.ten_vt_kd=`${$ten_vt_kd$$}`;$next$$()}):$next$$()});const model=mongoose.models.dmvt||mongoose.model("dmvt",dmvtSchema);
|
|
12
12
|
model.on("index",async function($err$$){$err$$?(console.error("Product index error",$err$$),(await model.aggregate([{$group:{_id:{id_app:"$id_app",ma_vt:"$ma_vt"},count:{$sum:1},ids:{$push:"$_id"}}},{$match:{count:{$gt:1}}}])).forEach($d$$=>{console.info("product duplication",$d$$._id,$d$$.ids);$d$$.ids.forEach(($id$$,$index$$)=>{0<$index$$&&console.info("you should delete product",$id$$)})})):console.info("Product indexing complete")});
|
package/server/models/hd2.js
CHANGED
|
@@ -5,8 +5,8 @@ maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{t
|
|
|
5
5
|
line:{type:Number,default:0}});detailSchema.validate={tk_vt:validAccount.existsTk,tk_gv:validAccount.existsTk,tk_dt:validAccount.existsTk,tk_ck:validAccount.existsTk,ma_vt:validVt.existsVt,ma_kho:validVt.existsKho,ma_dvt:validator.existsDvt};
|
|
6
6
|
const hd2Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"HD2",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},
|
|
7
7
|
ong_ba:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:String,ma_so_thue:{type:String,maxlength:1024},tk_no:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ma_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},ky_hieu_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},so_hd:{type:String,uppercase:!0,maxlength:32},so_seri:{type:String,uppercase:!0,maxlength:32},ngay_hd:{type:Date,uppercase:!0},ma_thue:{type:String,
|
|
8
|
-
uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},tk_thue_co:{type:String,uppercase:!0,maxlength:32},dia_chi:{type:String,default:"",maxlength:1024},ten_vt:{type:String,default:"",maxlength:1024},dien_giai_thue:{type:String,default:"",maxlength:1024},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},han_tt:{type:Number,default:0},hinh_thuc_tt:{type:String,maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,
|
|
9
|
-
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],details:{type:[detailSchema]},promotion:Schema.Types.Mixed,id_contract:{type:String,maxlength:1024},id_dh2:{type:String,maxlength:1024},ma_kho:{type:String,uppercase:!0,maxlength:32},ma_kh_hoa_hong:{type:String,
|
|
10
|
-
ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,default:0},tk_ck:String,result_export_einvoice:Schema.Types.Mixed,ma_bp:{type:String,uppercase:!0,maxlength:32},ma_nv:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_dt:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,
|
|
11
|
-
hd2Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};hd2Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});hd2Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text"},{name:"hd2_index_text"});hd2Schema.index({ma_ct:1});hd2Schema.index({ma_kh:1});hd2Schema.index({ma_kho:1});hd2Schema.index({
|
|
12
|
-
hd2Schema.index({user_created:1,date_created:-1});hd2Schema.index({date_updated:-1});hd2Schema.index({status:1});hd2Schema.index({user_created:1,visible_to:1,visible_to_users:1});hd2Schema.index({trang_thai:1});module.exports=mongoose.models.hd2||mongoose.model("hd2",hd2Schema);
|
|
8
|
+
uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},tk_thue_co:{type:String,uppercase:!0,maxlength:32},dia_chi:{type:String,default:"",maxlength:1024},ten_vt:{type:String,default:"",maxlength:1024},dien_giai_thue:{type:String,default:"",maxlength:1024},tien_thue_dc_nt:Number,t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},han_tt:{type:Number,default:0},hinh_thuc_tt:{type:String,maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,
|
|
9
|
+
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],details:{type:[detailSchema]},promotion:Schema.Types.Mixed,id_contract:{type:String,maxlength:1024},id_dh2:{type:String,maxlength:1024},ma_kho:{type:String,uppercase:!0,maxlength:32},ma_kh_hoa_hong:{type:String,
|
|
10
|
+
uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,default:0},tk_ck:String,result_export_einvoice:Schema.Types.Mixed,ma_bp:{type:String,uppercase:!0,maxlength:32},ma_nv:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_dt:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,
|
|
11
|
+
maxlength:32}});hd2Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};hd2Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});hd2Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text"},{name:"hd2_index_text"});hd2Schema.index({ma_ct:1});hd2Schema.index({ma_kh:1});hd2Schema.index({ma_kho:1});hd2Schema.index({"details.ma_vt":1});
|
|
12
|
+
hd2Schema.index({id_dh2:1});hd2Schema.index({id_contract:1});hd2Schema.index({user_created:1,date_created:-1});hd2Schema.index({date_updated:-1});hd2Schema.index({status:1});hd2Schema.index({user_created:1,visible_to:1,visible_to_users:1});hd2Schema.index({trang_thai:1});module.exports=mongoose.models.hd2||mongoose.model("hd2",hd2Schema);
|
|
@@ -4,8 +4,8 @@ index:{type:Boolean,default:!1},is_tmp:{type:Boolean,default:!1},is_title:{type:
|
|
|
4
4
|
format:{type:String},align:{type:String},color:{type:String},bold:Boolean,html_variant_display:{type:String},html_component_display:{type:String},html_component_input:{type:String},grid_configs:String,handle_value_changed:{type:String},handle_search_condition:String,tab:{type:String},group:{type:String},help_text:{type:String},line:{type:Number,default:0}}),listinfoSchema=new global.Schema({menu_position:String,code:{type:String,required:!0,index:!0,lowercase:!0,trim:!0},title:{type:String,required:!0},
|
|
5
5
|
title2:{type:String},mother_code:{type:String,lowercase:!0},api_code:{type:String,lowercase:!0},model_code:{type:String,lowercase:!0},fields:[fieldScheme],postinfos:[global.Schema.Types.Mixed],exfields:global.Schema.Types.Mixed,create_model:{type:Boolean,default:!1},breadcrumbs:{type:String},not_add:Boolean,not_edit:Boolean,not_delete:Boolean,handle_cell_clicked:{type:String},expression_check_save:String,on_saved:String,on_deleting:String,on_deleted:String,on_init:String,on_init_update:String,handle_view_server:String,
|
|
6
6
|
handle_oncreating_server:String,handle_oncreated_server:String,handle_onupdating_server:String,handle_onupdated_server:String,handle_ondeleting_server:String,search_required:Boolean,search_form:String,default_condition:String,require_condition:String,export_yn:Boolean,sort_by:String,not_need_right:{type:Boolean,default:!1},require_id_app:{type:Boolean,default:!0},private_data:Boolean,view_tabs:[],allow_users:{type:String},input_users:{type:String},create_menu:Boolean,show_view_tabs_on_grid:Boolean,
|
|
7
|
-
form_size:{type:String,default:"md"},is_dashboard_item:{type:Boolean,default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String},dashboard_stt:{type:Number},get_other_fields:String,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:""}});listinfoSchema.index({code:1});listinfoSchema.index({title:1});listinfoSchema.index({title2:1});
|
|
8
|
-
listinfoSchema.index({api_code:1});listinfoSchema.index({model_code:1});listinfoSchema.index({mother_code:1});listinfoSchema.index({is_dashboard_item:1});listinfoSchema.index({dashboard_ids:1});listinfoSchema.index({mother_code:"text",code:"text",title:"text"},{name:"listinfo_index2_text"});listinfoSchema.index({status:1});listinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
7
|
+
form_size:{type:String,default:"md"},is_dashboard_item:{type:Boolean,default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String},dashboard_stt:{type:Number},get_other_fields:String,options:{},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:""}});listinfoSchema.index({code:1});listinfoSchema.index({title:1});listinfoSchema.index({title2:1});
|
|
8
|
+
listinfoSchema.index({mother_code:1});listinfoSchema.index({api_code:1});listinfoSchema.index({model_code:1});listinfoSchema.index({mother_code:1});listinfoSchema.index({is_dashboard_item:1});listinfoSchema.index({dashboard_ids:1});listinfoSchema.index({mother_code:"text",code:"text",title:"text"},{name:"listinfo_index2_text"});listinfoSchema.index({status:1});listinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
9
9
|
const model=global.mongoose.models.listinfo||global.mongoose.model("listinfo",listinfoSchema),requireFields={id_app:{type:String,required:!0},exfields:global.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]};
|
|
10
10
|
model.createSchema=$info_textFields$$=>{if(!$info_textFields$$.create_model)return null;var $api_code_index_name$$=$info_textFields$$.api_code||$info_textFields$$.code,$_requireFields_fields$$={...requireFields};0!=$info_textFields$$.require_id_app&&"false"!=$info_textFields$$.require_id_app||delete $_requireFields_fields$$.id_app;let $mySchema$$=new global.Schema($_requireFields_fields$$,{strict:!1}),$require_paths$$=Object.keys($mySchema$$.paths);$_requireFields_fields$$={};for($f_uq$$ of $info_textFields$$.fields.filter($f$$=>
|
|
11
11
|
"Link"!==$f$$.type&&"Files"!==$f$$.type&&"Action"!==$f$$.type&&"Group"!==$f$$.type&&0>$require_paths$$.indexOf($f$$.name))){$f_uq$$.unique&&($f_uq$$.index=!0);let $_field$$=Object.assign({},$f_uq$$);if("DateTime"==$_field$$.type||"Time"==$_field$$.type)$_field$$.type="Date";if("File"==$_field$$.type||"OtherFile"==$_field$$.type)$_field$$.type="Mixed";"Array"==$_field$$.type&&($_field$$.type="Mixed");"Pdf"==$_field$$.type&&($_field$$.type="String");"Image"==$_field$$.type&&($_field$$.type="String");
|
package/server/models/pbl.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';const moment=require("moment"),validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},px_gia_dd:{type:Boolean,default:!1},ton_kho:{type:Number,default:0},sl_order:{type:Number,default:0},sl_xuat:{type:Number,default:0},sl_gui_bep:{type:Number,default:0},sl_gui_bartender:{type:Number,default:0},sl_ht:{type:Number,default:0},gia_von:{type:Number,
|
|
2
2
|
default:0},gia_von_nt:{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_hang:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},sl_ap_dung_km:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},cs_discount:Schema.Types.Mixed,cs_tien_ck:{type:Number,
|
|
3
|
-
default:0},cs_ty_le_ck:{type:Number,default:0},cs_sl_ap_dung:{type:Number,default:0},cs_gt_hd_tu:{type:Number,default:0},cs_gt_hd_den:{type:Number,default:0},ck_sl_tu2:[],tien_evoucher_duoc_pb:{type:Number,default:0},promotion:Schema.Types.Mixed,km_yn_for:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",
|
|
4
|
-
uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},sign_user:String,sign_data:Schema.Types.Mixed,signature:String,order_time:{type:Date,default:Date.now},finish_time:{type:Date},ghi_chu:{type:String},exfields_detail:Schema.Types.Mixed,
|
|
5
|
-
het_hang:{type:Boolean,default:!1}});detailSchema.validate={ma_vt:validVt.existsVt,ma_kho:validVt.existsKho,ma_dvt:validator.existsDvt};
|
|
3
|
+
default:0},cs_ty_le_ck:{type:Number,default:0},cs_sl_ap_dung:{type:Number,default:0},cs_gt_hd_tu:{type:Number,default:0},cs_gt_hd_den:{type:Number,default:0},ck_sl_tu2:[],tien_evoucher_duoc_pb:{type:Number,default:0},promotion:Schema.Types.Mixed,combo:Schema.Types.Mixed,km_yn_for:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",
|
|
4
|
+
maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},sign_user:String,sign_data:Schema.Types.Mixed,signature:String,order_time:{type:Date,default:Date.now},finish_time:{type:Date},ghi_chu:{type:String},exfields_detail:Schema.Types.Mixed,
|
|
5
|
+
line:{type:Number,default:0},het_hang:{type:Boolean,default:!1}});detailSchema.validate={ma_vt:validVt.existsVt,ma_kho:validVt.existsKho,ma_dvt:validator.existsDvt};
|
|
6
6
|
const pblSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"PBL",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,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},ma_kh:{type:String,
|
|
7
7
|
uppercase:!0,default:"",maxlength:32},ten_kh:String,ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},ten_kho:String,ma_ban:{type:String,uppercase:!0,maxlength:32},ma_ban0:{type:String,uppercase:!0,maxlength:32},ma_ca:{type:String,uppercase:!0,maxlength:32},ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,default:0},ong_ba:{type:String,maxlength:1024},sender_email:{type:String,maxlength:128},id_trans:{type:String,maxlength:1024},paymentByPoints:{type:Number,default:0},exchangeRate:Number,
|
|
8
8
|
tien_paymentByPoints:{type:Number,default:0},evouchers:[global.Schema.Types.Mixed],tien_evoucher:Number,pt_thanh_toan:{type:String},tien_thu:{type:Number,default:0},pt_thanh_toan2:{type:String},tien_thu2:{type:Number,default:0},ghi_chu_tt:String,con_no:{type:Number,default:0},phai_tra:{type:Number,default:0},dien_giai:{type:String,default:"",maxlength:1024},nguoi_giao_dich:{type:String,maxlength:1024},so_khach:{type:Number,default:1},tu_ngay:{type:Date,default:Date.now},den_ngay:{type:Date,default:Date.now},
|
|
9
9
|
trang_thai:{type:String,default:"2"},sign_user:String,sign_data:Schema.Types.Mixed,signature:String,gio:Number,ngay:Number,thang:Number,quy:Number,nam: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:""},cashier:{type:String,default:""},payment_time:{type:Date},visible_to:{type:Number,default:0},visible_to_users:[String],details:{type:[detailSchema]},
|
|
10
|
-
promotion:Schema.Types.Mixed});pblSchema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho};pblSchema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pblSchema.index({id_app:1});pblSchema.index({ma_kho:1});pblSchema.index({ma_ct:1});pblSchema.index({ma_kh:1});pblSchema.index({
|
|
11
|
-
pblSchema.index({so_ct:"text",ma_kh:"text",ten_kh:"text",dien_giai:"text",ma_kho:"text",ten_kho:"text"},{name:"pbl_index_text"});pblSchema.index({gio:1});pblSchema.index({ngay:1});pblSchema.index({thang:1});pblSchema.index({quy:1});pblSchema.index({nam:-1});pblSchema.index({status:1});pblSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
10
|
+
promotion:Schema.Types.Mixed});pblSchema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho};pblSchema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pblSchema.index({id_app:1});pblSchema.index({ma_kho:1});pblSchema.index({ma_ct:1});pblSchema.index({ma_kh:1});pblSchema.index({"details.ma_vt":1});pblSchema.index({ma_ban:1});pblSchema.index({trang_thai:1});pblSchema.index({ma_ca:1});
|
|
11
|
+
pblSchema.index({user_created:1,date_created:-1});pblSchema.index({date_updated:-1});pblSchema.index({so_ct:"text",ma_kh:"text",ten_kh:"text",dien_giai:"text",ma_kho:"text",ten_kho:"text"},{name:"pbl_index_text"});pblSchema.index({gio:1});pblSchema.index({ngay:1});pblSchema.index({thang:1});pblSchema.index({quy:1});pblSchema.index({nam:-1});pblSchema.index({status:1});pblSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
12
12
|
pblSchema.pre("save",function($next$$){let $ngay_ct$$=moment(this.ngay_ct);this.gio=$ngay_ct$$.get("hours");this.ngay=$ngay_ct$$.get("dates");this.quy=$ngay_ct$$.get("quarters");this.thang=$ngay_ct$$.get("months")+1;this.nam=$ngay_ct$$.get("year");$next$$()});module.exports=mongoose.models.pbl||mongoose.model("pbl",pblSchema);
|
package/server/models/pn1.js
CHANGED
|
@@ -9,5 +9,5 @@ const ctcpmhSchema=new Schema({ma_cp:{type:String,uppercase:!0,required:!0},tien
|
|
|
9
9
|
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},ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:String,ma_kho:{type:String,uppercase:!0,required:!0,default:""},ten_kho:String,tk_co:{type:String,uppercase:!0,required:!0,default:""},ong_ba:{type:String,default:"",maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},hinh_thuc_tt:{type:String,
|
|
10
10
|
maxlength:1024},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},id_contract:{type:String,maxlength:1024},id_po1:{type:String,maxlength:1024},id_dnm:{type:String,maxlength:1024},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_bp:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,maxlength:32},id_link:String,
|
|
11
11
|
ma_ct_link:String,so_ct_link:String,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],details:{type:[detailSchema]},vatvaos:[vatvaoSchema],ctcpmhs:[ctcpmhSchema]});
|
|
12
|
-
pn1Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho,tk_co:validAccount.existsTk};pn1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pn1Schema.index({dien_giai:"text",so_ct:"text",ma_kho:"text",ten_kho:"text",ma_kh:"text",ten_kh:"text"},{name:"pn1_index_text"});pn1Schema.index({ma_ct:1});pn1Schema.index({ma_kh:1});pn1Schema.index({ma_kho:1});pn1Schema.index({
|
|
13
|
-
pn1Schema.index({user_created:1,date_created:-1});pn1Schema.index({date_updated:-1});pn1Schema.index({status:1});pn1Schema.index({user_created:1,visible_to:1,visible_to_users:1});pn1Schema.index({trang_thai:1});module.exports=mongoose.models.pn1||mongoose.model("pn1",pn1Schema);
|
|
12
|
+
pn1Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho,tk_co:validAccount.existsTk};pn1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pn1Schema.index({dien_giai:"text",so_ct:"text",ma_kho:"text",ten_kho:"text",ma_kh:"text",ten_kh:"text"},{name:"pn1_index_text"});pn1Schema.index({ma_ct:1});pn1Schema.index({ma_kh:1});pn1Schema.index({ma_kho:1});pn1Schema.index({"details.ma_vt":1});pn1Schema.index({id_po1:1});
|
|
13
|
+
pn1Schema.index({id_contract:1});pn1Schema.index({user_created:1,date_created:-1});pn1Schema.index({date_updated:-1});pn1Schema.index({status:1});pn1Schema.index({user_created:1,visible_to:1,visible_to_users:1});pn1Schema.index({trang_thai:1});module.exports=mongoose.models.pn1||mongoose.model("pn1",pn1Schema);
|
package/server/models/pn5.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';const validAccount=require("../libs/validator-account"),validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({id_hd:{type:String,maxlength:1024},ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},ma_kho:{type:String,
|
|
1
|
+
'use strict';const validAccount=require("../libs/validator-account"),validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new Schema({id_hd:{type:String,maxlength:1024},ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},ma_kho:{type:String,uppercase:!0,maxlength:32},tk_vt:{type:String,required:!0,uppercase:!0,maxlength:32},sl_xuat:{type:Number,default:0},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,
|
|
2
2
|
default:0},tien_hang:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},tien_xuat:{type:Number,default:0},tien_xuat_nt:{type:Number,default:0},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,
|
|
3
3
|
uppercase:!0,default:"",maxlength:32},ma_sp:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});
|
|
4
4
|
detailSchema.validate={tk_vt:validAccount.existsTk,ma_vt:validVt.existsVt,ma_kho:validVt.existsKho,ma_dvt:validator.existsDvt};
|
|
@@ -9,5 +9,5 @@ const pn5Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_d
|
|
|
9
9
|
ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:String,ong_ba:{type:String,default:"",maxlength:1024},tk_no:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ma_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},ky_hieu_hoa_don:{type:String,default:"",uppercase:!0,trim:!0,maxlength:32},so_hd:{type:String,uppercase:!0,maxlength:32},so_seri:{type:String,uppercase:!0,maxlength:32},ngay_hd:{type:Date,uppercase:!0},ma_thue:{type:String,uppercase:!0,
|
|
10
10
|
maxlength:32},thue_suat:{type:Number,default:0},tk_thue_no:{type:String,uppercase:!0},dia_chi:{type:String,default:"",maxlength:1024},ma_so_thue:{type:String,default:"",maxlength:1024},ten_vt:{type:String,default:"",maxlength:1024},dien_giai_thue:{type:String,default:"",maxlength:1024},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_kho:String,ten_kho:String,dien_giai:{type:String,
|
|
11
11
|
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],details:{type:[detailSchema]},vatvaos:[vatvaoSchema]});
|
|
12
|
-
pn5Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};pn5Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pn5Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text"},{name:"pn5_index_text"});pn5Schema.index({ma_ct:1});pn5Schema.index({ma_kh:1});pn5Schema.index({
|
|
13
|
-
pn5Schema.index({status:1});pn5Schema.index({user_created:1,visible_to:1,visible_to_users:1});pn5Schema.index({trang_thai:1});module.exports=mongoose.models.pn5||mongoose.model("pn5",pn5Schema);
|
|
12
|
+
pn5Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_no:validAccount.existsTk,ma_thue:validator.existsVat,tk_thue_co:validAccount.existsTk};pn5Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pn5Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text"},{name:"pn5_index_text"});pn5Schema.index({ma_ct:1});pn5Schema.index({ma_kh:1});pn5Schema.index({ma_kho:1});pn5Schema.index({"details.ma_vt":1});
|
|
13
|
+
pn5Schema.index({user_created:1,date_created:-1});pn5Schema.index({date_updated:-1});pn5Schema.index({status:1});pn5Schema.index({user_created:1,visible_to:1,visible_to_users:1});pn5Schema.index({trang_thai:1});module.exports=mongoose.models.pn5||mongoose.model("pn5",pn5Schema);
|
package/server/models/pn9.js
CHANGED
|
@@ -10,5 +10,5 @@ const ctcpmhSchema=new Schema({ma_cp:{type:String,uppercase:!0,required:!0},tien
|
|
|
10
10
|
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},ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:String,ma_kho:{type:String,uppercase:!0,required:!0,default:""},ten_kho:String,tk_co:{type:String,uppercase:!0,required:!0,default:""},ong_ba:{type:String,default:"",maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},hinh_thuc_tt:{type:String,
|
|
11
11
|
maxlength:1024},exfields:Schema.Types.Mixed,trang_thai:{type:String,maxlength:32},id_contract:{type:String,maxlength:1024},id_po1:{type:String,maxlength:1024},id_dnm:String,ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_bp:{type:String,uppercase:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,maxlength:32},status:{type:Boolean,default:!0},
|
|
12
12
|
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],details:{type:[detailSchema]},vatvaos:[vatvaoSchema],ctcpmhs:[ctcpmhSchema]});pn9Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho,tk_co:validAccount.existsTk};
|
|
13
|
-
pn9Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pn9Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_kho:"text",ten_kho:"text"},{name:"pn9_index_text"});pn9Schema.index({ma_ct:1});pn9Schema.index({ma_kh:1});pn9Schema.index({ma_kho:1});pn9Schema.index({id_po1:1});pn9Schema.index({id_contract:1});pn9Schema.index({user_created:1,date_created:-1});pn9Schema.index({date_updated:-1});pn9Schema.index({status:1});
|
|
14
|
-
pn9Schema.index({trang_thai:1});const model=mongoose.models.pn9||mongoose.model("pn9",pn9Schema);module.exports=model;
|
|
13
|
+
pn9Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});pn9Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_kho:"text",ten_kho:"text"},{name:"pn9_index_text"});pn9Schema.index({ma_ct:1});pn9Schema.index({ma_kh:1});pn9Schema.index({ma_kho:1});pn9Schema.index({"details.ma_vt":1});pn9Schema.index({id_po1:1});pn9Schema.index({id_contract:1});pn9Schema.index({user_created:1,date_created:-1});pn9Schema.index({date_updated:-1});pn9Schema.index({status:1});
|
|
14
|
+
pn9Schema.index({user_created:1,visible_to:1,visible_to_users:1});pn9Schema.index({trang_thai:1});const model=mongoose.models.pn9||mongoose.model("pn9",pn9Schema);module.exports=model;
|
package/server/models/po1.js
CHANGED
|
@@ -6,7 +6,7 @@ const po1Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_d
|
|
|
6
6
|
ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:{type:String},ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},ngay_giao:{type:Date},id_bao_gia:{type:String,maxlength:1024},id_dnm:{type:String,maxlength:1024},id_kehoachmh:{type:String,maxlength:1024},id_contract:{type:String,maxlength:1024},id_pn1:{type:String,maxlength:1024},id_pnh:{type:String,maxlength:1024},
|
|
7
7
|
ma_thue:{type:String,uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},ong_ba:{type:String,default:"",maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,dot_thanh_toan:[],phi_khac_nt:{type:Number,default:0},phi_khac:{type:Number,default:0},trang_thai:{type:String,maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},status:{type:Boolean,default:!0},date_created:{type:Date,
|
|
8
8
|
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],details:{type:[detailSchema]}});po1Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh};po1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});po1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text"},{name:"po1_index_text"});
|
|
9
|
-
po1Schema.index({ma_ct:1});po1Schema.index({ma_kh:1});po1Schema.index({ma_bp:1});po1Schema.index({id_contract:1});po1Schema.index({id_pn1:1});po1Schema.index({id_pnh:1});po1Schema.index({id_dnm:1});po1Schema.index({user_created:1,date_created:-1});po1Schema.index({date_updated:-1});po1Schema.index({status:1});po1Schema.index({user_created:1,visible_to:1,visible_to_users:1});po1Schema.index({trang_thai:1});const model=mongoose.models.po1||mongoose.model("po1",po1Schema);
|
|
9
|
+
po1Schema.index({ma_ct:1});po1Schema.index({ma_kh:1});po1Schema.index({ma_bp:1});po1Schema.index({"details.ma_vt":1});po1Schema.index({id_contract:1});po1Schema.index({id_pn1:1});po1Schema.index({id_pnh:1});po1Schema.index({id_dnm:1});po1Schema.index({user_created:1,date_created:-1});po1Schema.index({date_updated:-1});po1Schema.index({status:1});po1Schema.index({user_created:1,visible_to:1,visible_to_users:1});po1Schema.index({trang_thai:1});const model=mongoose.models.po1||mongoose.model("po1",po1Schema);
|
|
10
10
|
model.referenceKeys={_id:[{model:"pn1",key:"id_po1",error:"\u0110\u01a1n h\u00e0ng n\u00e0y \u0111\u00e3 nh\u1eadp h\u00e0ng"},{model:"pn9",key:"id_po1",error:"\u0110\u01a1n h\u00e0ng n\u00e0y \u0111\u00e3 nh\u1eadp h\u00e0ng"}]};
|
|
11
11
|
model.tinhSoLuongDaNhap=($po$$,$callback$jscomp$0$$,$callbackDetail$$)=>{$po$$.details||($po$$.details=[]);async.parallel({pn1:$callback$$=>{pn1.find({id_app:$po$$.id_app,id_po1:$po$$._id}).lean().exec(($e$$,$invs$$)=>{if($e$$)return $callback$$($e$$);let $details$$=$invs$$.map($inv$$=>$inv$$.details).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$po$$.details.forEach($contract_detail$$=>{$contract_detail$$.sl_da_nhap_tn=$details$$.filter($detail$$=>$detail$$.ma_vt===$contract_detail$$.ma_vt).map($d$$=>
|
|
12
12
|
$d$$.sl_nhap).reduce(($a$$,$b$$)=>$a$$+$b$$,0)});$po$$.t_sl_da_nhap_tn=$po$$.details.map($d$$=>$d$$.sl_da_nhap_tn||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$callback$$()})},pnh:$callback$$=>{pnh.find({id_app:$po$$.id_app,id_po1:$po$$._id}).lean().exec(($e$$,$invs$$)=>{if($e$$)return $callback$$($e$$);let $details$$=$invs$$.map($inv$$=>$inv$$.details).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$po$$.details.forEach($contract_detail$$=>{$contract_detail$$.sl_da_nhap_hang=$details$$.filter($detail$$=>$detail$$.ma_vt===
|
package/server/models/so1.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
default:0},gia_ban_nt:{type:Number,default:0},tien_hang:{type:Number,default:0},tien_hang_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},cs_tien_ck:{type:Number,default:0},cs_ty_le_ck:{type:Number,default:0},cs_sl_ap_dung:{type:Number,default:0},cs_gt_hd_tu:{type:Number,default:0},cs_gt_hd_den:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},gia_ban_thuc:{type:Number,default:0},ma_bp:{type:String,
|
|
3
3
|
uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},tk_vt:{type:String,uppercase:!0,maxlength:32},tk_dt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},
|
|
4
4
|
han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},tien_evoucher_duoc_pb:{type:Number,default:0},exfields_detail:global.Schema.Types.Mixed,tasks:[Schema.Types.Mixed],days_of_week:[{index:Number,name:String,sel:Boolean,ghi_chu:String}],ngay_bat_dau:{type:Date},ngay_ket_thuc:{type:Date},tu_gio:{type:Date},
|
|
5
|
-
den_gio:{type:Date},so_lan:Number,diem_thuong:{type:Number,default:0},tk_km_no:{type:String},tk_km_co:{type:String},km_yn_for:String,id_cs:String,collection_cs:String,is_coin:Boolean,transferred:Boolean,wallet_receiver:String,freeship:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
5
|
+
den_gio:{type:Date},so_lan:Number,diem_thuong:{type:Number,default:0},tk_km_no:{type:String},tk_km_co:{type:String},km_yn_for:String,id_cs:String,collection_cs:String,is_coin:Boolean,transferred:Boolean,wallet_receiver:String,freeship:Schema.Types.Mixed,combo:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
6
6
|
const ctcpbhSchema=new global.Schema({ma_cp:{type:String,uppercase:!0,required:!0},dien_giai:{type:String,maxlength:1024},tien_cp_nt:{type:Number,default:0},tien_cp:{type:Number,default:0},line:{type:Number,default:0}}),so1Schema=new global.Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,maxlength:1024},ma_ct:{type:String,default:"SO1",required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},so_ct:{type:String,uppercase:!0,trim:!0,maxlength:32},
|
|
7
7
|
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},trang_thai:{type:String,default:"1",maxlength:32},ma_kh:{type:String,uppercase:!0,maxlength:32},ten_kh:String,of_user:{type:String,maxlength:128},ma_kho:{type:String,uppercase:!0,maxlength:32},ten_kho:String,ten_nguoi_nhan:{type:String,maxlength:1024},dien_thoai:{type:String,maxlength:1024},email:{type:String,
|
|
8
8
|
maxlength:1024},dia_chi:{type:String,maxlength:1024},xa_phuong:{type:String,maxlength:1024},quan_huyen:{type:String,maxlength:1024},tinh_thanh:{type:String,maxlength:1024},quoc_gia:{type:String,default:"VN",maxlength:2},post_code:{type:String,maxlength:1024},location:global.Schema.Types.Mixed,note_ship:{type:String,maxlength:1024},pt_giao_hang:{type:String,default:"1",maxlength:1024},dich_vu_giao_hang:{type:String,maxlength:1024},trang_thai_giao_hang:{type:String,maxlength:1024},ma_kiem_soat:{type:String,
|
|
9
9
|
maxlength:1024},ly_do_that_bai:{type:String,maxlength:1024},ly_do_huy:{type:String,maxlength:1024},ngay_giao_hang:Date,ngay_hoan_thanh:Date,ngay_tra_lai:Date,user_nv_giao_hang:{type:String,maxlength:128},vi_tri_giao_hang:global.Schema.Types.Mixed,dien_giai:{type:String,default:"",maxlength:1024},exfields:global.Schema.Types.Mixed,stt_rec:String,ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},profile:global.Schema.Types.Mixed,discout_code:{type:String,maxlength:32},ty_le_ck_hd:{type:Number,
|
|
10
10
|
default:0},tien_ck_hd:{type:Number,default:0},ma_freeship:String,tien_freeship:Number,tien_phi_vc:Number,sender_email:{type:String,maxlength:128},id_trans:{type:String,maxlength:1024},paymentByPoints:{type:Number,default:0},exchangeRate:Number,tien_paymentByPoints:{type:Number,default:0},evouchers:[global.Schema.Types.Mixed],tien_evoucher:Number,da_tra:{type:Number,default:0},tien_con_lai:{type:Number,default:0},pt_thanh_toan:{type:String,maxlength:1024},note_payment:{type:String,maxlength:1024},
|
|
11
11
|
virtual_payment_client_url:{type:String,maxlength:2024},again_link:{type:String,maxlength:2024},payment_service:String,payment_id:String,payment_getway_lang:{type:String,maxlength:1024},details:{type:[detailSchema]},ctcpbhs:[ctcpbhSchema],shared:Boolean,gio:Number,ngay:Number,thang:Number,quy:Number,nam:Number,online:Boolean,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,
|
|
12
|
-
default:""},visible_to:{type:Number,default:0},visible_to_users:[String]});so1Schema.validate={ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho};so1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});so1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_kho:"text",ten_kho:"text"},{name:"so1_index_text"});so1Schema.index({ma_ct:1});so1Schema.index({ma_kh:1});so1Schema.index({ma_kho:1});so1Schema.index({
|
|
13
|
-
so1Schema.index({user_nv_giao_hang:1});so1Schema.index({user_created:1,date_created:-1});so1Schema.index({date_updated:-1});so1Schema.index({gio:1});so1Schema.index({ngay:1});so1Schema.index({thang:1});so1Schema.index({quy:1});so1Schema.index({nam:-1});so1Schema.index({status:1});so1Schema.index({online:1});so1Schema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
12
|
+
default:""},visible_to:{type:Number,default:0},visible_to_users:[String]});so1Schema.validate={ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,ma_kho:validVt.existsKho};so1Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});so1Schema.index({dien_giai:"text",so_ct:"text",ma_kh:"text",ten_kh:"text",ma_kho:"text",ten_kho:"text"},{name:"so1_index_text"});so1Schema.index({ma_ct:1});so1Schema.index({ma_kh:1});so1Schema.index({ma_kho:1});so1Schema.index({"details.ma_vt":1});
|
|
13
|
+
so1Schema.index({trang_thai:1});so1Schema.index({user_nv_giao_hang:1});so1Schema.index({user_created:1,date_created:-1});so1Schema.index({date_updated:-1});so1Schema.index({gio:1});so1Schema.index({ngay:1});so1Schema.index({thang:1});so1Schema.index({quy:1});so1Schema.index({nam:-1});so1Schema.index({status:1});so1Schema.index({online:1});so1Schema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
14
14
|
so1Schema.pre("save",function($next$$){let $ngay_ct$$=moment(this.ngay_ct);this.gio=$ngay_ct$$.get("hours");this.ngay=$ngay_ct$$.get("dates");this.quy=$ngay_ct$$.get("quarters");this.thang=$ngay_ct$$.get("months")+1;this.nam=$ngay_ct$$.get("year");$next$$()});const model=global.mongoose.models.so1||global.mongoose.model("so1",so1Schema);model.referenceKeys={_id:[{model:"socai",key:"id_ct_goc",error:"Phi\u1ebfu n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c ho\u1ea1ch to\u00e1n"}]};module.exports=model;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';const tontucthoiScheam=new Schema({id_app:{type:String},nam:{type:Number},ma_dvcs:{type:String,maxlength:1024},ma_vt:{type:String,uppercase:!0,maxlength:1024},ma_kho:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},ton00:{type:Number,default:0},du00:{type:Number,
|
|
2
2
|
default:0},du_nt00:{type:Number,default:0},kc_yn:{type:Boolean,default:!1},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:""}});tontucthoiScheam.index({id_app:1,nam:1,ma_dvcs:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1},{name:"tontucthoi_index_1"});tontucthoiScheam.index({status:1});tontucthoiScheam.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
3
3
|
const tontucthoi=mongoose.models.tontucthoi||mongoose.model("tontucthoi",tontucthoiScheam),ckvt=require("../libs/ckvt"),underscore=require("underscore"),async=require("async");
|
|
4
|
-
tontucthoi.tinhTonTucThoi=function($sks$$,$cb$$){$cb$$||($cb$$=function($e$$){$e$$&&console.log("error when calc tontucthoi",$e$$)});underscore.isArray($sks$$)||($sks$$=[$sks$$]);async.map($sks$$,function($sk$$,$cb$$){if(!$sk$$)return $cb$$();let $query$$={id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt}
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
tontucthoi.tinhTonTucThoi=function($sks$$,$cb$$){$cb$$||($cb$$=function($e$$){$e$$&&console.log("error when calc tontucthoi",$e$$)});underscore.isArray($sks$$)||($sks$$=[$sks$$]);async.map($sks$$,function($sk$$,$cb$$){if(!$sk$$)return $cb$$();let $query$$={id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt};tontucthoi.deleteMany($query$$,function($e$jscomp$2$$){if($e$jscomp$2$$)return $cb$$("remove tonkhotucthoi");$query$$.groupBy="id_app ma_vt ma_kho ma_dvcs ma_lo ma_tt1 ma_tt2 ma_tt3 han_sd".split(" ");$query$$.ngay=
|
|
5
|
+
new Date;ckvt($query$$,async function($e$jscomp$1$$,$rs$$){if($e$jscomp$1$$)return $cb$$("error when calc tontucthoi\n"+$e$jscomp$1$$);$rs$$=$rs$$.filter($r$$=>$r$$.ma_vt&&$r$$.ma_kho&&$r$$.id_app);await $rs$$.asyncJoinModel2(null,global.getModel("dmkho"),{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:"la_kho_online"});$rs$$&&0<$rs$$.length?tontucthoi.create($rs$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $cb$$($e$jscomp$0$$);if($e$jscomp$0$$=await global.getModel("dmvt").findOne({id_app:$sk$$.id_app,
|
|
6
|
+
ma_vt:$sk$$.ma_vt}))$e$jscomp$0$$.ton_kho_online_hien_tai=$rs$$.filter($r$$=>$r$$.la_kho_online).map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0),$e$jscomp$0$$.save($e$$=>{$e$$&&console.error($e$$)});$cb$$(null,$rs$$)}):$cb$$()})})},function($e$$,$rs$$){$cb$$($e$$,$rs$$)})};module.exports=tontucthoi;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
'use strict';let wallet=require("./wallet")
|
|
1
|
+
'use strict';let wallet=require("./wallet");const cryptoJs=require("crypto-js"),moment=require("moment"),senderSchema=new Schema({email:{type:String,required:!0,maxlength:128},signature:{type:String,required:!0}});senderSchema.index({email:1});const receiverSchema=new Schema({email:{type:String,required:!0}});receiverSchema.index({email:1});
|
|
2
2
|
const transactionSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_trans:{type:String,required:!0,maxlength:1024},sender:senderSchema,receiver:receiverSchema,amount:{type:Number,required:!0},description:String,id_ct:String,so_ct:String,ngay_ct:{type:Date,default:Date.now},ma_ct:String,status:{type:String,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:""}});transactionSchema.index({id_app:1});
|
|
3
|
-
transactionSchema.index({id_ct:1});transactionSchema.index({id_trans:1});transactionSchema.index({ma_ct:1});transactionSchema.index({ngay_ct:1});transactionSchema.index({date_created:1});transactionSchema.index({status:1});transactionSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.transaction||mongoose.model("transaction",transactionSchema);
|
|
3
|
+
transactionSchema.index({id_ct:1});transactionSchema.index({id_trans:1});transactionSchema.index({ma_ct:1});transactionSchema.index({ngay_ct:1});transactionSchema.index({date_created:1});transactionSchema.index({status:1});transactionSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.transaction||mongoose.model("transaction",transactionSchema);model.on("index",async function($err$$){if($err$$)return console.error("Product index error",$err$$);console.log("transaction indexing complete")});
|
|
4
4
|
model.verifyTrans=async($data$$,$trans$$)=>await wallet.verifySignature($data$$.id_app,$data$$.sender_email,{id_app:$data$$.id_app,sender_email:$data$$.sender_email,receiver_email:$data$$.receiver_email,amount:$data$$.amount},$trans$$.sender.signature);model.createTransId=($id_app$$,$sender_email$$,$receiver_email$$,$amount$$)=>{let $timestamp$$=(new Date).getTime();return cryptoJs.SHA256($id_app$$+$sender_email$$+$receiver_email$$+$amount$$.toString()+$timestamp$$).toString()};
|
|
5
5
|
model.createTrans=async $data$$=>{$data$$.otherData||($data$$.otherData={});if($data$$.receiver_email===$data$$.sender_email||!$data$$.amount)throw"Ng\u01b0\u1eddi nh\u1eadn v\u00e0 ng\u01b0\u1eddi g\u1eedi ph\u1ea3i kh\u00e1c nhau v\u00e0 s\u1ed1 l\u01b0\u1ee3ng ph\u1ea3i l\u1edbn h\u01a1n 0";let $id_trans$$=model.createTransId($data$$.id_app,$data$$.sender_email,$data$$.receiver_email,$data$$.amount),$signature$$=await wallet.sign($data$$.id_app,$data$$.sender_email,{id_app:$data$$.id_app,sender_email:$data$$.sender_email,
|
|
6
6
|
receiver_email:$data$$.receiver_email,amount:$data$$.amount}),$trans$$=new model({id_app:$data$$.id_app,id_trans:$id_trans$$,sender:{email:$data$$.sender_email,signature:$signature$$},receiver:{email:$data$$.receiver_email},amount:$data$$.amount,description:$data$$.description,id_ct:$data$$.otherData.id_ct,so_ct:$data$$.otherData.so_ct,ngay_ct:$data$$.otherData.ngay_ct,ma_ct:$data$$.otherData.ma_ct});await new Promise(($resolve$$,$reject$$)=>{$trans$$.save(($e_users_will_receive$$,$rs$$)=>{if($e_users_will_receive$$)return console.log($e_users_will_receive$$),
|
|
7
7
|
$reject$$(Error($e_users_will_receive$$.message));$e_users_will_receive$$=[$rs$$.sender.email,$rs$$.receiver.email];var $notificationData_title$$=`${$data$$.sender_email} \u0111\u00e3 chuy\u1ec3n cho ${$data$$.receiver_email} ${$data$$.amount} \u0111i\u1ec3m v\u1edbi n\u1ed9i dung: ${$data$$.description}`;if($data$$.sender_email===$data$$.id_app||$data$$.receiver_email===$data$$.id_app)$notificationData_title$$=`${$data$$.description}`;$notificationData_title$$={_id:$rs$$._id,id_app:$data$$.id_app,
|
|
8
|
-
title:$notificationData_title$$,body:$notificationData_title$$,code:"transaction",event:"new",action:"NEW"};
|
|
8
|
+
title:$notificationData_title$$,body:$notificationData_title$$,code:"transaction",event:"new",action:"NEW"};global.getModel("app").emitEvent($data$$.id_app,`${$notificationData_title$$.code}:${$notificationData_title$$.event}`,$notificationData_title$$,null,$e_users_will_receive$$,!0);$resolve$$($rs$$.toObject())})})};model.getTrans=async $id_trans$$=>new Promise($resolve$$=>{model.findOne({id_trans:$id_trans$$},($e$$,$rs$$)=>{$resolve$$($rs$$)})});
|
|
9
9
|
model.deleteTrans=async $id_trans$$=>{$id_trans$$="string"===typeof $id_trans$$?{id_trans:$id_trans$$}:{...$id_trans$$};console.log("delete transaction",$id_trans$$);await model.deleteMany($id_trans$$)};
|
|
10
10
|
model.balance=async($email$$,$date_to$$)=>{$date_to$$||($date_to$$=new Date);$date_to$$=moment($date_to$$).endOf("date").toDate();return(await model.find({date_created:{$lte:$date_to$$},$or:[{"sender.email":$email$$},{"receiver.email":$email$$}]})).map($tran$$=>$tran$$.sender.email===$email$$?0-$tran$$.amount:$tran$$.amount).reduce(($a$$,$b$$)=>$a$$+$b$$,0)};
|
|
11
11
|
model.in=async($email$$,$date_to$$)=>{$date_to$$||($date_to$$=new Date);$date_to$$=moment($date_to$$).endOf("date").toDate();return(await model.find({date_created:{$lte:$date_to$$},$or:[{"receiver.email":$email$$}]})).map($tran$$=>$tran$$.amount).reduce(($a$$,$b$$)=>$a$$+$b$$,0)};
|
package/server/models/user.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
'use strict';const Tokens=require("./tokens"),crypto=require("crypto"),StaticPool=require("../libs/WorkerStaticPool"),emailService=require("../libs/email"),async=require("async"),path=require("path"),validator=require("validator"),
|
|
1
|
+
'use strict';const Tokens=require("./tokens"),crypto=require("crypto"),StaticPool=require("../libs/WorkerStaticPool"),emailService=require("../libs/email"),async=require("async"),path=require("path"),validator=require("validator"),jwt=require("jsonwebtoken"),{isSupperAdmin}=require("../libs/utils"),EXP_TIME=864E5,underscore=require("underscore"),request=require("request"),profileFacebookUrl="https://graph.facebook.com/me?fields=name",checkFacebookToken=async $access_token$$=>{let $urlCheck$$=`${profileFacebookUrl}&access_token=${$access_token$$}`;
|
|
2
2
|
return new Promise($resolve$$=>{request($urlCheck$$,($e$$,$res$$,$body$$)=>$e$$||JSON.parse($body$$).error?$resolve$$(!1):$resolve$$(!0))})},userSchema=new Schema({local:{email:{type:String,lowercase:!0,trim:!0,maxlength:128},password:String,rspassword:String,name:{type:String,maxlength:1024},picture:{type:String,maxlength:1024},address:{type:String,maxlength:1024},phone:{type:String,trim:!0,lowercase:!0},zalo:{type:String,maxlength:1024},whatsapp:{type:String,maxlength:1024},facebook:{type:String,
|
|
3
3
|
maxlength:1024},company:{type:String,maxlength:1024},exfields:Schema.Types.Mixed,active:{type:Boolean,default:!1},key:String},google:{id:String,email:{type:String,lowercase:!0,trim:!0,maxlength:128},name:String,picture:String},facebook:{id:String,email:{type:String,lowercase:!0,trim:!0,maxlength:128},name:String,picture:String},current_id_app:String,current_user:String,email:{type:String,lowercase:!0,trim:!0,maxlength:128},email2:{type:String,lowercase:!0,trim:!0,maxlength:128},name:{type:String,
|
|
4
4
|
maxlength:1024},picture:{type:String,maxlength:1024},server:{type:String,maxlength:1024},partner:{type:String,maxlength:1024},join_date:{type:Date,default:Date.now},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:""}});userSchema.index({email:-1},{unique:!0});userSchema.index({date_created:-1});userSchema.index({name:1});userSchema.index({email2:1});
|
|
5
|
-
userSchema.index({name:"text",email:"text"});userSchema.index({status:1});userSchema.index({user_created:1,visible_to:1,visible_to_users:1});userSchema.methods.generateHash=function($password$$){return crypto.createHash("sha256").update($password$$+":STP").digest("hex")};userSchema.methods.validPassword=function($password$$){$password$$=this.generateHash($password$$);return $password$$==this.local.password||$password$$==this.local.rspassword};
|
|
5
|
+
userSchema.index({name:"text",email:"text"});userSchema.index({"facebook.id":1});userSchema.index({"google.id":1});userSchema.index({status:1});userSchema.index({user_created:1,visible_to:1,visible_to_users:1});userSchema.methods.generateHash=function($password$$){return crypto.createHash("sha256").update($password$$+":STP").digest("hex")};userSchema.methods.validPassword=function($password$$){$password$$=this.generateHash($password$$);return $password$$==this.local.password||$password$$==this.local.rspassword};
|
|
6
6
|
userSchema.methods.validRspassword=function($password$$){return this.generateHash($password$$)==this.local.rspassword};const User=mongoose.models.user||mongoose.model("user",userSchema);User.getInfo=async($condition$$,$fields$$)=>$condition$$?new Promise(($resolve$$,$reject$$)=>{User.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"Can't find information"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})}):null;
|
|
7
|
-
User.findByToken=async($token$$,$
|
|
8
|
-
$_token$$,$
|
|
9
|
-
$
|
|
10
|
-
$reject$$(`User ${$_token$$.email} is not exists`)})})})})).then($user$$=>{$user$$.current_user=$user$$.email;$user$$.token=$token$$;$user$$.admin=underscore.contains($usersAdmin$$,$user$$.email)||isSupperAdmin($user$$.email.toLowerCase());if(!1===$user$$.status)return $fn$$("This user was locked");"public"!==$_token$$.email&&$_token$$._id&&($_token$$.last_access=new Date
|
|
7
|
+
User.findByToken=async($token$$,$ip_now$$,$fn$$,$APP_SECRET_options$$={check_service_token:!1})=>{const $usersAdmin$$=global.configs.admins;if(!$token$$||"undefined"===$token$$)return $fn$$(`Token '${$token$$}' is not valid`);let $_token$$;if($token$$===global.configs.public_token)$_token$$={email:"public"};else if($_token$$=await Tokens.findOne({token:$token$$}),!$_token$$)return $fn$$("This token is not exists");if("public"!==$_token$$.email){if($_token$$.ip&&$_token$$.ip.split(":").pop()!==$ip_now$$.split(":").pop())return console.log("IP is not valid",
|
|
8
|
+
$_token$$,$ip_now$$),$fn$$("Your IP is not valid");if(global.check_token_expired&&($ip_now$$=new Date,($_token$$.last_access||new Date).getTime()+EXP_TIME<$ip_now$$.getTime()))return $fn$$("Token has expired")}if($_token$$.service&&$APP_SECRET_options$$.check_service_token){if("facebook"===$_token$$.service&&!await checkFacebookToken($token$$))return console.error("This facebook access token is not valid",$_token$$),$fn$$("This facebook access token is not valid")}else if(($APP_SECRET_options$$=global.configs.APP_SECRET)&&
|
|
9
|
+
"public"!==$_token$$.email)try{let $decoded$$=jwt.verify($token$$,$APP_SECRET_options$$);if(!$decoded$$.user||$decoded$$.user.email!==$_token$$.email)return console.error("token is not valid",$_token$$),$fn$$("This access token is not valid")}catch($e$$){return $fn$$($e$$.message)}let $query$$={email:$_token$$.email};(new Promise(($resove$$,$reject$$)=>{setImmediate(()=>{global.clientRedis.get(`:email:${$_token$$.email}`,function($err$$,$reply$$){if($reply$$)return $resove$$(JSON.parse($reply$$));
|
|
10
|
+
User.findOne($query$$).lean().exec(function($error$$,$user$$){if($error$$)return $reject$$($error$$);$user$$?$resove$$($user$$):$reject$$(`User ${$_token$$.email} is not exists`)})})})})).then($user$$=>{$user$$.current_user=$user$$.email;$user$$.token=$token$$;$user$$.admin=underscore.contains($usersAdmin$$,$user$$.email)||isSupperAdmin($user$$.email.toLowerCase());if(!1===$user$$.status)return $fn$$("This user was locked");"public"!==$_token$$.email&&$_token$$._id&&($_token$$.last_access=new Date,
|
|
11
|
+
$_token$$.save());setImmediate(()=>{$fn$$(null,$user$$,$_token$$)})}).catch($e$$=>{$fn$$($e$$)})};
|
|
11
12
|
const sendEmailTo=($email$$,$data$$)=>{$data$$.body&&validator.isEmail($email$$)&&emailService.sendHtml({to:{address:$email$$},subject:($data$$.title||"").replace(/<[^>]*>?/gm,""),html:$data$$.body||""},function($error$$){$error$$&&console.error($error$$)})},socketSendTo=async($email$$,$event_name$$,$msg$$,$exclude_token$$)=>{setImmediate(async()=>{$email$$&&[...(new Set((await Tokens.find({email:$email$$})).map($t$$=>$t$$.token)))].filter($t$$=>!$exclude_token$$||$t$$!==$exclude_token$$).forEach($token$$=>
|
|
12
13
|
{$event_name$$&&global.clientIO[$token$$]&&global.socketIO&&async.map(global.clientIO[$token$$],($id$$,$callback$$)=>{setImmediate(()=>{global.socketIO.to($id$$).emit($event_name$$,$msg$$);$callback$$()})},()=>{})})})},socketSendToWithToken=async($token$$,$event_name$$,$msg$$)=>{setImmediate(()=>{$event_name$$&&global.clientIO[$token$$]&&global.socketIO&&global.clientIO[$token$$].forEach(function($id$$){global.socketIO.to($id$$).emit($event_name$$,$msg$$)})})};
|
|
13
14
|
User.isOnline=async $email$$=>[...(new Set((await Tokens.find({email:$email$$})).map($t$$=>$t$$.token)))].find($token$$=>global.clientIO[$token$$]&&global.socketIO&&0<global.clientIO[$token$$].length)?!0:!1;
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
'use strict';const model=global.getModel("asskey"),assrequest=global.getModel("assrequest"),assinvestment=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),User=global.getModel("user"),Receiver=global.getModel("assreceiver"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),{DirectSecp256k1HdWallet}=require("@cosmjs/proto-signing"),{getWallet,getKeyInfo,bankBalancesGet,spend,getTxStatus,
|
|
2
|
-
bcQuery,tdQuery,initSocket,createTx,getLatestHash,getHashById,mining}=require("../../libs/blockchainconnect");
|
|
3
|
-
module.exports=function($contr_router$$){initSocket();$contr_router$$=new controller($contr_router$$,model,"asskey",{unique:["address"],sort:{date_updated:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>"delete"==$options$$.action?!0:!1,onFinding:async($user$$,$condition$$,$next$$,$obj$jscomp$19_options$$={})=>{if($obj$jscomp$19_options$$.req&&$obj$jscomp$19_options$$.req.query&&!$obj$jscomp$19_options$$.req.query.count
|
|
4
|
-
new model({user_created:$user$$.email,username:$user$$.email,id_app:$user$$.current_id_app});const $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$obj$jscomp$19_options$$.address=$accounts$$[0].address;$obj$jscomp$19_options$$.mnemonic=$wallet$$.mnemonic;$obj$jscomp$19_options$$.name=$user$$.name;await $obj$jscomp$19_options$$.save()}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
$
|
|
9
|
-
|
|
10
|
-
$
|
|
11
|
-
($
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
$
|
|
1
|
+
'use strict';const model=global.getModel("asskey"),assrequest=global.getModel("assrequest"),assinvestment=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),User=global.getModel("user"),Receiver=global.getModel("assreceiver"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),{DirectSecp256k1HdWallet}=require("@cosmjs/proto-signing"),{getWallet,getKeyInfo,getPrice,bankBalancesGet,spend,getTxStatus,
|
|
2
|
+
txQuery,bcQuery,tdQuery,initSocket,createTx,getLatestHash,getHashById,mining}=require("../../libs/blockchainconnect");
|
|
3
|
+
module.exports=function($contr_router$$){initSocket();$contr_router$$=new controller($contr_router$$,model,"asskey",{unique:["address"],sort:{date_updated:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>"delete"==$options$$.action?!0:!1,onFinding:async($user$$,$condition$$,$next$$,$obj$jscomp$19_options$$={})=>{if($obj$jscomp$19_options$$.req&&$obj$jscomp$19_options$$.req.query&&!$obj$jscomp$19_options$$.req.query.count){if(0===await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,
|
|
4
|
+
asset:{$nin:["BTC","ETH"]}})){$obj$jscomp$19_options$$=new model({user_created:$user$$.email,username:$user$$.email,id_app:$user$$.current_id_app});const $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$obj$jscomp$19_options$$.address=$accounts$$[0].address;$obj$jscomp$19_options$$.mnemonic=$wallet$$.mnemonic;$obj$jscomp$19_options$$.name=$user$$.name;$obj$jscomp$19_options$$.asset=configs.MAIN_DENOM;await $obj$jscomp$19_options$$.save()}try{if(0===
|
|
5
|
+
await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,asset:"BTC"})){const $obj$$=new model({user_created:$user$$.email,username:$user$$.email,id_app:$user$$.current_id_app}),$CryptoAccount$$=require("send-crypto"),$privateKey$$=$CryptoAccount$$.newPrivateKey(),$account$$=new $CryptoAccount$$($privateKey$$);$obj$$.private_key=$privateKey$$;$obj$$.address=await $account$$.address("BTC");$obj$$.name=$user$$.name;$obj$$.asset="BTC";await $obj$$.save()}if(0===await model.countDocuments({user_created:$user$$.email,
|
|
6
|
+
id_app:$user$$.current_id_app,asset:"ETH"})){const $obj$$=new model({user_created:$user$$.email,username:$user$$.email,id_app:$user$$.current_id_app}),$CryptoAccount$$=require("send-crypto"),$privateKey$$=$CryptoAccount$$.newPrivateKey(),$account$$=new $CryptoAccount$$($privateKey$$);$obj$$.private_key=$privateKey$$;$obj$$.address=await $account$$.address("ETH");$obj$$.name=$user$$.name;$obj$$.asset="ETH";await $obj$$.save()}}catch($e$$){console.error($e$$)}}$next$$(null,$condition$$)},onView:async($user$$,
|
|
7
|
+
$items$$,$next$$)=>{await $items$$.asyncJoinModel2(null,User,{where:{username:"email"},fields:{fullname:"name"}});$items$$.forEach($item$$=>{delete $item$$.mnemonic;delete $item$$.private_key});$next$$(null,$items$$)}});$contr_router$$.creating=async($user$$,$obj$$,$next$$)=>{$obj$$.username||($obj$$.username=$user$$.email);try{let $wallet$$;if($obj$$.mnemonic){if(await model.findOne({id_app:$user$$.current_id_app,mnemonic:$obj$$.mnemonic}))return $next$$("This wallet was added to your account");
|
|
8
|
+
$wallet$$=await DirectSecp256k1HdWallet.fromMnemonic($obj$$.mnemonic,{prefix:configs.ADDRESS_PREFIX})}else $wallet$$=await DirectSecp256k1HdWallet.generate(24,{prefix:configs.ADDRESS_PREFIX});let $accounts$$=await $wallet$$.getAccounts();$obj$$.address=$accounts$$[0].address;$obj$$.mnemonic=$wallet$$.mnemonic;$next$$(null,$obj$$)}catch($e$$){$next$$($e$$.message||$e$$.error||$e$$)}};$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if($user$$.email!==$obj$$.user_created&&!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("Can't delete this key");
|
|
9
|
+
global.client_cosmos=global.client_cosmos||{};delete global.client_cosmos[$obj$$._id.toString()];Receiver.deleteMany({address:$obj$$.address});$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$fn$$){$fn$$("Can't update this wallet")};$contr_router$$.createRoute(":address/balance",async($req$$,$fn$$)=>{let $address$$=$req$$.params.address,$w$$=await model.findOne({address:$address$$}).lean();if(!$w$$||!$w$$.asset||"BTC"!=$w$$.asset&&"ETH"!=$w$$.asset)try{const $bls$$=await bankBalancesGet($address$$);
|
|
10
|
+
await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($req$$.user.current_id_app,assinvestment,{where:{denom:"token"},asyncSetFields:async($item$$,$investment_ref$$,$callback$$)=>{$item$$.price=$investment_ref$$.gia;$investment_ref$$={...$investment_ref$$};await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham","logo","hinh_anh",{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},
|
|
11
|
+
{tong_so_token_phat_hanh:"tong_so_token"}]});await [$investment_ref$$].asyncJoinModel2($req$$.user.current_id_app,assperiod,{where:{id_period:"id",id_product:"id_product"},fields:"ten_lh_dt ten_ky_han id_rpt ky_han ky_tinh_lai loi_nhuan_duoc_chia goi_dau_tu".split(" ")});$investment_ref$$.wallet_address=$address$$;$investment_ref$$.so_luong=$item$$.amount;$investment_ref$$.tong_gia_tri=$investment_ref$$.so_luong*$investment_ref$$.gia;$investment_ref$$.lai_du_tinh=Math.round($investment_ref$$.lai_suat_cam_ket/
|
|
12
|
+
365/100*$investment_ref$$.tong_gia_tri*$investment_ref$$.ky_han);$investment_ref$$.tong_gia_tri_dao_han=$investment_ref$$.tong_gia_tri+$investment_ref$$.lai_du_tinh;$investment_ref$$.ky_han&&!$investment_ref$$.co_phan?($investment_ref$$.so_ngay_hien_tai=Math.round(((new Date).getTime()-(new Date($investment_ref$$.ngay_phat_hanh)).getTime())/864E5),$investment_ref$$.tien_lai_hien_tai=Math.round(($investment_ref$$.lai_suat_cam_ket||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri),
|
|
13
|
+
$investment_ref$$.tien_lai_truoc_han_hien_tai=Math.round(($investment_ref$$.lai_suat_truoc_han||0)/365/100*$investment_ref$$.so_ngay_hien_tai*$investment_ref$$.tong_gia_tri)):($investment_ref$$.tien_lai_hien_tai=0,$investment_ref$$.so_ngay_hien_tai=0);$investment_ref$$.gia_ban_de_xuat=$investment_ref$$.so_luong?Math.round(($investment_ref$$.tong_gia_tri+$investment_ref$$.tien_lai_hien_tai)/$investment_ref$$.so_luong):0;if($investment_ref$$.goi_dau_tu)try{$investment_ref$$.market_value=await assinvestment.getInvestmentMarketValue($investment_ref$$.id_app,
|
|
14
|
+
$investment_ref$$.token)}catch($e$$){console.error($e$$)}$item$$.investment=$investment_ref$$;$callback$$()}});$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$fn$$(null,$bls$$)}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}else try{let $r$$={amount:await (new (require("send-crypto"))($w$$.private_key)).getBalance($w$$.asset.toUpperCase()),denom:$w$$.asset.toLowerCase()};
|
|
15
|
+
const $price$$=await getPrice($w$$.asset.toLowerCase());$r$$.amount=Number($r$$.amount);$r$$.price=$price$$||0;$r$$.value=$r$$.price*$r$$.amount;$fn$$(null,[$r$$])}catch($e$$){if($e$$.message&&$e$$.message.error)return $fn$$($e$$.message);$fn$$({error:$e$$.message})}},{method:"GET"});const $handleResult$$=$assreq_data$$=>{$assreq_data$$._id&&($assreq_data$$.trans_id=$assreq_data$$._id.toString());delete $assreq_data$$.trang_thai;delete $assreq_data$$._id;delete $assreq_data$$.__v;delete $assreq_data$$.transaction;
|
|
16
|
+
delete $assreq_data$$.id_app;delete $assreq_data$$.exfields;delete $assreq_data$$.status;delete $assreq_data$$.date_created;delete $assreq_data$$.date_updated;delete $assreq_data$$.user_created;delete $assreq_data$$.user_updated;return $assreq_data$$},$permission$$=require("../../libs/permission");$contr_router$$.createRoute("spend",async($req$$,$fn$$)=>{let $data$$=$req$$.body;const $address$$=$data$$.from,$to_address$$=$data$$.to||$data$$.receiver_address;let {denom:$denom$$,amount:$amount$$,memo:$memo$$}=
|
|
17
|
+
$data$$;if(!($address$$&&$to_address$$&&$denom$$&&$amount$$))return $fn$$({error:"Data miss 'from' or 'to' or 'denom' or 'amount'"});if($address$$===$to_address$$)return $fn$$({error:"\u0110\u1ecba ch\u1ec9 v\u00ed g\u1eedi v\u00e0 nh\u1eadn ph\u1ea3i kh\u00e1c nhau"});try{await $permission$$.verifyOTP($req$$.user.email,$data$$["otp-id"],$data$$["otp-code"])}catch($e$$){return $fn$$({error:$e$$.message||$e$$.error||$e$$,code:4001})}let $assreq$$;if($data$$.assrequest_id){if(!global.mongoose.Types.ObjectId.isValid($data$$.assrequest_id))return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});
|
|
15
18
|
$assreq$$=await assrequest.findOne({_id:$data$$.assrequest_id,amount:$amount$$,denom:$denom$$,receiver_address:$to_address$$,request_id:$data$$.request_id,order_id:$data$$.order_id});if(!$assreq$$)return $fn$$({error:"Y\u00eau c\u1ea7u thanh to\u00e1n kh\u00f4ng h\u1ee3p l\u1ec7"});if("1"===$assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c thanh to\u00e1n"});if("9"===$assreq$$.trang_thai)return $fn$$({error:"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb h\u1ee7y"});
|
|
16
19
|
$memo$$=$memo$$||$data$$.order_info}try{const $rs$$=await spend($req$$.user.current_id_app,$req$$.user.token,$address$$,$to_address$$,{denom:$denom$$,amount:$amount$$,memo:$memo$$});if($rs$$.code)return 5===$rs$$.code?$fn$$({error:"B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y"}):$fn$$({error:$rs$$.rawLog});let $walletReceiver$$=await model.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$});if($walletReceiver$$){let $_userReceiver$$=
|
|
17
20
|
await User.findOne({email:$walletReceiver$$.username});Receiver.findOne({id_app:$req$$.user.current_id_app,address:$to_address$$,user_created:$req$$.user.email},($e$$,$rs$$)=>{$rs$$||Receiver.create({id_app:$req$$.user.current_id_app,name:$data$$.name||($_userReceiver$$||{}).name,address:$to_address$$,user_created:$req$$.user.email})})}if($assreq$$){$assreq$$.trang_thai="1";$assreq$$.sender_address=$address$$;$assreq$$.sender_name=$data$$.sender_name||$req$$.user.name;$assreq$$.sender_user=$req$$.user.email;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use strict';const model=global.getModel("asssell"),controller=require("../../controllers/controller"),{createTx,getTxStatus,bcQuery}=require("../../libs/blockchainconnect"),AssInvest=global.getModel("assinvestment"),AssPeriod=global.getModel("assperiod"),AssProduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),async=require("async");
|
|
2
2
|
module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asssell",{sort:{date_created:-1},notNeedRight:!0,requireOtp:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{async.map($items$$.filter($item$$=>$item$$.id||0===$item$$.id),async $item$jscomp$0$$=>{try{let $sell$$=await bcQuery("sell/"+$item$jscomp$0$$.id);$item$jscomp$0$$.trang_thai=$sell$$.Sell.status;$item$jscomp$0$$.da_ban=$sell$$.Sell.daBan||
|
|
3
|
-
0;$item$jscomp$0$$.con_lai=$sell$$.Sell.conLai||0;$item$jscomp$0$$.denom=$sell$$.Sell.denom;$item$jscomp$0$$.ngay_het_han=new Date(1E3*Number($sell$$.Sell.ngayHetHan));$item$jscomp$0$$.token&&await [$item$jscomp$0$$].asyncJoinModel2($user$$.current_id_app,AssInvest,{where:"token",fields:["ten_san_pham",{gia_goc:"gia"},"ngay_phat_hanh","id_product","product_token","ky_han","id_period","ten_ky_han",
|
|
4
|
-
null!=$item$jscomp$0$$.id_period&&await [$item$jscomp$0$$].asyncJoinModel2($user$$.current_id_app,AssPeriod,{where:$item$$=>({id:$item$$.id_period,id_product:$item$$.id_product}),fields:["ten_lh_dt","ten_ky_han","ky_tinh_lai","goi_dau_tu"]});$item$jscomp$0$$.tong_gia_tri_con_lai=$item$jscomp$0$$.con_lai*$item$jscomp$0$$.gia_goc;$item$jscomp$0$$.lai_du_tinh_con_lai=Math.round($item$jscomp$0$$.lai_suat_cam_ket/
|
|
5
|
-
$item$jscomp$0$$.tong_gia_tri_con_lai+$item$jscomp$0$$.lai_du_tinh_con_lai;$item$jscomp$0$$.ky_han&&!$item$jscomp$0$$.co_phan?($item$jscomp$0$$.so_ngay_hien_tai=Math.round(((new Date).getTime()-(new Date($item$jscomp$0$$.ngay_phat_hanh)).getTime())/864E5),$item$jscomp$0$$.tien_lai_hien_tai=Math.round($item$jscomp$0$$.so_ngay_hien_tai*($item$jscomp$0$$.lai_suat_cam_ket||0)/365*$item$jscomp$0$$.tong_gia_tri_con_lai/
|
|
6
|
-
$item$jscomp$0$$).then($rs$$=>{console.log("update asssell",$rs$$)});if($item$jscomp$0$$.goi_dau_tu)try{$item$jscomp$0$$.market_value=await global.getModel("assinvestment").getInvestmentMarketValue($item$jscomp$0$$.id_app,$item$jscomp$0$$.token)}catch($e$$){console.error($e$$)}}catch($e$$){console.error("view asssell",$e$$),$e$$.message&&"3"==$e$$.message.code&&(model.deleteOne({_id:$item$jscomp$0$$._id}).then(()=>
|
|
7
|
-
{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSSELL",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai"]});$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>
|
|
8
|
-
$
|
|
9
|
-
|
|
10
|
-
{
|
|
11
|
-
$
|
|
12
|
-
$
|
|
13
|
-
$
|
|
14
|
-
|
|
3
|
+
0;$item$jscomp$0$$.con_lai=$sell$$.Sell.conLai||0;$item$jscomp$0$$.denom=$sell$$.Sell.denom;$item$jscomp$0$$.fee=$sell$$.Sell.fee;$item$jscomp$0$$.exchange_address=$sell$$.Sell.exchangeAddress;$item$jscomp$0$$.ngay_het_han=new Date(1E3*Number($sell$$.Sell.ngayHetHan));$item$jscomp$0$$.token&&await [$item$jscomp$0$$].asyncJoinModel2($user$$.current_id_app,AssInvest,{where:"token",fields:["ten_san_pham",{gia_goc:"gia"},"ngay_phat_hanh","id_product","product_token","ky_han","id_period","ten_ky_han",
|
|
4
|
+
"ngay_dao_han","lai_suat_cam_ket","lai_suat_truoc_han","cho_phep_rut_von","co_phan"]});void 0!=$item$jscomp$0$$.id_period&&null!=$item$jscomp$0$$.id_period&&await [$item$jscomp$0$$].asyncJoinModel2($user$$.current_id_app,AssPeriod,{where:$item$$=>({id:$item$$.id_period,id_product:$item$$.id_product}),fields:["ten_lh_dt","ten_ky_han","ky_tinh_lai","goi_dau_tu"]});$item$jscomp$0$$.tong_gia_tri_con_lai=$item$jscomp$0$$.con_lai*$item$jscomp$0$$.gia_goc;$item$jscomp$0$$.lai_du_tinh_con_lai=Math.round($item$jscomp$0$$.lai_suat_cam_ket/
|
|
5
|
+
365*$item$jscomp$0$$.tong_gia_tri_con_lai*$item$jscomp$0$$.ky_han/100,0);$item$jscomp$0$$.tong_gia_tri_dao_han_con_lai=$item$jscomp$0$$.tong_gia_tri_con_lai+$item$jscomp$0$$.lai_du_tinh_con_lai;$item$jscomp$0$$.ky_han&&!$item$jscomp$0$$.co_phan?($item$jscomp$0$$.so_ngay_hien_tai=Math.round(((new Date).getTime()-(new Date($item$jscomp$0$$.ngay_phat_hanh)).getTime())/864E5),$item$jscomp$0$$.tien_lai_hien_tai=Math.round($item$jscomp$0$$.so_ngay_hien_tai*($item$jscomp$0$$.lai_suat_cam_ket||0)/365*$item$jscomp$0$$.tong_gia_tri_con_lai/
|
|
6
|
+
100)):($item$jscomp$0$$.tien_lai_hien_tai=0,$item$jscomp$0$$.so_ngay_hien_tai=0);model.updateMany({_id:$item$jscomp$0$$._id},$item$jscomp$0$$).then($rs$$=>{console.log("update asssell",$rs$$)});if($item$jscomp$0$$.goi_dau_tu)try{$item$jscomp$0$$.market_value=await global.getModel("assinvestment").getInvestmentMarketValue($item$jscomp$0$$.id_app,$item$jscomp$0$$.token)}catch($e$$){console.error($e$$)}}catch($e$$){console.error("view asssell",$e$$),$e$$.message&&"3"==$e$$.message.code&&(model.deleteOne({_id:$item$jscomp$0$$._id}).then(()=>
|
|
7
|
+
{console.log("deleted sell",$item$jscomp$0$$)}),$item$jscomp$0$$.not_found=!0)}},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSSELL",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai"]});$next$$(null,$items$$)})},onCreating:async($user$$,$obj$$,$next$$)=>
|
|
8
|
+
{var $app_values$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();$obj$$.fee=$app_values$$.exchange_fee;$obj$$.exchange_address=$app_values$$.wallet_address;let $from_address$$=$obj$$.creator,$typeUrl$$;void 0!=$obj$$.id_need_to_buy&&null!=$obj$$.id_need_to_buy?($typeUrl$$="/pvtruong.flexzen.flexzen.MsgCreateDirectSell",$app_values$$={creator:$obj$$.creator,token:$obj$$.token,idNeedToBuy:Number($obj$$.id_need_to_buy),fee:($app_values$$.exchange_fee||0).toString(),exchangeAddress:$app_values$$.wallet_address||
|
|
9
|
+
""}):($typeUrl$$="/pvtruong.flexzen.flexzen.MsgCreateSell",$app_values$$={creator:$obj$$.creator,token:$obj$$.token,soLuong:Number($obj$$.so_luong),gia:Number($obj$$.gia_ban),denom:$obj$$.denom,ngayHetHan:(new Date($obj$$.ngay_het_han)).getTime()/1E3,buyer:$obj$$.buyer||"",fee:($app_values$$.exchange_fee||0).toString(),exchangeAddress:$app_values$$.wallet_address||""});createTx($user$$.current_id_app,$user$$.token,{values:$app_values$$,typeUrl:$typeUrl$$,from_address:$from_address$$,memo:"\u0110\u1eb7t l\u1ec7nh b\u00e1n"}).then(async $rs$$=>
|
|
10
|
+
{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 token \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;if(void 0!==$id$$){let $sell$$=await bcQuery("sell/"+$id$$);$obj$$.id=$id$$;$obj$$.denom=$sell$$.Sell.denom;
|
|
11
|
+
$obj$$.gia_ban=$sell$$.Sell.gia;$obj$$.so_luong=$sell$$.Sell.soLuong;$obj$$.tong_gia_tri=$obj$$.gia_ban*$obj$$.so_luong;$obj$$.da_ban=$sell$$.Sell.daBan;$obj$$.con_lai=$sell$$.Sell.conLai;$obj$$.trang_thai=$sell$$.Sell.status;$next$$(null,$obj$$)}else console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y")}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});
|
|
12
|
+
$contr_router$$.deleting=function($user$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a");createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,id:Number($obj$$.id)},typeUrl:"/pvtruong.flexzen.flexzen.MsgDeleteSell",from_address:$obj$$.creator,memo:"Hu\u1ef7 l\u1ec7nh b\u00e1n"}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");
|
|
13
|
+
console.error($rs$$);return $next$$($rs$$.rawLog)}$next$$(null,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.updating=async function($user$$,$data$$,$obj$$,$next$$){if($user$$.email!==$obj$$.user_created)return $next$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt");let $app$$=await global.getModel("app").findOne({_id:$user$$.current_id_app}).lean();var $data_update$jscomp$1_from_address$$=$obj$$.creator;$data_update$jscomp$1_from_address$$=
|
|
14
|
+
{values:{creator:$obj$$.creator,id:Number($obj$$.id),soLuong:Number(void 0==$data$$.so_luong?$obj$$.so_luong:$data$$.so_luong),gia:Number($data$$.gia_ban||$obj$$.gia_ban),denom:$data$$.denom||$obj$$.denom,ngayHetHan:(new Date($obj$$.ngay_het_han)).getTime()/1E3,buyer:void 0==$data$$.buyer?$obj$$.buyer:$data$$.buyer,fee:($app$$.exchange_fee||0).toString()},typeUrl:"/pvtruong.flexzen.flexzen.MsgUpdateSell",from_address:$data_update$jscomp$1_from_address$$,memo:"C\u1eadp nh\u1eadt l\u1ec7nh b\u00e1n"};
|
|
15
|
+
createTx($user$$.current_id_app,$user$$.token,$data_update$jscomp$1_from_address$$).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog)}$data$$.fee=$app$$.exchange_fee;$data$$.exchange_address=$app$$.wallet_address;$next$$(null,$data$$,$obj$$)}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})};$contr_router$$.route()};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
'use strict';const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),ckvt=require("../../libs/ckvt"),async=require("async"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},onFinding:($user
|
|
2
|
-
{$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:($user$$,$result$$,$fn$$)=>{
|
|
3
|
-
Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"}]},function($kq$$){
|
|
4
|
-
|
|
5
|
-
$item$$.
|
|
6
|
-
$
|
|
7
|
-
{
|
|
8
|
-
$
|
|
9
|
-
|
|
1
|
+
'use strict';const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),utils=require("../../libs/utils"),ckvt=require("../../libs/ckvt"),async=require("async"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},onFinding:($user$$,
|
|
2
|
+
$condition$$,$next$$)=>{$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:($user$$,$result$$,$fn$$)=>{async.parallel({app:$callback$$=>{$result$$.joinModel2(null,App,{where:{id_app_vt:"_id"},fields:[{name_app_vt:"name"}]},function($kq$$){$callback$$(null,$kq$$)})},user:$callback$$=>{$result$$.joinModel2(null,User,{where:{user:"email"},fields:[{user_name:"name"},{partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$jscomp$0$$=>{$result$$.joinModel2(null,
|
|
3
|
+
Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai"]},function($kq$$){setImmediate(async()=>{async.map($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),($item$$,$callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=
|
|
4
|
+
await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&$ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*$ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||1),4))}$callback$$()}else{$ds_kho_online_dvtqd$$=(await global.getModel("dmkho").find({id_app:$item$$.id_app_vt,la_kho_online:!0},
|
|
5
|
+
{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.groupBy=["ma_vt"];$condition$$.ngay=new Date;$condition$$.ma_kho={$in:$ds_kho_online_dvtqd$$};ckvt($condition$$,async function($dvtqd$$,$rs$$){$item$$.ton=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.ma_dvt&&
|
|
6
|
+
($dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean())&&($item$$.ton=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$$.ton*$dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$$.ton/($dvtqd$$.ty_le_qd||1),4));$callback$$()})}})},()=>{$callback$jscomp$0$$(null,$kq$$)})})})},giaban:$callback$jscomp$0$$=>{async.map($result$$,($item$$,$callback$$)=>{if($item$$.km_yn_for&&"SO1"===$item$$.km_yn_for.toUpperCase())return $callback$$();let $condition$$=
|
|
7
|
+
{ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.sl_xuat=$item$$.sl_xuat;$condition$$.online=!0;getGiaBan($condition$$,async($e$$,$gia$$)=>{$e$$&&console.log("error when get gia_ban on cart",$e$$);$item$$.tien_ck=0;$item$$.tien_ck_nt=0;$item$$.ty_le_ck=0;$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,
|
|
8
|
+
$gia$$),$item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le,$gia$$.sl_ap_dung?$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.round(($item$$.tien_ck||0)*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.round(($item$$.ty_le_ck||0)*$item$$.gia_ban/100*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)):$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.round(($item$$.tien_ck||0)*$item$$.sl_xuat),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=
|
|
9
|
+
Math.round(($item$$.ty_le_ck||0)*$item$$.gia_ban/100*$item$$.sl_xuat),$gia$$.promotion&&0<$gia$$.promotion.length&&await Promise.all($gia$$.promotion.map($p$$=>{($p$$.details_km||[]).forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app_vt}-${$item$$.ma_vt}`});return($p$$.details_km||[]).asyncJoinModel2($item$$.id_app_vt,global.getModel("dmvt"),{where:"ma_vt",fields:"ma_dvt chieu_cao chieu_rong chieu_sau trong_luong tg_tk kg_kiem_tra_ton_kho_tt kg_kiem_tra_ton_kho".split(" ")})}))):$item$$.gia_ban=$item$$.gia_ban_nt=
|
|
10
|
+
$item$$.gia_ban_le0;$item$$.tien_hang=$item$$.tien_hang_nt=Math.round($item$$.gia_ban*$item$$.sl_xuat);$item$$.so_tien_max&&($item$$.tien_ck=$item$$.tien_ck_nt=Math.min($item$$.so_tien_max,$item$$.tien_ck_nt));$item$$.tien=$item$$.tien_nt=$item$$.tien_hang-($item$$.tien_ck||0);delete $item$$.ck_sl_tu2;delete $item$$.exfields;delete $item$$.user_created;delete $item$$.user_updated;$callback$$(null)})},($e$$,$rs$$)=>{$callback$jscomp$0$$(null,$rs$$)})}},$error$$=>{if($error$$)return $fn$$($error$$);
|
|
11
|
+
try{let $freeshipModel$$=global.getModel("ecompromotion_freeships"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$={$gte:$tu_ngay$$};Promise.all($result$$.filter($i$$=>$i$$.id_app_vt).map($item$$=>(async()=>{let $freeship$$=await $freeshipModel$$.find({id_app:$item$$.id_app_vt,hieu_luc_tu:$hieu_luc_tu$$,hieu_luc_den:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,
|
|
12
|
+
null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.freeship=$freeship$$})())).then(()=>{$fn$$(null,$result$$)}).catch($e$$=>{console.error($e$$);$fn$$(null,$result$$)})}catch($e$$){console.error($e$$),$fn$$(null,$result$$)}})}})).route()};module.exports=cart;
|