From 44184527e3625507a4f072fbc72a1a140cd3de58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9APD?= <13558507+yao-shipeng@user.noreply.gitee.com> Date: Wed, 31 Jul 2024 08:03:33 +0000 Subject: [PATCH] =?UTF-8?q?update=20serve/app/controller/Crt.php.=20?= =?UTF-8?q?=E5=BA=94=E6=94=B6=E8=B4=A6=E6=AC=BE=E6=AC=BE=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=9C=89=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=87=BD=E6=95=B0=20crs=20=E4=BB=A5=E5=8F=8A=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=87=BD=E6=95=B0=20=20crsExports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 姚PD <13558507+yao-shipeng@user.noreply.gitee.com> --- serve/app/controller/Crt.php | 49 ++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/serve/app/controller/Crt.php b/serve/app/controller/Crt.php index d8fb9bd..cd1f356 100644 --- a/serve/app/controller/Crt.php +++ b/serve/app/controller/Crt.php @@ -376,23 +376,43 @@ class Crt extends Acl{ ]; $nodeUnionSql=frameScope($nodeUnionSql); + foreach ($tab as $t) { + if(!in_array($t,['vend','vre'])){ + $nodeUnion[]=Db::name($t)->where(sqlAuth($t,$nodeUnionSql))->fieldRaw('"'.$t.'" as mold,sum('.(in_array($t,['sell','sre','ice'])?'actual - money':'total').') as calc')->group(['mold'])->buildSql(); + } + } $nodeUnion=implode(' UNION ALL ',$nodeUnion); $stats=DB::query('SELECT * FROM ('.$nodeUnion.') as nodcloud'); $calc=[]; - + foreach ($tab as $t) { + if(!in_array($t,['vend','vre'])){ + $find=search($stats)->where([['mold','=',$t]])->find(); + if(empty($find)){ + $calc[$t]=0; + }else{ + $calc[$t]=$find['calc']; + } + } + } $balance=math()->chain($calc['sell'])->sub($calc['sre'])->sub($calc['imy'])->add($calc['ice'])->done(); array_unshift($node,['key'=>$vo['id'].'_'.'0','bill'=>'期初余额','balance'=>$balance]); foreach ($node as $nodeKey=>$nodeVo) { //跳过期初 if(!empty($nodeKey)){ $node[$nodeKey]['key']=$vo['id'].'_'.$nodeVo['id'].'_'.$nodeVo['mold']; - $node[$nodeKey]['bill']=['sell'=>'销售单','sre'=>'销售退货单','imy'=>'收款单','ice'=>'其它收入单'][$nodeVo['mold']]; + $node[$nodeKey]['bill']=['sell'=>'销售单','sre'=>'销售退货单','vend'=>'零售单','vre'=>'零售退货单','imy'=>'收款单','ice'=>'其它收入单'][$nodeVo['mold']]; if($nodeVo['mold']=='sell'){ $node[$nodeKey]['cw']=math()->chain($nodeVo['actual'])->sub($nodeVo['money'])->done(); $node[$nodeKey]['pia']=0; }else if($nodeVo['mold']=='sre'){ $node[$nodeKey]['cw']=math()->chain($nodeVo['actual'])->sub($nodeVo['money'])->mul(-1)->done(); $node[$nodeKey]['pia']=0; + }else if($nodeVo['mold']=='vend'){ + $node[$nodeKey]['cw']=0; + $node[$nodeKey]['pia']=0; + }else if($nodeVo['mold']=='vre'){ + $node[$nodeKey]['cw']=0; + $node[$nodeKey]['pia']=0; }else if($nodeVo['mold']=='imy'){ $node[$nodeKey]['cw']=0; $node[$nodeKey]['pia']=$nodeVo['total']; @@ -472,23 +492,42 @@ class Crt extends Acl{ ['time','<',existFull($input,['startTime'])?strtotime($input['startTime']):0] ]; $nodeUnionSql=frameScope($nodeUnionSql); - + foreach ($tab as $t) { + if(!in_array($t,['vend','vre'])){ + $nodeUnion[]=Db::name($t)->where(sqlAuth($t,$nodeUnionSql))->fieldRaw('"'.$t.'" as mold,sum('.(in_array($t,['sell','sre','ice'])?'actual - money':'total').') as calc')->group(['mold'])->buildSql(); + } + } $nodeUnion=implode(' UNION ALL ',$nodeUnion); $stats=DB::query('SELECT * FROM ('.$nodeUnion.') as nodcloud'); $calc=[]; - + foreach ($tab as $t) { + if(!in_array($t,['vend','vre'])){ + $find=search($stats)->where([['mold','=',$t]])->find(); + if(empty($find)){ + $calc[$t]=0; + }else{ + $calc[$t]=$find['calc']; + } + } + } $balance=math()->chain($calc['sell'])->sub($calc['sre'])->sub($calc['imy'])->add($calc['ice'])->done(); array_unshift($node,['bill'=>'期初余额','balance'=>$balance]); foreach ($node as $nodeKey=>$nodeVo) { //跳过期初 if(!empty($nodeKey)){ - $node[$nodeKey]['bill']=['sell'=>'销售单','sre'=>'销售退货单','imy'=>'收款单','ice'=>'其它收入单'][$nodeVo['mold']]; + $node[$nodeKey]['bill']=['sell'=>'销售单','sre'=>'销售退货单','vend'=>'零售单','vre'=>'零售退货单','imy'=>'收款单','ice'=>'其它收入单'][$nodeVo['mold']]; if($nodeVo['mold']=='sell'){ $node[$nodeKey]['cw']=math()->chain($nodeVo['actual'])->sub($nodeVo['money'])->done(); $node[$nodeKey]['pia']=0; }else if($nodeVo['mold']=='sre'){ $node[$nodeKey]['cw']=math()->chain($nodeVo['actual'])->sub($nodeVo['money'])->mul(-1)->done(); $node[$nodeKey]['pia']=0; + }else if($nodeVo['mold']=='vend'){ + $node[$nodeKey]['cw']=0; + $node[$nodeKey]['pia']=0; + }else if($nodeVo['mold']=='vre'){ + $node[$nodeKey]['cw']=0; + $node[$nodeKey]['pia']=0; }else if($nodeVo['mold']=='imy'){ $node[$nodeKey]['cw']=0; $node[$nodeKey]['pia']=$nodeVo['total'];