mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
181 lines
6.4 KiB
PHP
181 lines
6.4 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\Logistica;
|
|
|
|
use App\Controllers\BaseController;
|
|
use App\Services\ImpresoraEtiquetaService;
|
|
use App\Services\LogisticaService;
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
use Hermawan\DataTables\DataTable;
|
|
|
|
class LogisticaController extends BaseController
|
|
{
|
|
|
|
protected ImpresoraEtiquetaService $impresoraEtiquetaService;
|
|
protected string $locale;
|
|
protected array $viewData;
|
|
|
|
protected static $controllerSlug = 'logistica';
|
|
protected static $viewPath = 'themes/vuexy/form/logistica/';
|
|
|
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
|
{
|
|
$this->impresoraEtiquetaService = service('impresora_etiqueta');
|
|
$this->locale = session()->get('lang');
|
|
|
|
$this->viewData['pageTitle'] = lang('Logistica.logistica');
|
|
|
|
// Breadcrumbs
|
|
$this->viewData['breadcrumb'] = [
|
|
['title' => lang("App.menu_logistica"), 'route' => "javascript:void(0);", 'active' => false],
|
|
];
|
|
|
|
|
|
parent::initController($request, $response, $logger);
|
|
}
|
|
public function print_test_label()
|
|
{
|
|
$etiquetaData = $this->impresoraEtiquetaService->test();
|
|
$responseMessage = $etiquetaData["status"] ? "OK" : "ERROR";
|
|
return $this->response->setJSON(["message" => $responseMessage, "data" => $etiquetaData, "status" => $etiquetaData["status"]]);
|
|
}
|
|
|
|
public function panel()
|
|
{
|
|
$viewData = [
|
|
'currentModule' => static::$controllerSlug,
|
|
'boxTitle' => lang('Logistica.panel'),
|
|
'pageSubTitle' => 'Panel',
|
|
'usingServerSideDataTable' => true,
|
|
];
|
|
|
|
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
|
|
|
|
return view(static::$viewPath . 'viewPanelLogistica', $viewData);
|
|
}
|
|
|
|
public function selectorEnvios($tipoEnvio = null)
|
|
{
|
|
$viewData = [
|
|
'currentModule' => static::$controllerSlug,
|
|
'boxTitle' => lang('Logistica.envioSimpleMultiple'),
|
|
'usingServerSideDataTable' => true,
|
|
'tipoEnvio' => $tipoEnvio,
|
|
];
|
|
|
|
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
|
|
|
|
return view(static::$viewPath . 'viewLogisticaSelectEnvios', $viewData);
|
|
}
|
|
|
|
public function searchPedidoOrISBN($search = "", $envio_id = null)
|
|
{
|
|
|
|
if (empty($search)) {
|
|
$result = [
|
|
'status' => false,
|
|
'message' => lang('Logistica.errors.noDataToFind'),
|
|
];
|
|
return $this->response->setJSON($result);
|
|
}
|
|
$result = LogisticaService::findPedidoOrISBN($search, $envio_id);
|
|
return $this->response->setJSON($result);
|
|
}
|
|
|
|
public function selectAddEnvioLinea(){
|
|
|
|
if ($this->request->isAJAX()) {
|
|
$query = LogisticaService::findLineaEnvio($this->request->getGet('direccion'))->orderBy("nombre", "asc");
|
|
if ($this->request->getGet("q")) {
|
|
$query->groupStart()
|
|
->orLike("pedidos.id", $this->request->getGet("q"))
|
|
->orLike("presupuestos.titulo", $this->request->getGet("q"))
|
|
->groupEnd();
|
|
}
|
|
|
|
return $this->response->setJSON($query->get()->getResultObject());
|
|
} else {
|
|
return $this->failUnauthorized('Invalid request', 403);
|
|
}
|
|
}
|
|
|
|
public function datatable_envios()
|
|
{
|
|
$model = model('App\Models\Logistica\EnvioModel');
|
|
$q = $model->getDatatableQuery();
|
|
|
|
|
|
$result = DataTable::of($q)
|
|
->edit(
|
|
"finalizado",
|
|
function ($row, $meta) {
|
|
if ($row->finalizado == 1)
|
|
return '<i class="ti ti-check"></i>';
|
|
else
|
|
return '<i class="ti ti-x"></i>';
|
|
}
|
|
)
|
|
->add("action", callback: function ($q) {
|
|
|
|
return '
|
|
<div class="btn-group btn-group-sm">
|
|
<a href="javascript:void(0);"><i class="ti ti-eye ti-sm btn-edit mx-2" data-id="' . $q->id . '"></i></a>
|
|
</div>
|
|
';
|
|
});
|
|
|
|
return $result->toJson(returnAsObject: true);
|
|
}
|
|
|
|
public function editEnvio($id = null){
|
|
|
|
if (empty($id)) {
|
|
return redirect()->to(base_url('logistica/selectEnvios/simple'))->with('error', lang('Logistica.errors.noEnvio'));
|
|
}
|
|
$model = model('App\Models\Logistica\EnvioModel');
|
|
$envioEntity = $model->select('envios.*, lg_paises.nombre as pais')
|
|
->join('lg_paises', 'lg_paises.id = envios.pais_id', 'left')
|
|
->where('envios.id', $id)
|
|
->first();
|
|
if (empty($envioEntity)) {
|
|
return redirect()->to(base_url('logistica/selectEnvios/simple'))->with('error', lang('Logistica.errors.noEnvio'));
|
|
}
|
|
|
|
$viewData = [
|
|
'currentModule' => static::$controllerSlug,
|
|
'boxTitle' => '<i class="ti ti-truck ti-xl"></i>' . ' '. lang('Logistica.envio') . ' [' . $envioEntity->id . ']: ' . $envioEntity->direccion,
|
|
'usingServerSideDataTable' => true,
|
|
'envioEntity' => $envioEntity,
|
|
];
|
|
|
|
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
|
|
|
|
return view(static::$viewPath . 'viewEnvioEditForm', $viewData);
|
|
}
|
|
|
|
public function datatable_enviosEdit($idEnvio)
|
|
{
|
|
$model = model('App\Models\Logistica\EnvioLineaModel');
|
|
$q = $model->getDatatableQuery($idEnvio);
|
|
|
|
|
|
$result = DataTable::of($q)
|
|
->add("rowSelected",callback: function ($q) {
|
|
return '<input type="checkbox" class="form-check-input" name="row_selected[]" value="' . $q->id . '">';
|
|
}
|
|
)
|
|
->add("action", callback: function ($q) {
|
|
|
|
return '
|
|
<div class="btn-group btn-group-sm">
|
|
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="' . $q->id . '"></i></a>
|
|
</div>
|
|
';
|
|
});
|
|
|
|
return $result->toJson(returnAsObject: true);
|
|
}
|
|
}
|