kpiplus
Version:
KPI+
1 lines • 1.86 kB
JavaScript
var model=require("../../models/contract"),controller=require("../../controllers/controller"),customer=require("../../models/customer"),link=require("../../models/link"),arrays=require("../../libs/array-funcs"),underscore=require("underscore"),async=require("async");module.exports=function(n){var e=function(n,e,i){!function(n,e,i){e.id_kh&&link.find({$or:[{id_a:e._id.toString(),id_b:e.id_kh},{id_a:e.id_kh,id_b:e._id.toString()}]}).lean().exec(function(n,i){i&&0!==i.length||new link({id_app:e.id_app,id_a:e.id_kh,id_b:e._id.toString(),collection_a:"dmkh",collection_b:"contract"}).save(function(n,e){n&&console.error(n)})}),i&&i(null,e)}(0,e);n.current_id_app;e.so_hd?i(null,e):model.findByIdAndUpdate(e._id,{$set:{so_hd:e._id.toString().toUpperCase()}},function(n,t){return n?i(n):t?(t.so_hd=e._id.toString().toUpperCase(),i(null,t)):i(new Error("Hợp đồng không tồn tại"))})};(this.contr=new controller(n,model,"contract",{sort:{user_created:-1},unique:["so_hd"],onFinding:function(n,e,i){async.parallel({find_ten_kh:function(n){e.ten_kh?customer.find({ten_kh:{$regex:e.ten_kh,$options:"i"}},{_id:1}).lean().exec(function(i,t){if(i)return n(i);delete e.ten_kh;var r=[];t.forEach(function(n){r.push(n._id.toString())}),e.id_kh={$in:r},n()}):n()}},function(n,t){if(n)return i(n);i(null,e)})},onView:function(n,e,i){e.joinModel2(n.current_id_app,customer,[{where:{id_kh:"_id"},fields:[{name:"ten_kh",value:"ten_kh"},{name:"ma_kh",value:"ma_kh"}]}],function(n){i(null,e)})},onCreating:function(n,e,i,t){if(e.phu_trach||(e.phu_trach=n.email),e.id_kh)i(null,e);else{if(!t.data||!t.data.ma_kh)return i("Hợp đồng yêu cầu một khách hàng");customer.findOne({ma_kh:t.data.ma_kh}).lean().exec(function(n,r){if(!r)return i("Mã khách hàng '"+t.data.ma_kh+"' không tồn tại");e.id_kh=r._id,i(null,e)})}},onCreated:e,onUpdated:e})).route()};