diff --git a/.gitignore b/.gitignore index 2740fefd..1d34c84e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ ci4/.env .vscode/ -xdebug.log \ No newline at end of file +*xdebug*.log* \ No newline at end of file diff --git a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php index 04334561..93aa8a42 100755 --- a/ci4/app/Controllers/Presupuestos/Presupuestocliente.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestocliente.php @@ -396,14 +396,16 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController for ($i = 0; $i < count($tirada); $i++) { $coste_envio = 0.0; + $primer_envio = false; foreach ($direcciones as $direccion) { $coste_direccion = $this->getCosteEnvio( $direccion['id'], $return_data['peso'][$i], - $direccion['unidades'], + !$primer_envio? intval($tirada[$i]) : $direccion['unidades'], $direccion['entregaPalets'] == 'true' ? 1 : 0 )[0]; + $primer_envio = true; if (!property_exists($coste_direccion, 'coste')) { diff --git a/ci4/app/Controllers/Tarifas/Tarifasenviosprecios.php b/ci4/app/Controllers/Tarifas/Tarifasenviosprecios.php index 7a190c0b..ff4ac800 100755 --- a/ci4/app/Controllers/Tarifas/Tarifasenviosprecios.php +++ b/ci4/app/Controllers/Tarifas/Tarifasenviosprecios.php @@ -1,4 +1,5 @@ -viewData['pageTitle'] = lang('TarifasEnviosPrecios.moduleTitle'); $this->viewData['usingSweetAlert'] = true; @@ -48,66 +51,68 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { } - public function index() { - + public function index() + { + $viewData = [ - 'currentModule' => static::$controllerSlug, - 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('TarifasEnviosPrecios.tarifaEnvioPrecio')]), - 'tarifaEnvioPrecioEntity' => new TarifaEnvioPrecioEntity(), - 'usingServerSideDataTable' => true, - - ]; + 'currentModule' => static::$controllerSlug, + 'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('TarifasEnviosPrecios.tarifaEnvioPrecio')]), + 'tarifaEnvioPrecioEntity' => new TarifaEnvioPrecioEntity(), + 'usingServerSideDataTable' => true, + + ]; $viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class - return view(static::$viewPath.'viewTarifaEnvioPrecioList', $viewData); + return view(static::$viewPath . 'viewTarifaEnvioPrecioList', $viewData); } - public function add() { - - + public function add() + { - - if ($this->request->getPost()) : + + + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); $postData = $this->request->getPost(); - - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : + if ($successfulResult = $this->canValidate()): // if ($successfulResult = $this->validate($this->formValidationRules) ) : - if ($this->canValidate()) : - try { - $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); - } catch (\Exception $e) { - $noException = false; - $this->dealWithException($e); - } - else: - $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio'))]); - $this->session->setFlashdata('formErrors', $this->model->errors()); - endif; - - $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission + if ($this->canValidate()): + try { + $successfulResult = $this->model->skipValidation(true)->save($sanitizedData); + } catch (\Exception $e) { + $noException = false; + $this->dealWithException($e); + } + else: + $this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio'))]); + $this->session->setFlashdata('formErrors', $this->model->errors()); + endif; + + $thenRedirect = true; // Change this to false if you want your user to stay on the form after submission endif; - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $this->model->db->insertID(); - $message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio'))]).'.'; - $message .= anchor( "admin/tarifasenviosprecios/{$id}/edit" , lang('Basic.global.continueEditing').'?'); + $message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio'))]) . '.'; + $message .= anchor("admin/tarifasenviosprecios/{$id}/edit", lang('Basic.global.continueEditing') . '?'); $message = ucfirst(str_replace("'", "\'", $message)); - if ($thenRedirect) : - if (!empty($this->indexRoute)) : - return redirect()->to(route_to( $this->indexRoute ) )->with('sweet-success', $message); + if ($thenRedirect): + if (!empty($this->indexRoute)): + return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: return $this->redirect2listView('sweet-success', $message); endif; @@ -120,97 +125,98 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { endif; // ($requestMethod === 'post') $this->viewData['tarifaEnvioPrecioEntity'] = isset($sanitizedData) ? new TarifaEnvioPrecioEntity($sanitizedData) : new TarifaEnvioPrecioEntity(); - $this->viewData['tarifaEnvioList'] = $this->getTarifaEnvioListItems($tarifaEnvioPrecioEntity->tarifa_envio_id ?? null); - $this->viewData['proveedorList'] = $this->getProveedorListItems($tarifaEnvioPrecioEntity->proveedor_id ?? null); - $this->viewData['tipoEnvioList'] = $this->getTipoEnvioOptions(); + $this->viewData['tarifaEnvioList'] = $this->getTarifaEnvioListItems($tarifaEnvioPrecioEntity->tarifa_envio_id ?? null); + $this->viewData['proveedorList'] = $this->getProveedorListItems($tarifaEnvioPrecioEntity->proveedor_id ?? null); + $this->viewData['tipoEnvioList'] = $this->getTipoEnvioOptions(); $this->viewData['formAction'] = route_to('createTarifaEnvioPrecio'); - $this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('TarifasEnviosPrecios.moduleTitle').' '.lang('Basic.global.addNewSuffix'); - + $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('TarifasEnviosPrecios.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix'); + return $this->displayForm(__METHOD__); } // end function add() - public function edit($requestedId = null) { - - if ($requestedId == null) : + public function edit($requestedId = null) + { + + if ($requestedId == null): return $this->redirect2listView(); endif; $id = filter_var($requestedId, FILTER_SANITIZE_URL); $tarifaEnvioPrecioEntity = $this->model->find($id); - if ($tarifaEnvioPrecioEntity == false) : + if ($tarifaEnvioPrecioEntity == false): $message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio')), $id]); return $this->redirect2listView('sweet-error', $message); endif; - - if ($this->request->getPost()) : + + if ($this->request->getPost()): $nullIfEmpty = true; // !(phpversion() >= '8.1'); - + $postData = $this->request->getPost(); - - $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + + $sanitizedData = $this->sanitized($postData, $nullIfEmpty); + - $noException = true; - if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) : - - + 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('TarifasEnviosPrecios.tarifaEnvioPrecio'))]); - $this->session->setFlashdata('formErrors', $this->model->errors()); - - endif; - - $tarifaEnvioPrecioEntity->fill($sanitizedData); - $thenRedirect = true; + + 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('TarifasEnviosPrecios.tarifaEnvioPrecio'))]); + $this->session->setFlashdata('formErrors', $this->model->errors()); + + endif; + + $tarifaEnvioPrecioEntity->fill($sanitizedData); + + $thenRedirect = true; endif; - if ($noException && $successfulResult) : + if ($noException && $successfulResult): $id = $tarifaEnvioPrecioEntity->id ?? $id; - $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio'))]).'.'; - $message .= anchor( "admin/tarifasenviosprecios/{$id}/edit" , lang('Basic.global.continueEditing').'?'); + $message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('TarifasEnviosPrecios.tarifaEnvioPrecio'))]) . '.'; + $message .= anchor("admin/tarifasenviosprecios/{$id}/edit", lang('Basic.global.continueEditing') . '?'); $message = ucfirst(str_replace("'", "\'", $message)); - if ($thenRedirect) : - if (!empty($this->indexRoute)) : - return redirect()->to(route_to( $this->indexRoute ) )->with('sweet-success', $message); + if ($thenRedirect): + if (!empty($this->indexRoute)): + return redirect()->to(route_to($this->indexRoute))->with('sweet-success', $message); else: return $this->redirect2listView('sweet-success', $message); endif; else: $this->session->setFlashData('sweet-success', $message); endif; - + endif; // $noException && $successfulResult endif; // ($requestMethod === 'post') $this->viewData['tarifaEnvioPrecioEntity'] = $tarifaEnvioPrecioEntity; - $this->viewData['tarifaEnvioList'] = $this->getTarifaEnvioListItems($tarifaEnvioPrecioEntity->tarifa_envio_id ?? null); - $this->viewData['proveedorList'] = $this->getProveedorListItems($tarifaEnvioPrecioEntity->proveedor_id ?? null); - $this->viewData['tipoEnvioList'] = $this->getTipoEnvioOptions(); + $this->viewData['tarifaEnvioList'] = $this->getTarifaEnvioListItems($tarifaEnvioPrecioEntity->tarifa_envio_id ?? null); + $this->viewData['proveedorList'] = $this->getProveedorListItems($tarifaEnvioPrecioEntity->proveedor_id ?? null); + $this->viewData['tipoEnvioList'] = $this->getTipoEnvioOptions(); + + $this->viewData['formAction'] = route_to('updateTarifaEnvioPrecio', $id); + + $this->viewData['boxTitle'] = lang('Basic.global.edit2') . ' ' . lang('TarifasEnviosPrecios.moduleTitle') . ' ' . lang('Basic.global.edit3'); - $this->viewData['formAction'] = route_to('updateTarifaEnvioPrecio', $id); - $this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('TarifasEnviosPrecios.moduleTitle').' '.lang('Basic.global.edit3'); - - return $this->displayForm(__METHOD__, $id); } // end function edit(...) - + public function datatable_editor() { @@ -222,62 +228,101 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { $response = Editor::inst($db, 'tarifas_envios_precios') ->fields( Field::inst('tipo_envio') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.tipo_envio.required')) - ), + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.tipo_envio.required') + ) + ), Field::inst('peso_min') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.peso_min.required')) + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.peso_min.required') + ) ) - ->validator('Validate::numeric', array( + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('TarifasEnviosPrecios.validation.peso_min.decimal')) + 'message' => lang('TarifasEnviosPrecios.validation.peso_min.decimal') + ) ), Field::inst('peso_max') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.peso_max.required')) + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.peso_max.required') + ) ) - ->validator('Validate::numeric', array( + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('TarifasEnviosPrecios.validation.peso_max.decimal')) + 'message' => lang('TarifasEnviosPrecios.validation.peso_max.decimal') + ) ), Field::inst('precio_min') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.precio.required')) + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.precio.required') + ) ) - ->validator('Validate::numeric', array( - "decimal" => ',', - 'message' => lang('TarifasEnviosPrecios.validation.precio.decimal')) + ->validator( + 'Validate::numeric', + array( + "decimal" => ',', + 'message' => lang('TarifasEnviosPrecios.validation.precio.decimal') + ) ), Field::inst('precio_max') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.precio.required')) + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.precio.required') + ) ) - ->validator('Validate::numeric', array( + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('TarifasEnviosPrecios.validation.precio.decimal')) + 'message' => lang('TarifasEnviosPrecios.validation.precio.decimal') + ) ), Field::inst('precio_adicional') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.required')) + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.required') + ) ) - ->validator('Validate::numeric', array( + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.decimal')) + 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.decimal') + ) ), Field::inst('margen') - ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') - ->validator('Validate::required', array( - 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.required')) + ->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar') + ->validator( + 'Validate::required', + array( + 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.required') + ) ) - ->validator('Validate::numeric', array( + ->validator( + 'Validate::numeric', + array( "decimal" => ',', - 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.decimal')) + 'message' => lang('TarifasEnviosPrecios.validation.precio_adicional.decimal') + ) ), Field::inst('tarifa_envio_id'), Field::inst('proveedor_id'), @@ -344,24 +389,35 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { } - public function datatable() { + public function datatable() + { if ($this->request->isAJAX()) { $reqData = $this->request->getPost(); - if (!isset($reqData['draw']) || !isset($reqData['columns']) ) { + 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); + $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'] ?? 1; + $requestedOrder2 = $reqData['order']['1']['column'] ?? $requestedOrder; + $requestedOrder3 = $reqData['order']['2']['column'] ?? $requestedOrder; $order = TarifaEnvioPrecioModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; + $order2 = TarifaEnvioPrecioModel::SORTABLE[$requestedOrder2 > 0 ? $requestedOrder2 : 1]; + $order3 = TarifaEnvioPrecioModel::SORTABLE[$requestedOrder3 > 0 ? $requestedOrder3 : 1]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; + $dir2 = $reqData['order']['0']['dir'] ?? $dir; + $dir3 = $reqData['order']['0']['dir'] ?? $dir; + + $tarifa_envio_id = $reqData['tarifa_envio_id'] ?? -1; - $resourceData = $this->model->getResource($search, $tarifa_envio_id)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + $resourceData = $this->model->getResource($search, $tarifa_envio_id) + ->orderBy($order, $dir)->orderBy($order2, $dir2)->orderBy($order3, $dir3) + ->limit($length, $start)->get()->getResultObject(); return $this->respond(Collection::datatable( $resourceData, @@ -373,15 +429,16 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { } } - public function allItemsSelect() { + public function allItemsSelect() + { if ($this->request->isAJAX()) { $onlyActiveOnes = true; $reqVal = $this->request->getPost('val') ?? 'id'; - $menu = $this->model->getAllForMenu($reqVal.', tarifa_envio_id', 'tarifa_envio_id', $onlyActiveOnes, false); + $menu = $this->model->getAllForMenu($reqVal . ', tarifa_envio_id', 'tarifa_envio_id', $onlyActiveOnes, false); $nonItem = new \stdClass; $nonItem->id = ''; - $nonItem->tarifa_envio_id = '- '.lang('Basic.global.None').' -'; - array_unshift($menu , $nonItem); + $nonItem->tarifa_envio_id = '- ' . lang('Basic.global.None') . ' -'; + array_unshift($menu, $nonItem); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -395,7 +452,8 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { } } - public function menuItems() { + public function menuItems() + { if ($this->request->isAJAX()) { $searchStr = goSanitize($this->request->getPost('searchTerm'))[0]; $reqId = goSanitize($this->request->getPost('id'))[0]; @@ -406,8 +464,8 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { $menu = $this->model->getSelect2MenuItems($columns2select, $columns2select[1], $onlyActiveOnes, $searchStr); $nonItem = new \stdClass; $nonItem->id = ''; - $nonItem->text = '- '.lang('Basic.global.None').' -'; - array_unshift($menu , $nonItem); + $nonItem->text = '- ' . lang('Basic.global.None') . ' -'; + array_unshift($menu, $nonItem); $newTokenHash = csrf_hash(); $csrfTokenName = csrf_token(); @@ -422,42 +480,45 @@ class Tarifasenviosprecios extends \App\Controllers\BaseResourceController { } - protected function getTarifaEnvioListItems($selId = null) { - $data = [''=>lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('TarifasEnvios.tarifaEnvio'))])]; - if (!empty($selId)) : - $tarifaEnvioModel = model('App\Models\Tarifas\TarifaEnvioModel'); + protected function getTarifaEnvioListItems($selId = null) + { + $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('TarifasEnvios.tarifaEnvio'))])]; + if (!empty($selId)): + $tarifaEnvioModel = model('App\Models\Tarifas\TarifaEnvioModel'); $selOption = $tarifaEnvioModel->where('id', $selId)->findColumn('id'); - if (!empty($selOption)) : + if (!empty($selOption)): $data[$selId] = $selOption[0]; endif; endif; - return $data; - } + return $data; + } - protected function getProveedorListItems($selId = null) { - $data = [''=>lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('LgProveedores.proveedor'))])]; - if (!empty($selId)) : - $proveedorModel = model('App\Models\compras\ProveedorModel'); + protected function getProveedorListItems($selId = null) + { + $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('LgProveedores.proveedor'))])]; + if (!empty($selId)): + $proveedorModel = model('App\Models\compras\ProveedorModel'); $selOption = $proveedorModel->where('id', $selId)->findColumn('id'); - if (!empty($selOption)) : + if (!empty($selOption)): $data[$selId] = $selOption[0]; endif; endif; - return $data; - } + return $data; + } - protected function getTipoEnvioOptions() { - $tipoEnvioOptions = [ - '' => lang('Basic.global.pleaseSelect'), - 'cajas' => 'cajas', - 'palets' => 'palets', - ]; - return $tipoEnvioOptions; - } + protected function getTipoEnvioOptions() + { + $tipoEnvioOptions = [ + '' => lang('Basic.global.pleaseSelect'), + 'cajas' => 'cajas', + 'palets' => 'palets', + ]; + return $tipoEnvioOptions; + } } diff --git a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php index d3e013f8..cb08bd4c 100644 --- a/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php +++ b/ci4/app/Views/themes/vuexy/form/presupuestos/cliente/items/_datosGenerales.php @@ -49,7 +49,7 @@ -
+
" >
-
+
" >
user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))? " hidden" : "" ?> class="calcular-presupuesto form-check-input" type="checkbox" id="excluirRotativa" diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js index 286cae3a..794097b8 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/direcciones.js @@ -37,7 +37,7 @@ class Direcciones { init() { - $("#clienteId").on('change', this.handleChangeCliente.bind(this)); + $("#clienteId").on('change', this.handleChangeCliente.bind(this)); this.direccionesCliente.init(); this.btnAdd.on('click', this.#insertDireccion.bind(this)); @@ -125,7 +125,7 @@ class Direcciones { validators: { callback: { callback: () => { - /* const div = $('#divErrorEnvios'); // Selecciona el div + const div = $('#divErrorEnvios'); // Selecciona el div div.find('.fv-plugins-message-container').remove(); @@ -136,7 +136,7 @@ class Direcciones { this.direcciones.forEach(direccion => { total_envio += parseInt(direccion.getUnidades()); }); - if (total_envio == unidades) { + if (total_envio <= unidades) { return true; } } @@ -144,13 +144,11 @@ class Direcciones { div.append(`
- El total de unidades enviadas no se corresponde con las unidades del pedido + El total de unidades enviadas no puede ser mayor que la tirada seleccionada
`); return false; - */ - return true; }, } @@ -260,6 +258,12 @@ class Direcciones { let id = this.direccionesCliente.getVal(); let unidades = this.unidadesAdd.val(); + + if (id == null || id <= 0 || id == undefined) + return; + if (unidades == null || unidades <= 0 || unidades == undefined) + return; + let entregaPalets = this.entregaPieCallero.is(':checked'); let divId = "dirEnvio-1"; let direccionesActuales = this.divDirecciones.find('.direccion-cliente'); @@ -267,12 +271,23 @@ class Direcciones { // the the lass item let last = direccionesActuales[direccionesActuales.length - 1]; divId = "dirEnvio-" + (parseInt(last.id.split('-')[1]) + 1); - } - if (id == null || id <= 0 || id == undefined) - return; - if (unidades == null || unidades <= 0 || unidades == undefined) - return; + let total_unidades = 0; + for (let i = 0; i < this.direcciones.length; i++) { + total_unidades += parseInt(this.direcciones[i].getUnidades()); + } + + if (total_unidades + parseInt(unidades) > this.getSelectedTirada()) { + popErrorAlert("El total de unidades enviadas tiene que ser menor que " + this.getSelectedTirada()); + return; + } + } + else { + if (unidades > this.getSelectedTirada()) { + popErrorAlert("El total de unidades enviadas tiene que ser menor que " + this.getSelectedTirada()); + return; + } + } $('#loader').modal('show'); let peticion = new Ajax('/misdirecciones/get/' + id, {}, {}, diff --git a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js index 6588b183..8efb8ee1 100644 --- a/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js +++ b/httpdocs/assets/js/safekat/pages/presupuestoCliente/presupuestoCliente.js @@ -142,8 +142,10 @@ class PresupuestoCliente { if (this.calcularPresupuesto) { if (event.target.id === 'divDirecciones') { + this.actualizarTiradasEnvio = false; + if (!this.direcciones.calcularPresupuesto) { - this.actualizarTiradasEnvio = false; + $('#loader').modal('hide'); return; } @@ -348,6 +350,16 @@ class PresupuestoCliente { #confirmPresupuesto() { + let total_unidades = 0; + this.direcciones.direcciones.forEach(element => { + total_unidades += parseInt(element.tirada.val()); + }); + + if(total_unidades != parseInt(this.direcciones.getSelectedTirada())){ + popErrorAlert("No se puede confirmar el presupuesto. La suma de las unidades enviadas no coincide con la tirada seleccionada."); + return; + } + this.#solicitudGuardarPresupuesto(true); } @@ -451,8 +463,9 @@ class PresupuestoCliente { response.precio_u[i] ); - if (this.actualizarTiradasEnvio) + if (this.actualizarTiradasEnvio){ this.direcciones.insertTirada(tiradas[i]); + } } this.lc.val(parseFloat(response.info.lomo_cubierta).toFixed(2));