From f43208578d9cc52a3e52403a1b2082a3880dca53 Mon Sep 17 00:00:00 2001 From: babak alizadeh Date: Thu, 27 Jun 2024 18:20:46 +0330 Subject: [PATCH] some progress in printing system --- hesabixCore/config/services.yaml | 3 + .../Controller/Front/UiGeneralController.php | 6 + .../src/Controller/PrintersController.php | 22 +++ hesabixCore/src/Controller/SellController.php | 45 ++++- hesabixCore/src/Entity/PrintItem.php | 15 ++ hesabixCore/src/Service/Printers.php | 40 ++++ hesabixCore/templates/base.html.twig | 5 + .../templates/general/hesabixbox.html.twig | 66 +++++++ .../pdf/posPrinters/cashdesk.html.twig | 168 ++++++++++++++++ .../pdf/posPrinters/justSell.html.twig | 186 ++++++++++++++++++ .../templates/pdf/posPrinters/sell.html.twig | 6 +- 11 files changed, 551 insertions(+), 11 deletions(-) create mode 100644 hesabixCore/src/Service/Printers.php create mode 100644 hesabixCore/templates/general/hesabixbox.html.twig create mode 100644 hesabixCore/templates/pdf/posPrinters/cashdesk.html.twig create mode 100644 hesabixCore/templates/pdf/posPrinters/justSell.html.twig 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 @@ افزونه مدیریت تعمیرگاه +
  • + + + حسابیکس باکس +
  • diff --git a/hesabixCore/templates/general/hesabixbox.html.twig b/hesabixCore/templates/general/hesabixbox.html.twig new file mode 100644 index 0000000..c597ed0 --- /dev/null +++ b/hesabixCore/templates/general/hesabixbox.html.twig @@ -0,0 +1,66 @@ +{% extends "base.html.twig" %} +{% block title %} +حسابیکس باکس رابط ویندوزی حسابیکس +{% endblock %} +{% block body %} +
    + +
    +
    +
    +

    + +

    +

    حسابیکس باکس رابط ویندوزی حسابیکس

    +

    + رابط تحت ویندوز حسابیکس با نام حسابیکس باکس جهت ارتباط با حسابیکس بر روی بستر ویندوز توسعه داده شده است و هماکنون در مرحله آزمایشی قرار دارد. +

    + + + + دریافت حسابیکس باکس + + +
    + +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    +
    +

    + برای اتصال پرینتر‌های ابری الزاما باید این نرم افزار بر روی رایانه مورد نظر نصب باشد. +

    + + +
    +
    +

    پیش نیاز‌ها:

    +
      +
    • + Dotnet framework 6 runtime +
    • +
    • + Adobe Acrobat Reader 2010 یا نسخه بالاتر +
    • +
    +
    +
    + +
    +
    +
    + +
    +{% endblock %} diff --git a/hesabixCore/templates/pdf/posPrinters/cashdesk.html.twig b/hesabixCore/templates/pdf/posPrinters/cashdesk.html.twig new file mode 100644 index 0000000..4a4082e --- /dev/null +++ b/hesabixCore/templates/pdf/posPrinters/cashdesk.html.twig @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + +
    تاریخ : + {{doc.date}} + شماره : + # + {{doc.code | number_format}} +
    + قبض صندوق +
    + + + + + + + + + + + {% for row in rows %} + {% if row.commodity != null %} + + + + + {% endif %} + {% endfor %} + +
    کالاتعداد
    {{row.commodity.name}}{{row.commdityCount}}
    +
    +

    {{ bid.name }}

    +
    + + + diff --git a/hesabixCore/templates/pdf/posPrinters/justSell.html.twig b/hesabixCore/templates/pdf/posPrinters/justSell.html.twig new file mode 100644 index 0000000..79fad43 --- /dev/null +++ b/hesabixCore/templates/pdf/posPrinters/justSell.html.twig @@ -0,0 +1,186 @@ + + + + + + + +
    +

    {{ bid.name }}

    +
    + + + + + + + + + + +
    تاریخ : + {{doc.date}} + شماره : + # + {{doc.code | number_format}} +
    + صورتحساب +
    + + + + + + + + + + + + + {% for row in rows %} + {% if row.commodity != null %} + + + + + + + {% endif %} + {% endfor %} + + + + + +
    کالاتعدادفیجمع
    {{row.commodity.name}}{{row.commdityCount}}{{(row.bs / row.commdityCount) | number_format}}{{row.bs | number_format}}
    جمع فاکتور{{doc.amount | number_format}}
    +
    + + از خرید شما متشکریم + +
    +
    +

    {{ bid.address }}

    +

    {{ bid.tel }}

    +

    hesabix.ir

    +
    + + + diff --git a/hesabixCore/templates/pdf/posPrinters/sell.html.twig b/hesabixCore/templates/pdf/posPrinters/sell.html.twig index 95ce1bb..b48e835 100644 --- a/hesabixCore/templates/pdf/posPrinters/sell.html.twig +++ b/hesabixCore/templates/pdf/posPrinters/sell.html.twig @@ -1,6 +1,5 @@ -