diff --git a/hesabixCore/src/Controller/BankController.php b/hesabixCore/src/Controller/BankController.php index e6fd3e3..bb9accd 100644 --- a/hesabixCore/src/Controller/BankController.php +++ b/hesabixCore/src/Controller/BankController.php @@ -192,6 +192,7 @@ class BankController extends AbstractController 'شماره تراکنش', 'تاریخ', 'توضیحات', + 'شرح سند', 'تفضیل', 'بستانکار', 'بدهکار', @@ -203,6 +204,7 @@ class BankController extends AbstractController $transaction->getId(), $transaction->getDoc()->getDate(), $transaction->getDes(), + $transaction->getDoc()->getDes(), $transaction->getRef()->getName(), $transaction->getBs(), $transaction->getBd(), diff --git a/hesabixCore/src/Controller/GeneralController.php b/hesabixCore/src/Controller/GeneralController.php index bdd0c5f..6b738f7 100644 --- a/hesabixCore/src/Controller/GeneralController.php +++ b/hesabixCore/src/Controller/GeneralController.php @@ -11,6 +11,7 @@ use App\Service\Jdate; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use App\Entity\Business; @@ -21,51 +22,56 @@ use App\Service\Provider; class GeneralController extends AbstractController { #[Route('/api/general/stat', name: 'general_stat')] - public function general_stat(EntityManagerInterface $entityManager,Jdate $jdate): JsonResponse + public function general_stat(EntityManagerInterface $entityManager, Jdate $jdate): JsonResponse { - + //get last version number $version = '0.0.1'; $lastUpdateDate = '1399'; $lastUpdateDes = ''; - $last = $entityManager->getRepository(ChangeReport::class)->findOneBy([],['id'=>'DESC']); - if($last){ - $version = $last->getVersion(); - $lastUpdateDate = $jdate->jdate('Y/n/d',$last->getDateSubmit()); + $last = $entityManager->getRepository(ChangeReport::class)->findOneBy([], ['id' => 'DESC']); + if ($last) { + $version = $last->getVersion(); + $lastUpdateDate = $jdate->jdate('Y/n/d', $last->getDateSubmit()); $lastUpdateDes = $last->getBody(); } return $this->json([ - 'version'=>$version, - 'lastUpdateDate'=>$lastUpdateDate, - 'lastUpdateDes'=>$lastUpdateDes, + 'version' => $version, + 'lastUpdateDate' => $lastUpdateDate, + 'lastUpdateDes' => $lastUpdateDes, ]); } #[Route('/api/general/statements', name: 'general_statement')] - public function general_statement(EntityManagerInterface $entityManager,Jdate $jdate): JsonResponse + public function general_statement(EntityManagerInterface $entityManager, Jdate $jdate): JsonResponse { - return $this->json($entityManager->getRepository(Statment::class)->findBy([],['id'=>'DESC'])); + return $this->json($entityManager->getRepository(Statment::class)->findBy([], ['id' => 'DESC'])); } #[Route('/api/general/get/time', name: 'general_get_time')] - public function general_get_time(Jdate $jdate): JsonResponse + public function general_get_time(Jdate $jdate, Request $request): JsonResponse { - return $this->json(['timeNow'=>$jdate->jdate('Y/n/d',time())]); + $params = []; + if ($content = $request->getContent()) { + $params = json_decode($content, true); + } + if (array_key_exists('format', $params)) + return $this->json(['timeNow' => $jdate->jdate($params['format'], time()), 'ts' => time()]); + return $this->json(['timeNow' => $jdate->jdate('Y/n/d', time()), 'ts' => time()]); } #[Route('/front/print/{id}', name: 'app_front_print')] - public function app_front_print(Provider $provider,EntityManagerInterface $entityManager,pdfMGR $pdfMGR,String $id) + public function app_front_print(Provider $provider, EntityManagerInterface $entityManager, pdfMGR $pdfMGR, string $id) { - $print = $entityManager->getRepository(PrinterQueue::class)->findOneBy(['pid'=>$id]); - if(!$print) + $print = $entityManager->getRepository(PrinterQueue::class)->findOneBy(['pid' => $id]); + if (!$print) throw $this->createNotFoundException(); - if($print->isPosprint()){ + if ($print->isPosprint()) { $pdfMGR->streamTwig2PDFInvoiceType($print); + } else { + $pdfMGR->streamTwig2PDF($print); } - else{ - $pdfMGR->streamTwig2PDF($print); - } - + return new Response(''); } } diff --git a/hesabixCore/src/Controller/PersonsController.php b/hesabixCore/src/Controller/PersonsController.php index c2c9183..65a9b51 100644 --- a/hesabixCore/src/Controller/PersonsController.php +++ b/hesabixCore/src/Controller/PersonsController.php @@ -2,6 +2,7 @@ namespace App\Controller; +use App\Entity\PersonPrelabel; use App\Service\Extractor; use App\Service\Log; use App\Entity\Person; @@ -239,6 +240,7 @@ class PersonsController extends AbstractController return $this->json(['result' => -1]); if (count_chars(trim($params['nikename'])) == 0) return $this->json(['result' => 3]); + if ($code == 0) { $person = $entityManager->getRepository(Person::class)->findOneBy([ 'nikename' => $params['nikename'], @@ -298,7 +300,14 @@ class PersonsController extends AbstractController $person->setShenasemeli($params['shenasemeli']); if (array_key_exists('company', $params)) $person->setCompany($params['company']); - + if (array_key_exists('prelabel', $params)) { + if ($params['prelabel'] != '') { + $prelabel = $entityManager->getRepository(PersonPrelabel::class)->findOneBy(['code' => $params['prelabel']['code']]); + if ($prelabel) { + $person->setPrelabel($prelabel); + } + } + } //inset cards if (array_key_exists('accounts', $params)) { foreach ($params['accounts'] as $item) { @@ -1233,4 +1242,22 @@ class PersonsController extends AbstractController $log->insert('اشخاص', ' شخص با نام ' . $comName . ' حذف شد. ', $this->getUser(), $acc['bid']->getId()); return $this->json(['result' => 1]); } + + #[Route('/api/person/prelabels/list', name: 'app_persons_prelabels_list')] + public function app_persons_prelabels_list(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): Response + { + $acc = $access->hasRole('person'); + if (!$acc) + throw $this->createAccessDeniedException(); + + $labels = $entityManager->getRepository(PersonPrelabel::class)->findAll(); + $rows = []; + foreach ($labels as $key => $label) { + $rows[] = [ + 'label' => $label->getLabel(), + 'code' => $label->getCode(), + ]; + } + return new Response(json_encode($rows)); + } } diff --git a/hesabixCore/src/Entity/Person.php b/hesabixCore/src/Entity/Person.php index 185e559..4e645f7 100644 --- a/hesabixCore/src/Entity/Person.php +++ b/hesabixCore/src/Entity/Person.php @@ -149,6 +149,9 @@ class Person #[ORM\OneToMany(mappedBy: 'salesman', targetEntity: PreInvoiceDoc::class)] private Collection $preinvoiceDocsSalemans; + #[ORM\ManyToOne(inversedBy: 'people')] + private ?PersonPrelabel $prelabel = null; + public function __construct() { $this->hesabdariRows = new ArrayCollection(); @@ -847,4 +850,16 @@ class Person return $this; } + + public function getPrelabel(): ?PersonPrelabel + { + return $this->prelabel; + } + + public function setPrelabel(?PersonPrelabel $prelabel): static + { + $this->prelabel = $prelabel; + + return $this; + } } diff --git a/hesabixCore/src/Entity/PersonPrelabel.php b/hesabixCore/src/Entity/PersonPrelabel.php new file mode 100644 index 0000000..63496d6 --- /dev/null +++ b/hesabixCore/src/Entity/PersonPrelabel.php @@ -0,0 +1,93 @@ + + */ + #[ORM\OneToMany(mappedBy: 'prelabel', targetEntity: Person::class)] + private Collection $people; + + public function __construct() + { + $this->people = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getLabel(): ?string + { + return $this->label; + } + + public function setLabel(string $label): static + { + $this->label = $label; + + return $this; + } + + public function getCode(): ?string + { + return $this->code; + } + + public function setCode(string $code): static + { + $this->code = $code; + + return $this; + } + + /** + * @return Collection + */ + public function getPeople(): Collection + { + return $this->people; + } + + public function addPerson(Person $person): static + { + if (!$this->people->contains($person)) { + $this->people->add($person); + $person->setPrelabel($this); + } + + return $this; + } + + public function removePerson(Person $person): static + { + if ($this->people->removeElement($person)) { + // set the owning side to null (unless already changed) + if ($person->getPrelabel() === $this) { + $person->setPrelabel(null); + } + } + + return $this; + } +} diff --git a/hesabixCore/src/Repository/PersonPrelabelRepository.php b/hesabixCore/src/Repository/PersonPrelabelRepository.php new file mode 100644 index 0000000..514aa55 --- /dev/null +++ b/hesabixCore/src/Repository/PersonPrelabelRepository.php @@ -0,0 +1,43 @@ + + */ +class PersonPrelabelRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, PersonPrelabel::class); + } + + // /** + // * @return PersonPrelabel[] Returns an array of PersonPrelabel objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('p') + // ->andWhere('p.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('p.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?PersonPrelabel + // { + // return $this->createQueryBuilder('p') + // ->andWhere('p.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/hesabixCore/src/Service/Explore.php b/hesabixCore/src/Service/Explore.php index 136d02c..d5a3800 100644 --- a/hesabixCore/src/Service/Explore.php +++ b/hesabixCore/src/Service/Explore.php @@ -312,7 +312,11 @@ class Explore 'birthday' => $person->getBirthday(), 'speedAccess' => $person->isSpeedAccess(), 'address' => $person->getAddress(), + 'prelabel' => '', ]; + if ($person->getPrelabel()) { + $res['prelabel'] = $person->getPrelabel()->getLabel(); + } $res['accounts'] = self::ExplorePersonCards($person); if (count($typesAll) != 0) { $res['types'] = self::ExplorePersonTypes($typesAll); diff --git a/hesabixCore/templates/pdf/bank_card.html.twig b/hesabixCore/templates/pdf/bank_card.html.twig index d556904..e8f2d6e 100644 --- a/hesabixCore/templates/pdf/bank_card.html.twig +++ b/hesabixCore/templates/pdf/bank_card.html.twig @@ -48,6 +48,7 @@ فاکتور/سند تاریخ توضیحات + شرح سند تفضیل بدهکار بستانکار @@ -63,6 +64,7 @@ {{ item.doc.code }} {{ item.doc.date }} {{ item.des }} + {{ item.doc.des }} {{ item.ref.name }} {{ item.bd | number_format }} {{ item.bs | number_format }} diff --git a/hesabixCore/templates/pdf/printers/buy.html.twig b/hesabixCore/templates/pdf/printers/buy.html.twig index 2608d9b..b2314ec 100644 --- a/hesabixCore/templates/pdf/printers/buy.html.twig +++ b/hesabixCore/templates/pdf/printers/buy.html.twig @@ -125,6 +125,7 @@

نام: + {% if person.prelabel is not null %}{{ person.prelabel.label }}{% endif %} {{ person.nikename }}

diff --git a/hesabixCore/templates/pdf/printers/rfbuy.html.twig b/hesabixCore/templates/pdf/printers/rfbuy.html.twig index eee5c16..04f78f4 100644 --- a/hesabixCore/templates/pdf/printers/rfbuy.html.twig +++ b/hesabixCore/templates/pdf/printers/rfbuy.html.twig @@ -125,6 +125,7 @@

نام: + {% if person.prelabel is not null %}{{ person.prelabel.label }}{% endif %} {{ person.nikename }}

diff --git a/hesabixCore/templates/pdf/printers/rfsell.html.twig b/hesabixCore/templates/pdf/printers/rfsell.html.twig index 3f52e54..9f6158a 100644 --- a/hesabixCore/templates/pdf/printers/rfsell.html.twig +++ b/hesabixCore/templates/pdf/printers/rfsell.html.twig @@ -125,6 +125,7 @@

نام: + {% if person.prelabel is not null %}{{ person.prelabel.label }}{% endif %} {{ person.nikename }}

diff --git a/hesabixCore/templates/pdf/printers/sell.html.twig b/hesabixCore/templates/pdf/printers/sell.html.twig index c6e7570..1faa4fd 100644 --- a/hesabixCore/templates/pdf/printers/sell.html.twig +++ b/hesabixCore/templates/pdf/printers/sell.html.twig @@ -125,6 +125,7 @@

نام: + {% if person.prelabel is not null %}{{ person.prelabel.label }}{% endif %} {{ person.nikename }}