diff --git a/ci4/app/Config/Routes.php b/ci4/app/Config/Routes.php index 22c478bf..c59f22ca 100755 --- a/ci4/app/Config/Routes.php +++ b/ci4/app/Config/Routes.php @@ -370,8 +370,8 @@ $routes->group('clienteprecios', ['namespace' => 'App\Controllers\Clientes'], fu $routes->post('datatable', 'Clienteprecios::datatable', ['as' => 'dataTableOfClienteprecios']); $routes->post('datatable_editor', 'Clienteprecios::datatable_editor', ['as' => 'editorOfClienteprecios']); }); -$routes->resource('clienteprecios', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'Clienteprecios', 'except' => 'show,new,create,update']); +$routes->resource('clienteprecios', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'Clienteprecios', 'except' => 'show,new,create,update']); $routes->group('clienteplantillaprecios', ['namespace' => 'App\Controllers\Clientes'], function ($routes) { $routes->get('', 'Clienteplantillaprecios::index', ['as' => 'clienteplantillapreciosList']); @@ -391,6 +391,10 @@ $routes->group('clienteplantillaprecioslineas', ['namespace' => 'App\Controllers }); $routes->resource('clienteplantillaprecioslineas', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'clienteplantillaprecioslineas', 'except' => 'show,new,create,update']); +$routes->group('clienteusuarios', ['namespace' => 'App\Controllers\Clientes'], function ($routes) { + $routes->post('datatable', 'Clienteusuarios::datatable', ['as' => 'dataTableOfClienteUsuarios']); +}); + $routes->group('formas-pagos', ['namespace' => 'App\Controllers\Configuracion'], function ($routes) { $routes->get('', 'Formaspagos::index', ['as' => 'formaDePagoList']); @@ -512,6 +516,7 @@ $routes->group('clientecontactos', ['namespace' => 'App\Controllers\Clientes'], $routes->post('(:num)/edit', 'Clientecontactos::edit/$1', ['as' => 'updateClienteContactos']); $routes->post('datatable', 'Clientecontactos::datatable', ['as' => 'dataTableOfClienteContactos']); $routes->post('datatable_editor', 'Clientecontactos::datatable_editor', ['as' => 'editorOfClienteContactos']); + $routes->get('delete/(:num)', 'Clientecontactos::delete/$1', ['as' => 'deleteClienteContactos']); $routes->post('allmenuitems', 'Clientecontactos::allItemsSelect', ['as' => 'select2ItemsOfClienteContactos']); $routes->post('menuitems', 'Clientecontactos::menuItems', ['as' => 'menuItemsOfClienteContactos']); }); diff --git a/ci4/app/Controllers/Clientes/Clientecontactos.php b/ci4/app/Controllers/Clientes/Clientecontactos.php index 3bc2f19a..7f425d01 100755 --- a/ci4/app/Controllers/Clientes/Clientecontactos.php +++ b/ci4/app/Controllers/Clientes/Clientecontactos.php @@ -60,7 +60,6 @@ class Clientecontactos extends \App\Controllers\GoBaseResourceController public function add() { - $requestMethod = $this->request->getMethod(); if ($requestMethod === 'post') : diff --git a/ci4/app/Controllers/Clientes/Clienteusuarios.php b/ci4/app/Controllers/Clientes/Clienteusuarios.php new file mode 100644 index 00000000..1324b513 --- /dev/null +++ b/ci4/app/Controllers/Clientes/Clienteusuarios.php @@ -0,0 +1,77 @@ +viewData['pageTitle'] = lang('ClienteContactos.moduleTitle'); + $this->viewData['usingSweetAlert'] = true; + parent::initController($request, $response, $logger); + } + + + + 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'] ?? 1; + $order = ClienteUsuariosModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 1]; + $dir = $reqData['order']['0']['dir'] ?? 'asc'; + + $id_C = $reqData['id_cliente'] ?? -1; + + $resourceData = $this->model->getResource("", $id_C)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + return $this->respond(Collection::datatable( + $resourceData, + $this->model->getResource()->countAllResults(), + $this->model->getResource("", $id_C)->countAllResults() + )); + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + + + +} diff --git a/ci4/app/Controllers/Tarifas/Tarifaencuadernaciontiradas.php b/ci4/app/Controllers/Tarifas/Tarifaencuadernaciontiradas.php index d2d2e827..006cd3a4 100755 --- a/ci4/app/Controllers/Tarifas/Tarifaencuadernaciontiradas.php +++ b/ci4/app/Controllers/Tarifas/Tarifaencuadernaciontiradas.php @@ -117,6 +117,24 @@ class Tarifaencuadernaciontiradas extends \App\Controllers\GoBaseResourceControl ->validator('Validate::notEmpty', array( 'message' => lang('TarifaEncuadernacionTiradas.validation.tirada_max.required')) ), + Field::inst('importe_fijo') + ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') + ->validator('Validate::numeric', array( + "decimal" => ',', + 'message' => lang('TarifaEncuadernacionTiradas.validation.tirada_min.decimal')) + ) + ->validator('Validate::notEmpty', array( + 'message' => lang('TarifaEncuadernacionTiradas.validation.tirada_min.required')) + ), + Field::inst('precio_min') + ->getFormatter( 'Format::toDecimalChar')->setFormatter( 'Format::fromDecimalChar') + ->validator('Validate::numeric', array( + "decimal" => ',', + 'message' => lang('TarifaEncuadernacionTiradas.validation.tirada_min.decimal')) + ) + ->validator('Validate::notEmpty', array( + 'message' => lang('TarifaEncuadernacionTiradas.validation.tirada_min.required')) + ), Field::inst('proveedor_id') ->validator('Validate::notEmpty', array( 'message' => lang('TarifaEncuadernacionTiradas.validation.tirada_max.required')) diff --git a/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php b/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php index 8f4d084b..87d18ebe 100755 --- a/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php +++ b/ci4/app/Entities/Tarifas/TarifaEncuadernacionEntity.php @@ -9,8 +9,6 @@ class TarifaEncuadernacionEntity extends \CodeIgniter\Entity\Entity protected $attributes = [ "id" => null, "nombre" => null, - "precio_min" => 0, - "importe_fijo" => 0, "mostrar_en_presupuesto" => 1, "tipo_encuadernacion" => 0, "servicio_encuadernacion" => 0, @@ -23,8 +21,6 @@ class TarifaEncuadernacionEntity extends \CodeIgniter\Entity\Entity "updated_at" => null, ]; protected $casts = [ - "precio_min" => "float", - "importe_fijo" => "float", "mostrar_en_presupuesto" => "int", "tipo_encuadernacion" => "int", "servicio_encuadernacion" => "int", diff --git a/ci4/app/Entities/Tarifas/TarifaEncuadernacionTirada.php b/ci4/app/Entities/Tarifas/TarifaEncuadernacionTirada.php index b432686f..1a65fe07 100755 --- a/ci4/app/Entities/Tarifas/TarifaEncuadernacionTirada.php +++ b/ci4/app/Entities/Tarifas/TarifaEncuadernacionTirada.php @@ -11,6 +11,8 @@ class TarifaEncuadernacionTirada extends \CodeIgniter\Entity\Entity "tirada_min" => 0, "tirada_max" => 0, "proveedor_id" => 0, + "precio_min" => 0, + "importe_fijo" => 0, "user_created_id" => 0, "user_updated_id" => 0, "is_deleted" => 0, @@ -22,6 +24,8 @@ class TarifaEncuadernacionTirada extends \CodeIgniter\Entity\Entity "tirada_min" => "float", "tirada_max" => "float", "proveedor_id" => "int", + "precio_min" => "float", + "importe_fijo" => "float", "user_created_id" => "int", "user_updated_id" => "int", "is_deleted" => "int", diff --git a/ci4/app/Language/es/App.php b/ci4/app/Language/es/App.php index ed5cb4c1..653da4cf 100755 --- a/ci4/app/Language/es/App.php +++ b/ci4/app/Language/es/App.php @@ -130,8 +130,8 @@ return [ "profile_subtitle_tfa" => "Autenticación de dos factores (2FA)", "profile_first_name" => "Nombre", "profile_first_name_ph" => "Escriba su nombre", - "profile_last_name" => "Apellido", - "profile_last_name_ph" => "Escriba su apellido", + "profile_last_name" => "Apellidos", + "profile_last_name_ph" => "Escriba sus apellidos", "profile_email" => "Correo Electrónico", "profile_email_ph" => "Escriba su correo electrónico", "profile_mobile" => "Teléfono Móvil", diff --git a/ci4/app/Language/es/Presupuestos.php b/ci4/app/Language/es/Presupuestos.php index e5ee4dc3..6c92c66a 100755 --- a/ci4/app/Language/es/Presupuestos.php +++ b/ci4/app/Language/es/Presupuestos.php @@ -24,6 +24,11 @@ return [ 'libroCosidoTapaDura' => "Cosido Tapa Dura", 'libroFresadoTapaBlanda' => "Fresado Tapa Blanda", 'libroFresadoTapaDura' => "Fresado Tapa Dura", + 'libroEspiralTapaDura' => "Espiral Tapa Dura", + 'libroEspiralTapaBlanda' => "Espiral Tapa Blanda", + 'libroWireoTapaDura' => "Wire-o Tapa Dura", + 'libroWireoTapaBlanda' => "Wire-o Tapa Blanda", + 'libroGrapado' => "Grapado", 'datosPresupuesto' => 'Datos generales del presupuesto', 'datosLibro' => 'Datos del libro', diff --git a/ci4/app/Language/es/TarifaEncuadernacionLineas.php b/ci4/app/Language/es/TarifaEncuadernacionLineas.php index bcc404dc..4cdd7f69 100755 --- a/ci4/app/Language/es/TarifaEncuadernacionLineas.php +++ b/ci4/app/Language/es/TarifaEncuadernacionLineas.php @@ -6,8 +6,8 @@ return [ 'id' => 'ID', 'moduleTitle' => 'Tarifa Encuadernación Lineas', 'deleteLine' => 'el registro seleccionado', - 'precioMax' => 'Precio Max', - 'precioMin' => 'Precio Min', + 'precioMax' => 'Precio Pág. Max', + 'precioMin' => 'Precio Pág. Min', 'tiempoMin' => 'Tiempo Min', 'tiempoMax' => 'Tiempo Max', 'precioHora' => 'Precio/hora', diff --git a/ci4/app/Models/Clientes/ClienteUsuariosModel.php b/ci4/app/Models/Clientes/ClienteUsuariosModel.php new file mode 100644 index 00000000..6bec17a9 --- /dev/null +++ b/ci4/app/Models/Clientes/ClienteUsuariosModel.php @@ -0,0 +1,110 @@ + "t1.first_name", + 1 => "t1.last_name", + 2 => "t1.email", + ]; + + protected $allowedFields = ["id", "first_name", "last_name", "email"]; + protected $returnType = "App\Entities\Usuarios\UserEntity"; + + protected $useTimestamps = true; + protected $useSoftDeletes = false; + + protected $createdField = "created_at"; + + protected $updatedField = "updated_at"; + + public static $labelField = "nombre"; + + protected $validationRules = [ + "last_name" => [ + "label" => "ClienteContactos.apellidos", + "rules" => "trim|max_length[500]", + ], + "email" => [ + "label" => "ClienteContactos.email", + "rules" => "trim|max_length[150]|valid_email|permit_empty", + ], + "first_name" => [ + "label" => "ClienteContactos.nombre", + "rules" => "trim|max_length[100]", + ], + ]; + + protected $validationMessages = [ + "last_name" => [ + "max_length" => "ClienteContactos.validation.apellidos.max_length", + ], + + "email" => [ + "max_length" => "ClienteContactos.validation.email.max_length", + "valid_email" => "ClienteContactos.validation.email.valid_email", + ], + "first_name" => [ + "max_length" => "ClienteContactos.validation.nombre.max_length", + ], + ]; + + public function findAllWithClientes(string $selcols = "*", int $limit = null, int $offset = 0) + { + $sql = + "SELECT t1." . + $selcols . + ", t2.nombre AS cliente_id FROM " . + $this->table . + " t1 LEFT JOIN clientes t2 ON t1.cliente_id = t2.id"; + if (!is_null($limit) && intval($limit) > 0) { + $sql .= " LIMIT " . $limit; + } + + if (!is_null($offset) && intval($offset) > 0) { + $sql .= " OFFSET " . $offset; + } + + $query = $this->db->query($sql); + $result = $query->getResultObject(); + return $result; + } + + /** + * Get resource data. + * + * @param string $search + * + * @return \CodeIgniter\Database\BaseBuilder + */ + public function getResource(string $search = "", $cliente_id = -1) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id_user AS id, t1.first_name AS nombre, t1.last_name AS apellidos, t1.email AS email" + ); + + $builder->where('t1.id_user', $cliente_id); + + return empty($search) + ? $builder + : $builder + ->groupStart() + ->like("t1.first_name", $search) + ->orLike("t1.last_name", $search) + ->orLike("t1.email", $search) + ->groupEnd(); + } +} diff --git a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php index 30f327b6..ac18482a 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php @@ -297,7 +297,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel private function calcularTarifa($tarifa, $paginas, $ejemplares, $is_POD=false){ - $precio_unidad = floatval($tarifa->precio_min) - (floatval($tarifa->precio_min) - floatval($tarifa->precio_max))/($tarifa->paginas_max - $tarifa->paginas_min) * ($paginas - $tarifa->paginas_min); + $precio_unidad = floatval($tarifa->precio_max) - (floatval($tarifa->precio_max) - floatval($tarifa->precio_min))/($tarifa->paginas_max - $tarifa->paginas_min) * ($paginas - $tarifa->paginas_min); if ($paginas > $tarifa->paginas_max) $precio_unidad = $tarifa->precio_max; $precio_unidad = $precio_unidad* (1+ floatval($tarifa->margen)/100.0); diff --git a/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php b/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php index 7dc92afe..38585ac2 100755 --- a/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php +++ b/ci4/app/Models/Tarifas/TarifaEncuadernacionModel.php @@ -14,18 +14,14 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel const SORTABLE = [ 0 => "t1.nombre", - 1 => "t1.precio_min", - 2 => "t1.importe_fijo", - 3 => "t1.mostrar_en_presupuesto", - 4 => "t1.tipo_encuadernacion", - 5 => "t1.servicio_encuadernacion", + 1 => "t1.mostrar_en_presupuesto", + 2 => "t1.tipo_encuadernacion", + 3 => "t1.servicio_encuadernacion", ]; protected $allowedFields = [ "nombre", - "precio_min", - "importe_fijo", "mostrar_en_presupuesto", "tipo_encuadernacion", "servicio_encuadernacion", @@ -51,30 +47,13 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel "label" => "Tarifaencuadernacion.nombre", "rules" => "trim|required|max_length[255]", ], - - "precio_min" => [ - "label" => "Tarifaencuadernacion.precioMin", - "rules" => "required|decimal", - ], - "importe_fijo" => [ - "label" => "Tarifaencuadernacion.importeFijo", - "rules" => "required|decimal", - ], ]; protected $validationMessages = [ "nombre" => [ "max_length" => "Tarifaencuadernacion.validation.nombre.max_length", "required" => "Tarifaencuadernacion.validation.nombre.required", - ], - "precio_min" => [ - "required" => "Tarifaencuadernacion.validation.precio_min.required", - "decimal" => "Tarifaencuadernacion.validation.precio_min.decimal", - ], - "importe_fijo" => [ - "required" => "Tarifaencuadernacion.validation.importe_fijo.required", - "decimal" => "Tarifaencuadernacion.validation.importe_fijo.decimal", - ], + ] ]; /** @@ -87,7 +66,7 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel public function getResource(string $search = "") { $builder = $this->db->table($this->table . " t1")->select("t1.id AS id, t1.nombre AS nombre, - t1.precio_min AS precio_min, t1.importe_fijo AS importe_fijo, t1.mostrar_en_presupuesto AS mostrar_en_presupuesto, + t1.mostrar_en_presupuesto AS mostrar_en_presupuesto, t1.tipo_encuadernacion AS tipo_encuadernacion, t1.servicio_encuadernacion AS servicio_encuadernacion, t1.por_horas AS por_horas"); @@ -144,7 +123,7 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t1.precio_min AS tarifa_precio_min, t1.importe_fijo AS tarifa_importe_fijo, + "t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t2.precio_min AS tarifa_precio_min, t2.importe_fijo AS tarifa_importe_fijo, t2.id AS tarifa_tirada_id, t2.proveedor_id AS proveedor_id, t5.nombre AS proveedor_nombre, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max, t3.id AS tarifa_linea_id, t3.paginas_libro_min AS paginas_min, t3.paginas_libro_max AS paginas_max, t3.precio_min AS precio_min, t3.precio_max AS precio_max, t3.margen AS margen, t4.ancho_min AS ancho_min, t4.ancho_max AS ancho_max, t4.alto_min AS alto_min, t4.alto_max AS alto_max" @@ -180,7 +159,7 @@ class TarifaEncuadernacionModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t1.precio_min AS tarifa_precio_min, t1.importe_fijo AS tarifa_importe_fijo, + "t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t2.precio_min AS tarifa_precio_min, t2.importe_fijo AS tarifa_importe_fijo, t2.id AS tarifa_tirada_id, t2.proveedor_id AS proveedor_id, t5.nombre AS proveedor_nombre, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max, t3.id AS tarifa_linea_id, t3.tiempo_min AS tiempo_min, t3.tiempo_max AS tiempo_max, t3.precio_hora AS precio_hora, t3.margen AS margen" ) diff --git a/ci4/app/Models/Tarifas/TarifaEncuadernacionTiradaModel.php b/ci4/app/Models/Tarifas/TarifaEncuadernacionTiradaModel.php index d51f52f7..dc3805b5 100755 --- a/ci4/app/Models/Tarifas/TarifaEncuadernacionTiradaModel.php +++ b/ci4/app/Models/Tarifas/TarifaEncuadernacionTiradaModel.php @@ -16,7 +16,8 @@ class TarifaEncuadernacionTiradaModel extends \App\Models\GoBaseModel 0 => "t3.nombre", 1 => "t1.tirada_min", 2 => "t1.tirada_max", - + 3 => "t1.precio_min", + 4 => "t1.importe_fijo", ]; protected $allowedFields = [ @@ -24,6 +25,8 @@ class TarifaEncuadernacionTiradaModel extends \App\Models\GoBaseModel "tirada_min", "tirada_max", "proveedor_id", + "precio_min", + "importe_fijo", "user_created_id", "user_updated_id", "is_deleted", @@ -49,7 +52,15 @@ class TarifaEncuadernacionTiradaModel extends \App\Models\GoBaseModel "tirada_min" => [ "label" => "TarifaEncuadernacionTiradas.tiradaMin", "rules" => "required|integer", - ] + ], + "precio_min" => [ + "label" => "Tarifaencuadernacion.precioMin", + "rules" => "required|decimal", + ], + "importe_fijo" => [ + "label" => "Tarifaencuadernacion.importeFijo", + "rules" => "required|decimal", + ], ]; protected $validationMessages = [ @@ -60,7 +71,15 @@ class TarifaEncuadernacionTiradaModel extends \App\Models\GoBaseModel "tirada_min" => [ "integer" => "TarifaEncuadernacionTiradas.validation.tirada_min.integer", "required" => "TarifaEncuadernacionTiradas.validation.tirada_min.required", - ] + ], + "precio_min" => [ + "required" => "Tarifaencuadernacion.validation.precio_min.required", + "decimal" => "Tarifaencuadernacion.validation.precio_min.decimal", + ], + "importe_fijo" => [ + "required" => "Tarifaencuadernacion.validation.importe_fijo.required", + "decimal" => "Tarifaencuadernacion.validation.importe_fijo.decimal", + ], ]; /** @@ -75,8 +94,10 @@ class TarifaEncuadernacionTiradaModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.tarifa_encuadernacion_id AS tarifa_encuadernacion_id, t1.tirada_min AS tirada_min, - t1.tirada_max AS tirada_max, t3.nombre AS proveedor, t3.id AS proveedor_id, t2.id AS tarifa_encuadernacion" + "t1.id AS id, t1.tarifa_encuadernacion_id AS tarifa_encuadernacion_id, + t1.precio_min AS precio_min, t1.importe_fijo AS importe_fijo, + t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, + t3.nombre AS proveedor, t3.id AS proveedor_id, t2.id AS tarifa_encuadernacion" ); //JJO $builder->where('tarifa_encuadernacion_id', $tarifa_encuadernacion_id); @@ -92,10 +113,14 @@ class TarifaEncuadernacionTiradaModel extends \App\Models\GoBaseModel ->groupStart() ->Like("t1.tirada_min", $search) ->orLike("t1.tirada_max", $search) + ->orLike("t1.precio_min", $search) + ->orLike("t1.importe_fijo", $search) ->orLike("t3.nombre", $search) ->orLike("t1.tirada_min", $search) ->orLike("t1.tirada_max", $search) ->orLike("t3.nombre", $search) + ->orLike("t1.precio_min", $search) + ->orLike("t1.importe_fijo", $search) ->groupEnd(); } diff --git a/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php b/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php index 9c195cfb..6f0ddc22 100755 --- a/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php +++ b/ci4/app/Views/themes/_commonPartialsBs/_alertBoxes.php @@ -22,7 +22,7 @@ if (session()->has('error')) { -section('additionalInlineJs') ?> +section('globalJsFunctions') ?> function popAlert(message, alertClass, alertIcon, containerId = 'sk-alert'){ var htmlString = ` diff --git a/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php index 66c48389..93a16106 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php @@ -564,7 +564,6 @@ -
@@ -610,7 +609,6 @@
-
@@ -629,7 +627,6 @@
-
@@ -662,7 +659,20 @@
-

Proximanente

+
+ + + + + + + + + + + + +
ID
@@ -673,27 +683,6 @@ - - - - - -
- - -
- -*/ ?> - @@ -701,6 +690,12 @@ /**************************************** Funcionamiento general *****************************************/ +const url = window.location.href; +const url_parts = url.split('/'); +let id = -1; +if(url_parts[url_parts.length-2] == 'edit'){ + id = url_parts[url_parts.length-1]; +} $(document).on('click', '.btn-remove', function(e) { @@ -718,18 +713,21 @@ $(document).on('click', '.btn-remove', function(e) { } }); - endSection() ?> section("additionalInlineJs") ?> +/**************************************** + Contactos +*****************************************/ + const lastColNr = $('#tableOfClienteContactos').find("tr:first th").length - 1; const actionBtns = function(data) { return ` - + `; }; @@ -779,7 +777,6 @@ $(document).on('click', '.btn-remove', function(e) { editor.on( 'postSubmit', function ( e, json, data, action ) { - yeniden(json.); }); @@ -803,33 +800,27 @@ $(document).on('click', '.btn-remove', function(e) { ); } ); - // Delete row - $('#tableOfClienteContactos').on( 'click', 'tbody span.remove', function (e) { + $(document).on('click', '.btn-deleted', function(e) { + $(".btn-remove").attr('data-id', $(this).attr('data-id')); + }); - Swal.fire({ - title: '', - text: '', - icon: 'warning', - showCancelButton: true, - confirmButtonColor: '#3085d6', - confirmButtonText: '', - cancelButtonText: '', - cancelButtonColor: '#d33' - }) - .then((result) => { - const dataId = $(this).data('id'); - const row = $(this).closest('tr'); - if (result.value) { - editor - .create( false ) - .edit( this.parentNode, false) - .set( 'deleted_at', new Date().toISOString().slice(0, 19).replace('T', ' ') ) - .set( 'is_deleted', 1 ) - .submit(); - - } - }); + $(document).on('click', '.btn-remove', function(e) { + const dataId = $(this).attr('data-id'); + const row = $(this).closest('tr'); + if ($.isNumeric(dataId)) { + $.ajax({ + url: `/clientecontactos/delete/${dataId}`, + method: 'GET', + }).done((data, textStatus, jqXHR) => { + $('#confirm2delete').modal('toggle'); + theTable.clearPipeline(); + theTable.row($(row)).invalidate().draw(); + popSuccessAlert(data.msg ?? jqXHR.statusText); + }).fail((jqXHR, textStatus, errorThrown) => { + popErrorAlert(jqXHR.responseJSON.messages.error) + }) + } }); var theTable = $('#tableOfClienteContactos').DataTable( { @@ -1457,6 +1448,67 @@ function delete_direccion_envio(dataId){ endSection() ?> +section("additionalInlineJs") ?> +/**************************************** + Contactos +*****************************************/ + + const lastColNrCU = $('#tableOfClienteUsuarios').find("tr:first th").length - 1; + + var theTableCU = $('#tableOfClienteUsuarios').DataTable( { + serverSide: true, + processing: true, + autoWidth: true, + responsive: true, + lengthMenu: [ 5, 10, 25], + order: [[ 0, "asc" ], [ 1, "asc" ]], + pageLength: 10, + lengthChange: true, + searching: false, + paging: true, + info: false, + dom: '<"mt-4"><"float-end"B><"float-start"l><"mt-4 mb-3"p>', + ajax : $.fn.dataTable.pipeline( { + url: '', + data: { + //id_cliente: id, + id_cliente: 1, + }, + method: 'POST', + headers: {'X-Requested-With': 'XMLHttpRequest'}, + async: true, + }), + columns: [ + { 'data': 'id' }, + { 'data': 'nombre' }, + { 'data': 'apellidos' }, + { 'data': 'email' }, + { + data: actionBtns, + className: 'row-edit dt-center' + } + ], + columnDefs: [ + { + orderable: false, + searchable: false, + targets: [lastColNrCU] + }, + { + "orderData": [ 0, 1 ], + "targets": 0 + }, + + ], + language: { + url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json" + } + } ); + +endSection() ?> + + + section('css') ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/viewClienteForm.php b/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/viewClienteForm.php index 6770633d..09387422 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/viewClienteForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/viewClienteForm.php @@ -49,7 +49,7 @@ $('#saveForm').click(); } } - }); + }); $('#soporteId').select2({ @@ -230,11 +230,9 @@ section('css') ?> - "> - endSection() ?> diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/buscador/viewBuscadorList.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/buscador/viewBuscadorList.php index d32bb435..1b5c671b 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/buscador/viewBuscadorList.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/buscador/viewBuscadorList.php @@ -121,6 +121,11 @@ $('#tableOfPresupuestos thead tr:eq(1) th').each(function (i) { selector.append(''); selector.append(''); selector.append(''); + selector.append(''); + selector.append(''); + selector.append(''); + selector.append(''); + selector.append(''); selector.on('change', function () { var val = $.fn.dataTable.util.escapeRegex( @@ -207,6 +212,27 @@ theTable = $('#tableOfPresupuestos').DataTable({ return ''; break; + + case "libroEspiralTapaDura": + return ''; + break; + + case "libroEspiralTapaBlanda": + return ''; + break; + + case "libroWireoTapaDura": + return ''; + break; + + case "libroWireoTapaBlanda": + return ''; + break; + + case "libroGrapado": + return ''; + break; + default: return data; // Debug break; diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js index 9557bf8c..a7e48a22 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js @@ -220,6 +220,7 @@ $(document).on('click', '.delete-add-row', function(e) { update_resumen: true, update_tiradas_alternativas: true }) + showBreadCrumbSaveButton(true); }) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php index 2745c180..9aa9fefe 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php @@ -173,4 +173,4 @@ - \ No newline at end of file + diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js index a8860fa7..c403406c 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js @@ -2,7 +2,6 @@ * Seccion para las funciones generales de la pagina ***************************************************************************************/ - $('.nav-servicios button').on('shown.bs.tab', function(){ $("#tableOfServiciosEncuadernacion").DataTable().columns.adjust(); $("#tableOfServiciosPreimpresion").DataTable().columns.adjust(); @@ -16,6 +15,7 @@ $('#serv_default').on('click', function(){ get_tarifas_enc('default').then( get_tarifas_manipulado('default') ) + showBreadCrumbSaveButton(true); }) // Delete row @@ -73,6 +73,7 @@ $(document).on('click', '.btn-delete-serv', function(e) { update_tiradas_alternativas: true }) //updateTotales(false, true, false) + showBreadCrumbSaveButton(true); }); @@ -369,6 +370,8 @@ $('#insertar_serv_acabado').on('click', function(){ popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-acabado-alert'); } check_serv_acabado_error(); + showBreadCrumbSaveButton(true); + }) @@ -1298,13 +1301,16 @@ function servicioFerro(){ } $('#insertar_serv_preimpresion').on('click', function(){ - const tarifa_text = $('#add_servicio_preimpresion_list').select2('data')[0].text.trim() - - if( $('#add_servicio_preimpresion_list').select2('data')[0].text.trim().length > 0){ - if($('#tableOfServiciosPreimpresion tr > td:contains(' + tarifa_text + ')').length == 0) - get_tarifas_preimpresion($('#add_servicio_preimpresion_list').select2('data')[0].id); - else{ - popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-preimpresion-alert') + + let data = $('#add_servicio_preimpresion_list').select2('data'); + if (data.length > 0) { + const tarifa_text = data[0].text.trim(); + if (tarifa_text.length > 0) { + if ($('#tableOfServiciosPreimpresion tr > td:contains(' + tarifa_text + ')').length == 0) + get_tarifas_preimpresion(data[0].id); + else { + popErrorAlert(window.Presupuestos.errores.error_servicios_duplicados, 'serv-preimpresion-alert'); + } } } check_serv_preimpresion_error() diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js index 8226a9d6..e49ed7ab 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_lineasPresupuestoItems.js @@ -852,7 +852,7 @@ var tableLineasPresupuesto = new DataTable('#tableLineasPresupuesto',{ var select = $(' - -
- - -
- -
- - -
- + diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php index c7b305fd..742260fe 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionForm.php @@ -49,6 +49,8 @@ + + @@ -78,9 +80,9 @@ ID - - + + @@ -470,11 +472,11 @@ { name: "paginas_libro_min" }, { - name: "precio_max" + name: "precio_min" }, { name: "paginas_libro_max" }, { - name: "precio_min" + name: "precio_max" }, { name: "margen" }, { @@ -659,6 +661,10 @@ name: "tirada_min" }, { name: "tirada_max" + }, { + name: "precio_min" + }, { + name: "importe_fijo" }, { "name": "tarifa_encuadernacion_id", "type": "hidden" @@ -740,6 +746,8 @@ }, { 'data': 'tirada_min' }, { 'data': 'tirada_max' }, + { 'data': 'precio_min' }, + { 'data': 'importe_fijo' }, { data: actionBtns, className: 'row-edit dt-center' diff --git a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php index 527b32ba..a186abdb 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php +++ b/ci4/app/Views/themes/backend/vuexy/form/tarifas/encuadernacion/viewTarifaEncuadernacionList.php @@ -17,8 +17,6 @@ - - @@ -90,8 +88,6 @@ ], columns : [ { 'data': 'nombre' }, - { 'data': 'precio_min' }, - { 'data': 'importe_fijo' }, { 'data': 'mostrar_en_presupuesto' }, { 'data': 'tipo_encuadernacion' }, { 'data': 'servicio_encuadernacion' }, @@ -100,7 +96,7 @@ }); theTable.on( 'draw.dt', function () { - const boolCols = [3,4,5]; + const boolCols = [1,2,3]; for (let coln of boolCols) { theTable.column(coln, { page: 'current' }).nodes().each( function (cell, i) { cell.innerHTML = cell.innerHTML == '1' ? '' : ''; diff --git a/ci4/app/Views/themes/backend/vuexy/main/activities_layout.php b/ci4/app/Views/themes/backend/vuexy/main/activities_layout.php index f1925adf..a3d7e3af 100755 --- a/ci4/app/Views/themes/backend/vuexy/main/activities_layout.php +++ b/ci4/app/Views/themes/backend/vuexy/main/activities_layout.php @@ -139,6 +139,19 @@ if (!empty($token) && $tfa == false) { + + + + + + + + + + + + + + + +