From 6614093acacbda0c3cc2544e2ed8db2cca7eb864 Mon Sep 17 00:00:00 2001 From: babak alizadeh Date: Tue, 16 Apr 2024 06:59:17 +0000 Subject: [PATCH] add some report --- .../src/Controller/BusinessController.php | 25 ++- .../src/Controller/HesabdariController.php | 5 +- .../src/Controller/PersonsController.php | 174 +++++++++++++++++- 3 files changed, 199 insertions(+), 5 deletions(-) diff --git a/hesabixCore/src/Controller/BusinessController.php b/hesabixCore/src/Controller/BusinessController.php index 6516f8a..0634afc 100644 --- a/hesabixCore/src/Controller/BusinessController.php +++ b/hesabixCore/src/Controller/BusinessController.php @@ -540,7 +540,8 @@ class BusinessController extends AbstractController ]); $docs = $entityManager->getRepository(HesabdariDoc::class)->findBy([ - 'bid'=>$buss + 'bid'=>$buss, + 'year'=>$year, ]); $rows = $entityManager->getRepository(HesabdariRow::class)->findBy([ @@ -550,7 +551,23 @@ class BusinessController extends AbstractController $bssum = 0; foreach ($rows as $row) $bssum += $row->getBs(); - + $buys = $entityManager->getRepository(HesabdariDoc::class)->findBy([ + 'bid'=>$buss, + 'year'=>$year, + 'type'=>'buy', + ]); + $buysTotal = 0; + foreach($buys as $item) + $buysTotal += $item->getAmount(); + + $sells = $entityManager->getRepository(HesabdariDoc::class)->findBy([ + 'bid'=>$buss, + 'year'=>$year, + 'type'=>'sell', + ]); + $sellsTotal = 0; + foreach($sells as $item) + $sellsTotal += $item->getAmount(); $response = [ 'personCount'=>count($persons), 'bankCount'=>count($banks), @@ -558,7 +575,9 @@ class BusinessController extends AbstractController 'income'=> $bssum, 'commodity'=>count($entityManager->getRepository(Commodity::class)->findby([ 'bid'=>$buss - ])) + ])), + 'buys_total'=>$buysTotal, + 'sells_total'=>$sellsTotal, ]; return $this->json($response); } diff --git a/hesabixCore/src/Controller/HesabdariController.php b/hesabixCore/src/Controller/HesabdariController.php index b3cc41f..621d98e 100644 --- a/hesabixCore/src/Controller/HesabdariController.php +++ b/hesabixCore/src/Controller/HesabdariController.php @@ -107,7 +107,10 @@ class HesabdariController extends AbstractController $temp['ref'] = $item->getCommodity()->getName(); $temp['refCode'] = $item->getCommodity()->getCode(); $temp['count'] = $item->getCommdityCount(); - $temp['unitPrice'] = $item->getBs()/$item->getCommdityCount(); + if($doc->getType() == 'sell') + $temp['unitPrice'] = $item->getBs()/$item->getCommdityCount(); + elseif($doc->getType() == 'buy') + $temp['unitPrice'] = $item->getBd()/$item->getCommdityCount(); $temp['commodity'] = [ 'id' => $item->getCommodity()->getId(), 'name' => $item->getCommodity()->getName(), diff --git a/hesabixCore/src/Controller/PersonsController.php b/hesabixCore/src/Controller/PersonsController.php index 749780d..97c0b1f 100644 --- a/hesabixCore/src/Controller/PersonsController.php +++ b/hesabixCore/src/Controller/PersonsController.php @@ -158,7 +158,6 @@ class PersonsController extends AbstractController 'bid'=>$request->headers->get('activeBid') ]); } - $response = $provider->ArrayEntity2Array($persons,0); foreach ($persons as $key =>$person){ $rows = $entityManager->getRepository(HesabdariRow::class)->findBy([ @@ -177,6 +176,179 @@ class PersonsController extends AbstractController return $this->json($response); } + #[Route('/api/person/list/debtors/{amount}', name: 'app_persons_list_debtors')] + public function app_persons_list_debtors(string $amount,Provider $provider,Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse + { + if(!$access->hasRole('person')) + throw $this->createAccessDeniedException(); + $params = []; + if ($content = $request->getContent()) { + $params = json_decode($content, true); + } + if(array_key_exists('speedAccess',$params)){ + $persons = $entityManager->getRepository(Person::class)->findBy([ + 'bid'=>$request->headers->get('activeBid'), + 'speedAccess'=>true + ]); + } + else{ + $persons = $entityManager->getRepository(Person::class)->findBy([ + 'bid'=>$request->headers->get('activeBid') + ]); + } + + $response = $provider->ArrayEntity2Array($persons,0); + foreach ($persons as $key =>$person){ + $rows = $entityManager->getRepository(HesabdariRow::class)->findBy([ + 'person'=>$person + ]); + $bs = 0; + $bd = 0; + foreach ($rows as $row){ + $bs += $row->getBs(); + $bd += $row->getBd(); + } + $response[$key]['bs'] = $bs; + $response[$key]['bd'] = $bd; + $response[$key]['balance'] = $bs - $bd; + } + $result = []; + foreach ($response as $key =>$person){ + if($person['bd'] - $person['bs'] > $amount ){ + array_push($result,$person); + } + } + return $this->json($result); + } + #[Route('/api/person/list/debtors/print/{amount}', name: 'app_persons_debtors_list_print')] + public function app_persons_debtors_list_print(string $amount,Provider $provider,Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse + { + $acc = $access->hasRole('person'); + if(!$acc) + throw $this->createAccessDeniedException(); + + $persons = $entityManager->getRepository(Person::class)->findBy([ + 'bid'=>$request->headers->get('activeBid') + ]); + $response = $provider->ArrayEntity2Array($persons,0); + foreach ($persons as $key =>$person){ + $rows = $entityManager->getRepository(HesabdariRow::class)->findBy([ + 'person'=>$person + ]); + $bs = 0; + $bd = 0; + foreach ($rows as $row){ + $bs += $row->getBs(); + $bd += $row->getBd(); + } + $response[$key]['bs'] = $bs; + $response[$key]['bd'] = $bd; + $response[$key]['balance'] = $bs - $bd; + } + $result = []; + foreach ($response as $key =>$person){ + if($person['bd'] - $person['bs'] > $amount ){ + array_push($result,$person); + } + } + $pid = $provider->createPrint( + $acc['bid'], + $this->getUser(), + $this->renderView('pdf/personsDebtors.html.twig',[ + 'page_title'=>'فهرست بدهکاران', + 'bid'=>$acc['bid'], + 'persons'=>$result + ])); + return $this->json(['id'=>$pid]); + } + + #[Route('/api/person/list/depositors/{amount}', name: 'app_persons_list_depoistors')] + public function app_persons_list_depoistors(string $amount,Provider $provider,Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse + { + if(!$access->hasRole('person')) + throw $this->createAccessDeniedException(); + $params = []; + if ($content = $request->getContent()) { + $params = json_decode($content, true); + } + if(array_key_exists('speedAccess',$params)){ + $persons = $entityManager->getRepository(Person::class)->findBy([ + 'bid'=>$request->headers->get('activeBid'), + 'speedAccess'=>true + ]); + } + else{ + $persons = $entityManager->getRepository(Person::class)->findBy([ + 'bid'=>$request->headers->get('activeBid') + ]); + } + + $response = $provider->ArrayEntity2Array($persons,0); + foreach ($persons as $key =>$person){ + $rows = $entityManager->getRepository(HesabdariRow::class)->findBy([ + 'person'=>$person + ]); + $bs = 0; + $bd = 0; + foreach ($rows as $row){ + $bs += $row->getBs(); + $bd += $row->getBd(); + } + $response[$key]['bs'] = $bs; + $response[$key]['bd'] = $bd; + $response[$key]['balance'] = $bs - $bd; + } + $result = []; + foreach ($response as $key =>$person){ + if($person['bs'] - $person['bd'] > $amount ){ + array_push($result,$person); + } + } + return $this->json($result); + } + + #[Route('/api/person/list/depositors/print/{amount}', name: 'app_persons_depositors_list_print')] + public function app_persons_depositors_list_print(string $amount,Provider $provider,Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse + { + $acc = $access->hasRole('person'); + if(!$acc) + throw $this->createAccessDeniedException(); + + $persons = $entityManager->getRepository(Person::class)->findBy([ + 'bid'=>$request->headers->get('activeBid') + ]); + $response = $provider->ArrayEntity2Array($persons,0); + foreach ($persons as $key =>$person){ + $rows = $entityManager->getRepository(HesabdariRow::class)->findBy([ + 'person'=>$person + ]); + $bs = 0; + $bd = 0; + foreach ($rows as $row){ + $bs += $row->getBs(); + $bd += $row->getBd(); + } + $response[$key]['bs'] = $bs; + $response[$key]['bd'] = $bd; + $response[$key]['balance'] = $bs - $bd; + } + $result = []; + foreach ($response as $key =>$person){ + if($person['bs'] - $person['bd'] > $amount ){ + array_push($result,$person); + } + } + $pid = $provider->createPrint( + $acc['bid'], + $this->getUser(), + $this->renderView('pdf/personsDepositors.html.twig',[ + 'page_title'=>'فهرست بستانکاران', + 'bid'=>$acc['bid'], + 'persons'=>$result + ])); + return $this->json(['id'=>$pid]); + } + #[Route('/api/person/list/print', name: 'app_persons_list_print')] public function app_persons_list_print(Provider $provider,Request $request,Access $access,Log $log,EntityManagerInterface $entityManager): JsonResponse {