diff --git a/hesabixCore/src/Cog/PersonService.php b/hesabixCore/src/Cog/PersonService.php index 01f33cd..47a18b0 100644 --- a/hesabixCore/src/Cog/PersonService.php +++ b/hesabixCore/src/Cog/PersonService.php @@ -69,7 +69,6 @@ class PersonService $response['bs'] = $bs; $response['bd'] = $bd; $response['balance'] = $bs - $bd; - return $response; } @@ -229,6 +228,7 @@ class PersonService if (isset($params['codeeghtesadi'])) $person->setCodeeghtesadi($params['codeeghtesadi']); if (isset($params['shenasemeli'])) $person->setShenasemeli($params['shenasemeli']); if (isset($params['company'])) $person->setCompany($params['company']); + if (isset($params['tags'])) $person->setTags($params['tags']); if (array_key_exists('prelabel', $params)) { if ($params['prelabel'] != '') { $prelabel = $em->getRepository(\App\Entity\PersonPrelabel::class)->findOneBy(['label' => $params['prelabel']]); @@ -278,6 +278,6 @@ class PersonService } $em->persist($person); $em->flush(); - return ['Success' => true, 'result' => 1]; + return ['Success' => true, 'result' => 1, 'code' => $person->getCode()]; } } \ No newline at end of file diff --git a/hesabixCore/src/Controller/CommodityController.php b/hesabixCore/src/Controller/CommodityController.php index fe897d4..4ade305 100644 --- a/hesabixCore/src/Controller/CommodityController.php +++ b/hesabixCore/src/Controller/CommodityController.php @@ -675,7 +675,7 @@ class CommodityController extends AbstractController } } - + $res['Success'] = true; return $this->json($res); } @@ -691,11 +691,14 @@ class CommodityController extends AbstractController } if (!array_key_exists('items', $paramsAll)) return $this->json($extractor->paramsNotSend()); + $results = []; + $createdItems = []; foreach ($paramsAll['items'] as $params) { if (!array_key_exists('name', $params)) return $this->json(['result' => -1]); if (count_chars(trim($params['name'])) == 0) return $this->json(['result' => 3]); + $isNew = false; if ($code == 0) { $data = $entityManager->getRepository(Commodity::class)->findOneBy([ 'name' => $params['name'], @@ -705,6 +708,7 @@ class CommodityController extends AbstractController if (!$data) { $data = new Commodity(); $data->setCode($provider->getAccountingCode($request->headers->get('activeBid'), 'Commodity')); + $isNew = true; } } else { $data = $entityManager->getRepository(Commodity::class)->findOneBy([ @@ -791,6 +795,13 @@ class CommodityController extends AbstractController } } } + if (array_key_exists('Tag', $params)) { + $tagValue = $params['Tag']; + if (is_string($tagValue)) { + $tagValue = json_decode($tagValue, true); + } + $data->setTags($tagValue); + } $entityManager->persist($data); //save prices list @@ -819,11 +830,42 @@ class CommodityController extends AbstractController } $entityManager->flush(); $log->insert('کالا و خدمات', 'کالا / خدمات با نام ' . $params['name'] . ' افزوده/ویرایش شد.', $this->getUser(), $request->headers->get('activeBid')); + + $createdItems[] = [ + 'id' => $data->getId(), + 'name' => $data->getName(), + 'code' => $data->getCode(), + 'unit' => $data->getUnit() ? $data->getUnit()->getName() : null, + 'khadamat' => $data->isKhadamat(), + 'withoutTax' => $data->isWithoutTax(), + 'des' => $data->getDes(), + 'priceSell' => $data->getPriceSell(), + 'priceBuy' => $data->getPriceBuy(), + 'commodityCountCheck' => $data->isCommodityCountCheck(), + 'barcodes' => $data->getBarcodes(), + 'taxCode' => $data->getTaxCode(), + 'taxType' => $data->getTaxType(), + 'taxUnit' => $data->getTaxUnit(), + 'minOrderCount' => $data->getMinOrderCount(), + 'speedAccess' => $data->isSpeedAccess(), + 'dayLoading' => $data->getDayLoading(), + 'orderPoint' => $data->getOrderPoint(), + 'cat' => $data->getCat() ? $data->getCat()->getId() : null, + 'tags' => $data->getTags(), + ]; + } + if (isset($paramsAll['reqType']) && $paramsAll['reqType'] === 'woocommercePlugin') { + return $this->json([ + 'Success' => 1, + 'result' => 1, + 'createdItems' => $createdItems + ]); + } else { + return $this->json([ + 'Success' => 1, + 'result' => 1 + ]); } - return $this->json([ - 'Success' => true, - 'result' => 1, - ]); } #[Route('/api/commodity/mod/{id}', name: 'app_commodity_mod')] public function app_commodity_mod(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager, $id = 0): JsonResponse diff --git a/hesabixCore/src/Controller/HookController.php b/hesabixCore/src/Controller/HookController.php index 97e0ae1..710e1e5 100644 --- a/hesabixCore/src/Controller/HookController.php +++ b/hesabixCore/src/Controller/HookController.php @@ -20,7 +20,7 @@ use App\Entity\Permission; use App\Entity\BankAccount; use App\Entity\CommodityCat; use App\Entity\HesabdariDoc; - +use App\Cog\PersonService; use App\Entity\HesabdariRow; use App\Entity\CommodityUnit; use Doctrine\ORM\EntityManagerInterface; @@ -71,6 +71,42 @@ class HookController extends AbstractController ]); } + #[Route('/hooks/modify/person', name: 'hook_modify_person')] + public function hook_modify_person(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager, $code = 0): JsonResponse + { + $acc = $access->hasRole('person'); + if (!$acc) + throw $this->createAccessDeniedException(); + $params = []; + if ($content = $request->getContent()) { + $params = json_decode($content, true); + } + $personService = new \App\Cog\PersonService($entityManager); + $result = $personService->addOrUpdatePerson($params, $acc, $code); + if (isset($result['error'])) { + return $this->json($result, 400); + } + $log->insert('اشخاص', 'شخص با نام مستعار ' . $params['nikename'] . ' افزوده/ویرایش شد.', $this->getUser(), $acc['bid']); + + $person = $personService->getPersonInfo($result['code'], $acc); + $result['person'] = $person; + + return $this->json($result); + } + + #[Route('/hooks/info/person', name: 'hook_info_person')] + public function hook_info_person($code, Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager, PersonService $personService): JsonResponse + { + $acc = $access->hasRole('person'); + if (!$acc) + throw $this->createAccessDeniedException(); + + $response = $personService->getPersonInfo($code, $acc); + + $response['Success'] = true; + return $this->json($response); + } + #[Route('hooks/setting/getCurrency', name: 'api_hooks_getcurrency')] public function api_hooks_getcurrency(Access $access, Log $log, Request $request, EntityManagerInterface $entityManager): JsonResponse { diff --git a/hesabixCore/src/Controller/PersonsController.php b/hesabixCore/src/Controller/PersonsController.php index 538972c..e6b2ddc 100644 --- a/hesabixCore/src/Controller/PersonsController.php +++ b/hesabixCore/src/Controller/PersonsController.php @@ -132,8 +132,13 @@ class PersonsController extends AbstractController $person->setName($params['name']); if (array_key_exists('birthday', $params)) $person->setBirthday($params['birthday']); - if (array_key_exists('tel', $params)) - $person->setTel($params['tel']); + if (array_key_exists('tel', $params)) { + if (is_string($params['tel']) && strlen(preg_replace('/[^0-9]/', '', $params['tel'])) > 11) { + $person->setTel(''); + } else { + $person->setTel($params['tel']); + } + } if (array_key_exists('speedAccess', $params)) $person->setSpeedAccess($params['speedAccess']); if (array_key_exists('address', $params)) diff --git a/hesabixCore/src/Controller/SellController.php b/hesabixCore/src/Controller/SellController.php index 42e913e..65a6f1d 100644 --- a/hesabixCore/src/Controller/SellController.php +++ b/hesabixCore/src/Controller/SellController.php @@ -1236,6 +1236,7 @@ class SellController extends AbstractController } return $this->json([ + 'Success' => 1, 'result' => 1, 'message' => 'فاکتور با موفقیت ثبت شد', 'data' => [ diff --git a/hesabixCore/src/Entity/Commodity.php b/hesabixCore/src/Entity/Commodity.php index 924dbdc..e56dd70 100644 --- a/hesabixCore/src/Entity/Commodity.php +++ b/hesabixCore/src/Entity/Commodity.php @@ -104,6 +104,9 @@ class Commodity #[ORM\OneToMany(mappedBy: 'commodity', targetEntity: PreInvoiceItem::class, orphanRemoval: true)] private Collection $preInvoiceItems; + #[ORM\Column(type: Types::JSON, nullable: true)] + private ?array $tags = null; + public function __construct() { $this->setPriceBuy(0); @@ -540,4 +543,15 @@ class Commodity return $this; } + + public function getTags(): ?array + { + return $this->tags; + } + + public function setTags(?array $tags): static + { + $this->tags = $tags; + return $this; + } } diff --git a/hesabixCore/src/Entity/Person.php b/hesabixCore/src/Entity/Person.php index 262c023..d2733ab 100644 --- a/hesabixCore/src/Entity/Person.php +++ b/hesabixCore/src/Entity/Person.php @@ -158,6 +158,9 @@ class Person #[ORM\OneToMany(targetEntity: PlugGhestaDoc::class, mappedBy: 'person', orphanRemoval: true)] private Collection $PlugGhestaDocs; + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $tags = null; + public function __construct() { $this->hesabdariRows = new ArrayCollection(); @@ -899,4 +902,15 @@ class Person return $this; } + + public function getTags(): ?string + { + return $this->tags; + } + + public function setTags(?string $tags): self + { + $this->tags = $tags; + return $this; + } } diff --git a/hesabixCore/src/Service/Explore.php b/hesabixCore/src/Service/Explore.php index baf0542..afaafe0 100644 --- a/hesabixCore/src/Service/Explore.php +++ b/hesabixCore/src/Service/Explore.php @@ -346,6 +346,7 @@ class Explore 'speedAccess' => $person->isSpeedAccess(), 'address' => $person->getAddress(), 'prelabel' => null, + 'tags' => $person->getTags(), ]; if ($person->getPrelabel()) { $res['prelabel'] = $person->getPrelabel()->getLabel();