flexbiz-server 12.2.3 → 12.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/auths/local.js +27 -26
- package/server/controllers/controller.js +56 -55
- package/server/controllers/controllerRPT.js +18 -17
- package/server/libs/cdpstk.js +1 -1
- package/server/libs/databanle.js +13 -13
- package/server/libs/getGiaban.js +23 -22
- package/server/libs/post-book.js +9 -8
- package/server/libs/post-socai.js +9 -9
- package/server/libs/prototypes.js +4 -4
- package/server/libs/tinhGtPhanboSltp.js +5 -5
- package/server/libs/tinhGtPhanboYtcp.js +2 -2
- package/server/libs/tinhGtThcppstk.js +1 -1
- package/server/libs/tinhGtTrucTiep.js +8 -7
- package/server/libs/tinhgiatb.js +4 -4
- package/server/libs/tinhgiatb1vt.js +3 -3
- package/server/libs/tinhhoahong.js +32 -0
- package/server/libs/utils.js +4 -3
- package/server/models/app.js +9 -8
- package/server/models/approve.js +4 -4
- package/server/models/customer.js +8 -8
- package/server/models/dh2.js +10 -9
- package/server/models/dmgiaban.js +6 -6
- package/server/models/dmhoahonghd.js +6 -5
- package/server/models/fbconversation.js +9 -0
- package/server/models/fbmessage.js +2 -0
- package/server/models/fbpage.js +2 -0
- package/server/models/group.js +4 -2
- package/server/models/hd2.js +8 -8
- package/server/models/hd3.js +9 -9
- package/server/models/hd7.js +1 -1
- package/server/models/notification.js +3 -2
- package/server/models/participant.js +5 -5
- package/server/models/pbl.js +4 -4
- package/server/models/reportinfo.js +2 -2
- package/server/models/rptform.js +3 -2
- package/server/models/schedule.js +1 -1
- package/server/models/so1.js +7 -6
- package/server/models/socai.js +4 -4
- package/server/models/tdttco.js +8 -4
- package/server/models/tdttno.js +8 -4
- package/server/models/tokens.js +2 -2
- package/server/models/usergroup.js +5 -4
- package/server/models/vatra.js +2 -2
- package/server/models/vatvao.js +4 -4
- package/server/modules/lists/ls-assinvestment.js +1 -1
- package/server/modules/lists/ls-customer.js +13 -14
- package/server/modules/lists/ls-dmvt.js +48 -39
- package/server/modules/lists/ls-fbconversation.js +3 -0
- package/server/modules/lists/ls-fbmessage.js +3 -0
- package/server/modules/lists/ls-fbpage.js +10 -0
- package/server/modules/lists/ls-introducecode.js +1 -1
- package/server/modules/lists/ls-news.js +1 -1
- package/server/modules/lists/ls-opportunity.js +3 -3
- package/server/modules/lists/ls-session.js +1 -1
- package/server/modules/public/callin.js +6 -6
- package/server/modules/reports/rp-cdpstk.js +3 -3
- package/server/modules/reports/rp-chitiettaisan.js +9 -8
- package/server/modules/reports/rp-ckvt.js +9 -7
- package/server/modules/reports/rp-ctbanle.js +13 -12
- package/server/modules/reports/rp-databanle.js +8 -4
- package/server/modules/reports/rp-dtbanletheoct.js +16 -9
- package/server/modules/reports/rp-dtbanletheokh.js +12 -6
- package/server/modules/reports/rp-dtbanletheokho.js +14 -9
- package/server/modules/reports/rp-dtbanletheonam.js +15 -9
- package/server/modules/reports/rp-dtbanletheongay.js +13 -8
- package/server/modules/reports/rp-dtbanletheonv.js +15 -9
- package/server/modules/reports/rp-dtbanletheoquy.js +15 -9
- package/server/modules/reports/rp-dtbanletheothang.js +15 -9
- package/server/modules/reports/rp-getinvoice2pay.js +4 -6
- package/server/modules/reports/rp-getinvoice2receive.js +4 -6
- package/server/modules/reports/rp-hoahong.js +9 -0
- package/server/modules/reports/rp-kqhdkd.js +5 -4
- package/server/modules/reports/rp-ptcttct.js +7 -6
- package/server/modules/reports/rp-pttct.js +8 -8
- package/server/modules/reports/rp-pttctkho.js +3 -2
- package/server/modules/reports/rp-pttctkho2.js +3 -3
- package/server/modules/reports/rp-thnxt.js +8 -8
- package/server/modules/reports/rp-thnxt_sl.js +6 -6
- package/server/modules/reports/rp-thnxttt.js +6 -6
- package/server/modules/reports/rp-tmbctc.js +16 -16
- package/server/modules/systems/sys-app.js +25 -24
- package/server/modules/systems/sys-notification.js +2 -2
- package/server/modules/systems/sys-schedule.js +1 -1
- package/server/modules/systems/sys-user.js +8 -8
- package/server/modules/vouchers/vo-bc1.js +9 -8
- package/server/modules/vouchers/vo-bg2.js +9 -9
- package/server/modules/vouchers/vo-bn1.js +5 -4
- package/server/modules/vouchers/vo-dh2.js +15 -38
- package/server/modules/vouchers/vo-dnm.js +11 -12
- package/server/modules/vouchers/vo-hd2.js +63 -83
- package/server/modules/vouchers/vo-hd3.js +28 -22
- package/server/modules/vouchers/vo-hd7.js +37 -36
- package/server/modules/vouchers/vo-pbl.js +49 -49
- package/server/modules/vouchers/vo-pc1.js +9 -8
- package/server/modules/vouchers/vo-pn1.js +24 -22
- package/server/modules/vouchers/vo-pn5.js +1 -1
- package/server/modules/vouchers/vo-pn9.js +23 -23
- package/server/modules/vouchers/vo-pnc.js +8 -8
- package/server/modules/vouchers/vo-pnh.js +5 -5
- package/server/modules/vouchers/vo-pt1.js +17 -16
- package/server/modules/vouchers/vo-pxc.js +16 -16
- package/server/modules/vouchers/vo-pxh.js +12 -10
- package/server/modules/vouchers/vo-so1.js +94 -119
- package/server/modules/vouchers/vo-so4.js +1 -1
- package/server/modules/vouchers/vo-so5.js +2 -2
- package/server/workers/restoreApp.js +21 -12
- package/server/workers/runScript.js +3 -3
package/server/models/approve.js
CHANGED
|
@@ -68,8 +68,8 @@ $_id$$=$key_data$$.id_request;$user_approved$$=$key_data$$.email;$user_approved_
|
|
|
68
68
|
($_c$$.trang_thai=$trang_thai$$);model.findOne($_c$$,($e$jscomp$3$$,$rq$$)=>{if($e$jscomp$3$$||!$rq$$)return $callback$$($e$jscomp$3$$||"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);if($rq$$.date_denied)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+$rq$$.user_denied_name);$rq$$.date_approved=
|
|
69
69
|
new Date;$rq$$.user_approved=$user_approved$$;$rq$$.user_approved_name=$user_approved_name$$;$rq$$.approved_reason=$options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>0<=$u$$.email.indexOf($user_approved$$)))return $callback$$("User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y");$rq$$.save(($e$jscomp$2$$,$approve$$)=>{if($e$jscomp$2$$)return $callback$$($e$jscomp$2$$);model.sendNotifyApproved($rq$$,$token$$);if($rq$$.update_after_approve&&
|
|
70
70
|
$rq$$.update_after_approve.data)try{let $module_name$$=$rq$$.update_after_approve.module||$rq$$.update_after_approve.model,$ctrl$$;$module_name$$&&($ctrl$$=global.controllers[$module_name$$.toUpperCase()]);let $_m$$;$rq$$.update_after_approve.model?$_m$$=global.getModel($rq$$.update_after_approve.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$)return;$_m$$.updateOne({_id:$rq$$.id_ct},$rq$$.update_after_approve.data,async $e$jscomp$1$$=>{if($e$jscomp$1$$)return console.error("Can't update data after approved, error:",
|
|
71
|
-
$e$jscomp$1$$);if($ctrl$$)try{const $obj$$=await $_m$$.findOne({_id:$rq$$.id_ct});if($obj$$){const $u$$=await global.getModel("user").findOne({email:$user_approved$$});$u$$.current_id_app=$obj$$.id_app;const $app_info$$=await App.findOne({_id:$obj$$.id_app});$ctrl$$.postData($obj$$,$e$$=>{$e$$&&console.error($e$$)});$ctrl$$.handleAfterAproved&&await $ctrl$$.handleAfterAproved($obj$$);$ctrl$$.onView($u$$,[$obj$$.toObject()],($e$jscomp$0
|
|
72
|
-
{$e$$&&console.error($e$$)},null,$rq$$)})}}catch($e$$){console.error($e$$)}})}catch($e$$){console.error("Can't update data after approved, error:",$e$$.message)}$callback$$(null,$approve$$)})})};
|
|
71
|
+
$e$jscomp$1$$);if($ctrl$$)try{const $obj$$=await $_m$$.findOne({_id:$rq$$.id_ct});if($obj$$){$ctrl$$.emit("saved",$obj$$);$ctrl$$.emit("updated",$obj$$);const $u$$=await global.getModel("user").findOne({email:$user_approved$$});$u$$.current_id_app=$obj$$.id_app;const $app_info$$=await App.findOne({_id:$obj$$.id_app});$ctrl$$.postData($obj$$,$e$$=>{$e$$&&console.error($e$$)});$ctrl$$.handleAfterAproved&&await $ctrl$$.handleAfterAproved($obj$$);$ctrl$$.onView($u$$,[$obj$$.toObject()],($e$jscomp$0$$,
|
|
72
|
+
$rs$$)=>{$ctrl$$.requestApprove($app_info$$,$u$$,$rs$$[0],$e$$=>{$e$$&&console.error($e$$)},null,$rq$$)})}}catch($e$$){console.error($e$$)}})}catch($e$$){console.error("Can't update data after approved, error:",$e$$.message)}$callback$$(null,$approve$$)})})};
|
|
73
73
|
model.deny=function($_c$jscomp$2_encrypted$$,$callback$$,$token$$,$options$$={reason:""}){let $key_data$$,$_id$$,$user_denied$$,$user_denied_name$$,$trang_thai$$;if(underscore.isObject($_c$jscomp$2_encrypted$$))$_id$$=$_c$jscomp$2_encrypted$$.id_request,$user_denied$$=$_c$jscomp$2_encrypted$$.email,$user_denied_name$$=$_c$jscomp$2_encrypted$$.name,$trang_thai$$=$_c$jscomp$2_encrypted$$.trang_thai;else try{const $decipher$$=crypto.createDecipher("aes192",configs.cryptoPassword||"PVT@1");let $decrypted$$=
|
|
74
74
|
$decipher$$.update($_c$jscomp$2_encrypted$$,"hex","utf8");$decrypted$$+=$decipher$$.final("utf8");$key_data$$=JSON.parse($decrypted$$);$_id$$=$key_data$$.id_request;$user_denied$$=$key_data$$.email;$user_denied_name$$=$key_data$$.name;$trang_thai$$=$key_data$$.trang_thai}catch($e$$){return $callback$$("Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb")}if(!$_id$$||!$user_denied$$)return $callback$$("request id and deny user are required");if(!global.mongoose.Types.ObjectId.isValid($_id$$))return $callback$$("request id '"+
|
|
75
75
|
$_id$$+"' is not valid");$_c$jscomp$2_encrypted$$={_id:$_id$$};void 0!==$trang_thai$$&&null!==$trang_thai$$&&($_c$jscomp$2_encrypted$$.trang_thai=$trang_thai$$);model.findOne($_c$jscomp$2_encrypted$$,($e$jscomp$2$$,$rq$$)=>{if($e$jscomp$2$$||!$rq$$||!$rq$$.ma_ct)return $callback$$($e$jscomp$2$$||"Y\u00eau c\u1ea7u n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");if($rq$$.date_approved)return $callback$$("Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name);
|
|
@@ -87,5 +87,5 @@ $approve$$)=>{if($e$jscomp$1$$)return $callback$$($e$jscomp$1$$);let $title$$=`[
|
|
|
87
87
|
<hr/> ${$template$$} ${footerEmailTemplate($e$jscomp$19_requests$$.filter($r$$=>$r$$.user_approved||$r$$.user_denied))}`;let $ngEnviorment$$=new ngcompile([]);$_data$jscomp$3_app_info$$={user_request:{name:$rq$$.user_request_name,email:$rq$$.user_request},user_deny:{name:$rq$$.user_denied_name,email:$rq$$.user_denied},datasource:$rq$$.data,company:$_data$jscomp$3_app_info$$,app_info:$_data$jscomp$3_app_info$$,doc_so:utils.numberToWord};try{let $email_content$$=$ngEnviorment$$.$compile($template$$)($_data$jscomp$3_app_info$$),
|
|
88
88
|
$emails$$=[$rq$$.user_request],$rqs$$=$e$jscomp$19_requests$$.map($a$$=>$a$$.user_request),$aps$$=$e$jscomp$19_requests$$.filter($r$$=>$r$$._id.toString()!==$rq$$._id.toString()).map($a$$=>$a$$.user_approved);$emails$$=[...(new Set($emails$$.concat($rqs$$).concat($aps$$)))].filter($r$$=>$r$$);0<$emails$$.length&&App.emitEvent($rq$$.id_app,"request_denied",{_id:$rq$$.id_ct,id_app:$rq$$.id_app,title:$title$$,body:$title$$,email_content:$email_content$$,code:$rq$$.ma_ct,allow_unsubcribe:!1,attachments:$rq$$.data._id?
|
|
89
89
|
await File.find({id_link:$rq$$.data._id}).lean():void 0},null,$emails$$,!0,!0)}catch($e$$){console.log("Error send email",$e$$.message)}}):console.log("don't find email template or report template to send notify email to request user")});if($rq$$.update_after_deny&&$rq$$.update_after_deny.data)try{let $module_name$$=$rq$$.update_after_deny.module||$rq$$.update_after_deny.model,$ctrl$$;$module_name$$&&($ctrl$$=global.controllers[$module_name$$.toUpperCase()]);let $_m$$;$rq$$.update_after_deny.model?
|
|
90
|
-
$_m$$=global.getModel($rq$$.update_after_deny.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$)return;$_m$$.findOneAndUpdate({_id:$rq$$.id_ct},$rq$$.update_after_deny.data,async $e$jscomp$0$$=>{if($e$jscomp$0$$)return console.error("Can't update data after denied, error:",$e$jscomp$0$$);if($ctrl$$)try{const $obj$$=await $_m$$.findOne({_id:$rq$$.id_ct});$ctrl$$.postData($obj$$,$e$$=>{$e$$&&console.error($e$$)})
|
|
91
|
-
$e$$.message)}$callback$$(null,$approve$$)})})};module.exports=model;
|
|
90
|
+
$_m$$=global.getModel($rq$$.update_after_deny.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$)return;$_m$$.findOneAndUpdate({_id:$rq$$.id_ct},$rq$$.update_after_deny.data,async $e$jscomp$0$$=>{if($e$jscomp$0$$)return console.error("Can't update data after denied, error:",$e$jscomp$0$$);if($ctrl$$)try{const $obj$$=await $_m$$.findOne({_id:$rq$$.id_ct});$obj$$&&($ctrl$$.emit("saved",$obj$$),$ctrl$$.emit("updated",$obj$$),$ctrl$$.postData($obj$$,$e$$=>{$e$$&&console.error($e$$)}),$ctrl$$.handleAfterDenied&&
|
|
91
|
+
await $ctrl$$.handleAfterDenied($obj$$))}catch($e$$){console.error($e$$)}})}catch($e$$){console.log("Can't update data after deined, error:",$e$$.message)}$callback$$(null,$approve$$)})})};module.exports=model;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';const validator=require("validator"),customerSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_kh:{type:String,uppercase:!0,required:!0,default:"",trim:!0,maxlength:32},ten_kh:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00ean kh\u00e1ch h\u00e0ng",trim:!0,maxlength:1024},device_user_id:String,gioi_tinh:{type:String,maxlength:1024},ngay_sinh:Date,dia_chi:{type:String,maxlength:1024},xa_phuong:{type:String,maxlength:1024},quan_huyen:{type:String,maxlength:1024},
|
|
2
2
|
tinh_thanh:{type:String,maxlength:1024},location:Schema.Types.Mixed,dien_thoai:{type:String,maxlength:1024},dia_chi2:{type:String,maxlength:1024},xa_phuong2:{type:String,maxlength:1024},quan_huyen2:{type:String,maxlength:1024},tinh_thanh2:{type:String,maxlength:1024},location2:Schema.Types.Mixed,dien_thoai2:{type:String,maxlength:1024},fax:{type:String,maxlength:1024},email:{type:String,maxlength:1024},website:{type:String,maxlength:1024},ma_so_thue:{type:String,maxlength:1024},phu_trach:{type:String,
|
|
3
|
-
maxlength:1024},ten_phu_trach:String,loai_kh:{type:String,default:"",trim:!0,maxlength:1024},nh_kh:{type:String,default:"",trim:!0,maxlength:1024},ten_nh_kh:String,nh_kh2:[String],nh_kh3:[String],nh_kh4:[String],nh_kh5:[String],ghi_chu:{type:String,default:"",trim:!0,maxlength:1024},ncc_yn:{type:Boolean,default:!0},kh_yn:{type:Boolean,default:!0},from_updated:{type:String,default:"M",maxlength:1024},of_user:{type:String,lowercase:!0,maxlength:1024,set:function($of_user$$){this._previous_of_user=
|
|
4
|
-
return $of_user$$}},group_user:String,default_password:{type:String},exfields:Schema.Types.Mixed,trang_thai:{type:String,default:"1"},status:{type:Boolean,default:!0},ngay_mua_gan_nhat:Date,ngay_tuong_tac_gan_nhat:{type:Date,default:Date.now},labels:[String],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],
|
|
5
|
-
update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});customerSchema.index({id_app:1});customerSchema.index({ma_kh:1});customerSchema.index({ten_kh:1});customerSchema.index({nh_kh:1});customerSchema.index({nh_kh2:1});customerSchema.index({nh_kh3:1});customerSchema.index({nh_kh4:1});customerSchema.index({nh_kh5:1});customerSchema.index({
|
|
6
|
-
customerSchema.index({
|
|
7
|
-
customerSchema.index({id_app:1,ma_kh:1},{unique:!0});customerSchema.index({status:1});customerSchema.index({user_created:1,visible_to:1,visible_to_users:1});customerSchema.index({trang_thai:1});
|
|
3
|
+
maxlength:1024},ten_phu_trach:String,loai_kh:{type:String,default:"",trim:!0,maxlength:1024},nh_kh:{type:String,default:"",trim:!0,maxlength:1024},ten_nh_kh:String,nh_kh2:[String],nh_kh3:[String],nh_kh4:[String],nh_kh5:[String],ma_nganh_hang:[String],ghi_chu:{type:String,default:"",trim:!0,maxlength:1024},ncc_yn:{type:Boolean,default:!0},kh_yn:{type:Boolean,default:!0},from_updated:{type:String,default:"M",maxlength:1024},of_user:{type:String,lowercase:!0,maxlength:1024,set:function($of_user$$){this._previous_of_user=
|
|
4
|
+
this.of_user;return $of_user$$}},group_user:String,default_password:{type:String},exfields:Schema.Types.Mixed,trang_thai:{type:String,default:"1"},activities:{},status:{type:Boolean,default:!0},ngay_mua_gan_nhat:Date,ngay_tuong_tac_gan_nhat:{type:Date,default:Date.now},labels:[String],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],
|
|
5
|
+
visible_to_usergroups:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});customerSchema.index({id_app:1});customerSchema.index({ma_kh:1});customerSchema.index({ten_kh:1});customerSchema.index({nh_kh:1});customerSchema.index({nh_kh2:1});customerSchema.index({nh_kh3:1});customerSchema.index({nh_kh4:1});customerSchema.index({nh_kh5:1});customerSchema.index({activities:1});customerSchema.index({ma_nganh_hang:1});
|
|
6
|
+
customerSchema.index({ngay_mua_gan_nhat:1});customerSchema.index({ngay_tuong_tac_gan_nhat:1});customerSchema.index({dien_thoai:1});customerSchema.index({email:1});customerSchema.index({tinh_thanh:1});customerSchema.index({date_updated:-1});customerSchema.index({date_created:-1});customerSchema.index({user_created:1});customerSchema.index({labels:1});customerSchema.index({of_user:1});
|
|
7
|
+
customerSchema.index({ten_kh:"text",ma_kh:"text",dia_chi:"text",xa_phuong:"text",quan_huyen:"text",tinh_thanh:"text",dien_thoai:"text",email:"text",ma_so_thue:"text",phu_trach:"text",ten_phu_trach:"text",nh_kh:"text",ten_nh_kh:"text"},{name:"customer_index"});customerSchema.index({id_app:1,ma_kh:1},{unique:!0});customerSchema.index({status:1});customerSchema.index({user_created:1,visible_to:1,visible_to_users:1});customerSchema.index({trang_thai:1});
|
|
8
8
|
customerSchema.pre("save",function($next$$){if(!this.of_user)return $next$$();const $self$$=this;if(this.isNew||this.of_user!=this._previous_of_user){let $condition$$={id_app:this.id_app,of_user:this.of_user,ma_kh:{$ne:this.ma_kh}};console.log("Check of_user, previous of_user:",this._previous_of_user,"new of_user:",this.of_user,"ma_kh:",this.ma_kh);mongoose.models.customer.find($condition$$,{ten_kh:1,ma_kh:1},($e$$,$khs$$)=>{0<$khs$$.length?$next$$(Error(`Ng\u01b0\u1eddi s\u1eed d\u1ee5ng '${$self$$.of_user}' \u0111\u00e3 \u0111\u01b0\u1ee3c g\u1eafn cho kh\u00e1ch h\u00e0ng '${$khs$$.map($kh$$=>
|
|
9
9
|
$kh$$.ma_kh+" - "+$kh$$.ten_kh).join(",")}'`)):$next$$()})}else $next$$()});const model=mongoose.models.customer||mongoose.model("customer",customerSchema);
|
|
10
10
|
model.on("index",async function($err$$){$err$$?(console.error("Customer index error",$err$$),(await model.aggregate([{$group:{_id:{id_app:"$id_app",ma_kh:"$ma_kh"},count:{$sum:1},ids:{$push:"$_id"}}},{$match:{count:{$gt:1}}}])).forEach($d$$=>{console.info("customer duplication",$d$$._id,$d$$.ids);$d$$.ids.forEach(($id$$,$index$$)=>{0<$index$$&&console.info("you should delete customer",$id$$)})})):console.info("Customer indexing complete")});
|
|
@@ -16,6 +16,6 @@ model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_
|
|
|
16
16
|
model.getList=async($id_app$$,$condition$$,$field$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.find($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($field$$?$rs$$.map($r$$=>$r$$[$field$$]):$rs$$)})})};
|
|
17
17
|
model.asyncCreateCustomer=async $data$$=>{if($data$$.of_user){var $_cust__cust$$=await model.findOne({id_app:$data$$.id_app,of_user:$data$$.of_user});if($_cust__cust$$)return $_cust__cust$$}$data$$.ma_kh||($data$$.ma_kh=await model.asyncCreateCustomerCode($data$$.id_app,$data$$.ten_kh));return($_cust__cust$$=await model.findOne({id_app:$data$$.id_app,ma_kh:$data$$.ma_kh}))?$_cust__cust$$:new Promise(($resolve$$,$reject$$)=>{$data$$.email&&!validator.isEmail($data$$.email)&&($data$$.email="");model.create($data$$,
|
|
18
18
|
($e$$,$rs$$)=>$e$$?$reject$$(Error($e$$.message)):$resolve$$($rs$$))})};model.buyVouchers=["SO1","HD2","HD1","PBL"];
|
|
19
|
-
model.updateActives=async $cust_dhgn$$=>{let $_id$$,$kh$$;if($cust_dhgn$$.ma_kh&&$cust_dhgn$$.id_app)($kh$$=await model.findOne({id_app:$cust_dhgn$$.id_app,ma_kh:$cust_dhgn$$.ma_kh},{_id:1,ngay_tuong_tac_gan_nhat:1,ngay_mua_gan_nhat:1}))&&($_id$$=$kh$$._id.toString());else{let $link$$=$cust_dhgn$$.id_kh||$cust_dhgn$$.id_link;$link$$&&global.mongoose.Types.ObjectId.isValid($link$$)&&($kh$$=await model.findOne({_id:$link$$},{_id:1,ngay_tuong_tac_gan_nhat:1,ngay_mua_gan_nhat:1}))&&
|
|
20
|
-
$cust_dhgn$$.date_created&&(!$kh$$.ngay_tuong_tac_gan_nhat||(new Date($kh$$.ngay_tuong_tac_gan_nhat)).getTime()<(new Date($cust_dhgn$$.date_created)).getTime())&&$_id$$!=($cust_dhgn$$._id||"").toString()&&await model.updateOne({_id:$_id$$},{ngay_tuong_tac_gan_nhat:$cust_dhgn$$.date_created});if($cust_dhgn$$=await global.getModel("socai").findOne({$or:[{ma_kh_no:$cust_dhgn$$.ma_kh},
|
|
21
|
-
{ngay_mua_gan_nhat:$cust_dhgn$$.ngay_ct}),{ngay_mua_gan_nhat:$cust_dhgn$$.ngay_ct};await model.updateOne({_id:$_id$$},{ngay_mua_gan_nhat:null});return{ngay_mua_gan_nhat:null}};module.exports=model;
|
|
19
|
+
model.updateActives=async $cust_dhgn$$=>{let $_id$$,$kh$$;if($cust_dhgn$$.ma_kh&&$cust_dhgn$$.id_app)($kh$$=await model.findOne({id_app:$cust_dhgn$$.id_app,ma_kh:$cust_dhgn$$.ma_kh},{_id:1,ngay_tuong_tac_gan_nhat:1,ngay_mua_gan_nhat:1,trang_thai:1}))&&($_id$$=$kh$$._id.toString());else{let $link$$=$cust_dhgn$$.id_kh||$cust_dhgn$$.id_link;$link$$&&global.mongoose.Types.ObjectId.isValid($link$$)&&($kh$$=await model.findOne({_id:$link$$},{_id:1,ngay_tuong_tac_gan_nhat:1,ngay_mua_gan_nhat:1,trang_thai:1}))&&
|
|
20
|
+
($_id$$=$kh$$._id.toString())}if(!$kh$$)return{};$cust_dhgn$$.date_created&&(!$kh$$.ngay_tuong_tac_gan_nhat||(new Date($kh$$.ngay_tuong_tac_gan_nhat)).getTime()<(new Date($cust_dhgn$$.date_created)).getTime())&&$_id$$!=($cust_dhgn$$._id||"").toString()&&("3"==$kh$$.trang_thai?await model.updateOne({_id:$_id$$},{ngay_tuong_tac_gan_nhat:$cust_dhgn$$.date_created,trang_thai:"5"}):await model.updateOne({_id:$_id$$},{ngay_tuong_tac_gan_nhat:$cust_dhgn$$.date_created}));if($cust_dhgn$$=await global.getModel("socai").findOne({$or:[{ma_kh_no:$cust_dhgn$$.ma_kh},
|
|
21
|
+
{ma_kh_co:$cust_dhgn$$.ma_kh}],id_app:$cust_dhgn$$.id_app,ma_ct:{$in:model.buyVouchers}},{ngay_ct:1}).sort({ngay_ct:-1}))return"9"==$kh$$.trang_thai?await model.updateOne({_id:$_id$$},{ngay_mua_gan_nhat:$cust_dhgn$$.ngay_ct}):await model.updateOne({_id:$_id$$},{ngay_mua_gan_nhat:$cust_dhgn$$.ngay_ct,trang_thai:"1"}),{ngay_mua_gan_nhat:$cust_dhgn$$.ngay_ct};await model.updateOne({_id:$_id$$},{ngay_mua_gan_nhat:null});return{ngay_mua_gan_nhat:null}};module.exports=model;
|
package/server/models/dh2.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use strict';const validAccount=require("../libs/validator-account"),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},ma_kho:{type:String,uppercase:!0,maxlength:32},tk_vt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},tk_dt:{type:String,uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,maxlength:32},
|
|
2
|
-
px_gia_dd:{type:Boolean,default:!1},ton_kho:{type:Number,default:0},so_luong:{type:Number,default:0},sl_xuat:{type:Number,default:0},
|
|
3
|
-
default:0},tien_ck_nt:{type:Number,default:0},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},
|
|
4
|
-
chuyen_ngay_ql:Boolean,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,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,
|
|
5
|
-
ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},exfields_detail:Schema.Types.Mixed,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};
|
|
2
|
+
px_gia_dd:{type:Boolean,default:!1},ton_kho:{type:Number,default:0},so_luong:{type:Number,default:0},sl_xuat:{type:Number,default:0},gia_mua:{type:Number,default:0},tien_xuat_tmp:{type:Number,default:0},gia_von:{type:Number,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},gia_ban_niem_yet_nt:Number,tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,
|
|
3
|
+
default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},tt_nt:{type:Number,default:0},tt:{type:Number,default:0},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},ten_vt_vat:{type:String},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,ty_le_hoa_hong_ctv:Number,
|
|
4
|
+
tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,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,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,
|
|
5
|
+
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}});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 dh2Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"DH2",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,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
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,trang_thai:{type:String,
|
|
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],update_right:[String],delete_right:[String],details:{type:[detailSchema]},promotion:Schema.Types.Mixed,id_contract:{type:String,maxlength:1024},
|
|
10
|
-
user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,
|
|
11
|
-
uppercase:!0,maxlength:32},ty_le_hoa_hong_ctv:Number,thu_nhap_ctv:Number,tk_cp_ctv:String,tk_cn_ctv:String,chuyen_ngay_ctv:Boolean,da_chuyen_hoa_hong_ctv:Boolean,user_ql:String,ma_kh_hoa_hong_ql:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,chuyen_ngay_ql:Boolean,da_chuyen_hoa_hong_ql:Boolean,ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,
|
|
12
|
-
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,maxlength:32}});dh2Schema.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};
|
|
13
|
-
dh2Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text"},{name:"dh2_index_text"});dh2Schema.index({ma_ct:1});dh2Schema.index({ma_kh:1});dh2Schema.index({ma_kho:1});dh2Schema.index({id_contract:1});dh2Schema.index({
|
|
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],update_right:[String],delete_right:[String],details:{type:[detailSchema]},promotion:Schema.Types.Mixed,id_contract:{type:String,maxlength:1024},id_hd2:{type:String,maxlength:1024},id_pxh:{type:String,maxlength:1024},ma_kho:{type:String,
|
|
10
|
+
uppercase:!0,maxlength:32},ma_nv:{type:String,uppercase:!0,maxlength:32},user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,
|
|
11
|
+
da_chuyen_hoa_hong_gt:Boolean,user_ctv:String,ma_ctv:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ctv:Number,thu_nhap_ctv:Number,tk_cp_ctv:String,tk_cn_ctv:String,chuyen_ngay_ctv:Boolean,da_chuyen_hoa_hong_ctv:Boolean,user_ql:String,ma_kh_hoa_hong_ql:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,chuyen_ngay_ql:Boolean,da_chuyen_hoa_hong_ql:Boolean,ty_le_ck_hd:{type:Number,default:0},tien_ck_hd:{type:Number,
|
|
12
|
+
default:0},result_export_einvoice:Schema.Types.Mixed,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_dt:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,maxlength:32}});dh2Schema.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};
|
|
13
|
+
dh2Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});dh2Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text"},{name:"dh2_index_text"});dh2Schema.index({ma_ct:1});dh2Schema.index({ma_kh:1});dh2Schema.index({ma_kho:1});dh2Schema.index({id_contract:1});dh2Schema.index({id_hd2:1});dh2Schema.index({id_pxh:1});dh2Schema.index({"details.ma_vt":1});dh2Schema.index({user_created:1,date_created:-1});dh2Schema.index({date_updated:-1});dh2Schema.index({status:1});
|
|
14
|
+
dh2Schema.index({user_created:1,visible_to:1,visible_to_users:1});dh2Schema.index({user_nv:1});dh2Schema.index({user_gt:1});dh2Schema.index({user_ctv:1});dh2Schema.index({user_ql:1});dh2Schema.index({trang_thai:1});module.exports=mongoose.models.dh2||mongoose.model("dh2",dh2Schema);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
'use strict';const dmgiabanSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},stt_uu_tien:Number,ma_vt:{type:String,uppercase:!0,default:"",maxlength:1024,trim:!0},ten_vt:String,ma_nvt:{type:String,default:"",maxlength:1024,trim:!0},ten_nvt:String,mieu_ta:{type:String,default:"",maxlength:1024},ma_kh:{type:String,default:"",maxlength:32,trim:!0},ten_kh:String,nh_kh:{type:String,
|
|
2
|
-
|
|
3
|
-
offline:{type:Boolean},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:""},dmvt:{type:Schema.Types.ObjectId,ref:"dmvt",
|
|
4
|
-
dmnvt:{type:Schema.Types.ObjectId,ref:"dmnvt",localField:["ma_nvt"],foreignField:["_id"]}},{toJSON:{virtuals:!0}});dmgiabanSchema.index({id_app:1,ma_vt:1,ma_kho:1,ma_kh:1,hieu_luc_tu:-1,hieu_luc_den:-1});dmgiabanSchema.index({ma_nvt:1});dmgiabanSchema.index({nh_kh:1});dmgiabanSchema.index({
|
|
5
|
-
dmgiabanSchema.index({
|
|
6
|
-
dmgiabanSchema.index({mieu_ta:"text",ma_vt:"text",ten_vt:"text",ma_kh:"text",ten_kh:"text",ma_nvt:"text",ten_nvt:"text",ma_kho:"text",ten_kho:"text"},{name:"dmgiaban_index_text"});const model=mongoose.models.dmgiaban||mongoose.model("dmgiaban",dmgiabanSchema);module.exports=model;
|
|
1
|
+
'use strict';const dmgiabanSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},stt_uu_tien:Number,ma_vt:{type:String,uppercase:!0,default:"",maxlength:1024,trim:!0},ten_vt:String,ma_nvt:{type:String,default:"",maxlength:1024,trim:!0},ten_nvt:String,mieu_ta:{type:String,default:"",maxlength:1024},ma_kh:{type:String,default:"",maxlength:32,trim:!0},ten_kh:String,nh_kh:{type:String,maxlength:1024,trim:!0},ten_nh_kh:String,nh_kh2:{type:String,maxlength:1024,trim:!0},ten_nh_kh2:String,nh_kh3:{type:String,
|
|
2
|
+
maxlength:1024,trim:!0},ten_nh_kh3:String,nh_kh4:{type:String,maxlength:1024,trim:!0},ten_nh_kh4:String,nh_kh5:{type:String,maxlength:1024,trim:!0},ten_nh_kh5:String,ma_kho:{type:String,default:"",maxlength:32,trim:!0},ten_kho:String,ma_ban:{type:String,default:"",maxlength:32,trim:!0},ten_ban:String,ma_tt1:{type:String,trim:!0},ma_tt2:{type:String,trim:!0},ma_tt3:{type:String,trim:!0},sl_tu:{type:Number,default:0},sl_den:{type:Number,default:0},gia_ban_le:{type:Number,default:0},gia_ban_buon:{type:Number,
|
|
3
|
+
default:0},hieu_luc_tu:{type:Date,required:!0},hieu_luc_den:{type:Date,required:!0},ap_dung_lan_mua_thu:{type:Number},ap_dung_lan_mua_tu_thu:{type:Number},ap_dung_lan_mua_den_thu:{type:Number},online:{type:Boolean},offline:{type:Boolean},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:""},dmvt:{type:Schema.Types.ObjectId,ref:"dmvt",
|
|
4
|
+
localField:["ma_vt"],foreignField:["ma_vt"]},dmkh:{type:Schema.Types.ObjectId,ref:"customer",localField:["ma_kh"],foreignField:["ma_kh"]},dmkho:{type:Schema.Types.ObjectId,ref:"dmkho",localField:["ma_kho"],foreignField:["ma_kho"]},dmnvt:{type:Schema.Types.ObjectId,ref:"dmnvt",localField:["ma_nvt"],foreignField:["_id"]}},{toJSON:{virtuals:!0}});dmgiabanSchema.index({id_app:1,ma_vt:1,ma_kho:1,ma_kh:1,hieu_luc_tu:-1,hieu_luc_den:-1});dmgiabanSchema.index({ma_nvt:1});dmgiabanSchema.index({nh_kh:1});dmgiabanSchema.index({nh_kh2:1});
|
|
5
|
+
dmgiabanSchema.index({nh_kh3:1});dmgiabanSchema.index({nh_kh4:1});dmgiabanSchema.index({nh_kh5:1});dmgiabanSchema.index({ma_kho:1});dmgiabanSchema.index({ma_ban:1});dmgiabanSchema.index({ma_kh:1});dmgiabanSchema.index({ma_tt1:1});dmgiabanSchema.index({ma_tt2:1});dmgiabanSchema.index({ma_tt3:1});dmgiabanSchema.index({ap_dung_lan_mua_thu:1});dmgiabanSchema.index({ap_dung_lan_mua_tu_thu:1});dmgiabanSchema.index({ap_dung_lan_mua_den_thu:1});dmgiabanSchema.index({sl_tu:1});dmgiabanSchema.index({sl_den:1});
|
|
6
|
+
dmgiabanSchema.index({date_updated:-1});dmgiabanSchema.index({date_created:-1});dmgiabanSchema.index({user_created:1});dmgiabanSchema.index({status:1});dmgiabanSchema.index({online:1});dmgiabanSchema.index({offline:1});dmgiabanSchema.index({mieu_ta:"text",ma_vt:"text",ten_vt:"text",ma_kh:"text",ten_kh:"text",ma_nvt:"text",ten_nvt:"text",ma_kho:"text",ten_kho:"text"},{name:"dmgiaban_index_text"});const model=mongoose.models.dmgiaban||mongoose.model("dmgiaban",dmgiabanSchema);module.exports=model;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
'use strict';const dmhoahonghdSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},kieu:{type:String,default:"0"},doi_tuong:{type:String,default:"0"},hinh_thuc_tt:{type:String,default:"0"},tk_no:String,tk_co:String,do_uu_tien:{type:Number,default:0},ma_hoahong:{type:String,uppercase:!0,required:!0,maxlength:32},ten_hoahong:{type:String,required:!0,maxlength:1024},mieu_ta:{type:String},chi_su_dung_cho_ct:{type:String,uppercase:!0},khong_su_dung_cho_ct:{type:String,
|
|
2
|
-
ma_nv:{type:String,default:"",maxlength:32},ten_nv:String,ma_bp:{type:String,default:"",maxlength:1024},ten_bp:String,ma_kh:{type:String,default:"",maxlength:32},ten_kh:String,nh_kh:{type:String,default:"",maxlength:1024},ten_nh_kh:String,
|
|
3
|
-
|
|
4
|
-
ref:"customer",localField:["ma_kh"],foreignField:["ma_kh"]},ma_kho_id:{type:Schema.Types.ObjectId,ref:"dmkho",localField:["ma_kho"],foreignField:["ma_kho"]}});
|
|
5
|
-
dmhoahonghdSchema.index({
|
|
1
|
+
'use strict';const dmhoahonghdSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},loai:{type:String,default:"0"},kieu:{type:String,default:"0"},doi_tuong:{type:String,default:"0"},hinh_thuc_tt:{type:String,default:"0"},tk_no:String,tk_co:String,do_uu_tien:{type:Number,default:0},ma_hoahong:{type:String,uppercase:!0,required:!0,maxlength:32},ten_hoahong:{type:String,required:!0,maxlength:1024},mieu_ta:{type:String},chi_su_dung_cho_ct:{type:String,uppercase:!0},khong_su_dung_cho_ct:{type:String,
|
|
2
|
+
uppercase:!0},user_group:String,ma_nv:{type:String,default:"",maxlength:32},ten_nv:String,ma_bp:{type:String,default:"",maxlength:1024},ten_bp:String,ma_kh:{type:String,default:"",maxlength:32},ten_kh:String,nh_kh:{type:String,default:"",maxlength:1024},ten_nh_kh:String,nh_kh2:{type:String,default:"",maxlength:1024},ten_nh_kh2:String,nh_kh3:{type:String,default:"",maxlength:1024},ten_nh_kh3:String,nh_kh4:{type:String,default:"",maxlength:1024},ten_nh_kh4:String,nh_kh5:{type:String,default:"",maxlength:1024},
|
|
3
|
+
ten_nh_kh5:String,ma_kho:{type:String,default:"",maxlength:32},ten_kho:String,gt_tu:{type:Number,default:0},gt_den:{type:Number,default:0},vts:[],sl_toi_thieu:{type:Number,default:0},tien_hh:{type:Number,default:0},ty_le_hh:{type:Number,default:0},so_tien_max:{type:Number,default:0},tien_hh2:{type:Number,default:0},ty_le_hh2:{type:Number,default:0},hieu_luc_tu:{type:Date,required:!0},hieu_luc_den:{type:Date,required:!0},details_km:[],picture:{type:String},exfields:Schema.Types.Mixed,newsfeed:{type:Boolean,
|
|
4
|
+
default:!0},online:{type:Boolean},offline:{type: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,default:""},ma_kh_id:{type:Schema.Types.ObjectId,ref:"customer",localField:["ma_kh"],foreignField:["ma_kh"]},ma_kho_id:{type:Schema.Types.ObjectId,ref:"dmkho",localField:["ma_kho"],foreignField:["ma_kho"]}});
|
|
5
|
+
dmhoahonghdSchema.index({id_app:1,ma_hoahong:1,ma_kho:1,ma_kh:1,hieu_luc_tu:-1,hieu_luc_den:-1});dmhoahonghdSchema.index({gt_tu:1});dmhoahonghdSchema.index({gt_den:1});dmhoahonghdSchema.index({ten_kho:1});dmhoahonghdSchema.index({nh_kh:1});dmhoahonghdSchema.index({ten_nh_kh:1});dmhoahonghdSchema.index({nh_kh2:1});dmhoahonghdSchema.index({ten_nh_kh2:1});dmhoahonghdSchema.index({nh_kh3:1});dmhoahonghdSchema.index({ten_nh_kh3:1});dmhoahonghdSchema.index({nh_kh4:1});dmhoahonghdSchema.index({ten_nh_kh4:1});
|
|
6
|
+
dmhoahonghdSchema.index({nh_kh5:1});dmhoahonghdSchema.index({ten_nh_kh5:1});dmhoahonghdSchema.index({ma_nv:1});dmhoahonghdSchema.index({ma_bp:1});dmhoahonghdSchema.index({user_group:1});dmhoahonghdSchema.index({kieu:1});dmhoahonghdSchema.index({loai:1});dmhoahonghdSchema.index({do_uu_tien:1});dmhoahonghdSchema.index({date_updated:-1});dmhoahonghdSchema.index({date_created:-1});dmhoahonghdSchema.index({user_created:1});dmhoahonghdSchema.index({online:1});dmhoahonghdSchema.index({offline:1});
|
|
6
7
|
dmhoahonghdSchema.index({mieu_ta:"text",ma_hoahong:"text",ten_hoahong:"text",ma_kh:"text",ten_kh:"text",nh_kh:"text",ten_nh_kh:"text",ma_kho:"text",ten_kho:"text",ma_nv:"text",ten_nv:"text",ma_bp:"text",ten_bp:"text"},{name:"dmhoahonghd_index_text"});dmhoahonghdSchema.set("toObject",{virtuals:!0});dmhoahonghdSchema.set("toJSON",{virtuals:!0});dmhoahonghdSchema.index({status:1});const model=mongoose.models.dmhoahonghd||mongoose.model("dmhoahonghd",dmhoahonghdSchema);module.exports=model;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';const axios=require("axios"),async=require("async"),fbconversationSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},page_id:{type:String,required:!0,maxlength:1024},id:String,link:String,updated_time:Date,with: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:""}});
|
|
2
|
+
fbconversationSchema.index({id_app:1,page_id:1,id:1},{unique:!0});fbconversationSchema.index({status:1});fbconversationSchema.index({"with.id":1});fbconversationSchema.index({updated_time:-1});fbconversationSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.fbconversation||mongoose.model("fbconversation",fbconversationSchema);
|
|
3
|
+
model.getConvByUserId=async($id_app$$,$page_id$$,$page_access_token$$,$user_id$$)=>{let $conv$$=await global.getModel("fbconversation").findOne({id_app:$id_app$$,"with.id":$user_id$$}).lean();if($conv$$)return $conv$$;let $config$$={method:"get",maxBodyLength:Infinity,url:`https://graph.facebook.com/${$page_id$$}/conversations/?platform=messenger&access_token=${$page_access_token$$}&user_id=${$user_id$$}`,headers:{}};return new Promise(($rs$$,$rj$$)=>{axios.request($config$$).then(async $convs_response$$=>
|
|
4
|
+
{$convs_response$$=($convs_response$$.data||[]).data||[];if(0<$convs_response$$.length){$conv$$=$convs_response$$[0];$conv$$.id_app=$id_app$$;$conv$$.page_id=$page_id$$;try{await model.create($conv$$),console.log("created conversation",$conv$$)}catch($e$$){console.error("Kh\u00f4ng th\u1ec3 l\u01b0u facebook conversation",$e$$,$conv$$)}return $rs$$($conv$$)}$rj$$("Kh\u00f4ng tim th\u1ea5y cu\u1ed9c h\u1ed9i tho\u1ea1i v\u1edbi user n\u00e0y")}).catch($e$$=>{$rj$$($e$$)})})};
|
|
5
|
+
model.getMessage=async($id_app$$,$page_id$$,$conv_id$$,$page_access_token$$,$id$$)=>{let $ex$$=await global.getModel("fbmessage").findOne({id_app:$id_app$$,page_id:$page_id$$,conv_id:$conv_id$$,id:$id$$}).lean();if($ex$$)return $ex$$;let $config$$={method:"get",maxBodyLength:Infinity,url:`https://graph.facebook.com/${$id$$}/?&access_token=${$page_access_token$$}&fields=id,created_time,from,to,message,attachments`,headers:{}};return new Promise(($rs$$,$rj$$)=>{axios.request($config$$).then(async $c_response$$=>
|
|
6
|
+
{$c_response$$=$c_response$$.data;$c_response$$.page_id=$page_id$$;$c_response$$.id_app=$id_app$$;$c_response$$.conv_id=$conv_id$$;try{await global.getModel("fbmessage").create($c_response$$),$c_response$$.from.id!==$page_id$$&&await model.updateOne({id_app:$id_app$$,page_id:$page_id$$,id:$conv_id$$,with:{$exists:!1}},{with:$c_response$$.from})}catch($e$$){console.error("can't sync fb message",$e$$)}$rs$$(null,$c_response$$)}).catch($e$$=>{$rj$$($e$$)})})};
|
|
7
|
+
model.sync=async($id_app$$,$page_id$$,$conv_id$$)=>{const $pageInfo$$=await global.getModel("fbpage").findOne({id_app:$id_app$$,page_id:$page_id$$});if(!$pageInfo$$)throw"Kh\u00f4ng t\u00ecm th\u1ea5y th\u00f4ng tin trang n\u00e0y";console.log("sync conversation",{page_id:$page_id$$,conv_id:$conv_id$$});return new Promise(($resole$$,$reject$$)=>{let $rs$$=[],$next_page$$;async.forever($next$$=>{setImmediate(()=>{axios.request({method:"get",maxBodyLength:Infinity,url:$next_page$$?$next_page$$:`https://graph.facebook.com/${$conv_id$$}/?&access_token=${$pageInfo$$.page_access_token}&fields=messages`,
|
|
8
|
+
headers:{}}).then(async $response$$=>{const $ms$$=(($response$$.data||{}).messages||{}).data||[];$next_page$$=((($response$$.data||{}).messages||{}).paging||{}).next;async.map($ms$$,($m$$,$cb$$)=>{setImmediate(()=>{model.getMessage($id_app$$,$page_id$$,$conv_id$$,$pageInfo$$.page_access_token,$m$$.id).then(async $c$$=>{$cb$$(null,$c$$)}).catch($e$$=>{$cb$$($e$$)})})},($e$$,$_ms$$)=>{if($e$$)return $next$$($e$$);$rs$$=[...$rs$$,...$_ms$$];$next$$($next_page$$?void 0:"end")})}).catch($error$$=>{$next$$($error$$)})})},
|
|
9
|
+
$error$$=>{if("end"!==$error$$)return $reject$$($error$$);$resole$$($rs$$)})})};module.exports=model;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';const fbmessageSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},page_id:{type:String,required:!0,maxlength:1024},conv_id:{type:String,required:!0,maxlength:1024},id:String,created_time:Date,from:{},to:{},message:String,attachments: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:""}});
|
|
2
|
+
fbmessageSchema.index({id_app:1,page_id:1,conv_id:1,id:1},{unique:!0});fbmessageSchema.index({status:1});fbmessageSchema.index({created_time:-1});fbmessageSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.fbmessage||mongoose.model("fbmessage",fbmessageSchema);module.exports=model;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';const fbpageSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},page_id:{type:String,required:!0,maxlength:1024},page_title:{type:String},page_access_token:{type:String},page_logo:String,verify_token: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:""}});fbpageSchema.index({id_app:1,page_id:1});fbpageSchema.index({status:1});
|
|
2
|
+
fbpageSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.fbpage||mongoose.model("fbpage",fbpageSchema);module.exports=model;
|
package/server/models/group.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
'use strict';const groupSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},group_kind:{type:Number,default:1},group_type:{type:String,uppercase:!0,required:!0,maxlength:1024},group_name:{type:String,required:!0,maxlength:1024},group_name_en:{type:String,maxlength:1024},group_mother:String,ma_kho:{type:String,maxlength:32},ma_bp:{type:String,maxlength:32},ma_dt:{type:String,maxlength:32},color:{type:String,maxlength:32},muc_tieu_bieu:{type:Number,default:0},ma_doi_tuong_danh_gia_default:{type:String},
|
|
1
|
+
'use strict';const _=require("lodash"),groupSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},group_kind:{type:Number,default:1},group_type:{type:String,uppercase:!0,required:!0,maxlength:1024},group_name:{type:String,required:!0,maxlength:1024},group_name_en:{type:String,maxlength:1024},group_mother:String,ma_kho:{type:String,maxlength:32},ma_bp:{type:String,maxlength:32},ma_dt:{type:String,maxlength:32},color:{type:String,maxlength:32},muc_tieu_bieu:{type:Number,default:0},ma_doi_tuong_danh_gia_default:{type:String},
|
|
2
2
|
id_link:String,collection_link:String,phu_trach:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},attends:[],dac_thu:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],visible_to_usergroups:[String],update_right:[String],delete_right:[String],
|
|
3
3
|
dataview_to:{type:Number,default:0},dataview_to_users:[String]});groupSchema.index({id_app:1,group_type:1,ma_dt:1,ma_bp:1});groupSchema.index({group_type:1});groupSchema.index({group_kind:1});groupSchema.index({group_mother:1});groupSchema.index({group_name:1});groupSchema.index({ma_kho:1});groupSchema.index({ma_dt:1});groupSchema.index({ma_bp:1});groupSchema.index({sysorder:1});groupSchema.index({bac:1});groupSchema.index({loai_nh:1});groupSchema.index({phu_trach:1});groupSchema.index({id_link:1});
|
|
4
4
|
groupSchema.index({status:1});groupSchema.index({attends:1});groupSchema.index({group_name:"text",group_type:"text"},{name:"group_index_text"});groupSchema.index({status:1});groupSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.group||mongoose.model("group",groupSchema);model.referenceKeys={_id:[{model:"task",key:"nh_cv",error:"Nh\u00f3m n\u00e0y \u0111\u00e3 c\u00f3 ph\u00e1t sinh chi ti\u1ebft. B\u1ea1n c\u1ea7n xo\u00e1 t\u1ea5t c\u1ea3 chi ti\u1ebft tr\u01b0\u1edbc khi xo\u00e1 nh\u00f3m n\u00e0y"}]};
|
|
5
|
-
model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"Can't find information"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};
|
|
5
|
+
model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"Can't find information"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)})})};
|
|
6
|
+
model.getAllChildrenGroup=async($id_app$$,$nh_kh_rs$$,$chil_condition$$={})=>{let $nh_khs$$;$nh_khs$$=_.isArray($nh_kh_rs$$)?[...$nh_kh_rs$$]:[$nh_kh_rs$$];$nh_kh_rs$$=[...$nh_khs$$];$chil_condition$$=(await model.find({id_app:$id_app$$,group_mother:{$in:$nh_khs$$},...$chil_condition$$},{_id:1,group_mother:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.group_mother).map($d$$=>$d$$._id);0<$chil_condition$$.length&&($chil_condition$$=await Promise.all($chil_condition$$.map($nh$$=>model.getAllChildrenGroup($id_app$$,
|
|
7
|
+
$nh$$))),$chil_condition$$=$chil_condition$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$nh_kh_rs$$=[...$chil_condition$$,...$nh_kh_rs$$]);return $nh_kh_rs$$};module.exports=model;
|
package/server/models/hd2.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
'use strict';const validAccount=require("../libs/validator-account"),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},ma_kho:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp kho
|
|
2
|
-
|
|
3
|
-
default:0},
|
|
4
|
-
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,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,
|
|
5
|
-
uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,
|
|
6
|
-
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};
|
|
1
|
+
'use strict';const validAccount=require("../libs/validator-account"),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},ma_kho:{type:String,uppercase:!0,maxlength:32},tk_vt:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00e0i kho\u1ea3n v\u1eadt t\u01b0",uppercase:!0,maxlength:32},tk_gv:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00e0i kho\u1ea3n gi\u00e1 v\u1ed1n",
|
|
2
|
+
uppercase:!0,maxlength:32},tk_dt:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00e0i kho\u1ea3n doanh thu",uppercase:!0,maxlength:32},tk_ck:{type:String,uppercase:!0,maxlength:32},px_gia_dd:{type:Boolean,default:!1},ton_kho:{type:Number,default:0},so_luong:{type:Number,default:0},sl_xuat:{type:Number,default:0},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,default:0},tien_xuat:{type:Number,default:0},tien_xuat_nt:{type:Number,default:0},gia_mua:{type:Number,default:0},tien_xuat_tmp:{type:Number,
|
|
3
|
+
default:0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},gia_ban_niem_yet_nt:Number,tien:{type:Number,default:0},tien_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},tt_nt:{type:Number,default:0},tt:{type:Number,default:0},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,default:0},promotion:Schema.Types.Mixed,dien_giai:{type:String,maxlength:1024},
|
|
4
|
+
ten_vt_vat: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:"",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,
|
|
5
|
+
default:"",uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,combo:Schema.Types.Mixed,
|
|
6
|
+
exfields_detail:Schema.Types.Mixed,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};
|
|
7
7
|
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},
|
|
8
8
|
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,
|
|
9
9
|
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,
|
|
@@ -11,5 +11,5 @@ trang_thai:{type:String,maxlength:32},status:{type:Boolean,default:!0},date_crea
|
|
|
11
11
|
maxlength:32},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_nv:{type:String,uppercase:!0,maxlength:32},user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},
|
|
12
12
|
ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,da_chuyen_hoa_hong_gt:Boolean,user_ctv:String,ma_ctv:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ctv:Number,thu_nhap_ctv:Number,tk_cp_ctv:String,tk_cn_ctv:String,chuyen_ngay_ctv:Boolean,da_chuyen_hoa_hong_ctv:Boolean,user_ql:String,ma_kh_hoa_hong_ql:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,
|
|
13
13
|
chuyen_ngay_ql:Boolean,da_chuyen_hoa_hong_ql:Boolean,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_dt:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,uppercase:!0,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};
|
|
14
|
-
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});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({
|
|
15
|
-
hd2Schema.index({trang_thai:1});module.exports=mongoose.models.hd2||mongoose.model("hd2",hd2Schema);
|
|
14
|
+
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});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({user_nv:1});hd2Schema.index({user_gt:1});hd2Schema.index({user_ctv:1});
|
|
15
|
+
hd2Schema.index({user_ql: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);
|
package/server/models/hd3.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
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},sl_nhap:{type:Number,default:0},pn_gia_tb:{type:Boolean,default:!1},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,default:0},tien_nhap:{type:Number,default:0},tien_nhap_nt:{type:Number,
|
|
2
|
-
default:0},tk_vt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_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},tk_tl:{type:String,uppercase:!0,maxlength:32},id_reason:{type:String,maxlength:32},
|
|
3
|
-
default:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
tk_thue_co:{type:String,required:!0,uppercase:!0,maxlength:32},tk_du_thue:{type:String,required:!0,uppercase:!0,maxlength:32},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},t_hd:{type:Number,default:0},t_hd_nt:{type:Number,default:0},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},ten_kh:{type:String,default:"",maxlength:1024},dia_chi:{type:String,default:"",maxlength:1024},ma_so_thue:{type:String,default:"",maxlength:1024},ten_vt:{type:String,default:"",maxlength:1024},
|
|
7
|
-
line:{type:Number,default:0}});vatraSchema.validate={tk_thue_co:validAccount.existsTk,tk_du_thue:validAccount.existsTk,ma_kh:validator.existsKh,ma_thue:validator.existsVat};
|
|
2
|
+
default:0},tk_vt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_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},tk_tl:{type:String,uppercase:!0,maxlength:32},id_reason:{type:String,maxlength:32},ma_thue:String,thue_suat:{type:Number,default:0},tien_thue:{type:Number,default:0},tien_thue_nt:{type:Number,
|
|
3
|
+
default:0},ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ma_kh_hoa_hong:String,user_nv:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,ma_kh_hoa_hong_gt:String,user_gt:String,ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,ma_ctv:String,user_ctv:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,
|
|
4
|
+
chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,ma_kh_hoa_hong_ql:String,user_ql:String,combo:Schema.Types.Mixed,ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},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,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",
|
|
5
|
+
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},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={tk_vt:validAccount.existsTk,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
8
6
|
const hd3Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"HD3",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},
|
|
9
7
|
ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},ten_kh:String,ong_ba:{type:String,default:"",maxlength:1024},ma_kho:{type:String,required:!0,uppercase:!0,maxlength:32},tk_co:{type:String,uppercase:!0,default:"",maxlength:32},tk_dt:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},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,
|
|
10
8
|
uppercase:!0,maxlength:32},so_seri:{type:String,uppercase:!0,maxlength:32},ngay_hd:{type:Date,uppercase:!0},ma_thue:{type:String,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},exfields:Schema.Types.Mixed,trang_thai:{type:String,
|
|
11
|
-
maxlength:32},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],details:{type:[detailSchema]},
|
|
12
|
-
|
|
13
|
-
|
|
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],update_right:[String],delete_right:[String],details:{type:[detailSchema]},ma_nv:{type:String,uppercase:!0,maxlength:32},user_nv:String,ma_kh_hoa_hong:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong:Number,tien_hoa_hong:Number,
|
|
10
|
+
tk_no_hoa_hong:String,tk_co_hoa_hong:String,tu_tinh_hoa_hong:Boolean,chuyen_ngay:Boolean,da_chuyen_hoa_hong:Boolean,user_gt:String,introduce_code:String,ma_kh_hoa_hong_gt:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,chuyen_ngay_gt:Boolean,da_chuyen_hoa_hong_gt:Boolean,user_ctv:String,ma_ctv:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ctv:Number,thu_nhap_ctv:Number,tk_cp_ctv:String,tk_cn_ctv:String,
|
|
11
|
+
chuyen_ngay_ctv:Boolean,da_chuyen_hoa_hong_ctv:Boolean,user_ql:String,ma_kh_hoa_hong_ql:{type:String,uppercase:!0,maxlength:32},ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,chuyen_ngay_ql:Boolean,da_chuyen_hoa_hong_ql:Boolean});hd3Schema.validate={ma_dvcs:validator.existsDvcs,ma_nt:validator.existsNt,ngay_ct:validator.unlockBook,ma_kh:validator.existsKh,tk_co:validAccount.existsTk};hd3Schema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:-1});
|
|
12
|
+
hd3Schema.index({dien_giai:"text",ma_kh:"text",ten_kh:"text",so_ct:"text",ong_ba:"text"},{name:"hd3_index_text"});hd3Schema.index({ma_ct:1});hd3Schema.index({ma_kh:1});hd3Schema.index({ma_kho:1});hd3Schema.index({user_created:1,date_created:-1});hd3Schema.index({date_updated:-1});hd3Schema.index({status:1});hd3Schema.index({user_created:1,visible_to:1,visible_to_users:1});hd3Schema.index({trang_thai:1});hd3Schema.index({user_nv:1});hd3Schema.index({user_gt:1});hd3Schema.index({user_ctv:1});hd3Schema.index({user_ql:1});
|
|
13
|
+
hd3Schema.index({"details.user_nv":1});hd3Schema.index({"details.user_gt":1});hd3Schema.index({"details.user_ctv":1});hd3Schema.index({"details.user_ql":1});module.exports=mongoose.models.hd3||mongoose.model("hd3",hd3Schema);
|
package/server/models/hd7.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
tk_vt:{type:String,uppercase:!0,maxlength:32},tk_gv:{type:String,uppercase:!0,maxlength:32},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},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},tk_tl:{type:String,uppercase:!0,maxlength:32},id_reason:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,
|
|
3
3
|
default:"",maxlength:32},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,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},
|
|
4
4
|
ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={tk_vt:validAccount.existsTk,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
5
|
-
|
|
5
|
+
const detailDoiSchema=new Schema({id_hd:{type:String},ma_vt:{type:String,required:!0,uppercase:!0},ma_dvt:{type:String,required:!0},sl_xuat:{type:Number,default:0},px_gia_dd:{type:Boolean,default:!1},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,default:0},tien_xuat:{type:Number,default:0},tien_xuat_nt:{type:Number,default:0},tk_vt:{type:String,uppercase:!0},tk_gv:{type:String,uppercase:!0},gia_ban:{type:Number,default:0},gia_ban_nt:{type:Number,default:0},tien_hang:{type:Number,default:0},
|
|
6
6
|
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:{type:Number,default:0},tien_nt:{type:Number,default:0},tk_dt:{type:String,uppercase:!0},id_reason:{type:String},ma_kh:{type:String,uppercase:!0,default:""},ma_bp:{type:String,uppercase:!0,default:""},ma_phi:{type:String,uppercase:!0,default:""},ma_hd:{type:String,uppercase:!0,default:""},ma_dt:{type:String,uppercase:!0,default:""},ma_nv:{type:String,uppercase:!0,
|
|
7
7
|
default:""},ma_lo:{type:String,default:"",uppercase:!0},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0},ma_tt2:{type:String,default:"",uppercase:!0},ma_tt3:{type:String,default:"",uppercase:!0},dien_giai:{type:String},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailDoiSchema.validate={tk_vt:validAccount.existsTk,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
8
8
|
const vatvaoSchema=new Schema({ma_hoa_don:{type:String,default:"",uppercase:!0,trim:!0},ky_hieu_hoa_don:{type:String,default:"",uppercase:!0,trim:!0},ma_tc:{type:String,default:"",required:!0,uppercase:!0,trim:!0},so_hd:{type:String,default:"",required:!0,uppercase:!0,trim:!0},so_seri:{type:String,default:"",required:!0,uppercase:!0,trim:!0},ngay_hd:{type:Date,required:!0},t_tien:{type:Number,default:0},t_tien_nt:{type:Number,default:0},ma_thue:{type:String,required:!0,uppercase:!0},thue_suat:{type:Number,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';const notificationSchema=new Schema({key:String,email_sender:{type:String,required:!0},email_receiver:{type:String,required:!0},email_owner:{type:String,required:!0},title:{type:String,required:!0},content:{type:String},exfields:Schema.Types.Mixed,read:{type:Boolean,default:!1},status:{type:Boolean,default:!1},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});notificationSchema.index({email_owner:1});
|
|
2
2
|
notificationSchema.index({email_receiver:1});notificationSchema.index({email_sender:1});notificationSchema.index({"exfields.id_app":1});notificationSchema.index({email_receiver:1,email_owner:1,read:-1});notificationSchema.index({date_created:-1});notificationSchema.index({title:"text",content:"text"});notificationSchema.index({key:1},{unique:!0});notificationSchema.index({title:1});notificationSchema.index({content:1});notificationSchema.index({status:1});
|
|
3
3
|
notificationSchema.index({user_created:1,visible_to:1,visible_to_users:1});const Notification=mongoose.models.notification||mongoose.model("notification",notificationSchema);
|
|
4
|
-
Notification.createNotification=async function($email_sender$$,$email_receiver$$,$title$$,$content$$,$fn$$,$exfields$$,$emitEvent
|
|
5
|
-
$
|
|
4
|
+
Notification.createNotification=async function($email_sender$$,$email_receiver$$,$title$$,$content$$,$fn$$,$exfields$$,$emitEvent$$){let $key$$=($exfields$$||{}).key||`${$email_receiver$$}-${(new Date).getTime()}`;var $ex_notifi_re$$;($exfields$$||{}).key&&($ex_notifi_re$$=await Notification.findOne({key:$key$$}));$ex_notifi_re$$||($ex_notifi_re$$=new Notification,$ex_notifi_re$$.email_owner=$email_receiver$$,$ex_notifi_re$$.email_sender=$email_sender$$,$ex_notifi_re$$.email_receiver=$email_receiver$$,
|
|
5
|
+
$ex_notifi_re$$.title=$title$$,$ex_notifi_re$$.content=$content$$,$ex_notifi_re$$.exfields=$exfields$$,$ex_notifi_re$$.exfields&&($ex_notifi_re$$.exfields.app_info=void 0),$ex_notifi_re$$.key=$key$$,$ex_notifi_re$$.user_created=$email_sender$$,$ex_notifi_re$$.user_updated=$email_sender$$,$ex_notifi_re$$.save(function($err$$,$m$$){$err$$?(console.error($err$$),$fn$$&&$fn$$($err$$)):(global.alertNotification($email_receiver$$),global.sendNotification($email_receiver$$,$m$$._id,$m$$.toObject(),!1!==
|
|
6
|
+
$emitEvent$$),$fn$$&&$fn$$(null,$m$$,$m$$))}))};module.exports=Notification;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
'use strict';const usergroup=require("./usergroup"),validator=require("validator"),participantScheam=new global.Schema({id_app:{type:String,required:!0,maxlength:1024},email:{type:String,required:!0,lowercase:!0,maxlength:128,trim:!0},phone:{type:String,lowercase:!0,maxlength:128,trim:!0},name:{type:String,maxlength:1024},admin:{type:Boolean,default:!1},active:{type:Boolean,default:!0},cancel:{type:Boolean,default:!1},auto_create_user:{type:Boolean,default:!0},group_id:{type:String,maxlength:1024
|
|
2
|
-
phu_trach:{type:String},password:{type:String,maxlength:1024},hotline:{type:String,maxlength:1024},ext:{type:String,maxlength:1024},signature_image:String,session_created:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},user_created:{type:String,default:""},date_updated:{type:Date,default:Date.now},user_updated:{type:String,default:""}});participantScheam.index({id_app:1,email:1},{unique:!0});participantScheam.index({email:1});
|
|
3
|
-
participantScheam.index({name:1});participantScheam.index({admin:1});participantScheam.index({session_created:1});participantScheam.index({phu_trach:1});participantScheam.index({group_id:1});participantScheam.index({hotline:1});participantScheam.index({ext:1});participantScheam.index({status:1});participantScheam.index({user_created:1,visible_to:1,visible_to_users:1});participantScheam.index({email:"text",name:"text",ext:"text"});
|
|
1
|
+
'use strict';const usergroup=require("./usergroup"),validator=require("validator"),participantScheam=new global.Schema({id_app:{type:String,required:!0,maxlength:1024},email:{type:String,required:!0,lowercase:!0,maxlength:128,trim:!0},phone:{type:String,lowercase:!0,maxlength:128,trim:!0},name:{type:String,maxlength:1024},admin:{type:Boolean,default:!1},active:{type:Boolean,default:!0},cancel:{type:Boolean,default:!1},auto_create_user:{type:Boolean,default:!0},group_id:{type:String,maxlength:1024,
|
|
2
|
+
ref:"usergroup",localField:["group_id"],foreignField:["_id"]},phu_trach:{type:String},password:{type:String,maxlength:1024},hotline:{type:String,maxlength:1024},ext:{type:String,maxlength:1024},signature_image:String,session_created:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},user_created:{type:String,default:""},date_updated:{type:Date,default:Date.now},user_updated:{type:String,default:""}});participantScheam.index({id_app:1,email:1},{unique:!0});participantScheam.index({email:1});
|
|
3
|
+
participantScheam.index({id_app:1,phone:1});participantScheam.index({name:1});participantScheam.index({admin:1});participantScheam.index({session_created:1});participantScheam.index({phu_trach:1});participantScheam.index({group_id:1});participantScheam.index({hotline:1});participantScheam.index({ext:1});participantScheam.index({status:1});participantScheam.index({user_created:1,visible_to:1,visible_to_users:1});participantScheam.index({email:"text",name:"text",ext:"text"});
|
|
4
4
|
participantScheam.pre("save",async function($next$$){if("public"===this.email&&this.admin)return $next$$("T\u00e0i kho\u1ea3n public kh\u00f4ng th\u1ec3 l\u00e0 qu\u1ea3n tr\u1ecb vi\u00ean");if(this.group_id&&global.mongoose.Types.ObjectId.isValid(this.group_id)){var $app_group$$=await usergroup.findOne({_id:this.group_id}).lean()||{};this.phu_trach=$app_group$$.phu_trach||""}if(!this.admin&&!($app_group$$||{}).is_employee_group){$app_group$$=await global.getModel("app").findOne({_id:this.id_app}).lean();
|
|
5
5
|
if(!$app_group$$)return $next$$("id_app is not valid");if($app_group$$.account_types_accept&&0<$app_group$$.account_types_accept.length){if(0>$app_group$$.account_types_accept.indexOf("email")&&validator.isEmail(this.email))return $next$$(`T\u00e0i kho\u1ea3n kh\u00f4ng \u0111\u01b0\u1ee3c l\u00e0 \u0111\u1ecba ch\u1ec9 email: ${this.email}`);if(0>$app_group$$.account_types_accept.indexOf("phone")&&validator.isMobilePhone(this.email,["vi-VN"]))return $next$$(`T\u00e0i kho\u1ea3n kh\u00f4ng \u0111\u01b0\u1ee3c l\u00e0 m\u1ed9t s\u1ed1 \u0111i\u1ec7n tho\u1ea1i: ${this.email}`)}}$next$$()});
|
|
6
6
|
const model=global.mongoose.models.participant||global.mongoose.model("participant",participantScheam);model.ofApp=async($id_app$$,$email$$)=>{let $condition$$={id_app:$id_app$$};$email$$&&($condition$$.email=$email$$);return new Promise(($resolve$$,$reject$$)=>{model.find($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($rs$$)})})};
|
|
7
7
|
model.appsOfUser=async $email$$=>{let $condition$$={email:$email$$};return new Promise(($resolve$$,$reject$$)=>{model.find($condition$$).lean().exec(($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($rs$$)})})};
|
|
8
|
-
model.createParticipant=($data$$,$callback$$)=>{$data$$.name=$data$$.name||$data$$.email;model.findOne({id_app:$data$$.id_app,email:$data$$.email},($e$jscomp$0$$,$rs$jscomp$0$$)=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($rs$jscomp$0$$)return $callback$$(null,$rs$jscomp$0$$)
|
|
9
|
-
model.asyncCreateParticipant=async $data$$=>new Promise(($resolve$$,$reject$$)=>{model.createParticipant($data$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})});
|
|
8
|
+
model.createParticipant=async($data$$,$callback$$)=>{$data$$.name=$data$$.name||$data$$.email;model.findOne({id_app:$data$$.id_app,email:$data$$.email},async($e$jscomp$0$$,$rs$jscomp$0$$)=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);if($rs$jscomp$0$$)return $callback$$(null,$rs$jscomp$0$$);!$data$$.group_id&&($e$jscomp$0$$=await global.getModel("usergroup").findOne({id_app:$data$$.id_app,is_customer_group:!0,default_group:!0}).lean())&&($data$$.group_id=$e$jscomp$0$$._id.toString());model.create($data$$,
|
|
9
|
+
($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})};model.asyncCreateParticipant=async $data$$=>new Promise(($resolve$$,$reject$$)=>{model.createParticipant($data$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})});
|
|
10
10
|
model.referredUsers=async($id_app$$,$be_introduced_by_level1$$,$level$$=1)=>{$be_introduced_by_level1$$=await global.getModel("introducer").find({id_app:$id_app$$,be_introduced_by:$be_introduced_by_level1$$}).lean().exec();$be_introduced_by_level1$$=$be_introduced_by_level1$$.filter($l$$=>$l$$.be_introduced!=$l$$.be_introduced_by).map($l$$=>({user:$l$$.be_introduced,by:$l$$.be_introduced_by,introduce_code:$l$$.introduce_code,date:$l$$.date_created,level:$level$$}));if(0==$be_introduced_by_level1$$.lenth)return $be_introduced_by_level1$$;
|
|
11
11
|
let $level2$$=await Promise.all($be_introduced_by_level1$$.map($intro$$=>model.referredUsers($id_app$$,$intro$$.user,$intro$$.level+1)));return $be_introduced_by_level1$$.concat($level2$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]))};
|
|
12
12
|
const referByUsers=async($id_app$$,$be_introduced_level1$$,$level$$=1)=>{$be_introduced_level1$$=await global.getModel("introducer").find({id_app:$id_app$$,be_introduced:$be_introduced_level1$$}).lean().exec();$be_introduced_level1$$=$be_introduced_level1$$.filter($l$$=>$l$$.be_introduced!=$l$$.be_introduced_by).map($l$$=>({user:$l$$.be_introduced,by:$l$$.be_introduced_by,introduce_code:$l$$.introduce_code,date:$l$$.date_created,level:$level$$}));if(0==$be_introduced_level1$$.lenth)return $be_introduced_level1$$;
|
package/server/models/pbl.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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,trim:!0},ma_dvt:{type:String,required:!0,maxlength:32,trim:!0},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},
|
|
2
|
-
gia_von:{type:Number,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},
|
|
3
|
-
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},ck_sl_tu2:[],tien_evoucher_duoc_pb:{type:Number,default:0},promotion:Schema.Types.Mixed,combo:Schema.Types.Mixed,
|
|
4
|
-
|
|
5
|
-
finish_time:{type:Date},ghi_chu:{type:String},exfields_detail:Schema.Types.Mixed,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};
|
|
2
|
+
gia_von:{type:Number,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},gia_ban_ct_nt:{type:Number},
|
|
3
|
+
gia_ban_ct:{type:Number},tien_ct_nt:{type:Number},tien_ct:{type:Number},tien_thue_nt:{type:Number},tien_thue:{type:Number},thue_suat:{type:Number},tk_thue_co:String,tk_thue_co_treo:String,cs_discount:Schema.Types.Mixed,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},ck_sl_tu2:[],tien_evoucher_duoc_pb:{type:Number,default:0},promotion:Schema.Types.Mixed,combo:Schema.Types.Mixed,
|
|
4
|
+
km_yn_for:String,ma_thue:String,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},
|
|
5
|
+
ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},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,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,trim:!0},ma_gd:{type:String,default:"0",maxlength:32,trim:!0},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},
|
|
7
7
|
ma_kh:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_kh:String,ma_kho:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_kho:String,ma_ban:{type:String,uppercase:!0,maxlength:32,trim:!0},ma_ban0:{type:String,uppercase:!0,maxlength:32,trim:!0},ma_ca:{type:String,uppercase:!0,maxlength:32,trim:!0},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},
|
|
8
8
|
paymentByPoints:{type:Number,default:0},exchangeRate:Number,tien_paymentByPoints:{type:Number,default:0},evouchers:[global.Schema.Types.Mixed],tien_evoucher:Number,tk_no_evoucher:String,tk_co_evoucher:String,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},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';const reportinfoSchema=new global.Schema({code:{type:String,required:!0,index:!0,lowercase:!0,trim:!0},title:{type:String,required:!0},title2:{type:String},table_info:{type:String,trim:!0},columns:[],form_condition_info:{type:String,trim:!0},drilldown_info:{type:String,trim:!0},search_label:{type:String,trim:!0},cancel_label:{type:String,trim:!0},allow_users:{type:String,trim:!0},api_code:{type:String,lowercase:!0,trim:!0},handle_condition:{type:String,trim:!0},handle_data:{type:String,
|
|
2
|
-
trim:!0},handle_data_expression:{type:String,trim:!0},handle_data_expression_server:{type:String,trim:!0},is_dashboard_item:{type:Boolean,default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String,trim:!0},dashboard_rptform_condition:{type:String,trim:!0},chart_stt:{type:Number},chart_data_key_x:{type:String,trim:!0},chart_data_key_ys:{type:String,trim:!0},chart_type:{type:String,trim:!0},chart_width:{type:Number,default:4,max:12,min:
|
|
3
|
-
min:
|
|
2
|
+
trim:!0},handle_data_expression:{type:String,trim:!0},handle_data_expression_server:{type:String,trim:!0},is_dashboard_item:{type:Boolean,default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String,trim:!0},dashboard_rptform_condition:{type:String,trim:!0},chart_stt:{type:Number},chart_data_key_x:{type:String,trim:!0},chart_data_key_ys:{type:String,trim:!0},chart_type:{type:String,trim:!0},chart_width:{type:Number,default:4,max:12,min:0},chart_height:{type:Number,default:2,
|
|
3
|
+
min:0},chart_handle_data:{type:String,trim:!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:""}});reportinfoSchema.index({id_app:1,code:1});reportinfoSchema.index({title:1});reportinfoSchema.index({table_info:1});reportinfoSchema.index({is_dashboard_item:1});reportinfoSchema.index({dashboard_ids:1});
|
|
4
4
|
reportinfoSchema.index({code:"text",title:"text"});reportinfoSchema.index({status:1});reportinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=global.mongoose.models.reportinfo||global.mongoose.model("reportinfo",reportinfoSchema);module.exports=model;
|
package/server/models/rptform.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
'use strict';const kbmPttctSchema=new Schema({stt:{type:Number,required:!0},ma_so:{type:String,required:!0,uppercase:!0},chi_tieu:{type:String,required:!0},chi_tieu2:{type:String},thuyet_minh:{type:String},print:{type:Boolean,default:!0},bold:{type:Boolean,default:!1},cach_tinh:{type:String,required:!0,enum:["1","2","9"]},tk_no:[String],tk_co:[String],giam_tru_no:{type:Boolean,default:!1},giam_tru_co:{type:Boolean,default:!1},cong_thuc:{type:String},query:{type:String},dieu_kien_khac:{type:String},
|
|
2
2
|
cong_thuc_so_kn:{type:String},cong_thuc_so_kn_nt:{type:String},cong_thuc_so_kt:{type:String},cong_thuc_so_kt_nt:{type:String},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,default:"",uppercase:!0,maxlength:32},ma_hd:{type:String,default:"",uppercase:!0,maxlength:32},ma_dt:{type:String,default:"",uppercase:!0,maxlength:32},ma_nv:{type:String,default:"",uppercase:!0,maxlength:32},ma_sp:{type:String,default:"",uppercase:!0,maxlength:1024},ma_kho:{type:String,default:"",
|
|
3
|
-
uppercase:!0,maxlength:32},chart:String,khong_tinh_tong:{type:Boolean,default:!1},ct_socai:{type:Boolean,default:!1},chi_tinh_cac_cot:[]}),rptformSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},form_kbm:{type:String},rptform_type:{type:String,uppercase:!0,required:!0},rptform_name:{type:String,required:!0},report:[kbmPttctSchema],exfields:Schema.Types.Mixed,
|
|
4
|
-
default:""},user_updated:{type:String,default:""}});rptformSchema.index({id_app:1,rptform_type:1,rptform_name:1});rptformSchema.index({rptform_name:"text",ma_so:"text",chi_tieu:"text"});rptformSchema.index({chi_tieu:1});
|
|
3
|
+
uppercase:!0,maxlength:32},chart:String,khong_tinh_tong:{type:Boolean,default:!1},ct_socai:{type:Boolean,default:!1},chi_tinh_cac_cot:[]}),rptformSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},form_kbm:{type:String},rptform_type:{type:String,uppercase:!0,required:!0},rptform_name:{type:String,required:!0},report:[kbmPttctSchema],exfields:Schema.Types.Mixed,chart_stt:{type:Number},chart_data_key_x:{type:String,trim:!0},chart_data_key_ys:{type:String,trim:!0},chart_type:{type:String,
|
|
4
|
+
trim:!0},chart_width:{type:Number,default:4,max:12,min:0},chart_height:{type:Number,default:2,min:0},chart_handle_data:{type:String,trim:!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:""}});rptformSchema.index({id_app:1,rptform_type:1,rptform_name:1});rptformSchema.index({rptform_name:"text",ma_so:"text",chi_tieu:"text"});rptformSchema.index({chi_tieu:1});
|
|
5
|
+
rptformSchema.index({ma_so:1});rptformSchema.index({status:1});rptformSchema.index({user_created:1,visible_to:1,visible_to_users:1});var model=mongoose.models.rptform||mongoose.model("rptform",rptformSchema);module.exports=model;
|
|
@@ -11,5 +11,5 @@ model.removeSchedule=async $id$$=>{await model.deleteOne({_id:$id$$});try{let $s
|
|
|
11
11
|
model.removeScheduleLink=async $id_link$$=>{await model.deleteOne({id_link:$id_link$$});try{let $schedules$$=await model.loadFromRedis();$schedules$$=$schedules$$.filter($s$$=>$s$$.id_link!==$id_link$$);await model.saveToRedis($schedules$$)}catch($e$$){console.error("error remove schedule",$e$$)}};
|
|
12
12
|
model.check=async($callback$$=()=>{})=>{try{let $schedules$$=await model.loadFromRedis(),$handle_schedules$$=$schedules$$.filter($s$$=>{if("9"===$s$$.trang_thai||!$s$$.repeat&&"1"===$s$$.trang_thai)return!1;let $current$$=Moment().toDate();return Moment($s$$.next_run||$s$$.time_run).toDate().getTime()<=$current$$.getTime()});async.mapSeries($handle_schedules$$,($schedule$$,$cb$$)=>{if($schedule$$.repeat){let $next_run$$=Moment();switch($schedule$$.repeat){case 1:$next_run$$=$next_run$$.add(1,"days");
|
|
13
13
|
break;case 2:$next_run$$=$next_run$$.add(1,"weeks");break;case 3:$next_run$$=$next_run$$.add(1,"months");break;case 4:$next_run$$=$next_run$$.add(1,"quarters");break;case 7:$next_run$$=$next_run$$.add(1,"hours");break;default:$next_run$$=$next_run$$.add(1,"years")}let $finish_run$$=$schedule$$.finish_run;$finish_run$$&&($finish_run$$=Moment($finish_run$$).startOf("date"));$finish_run$$&&$finish_run$$.toDate()<$next_run$$.toDate()?$schedule$$.trang_thai="9":$schedule$$.trang_thai="0";$schedule$$.next_run=
|
|
14
|
-
$next_run$$}else $schedule$$.trang_thai="9";let $action$$=$schedule$$.action;actions[$action$$]&&model.findOneAndUpdate({_id:$schedule$$._id},$schedule$$).then(async()=>{try{await actions[$action$$]($schedule$$),schedule_log.create({id_schedule:$schedule$$._id,message:"ok"})}catch($e$$){schedule_log.create({id_schedule:$schedule$$._id,message:"Error:"+($e$$.message||$e$$.error||$e$$)}),console.error($e$$)}});$cb$$()},async()=>{$schedules$$=$schedules$$.filter($s$$=>"0"===$s$$.trang_thai);await model.saveToRedis($schedules$$);
|
|
14
|
+
$next_run$$}else $schedule$$.trang_thai="9";let $action$$=$schedule$$.action;actions[$action$$]&&model.findOneAndUpdate({_id:$schedule$$._id},$schedule$$).then(async()=>{try{await actions[$action$$]($schedule$$),schedule_log.create({id_schedule:$schedule$$._id,message:"ok"})}catch($e$$){schedule_log.create({id_schedule:$schedule$$._id,message:"Error: "+($e$$.message||$e$$.error||$e$$)}),console.error($e$$)}});$cb$$()},async()=>{$schedules$$=$schedules$$.filter($s$$=>"0"===$s$$.trang_thai);await model.saveToRedis($schedules$$);
|
|
15
15
|
setTimeout(()=>{$callback$$()},time_check)})}catch($e$$){console.error($e$$),setTimeout(()=>{$callback$$()},time_check)}};model.start=()=>{model.find({trang_thai:"0"}).lean().then($rs$$=>{global.clientRedis.set(redis_key,JSON.stringify($rs$$),()=>{async.forever(function($next$$){model.check($e$$=>{$next$$($e$$)})},function($err$$){$err$$&&console.error($err$$)})})})};module.exports=model;
|
package/server/models/so1.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use strict';const moment=require("moment"),validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),detailSchema=new global.Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},ton_kho:{type:Number,default:0},sl_xuat:{type:Number,default:0},px_gia_dd:{type:Boolean,default:!1},gia_von:{type:Number,default:0},gia_von_nt:{type:Number,default:0},tien_xuat:{type:Number,default:0},tien_xuat_nt:{type:Number,default:0},gia_mua:{type:Number,
|
|
2
2
|
default:0},tien_xuat_tmp:{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},ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},gia_ban_niem_yet_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,
|
|
3
|
-
default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},
|
|
4
|
-
|
|
5
|
-
uppercase:!0,maxlength:32},
|
|
6
|
-
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},den_gio:{type:Date},so_lan:Number,diem_thuong:{type:Number,
|
|
3
|
+
default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},tt_nt:{type:Number,default:0},tt:{type:Number,default:0},gia_ban_ct_nt:{type:Number},gia_ban_ct:{type:Number},tien_ct_nt:{type:Number},tien_ct:{type:Number},tien_thue_nt:{type:Number},tien_thue:{type:Number},thue_suat:{type:Number},tk_thue_co:String,tk_thue_co_treo:String,ty_le_hoa_hong:Number,tien_hoa_hong:Number,chuyen_ngay:Boolean,tk_no_hoa_hong:String,tk_co_hoa_hong:String,ty_le_hoa_hong_gt:Number,tien_hoa_hong_gt:Number,
|
|
4
|
+
chuyen_ngay_gt:Boolean,tk_no_hoa_hong_gt:String,tk_co_hoa_hong_gt:String,ty_le_hoa_hong_ctv:Number,tien_hoa_hong_ctv:Number,chuyen_ngay_ctv:Boolean,tk_cn_ctv:String,tk_cp_ctv:String,ty_le_hoa_hong_ql:Number,tien_hoa_hong_ql:Number,chuyen_ngay_ql:Boolean,tk_no_hoa_hong_ql:String,tk_co_hoa_hong_ql:String,gia_ban_thuc:{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},
|
|
5
|
+
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_thue:String,ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32},
|
|
6
|
+
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},thuoc_tinh:Schema.Types.Mixed,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},den_gio:{type:Date},so_lan:Number,diem_thuong:{type:Number,
|
|
7
|
+
default:0},tk_km_no:{type:String},tk_km_co:{type:String},km_yn_for:String,id_cs:String,collection_cs:String,freeship:Schema.Types.Mixed,combo:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
|
|
7
8
|
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},
|
|
8
9
|
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,ma_bp:{type:String,uppercase:!0,default:"",maxlength:32},user_nv_goi_hang:{type:String,maxlength:128},
|
|
9
10
|
user_nv_giao_hang:{type:String,maxlength:128},ngay_giao_hang:Date,ngay_hoan_thanh:Date,ngay_tra_lai:Date,vi_tri_giao_hang:global.Schema.Types.Mixed,ten_nguoi_nhan:{type:String,maxlength:1024},dien_thoai:{type:String,maxlength:1024},email:{type:String,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},
|
|
@@ -14,5 +15,5 @@ default:0},ma_freeship:String,tien_freeship:Number,tien_phi_vc:Number,sender_ema
|
|
|
14
15
|
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,
|
|
15
16
|
default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[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});
|
|
16
17
|
so1Schema.index({ma_bp:1});so1Schema.index({ma_nv:1});so1Schema.index({"details.ma_vt":1});so1Schema.index({"details.id_cs":1});so1Schema.index({trang_thai:1});so1Schema.index({trang_thai_giao_hang: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});
|
|
17
|
-
so1Schema.index({user_created:1,visible_to:1,visible_to_users:1});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$$()});
|
|
18
|
-
module.exports=model;
|
|
18
|
+
so1Schema.index({user_created:1,visible_to:1,visible_to_users:1});so1Schema.index({user_nv:1});so1Schema.index({user_gt:1});so1Schema.index({user_ctv:1});so1Schema.index({user_ql:1});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$$()});
|
|
19
|
+
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;
|
package/server/models/socai.js
CHANGED
|
@@ -8,10 +8,10 @@ ma_td6:String,ma_td7:String,ma_td8:String,ma_td9:String,status:{type:Boolean,def
|
|
|
8
8
|
socaiSchema.pre("save",function($next$$){this.tien="VND"==this.ma_nt?this.tien_nt=Math.roundBy(this.tien_nt,0):Math.roundBy(this.tien,0);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$$()});
|
|
9
9
|
socaiSchema.post("save",async function($doc$$){if(0<=["SO1","HD2","HD1","PBL"].indexOf($doc$$.ma_ct)){if($doc$$.ma_kh_no){var $dhgn_dhgn$$=await global.getModel("socai").findOne({ma_kh:$doc$$.ma_kh_no,id_app:$doc$$.id_app},{ngay_ct:1}).sort({ngay_ct:-1});if($dhgn_dhgn$$){var $so_ngay_da_mua_so_ngay_da_mua$$=moment().diff(moment($dhgn_dhgn$$.ngay_ct),"days");model.updateOne({ma_kh:$doc$$.ma_kh_no,id_app:$doc$$.id_app},{ngay_mua_gan_nhat:$dhgn_dhgn$$.ngay_ct,so_ngay_da_mua:$so_ngay_da_mua_so_ngay_da_mua$$})}}$doc$$.ma_kh_co&&
|
|
10
10
|
$doc$$.ma_kh_co!=$doc$$.ma_kh_no&&($dhgn_dhgn$$=await global.getModel("socai").findOne({ma_kh:$doc$$.ma_kh_co,id_app:$doc$$.id_app},{ngay_ct:1}).sort({ngay_ct:-1}))&&($so_ngay_da_mua_so_ngay_da_mua$$=moment().diff(moment($dhgn_dhgn$$.ngay_ct),"days"),model.updateOne({ma_kh:$doc$$.ma_kh_co,id_app:$doc$$.id_app},{ngay_mua_gan_nhat:$dhgn_dhgn$$.ngay_ct,so_ngay_da_mua:$so_ngay_da_mua_so_ngay_da_mua$$}))}});socaiSchema.index({id_app:1});socaiSchema.index({ma_dvcs:1});socaiSchema.index({so_ct:1});socaiSchema.index({ngay_ct:1});
|
|
11
|
-
socaiSchema.index({so_ct:1,ngay_ct:1});socaiSchema.index({gio:1});socaiSchema.index({ngay:1});socaiSchema.index({thang:1});socaiSchema.index({quy:1});socaiSchema.index({nam:-1});socaiSchema.index({ma_ct:1});socaiSchema.index({id_ct:1});socaiSchema.index({
|
|
12
|
-
socaiSchema.index({
|
|
13
|
-
socaiSchema.index({ma_tt1:1});socaiSchema.index({ma_tt2:1});socaiSchema.index({ma_tt3:1});socaiSchema.index({id_lenhsx:1});socaiSchema.index({flag:1});socaiSchema.index({id_link:1});socaiSchema.index({id_cs:1});socaiSchema.index({id_app:1,id_ct:1,so_ct:-1,ngay_ct:-1,ma_kh_no:1,ma_kh_co:1,tk_no:1,tk_co:1});socaiSchema.index({dien_giai:"text"});socaiSchema.index({status:1});socaiSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
14
|
-
const model=mongoose.models.socai||mongoose.model("socai",socaiSchema);model.on("index",async function($err$$){$err$$?console.error("socai index error",$err$$):console.info("socai indexing complete")});
|
|
11
|
+
socaiSchema.index({so_ct:1,ngay_ct:1});socaiSchema.index({gio:1});socaiSchema.index({ngay:1});socaiSchema.index({thang:1});socaiSchema.index({quy:1});socaiSchema.index({nam:-1});socaiSchema.index({ma_ct:1});socaiSchema.index({id_ct:1});socaiSchema.index({id_ct:1,nh_dk:1},{unique:!0});socaiSchema.index({ma_ct_goc:1});socaiSchema.index({id_ct_goc:1});socaiSchema.index({tk_no:1});socaiSchema.index({tk_co:1});socaiSchema.index({ma_kh_no:1});socaiSchema.index({ma_kh_co:1});socaiSchema.index({ma_nt:1});
|
|
12
|
+
socaiSchema.index({ma_bp:1});socaiSchema.index({ma_phi:1});socaiSchema.index({ma_hd:1});socaiSchema.index({ma_dt:1});socaiSchema.index({ma_nv:1});socaiSchema.index({ma_sp:1});socaiSchema.index({ma_vt:1});socaiSchema.index({ma_kenh:1});socaiSchema.index({ma_td1:1});socaiSchema.index({ma_td2:1});socaiSchema.index({ma_td3:1});socaiSchema.index({ma_td4:1});socaiSchema.index({ma_td5:1});socaiSchema.index({ma_td6:1});socaiSchema.index({ma_td7:1});socaiSchema.index({ma_td8:1});socaiSchema.index({ma_td9:1});
|
|
13
|
+
socaiSchema.index({ma_lo:1});socaiSchema.index({han_sd:-1});socaiSchema.index({ma_tt1:1});socaiSchema.index({ma_tt2:1});socaiSchema.index({ma_tt3:1});socaiSchema.index({id_lenhsx:1});socaiSchema.index({flag:1});socaiSchema.index({id_link:1});socaiSchema.index({id_cs:1});socaiSchema.index({id_app:1,id_ct:1,so_ct:-1,ngay_ct:-1,ma_kh_no:1,ma_kh_co:1,tk_no:1,tk_co:1});socaiSchema.index({dien_giai:"text"});socaiSchema.index({status:1});socaiSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
14
|
+
socaiSchema.index({trang_thai:1});const model=mongoose.models.socai||mongoose.model("socai",socaiSchema);model.on("index",async function($err$$){$err$$?console.error("socai index error",$err$$):console.info("socai indexing complete")});
|
|
15
15
|
model.getArise=async($query$$,$options$$={fields:void 0})=>{let $condition$$={ngay_ct:{$gte:$query$$.tu_ngay,$lte:$query$$.den_ngay},id_app:$query$$.id_app};$query$$.ma_dvcs&&($condition$$.ma_dvcs=$query$$.ma_dvcs);$query$$.ma_bp&&($condition$$.ma_bp=$query$$.ma_bp);$query$$.ma_hd&&($condition$$.ma_hd=$query$$.ma_hd);$query$$.ma_dt&&($condition$$.ma_dt=$query$$.ma_dt);$query$$.ma_sp&&($condition$$.ma_sp=$query$$.ma_sp);$query$$.ma_nv&&($condition$$.ma_nv=$query$$.ma_nv);$query$$.ma_phi&&($condition$$.ma_phi=
|
|
16
16
|
$query$$.ma_phi);$query$$.ma_kho&&($condition$$.ma_kho=$query$$.ma_kho);if($query$$.tk_no&&Array.isArray($query$$.tk_no)){var $tk_co_tk_no$$=$query$$.tk_no.reg();$condition$$.tk_no=$query$$.giam_tru_no?{$not:new RegExp($tk_co_tk_no$$)}:{$regex:$tk_co_tk_no$$,$options:"i"}}$query$$.tk_co&&Array.isArray($query$$.tk_co)&&($tk_co_tk_no$$=$query$$.tk_co.reg(),$condition$$.tk_co=$query$$.giam_tru_co&&$tk_co_tk_no$$?{$not:new RegExp($tk_co_tk_no$$)}:{$regex:$tk_co_tk_no$$,$options:"i"});return await model.find($condition$$,
|
|
17
17
|
$options$$.fields).lean()};module.exports=model;
|
package/server/models/tdttco.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
'use strict';const tdttcoSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},id_ct:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},ngay_ct:{type:Date,required:!0},so_ct:{type:String,required:!0,uppercase:!0,maxlength:32},ngay_hd:{type:Date,required:!0},so_hd:{type:String,required:!0,uppercase:!0,maxlength:32},ma_nt:{type:String,
|
|
2
|
-
required:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,default:1},tien_nt:{type:Number,default:0},tien:{type:Number,default:0},tk_co:{type:String,required:!0,maxlength:32},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},tat_toan:{type:Boolean,default:!1},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,default:"",uppercase:!0,maxlength:32},ma_hd:{type:String,default:"",
|
|
3
|
-
maxlength:32},ma_dt:{type:String,default:"",uppercase:!0,maxlength:32},ma_nv:{type:String,default:"",uppercase:!0,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:""},exfields_detail:global.Schema.Types.Mixed});tdttcoSchema.index({id_app:1,ma_dvcs:1,id_ct:1,ngay_ct:-1,ma_kh:1});tdttcoSchema.index({status:1});
|
|
4
|
-
tdttcoSchema.index({user_created:1,visible_to:1,visible_to_users:1});
|
|
1
|
+
'use strict';const async=require("async"),tdttcoSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},id_ct:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,required:!0,uppercase:!0,maxlength:32},ma_gd:{type:String,default:"0",maxlength:32},ngay_ct:{type:Date,required:!0},so_ct:{type:String,required:!0,uppercase:!0,maxlength:32},ngay_hd:{type:Date,required:!0},so_hd:{type:String,required:!0,uppercase:!0,maxlength:32},ma_nt:{type:String,
|
|
2
|
+
default:"VND",required:!0,uppercase:!0,maxlength:32},ty_gia:{type:Number,default:1},tien_nt:{type:Number,default:0},tien:{type:Number,default:0},tk_co:{type:String,required:!0,maxlength:32},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},tat_toan:{type:Boolean,default:!1},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,default:"",uppercase:!0,maxlength:32},ma_hd:{type:String,default:"",
|
|
3
|
+
uppercase:!0,maxlength:32},ma_dt:{type:String,default:"",uppercase:!0,maxlength:32},ma_nv:{type:String,default:"",uppercase:!0,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:""},exfields_detail:global.Schema.Types.Mixed});tdttcoSchema.index({id_app:1,ma_dvcs:1,id_ct:1,ngay_ct:-1,ma_kh:1});tdttcoSchema.index({status:1});
|
|
4
|
+
tdttcoSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.tdttco||mongoose.model("tdttco",tdttcoSchema);
|
|
5
|
+
model.getBalance=$condition$$=>new Promise(($resolve$$,$reject$$)=>{async.series({invoices:function($callback$$){setImmediate(()=>{let $query$$={...$condition$$};$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);delete $query$$.access_token;$query$$.id_ct&&delete $query$$.id_ct;model.find($query$$).lean().exec(($error$$,$results$$)=>{if($error$$)return $callback$$($error$$);$error$$=[];for(let $i$$=0;$i$$<$results$$.length;$i$$++){const $invoice$$=$results$$[$i$$];$invoice$$.line=$i$$;
|
|
6
|
+
$error$$.push($invoice$$)}$callback$$(null,$error$$)})})}},function($error$jscomp$0$$,$results$jscomp$0$$){if($error$jscomp$0$$)return $reject$$($error$jscomp$0$$);async.mapSeries($results$jscomp$0$$.invoices,($t_invoice$$,$callback$$)=>{setImmediate(()=>{let $query$$={id_tdtt:$t_invoice$$._id};$condition$$.id_ct&&($query$$.id_ct={$ne:$condition$$.id_ct});global.getModel("tdttco_tt").find($query$$).lean().exec(($error$jscomp$3_i$$,$results$$)=>{$t_invoice$$.da_thanh_toan_nt=0;$t_invoice$$.da_thanh_toan=
|
|
7
|
+
0;for($error$jscomp$3_i$$=0;$error$jscomp$3_i$$<$results$$.length;$error$jscomp$3_i$$++)$t_invoice$$.da_thanh_toan_nt+=$results$$[$error$jscomp$3_i$$].thanh_toan_qd,$t_invoice$$.da_thanh_toan+=$results$$[$error$jscomp$3_i$$].tien;$t_invoice$$.con_lai_nt=$t_invoice$$.tien_nt-$t_invoice$$.da_thanh_toan_nt;$t_invoice$$.con_lai=$t_invoice$$.tien-$t_invoice$$.da_thanh_toan;$callback$$(null,$t_invoice$$)})})},function($error$$,$results$$){if($error$$)return $reject$$($error$$);$resolve$$($results$$)})})});
|
|
8
|
+
module.exports=model;
|