flexbiz-server 12.1.4 → 12.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.1.4",
5
+ "version": "12.1.7",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -2,7 +2,7 @@
2
2
  global.getModel("otp"),DIGITS="0123456789",jwt=require("jsonwebtoken");function generateOTP(){let $OTP$$="";for(let $i$$=0;6>$i$$;$i$$++)$OTP$$+=DIGITS[Math.floor(10*Math.random())];return $OTP$$}
3
3
  function generateToken($user$$){var $body_n_n$$={email:$user$$.email};configs.APP_SECRET?jwt.sign({user:$body_n_n$$},configs.APP_SECRET):($body_n_n$$=new Date,_crypto.createHash("md5").update($user$$.email+$body_n_n$$.toISOString()).digest("hex"));$body_n_n$$=new Date;return _crypto.createHash("md5").update($user$$.email+$body_n_n$$.toISOString()).digest("hex")}
4
4
  function saveOTP($Phone$$,$otp_code$$,$callback$$,$expires$$=5){let $expire_time$$=new Date;$expire_time$$.setMinutes($expire_time$$.getMinutes()+$expires$$);OTP.create({phone:$Phone$$,otp:$otp_code$$,expire_time:$expire_time$$},($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);$callback$$(null,$rs$$.toObject())})}
5
- function findByUsername($username$$,$fn$$){if(!$username$$)return $fn$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");User.findOne({$or:[{email:$username$$},{email2:$username$$}]},function($error$$,$result$$){return!$error$$&&$result$$&&$result$$.local?$fn$$(null,$result$$):$fn$$($error$$||`T\u00e0i kho\u1ea3n ${$username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)})}
5
+ function findByUsername($username$$,$fn$$){if(!$username$$)return $fn$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");User.findOne({$or:[{email:$username$$}]},function($error$$,$result$$){return!$error$$&&$result$$&&$result$$.local?$fn$$(null,$result$$):$fn$$($error$$||`T\u00e0i kho\u1ea3n ${$username$$} kh\u00f4ng t\u1ed3n t\u1ea1i`)})}
6
6
  module.exports=async function($app$$,$passport$$){const $rateLimiter$$=await global.createRateLimiterMiddleware(configs.limitRequest.auth||{},"auth");$passport$$.use(new BasicStrategy(function($username$$,$password$$,$done$$){if(!$username$$)return $done$$("B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$username$$=$username$$.trim().toLowerCase();setImmediate(function(){findByUsername($username$$,function($err$$,$user$$){if($err$$)return $done$$($err$$);if(!$user$$)return $done$$("T\u00e0i kho\u1ea3n "+
7
7
  $username$$+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd.");if($user$$.local.rspassword)if($user$$.validRspassword($password$$))$user$$.local.password=$user$$.local.rspassword,$user$$.local.rspassword=void 0,User.findOneAndUpdate({email:$user$$.email},{local:$user$$.local},($e$$,$rs$$)=>{if($e$$)return console.error("Can't update password",$user$$.email,$e$$);console.log("updated new password",$user$$.email,$rs$$)});else{if(!$user$$.validPassword($password$$))return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}else{if(!$user$$.local.password)return $done$$("M\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i. H\u00e3y s\u1eed d\u1ee5ng t\u00ednh n\u0103ng kh\u00f4i ph\u1ee5c m\u1eadt kh\u1ea9u \u0111\u1ec3 \u0111\u1eb7t l\u1ea1i m\u1eadt kh\u1ea9u cho ng\u01b0\u1eddi d\u00f9ng n\u00e0y");
8
8
  if(!$user$$.validPassword($password$$))return $done$$("M\u1eadt kh\u1ea9u kh\u00f4ng ch\u00ednh x\u00e1c.")}return $done$$(null,$user$$)})})}));$app$$.get("/send-otp/:phone",$rateLimiter$$,async($req_url$$,$res$$)=>{const $Phone$$=$req_url$$.params.phone.trim();if(!await User.findOne({email:$Phone$$}))return $res$$.status(400).send({error:`T\u00e0i kho\u1ea3n ${$Phone$$} kh\u00f4ng t\u1ed3n t\u1ea1i`});const $otp_code$$=generateOTP();validator.isEmail($Phone$$)?email.sendHtml({to:{address:$Phone$$},
@@ -25,13 +25,13 @@ $req$$.session;$group_id$jscomp$1_session$$[$req$$.t_session]=0;$group_id$jscomp
25
25
  $req$$.query.group_id;const $app$$=await App.findById($id_app$$),$group$$=await UserGroup.findOne({_id:$group_id$jscomp$1_session$$,is_customer_group:!0});$app$$&&$group$$&&Participant.createParticipant({id_app:$id_app$$,email:$user$$.email,name:$user$$.name,group_id:$group_id$jscomp$1_session$$,active:!0},$cust$jscomp$1_e$$=>{if($cust$jscomp$1_e$$)return console.log("can't add user",$user$$.email,"to company",$app$$.name);$cust$jscomp$1_e$$={ten_kh:$user$$.name,email:$user$$.email,id_app:$id_app$$,
26
26
  user_created:$user$$.email,user_updated:$user$$.email,kh_yn:!0,of_user:$user$$.email};validator.isMobilePhone($user$$.email,["vi-VN"])&&($cust$jscomp$1_e$$.dien_thoai=$user$$.email);try{Customer.asyncCreateCustomer($cust$jscomp$1_e$$)}catch($e$$){console.log("Auto create new customer with error:",$e$$.message)}})}const $accessToken$$=generateToken($user$$);let $session_created$$;$req$$.cookies&&($session_created$$=$req$$.cookies.uid);(new Token({email:$user$$.email,session_created:$session_created$$,
27
27
  token:$accessToken$$,agent:$agent$$,ip:"",once:1==$req$$.query.once||"true"==$req$$.query.once||"1"===$req$$.query.once?!0:!1})).save(function($e$$,$rs$$){if($e$$)return $res$$.status(500).send($e$$);$res$$.send({token:$accessToken$$,once:$rs$$.once})})});$app$$.get("/check-user/:email",$rateLimiter$$,function($req$$,$res$$){User.findOne({email:$req$$.params.email},{email:1,name:1,picture:1}).lean().exec(function($e$$,$user$$){if($e$$)return $res$$.status(400).send($e$$);$res$$.send($user$$)})});
28
- $app$$.post("/signup",$rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send("Kh\u00f4ng c\u00f3 n\u1ed9i dung");if(!$body$$.email)return $res$$.status(400).send("L\u1ed7i: B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$body$$.email=$body$$.email.trim().toLowerCase();if(!$body$$.name)return $res$$.status(400).send("L\u1ed7i: H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp");User.findOne({$or:[{email:$body$$.email},
29
- {email2:$body$$.email}]},function($error$jscomp$1$$,$result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$){if($result$$.local&&$result$$.local.email==$body$$.email||$result$$.email===$body$$.email||$result$$.email2===$body$$.email)return $res$$.status(400).send("L\u1ed7i: T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd");$result$$.local||($result$$.local={})}else $result$$=new User,$result$$.email=$body$$.email,
30
- $result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=$body$$.name;$result$$.partner=$body$$.partner;$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send("L\u1ed7i: M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c");if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send("L\u1ed7i: M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng");
28
+ $app$$.post("/signup",$rateLimiter$$,async($req$$,$res$$)=>{let $body$$=$req$$.body;$body$$.json&&($body$$=JSON.parse($body$$.json));if(!$body$$)return $res$$.status(400).send("Kh\u00f4ng c\u00f3 n\u1ed9i dung");if(!$body$$.email)return $res$$.status(400).send("L\u1ed7i: B\u1ea1n ch\u01b0a nh\u1eadp t\u00e0i kho\u1ea3n");$body$$.email=$body$$.email.trim().toLowerCase();if(!$body$$.name)return $res$$.status(400).send("L\u1ed7i: H\u1ecd v\u00e0 t\u00ean ch\u01b0a nh\u1eadp");User.findOne({email:$body$$.email},
29
+ function($error$jscomp$1$$,$result$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);if($result$$){if($result$$.local&&$result$$.local.email==$body$$.email||$result$$.email===$body$$.email)return $res$$.status(400).send("L\u1ed7i: T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd");$result$$.local||($result$$.local={})}else $result$$=new User,$result$$.email=$body$$.email,$result$$.local={};$result$$.local.email=$body$$.email;$result$$.local.name=
30
+ $body$$.name;$result$$.partner=$body$$.partner;$body$$.email2&&validator.isEmail($body$$.email2)&&($result$$.email2=$body$$.email2);$result$$.name=$result$$.local.name;$body$$.picture?$result$$.local.picture=$body$$.picture:$result$$.local.picture||($result$$.local.picture="/images/avatar.jpg");let $password$$;if($body$$.password){if($body$$.rePassword!==$body$$.password)return $res$$.status(400).send("L\u1ed7i: M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c");if(!User.teststrengthPassword($body$$.password))return $res$$.status(400).send("L\u1ed7i: M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng");
31
31
  $password$$=$body$$.password}else $password$$=_crypto.createHash("md5").update($result$$.email+(new Date).toISOString()).digest("hex");$result$$.local.password=$result$$.generateHash($password$$);$result$$.save(function($app$jscomp$3_error$$,$newUser$$){if($app$jscomp$3_error$$)return $res$$.status(400).send("L\u1ed7i: Kh\u00f4ng th\u1ec3 \u0111\u0103ng k\u00fd");log.create({id_app:"SIGNUP",id_func:"SIGNUP",action:"SIGNUP"},$result$$.email,$req$$.header("user-agent"),$req$$);if($body$$.cty_name){$app$jscomp$3_error$$=
32
32
  new App;$app$jscomp$3_error$$.user_created=$result$$.email;$app$jscomp$3_error$$.user_updated=$result$$.email;$app$jscomp$3_error$$.name=$body$$.cty_name;var $d$jscomp$1_now$$=new Date;$app$jscomp$3_error$$.ngay_dn=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$app$jscomp$3_error$$.ngay_ks=new Date($d$jscomp$1_now$$.getFullYear()-1,12,0);$app$jscomp$3_error$$.nam_bd=$d$jscomp$1_now$$.getFullYear();$app$jscomp$3_error$$.ngay_ky1=new Date($d$jscomp$1_now$$.getFullYear(),0,1);$d$jscomp$1_now$$=new Date;
33
- $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$3_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$3_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}$body$$.id_app&&App.findById($body$$.id_app,($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.log("Can't find app",
34
- $body$$.id_app,$e$jscomp$0$$);Participant.createParticipant({id_app:$body$$.id_app,email:$body$$.email,group_id:$body$$.group_id,active:!0},$cust$jscomp$2_e$$=>{if($cust$jscomp$2_e$$)return console.log("can't add user",$body$$.email,"to company",$app$$.name);$cust$jscomp$2_e$$={ten_kh:$body$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust$jscomp$2_e$$)}catch($e$$){console.log("Auto create new customer with error:",
33
+ $d$jscomp$1_now$$.setMonth($d$jscomp$1_now$$.getMonth()+3);$app$jscomp$3_error$$.expire_date=new Date($d$jscomp$1_now$$);$app$jscomp$3_error$$.save(function($error$jscomp$0$$,$obj$$){if($error$jscomp$0$$)return console.log("Khong tao duoc new app: "+$error$jscomp$0$$);require("../libs/initDatabase").init($obj$$._id,function($error$$){$error$$&&console.log("Can't init database \n"+$error$$)})})}$body$$.id_app&&App.findById($body$$.id_app,($e$jscomp$0$$,$app$$)=>{if($e$jscomp$0$$||!$app$$)return console.error("Can't find app",
34
+ $body$$.id_app,$e$jscomp$0$$);Participant.createParticipant({id_app:$body$$.id_app,email:$body$$.email,group_id:$body$$.group_id,active:!0},$cust$jscomp$2_e$$=>{if($cust$jscomp$2_e$$)return console.error("can't add user",$body$$.email,"to company",$app$$.name);$cust$jscomp$2_e$$={ten_kh:$body$$.name,email:$newUser$$.email,id_app:$body$$.id_app,user_created:$newUser$$.email,user_updated:$newUser$$.email,kh_yn:!0,of_user:$newUser$$.email};try{Customer.asyncCreateCustomer($cust$jscomp$2_e$$)}catch($e$$){console.log("Auto create new customer with error:",
35
35
  $e$$.message)}})});validator.isEmail($body$$.email)&&!$body$$.password?(loadTemplate("thong tin dang nhap.html",{email:$result$$.email,password:$password$$,receiver_name:$body$$.name},function($error$jscomp$0$$,$html$$){if($error$jscomp$0$$)return console.log($error$jscomp$0$$);email.sendHtml({to:{name:$result$$.name,address:$result$$.email},subject:"Th\u00f4ng tin t\u00e0i kho\u1ea3n",html:$html$$},function($error$$){$error$$&&console.error("Khong the gui email thon tin tai khoan cho nguoi dung\n"+
36
36
  $error$$)})}),$res$$.send("T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o. Ki\u1ec3m tra email \u0111\u1ec3 l\u1ea5y th\u00f4ng tin \u0111\u0103ng nh\u1eadp")):$res$$.send("T\u00e0i kho\u1ea3n "+$body$$.email+" \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o")})})});$app$$.get("/resetpassword",$rateLimiter$$,async($req$$,$res$$)=>{let $address$$=$req$$.query.email;if(!$address$$)return $res$$.status(400).send("Y\u00eau c\u1ea7u m\u1ed9t email");$address$$=$address$$.toLowerCase();
37
37
  User.findOne({$or:[{"local.email":$address$$},{email:$address$$},{email2:$address$$}]},function($error$jscomp$2$$,$result$$){if($error$jscomp$2$$)return $res$$.status(400).send($error$jscomp$2$$);if(!$result$$)return $res$$.status(400).send(`T\u00e0i kho\u1ea3n ${$address$$} ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd`);let $newpassword$$=_crypto.createHash("md5").update((new Date).toISOString()).digest("hex");$result$$.local.rspassword=$result$$.generateHash($newpassword$$);$result$$.save(function($error$jscomp$1$$){if($error$jscomp$1$$)return $res$$.status(400).send($error$jscomp$1$$);
package/server/global.js CHANGED
@@ -1,7 +1,8 @@
1
1
  'use strict';const prototypes=require("./libs/prototypes.js"),async=require("async"),TransactionPool=require("./libs/BlockchainTransactionPool"),leanID=require("./libs/mongooseLeanId"),deletePost=require("./libs/mongooseDeletePost"),fs=require("fs");global.blockchainTransactionPool=new TransactionPool;global.new_schedules=[];global.rootDir=__dirname;global.ctrlVouchers={};global.controllers={};global.report_controllers={};global.postingVouchers={};global.cacheDatas={};global.clientIO={};
2
2
  global.model_books="socai sokho sokhott sokhokhongton sosanxuat vatvao vatra tdttno tdttco vsocai socaitmp".split(" ");global.webPush=require("web-push");global.mongoose=require("mongoose");global.mongoose.plugin(leanID);global.mongoose.plugin(deletePost);global.Schema=global.mongoose.Schema;global.mongoose.set("useFindAndModify",!1);global.mongoose.set("useCreateIndex",!0);
3
- global.getModel=$model_name$$=>{$model_name$$=$model_name$$.split(".js")[0];"kbmpttct"===$model_name$$&&($model_name$$="kbmPttct");"kbmtkgtgt"===$model_name$$&&($model_name$$="kbmTkgtgt");"token"===$model_name$$&&($model_name$$="tokens");"bn1"===$model_name$$&&($model_name$$="pc1");"bc1"===$model_name$$&&($model_name$$="pt1");var $model_model_path$$=mongoose.models[$model_name$$];if($model_model_path$$)return $model_model_path$$;$model_model_path$$=(((global.configs||{}).paths||{}).models||"./models")+
4
- "/"+$model_name$$+".js";if(fs.existsSync($model_model_path$$))return require($model_model_path$$);$model_model_path$$=__dirname+"/models/"+$model_name$$+".js";if(fs.existsSync($model_model_path$$))return require($model_model_path$$);console.error("model",$model_name$$,"is not exists. using base model");return require("./models/base")};global.getLib=$lib_name$$=>require("./libs/"+$lib_name$$);
3
+ global.getModel=$model_name$$=>{$model_name$$=$model_name$$.split(".js")[0];"kbmpttct"===$model_name$$&&($model_name$$="kbmPttct");"kbmtkgtgt"===$model_name$$&&($model_name$$="kbmTkgtgt");"token"===$model_name$$&&($model_name$$="tokens");"bn1"===$model_name$$&&($model_name$$="pc1");"bc1"===$model_name$$&&($model_name$$="pt1");var $_requireFields_model_model_path_mySchema$$=mongoose.models[$model_name$$];if($_requireFields_model_model_path_mySchema$$)return $_requireFields_model_model_path_mySchema$$;
4
+ $_requireFields_model_model_path_mySchema$$=(((global.configs||{}).paths||{}).models||"./models")+"/"+$model_name$$+".js";if(fs.existsSync($_requireFields_model_model_path_mySchema$$))return require($_requireFields_model_model_path_mySchema$$);$_requireFields_model_model_path_mySchema$$=__dirname+"/models/"+$model_name$$+".js";if(fs.existsSync($_requireFields_model_model_path_mySchema$$))return require($_requireFields_model_model_path_mySchema$$);console.error("model",$model_name$$,"is not exists. create new model");
5
+ $_requireFields_model_model_path_mySchema$$={...require("./models/listinfo").requireFields};$_requireFields_model_model_path_mySchema$$=new global.Schema($_requireFields_model_model_path_mySchema$$,{strict:!1});return global.mongoose.model($model_name$$,$_requireFields_model_model_path_mySchema$$)};global.getLib=$lib_name$$=>require("./libs/"+$lib_name$$);
5
6
  const pointSchema=new global.mongoose.Schema({type:{type:String,enum:["Point"],required:!0,default:"Point"},coordinates:{type:[Number],required:!0}}),polygonSchema=new global.mongoose.Schema({type:{type:String,enum:["Polygon"],required:!0,default:"Polygon"},coordinates:{type:[[[Number]]],required:!0}});global.customTypes={Point:pointSchema,Polygon:polygonSchema};const EventEmitter=require("events");class GlobalEmitter extends EventEmitter{}global.globalEvents=new GlobalEmitter;
6
7
  const Message=global.getModel("message"),Notification=global.getModel("notification"),User=global.getModel("user"),Sysconfig=global.getModel("sysconfig");global.getSysConfig=async $cf_code$$=>{if($cf_code$$=await Sysconfig.findOne({code:$cf_code$$}))return $cf_code$$.value};global.asyncCountUnRead=async $email$$=>new Promise($resolve$$=>{setImmediate(()=>{Message.countDocuments({email:$email$$,read:!1},($e$$,$rs$$)=>{$resolve$$($rs$$||0)})})});
7
8
  global.alertMessage=function($email$$){setImmediate(()=>{Message.countDocuments({email_owner:$email$$,email_receiver:$email$$,read:!1},function($error$$,$count$$){$error$$?console.log($error$$):User.emitEvent($email$$,"message:count",$count$$,!1)})})};
@@ -142,7 +142,7 @@ listinfoSchema.index({status: 1});
142
142
  listinfoSchema.index({user_created: 1,visible_to: 1,visible_to_users: 1});
143
143
 
144
144
  const model = global.mongoose.models.listinfo || global.mongoose.model('listinfo', listinfoSchema);
145
- const requireFields ={
145
+ const requireFields= model.requireFields ={
146
146
  id_app:{type:String,required:true},
147
147
  exfields:global.Schema.Types.Mixed,
148
148
  status: {type: Boolean, default: true},
@@ -249,12 +249,16 @@ model.createSchema = (info)=>{
249
249
  return mySchema;
250
250
  }
251
251
  model.updateModel = (info,_newModel)=>{
252
- console.log("update model...")
252
+ //console.log("update model...")
253
253
  if(info.toObject) info = info.toObject();
254
254
  if(!info.create_model) return null;
255
255
  let model_code = info.api_code || info.model_code || info.code;
256
256
  if(!_newModel) _newModel = global.mongoose.models[model_code];
257
257
  if(!_newModel) return;
258
+ if(!_newModel.schema){
259
+ console.error("model does not have schema",_newModel);
260
+ return;
261
+ }
258
262
 
259
263
  const api_code = info.api_code || info.code;
260
264
  const _newList = global.controllers[api_code.toUpperCase()]
@@ -1,11 +1,14 @@
1
1
  'use strict';const model=global.getModel("assproduct"),Trangthai=global.getModel("trangthai"),financialroadmap=global.getModel("financialroadmap"),controller=require("../../controllers/controller"),{isSupperAdmin}=require("../../libs/utils"),{createTx,getTxStatus,bcQuery}=require("../../libs/blockchainconnect"),async=require("async");
2
- module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assproduct",{sort:{date_created:-1},notNeedRight:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.map($items$$.filter($item$$=>($item$$.id||0==$item$$.id)&&"9"!=$item$$.trang_thai),async $item$$=>{try{let $ivs$$=await bcQuery("product/"+$item$$.id);$item$$.co_phan=$ivs$$.Product.coPhan;$item$$.token=$ivs$$.Product.token;$item$$.so_luong=
3
- Number($ivs$$.Product.soLuong);$item$$.so_luong_goi_dau_tu=Number($ivs$$.Product.soLuongGoiDauTu);$item$$.tong_gia_tri_goi_dau_tu=Number($ivs$$.Product.tongGiaTriGoiDauTu);$item$$.da_dau_tu=Number($ivs$$.Product.daDauTu);$item$$.gia_tri_da_dau_tu=Number($ivs$$.Product.giaTriDaDauTu);model.updateMany({_id:$item$$._id},$item$$).then($rs$$=>{console.log("update product",$rs$$)})}catch($e$$){console.error("view assproduct",$e$$),$e$$.message&&"3"==$e$$.message.code&&(model.deleteOne({_id:$item$$._id}).then(()=>
4
- {console.log("deleted product",$item$$)}),$item$$.not_found=!0)}},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);$items$$.joinModel2(null,Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSPRODUCT"}),fields:["ten_trang_thai","color"]}],function(){$items$$.filter($item$$=>$item$$.id||0==$item$$.id).joinModel2($user$$.current_id_app,financialroadmap,[{where:$a$$=>({code:$a$$.id}),fields:[{frm_id:"_id"}]}],function(){$next$$(null,$items$$)})})})},onCreating:async($user$$,$obj$$,
5
- $next$$)=>{if("9"===$obj$$.trang_thai)return $next$$(null,$obj$$);createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,tenSanPham:$obj$$.ten_san_pham,mieuTa:"",tongDienTich:"",chuDauTu:$obj$$.chu_dau_tu,giaTriHienTai:$obj$$.gia_tri_hien_tai,diaChi:$obj$$.dia_chi,hienTrang:"",viTri:"",thietKe:"",tienNghi:"",hinhAnh:"",video:"",duocChuyenThanhCP:$obj$$.duoc_chuyen_thanh_cp,coPhan:$obj$$.co_phan||!1,token:$obj$$.token,soLuong:Number($obj$$.so_luong||0)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateProduct",
6
- from_address:$obj$$.creator,memo:"Ph\u00e1t h\u00e0nh "+$obj$$.ten_san_pham}).then(async $rs$$=>{if($rs$$.code){if(5===$rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||"Kh\u00f4ng th\u1ec3 t\u1ea1o d\u1ef1 \u00e1n n\u00e0y")}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||
7
- {}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):(console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a s\u1ea3n ph\u1ea9m n\u00e0y n\u00e0y");
8
- $fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,$data$$,$_obj$$,$fn$$){var $obj$jscomp$21_values$$=$_obj$$.toObject?$_obj$$.toObject():$_obj$$;if($user$$.email!==$obj$jscomp$21_values$$.user_created)return console.log("update product",$obj$jscomp$21_values$$.trang_thai,$obj$jscomp$21_values$$.ten_san_pham),$fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt s\u1ea3n ph\u1ea9m n\u00e0y");if("9"==$data$$.trang_thai&&"9"!=$obj$jscomp$21_values$$.trang_thai)return $fn$$("Kh\u00f4ng th\u1ec3 chuy\u1ec3n v\u1ec1 tr\u1ea1ng th\u00e1i ch\u01b0a \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh t\u1eeb tr\u1ea1ng th\u00e1i \u0111\u00e3 \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh");
2
+ module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,"assproduct",{sort:{date_created:-1},notNeedRight:!0,onFinding:async($user$$,$condition$$,$next$$)=>{$next$$(null,$condition$$)},onView:($user$$,$items$$,$next$$)=>{async.map($items$$.filter($item$$=>($item$$.id||0==$item$$.id)&&"9"!=$item$$.trang_thai),async $item$jscomp$0$$=>{try{var $ivs_period_het_hoat_dong$$=await bcQuery("product/"+$item$jscomp$0$$.id);$item$jscomp$0$$.co_phan=$ivs_period_het_hoat_dong$$.Product.coPhan;
3
+ $item$jscomp$0$$.token=$ivs_period_het_hoat_dong$$.Product.token;$item$jscomp$0$$.so_luong=Number($ivs_period_het_hoat_dong$$.Product.soLuong);$item$jscomp$0$$.so_luong_goi_dau_tu=Number($ivs_period_het_hoat_dong$$.Product.soLuongGoiDauTu);$item$jscomp$0$$.tong_gia_tri_goi_dau_tu=Number($ivs_period_het_hoat_dong$$.Product.tongGiaTriGoiDauTu);$item$jscomp$0$$.da_dau_tu=Number($ivs_period_het_hoat_dong$$.Product.daDauTu);$item$jscomp$0$$.gia_tri_da_dau_tu=Number($ivs_period_het_hoat_dong$$.Product.giaTriDaDauTu);
4
+ $item$jscomp$0$$.da_dau_tu=Number($ivs_period_het_hoat_dong$$.Period.daDauTu);model.updateMany({_id:$item$jscomp$0$$._id},$item$jscomp$0$$).then($rs$$=>{console.log("update product",$rs$$)})}catch($e$$){console.error("view assproduct",$e$$),$e$$.message&&"3"==$e$$.message.code&&(model.deleteOne({_id:$item$jscomp$0$$._id}).then(()=>{console.log("deleted product",$item$jscomp$0$$)}),$item$jscomp$0$$.not_found=!0)}$ivs_period_het_hoat_dong$$=await global.getModel("assperiod").find({id_app:$item$jscomp$0$$.id_app,
5
+ id_product:$item$jscomp$0$$.id.toString(),hoat_dong:!1});$item$jscomp$0$$.tong_so_token_unactive=$ivs_period_het_hoat_dong$$.map($item$$=>$item$$.tong_so_token).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$jscomp$0$$.tong_gia_tri_unactive=$ivs_period_het_hoat_dong$$.map($item$$=>$item$$.tong_so_token*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$jscomp$0$$.da_dau_tu_unactive=$ivs_period_het_hoat_dong$$.map($item$$=>$item$$.da_dau_tu).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$jscomp$0$$.gia_tri_da_dau_tu_unactive=
6
+ $ivs_period_het_hoat_dong$$.map($item$$=>$item$$.da_dau_tu*$item$$.gia).reduce(($a$$,$b$$)=>$a$$+$b$$,0);$item$jscomp$0$$.so_luong_goi_dau_tu=$item$jscomp$0$$.so_luong_goi_dau_tu-$item$jscomp$0$$.tong_so_token_unactive+$item$jscomp$0$$.da_dau_tu_unactive;$item$jscomp$0$$.tong_gia_tri_goi_dau_tu=$item$jscomp$0$$.tong_gia_tri_goi_dau_tu-$item$jscomp$0$$.tong_gia_tri_unactive+$item$jscomp$0$$.gia_tri_da_dau_tu_unactive},async()=>{$items$$=$items$$.filter($i$$=>!$i$$.not_found);$items$$.joinModel2(null,
7
+ Trangthai,[{where:$a$$=>({ma_trang_thai:$a$$.trang_thai,ma_ct:"ASSPRODUCT"}),fields:["ten_trang_thai","color"]}],function(){$items$$.filter($item$$=>$item$$.id||0==$item$$.id).joinModel2($user$$.current_id_app,financialroadmap,[{where:$a$$=>({code:$a$$.id}),fields:[{frm_id:"_id"}]}],function(){$next$$(null,$items$$)})})})},onCreating:async($user$$,$obj$$,$next$$)=>{if("9"===$obj$$.trang_thai)return $next$$(null,$obj$$);createTx($user$$.current_id_app,$user$$.token,{values:{creator:$obj$$.creator,
8
+ tenSanPham:$obj$$.ten_san_pham,mieuTa:"",tongDienTich:"",chuDauTu:$obj$$.chu_dau_tu,giaTriHienTai:$obj$$.gia_tri_hien_tai,diaChi:$obj$$.dia_chi,hienTrang:"",viTri:"",thietKe:"",tienNghi:"",hinhAnh:"",video:"",duocChuyenThanhCP:$obj$$.duoc_chuyen_thanh_cp,coPhan:$obj$$.co_phan||!1,token:$obj$$.token,soLuong:Number($obj$$.so_luong||0)},typeUrl:"/pvtruong.flexzen.flexzen.MsgCreateProduct",from_address:$obj$$.creator,memo:"Ph\u00e1t h\u00e0nh "+$obj$$.ten_san_pham}).then(async $rs$$=>{if($rs$$.code){if(5===
9
+ $rs$$.code)return $next$$("B\u1ea1n kh\u00f4ng \u0111\u1ee7 ti\u1ec1n \u0111\u1ec3 th\u1ef1c hi\u1ec7n giao d\u1ecbch n\u00e0y");console.error($rs$$);return $next$$($rs$$.rawLog||"Kh\u00f4ng th\u1ec3 t\u1ea1o d\u1ef1 \u00e1n n\u00e0y")}try{let $tx$$=await getTxStatus($rs$$.transactionHash),$id$$=((((($tx$$.logs.find($l$$=>$l$$.events)||{}).events||[]).find($e$$=>"message"===$e$$.type)||{}).attributes||[]).find($a$$=>"id"===$a$$.key)||{}).value;void 0!==$id$$?($obj$$.id=$id$$,$next$$(null,$obj$$)):
10
+ (console.error($tx$$),$next$$("Kh\u00f4ng th\u1ec3 t\u1ea1o s\u1ea3n ph\u1ea9m n\u00e0y"))}catch($e$$){console.error($e$$),$next$$($e$$.message||$e$$.error||$e$$)}}).catch($e$$=>{console.error($e$$);$next$$($e$$.message||$e$$.error||$e$$)})}});$contr_router$$.deleting=function($user$$,$obj$$,$fn$$){if(!isSupperAdmin($user$$.email.toLowerCase()))return $fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n x\u00f3a s\u1ea3n ph\u1ea9m n\u00e0y n\u00e0y");$fn$$(null,$obj$$)};$contr_router$$.updating=function($user$$,
11
+ $data$$,$_obj$$,$fn$$){var $obj$jscomp$21_values$$=$_obj$$.toObject?$_obj$$.toObject():$_obj$$;if($user$$.email!==$obj$jscomp$21_values$$.user_created)return console.log("update product",$obj$jscomp$21_values$$.trang_thai,$obj$jscomp$21_values$$.ten_san_pham),$fn$$("B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n c\u1eadp nh\u1eadt s\u1ea3n ph\u1ea9m n\u00e0y");if("9"==$data$$.trang_thai&&"9"!=$obj$jscomp$21_values$$.trang_thai)return $fn$$("Kh\u00f4ng th\u1ec3 chuy\u1ec3n v\u1ec1 tr\u1ea1ng th\u00e1i ch\u01b0a \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh t\u1eeb tr\u1ea1ng th\u00e1i \u0111\u00e3 \u0111\u01b0\u1ee3c ph\u00e1t h\u00e0nh");
9
12
  if("9"==$data$$.trang_thai)return $fn$$(null,$data$$,$obj$jscomp$21_values$$);if(void 0!=$data$$.co_phan&&$data$$.co_phan!=$obj$jscomp$21_values$$.co_phan)return $fn$$("Kh\u00f4ng th\u1ec3 \u0111\u1ed5i ki\u1ec3u d\u1ef1 \u00e1n (c\u1ed5 ph\u1ea7n ho\u1eb7c kh\u00f4ng c\u1ed5 ph\u1ea7n");$data$$.trang_thai=$data$$.trang_thai||$obj$jscomp$21_values$$.trang_thai;$data$$.co_phan=$obj$jscomp$21_values$$.co_phan;if($data$$.creator&&$data$$.creator!==$obj$jscomp$21_values$$.creator)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda \u0111\u1ecba ch\u1ec9 v\u00ed ng\u01b0\u1eddi t\u1ea1o");
10
13
  if($data$$.token&&$data$$.token!==$obj$jscomp$21_values$$.token)return $fn$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eeda t\u00ean token");let $from_address$$=$obj$jscomp$21_values$$.creator,$typeUrl$$,$memo$$;"9"!==$obj$jscomp$21_values$$.trang_thai?($memo$$="C\u1eadp nh\u1eadt "+$data$$.ten_san_pham||$obj$jscomp$21_values$$.ten_san_pham,$typeUrl$$="/pvtruong.flexzen.flexzen.MsgUpdateProduct",$obj$jscomp$21_values$$={creator:$obj$jscomp$21_values$$.creator,id:Number($obj$jscomp$21_values$$.id),
11
14
  tenSanPham:$data$$.ten_san_pham||$obj$jscomp$21_values$$.ten_san_pham,mieuTa:"",tongDienTich:"",chuDauTu:$data$$.chu_dau_tu||$obj$jscomp$21_values$$.chu_dau_tu,giaTriHienTai:$data$$.gia_tri_hien_tai||$obj$jscomp$21_values$$.gia_tri_hien_tai,diaChi:$data$$.dia_chi||$obj$jscomp$21_values$$.dia_chi,hienTrang:"",viTri:"",thietKe:"",tienNghi:"",hinhAnh:"",video:"",duocChuyenThanhCP:$data$$.duoc_chuyen_thanh_cp||$obj$jscomp$21_values$$.duoc_chuyen_thanh_cp}):($memo$$="Ph\u00e1t h\u00e0nh "+$data$$.ten_san_pham||
@@ -1,3 +1,4 @@
1
1
  'use strict';const async=require("async"),tinhgiatb=require("../../libs/tinhgiatb"),controller=require("../../controllers/controllerRPT");
2
- module.exports=function($router$$){new controller($router$$,"tinhgiatb",function($req$$,$callback$$){const $query$$=$req$$.query;if(!$query$$.nam||!$query$$.tu_thang||!$query$$.den_thang)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: nam,tu_thang,den_thang");const $query_dmvt$$={id_app:$query$$.id_app};async.parallel([$vcallback$$=>{$callback$$(null,null,"begin");const $zquery$$=Object.assign({},$query$$,$query_dmvt$$);tinhgiatb($zquery$$,function($error$$,
3
- $results$$){if($error$$)return $vcallback$$($error$$);$callback$$(null,$results$$,"data");$vcallback$$(null)})}],$e$$=>{if($e$$)return console.log("Error tinh gia trung binh",$e$$),$callback$$($e$$);$callback$$(null,null,"end")})},{stream:!0})};
2
+ module.exports=function($router$$){new controller($router$$,"tinhgiatb",async function($_app_ngay_ks_req$$,$callback$$){const $query$$=$_app_ngay_ks_req$$.query;if(!$query$$.nam||!$query$$.tu_thang||!$query$$.den_thang)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: nam,tu_thang,den_thang");const $moment$$=require("moment");$_app_ngay_ks_req$$=await global.getModel("app").findOne({_id:$_app_ngay_ks_req$$.user.current_id_app});if(!$_app_ngay_ks_req$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");
3
+ $_app_ngay_ks_req$$=$moment$$($_app_ngay_ks_req$$.ngay_ks).startOf("date").toDate();let $tu_ngay$$=$moment$$([Number($query$$.nam),Number($query$$.tu_thang)-1,1]).startOf("month").toDate();if($_app_ngay_ks_req$$.getTime()>=$tu_ngay$$.getTime())return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${$moment$$($_app_ngay_ks_req$$).format("DD/MM/YYYY")}`);const $query_dmvt$$={id_app:$query$$.id_app};async.parallel([$vcallback$$=>{$callback$$(null,null,"begin");const $zquery$$=Object.assign({},
4
+ $query$$,$query_dmvt$$);tinhgiatb($zquery$$,function($error$$,$results$$){if($error$$)return $vcallback$$($error$$);$callback$$(null,$results$$,"data");$vcallback$$(null)})}],$e$$=>{if($e$$)return console.log("Error tinh gia trung binh",$e$$),$callback$$($e$$);$callback$$(null,null,"end")})},{stream:!0})};
@@ -1,6 +1,7 @@
1
1
  'use strict';const gt_ctgt=global.getModel("gt_ctgt"),dmvt=global.getModel("dmvt"),xoadulieucu=require("../../libs/tinhGtXoa"),tinhgiathanhtt=require("../../libs/tinhGtTrucTiep"),tinhsoluong=require("../../libs/tinhGtSltk"),taphopcppstk=require("../../libs/tinhGtThcppstk"),phanbotheosl=require("../../libs/tinhGtPhanboSltp"),phanbotheoyt=require("../../libs/tinhGtPhanboYtcp"),capnhatpnk=require("../../libs/tinhGtCapnhatPNK"),controller=require("../../controllers/controllerRPT");
2
- module.exports=function($router$$){new controller($router$$,"tinhgiathanh",function($req$$,$callback$$){const $condition$$=$req$$.query;if(!$condition$$.nam||!$condition$$.thang)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: nam,thang");$condition$$.nam=Number($condition$$.nam);$condition$$.thang=Number($condition$$.thang);(new Promise(($resolve$$,$reject$$)=>{xoadulieucu($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})})).then(()=>
3
- new Promise(($resole$$,$reject$$)=>{tinhsoluong($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{taphopcppstk($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{tinhgiathanhtt($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{phanbotheosl($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);
4
- $resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{phanbotheoyt($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{phanbotheoyt($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{capnhatpnk($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>{let $cond$$={id_app:$condition$$.id_app,nam:$condition$$.nam,
5
- thang:$condition$$.thang};$condition$$.ma_bp&&($cond$$.ma_bp=$condition$$.ma_bp.toUpperCase());$condition$$.id_lenhsx&&global.mongoose.Types.ObjectId.isValid($condition$$.id_lenhsx)&&($cond$$.id_lenhsx=$condition$$.id_lenhsx);gt_ctgt.find($cond$$).lean().exec(async($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);await $rs$$.asyncJoinModel2($condition$$.id_app,dmvt,[{where:{ma_sp:"ma_vt"},fields:[{name:"ten_sp",value:"ten_vt"}]}]);await $rs$$.asyncJoinModel2($condition$$.id_app,global.getModel("lenhsx"),
6
- [{where:{id_lenhsx:"_id"},fields:[{so_lenh_sx:"so_ct"}]}]);$callback$$(null,$rs$$)})}).catch($e$$=>{console.log("error",$e$$);$callback$$($e$$)})})};
2
+ module.exports=function($router$$){new controller($router$$,"tinhgiathanh",async function($_app_ngay_ks_req$$,$callback$$){const $condition$$=$_app_ngay_ks_req$$.query;if(!$condition$$.nam||!$condition$$.thang)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: nam,thang");$condition$$.nam=Number($condition$$.nam);$condition$$.thang=Number($condition$$.thang);const $moment$$=require("moment");$_app_ngay_ks_req$$=await global.getModel("app").findOne({_id:$_app_ngay_ks_req$$.user.current_id_app});
3
+ if(!$_app_ngay_ks_req$$)return $callback$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");$_app_ngay_ks_req$$=$moment$$($_app_ngay_ks_req$$.ngay_ks).startOf("date").toDate();let $tu_ngay$$=$moment$$([Number($condition$$.nam),Number($condition$$.thang)-1,1]).startOf("month").toDate();if($_app_ngay_ks_req$$.getTime()>=$tu_ngay$$.getTime())return $callback$$(`\u0110\u00e3 kh\u00f3a s\u1ed5 \u0111\u1ebfn ng\u00e0y ${$moment$$($_app_ngay_ks_req$$).format("DD/MM/YYYY")}`);(new Promise(($resolve$$,
4
+ $reject$$)=>{xoadulieucu($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{tinhsoluong($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{taphopcppstk($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{tinhgiathanhtt($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);
5
+ $resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{phanbotheosl($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{phanbotheoyt($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{phanbotheoyt($condition$$,($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>new Promise(($resole$$,$reject$$)=>{capnhatpnk($condition$$,
6
+ ($e$$,$rs$$)=>{if($e$$)return $reject$$($e$$);$resole$$($rs$$)})})).then(()=>{let $cond$$={id_app:$condition$$.id_app,nam:$condition$$.nam,thang:$condition$$.thang};$condition$$.ma_bp&&($cond$$.ma_bp=$condition$$.ma_bp.toUpperCase());$condition$$.id_lenhsx&&global.mongoose.Types.ObjectId.isValid($condition$$.id_lenhsx)&&($cond$$.id_lenhsx=$condition$$.id_lenhsx);gt_ctgt.find($cond$$).lean().exec(async($e$$,$rs$$)=>{if($e$$)return $callback$$($e$$);await $rs$$.asyncJoinModel2($condition$$.id_app,dmvt,
7
+ [{where:{ma_sp:"ma_vt"},fields:[{name:"ten_sp",value:"ten_vt"}]}]);await $rs$$.asyncJoinModel2($condition$$.id_app,global.getModel("lenhsx"),[{where:{id_lenhsx:"_id"},fields:[{so_lenh_sx:"so_ct"}]}]);$callback$$(null,$rs$$)})}).catch($e$$=>{console.log("error",$e$$);$callback$$($e$$)})})};
@@ -1,5 +1,5 @@
1
- 'use strict';const User=global.getModel("user"),log=global.getModel("log"),Customer=global.getModel("customer"),Endpoint=global.getModel("endpoint"),getNotifies=require("../../libs/getNotifies"),redisCache=require("../../libs/redis-cache"),underscore=require("underscore"),async=require("async"),fs=require("fs"),{isSupperAdmin}=require("../../libs/utils"),permission=require("../../libs/permission"),path=require("path"),Token=global.getModel("token"),gm=require("gm").subClass({imageMagick:!0}),request=
2
- require("request"),findByToken=User.findByToken;
1
+ 'use strict';const User=global.getModel("user"),log=global.getModel("log"),Customer=global.getModel("customer"),Endpoint=global.getModel("endpoint"),getNotifies=require("../../libs/getNotifies"),redisCache=require("../../libs/redis-cache"),underscore=require("underscore"),async=require("async"),fs=require("fs"),{isSupperAdmin}=require("../../libs/utils"),permission=require("../../libs/permission"),validator=require("validator"),path=require("path"),Token=global.getModel("token"),gm=require("gm").subClass({imageMagick:!0}),
2
+ request=require("request"),findByToken=User.findByToken;
3
3
  module.exports=function($router$$){const $usersAdmin$$=configs.admins;$router$$.route("/user").get(function($req$$,$res$$){const $access_token$$=$req$$.query.access_token;findByToken($access_token$$,$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,function($e$$,$user$$){if($e$$)return $res$$.status(400).send({error:$e$$.message||$e$$.error||$e$$});$user$$?($user$$.local=$user$$.local||{},$user$$.address=$user$$.local.address?$user$$.local.address:"",$user$$.phone=$user$$.local.phone?
4
4
  $user$$.local.phone:"",$user$$.has_pin=$user$$.local.pin?!0:!1,$user$$.token=$access_token$$,$user$$.admin=underscore.contains($usersAdmin$$,$user$$.email)||isSupperAdmin($user$$.email.toLowerCase()),!$user$$.picture&&$user$$.local.picture&&($user$$.picture=$user$$.local.picture),console.log(JSON.stringify($user$$)),delete $user$$.tokens,delete $user$$.facebook,delete $user$$.google,delete $user$$.password,delete $user$$.pin,delete $user$$.local.pin,delete $user$$.local.rePassword,delete $user$$.local.password,
5
5
  $res$$.send($user$$)):$res$$.status(404).send({error:"Token kh\u00f4ng t\u1ed3n t\u1ea1i"})})});$router$$.route("/profile").get(function($req$$,$res$$){const $email$$=$req$$.query.email,$query$$={};async.parallel({e:function($callback$$){$email$$?($query$$.email=$email$$,User.findOne($query$$).lean().exec(function($error$$,$user$$){if($error$$)return $callback$$($error$$);$callback$$(null,$user$$)})):$callback$$()},t:function($callback$$){$email$$?$callback$$():findByToken($req$$.query.access_token,
@@ -20,13 +20,13 @@ $res$$){let $access_token$$=$req$$.query.access_token;if(!$req$$.files.fileuploa
20
20
  configs.paths.templates||$path$$.dirname($path$$.dirname(__dirname))+"/templates";$root_dir_templates$$+="/";findByToken($access_token$$,$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,function($error$jscomp$0$$,$user$$){if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.message||$error$jscomp$0$$.error||$error$jscomp$0$$});$user$$?fs.readFile($req$$.files.fileupload.path,function($err$$,$data$$){if($err$$)return $res$$($err$$);fs.existsSync($root_dir_templates$$+
21
21
  "excels")||fs.mkdirSync($root_dir_templates$$+"excels");let $newPath$$="excels/"+$user$$._id.toString()+"_"+$path$$.basename($req$$.files.fileupload.path);fs.unlink($req$$.files.fileupload.path,$e$$=>{$e$$&&console.error($e$$)});console.log("uploading template file",$root_dir_templates$$+$newPath$$);fs.writeFile($root_dir_templates$$+$newPath$$,$data$$,function($error$$){if($error$$)return console.error("Error upload file",$error$$),$res$$.status(404).send($error$$);$error$$="/templates/"+$newPath$$;
22
22
  console.log("Updated a file to ",$root_dir_templates$$+$newPath$$);if($req$$.query.json)return $res$$.send({fileUrl:$error$$});$res$$.writeHead(200,{"Content-Type":"text/html"});$res$$.end("<html><head><title>"+$error$$+"</title></head><body>success</body></html>")})}):$res$$.status(404).send({error:"Not found"})})}else $res$$.status(400).send("Ch\u1ec9 ch\u1ea5p nh\u1eadn c\u00e1c \u0111\u1ecbnh d\u1ea1ng file: xlsx,xml")});$router$$.route("/updateprofile").post(function($req$$,$res$$){findByToken($req$$.query.access_token,
23
- $req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,async($error$jscomp$10_user$$,$_user$$)=>{if($error$jscomp$10_user$$)return $res$$.status(400).send({error:$error$jscomp$10_user$$.message||$error$jscomp$10_user$$.error||$error$jscomp$10_user$$});if($_user$$){$error$jscomp$10_user$$={local:$_user$$.local||{},email:$_user$$.email,name:$_user$$.name};let $profile$$=$req$$.body;if($profile$$.local)for($_phone__u_key$$ in $profile$$.local)"_id"!==$_phone__u_key$$&&($error$jscomp$10_user$$.local[$_phone__u_key$$]=
24
- $profile$$.local[$_phone__u_key$$],void 0==$profile$$[$_phone__u_key$$]&&($profile$$[$_phone__u_key$$]=$profile$$.local[$_phone__u_key$$]));$profile$$.name&&($error$jscomp$10_user$$.local.name=$profile$$.name,$error$jscomp$10_user$$.name=$profile$$.name);var $_phone__u_key$$=$profile$$.phone;if($_phone__u_key$$){let $tmp_u$$=await User.findOne({"local.phone":$_phone__u_key$$});if($tmp_u$$&&$tmp_u$$.email!==$error$jscomp$10_user$$.email)return $res$$.status(400).send({error:`S\u1ed1 \u0111i\u1ec7n tho\u1ea1i ${$_phone__u_key$$} \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng`})}void 0!=
25
- $_phone__u_key$$&&($error$jscomp$10_user$$.local.phone=$_phone__u_key$$);void 0!=$profile$$.address&&($error$jscomp$10_user$$.local.address=$profile$$.address);void 0!=$profile$$.zalo&&($error$jscomp$10_user$$.local.zalo=$profile$$.zalo);void 0!=$profile$$.whatsapp&&($error$jscomp$10_user$$.local.whatsapp=$profile$$.whatsapp);void 0!=$profile$$.facebook&&($error$jscomp$10_user$$.local.facebook=$profile$$.facebook);void 0!=$profile$$.company&&($error$jscomp$10_user$$.local.company=$profile$$.company);
26
- void 0!=$profile$$.picture&&($error$jscomp$10_user$$.local.picture=$profile$$.picture);if(void 0!=$profile$$.email2){if($profile$$.email2&&($_phone__u_key$$=await User.findOne({email2:$profile$$.email2}))&&$_phone__u_key$$.email!==$_user$$.email)return $res$$.status(400).send({error:`Email ${$profile$$.email2} \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng cho user kh\u00e1c`});$error$jscomp$10_user$$.email2=$profile$$.email2}$error$jscomp$10_user$$.user_updated=$req$$.user.email;$error$jscomp$10_user$$.date_updated=
27
- new Date;User.findByIdAndUpdate($_user$$._id,$error$jscomp$10_user$$,async function($error$$,$rs$$){if($error$$||!$rs$$)return $res$$.status(400).send({error:$error$$||"User kh\u00f4ng t\u1ed3n t\u1ea1i"});log.create({id_app:"CHANGEPROFILE",id_func:"CHANGEPROFILE",action:"CHANGEPROFILE"},$_user$$.email,$req$$.header("user-agent"),$req$$);console.log("update customer of user",$rs$$.email);Customer.findOne({of_user:$rs$$.email,ma_kh:$rs$$.email.toUpperCase()},($e$jscomp$0$$,$cust$$)=>{$cust$$?($cust$$.ten_kh=
28
- $rs$$.name,$cust$$.save(($e$$,$_cust$$)=>{if($e$$)return console.error("can't update ten_kh for user",$rs$$.name,$e$$);global.clientRedis.set("stp:"+$_cust$$._id.toString(),"")})):console.error("Not found customer of user",$rs$$.email)});$_user$$=await User.findById($_user$$._id).lean();redisCache.set("user",$_user$$,function($e$$){$e$$?console.error($e$$):console.log("cache user infomation to redis");$res$$.send("\u0110\u00e3 c\u1eadp nh\u1eadt th\u00e0nh c\u00f4ng")})})}else $res$$.status(404).send({error:"Not found"})})});
29
- $router$$.route("/changepasswordByAdmin").post(function($req$$,$res$$){let $body$$=$req$$.body;if(!$body$$.newPassword)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp m\u1eadt kh\u1ea9u m\u1edbi"});if($body$$.newPassword){if($body$$.reNewPassword!==$body$$.newPassword)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});if(!User.teststrengthPassword($body$$.newPassword))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"})}findByToken($req$$.query.access_token,
23
+ $req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,async($error$jscomp$10_user$$,$_user$$)=>{if($error$jscomp$10_user$$)return $res$$.status(400).send({error:$error$jscomp$10_user$$.message||$error$jscomp$10_user$$.error||$error$jscomp$10_user$$});if($_user$$){$error$jscomp$10_user$$={local:$_user$$.local||{},email:$_user$$.email,name:$_user$$.name};let $profile$$=$req$$.body;if($profile$$.local)for($_phone_key$$ in $profile$$.local)"_id"!==$_phone_key$$&&($error$jscomp$10_user$$.local[$_phone_key$$]=
24
+ $profile$$.local[$_phone_key$$],void 0==$profile$$[$_phone_key$$]&&($profile$$[$_phone_key$$]=$profile$$.local[$_phone_key$$]));$profile$$.name&&($error$jscomp$10_user$$.local.name=$profile$$.name,$error$jscomp$10_user$$.name=$profile$$.name);var $_phone_key$$=$profile$$.phone;if($_phone_key$$){let $tmp_u$$=await User.findOne({"local.phone":$_phone_key$$});if($tmp_u$$&&$tmp_u$$.email!==$error$jscomp$10_user$$.email)return $res$$.status(400).send({error:`S\u1ed1 \u0111i\u1ec7n tho\u1ea1i ${$_phone_key$$} \u0111\u00e3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng`})}void 0!=
25
+ $_phone_key$$&&($error$jscomp$10_user$$.local.phone=$_phone_key$$);void 0!=$profile$$.address&&($error$jscomp$10_user$$.local.address=$profile$$.address);void 0!=$profile$$.zalo&&($error$jscomp$10_user$$.local.zalo=$profile$$.zalo);void 0!=$profile$$.whatsapp&&($error$jscomp$10_user$$.local.whatsapp=$profile$$.whatsapp);void 0!=$profile$$.facebook&&($error$jscomp$10_user$$.local.facebook=$profile$$.facebook);void 0!=$profile$$.company&&($error$jscomp$10_user$$.local.company=$profile$$.company);void 0!=
26
+ $profile$$.picture&&($error$jscomp$10_user$$.local.picture=$profile$$.picture);if(void 0!=$profile$$.email2){if($profile$$.email2&&!validator.isEmail($profile$$.email2))return $res$$.status(400).send({error:`Email ${$profile$$.email2} kh\u00f4ng h\u1ee3p l\u1ec7`});$error$jscomp$10_user$$.email2=$profile$$.email2}$error$jscomp$10_user$$.user_updated=$req$$.user.email;$error$jscomp$10_user$$.date_updated=new Date;User.findByIdAndUpdate($_user$$._id,$error$jscomp$10_user$$,async function($error$$,$rs$$){if($error$$||
27
+ !$rs$$)return $res$$.status(400).send({error:$error$$||"User kh\u00f4ng t\u1ed3n t\u1ea1i"});log.create({id_app:"CHANGEPROFILE",id_func:"CHANGEPROFILE",action:"CHANGEPROFILE"},$_user$$.email,$req$$.header("user-agent"),$req$$);console.log("update customer of user",$rs$$.email);Customer.findOne({of_user:$rs$$.email,ma_kh:$rs$$.email.toUpperCase()},($e$jscomp$0$$,$cust$$)=>{$cust$$?($cust$$.ten_kh=$rs$$.name,$cust$$.save(($e$$,$_cust$$)=>{if($e$$)return console.error("can't update ten_kh for user",
28
+ $rs$$.name,$e$$);global.clientRedis.set("stp:"+$_cust$$._id.toString(),"")})):console.error("Not found customer of user",$rs$$.email)});$_user$$=await User.findById($_user$$._id).lean();redisCache.set("user",$_user$$,function($e$$){$e$$?console.error($e$$):console.log("cache user infomation to redis");$res$$.send("\u0110\u00e3 c\u1eadp nh\u1eadt th\u00e0nh c\u00f4ng")})})}else $res$$.status(404).send({error:"Not found"})})});$router$$.route("/changepasswordByAdmin").post(function($req$$,$res$$){let $body$$=
29
+ $req$$.body;if(!$body$$.newPassword)return $res$$.status(400).send({error:"B\u1ea1n ch\u01b0a nh\u1eadp m\u1eadt kh\u1ea9u m\u1edbi"});if($body$$.newPassword){if($body$$.reNewPassword!==$body$$.newPassword)return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u x\u00e1c nh\u1eadn kh\u00f4ng ch\u00ednh x\u00e1c"});if(!User.teststrengthPassword($body$$.newPassword))return $res$$.status(400).send({error:"M\u1eadt kh\u1ea9u ph\u1ea3i c\u00f3 \u00edt nh\u1ea5t 6 k\u00fd t\u1ef1 v\u00e0 bao g\u1ed3m \u00edt nh\u1ea5t m\u1ed9t ch\u1eef s\u1ed1, m\u1ed9t ch\u1eef hoa v\u00e0 m\u1ed9t ch\u1eef th\u01b0\u1eddng"})}findByToken($req$$.query.access_token,
30
30
  $req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,function($error$jscomp$0$$,$user$$){if($error$jscomp$0$$)return $res$$.status(400).send({error:$error$jscomp$0$$.message||$error$jscomp$0$$.error||$error$jscomp$0$$});if(!$user$$)return $res$$.status(400).send({error:"token kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb"});if(underscore.contains($usersAdmin$$,$user$$.email)||isSupperAdmin($user$$.email.toLowerCase()))User.findOne({email:$body$$.email},function($e$jscomp$0$$,$u$$){if($e$jscomp$0$$||
31
31
  !$u$$)return $res$$.status(400).send({error:$body$$.email+" ch\u01b0a \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd"});$u$$.local.password=$u$$.generateHash($body$$.newPassword);$u$$.local.rspassword=null;$u$$.save(function($error$$){if($error$$)return $res$$.status(400).send($error$$);Token.deleteMany({email:$body$$.email,ip:{$in:["",null,void 0]}},$e$$=>{$e$$&&console.log("error when remove old tokens",$e$$)});log.create({id_app:"CHANGEPASSWORD",id_func:"CHANGEPASSWORD",action:"CHANGEPASSWORD"},$u$$.email,
32
32
  $req$$.header("user-agent"),$req$$);redisCache.set("user",$u$$.toObject(),function($e$$){$e$$?console.error($e$$):console.log("cache user infomation to redis")});$res$$.send({message:"\u0110\u00e3 c\u1eadp nh\u1eadt th\u00e0nh c\u00f4ng"})})});else return $res$$.status(400).send({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n thay \u0111\u1ed5i m\u1eadt kh\u1ea9u c\u1ee7a ng\u01b0\u1eddi s\u1eed d\u1ee5ng n\u00e0y"})})});$router$$.route("/delete").get(function($req$$,$res$$){findByToken($req$$.query.access_token,
@@ -3,8 +3,8 @@ trangthai=global.getModel("trangthai"),controller=require("../../controllers/con
3
3
  0;$i_i$jscomp$1_i$$<$obj$$.vatvaos.length;$i_i$jscomp$1_i$$++)$detail_vatra_vatvao$$=$obj$$.vatvaos[$i_i$jscomp$1_i$$],$detail_vatra_vatvao$$.line=$i_i$jscomp$1_i$$,"VND"==$obj$$.ma_nt&&($detail_vatra_vatvao$$.t_thue=Math.roundBy($detail_vatra_vatvao$$.t_thue_nt,0));if($obj$$.vatras)for($i_i$jscomp$1_i$$=0;$i_i$jscomp$1_i$$<$obj$$.vatras.length;$i_i$jscomp$1_i$$++)$detail_vatra_vatvao$$=$obj$$.vatras[$i_i$jscomp$1_i$$],$detail_vatra_vatvao$$.line=$i_i$jscomp$1_i$$,"VND"==$obj$$.ma_nt&&($detail_vatra_vatvao$$.t_thue=
4
4
  Math.roundBy($detail_vatra_vatvao$$.t_thue_nt,0));$fn$$()};
5
5
  module.exports=function($contr_router$$){$contr_router$$=new controller($contr_router$$,model,ma_ct.toLowerCase(),{isVoucher:!0,sort:{ngay_ct:-1,so_ct:-1}});$contr_router$$.route();$contr_router$$.post=function($obj$$,$fn$$){$fn$$||($fn$$=function(){});async.parallel({post_vatvao:function($callback$$){(new PostBook($obj$$,$obj$$.vatvaos,Vatvao)).run(function($e$$,$rs$$){$callback$$($e$$,$rs$$)})},post_vatra:function($callback$$){(new PostBook($obj$$,$obj$$.vatras,Vatra)).run(function($e$$,$rs$$){$callback$$($e$$,
6
- $rs$$)})},post_socai:function($callback$$){const $details_sc$$=[];$obj$$.vatvaos.forEach(function($v_vatvao$$){$v_vatvao$$={...$v_vatvao$$};$v_vatvao$$.tk_no=$v_vatvao$$.tk_thue_no;$v_vatvao$$.tk_co=$v_vatvao$$.tk_du_thue;$v_vatvao$$.tien_nt=$v_vatvao$$.t_thue_nt;$v_vatvao$$.tien=$v_vatvao$$.t_thue;$v_vatvao$$.ma_kh=$v_vatvao$$.ma_kh_cn||$v_vatvao$$.ma_kh;$details_sc$$.push($v_vatvao$$)});$obj$$.vatras.forEach(function($v$jscomp$1_vatra$$){$v$jscomp$1_vatra$$={...$v$jscomp$1_vatra$$};$v$jscomp$1_vatra$$.tk_no=
7
- $v$jscomp$1_vatra$$.tk_du_thue;$v$jscomp$1_vatra$$.tk_co=$v$jscomp$1_vatra$$.tk_thue_co;$v$jscomp$1_vatra$$.tien_nt=$v$jscomp$1_vatra$$.t_thue_nt;$v$jscomp$1_vatra$$.tien=$v$jscomp$1_vatra$$.t_thue;$v$jscomp$1_vatra$$.ma_kh=$v$jscomp$1_vatra$$.ma_kh_cn||$v$jscomp$1_vatra$$.ma_kh;$details_sc$$.push($v$jscomp$1_vatra$$)});$obj$$.details.forEach(function($d$$){$obj$$.ma_kh&&!$d$$.ma_kh_co&&($d$$.ma_kh_co=$obj$$.ma_kh);$details_sc$$.push({...$d$$})});if($obj$$.tk_tien_cl&&0<$obj$$.details.length&&$obj$$.t_tien_cl_nt){const $cl$$=
6
+ $rs$$)})},post_socai:function($callback$$){const $details_sc$$=[];$obj$$.vatvaos.forEach(function($v_vatvao$$){$v_vatvao$$={...$v_vatvao$$};$v_vatvao$$.tk_no=$v_vatvao$$.tk_thue_no;$v_vatvao$$.tk_co=$v_vatvao$$.tk_du_thue;$v_vatvao$$.tien_nt=$v_vatvao$$.t_thue_nt;$v_vatvao$$.tien=$v_vatvao$$.t_thue;$v_vatvao$$.ma_kh=$v_vatvao$$.ma_kh_cn||$obj$$.ma_kh;$details_sc$$.push($v_vatvao$$)});$obj$$.vatras.forEach(function($v$jscomp$1_vatra$$){$v$jscomp$1_vatra$$={...$v$jscomp$1_vatra$$};$v$jscomp$1_vatra$$.tk_no=
7
+ $v$jscomp$1_vatra$$.tk_du_thue;$v$jscomp$1_vatra$$.tk_co=$v$jscomp$1_vatra$$.tk_thue_co;$v$jscomp$1_vatra$$.tien_nt=$v$jscomp$1_vatra$$.t_thue_nt;$v$jscomp$1_vatra$$.tien=$v$jscomp$1_vatra$$.t_thue;$v$jscomp$1_vatra$$.ma_kh=$v$jscomp$1_vatra$$.ma_kh_cn||$obj$$.ma_kh;$details_sc$$.push($v$jscomp$1_vatra$$)});$obj$$.details.forEach(function($d$$){$obj$$.ma_kh&&!$d$$.ma_kh_co&&($d$$.ma_kh_co=$obj$$.ma_kh);$details_sc$$.push({...$d$$})});if($obj$$.tk_tien_cl&&0<$obj$$.details.length&&$obj$$.t_tien_cl_nt){const $cl$$=
8
8
  {...$obj$$};$cl$$.tk_co=$obj$$.details[0].tk_co;0<$cl$$.t_tien_cl_nt?($cl$$.tien_nt=$cl$$.t_tien_cl_nt,$cl$$.tien=Math.roundBy($cl$$.t_tien_cl_nt*$cl$$.ty_gia,0),$cl$$.tk_no=$cl$$.tk_tien_cl):($cl$$.tien_nt=Math.abs($cl$$.t_tien_cl_nt),$cl$$.tien=Math.abs(Math.roundBy($cl$$.t_tien_cl_nt*$cl$$.ty_gia,0)),$cl$$.tk_no=$cl$$.tk_co,$cl$$.tk_co=$cl$$.tk_tien_cl);$details_sc$$.push($cl$$)}(new PostSocai($obj$$,$details_sc$$)).run(function($e$$,$rs$$){$callback$$($e$$,$rs$$)})}},function($e$$,$rs$$){$fn$$($e$$,
9
9
  $rs$$)})};$contr_router$$.creating=function($user$$,$obj$$,$next$$){$obj$$.details||($obj$$.details=[]);$obj$$.id_pt1="";$obj$$.id_pc1="";valid_detail($user$$,$obj$$,function($error$$){if($error$$)return $next$$($error$$);$next$$(null,$obj$$)})};$contr_router$$.updating=function($user$$,$data$$,$obj$$,$next$$){valid_detail($user$$,$data$$,function($error$$){if($error$$)return $next$$($error$$);$next$$(null,$data$$,$obj$$)})};$contr_router$$.on("saved",function($obj$$){$obj$$.id_pc2&&pc2.updateMany({_id:$obj$$.id_pc2},
10
10
  {id_pn6:$obj$$._id.toString(),trang_thai:"7"},($e$$,$rs$$)=>{console.log("update pc2",$rs$$)})});$contr_router$$.on("deleted",function($obj$$){$obj$$.id_pc2&&pc2.updateMany({_id:$obj$$.id_pc2},{id_pn6:""},()=>{pc2.updateMany({_id:$obj$$.id_pc2,trang_thai:"7"},{trang_thai:"5"},($e$$,$rs$$)=>{console.log("update pc2",$rs$$)})})});$contr_router$$.view=function($user$$,$items$$,$fn$$){let $id_app$$=$user$$.current_id_app;async.parallel({dv:function($callback$$){$items$$.filter($item$$=>$item$$.ma_dvcs).joinModel($id_app$$,