src/Controller/InvoiceController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\InvoiceService;
  4. use Psr\Log\LoggerAwareInterface;
  5. use Psr\Log\LoggerAwareTrait;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class InvoiceController extends AbstractController implements LoggerAwareInterface
  10. {
  11.     use LoggerAwareTrait;
  12.     /**
  13.      * @Route("/efinans/einvoice/create", name="efinans_einvoice_create")
  14.      */
  15.     public function create(Request $requestInvoiceService $invoiceService)
  16.     {
  17.         $formData json_decode($request->getContent(), true);
  18.         $params $formData['params'];
  19.         $credentials $formData['credentials'];
  20.         if (count($credentials) === 0) {
  21.             $this->json(['status' => false'message' => 'Mağaza kullanıcı bilgileri gereklidir.']);
  22.         }
  23.         $invoiceService->setCredentials($credentials['username'], $credentials['password']);
  24.         $requestParams = [
  25.             'id' => sprintf('%s%s%s'$credentials['prefix'], date('Y'), ''),
  26.             'uuid' => uuid_create(UUID_TYPE_RANDOM),
  27.             'datetime' => new \DateTime(),
  28.             'vkn' => $this->getParameter('app.efinans.vkn'),
  29.             'store' => [
  30.                 'name' => $params['store']['name'], // 'Merkez',
  31.                 'address' => $params['store']['address'], // '1675 Sk. No: 1',
  32.                 'town' => $params['store']['town'], // 'Konak',
  33.                 'postal_code' => $params['store']['postal_code'], // '35220',
  34.                 'phone' => $params['store']['phone'], // '02322792315',
  35.             ],
  36.             'customer' => [
  37.                 'vkn' => $params['customer']['vkn'], // '64867025200',
  38.                 'name' => 'Ali Emre Ç',
  39.                 'company' => $params['customer']['company'], // 'Webridge Yazılım Tasarım Bilişim Rek. Hiz.',
  40.                 'owner' => $params['customer']['owner'], // 'Ali Emre Çakmakoğlu',
  41.                 'phone' => $params['customer']['phone'], // '05382272616',
  42.                 'city' => $params['customer']['city'], // 'İzmir',
  43.             ],
  44.             'tax' => number_format($params['tax'], 2), // 1800,
  45.             'amount' => number_format($params['amount'], 2), // 10000,
  46.             'total_amount' => number_format($params['total_amount'], 2), // 11800,
  47.             'item' => [
  48.                 'serial_number' => $params['item']['serial_number'], // 'ABC2009123456789',
  49.                 'description' => $params['item']['description'], // 'Hohoho',
  50.                 'description_more' => $params['item']['description_more'], // 'Lololo',
  51.                 'product' => $params['item']['product'], // 'Rolex 123'
  52.             ],
  53.         ];
  54.         $invoice $invoiceService->createInvoice($requestParams);
  55.         if ($invoiceService->hasError()) {
  56.             $errors implode('---'$invoiceService->getErrors());
  57.             return $this->json(['error' => ['message' => $errors]]);
  58.         }
  59.         return $this->json(['invoice' => $invoice]);
  60.     }
  61.     /**
  62.      * @Route("/efinans/einvoice/cancel", name="efinans_einvoice_cancel", methods={"POST"})
  63.      */
  64.     public function cancel(Request $requestInvoiceService $invoiceService)
  65.     {
  66.         $formData json_decode($request->getContent(), true);
  67.         $credentials $formData['credentials'];
  68.         if (count($credentials) === 0) {
  69.             $this->json(['status' => false'message' => 'Mağaza kullanıcı bilgileri gereklidir.']);
  70.         }
  71.         $invoiceService->setCredentials($credentials['username'], $credentials['password']);
  72.         $response $invoiceService->cancelInvoice($formData['invoiceUUId']);
  73.         return $this->json(['message' => $response]);
  74.     }
  75. }