flexbiz-server 12.0.10 → 12.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/server/auths/facebook.js +10 -9
- package/server/auths/google.js +9 -8
- package/server/controllers/controller.js +79 -78
- package/server/global.js +2 -2
- package/server/libs/blockchainconnect.js +11 -10
- package/server/libs/ckvt.js +10 -9
- package/server/libs/ckvtcapphat.js +2 -2
- package/server/libs/ckvttt.js +5 -5
- package/server/libs/databanle.js +14 -14
- package/server/libs/dkvt.js +2 -2
- package/server/libs/dkvttt.js +3 -3
- package/server/libs/permission.js +12 -12
- package/server/libs/post-book.js +2 -2
- package/server/libs/thnxt.js +7 -7
- package/server/libs/thnxttt.js +7 -7
- package/server/libs/tinhgiatb.js +22 -19
- package/server/models/app.js +4 -4
- package/server/models/asskey.js +2 -2
- package/server/models/asssell.js +3 -3
- package/server/models/dmvt.js +5 -5
- package/server/models/hd2.js +5 -5
- package/server/models/listinfo.js +2 -2
- package/server/models/pbl.js +5 -5
- package/server/models/pn1.js +2 -2
- package/server/models/pn5.js +3 -3
- package/server/models/pn9.js +2 -2
- package/server/models/po1.js +1 -1
- package/server/models/so1.js +3 -3
- package/server/models/tontucthoi.js +3 -3
- package/server/models/transaction.js +3 -3
- package/server/models/user.js +7 -6
- package/server/modules/lists/ls-asskey.js +17 -14
- package/server/modules/lists/ls-asssell.js +13 -12
- package/server/modules/lists/ls-cart.js +12 -9
- package/server/modules/lists/ls-dmvt.js +32 -27
- package/server/modules/lists/ls-file.js +13 -13
- package/server/modules/lists/ls-participant.js +4 -4
- package/server/modules/public/file.js +10 -0
- package/server/modules/reports/rp-bkct.js +7 -7
- package/server/modules/reports/rp-ckvt.js +8 -4
- package/server/modules/reports/rp-dtbanletheovt.js +6 -6
- package/server/modules/reports/rp-thnxt.js +8 -7
- package/server/modules/reports/rp-tkbanhangtheogioithieu.js +6 -6
- package/server/modules/reports/rpt-tkdiemtichluy.js +2 -2
- package/server/modules/vouchers/vo-bn1.js +9 -7
- package/server/modules/vouchers/vo-hd2.js +7 -7
- package/server/modules/vouchers/vo-lenhsx.js +4 -4
- package/server/modules/vouchers/vo-pbl.js +26 -24
- package/server/modules/vouchers/vo-pc1.js +8 -6
- package/server/modules/vouchers/vo-so1.js +25 -22
- package/server/route.js +9 -9
|
@@ -14,15 +14,16 @@ if(global.client_cosmos[$key_client$jscomp$1_w$$])return global.client_cosmos[$k
|
|
|
14
14
|
client:$client$jscomp$1_username$$};return{wallet:$id_app$jscomp$3_wallet$$,account:$account$jscomp$2_address$$,client:$client$jscomp$1_username$$}},bankBalancesGet=async $address$$=>(await axios.get(`${configs.BLOCKCHAIN_URL}/bank/balances/${$address$$}`)).data.result,createTx=async($id_app$$,$access_token$$,$data$$)=>{let {values:$values$$,fields:$fields$$,typeUrl:$typeUrl$$,type:$type$$,from_address:$from_address$$,fee:$fee$$,memo:$memo$$,username:$username$$}=$data$$;if(!$from_address$$||!$typeUrl$$||
|
|
15
15
|
!$values$$)throw Error("Miss from_address or values or typeUrl");if($access_token$$){$data$$=await Token.findOne({token:$access_token$$});if(!$data$$)throw Error(`Token ${$access_token$$} is not valid`);$username$$=$data$$.email}if(!$username$$)throw Error("Access token is not valid");return new Promise(($resolve$$,$reject$$)=>{global.blockchainTransactionPool.exec(async()=>{const $wallet$$=await getWallet($id_app$$,$username$$,$from_address$$);$fee$$=$fee$$||{amount:[{amount:"0",denom:configs.MAIN_DENOM}],
|
|
16
16
|
gas:"2000000000"};$type$$=$type$$||$typeUrl$$.split(".").pop();$fields$$||($fields$$=Object.keys($values$$).map(($key$$,$index$$)=>{let $value$$=$values$$[$key$$],$type_field$$="string";_.isNumber($value$$)?$type_field$$="uint64":_.isBoolean($value$$)&&($type_field$$="bool");return[$key$$,$index$$+1,$type_field$$]}));let $MsgCreate$$=new Type($type$$);$fields$$.forEach($f$$=>{$MsgCreate$$=$MsgCreate$$.add(new Field($f$$[0],$f$$[1],$f$$[2]))});const $registry$$=new Registry([[$typeUrl$$,$MsgCreate$$]]);
|
|
17
|
-
return(await connectWithSigner(configs.BLOCKCHAIN_RPC,$wallet$$,{registry:$registry$$})).signAndBroadcast($from_address$$,[{typeUrl:$typeUrl$$,value:{creator:$from_address$$,...$values$$}}],$fee$$,$memo$$||"")},($e$$,$rs$$)=>{$e$$?$reject$$($e$$.message||$e$$.error||$e$$):$resolve$$($rs$$)})})},
|
|
18
|
-
|
|
19
|
-
(
|
|
20
|
-
$
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
await getKeyByAddress($
|
|
17
|
+
return(await connectWithSigner(configs.BLOCKCHAIN_RPC,$wallet$$,{registry:$registry$$})).signAndBroadcast($from_address$$,[{typeUrl:$typeUrl$$,value:{creator:$from_address$$,...$values$$}}],$fee$$,$memo$$||"")},($e$$,$rs$$)=>{$e$$?$reject$$($e$$.message||$e$$.error||$e$$):$resolve$$($rs$$)})})},getPrice=async($base$$,$currency$$="vnd")=>{var $ticker_urls$$=[`https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/latest/currencies/${$base$$.toLowerCase()}.json`,`https://raw.githubusercontent.com/fawazahmed0/currency-api/1/latest/currencies/${$base$$.toLowerCase()}.json`];
|
|
18
|
+
for(let $url$$ of $ticker_urls$$)if(($ticker_urls$$=await axios.get($url$$))&&$ticker_urls$$[$base$$.toLowerCase()])return $ticker_urls$$[$base$$.toLowerCase()][$currency$$.toLowerCase()]},spend=async($id_app$jscomp$5_w$$,$access_token$$,$address$$,$to_address$$,$data$$)=>{if("BTC"===$data$$.denom.toUpperCase()||"ETH"===$data$$.denom.toUpperCase()){$id_app$jscomp$5_w$$=await model.findOne({address:$address$$,asset:$data$$.denom.toUpperCase()}).lean();if(!$id_app$jscomp$5_w$$)throw Error("Kh\u00f4ng th\u1ec3 t\u00ecm th\u1ea5y v\u00ed n\u00e0y");
|
|
19
|
+
return(new (require("send-crypto"))($id_app$jscomp$5_w$$.private_key)).send($to_address$$,Number($data$$.amount),$data$$.asset.toUpperCase(),{data:$data$$.memo})}return createTx($id_app$jscomp$5_w$$,$access_token$$,{values:{creator:$address$$,receiver:$to_address$$,denom:$data$$.denom,amount:Number($data$$.amount),memo:$data$$.memo||""},typeUrl:"/pvtruong.flexzen.flexzen.MsgSendToken",from_address:$address$$,memo:$data$$.memo||"Chuy\u1ec3n ti\u1ec1n"})},getTxStatus=async $txEncoded_url$$=>{let $rs$$;
|
|
20
|
+
$txEncoded_url$$=`${configs.BLOCKCHAIN_URL}/txs/${$txEncoded_url$$}`;try{$rs$$=await axios.get($txEncoded_url$$);let $data$$=$rs$$.data;return $data$$.result||$data$$}catch($e$$){throw{message:$e$$.response?$e$$.response.data:$e$$.message};}},asyncTxsPageTotal=async($events_rs$$,$limit$$=20)=>{$limit$$||($limit$$=20);$events_rs$$=(await axios.get(`${configs.BLOCKCHAIN_URL}/txs?${$events_rs$$}&page=${1}&limit=${1}`)).data;let {total_count:$total_count$$,page_total:$page_total$$}=$events_rs$$;$page_total$$=
|
|
21
|
+
Math.round($total_count$$/$limit$$);$page_total$$*$limit$$<$total_count$$&&($page_total$$+=1);return $page_total$$},txQuery=async($events$jscomp$1_rs$$,$page$$=1,$limit$$=20)=>{if(!$events$jscomp$1_rs$$)throw{message:"Muste declare at least one event.Example 'message.action=send'"};let $page_need_view$$=await asyncTxsPageTotal($events$jscomp$1_rs$$,$limit$$)-($page$$-1);if(0>=$page_need_view$$)return{limit:$limit$$,page:$page$$,txs:[]};$events$jscomp$1_rs$$=(await axios.get(`${configs.BLOCKCHAIN_URL}/txs?${$events$jscomp$1_rs$$}&page=${$page_need_view$$}&limit=${$limit$$}`)).data;
|
|
22
|
+
$events$jscomp$1_rs$$.page=$page$$;$events$jscomp$1_rs$$.txs.forEach($r$$=>{$r$$.timestamp=new Date($r$$.timestamp)});$events$jscomp$1_rs$$.txs=$events$jscomp$1_rs$$.txs.sort(($a$$,$b$$)=>$b$$.timestamp.getTime()-$a$$.timestamp.getTime());return $events$jscomp$1_rs$$},bcQuery=async $urlQuery$$=>{if(!$urlQuery$$)throw{message:"Muste declare url"};let $url$$=`${configs.BLOCKCHAIN_URL}/${$urlQuery$$}`;console.log("bcquery",$url$$);return new Promise(($resolve$$,$reject$$)=>{axios.get($url$$).then($rs$$=>
|
|
23
|
+
{$resolve$$($rs$$.data)}).catch($e$$=>{$e$$.response?($e$$.response.data.url=$url$$,$reject$$({message:$e$$.response.data,url:$url$$})):$reject$$($e$$)})})},tdQuery=async $urlQuery$$=>{if(!$urlQuery$$)throw{message:"Muste declare url"};let $url$$=`${configs.BLOCKCHAIN_RPC}/${$urlQuery$$}`;return new Promise(($resolve$$,$reject$$)=>{axios.get($url$$).then($rs$$=>{$resolve$$($rs$$.data)}).catch($e$$=>{$e$$.response?($e$$.response.data.url=$url$$,$reject$$({message:$e$$.response.data,url:$url$$})):(console.error("error call",
|
|
24
|
+
$url$$),$reject$$($e$$))})})},ping=async $from_address$$=>{console.log("ping from ",$from_address$$,"...");let $key$$=await model.findOne({address:$from_address$$});$key$$&&createTx($key$$.id_app,null,{values:{creator:$from_address$$,data:0},typeUrl:"/pvtruong.flexzen.flexzen.MsgPing",from_address:$from_address$$,username:$key$$.username}).then(async $rs$$=>{console.log("Pingged",$rs$$.code)})},processEventTx=async $data$$=>{try{let $senders$$=[],$receivers$$=[],$owners$$=[];for(let $key$$ in $data$$.result.events)$data$$.result.events[$key$$].forEach(async $action$$=>
|
|
25
|
+
{0<$key$$.indexOf(".owner")?$owners$$.push($action$$):0<$key$$.indexOf(".sender")?$senders$$.push($action$$):(0<$key$$.indexOf(".receiver")||0<$key$$.indexOf(".recipient"))&&$receivers$$.push($action$$)});(new Set($senders$$)).forEach(async $sender$$=>{let $u$$=await getKeyByAddress($sender$$);$u$$&&User.emitEvent($u$$.user_created,"blockchain.wallet.changed",{sender:$sender$$,data:$data$$})});(new Set($receivers$$)).forEach(async $receiver$$=>{let $u$$=await getKeyByAddress($receiver$$);$u$$&&User.emitEvent($u$$.user_created,
|
|
26
|
+
"blockchain.wallet.changed",{receiver:$receiver$$,data:$data$$})});(new Set($owners$$)).filter($o$$=>!$senders$$.find($s$$=>$s$$==$o$$)).filter($o$$=>!$receivers$$.find($s$$=>$s$$==$o$$)).forEach(async $owner$$=>{let $u$$=await getKeyByAddress($owner$$);$u$$&&User.emitEvent($u$$.user_created,"blockchain.wallet.changed",{receiver:$owner$$,sender:$owner$$,data:$data$$})})}catch($e$$){console.log("error emit events",$e$$.message)}};let notificationPool={};
|
|
26
27
|
const processEventAt=async $events$$=>{let $receivers$$=[];for(let $key$$ in $events$$)$events$$[$key$$].forEach(async $action$$=>{(0<=$key$$.indexOf(".receiver")||0<=$key$$.indexOf(".recipient")||0<=$key$$.indexOf(".sender")||0<=$key$$.indexOf(".creator")||0<=$key$$.indexOf(".owner")||0<=$key$$.indexOf(".buyer")||0<=$key$$.indexOf(".seller"))&&$receivers$$.push($action$$)});(new Set($receivers$$)).forEach(async $receiver$$=>{let $u$$=await getKeyByAddress($receiver$$);$u$$&&$events$$["at.action"].forEach(($action$jscomp$2_id_invest_token$$,
|
|
27
28
|
$id$jscomp$2_index$jscomp$17_token$$)=>{let $creator$$=$events$$["at.creator"]&&$events$$["at.creator"].length>$id$jscomp$2_index$jscomp$17_token$$?$events$$["at.creator"][$id$jscomp$2_index$jscomp$17_token$$]:"",$owner$$=$events$$["at.owner"]&&$events$$["at.owner"].length>$id$jscomp$2_index$jscomp$17_token$$?$events$$["at.owner"][$id$jscomp$2_index$jscomp$17_token$$]:"",$memo$$=$events$$["at.memo"]&&$events$$["at.memo"].length>$id$jscomp$2_index$jscomp$17_token$$?$events$$["at.memo"][$id$jscomp$2_index$jscomp$17_token$$]:
|
|
28
29
|
"",$timestamp$$=$events$$["at.timestamp"]&&$events$$["at.timestamp"].length>$id$jscomp$2_index$jscomp$17_token$$?$events$$["at.timestamp"][$id$jscomp$2_index$jscomp$17_token$$]:"";$timestamp$$=Number($timestamp$$||0)+$id$jscomp$2_index$jscomp$17_token$$;switch($action$jscomp$2_id_invest_token$$){case "withdraw":$id$jscomp$2_index$jscomp$17_token$$=$events$$["at.idWithdraw"]&&$events$$["at.idWithdraw"].length>$id$jscomp$2_index$jscomp$17_token$$?$events$$["at.idWithdraw"][$id$jscomp$2_index$jscomp$17_token$$]:
|
|
@@ -44,4 +45,4 @@ const setupSocket=()=>{if(!connectSocket){var $ws$$=new WS(configs.BLOCKCHAIN_SO
|
|
|
44
45
|
method:"subscribe",id:"0",params:{query:"tm.event = 'Tx'"}}));$ws$$.send(JSON.stringify({jsonrpc:"2.0",method:"subscribe",id:"1",params:{query:"at.event = 'auto'"}}));notiInterval=setInterval(()=>{const $values$$=Object.values(notificationPool);notificationPool={};0<$values$$.length&&console.log("create notifications",$values$$);$values$$.forEach($noti$$=>{User.emitEvent($noti$$.user,"blockchain.wallet.changed",{receiver:$noti$$.receiver,data:$noti$$.data});global.createNotification("SYSTEM",$noti$$.user,
|
|
45
46
|
$noti$$.title,$noti$$.body,$e$$=>{$e$$&&console.error($e$$.message)},$noti$$.data,!0)})},3E3)});$ws$$.on("message",async $data$jscomp$8_msg$$=>{($data$jscomp$8_msg$$=JSON.parse($data$jscomp$8_msg$$))&&$data$jscomp$8_msg$$.result&&$data$jscomp$8_msg$$.result.events&&($data$jscomp$8_msg$$.result.events["at.event"]&&$data$jscomp$8_msg$$.result.events["at.action"]&&processEventAt($data$jscomp$8_msg$$.result.events,$data$jscomp$8_msg$$),$data$jscomp$8_msg$$.result.events["tx.hash"]&&0<$data$jscomp$8_msg$$.result.events["tx.hash"].length&&
|
|
46
47
|
processEventTx($data$jscomp$8_msg$$))})}},initSocket=()=>{configs.BLOCKCHAIN_SOCKET&&setTimeout(()=>{global.configs.cluster?global.clientRedis.get("lastworker",($e$jscomp$0$$,$lastworker$$)=>{if($lastworker$$){try{$lastworker$$=JSON.parse($lastworker$$)}catch($e$$){console.error($e$$);return}process.pid!=$lastworker$$.pid||$lastworker$$.initSocket||($lastworker$$.initSocket=!0,global.clientRedis.set("lastworker",JSON.stringify($lastworker$$)),console.log("init socket connect to blockchain on worker",
|
|
47
|
-
$lastworker$$),setupSocket())}}):setupSocket()},1E3*(global.configs.cluster?60:1))};module.exports={getAccount,getWallet,getKeyByAddress,getKeyInfo,ping,connectWithSigner,getClient,bankBalancesGet,spend,createTx,getTxStatus,txQuery,bcQuery,tdQuery,initSocket,getLatestHash,getHashById,findHash,mining};
|
|
48
|
+
$lastworker$$),setupSocket())}}):setupSocket()},1E3*(global.configs.cluster?60:1))};module.exports={getAccount,getWallet,getKeyByAddress,getKeyInfo,ping,connectWithSigner,getClient,bankBalancesGet,getPrice,spend,createTx,getTxStatus,txQuery,bcQuery,tdQuery,initSocket,getLatestHash,getHashById,findHash,mining};
|
package/server/libs/ckvt.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use strict';const cdvt=global.getModel("cdvt"),dmvt=global.getModel("dmvt"),sokho=global.getModel("sokho"),hanmucton=global.getModel("hanmucton"),ckvtcapphat=require("./ckvtcapphat"),utils=require("./utils"),async=require("async"),underscore=require("underscore"),moment=require("moment");
|
|
2
|
-
module.exports=async($condition$$,$fn$$)=>{$fn$$||($fn$$=()=>{});!$condition$$.ngay&&$condition$$.den_ngay&&($condition$$.ngay=$condition$$.den_ngay);let $ma_dvcs$$=$condition$$.ma_dvcs,$ma_kho$$=$condition$$.ma_kho,$ma_vt$$=$condition$$.ma_vt
|
|
3
|
-
$ngay_dn$$=moment($tu_ngay$$).startOf("year").toDate()}else $nam$$=$ngay$$.getFullYear(),$ngay_dn$$=moment($ngay$$).startOf("year").toDate();let $id_app$$=$condition$$.id_app;return new Promise(($resolve$$,$reject$$)=>{async.parallel({ckcapphat:$callback$$=>{ckvtcapphat($condition$$,($e$$,$rs$$)=>{$callback$$($e
|
|
4
|
-
$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($c_dk$$.ma_tt3=$condition$$.ma_tt3);cdvt.find($c_dk$$).lean().exec(($error
|
|
5
|
-
$ma_dvcs$$&&($c_dk$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($c_dk$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&
|
|
6
|
-
{const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lte:$ngay$$}};$ma_kho$$&&($query$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($query$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($query$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&
|
|
7
|
-
($query$$.id_ct={$ne:$condition$$.id_ct});sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap
|
|
8
|
-
($ckcapphat_error$$,$data_results$$)=>{if($ckcapphat_error$$)return $fn$$($ckcapphat_error$$),$reject$$(Error($ckcapphat_error$$));$ckcapphat_error$$=$data_results$$.ckcapphat.map($c$$=>{$c$$.ton00_capphat=$c$$.ton00;$c$$.du00_capphat=$c$$.du00;$c$$.ton00=0;$c$$.du00=0;return $c$$});$data_results
|
|
9
|
-
($ckcapphat_error$$=["ma_vt"]);if(underscore.isString($ckcapphat_error$$))if(0<=$ckcapphat_error$$.indexOf("["))try{$ckcapphat_error$$=JSON.parse($ckcapphat_error$$)}catch($e$$){console.error($e$$)}else $ckcapphat_error$$=$ckcapphat_error$$.split(",");$data_results$$.groupBy($ckcapphat_error$$,
|
|
10
|
-
utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,
|
|
2
|
+
module.exports=async($condition$$,$fn$$)=>{$fn$$||($fn$$=()=>{});!$condition$$.ngay&&$condition$$.den_ngay&&($condition$$.ngay=$condition$$.den_ngay);let $ma_dvcs$$=$condition$$.ma_dvcs,$ma_kho$$=$condition$$.ma_kho,$ma_vt$$=$condition$$.ma_vt;if(underscore.isString($ma_vt$$)&&0<=$ma_vt$$.indexOf("[")&&0<$ma_vt$$.indexOf("]"))try{$ma_vt$$=JSON.parse($ma_vt$$),0==$ma_vt$$.length&&($ma_vt$$=void 0)}catch($e$$){console.error($e$$)}$ma_vt$$&&underscore.isArray($ma_vt$$)&&($ma_vt$$={$in:Object.assign($ma_vt$$)});
|
|
3
|
+
let $ngay$$,$nam$$,$ngay_dn$$;$ngay$$=moment($condition$$.ngay).endOf("date").toDate();if($condition$$.tu_ngay){let $tu_ngay$$=new Date($condition$$.tu_ngay);$nam$$=$tu_ngay$$.getFullYear();$ngay_dn$$=moment($tu_ngay$$).startOf("year").toDate()}else $nam$$=$ngay$$.getFullYear(),$ngay_dn$$=moment($ngay$$).startOf("year").toDate();let $id_app$$=$condition$$.id_app;return new Promise(($resolve$$,$reject$$)=>{async.parallel({ckcapphat:$callback$$=>{ckvtcapphat($condition$$,($e$$,$rs$$)=>{$callback$$($e$$,
|
|
4
|
+
$rs$$)})},dn:$callback$$=>{const $c_dk$$={id_app:$id_app$$,nam:$nam$$};$ma_kho$$&&($c_dk$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($c_dk$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($c_dk$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($c_dk$$.ma_tt3=$condition$$.ma_tt3);cdvt.find($c_dk$$).lean().exec(($error$$,
|
|
5
|
+
$results$$)=>{if($error$$)return $callback$$($error$$);$callback$$(null,$results$$)})},hanmucton:$callback$$=>{const $c_dk$$={id_app:$id_app$$};$ma_kho$$&&($c_dk$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($c_dk$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($c_dk$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&
|
|
6
|
+
($c_dk$$.ma_tt3=$condition$$.ma_tt3);hanmucton.find($c_dk$$).lean().exec(($error$$,$results$$)=>{if($error$$)return $callback$$($error$$);$callback$$(null,$results$$)})},ps:$callback$$=>{const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lte:$ngay$$}};$ma_kho$$&&($query$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($query$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($query$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&
|
|
7
|
+
($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);$condition$$.id_ct&&($query$$.id_ct={$ne:$condition$$.id_ct});sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=utils.round($ps$$.sl_nhap_qd,4);$ps$$.sl_xuat=utils.round($ps$$.sl_xuat_qd,4);return $ps$$});$callback$$(null,$pss$$)})},ton_kho_mac_dinh:$callback$$=>
|
|
8
|
+
{let $query$$={id_app:$id_app$$,ton_kho_mac_dinh:{$nin:[null,void 0,0]}};$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);dmvt.find($query$$,{ma_vt:1,ton_kho_mac_dinh:1}).lean().exec(($e$$,$rs$$)=>{$callback$$(null,$rs$$)})}},($ckcapphat_error$$,$data_results$$)=>{if($ckcapphat_error$$)return $fn$$($ckcapphat_error$$),$reject$$(Error($ckcapphat_error$$));$ckcapphat_error$$=$data_results$$.ckcapphat.map($c$$=>{$c$$.ton00_capphat=$c$$.ton00;$c$$.du00_capphat=$c$$.du00;$c$$.ton00=0;$c$$.du00=0;return $c$$});$data_results$$=
|
|
9
|
+
$data_results$$.dn.concat($data_results$$.ps).concat($ckcapphat_error$$).concat($data_results$$.ton_kho_mac_dinh).concat($data_results$$.hanmucton);($ckcapphat_error$$=$condition$$.groupBy||$condition$$.groupby)||($ckcapphat_error$$=["ma_vt"]);if(underscore.isString($ckcapphat_error$$))if(0<=$ckcapphat_error$$.indexOf("["))try{$ckcapphat_error$$=JSON.parse($ckcapphat_error$$)}catch($e$$){console.error($e$$)}else $ckcapphat_error$$=$ckcapphat_error$$.split(",");$data_results$$.groupBy($ckcapphat_error$$,
|
|
10
|
+
"sl_nhap sl_xuat ton00 du00 ton00_capphat du00_capphat tien_nhap tien_xuat ton_kho_mac_dinh ton_toi_thieu ton_toi_da".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$),$reject$$(Error($e$$));for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,4),$r$$.du00=Math.round($r$$.du00,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0),$r$$.sl_nhap=0,$r$$.sl_xuat=0,$r$$.tien_nhap=0,$r$$.tien_xuat=0,$r$$.ton=$r$$.ton00-(0<$r$$.ton00_capphat?$r$$.ton00_capphat:
|
|
11
|
+
0),$r$$.du=$r$$.du00-(0<$r$$.du00_capphat?$r$$.du00_capphat:0);$fn$$(null,$groups$$);$resolve$$($groups$$)})})})};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';const sokhocapphat=global.getModel("sokhocapphat"),utils=require("./utils"),async=require("async"),underscore=require("underscore"),moment=require("moment");
|
|
2
2
|
module.exports=function($condition$$,$fn$$){!$condition$$.ngay&&$condition$$.den_ngay&&($condition$$.ngay=$condition$$.den_ngay);let $ma_dvcs$$=$condition$$.ma_dvcs,$ma_kho$$=$condition$$.ma_kho,$ma_vt$$=$condition$$.ma_vt;$ma_vt$$&&underscore.isArray($ma_vt$$)&&($ma_vt$$={$in:Object.assign($ma_vt$$)});let $ngay$$=moment($condition$$.ngay).endOf("date").toDate(),$id_app$$=$condition$$.id_app;async.parallel({dn:$callback$$=>{$callback$$(null,[])},ps:$callback$$=>{const $query$$={id_app:$id_app$$,ngay_ct:{$lte:$ngay$$}};
|
|
3
3
|
$ma_kho$$&&($query$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($query$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($query$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);$condition$$.id_ct&&($query$$.id_ct={$ne:$condition$$.id_ct});sokhocapphat.find($query$$).lean().exec(function($error$$,
|
|
4
|
-
$pss$$){if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap
|
|
5
|
-
JSON.parse($groupBy_results$$)}catch($e$$){console.error($e$$)}else $groupBy_results$$=$groupBy_results$$.split(",");$data_error$$.groupBy($groupBy_results$$,"sl_nhap sl_xuat ton00 du00 tien_nhap tien_xuat".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,
|
|
4
|
+
$pss$$){if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=utils.round($ps$$.sl_nhap_qd,4);$ps$$.sl_xuat=utils.round($ps$$.sl_xuat_qd,4);return $ps$$});$callback$$(null,$pss$$)})}},($data_error$$,$groupBy_results$$)=>{if($data_error$$)$fn$$($data_error$$);else{$data_error$$=$groupBy_results$$.dn.concat($groupBy_results$$.ps);($groupBy_results$$=$condition$$.groupBy)||($groupBy_results$$=["ma_vt"]);if(underscore.isString($groupBy_results$$))if(0<=$groupBy_results$$.indexOf("["))try{$groupBy_results$$=
|
|
5
|
+
JSON.parse($groupBy_results$$)}catch($e$$){console.error($e$$)}else $groupBy_results$$=$groupBy_results$$.split(",");$data_error$$.groupBy($groupBy_results$$,"sl_nhap sl_xuat ton00 du00 tien_nhap tien_xuat".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,4),$r$$.du00=Math.round($r$$.du00,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0),$r$$.sl_nhap=0,$r$$.sl_xuat=0,$r$$.tien_nhap=0,$r$$.tien_xuat=
|
|
6
6
|
0;$fn$$(null,$groups$$)})}})};
|
package/server/libs/ckvttt.js
CHANGED
|
@@ -4,8 +4,8 @@ $ngay_dn$$=moment($tu_ngay$$).startOf("year").toDate()}else $nam$$=$ngay$$.getFu
|
|
|
4
4
|
$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($c_dk$$.ma_tt3=$condition$$.ma_tt3);cdvt.find($c_dk$$).lean().exec(($error$$,$results$$)=>{if($error$$)return $callback$$($error$$);$callback$$(null,$results$$)})},hanmucton:$callback$$=>{const $c_dk$$={id_app:$id_app$$};$ma_kho$$&&($c_dk$$.ma_kho=$ma_kho$$);
|
|
5
5
|
$ma_dvcs$$&&($c_dk$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($c_dk$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($c_dk$$.ma_tt3=$condition$$.ma_tt3);hanmucton.find($c_dk$$).lean().exec(($error$$,$results$$)=>{if($error$$)return $callback$$($error$$);$callback$$(null,$results$$)})},ps:$callback$$=>
|
|
6
6
|
{const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lte:$ngay$$}};$ma_kho$$&&($query$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($query$$.ma_dvcs=$ma_dvcs$$);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($query$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);$condition$$.id_ct&&
|
|
7
|
-
($query$$.id_ct={$ne:$condition$$.id_ct});sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap
|
|
8
|
-
($ckcapphat_error$$,$data_results$$)=>{if($ckcapphat_error$$)return $fn$$($ckcapphat_error$$),$reject$$(Error($ckcapphat_error$$));$ckcapphat_error$$=$data_results$$.ckcapphat.map($c$$=>{$c$$.ton00_capphat=$c$$.ton00;$c$$.du00_capphat=$c$$.du00;$c$$.ton00=0;$c$$.du00=0;return $c$$});$data_results$$=$data_results$$.dn.concat($data_results$$.ps).concat($ckcapphat_error$$).concat($data_results$$.ton_kho_mac_dinh).concat($data_results$$.hanmucton);($ckcapphat_error
|
|
9
|
-
($ckcapphat_error$$=["ma_vt"]);if(underscore.isString($ckcapphat_error$$))if(0<=$ckcapphat_error$$.indexOf("["))try{$ckcapphat_error$$=JSON.parse($ckcapphat_error$$)}catch($e$$){console.error($e$$)}else $ckcapphat_error$$=$ckcapphat_error$$.split(",");$data_results$$.groupBy($ckcapphat_error$$,"sl_nhap sl_xuat ton00 du00 ton00_capphat du00_capphat tien_nhap tien_xuat ton_kho_mac_dinh ton_toi_thieu ton_toi_da".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$)
|
|
10
|
-
($groups$$=$groups$$.filter($g$$=>$g$$.ton_toi_thieu&&$g$$.ton_toi_thieu>$g$$.ton00));$condition$$.canh_bao_ton_max&&($groups$$=$groups$$.filter($g$$=>$g$$.ton_toi_da&&$g$$.ton_toi_da<$g$$.ton00));for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,
|
|
11
|
-
0),$r$$.du=$r$$.du00-(0<$r$$.du00_capphat?$r$$.du00_capphat:0);$fn$$(null,$groups$$);$resolve$$($groups$$)})})})};
|
|
7
|
+
($query$$.id_ct={$ne:$condition$$.id_ct});sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=utils.round($ps$$.sl_nhap_qd,4);$ps$$.sl_xuat=utils.round($ps$$.sl_xuat_qd,4);return $ps$$});$callback$$(null,$pss$$)})},ton_kho_mac_dinh:$callback$$=>{let $query$$={id_app:$id_app$$,ton_kho_mac_dinh:{$nin:[null,void 0,0]}};$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);dmvt.find($query$$,{ma_vt:1,ton_kho_mac_dinh:1}).lean().exec(($e$$,
|
|
8
|
+
$rs$$)=>{$callback$$(null,$rs$$)})}},($ckcapphat_error$$,$data_results$$)=>{if($ckcapphat_error$$)return $fn$$($ckcapphat_error$$),$reject$$(Error($ckcapphat_error$$));$ckcapphat_error$$=$data_results$$.ckcapphat.map($c$$=>{$c$$.ton00_capphat=$c$$.ton00;$c$$.du00_capphat=$c$$.du00;$c$$.ton00=0;$c$$.du00=0;return $c$$});$data_results$$=$data_results$$.dn.concat($data_results$$.ps).concat($ckcapphat_error$$).concat($data_results$$.ton_kho_mac_dinh).concat($data_results$$.hanmucton);($ckcapphat_error$$=
|
|
9
|
+
$condition$$.groupBy||$condition$$.groupby)||($ckcapphat_error$$=["ma_vt"]);if(underscore.isString($ckcapphat_error$$))if(0<=$ckcapphat_error$$.indexOf("["))try{$ckcapphat_error$$=JSON.parse($ckcapphat_error$$)}catch($e$$){console.error($e$$)}else $ckcapphat_error$$=$ckcapphat_error$$.split(",");$data_results$$.groupBy($ckcapphat_error$$,"sl_nhap sl_xuat ton00 du00 ton00_capphat du00_capphat tien_nhap tien_xuat ton_kho_mac_dinh ton_toi_thieu ton_toi_da".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$),
|
|
10
|
+
$reject$$(Error($e$$));$condition$$.canh_bao_ton_min&&($groups$$=$groups$$.filter($g$$=>$g$$.ton_toi_thieu&&$g$$.ton_toi_thieu>$g$$.ton00));$condition$$.canh_bao_ton_max&&($groups$$=$groups$$.filter($g$$=>$g$$.ton_toi_da&&$g$$.ton_toi_da<$g$$.ton00));for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,4),$r$$.du00=Math.round($r$$.du00,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0),$r$$.sl_nhap=0,$r$$.sl_xuat=0,$r$$.tien_nhap=0,$r$$.tien_xuat=0,$r$$.ton=
|
|
11
|
+
$r$$.ton00-(0<$r$$.ton00_capphat?$r$$.ton00_capphat:0),$r$$.du=$r$$.du00-(0<$r$$.du00_capphat?$r$$.du00_capphat:0);$fn$$(null,$groups$$);$resolve$$($groups$$)})})})};
|
package/server/libs/databanle.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';const pbl=global.getModel("pbl"),hd2=global.getModel("hd2"),hd3=global.getModel("hd3"),so1=global.getModel("so1"),hd7=global.getModel("hd7"),async=require("async"),trangthai=global.getModel("trangthai"),transaction=global.getModel("transaction");
|
|
2
|
-
module.exports=function($condition$$,$callback$jscomp$0$$){if(!$condition$$.id_app)return $callback$jscomp$0$$("H\u00e0m n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1 id_app");
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
$r$$.
|
|
7
|
-
$
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
$
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
$
|
|
15
|
-
|
|
2
|
+
module.exports=function($condition$$,$callback$jscomp$0$$){if(!$condition$$.id_app)return $callback$jscomp$0$$("H\u00e0m n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1 id_app");async.parallel({hd2:$callback$$=>{!$condition$$.ma_ct||0<=$condition$$.ma_ct.indexOf("HD2")?hd2.find({...$condition$$}).sort({ngay_ct:1,so_ct:1}).lean().exec(($error$$,$rs$$)=>{if($error$$)return $callback$$($error$$);$rs$$.forEach($v$$=>{$v$$.details.forEach($r$$=>{$r$$.tien_hang_nt=$r$$.tien_nt;$r$$.tien_hang=$r$$.tien_hang_nt*
|
|
3
|
+
($v$$.ty_gia||1);!$r$$.tien_ck_nt&&$r$$.tien_ck?$r$$.tien_ck_nt=$r$$.tien_ck:$r$$.tien_ck=($r$$.tien_ck_nt||0)*($v$$.ty_gia||1);$r$$.tien_nt=$r$$.tien_hang_nt-($r$$.tien_ck_nt||0);$r$$.tien=$r$$.tien_nt*($v$$.ty_gia||1)})});$callback$$(null,$rs$$)}):$callback$$(null,[])},hd3:$callback$$=>{if(!$condition$$.ma_ct||0<=$condition$$.ma_ct.indexOf("HD2")){let $_cd$$={...$condition$$};delete $_cd$$.ma_ct;hd3.find($_cd$$).sort({ngay_ct:1,so_ct:1}).lean().exec(($error$$,$rs$$)=>{if($error$$)return $callback$$($error$$);
|
|
4
|
+
$callback$$(null,$rs$$)})}else $callback$$(null,[])},pbl:$callback$$=>{!$condition$$.ma_ct||0<=$condition$$.ma_ct.indexOf("PBL")?pbl.find({...$condition$$}).sort({ngay_ct:1,so_ct:1}).lean().exec(($error$$,$rs$$)=>{if($error$$)return $callback$$($error$$);$rs$$.forEach($pbl$$=>{$pbl$$.details.forEach($r$$=>{$r$$.tien_hang_nt=$r$$.tien_hang_nt||$r$$.tien_nt;$r$$.tien_hang=$r$$.tien_hang_nt*($pbl$$.ty_gia||1);!$r$$.tien_ck_nt&&$r$$.tien_ck?$r$$.tien_ck_nt=$r$$.tien_ck:$r$$.tien_ck=($r$$.tien_ck_nt||
|
|
5
|
+
0)*($pbl$$.ty_gia||1);$r$$.tien_nt=$r$$.tien_hang_nt-($r$$.tien_ck_nt||0);$r$$.tien=$r$$.tien_nt*($pbl$$.ty_gia||1)})});$callback$$(null,$rs$$)}):$callback$$(null,[])},so:$callback$$=>{!$condition$$.ma_ct||0<=$condition$$.ma_ct.indexOf("SO1")?so1.find({...$condition$$}).sort({ngay_ct:1,so_ct:1}).lean().exec(($error$$,$rs$$)=>{if($error$$)return $callback$$($error$$);$rs$$.forEach($r$$=>{$r$$.ngay_ct=$r$$.ngay_giao_hang||$r$$.ngay_ct;$r$$.tien_hang_nt=$r$$.tien_hang_nt||$r$$.tien_nt;$r$$.tien_hang=
|
|
6
|
+
$r$$.tien_hang||$r$$.tien;$r$$.tien_nt=$r$$.tien_hang_nt-($r$$.tien_ck_nt||0);$r$$.tien=$r$$.tien_hang-($r$$.tien_ck||0)});$callback$$(null,$rs$$)}):$callback$$(null,[])},so_tl:$callback$$=>{if(!$condition$$.ma_ct||0<=$condition$$.ma_ct.indexOf("SO1")){let $_cd$$={...$condition$$};$_cd$$.ngay_tra_lai=$condition$$.ngay_ct;delete $_cd$$.ngay_ct;delete $_cd$$.ma_ct;so1.find($_cd$$).sort({ngay_ct:1,so_ct:1}).lean().exec(($error$$,$rs$$)=>{if($error$$)return $callback$$($error$$);$rs$$.forEach($r$$=>{$r$$.ngay_ct=
|
|
7
|
+
$r$$.ngay_tra_lai||$r$$.ngay_ct;$r$$.tien_hang=$r$$.tien_hang||$r$$.tien;$r$$.tien_hang_nt=$r$$.tien_hang_nt||$r$$.tien_nt;$r$$.tien=$r$$.tien_hang-($r$$.tien_ck||0);$r$$.tien_nt=$r$$.tien_hang_nt-($r$$.tien_ck_nt||0)});$callback$$(null,$rs$$)})}else $callback$$(null,[])},tl:$callback$$=>{if(!$condition$$.ma_ct||0<=$condition$$.ma_ct.indexOf("PBL")){let $_cd$$={...$condition$$};delete $_cd$$.ma_ct;hd7.find($_cd$$).sort({ngay_ct:1,so_ct:1}).lean().exec(($error$$,$rs$$)=>{if($error$$)return $callback$$($error$$);
|
|
8
|
+
$callback$$(null,$rs$$)})}else $callback$$(null,[])}},async($_async_error$$,$rs$$)=>{$_async_error$$&&$callback$jscomp$0$$($_async_error$$);$rs$$.pbl.forEach($m$$=>{$m$$.details.filter($d$$=>$d$$.promotion&&$d$$.promotion.details_km).map($d$$=>$d$$.promotion.details_km).reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]).forEach($d$$=>{$d$$.sl_xuat=$d$$.sl_km;$m$$.details.push($d$$)});$m$$.promotion&&$m$$.promotion.forEach($p$$=>{$p$$=Object.assign({},$p$$);$p$$.sl_xuat=$p$$.sl_km;$m$$.details.push($p$$)})});
|
|
9
|
+
$rs$$.so.forEach($r$$=>{$r$$.ctcpbhs&&$r$$.ctcpbhs.forEach($c$$=>{$c$$.tien_hang=0;$c$$.tien_hang_nt=0;$c$$.sl_xuat=0;$c$$.tien=$c$$.tien_hang+$c$$.tien_cp;$c$$.tien_nt=$c$$.tien_hang_nt+$c$$.tien_cp_nt;$r$$.details.push($c$$)});$rs$$.pbl.push($r$$)});$rs$$.so_tl.forEach($r$$=>{"5"===$r$$.trang_thai&&($r$$.details_tl=Object.assign({},$r$$).details.map($d$$=>{$d$$.sl_nhap=$d$$.sl_xuat;$d$$.sl_xuat=0;$d$$.tien_nhap=$d$$.tien_xuat;$d$$.tien_xuat=0;return $d$$}),$r$$.details=[],$rs$$.pbl.push($r$$))});
|
|
10
|
+
$rs$$.hd2.forEach($r$$=>{$rs$$.pbl.push($r$$)});$rs$$.hd3.forEach($r$jscomp$0$$=>{$r$jscomp$0$$.details_tl=$r$jscomp$0$$.details.forEach($r$$=>{$r$$.tien_hang=$r$$.tien;$r$$.tien_hang_nt=$r$$.tien_nt;$r$$.tien=$r$$.tien_hang-$r$$.tien_ck;$r$$.tien_nt=$r$$.tien_hang_nt-$r$$.tien_ck_nt});$r$jscomp$0$$.details=[];$rs$$.pbl.push($r$jscomp$0$$)});$rs$$.tl.forEach($r$jscomp$0$$=>{$r$jscomp$0$$.details_doi||($r$jscomp$0$$.details_doi=[]);let $t_tien_tl$$=$r$jscomp$0$$.details.csum("tien_hang_nt")-$r$jscomp$0$$.details.csum("tien_ck_nt"),
|
|
11
|
+
$t_tien_doi$$=$r$jscomp$0$$.details_doi.csum("tien_hang_nt")-$r$jscomp$0$$.details_doi.csum("tien_ck_nt");$r$jscomp$0$$.details_tl=$r$jscomp$0$$.details.map($r$$=>{$t_tien_doi$$&&$t_tien_doi$$<=$t_tien_tl$$&&($r$$.tien_hang=0,$r$$.tien_hang_nt=0,$r$$.tien=0,$r$$.tien_nt=0,$r$$.tien_ck=0,$r$$.tien_ck_nt=0);return $r$$});$r$jscomp$0$$.details=$r$jscomp$0$$.details_doi.map($r$$=>{$t_tien_doi$$&&$t_tien_doi$$<=$t_tien_tl$$&&($r$$.tien_hang=0,$r$$.tien_hang_nt=0,$r$$.tien=0,$r$$.tien_nt=0,$r$$.tien_ck=
|
|
12
|
+
0,$r$$.tien_ck_nt=0);return $r$$});$r$jscomp$0$$.details.forEach($r$$=>{$r$$.tien_hang=$r$$.tien_hang||$r$$.tien;$r$$.tien_hang_nt=$r$$.tien_hang_nt||$r$$.tien_nt;$r$$.tien=$r$$.tien_hang-$r$$.tien_ck;$r$$.tien_nt=$r$$.tien_hang_nt-$r$$.tien_ck_nt});$rs$$.pbl.push($r$jscomp$0$$)});$_async_error$$=$rs$$.pbl;await $_async_error$$.asyncJoinModel2(null,trangthai,[{where:{trang_thai:"ma_trang_thai",ma_ct:"ma_ct"},fields:["post_sokho","post","post_socai","ten_trang_thai"]}]);$_async_error$$=$_async_error$$.filter($p$$=>
|
|
13
|
+
$p$$.post);const $ptthanhtoans$$=(await global.getModel("ptthanhtoan").find({status:!0,id_app:$condition$$.id_app}).lean()).map($pt$$=>{$pt$$.ma=`pttt__${$pt$$._id}`;return $pt$$});$_async_error$$=$_async_error$$.map(async $r$$=>{if($condition$$.show_bonus_points){let $trans$$=await transaction.find({id_ct:{$regex:$r$$._id.toString(),$options:"i"}}).lean();$r$$.bonus_points=$trans$$.filter($tran$$=>$tran$$.receiver.email.toLowerCase()===$r$$.ma_kh.toLowerCase()).map($tran$$=>$tran$$.amount).reduce(($a$$,
|
|
14
|
+
$b$$)=>$a$$+$b$$,0);$r$$.used_points=$trans$$.filter($tran$$=>$tran$$.sender.email.toLowerCase()===$r$$.ma_kh.toLowerCase()).map($tran$$=>$tran$$.amount).reduce(($a$$,$b$$)=>$a$$+$b$$,0)}$r$$.thanh_toan=$ptthanhtoans$$;$r$$.thanh_toan.forEach($pt$$=>{$r$$[$pt$$.ma]=0;$r$$.pt_thanh_toan===$pt$$._id.toString()&&($r$$[$pt$$.ma]+=$r$$.tien_thu||$r$$.tien_con_lai||0);$r$$.pt_thanh_toan2===$pt$$._id.toString()&&($r$$[$pt$$.ma]+=$r$$.tien_thu2||0);$pt$$.tien_thu=$r$$[$pt$$.ma]});return $r$$});$_async_error$$=
|
|
15
|
+
await Promise.all($_async_error$$);console.timeEnd("get point data ban le");$callback$jscomp$0$$(null,$_async_error$$,$ptthanhtoans$$)})};
|
package/server/libs/dkvt.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
module.exports=function($condition$$,$fn$$){!$condition$$.ngay&&$condition$$.tu_ngay&&($condition$$.ngay=$condition$$.tu_ngay);if($condition$$&&$condition$$.ngay&&$condition$$.id_app){var $ma_dvcs$$=$condition$$.ma_dvcs,$ma_kho$$=$condition$$.ma_kho,$ma_vt$$=$condition$$.ma_vt;underscore.isArray($ma_vt$$)&&($ma_vt$$={$in:$ma_vt$$});var $ngay$$=moment(new Date($condition$$.ngay)).startOf("date").toDate(),$nam$$=$ngay$$.getFullYear(),$ngay_dn$$=moment($ngay$$).startOf("year").toDate(),$id_app$$=$condition$$.id_app;
|
|
3
3
|
async.parallel({dn:$callback$$=>{const $c_dk$$={id_app:$id_app$$,nam:$nam$$};$ma_vt$$&&($c_dk$$.ma_vt=$ma_vt$$);$ma_kho$$&&($c_dk$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($c_dk$$.ma_dvcs=$ma_dvcs$$);$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($c_dk$$.ma_tt3=$condition$$.ma_tt3);cdvt.find($c_dk$$).lean().exec(($error$$,
|
|
4
4
|
$results$$)=>{$error$$?$callback$$($error$$):$results$$.joinModel2($id_app$$,"dmvt",{where:"ma_vt",fields:"tk_vt"},()=>{$callback$$(null,$results$$)})})},ps:$callback$$=>{const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lt:$ngay$$}};$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$ma_kho$$&&($query$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($query$$.ma_dvcs=$ma_dvcs$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($query$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($query$$.ma_tt1=
|
|
5
|
-
$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap
|
|
5
|
+
$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=utils.round($ps$$.sl_nhap_qd,4);$ps$$.sl_xuat=utils.round($ps$$.sl_xuat_qd,4);return $ps$$});$callback$$(null,$pss$$)})}},async($data_error$$,$groupBy_results$$)=>{if($data_error$$)return $fn$$($data_error$$);$data_error$$=$groupBy_results$$.dn.concat($groupBy_results$$.ps);
|
|
6
6
|
await $data_error$$.asyncJoinModel2($id_app$$,"dmvt",{where:"ma_vt",fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]});($groupBy_results$$=$condition$$.groupBy||$condition$$.groupby)||($groupBy_results$$=["ma_vt"]);if(underscore.isString($groupBy_results$$))if(0<=$groupBy_results$$.indexOf("["))try{$groupBy_results$$=JSON.parse($groupBy_results$$)}catch($e$$){console.error($e$$)}else $groupBy_results$$=$groupBy_results$$.split(",");$data_error$$.groupBy($groupBy_results$$,"sl_nhap sl_xuat ton00 du00 tien_nhap tien_xuat".split(" "),
|
|
7
|
-
($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,
|
|
7
|
+
($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,4),$r$$.du00=utils.round($r$$.du00,0)+utils.round($r$$.tien_nhap,0)-utils.round($r$$.tien_xuat,0),$r$$.sl_nhap=0,$r$$.sl_xuat=0,$r$$.tien_nhap=0,$r$$.tien_xuat=0;$fn$$(null,$groups$$)})})}else $fn$$("B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: ngay,id_app")};
|
package/server/libs/dkvttt.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
module.exports=function($condition$$,$fn$$){!$condition$$.ngay&&$condition$$.tu_ngay&&($condition$$.ngay=$condition$$.tu_ngay);if($condition$$&&$condition$$.ngay&&$condition$$.id_app){var $ma_dvcs$$=$condition$$.ma_dvcs,$ma_kho$$=$condition$$.ma_kho,$ma_vt$$=$condition$$.ma_vt;underscore.isArray($ma_vt$$)&&($ma_vt$$={$in:$ma_vt$$});var $ngay$$=moment(new Date($condition$$.ngay)).startOf("date").toDate(),$nam$$=$ngay$$.getFullYear(),$ngay_dn$$=moment($ngay$$).startOf("year").toDate(),$id_app$$=$condition$$.id_app;
|
|
3
3
|
async.parallel({dn:$callback$$=>{const $c_dk$$={id_app:$id_app$$,nam:$nam$$};$ma_vt$$&&($c_dk$$.ma_vt=$ma_vt$$);$ma_kho$$&&($c_dk$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($c_dk$$.ma_dvcs=$ma_dvcs$$);$condition$$.ma_lo&&($c_dk$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($c_dk$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($c_dk$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($c_dk$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($c_dk$$.ma_tt3=$condition$$.ma_tt3);cdvt.find($c_dk$$).lean().exec(($error$$,
|
|
4
4
|
$results$$)=>{$error$$?$callback$$($error$$):$callback$$(null,$results$$)})},ps:$callback$$=>{var $query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lt:$ngay$$}};$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$ma_kho$$&&($query$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($query$$.ma_dvcs=$ma_dvcs$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.han_sd&&($query$$.han_sd=$condition$$.han_sd);$condition$$.ma_tt1&&($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);
|
|
5
|
-
$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap
|
|
6
|
-
["ma_vt"]);if(underscore.isString($groupBy_results$$))if(0<=$groupBy_results$$.indexOf("["))try{$groupBy_results$$=JSON.parse($groupBy_results$$)}catch($e$$){console.error($e$$)}else $groupBy_results$$=$groupBy_results$$.split(",");$data_error$$.groupBy($groupBy_results$$,"sl_nhap sl_xuat ton00 du00 tien_nhap tien_xuat".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,
|
|
7
|
-
utils.round($r$$.tien_nhap,0)-utils.round($r$$.tien_xuat,0),$r$$.sl_nhap=0,$r$$.sl_xuat=0,$r$$.tien_nhap=0,$r$$.tien_xuat=0;$fn$$(null,$groups$$)})})}else $fn$$("B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: ngay,id_app")};
|
|
5
|
+
$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{if($error$$)return $callback$$($error$$);$pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=utils.round($ps$$.sl_nhap_qd,4);$ps$$.sl_xuat=utils.round($ps$$.sl_xuat_qd,4);return $ps$$});$callback$$(null,$pss$$)})}},($data_error$$,$groupBy_results$$)=>{if($data_error$$)return $fn$$($data_error$$);$data_error$$=$groupBy_results$$.dn.concat($groupBy_results$$.ps);($groupBy_results$$=$condition$$.groupBy||
|
|
6
|
+
$condition$$.groupby)||($groupBy_results$$=["ma_vt"]);if(underscore.isString($groupBy_results$$))if(0<=$groupBy_results$$.indexOf("["))try{$groupBy_results$$=JSON.parse($groupBy_results$$)}catch($e$$){console.error($e$$)}else $groupBy_results$$=$groupBy_results$$.split(",");$data_error$$.groupBy($groupBy_results$$,"sl_nhap sl_xuat ton00 du00 tien_nhap tien_xuat".split(" "),($e$$,$groups$$)=>{if($e$$)return $fn$$($e$$);for(let $r$$ of $groups$$)$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,
|
|
7
|
+
4),$r$$.du00=utils.round($r$$.du00,0)+utils.round($r$$.tien_nhap,0)-utils.round($r$$.tien_xuat,0),$r$$.sl_nhap=0,$r$$.sl_xuat=0,$r$$.tien_nhap=0,$r$$.tien_xuat=0;$fn$$(null,$groups$$)})})}else $fn$$("B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: ngay,id_app")};
|
|
@@ -3,22 +3,22 @@ exports.nguoiPhuTrach=async($group_id_app_p$$,$email$$)=>{if(!$group_id_app_p$$)
|
|
|
3
3
|
exports.dsDangPhuTrach=async($id_app$$,$email$$)=>{if(!$id_app$$)return[];$email$$=(await UserGroup.find({phu_trach:$email$$,id_app:$id_app$$})).map($g$$=>$g$$._id.toString());return(await Participant.find({id_app:$id_app$$,group_id:{$in:$email$$}})).map($p$$=>$p$$.email)};
|
|
4
4
|
exports.isAdmin=function($current_id_app$$,$email$$,$callback$$){if(!$current_id_app$$)return $callback$$(null,!0);App.findOne({_id:$current_id_app$$}).lean().exec(async($error$$,$app$$)=>{if($error$$)return $callback$$($error$$,!1);if(!$app$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i",!1);if(global.configs.check_expire_date&&$app$$.expire_date&&(new Date($app$$.expire_date)).getTime()<(new Date).getTime())return $callback$$("C\u00f4ng ty n\u00e0y \u0111\u00e3 h\u1ebft h\u1ea1n s\u1eed d\u1ee5ng",
|
|
5
5
|
!1);$error$$=await Participant.findOne({id_app:$current_id_app$$,email:$email$$});if(!$error$$)return $callback$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp c\u00f4ng ty n\u00e0y",!1);$callback$$(null,$error$$.admin,$app$$,$error$$)})};
|
|
6
|
-
exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callback$jscomp$0$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight)return $callback$jscomp$0$$(null,!0);$options$$.data&&($options$$.data.trang_thai||0==$options$$.data.trang_thai)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString())
|
|
7
|
-
$options$$.data||$options$$.obj||{};const $ma_ct$$=(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase(),$ma_trang_thai$$=($data_trang_thai$$.trang_thai||$data_trang_thai$$.progress||"").toString().toUpperCase();if($ma_ct$$&&$ma_trang_thai$$&&($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,
|
|
8
|
-
$admin$$,$app$$,$participant$$)=>{if($e_key_right$$)return $callback$jscomp$0$$($e_key_right$$,!1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app
|
|
9
|
-
$options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.notNeedRight||!global.modulesInMenu[$module$$]&&("view"===$action$$||"add"===$action$$&&"group"===$module$$.toLowerCase()))return $callback$jscomp$0$$(null
|
|
10
|
-
$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}else if(1===$options$$.obj.visible_to&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created
|
|
11
|
-
$email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&0>($options$$.obj.attends||[]).indexOf($email$$))return $callback$jscomp$0$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);$action$$=$action$$.toLowerCase()
|
|
12
|
-
email:$e_key_right$$,module:$module$$.toLowerCase()},async function($error$jscomp$2_user_phu_trach$$,$_right__right_trang_thai$$){if($error$jscomp$2_user_phu_trach$$)return $callback$jscomp$0$$($error$jscomp$2_user_phu_trach$$,!1);if(!$admin$$){if(!$_right__right_trang_thai$$||!$_right__right_trang_thai$$[$action$$])return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y"
|
|
13
|
-
$options$$.obj.user_created.toLowerCase()!==$email$$&&(2!==$options$$.obj.visible_to||!underscore.contains($options$$.obj.visible_to_users,$email$$))&&($error$jscomp$2_user_phu_trach$$=await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created),$options$$.obj.phu_trach!==$email$$&&$error$jscomp$2_user_phu_trach$$!=$email$$&&0>($options$$.obj.attends||[]).indexOf($email$$)))return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
|
|
6
|
+
exports.hasRight=async function($current_id_app$$,$email$$,$module$$,$action$$,$callback$jscomp$0$$,$options$$={}){if(!$current_id_app$$||$options$$.notNeedRight||global.controllers[$module$$]&&global.controllers[$module$$].model&&global.controllers[$module$$].model.schema&&!underscore.has(global.controllers[$module$$].model.schema.paths,"id_app"))return $callback$jscomp$0$$(null,!0);$options$$.data&&($options$$.data.trang_thai||0==$options$$.data.trang_thai)&&($options$$.data.trang_thai=$options$$.data.trang_thai.toString());
|
|
7
|
+
$options$$.obj&&($options$$.obj.trang_thai||0==$options$$.obj.trang_thai)&&($options$$.obj.trang_thai=$options$$.obj.trang_thai.toString());var $data_trang_thai$$=$options$$.data||$options$$.obj||{};const $ma_ct$$=(($options$$.obj||{}).ma_ct||($options$$.data||{}).ma_ct||"").toString().toUpperCase(),$ma_trang_thai$$=($data_trang_thai$$.trang_thai||$data_trang_thai$$.progress||"").toString().toUpperCase();if($ma_ct$$&&$ma_trang_thai$$&&($data_trang_thai$$=await trangthai.findOne({ma_trang_thai:$ma_trang_thai$$,
|
|
8
|
+
ma_ct:$ma_ct$$}))&&$data_trang_thai$$.not_need_right)return $callback$jscomp$0$$(null,!0);exports.isAdmin($current_id_app$$,$email$$,async($e_key_right$$,$admin$$,$app$$,$participant$$)=>{if($e_key_right$$)return $callback$jscomp$0$$($e_key_right$$,!1);if($options$$.data&&$options$$.data.id_app){if($options$$.data.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.obj&&$options$$.data.id_app!=
|
|
9
|
+
$options$$.obj.id_app)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}if($options$$.obj&&$options$$.obj.id_app&&$options$$.obj.id_app!=$current_id_app$$)return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);if($options$$.notNeedRight||!global.modulesInMenu[$module$$]&&("view"===$action$$||"add"===$action$$&&"group"===$module$$.toLowerCase()))return $callback$jscomp$0$$(null,
|
|
10
|
+
!0,$app$$);if($options$$.obj&&!$admin$$)if(2===$options$$.obj.visible_to){if(!underscore.contains($options$$.obj.visible_to_users,$email$$)&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase())return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1)}else if(1===$options$$.obj.visible_to&&$options$$.obj.of_user!==$email$$.toLowerCase()&&$options$$.obj.user_created&&
|
|
11
|
+
$options$$.obj.user_created.toLowerCase()!==$email$$.toLowerCase()&&await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created)!=$email$$.toLowerCase()&&$options$$.obj.phu_trach!=$email$$.toLowerCase()&&0>($options$$.obj.attends||[]).indexOf($email$$))return $callback$jscomp$0$$("Ch\u1ec9 ng\u01b0\u1eddi t\u1ea1o, ph\u1ee5 tr\u00e1ch, h\u1ed7 tr\u1ee3 v\u00e0 admin m\u1edbi c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",!1);$action$$=$action$$.toLowerCase();
|
|
12
|
+
$e_key_right$$=$email$$;$participant$$&&$participant$$.group_id&&($e_key_right$$=$participant$$.group_id.toLowerCase());right.findOne({id_app:$current_id_app$$,email:$e_key_right$$,module:$module$$.toLowerCase()},async function($error$jscomp$2_user_phu_trach$$,$_right__right_trang_thai$$){if($error$jscomp$2_user_phu_trach$$)return $callback$jscomp$0$$($error$jscomp$2_user_phu_trach$$,!1);if(!$admin$$){if(!$_right__right_trang_thai$$||!$_right__right_trang_thai$$[$action$$])return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi t\u00ednh n\u0103ng n\u00e0y",
|
|
13
|
+
!1);if($options$$.obj&&$_right__right_trang_thai$$&&!$_right__right_trang_thai$$.viewOfOther&&$options$$.obj.user_created.toLowerCase()!==$email$$&&(2!==$options$$.obj.visible_to||!underscore.contains($options$$.obj.visible_to_users,$email$$))&&($error$jscomp$2_user_phu_trach$$=await exports.nguoiPhuTrach($options$$.obj.id_app,$options$$.obj.user_created),$options$$.obj.phu_trach!==$email$$&&$error$jscomp$2_user_phu_trach$$!=$email$$&&0>($options$$.obj.attends||[]).indexOf($email$$)))return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0y",
|
|
14
14
|
!1);if($ma_trang_thai$$&&($_right__right_trang_thai$$=$_right__right_trang_thai$$[`${$action$$}_trang_thai`])&&!$_right__right_trang_thai$$[$ma_trang_thai$$]&&void 0!=$_right__right_trang_thai$$[$ma_trang_thai$$])return $callback$jscomp$0$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n \u0111\u1ed1i v\u1edbi tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y")}$options$$.obj?async.parallel({trangthai:$callback$$=>{$options$$.obj&&("update"===$action$$||"delete"===$action$$)&&$options$$.obj.ma_ct?trangthai.findOne({ma_ct:$options$$.obj.ma_ct.toUpperCase(),
|
|
15
15
|
ma_trang_thai:$options$$.obj.trang_thai},function($e$$,$trang_thai$$){if($e$$)return $callback$$($e$$);if($trang_thai$$){if("update"===$action$$){if(0==$trang_thai$$.allow_update)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p s\u1eeda");if(1==$trang_thai$$.lock_data)return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c kho\u00e1")}if("delete"===$action$$&&($trang_thai$$.lock_data||0==$trang_thai$$.allow_delete))return $callback$$("Tr\u1ea1ng th\u00e1i ch\u1ee9ng t\u1eeb n\u00e0y kh\u00f4ng cho ph\u00e9p xo\u00e1")}return $callback$$()}):
|
|
16
16
|
$callback$$()}},$e$$=>{$e$$?$callback$jscomp$0$$($e$$,!1):$callback$jscomp$0$$(null,!0,$app$$)}):$callback$jscomp$0$$(null,!0,$app$$)})},$options$$)};
|
|
17
17
|
exports.getRightByItem=function($id_app$$,$model$$,$email$$,$next$$,$module$$,$options$$={}){exports.isAdmin($id_app$$,$email$$,async function($e$jscomp$3_key_right$$,$admin$$,$app$$,$participant$$){if($e$jscomp$3_key_right$$)return $next$$($e$jscomp$3_key_right$$);let $condition$$={};$module$$||($module$$=$model$$&&$model$$.collection&&$model$$.collection.name&&1<$model$$.collection.name.length?$model$$.collection.name.substr(0,$model$$.collection.name.length-1).toLowerCase():"");if($admin$$||$options$$.notNeedRight)$next$$(null,
|
|
18
|
-
$condition$$,$admin$$);else{const $ds_dang_phu_trach$$=await exports.dsDangPhuTrach($id_app$$,$email$$);$ds_dang_phu_trach$$.push($email$$);let $allUsers$$;$
|
|
19
|
-
$visible$$.push($
|
|
20
|
-
$ds_dang_phu_trach$$.push(void 0),$ds_dang_phu_trach$$.push("")),!0===underscore.has($model$$.schema.paths,"trang_thai")&&($_right_trang_thai$jscomp$1_error$$=$_right$$.view_trang_thai))){$_right$$=[void 0,null,""];for(let $t$$ in $_right_trang_thai$jscomp$1_error$$)$_right_trang_thai$jscomp$1_error$$[$t$$]&&$_right$$.push($t$$);$allUsers$$?$allUsers$$.trang_thai={$in:$_right$$}:$condition$$.trang_thai={$in:$_right$$}}underscore.has($model$$.schema.paths,
|
|
21
|
-
underscore.has($model$$.schema.paths,"phu_trach")&&$visible$$.push({phu_trach:{$in:$ds_dang_phu_trach$$}})
|
|
18
|
+
$condition$$,$admin$$);else{const $ds_dang_phu_trach$$=await exports.dsDangPhuTrach($id_app$$,$email$$);$ds_dang_phu_trach$$.push($email$$);let $allUsers$$,$selUsers$$;$admin$$={visible_to:null};let $visible$$=[];underscore.has($model$$.schema.paths,"visible_to")&&($condition$$.$and||($condition$$.$and=[]),$allUsers$$={visible_to:0},$selUsers$$={visible_to:2,visible_to_users:$email$$},$e$jscomp$3_key_right$$={visible_to:5,visible_to_users:($participant$$||{}).group_id},$visible$$.push($allUsers$$),
|
|
19
|
+
$visible$$.push($selUsers$$),$visible$$.push($e$jscomp$3_key_right$$),$visible$$.push($admin$$));$e$jscomp$3_key_right$$=$email$$;$participant$$&&$participant$$.group_id&&($e$jscomp$3_key_right$$=$participant$$.group_id.toLowerCase());right.findOne({id_app:$id_app$$,email:$e$jscomp$3_key_right$$,module:$module$$},function($_right_trang_thai$jscomp$1_error$$,$_right$$){if($_right$$&&(!1===$_right$$.viewOfOther?($visible$$.push({user_created:{$in:$ds_dang_phu_trach$$}}),$allUsers$$&&($allUsers$$.user_created=
|
|
20
|
+
{$in:$ds_dang_phu_trach$$})):($ds_dang_phu_trach$$.push(null),$ds_dang_phu_trach$$.push(void 0),$ds_dang_phu_trach$$.push("")),!0===underscore.has($model$$.schema.paths,"trang_thai")&&($_right_trang_thai$jscomp$1_error$$=$_right$$.view_trang_thai))){$_right$$=[void 0,null,""];for(let $t$$ in $_right_trang_thai$jscomp$1_error$$)$_right_trang_thai$jscomp$1_error$$[$t$$]&&$_right$$.push($t$$);$allUsers$$?$allUsers$$.trang_thai={$in:$_right$$}:$condition$$.trang_thai={$in:$_right$$}}$selUsers$$&&(underscore.has($model$$.schema.paths,
|
|
21
|
+
"of_user")&&$visible$$.push({of_user:$email$$}),underscore.has($model$$.schema.paths,"phu_trach")&&$visible$$.push({phu_trach:{$in:$ds_dang_phu_trach$$}}),underscore.has($model$$.schema.paths,"attends")&&$visible$$.push({attends:{$in:$ds_dang_phu_trach$$}}));0<$visible$$.length&&($condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({$or:$visible$$}));$next$$(null,$condition$$,!1)})}},$options$$)};
|
|
22
22
|
exports.getRightDataView=function($id_app$$,$model$$,$email$$,$next$$){exports.isAdmin($id_app$$,$email$$,function($condition$jscomp$1_e$$,$admin$$){if($condition$jscomp$1_e$$)return $next$$($condition$jscomp$1_e$$);$condition$jscomp$1_e$$={};if(!$admin$$&&!0===underscore.has($model$$.schema.paths,"dataview_to_users")){$condition$jscomp$1_e$$.$and||($condition$jscomp$1_e$$.$and=[]);let $dataview$$=[{dataview_to:null}];$dataview$$.push({dataview_to:0});$dataview$$.push({dataview_to:1,user_created:$email$$});
|
|
23
23
|
$dataview$$.push({dataview_to:2,dataview_to_users:$email$$});$condition$jscomp$1_e$$.$and.push({$or:$dataview$$})}$next$$(null,$condition$jscomp$1_e$$,$admin$$)})};
|
|
24
24
|
exports.getFieldNotRight=async($_fields_id_app$$,$_p_email$$,$ma_ct$$)=>{if(!$_fields_id_app$$)return[];$_p_email$$=await Participant.ofApp($_fields_id_app$$,$_p_email$$);if(0<$_p_email$$.length){$_p_email$$=$_p_email$$[0].group_id;let $field_not_right$$;try{$field_not_right$$=await right.getInfo($_fields_id_app$$,{email:$_p_email$$,module:$ma_ct$$.toLowerCase()},"field_not_right")}catch($e$$){return[]}$_fields_id_app$$=[];for(let $_key$$ in $field_not_right$$)$field_not_right$$[$_key$$]&&$_fields_id_app$$.push($_key$$);
|
package/server/libs/post-book.js
CHANGED
|
@@ -6,7 +6,7 @@ post.prototype.remove=function($callback$jscomp$0$$=()=>{}){let $master$$=this.m
|
|
|
6
6
|
post.prototype.run=async function($callback$$=()=>{}){if(!this.details)return console.error("details not exists"),$callback$$(null);if(!this.master||!this.master._id)return console.error("masters not exists",this.master),$callback$$(null);let $master$$=this.master;$master$$.toObject&&($master$$=$master$$.toObject());let $details$$=await this.runPrepare(this.prepare,this.details),$model_book$$=this.model_book;if("sokho"===$model_book$$.modelName.toLowerCase()||"sokhott"===$model_book$$.modelName.toLowerCase())await $details$$.asyncJoinModel2($master$$.id_app,
|
|
7
7
|
Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>$d$$.tg_tk),await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=
|
|
8
8
|
utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=($detail$$.sl_xuat||0)*$detail$$.he_so_qd,$detail$$.sl_nhap_qd=($detail$$.sl_nhap||0)*$detail$$.he_so_qd)});"sokhokhongton"===$model_book$$.modelName.toLowerCase()&&(await $details$$.asyncJoinModel2($master$$.id_app,Dmvt,{where:"ma_vt",fields:"tg_tk"}),$details$$=$details$$.filter($d$$=>0==$d$$.tg_tk),await $details$$.asyncJoinModel2($master$$.id_app,global.getModel("dmqddvt"),{where:{ma_vt:"ma_vt",ma_dvt:"ma_dvt"},
|
|
9
|
-
fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=($detail$$.sl_xuat||0)*$detail$$.he_so_qd,$detail$$.sl_nhap_qd=($detail$$.sl_nhap||
|
|
10
|
-
if("vatra"===$model_book$$.modelName.toLowerCase()||"vatvao"===$model_book$$.modelName.toLowerCase()){let $rs$$=await Promise.all($details$$.map($detail$$=>(async()=>{let $v$$=await $model_book$$.findOne({id_app:$master$$.id_app,so_hd:$detail$$.so_hd,so_seri:$detail$$.so_seri,ky_hieu_hoa_don:$detail$$.ky_hieu_hoa_don,id_ct:{$ne:$master$$._id.toString()}});return $v$$?$v$$.so_hd:""})()));$rs$$=$rs$$.filter($r$$=>$r$$);if(0<$rs$$.length)return $callback$$(`S\u1ed1 ho\u00e1 \u0111\u01a1n ${$rs$$.join(",")} \u0111\u00e3 t\u1ed3n t\u1ea1i`)}$details$$=
|
|
9
|
+
fields:["tu","mau",{he_so_qd:"ty_le_qd"}]}),$details$$.forEach($detail$$=>{$detail$$.he_so_qd=$detail$$.he_so_qd||1;$detail$$.mau&&$detail$$.tu?($detail$$.he_so_qd=$detail$$.tu/$detail$$.mau,$detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.tu/$detail$$.mau,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||0)*$detail$$.tu/$detail$$.mau,round)):($detail$$.sl_xuat_qd=utils.round(($detail$$.sl_xuat||0)*$detail$$.he_so_qd,round),$detail$$.sl_nhap_qd=utils.round(($detail$$.sl_nhap||
|
|
10
|
+
0)*$detail$$.he_so_qd,round))}));if("vatra"===$model_book$$.modelName.toLowerCase()||"vatvao"===$model_book$$.modelName.toLowerCase()){let $rs$$=await Promise.all($details$$.map($detail$$=>(async()=>{let $v$$=await $model_book$$.findOne({id_app:$master$$.id_app,so_hd:$detail$$.so_hd,so_seri:$detail$$.so_seri,ky_hieu_hoa_don:$detail$$.ky_hieu_hoa_don,id_ct:{$ne:$master$$._id.toString()}});return $v$$?$v$$.so_hd:""})()));$rs$$=$rs$$.filter($r$$=>$r$$);if(0<$rs$$.length)return $callback$$(`S\u1ed1 ho\u00e1 \u0111\u01a1n ${$rs$$.join(",")} \u0111\u00e3 t\u1ed3n t\u1ea1i`)}$details$$=
|
|
11
11
|
$details$$.map(($detail$$,$line$$)=>{$detail$$.id_ct=$master$$._id.toString();for(let $attr$$ in $model_book$$.schema.paths)if("id_ct"!=$attr$$&&"_id"!=$attr$$){let $v$$=$detail$$[$attr$$];void 0!=$v$$&&null!=$v$$&&""!=$v$$||void 0==$master$$[$attr$$]||($detail$$[$attr$$]=$master$$[$attr$$])}$detail$$.line=$line$$;delete $detail$$.toObject;delete $detail$$._id;delete $detail$$.__v;return $detail$$});this.remove($error$$=>{if($error$$)return console.error("error delete data post",$error$$),$callback$$($error$$);
|
|
12
12
|
$model_book$$.create($details$$,($e$jscomp$0$$,$rs$$)=>{$e$jscomp$0$$?(console.error("error save data post",$e$jscomp$0$$,$details$$),this.remove(()=>{$callback$$($e$jscomp$0$$)})):($callback$$(null,$rs$$),$rs$$&&"sokho"===$model_book$$.modelName.toLowerCase()&&setImmediate(()=>{tontucthoi.tinhTonTucThoi($rs$$,$e$$=>{$e$$&&console.error("L\u1ed7i t\u00ednh t\u1ed3n t\u1ee9c th\u1eddi v\u1eadt t\u01b0",$rs$$,$e$$)})}))})})};module.exports=post;
|
package/server/libs/thnxt.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use strict';const dkvt=require("./dkvt"),sokho=global.getModel("sokho"),dmvt=global.getModel("dmvt"),async=require("async"),underscore=require("underscore");
|
|
2
|
-
module.exports=function($condition$$,$fn$$,$log$$=()=>{}){$log$$("stocksummary: prepare condition");if($condition$$&&$condition$$.tu_ngay&&$condition$$.den_ngay&&$condition$$.id_app){var $id_app$$=$condition$$.id_app,$groupBy$$=$condition$$.groupBy||$condition$$.groupby;$groupBy$$||($groupBy$$=["ma_vt"]);if(underscore.isString($groupBy$$))if(0<=$groupBy$$.indexOf("["))try{$groupBy$$=JSON.parse($groupBy$$)}catch($e$$){console.error($e$$)}else $groupBy$$=$groupBy$$.split(",");
|
|
3
|
-
dkvt($condition$$,function($error$$,$result$$){if($error$$)return $callback$$($error$$);$callback$$(null,$result$$)})},ps:function($callback$$){let $ma_vt$$=$condition$$.ma_vt;underscore.isArray($ma_vt$$)&&
|
|
4
|
-
($query$$.
|
|
5
|
-
|
|
6
|
-
$groups$$)=>{if($e$jscomp$
|
|
7
|
-
Math.abs($r$$.tien_nhap)+Math.abs($r$$.sl_xuat)+Math.abs($r$$.tien_xuat)+Math.abs($r$$.ton_cuoi)+Math.abs($r$$.du_cuoi)});$log$$("stocksummary: finish");$fn$$(null,$e$jscomp$
|
|
1
|
+
'use strict';const dkvt=require("./dkvt"),sokho=global.getModel("sokho"),dmvt=global.getModel("dmvt"),async=require("async"),underscore=require("underscore"),utils=require("./utils");
|
|
2
|
+
module.exports=function($condition$$,$fn$$,$log$$=()=>{}){$log$$("stocksummary: prepare condition");if($condition$$&&$condition$$.tu_ngay&&$condition$$.den_ngay&&$condition$$.id_app){var $id_app$$=$condition$$.id_app,$groupBy$$=$condition$$.groupBy||$condition$$.groupby;$groupBy$$||($groupBy$$=["ma_vt"]);if(underscore.isString($groupBy$$))if(0<=$groupBy$$.indexOf("["))try{$groupBy$$=JSON.parse($groupBy$$)}catch($e$$){console.error($e$$)}else $groupBy$$=$groupBy$$.split(",");if(underscore.isString($condition$$.ma_vt)&&
|
|
3
|
+
0<=$condition$$.ma_vt.indexOf("[")&&0<$condition$$.ma_vt.indexOf("]"))try{$condition$$.ma_vt=JSON.parse($condition$$.ma_vt),0==$condition$$.ma_vt.length&&($condition$$.ma_vt=void 0)}catch($e$$){console.error($e$$)}async.parallel({dn:function($callback$$){$log$$("stocksummary: calculate balance begin");dkvt($condition$$,function($error$$,$result$$){if($error$$)return $callback$$($error$$);$callback$$(null,$result$$)})},ps:function($callback$$){let $ma_vt$$=$condition$$.ma_vt;underscore.isArray($ma_vt$$)&&
|
|
4
|
+
($ma_vt$$={$in:$ma_vt$$});const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$condition$$.tu_ngay,$lte:$condition$$.den_ngay}};$condition$$.ma_kho&&($query$$.ma_kho=$condition$$.ma_kho);$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.ma_tt1&&($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);
|
|
5
|
+
!$condition$$.exclude_ct_dc||$condition$$.ma_kho||$groupBy$$.find($g$$=>"ma_kho"===$g$$)||($query$$.ma_ct={$nin:["PNC","PXC"]});$log$$("stocksummary: calculate araising");sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{$error$$?$callback$$($error$$):($pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=utils.round($ps$$.sl_nhap_qd,4);$ps$$.sl_xuat=utils.round($ps$$.sl_xuat_qd,4);return $ps$$}),$pss$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]},()=>{$callback$$(null,
|
|
6
|
+
$pss$$)}))})}},function($data_error$$,$results$$){$data_error$$?$fn$$($data_error$$):($data_error$$=$results$$.dn.concat($results$$.ps),$log$$("stocksummary: group by"),$data_error$$.groupBy($groupBy$$,[{name:"ton_dau",value:"ton00"},{name:"du_dau",value:"du00"},"sl_nhap","sl_xuat","tien_nhap","tien_xuat"],($e$jscomp$2_result$$,$groups$$)=>{if($e$jscomp$2_result$$)return $fn$$($e$jscomp$2_result$$);for(let $r$$ of $groups$$)$r$$.ton_cuoi=utils.round(($r$$.ton_dau||0)+($r$$.sl_nhap||0)-($r$$.sl_xuat||
|
|
7
|
+
0),4),$r$$.du_cuoi=Math.round($r$$.du_dau,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0);$e$jscomp$2_result$$=underscore.filter($groups$$,function($r$$){return 0!==Math.abs($r$$.ton_dau)+Math.abs($r$$.du_dau)+Math.abs($r$$.sl_nhap)+Math.abs($r$$.tien_nhap)+Math.abs($r$$.sl_xuat)+Math.abs($r$$.tien_xuat)+Math.abs($r$$.ton_cuoi)+Math.abs($r$$.du_cuoi)});$log$$("stocksummary: finish");$fn$$(null,$e$jscomp$2_result$$)}))})}else $fn$$("L\u1ed7i: B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_ngay,den_ngay,id_app")};
|
package/server/libs/thnxttt.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use strict';const dkvt=require("./dkvttt"),sokho=global.getModel("sokhott"),dmvt=global.getModel("dmvt"),async=require("async"),underscore=require("underscore");
|
|
2
|
-
module.exports=function($condition$$,$fn$$,$log$$=()=>{}){$log$$("stocksummary: prepare condition");if($condition$$&&$condition$$.tu_ngay&&$condition$$.den_ngay&&$condition$$.id_app){var $id_app$$=$condition$$.id_app,$groupBy$$=$condition$$.groupBy||$condition$$.groupby;$groupBy$$||($groupBy$$=["ma_vt"]);if(underscore.isString($groupBy$$))if(0<=$groupBy$$.indexOf("["))try{$groupBy$$=JSON.parse($groupBy$$)}catch($e$$){console.error($e$$)}else $groupBy$$=$groupBy$$.split(",");
|
|
3
|
-
dkvt($condition$$,function($error$$,$result$$){if($error$$)return $callback$$($error$$);$result$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]},()=>{$callback$$(null
|
|
4
|
-
($
|
|
5
|
-
$pss$$)=>{$error$$?$callback$$($error$$):($pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=$ps$$.sl_nhap_qd;$ps$$.sl_xuat=$ps$$.sl_xuat_qd;return $ps$$}),$pss$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",
|
|
6
|
-
value:"du00"},"sl_nhap","sl_xuat","tien_nhap","tien_xuat"],($e$jscomp$
|
|
7
|
-
Math.abs($r$$.tien_xuat)+Math.abs($r$$.ton_cuoi)+Math.abs($r$$.du_cuoi)});$log$$("stocksummary: finish");$fn$$(null,$e$jscomp$
|
|
1
|
+
'use strict';const dkvt=require("./dkvttt"),sokho=global.getModel("sokhott"),dmvt=global.getModel("dmvt"),async=require("async"),underscore=require("underscore"),utils=require("./utils");
|
|
2
|
+
module.exports=function($condition$$,$fn$$,$log$$=()=>{}){$log$$("stocksummary: prepare condition");if($condition$$&&$condition$$.tu_ngay&&$condition$$.den_ngay&&$condition$$.id_app){var $id_app$$=$condition$$.id_app,$groupBy$$=$condition$$.groupBy||$condition$$.groupby;$groupBy$$||($groupBy$$=["ma_vt"]);if(underscore.isString($groupBy$$))if(0<=$groupBy$$.indexOf("["))try{$groupBy$$=JSON.parse($groupBy$$)}catch($e$$){console.error($e$$)}else $groupBy$$=$groupBy$$.split(",");if(underscore.isString($condition$$.ma_vt)&&
|
|
3
|
+
0<=$condition$$.ma_vt.indexOf("[")&&0<$condition$$.ma_vt.indexOf("]"))try{$condition$$.ma_vt=JSON.parse($condition$$.ma_vt),0==$condition$$.ma_vt.length&&($condition$$.ma_vt=void 0)}catch($e$$){console.error($e$$)}async.parallel({dn:function($callback$$){$log$$("stocksummary: calculate balance begin");dkvt($condition$$,function($error$$,$result$$){if($error$$)return $callback$$($error$$);$result$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]},()=>{$callback$$(null,
|
|
4
|
+
$result$$)})})},ps:function($callback$$){let $ma_vt$$=$condition$$.ma_vt;underscore.isArray($ma_vt$$)&&($ma_vt$$={$in:$ma_vt$$});let $query$$={id_app:$id_app$$,ngay_ct:{$gte:$condition$$.tu_ngay,$lte:$condition$$.den_ngay}};$condition$$.ma_kho&&($query$$.ma_kho=$condition$$.ma_kho);$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);$ma_vt$$&&($query$$.ma_vt=$ma_vt$$);$condition$$.ma_lo&&($query$$.ma_lo=$condition$$.ma_lo);$condition$$.ma_tt1&&($query$$.ma_tt1=$condition$$.ma_tt1);$condition$$.ma_tt2&&
|
|
5
|
+
($query$$.ma_tt2=$condition$$.ma_tt2);$condition$$.ma_tt3&&($query$$.ma_tt3=$condition$$.ma_tt3);!$condition$$.exclude_ct_dc||$condition$$.ma_kho||$groupBy$$.find($g$$=>"ma_kho"===$g$$)||($query$$.ma_ct={$nin:["PNC","PXC"]});$log$$("stocksummary: calculate araising");sokho.find($query$$).lean().exec(($error$$,$pss$$)=>{$error$$?$callback$$($error$$):($pss$$=$pss$$.map($ps$$=>{$ps$$.sl_nhap=$ps$$.sl_nhap_qd;$ps$$.sl_xuat=$ps$$.sl_xuat_qd;return $ps$$}),$pss$$.joinModel2($id_app$$,dmvt,{where:"ma_vt",
|
|
6
|
+
fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]},()=>{$callback$$(null,$pss$$)}))})}},function($data_error$$,$results$$){$data_error$$?$fn$$($data_error$$):($data_error$$=$results$$.dn.concat($results$$.ps),$log$$("stocksummary: group by"),$data_error$$.groupBy($groupBy$$,[{name:"ton_dau",value:"ton00"},{name:"du_dau",value:"du00"},"sl_nhap","sl_xuat","tien_nhap","tien_xuat"],($e$jscomp$2_result$$,$groups$$)=>{if($e$jscomp$2_result$$)return $fn$$($e$jscomp$2_result$$);for(let $r$$ of $groups$$)$r$$.ton_cuoi=
|
|
7
|
+
utils.round($r$$.ton_dau+$r$$.sl_nhap-$r$$.sl_xuat,4),$r$$.du_cuoi=Math.round($r$$.du_dau,0)+Math.round($r$$.tien_nhap,0)-Math.round($r$$.tien_xuat,0);$e$jscomp$2_result$$=underscore.filter($groups$$,function($r$$){return 0!==Math.abs($r$$.ton_dau)+Math.abs($r$$.du_dau)+Math.abs($r$$.sl_nhap)+Math.abs($r$$.tien_nhap)+Math.abs($r$$.sl_xuat)+Math.abs($r$$.tien_xuat)+Math.abs($r$$.ton_cuoi)+Math.abs($r$$.du_cuoi)});$log$$("stocksummary: finish");$fn$$(null,$e$jscomp$2_result$$)}))})}else $fn$$("L\u1ed7i: B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_ngay,den_ngay,id_app")};
|
package/server/libs/tinhgiatb.js
CHANGED
|
@@ -10,22 +10,25 @@ $sk$$.id_ct,"ma_ct",$sk$$.ma_ct,$sk$$.so_ct,$sk$$.ngay_ct,$rs$$)}));$callback$$(
|
|
|
10
10
|
sokho.find($query_sokho_n$$,function($error$jscomp$0$$,$sks$$){if($error$jscomp$0$$)return $callback$jscomp$0$$($error$jscomp$0$$);if(!$sks$$||0===$sks$$.length)return $callback$jscomp$0$$(null,$vouchers_n$$);async.map($sks$$,function($sk$$,$callback$$){let $voucher$$=$vouchers_n$$[$sk$$.id_ct],$ct$$=mongoose.models[$sk$$.ma_ct.toLowerCase()];!$voucher$$&&$ct$$?$ct$$.findOne({_id:$sk$$.id_ct},function($error$$,$v$$){if($error$$)return $callback$$($error$$);$v$$?($voucher$$=$v$$,$vouchers_n$$[$sk$$.id_ct]=
|
|
11
11
|
$voucher$$):(sokho.remove({id_ct:$sk$$.id_ct.toString()},($e$$,$rs$$)=>{console.log("Khong tim thay phieu nhap. chuong trinh da xoa phieu nay khoi sokho",$sk$$.id_ct,"ma_ct",$sk$$.ma_ct,$sk$$.so_ct,$sk$$.ngay_ct,$rs$$)}),socai.remove({id_ct:$sk$$.id_ct.toString()},($e$$,$rs$$)=>{console.log("Khong tim thay phieu nhap. chuong trinh da xoa phieu nay khoi socai",$sk$$.id_ct,"ma_ct",$sk$$.ma_ct,$sk$$.so_ct,$sk$$.ngay_ct,$rs$$)}));$callback$$()}):$callback$$()},function($error$$){if($error$$)return console.log("co loi lay phieu nhap",
|
|
12
12
|
$error$$),$callback$jscomp$0$$($error$$);$callback$jscomp$0$$(null,$vouchers_n$$)})})})}},function($error$jscomp$0$$){if($error$jscomp$0$$)return $fn$$($error$jscomp$0$$);async.waterfall([function($callback$jscomp$0$$){async.map(underscore.values($vouchers_x$$),($voucher_x$$,$callback$$)=>{setImmediate(()=>{(async()=>{var $details_details_doi_details_kmc$$=$voucher_x$$.details.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||
|
|
13
|
-
$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($details_details_doi_details_kmc$$.map($d$$=>(async()=>{var $gia$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$$=$gia$$?$gia$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt});$qd$$&&($he_so_qd$$=$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.round($d$$.sl_xuat
|
|
14
|
-
{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$$,he_so_qd:$he_so_qd$$})})()));$voucher_x$$.details_doi&&($details_details_doi_details_kmc$$=$voucher_x$$.details_doi.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x))),await Promise.all($details_details_doi_details_kmc$$.map($d$$=>
|
|
15
|
-
$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$3_gia_chuan$$=$gia$jscomp$3_gia_chuan$$?$gia$jscomp$3_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt});$qd$$&&($he_so_qd$$=$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$3_gia_chuan$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.round($d$$.sl_xuat*$d$$.gia_von,
|
|
16
|
-
ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$3_gia_chuan$$,he_so_qd:$he_so_qd$$})})())));await $voucher_x$$.details.filter($d$$=>$d$$.promotion&&$d$$.promotion.details_km).map($d$jscomp$0$$=>(async()=>{const $details_km$$=$d$jscomp$0$$.promotion.details_km.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho
|
|
17
|
-
underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$4_gia_chuan$$=$gia$jscomp$4_gia_chuan$$?$gia$jscomp$4_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt});$qd$$&&($he_so_qd$$=$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$4_gia_chuan$$*$he_so_qd
|
|
18
|
-
so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$4_gia_chuan$$,he_so_qd:$he_so_qd$$})})()))})())
|
|
19
|
-
$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$5_gia_chuan$$=$gia$jscomp$5_gia_chuan$$?$gia$jscomp$5_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt});$qd$$&&($he_so_qd$$=$qd$$.ty_le_qd);$d$$.
|
|
20
|
-
{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$5_gia_chuan$$,he_so_qd:$he_so_qd$$})})())))
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
$
|
|
24
|
-
|
|
25
|
-
await dmqddvt.findOne({id_app:$vouchers_n$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt});$qd$$&&($he_so_qd$$=$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$7_gia_chuan$$*$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
$
|
|
30
|
-
$
|
|
31
|
-
$
|
|
13
|
+
$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($details_details_doi_details_kmc$$.map($d$$=>(async()=>{var $gia$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$$=$gia$$?$gia$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.round($d$$.sl_xuat*
|
|
14
|
+
$d$$.gia_von,0);console.log("update gia trung binh xuat hang",{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$$,he_so_qd:$he_so_qd$$})})()));$voucher_x$$.details_doi&&($details_details_doi_details_kmc$$=$voucher_x$$.details_doi.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x))),await Promise.all($details_details_doi_details_kmc$$.map($d$$=>
|
|
15
|
+
(async()=>{var $gia$jscomp$3_gia_chuan$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$3_gia_chuan$$=$gia$jscomp$3_gia_chuan$$?$gia$jscomp$3_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$3_gia_chuan$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.round($d$$.sl_xuat*$d$$.gia_von,
|
|
16
|
+
0);console.log("update gia trung binh doi hang",{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$3_gia_chuan$$,he_so_qd:$he_so_qd$$})})())));await $voucher_x$$.details.filter($d$$=>$d$$.promotion&&$d$$.promotion.details_km).map($d$jscomp$0$$=>(async()=>{const $details_km$$=$d$jscomp$0$$.promotion.details_km.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||
|
|
17
|
+
$voucher_x$$.ma_kho_x)));await Promise.all($details_km$$.map($d$$=>(async()=>{var $gia$jscomp$4_gia_chuan$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$4_gia_chuan$$=$gia$jscomp$4_gia_chuan$$?$gia$jscomp$4_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=$d$$.gia_von_nt=$gia$jscomp$4_gia_chuan$$*$he_so_qd$$;
|
|
18
|
+
$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.round(($d$$.sl_xuat||$d$$.sl_km||0)*$d$$.gia_von,0);console.log("update gia trung binh khuyen mai",{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$4_gia_chuan$$,he_so_qd:$he_so_qd$$})})()))})());await $voucher_x$$.details.filter($d$$=>$d$$.combo&&0<$d$$.combo.length).map($d$jscomp$0$$=>(async()=>{const $combo$$=$d$jscomp$0$$.combo.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&
|
|
19
|
+
(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x)));await Promise.all($combo$$.map($d$$=>(async()=>{var $gia$jscomp$5_gia_chuan$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$5_gia_chuan$$=$gia$jscomp$5_gia_chuan$$?$gia$jscomp$5_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von=
|
|
20
|
+
$d$$.gia_von_nt=$gia$jscomp$5_gia_chuan$$*$he_so_qd$$;$d$$.tien_xuat=$d$$.tien_xuat_nt=Math.round(($d$$.sl_xuat||0)*$d$$.gia_von,0);console.log("update gia trung binh khuyen mai",{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$5_gia_chuan$$,he_so_qd:$he_so_qd$$})})()))})());$voucher_x$$.promotion&&($details_details_doi_details_kmc$$=$voucher_x$$.promotion.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&!$d$$.px_gia_dd&&
|
|
21
|
+
(!$ma_kho$$||$ma_kho$$===($d$$.ma_kho||$voucher_x$$.ma_kho||$voucher_x$$.ma_kho_x))),await Promise.all($details_details_doi_details_kmc$$.map($d$$=>(async()=>{var $gia$jscomp$6_gia_chuan$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$6_gia_chuan$$=$gia$jscomp$6_gia_chuan$$?$gia$jscomp$6_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$voucher_x$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:
|
|
22
|
+
$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$6_gia_chuan$$*$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt;$d$$.tien_xuat_nt=Math.round(($d$$.sl_xuat||$d$$.sl_km||0)*$d$$.gia_von,0);$d$$.tien_xuat=$d$$.tien_xuat_nt;console.log("update gia trung binh khuyen mai chung",{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$6_gia_chuan$$,he_so_qd:$he_so_qd$$})})())));await $voucher_x$$.save();let $voucher_x_data$$=$voucher_x$$.toObject(),$ctrl$$=global.controllers[$voucher_x_data$$.ma_ct.toUpperCase()];
|
|
23
|
+
$ctrl$$&&$ctrl$$.post&&await (async()=>new Promise(($resolve$$,$reject$$)=>{Controller.postData($voucher_x_data$$,$ctrl$$,($e$$,$rs$$)=>{console.log("posted book",{ma_ct:$voucher_x$$.ma_ct,so_ct:$voucher_x$$.so_ct},$e$$);if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}))()})().then($rs$$=>{$callback$$(null,$rs$$)}).catch($e$$=>{$callback$$($e$$)})})},$error$$=>{$callback$jscomp$0$$($error$$,$vouchers_x$$)})},function($_vouchers_x$$,$callback$jscomp$0$$){async.map(underscore.values($vouchers_n$$),
|
|
24
|
+
($voucher_n$$,$callback$$)=>{setImmediate(()=>{(async()=>{var $details_doi$$=$voucher_n$$.details.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&($d$$.pn_gia_tb||"PNC"===$voucher_n$$.ma_ct&&!$d$$.px_gia_dd||"PKK"===$voucher_n$$.ma_ct&&!$d$$.px_gia_dd)&&(!$ma_kho$$||$ma_kho$$===$d$$.ma_kho||$ma_kho$$===$voucher_n$$.ma_kho||$ma_kho$$===$voucher_n$$.ma_kho_n));await Promise.all($details_doi$$.map($d$$=>(async()=>{var $gia$jscomp$7_gia_chuan$$=underscore.find($bang_gia$$,$vt$$=>
|
|
25
|
+
$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$7_gia_chuan$$=$gia$jscomp$7_gia_chuan$$?$gia$jscomp$7_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$vouchers_n$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$7_gia_chuan$$*$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt;"PNC"===$voucher_n$$.ma_ct||"PKK"===$voucher_n$$.ma_ct?($d$$.tien_xuat_nt=Math.round($d$$.sl_xuat*$d$$.gia_von,0),$d$$.tien_xuat=
|
|
26
|
+
$d$$.tien_xuat_nt):($d$$.tien_nhap_nt=Math.round($d$$.sl_nhap*$d$$.gia_von,0),$d$$.tien_nhap=$d$$.tien_nhap_nt);console.log("update gia trung binh cho phieu nhap gia tb",{ma_ct:$vouchers_n$$.ma_ct,so_ct:$vouchers_n$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$7_gia_chuan$$,he_so_qd:$he_so_qd$$})})()));$voucher_n$$.details_doi&&($details_doi$$=$voucher_n$$.details_doi.filter($d$$=>(!$condition$$.ma_vt||$condition$$.ma_vt===$d$$.ma_vt)&&$d$$.pn_gia_tb&&(!$ma_kho$$||$ma_kho$$===$d$$.ma_kho)),
|
|
27
|
+
await Promise.all($details_doi$$.map($d$$=>(async()=>{var $gia$jscomp$8_gia_chuan$$=underscore.find($bang_gia$$,$vt$$=>$d$$.ma_vt===$vt$$.ma_vt);$gia$jscomp$8_gia_chuan$$=$gia$jscomp$8_gia_chuan$$?$gia$jscomp$8_gia_chuan$$.gia:0;let $he_so_qd$$=1,$qd$$=await dmqddvt.findOne({id_app:$vouchers_n$$.id_app,ma_vt:$d$$.ma_vt,ma_dvt:$d$$.ma_dvt}).lean();$qd$$&&($he_so_qd$$=$qd$$.mau?$qd$$.tu/$qd$$.mau:$qd$$.ty_le_qd);$d$$.gia_von_nt=$gia$jscomp$8_gia_chuan$$*$he_so_qd$$;$d$$.gia_von=$d$$.gia_von_nt;$d$$.tien_xuat_nt=
|
|
28
|
+
Math.round($d$$.sl_xuat*$d$$.gia_von,0);$d$$.tien_xuat=$d$$.tien_xuat_nt;console.log("update gia trung binh cho phieu nhap gia tb doi hang",{ma_ct:$vouchers_n$$.ma_ct,so_ct:$vouchers_n$$.so_ct,ma_vt:$d$$.ma_vt,gia_von:$d$$.gia_von,gia_tb:$gia$jscomp$8_gia_chuan$$,he_so_qd:$he_so_qd$$})})())));await $voucher_n$$.save();let $voucher_n_data$$=$voucher_n$$.toObject(),$ctrl$$=global.controllers[$voucher_n_data$$.ma_ct.toUpperCase()];$ctrl$$&&$ctrl$$.post&&await (async()=>new Promise(($resolve$$,$reject$$)=>
|
|
29
|
+
{Controller.postData($voucher_n_data$$,$ctrl$$,function($e$$,$rs$$){console.log("posted book",{ma_ct:$vouchers_n$$.ma_ct,so_ct:$vouchers_n$$.so_ct},$e$$);if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})}))()})().then($rs$$=>{$callback$$(null,$rs$$)}).catch($e$$=>{$callback$$($e$$)})})},function($error$$){$callback$jscomp$0$$($error$$)})}],function($e$jscomp$1$$){if($e$jscomp$1$$)return $fn$$($e$jscomp$1$$);$e$jscomp$1$$={id_app:$condition$$.id_app,ngay:$den_ngay$$,chenh_lech:1};$condition$$.ma_vt&&
|
|
30
|
+
($e$jscomp$1$$.ma_vt=$condition$$.ma_vt);$condition$$.ma_kho&&($e$jscomp$1$$.ma_kho=$condition$$.ma_kho);ckvt($e$jscomp$1$$,($e$jscomp$0$$,$rs$jscomp$0$$)=>{if($e$jscomp$0$$)return $fn$$($e$jscomp$0$$);$rs$jscomp$0$$=underscore.filter($rs$jscomp$0$$,$r$$=>0!==$r$$.du00&&(0==$r$$.ton00||.001>Math.abs($r$$.ton00)));$vouchers_x$$=underscore.sortBy(underscore.values($vouchers_x$$),$v$$=>-(new Date($v$$.ngay_ct)).getTime());$vouchers_n$$=underscore.sortBy(underscore.values($vouchers_n$$),$v$$=>-(new Date($v$$.ngay_ct)).getTime());
|
|
31
|
+
let $chung_tu_cap_nhat_chenh_lech$$={};async.map($rs$jscomp$0$$,($vt$$,$callback$$)=>{setImmediate(()=>{let $d_voucher$$=null;($d_voucher$$=underscore.find($vouchers_x$$,$x$$=>underscore.find($x$$.details,$vc$$=>{if($vc$$.ma_vt!=$vt$$.ma_vt||$vc$$.px_gia_dd||$ma_kho$$&&$ma_kho$$!==$vc$$.ma_kho&&$ma_kho$$!==$x$$.ma_kho)return!1;$vc$$.tien_xuat_nt+=$vt$$.du00;$vc$$.tien_xuat=Math.round($vc$$.tien_xuat_nt,0);return!0})))||($d_voucher$$=underscore.find($vouchers_n$$,$n$$=>underscore.find($n$$.details,
|
|
32
|
+
$vc$$=>{if($vc$$.ma_vt!=$vt$$.ma_vt||$vc$$.pn_gia_tb||$ma_kho$$&&$ma_kho$$!==$vc$$.ma_kho&&$ma_kho$$!==$n$$.ma_kho)return!1;$vc$$.tien_nhap_nt-=$vt$$.du00;$vc$$.tien_nhap=Math.round($vc$$.tien_nhap_nt,0);return!0})));$d_voucher$$&&($chung_tu_cap_nhat_chenh_lech$$[$d_voucher$$._id.toString()]=$d_voucher$$);$callback$$(null,$d_voucher$$)})},$_vouchers_chenh_lech_e$$=>{if($_vouchers_chenh_lech_e$$)return $fn$$($_vouchers_chenh_lech_e$$);$_vouchers_chenh_lech_e$$=underscore.values($chung_tu_cap_nhat_chenh_lech$$);
|
|
33
|
+
async.map($_vouchers_chenh_lech_e$$,($voucher$$,$callback$$)=>{setImmediate(()=>{$voucher$$.save($error$$=>{if($error$$)return $callback$$($error$$);$error$$=$voucher$$.toObject();let $ctrl$$=global.controllers[$error$$.ma_ct.toUpperCase()];$ctrl$$&&$ctrl$$.post?(console.log("repost voucher",$error$$.ma_ct,$error$$.so_ct,"..."),Controller.postData($error$$,$ctrl$$,($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})):$callback$$(null)})})},$e$$=>{if($e$$)return $fn$$($e$$);$bang_gia$$.joinModel2($id_app$$,dmvt,
|
|
34
|
+
[{where:"ma_vt",fields:"ten_vt"}],()=>{$fn$$(null,$bang_gia$$)})})})})})})})})})}else $fn$$("L\u1ed7i: T\u00ednh n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: tu_thang,den_thang,nam,id_app")};
|
package/server/models/app.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';const User=require("./user"),Participant=require("./participant"),underscore=require("underscore"),appScheam=new global.Schema({name:{type:String,required:!0,maxlength:1024},name_en:{type:String,maxlength:1024},short_name:{type:String,maxlength:1024},address:{type:String,maxlength:1024},address_en:{type:String,maxlength:1024},city:{type:String,maxlength:1024},province:{type:String,maxlength:1024},country:{type:String,maxlength:1024},phone:{type:String,maxlength:1024},fax:{type:String,
|
|
2
2
|
maxlength:1024},email:{type:String,maxlength:1024},website:{type:String,maxlength:1024},sale_online:{type:Boolean,default:!1},facebook:{type:String,maxlength:2024},zalo:{type:String,maxlength:2024},messager:{type:String,maxlength:2024},bao_hanh:{type:String},van_chuyen:{type:String},dieu_khoan_su_dung:{type:String},dieu_khoan_su_dung_en:{type:String},dieu_khoan_kygui:{type:String},dieu_khoan_kygui_en:{type:String},dieu_khoan_congtacvien:{type:String},dieu_khoan_congtacvien_en:{type:String},chinh_sach_dau_tu:{type:String},
|
|
3
3
|
chinh_sach_dau_tu_en:{type:String},gioi_thieu:{type:String},nganh_nghe:{type:String},keywords:{type:String},site_name:{type:String},ngay_dn:{type:Date,required:!0},ngay_ks:{type:Date,required:!0},nam_bd:{type:Number,required:!0},ngay_ky1:{type:Date,required:!0},ma_so_thue:{type:String,maxlength:1024},nguoi_nop_thue:{type:String,maxlength:1024},giam_doc:{type:String,maxlength:1024},ke_toan_truong:{type:String,maxlength:1024},viettel_version:{type:String,maxlength:1024},viettel_user:{type:String,maxlength:1024},
|
|
4
|
-
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,sip_uri:String,sip_password:String,sip_websocket:String,voiip_access_token:String,voiip_webhook:String,wallet_address:{type:String,maxlength:2024},wallet_token:{type:String,maxlength:2024},tang_duoc_gioi_thieu:Number,tang_gioi_thieu:Number,ty_le_hoa_hong:Number,tang_gioi_thieu_denom:String,
|
|
5
|
-
ten_ngan_hang:String,chi_nhanh_ngan_hang:String,so_ngay_lam_mot_thang:{type:Number,default:24},logo:{type:String,maxlength:1024},logo_watermark:{type:String,maxlength:1024},gio_mo_cua:{type:Number,default:8},gio_dong_cua:{type:Number,default:22},partner:String,server:String,owner:String,default_password:String,email_host:String,email_port:Number,email_secure:{type:Boolean,default:!0},email_authMethod:{type:String,default:"LOGIN"},email_user:String,email_pass:String,email_name:String,
|
|
6
|
-
domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,options:{},allow_modules:[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,default:""},user_updated:{type:String,default:""}});appScheam.index({name:1,province:1});appScheam.index({trang_thai:1});appScheam.index({sale_online:1});
|
|
7
|
-
appScheam.index({name:"text",province:"text",name_en:"text",address:"text",phone:"text",email:"text",ma_so_thue:"text"},{name:"app_index"});const App=global.mongoose.models.app||global.mongoose.model("app",appScheam);
|
|
4
|
+
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,sip_uri:String,sip_password:String,sip_websocket:String,voiip_access_token:String,voiip_webhook:String,wallet_address:{type:String,maxlength:2024},wallet_token:{type:String,maxlength:2024},exchange_fee:Number,tang_duoc_gioi_thieu:Number,tang_gioi_thieu:Number,ty_le_hoa_hong:Number,tang_gioi_thieu_denom:String,
|
|
5
|
+
tai_khoan_ngan_hang:String,ten_ngan_hang:String,chi_nhanh_ngan_hang:String,so_ngay_lam_mot_thang:{type:Number,default:24},logo:{type:String,maxlength:1024},logo_watermark:{type:String,maxlength:1024},gio_mo_cua:{type:Number,default:8},gio_dong_cua:{type:Number,default:22},partner:String,server:String,owner:String,default_password:String,email_host:String,email_port:Number,email_secure:{type:Boolean,default:!0},email_authMethod:{type:String,default:"LOGIN"},email_user:String,email_pass:String,email_name:String,
|
|
6
|
+
exfields:global.Schema.Types.Mixed,domain:String,ssl_key:String,ssl_cert:String,ssl_ca:String,options:{},allow_modules:[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,default:""},user_updated:{type:String,default:""}});appScheam.index({name:1,province:1});appScheam.index({trang_thai:1});appScheam.index({sale_online:1});
|
|
7
|
+
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"});const App=global.mongoose.models.app||global.mongoose.model("app",appScheam);
|
|
8
8
|
App.participants=async $app$$=>{underscore.isString($app$$)&&($app$$=await App.getInfo($app$$));let $participants$$=await Participant.ofApp($app$$._id);$app$$.participants&&($app$$.participants.forEach($p$$=>{$p$$.id_app=$app$$.id_app}),$participants$$=$participants$$.concat($app$$.participants));if($app$$.user_created&&!$participants$$.find($p$$=>$p$$.email===$app$$.user_created)){let $_p$$={email:$app$$.user_created,name:$app$$.user_created.split("@")[0],admin:!0,active:!0,cancel:!1,id_app:$app$$._id};
|
|
9
9
|
$participants$$.push($_p$$);Participant.createParticipant($_p$$,$e$$=>{$e$$&&console.log("create participant for user owner",$e$$.message)})}return $participants$$};App.getInfo=async function($id_app$$,$field$$){return new Promise(($resolve$$,$reject$$)=>{App.findOne({_id:$id_app$$}).lean().exec(($e$$,$rs$$)=>{if($e$$||!$rs$$)return $reject$$(Error($e$$?$e$$.message:"App is not exists"));$resolve$$($field$$?$rs$$[$field$$]:$rs$$)})})};
|
|
10
10
|
App.emitEvent=function($id_app$$,$event$$,$data$$,$c_token$$=null,$users$$=null,$_createNotify$$=!1,$_push$$=!0){App.findOne({_id:$id_app$$}).lean().exec(async($e$jscomp$0$$,$app$$)=>{$app$$&&($data$$.company=$app$$.name,$users$$&&0!==$users$$.length?$users$$=$users$$.map($u$$=>({email:$u$$,name:$u$$})):($users$$=await App.participants($app$$),$users$$.find($u$$=>$app$$.user_created===$u$$.email)||$users$$.push({email:$app$$.user_created,name:$app$$.user_created})),$users$$.forEach(function($p$$){$event$$&&
|
package/server/models/asskey.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';const asskeySchema=new Schema({id_app:String,name:String,username:{type:String,required:!0,maxlength:1024},address:{type:String,required:!0,maxlength:2024},mnemonic:String,note:String,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:""}});asskeySchema.index({id_app:1});
|
|
2
|
-
asskeySchema.index({name:1});asskeySchema.index({status:1});asskeySchema.index({user_created:1});asskeySchema.index({username:"text",address:"text",note:"text",name:"text"},{name:"asskey_index"});const model=mongoose.models.asskey||mongoose.model("asskey",asskeySchema);model.on("index",async function($err$$){$err$$?console.error("asskey index error",$err$$):console.info("asskey indexing complete")});module.exports=model;
|
|
1
|
+
'use strict';const asskeySchema=new Schema({id_app:String,name:String,username:{type:String,required:!0,maxlength:1024},address:{type:String,required:!0,maxlength:2024},mnemonic:String,private_key:String,note:String,asset:{type:String,uppercase:!0},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:""}});asskeySchema.index({id_app:1});
|
|
2
|
+
asskeySchema.index({username:1,address:1});asskeySchema.index({note:1});asskeySchema.index({name:1});asskeySchema.index({status:1});asskeySchema.index({user_created:1});asskeySchema.index({username:"text",address:"text",note:"text",name:"text"},{name:"asskey_index"});const model=mongoose.models.asskey||mongoose.model("asskey",asskeySchema);model.on("index",async function($err$$){$err$$?console.error("asskey index error",$err$$):console.info("asskey indexing complete")});module.exports=model;
|
package/server/models/asssell.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';const asssellSchema=new Schema({id_app:String,creator:{type:String,required:!0},id:{type:String},id_product:{type:String},ten_san_pham:{type:String},product_token:{type:String,lowercase:!0},id_period:{type:String},ten_ky_han:{type:String},ten_lh_dt:String,ky_han:Number,token:{type:String,required:!0,lowercase:!0},gia_goc:{type:Number},lai_suat_cam_ket:Number,denom:{type:String,required:!0,lowercase:!0},so_luong:{type:Number},gia_ban:{type:Number},tong_gia_tri:{type:Number},ngay_het_han:{type:Date,
|
|
2
|
-
required:!0},buyer:String,id_need_to_buy:String,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:""}});asssellSchema.index({id_app:1});asssellSchema.index({creator:1});asssellSchema.index({id:1});asssellSchema.index({denom:1});asssellSchema.index({token:1});asssellSchema.index({id_product:1});asssellSchema.index({ten_san_pham:1});
|
|
3
|
-
asssellSchema.index({id_period:1});asssellSchema.index({ky_han:1});asssellSchema.index({gia_goc:1});asssellSchema.index({lai_suat_cam_ket:1});asssellSchema.index({ten_lh_dt:1});asssellSchema.index({ngay_het_han:-1});asssellSchema.index({status:1});asssellSchema.index({user_created:1});asssellSchema.index({creator:"text",token:"text",denom:"text",ten_san_pham:"text",ten_ky_han:"text"},{name:"asssell_index2"});
|
|
4
|
-
model.on("index",async function($err$$){$err$$?console.error("asssell index error",$err$$):console.info("asssell indexing complete")});module.exports=model;
|
|
2
|
+
required:!0},buyer:String,id_need_to_buy:String,fee:Number,exchange_address:String,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:""}});asssellSchema.index({id_app:1});asssellSchema.index({creator:1});asssellSchema.index({id:1});asssellSchema.index({denom:1});asssellSchema.index({token:1});asssellSchema.index({id_product:1});asssellSchema.index({ten_san_pham:1});
|
|
3
|
+
asssellSchema.index({product_token:1});asssellSchema.index({id_period:1});asssellSchema.index({ky_han:1});asssellSchema.index({gia_goc:1});asssellSchema.index({lai_suat_cam_ket:1});asssellSchema.index({ten_lh_dt:1});asssellSchema.index({ngay_het_han:-1});asssellSchema.index({status:1});asssellSchema.index({user_created:1});asssellSchema.index({creator:"text",token:"text",denom:"text",ten_san_pham:"text",ten_ky_han:"text"},{name:"asssell_index2"});
|
|
4
|
+
const model=mongoose.models.asssell||mongoose.model("asssell",asssellSchema);model.on("index",async function($err$$){$err$$?console.error("asssell index error",$err$$):console.info("asssell indexing complete")});module.exports=model;
|