viewData['pageTitle'] = lang('Pedidos.moduleTitle'); // Se indica que este controlador trabaja con soft_delete $this->viewData = ['usingServerSideDataTable' => true]; // Breadcrumbs $this->viewData['breadcrumb'] = [ ['title' => lang("App.menu_pedidos"), 'route' => "javascript:void(0);", 'active' => false], ]; parent::initController($request, $response, $logger); } public function index() { $this->viewData['usingClientSideDataTable'] = true; $this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tarifaextra.tarifaextra')]); parent::index(); } public function activos() { $viewData = [ 'currentModule' => static::$controllerSlug, 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Pedidos.pedido')]), 'presupuestoEntity' => new PedidoEntity(), 'usingServerSideDataTable' => true, 'pageTitle' => lang('Pedidos.Pedidos'), 'estadoPedidos' => 'activo', ['title' => lang("App.menu_pedidos"), 'route' => site_url('pedidos/todos'), 'active' => true] ]; return view(static::$viewPath . 'viewPedidosList', $viewData); } public function finalizados() { $viewData = [ 'currentModule' => static::$controllerSlug, 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Pedidos.pedido')]), 'presupuestoEntity' => new PedidoEntity(), 'usingServerSideDataTable' => true, 'pageTitle' => lang('Pedidos.Pedidos'), 'estadoPedidos' => 'finalizado', ['title' => lang("App.menu_pedidos"), 'route' => site_url('pedidos/todos'), 'active' => true] ]; return view(static::$viewPath . 'viewPedidosList', $viewData); } public function cancelados() { $viewData = [ 'currentModule' => static::$controllerSlug, 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Pedidos.pedido')]), 'presupuestoEntity' => new PedidoEntity(), 'usingServerSideDataTable' => true, 'pageTitle' => lang('Pedidos.Pedidos'), 'estadoPedidos' => 'cancelado', ['title' => lang("App.menu_pedidos"), 'route' => site_url('pedidos/todos'), 'active' => true] ]; return view(static::$viewPath . 'viewPedidosList', $viewData); } public function todos() { $viewData = [ 'currentModule' => static::$controllerSlug, 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Pedidos.pedido')]), 'presupuestoEntity' => new PedidoEntity(), 'usingServerSideDataTable' => true, 'pageTitle' => lang('Pedidos.Pedidos'), 'estadoPedidos' => 'todos', ['title' => lang("App.menu_pedidos"), 'route' => site_url('pedidos/todos'), 'active' => true] ]; return view(static::$viewPath . 'viewPedidosList', $viewData); } public function cambiarEstado(){ if($this->request->isAJAX()){ $id = $this->request->getPost('id'); $estado = $this->request->getPost('estado'); $this->model->where('id', $id)->set(['estado' => $estado])->update(); return $this->respond(['status' => 'success', 'message' => lang('Basic.global.success')]); }else{ return $this->failUnauthorized('Invalid request', 403); } } public function update($id = null){ if ($this->request->isAJAX()) { $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); if ($id == null) : $data = [ 'error' => 2, $csrfTokenName => $newTokenHash ]; return $this->respond($data); endif; $id = filter_var($id, FILTER_SANITIZE_URL); $pedidoEntity = $this->model->find($id); if ($pedidoEntity == false) : $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Pedidos.pedido')), $id]); $data = [ 'error' => $message, $csrfTokenName => $newTokenHash ]; return $this->respond($data); endif; if ($this->request->getPost()) : $nullIfEmpty = true; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); $sanitizedData = $this->sanitized($postData, $nullIfEmpty); // JJO $sanitizedData['user_updated_id'] = auth()->user()->id; $noException = true; if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : if ($this->canValidate()) : try { $successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData); } catch (\Exception $e) { $noException = false; $this->dealWithException($e); } else: $this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Pedidos.albaran'))]); $this->session->setFlashdata('formErrors', $this->model->errors()); endif; $pedidoEntity->fill($sanitizedData); endif; if ($noException && $successfulResult) : $id = $pedidoEntity->id ?? $id; $message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]) . '.'; $data = [ 'error' => 0, $csrfTokenName => $newTokenHash ]; return $this->respond($data); endif; // $noException && $successfulResult endif; // ($requestMethod === 'post') $data = [ 'error' => 1, $csrfTokenName => $newTokenHash ]; return $this->respond($data); } else { return $this->failUnauthorized('Invalid request', 403); } } public function edit($id=null){ if ($id == null) : return $this->redirect2listView(); endif; $id = filter_var($id, FILTER_SANITIZE_URL); $pedidoEntity = $this->model->find($id); if ($pedidoEntity == false) : $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Pedidos.pedido')), $id]); return $this->redirect2listView('sweet-error', $message); endif; $this->obtenerDatosFormulario($pedidoEntity); $this->viewData['pedidoEntity'] = $pedidoEntity; $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('Pedidos.moduleTitle') . ' ' . lang('Basic.global.edit3'); return $this->displayForm(__METHOD__, $id); } public function datatable(){ if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); if (!isset($reqData['draw']) || !isset($reqData['columns']) ) { $errstr = 'No data available in response to this specific request.'; $response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr); return $response; } $start = $reqData['start'] ?? 0; $length = $reqData['length'] ?? 5; $search = $reqData['search']['value']; $requestedOrder = $reqData['order']['0']['column'] ?? 0; $order = PedidoModel::SORTABLE_TODOS[$requestedOrder >= 0 ? $requestedOrder : 0]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; $estado = $reqData['estado'] ?? 'todos'; if($estado == 'todos') $estado = ''; $showTotal = $reqData['showTotal'] ?? false; $searchValues = get_filter_datatables_columns($reqData); $model_linea = model('\App\Models\Pedidos\PedidoLineaModel'); $resourceData = $model_linea->getResource($searchValues, $estado)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); $totalTirada = $model_linea->getSumOfTirada($searchValues, $estado, $start, $length); $total = $model_linea->getSumOfTotalAceptado($searchValues, $estado, $start, $length); $total2 = 0; if($showTotal){ $total2 = $model_linea->getTotalOfTotalAceptado(); } if($total2 != 0){ $total = "" . $total . " \n(" . $total2 . ")"; } return $this->respond(Collection::datatable( $resourceData, $model_linea->getResource("", $estado)->countAllResults(), $model_linea->getResource($searchValues, $estado)->countAllResults(), "", [ 'total_tirada' => $totalTirada, 'total' => $total ] )); } else { return $this->failUnauthorized('Invalid request', 403); } } public function obtenerPedidosForFacturas(){ if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); $start = $reqData['start'] ?? 0; } else { return $this->failUnauthorized('Invalid request', 403); } } public function getlineas(){ if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); if (!isset($reqData['draw']) || !isset($reqData['columns']) ) { $errstr = 'No data available in response to this specific request.'; $response = $this->respond(Collection::datatable( [], 0, 0, $errstr ), 400, $errstr); return $response; } $id = $reqData['pedido_id'] ?? 0; $resourceData = $this->model->obtenerLineasPedido($id); return $this->respond(Collection::datatable( $resourceData, count($resourceData), count($resourceData) )); } else { return $this->failUnauthorized('Invalid request', 403); } } private function obtenerDatosFormulario(&$pedidoEntity){ $datos = $this->model->obtenerDatosForm($pedidoEntity->id); $pedidoEntity->estadoText = lang('Pedidos.' . $pedidoEntity->estado); if(count($datos) > 0){ $pedidoEntity->cliente = $datos[0]->cliente; $pedidoEntity->cliente_id = $datos[0]->cliente_id; $pedidoEntity->comercial = $datos[0]->comercial; } $pedidoEntity->fecha_entrega_real_text = $pedidoEntity->fecha_entrega_real ? date('d/m/Y', strtotime($pedidoEntity->fecha_entrega_real)) : ''; $pedidoEntity->fecha_impresion_text = $pedidoEntity->fecha_impresion ? date('d/m/Y', strtotime($pedidoEntity->fecha_impresion)) : ''; $pedidoEntity->fecha_encuadernado_text = $pedidoEntity->fecha_encuadernado ? date('d/m/Y', strtotime($pedidoEntity->fecha_encuadernado)) : ''; $pedidoEntity->fecha_entrega_externo_text = $pedidoEntity->fecha_entrega_externo ? date('d/m/Y', strtotime($pedidoEntity->fecha_entrega_externo)) : ''; } }