flexbiz-server 12.6.13 → 12.6.16

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 (129) hide show
  1. package/README.md +439 -4
  2. package/package.json +4 -3
  3. package/server/agents/agents.js +1 -0
  4. package/server/agents/ai_memory_manager.js +6 -0
  5. package/server/agents/ceoAgent.js +43 -0
  6. package/server/agents/chatController.js +6 -0
  7. package/server/agents/cskhAgent.js +43 -0
  8. package/server/agents/flowAgent.js +43 -0
  9. package/server/agents/prompts/ceo.js +2 -0
  10. package/server/agents/prompts/flow.js +2 -0
  11. package/server/agents/staffAgent.js +44 -0
  12. package/server/agents/tools/financeTools.js +57 -0
  13. package/server/agents/tools/flowTools.js +36 -0
  14. package/server/agents/tools/kpiTools.js +104 -0
  15. package/server/agents/tools/masterDataTools.js +74 -0
  16. package/server/agents/tools/okrTools.js +21 -0
  17. package/server/agents/tools/ragTools.js +21 -0
  18. package/server/agents/tools/reportTools.js +43 -0
  19. package/server/agents/tools/staffTools.js +13 -0
  20. package/server/agents/tools/stockTools.js +41 -0
  21. package/server/agents/tools/systemTools.js +52 -0
  22. package/server/agents/tools/taskTools.js +23 -0
  23. package/server/agents/tools/utils.js +57 -0
  24. package/server/app.js +7 -7
  25. package/server/controllers/controller.js +31 -29
  26. package/server/controllers/controllerRPT.js +31 -29
  27. package/server/controllers/findHandler.js +22 -21
  28. package/server/controllers/importFromExcelHandler.js +17 -14
  29. package/server/controllers/importHandler.js +26 -41
  30. package/server/controllers/importHandler_old.js +41 -0
  31. package/server/controllers/rptHandler.js +14 -11
  32. package/server/controllers/viewHandler.js +7 -7
  33. package/server/flow/FlowEngine.js +49 -45
  34. package/server/flow/WebhookManager.js +1 -1
  35. package/server/flow/handlers.js +2 -2
  36. package/server/flow/nodes/userform.js +28 -0
  37. package/server/flow/utils.js +12 -4
  38. package/server/global.js +4 -3
  39. package/server/libs/cdpstk.js +1 -1
  40. package/server/libs/ckvt.js +12 -11
  41. package/server/libs/ckvtcapphat.js +5 -5
  42. package/server/libs/ckvtnpp.js +8 -8
  43. package/server/libs/ckvttt.js +6 -5
  44. package/server/libs/ctvt.js +7 -6
  45. package/server/libs/ctvtnpp.js +7 -6
  46. package/server/libs/ctvttt.js +6 -6
  47. package/server/libs/databanle.js +17 -18
  48. package/server/libs/databanle_old.js +18 -0
  49. package/server/libs/databanletheongay.js +25 -29
  50. package/server/libs/dktk.js +3 -3
  51. package/server/libs/dkvt.js +11 -11
  52. package/server/libs/dkvtnpp.js +7 -6
  53. package/server/libs/dkvttt.js +7 -6
  54. package/server/libs/docs.js +72 -36
  55. package/server/libs/dtbanletheosp.js +16 -19
  56. package/server/libs/fifo_dk.js +8 -0
  57. package/server/libs/fifo_group.js +4 -0
  58. package/server/libs/fifo_trace_query.js +12 -0
  59. package/server/libs/getGiaban.js +59 -70
  60. package/server/libs/getGiaban_old.js +70 -0
  61. package/server/libs/joinData.js +3 -3
  62. package/server/libs/joinData_bk.js +44 -0
  63. package/server/libs/kpistatus.js +24 -17
  64. package/server/libs/permission.js +54 -56
  65. package/server/libs/permission_old.js +58 -0
  66. package/server/libs/post-book.js +1 -1
  67. package/server/libs/post-socai.js +2 -1
  68. package/server/libs/post-sokho.js +11 -11
  69. package/server/libs/prototypes.js +13 -12
  70. package/server/libs/queryBuilding.js +11 -10
  71. package/server/libs/redis-cache.js +22 -10
  72. package/server/libs/sctcnkh.js +19 -17
  73. package/server/libs/socaitk.js +1 -1
  74. package/server/libs/thnxt.js +17 -14
  75. package/server/libs/thnxtnpp.js +8 -8
  76. package/server/libs/thnxttt.js +8 -7
  77. package/server/libs/tinhgia1vt_fifo.js +22 -0
  78. package/server/libs/tinhgiafifo.js +28 -0
  79. package/server/libs/utils.js +37 -19
  80. package/server/models/app.js +1 -1
  81. package/server/models/approve.js +8 -8
  82. package/server/models/cacheDataReport.js +2 -2
  83. package/server/models/cacheSessionReport.js +5 -1
  84. package/server/models/cdvt.js +2 -2
  85. package/server/models/checkin.js +2 -2
  86. package/server/models/chitietluongds.js +1 -1
  87. package/server/models/contract.js +1 -1
  88. package/server/models/csluongtheods.js +2 -2
  89. package/server/models/ctds2.js +7 -6
  90. package/server/models/custom_report.js +1 -0
  91. package/server/models/dmdt.js +2 -2
  92. package/server/models/dmkho.js +5 -4
  93. package/server/models/dmnvt.js +5 -4
  94. package/server/models/fifo_dk.js +2 -0
  95. package/server/models/fifo_lot.js +3 -0
  96. package/server/models/fifo_trace.js +4 -0
  97. package/server/models/flowpending.js +2 -0
  98. package/server/models/group.js +3 -5
  99. package/server/models/listinfo.js +61 -33
  100. package/server/models/schedule.js +4 -3
  101. package/server/models/task.js +1 -1
  102. package/server/models/trangthai.js +2 -2
  103. package/server/modules/lists/bg-fifo_dk.js +8 -0
  104. package/server/modules/lists/ls-checkin.js +1 -1
  105. package/server/modules/lists/ls-customer.js +23 -26
  106. package/server/modules/lists/ls-dmbp.js +5 -5
  107. package/server/modules/lists/ls-dmkho.js +7 -1
  108. package/server/modules/lists/ls-dmnhtask.js +1 -1
  109. package/server/modules/lists/ls-dmvt.js +52 -70
  110. package/server/modules/lists/ls-flowpending.js +3 -0
  111. package/server/modules/lists/ls-participant.js +6 -4
  112. package/server/modules/lists/ls-task.js +6 -6
  113. package/server/modules/reports/calc-tinhgiafifo.js +8 -0
  114. package/server/modules/reports/calc-tinhluong.js +17 -16
  115. package/server/modules/reports/rp-baoCaoFifoKy.js +1 -0
  116. package/server/modules/reports/rp-congviectheobp.js +4 -4
  117. package/server/modules/reports/rp-congviectheodt.js +1 -1
  118. package/server/modules/reports/rp-congviectheokh.js +1 -1
  119. package/server/modules/reports/rp-congviectheonv.js +1 -1
  120. package/server/modules/reports/rp-dtbanletheoct.js +22 -23
  121. package/server/modules/reports/rp-dtbanletheokh.js +17 -20
  122. package/server/modules/reports/rp-dtbanletheokho.js +15 -18
  123. package/server/modules/reports/rp-hoahong.js +1 -1
  124. package/server/modules/reports/rp-sctvt.js +1 -1
  125. package/server/modules/reports/rp-sosanhkhvatt2.js +1 -1
  126. package/server/modules/reports/rp-thnxt.js +8 -8
  127. package/server/modules/reports/rp-tongquannvbh.js +1 -1
  128. package/server/modules/systems/sys-app.js +5 -5
  129. package/server/modules/vouchers/vo-so1.js +14 -14
@@ -1,16 +1,32 @@
1
- const _=require("underscore"),path=require("path"),writtenNumber=require("written-number"),async=require("async"),numeral=require("numeral"),moment=require("moment"),crypto=require("crypto"),StaticPool=require("./WorkerStaticPool"),{executeInTransaction,runWithoutSession}=require("./sessionContext"),isDateValue=$d_val$$=>{if(!$d_val$$)return!1;if(Object.prototype.toString.call($d_val$$)==="[object Date]")return!isNaN($d_val$$.getTime());if(typeof $d_val$$!=="string"||$d_val$$.length<6||/^\d+$/.test($d_val$$))return!1;
2
- $d_val$$=new Date($d_val$$);return $d_val$$ instanceof Date&&!isNaN($d_val$$.getTime())};exports.isDateValue=isDateValue;function isPlainObject($proto$jscomp$3_value$$){if(typeof $proto$jscomp$3_value$$!=="object"||$proto$jscomp$3_value$$===null||Array.isArray($proto$jscomp$3_value$$))return!1;$proto$jscomp$3_value$$=Object.getPrototypeOf($proto$jscomp$3_value$$);return $proto$jscomp$3_value$$===Object.prototype||$proto$jscomp$3_value$$===null}
1
+ const lodash=require("lodash"),path=require("path"),fs=require("fs"),writtenNumber=require("written-number"),async=require("async"),numeral=require("numeral"),moment=require("moment"),crypto=require("crypto"),StaticPool=require("./WorkerStaticPool"),{executeInTransaction,runWithoutSession}=require("./sessionContext"),isDateValue=$d_val$$=>{if(!$d_val$$)return!1;if(Object.prototype.toString.call($d_val$$)==="[object Date]")return!isNaN($d_val$$.getTime());if(typeof $d_val$$!=="string"||$d_val$$.length<
2
+ 6||/^\d+$/.test($d_val$$))return!1;$d_val$$=new Date($d_val$$);return $d_val$$ instanceof Date&&!isNaN($d_val$$.getTime())};exports.isDateValue=isDateValue;function isPlainObject($proto$jscomp$3_value$$){if(typeof $proto$jscomp$3_value$$!=="object"||$proto$jscomp$3_value$$===null||Array.isArray($proto$jscomp$3_value$$))return!1;$proto$jscomp$3_value$$=Object.getPrototypeOf($proto$jscomp$3_value$$);return $proto$jscomp$3_value$$===Object.prototype||$proto$jscomp$3_value$$===null}
3
3
  function deleteEmptyObject($obj$$){if(typeof $obj$$!=="object"||$obj$$===null)return $obj$$;if(Array.isArray($obj$$))$obj$$.forEach($item$$=>deleteEmptyObject($item$$));else{var $currentValue_keys$$=Object.keys($obj$$);for(const $key$$ of $currentValue_keys$$)deleteEmptyObject($obj$$[$key$$]),$currentValue_keys$$=$obj$$[$key$$],typeof $currentValue_keys$$==="object"&&$currentValue_keys$$!==null&&(isPlainObject($currentValue_keys$$)&&Object.keys($currentValue_keys$$).length===0?delete $obj$$[$key$$]:
4
- $key$$!="$in"&&$key$$.startsWith("$")&&Array.isArray($currentValue_keys$$)&&$currentValue_keys$$.length===0&&delete $obj$$[$key$$])}return $obj$$}exports.deleteEmptyObject=deleteEmptyObject;const {VM}=require("vm2");function evalute($code$$,$sandbox$$={},$timeout$$=2E3){$sandbox$$.Promise=function(){};return(new VM({timeout:$timeout$$,sandbox:$sandbox$$})).run(`(()=>{${$code$$}})()`)}exports.evalute=evalute;
4
+ $key$$!="$in"&&$key$$.startsWith("$")&&Array.isArray($currentValue_keys$$)&&$currentValue_keys$$.length===0&&delete $obj$$[$key$$])}return $obj$$}exports.deleteEmptyObject=deleteEmptyObject;const {VM}=require("vm2");let allInjections="";try{const $prototypePath$$=path.join(__dirname,"prototypes.js"),$joinDataPath$$=path.join(__dirname,"joinData.js"),$protoString$$=fs.readFileSync($prototypePath$$,"utf8");allInjections=`
5
+ // --- B\u1ecdc File joinData ---
6
+ (function(require, module, exports) {
7
+ ${fs.readFileSync($joinDataPath$$,"utf8")}
8
+ })(require, {exports: {}}, {});
9
+
10
+ // --- B\u1ecdc File prototypes ---
11
+ (function(require, module, exports) {
12
+ ${$protoString$$}
13
+ })(require, {exports: {}}, {});
14
+ `}catch($err$$){console.error("[C\u1ea2NH B\u00c1O] L\u1ed7i khi \u0111\u1ecdc file Prototype:",$err$$.message)}const {cachedKeys,generateRedisKey,sortObjectKeys}=require("./redis-cache");
15
+ async function evalute2($code$$,$sandbox$$={},$timeout$$=15E3){$sandbox$$.Logger=typeof Logger!=="undefined"?Logger:console;$sandbox$$.require=function($moduleName$$){switch($moduleName$$){case "moment":return moment;case "underscore":return require("underscore");case "lodash":return lodash;case "async":return require("async");case "./utils":return{round,isValidObjectIdValue};case "./sessionContext":return{runWithoutSession};case "./redis-cache":return{cachedKeys,generateRedisKey,sortObjectKeys};
16
+ case "./joinData":return{};default:return{}}};return await (new VM({timeout:$timeout$$,sandbox:$sandbox$$,eval:!1,wasm:!1})).run(`
17
+ (async () => {
18
+ ${allInjections}
19
+ ${$code$$}
20
+ })()
21
+ `)}exports.evalute2=evalute2;function evalute($code$$,$sandbox$$={},$timeout$$=2E3){return(new VM({timeout:$timeout$$,sandbox:$sandbox$$,eval:!1,wasm:!1})).run(`(()=>{${$code$$}})()`)}exports.evalute=evalute;
5
22
  function JSONParser($str_func$$){if(typeof $str_func$$=="object")return $str_func$$;$str_func$$=$str_func$$.toString().trim();if($str_func$$.startsWith("[")||$str_func$$.startsWith("{")||$str_func$$.toString().indexOf("return ")<0)$str_func$$="return "+$str_func$$;return evalute($str_func$$)}exports.JSONParser=JSONParser;
6
- function numberToWord($fractionText_number$$,$options$$){if($fractionText_number$$===void 0||$fractionText_number$$===null)return"";if($options$$&&$options$$.lang&&$options$$.lang!=="vn"){var $kq_sign$$=writtenNumber($fractionText_number$$,{lang:$options$$.lang});return $kq_sign$$.length>0?$kq_sign$$.substring(0,1).toUpperCase()+$kq_sign$$.substring(1):""}$kq_sign$$="";$fractionText_number$$<0&&($kq_sign$$="\u00e2m ",$fractionText_number$$=-$fractionText_number$$);$options$$=_.extend({thousand:"ngh\u00ecn",
7
- decimal:"ph\u1ea9y"},$options$$);$fractionText_number$$=Number($fractionText_number$$.toFixed(2));var $integerPart_integerText$$=Math.floor($fractionText_number$$),$fractionPart$$=$fractionText_number$$%1;$fractionText_number$$="";$fractionPart$$&&($fractionText_number$$=convertFractionPart($fractionPart$$),$fractionText_number$$=" "+$options$$.decimal+" "+$fractionText_number$$);var $digitGroups$$=breakDownNumber($integerPart_integerText$$).reverse();$integerPart_integerText$$=_.chain($digitGroups$$).map(function($convertedGroup_group$$,
23
+ function numberToWord($fractionText_number$$,$options$$){if($fractionText_number$$===void 0||$fractionText_number$$===null)return"";if($options$$&&$options$$.lang&&$options$$.lang!=="vn"){var $kq_sign$$=writtenNumber($fractionText_number$$,{lang:$options$$.lang});return $kq_sign$$.length>0?$kq_sign$$.substring(0,1).toUpperCase()+$kq_sign$$.substring(1):""}$kq_sign$$="";$fractionText_number$$<0&&($kq_sign$$="\u00e2m ",$fractionText_number$$=-$fractionText_number$$);$options$$=lodash.extend({thousand:"ngh\u00ecn",
24
+ decimal:"ph\u1ea9y"},$options$$);$fractionText_number$$=Number($fractionText_number$$.toFixed(2));var $integerPart_integerText$$=Math.floor($fractionText_number$$),$fractionPart$$=$fractionText_number$$%1;$fractionText_number$$="";$fractionPart$$&&($fractionText_number$$=convertFractionPart($fractionPart$$),$fractionText_number$$=" "+$options$$.decimal+" "+$fractionText_number$$);var $digitGroups$$=breakDownNumber($integerPart_integerText$$).reverse();$integerPart_integerText$$=lodash.chain($digitGroups$$).map(function($convertedGroup_group$$,
8
25
  $index$$){$convertedGroup_group$$=convertGroup($convertedGroup_group$$,$index$$===$digitGroups$$.length-1?!1:!0);var $unit$$=unitAt($index$$,$options$$.thousand);$convertedGroup_group$$||$index$$%3===0||($unit$$="");$convertedGroup_group$$&&$unit$$&&($unit$$=" "+$unit$$);return $convertedGroup_group$$+$unit$$}).compact().reverse().join(" ");$kq_sign$$=$kq_sign$$+$integerPart_integerText$$+$fractionText_number$$;return $kq_sign$$.length>0?$kq_sign$$.substring(0,1).toUpperCase()+$kq_sign$$.substring(1):
9
26
  ""}exports.numberToWord=numberToWord;function unitAt($index$$,$thousand$$){if($index$$===0)return"";switch($index$$%3){case 0:return"t\u1ec9";case 1:return $thousand$$;case 2:return"tri\u1ec7u"}}
10
- function convertGroup($group$$,$preserveZeros$$){var $DIGITS$$="kh\u00f4ng m\u1ed9t hai ba b\u1ed1n n\u0103m s\u00e1u b\u1ea3y t\u00e1m ch\u00edn".split(" "),$DIGITS_WITH_TENS$$=" m\u1ed1t hai ba b\u1ed1n l\u0103m s\u00e1u b\u1ea3y t\u00e1m ch\u00edn".split(" "),$TENS$$="linh;m\u01b0\u1eddi;hai m\u01b0\u01a1i;ba m\u01b0\u01a1i;b\u1ed1n m\u01b0\u01a1i;n\u0103m m\u01b0\u01a1i;s\u00e1u m\u01b0\u01a1i;b\u1ea3y m\u01b0\u01a1i;t\u00e1m m\u01b0\u01a1i;ch\u00edn m\u01b0\u01a1i".split(";"),$HUNDREDS$$=_.map($DIGITS$$,
27
+ function convertGroup($group$$,$preserveZeros$$){var $DIGITS$$="kh\u00f4ng m\u1ed9t hai ba b\u1ed1n n\u0103m s\u00e1u b\u1ea3y t\u00e1m ch\u00edn".split(" "),$DIGITS_WITH_TENS$$=" m\u1ed1t hai ba b\u1ed1n l\u0103m s\u00e1u b\u1ea3y t\u00e1m ch\u00edn".split(" "),$TENS$$="linh;m\u01b0\u1eddi;hai m\u01b0\u01a1i;ba m\u01b0\u01a1i;b\u1ed1n m\u01b0\u01a1i;n\u0103m m\u01b0\u01a1i;s\u00e1u m\u01b0\u01a1i;b\u1ea3y m\u01b0\u01a1i;t\u00e1m m\u01b0\u01a1i;ch\u00edn m\u01b0\u01a1i".split(";"),$HUNDREDS$$=lodash.map($DIGITS$$,
11
28
  function($digit$$){return $digit$$+" tr\u0103m"}),$hundred$$="",$ten$$="",$digit$$="";if($preserveZeros$$&&!$group$$.hundred&&!$group$$.ten&&!$group$$.digit)return"";if($preserveZeros$$||$group$$.hundred)$hundred$$=$HUNDREDS$$[$group$$.hundred];if($preserveZeros$$||$group$$.ten||$group$$.hundred){if($group$$.ten||$group$$.digit)$ten$$=$TENS$$[$group$$.ten];$digit$$=$group$$.ten!==1&&$group$$.ten||!$group$$.digit?$DIGITS_WITH_TENS$$[$group$$.digit]:$DIGITS$$[$group$$.digit]}else $digit$$=$DIGITS$$[$group$$.digit];
12
- $hundred$$&&$ten$$&&($hundred$$+=" ");$ten$$&&$digit$$&&($ten$$+=" ");return[$hundred$$,$ten$$,$digit$$].join("")}
13
- function breakDownNumber($digits_number$$){$digits_number$$=$digits_number$$.toString().split("");$digits_number$$=_.map(_.range(0,(3-$digits_number$$.length%3)%3),function(){return 0}).concat($digits_number$$);return _.chain($digits_number$$).map(Number).groupBy(function($element$$,$index$$){return Math.floor($index$$/3)}).toArray().map(function($group$$){return _.object(["hundred","ten","digit"],$group$$)}).value()}
29
+ $hundred$$&&$ten$$&&($hundred$$+=" ");$ten$$&&$digit$$&&($ten$$+=" ");return[$hundred$$,$ten$$,$digit$$].join("")}function breakDownNumber($number$jscomp$1_str$$){$number$jscomp$1_str$$=String($number$jscomp$1_str$$);return($number$jscomp$1_str$$.padStart(Math.ceil($number$jscomp$1_str$$.length/3)*3,"0").match(/.{3}/g)||[]).map($chunk$$=>({hundred:Number($chunk$$[0]),ten:Number($chunk$$[1]),digit:Number($chunk$$[2])}))}
14
30
  function convertFractionPart($fractionPart$$){$fractionPart$$=convertGroup(breakDownNumber($fractionPart$$*100)[0]);var $mapping$$={"m\u01b0\u1eddi":"m\u1ed9t","hai m\u01b0\u01a1i":"hai","ba m\u01b0\u01a1i":"ba","b\u1ed1n m\u01b0\u01a1i":"b\u1ed1n","n\u0103m m\u01b0\u01a1i":"n\u0103m","s\u00e1u m\u01b0\u01a1i":"s\u00e1u","b\u1ea3y m\u01b0\u01a1i":"b\u1ea3y","t\u00e1m m\u01b0\u01a1i":"t\u00e1m","ch\u00edn m\u01b0\u01a1i":"ch\u00edn","m\u1ed9t":"kh\u00f4ng m\u1ed9t",hai:"kh\u00f4ng hai",ba:"kh\u00f4ng ba",
15
31
  "b\u1ed1n":"kh\u00f4ng b\u1ed1n","n\u0103m":"kh\u00f4ng n\u0103m","s\u00e1u":"kh\u00f4ng s\u00e1u","b\u1ea3y":"kh\u00f4ng b\u1ea3y","t\u00e1m":"kh\u00f4ng t\u00e1m","ch\u00edn":"kh\u00f4ng ch\u00edn"};$fractionPart$$ in $mapping$$&&($fractionPart$$=$mapping$$[$fractionPart$$]);return $fractionPart$$}function round($number$$,$precision$$=0){return isNaN($number$$)||$number$$===null?0:Number(Math.round($number$$+"e"+$precision$$)+"e-"+$precision$$)}exports.round=round;
16
32
  function getInfoFromQuery($obj$$,$_query$$,$callback$$){setImmediate(()=>{let $query$$;try{$_query$$=$_query$$.trim();if(!$_query$$)return $callback$$();try{$_query$$.startsWith("{")||($_query$$="{"+$_query$$+"}");$_query$$.includes("return ")||($_query$$="return "+$_query$$);if($_query$$.indexOf("async ")>=0)return $callback$$("async function is not allow");$query$$=evalute($_query$$,{obj:$obj$$})}catch($e$$){Logger.info("error when parse json",$_query$$)}if(!$query$$)return $callback$$("Query is invalid: "+
@@ -19,9 +35,9 @@ $fields_m$$={};$fields_m$$[$query$$.field]=1;$fields_m$$.mnemonic=-1;$fields_m$$
19
35
  function strip_html_tags($str$$){if(!$str$$)return"";$str$$=$str$$.toString();return $str$$.replace(/<[^>]*>/g,"")}exports.strip_html_tags=strip_html_tags;exports.stripHtmlTags=strip_html_tags;function unescapeHtml($html_text$$){return unescape($html_text$$)}exports.unescapeHtml=unescapeHtml;const ngcompile=require("ng-node-compile");
20
36
  function compileHtml($template$$,$data$$){try{var $ngEnviorment_str_func$$=$template$$;$ngEnviorment_str_func$$.indexOf("return ")!==0&&($ngEnviorment_str_func$$="return `"+$ngEnviorment_str_func$$+"`");$template$$=evalute($ngEnviorment_str_func$$,{...$data$$,moment,numeral,data:$data$$,master:$data$$,obj:$data$$})}catch($e$$){Logger.error("error compile template js",$template$$,$e$$.message||$e$$,$data$$)}if($template$$.indexOf("{{")>=0&&$template$$.indexOf("}}")>=0){$ngEnviorment_str_func$$=new ngcompile([]);
21
37
  try{$template$$=$ngEnviorment_str_func$$.$compile("<span>"+$template$$+"</span>")($data$$)}catch($e$$){Logger.error("error compile template angularjs",$template$$,$e$$.message||$e$$,$data$$)}}return $template$$}exports.compileHtml=compileHtml;function isSupperAdmin($email$$){return global.configs?configs.supperAdmin===$email$$:!1}exports.isSupperAdmin=isSupperAdmin;
22
- function calcGrid($report$$,$number_columns$$,$callback$$){setImmediate(()=>{var $_number_columns_onImportProcess$$=path.dirname(__dirname)+"/workers/calcGrid.js";global.calcGridPool||(global.calcGridPool=new StaticPool($_number_columns_onImportProcess$$));$_number_columns_onImportProcess$$=_.isObject($number_columns$$)?Object.keys($number_columns$$).join(","):$number_columns$$;global.calcGridPool.exec({report:$report$$,number_columns:$_number_columns_onImportProcess$$},$response$$=>{let $result$$=
23
- $response$$.result||$response$$||[];_.isObject($number_columns$$)?async.map(Object.keys($number_columns$$),($column$$,$cb$$)=>{setImmediate(()=>{let $cbColumn$$=$number_columns$$[$column$$];$cbColumn$$?async.map($result$$.filter($r$$=>$r$$.cong_thuc),($r$$,$cb2$$)=>{$cbColumn$$(null,$r$$);$cb2$$()},()=>{$cb$$()}):$cb$$()})},()=>{$callback$$($result$$)}):$callback$$($result$$)})})}exports.calcGrid=calcGrid;
24
- const advMapSeries=($arr$$,$action$$,$callback$$,$options$$={number_group:1,wait_for_next:0})=>{const $number_items_one_group$$=Math.max(1,round($arr$$.length/($options$$.number_group||1)));$arr$$=_.chunk($arr$$,$number_items_one_group$$);async.mapSeries($arr$$,($group$$,$callback$$)=>{async.mapSeries($group$$,($row$$,$cb$$)=>{$action$$($row$$,$cb$$)},($e$$,$rs$$)=>{$options$$.wait_for_next?setTimeout(()=>{Logger.info("run next group...");$callback$$($e$$,$rs$$)},$options$$.wait_for_next):(Logger.info("run next group..."),
38
+ function calcGrid($report$$,$number_columns$$,$callback$$){setImmediate(()=>{var $_number_columns_onImportProcess$$=path.dirname(__dirname)+"/workers/calcGrid.js";global.calcGridPool||(global.calcGridPool=new StaticPool($_number_columns_onImportProcess$$));$_number_columns_onImportProcess$$=lodash.isObject($number_columns$$)?Object.keys($number_columns$$).join(","):$number_columns$$;global.calcGridPool.exec({report:$report$$,number_columns:$_number_columns_onImportProcess$$},$response$$=>{let $result$$=
39
+ $response$$.result||$response$$||[];lodash.isObject($number_columns$$)?async.map(Object.keys($number_columns$$),($column$$,$cb$$)=>{setImmediate(()=>{let $cbColumn$$=$number_columns$$[$column$$];$cbColumn$$?async.map($result$$.filter($r$$=>$r$$.cong_thuc),($r$$,$cb2$$)=>{$cbColumn$$(null,$r$$);$cb2$$()},()=>{$cb$$()}):$cb$$()})},()=>{$callback$$($result$$)}):$callback$$($result$$)})})}exports.calcGrid=calcGrid;
40
+ const advMapSeries=($arr$$,$action$$,$callback$$,$options$$={number_group:1,wait_for_next:0})=>{const $number_items_one_group$$=Math.max(1,round($arr$$.length/($options$$.number_group||1)));$arr$$=lodash.chunk($arr$$,$number_items_one_group$$);async.mapSeries($arr$$,($group$$,$callback$$)=>{async.mapSeries($group$$,($row$$,$cb$$)=>{$action$$($row$$,$cb$$)},($e$$,$rs$$)=>{$options$$.wait_for_next?setTimeout(()=>{Logger.info("run next group...");$callback$$($e$$,$rs$$)},$options$$.wait_for_next):(Logger.info("run next group..."),
25
41
  $callback$$($e$$,$rs$$))})},($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$e$$=$rs$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$callback$$(null,$e$$)})};exports.advMapSeries=advMapSeries;
26
42
  const getParameterData=($id_app$$,$collection$$,$field$$,$condition$$)=>{if(global.secu_models.indexOf($collection$$.toLowerCase())>=0)throw`Collection ${$collection$$} is not allow`;$collection$$==="dmkh"&&($collection$$="customer");$collection$$==="dmtk"&&($collection$$="account");let $col$$=mongoose.models[$collection$$];if($col$$){if($col$$.schema.paths.id_app){if(!$id_app$$)throw`Collection ${$collection$$} required id_app`;$condition$$.id_app=$id_app$$}let $fields$$;$field$$&&($fields$$={[$field$$]:1});
27
43
  if($collection$$==="user"||$collection$$==="participant")$fields$$={name:1};$collection$$==="app"&&($fields$$||={},$fields$$={...$fields$$,viettel_user:0,viettel_password:0,viettel_url_service:0,vnpt_user:0,vnpt_password:0,vnpt_url_service:0,easy_user:0,easy_password:0,easy_url_service:0,zalo_app_id:0,zalo_secret_key:0,zalo_code:0,zalo_oa_id:0,zalo_code_verifier:0,zalo_code_challenge:0,zalo_access_token:0,zalo_refresh_token:0,google_credentials:0,sip_uri:0,sip_password:0,sip_websocket:0,voiip_access_token:0,
@@ -36,8 +52,10 @@ const count=async($model_name$$,$condition$$)=>{if(global.secu_models.indexOf($m
36
52
  const query=async($model_name$$,$condition$$,$options$jscomp$5_rs$$={})=>{if(global.secu_models.indexOf($model_name$$.toLowerCase())>=0)throw`Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p query model '${$model_name$$}'`;if(!$condition$$)throw"condition missed";if($options$jscomp$5_rs$$.action&&$options$jscomp$5_rs$$.action!="find"){if(global.getModel($model_name$$)[$options$jscomp$5_rs$$.action]&&["getCoinBalance","getInvestBalance","getOwners"].indexOf($options$jscomp$5_rs$$.action)>=0)return global.getModel($model_name$$)[$options$jscomp$5_rs$$.action]($condition$$,
37
53
  $options$jscomp$5_rs$$);throw`${$options$jscomp$5_rs$$.action} is not valid`;}if(!$condition$$.id_app)throw"condition missed id_app param";let $fields$$=$options$jscomp$5_rs$$.fields;$model_name$$=global.getModel($model_name$$).find($condition$$,$fields$$);$options$jscomp$5_rs$$.sort&&($model_name$$=$model_name$$.sort($options$jscomp$5_rs$$.sort));$options$jscomp$5_rs$$.limit&&($model_name$$=$model_name$$.limit($options$jscomp$5_rs$$.limit));$options$jscomp$5_rs$$=await $model_name$$.lean();$options$jscomp$5_rs$$.forEach($r$$=>
38
54
  {delete $r$$.mnemonic;delete $r$$.private_key;delete $r$$.password;delete $r$$.token;$r$$.local&&(delete $r$$.local.password,delete $r$$.local.repassword,delete $r$$.local.pin)});return $options$jscomp$5_rs$$};exports.query=query;exports.find=query;const getLib=$lib_name$$=>global.getLib($lib_name$$);exports.getLib=getLib;
39
- const getCodeChildren=async($model$$,$id_app$$,$code$jscomp$2_rs$$,$field_code$$,$field_mother$$,$chil_condition$$={})=>{let $nh_khs$$;$nh_khs$$=_.isArray($code$jscomp$2_rs$$)?[...$code$jscomp$2_rs$$]:[$code$jscomp$2_rs$$];$code$jscomp$2_rs$$=[...$nh_khs$$];$chil_condition$$=(await $model$$.find({id_app:$id_app$$,[$field_mother$$]:{$in:$nh_khs$$},...$chil_condition$$},{_id:1,[$field_code$$]:1,[$field_mother$$]:1}).lean()).filter($n$$=>$n$$[$field_code$$]!=$n$$[$field_mother$$]).map($d$$=>$d$$[$field_code$$]);
40
- $chil_condition$$.length>0&&($chil_condition$$=await Promise.all($chil_condition$$.map($nh$$=>getCodeChildren($model$$,$id_app$$,$nh$$,$field_code$$,$field_mother$$))),$chil_condition$$=$chil_condition$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$code$jscomp$2_rs$$=[...$chil_condition$$,...$code$jscomp$2_rs$$]);return $code$jscomp$2_rs$$};exports.getCodeChildren=getCodeChildren;
55
+ const getCodeChildren=async($model$$,$id_app$$,$code$$,$field_code$$,$field_mother$$,$condition$$={},$maxDepth$$=20)=>{if(typeof $code$$==="object"&&!Array.isArray($code$$))try{Logger.warn("[getCodeChildren] \u0111ang l\u00e0m s\u1ea1ch gi\u00e1 tr\u1ecb \u0111\u1ec3 tr\u1ea3 v\u1ec1 array m\u00e3",JSON.stringify($code$$,null,2)),$code$$=(await $model$$.find({[$field_code$$]:$code$$,...$condition$$,id_app:$id_app$$},{[$field_code$$]:1}).lean()).map($r$$=>$r$$[$field_code$$]),Logger.warn("[getCodeChildren] sau khi l\u00e0m s\u1ea1ch",
56
+ JSON.stringify($code$$,null,2))}catch($e$$){return Logger.error("[getCodeChildren] tham s\u1ed1 code ph\u1ea3i l\u00e0 string ho\u1eb7c array",JSON.stringify({code:$code$$,field_code:$field_code$$,field_mother:$field_mother$$},null,2)),[]}$code$$=Array.isArray($code$$)?$code$$:[$code$$];if($code$$.length===0)return[];const $visited$$=new Set($code$$);var $frontier_nextLevel$$=$code$$;let $depth$$=0;for(;$frontier_nextLevel$$.length>0&&$depth$$<$maxDepth$$;){$depth$$++;var $childCode_children$$=await $model$$.find({id_app:$id_app$$,
57
+ [$field_mother$$]:{$in:$frontier_nextLevel$$},...$condition$$},{_id:0,[$field_code$$]:1,[$field_mother$$]:1}).lean();$frontier_nextLevel$$=[];for(const $child$$ of $childCode_children$$)$childCode_children$$=$child$$[$field_code$$]?.toString(),$childCode_children$$===$child$$[$field_mother$$]?.toString()||$visited$$.has($childCode_children$$)||($visited$$.add($childCode_children$$),$frontier_nextLevel$$.push($childCode_children$$));$depth$$===$maxDepth$$&&$frontier_nextLevel$$.length>0&&Logger.warn(`[getCodeChildren] \u0111\u00e3 \u0111\u1ea1t \u0111\u1ed9 s\u00e2u t\u1ed1i \u0111a (${$maxDepth$$}), d\u1eebng t\u1ea1i \u0111\u00e2y.`,
58
+ JSON.stringify({seeds:$code$$,remaining:$frontier_nextLevel$$},null,2))}return[...$visited$$]};exports.getCodeChildren=getCodeChildren;
41
59
  const aggregate=async($model_name$jscomp$2_rs$$,$id_app$$,$stages$$=[])=>{if(global.secu_models.indexOf($model_name$jscomp$2_rs$$)>=0)throw"Not allow";$stages$$.forEach($stage$$=>{for(let $key$$ in $stage$$)$stage$$[$key$$].pipeline&&($stage$$[$key$$].pipeline=[{$match:{id_app:$id_app$$}},...$stage$$[$key$$].pipeline])});$stages$$=[{$match:{id_app:$id_app$$}},...$stages$$];$model_name$jscomp$2_rs$$=await global.getModel($model_name$jscomp$2_rs$$).aggregate($stages$$).lean();$model_name$jscomp$2_rs$$.forEach($r$$=>
42
60
  {delete $r$$.mnemonic;delete $r$$.private_key;delete $r$$.password;delete $r$$.token;$r$$.local&&(delete $r$$.local.password,delete $r$$.local.repassword,delete $r$$.local.pin)});return $model_name$jscomp$2_rs$$};exports.aggregate=aggregate;const axios=require("axios"),querystring=require("querystring"),xml2js=require("xml2js"),xml2json=$string$$=>new Promise(($res$$,$rej$$)=>{xml2js.parseString($string$$,($e$$,$rs$$)=>{if($e$$)return $rej$$($e$$);$res$$($rs$$)})});exports.xml2json=xml2json;
43
61
  const base64toJSON=$b$$=>{$b$$=Buffer.from($b$$,"base64");return xml2json($b$$.toString("utf8"))};exports.base64toJSON=base64toJSON;const isMobilePhone=($cleanStr_str$$,$locale$$)=>{if(!$cleanStr_str$$||!$cleanStr_str$$.toString().trim())return!1;$cleanStr_str$$=$cleanStr_str$$.toString().replace(/[.\s()-]+/g,"");return/^(\+84|0)(2\d{9}|[35789]\d{8})$/.test($cleanStr_str$$)};exports.isMobilePhone=isMobilePhone;
@@ -54,7 +72,7 @@ async function getLocationByAddress($address$$,$address2$$){try{let $url$$=`http
54
72
  $data$$=(await axios.get($url$$)).data.features||[];if($data$$.length>0){let $lc$$=$data$$[0].properties||{};return{latitude:$lc$$.lat,longitude:$lc$$.lon}}Logger.info("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y v\u1ecb tr\u00ed c\u1ee7a \u0111\u1ecba ch\u1ec9 2:",{address2:$address2$$,url:$url$$})}else Logger.info("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y v\u1ecb tr\u00ed c\u1ee7a \u0111\u1ecba ch\u1ec9:",{address:$address$$,url:$url$$})}catch($e$$){Logger.error("Kh\u00f4ng th\u1ec3 x\u00e1c \u0111\u1ecbnh v\u00ed tr\u00ed c\u1ee7a \u0111\u1ecba ch\u1ec9:",
55
73
  $address$$,"L\u1ed7i: ",($e$$.response||{}).data||$e$$)}return null}exports.getLocationByAddress=getLocationByAddress;const {createSokhoTC,createSocaiTC}=require("./optimizeBookkeeping");exports.createSokhoTC=createSokhoTC;exports.createSocaiTC=createSocaiTC;
56
74
  async function analyzeData($datas_mydata$$,$question$$="Vui l\u00f2ng ph\u00e2n t\u00edch c\u00e1c ch\u1ec9 ti\u00eau t\u00e0i ch\u00ednh ch\u00ednh y\u1ebfu.",$conversationHistory$$,$system_type$$="B\u1ea1n l\u00e0 m\u1ed9t chuy\u00ean gia t\u00e0i ch\u00ednh, h\u1ed7 tr\u1ee3 ph\u00e2n t\u00edch d\u1eef li\u1ec7u t\u00e0i ch\u00ednh d\u1ef1a tr\u00ean b\u1ea3ng c\u00e2n \u0111\u1ed1i ph\u00e1t sinh c\u00e1c t\u00e0i kho\u1ea3n. H\u00e3y t\u00ednh to\u00e1n m\u1ecdi c\u00f4ng th\u1ee9c (n\u1ebfu c\u00f3) trong c\u00e2u tr\u1ea3 l\u1eddi."){if(!configs.openapi_key)throw"H\u1ec7 th\u1ed1ng ch\u01b0a h\u1ed7 tr\u1ee3";if(!$datas_mydata$$)throw"Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 ph\u00e2n t\u00edch";
57
- Logger.info("B\u1eaft \u0111\u1ea7u ph\u00e2n t\u00edch y\u00eau c\u1ea7u");var $client_reply$$=new (require("openai"))({apiKey:configs.openapi_key,dangerouslyAllowBrowser:!0});_.isArray($datas_mydata$$)||($datas_mydata$$=[$datas_mydata$$]);$datas_mydata$$=$datas_mydata$$.map($d$$=>$d$$.title&&$d$$.data?$d$$:{title:"D\u1eef li\u1ec7u c\u1ea7n ph\u00e2n t\u00edch",data:$d$$});$conversationHistory$$&&$conversationHistory$$.length!=0||($conversationHistory$$=[{role:"system",content:$system_type$$}]);
75
+ Logger.info("B\u1eaft \u0111\u1ea7u ph\u00e2n t\u00edch y\u00eau c\u1ea7u");var $client_reply$$=new (require("openai"))({apiKey:configs.openapi_key,dangerouslyAllowBrowser:!0});lodash.isArray($datas_mydata$$)||($datas_mydata$$=[$datas_mydata$$]);$datas_mydata$$=$datas_mydata$$.map($d$$=>$d$$.title&&$d$$.data?$d$$:{title:"D\u1eef li\u1ec7u c\u1ea7n ph\u00e2n t\u00edch",data:$d$$});$conversationHistory$$&&$conversationHistory$$.length!=0||($conversationHistory$$=[{role:"system",content:$system_type$$}]);
58
76
  $datas_mydata$$=$datas_mydata$$.filter($d$$=>$d$$.data).map($d$$=>({role:"user",content:`${$d$$.title}:\n${JSON.stringify($d$$.data,null,2)}.`}));if($datas_mydata$$.length)$datas_mydata$$.forEach($r$$=>{$conversationHistory$$.push($r$$)});else throw"Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u \u0111\u1ec3 ph\u00e2n t\u00edch";$conversationHistory$$.push({role:"user",content:$question$$});$client_reply$$=(await $client_reply$$.chat.completions.create({model:"gpt-4o",messages:$conversationHistory$$})).choices[0].message.content.trim();
59
77
  $conversationHistory$$.push({role:"assistant",content:$client_reply$$});return{question:$question$$,reply:$client_reply$$,conversationHistory:$conversationHistory$$}}exports.analyzeData=analyzeData;
60
78
  async function sendMessageZalo($app$jscomp$1_id_app$$,$message$jscomp$10_message$$,$zalo_otp_template_id$$,$template_data$$={},$tracking_id$$,$headers_secret_key$$){if(!$app$jscomp$1_id_app$$)throw"Thi\u1ebfu th\u00f4ng tin id_app";if(global.mongoose.Types.ObjectId.isValid($app$jscomp$1_id_app$$))if(($app$jscomp$1_id_app$$=await global.getModel("app").findOne({_id:$app$jscomp$1_id_app$$}))&&$app$jscomp$1_id_app$$.zalo_app_id&&$app$jscomp$1_id_app$$.zalo_secret_key&&$app$jscomp$1_id_app$$.zalo_access_token&&
@@ -72,10 +90,10 @@ const updateInvoice=async($contr$$,$ct$$)=>{let $result_export_einvoice$$=$ct$$.
72
90
  return $result_export_einvoice$$};exports.updateInvoice=updateInvoice;
73
91
  const viettelInvoice=require("./invoiceViettel"),easyInvoice=require("./invoiceEasy"),vnptInvoice=require("./invoiceVnpt"),exportInvoice=async($app$$,$voucher$$,$check_data$$=!1)=>{if(!$app$$)throw"Thi\u1ebfu th\u00f4ng tin c\u00f4ng ty";const $ctrl$$=global.controllers[$voucher$$?.ma_ct?.toUpperCase()];if(!$ctrl$$)throw"Kh\u00f4ng th\u1ec3 xu\u1ea5t thu\u1ebf cho ch\u1ee9ng t\u1eeb "+$voucher$$?.ma_ct;if(!$app$$)throw"Kh\u00f4ng t\u00ecm th\u1ea5y c\u00f4ng ty n\u00e0y";if(!$app$$.ma_so_thue)throw"B\u1ea1n ch\u01b0a nh\u1eadp m\u00e3 s\u1ed1 thu\u1ebf c\u1ee7a c\u00f4ng ty";
74
92
  let $fnInvoice$$;switch($app$$.invoice_service){case "VIETTEL":$fnInvoice$$=viettelInvoice.exportInvoice;break;case "EASY":$fnInvoice$$=easyInvoice.exportInvoice;break;case "VNPT":$fnInvoice$$=vnptInvoice.exportInvoice}if(!$fnInvoice$$)throw"Ch\u01b0a khai b\u00e1o d\u1ecbch v\u1ee5 ho\u00e1 \u0111\u01a1n \u0111i\u1ec7n t\u1eeb ho\u1eb7c ch\u01b0a c\u00f3 gi\u00e1 tr\u1ecb";$voucher$$.toObject&&($voucher$$=$voucher$$.toObject());var $cts_transactionUuid$$=[$voucher$$];if($voucher$$.vatras?.length)for(var $result_export_einvoices_vatra$$ of $voucher$$.vatras.filter($v$$=>
75
- $v$$.ma_thue)){$result_export_einvoices_vatra$$.toObject&&($result_export_einvoices_vatra$$=$result_export_einvoices_vatra$$.toObject());var $ct$jscomp$1_r$jscomp$5_result_export_einvoice$$={...$voucher$$,...$result_export_einvoices_vatra$$,details:$result_export_einvoices_vatra$$.details,ma_kh:$result_export_einvoices_vatra$$.ma_kh||$voucher$$.ma_kh,ten_kh:$result_export_einvoices_vatra$$.ten_kh||$voucher$$.ten_kh};let $sl_xuat$$=$result_export_einvoices_vatra$$.sl_xuat||1;$ct$jscomp$1_r$jscomp$5_result_export_einvoice$$.details&&
76
- $ct$jscomp$1_r$jscomp$5_result_export_einvoice$$.details.length!=0||($ct$jscomp$1_r$jscomp$5_result_export_einvoice$$.details=[{...$result_export_einvoices_vatra$$,ten_vt_vat:$result_export_einvoices_vatra$$.ten_vt,ma_dvt:$result_export_einvoices_vatra$$.ma_dvt||"L\u1ea7n",sl_xuat:$sl_xuat$$,gia_ban_ct_nt:Math.round($result_export_einvoices_vatra$$.t_tien_nt/$sl_xuat$$),tien_ct_nt:$result_export_einvoices_vatra$$.t_tien_nt,tien_ck_nt:0,tien_thue_nt:$result_export_einvoices_vatra$$.t_thue_nt}]);$cts_transactionUuid$$.push($ct$jscomp$1_r$jscomp$5_result_export_einvoice$$)}$result_export_einvoices_vatra$$=
77
- [];$cts_transactionUuid$$=$cts_transactionUuid$$.filter($d$$=>$d$$.details&&$d$$.details.length>0&&$d$$.export_yn!=0);for(let $ct$$ of $cts_transactionUuid$$){$ct$$.details=$ct$$.details.map($d$$=>$d$$.toObject?$d$$.toObject():$d$$);$cts_transactionUuid$$=$ct$$._id.toString();if(!$check_data$$&&($ct$jscomp$1_r$jscomp$5_result_export_einvoice$$=await getInvoice($app$$,$cts_transactionUuid$$))){$result_export_einvoices_vatra$$.push($ct$jscomp$1_r$jscomp$5_result_export_einvoice$$);continue}$ct$jscomp$1_r$jscomp$5_result_export_einvoice$$=
78
- await $fnInvoice$$($app$$,$ct$$,$check_data$$);$ct$jscomp$1_r$jscomp$5_result_export_einvoice$$.transactionUuid=$cts_transactionUuid$$;$result_export_einvoices_vatra$$.push($ct$jscomp$1_r$jscomp$5_result_export_einvoice$$)}$check_data$$||(Logger.info("[utils] [exportInvoice] C\u1eadp nh\u1eadt ho\u00e1 \u0111\u01a1n...",$result_export_einvoices_vatra$$.length),$voucher$$.result_export_einvoice=$result_export_einvoices_vatra$$,await updateInvoice($ctrl$$,$voucher$$));return $result_export_einvoices_vatra$$};
93
+ $v$$.ma_thue)){$result_export_einvoices_vatra$$.toObject&&($result_export_einvoices_vatra$$=$result_export_einvoices_vatra$$.toObject());var $ct$jscomp$1_r$jscomp$6_result_export_einvoice$$={...$voucher$$,...$result_export_einvoices_vatra$$,details:$result_export_einvoices_vatra$$.details,ma_kh:$result_export_einvoices_vatra$$.ma_kh||$voucher$$.ma_kh,ten_kh:$result_export_einvoices_vatra$$.ten_kh||$voucher$$.ten_kh};let $sl_xuat$$=$result_export_einvoices_vatra$$.sl_xuat||1;$ct$jscomp$1_r$jscomp$6_result_export_einvoice$$.details&&
94
+ $ct$jscomp$1_r$jscomp$6_result_export_einvoice$$.details.length!=0||($ct$jscomp$1_r$jscomp$6_result_export_einvoice$$.details=[{...$result_export_einvoices_vatra$$,ten_vt_vat:$result_export_einvoices_vatra$$.ten_vt,ma_dvt:$result_export_einvoices_vatra$$.ma_dvt||"L\u1ea7n",sl_xuat:$sl_xuat$$,gia_ban_ct_nt:Math.round($result_export_einvoices_vatra$$.t_tien_nt/$sl_xuat$$),tien_ct_nt:$result_export_einvoices_vatra$$.t_tien_nt,tien_ck_nt:0,tien_thue_nt:$result_export_einvoices_vatra$$.t_thue_nt}]);$cts_transactionUuid$$.push($ct$jscomp$1_r$jscomp$6_result_export_einvoice$$)}$result_export_einvoices_vatra$$=
95
+ [];$cts_transactionUuid$$=$cts_transactionUuid$$.filter($d$$=>$d$$.details&&$d$$.details.length>0&&$d$$.export_yn!=0);for(let $ct$$ of $cts_transactionUuid$$){$ct$$.details=$ct$$.details.map($d$$=>$d$$.toObject?$d$$.toObject():$d$$);$cts_transactionUuid$$=$ct$$._id.toString();if(!$check_data$$&&($ct$jscomp$1_r$jscomp$6_result_export_einvoice$$=await getInvoice($app$$,$cts_transactionUuid$$))){$result_export_einvoices_vatra$$.push($ct$jscomp$1_r$jscomp$6_result_export_einvoice$$);continue}$ct$jscomp$1_r$jscomp$6_result_export_einvoice$$=
96
+ await $fnInvoice$$($app$$,$ct$$,$check_data$$);$ct$jscomp$1_r$jscomp$6_result_export_einvoice$$.transactionUuid=$cts_transactionUuid$$;$result_export_einvoices_vatra$$.push($ct$jscomp$1_r$jscomp$6_result_export_einvoice$$)}$check_data$$||(Logger.info("[utils] [exportInvoice] C\u1eadp nh\u1eadt ho\u00e1 \u0111\u01a1n...",$result_export_einvoices_vatra$$.length),$voucher$$.result_export_einvoice=$result_export_einvoices_vatra$$,await updateInvoice($ctrl$$,$voucher$$));return $result_export_einvoices_vatra$$};
79
97
  exports.exportInvoice=exportInvoice;
80
98
  const getInvoice=async($app$jscomp$3_invoice$$,$transactionUuid$$)=>{if(!$app$jscomp$3_invoice$$)throw"Thi\u1ebfu th\u00f4ng tin c\u00f4ng ty";if($app$jscomp$3_invoice$$.invoice_service==="VIETTEL")$app$jscomp$3_invoice$$=await viettelInvoice.getInvoice($app$jscomp$3_invoice$$,$transactionUuid$$);else if($app$jscomp$3_invoice$$.invoice_service==="EASY")$app$jscomp$3_invoice$$=await easyInvoice.getInvoice($app$jscomp$3_invoice$$,$transactionUuid$$);else if($app$jscomp$3_invoice$$.invoice_service==="VNPT")$app$jscomp$3_invoice$$=
81
99
  await vnptInvoice.getInvoice($app$jscomp$3_invoice$$,$transactionUuid$$);else throw"Ch\u01b0a khai b\u00e1o d\u1ecbch v\u1ee5 ho\u00e1 \u0111\u01a1n b\u00ean th\u1ee9 3";$app$jscomp$3_invoice$$&&($app$jscomp$3_invoice$$.transactionUuid=$transactionUuid$$);return $app$jscomp$3_invoice$$};exports.getInvoice=getInvoice;
@@ -94,7 +112,7 @@ Math.min($options$$.attempt*100,3E3);Logger.info(`M\u1ea5t k\u1ebft n\u1ed1i Red
94
112
  const transform=require("lodash/transform"),isEqual=require("lodash/isEqual"),isObject=require("lodash/isObject"),difference=function($object$$,$base$$){return transform($object$$,($result$$,$value$$,$key$$)=>{isEqual($value$$,$base$$[$key$$])||($result$$[$key$$]=isObject($value$$)&&isObject($base$$[$key$$])?difference($value$$,$base$$[$key$$]):$value$$)})};exports.difference=difference;
95
113
  const getDateRangeByType=$type$$=>{let $fromDate$$="",$toDate$$="";switch($type$$){case "today":$fromDate$$=moment().format("YYYY-MM-DD");$toDate$$=moment().format("YYYY-MM-DD");break;case "thisWeek":$fromDate$$=moment().startOf("week").format("YYYY-MM-DD");$toDate$$=moment().endOf("week").format("YYYY-MM-DD");break;case "thisMonth":$fromDate$$=moment().startOf("month").format("YYYY-MM-DD");$toDate$$=moment().endOf("month").format("YYYY-MM-DD");break;case "lastMonth":$fromDate$$=moment().subtract(1,
96
114
  "month").startOf("month").format("YYYY-MM-DD");$toDate$$=moment().subtract(1,"month").endOf("month").format("YYYY-MM-DD");break;case "thisYear":$fromDate$$=moment().startOf("year").format("YYYY-MM-DD"),$toDate$$=moment().endOf("year").format("YYYY-MM-DD")}return{fromDate:$fromDate$$,toDate:$toDate$$}};exports.getDateRangeByType=getDateRangeByType;
97
- const fs=require("fs"),getDir=$dirName$$=>{let $dirPath$$=configs.paths[$dirName$$];$dirPath$$||($dirPath$$=__dirname,$dirPath$$=path.dirname($dirPath$$),$dirPath$$=path.dirname($dirPath$$),$dirPath$$=path.join($dirPath$$,$dirName$$));fs.existsSync($dirPath$$)||fs.mkdirSync($dirPath$$);return $dirPath$$};exports.getDir=getDir;
115
+ const getDir=$dirName$$=>{let $dirPath$$=configs.paths[$dirName$$];$dirPath$$||($dirPath$$=__dirname,$dirPath$$=path.dirname($dirPath$$),$dirPath$$=path.dirname($dirPath$$),$dirPath$$=path.join($dirPath$$,$dirName$$));fs.existsSync($dirPath$$)||fs.mkdirSync($dirPath$$);return $dirPath$$};exports.getDir=getDir;
98
116
  const getPathFile=$file_file_name$$=>{if($file_file_name$$.file&&$file_file_name$$.file.name){$file_file_name$$=$file_file_name$$.file.name;var $root$$=getDir("uploads");return path.join($root$$,$file_file_name$$)}};exports.getPathFile=getPathFile;
99
117
  function restoreObjectIds($data$$){const $walk$$=$buffer$jscomp$inline_2_value$$=>{if($buffer$jscomp$inline_2_value$$===null||typeof $buffer$jscomp$inline_2_value$$!=="object"||$buffer$jscomp$inline_2_value$$ instanceof Date||$buffer$jscomp$inline_2_value$$ instanceof RegExp||Buffer.isBuffer($buffer$jscomp$inline_2_value$$))return $buffer$jscomp$inline_2_value$$;if(Array.isArray($buffer$jscomp$inline_2_value$$))return $buffer$jscomp$inline_2_value$$.map($walk$$);if($buffer$jscomp$inline_2_value$$&&
100
118
  typeof $buffer$jscomp$inline_2_value$$==="object"&&$buffer$jscomp$inline_2_value$$._bsontype==="ObjectID"&&$buffer$jscomp$inline_2_value$$.id&&typeof $buffer$jscomp$inline_2_value$$.id==="object")return $buffer$jscomp$inline_2_value$$=Buffer.from(Object.values($buffer$jscomp$inline_2_value$$.id)),new mongoose.Types.ObjectId($buffer$jscomp$inline_2_value$$);const $result$$={};for(const $key$$ in $buffer$jscomp$inline_2_value$$)Object.prototype.hasOwnProperty.call($buffer$jscomp$inline_2_value$$,$key$$)&&
@@ -5,7 +5,7 @@ ma_so_thue:{type:String,maxlength:1024},dia_chi_xuat_hoa_don:String,nguoi_nop_th
5
5
  ty_le_hoa_hong:Number,tang_gioi_thieu_denom:String,ten_chu_tai_khoan:String,tai_khoan_ngan_hang:String,ten_ngan_hang:String,chi_nhanh_ngan_hang:String,so_bin:String,so_ngay_lam_mot_thang:{type:Number,default:24},logo:{type:String,maxlength:1024},logo_watermark:{type:String,maxlength:1024},account_types_accept:[],options:{},allow_modules:[String],partner:String,server:String,owner:String,default_password:String,google_credentials:String,email_host:String,email_port:Number,email_secure:{type:Boolean,
6
6
  default:!0},email_authMethod:{type:String,default:"LOGIN"},email_user:String,email_pass:String,email_name:String,invoice_service:String,viettel_version:{type:String,maxlength:1024},viettel_user:{type:String,maxlength:1024},viettel_password:{type:String,maxlength:1024},viettel_token:{type:String},viettel_url_service:{type:String,maxlength:1024},viettel_direct_issue:Boolean,ma_hoa_don:String,ky_hieu_hoa_don:String,so_serial:String,vnpt_user:{type:String,maxlength:1024},vnpt_password:{type:String,maxlength:1024},
7
7
  vnpt_url_service:{type:String,maxlength:1024},vnpt_ky_hieu_hoa_don:String,vnpt_so_serial:String,easy_user:{type:String,maxlength:1024},easy_password:{type:String,maxlength:1024},easy_url_service:{type:String,maxlength:1024},easy_ky_hieu_hoa_don:String,easy_so_serial:String,facebook_webhook_verify_token:String,facebook_webhook:String,sip_uri:String,sip_password:String,sip_websocket:String,voiip_access_token:String,voiip_webhook:String,zalo_app_id:String,zalo_secret_key:String,zalo_code:String,zalo_oa_id:String,
8
- zalo_code_verifier:String,zalo_code_challenge:String,zalo_access_token:String,zalo_refresh_token:String,zalo_expires_in:Number,zalo_updated:Date,zalo_otp_template_id:String,exfields:global.Schema.Types.Mixed,domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,openapi_key:String,openapi_gpt_model:String,expire_date:Date,trang_thai:{type:String,default:"0"},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,
8
+ zalo_code_verifier:String,zalo_code_challenge:String,zalo_access_token:String,zalo_refresh_token:String,zalo_expires_in:Number,zalo_updated:Date,zalo_otp_template_id:String,exfields:global.Schema.Types.Mixed,domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,ai_name:String,ai_api_key:String,ai_model:String,expire_date:Date,trang_thai:{type:String,default:"0"},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,
9
9
  default:""},user_updated:{type:String,default:""}});
10
10
  (global.configs||{}).createIndexes&&(appScheam.index({app_code:1},{unique:!0}),appScheam.index({name:1,province:1}),appScheam.index({menu_code:1}),appScheam.index({trang_thai:1}),appScheam.index({sale_online:1}),appScheam.index({date_created:1}),appScheam.index({date_updated:1}),appScheam.index({user_created:"text"},{name:"app_index_created"}),appScheam.index({name:"text",province:"text",name_en:"text",address:"text",phone:"text",email:"text",ma_so_thue:"text"},{name:"app_index"}));
11
11
  const App=global.mongoose.models.app||global.mongoose.model("app",appScheam);
@@ -1,7 +1,7 @@
1
1
  const App=require("./app"),Options=require("./options"),ngcompile=require("ng-node-compile"),utils=require("../libs/utils"),File=require("./file"),underscore=require("underscore"),moment=require("moment"),participant=require("./participant"),_=require("lodash"),{onAfterCommit,executeInTransaction}=require("../libs/sessionContext"),approveSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},id_ct:{type:String,required:!0,maxlength:1024},ma_ct:{type:String,required:!0,maxlength:32,trim:!0},
2
2
  trang_thai:{type:String},user_request:{type:String,required:!0,maxlength:128,trim:!0},user_request_name:{type:String,required:!0,maxlength:1024},template_content:String,request_content:String,user_approves:[{email:{type:String,maxlength:128,trim:!0},name:{type:String,maxlength:1024}}],user_approved:{type:String,maxlength:128,trim:!0},user_approved_name:{type:String,maxlength:1024},date_approved:Date,approved_reason:String,user_denied:{type:String,maxlength:128,trim:!0},user_denied_name:{type:String,
3
- maxlength:1024},date_denied:Date,denied_reason:{type:String,maxlength:4E3},update_after_approve:Schema.Types.Mixed,update_after_deny:Schema.Types.Mixed,title:{type:String,maxlength:1024},data:Schema.Types.Mixed,status:{type:Boolean,default:!1},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:2},visible_to_users:[String]});
4
- (global.configs||{}).createIndexes&&(approveSchema.index({id_ct:1,id_app:1}),approveSchema.index({id_ct:1}),approveSchema.index({id_app:1,trang_thai:1}),approveSchema.index({id_app:1,user_approved:1}),approveSchema.index({id_app:1,user_denied:1}),approveSchema.index({id_app:1,status:1}),approveSchema.index({id_app:1,date_created:1}),approveSchema.index({id_app:1,user_request:"text",user_request_name:"text"},{name:"approve_index"}));const model=mongoose.models.approve||mongoose.model("approve",approveSchema);
3
+ maxlength:1024},date_denied:Date,denied_reason:{type:String,maxlength:4E3},update_after_approve:Schema.Types.Mixed,update_after_deny:Schema.Types.Mixed,title:{type:String,maxlength:1024},data:Schema.Types.Mixed,status:{type:Boolean,default:!1},request_status:{type:String,default:"PENDDING"},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:2},visible_to_users:[String]});
4
+ (global.configs||{}).createIndexes&&(approveSchema.index({id_ct:1,id_app:1}),approveSchema.index({id_ct:1}),approveSchema.index({id_app:1,trang_thai:1}),approveSchema.index({id_app:1,user_approved:1}),approveSchema.index({id_app:1,user_denied:1}),approveSchema.index({id_app:1,status:1}),approveSchema.index({id_app:1,status:1}),approveSchema.index({id_app:1,request_status:1}));const model=mongoose.models.approve||mongoose.model("approve",approveSchema);
5
5
  let renderRequests=$requests$$=>$requests$$&&$requests$$.length!==0?`
6
6
  <p style='margin-top:50px'>
7
7
  <hr/>
@@ -66,8 +66,8 @@ await File.find({id_link:$rq$$.data._id}).lean():void 0},null,$emails$$,!0,!0)}c
66
66
  model.approve=async function($encrypted$$,$callback$$,$token$$,$options$$={reason:""}){try{const $result_approve$$=await executeInTransaction(async()=>{Logger.info("[approve] \u0111ang duy\u1ec7t y\u00eau c\u1ea7u....");let $user_approved$$;if(underscore.isObject($encrypted$$)){var $_c$$=$encrypted$$.id_request;$user_approved$$=$encrypted$$.email;var $approve_user_approved_name$$=$encrypted$$.name;var $key_data_trang_thai$$=$encrypted$$.trang_thai}else $key_data_trang_thai$$=utils.decrypt($encrypted$$),
67
67
  $_c$$=$key_data_trang_thai$$.id_request,$user_approved$$=$key_data_trang_thai$$.email,$approve_user_approved_name$$=$key_data_trang_thai$$.name,$key_data_trang_thai$$=$key_data_trang_thai$$.trang_thai;if(!$_c$$||!$user_approved$$)throw"request id and approve user are required";if(!global.mongoose.Types.ObjectId.isValid($_c$$))throw"request id '"+$_c$$+"' is not valid";$_c$$={_id:$_c$$};$key_data_trang_thai$$!==void 0&&$key_data_trang_thai$$!==null&&($_c$$.trang_thai=$key_data_trang_thai$$);const $rq$$=
68
68
  await model.findOne($_c$$).inTxn();if(!$rq$$)throw"Y\u00eau c\u1ea7u kh\u00f4ng t\u1ed3n t\u1ea1i";if($rq$$.date_approved)throw"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name;if($rq$$.date_denied)throw"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+$rq$$.user_denied_name;$rq$$.date_approved=new Date;$rq$$.user_approved=$user_approved$$;$rq$$.user_approved_name=$approve_user_approved_name$$;$rq$$.approved_reason=
69
- $options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>$u$$.email.indexOf($user_approved$$)>=0))throw"User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y";$approve_user_approved_name$$=await $rq$$.save();if($rq$$.update_after_approve&&$rq$$.update_after_approve.data){Logger.info("[approve] t\u00ecm controller c\u1ee7a ch\u1ee9ng t\u1eeb \u0111\u00e3 duy\u1ec7t",$rq$$.update_after_approve.module||$rq$$.update_after_approve.model);let $module_name$$=
70
- $rq$$.update_after_approve.module||$rq$$.update_after_approve.model,$ctrl$$;$module_name$$&&($ctrl$$=global.controllers[$module_name$$.toUpperCase()]);let $_m$$;$rq$$.update_after_approve.model?$_m$$=global.getModel($rq$$.update_after_approve.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$){Logger.error("[approve] kh\u00f4ng t\u00ecm th\u1ea5y model c\u1ee7a ch\u1ee9ng t\u1eeb",$rq$$.update_after_approve.model||$module_name$$.toUpperCase());return}Logger.info("[approve] c\u1eadp nh\u1eadt data cho ch\u1ee9ng t\u1eeb sau khi duy\u1ec7t...",
69
+ $options$$.reason||"";$rq$$.request_status="APPROVED";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>$u$$.email.indexOf($user_approved$$)>=0))throw"User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y";$approve_user_approved_name$$=await $rq$$.save();if($rq$$.update_after_approve&&$rq$$.update_after_approve.data){Logger.info("[approve] t\u00ecm controller c\u1ee7a ch\u1ee9ng t\u1eeb \u0111\u00e3 duy\u1ec7t",$rq$$.update_after_approve.module||$rq$$.update_after_approve.model);
70
+ let $module_name$$=$rq$$.update_after_approve.module||$rq$$.update_after_approve.model,$ctrl$$;$module_name$$&&($ctrl$$=global.controllers[$module_name$$.toUpperCase()]);let $_m$$;$rq$$.update_after_approve.model?$_m$$=global.getModel($rq$$.update_after_approve.model):$ctrl$$&&($_m$$=$ctrl$$.getProperty("model"));if(!$_m$$){Logger.error("[approve] kh\u00f4ng t\u00ecm th\u1ea5y model c\u1ee7a ch\u1ee9ng t\u1eeb",$rq$$.update_after_approve.model||$module_name$$.toUpperCase());return}Logger.info("[approve] c\u1eadp nh\u1eadt data cho ch\u1ee9ng t\u1eeb sau khi duy\u1ec7t...",
71
71
  $module_name$$);await $_m$$.updateOne({_id:$rq$$.id_ct},$rq$$.update_after_approve.data);if($ctrl$$){const $obj$$=await $_m$$.findOne({_id:$rq$$.id_ct}).inTxn();if($obj$$){onAfterCommit(()=>{$ctrl$$.emit("saved",$obj$$);$ctrl$$.emit("updated",$obj$$)});const $u$$=await global.getModel("user").findOne({email:$user_approved$$});$u$$.current_id_app=$obj$$.id_app;const $app_info$$=await App.findOne({_id:$obj$$.id_app});Logger.info("[approve] post s\u1ed5 s\u00e1ch sau khi duy\u1ec7t ch\u1ee9ng t\u1eeb...",
72
72
  $ctrl$$.name,$module_name$$,$obj$$.so_ct,$obj$$.trang_thai);await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.postData($obj$$,$e$$=>{if($e$$)return Logger.error("[approve] [postData]",$e$$,$module_name$$,$obj$$.so_ct,$obj$$.trang_thai),$reject$$($e$$);$resolve$$()},{kiem_tra_han_muc_cong_no:!1})});$ctrl$$.handleAfterAproved&&await $ctrl$$.handleAfterAproved($obj$$,$rq$$);await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.onView($u$$,[$obj$$.toObject()],async($channel_e$$,$rs$$)=>{$channel_e$$&&Logger.error("[approve][approved][onView]",
73
73
  $channel_e$$);$channel_e$$=`${$module_name$$.toLowerCase()}-${"request_approved"}`;$obj$$.id_app&&($channel_e$$=`${$channel_e$$}-${$obj$$.id_app}`);let $message$$=JSON.stringify($rs$$[0]);try{await global.clientRedis.publish($channel_e$$,$message$$)}catch($e$$){Logger.error("[approve] [sendNotifyApproved] fire event","request_approved",$e$$)}Logger.info("[approve][approved][requestApprove] t\u1ea1o y\u00eau c\u1ea7u duy\u1ec7t ti\u1ebfp theo...");$ctrl$$.requestApprove($app_info$$,$u$$,$rs$$[0],$e$$=>
@@ -76,10 +76,10 @@ $callback$$(null,$result_approve$$)}catch($e$$){Logger.error("[approve][approved
76
76
  model.deny=async function($encrypted$$,$callback$$,$token$$,$options$$={reason:""}){try{const $result_reject$$=await executeInTransaction(async()=>{let $user_denied$$;if(underscore.isObject($encrypted$$)){var $_c$jscomp$2__id$$=$encrypted$$.id_request;$user_denied$$=$encrypted$$.email;var $approve$$=$encrypted$$.name;var $key_data$jscomp$1_trang_thai$$=$encrypted$$.trang_thai}else $key_data$jscomp$1_trang_thai$$=utils.decrypt($encrypted$$),$_c$jscomp$2__id$$=$key_data$jscomp$1_trang_thai$$.id_request,
77
77
  $user_denied$$=$key_data$jscomp$1_trang_thai$$.email,$approve$$=$key_data$jscomp$1_trang_thai$$.name,$key_data$jscomp$1_trang_thai$$=$key_data$jscomp$1_trang_thai$$.trang_thai;if(!$_c$jscomp$2__id$$||!$user_denied$$)throw"request id and deny user are required";if(!global.mongoose.Types.ObjectId.isValid($_c$jscomp$2__id$$))throw"request id '"+$_c$jscomp$2__id$$+"' is not valid";$_c$jscomp$2__id$$={_id:$_c$jscomp$2__id$$};$key_data$jscomp$1_trang_thai$$!==void 0&&$key_data$jscomp$1_trang_thai$$!==null&&
78
78
  ($_c$jscomp$2__id$$.trang_thai=$key_data$jscomp$1_trang_thai$$);const $rq$$=await model.findOne($_c$jscomp$2__id$$);if(!$rq$$)throw"Y\u00eau c\u1ea7u kh\u00f4ng t\u1ed3n t\u1ea1i";if($rq$$.date_approved)throw"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c duy\u1ec7t b\u1edfi "+$rq$$.user_approved_name;if($rq$$.date_denied)throw"Y\u00eau c\u1ea7u n\u00e0y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi "+$rq$$.user_denied_name;$rq$$.date_denied=new Date;$rq$$.user_denied=$user_denied$$;
79
- $rq$$.user_denied_name=$approve$$;$rq$$.denied_reason=$options$$.reason||"";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>$u$$.email.indexOf($user_denied$$)>=0))throw"User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y";$approve$$=await $rq$$.save();onAfterCommit(async()=>{let $title$$=`[B\u1ecb t\u1eeb ch\u1ed1i] ${$rq$$.title}`;var $option$jscomp$2_template$$=await Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:"^"+$rq$$.ma_ct+"$",$options:"i"}}).lean();
80
- if($rq$$.template_content||$option$jscomp$2_template$$&&$option$jscomp$2_template$$.option&&$option$jscomp$2_template$$.option.system&&($option$jscomp$2_template$$.option.system.templateEmail||$option$jscomp$2_template$$.option.system.templateRpt)){var $_data$jscomp$3_app_info$$=await App.findOne({_id:$rq$$.id_app}).lean();if(!$_data$jscomp$3_app_info$$)return Logger.info("khong the tim thay thong tin cong ty nay");let $requests$$=await model.find({id_ct:$rq$$.data._id,id_app:$rq$$.id_app}).sort({trang_thai:-1}).lean();
81
- await $requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});$option$jscomp$2_template$$=($rq$$.template_content||(($option$jscomp$2_template$$.option||{}).system||{}).templateEmail||(($option$jscomp$2_template$$.option||{}).system||{}).templateRpt).split("<em>").join("").split("</em>").join("");$option$jscomp$2_template$$=
82
- `
79
+ $rq$$.user_denied_name=$approve$$;$rq$$.denied_reason=$options$$.reason||"";$rq$$.request_status="DENNIED";if(!$rq$$.user_approves||!$rq$$.user_approves.find($u$$=>$u$$.email.indexOf($user_denied$$)>=0))throw"User n\u00e0y kh\u00f4ng c\u00f3 quy\u1ec1n duy\u1ec7t y\u00eau c\u1ea7u n\u00e0y";$approve$$=await $rq$$.save();onAfterCommit(async()=>{let $title$$=`[B\u1ecb t\u1eeb ch\u1ed1i] ${$rq$$.title}`;var $option$jscomp$2_template$$=await Options.findOne({id_app:$rq$$.id_app,id_func:{$regex:"^"+$rq$$.ma_ct+
80
+ "$",$options:"i"}}).lean();if($rq$$.template_content||$option$jscomp$2_template$$&&$option$jscomp$2_template$$.option&&$option$jscomp$2_template$$.option.system&&($option$jscomp$2_template$$.option.system.templateEmail||$option$jscomp$2_template$$.option.system.templateRpt)){var $_data$jscomp$3_app_info$$=await App.findOne({_id:$rq$$.id_app}).lean();if(!$_data$jscomp$3_app_info$$)return Logger.info("khong the tim thay thong tin cong ty nay");let $requests$$=await model.find({id_ct:$rq$$.data._id,
81
+ id_app:$rq$$.id_app}).sort({trang_thai:-1}).lean();await $requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_approved:"email"},fields:{user_approved_name:"name"}});await $requests$$.asyncJoinModel2($rq$$.id_app,participant,{where:{user_denied:"email"},fields:{user_denied_name:"name"}});$option$jscomp$2_template$$=($rq$$.template_content||(($option$jscomp$2_template$$.option||{}).system||{}).templateEmail||(($option$jscomp$2_template$$.option||{}).system||{}).templateRpt).split("<em>").join("").split("</em>").join("");
82
+ $option$jscomp$2_template$$=`
83
83
  <div>
84
84
  <h3>Y\u00eau c\u1ea7u d\u01b0\u1edbi \u0111\u00e2y \u0111\u00e3 b\u1ecb t\u1eeb ch\u1ed1i duy\u1ec7t b\u1edfi ${$rq$$.user_denied_name} </h3>
85
85
  <div style='color:red'>L\u00fd do t\u1eeb ch\u1ed1i: ${$rq$$.denied_reason} </div>
@@ -1,2 +1,2 @@
1
- const cacheDataReportSchema=new Schema({id_app:String,code:{type:String,required:!0},key:String,user_created:{type:String,required:!0},id_session:{type:String,required:!0},row:Schema.Types.Mixed,date_created:{type:Date,default:Date.now,expires:86400}});(global.configs||{}).createIndexes&&(cacheDataReportSchema.index({id_session:1}),cacheDataReportSchema.index({id_app:1,user_created:1,code:1,key:1}));const model=mongoose.models.cacheDataReport||mongoose.model("cacheDataReport",cacheDataReportSchema);
2
- module.exports=model;
1
+ const cacheDataReportSchema=new Schema({id_session:{type:String,required:!0,index:!0,comment:"session._id.toString() \u2014 foreign key sang cacheSessionReport"},id_app:{type:String,required:!0,index:!0,comment:"Denormalized t\u1eeb session \u0111\u1ec3 filter tr\u1ef1c ti\u1ebfp"},user_created:{type:String,required:!0,comment:"Denormalized t\u1eeb session"},code:{type:String,required:!0,comment:"Denormalized t\u1eeb session"},row:{type:Schema.Types.Mixed,required:!0,comment:"M\u1ed9t row c\u1ee7a b\u00e1o c\u00e1o \u2014 object t\u00f9y \u00fd. Kh\u00f4ng \u0111\u1eb7t index v\u00e0o \u0111\u00e2y v\u00ec content kh\u00e1c nhau theo t\u1eebng b\u00e1o c\u00e1o. Gi\u1eef size nh\u1ecf: m\u1ed7i document MongoDB t\u1ed1i \u0111a 16MB, nh\u01b0ng th\u1ef1c t\u1ebf m\u1ed7i row n\u00ean < 10KB \u0111\u1ec3 insertMany nhanh."},
2
+ date_created:{type:Date,default:Date.now,expires:86400}});(global.configs||{}).createIndexes&&(cacheDataReportSchema.index({id_session:1}),cacheDataReportSchema.index({id_app:1,id_session:1}),cacheDataReportSchema.index({id_app:1,user_created:1,code:1,key:1}));const model=mongoose.models.cacheDataReport||mongoose.model("cacheDataReport",cacheDataReportSchema);module.exports=model;
@@ -1 +1,5 @@
1
- const cacheSessionReportSchema=new Schema({id_app:String,code:{type:String,required:!0},key:String,info:Schema.Types.Mixed,user_created:{type:String,required:!0},date_created:{type:Date,default:Date.now,expires:3600}});(global.configs||{}).createIndexes&&cacheSessionReportSchema.index({id_app:1,user_created:1,code:1,key:1});const model=mongoose.models.cacheSessionReport||mongoose.model("cacheSessionReport",cacheSessionReportSchema);module.exports=model;
1
+ const cacheSessionReportSchema=new Schema({id_app:{type:String,required:!0,index:!0,comment:"App ph\u00e1t sinh cache \u2014 d\u00f9ng trong m\u1ecdi query filter"},user_created:{type:String,required:!0,index:!0,comment:"User ch\u1ea1y b\u00e1o c\u00e1o"},code:{type:String,required:!0,index:!0,comment:'M\u00e3 b\u00e1o c\u00e1o, vd: "dtbanletheoct"'},key:{type:String,default:null,index:!0,comment:"Cache key t\u00f9y ch\u1ecdn (filter/params hash). null = kh\u00f4ng d\u00f9ng key"},status:{type:String,
2
+ enum:["pending","ready","failed"],default:"pending",index:!0,comment:"pending \u2192 \u0111ang insert n\u1ec1n, reader B\u1ece QUA | ready \u2192 to\u00e0n b\u1ed9 data \u0111\u00e3 v\u00e0o, reader d\u00f9ng \u0111\u01b0\u1ee3c | failed \u2192 insert th\u1ea5t b\u1ea1i, cleanup job d\u1ecdn sau"},total_rows:{type:Number,default:0,comment:"T\u1ed5ng s\u1ed1 rows d\u1ef1 ki\u1ebfn (set l\u00fac create)"},inserted_rows:{type:Number,default:0,comment:"S\u1ed1 rows \u0111\u00e3 insert th\u1ef1c t\u1ebf (set l\u00fac updateOne ready)"},
3
+ info:{type:Schema.Types.Mixed,default:{},comment:"Metadata t\u00f9y \u00fd c\u1ee7a b\u00e1o c\u00e1o (thanh_toan, columns, filters\u2026). To\u00e0n b\u1ed9 object n\u00e0y \u0111\u01b0\u1ee3c spread v\u00e0o getCacheReport response. KH\u00d4NG ch\u1ee9a array data l\u1edbn \u2014 data l\u01b0u ri\u00eang \u1edf cacheDataReport."},ready_at:{type:Date,default:null,comment:'Th\u1eddi \u0111i\u1ec3m status chuy\u1ec3n sang "ready"'},failed_at:{type:Date,default:null,comment:'Th\u1eddi \u0111i\u1ec3m status chuy\u1ec3n sang "failed"'},
4
+ error:{type:String,default:null,comment:'Error message khi status = "failed"'},date_created:{type:Date,default:Date.now,expires:3600}});(global.configs||{}).createIndexes&&(cacheSessionReportSchema.index({id_app:1,code:1,key:1,status:1}),cacheSessionReportSchema.index({id_app:1,user_created:1,code:1,key:1,status:1}),cacheSessionReportSchema.index({_id:1,status:1},{name:"idx_id_status"}));const model=mongoose.models.cacheSessionReport||mongoose.model("cacheSessionReport",cacheSessionReportSchema);
5
+ module.exports=model;
@@ -1,5 +1,5 @@
1
1
  const validator=require("../libs/validator"),validVt=require("../libs/validator-vt"),cdvtScheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},nam:{type:Number,required:!0},ma_dvcs:{type:String,required:!0,maxlength:1024},ma_vt:{type:String,required:"L\u1ed7i: M\u00e3 v\u1eadt t\u01b0 kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",uppercase:!0,maxlength:1024,trim:!0},ten_vt:String,ma_kho:{type:String,required:"L\u1ed7i: M\u00e3 kho kh\u00f4ng \u0111\u01b0\u1ee3c tr\u1ed1ng",uppercase:!0,
2
- maxlength:32,trim:!0},ten_kho:String,ma_lo:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ton00:{type:Number,default:0},du00:{type:Number,default:0},du_nt00:{type:Number,default:0},kc_yn:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
3
- date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});cdvtScheam.validate={ma_dvcs:validator.existsDvcs,ma_vt:validVt.existsVt,ma_kho:validVt.existsKho};
2
+ maxlength:32,trim:!0},ten_kho:String,ma_lo:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_kh:String,ton00:{type:Number,default:0},du00:{type:Number,default:0},du_nt00:{type:Number,default:0},kc_yn:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,
3
+ default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});cdvtScheam.validate={ma_dvcs:validator.existsDvcs,ma_vt:validVt.existsVt,ma_kho:validVt.existsKho};
4
4
  (global.configs||{}).createIndexes&&(cdvtScheam.index({id_app:1,nam:1,ma_dvcs:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1},{name:"cdvt_index_1"}),cdvtScheam.index({id_app:1,ma_vt:"text",ten_vt:"text",ma_kho:"text",ten_kho:"text"},{name:"cdvt_index_text"}),cdvtScheam.index({id_app:1,nam:1,ma_lo:1,han_sd:-1}),cdvtScheam.index({id_app:1,nam:1}),cdvtScheam.index({id_app:1,nam:1,ma_kho:1}),cdvtScheam.index({id_app:1,nam:1,ma_kho:1,ma_vt:1}),cdvtScheam.index({id_app:1,status:1}),cdvtScheam.index({id_app:1,
5
5
  user_created:1,visible_to:1,visible_to_users:1}),cdvtScheam.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,nam:1}),cdvtScheam.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,nam:1,ma_kho:1}));module.exports=mongoose.models.cdvt||mongoose.model("cdvt",cdvtScheam);
@@ -1,4 +1,4 @@
1
- const checkinSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},device_user_id:{type:String,required:!0,maxlength:1024,trim:!0},device_user_id2:{type:String,maxlength:1024,trim:!0},device_user_id3:{type:String,maxlength:1024,trim:!0},record_time:{type:Date,default:Date.now},ma_ct:{type:String,default:"CHECKIN",trim:!0},trang_thai:{type:String,default:"1"},location:Schema.Types.Mixed,hinh:String,ma_kh:String,note:String,device_id:String,exfields:Schema.Types.Mixed,status:{type:Boolean,
2
- 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:""}});
1
+ const checkinSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},device_user_id:{type:String,required:!0,maxlength:1024,trim:!0},device_user_id2:{type:String,maxlength:1024,trim:!0},device_user_id3:{type:String,maxlength:1024,trim:!0},record_time:{type:Date,default:Date.now},ma_ct:{type:String,default:"CHECKIN",trim:!0},trang_thai:{type:String,default:"1"},location:Schema.Types.Mixed,hinh:String,ma_kh:String,note:String,device_id:String,ai_verified:Boolean,exfields:Schema.Types.Mixed,
2
+ 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:""}});
3
3
  (global.configs||{}).createIndexes&&(checkinSchema.index({id_app:1,device_user_id:1}),checkinSchema.index({id_app:1,device_user_id:1,record_time:-1}),checkinSchema.index({id_app:1,device_user_id:1,location:1}),checkinSchema.index({id_app:1,device_user_id:1,ma_kh:1}),checkinSchema.index({id_app:1,device_user_id2:1}),checkinSchema.index({id_app:1,device_user_id3:1}),checkinSchema.index({id_app:1,status:1}),checkinSchema.index({id_app:1,trang_thai:1}),checkinSchema.index({id_app:1,trang_thai:1,user_created:1,
4
4
  visible_to:1,visible_to_users:1}));const model=mongoose.models.checkin||mongoose.model("checkin",checkinSchema);module.exports=model;
@@ -6,7 +6,7 @@ default:0},ma_kh:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},dien
6
6
  maxlength:32,trim:!0},phu_xe:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},loai_phuong_tien:String,ma_lo:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},han_sd:{type:Date},ma_vt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},gio:Number,ngay:Number,thang:Number,quy:Number,
7
7
  nam:Number,ma_kenh:String,ma_td1:Schema.Types.Mixed,ma_td2:Schema.Types.Mixed,ma_td3:Schema.Types.Mixed,ma_td4:Schema.Types.Mixed,ma_td5:Schema.Types.Mixed,ma_td6:Schema.Types.Mixed,ma_td7:Schema.Types.Mixed,ma_td8:Schema.Types.Mixed,ma_td9:Schema.Types.Mixed,pt_thanh_toan:String,pt_thanh_toan2:String,tien_paymentByPoints:Number,tien_evoucher:Number,cashier:String,ma_sp:{type:String,default:"",uppercase:!0,maxlength:1024,trim:!0},sl_sp:Number,ma_dvt_sp:{type:String,maxlength:32,trim:!0},ma_tt1_sp:{type:String,
8
8
  default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt2_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_tt3_sp:{type:String,default:"",uppercase:!0,maxlength:32,trim:!0},ma_cum_chi_tiet:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},ten_cum_chi_tiet:{type:String,default:"",maxlength:1024},ma_cong_doan:{type:String,uppercase:!0,default:"",maxlength:32,trim:!0},id_lenhsx:{type:String,maxlength:1024},id_dinhmucsx:{type:String,maxlength:1024},id_lenhcapphat:{type:String,maxlength:1024},
9
- id_cs:{type:String,maxlength:1024},id_cs_ck:{type:String,maxlength:1024},ma_ca:{type:String,uppercase:!0,maxlength:32,trim:!0},trang_thai:{type:String,maxlength:32},id_reason:{type:String,maxlength:1024},luong_goc:Number,luong_theo_ds:Number,ds_yeu_cau:Number,don_gia_luong:Number,ty_le_nv_phu_giup:Number,cong_thuc:String,dien_giai_luong:String,id_cs_luong:{type:String,maxlength:1024},ten_cs_luong:{type:String},line:Number,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
9
+ id_cs:{type:String,maxlength:1024},id_cs_ck:{type:String,maxlength:1024},ma_ca:{type:String,uppercase:!0,maxlength:32,trim:!0},trang_thai:{type:String,maxlength:32},id_reason:{type:String,maxlength:1024},doanh_so:Number,luong_goc:Number,luong_theo_ds:Number,ds_yeu_cau:Number,don_gia_luong:Number,ty_le_nv_phu_giup:Number,cong_thuc:String,dien_giai_luong:String,id_cs_luong:{type:String,maxlength:1024},ten_cs_luong:{type:String},line:Number,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},
10
10
  date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}},{toJSON:{virtuals:!0}});
11
11
  (global.configs||{}).createIndexes&&(chitietluongdsSchema.index({id_app:1}),chitietluongdsSchema.index({id_app:1,ma_ct:1,so_ct:1,ngay_ct:-1}),chitietluongdsSchema.index({id_app:1,nam:-1,thang:-1,ma_nv:1,ma_bp:1}),chitietluongdsSchema.index({id_app:1,ma_vt:1,ngay_ct:-1}),chitietluongdsSchema.index({id_app:1,ma_kho:1,ma_vt:1,ngay_ct:-1}),chitietluongdsSchema.index({id_app:1,ma_sp:1,ngay_ct:-1}));const model=mongoose.models.chitietluongds||mongoose.model("chitietluongds",chitietluongdsSchema);
12
12
  if((global.configs||{}).createIndexes)model.on("index",async function($err$$){$err$$?Logger.error("chitietluongds index error",$err$$):console.info("chitietluongds indexing complete")});module.exports=model;
@@ -1,5 +1,5 @@
1
1
  const validator=require("../libs/validator"),contractSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},so_ct:{type:String,uppercase:!0,maxlength:32},ma_ct:{type:String,default:"CONTRACT",uppercase:!0,maxlength:32},ngay_ct:{type:Date,default:Date.now},loai_hd:{type:Number,default:1},so_hd:{type:String,uppercase:!0,maxlength:32},ten_hd:{type:String,required:!0,maxlength:1024},ngay_hd:{type:Date},ngay_th:{type:Date},ngay_nt:{type:Date},tien_nt:{type:Number,default:0},ma_nt:{type:String,
2
- default:"VND",maxlength:32},id_kh:{type:String,required:"Kh\u00e1ch h\u00e0ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",maxlength:1024},mieu_ta:{type:String},nh_hd:{type:String,maxlength:32},phu_trach:{type:String,lowercase:!0,maxlength:1024},ten_phu_trach:String,progress:{type:Number,default:0},ma_thue:{type:String,maxlength:32},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},dot_thanh_toan:[],exfields:Schema.Types.Mixed,labels:[String],status:{type:Boolean,
2
+ default:"VND",maxlength:32},id_kh:{type:String,required:"Kh\u00e1ch h\u00e0ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",maxlength:1024},mieu_ta:{type:String},nh_hd:{type:String,maxlength:32},phu_trach:{type:String,lowercase:!0,maxlength:1024},ten_phu_trach:String,progress:{type:String,default:"0"},ma_thue:{type:String,maxlength:32},thue_suat:{type:Number,default:0},t_thue:{type:Number,default:0},t_thue_nt:{type:Number,default:0},dot_thanh_toan:[],exfields:Schema.Types.Mixed,labels:[String],status:{type:Boolean,
3
3
  default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String]},{toJSON:{virtuals:!0}});contractSchema.validate={ma_nt:validator.existsNt};
4
4
  (global.configs||{}).createIndexes&&(contractSchema.index({id_app:1}),contractSchema.index({so_hd:1}),contractSchema.index({ten_hd:1}),contractSchema.index({nh_hd:1}),contractSchema.index({phu_trach:1}),contractSchema.index({id_kh:1}),contractSchema.index({ngay_hd:1}),contractSchema.index({ngay_th:1}),contractSchema.index({ngay_nt:1}),contractSchema.index({labels:1}),contractSchema.index({status:1}),contractSchema.index({user_created:1,visible_to:1,visible_to_users:1}),contractSchema.index({so_hd:"text",
5
5
  ten_hd:"text",phu_trach:"text",ten_phu_trach:"text"},{name:"contract_index_text"}));const model=mongoose.models.contract||mongoose.model("contract",contractSchema);model.referenceKeys={so_hd:[{model:"vsocai",key:"so_hd",error:"H\u1ee3p \u0111\u1ed3ng ${obj.so_hd} - ${obj.ten_hd} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"}]};
@@ -1,3 +1,3 @@
1
- const csluongtheodsSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ds_nv:[String],ds_bp:[String],ds_ma_vt:[String],ma_nvt:String,ma_nvt2:String,ma_nvt3:String,ds_ma_kh:[String],loai_tru_kh:Boolean,nh_kh:String,nh_kh2:String,nh_kh3:String,ds_ma_ct:[String],doi_tuong_nhan_vien:{type:String,required:!0,default:"ma_nv_giao_hang"},ds_loai_phuong_tien:[String],field_sl:{type:String,required:!0,default:"sl_xuat"},ds_yeu_cau:Number,don_gia_luong:Number,ty_le_nv_phu_giup:Number,tinh_theo_tong_ds:Boolean,
2
- 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:""}});
1
+ const csluongtheodsSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ds_nv:[String],ds_bp:[String],ds_ma_vt:[String],ma_nvt:String,ma_nvt2:String,ma_nvt3:String,ds_ma_kh:[String],loai_tru_kh:Boolean,nh_kh:String,nh_kh2:String,nh_kh3:String,ds_ma_ct:[String],doi_tuong_nhan_vien:{type:String,required:!0,default:"ma_nv_giao_hang"},ds_loai_phuong_tien:[String],field_sl:{type:String,required:!0,default:"sl_xuat"},ds_yeu_cau:Number,ma_dvt_ds:String,don_gia_luong:Number,ty_le_nv_phu_giup:Number,
2
+ tinh_theo_tong_ds:Boolean,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
3
3
  (global.configs||{}).createIndexes&&(csluongtheodsSchema.index({id_app:1,ds_nv:1}),csluongtheodsSchema.index({id_app:1,ds_bp:1}),csluongtheodsSchema.index({id_app:1,ds_ma_vt:1}),csluongtheodsSchema.index({id_app:1,ds_ma_kh:1}),csluongtheodsSchema.index({id_app:1,ds_ma_ct:1}),csluongtheodsSchema.index({id_app:1,status:1}),csluongtheodsSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}));module.exports=mongoose.models.csluongtheods||mongoose.model("csluongtheods",csluongtheodsSchema);
@@ -1,6 +1,7 @@
1
- const validator=require("../libs/validator"),ctds2Scheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,required:!0,maxlength:1024},group_id:{type:String,trim:!0,maxlength:1024},ct_theo:{type:String,default:"thang"},hl_tu_ngay:Date,hl_den_ngay:Date,cach_tinh:{type:String,default:"1"},tk_no:[String],tk_no_gt:Boolean,tk_co:[String],tk_co_gt:Boolean,ma_kho:{type:String,uppercase:!0,trim:!0,maxlength:32},ten_kho:String,ma_kh:{type:String,uppercase:!0,trim:!0,maxlength:32},
2
- ten_kh:String,nh_kh:[String],nh_kh_lt:Boolean,nh_kh2:[String],nh_kh3:[String],nh_kh4:[String],nh_kh5:[String],ma_nv:{type:String,uppercase:!0,trim:!0,maxlength:32},ten_nv:String,ma_nvt:[String],ma_nvt_lt:Boolean,ma_nvt2:[String],ma_nvt3:[String],ma_nvt4:[String],ma_nvt5:[String],ma_dt:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_bp:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_sp:{type:String,
3
- uppercase:!0,trim:!0,maxlength:32},chi_tieu:{type:Number,default:0},chi_tieu_thang:{type:Number,default:0},chinh_sach_hoa_hong:[],quan_ly:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});ctds2Scheam.validate={ma_dvcs:validator.existsDvcs};
4
- (global.configs||{}).createIndexes&&(ctds2Scheam.index({id_app:1,group_id:1,ma_dvcs:1,ma_kho:1,ma_nv:1}),ctds2Scheam.index({ma_kho:"text",ma_nv:"text",ten_nv:"text",ten_kho:"text"},{name:"ctds2_index_text"}),ctds2Scheam.index({ct_theo:1}),ctds2Scheam.index({hl_tu_ngay:-1}),ctds2Scheam.index({hl_den_ngay:-1}),ctds2Scheam.index({ma_dt:1}),ctds2Scheam.index({ma_bp:1}),ctds2Scheam.index({ma_phi:1}),ctds2Scheam.index({tk_co:1}),ctds2Scheam.index({tk_no:1}),ctds2Scheam.index({ma_kh:1}),ctds2Scheam.index({ma_hd:1}),
5
- ctds2Scheam.index({ma_sp:1}),ctds2Scheam.index({nh_kh:1}),ctds2Scheam.index({nh_kh2:1}),ctds2Scheam.index({nh_kh3:1}),ctds2Scheam.index({nh_kh4:1}),ctds2Scheam.index({nh_kh5:1}),ctds2Scheam.index({ma_nvt:1}),ctds2Scheam.index({ma_nvt2:1}),ctds2Scheam.index({ma_nvt3:1}),ctds2Scheam.index({ma_nvt4:1}),ctds2Scheam.index({ma_nvt5:1}),ctds2Scheam.index({status:1}),ctds2Scheam.index({user_created:1,visible_to:1,visible_to_users:1}));
6
- ctds2Scheam.pre("save",function($next$$){this.chi_tieu_thang=this.ct_theo=="quy"?this.chi_tieu/3:this.ct_theo=="nam"?this.chi_tieu/12:this.chi_tieu;$next$$()});module.exports=mongoose.models.ctds2||mongoose.model("ctds2",ctds2Scheam);
1
+ const ctds2Scheam=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dvcs:{type:String,maxlength:1024},group_id:{type:String,trim:!0,maxlength:1024},ct_theo:{type:String,default:"thang"},hl_tu_ngay:Date,hl_den_ngay:Date,cach_tinh:{type:String,default:"1",enum:["0","1","2","3","9"]},kpi_script:{type:String,maxlength:8E3},tk_no:[String],tk_no_gt:Boolean,tk_co:[String],tk_co_gt:Boolean,ma_kho:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_kh:{type:String,uppercase:!0,trim:!0,maxlength:32},
2
+ nh_kh:[String],nh_kh_lt:Boolean,nh_kh2:[String],nh_kh3:[String],nh_kh4:[String],nh_kh5:[String],ma_nv:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_nvt:[String],ma_nvt_lt:Boolean,ma_nvt2:[String],ma_nvt3:[String],ma_nvt4:[String],ma_nvt5:[String],ma_dt:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_bp:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_phi:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_hd:{type:String,uppercase:!0,trim:!0,maxlength:32},ma_sp:{type:String,uppercase:!0,
3
+ trim:!0,maxlength:32},ps_cu:Number,ty_le_tang_truong:Number,chi_tieu:{type:Number,default:0},chi_tieu_thang:{type:Number,default:0},chinh_sach_hoa_hong:[],quan_ly:{type:Boolean,default:!1},nhan_chi_tieu:{type:String,trim:!0,maxlength:255},ma_chi_tieu:String,mieu_ta:{type:String,maxlength:4E3},is_draft_ai:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,
4
+ default:""}});
5
+ (global.configs||{}).createIndexes&&(ctds2Scheam.index({id_app:1,group_id:1,ma_dvcs:1,ma_kho:1,ma_nv:1}),ctds2Scheam.index({id_app:1,ma_ke_hoach:1}),ctds2Scheam.index({id_app:1,ma_ke_hoach:1,is_draft_ai:1}),ctds2Scheam.index({id_app:1,ct_theo:1}),ctds2Scheam.index({id_app:1,hl_tu_ngay:-1,hl_den_ngay:-1}),ctds2Scheam.index({id_app:1,ma_dt:1}),ctds2Scheam.index({id_app:1,ma_bp:1}),ctds2Scheam.index({id_app:1,ma_phi:1}),ctds2Scheam.index({id_app:1,tk_co:1}),ctds2Scheam.index({id_app:1,tk_no:1}),ctds2Scheam.index({id_app:1,
6
+ ma_kh:1}),ctds2Scheam.index({id_app:1,ma_hd:1}),ctds2Scheam.index({id_app:1,ma_sp:1}),ctds2Scheam.index({id_app:1,nh_kh:1,nh_kh2:1,nh_kh3:1,nh_kh4:1,nh_kh5:1}),ctds2Scheam.index({id_app:1,ma_nvt:1,ma_nvt2:1,ma_nvt3:1}),ctds2Scheam.index({id_app:1,status:1,ser_created:1,visible_to:1,visible_to_users:1}));ctds2Scheam.pre("save",function($next$$){this.chi_tieu_thang=this.ct_theo=="quy"?this.chi_tieu/3:this.ct_theo=="nam"?this.chi_tieu/12:this.chi_tieu;$next$$()});
7
+ module.exports=mongoose.models.ctds2||mongoose.model("ctds2",ctds2Scheam);
@@ -0,0 +1 @@
1
+ const mongoose=require("mongoose"),customReportSchema=new mongoose.Schema({id_app:{type:String,required:!0},report_code:{type:String,required:!0,unique:!0},report_name:{type:String,required:!0},description:{type:String},expected_params:[{type:String}],script:{type:String,required:!0,maxlength:4E4},created_by:{type:String}});module.exports=mongoose.models.custom_report||mongoose.model("custom_report",customReportSchema);
@@ -1,7 +1,7 @@
1
1
  const validator=require("../libs/validator"),dmdtSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_dt:{type:String,uppercase:!0,maxlength:32,trim:!0},ten_dt:{type:String,required:!0,maxlength:1024},ten_dt_en:{type:String,maxlength:1024},ma_dt_me:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},tien_nt:{type:Number,default:0},tien:{type:Number,default:0},ma_nt:{type:String,default:"VND",maxlength:32,trim:!0},id_kh:{type:String,maxlength:1024},mieu_ta:{type:String},
2
2
  mieu_ta_en:{type:String},nh_dt:{type:String,maxlength:1024},phu_trach:{type:String,lowercase:!0,maxlength:1024},dia_chi:{type:String,maxlength:1024},dia_chi_en:{type:String,maxlength:1024},location:Schema.Types.Mixed,mieu_ta_vi_tri:{type:String},mieu_ta_vi_tri_en:{type:String},tien_ich:{type:String},tien_ich_en:{type:String},chinh_sach_uu_dai:{type:String},chinh_sach_uu_dai_en:{type:String},quan_huyen:{type:String,maxlength:1024},tinh_thanh:{type:String,maxlength:1024},picture:{type:String,maxlength:1024},
3
- picture_size:{type:Number,default:25},la_du_an_chu_dau_tu:{type:Boolean,default:!1},progress:{type:Number,default:0},trang_thai:{type:String,maxlength:32},layout:{type:String,maxlength:1024},ty_le_hoa_hong:Number,ngay_bd:Date,ngay_kt:Date,sl_du_tinh:Number,ds_ca_hoc:[{ma_ca_hoc:String,tu_gio:Date,den_gio:Date}],exfields:Schema.Types.Mixed,labels:[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:""},
4
- user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String],shared:Boolean},{toJSON:{virtuals:!0}});dmdtSchema.validate={ma_nt:validator.existsNt};
3
+ picture_size:{type:Number,default:25},la_du_an_chu_dau_tu:{type:Boolean,default:!1},progress:{type:String,default:"0"},trang_thai:{type:String,maxlength:32},layout:{type:String,maxlength:1024},ty_le_hoa_hong:Number,ngay_bd:Date,ngay_kt:Date,sl_du_tinh:Number,ds_ca_hoc:[{ma_ca_hoc:String,tu_gio:Date,den_gio:Date}],exfields:Schema.Types.Mixed,labels:[String],status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,
4
+ default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String],shared:Boolean},{toJSON:{virtuals:!0}});dmdtSchema.validate={ma_nt:validator.existsNt};
5
5
  (global.configs||{}).createIndexes&&(dmdtSchema.index({id_app:1,ma_dt:1},{unique:!0}),dmdtSchema.index({id_app:1,ma_dt:1,ten_dt:1}),dmdtSchema.index({id_app:1,ma_dt_me:1}),dmdtSchema.index({id_app:1,nh_dt:1}),dmdtSchema.index({id_app:1,phu_trach:1}),dmdtSchema.index({id_app:1,labels:1}),dmdtSchema.index({id_app:1,sysorder:1}),dmdtSchema.index({id_app:1,bac:1}),dmdtSchema.index({id_app:1,loai_nh:1}),dmdtSchema.index({id_app:1,trang_thai:1}),dmdtSchema.index({id_app:1,ten_dt:"text",ma_dt:"text",labels:"text"},
6
6
  {name:"dmdt_index_text"}),dmdtSchema.index({id_app:1,status:1}),dmdtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,trang_thai:1,phu_trach:1}),dmdtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,trang_thai:1,phu_trach:1,ma_dt:1}),dmdtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,trang_thai:1,phu_trach:1,ma_dt:1,ten_dt:1}));const model=mongoose.models.dmdt||mongoose.model("dmdt",dmdtSchema);
7
7
  model.referenceKeys={ma_dt:[{model:"socai",key:"ma_dt",error:"V\u1ee5 vi\u1ec7c(d\u1ef1 \u00e1n) ${obj.ten_dt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"},{model:"sokho",key:"ma_dt",error:"V\u1ee5 vi\u1ec7c(d\u1ef1 \u00e1n) ${obj.ten_dt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"},{model:"building",key:"ma_dt",error:"V\u1ee5 vi\u1ec7c(d\u1ef1 \u00e1n) ${obj.ten_dt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u"}]};
@@ -1,6 +1,7 @@
1
- const dmkhoSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_kho:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ten_kho:{type:String,required:!0,maxlength:1024},stt:Number,ma_kh:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_cn:{type:String,maxlength:32,trim:!0},tk_dt:{type:String,maxlength:32,trim:!0},tk_tl:{type:String,maxlength:32,trim:!0},tk_ck:{type:String,maxlength:32,trim:!0},tk_gv:{type:String,maxlength:32,trim:!0},tk_tien:{type:String,maxlength:32,trim:!0},
2
- tk_cp_bh:{type:String,maxlength:32,trim:!0},tk_cp_gh:{type:String,maxlength:32,trim:!0},tk_cp_ctv:{type:String,maxlength:32,trim:!0},tk_cn_ctv:{type:String,maxlength:32,trim:!0},tk_no_hoa_hong:String,tk_co_hoa_hong:String,dia_chi:{type:String,maxlength:1024},kho_dl:{type:Boolean,default:!1},kho_dc:{type:Boolean,default:!1},la_cua_hang:Boolean,user_quan_ly:String,theo_doi_sl_ht:Boolean,printers:[],la_kho_thue:Boolean,user_cho_thue:String,ds_ctv_kho_thue:[],la_kho_npp:Boolean,user_npp:String,ds_ctv_npp:[],
3
- lock:Boolean,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},location:Schema.Types.Mixed,location2:global.customTypes.Point,visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});
1
+ const {getCodeChildren}=require("../libs/utils"),dmkhoSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},ma_kho:{type:String,required:!0,uppercase:!0,maxlength:32,trim:!0},ten_kho:{type:String,required:!0,maxlength:1024},stt:Number,ma_kh:{type:String,uppercase:!0,maxlength:32,trim:!0},tk_cn:{type:String,maxlength:32,trim:!0},tk_dt:{type:String,maxlength:32,trim:!0},tk_tl:{type:String,maxlength:32,trim:!0},tk_ck:{type:String,maxlength:32,trim:!0},tk_gv:{type:String,maxlength:32,trim:!0},
2
+ tk_tien:{type:String,maxlength:32,trim:!0},tk_cp_bh:{type:String,maxlength:32,trim:!0},tk_cp_gh:{type:String,maxlength:32,trim:!0},tk_cp_ctv:{type:String,maxlength:32,trim:!0},tk_cn_ctv:{type:String,maxlength:32,trim:!0},tk_no_hoa_hong:String,tk_co_hoa_hong:String,dia_chi:{type:String,maxlength:1024},kho_dl:{type:Boolean,default:!1},kho_dc:{type:Boolean,default:!1},la_cua_hang:Boolean,user_quan_ly:String,theo_doi_sl_ht:Boolean,printers:[],la_kho_thue:Boolean,user_cho_thue:String,ds_ctv_kho_thue:[],
3
+ la_kho_npp:Boolean,user_npp:String,ds_ctv_npp:[],ma_kho_me:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},lock:Boolean,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},location:Schema.Types.Mixed,location2:global.customTypes.Point,visible_to:{type:Number,default:0},visible_to_users:[String],update_right:[String],
4
+ delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]},{toJSON:{virtuals:!0}});
4
5
  (global.configs||{}).createIndexes&&(dmkhoSchema.index({id_app:1,ma_kho:1},{unique:!0}),dmkhoSchema.index({id_app:1,ma_kho:1,ten_kho:1,stt:1}),dmkhoSchema.index({id_app:1,ma_kho:1,ten_kho:1,stt:1,status:1}),dmkhoSchema.index({id_app:1,dia_chi:1}),dmkhoSchema.index({id_app:1,stt:1}),dmkhoSchema.index({id_app:1,lock:1,ma_kho:1}),dmkhoSchema.index({id_app:1,la_kho_thue:1,user_cho_thue:1,ds_ctv_kho_thue:1}),dmkhoSchema.index({id_app:1,la_kho_npp:1,user_npp:1,ds_ctv_npp:1}),dmkhoSchema.index({id_app:1,
5
6
  ma_kho:"text",ten_kho:"text",dia_chi:"text"},{name:"dmkho_index_text"}),dmkhoSchema.index({id_app:1,status:1}),dmkhoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1}),dmkhoSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,ma_kho:1,ten_kho:1}),dmkhoSchema.index({location2:"2dsphere"},{background:!1}));const model=mongoose.models.dmkho||mongoose.model("dmkho",dmkhoSchema);model.referenceKeys={ma_kho:[{model:"sokho",key:"ma_kho",error:"Kho ${obj.ten_kho} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong s\u1ed5 kho"}]};
6
- module.exports=model;
7
+ model.getAllChildrenGroup=async($id_app$$,$ma_kho$$,$condition$$={})=>getCodeChildren(model,$id_app$$,$ma_kho$$,"ma_kho","ma_kho_me",$condition$$);module.exports=model;
@@ -3,7 +3,8 @@ maxlength:1024},cac_thuoc_tinh:[],exfields:Schema.Types.Mixed,status:{type:Boole
3
3
  (global.configs||{}).createIndexes&&(dmnvtSchema.index({id_app:1,_id:1,group_kind:1}),dmnvtSchema.index({id_app:1,ten_nvt:1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,nh_me:1,status:1,group_kind:1}),dmnvtSchema.index({id_app:1,sysorder:1}),dmnvtSchema.index({id_app:1,loai_nh:1}),dmnvtSchema.index({id_app:1,group_kind:1}),dmnvtSchema.index({id_app:1,bac:1}),dmnvtSchema.index({id_app:1,"cac_thuoc_tinh.id_tt":1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,"cac_thuoc_tinh.ma_vt":1,
4
4
  status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,"cac_thuoc_tinh.ma_tt":1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,"cac_thuoc_tinh.loai_tt":1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,ma_nganh_hang:1,ds_nganh_hang:1,group_kind:1}),dmnvtSchema.index({id_app:1,la_nhom_hang_hoa:1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,la_nhom_hang_hoa:1,ban_tai_quay:1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,description:1,status:1,stt:1,group_kind:1}),
5
5
  dmnvtSchema.index({id_app:1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,status:1,stt:1,group_kind:1}),dmnvtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,status:1,stt:1,ten_nvt:1,group_kind:1}),dmnvtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,status:1,stt:1,ten_nvt:1,la_nhom_hang_hoa:1,group_kind:1}),dmnvtSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,status:1,stt:1,
6
- ten_nvt:1,la_nhom_hang_hoa:1,ban_tai_quay:1,group_kind:1}),dmnvtSchema.index({id_app:1,ten_nvt:"text",nh_me:"text",description:"text"},{name:"dmnvt_index_text"}));const model=mongoose.models.dmnvt||mongoose.model("dmnvt",dmnvtSchema);model.referenceKeys={_id:[{model:"dmvt",key:"ma_nvt",error:"Nh\u00f3m v\u1eadt t\u01b0 ${obj.ten_nvt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong danh m\u1ee5c v\u1eadt t\u01b0"}]};const _=require("lodash");
7
- model.getAllChildrenGroup=async($id_app$$,$chil_ma_nvt_nh_vt_cons$$,$la_nhom_hang_hoa$$,$ma_nganh_hang$$,$condition_query$$={group_kind:1})=>{let $rs$$=[];$condition_query$$={id_app:$id_app$$,status:!0,...$condition_query$$};$ma_nganh_hang$$&&($condition_query$$.ds_nganh_hang=$ma_nganh_hang$$);$la_nhom_hang_hoa$$!=void 0&&($condition_query$$.la_nhom_hang_hoa=$la_nhom_hang_hoa$$);$chil_ma_nvt_nh_vt_cons$$&&(_.isArray($chil_ma_nvt_nh_vt_cons$$)?($rs$$=[...$rs$$,...$chil_ma_nvt_nh_vt_cons$$],$condition_query$$.nh_me=
8
- {$in:$chil_ma_nvt_nh_vt_cons$$}):($condition_query$$.nh_me=$chil_ma_nvt_nh_vt_cons$$,$chil_ma_nvt_nh_vt_cons$$.$in?$rs$$=[...$rs$$,...$chil_ma_nvt_nh_vt_cons$$.$in]:$rs$$.push($chil_ma_nvt_nh_vt_cons$$)));$chil_ma_nvt_nh_vt_cons$$=(await model.find($condition_query$$,{_id:1,nh_me:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.nh_me).map($d$$=>$d$$._id);$chil_ma_nvt_nh_vt_cons$$.length>0&&($chil_ma_nvt_nh_vt_cons$$=await Promise.all($chil_ma_nvt_nh_vt_cons$$.map($nh$$=>model.getAllChildrenGroup($id_app$$,
9
- $nh$$,$la_nhom_hang_hoa$$,$ma_nganh_hang$$))),$chil_ma_nvt_nh_vt_cons$$=$chil_ma_nvt_nh_vt_cons$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$rs$$=[...$chil_ma_nvt_nh_vt_cons$$,...$rs$$]);return $rs$$};module.exports=model;
6
+ ten_nvt:1,la_nhom_hang_hoa:1,ban_tai_quay:1,group_kind:1}),dmnvtSchema.index({id_app:1,ten_nvt:"text",nh_me:"text",description:"text"},{name:"dmnvt_index_text"}));const model=mongoose.models.dmnvt||mongoose.model("dmnvt",dmnvtSchema);model.referenceKeys={_id:[{model:"dmvt",key:"ma_nvt",error:"Nh\u00f3m v\u1eadt t\u01b0 ${obj.ten_nvt} \u0111\u00e3 ph\u00e1t sinh d\u1eef li\u1ec7u trong danh m\u1ee5c v\u1eadt t\u01b0"}]};
7
+ model.getAllChildrenGroup=async($baseQuery_id_app$$,$ma_nvt_seeds$$,$la_nhom_hang_hoa_visitedStr$$,$ma_nganh_hang_resultMap$$,$condition_depth$$={group_kind:1},$maxDepth$$=20)=>{$baseQuery_id_app$$={id_app:$baseQuery_id_app$$,status:!0,...$condition_depth$$};$ma_nganh_hang_resultMap$$&&($baseQuery_id_app$$.ds_nganh_hang=$ma_nganh_hang_resultMap$$);$la_nhom_hang_hoa_visitedStr$$!=null&&($baseQuery_id_app$$.la_nhom_hang_hoa=$la_nhom_hang_hoa_visitedStr$$);$ma_nvt_seeds$$=$ma_nvt_seeds$$?Array.isArray($ma_nvt_seeds$$)?
8
+ $ma_nvt_seeds$$:typeof $ma_nvt_seeds$$==="object"&&$ma_nvt_seeds$$.$in?$ma_nvt_seeds$$.$in:[$ma_nvt_seeds$$]:[];if($ma_nvt_seeds$$.length===0)return[];$la_nhom_hang_hoa_visitedStr$$=new Set($ma_nvt_seeds$$.map($s$$=>$s$$.toString()));$ma_nganh_hang_resultMap$$=new Map($ma_nvt_seeds$$.map($s$$=>[$s$$.toString(),$s$$]));var $frontier_nextLevel$$=$ma_nvt_seeds$$;for($condition_depth$$=0;$frontier_nextLevel$$.length>0&&$condition_depth$$<$maxDepth$$;){$condition_depth$$++;var $children_idStr$$=await model.find({...$baseQuery_id_app$$,
9
+ nh_me:{$in:$frontier_nextLevel$$}},{_id:1,nh_me:1}).lean();$frontier_nextLevel$$=[];for(const $child$$ of $children_idStr$$)$children_idStr$$=$child$$._id.toString(),$children_idStr$$===($child$$.nh_me?.toString?.()??"")||$la_nhom_hang_hoa_visitedStr$$.has($children_idStr$$)||($la_nhom_hang_hoa_visitedStr$$.add($children_idStr$$),$ma_nganh_hang_resultMap$$.set($children_idStr$$,$child$$._id),$frontier_nextLevel$$.push($child$$._id));$condition_depth$$===$maxDepth$$&&$frontier_nextLevel$$.length>0&&
10
+ Logger.warn(`[getAllChildrenGroup] \u0111\u00e3 \u0111\u1ea1t \u0111\u1ed9 s\u00e2u t\u1ed1i \u0111a (${$maxDepth$$}), d\u1eebng t\u1ea1i \u0111\u00e2y.`,JSON.stringify({seeds:$ma_nvt_seeds$$.map($s$$=>$s$$.toString()),stoppedAt:$frontier_nextLevel$$.map($s$$=>$s$$.toString())},null,2))}return[...$ma_nganh_hang_resultMap$$.values()]};module.exports=model;
@@ -0,0 +1,2 @@
1
+ const mongoose=require("mongoose"),{Schema}=mongoose,FifoDkSchema=new Schema({id_app:{type:String,required:!0,index:!0},ma_vt:{type:String,required:!0},ma_kho:{type:String,default:null},nam:{type:Number,required:!0},thang_bat_dau:{type:Number,required:!0},ngay_nhap:{type:Date,required:!0},sl_con:{type:Number,required:!0,min:0},gia:{type:Number,required:!0,min:0},tien_con:{type:Number,default:0},ma_dvt:{type:String,default:""},he_so_qd:{type:Number,default:1},so_ct_goc:{type:String,default:""},ghi_chu:{type:String,
2
+ default:""},da_su_dung:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});FifoDkSchema.index({id_app:1,ma_vt:1,ma_kho:1,nam:1,thang_bat_dau:1},{name:"idx_fifo_dk_lookup"});FifoDkSchema.index({id_app:1,ma_vt:1,ma_kho:1,ngay_nhap:1},{name:"idx_fifo_dk_queue"});module.exports=mongoose.model("fifo_dk",FifoDkSchema);
@@ -0,0 +1,3 @@
1
+ const mongoose=require("mongoose"),{Schema}=mongoose,FifoLotSchema=new Schema({id_app:{type:String,required:!0,index:!0},ma_vt:{type:String,required:!0},ma_kho:{type:String,default:null},ma_lo:{type:String,default:null},ma_tt1:{type:String,default:null},ma_tt2:{type:String,default:null},ma_tt3:{type:String,default:null},id_sokho:{type:Schema.Types.ObjectId,required:!0},id_ct:{type:Schema.Types.ObjectId,required:!0},ma_ct:{type:String,required:!0},so_ct:{type:String,default:""},ngay_nhap:{type:Date,
2
+ required:!0},sl_nhap:{type:Number,default:0},sl_da_xuat:{type:Number,default:0},sl_con:{type:Number,default:0},gia:{type:Number,default:0},tien_nhap:{type:Number,default:0},tien_con:{type:Number,default:0},ma_dvt:{type:String,default:""},he_so_qd:{type:Number,default:1},nam:{type:Number},thang:{type:Number},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
3
+ FifoLotSchema.index({id_app:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1,ngay_nhap:1,id_sokho:1},{name:"idx_fifo_queue"});FifoLotSchema.index({id_app:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1},{name:"idx_fifo_delete"});FifoLotSchema.index({id_app:1,ma_vt:1,sl_con:1},{name:"idx_fifo_con_ton"});module.exports=mongoose.model("fifo_lot",FifoLotSchema);
@@ -0,0 +1,4 @@
1
+ const mongoose=require("mongoose"),{Schema}=mongoose,FifoTraceSchema=new Schema({id_app:{type:String,required:!0},ma_vt:{type:String,required:!0},ma_kho:{type:String,default:null},nam:{type:Number,required:!0},thang:{type:Number,required:!0},ma_lo:{type:String,default:null},ma_tt1:{type:String,default:null},ma_tt2:{type:String,default:null},ma_tt3:{type:String,default:null},id_fifo_lot:{type:Schema.Types.ObjectId,required:!0},id_sokho_nhap:{type:Schema.Types.ObjectId,default:null},id_ct_nhap:{type:Schema.Types.ObjectId,
2
+ default:null},ma_ct_nhap:{type:String,default:""},so_ct_nhap:{type:String,default:""},ngay_nhap:{type:Date,required:!0},gia_nhap:{type:Number,default:0},id_ct_xuat:{type:Schema.Types.ObjectId,required:!0},ma_ct_xuat:{type:String,required:!0},so_ct_xuat:{type:String,default:""},ngay_xuat:{type:Date,required:!0},detail_index:{type:Number,required:!0,min:0},sl_xuat_lo:{type:Number,required:!0},gia_von:{type:Number,required:!0},tien_xuat_lo:{type:Number,default:0},sl_lo_truoc_xuat:{type:Number,default:0},
3
+ sl_lo_sau_xuat:{type:Number,default:0},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});FifoTraceSchema.index({id_app:1,id_fifo_lot:1,ngay_xuat:1},{name:"idx_trace_by_lot"});FifoTraceSchema.index({id_app:1,id_ct_xuat:1,detail_index:1},{name:"idx_trace_by_ct_xuat"});
4
+ FifoTraceSchema.index({id_app:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1,nam:1,thang:1},{name:"idx_trace_by_group_ky"});FifoTraceSchema.index({id_app:1,id_ct_xuat:1},{name:"idx_trace_delete"});module.exports=mongoose.model("fifo_trace",FifoTraceSchema);
@@ -0,0 +1,2 @@
1
+ const mongoose=require("mongoose"),FlowPendingSchema=new mongoose.Schema({id_app:{type:String,required:!0,index:!0},instance_id:{type:String,required:!0,index:!0},node_id:{type:String,required:!0},node_instance_id:{type:String},flow_id:{type:mongoose.Schema.Types.ObjectId,ref:"flow"},flow_title:{type:String,default:""},node_name:{type:String,default:"Nh\u1eadp li\u1ec7u"},form_title:{type:String,default:""},code:{type:String,required:!0},mode:{type:String,enum:["create","edit","auto"],default:"create"},
2
+ prefill_data:{type:mongoose.Schema.Types.Mixed,default:{}},notify_users:[{type:String}],status:{type:String,enum:["pending","completed","aborted"],default:"pending",index:!0},result:{type:mongoose.Schema.Types.Mixed},date_created:{type:Date,default:Date.now},date_completed:{type:Date}},{collection:"flowpending"});FlowPendingSchema.index({id_app:1,status:1,notify_users:1});FlowPendingSchema.index({id_app:1,status:1,date_created:-1});module.exports=mongoose.model("flowpending",FlowPendingSchema);
@@ -1,11 +1,9 @@
1
1
  const _=require("lodash"),groupSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},group_kind:{type:Number,default:1},group_type:{type:String,uppercase:!0,required:!0,maxlength:1024},group_name:{type:String,required:!0,maxlength:1024},group_name_en:{type:String,maxlength:1024},group_mother:String,ma_kho:{type:String,maxlength:32},ma_bp:{type:String,maxlength:32},ma_dt:{type:String,maxlength:32},color:{type:String,maxlength:32},muc_tieu_bieu:{type:Number,default:0},ma_doi_tuong_danh_gia_default:{type:String},
2
- id_link:String,collection_link:String,phu_trach:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},attends:[],dac_thu:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],visible_to_usergroups:[String],update_right:[String],delete_right:[String],
3
- dataview_to:{type:Number,default:0},dataview_to_users:[String]});
2
+ id_link:String,collection_link:String,phu_trach:String,sysorder:String,bac:{type:Number},loai_nh:{type:Number,default:1},attends:[],dac_thu:Schema.Types.Mixed,exfields:Schema.Types.Mixed,is_draft_ai:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""},visible_to:{type:Number,default:0},visible_to_users:[String],visible_to_usergroups:[String],
3
+ update_right:[String],delete_right:[String],dataview_to:{type:Number,default:0},dataview_to_users:[String]});
4
4
  (global.configs||{}).createIndexes&&(groupSchema.index({id_app:1,_id:1,status:1,group_kind:1}),groupSchema.index({id_app:1,group_type:1,group_kind:1,status:1}),groupSchema.index({id_app:1,group_mother:1,status:1,group_kind:1}),groupSchema.index({id_app:1,group_name:1,status:1,group_kind:1}),groupSchema.index({id_app:1,ma_kho:1,status:1,group_kind:1}),groupSchema.index({id_app:1,ma_dt:1,status:1,group_kind:1}),groupSchema.index({id_app:1,ma_bp:1,status:1,group_kind:1}),groupSchema.index({id_app:1,
5
5
  group_type:1,group_kind:1,ma_kho:1,ma_dt:1,ma_bp:1,status:1}),groupSchema.index({id_app:1,sysorder:1}),groupSchema.index({id_app:1,bac:1}),groupSchema.index({id_app:1,loai_nh:1}),groupSchema.index({id_app:1,phu_trach:1,status:1,group_kind:1}),groupSchema.index({id_app:1,id_link:1,status:1}),groupSchema.index({id_app:1,status:1,group_kind:1}),groupSchema.index({id_app:1,attends:1,status:1,group_kind:1}),groupSchema.index({id_app:1,status:1,group_kind:1,group_name:"text",group_type:"text"},{name:"group_index_text"}),
6
6
  groupSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,phu_trach:1,status:1,group_kind:1}),groupSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,phu_trach:1,group_name:1,status:1,group_kind:1}),groupSchema.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1,phu_trach:1,status:1,group_kind:1,group_type:1,group_name:1}));const model=mongoose.models.group||mongoose.model("group",groupSchema);model.referenceKeys={_id:[{model:"task",key:"nh_cv",error:"Nh\u00f3m n\u00e0y \u0111\u00e3 c\u00f3 ph\u00e1t sinh chi ti\u1ebft. B\u1ea1n c\u1ea7n xo\u00e1 t\u1ea5t c\u1ea3 chi ti\u1ebft tr\u01b0\u1edbc khi xo\u00e1 nh\u00f3m n\u00e0y"}]};
7
- model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().then($rs$$=>{if(!$rs$$)return $reject$$(Error("Can't find information"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)}).catch($e$$=>{$reject$$($e$$)})})};
8
- model.getAllChildrenGroup=async($id_app$$,$nh_kh_rs$$,$chil_condition$$={})=>{let $nh_khs$$;$nh_khs$$=_.isArray($nh_kh_rs$$)?[...$nh_kh_rs$$]:[$nh_kh_rs$$];$nh_kh_rs$$=[...$nh_khs$$];$chil_condition$$=(await model.find({id_app:$id_app$$,group_mother:{$in:$nh_khs$$},...$chil_condition$$},{_id:1,group_mother:1}).lean()).filter($n$$=>$n$$._id.toString()!=$n$$.group_mother).map($d$$=>$d$$._id);$chil_condition$$.length>0&&($chil_condition$$=await Promise.all($chil_condition$$.map($nh$$=>model.getAllChildrenGroup($id_app$$,
9
- $nh$$))),$chil_condition$$=$chil_condition$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]),$nh_kh_rs$$=[...$chil_condition$$,...$nh_kh_rs$$]);return $nh_kh_rs$$};
7
+ model.getInfo=async($id_app$$,$condition$$,$fields$$)=>{$condition$$.id_app=$id_app$$;return new Promise(($resolve$$,$reject$$)=>{model.findOne($condition$$).lean().then($rs$$=>{if(!$rs$$)return $reject$$(Error("Can't find information"));$resolve$$($fields$$?$rs$$[$fields$$]:$rs$$)}).catch($e$$=>{$reject$$($e$$)})})};const {getCodeChildren}=require("../libs/utils");model.getAllChildrenGroup=async($id_app$$,$nh_kh$$,$condition$$={})=>getCodeChildren(model,$id_app$$,$nh_kh$$,"_id","group_mother",$condition$$);
10
8
  model.getAllMotherGroup=async($group_mother_id_app$$,$nh_kh$jscomp$1_rs$$,$condition$$={})=>{$nh_kh$jscomp$1_rs$$=[...(_.isArray($nh_kh$jscomp$1_rs$$)?[...$nh_kh$jscomp$1_rs$$]:[$nh_kh$jscomp$1_rs$$])];$condition$$=await model.findOne({id_app:$group_mother_id_app$$,_id:{$in:$nh_kh$jscomp$1_rs$$},...$condition$$},{_id:1,group_mother:1}).lean();if(!$condition$$||!$condition$$.group_mother)return $nh_kh$jscomp$1_rs$$;$group_mother_id_app$$=await model.getAllMotherGroup($group_mother_id_app$$,$condition$$.group_mother);
11
9
  return $nh_kh$jscomp$1_rs$$=[...$nh_kh$jscomp$1_rs$$,...$group_mother_id_app$$]};module.exports=model;