276 lines
8.7 KiB
PHP
276 lines
8.7 KiB
PHP
<?php
|
|
|
|
namespace KupShop\CheckAppBundle\Controller;
|
|
|
|
use KupShop\AdminBundle\AdminRequiredControllerInterface;
|
|
use KupShop\CheckAppBundle\Exception\OrderCheckException;
|
|
use KupShop\CheckAppBundle\Exception\StockInException;
|
|
use KupShop\CheckAppBundle\Util\OrderCheckoutWorker;
|
|
use KupShop\CheckAppBundle\Util\ReclamationSupplierCheckoutWorker;
|
|
use KupShop\CheckAppBundle\Util\ReturnCheckoutWorker;
|
|
use KupShop\CheckAppBundle\Util\StockInWorker;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\Routing\Annotation\Route;
|
|
|
|
class CheckAppRequiredController extends AbstractController implements AdminRequiredControllerInterface
|
|
{
|
|
/**
|
|
* @var \KupShop\WarehouseBundle\Util\StockInWorker
|
|
*/
|
|
private $stockInWorker;
|
|
|
|
public function __construct(StockInWorker $stockInWorker)
|
|
{
|
|
$this->stockInWorker = $stockInWorker;
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/addEan")
|
|
*/
|
|
public function addEanAction(Request $request)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
return new JsonResponse($this->stockInWorker->addEan($jsonResponse->id, $jsonResponse->ean));
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/generateEan")
|
|
*/
|
|
public function generateEanAction(Request $request)
|
|
{
|
|
$jsonRequest = json_decode($request->getContent());
|
|
|
|
return new JsonResponse($this->stockInWorker->generateEan($jsonRequest->id));
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/getOrderCheckData")
|
|
*
|
|
* @throws \Exception
|
|
*/
|
|
public function GetOrderCheckDataAction(Request $request, OrderCheckoutWorker $orderCheckoutWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
$result = true;
|
|
$order = null;
|
|
/** @var $order \Order */
|
|
if (!$error = $orderCheckoutWorker->checkOrder($jsonResponse->id, $order)) {
|
|
$data = $orderCheckoutWorker->getOrderCheckData($order->id);
|
|
|
|
if ($data === false) {
|
|
$data = [];
|
|
$result = false;
|
|
}
|
|
} else {
|
|
$result = false;
|
|
}
|
|
|
|
$packages = 1;
|
|
if ($order) {
|
|
$packages = $order->getData('balikobot')['packages'] ?? 1;
|
|
}
|
|
|
|
return new JsonResponse([
|
|
'id' => $jsonResponse->id,
|
|
'id_order' => $order->id ?? $jsonResponse->id,
|
|
'order_no' => $order->order_no ?? '',
|
|
'packages' => $packages,
|
|
'items' => $data ?? [],
|
|
'error' => $error,
|
|
'result' => $result,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/submitOrderCheckout")
|
|
*/
|
|
public function submitOrderCheckout(Request $request, OrderCheckoutWorker $orderCheckoutWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
try {
|
|
if (findModule(\Modules::PRODUCTS_SERIAL_NUMBERS)) {
|
|
$orderCheckoutWorker->checkoutOrderSerialNumbers($jsonResponse->items);
|
|
}
|
|
|
|
if ($jsonResponse->packages) {
|
|
$order = \Order::createFromDbOrderNo($jsonResponse->id);
|
|
$data = $order->getData('balikobot');
|
|
$data = $data ? $data : [];
|
|
$data['packages'] = $jsonResponse->packages;
|
|
$order->setData('balikobot', $data);
|
|
}
|
|
|
|
return new JsonResponse($orderCheckoutWorker->checkoutOrder($jsonResponse->id));
|
|
} catch (OrderCheckException $e) {
|
|
return new JsonResponse([
|
|
'result' => false,
|
|
'keepState' => true,
|
|
'message' => $e->getMessage(),
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/getReturnCheckData")
|
|
*
|
|
* @throws \Exception
|
|
*/
|
|
public function GetReturnCheckDataAction(Request $request, ReturnCheckoutWorker $returnCheckoutWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
$data = $returnCheckoutWorker->getReturnCheckData($jsonResponse->id);
|
|
|
|
return new JsonResponse([
|
|
'id' => $jsonResponse->id,
|
|
'items' => $data ?? [],
|
|
'error' => null,
|
|
'result' => !empty($data),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/submitReturnCheckout")
|
|
*/
|
|
public function submitReturnCheckout(Request $request, ReturnCheckoutWorker $returnCheckoutWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
try {
|
|
if (findModule(\Modules::PRODUCTS_SERIAL_NUMBERS)) {
|
|
$returnCheckoutWorker->checkoutReturnSerialNumbers($jsonResponse->items);
|
|
}
|
|
|
|
if (findModule(\Modules::PRODUCTS_BATCHES)) {
|
|
$returnCheckoutWorker->checkoutReturnBatchNumbers($jsonResponse->items);
|
|
}
|
|
|
|
return new JsonResponse($returnCheckoutWorker->checkoutReturn($jsonResponse->id, $jsonResponse->items));
|
|
} catch (OrderCheckException $e) {
|
|
return new JsonResponse([
|
|
'result' => false,
|
|
'keepState' => true,
|
|
'message' => $e->getMessage(),
|
|
]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/getStockInData")
|
|
*
|
|
* @throws \Exception
|
|
*/
|
|
public function GetStockInDataAction(Request $request, StockInWorker $stockInWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
$stockIn = $stockInWorker->getStockIn($jsonResponse->id);
|
|
if (empty($stockIn['code'])) {
|
|
$result = false;
|
|
$error = 'Naskladňující faktura nemá vyplněné "Číslo faktury"!';
|
|
|
|
return new JsonResponse([
|
|
'id' => $jsonResponse->id,
|
|
'items' => [],
|
|
'result' => $result,
|
|
'error' => $error,
|
|
]);
|
|
}
|
|
|
|
$data = $stockInWorker->getStockInData($jsonResponse->id);
|
|
|
|
$result = !empty($data);
|
|
$error = null;
|
|
|
|
return new JsonResponse([
|
|
'id' => $jsonResponse->id,
|
|
'items' => $data,
|
|
'result' => $result,
|
|
'error' => $error,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/submitStockIn")
|
|
*
|
|
* @throws \Exception
|
|
*/
|
|
public function submitStockInAction(Request $request, StockInWorker $stockInWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
try {
|
|
$result = ['result' => $stockInWorker->submitStockIn($jsonResponse->id, $jsonResponse->items)];
|
|
} catch (StockInException $e) {
|
|
$result = [
|
|
'result' => false,
|
|
'message' => 'message: '.$e->getMessage(),
|
|
];
|
|
}
|
|
|
|
return new JsonResponse($result);
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/getReclamationSupplierCheckData")
|
|
*
|
|
* @throws \Exception
|
|
*/
|
|
public function getReclamationSupplierCheckDataAction(Request $request, ReclamationSupplierCheckoutWorker $reclamationSupplierCheckoutWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
$data = $reclamationSupplierCheckoutWorker->getReclamationSupplierCheckData($jsonResponse->id);
|
|
|
|
return new JsonResponse([
|
|
'id' => $jsonResponse->id,
|
|
'items' => $data ?? [],
|
|
'error' => null,
|
|
'result' => !empty($data),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*
|
|
* @Route("/_warehouse/check-app/submitReclamationSupplierCheckout")
|
|
*/
|
|
public function submitReclamationSupplierCheckout(Request $request, ReclamationSupplierCheckoutWorker $reclamationSupplierCheckoutWorker)
|
|
{
|
|
$jsonResponse = json_decode($request->getContent());
|
|
|
|
try {
|
|
return new JsonResponse($reclamationSupplierCheckoutWorker->checkoutReclamationSupplier($jsonResponse->id, $jsonResponse->items));
|
|
} catch (OrderCheckException $e) {
|
|
return new JsonResponse([
|
|
'result' => false,
|
|
'keepState' => true,
|
|
'message' => $e->getMessage(),
|
|
]);
|
|
}
|
|
}
|
|
}
|