bug fix in storeroom controller for remove tickets

This commit is contained in:
babak alizadeh 2024-06-08 11:52:35 +03:30
parent 2276754e39
commit bae07712e9

View file

@ -66,8 +66,7 @@ class StoreroomController extends AbstractController
return $this->json(['result' => 2]);
$data = new Storeroom();
$data->setBid($acc['bid']);
}
else{
} else {
$data = $entityManager->getRepository(Storeroom::class)->findOneBy([
'bid' => $acc['bid'],
'id' => $code
@ -160,7 +159,8 @@ class StoreroomController extends AbstractController
]);
}
private function getPerson(HesabdariDoc $doc): Person | bool{
private function getPerson(HesabdariDoc $doc): Person | bool
{
foreach ($doc->getHesabdariRows() as $row) {
if ($row->getPerson())
return $row->getPerson();
@ -168,7 +168,8 @@ class StoreroomController extends AbstractController
return false;
}
private function getCommodities(HesabdariDoc $doc,Provider $provider): array{
private function getCommodities(HesabdariDoc $doc, Provider $provider): array
{
$res = [];
foreach ($doc->getHesabdariRows() as $row) {
if ($row->getCommodity()) {
@ -176,7 +177,6 @@ class StoreroomController extends AbstractController
$arrayRow['commdityCount'] = $row->getCommdityCount();
$res[] = $arrayRow;
}
}
return $res;
}
@ -210,15 +210,18 @@ class StoreroomController extends AbstractController
if ($row->getPerson()) {
$person = $row->getPerson();
break;
}
elseif ($row->getCommodity()){
} elseif ($row->getCommodity()) {
if (!$row->getCommodity()->isKhadamat())
$commodities[] = $row;
}
}
foreach ($commodities as $commodity) {
if (is_string($commodity->getCommodity()->getUnit())) {
$commodity->getCommodity()->setUnit($commodity->getCommodity()->getUnit());
} else {
$commodity->getCommodity()->setUnit($commodity->getCommodity()->getUnit()->getName());
}
}
$res = $provider->Entity2Array($doc, 0);
$res['person'] = $provider->Entity2Array($person, 0);
$res['person']['des'] = ' # ' . $person->getCode() . ' ' . $person->getNikename();
@ -228,7 +231,8 @@ class StoreroomController extends AbstractController
return $this->json($res);
}
private function calcStoreRemaining(array &$ref,HesabdariDoc $doc,EntityManagerInterface $entityManager){
private function calcStoreRemaining(array &$ref, HesabdariDoc $doc, EntityManagerInterface $entityManager)
{
$tickets = $entityManager->getRepository(StoreroomTicket::class)->findBy(['doc' => $doc]);
if (count($tickets) == 0) {
@ -238,8 +242,7 @@ class StoreroomController extends AbstractController
$ref['commodities'][$key]['hesabdariCount'] = $commodity['commdityCount'];
$ref['commodities'][$key]['remain'] = $ref['commodities'][$key]['hesabdariCount'];
}
}
else{
} else {
$ref['storeroomComplete'] = true;
foreach ($tickets as $ticket) {
$rows = $entityManager->getRepository(StoreroomItem::class)->findBy(['ticket' => $ticket]);
@ -251,12 +254,10 @@ class StoreroomController extends AbstractController
if (array_key_exists('countBefore', $ref['commodities'][$key])) {
$ref['commodities'][$key]['countBefore'] += $row->getCount();
$ref['commodities'][$key]['hesabdariCount'] = $comRow->getCommdityCount();
}
else{
} else {
$ref['commodities'][$key]['countBefore'] = $row->getCount();
$ref['commodities'][$key]['hesabdariCount'] = $comRow->getCommdityCount();
}
}
}
}
@ -277,7 +278,6 @@ class StoreroomController extends AbstractController
}
}
}
}
#[Route('/api/storeroom/transfertype/list', name: 'app_storeroom_get_transfertype_list')]
public function app_storeroom_get_transfertype_list(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): JsonResponse
@ -474,16 +474,39 @@ class StoreroomController extends AbstractController
$temp['existCount'] = $temp['input'] - $temp['output'];
$items[] = $temp;
}
return $this->json($items);
return $this->json($this->getCommodityCountExistInStoreroom($commodities, $rows, $provider));
}
public function getCommodityCountExistInStoreroom(array $commodities, array $rows, Provider $provider)
{
$items = [];
foreach ($commodities as $commodity) {
$temp = [];
$temp['commodity'] = $provider->Entity2ArrayJustIncludes($commodity, ['getUnit', 'getCode', 'getName', 'getCat', 'getOrderPoint']);
$temp['input'] = 0;
$temp['output'] = 0;
foreach ($rows as $row) {
if ($row->getCommodity()->getId() == $commodity->getId()) {
if ($row->getType() == 'output')
$temp['output'] += $row->getCount();
elseif ($row->getType() == 'input')
$temp['input'] += $row->getCount();
}
}
$temp['existCount'] = $temp['input'] - $temp['output'];
$items[] = $temp;
}
return $items;
}
#[Route('/api/storeroom/ticket/remove/{id}', name: 'app_storeroom_ticket_remove')]
public function app_storeroom_ticket_remove(String $id, Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): JsonResponse
{
$acc = $access->hasRole('store');
if (!$acc)
throw $this->createAccessDeniedException();
$ticket = $entityManager->getRepository(StoreroomTicket::class)->findOneBy(['code'=>$id]);
$ticket = $entityManager->getRepository(StoreroomTicket::class)->findOneBy([
'code' => $id,
'bid' => $acc['bid']
]);
if (!$ticket)
throw $this->createNotFoundException('حواله یافت نشد');
$items = $entityManager->getRepository(StoreroomItem::class)->findBy(['ticket' => $ticket]);