+ برای اتصال پرینترهای ابری الزاما باید این نرم افزار بر روی رایانه مورد نظر نصب باشد. +
+ + +پیش نیازها:
+-
+
- + Dotnet framework 6 runtime + +
- + Adobe Acrobat Reader 2010 یا نسخه بالاتر + +
diff --git a/hesabixCore/config/services.yaml b/hesabixCore/config/services.yaml index 6bfd2ab..922d3b4 100644 --- a/hesabixCore/config/services.yaml +++ b/hesabixCore/config/services.yaml @@ -46,4 +46,7 @@ services: arguments: [ "@doctrine.orm.entity_manager" ] registryMGR: class: App\Service\registryMGR + arguments: [ "@doctrine.orm.entity_manager" ] + Printers: + class: App\Service\Printers arguments: [ "@doctrine.orm.entity_manager" ] \ No newline at end of file diff --git a/hesabixCore/src/Controller/Front/UiGeneralController.php b/hesabixCore/src/Controller/Front/UiGeneralController.php index c698a4d..43ea3f4 100644 --- a/hesabixCore/src/Controller/Front/UiGeneralController.php +++ b/hesabixCore/src/Controller/Front/UiGeneralController.php @@ -142,4 +142,10 @@ class UiGeneralController extends AbstractController return $this->render('general/repservice.html.twig',); } + #[Route('/front/apps/hesabixbox', name: 'general_apps_hesabixbox')] + public function general_apps_hesabixbox(EntityManagerInterface $entityManager): Response + { + return $this->render('general/hesabixbox.html.twig',); + } + } diff --git a/hesabixCore/src/Controller/PrintersController.php b/hesabixCore/src/Controller/PrintersController.php index 11340b5..e8b4aaa 100644 --- a/hesabixCore/src/Controller/PrintersController.php +++ b/hesabixCore/src/Controller/PrintersController.php @@ -3,6 +3,7 @@ namespace App\Controller; use App\Entity\Printer; +use App\Entity\PrintItem; use App\Service\Access; use App\Service\Extractor; use App\Service\Log; @@ -89,4 +90,25 @@ class PrintersController extends AbstractController 'result' => 1 ]); } + + #[Route('/api/print/last', name: 'app_print_last')] + public function app_print_last(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): Response + { + $acc = $access->hasRole('owner'); + if (!$acc) + throw $this->createAccessDeniedException(); + $printer = $entityManager->getRepository(Printer::class)->findBy([ + 'bid' => $acc['bid'], + 'token'=>$request->headers->get('printer-key') + ]); + $items = $entityManager->getRepository(PrintItem::class)->findBy([ + 'printer' => $printer, + 'printed' => false + ]); + if(count($items) == 0) return new Response(''); + $items[count($items) - 1]->setPrinted(true); + $entityManager->persist($items[count($items) - 1]); + $entityManager->flush(); + return new Response($items[count($items) - 1]->getType() . ',' .$items[count($items) - 1]->getFile()); + } } diff --git a/hesabixCore/src/Controller/SellController.php b/hesabixCore/src/Controller/SellController.php index a7ebd38..e9d0ddf 100644 --- a/hesabixCore/src/Controller/SellController.php +++ b/hesabixCore/src/Controller/SellController.php @@ -14,6 +14,7 @@ use App\Entity\HesabdariTable; use App\Entity\InvoiceType; use App\Entity\Person; use App\Entity\StoreroomTicket; +use App\Service\Printers; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -315,7 +316,7 @@ class SellController extends AbstractController } #[Route('/api/sell/posprinter/invoice', name: 'app_sell_posprinter_invoice')] - public function app_sell_posprinter_invoice(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): JsonResponse + public function app_sell_posprinter_invoice(Printers $printers, Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): JsonResponse { $params = []; if ($content = $request->getContent()) { @@ -330,9 +331,9 @@ class SellController extends AbstractController 'code' => $params['code'] ]); if (!$doc) throw $this->createNotFoundException(); - $posPrint = false; - if(array_key_exists('posprint',$params)) $posPrint = true; - $pid = $provider->createPrint( + $pdfPid = 0; + if ($params['pdf']) { + $pdfPid = $provider->createPrint( $acc['bid'], $this->getUser(), $this->renderView('pdf/posPrinters/sell.html.twig', [ @@ -342,8 +343,38 @@ class SellController extends AbstractController 'printInvoice'=>$params['posPrint'], 'printcashdeskRecp'=>$params['posPrintRecp'], ]), - true - ); - return $this->json(['id' => $pid]); + true + ); + } + + + if ($params['posPrint'] == true) { + $pid = $provider->createPrint( + $acc['bid'], + $this->getUser(), + $this->renderView('pdf/posPrinters/justSell.html.twig', [ + 'bid' => $acc['bid'], + 'doc' => $doc, + 'rows' => $doc->getHesabdariRows(), + ]), + true + ); + $printers->addFile($pid, $acc, "fastSellInvoice"); + } + if ($params['posPrintRecp'] == true) { + $pid = $provider->createPrint( + $acc['bid'], + $this->getUser(), + $this->renderView('pdf/posPrinters/cashdesk.html.twig', [ + 'bid' => $acc['bid'], + 'doc' => $doc, + 'rows' => $doc->getHesabdariRows(), + ]), + true + ); + $printers->addFile($pid, $acc, "fastSellCashdesk"); + } + + return $this->json(['id' => $pdfPid]); } } diff --git a/hesabixCore/src/Entity/PrintItem.php b/hesabixCore/src/Entity/PrintItem.php index 5df59db..1be0ca8 100644 --- a/hesabixCore/src/Entity/PrintItem.php +++ b/hesabixCore/src/Entity/PrintItem.php @@ -23,6 +23,9 @@ class PrintItem #[ORM\Column(nullable: true)] private ?bool $printed = null; + #[ORM\Column(length: 255)] + private ?string $type = null; + public function getId(): ?int { return $this->id; @@ -63,4 +66,16 @@ class PrintItem return $this; } + + public function getType(): ?string + { + return $this->type; + } + + public function setType(string $type): static + { + $this->type = $type; + + return $this; + } } diff --git a/hesabixCore/src/Service/Printers.php b/hesabixCore/src/Service/Printers.php new file mode 100644 index 0000000..712b0da --- /dev/null +++ b/hesabixCore/src/Service/Printers.php @@ -0,0 +1,40 @@ +em = $entityManager; + } + + public function addFile(string $filename,array $acc,string $type){ + $printers = $this->em->getRepository(Printer::class)->findBy([ + 'bid'=>$acc['bid'] + ]); + foreach($printers as $printer){ + $item = new PrintItem(); + $item->setPrinted(false); + $item->setPrinter($printer); + $item->setType($type); + $item->setFile($filename); + $this->em->persist($item); + } + $this->em->flush(); + } +} \ No newline at end of file diff --git a/hesabixCore/templates/base.html.twig b/hesabixCore/templates/base.html.twig index 52edaac..667dff6 100644 --- a/hesabixCore/templates/base.html.twig +++ b/hesabixCore/templates/base.html.twig @@ -257,6 +257,11 @@ افزونه مدیریت تعمیرگاه +
+ برای اتصال پرینترهای ابری الزاما باید این نرم افزار بر روی رایانه مورد نظر نصب باشد. +
+ + +تاریخ : + {{doc.date}} + | +شماره : + # + {{doc.code | number_format}} + | +
+ قبض صندوق + | +
---|
کالا | +تعداد | +
---|---|
{{row.commodity.name}} | +{{row.commdityCount}} | +
{{ bid.name }}
+تاریخ : + {{doc.date}} + | +شماره : + # + {{doc.code | number_format}} + | +
+ صورتحساب + | +
---|
کالا | +تعداد | +فی | +جمع | +
---|---|---|---|
{{row.commodity.name}} | +{{row.commdityCount}} | +{{(row.bs / row.commdityCount) | number_format}} | +{{row.bs | number_format}} | +
جمع فاکتور | +{{doc.amount | number_format}} | +