flexbiz-server 12.7.5 → 12.7.7

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.
Files changed (95) hide show
  1. package/package.json +2 -2
  2. package/server/app.js +23 -19
  3. package/server/auths/rateLimiterMiddleware.js +3 -3
  4. package/server/controllers/controller.js +41 -41
  5. package/server/controllers/controllerUtils.js +61 -61
  6. package/server/controllers/controllerUtils_v1.js +72 -0
  7. package/server/controllers/controller_old.js +129 -0
  8. package/server/controllers/createHandler.js +34 -34
  9. package/server/controllers/createHandler_old.js +35 -0
  10. package/server/controllers/deleteHandler.js +11 -12
  11. package/server/controllers/deleteHandler_old.js +12 -0
  12. package/server/controllers/exportHandler.js +19 -17
  13. package/server/controllers/exportHandler_old.js +17 -0
  14. package/server/controllers/findHandler.js +61 -55
  15. package/server/controllers/findHandler_old.js +74 -0
  16. package/server/controllers/importFromGsHandler.js +10 -10
  17. package/server/controllers/importFromJsonHandler.js +6 -6
  18. package/server/controllers/importFromJsonHandler_old.js +6 -0
  19. package/server/controllers/updateBookHandler.js +1 -1
  20. package/server/controllers/updateFieldHandler.js +12 -13
  21. package/server/controllers/updateFieldHandler_old.js +13 -0
  22. package/server/controllers/updateHandler.js +38 -40
  23. package/server/controllers/updateHandler_old.js +40 -0
  24. package/server/controllers/viewHandler.js +13 -14
  25. package/server/controllers/viewHandler_old.js +14 -0
  26. package/server/flow/nodes/aiAnalysis.js +1 -1
  27. package/server/global.js +2 -3
  28. package/server/libs/WorkerStaticPool.js +14 -14
  29. package/server/libs/asyncCompat.js +10 -0
  30. package/server/libs/createSocaitheongay.js +1 -1
  31. package/server/libs/invoiceVnpt.js +1 -1
  32. package/server/libs/post-book.js +2 -2
  33. package/server/libs/post-sokho.js +5 -5
  34. package/server/libs/redis-cache.js +2 -2
  35. package/server/models/assabcihandler.js +1 -1
  36. package/server/models/counter.js +2 -2
  37. package/server/models/listinfo.js +200 -225
  38. package/server/models/listinfo_old.js +124 -0
  39. package/server/models/po1.js +4 -4
  40. package/server/models/purchase_contract.js +3 -3
  41. package/server/models/smsaccount.js +2 -2
  42. package/server/models/tdttco.js +3 -3
  43. package/server/models/tdttno.js +3 -3
  44. package/server/modules/lists/ls-afflink.js +1 -1
  45. package/server/modules/lists/ls-assbooking.js +1 -1
  46. package/server/modules/lists/ls-assinvestment.js +11 -11
  47. package/server/modules/lists/ls-asskey.js +2 -2
  48. package/server/modules/lists/ls-assneedtobuy.js +1 -1
  49. package/server/modules/lists/ls-assperiod.js +1 -1
  50. package/server/modules/lists/ls-asssell.js +1 -1
  51. package/server/modules/lists/ls-cart.js +14 -14
  52. package/server/modules/lists/ls-congdoansx.js +1 -1
  53. package/server/modules/lists/ls-consultant.js +2 -2
  54. package/server/modules/lists/ls-dkhoc.js +2 -2
  55. package/server/modules/lists/ls-dmban.js +1 -1
  56. package/server/modules/lists/ls-dmbp.js +2 -2
  57. package/server/modules/lists/ls-dmdoi.js +1 -1
  58. package/server/modules/lists/ls-dmnhtask.js +2 -2
  59. package/server/modules/lists/ls-dmvt.js +3 -3
  60. package/server/modules/lists/ls-file.js +1 -1
  61. package/server/modules/lists/ls-giaoca.js +1 -1
  62. package/server/modules/lists/ls-introducer.js +2 -2
  63. package/server/modules/lists/ls-kbm-bcqt.js +1 -1
  64. package/server/modules/lists/ls-news.js +1 -1
  65. package/server/modules/lists/ls-participant.js +1 -1
  66. package/server/modules/lists/ls-rpt.js +1 -1
  67. package/server/modules/lists/ls-smsaccount.js +1 -1
  68. package/server/modules/lists/ls-sosanxuat.js +1 -1
  69. package/server/modules/lists/ls-support.js +1 -1
  70. package/server/modules/public/callin.js +1 -1
  71. package/server/modules/reports/calc-tinhgiafifo.js +1 -1
  72. package/server/modules/reports/calc-tinhgiatb.js +1 -1
  73. package/server/modules/reports/calc-tinhgiathanh.js +1 -1
  74. package/server/modules/reports/calc-tinhluong.js +1 -1
  75. package/server/modules/reports/rp-assbonus.js +1 -1
  76. package/server/modules/reports/rp-bkchamcong.js +1 -1
  77. package/server/modules/reports/rp-cdpsdiem.js +1 -1
  78. package/server/modules/reports/rp-cdpskh.js +1 -1
  79. package/server/modules/reports/rp-cdpsnphep.js +1 -1
  80. package/server/modules/reports/rp-kcsns.js +1 -1
  81. package/server/modules/reports/rp-sctbhxh.js +1 -1
  82. package/server/modules/reports/rp-sctluong.js +1 -1
  83. package/server/modules/reports/rp-sctthuetncn.js +1 -1
  84. package/server/modules/reports/rp-sctvt.js +1 -1
  85. package/server/modules/reports/rp-sctvtnpp.js +1 -1
  86. package/server/modules/reports/rp-sctvttt.js +1 -1
  87. package/server/modules/reports/rp-thgt.js +1 -1
  88. package/server/modules/systems/sys-labelinfo.js +2 -3
  89. package/server/modules/systems/sys-listinfo.js +1 -1
  90. package/server/modules/systems/sys-menuinfo.js +1 -4
  91. package/server/modules/systems/sys-moduleinfo.js +2 -4
  92. package/server/modules/systems/sys-notification.js +1 -1
  93. package/server/workers/backupApp.js +1 -1
  94. package/server/workers/calcGrid.js +1 -1
  95. package/server/workers/runScript.js +1 -1
@@ -0,0 +1,124 @@
1
+ const controller=require("../controllers/controller"),underscore=require("underscore"),async=require("async"),{evalute}=require("../libs/utils"),utils=require("../libs/utils"),PostBook=require("../libs/post-book"),PostSocai=require("../libs/post-socai"),moment=require("moment"),numeral=require("numeral"),fs=require("fs"),_=require("lodash"),controllerUtils=require("../controllers/controllerUtils"),joinModel2=($arr$$,$id_app$$,$model$$,$joinFields$$,$fn$$,$options$$={cache:!0})=>[...$arr$$].joinModel2($id_app$$,
2
+ $model$$,$joinFields$$,$fn$$,$options$$),fieldScheme=new global.Schema({stt:{type:Number,default:0},stt_col:{type:Number,default:0},name:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp m\u00e3 tr\u01b0\u1eddng",index:!0,lowercase:!0,trim:!0},type:{type:String,default:"String",trim:!0},form:{type:String,trim:!0},header:{type:String,required:"Y\u00eau c\u1ea7u nh\u1eadp t\u00ean tr\u01b0\u1eddng"},header2:{type:String},api_description:{type:String},sort:Number,unique:Boolean,default:global.Schema.Types.Mixed,
3
+ lowercase:{type:Boolean,default:!1},uppercase:{type:Boolean,default:!1},required:global.Schema.Types.Mixed,index:{type:Boolean,default:!1},is_tmp:{type:Boolean,default:!1},is_title:{type:Boolean,default:!1},on_view:{type:Boolean,default:!0},maxlength:Number,min:global.Schema.Types.Mixed,max:global.Schema.Types.Mixed,ref_model:{type:String,trim:!0},ref_field:{type:String,trim:!0},ref_label:{type:String,trim:!0},ref_label_as:{type:String,trim:!0},ref_search_fields:{type:String,trim:!0},ref_data_fields:{type:String,
4
+ trim:!0},ref_condition:{type:String,trim:!0},multiple:Boolean,not_display:global.Schema.Types.Mixed,not_input:global.Schema.Types.Mixed,min_width_display:{type:Number,default:80},format:{type:String},align:{type:String},color:{type:String},bold:Boolean,html_variant_display:{type:String},html_component_display:{type:String},html_component_input:{type:String},render_on_list:String,render_on_view:String,render_title:String,grid_configs:{type:String,trim:!0},handle_value_changed:{type:String,trim:!0},
5
+ handle_value_changed_on_list:{type:String,trim:!0},handle_search_condition:{type:String,trim:!0},tab:{type:String,trim:!0},group:{type:String,trim:!0},help_text:{type:String,trim:!0},line:{type:Number,default:0}}),listinfoSchema=new global.Schema({menu_position:String,code:{type:String,required:!0,index:!0,lowercase:!0,trim:!0},title:{type:String,required:!0},title2:{type:String},mother_code:{type:String,lowercase:!0,trim:!0},api_code:{type:String,lowercase:!0,trim:!0},model_code:{type:String,lowercase:!0,
6
+ trim:!0},used_by_3rd_systems:String,fields:[fieldScheme],postinfos:[global.Schema.Types.Mixed],exfields:global.Schema.Types.Mixed,create_model:{type:Boolean,default:!1},breadcrumbs:{type:String,trim:!0},permistion_code:String,not_add:Boolean,not_edit:Boolean,not_delete:Boolean,not_copy:Boolean,handle_cell_clicked:{type:String,trim:!0},expression_check_save:{type:String,trim:!0},on_saved:{type:String,trim:!0},on_deleting:{type:String,trim:!0},on_deleted:{type:String,trim:!0},on_init:{type:String,trim:!0},
7
+ on_init_update:{type:String,trim:!0},handle_view_server:{type:String,trim:!0},handle_oncreating_server:{type:String,trim:!0},handle_oncreated_server:{type:String,trim:!0},handle_onupdating_server:{type:String,trim:!0},handle_onupdated_server:{type:String,trim:!0},handle_ondeleting_server:{type:String,trim:!0},search_required:Boolean,search_form:{type:String,trim:!0},default_condition:{type:String,trim:!0},require_condition:{type:String,trim:!0},export_yn:Boolean,sort_by:String,not_need_right:{type:Boolean,
8
+ default:!1},require_id_app:{type:Boolean,default:!0},private_data:Boolean,view_tabs:[],allow_users:{type:String,trim:!0},input_users:{type:String,trim:!0},create_menu:Boolean,show_view_tabs_on_grid:Boolean,form_size:{type:String,default:"md",trim:!0},is_dashboard_item:{type:Boolean,default:!1},dashboard_default:{type:Boolean,default:!0},dashboard_ids:{type:String,trim:!0},dashboard_stt:{type:Number},get_other_fields:String,options:{},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
9
+ date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
10
+ (global.configs||{}).createIndexes&&(listinfoSchema.index({code:1},{unique:!0}),listinfoSchema.index({used_by_3rd_systems:1}),listinfoSchema.index({code:1,api_code:1,title:1}),listinfoSchema.index({title:1}),listinfoSchema.index({title2:1}),listinfoSchema.index({mother_code:1}),listinfoSchema.index({api_code:1}),listinfoSchema.index({code:1,api_code:1}),listinfoSchema.index({model_code:1}),listinfoSchema.index({mother_code:1}),listinfoSchema.index({is_dashboard_item:1}),listinfoSchema.index({dashboard_ids:1}),
11
+ listinfoSchema.index({mother_code:"text",code:"text",title:"text"},{name:"listinfo_index2_text"}),listinfoSchema.index({status:1}),listinfoSchema.index({user_created:1,visible_to:1,visible_to_users:1}));
12
+ const model=global.mongoose.models.listinfo||global.mongoose.model("listinfo",listinfoSchema),requireFields=model.requireFields={id_app:{type:String,required:!0},exfields:global.Schema.Types.Mixed,listinfo_code:String,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String]};
13
+ model.createSchema=$info$$=>{if(!$info$$.create_model)return null;const $require_id_app$$=$info$$.require_id_app!=0&&$info$$.require_id_app!="false";var $_requireFields_mySchema$$={...requireFields};$require_id_app$$||delete $_requireFields_mySchema$$.id_app;$_requireFields_mySchema$$=new global.Schema($_requireFields_mySchema$$,{strict:!1});let $require_paths$$=Object.keys($_requireFields_mySchema$$.paths),$fields$$={};for(var $dynamic_indexes_f_index_user_uq$$ of $info$$.fields.filter($f$$=>$f$$.type!==
14
+ "Link"&&$f$$.type!=="Files"&&$f$$.type!=="Action"&&$f$$.type!=="Group"&&!$f$$.is_tmp&&$require_paths$$.indexOf($f$$.name)<0)){$dynamic_indexes_f_index_user_uq$$.unique&&($dynamic_indexes_f_index_user_uq$$.index=!0);let $_field$$=Object.assign({},$dynamic_indexes_f_index_user_uq$$);if($_field$$.type=="DateTime"||$_field$$.type=="Time")$_field$$.type="Date";if($_field$$.type=="File"||$_field$$.type=="OtherFile")$_field$$.type="Mixed";$_field$$.type=="Array"&&($_field$$.type="Mixed");$_field$$.type==
15
+ "Pdf"&&($_field$$.type="String");$_field$$.type=="Image"&&($_field$$.type="String");$_field$$.type=="String"&&($_field$$.trim=!0);$_field$$.required=!1;$_field$$.isDynamic=!0;delete $_field$$.name;delete $_field$$.header;delete $_field$$.header2;delete $_field$$.line;delete $_field$$.sort;delete $_field$$.unique;delete $_field$$._id;delete $_field$$.stt;delete $_field$$.not_display;delete $_field$$.not_search;delete $_field$$.format;delete $_field$$.align;delete $_field$$.color;delete $_field$$.form;
16
+ delete $_field$$.min_width_display;delete $_field$$.html_component_display;delete $_field$$.html_variant_display;delete $_field$$.html_component_input;delete $_field$$.handle_value_changed;delete $_field$$.handle_value_changed_on_list;delete $_field$$.default;delete $_field$$.multiple;delete $_field$$.tab;delete $_field$$.help_text;delete $_field$$.grid_configs;delete $_field$$.render_on_list;delete $_field$$.render_on_view;delete $_field$$.is_tmp;delete $_field$$.is_title;delete $_field$$.on_view;
17
+ delete $_field$$.handle_view_server;$_field$$.type=="String"||$_field$$.type=="Number"?$_field$$.maxlength=$_field$$.maxlength||4E3:delete $_field$$.maxlength;$fields$$[$dynamic_indexes_f_index_user_uq$$.name]=$_field$$}try{$_requireFields_mySchema$$.add($fields$$)}catch($e$$){throw Logger.error("[listinfo] [createSchema]",$e$$.message),Logger.error(JSON.stringify($fields$$),null,2),$e$$;}if((global.configs||{}).createIndexes){$info$$.fields.find($f$$=>$f$$.id_ct_chuyen)&&$_requireFields_mySchema$$.index({id_app:1,
18
+ id_ct_chuyen:1},{name:"index_id_ct_chuyen"});$dynamic_indexes_f_index_user_uq$$=$info$$.fields.filter($f$$=>$f$$.index);let $indexs$$={};$require_id_app$$&&($indexs$$.id_app=1);$dynamic_indexes_f_index_user_uq$$.forEach($field$$=>{$indexs$$[$field$$.name]=1});Object.keys($indexs$$).length>0&&$_requireFields_mySchema$$.index($indexs$$,{name:"index_dynamic"});$dynamic_indexes_f_index_user_uq$$={user_created:1,visible_to:1,visible_to_users:1,status:1};$require_id_app$$&&($dynamic_indexes_f_index_user_uq$$.id_app=
19
+ 1);$info$$.fields.find($f$$=>$f$$.name=="trang_thai")&&($dynamic_indexes_f_index_user_uq$$.trang_thai=1);$info$$.fields.find($f$$=>$f$$.name=="of_user")&&($dynamic_indexes_f_index_user_uq$$.of_user=1);$info$$.fields.find($f$$=>$f$$.name=="phu_trach")&&($dynamic_indexes_f_index_user_uq$$.phu_trach=1);$_requireFields_mySchema$$.index($dynamic_indexes_f_index_user_uq$$);$_requireFields_mySchema$$.index({index_user:$dynamic_indexes_f_index_user_uq$$,...$indexs$$});$dynamic_indexes_f_index_user_uq$$=$info$$.fields.filter($f$$=>
20
+ $f$$.unique);if($dynamic_indexes_f_index_user_uq$$.length>0){let $indUq$$={id_app:1};$require_id_app$$||delete $indUq$$.id_app;$dynamic_indexes_f_index_user_uq$$.forEach($field$$=>{$indUq$$[$field$$.name]=$field$$.sort||1});$_requireFields_mySchema$$.index($indUq$$,{unique:!0})}$_requireFields_mySchema$$.index({"$**":"text"},{name:`${$info$$.api_code||$info$$.code}_index_text`})}return $_requireFields_mySchema$$};
21
+ model.updateSchema=async($schema$$,$_field$jscomp$1_info$$)=>{if(($_field$jscomp$1_info$$=await model.findOne({code:$_field$jscomp$1_info$$}).lean())&&$_field$jscomp$1_info$$.fields)for(let $field$$ of $_field$jscomp$1_info$$.fields.filter($f$$=>$f$$.type!=="Link"&&$f$$.type!=="Files"&&$f$$.type!=="Action"&&$f$$.type!=="Group")){if($schema$$.paths[$field$$.name])if($schema$$.paths[$field$$.name].options&&$schema$$.paths[$field$$.name].options.isDynamic)$schema$$.remove($field$$.name);else continue;
22
+ if(!$field$$.is_tmp){$field$$.toObject&&($field$$=$field$$.toObject());$_field$jscomp$1_info$$={...$field$$};if($_field$jscomp$1_info$$.type=="DateTime"||$_field$jscomp$1_info$$.type=="Time")$_field$jscomp$1_info$$.type="Date";if($_field$jscomp$1_info$$.type=="File"||$_field$jscomp$1_info$$.type=="OtherFile")$_field$jscomp$1_info$$.type="Mixed";$_field$jscomp$1_info$$.type=="Array"&&($_field$jscomp$1_info$$.type="Mixed");$_field$jscomp$1_info$$.type=="Pdf"&&($_field$jscomp$1_info$$.type="String");
23
+ $_field$jscomp$1_info$$.type=="Image"&&($_field$jscomp$1_info$$.type="String");$_field$jscomp$1_info$$.type=="String"&&($_field$jscomp$1_info$$.trim=!0);$_field$jscomp$1_info$$.required=!1;$_field$jscomp$1_info$$.isDynamic=!0;delete $_field$jscomp$1_info$$.stt_col;delete $_field$jscomp$1_info$$.name;delete $_field$jscomp$1_info$$.header;delete $_field$jscomp$1_info$$.header2;delete $_field$jscomp$1_info$$.line;delete $_field$jscomp$1_info$$.sort;delete $_field$jscomp$1_info$$.unique;delete $_field$jscomp$1_info$$._id;
24
+ delete $_field$jscomp$1_info$$.stt;delete $_field$jscomp$1_info$$.not_display;delete $_field$jscomp$1_info$$.not_search;delete $_field$jscomp$1_info$$.format;delete $_field$jscomp$1_info$$.align;delete $_field$jscomp$1_info$$.color;delete $_field$jscomp$1_info$$.form;delete $_field$jscomp$1_info$$.min_width_display;delete $_field$jscomp$1_info$$.html_component_display;delete $_field$jscomp$1_info$$.html_variant_display;delete $_field$jscomp$1_info$$.html_component_input;delete $_field$jscomp$1_info$$.handle_value_changed;
25
+ delete $_field$jscomp$1_info$$.handle_value_changed_on_list;delete $_field$jscomp$1_info$$.default;delete $_field$jscomp$1_info$$.multiple;delete $_field$jscomp$1_info$$.tab;delete $_field$jscomp$1_info$$.help_text;delete $_field$jscomp$1_info$$.grid_configs;delete $_field$jscomp$1_info$$.render_on_list;delete $_field$jscomp$1_info$$.render_on_view;delete $_field$jscomp$1_info$$.is_tmp;delete $_field$jscomp$1_info$$.is_title;delete $_field$jscomp$1_info$$.on_view;delete $_field$jscomp$1_info$$.handle_view_server;
26
+ $_field$jscomp$1_info$$.type=="String"||$_field$jscomp$1_info$$.type=="Number"?$_field$jscomp$1_info$$.maxlength=$_field$jscomp$1_info$$.maxlength||4E3:delete $_field$jscomp$1_info$$.maxlength;$schema$$.add({[$field$$.name]:$_field$jscomp$1_info$$})}}};
27
+ model.updateModel=async($info$jscomp$2_uq$$,$_newModel$$)=>{$info$jscomp$2_uq$$.toObject&&($info$jscomp$2_uq$$=$info$jscomp$2_uq$$.toObject());if(!$info$jscomp$2_uq$$.create_model)return null;var $dynamic_indexes$$=$info$jscomp$2_uq$$.api_code||$info$jscomp$2_uq$$.model_code||$info$jscomp$2_uq$$.code;$_newModel$$||=global.mongoose.models[$dynamic_indexes$$];if($_newModel$$)if($_newModel$$.schema){var $_newList$$=global.controllers[($info$jscomp$2_uq$$.api_code||$info$jscomp$2_uq$$.code).toUpperCase()],
28
+ $require_paths$$=Object.keys(requireFields),$fields$$=[...$info$jscomp$2_uq$$.fields],$fields_can_xu_ly_fields_have_ref_schemaCode$$=$fields$$.filter($f$$=>$f$$.ref_model&&$f$$.ref_model.indexOf("[")<0&&$f$$.ref_field&&$f$$.type!=="Array"&&$f$$.type!=="Mixed"&&$f$$.ref_label).map($f$$=>$f$$.ref_label_as||$f$$.ref_label).filter($f$$=>!$fields$$.find($gf$$=>$gf$$.name===$f$$)).map($f$$=>({name:$f$$,type:"String"}));$fields$$=$fields$$.concat($fields_can_xu_ly_fields_have_ref_schemaCode$$);$fields_can_xu_ly_fields_have_ref_schemaCode$$=
29
+ $fields$$.filter($f$$=>$f$$.type!=="Link"&&$f$$.type!=="Files"&&$f$$.type!=="Action"&&$f$$.type!=="Group"&&$require_paths$$.indexOf($f$$.name)<0);for(let $field$$ of $fields_can_xu_ly_fields_have_ref_schemaCode$$){$field$$.toObject&&($field$$=$field$$.toObject());var $_field$$={...$field$$};$fields_can_xu_ly_fields_have_ref_schemaCode$$=$field$$.form;if(underscore.has($_newModel$$.schema.paths,$field$$.name)){if($field$$.type==="Array"||$field$$.type==="Mixed"){$fields_can_xu_ly_fields_have_ref_schemaCode$$&&
30
+ ($_field$$=$_newModel$$.schema.paths[$field$$.name].schema)&&await model.updateSchema($_field$$,$fields_can_xu_ly_fields_have_ref_schemaCode$$);continue}if($_newModel$$.schema.paths[$field$$.name].options&&$_newModel$$.schema.paths[$field$$.name].options.isDynamic)$_newModel$$.schema.remove($field$$.name);else continue}if(!$field$$.is_tmp){if($_field$$.type=="DateTime"||$_field$$.type=="Time")$_field$$.type="Date";if($_field$$.type=="File"||$_field$$.type=="OtherFile")$_field$$.type="Mixed";$_field$$.type==
31
+ "Array"&&($_field$$.type="Mixed");$_field$$.type=="Pdf"&&($_field$$.type="String");$_field$$.type=="Image"&&($_field$$.type="String");$_field$$.type=="String"&&($_field$$.trim=!0);$dynamic_indexes$$!=$info$jscomp$2_uq$$.code&&($_field$$.required=!1);$_field$$.isDynamic=!0;delete $_field$$.stt_col;delete $_field$$.name;delete $_field$$.header;delete $_field$$.header2;delete $_field$$.line;delete $_field$$.sort;delete $_field$$.unique;delete $_field$$._id;delete $_field$$.stt;delete $_field$$.not_display;
32
+ delete $_field$$.not_search;delete $_field$$.format;delete $_field$$.align;delete $_field$$.color;delete $_field$$.form;delete $_field$$.min_width_display;delete $_field$$.html_component_display;delete $_field$$.html_variant_display;delete $_field$$.html_component_input;delete $_field$$.handle_value_changed;delete $_field$$.handle_value_changed_on_list;delete $_field$$.default;delete $_field$$.multiple;delete $_field$$.tab;delete $_field$$.help_text;delete $_field$$.grid_configs;delete $_field$$.render_on_list;
33
+ delete $_field$$.render_on_view;delete $_field$$.is_tmp;delete $_field$$.is_title;delete $_field$$.on_view;delete $_field$$.handle_view_server;$_field$$.type=="String"||$_field$$.type=="Number"?$_field$$.maxlength=$_field$$.maxlength||4E3:delete $_field$$.maxlength;$_newModel$$.schema.add({[$field$$.name]:$_field$$})}}if((global.configs||{}).createIndexes){try{await $_newModel$$.collection.dropIndex("index_dynamic")}catch($e$$){}$dynamic_indexes$$=$info$jscomp$2_uq$$.fields.filter($f$$=>$f$$.index);
34
+ if($dynamic_indexes$$.length>0){let $indexs$$={};$_newModel$$.schema.paths.id_app&&($indexs$$.id_app=1);$dynamic_indexes$$.forEach($field$$=>{$indexs$$[$field$$.name]=1});Object.keys($indexs$$).length>0&&$_newModel$$.schema.index($indexs$$,{name:"index_dynamic"})}if($info$jscomp$2_uq$$.fields.find($f$$=>$f$$.id_ct_chuyen)){try{await $_newModel$$.collection.dropIndex("index_id_ct_chuyen")}catch($e$$){}$_newModel$$.schema.index({id_app:1,id_ct_chuyen:1},{name:"index_id_ct_chuyen"})}if($_newList$$&&
35
+ $_newList$$.is_dynamic_list){$info$jscomp$2_uq$$=$fields$$.filter($f$$=>$f$$.unique&&$f$$.name!="so_ct");let $indUq$$;$info$jscomp$2_uq$$.length>0&&($indUq$$=$_newModel$$.schema.paths.id_app?{id_app:1}:{},$info$jscomp$2_uq$$.forEach($field$$=>{$indUq$$[$field$$.name]=$field$$.sort||1}));if($_newList$$.options.unique&&$_newList$$.options.unique.length>0){let $old_index_unique$$={id_app:1};$_newList$$.options.unique.forEach($u$$=>{let $field$$=$fields$$.find($f$$=>$f$$.name===$u$$);$old_index_unique$$[$u$$]=
36
+ ($field$$||{}).sort||1});$_newModel$$.collection.dropIndex($old_index_unique$$,()=>{$indUq$$&&$_newModel$$.schema.index($indUq$$,{unique:!0})})}else $indUq$$&&$_newModel$$.schema.index($indUq$$,{unique:!0})}}}else Logger.error("[listinfo][updateModel] model does not have schema",$_newModel$$)};
37
+ model.createModel=$info$$=>{if(!$info$$.create_model)return null;let $model_code$$=$info$$.api_code||$info$$.model_code||$info$$.code;if(global.secu_models.indexOf($model_code$$)>=0)return null;let $exModel$$=global.mongoose.models[$model_code$$];if(!$exModel$$){let $model_path$$=(((global.configs||{}).paths||{}).models||__dirname)+"/"+$model_code$$+".js";fs.existsSync($model_path$$)&&($exModel$$=require($model_path$$))}$exModel$$?model.updateModel($info$$,$exModel$$):$exModel$$=global.mongoose.model($model_code$$,
38
+ model.createSchema($info$$));return $exModel$$};
39
+ const deletePost=($_listInfo$$,$obj$$)=>new Promise(($resolve$$,$reject$$)=>{let $bookbackup$$={};async.mapSeries(($_listInfo$$.postinfos||[]).filter($info$$=>$info$$.model&&$info$$.script&&$info$$.condition),($postInfo$$,$callback$$)=>{setImmediate(async()=>{let $m$$=global.getModel($postInfo$$.model);var $condition_scriptCondition$$=$postInfo$$.condition.indexOf("return ")<0?`return ${$postInfo$$.condition}`:$postInfo$$.condition;$condition_scriptCondition$$=evalute($condition_scriptCondition$$,
40
+ {master:$obj$$,data:$obj$$,moment});$condition_scriptCondition$$.id_app=$obj$$.id_app;$bookbackup$$[$postInfo$$.model]=await $m$$.find($condition_scriptCondition$$).lean();await $m$$.deleteMany($condition_scriptCondition$$);$callback$$()})},async $e$$=>{if($e$$){for(let $key$$ in $bookbackup$$)$bookbackup$$[$key$$].length>0&&await global.getModel($key$$.toString()).insertMany($bookbackup$$[$key$$]);return $reject$$($e$$)}$resolve$$($bookbackup$$)})}),post=($_listInfo$$,$obj$$)=>{$obj$$.toObject&&
41
+ ($obj$$=$obj$$.toObject());return Promise.all(($_listInfo$$.postinfos||[]).filter($info$$=>$info$$.model&&$info$$.script&&$info$$.condition).map($postInfo$$=>(async()=>{let $data$$=await evalute(`return (async ()=>{
42
+ try{
43
+ ${$postInfo$$.script}
44
+ }catch(e){
45
+ Logger.error("error post data",e)
46
+ return {error:e}
47
+ }
48
+ })()`,{master:{...$obj$$},data:{...$obj$$},moment,numeral});if($data$$&&$data$$.error)throw $data$$.error;return new Promise(($resolve$$,$reject$$)=>{if($postInfo$$.model==="socai")(new PostSocai($obj$$,$data$$,null,null,{deleteQuery:{id_ct:"#"}})).run(($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)});else{let $m$$=global.getModel($postInfo$$.model);(new PostBook($obj$$,$data$$,$m$$,function($detail$$,$callback$$){$callback$$($detail$$)},{deleteQuery:{id_ct:"#"}})).run(function($e$$,
49
+ $rs$$){if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}})})()))},dynamicFinding=($_listInfo$$,$user$$,$condition$$,$next$$,$options$$={})=>{if($_listInfo$$.api_code&&$_listInfo$$.api_code!=$_listInfo$$.code)return $next$$(null,$condition$$);$_listInfo$$.private_data&&($condition$$.user_created=$user$$.email);if($_listInfo$$.require_condition)try{let $script$$=$_listInfo$$.require_condition;$script$$.indexOf("return ")<0&&($script$$=`return ${$script$$}`);const $require_condition$$=evalute($script$$,
50
+ {user:$user$$,condition:$condition$$,moment,numeral,request:$options$$.req});if($require_condition$$&&Object.keys($require_condition$$).length>0)for(let $key$$ in $require_condition$$)$condition$$[$key$$]=$require_condition$$[$key$$]}catch($e$$){return Logger.error($e$$),$next$$(`Error on require condition: ${$e$$.message}`)}$next$$(null,$condition$$)},dynamicCreating=async($listInfo$$,$user$$,$obj$$,$next$$,$options$$={})=>{let $_listInfo$$=await model.findOne({_id:$listInfo$$._id}).lean();if(!$_listInfo$$)return $next$$("Kh\u00f4ng t\u00ecm th\u1ea5y danh m\u1ee5c n\u00e0y");
51
+ for(let $key$$ in $_listInfo$$)$listInfo$$[$key$$]=$_listInfo$$[$key$$];if($_listInfo$$.handle_oncreating_server&&$_listInfo$$.handle_oncreating_server.trim()!==""){if($_listInfo$$.handle_oncreating_server.indexOf("next")<0)return $next$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi t\u1ea1o y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>{const $func_body$$=`(async ()=>{
52
+ try{
53
+ ${$_listInfo$$.handle_oncreating_server}
54
+ }catch(e){
55
+ next(e);
56
+ }
57
+
58
+ })();`;setImmediate(async()=>{try{await evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,utils,query:utils.query,async,controller,controllerUtils,controllers:global.controllers,joinModel2,next:$next$$,moment,numeral,request:$options$$.req})}catch($e$$){Logger.error("[dynamicCreating][handle_oncreating_server]",{code:$listInfo$$.code,handle_oncreating_server:$_listInfo$$.handle_oncreating_server,e:$e$$}),$next$$($e$$)}})}],($e$$,$rs$$)=>{if($e$$)return Logger.error("[dynamicCreating][handle_oncreating_server]",
59
+ $listInfo$$.code,$e$$,$_listInfo$$.handle_oncreating_server),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return Logger.error("[dynamicCreating]",$listInfo$$.code,$e$$),$next$$($e$$)}}$next$$(null,$obj$$)},dynamicCreated=async($_listInfo$$,$user$$,$obj$$,$next$$,$options$$={})=>{if($_listInfo$$.handle_oncreated_server&&$_listInfo$$.handle_oncreated_server.trim()!==""){if($_listInfo$$.handle_oncreated_server.indexOf("next")<0)return $next$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u sau khi t\u1ea1o y\u00eau c\u1ea7u g\u1ecdi function next");
60
+ try{await new Promise(($resolve$$,$reject$$)=>{async.parallel([$next$$=>{const $func_body$$=`(async ()=>{
61
+ try{
62
+ ${$_listInfo$$.handle_oncreated_server}
63
+ }catch(e){
64
+ next(e);
65
+ }
66
+ })();`;setImmediate(async()=>{try{await evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllerUtils,controllers:global.controllers,utils,query:utils.query,async,joinModel2,next:$next$$,moment,numeral,request:$options$$.req})}catch($e$$){Logger.error("error dynamic created",$_listInfo$$.handle_oncreated_server,$e$$),$next$$($e$$)}})}],($e$$,$rs$$)=>{if($e$$)return Logger.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return Logger.error($e$$),
67
+ $next$$($e$$)}}$next$$(null,$obj$$)},dynamicUpdating=async($listInfo$$,$user$$,$data$$,$obj$$,$next$$,$options$$={})=>{let $_listInfo$$=await model.findOne({_id:$listInfo$$._id}).lean();if(!$_listInfo$$)return $next$$("Kh\u00f4ng t\u00ecm th\u1ea5y danh m\u1ee5c n\u00e0y");for(let $key$$ in $_listInfo$$)$listInfo$$[$key$$]=$_listInfo$$[$key$$];if($_listInfo$$.handle_onupdating_server&&$_listInfo$$.handle_onupdating_server.trim()!==""){if($_listInfo$$.handle_onupdating_server.indexOf("next")<0)return $next$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi update y\u00eau c\u1ea7u g\u1ecdi function next");
68
+ try{await new Promise(($resolve$$,$reject$$)=>{async.series([$next$$=>{const $func_body$$=`(async ()=>{
69
+ try{
70
+ ${$_listInfo$$.handle_onupdating_server}
71
+ }catch(e){
72
+ next(e);
73
+ }
74
+
75
+ })();`;setImmediate(async()=>{try{await evalute($func_body$$,{data:$data$$,obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllerUtils,controllers:global.controllers,utils,query:utils.query,async,joinModel2,next:$next$$,moment,numeral,request:$options$$.req})}catch($e$$){Logger.error("[listinfo][dynamicUpdating] error dynamic update",$_listInfo$$.handle_onupdating_server,$e$$),$next$$($e$$)}})}],($e$$,$rs$$)=>{if($e$$)return Logger.error("[listinfo][dynamicUpdating]",
76
+ $e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return Logger.error($e$$),$next$$($e$$)}}$next$$(null,$data$$,$obj$$)},dynamicUpdated=async($_listInfo$$,$user$$,$obj$$,$next$$,$options$$={})=>{if($_listInfo$$.handle_onupdated_server&&$_listInfo$$.handle_onupdated_server.trim()!==""){if($_listInfo$$.handle_onupdated_server.indexOf("next")<0)return $next$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u sau khi update y\u00eau c\u1ea7u g\u1ecdi function next");try{await new Promise(($resolve$$,$reject$$)=>
77
+ {async.series([$next$$=>{const $func_body$$=`(async ()=>{
78
+ try{
79
+ ${$_listInfo$$.handle_onupdated_server}
80
+ }catch(e){
81
+ next(e)
82
+ }
83
+ })();`;setImmediate(async()=>{try{await evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllerUtils,controllers:global.controllers,utils,query:utils.query,async,joinModel2,next:$next$$,moment,numeral,request:$options$$.req})}catch($e$$){Logger.error("error dynamic updated",$_listInfo$$.handle_onupdated_server,$e$$),$next$$($e$$)}})}],($e$$,$rs$$)=>{if($e$$)return Logger.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return Logger.error($e$$),
84
+ $next$$($e$$)}}$next$$(null,$obj$$)},dynamicDeleting=async($listInfo$$,$user$$,$obj$$,$next$$,$options$$={})=>{let $_listInfo$$=await model.findOne({_id:$listInfo$$._id}).lean();if(!$_listInfo$$)return $next$$("Kh\u00f4ng t\u00ecm th\u1ea5y danh m\u1ee5c n\u00e0y");for(let $key$$ in $_listInfo$$)$listInfo$$[$key$$]=$_listInfo$$[$key$$];if($_listInfo$$.handle_ondeleting_server&&$_listInfo$$.handle_ondeleting_server.trim()!==""){if($_listInfo$$.handle_ondeleting_server.indexOf("next")<0)return $next$$("Script x\u1eed l\u00fd d\u1eef li\u1ec7u tr\u01b0\u1edbc khi update y\u00eau c\u1ea7u g\u1ecdi function next");
85
+ try{await new Promise(($resolve$$,$reject$$)=>{async.series([$next$$=>{const $func_body$$=`(async ()=>{
86
+ try{
87
+ ${$_listInfo$$.handle_ondeleting_server}
88
+ }catch(e){
89
+ next(e);
90
+ }
91
+ })();`;setImmediate(async()=>{try{await evalute($func_body$$,{obj:$obj$$,user:$user$$,getLib:global.getLib,getModel:global.getModel,controller,controllerUtils,controllers:global.controllers,utils,query:utils.query,async,joinModel2,next:$next$$,moment,numeral,request:$options$$.req})}catch($e$$){Logger.error("error dynamic delete",$_listInfo$$.handle_ondeleting_server,$e$$),$next$$($e$$)}})}],($e$$,$rs$$)=>{if($e$$)return Logger.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}catch($e$$){return Logger.error($e$$),
92
+ $next$$($e$$)}}$next$$(null,$obj$$)},onView=async($control_fields_have_ref$$,$obj$$,$user$$,$items$$,$next$$,$options$$={})=>{const $api_code$$=($obj$$.api_code||$obj$$.code).toUpperCase();$obj$$.private_data&&($items$$=$items$$.filter($item$$=>$item$$.user_created===$user$$.email));if($obj$$.handle_view_server&&$obj$$.handle_view_server.trim()!==""){if($obj$$.handle_view_server.indexOf("next")<0)return $next$$("Script x\u1eed l\u00fd view y\u00eau c\u1ea7u g\u1ecdi function next");await new Promise(($resolve$$,
93
+ $reject$$)=>{async.parallel([$next$$=>{setImmediate(async()=>{const $func_body$$=`(async ()=>{
94
+ try{
95
+ ${$obj$$.handle_view_server}
96
+ }catch(e){
97
+ next(e);
98
+ }
99
+
100
+ })();`;try{await evalute($func_body$$,{items:$items$$,user:$user$$,getLib:global.getLib,utils,query:utils.query,next:$next$$,async,joinModel2,moment,numeral,request:$options$$.req})}catch($e$$){Logger.error("[listinfo][dynamicView] [handle view] error dynamic view",$obj$$.handle_view_serve,$e$$),$next$$($e$$)}})}],($e$$,$rs$$)=>{if($e$$)return Logger.error($e$$),$reject$$($e$$);$resolve$$($rs$$)})})}$control_fields_have_ref$$=$obj$$.fields.filter($f$$=>["Number","String"].indexOf($f$$.type)>
101
+ 0&&$f$$.ref_model&&$f$$.ref_field&&$f$$.ref_label&&"tinhthanh xaphuong quanhuyen account currency templatevoucher".split(" ").indexOf($f$$.ref_model)<0);if($control_fields_have_ref$$.length===0)return $next$$(null,$items$$);async.map($control_fields_have_ref$$,($f$$,$cb$$)=>{setImmediate(async()=>{let $ref_model$$;var $_listInofOfRef_where$$,$ctrl_fields$$;let $ref_name_model$$,$ref_field$$,$ref_condition$$,$field_name$$,$ref_label$$;$ref_label$$=$f$$.ref_label_as||$f$$.ref_label;$ref_field$$=$f$$.ref_field;
102
+ $ref_condition$$=$f$$.ref_condition;$field_name$$=$f$$.name;try{if($ref_name_model$$=$f$$.ref_model,$ref_name_model$$.indexOf("[")>=0||$ref_name_model$$.indexOf(",")>=0)try{$ref_model$$=$ref_name_model$$.indexOf("[")>=0?utils.JSONParser($ref_name_model$$):$ref_name_model$$.split(",")}catch($e$$){return Logger.error("ref_model is not valid",$ref_name_model$$,$e$$),$cb$$($e$$)}else $ref_name_model$$==="dmkh"&&($ref_name_model$$="customer"),$ref_name_model$$==="dmtk"&&($ref_name_model$$="account"),$ref_name_model$$===
103
+ "dmnt"&&($ref_name_model$$="currency"),$ref_name_model$$==="dmnhtask"&&($ref_name_model$$="group"),$ref_model$$=global.mongoose.models[$ref_name_model$$],$ref_model$$||(($_listInofOfRef_where$$=await model.findOne({code:$ref_name_model$$}).lean())&&($_listInofOfRef_where$$.api_code||$_listInofOfRef_where$$.model_code)&&($ref_model$$=global.mongoose.models[$_listInofOfRef_where$$.api_code||$_listInofOfRef_where$$.model_code]),$ref_model$$||($ctrl_fields$$=global.controllers[$ref_name_model$$.trim().toUpperCase()])&&
104
+ ($ref_model$$=$ctrl_fields$$.getProperty("model"))),$ref_model$$||=global.getModel($ref_name_model$$)}catch($e$$){return Logger.error($e$$),$cb$$($e$$)}let $items_will_join$$=$items$$;if($items_will_join$$.length==0)return $cb$$();$ctrl_fields$$={[$ref_label$$]:$f$$.ref_label};$f$$.ref_model==="trangthai"&&$f$$.name=="trang_thai"&&($ctrl_fields$$.color="color");if(_.isArray($ref_model$$))$f$$.ref_field&&$f$$.ref_label&&$items_will_join$$.forEach($item$$=>{let $ref_item$$=$ref_model$$.find($r$$=>$r$$[$f$$.ref_field]==
105
+ $item$$[$f$$.name]);$ref_item$$&&($item$$[$ref_label$$]=$ref_item$$[$f$$.ref_label])});else if(Object.keys($ctrl_fields$$).length>0){$_listInofOfRef_where$$=$item$$=>{let $w$$={[$ref_field$$]:$item$$[$field_name$$]},$condition$$;if($ref_condition$$&&$ref_condition$$.indexOf("API")<0){let $func_string$$=$ref_condition$$;$func_string$$.indexOf("return ")<0&&($func_string$$=`return ${$func_string$$}`);let $userInfo$$={...$user$$};try{$condition$$=evalute($func_string$$,{master:$item$$,data:$item$$,
106
+ detail:$item$$,userInfo:$userInfo$$})}catch($e$$){Logger.error($e$$,$func_string$$)}}if($condition$$)if($ref_name_model$$==="participant"&&delete $condition$$.groups,$ref_name_model$$==="trangthai")$condition$$.ma_ct&&($w$$.ma_ct=$condition$$.ma_ct);else for(let $key$$ in $condition$$)$w$$.$and=$w$$.$and||[],$w$$.$and.push({[$key$$]:$condition$$[$key$$]});$ref_name_model$$!=="trangthai"||$w$$.ma_ct||($w$$.ma_ct=$api_code$$);return $w$$};let $id_app$$;underscore.has($ref_model$$.schema.paths,"id_app")&&
107
+ ($id_app$$=$user$$.current_id_app);await $items_will_join$$.asyncJoinModel2($id_app$$,$ref_model$$,{where:$_listInofOfRef_where$$,fields:$ctrl_fields$$})}$cb$$()})},$e$$=>{if($e$$)return $next$$($e$$);$next$$(null,$items$$)})};
108
+ model.createController=($router$$,$_listInfo$$)=>{let $api_code$$=$_listInfo$$.api_code||$_listInfo$$.code;if(!$_listInfo$$.create_model)return null;let $sort$$={},$unique$$=[];let $_newList$$;$_listInfo$$.fields.filter($f$$=>$f$$.sort).forEach($f$$=>{$sort$$[$f$$.name]=$f$$.sort});if($_listInfo$$.sort_by)if($_listInfo$$.sort_by.indexOf("return ")>=0||$_listInfo$$.sort_by.indexOf("{")===0){var $_newModel$jscomp$1_func_string$$=$_listInfo$$.sort_by;$_newModel$jscomp$1_func_string$$.indexOf("return ")<
109
+ 0&&($_newModel$jscomp$1_func_string$$="return "+$_newModel$jscomp$1_func_string$$);try{$sort$$=evalute($_newModel$jscomp$1_func_string$$)}catch($e$$){Logger.error("[listinfo] error create sort",$_newModel$jscomp$1_func_string$$,$e$$)}}else $sort$$=$_listInfo$$.sort_by.split(",").reduce(($sort$$,$b$$)=>$sort$$[$b$$]=1,{});$_listInfo$$.fields.filter($f$$=>$f$$.unique&&$f$$.name!="so_ct").forEach($f$$=>{$unique$$.push($f$$.name)});if($_newList$$=global.controllers[$api_code$$.toUpperCase()]){Object.keys($sort$$).length>
110
+ 0&&($_newList$$.sort=$_newList$$.options.sort=$sort$$);$_newModel$jscomp$1_func_string$$=$_newList$$.model;model.updateModel($_listInfo$$,$_newModel$jscomp$1_func_string$$);if($_newList$$.is_dynamic_list||!$_newList$$.unique||$_newList$$.unique.length===0)$_newList$$.unique=$_newList$$.options.unique=$unique$$;$_newList$$.dynamicDeletePosts=$_newList$$.dynamicDeletePosts||{};$_newList$$.dynamicPosts=$_newList$$.dynamicPosts||{};$_listInfo$$.fields&&$_listInfo$$.postinfos&&$_listInfo$$.postinfos.length>
111
+ 0?($_newList$$.dynamicDeletePosts[$_listInfo$$.code]=function($_listInfo$$,$obj$$){return deletePost($_listInfo$$,$obj$$)},$_newList$$.dynamicDeletePost||($_newList$$.dynamicDeletePost=async $obj$$=>$_newList$$.dynamicDeletePosts[$_listInfo$$.code]($_listInfo$$,$obj$$)),$_newList$$.dynamicPosts[$_listInfo$$.code]=async function($obj$$,$fn$$,$options$$){if($_newList$$.post)$_newList$$.post($obj$$,async function($e$$){if($e$$)return $fn$$($e$$);try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,
112
+ $rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}},$options$$);else try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}},$_newList$$.dynamicPost||($_newList$$.dynamicPost=async($obj$$,$fn$$,$options$$)=>{$_newList$$.dynamicPosts[$_listInfo$$.code]($obj$$,$fn$$,$options$$)})):($_newList$$.dynamicPosts[$_listInfo$$.code]=void 0,$_newList$$.dynamicDeletePosts[$_listInfo$$.code]=void 0)}else{Object.keys($sort$$).length===0&&($sort$$.date_created=
113
+ -1);const $require_id_app$$=$_listInfo$$.require_id_app!=0&&$_listInfo$$.require_id_app!="false";$_newModel$jscomp$1_func_string$$=model.createModel($_listInfo$$);if(!$_newModel$jscomp$1_func_string$$)return;$_newList$$=new controller($router$$,$_newModel$jscomp$1_func_string$$,$api_code$$.toLowerCase(),{sort:$sort$$,unique:$unique$$,notNeedRight:$_listInfo$$.not_need_right,require_id_app:$require_id_app$$,onView:($user$$,$items$$,$next$$)=>{$next$$(null,$items$$)},onCreating:async($user$$,$data$$,
114
+ $next$$)=>{$next$$(null,$data$$)},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{$next$$(null,$data$$,$obj$$)},onDeleting:async($user$$,$obj$$,$next$$)=>{$next$$(null,$obj$$)}});$_newList$$.is_dynamic_list=!0;$_newList$$.dynamicDeletePosts={};$_newList$$.dynamicPosts={};$_listInfo$$.fields&&$_listInfo$$.postinfos&&$_listInfo$$.postinfos.length>0&&($_newList$$.dynamicDeletePosts[$_listInfo$$.code]=function($_listInfo$$,$obj$$){return deletePost($_listInfo$$,$obj$$)},$_newList$$.dynamicDeletePost=
115
+ async $obj$$=>$_newList$$.dynamicDeletePosts[$_listInfo$$.code]($_listInfo$$,$obj$$),$_newList$$.dynamicPosts[$_listInfo$$.code]=async function($obj$$,$fn$$,$options$$){if($_newList$$.post)$_newList$$.post($obj$$,async function($e$$){if($e$$)return $fn$$($e$$);try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||$e$$)}},$options$$);else try{let $rs$$=await post($_listInfo$$,$obj$$);$fn$$(null,$rs$$)}catch($e$$){$fn$$($e$$.message||$e$$.error||
116
+ $e$$)}},$_newList$$.dynamicPost=async($obj$$,$fn$$,$options$$)=>{$_newList$$.dynamicPosts[$_listInfo$$.code]($obj$$,$fn$$,$options$$)});$_newList$$.route()}$_newList$$.dynamicViews=$_newList$$.dynamicViews||{};$_newList$$.dynamicViews[$_listInfo$$.code]=($user$$,$items$$,$next$$,$options$$)=>{onView($_newList$$,$_listInfo$$,$user$$,$items$$,$next$$,$options$$)};$_newList$$.dynamicView=($user$$,$items$$,$next$$,$options$$={})=>{let $listinfo_code$$=$options$$.listinfo_code||$_listInfo$$.api_code||
117
+ $_listInfo$$.code;if($_newList$$.dynamicViews[$listinfo_code$$])$_newList$$.dynamicViews[$listinfo_code$$]($user$$,$items$$,$next$$,JSON.parse(JSON.stringify($options$$)));else $next$$(null,$items$$)};$_newList$$.dynamicFindings=$_newList$$.dynamicFindings||{};$_newList$$.dynamicFindings[$_listInfo$$.code]=($user$$,$condition$$,$next$$,$options$$)=>{dynamicFinding($_listInfo$$,$user$$,$condition$$,$next$$,$options$$)};$_newList$$.dynamicFinding=($user$$,$condition$$,$next$$,$options$$={})=>{let $listinfo_code$$=
118
+ $options$$.listinfo_code||$_listInfo$$.api_code||$_listInfo$$.code;if($_newList$$.dynamicFindings[$listinfo_code$$])$_newList$$.dynamicFindings[$listinfo_code$$]($user$$,$condition$$,$next$$,JSON.parse(JSON.stringify($options$$)));else $next$$(null,$condition$$)};$_newList$$.dynamicCreatings=$_newList$$.dynamicCreatings||{};$_newList$$.dynamicCreatings[$_listInfo$$.code]=($user$$,$obj$$,$next$$,$options$$)=>{dynamicCreating($_listInfo$$,$user$$,$obj$$,$next$$,$options$$)};$_newList$$.dynamicCreating=
119
+ ($user$$,$obj$$,$next$$,$options$$={})=>{let $listinfo_code$$=$options$$.listinfo_code||$_listInfo$$.api_code||$_listInfo$$.code;if($_newList$$.dynamicCreatings[$listinfo_code$$])$_newList$$.dynamicCreatings[$listinfo_code$$]($user$$,$obj$$,$next$$,JSON.parse(JSON.stringify($options$$)));else $next$$(null,$obj$$)};$_newList$$.dynamicCreateds=$_newList$$.dynamicCreateds||{};$_newList$$.dynamicCreateds[$_listInfo$$.code]=($user$$,$obj$$,$next$$,$options$$)=>{dynamicCreated($_listInfo$$,$user$$,$obj$$,
120
+ $next$$,$options$$)};$_newList$$.dynamicCreated=($user$$,$obj$$,$next$$,$options$$={})=>{let $listinfo_code$$=$options$$.listinfo_code||$_listInfo$$.api_code||$_listInfo$$.code;if($_newList$$.dynamicCreateds[$listinfo_code$$])$_newList$$.dynamicCreateds[$listinfo_code$$]($user$$,$obj$$,$next$$,JSON.parse(JSON.stringify($options$$)));else $next$$(null,$obj$$)};$_newList$$.dynamicUpdatings=$_newList$$.dynamicUpdatings||{};$_newList$$.dynamicUpdatings[$_listInfo$$.code]=($user$$,$data$$,$obj$$,$next$$,
121
+ $options$$)=>{dynamicUpdating($_listInfo$$,$user$$,$data$$,$obj$$,$next$$,$options$$)};$_newList$$.dynamicUpdating=($user$$,$data$$,$obj$$,$next$$,$options$$={})=>{let $listinfo_code$$=$options$$.listinfo_code||$_listInfo$$.api_code||$_listInfo$$.code;if($_newList$$.dynamicUpdatings[$listinfo_code$$])$_newList$$.dynamicUpdatings[$listinfo_code$$]($user$$,$data$$,$obj$$,$next$$,JSON.parse(JSON.stringify($options$$)));else $next$$(null,$data$$,$obj$$)};$_newList$$.dynamicUpdateds=$_newList$$.dynamicUpdateds||
122
+ {};$_newList$$.dynamicUpdateds[$_listInfo$$.code]=($user$$,$obj$$,$next$$,$options$$)=>{dynamicUpdated($_listInfo$$,$user$$,$obj$$,$next$$,$options$$)};$_newList$$.dynamicUpdated=($user$$,$obj$$,$next$$,$options$$={})=>{let $listinfo_code$$=$options$$.listinfo_code||$_listInfo$$.api_code||$_listInfo$$.code;if($_newList$$.dynamicUpdateds[$listinfo_code$$])$_newList$$.dynamicUpdateds[$listinfo_code$$]($user$$,$obj$$,$next$$,JSON.parse(JSON.stringify($options$$)));else $next$$(null,$obj$$)};$_newList$$.dynamicDeletings=
123
+ $_newList$$.dynamicDeletings||{};$_newList$$.dynamicDeletings[$_listInfo$$.code]=($user$$,$obj$$,$next$$,$options$$)=>{dynamicDeleting($_listInfo$$,$user$$,$obj$$,$next$$,$options$$)};$_newList$$.dynamicDeleting=($user$$,$obj$$,$next$$,$options$$={})=>{let $listinfo_code$$=$options$$.listinfo_code||$_listInfo$$.api_code||$_listInfo$$.code;if($_newList$$.dynamicDeletings[$listinfo_code$$])$_newList$$.dynamicDeletings[$listinfo_code$$]($user$$,$obj$$,$next$$,JSON.parse(JSON.stringify($options$$)));
124
+ else $next$$(null,$obj$$)};return $_newList$$};module.exports=model;
@@ -1,7 +1,7 @@
1
- const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),pn1=require("./pn1"),pnh=require("./pnh"),pn9=require("./pn9"),pc0=require("./pc0"),async=require("async"),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},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,
2
- default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},gia_von_nk:{type:Number,default:0},gia_von_nk_nt:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},tien_thue_nk:{type:Number,default:0},tien_thue_nk_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},ty_le_qd:{type:Number,default:0},ma_kh:{type:String,uppercase:!0,
3
- default:"",maxlength:32,trim:!0},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_vt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:String,
4
- default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_kh:validator.existsKh,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
1
+ const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),pn1=require("./pn1"),pnh=require("./pnh"),pn9=require("./pn9"),pc0=require("./pc0"),async=require("../libs/asyncCompat"),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},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},
2
+ ty_le_ck:{type:Number,default:0},tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},gia_von_nk:{type:Number,default:0},gia_von_nk_nt:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},tien_thue_nk:{type:Number,default:0},tien_thue_nk_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},ty_le_qd:{type:Number,default:0},ma_kh:{type:String,
3
+ uppercase:!0,default:"",maxlength:32,trim:!0},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_vt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},
4
+ ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});detailSchema.validate={ma_kh:validator.existsKh,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
5
5
  const po1Schema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"PO1",required:!0,uppercase:!0,maxlength:32,trim:!0},ma_gd:{type:String,default:"0",maxlength:32,trim:!0},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,
6
6
  min:0,default:1},ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32,trim:!0},ten_kh:{type:String},ma_kho:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ma_bp:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ngay_giao:{type:Date},id_bao_gia:{type:String,maxlength:1024},id_dnm:{type:String,maxlength:1024},id_kehoachmh:{type:String,maxlength:1024},id_contract:{type:String,maxlength:1024},ma_thue:{type:String,
7
7
  uppercase:!0,maxlength:32},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},ong_ba:{type:String,default:"",maxlength:1024},dien_giai:{type:String,default:"",maxlength:1024},exfields:Schema.Types.Mixed,dot_thanh_toan:[],phi_khac_nt:{type:Number,default:0},phi_khac:{type:Number,default:0},trang_thai:{type:String,maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},nguoi_lien_he:String,dien_thoai:String,tinh_thanh:String,quan_huyen:String,
@@ -1,6 +1,6 @@
1
- const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),pn1=require("./pn1"),pn9=require("./pn9"),po1=require("./po1"),async=require("async"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_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,
2
- default:0},tien_ck_nt:{type:Number,default:0},gia_von_nk:{type:Number,default:0},gia_von_nk_nt:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},tien_thue_nk:{type:Number,default:0},tien_thue_nk_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},ma_bp:{type:String,uppercase:!0,default:"",
3
- 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_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}});
1
+ const validVt=require("../libs/validator-vt"),validator=require("../libs/validator"),pn1=require("./pn1"),pn9=require("./pn9"),po1=require("./po1"),async=require("../libs/asyncCompat"),detailSchema=new Schema({ma_vt:{type:String,required:!0,uppercase:!0,maxlength:1024},ma_dvt:{type:String,required:!0,maxlength:32},so_luong:{type:Number,default:0},gia:{type:Number,default:0},gia_nt:{type:Number,default:0},tien:{type:Number,default:0},tien_nt:{type:Number,default:0},ty_le_ck:{type:Number,default:0},
2
+ tien_ck:{type:Number,default:0},tien_ck_nt:{type:Number,default:0},gia_von_nk:{type:Number,default:0},gia_von_nk_nt:{type:Number,default:0},tien_hang_nk:{type:Number,default:0},tien_hang_nk_nt:{type:Number,default:0},thue_suat_nk:{type:Number,default:0},tien_thue_nk:{type:Number,default:0},tien_thue_nk_nt:{type:Number,default:0},tt:{type:Number,default:0},tt_nt:{type:Number,default:0},dien_giai:{type:String,maxlength:1024},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},ma_bp:{type:String,
3
+ uppercase:!0,default:"",maxlength:32},ma_phi:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,default:"",maxlength:32},ma_dt:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},exfields_detail:Schema.Types.Mixed,line:{type:Number,default:0}});
4
4
  detailSchema.validate={ma_kh:validator.existsKh,ma_vt:validVt.existsVt,ma_dvt:validator.existsDvt};
5
5
  const purchase_contractSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,default:"PURCHASE_CONTRACT",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,
6
6
  required:!0,min:0,default:1},ma_kh:{type:String,uppercase:!0,required:!0,default:"",maxlength:32},ten_kh:String,ma_kho:{type:String,uppercase:!0,default:"",maxlength:32},ma_nv:{type:String,uppercase:!0,default:"",maxlength:32},ma_hd:{type:String,uppercase:!0,required:"Y\u00eau c\u1ea7u nh\u1eadp s\u1ed1 h\u1ee3p \u0111\u1ed3ng",maxlength:32},id_bao_gia:{type:String,maxlength:1024},id_dnm:{type:String,maxlength:1024},id_kehoachmh:{type:String,maxlength:1024},ma_thue:{type:String,uppercase:!0,maxlength:32},
@@ -1,5 +1,5 @@
1
- const {evalute}=require("../libs/utils"),axios=require("axios"),async=require("async"),smsaccountSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},account_name:{type:String,required:!0,trim:!0},account_type:{type:String,uppercase:!0,required:!0,trim:!0,default:"QC"},script_send:{type:String,required:!0},template: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,
2
- default:""}});(global.configs||{}).createIndexes&&(smsaccountSchema.index({id_app:1,account_name:1},{unique:!0}),smsaccountSchema.index({account_name:"text"}),smsaccountSchema.index({account_type:1}),smsaccountSchema.index({status:1}),smsaccountSchema.index({user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.smsaccount||mongoose.model("smsaccount",smsaccountSchema);
1
+ const {evalute}=require("../libs/utils"),axios=require("axios"),async=require("../libs/asyncCompat"),smsaccountSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},account_name:{type:String,required:!0,trim:!0},account_type:{type:String,uppercase:!0,required:!0,trim:!0,default:"QC"},script_send:{type:String,required:!0},template: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:""},
2
+ user_updated:{type:String,default:""}});(global.configs||{}).createIndexes&&(smsaccountSchema.index({id_app:1,account_name:1},{unique:!0}),smsaccountSchema.index({account_name:"text"}),smsaccountSchema.index({account_type:1}),smsaccountSchema.index({status:1}),smsaccountSchema.index({user_created:1,visible_to:1,visible_to_users:1}));const model=mongoose.models.smsaccount||mongoose.model("smsaccount",smsaccountSchema);
3
3
  model.send=async($account_start$$,$phone$$,$content$$)=>{try{if(!$phone$$)throw"Y\u00eau c\u1ea7u s\u1ed1 \u0111i\u1ec7n tho\u1ea1i ng\u01b0\u1eddi nh\u1eadn";if(!$account_start$$.script_send)throw"Script \u0111\u1ec3 g\u1eedi sms kh\u00f4ng t\u1ed3n t\u1ea1i";if(!$content$$)throw"Y\u00eau c\u1ea7u n\u1ed9i dung g\u1eedi \u0111i";let $str_func$$=`return (async ()=>{
4
4
  try{
5
5
  ${$account_start$$.script_send}
@@ -1,6 +1,6 @@
1
- const async=require("async"),moment=require("moment"),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,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,maxlength:32},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},ngay_tt:Date,tat_toan:{type:Boolean,default:!1},ma_kho:{type:String,uppercase:!0,maxlength:32},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,default:"",uppercase:!0,
3
- 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},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,listinfo_code:String});
1
+ const async=require("../libs/asyncCompat"),moment=require("moment"),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,uppercase:!0,maxlength:32},
2
+ ma_nt:{type:String,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,maxlength:32},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},ngay_tt:Date,tat_toan:{type:Boolean,default:!1},ma_kho:{type:String,uppercase:!0,maxlength:32},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,
3
+ 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},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,listinfo_code:String});
4
4
  (global.configs||{}).createIndexes&&(tdttcoSchema.index({id_app:1,id_ct:1,ngay_ct:-1,ma_kh:1}),tdttcoSchema.index({id_app:1,tat_toan:1}),tdttcoSchema.index({id_app:1,han_tt:1,ngay_tt:-1}),tdttcoSchema.index({id_ct:1}),tdttcoSchema.index({id_app:1,so_ct:1,ngay_ct:-1}),tdttcoSchema.index({id_app:1,so_hd:1,ngay_hd:-1}),tdttcoSchema.index({id_app:1,tk_co:1}),tdttcoSchema.index({id_app:1,ma_kho:1,ma_kh:1}),tdttcoSchema.index({id_app:1,ma_kh:1}),tdttcoSchema.index({id_app:1,status:1}),tdttcoSchema.index({id_app:1,
5
5
  user_created:1,visible_to:1,visible_to_users:1}));tdttcoSchema.pre("save",function($next$$){this.ngay_tt=moment(this.ngay_hd).add(this.han_tt||0,"days").toDate();$next$$()});const model=mongoose.models.tdttco||mongoose.model("tdttco",tdttcoSchema);
6
6
  model.getBalance=$condition$$=>new Promise(($resolve$$,$reject$$)=>{async.series({invoices:function($callback$$){setImmediate(()=>{let $query$$={...$condition$$};delete $query$$.access_token;$query$$.id_ct&&delete $query$$.id_ct;$query$$.id_hd&&($query$$.id_ct=$query$$.id_hd,delete $query$$.id_hd);model.find($query$$).lean().then($results$$=>{let $invoices$$=[];for(let $i$$=0;$i$$<$results$$.length;$i$$++){const $invoice$$=$results$$[$i$$];$invoice$$.line=$i$$;$invoices$$.push($invoice$$)}$callback$$(null,
@@ -1,6 +1,6 @@
1
- const async=require("async"),moment=require("moment"),tdttnoSchema=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,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_no:{type:String,maxlength:32},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},ngay_tt:Date,tat_toan:{type:Boolean,default:!1},ma_kho:{type:String,default:"",uppercase:!0,maxlength:32},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,default:"",
3
- 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},exfields_detail: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:""},listinfo_code:String});
1
+ const async=require("../libs/asyncCompat"),moment=require("moment"),tdttnoSchema=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,uppercase:!0,maxlength:32},
2
+ ma_nt:{type:String,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_no:{type:String,maxlength:32},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32},dien_giai:{type:String,default:"",maxlength:1024},han_tt:{type:Number,default:0},ngay_tt:Date,tat_toan:{type:Boolean,default:!1},ma_kho:{type:String,default:"",uppercase:!0,maxlength:32},ma_bp:{type:String,default:"",uppercase:!0,maxlength:32},ma_phi:{type:String,
3
+ 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},exfields_detail: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:""},listinfo_code:String});
4
4
  (global.configs||{}).createIndexes&&(tdttnoSchema.index({id_app:1,ma_dvcs:1,so_ct:-1,ngay_ct:1}),tdttnoSchema.index({id_app:1,tat_toan:1}),tdttnoSchema.index({id_app:1,han_tt:1,ngay_tt:-1}),tdttnoSchema.index({id_ct:1}),tdttnoSchema.index({id_app:1,so_ct:1,so_hd:1}),tdttnoSchema.index({id_app:1,ngay_ct:1}),tdttnoSchema.index({id_app:1,ngay_hd:1}),tdttnoSchema.index({id_app:1,tk_co:1}),tdttnoSchema.index({id_app:1,ma_kh:1}),tdttnoSchema.index({id_app:1,ma_kho:1}),tdttnoSchema.index({id_app:1,ma_kho:1,
5
5
  ma_kh:1}),tdttnoSchema.index({id_app:1,status:1}),tdttnoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}));tdttnoSchema.pre("save",function($next$$){this.ngay_tt=moment(this.ngay_hd).add(this.han_tt||0,"days").toDate();$next$$()});const model=mongoose.models.tdttno||mongoose.model("tdttno",tdttnoSchema);
6
6
  model.getBalance=$condition$$=>new Promise(($resolve$$,$reject$$)=>{async.series({invoices:function($callback$$){setImmediate(()=>{let $query$$={...$condition$$};delete $query$$.access_token;$query$$.id_ct&&delete $query$$.id_ct;$query$$.id_hd&&($query$$.id_ct=$query$$.id_hd,delete $query$$.id_hd);model.find($query$$).lean().then($results$$=>{let $invoices$$=[];for(let $i$$=0;$i$$<$results$$.length;$i$$++){const $invoice$$=$results$$[$i$$];$invoice$$.line=$i$$;$invoices$$.push($invoice$$)}$callback$$(null,
@@ -1,3 +1,3 @@
1
- const controller=require("../../controllers/controller"),model=global.getModel("afflink"),async=require("async");
1
+ const controller=require("../../controllers/controller"),model=global.getModel("afflink"),async=require("../../libs/asyncCompat");
2
2
  module.exports=function($router$$){(new controller($router$$,model,"afflink",{sort:{date_created:-1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,onView:($user$$,$items$$,$next$$)=>{async.map($items$$,($r$$,$callback$$)=>{setImmediate(async()=>{$r$$.aff_link=`${configs.api_url}/aff/${$r$$._id}`;$r$$.da_hoan_thanh=await global.getModel("so1").countDocuments({id_app:$r$$.id_app,id_afflink:$r$$._id.toString(),trang_thai:{$in:["8"]}});$r$$.da_tra_lai=await global.getModel("hd7").countDocuments({id_app:$r$$.id_app,
3
3
  "details.id_afflink":$r$$._id.toString(),trang_thai:{$nin:["9"]}});$callback$$()})},()=>{$next$$(null,$items$$)})},onCreating:($user$$,$data$$,$next$$)=>{delete $data$$.da_truy_cap;delete $data$$.da_dat_hang;delete $data$$.da_giao;delete $data$$.da_huy;delete $data$$.da_tra_lai;$next$$(null,$data$$)},onUpdating:($user$$,$data$$,$obj$$,$next$$)=>{delete $data$$.da_truy_cap;delete $data$$.da_dat_hang;delete $data$$.da_giao;delete $data$$.da_huy;delete $data$$.da_tra_lai;$next$$(null,$data$$,$obj$$)}})).route()};
@@ -1,4 +1,4 @@
1
- const model=global.getModel("assbooking"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),{spend}=require("../../libs/blockchainconnect"),AssProduct=global.getModel("assproduct"),async=require("async"),moment=require("moment");
1
+ const model=global.getModel("assbooking"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),{spend}=require("../../libs/blockchainconnect"),AssProduct=global.getModel("assproduct"),async=require("../../libs/asyncCompat"),moment=require("moment");
2
2
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assbooking",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>$data$$.trang_thai=="9"||isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,AssProduct,{where:{id_product:"id"},fields:["ten_san_pham",{hinh_anh_ks:"hinh_anh"},
3
3
  "logo","ma_loai","wallet_hotel","ds_phong",{user_hotel2:"user_hotel"}]});$items$$.forEach(async $item$$=>{$item$$.thong_tin_phong=($item$$.ds_phong||[]).find($f$$=>($f$$.ma_phong||"").toLowerCase()===($item$$.ma_phong||"").toLowerCase());delete $item$$.ds_phong;$item$$.trang_thai=="1"&&$item$$.ngay_nhan_phong&&moment($item$$.ngay_nhan_phong).toDate().getTime()<moment().endOf("date").toDate().getTime()&&($item$$.trang_thai="8",await model.updateOne({_id:$item$$._id},{trang_thai:"8"}));$item$$.user_hotel2&&
4
4
  $item$$.id_product&&$item$$.user_hotel!=$item$$.user_hotel2&&(await model.updateOne({_id:$item$$._id},{user_hotel:$item$$.user_hotel2}),$item$$.user_hotel=$item$$.user_hotel2);delete $item$$.user_hotel2});$next$$(null,$items$$)},onCreating:async($user$$,$obj$$,$next$$)=>{const $hotel$$=await global.getModel("assproduct").findOne({id_app:$obj$$.id_app,id:$obj$$.id_product,status:!0}).lean();if(!$hotel$$)return Logger.error("error booking",$obj$$),$next$$("Kh\u00e1ch s\u1ea1n kh\u00f4ng t\u1ed3n t\u1ea1i");
@@ -1,15 +1,15 @@
1
1
  const model=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),trangthai=global.getModel("trangthai"),introducer=global.getModel("introducer"),asskey=global.getModel("asskey"),introducecode=global.getModel("introducecode"),App=global.getModel("app"),Usergroup=global.getModel("usergroup"),Participant=global.getModel("participant"),pt1=global.getModel("pt1"),customer=global.getModel("customer"),controller=require("../../controllers/controller"),
2
- {isSupperAdmin}=require("../../libs/utils"),async=require("async"),moment=require("moment"),xacdinhnguoinhanhoahong=async $investment$$=>{$investment$$.ty_le_hoa_hong=void 0;$investment$$.address_hoa_hong=void 0;$investment$$.denom_hoa_hong=void 0;$investment$$.ky_tra_hoa_hong=void 0;$investment$$.introduce_code=void 0;try{const $intro$$=await introducer.findOne({id_app:$investment$$.id_app,be_introduced:$investment$$.user_created});if($intro$$&&$intro$$.introduce_code){const $introduce_code$$=await introducecode.findOne({id_app:$investment$$.id_app,
3
- introduce_code:$intro$$.introduce_code}).lean();let $receiver$$;if($introduce_code$$){if($introduce_code$$.wallet_address_receive_reward)$receiver$$=$introduce_code$$.wallet_address_receive_reward;else{let $k$$=await asskey.findOne({id_app:$investment$$.id_app,username:$intro$$.be_introduced_by});if($k$$)$receiver$$=$k$$.address;else return}var $appInfo$$=await App.findOne({_id:$investment$$.id_app});if($appInfo$$&&$appInfo$$.wallet_token&&$appInfo$$.wallet_address){var $usergroup$$,$par$$=await Participant.findOne({id_app:$investment$$.id_app,
4
- email:$intro$$.be_introduced_by}).lean();$par$$&&$par$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$investment$$.id_app,_id:$par$$.group_id}).lean());$usergroup$$||={};var $period$$=await assperiod.findOne({id_app:$investment$$.id_app,id:$investment$$.id_period});$period$$||={};$period$$.ty_le_hoa_hong_groups=$period$$.ty_le_hoa_hong_groups||[];var $ty_le_hoa_hong_group$$=$period$$.ty_le_hoa_hong_groups.find($t$$=>$t$$.id_user_group===$usergroup$$._id);$ty_le_hoa_hong_group$$||=$period$$.ty_le_hoa_hong_groups.find($t$$=>
5
- !$t$$.id_user_group)||{};var $ty_le_hoa_hong$$=$ty_le_hoa_hong_group$$.ty_le_hoa_hong||$usergroup$$.ty_le_hoa_hong||$appInfo$$.ty_le_hoa_hong||0;var $tang_gioi_thieu_denom$$=$ty_le_hoa_hong_group$$.denom||$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom;$investment$$.ty_le_hoa_hong=$ty_le_hoa_hong$$;$investment$$.address_hoa_hong=$receiver$$;$investment$$.denom_hoa_hong=$tang_gioi_thieu_denom$$;$investment$$.ky_tra_hoa_hong=$period$$.ky_tra_hoa_hong;$investment$$.introduce_code=
6
- $intro$$.introduce_code}}}else Logger.info("user nay khong co nguoi gioi thieu",$investment$$.user_created)}catch($e$$){Logger.error("Khong the tinh hoa hong cho nguoi gioi thieu",$e$$)}},phathanh=async($period$$,$obj$$,$product$$)=>{$obj$$.id_product=$period$$.id_product;$obj$$.gia=$period$$.gia;$obj$$.lai_suat_cam_ket=$period$$.lai_suat_cam_ket;$obj$$.lai_suat_truoc_han=$period$$.lai_suat_truoc_han;$obj$$.ky_han=$period$$.ky_han;$obj$$.cho_phep_rut_von=$period$$.cho_phep_rut_von;$obj$$.cho_phep_chuyen_nhuong=
7
- $period$$.cho_phep_chuyen_nhuong;$obj$$.denom=$period$$.denom;$obj$$.tg_xu_ly_rut_von=$period$$.tg_xu_ly_rut_von;$obj$$.co_phan=$period$$.co_phan;$obj$$.goi_dau_tu=$period$$.goi_dau_tu;$obj$$.ky_tinh_lai=$period$$.ky_tinh_lai;$obj$$.co_phan?($obj$$.ngay_phat_hanh=$period$$.ngay_phat_hanh,$obj$$.ngay_dao_han=null):($obj$$.ngay_phat_hanh=new Date,$obj$$.ngay_dao_han=$obj$$.ky_han>0?moment($obj$$.ngay_phat_hanh).add($obj$$.ky_han,"days").toDate():$period$$.ngay_chia_loi_nhuan);switch($obj$$.ky_tinh_lai){case 1:$obj$$.ngay_tinh_lai_ky_truoc=
8
- $obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"days").toDate();break;case 2:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"weeks").toDate();break;case 3:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"months").toDate();break;case 4:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;
9
- $obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"quarters").toDate();break;case 5:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"years").toDate();break;case 9:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh,$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"hours").toDate()}var $hoahong_totalMoney$$=Number($obj$$.gia)*Number($obj$$.so_luong);const $productCreator$$=
10
- $product$$.creator;await global.getModel("assbank").sendCoins($period$$.id_app,$obj$$.creator,$productCreator$$,$hoahong_totalMoney$$,$obj$$.denom,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Thanh to\u00e1n \u0111\u1ea7u t\u01b0"});if($obj$$.ky_tra_hoa_hong==0&&$obj$$.ty_le_hoa_hong>0&&$obj$$.address_hoa_hong){$hoahong_totalMoney$$=Math.roundBy($obj$$.ty_le_hoa_hong*$hoahong_totalMoney$$/100,0);let $denomHoaHong$$=$obj$$.denom_hoa_hong;$denomHoaHong$$==""&&($denomHoaHong$$=
11
- $obj$$.denom);await global.getModel("assbank").sendCoins($period$$.id_app,$productCreator$$,$obj$$.address_hoa_hong,$hoahong_totalMoney$$,$denomHoaHong$$,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"BONUS-INVESTMENT",memo:"Hoa h\u1ed3ng"});$obj$$.hoa_hong_da_tra=$hoahong_totalMoney$$}await global.getModel("assbank").mintCoins($period$$.id_app,$obj$$.creator,$obj$$.so_luong,$obj$$.token,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Nh\u1eadn token \u0111\u1ea7u t\u01b0"});
12
- $period$$.da_dau_tu=($period$$.da_dau_tu||0)+$obj$$.so_luong;await $period$$.save();$product$$.da_dau_tu=($product$$.da_dau_tu||0)+$obj$$.so_luong;$product$$.gia_tri_da_dau_tu=($product$$.gia_tri_da_dau_tu||0)+$obj$$.so_luong*$obj$$.gia;await $product$$.save()};
2
+ {isSupperAdmin}=require("../../libs/utils"),async=require("../../libs/asyncCompat"),moment=require("moment"),xacdinhnguoinhanhoahong=async $investment$$=>{$investment$$.ty_le_hoa_hong=void 0;$investment$$.address_hoa_hong=void 0;$investment$$.denom_hoa_hong=void 0;$investment$$.ky_tra_hoa_hong=void 0;$investment$$.introduce_code=void 0;try{const $intro$$=await introducer.findOne({id_app:$investment$$.id_app,be_introduced:$investment$$.user_created});if($intro$$&&$intro$$.introduce_code){const $introduce_code$$=
3
+ await introducecode.findOne({id_app:$investment$$.id_app,introduce_code:$intro$$.introduce_code}).lean();let $receiver$$;if($introduce_code$$){if($introduce_code$$.wallet_address_receive_reward)$receiver$$=$introduce_code$$.wallet_address_receive_reward;else{let $k$$=await asskey.findOne({id_app:$investment$$.id_app,username:$intro$$.be_introduced_by});if($k$$)$receiver$$=$k$$.address;else return}var $appInfo$$=await App.findOne({_id:$investment$$.id_app});if($appInfo$$&&$appInfo$$.wallet_token&&
4
+ $appInfo$$.wallet_address){var $usergroup$$,$par$$=await Participant.findOne({id_app:$investment$$.id_app,email:$intro$$.be_introduced_by}).lean();$par$$&&$par$$.group_id&&($usergroup$$=await Usergroup.findOne({id_app:$investment$$.id_app,_id:$par$$.group_id}).lean());$usergroup$$||={};var $period$$=await assperiod.findOne({id_app:$investment$$.id_app,id:$investment$$.id_period});$period$$||={};$period$$.ty_le_hoa_hong_groups=$period$$.ty_le_hoa_hong_groups||[];var $ty_le_hoa_hong_group$$=$period$$.ty_le_hoa_hong_groups.find($t$$=>
5
+ $t$$.id_user_group===$usergroup$$._id);$ty_le_hoa_hong_group$$||=$period$$.ty_le_hoa_hong_groups.find($t$$=>!$t$$.id_user_group)||{};var $ty_le_hoa_hong$$=$ty_le_hoa_hong_group$$.ty_le_hoa_hong||$usergroup$$.ty_le_hoa_hong||$appInfo$$.ty_le_hoa_hong||0;var $tang_gioi_thieu_denom$$=$ty_le_hoa_hong_group$$.denom||$usergroup$$.tang_gioi_thieu_denom||$appInfo$$.tang_gioi_thieu_denom;$investment$$.ty_le_hoa_hong=$ty_le_hoa_hong$$;$investment$$.address_hoa_hong=$receiver$$;$investment$$.denom_hoa_hong=
6
+ $tang_gioi_thieu_denom$$;$investment$$.ky_tra_hoa_hong=$period$$.ky_tra_hoa_hong;$investment$$.introduce_code=$intro$$.introduce_code}}}else Logger.info("user nay khong co nguoi gioi thieu",$investment$$.user_created)}catch($e$$){Logger.error("Khong the tinh hoa hong cho nguoi gioi thieu",$e$$)}},phathanh=async($period$$,$obj$$,$product$$)=>{$obj$$.id_product=$period$$.id_product;$obj$$.gia=$period$$.gia;$obj$$.lai_suat_cam_ket=$period$$.lai_suat_cam_ket;$obj$$.lai_suat_truoc_han=$period$$.lai_suat_truoc_han;
7
+ $obj$$.ky_han=$period$$.ky_han;$obj$$.cho_phep_rut_von=$period$$.cho_phep_rut_von;$obj$$.cho_phep_chuyen_nhuong=$period$$.cho_phep_chuyen_nhuong;$obj$$.denom=$period$$.denom;$obj$$.tg_xu_ly_rut_von=$period$$.tg_xu_ly_rut_von;$obj$$.co_phan=$period$$.co_phan;$obj$$.goi_dau_tu=$period$$.goi_dau_tu;$obj$$.ky_tinh_lai=$period$$.ky_tinh_lai;$obj$$.co_phan?($obj$$.ngay_phat_hanh=$period$$.ngay_phat_hanh,$obj$$.ngay_dao_han=null):($obj$$.ngay_phat_hanh=new Date,$obj$$.ngay_dao_han=$obj$$.ky_han>0?moment($obj$$.ngay_phat_hanh).add($obj$$.ky_han,
8
+ "days").toDate():$period$$.ngay_chia_loi_nhuan);switch($obj$$.ky_tinh_lai){case 1:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"days").toDate();break;case 2:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"weeks").toDate();break;case 3:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,
9
+ "months").toDate();break;case 4:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"quarters").toDate();break;case 5:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh;$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"years").toDate();break;case 9:$obj$$.ngay_tinh_lai_ky_truoc=$obj$$.ngay_phat_hanh,$obj$$.ngay_tinh_lai_ky_tiep_theo=moment($obj$$.ngay_tinh_lai_ky_truoc).add(1,"hours").toDate()}var $hoahong_totalMoney$$=
10
+ Number($obj$$.gia)*Number($obj$$.so_luong);const $productCreator$$=$product$$.creator;await global.getModel("assbank").sendCoins($period$$.id_app,$obj$$.creator,$productCreator$$,$hoahong_totalMoney$$,$obj$$.denom,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Thanh to\u00e1n \u0111\u1ea7u t\u01b0"});if($obj$$.ky_tra_hoa_hong==0&&$obj$$.ty_le_hoa_hong>0&&$obj$$.address_hoa_hong){$hoahong_totalMoney$$=Math.roundBy($obj$$.ty_le_hoa_hong*$hoahong_totalMoney$$/100,0);
11
+ let $denomHoaHong$$=$obj$$.denom_hoa_hong;$denomHoaHong$$==""&&($denomHoaHong$$=$obj$$.denom);await global.getModel("assbank").sendCoins($period$$.id_app,$productCreator$$,$obj$$.address_hoa_hong,$hoahong_totalMoney$$,$denomHoaHong$$,{id_product:$obj$$.id_product,id_period:$obj$$.id_period,event:"BONUS-INVESTMENT",memo:"Hoa h\u1ed3ng"});$obj$$.hoa_hong_da_tra=$hoahong_totalMoney$$}await global.getModel("assbank").mintCoins($period$$.id_app,$obj$$.creator,$obj$$.so_luong,$obj$$.token,{id_product:$obj$$.id_product,
12
+ id_period:$obj$$.id_period,event:"INVESTMENT",memo:"Nh\u1eadn token \u0111\u1ea7u t\u01b0"});$period$$.da_dau_tu=($period$$.da_dau_tu||0)+$obj$$.so_luong;await $period$$.save();$product$$.da_dau_tu=($product$$.da_dau_tu||0)+$obj$$.so_luong;$product$$.gia_tri_da_dau_tu=($product$$.gia_tri_da_dau_tu||0)+$obj$$.so_luong*$obj$$.gia;await $product$$.save()};
13
13
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assinvestment",{sort:{date_created:-1},unique:["token"],notNeedRight:!0,requireOtp:($data$$,$options$$)=>$data$$.trang_thai=="0"||$data$$.trang_thai=="2"||$data$$.trang_thai=="7"||isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{let $id_app$$=$user$$.current_id_app;async.mapSeries($items$$,
14
14
  ($item$$,$cb$$)=>{setImmediate(async()=>{$item$$.wallet_address=$item$$.creator;$item$$.id_period&&(await [$item$$].asyncJoinModel2($id_app$$,assperiod,{where:{id_period:"id"},fields:"ten_ky_han ky_han id_product gia lai_suat_cam_ket lai_suat_truoc_han cho_phep_rut_von cho_phep_chuyen_nhuong denom tg_xu_ly_rut_von co_phan id_rpt ky_tinh_lai goi_dau_tu tru_lai_da_tra han_tt".split(" ")}),await [$item$$].asyncJoinModel2($id_app$$,assproduct,{where:{id_product:"id"},fields:["ma_loai","ten_san_pham",
15
15
  {product_token:"token"},{gia_tri_hien_tai_san_pham:"gia_tri_hien_tai"},{tong_gia_tri_huy_dong:"tong_gia_tri"},{tong_so_token_phat_hanh:"tong_so_token"}]}),$item$$.tong_gia_tri=($item$$.gia||0)*($item$$.so_luong||0),$item$$.lai_du_tinh=Math.roundBy($item$$.lai_suat_cam_ket/365/100*$item$$.tong_gia_tri*$item$$.ky_han,0),$item$$.tong_gia_tri_dao_han=$item$$.tong_gia_tri+$item$$.lai_du_tinh);$item$$.con_lai=$item$$.da_dao_han?0:$item$$.so_luong-($item$$.da_rut_von||0);$item$$.han_tt||($item$$.han_tt=
@@ -1,5 +1,5 @@
1
- const model=global.getModel("asskey"),assrequest=global.getModel("assrequest"),assinvestment=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),User=global.getModel("user"),Receiver=global.getModel("assreceiver"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),async=require("async"),moment=require("moment"),{getWallet,getKeyInfo,bankBalancesGet,spend,getLatestHash,getHashById,mining,validHash}=
2
- require("../../libs/blockchainconnect");
1
+ const model=global.getModel("asskey"),assrequest=global.getModel("assrequest"),assinvestment=global.getModel("assinvestment"),assproduct=global.getModel("assproduct"),assperiod=global.getModel("assperiod"),User=global.getModel("user"),Receiver=global.getModel("assreceiver"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),async=require("../../libs/asyncCompat"),moment=require("moment"),{getWallet,getKeyInfo,bankBalancesGet,spend,getLatestHash,getHashById,
2
+ mining,validHash}=require("../../libs/blockchainconnect");
3
3
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asskey",{unique:["address"],sort:{date_created:1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>$options$$.action=="delete"?!0:!1,onFinding:async($user$$,$condition$$,$next$$,$options$$={})=>{$options$$.req&&$options$$.req.query&&!$options$$.req.query.has_balance&&($options$$.req.query.has_balance=$condition$$.has_balance);$condition$$.wallet_type={$in:[9,8]};delete $condition$$.has_balance;if($options$$.req&&
4
4
  $options$$.req.query&&!$options$$.req.query.count&&await model.countDocuments({user_created:$user$$.email,id_app:$user$$.current_id_app,wallet_type:9,address:{$regex:global.configs.ADDRESS_PREFIX||""}})===0)try{await model.createWallet($user$$.current_id_app,$user$$.email,$user$$.name,9)}catch($e$$){Logger.error($e$$)}$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$,$options$$={})=>{await $items$$.asyncJoinModel2(null,User,{where:{username:"email"},fields:{fullname:"name"}});$options$$.req&&
5
5
  $options$$.req.query&&$options$$.req.query.has_balance?async.mapSeries($items$$,($item$$,$callback$$)=>{setImmediate(async()=>{delete $item$$.mnemonic;delete $item$$.private_key;delete $item$$.privateKey;$item$$.name=$item$$.name.replace("V\u00ed","T\u00e0i kho\u1ea3n").replace("v\u00ed","t\u00e0i kho\u1ea3n");try{let $bls$$=await bankBalancesGet($item$$.id_app,$item$$.address);await $bls$$.filter($b$$=>$b$$.denom!==configs.MAIN_DENOM).asyncJoinModel2($user$$.current_id_app,assinvestment,{where:{denom:"token"},
@@ -1,4 +1,4 @@
1
- const model=global.getModel("assneedtobuy"),controller=require("../../controllers/controller"),Trangthai=global.getModel("trangthai"),{isSupperAdmin}=require("../../libs/utils"),async=require("async");
1
+ const model=global.getModel("assneedtobuy"),controller=require("../../controllers/controller"),Trangthai=global.getModel("trangthai"),{isSupperAdmin}=require("../../libs/utils"),async=require("../../libs/asyncCompat");
2
2
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assneedtobuy",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{async.mapSeries($items$$,($item$$,$cb$$)=>{setImmediate(async()=>{try{await model.updateNeedToBy($item$$)}catch($e$$){Logger.error("view asssell",
3
3
  $e$$)}$cb$$(null,$item$$)})},async()=>{await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSNEEDTOBUY",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});$next$$(null,$items$$)})},onCreating:async($id_app_user$$,$NeedToBuy$$,$next$$)=>{var $creator_period_totalMoney$$=$NeedToBuy$$.creator;if(!await global.getModel("asskey").findOne({id_app:$id_app_user$$.current_id_app,username:$id_app_user$$.email,address:$creator_period_totalMoney$$}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");
4
4
  $id_app_user$$=$id_app_user$$.current_id_app;$creator_period_totalMoney$$=await global.getModel("assperiod").findOne({id_app:$id_app_user$$,id:$NeedToBuy$$.id_period});if(!$creator_period_totalMoney$$)return $next$$("Kh\u00f4ng t\u1ed3n t\u1ea1i g\u00f3i \u0111\u1ea7u t\u01b0");$NeedToBuy$$.id_product=$creator_period_totalMoney$$.id_product;$NeedToBuy$$.gia_mua=$creator_period_totalMoney$$.gia;$NeedToBuy$$.ky_han=$creator_period_totalMoney$$.ky_han;$NeedToBuy$$.cho_phep_rut_von=$creator_period_totalMoney$$.cho_phep_rut_von;
@@ -1,4 +1,4 @@
1
- const model=global.getModel("assperiod"),assproduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),async=require("async");
1
+ const model=global.getModel("assperiod"),assproduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),async=require("../../libs/asyncCompat");
2
2
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assperiod",{sort:{hoat_dong:-1,date_created:-1},onFinding:async($pros_user$$,$condition$$,$next$$)=>{$condition$$.ma_loai&&($pros_user$$=await assproduct.find({id_app:$pros_user$$.current_id_app,ma_loai:$condition$$.ma_loai,status:!0},{id:1}),$condition$$.id_product={$in:$pros_user$$.map($p$$=>$p$$.id)},delete $condition$$.ma_loai);$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{await $items$$.asyncJoinModel2($user$$.current_id_app,
3
3
  assproduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai",{product_token:"token"},"gia_tri_hien_tai","sl_nhan_vien","nganh_nghe"]});async.mapSeries($items$$,($item$$,$cb$$)=>{$item$$.id||($item$$.id=$item$$._id.toString());setImmediate(async()=>{if($item$$.goi_dau_tu&&$item$$.frm_step_code){const $frm$$=await global.getModel("financialroadmap").findOne({id_app:$item$$.id_app,code:$item$$.id_product.toString()}).lean();$frm$$&&($item$$.frm_step=($frm$$.steps||[]).find($s$$=>
4
4
  $s$$.code===$item$$.frm_step_code),$item$$.frm_step&&$item$$.frm_step.sl_slot&&($item$$.frm_step.sl_cp_slot=$item$$.frm_step.dillution/100*$item$$.frm_step.total_share/$item$$.frm_step.sl_slot))}$cb$$(null,$item$$)})},async()=>{$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSPERIOD"}),fields:["ten_trang_thai","color"]}],function(){$next$$(null,$items$$)})})},onCreating:async($frm$jscomp$1_frm_step_product_user$$,$obj$$,$next$$)=>{var $amount_creator_so_luong_goi_dau_tu$$=
@@ -1,4 +1,4 @@
1
- const model=global.getModel("asssell"),controller=require("../../controllers/controller"),AssProduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),async=require("async"),updateSell=model.updateSell,moment=require("moment"),{isSupperAdmin}=require("../../libs/utils");
1
+ const model=global.getModel("asssell"),controller=require("../../controllers/controller"),AssProduct=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),async=require("../../libs/asyncCompat"),updateSell=model.updateSell,moment=require("moment"),{isSupperAdmin}=require("../../libs/utils");
2
2
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"asssell",{sort:{date_created:-1},notNeedRight:!0,requireOtp:($data$$,$options$$)=>isSupperAdmin($options$$.user.email.toLowerCase())?!1:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:async($user$$,$items$$,$next$$)=>{async.mapSeries($items$$.filter($item$$=>($item$$.id||$item$$.id===0)&&$item$$.trang_thai=="0"),($item$$,$cb$$)=>{setImmediate(async()=>{try{if(await updateSell($item$$),
3
3
  $item$$.goi_dau_tu)try{$item$$.market_value=await global.getModel("assinvestment").getInvestmentMarketValue($item$$.id_app,$item$$.token)}catch($e$$){Logger.error($e$$)}}catch($e$$){Logger.error("view asssell",$e$$)}$cb$$(null,$item$$)})},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);await $items$$.asyncJoinModel2(null,Trangthai,{where:$item$$=>({ma_ct:"ASSSELL",ma_trang_thai:$item$$.trang_thai}),fields:["ten_trang_thai","color"]});await $items$$.asyncJoinModel2($user$$.current_id_app,
4
4
  AssProduct,{where:{id_product:"id"},fields:["ten_san_pham","hinh_anh","logo","ma_loai"]});$next$$(null,$items$$)})},onCreating:async($NeedToBuy_user$$,$Sell$$,$next$$)=>{var $app_creator_invest$$=$Sell$$.creator;if(!await global.getModel("asskey").findOne({id_app:$NeedToBuy_user$$.current_id_app,username:$NeedToBuy_user$$.email,address:$app_creator_invest$$}).lean())return $next$$("\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng thu\u1ed9c v\u1ec1 b\u1ea1n");$app_creator_invest$$=await global.getModel("app").findOne({_id:$NeedToBuy_user$$.current_id_app}).lean();
@@ -1,14 +1,14 @@
1
- const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),utils=require("../../libs/utils"),ckvt=require("../../libs/ckvt"),async=require("async"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},onFinding:($user$$,
2
- $condition$$,$next$$,$options$$={})=>{$options$$.req&&$user$$.email==="public"?$condition$$.session_created=($options$$.req.cookies||{}).uid:$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:async($user$$,$result$$,$fn$$)=>{async.series({app:$callback$$=>{$result$$.joinModel2(null,App,{where:{id_app_vt:"_id"},fields:[{name_app_vt:"name"}]},function($kq$$){$callback$$(null,$kq$$)})},user:$callback$$=>{$result$$.joinModel2(null,User,{where:{user:"email"},fields:[{user_name:"name"},
3
- {partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$$=>{$result$$.joinModel2(null,Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","ten_vt_eng","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai","ma_thue","thue_suat"]},function($kq$$){setImmediate(async()=>{await $result$$.filter($r$$=>$r$$.ma_thue).asyncJoinModel2(null,
4
- "vat",{where:{ma_thue:"ma_thue",id_app_vt:"id_app"},fields:[{thue_suat:"thue_suat"}]});async.mapLimit($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),5,($item$$,$callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&$ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*
5
- $ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||1),4))}$callback$$()}else{$ds_kho_online_dvtqd$$=(await global.getModel("dmkho").find({id_app:$item$$.id_app_vt,la_kho_online:!0},{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=
6
- $item$$.ma_tt3);$condition$$.groupBy=["ma_vt"];$condition$$.ngay=new Date;$condition$$.ma_kho={$in:$ds_kho_online_dvtqd$$};ckvt($condition$$,async function($dvtqd$$,$rs$$){$item$$.ton=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.ma_dvt&&($dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean())&&($item$$.ton=$dvtqd$$.tu&&$dvtqd$$.mau?utils.round($item$$.ton*$dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$$.ton/
7
- ($dvtqd$$.ty_le_qd||1),4));$callback$$()})}})},()=>{$callback$$(null,$kq$$)})})})},giaban:$callback$$=>{async.mapLimit($result$$,5,($item$$,$callback$$)=>{setImmediate(()=>{if($item$$.km_yn_for&&$item$$.km_yn_for.toUpperCase()==="SO1")return $callback$$();let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt,user:$user$$};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.sl_xuat=
8
- $item$$.sl_xuat;$condition$$.online=!0;getGiaBan($condition$$,async($e$$,$gia$$)=>{$e$$&&Logger.info("error when get gia_ban on cart",$e$$);$item$$.tien_hang_ct_nt=0;$item$$.tien_hang_ct=0;$item$$.tien_ck=0;$item$$.tien_ck_nt=0;$item$$.ty_le_ck=0;$e$$=$item$$.thue_suat||0;$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,$gia$$),$item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le,$item$$.gia_ban_ct=$item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100),$gia$$.sl_ap_dung?
9
- $item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/100*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)):$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*$item$$.sl_xuat),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/
10
- 100*$item$$.sl_xuat),$gia$$.promotion&&$gia$$.promotion.length>0&&await Promise.all($gia$$.promotion.map($p$$=>{($p$$.details_km||[]).forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app_vt}-${$item$$.ma_vt}`});return($p$$.details_km||[]).asyncJoinModel2($item$$.id_app_vt,global.getModel("dmvt"),{where:"ma_vt",fields:"ma_dvt chieu_cao chieu_rong chieu_sau trong_luong tg_tk kg_kiem_tra_ton_kho_tt kg_kiem_tra_ton_kho".split(" ")})}))):($item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le0,$item$$.gia_ban_ct=
11
- $item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100));$item$$.tien_hang=$item$$.tien_hang_nt=Math.roundBy($item$$.gia_ban*$item$$.sl_xuat);$item$$.tien_hang_ct_nt=$item$$.tien_hang_ct=Math.roundBy($item$$.sl_xuat*$item$$.gia_ban_ct_nt);$item$$.so_tien_max&&($item$$.tien_ck=$item$$.tien_ck_nt=Math.min($item$$.so_tien_max,$item$$.tien_ck_nt));$item$$.tien_thue_nt=$item$$.tien_thue=Math.roundBy(($item$$.tien_hang_ct_nt-$item$$.tien_ck_nt)*$e$$/100);$item$$.tien=$item$$.tien_nt=$item$$.tien_hang_ct_nt-
12
- ($item$$.tien_ck_nt||0)+($item$$.tien_thue_nt||0);delete $item$$.ck_sl_tu2;delete $item$$.exfields;delete $item$$.user_created;delete $item$$.user_updated;$callback$$(null)})})},($e$$,$rs$$)=>{$callback$$(null,$rs$$)})}},$error$$=>{if($error$$)return $fn$$($error$$);try{let $freeshipModel$$=global.getModel("ecompromotion_freeships"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$={$gte:$tu_ngay$$};Promise.all($result$$.filter($i$$=>
13
- $i$$.id_app_vt).map($item$$=>(async()=>{let $freeship$$=await $freeshipModel$$.find({id_app:$item$$.id_app_vt,hieu_luc_tu:$hieu_luc_tu$$,hieu_luc_den:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.freeship=$freeship$$})())).then(()=>{$fn$$(null,$result$$)}).catch($e$$=>{Logger.error($e$$);$fn$$(null,$result$$)})}catch($e$$){Logger.error($e$$),
14
- $fn$$(null,$result$$)}})}})).route()};module.exports=cart;
1
+ const model=global.getModel("cart"),User=global.getModel("user"),App=global.getModel("app"),controller=require("../../controllers/controller"),Dmvt=global.getModel("dmvt"),underscore=require("underscore"),getGiaBan=require("../../libs/getGiaban"),utils=require("../../libs/utils"),ckvt=require("../../libs/ckvt"),async=require("../../libs/asyncCompat"),moment=require("moment"),cart=function($router$$){(new controller($router$$,model,"cart",{requireRecaptchaToken:!1,notNeedRight:!0,sort:{stt:1,user:1},
2
+ onFinding:($user$$,$condition$$,$next$$,$options$$={})=>{$options$$.req&&$user$$.email==="public"?$condition$$.session_created=($options$$.req.cookies||{}).uid:$condition$$.user_created=$user$$.email;$next$$(null,$condition$$)},onView:async($user$$,$result$$,$fn$$)=>{async.series({app:$callback$$=>{$result$$.joinModel2(null,App,{where:{id_app_vt:"_id"},fields:[{name_app_vt:"name"}]},function($kq$$){$callback$$(null,$kq$$)})},user:$callback$$=>{$result$$.joinModel2(null,User,{where:{user:"email"},
3
+ fields:[{user_name:"name"},{partner:"partner"}]},function($kq$$){$callback$$(null,$kq$$)})},vt:$callback$$=>{$result$$.joinModel2(null,Dmvt,{where:{ma_vt:"ma_vt",id_app_vt:"id_app"},fields:["ten_vt","ten_vt_eng","picture_thumb","picture","ma_danh_muc",{gia_ban_le0:"gia_ban_le0"},"chieu_cao","chieu_rong","chieu_sau","trong_luong","kg_kiem_tra_ton_kho_tt","tg_tk","kg_kiem_tra_ton_kho","ton_kho_online_hien_tai","ma_thue","thue_suat"]},function($kq$$){setImmediate(async()=>{await $result$$.filter($r$$=>
4
+ $r$$.ma_thue).asyncJoinModel2(null,"vat",{where:{ma_thue:"ma_thue",id_app_vt:"id_app"},fields:[{thue_suat:"thue_suat"}]});async.mapLimit($result$$.filter($item$$=>$item$$.ton_kho_online_hien_tai),5,($item$$,$callback$$)=>{setImmediate(async()=>{if($item$$.kg_kiem_tra_ton_kho_tt){if($item$$.ma_dvt){var $ds_kho_online_dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean();$ds_kho_online_dvtqd$$&&($item$$.ton=$ds_kho_online_dvtqd$$.tu&&
5
+ $ds_kho_online_dvtqd$$.mau?utils.round($item$$.ton_kho_online_hien_tai*$ds_kho_online_dvtqd$$.mau/$ds_kho_online_dvtqd$$.tu,4):utils.round($item$$.ton_kho_online_hien_tai/($ds_kho_online_dvtqd$$.ty_le_qd||1),4))}$callback$$()}else{$ds_kho_online_dvtqd$$=(await global.getModel("dmkho").find({id_app:$item$$.id_app_vt,la_kho_online:!0},{ma_kho:1}).lean()).map($k$$=>$k$$.ma_kho);let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&
6
+ ($condition$$.ma_tt2=$item$$.ma_tt2);$item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.groupBy=["ma_vt"];$condition$$.ngay=new Date;$condition$$.ma_kho={$in:$ds_kho_online_dvtqd$$};ckvt($condition$$,async function($dvtqd$$,$rs$$){$item$$.ton=$rs$$.map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$$.ma_dvt&&($dvtqd$$=await global.getModel("dmqddvt").findOne({id_app:$item$$.id_app_vt,ma_vt:$item$$.ma_vt,ma_dvt:$item$$.ma_dvt}).lean())&&($item$$.ton=$dvtqd$$.tu&&$dvtqd$$.mau?
7
+ utils.round($item$$.ton*$dvtqd$$.mau/$dvtqd$$.tu,4):utils.round($item$$.ton/($dvtqd$$.ty_le_qd||1),4));$callback$$()})}})},()=>{$callback$$(null,$kq$$)})})})},giaban:$callback$$=>{async.mapLimit($result$$,5,($item$$,$callback$$)=>{setImmediate(()=>{if($item$$.km_yn_for&&$item$$.km_yn_for.toUpperCase()==="SO1")return $callback$$();let $condition$$={ma_vt:$item$$.ma_vt,id_app:$item$$.id_app_vt,user:$user$$};$item$$.ma_tt1&&($condition$$.ma_tt1=$item$$.ma_tt1);$item$$.ma_tt2&&($condition$$.ma_tt2=$item$$.ma_tt2);
8
+ $item$$.ma_tt3&&($condition$$.ma_tt3=$item$$.ma_tt3);$condition$$.sl_xuat=$item$$.sl_xuat;$condition$$.online=!0;getGiaBan($condition$$,async($e$$,$gia$$)=>{$e$$&&Logger.info("error when get gia_ban on cart",$e$$);$item$$.tien_hang_ct_nt=0;$item$$.tien_hang_ct=0;$item$$.tien_ck=0;$item$$.tien_ck_nt=0;$item$$.ty_le_ck=0;$e$$=$item$$.thue_suat||0;$gia$$?(delete $gia$$._id,delete $gia$$.ma_vt,delete $gia$$.ten_vt,underscore.extend($item$$,$gia$$),$item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le,
9
+ $item$$.gia_ban_ct=$item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100),$gia$$.sl_ap_dung?$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)),$item$$.ty_le_ck=0):$item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/100*Math.min($item$$.sl_xuat,$gia$$.sl_ap_dung)):$item$$.tien_ck?($item$$.tien_ck=$item$$.tien_ck_nt=Math.roundBy(($item$$.tien_ck||0)*$item$$.sl_xuat),$item$$.ty_le_ck=0):$item$$.tien_ck=
10
+ $item$$.tien_ck_nt=Math.roundBy(($item$$.ty_le_ck||0)*$item$$.gia_ban_ct/100*$item$$.sl_xuat),$gia$$.promotion&&$gia$$.promotion.length>0&&await Promise.all($gia$$.promotion.map($p$$=>{($p$$.details_km||[]).forEach($r$$=>{$r$$.km_yn_for=`${$item$$.id_app_vt}-${$item$$.ma_vt}`});return($p$$.details_km||[]).asyncJoinModel2($item$$.id_app_vt,global.getModel("dmvt"),{where:"ma_vt",fields:"ma_dvt chieu_cao chieu_rong chieu_sau trong_luong tg_tk kg_kiem_tra_ton_kho_tt kg_kiem_tra_ton_kho".split(" ")})}))):
11
+ ($item$$.gia_ban=$item$$.gia_ban_nt=$item$$.gia_ban_le0,$item$$.gia_ban_ct=$item$$.gia_ban_ct_nt=$item$$.gia_ban/(1+$e$$/100));$item$$.tien_hang=$item$$.tien_hang_nt=Math.roundBy($item$$.gia_ban*$item$$.sl_xuat);$item$$.tien_hang_ct_nt=$item$$.tien_hang_ct=Math.roundBy($item$$.sl_xuat*$item$$.gia_ban_ct_nt);$item$$.so_tien_max&&($item$$.tien_ck=$item$$.tien_ck_nt=Math.min($item$$.so_tien_max,$item$$.tien_ck_nt));$item$$.tien_thue_nt=$item$$.tien_thue=Math.roundBy(($item$$.tien_hang_ct_nt-$item$$.tien_ck_nt)*
12
+ $e$$/100);$item$$.tien=$item$$.tien_nt=$item$$.tien_hang_ct_nt-($item$$.tien_ck_nt||0)+($item$$.tien_thue_nt||0);delete $item$$.ck_sl_tu2;delete $item$$.exfields;delete $item$$.user_created;delete $item$$.user_updated;$callback$$(null)})})},($e$$,$rs$$)=>{$callback$$(null,$rs$$)})}},$error$$=>{if($error$$)return $fn$$($error$$);try{let $freeshipModel$$=global.getModel("ecompromotion_freeships"),$tu_ngay$$=moment().startOf("date").toDate(),$hieu_luc_tu$$={$lte:moment().endOf("date").toDate()},$hieu_luc_den$$=
13
+ {$gte:$tu_ngay$$};Promise.all($result$$.filter($i$$=>$i$$.id_app_vt).map($item$$=>(async()=>{let $freeship$$=await $freeshipModel$$.find({id_app:$item$$.id_app_vt,hieu_luc_tu:$hieu_luc_tu$$,hieu_luc_den:$hieu_luc_den$$,shared:!0,trang_thai:"1",$or:[{"details.0":{$exists:!1}},{"details.ma_danh_muc":{$in:[$item$$.ma_danh_muc,null,void 0,""]},"details.ma_vt":{$in:[$item$$.ma_vt,"",null,void 0]}}]}).lean();$item$$.freeship=$freeship$$})())).then(()=>{$fn$$(null,$result$$)}).catch($e$$=>{Logger.error($e$$);
14
+ $fn$$(null,$result$$)})}catch($e$$){Logger.error($e$$),$fn$$(null,$result$$)}})}})).route()};module.exports=cart;
@@ -1,3 +1,3 @@
1
- const model=global.getModel("congdoansx"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async");
1
+ const model=global.getModel("congdoansx"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("../../libs/asyncCompat");
2
2
  module.exports=function($router$$){(new controller($router$$,model,"congdoansx",{sort:{stt:1},unique:["ma_cong_doan"],onView:function($user$$,$items$$,$next$$){async.series({pt:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,$items$$)})},ph:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,
3
3
  $items$$)})}},()=>{$next$$(null,$items$$)})}})).route()};
@@ -1,2 +1,2 @@
1
- const model=global.getModel("consultant"),group=global.getModel("group"),controller=require("../../controllers/controller"),async=require("async"),consultant=function($router$$){(new controller($router$$,model,"consultant",{sort:{stt:1},unique:["consultant_code"],onView:($user$$,$items$$,$next$$)=>{async.series({group:$callback$$=>{$items$$.joinModel2(null,group,[{where:{consultant_group:"_id"},fields:["group_name","group_name_en","color"]}],function(){$callback$$()})}},()=>{$next$$(null,$items$$)})}})).route()};
2
- module.exports=consultant;
1
+ const model=global.getModel("consultant"),group=global.getModel("group"),controller=require("../../controllers/controller"),async=require("../../libs/asyncCompat"),consultant=function($router$$){(new controller($router$$,model,"consultant",{sort:{stt:1},unique:["consultant_code"],onView:($user$$,$items$$,$next$$)=>{async.series({group:$callback$$=>{$items$$.joinModel2(null,group,[{where:{consultant_group:"_id"},fields:["group_name","group_name_en","color"]}],function(){$callback$$()})}},()=>{$next$$(null,
2
+ $items$$)})}})).route()};module.exports=consultant;
@@ -1,5 +1,5 @@
1
- const model=global.getModel("dkhoc"),controller=require("../../controllers/controller"),dmvt=global.getModel("dmvt"),dmdt=global.getModel("dmdt"),customer=global.getModel("customer"),Pbl=global.getModel("pbl"),PostSocai=require("../../libs/post-socai"),socai=global.getModel("socai"),async=require("async"),_=require("underscore"),dkhoc=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dkhoc",{sort:{ma_kho:1,ma_dt:1,ma_vt:1},unique:["id_pbl","ma_dt","ma_kh","ma_vt"]});
2
- $contr_router$$.route();$contr_router$$.post=function($obj$$,$fn$$){$fn$$||=function(){};async.series({post_socai:$callback$$=>{const $details_sc$$=[],$o$$={...$obj$$};socai.findOne({id_ct:$obj$$.id_pbl,flag:"DT_"+($o$$.ma_vt||"")}).lean().exec(($e$$,$_socai$$)=>{Logger.info("find dt pbl",{id_ct:$obj$$.id_pbl,flag:"DT_"+($o$$.ma_vt||"")},$_socai$$);$_socai$$&&$o$$.tk_dt&&($o$$.tk_co=$o$$.tk_dt,$o$$.tk_no=$_socai$$.tk_co,$o$$.tien_nt=$_socai$$.tien_nt,$o$$.tien=$_socai$$.tien,$details_sc$$.push($o$$));
1
+ const model=global.getModel("dkhoc"),controller=require("../../controllers/controller"),dmvt=global.getModel("dmvt"),dmdt=global.getModel("dmdt"),customer=global.getModel("customer"),Pbl=global.getModel("pbl"),PostSocai=require("../../libs/post-socai"),socai=global.getModel("socai"),async=require("../../libs/asyncCompat"),_=require("underscore"),dkhoc=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dkhoc",{sort:{ma_kho:1,ma_dt:1,ma_vt:1},unique:["id_pbl","ma_dt","ma_kh",
2
+ "ma_vt"]});$contr_router$$.route();$contr_router$$.post=function($obj$$,$fn$$){$fn$$||=function(){};async.series({post_socai:$callback$$=>{const $details_sc$$=[],$o$$={...$obj$$};socai.findOne({id_ct:$obj$$.id_pbl,flag:"DT_"+($o$$.ma_vt||"")}).lean().exec(($e$$,$_socai$$)=>{Logger.info("find dt pbl",{id_ct:$obj$$.id_pbl,flag:"DT_"+($o$$.ma_vt||"")},$_socai$$);$_socai$$&&$o$$.tk_dt&&($o$$.tk_co=$o$$.tk_dt,$o$$.tk_no=$_socai$$.tk_co,$o$$.tien_nt=$_socai$$.tien_nt,$o$$.tien=$_socai$$.tien,$details_sc$$.push($o$$));
3
3
  (new PostSocai($obj$$,$details_sc$$)).run(($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}},function($e$$,$rs$$){$fn$$($e$$,$rs$$)})};$contr_router$$.view=async($id_app_user$$,$items$$,$next$$)=>{$id_app_user$$=$id_app_user$$.current_id_app;await $items$$.asyncJoinModel2($id_app_user$$,dmdt,{where:"ma_dt",fields:["ten_dt","ngay_bd","ngay_kt"]});await $items$$.asyncJoinModel2($id_app_user$$,customer,{where:"ma_kh",fields:"ten_kh"});await $items$$.asyncJoinModel2($id_app_user$$,dmvt,{where:"ma_vt",fields:"ten_vt"});
4
4
  $next$$(null,$items$$)};$contr_router$$.creating=async($user$$,$data$$,$next$$)=>{let $query$$={id_app:$user$$.current_id_app,ma_kho:$data$$.ma_kho,ma_kh:$data$$.ma_kh,trang_thai:{$in:["5","6"]},_id:$data$$.id_pbl,details:{$elemMatch:{ma_vt:$data$$.ma_vt}}};if(!await Pbl.findOne($query$$))return $next$$("H\u1ecdc vi\u00ean n\u00e0y ch\u01b0a mua kho\u00e1 h\u1ecdc n\u00e0y");$query$$={id_app:$user$$.current_id_app,ma_kho:$data$$.ma_kho,ma_dt:$data$$.ma_dt,ma_kh:$data$$.ma_kh,ma_vt:$data$$.ma_vt,id_pbl:$data$$.id_pbl};
5
5
  if(await model.findOne($query$$))return $next$$("H\u1ecdc vi\u00ean n\u00e0y \u0111\u00e3 \u0111ang k\u00fd h\u1ecdc cho kho\u00e1 n\u00e0y");$next$$(null,$data$$)};$contr_router$$.updating=($user$$,$data$$,$obj$$,$next$$)=>{if(!_.isEqual({ma_kho:$data$$.ma_kho,ma_dt:$data$$.ma_dt,ma_kh:$data$$.ma_kh,ma_vt:$data$$.ma_vt,id_pbl:$data$$.id_pbl},{ma_kho:$obj$$.ma_kho,ma_dt:$obj$$.ma_dt,ma_kh:$obj$$.ma_kh,ma_vt:$obj$$.ma_vt,id_pbl:$obj$$.id_pbl}))return $next$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p ch\u1ec9nh s\u1eeda th\u00f4ng tin \u0111\u00e3 \u0111\u0103ng k\u00fd");
@@ -1,4 +1,4 @@
1
- const model=global.getModel("dmban"),group=global.getModel("group"),dmkho=global.getModel("dmkho"),pbl=global.getModel("pbl"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),async=require("async");
1
+ const model=global.getModel("dmban"),group=global.getModel("group"),dmkho=global.getModel("dmkho"),pbl=global.getModel("pbl"),trangthai=global.getModel("trangthai"),controller=require("../../controllers/controller"),async=require("../../libs/asyncCompat");
2
2
  module.exports=function($router$$){(new controller($router$$,model,"dmban",{sort:{ma_kho:1,stt:1,ten_ban:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()=="view"?!0:!1,unique:["ma_ban"],onView:function($user$$,$items$$,$next$$){async.series({kho:function($callback$$){$items$$.joinModel2($user$$.current_id_app,dmkho,[{where:{ma_kho:"ma_kho"},fields:[{ten_kho:"ten_kho"}]}],function(){$callback$$(null)})},grp:function($callback$$){$items$$.joinModel2($user$$.current_id_app,
3
3
  group,[{where:{nh_ban:"_id"},fields:[{name:"ten_nh_ban",value:"group_name"}]}],function(){$callback$$(null)})},loai:function($callback$$){$items$$.joinModel2($user$$.current_id_app,group,[{where:{loai_ban:"_id"},fields:[{name:"ten_loai_ban",value:"group_name"}]}],function(){$callback$$(null)})},trang_thai:function($callback$$){Promise.all($items$$.map($item$$=>(async()=>{let $p$$=await pbl.findOne({id_app:$item$$.id_app,ma_ban:$item$$.ma_ban,ma_kho:$item$$.ma_kho,trang_thai:{$in:["1","3"]}});$item$$.trang_thai=
4
4
  $p$$?$p$$.trang_thai:"0";return $item$$})())).then(()=>{$items$$.joinModel2(null,trangthai,[{where:$item$$=>({ma_trang_thai:$item$$.trang_thai,ma_ct:"DMBAN"}),fields:[{name:"ten_trang_thai",value:"group_name"},{name:"color",value:"color"}]}],function(){$callback$$(null)})})}},function(){$next$$(null,$items$$)})}})).route()};
@@ -1,5 +1,5 @@
1
- const model=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async"),getSysorder=function($item$$,$callback$$){let $sysorder$$=($item$$.stt||"0")+"-"+$item$$.ma_bp;$item$$.ma_bp_me&&$item$$.ma_bp_me!=$item$$.ma_bp.toString()?model.findOne({ma_bp:$item$$.ma_bp_me,id_app:$item$$.id_app}).lean().then(function($item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;$callback$$($sysorder$$)}):
2
- $callback$$($sysorder$$)}).catch($e$$=>{$callback$$($e$$)}):$callback$$($sysorder$$)};
1
+ const model=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("../../libs/asyncCompat"),getSysorder=function($item$$,$callback$$){let $sysorder$$=($item$$.stt||"0")+"-"+$item$$.ma_bp;$item$$.ma_bp_me&&$item$$.ma_bp_me!=$item$$.ma_bp.toString()?model.findOne({ma_bp:$item$$.ma_bp_me,id_app:$item$$.id_app}).lean().then(function($item_me$$){$item_me$$?getSysorder($item_me$$,function($rs$$){$sysorder$$=$rs$$+"---"+$sysorder$$;
2
+ $callback$$($sysorder$$)}):$callback$$($sysorder$$)}).catch($e$$=>{$callback$$($e$$)}):$callback$$($sysorder$$)};
3
3
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"dmbp",{sort:{sysorder:1},unique:["ma_bp"],onView:function($user$$,$items$$,$next$$){async.parallel({pt:function($callback$$){$items$$.filter($item$$=>$item$$.phu_trach).joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,$items$$)})},ph:function($callback$$){$items$$.filter($item$$=>$item$$.phoi_hop).joinModel2($user$$.current_id_app,
4
4
  Participant,[{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,$items$$)})}},()=>{$next$$(null,$items$$)})},onUpdating:async($user$$,$data$$,$obj$$,$next$$)=>{if($data$$.ma_bp_me&&(await model.getAllChildrenGroup($obj$$.id_app,$obj$$.ma_bp.toString())).indexOf($data$$.ma_bp_me)>=0)return $next$$("Kh\u00f4ng th\u1ec3 ch\u1ecdn nh\u00f3m n\u00e0y l\u00e0m nh\u00f3m m\u1eb9");$next$$(null,$data$$,$obj$$)}});$contr_router$$.route();$contr_router$$.deleting=function($user$$,
5
5
  $obj$$,$next$$){if($obj$$.loai_nh===0)return $next$$(Error("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p x\u00f3a nh\u00f3m m\u1eb9"));$next$$(null,$obj$$)};$contr_router$$.created=function($user$$,$obj$$,$next$$){getSysorder($obj$$,async function($rs$$){$obj$$.sysorder=$rs$$;$obj$$.bac=$rs$$.split("---").length;await model.updateOne({_id:$obj$$._id},{$set:{bac:$obj$$.bac,sysorder:$obj$$.sysorder,loai_nh:1}}).catch(console.error);$next$$(null,$obj$$)})};$contr_router$$.updated=function($user$$,$obj$$,
@@ -1,4 +1,4 @@
1
- const model=global.getModel("dmdoi"),dmbp=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async");
1
+ const model=global.getModel("dmdoi"),dmbp=global.getModel("dmbp"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("../../libs/asyncCompat");
2
2
  module.exports=function($router$$){(new controller($router$$,model,"dmdoi",{sort:{ma_bp:1,ma_doi:1},unique:["ma_doi"],onView:function($user$$,$items$$,$next$$){async.series({dp:function($callback$$){$items$$.joinModel2($user$$.current_id_app,dmbp,[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}],function(){$callback$$(null,$items$$)})},pt:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phu_trach:"email"},fields:[{ten_phu_trach:"name"}]}],function(){$callback$$(null,
3
3
  $items$$)})},ph:function($callback$$){$items$$.joinModel2($user$$.current_id_app,Participant,[{where:{phoi_hop:"email"},fields:[{ten_phoi_hop:"name"}]}],function(){$callback$$(null,$items$$)})}},()=>{$next$$(null,$items$$)})},onRightByItem:($user$$,$condition$$,$next$$)=>{async.series({phu_trach_bp:$callback$$=>{dmbp.find({id_app:$user$$.current_id_app,phu_trach:$user$$.email}).lean().then($bps$$=>{$callback$$(null,$bps$$)}).catch($e$$=>{$callback$$($e$$)})}},($$or_e$$,$_condition_rs$$)=>{if($$or_e$$)return $next$$($$or_e$$);
4
4
  $$or_e$$=[{ma_bp:{$in:$_condition_rs$$.phu_trach_bp.map($p$$=>$p$$.ma_bp)}}];$_condition_rs$$=[];for(let $k$$ in $condition$$){let $_c$$={};$_c$$[$k$$]=$condition$$[$k$$];$_condition_rs$$.push($_c$$)}$$or_e$$.push({$and:$_condition_rs$$});$next$$(null,{$or:$$or_e$$})})}})).route()};
@@ -1,5 +1,5 @@
1
- const model=global.getModel("group"),dmdt=global.getModel("dmdt"),dmbp=global.getModel("dmbp"),task=global.getModel("task"),User=global.getModel("user"),UserGroup=global.getModel("usergroup"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("async"),dmnhtask=function($router$$){(new controller($router$$,model,"dmnhtask",{sort:{group_name:1},findExact:{group_type:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||"").toLowerCase()==
2
- "view"?!0:!1,onView:($user$$,$items$$,$next$$)=>{async.series({dt:$cb$$=>{$items$$.filter($r$$=>$r$$.ma_dt).joinModel2($user$$.current_id_app,dmdt,{where:"ma_dt",fields:[{ten_dt:"ten_dt"},{id_dt:"_id"}]},()=>{$cb$$(null)})},bp:$cb$$=>{$items$$.filter($r$$=>$r$$.ma_bp).joinModel2($user$$.current_id_app,dmbp,{where:"ma_bp",fields:"ten_bp"},()=>{$cb$$(null)})},pt:async()=>{await $items$$.asyncJoinModel2($user$$.current_id_app,Participant,{where:{phu_trach:"email"},fields:{nhom_phu_trach:"group_id"}});
1
+ const model=global.getModel("group"),dmdt=global.getModel("dmdt"),dmbp=global.getModel("dmbp"),task=global.getModel("task"),User=global.getModel("user"),UserGroup=global.getModel("usergroup"),Participant=global.getModel("participant"),controller=require("../../controllers/controller"),async=require("../../libs/asyncCompat"),dmnhtask=function($router$$){(new controller($router$$,model,"dmnhtask",{sort:{group_name:1},findExact:{group_type:1},notNeedRight:($user$$,$options$$={})=>($options$$.action||
2
+ "").toLowerCase()=="view"?!0:!1,onView:($user$$,$items$$,$next$$)=>{async.series({dt:$cb$$=>{$items$$.filter($r$$=>$r$$.ma_dt).joinModel2($user$$.current_id_app,dmdt,{where:"ma_dt",fields:[{ten_dt:"ten_dt"},{id_dt:"_id"}]},()=>{$cb$$(null)})},bp:$cb$$=>{$items$$.filter($r$$=>$r$$.ma_bp).joinModel2($user$$.current_id_app,dmbp,{where:"ma_bp",fields:"ten_bp"},()=>{$cb$$(null)})},pt:async()=>{await $items$$.asyncJoinModel2($user$$.current_id_app,Participant,{where:{phu_trach:"email"},fields:{nhom_phu_trach:"group_id"}});
3
3
  await $items$$.asyncJoinModel2($user$$.current_id_app,UserGroup,{where:{nhom_phu_trach:"_id"},fields:{ten_nhom_phu_trach:"group_name"}});await $items$$.asyncJoinModel2(null,User,{where:{phu_trach:"email"},fields:{ten_phu_trach:"name"}});return null},tasks:async()=>{await Promise.all($items$$.map($item$$=>(async()=>{$item$$.total_tasks=await task.countDocuments({id_app:$user$$.current_id_app,nh_cv:$item$$._id.toString(),saved:{$ne:!0}});$item$$.total_tasks_done=await task.countDocuments({id_app:$user$$.current_id_app,
4
4
  nh_cv:$item$$._id.toString(),progress:"3",saved:{$ne:!0}});return $item$$})()));return null}},()=>{$next$$(null,$items$$)})},onFinding:($user$$,$condition$$,$cb$$)=>{$condition$$.group_type="TASK";$cb$$(null,$condition$$)},onCreating:($user$$,$data$$,$cb$$)=>{$data$$.group_type="TASK";$data$$.attends&&($data$$.attends=[...(new Set($data$$.attends))]);$cb$$(null,$data$$)},onUpdating:($user$$,$data$$,$obj$$,$cb$$)=>{$data$$.group_type="TASK";$data$$.attends=$data$$.attends||$obj$$.attends;$data$$.attends&&
5
5
  ($data$$.attends=[...(new Set($data$$.attends))]);$cb$$(null,$data$$,$obj$$)}})).route()};module.exports=dmnhtask;