flexbiz-server
Version:
Flexible Server
12 lines (11 loc) • 4.98 kB
JavaScript
const tdttno=global.getModel("tdttno"),tdttno_tt=global.getModel("tdttno_tt"),Customer=global.getModel("customer"),Pt1=global.getModel("pt1"),async=require("async"),underscore=require("underscore"),controller=require("../../controllers/controllerRPT"),{executeInTransaction}=require("../../libs/sessionContext");
module.exports=function($router_rpt$$){$router_rpt$$=new controller($router_rpt$$,"phanbothutienchohoadon",function($req$$,$callback$$){const $condition$$=$req$$.query;if(!$condition$$.id_app||!$condition$$.tu_ngay||!$condition$$.den_ngay)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1: tu_ngay,den_ngay,id_app");async.series({phieu_thu:function($callback$$){const $query_pt$$={id_app:$condition$$.id_app,$where:function(){return this.details&&this.details.length>0}};
$query_pt$$.ngay_ct={$gte:$condition$$.tu_ngay,$lte:$condition$$.den_ngay};$condition$$.ma_dvcs&&($query_pt$$.ma_dvcs=$condition$$.ma_dvcs);$condition$$.ma_kh&&($query_pt$$.ma_kh=$condition$$.ma_kh);$condition$$.so_ct&&($query_pt$$.so_ct=$condition$$.so_ct);Pt1.find($query_pt$$).lean().exec(function($e$$,$pts$$){if($e$$)return $callback$$($e$$);async.mapLimit($pts$$,20,function($pt$$,$callback$$){$pt$$.t_tien_nt=$pt$$.details.csum("tien_nt");$pt$$.t_tien=$pt$$.details.csum("tien");tdttno_tt.find({id_app:$condition$$.id_app,
id_ct:$pt$$._id.toString()}).exec(function($e$$,$rs$$){if($e$$)return $callback$$($e$$);$pt$$.da_phan_bo_nt=$rs$$.csum("tien_nt");$pt$$.da_phan_bo=$rs$$.csum("tien");$pt$$.con_lai_nt=$pt$$.t_tien_nt-$pt$$.da_phan_bo_nt;$pt$$.con_lai=$pt$$.t_tien-$pt$$.da_phan_bo;$callback$$(null,$pt$$)})},function($e$$){if($e$$)return $callback$$($e$$);$callback$$(null,$pts$$)})})}},function($error$$,$results$$){if($error$$)return $callback$$($error$$);const $report$$=$results$$.phieu_thu;$report$$.joinModel($condition$$.id_app,
Customer,[{akey:"ma_kh",bkey:"ma_kh",fields:[{name:"ten_kh",value:"ten_kh"},{name:"id_kh",value:"_id"}]}],function(){$callback$$(null,$report$$)})})});$router_rpt$$.createRoute("invoices",function($req$$,$callback$$){const $condition$$=$req$$.query;if(!$condition$$.id_app||!$condition$$.ma_kh||!$condition$$.id_ct)return $callback$$("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u tham s\u1ed1: ma_kh,id_ct,id_app");async.series({invocies:function($callback$$){const $query$$={id_app:$condition$$.id_app};
$query$$.ma_kh=$condition$$.ma_kh;$condition$$.ma_dvcs&&($query$$.ma_dvcs=$condition$$.ma_dvcs);tdttno.find($query$$).lean().exec(function($e$$,$invoices$$){if($e$$)return $callback$$($e$$);async.map($invoices$$,function($invoice$$,$callback$$){const $t_invoice$$={id_tdtt:$invoice$$._id.toString(),line:$invoice$$.line,ma_ct:$invoice$$.ma_ct,id_hd:$invoice$$.id_ct,so_hd:$invoice$$.so_hd,ngay_hd:$invoice$$.ngay_hd,tien_hd_nt:$invoice$$.tien_nt};$t_invoice$$.ma_nt_hd=$invoice$$.ma_nt;$t_invoice$$.ty_gia_hd=
$invoice$$.ty_gia;$t_invoice$$.ma_kh=$invoice$$.ma_kh;$t_invoice$$.dien_giai=$invoice$$.dien_giai;$t_invoice$$.tien_nt=0;$t_invoice$$.tien=0;$t_invoice$$.da_thanh_toan_nt=0;$t_invoice$$.con_lai_nt=$t_invoice$$.tien_hd_nt;$t_invoice$$.thanh_toan_qd=0;$t_invoice$$.tk_co=$invoice$$.tk_no;$t_invoice$$.ma_dvcs=$invoice$$.ma_dvcs;tdttno_tt.find({id_tdtt:$invoice$$._id.toString(),id_app:$invoice$$.id_app},function($error$$,$results$$){$t_invoice$$.tien_nt=$results$$.csum("tien_nt",{id_ct:$condition$$.id_ct});
$t_invoice$$.tien=$results$$.csum("tien",{id_ct:$condition$$.id_ct});$t_invoice$$.thanh_toan_qd=$results$$.csum("thanh_toan_qd",{id_ct:$condition$$.id_ct});$t_invoice$$.da_thanh_toan_nt=$results$$.csum("thanh_toan_qd")-$t_invoice$$.thanh_toan_qd;$t_invoice$$.con_lai_nt=$t_invoice$$.tien_hd_nt-$t_invoice$$.da_thanh_toan_nt;$t_invoice$$.tien_nt_alloc=$t_invoice$$.tien_nt;$callback$$(null,$t_invoice$$)})},function($error$$,$results$$){if($error$$)return $callback$$($error$$);$callback$$(null,$results$$.filter($r$$=>
$r$$.con_lai_nt>0))})})}},function($error$$,$results$$){if($error$$)return $callback$$($error$$);$callback$$(null,$results$$.invocies)})});$router_rpt$$.createRoute("save",async function($req$$,$callback$$){let $invoices$$=$req$$.body;underscore.isArray($invoices$$)||($invoices$$=[$invoices$$]);$invoices$$.forEach(function($invoice$$){$invoice$$.ngay_hd=new Date($invoice$$.ngay_hd);$invoice$$.ngay_ct=new Date($invoice$$.ngay_ct);$invoice$$.id_app=$req$$.query.id_app;$invoice$$.user_created=$req$$.user.email});
try{var $msgErrors_rs$$=await executeInTransaction(async()=>{let $result$$=[];for(let $invoice$$ of $invoices$$){await tdttno_tt.deleteMany({id_tdtt:$invoice$$.id_tdtt,id_ct:$invoice$$.id_ct,id_app:$invoice$$.id_app});let $rs$$=await (new tdttno_tt($invoice$$)).save();$result$$.push($rs$$)}return $result$$});$callback$$(null,$msgErrors_rs$$)}catch($error$$){if($error$$.errors){$msgErrors_rs$$=[];for(let $k$$ in $error$$.errors)$msgErrors_rs$$.push($error$$.errors[$k$$].message);$callback$$($msgErrors_rs$$)}else $callback$$($error$$)}},
{method:"POST"})};