UNPKG

flexbiz-server

Version:

Flexible Server

9 lines (8 loc) 3.92 kB
'use strict';const dkvt=require("./dkvttt"),sokho=global.getModel("sokhott"),dmvt=global.getModel("dmvt"),async=require("async"),underscore=require("underscore"),utils=require("./utils"); module.exports=async 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,$app$$=await global.getModel("app").findOne({_id:$id_app$$},{options:1}).lean();if(!$app$$)return $fn$$("C\u00f4ng ty n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i");var $f_sl$$=void 0==($app$$.options||{}).f_sl?4:($app$$.options||{}).f_sl,$f_tien$$=($app$$.options||{}).f_tien||0,$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)&&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$$){setImmediate(()=> {$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,$result$$)})})})},ps:function($callback$$){setImmediate(()=>{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&&($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",fields:["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]},()=>{$callback$$(null,$pss$$)}))})})}},function($error$$,$results$$){$error$$?$fn$$($error$$):setImmediate(()=>{const $data$$=$results$$.dn.concat($results$$.ps);$log$$("stocksummary: group by"); $data$$.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_dau=utils.round($r$$.ton_dau||0,$f_sl$$),$r$$.sl_nhap=utils.round($r$$.sl_nhap||0,$f_sl$$),$r$$.sl_xuat=utils.round($r$$.sl_xuat||0,$f_sl$$),$r$$.ton_cuoi=utils.round($r$$.ton_dau+$r$$.sl_nhap-$r$$.sl_xuat,$f_sl$$),$r$$.du_dau=utils.round($r$$.du_dau|| 0,$f_tien$$),$r$$.du_cuoi=Math.roundBy($r$$.du_dau,$f_tien$$)+Math.roundBy($r$$.tien_nhap,$f_tien$$)-Math.roundBy($r$$.tien_xuat,$f_tien$$);$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")};