Merge branch 'main' into 'add/presu_admin_add_services'

Main

See merge request jjimenez/safekat!483
This commit is contained in:
2025-01-21 07:32:52 +00:00
10 changed files with 837 additions and 650 deletions

View File

@ -276,6 +276,7 @@ $routes->group('papelesimpresion', ['namespace' => 'App\Controllers\Configuracio
$routes->post('datatable', 'Papelesimpresion::datatable', ['as' => 'dataTableOfPapelesImpresion']);
$routes->post('allmenuitems', 'Papelesimpresion::allItemsSelect', ['as' => 'select2ItemsOfPapelesImpresion']);
$routes->post('menuitems', 'Papelesimpresion::menuItems', ['as' => 'menuItemsOfPapelesImpresion']);
$routes->post('duplicate/(:num)','Papelesimpresion::duplicate/$1',['as' => 'duplicatePapelImpresion']);
});
$routes->resource('papelesimpresion', ['namespace' => 'App\Controllers\Configuracion', 'controller' => 'Papelesimpresion', 'except' => 'show,new,create,update']);

View File

@ -3,6 +3,7 @@
namespace Config;
use App\Services\FTPService;
use App\Services\PapelImpresionService;
use CodeIgniter\Config\BaseService;
use App\Services\ProductionService;
use App\Services\TarifaMaquinaService;
@ -38,4 +39,8 @@ class Services extends BaseService
public static function tarifa_maquina(){
return new TarifaMaquinaService();
}
public static function papel_impresion()
{
return new PapelImpresionService();
}
}

View File

@ -43,6 +43,14 @@ class Validation extends BaseConfig
// Rules
// --------------------------------------------------------------------
/**
* PapelImpresion duplicate validation
*
* @var array
*/
public array $papel_impresion_duplicate = [
"name" => "required|string"
];
/**========================================================================
* TARIFA MAQUINA ACABADO
*========================================================================**/

View File

@ -22,6 +22,7 @@ use
use App\Models\Collection;
use CodeIgniter\Validation\Validation;
@ -35,7 +36,6 @@ use App\Models\Configuracion\PapelImpresionTipologiaModel;
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
use App\Models\Configuracion\MaquinaModel;
class Papelesimpresion extends \App\Controllers\BaseResourceController
{
@ -52,6 +52,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController
protected static $viewPath = 'themes/vuexy/form/configuracion/papel/';
protected $indexRoute = 'papelImpresionList';
protected Validation $validation;
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
@ -66,6 +67,7 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController
$this->delete_flag = 1;
$this->tpModel = new PapelImpresionTipologiaModel();
$this->validation = service("validation");
// Breadcrumbs
$this->viewData['breadcrumb'] = [
@ -443,4 +445,27 @@ class Papelesimpresion extends \App\Controllers\BaseResourceController
$ma_pa_model->updateRows($active_values);
}
}
/**
* Duplica el papel impresion y sus relaciones
*
* @param int $papel_impresion_id
* @return Response
*/
public function duplicate( int $papel_impresion_id)
{
$bodyData = $this->request->getPost();
$validated = $this->validation->run($bodyData, "papel_impresion_duplicate");
if($validated){
$papelImpresionEntity = $this->model->find($papel_impresion_id);
$papelImpresionService = service('papel_impresion');
$duplicated = $papelImpresionService
->setPapelImpresionEntity($papelImpresionEntity)
->duplicate($bodyData["name"]);
return $this->response->setJSON(["data" => $duplicated]);
}else{
return $this->response->setJSON(["errors" => $this->validation->getErrors()])->setStatusCode(400);
}
}
}

View File

@ -1,6 +1,9 @@
<?php
namespace App\Entities\Configuracion;
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
use App\Models\Configuracion\PapelImpresionMargenModel;
use App\Models\Configuracion\PapelImpresionTipologiaModel;
use CodeIgniter\Entity;
class PapelImpresion extends \CodeIgniter\Entity\Entity
@ -49,4 +52,20 @@ class PapelImpresion extends \CodeIgniter\Entity\Entity
"use_for_tapa_dura" => "boolean",
"is_deleted" => "int",
];
public function tipologia() : ?PapelImpresionTipologia
{
$m = model(PapelImpresionTipologiaModel::class);
return $m->where('papel_impresion_id',$this->attributes["id"])->first();
}
public function maquinas_impresion() : ?MaquinasPapelesImpresionEntity
{
$m = model(MaquinasPapelesImpresionModel::class);
return $m->where('papel_impresion_id',$this->attributes["id"])->first();
}
public function margen() : ?PapelImpresionMargen
{
$m = model(PapelImpresionMargenModel::class);
return $m->where('papel_impresion_id',$this->attributes["id"])->first();
}
}

View File

@ -28,6 +28,8 @@ return [
'Profile' => 'Perfil',
'Roles' => 'Roles',
'Save' => 'Guardar',
'Copy' => 'Copiar',
'Duplicate' => 'Duplicar',
'Sections' => 'Secciones',
'SignOut' => 'Desconectar',
'Success' => 'Éxito',

View File

@ -39,6 +39,7 @@ return [
'activo' => 'Activo?',
'useInClient' => 'Usar en presup. cliente',
'userUpdateId' => 'ID usuario actualización',
'namePlaceholderDuplicated' => 'Inserte el nombre del papel que se va a duplicar',
'consumo_tintas_rotativas' => 'Consumo tintas',
'maquinas_papel' => 'Máquinas seleccionadas',

View File

@ -0,0 +1,66 @@
<?php
namespace App\Services;
use App\Entities\Configuracion\PapelImpresion;
use App\Models\Configuracion\MaquinasPapelesImpresionModel;
use App\Models\Configuracion\PapelImpresionMargenModel;
use App\Models\Configuracion\PapelImpresionModel;
use App\Models\Configuracion\PapelImpresionTipologiaModel;
use CodeIgniter\Config\BaseService;
class PapelImpresionService extends BaseService
{
protected PapelImpresionModel $papelImpresionModel;
protected PapelImpresionTipologiaModel $papelImpresionTipologiaModel;
protected MaquinasPapelesImpresionModel $maquinaPapelImpresionModel;
protected PapelImpresionMargenModel $papelImpresionMargenModel;
protected MaquinasPapelesImpresionModel $papelImpresionMaquinaModel;
protected PapelImpresion $papelImpresion;
public function __construct() {
$this->papelImpresionModel = model(PapelImpresionModel::class);
$this->papelImpresionModel = model(PapelImpresionModel::class);
$this->papelImpresionMargenModel = model(PapelImpresionMargenModel::class);
$this->papelImpresionTipologiaModel = model(PapelImpresionTipologiaModel::class);
$this->papelImpresionMaquinaModel = model(MaquinasPapelesImpresionModel::class);
}
public function setPapelImpresionEntity(PapelImpresion $papelImpresionEntity) : self
{
$this->papelImpresion = $papelImpresionEntity;
return $this;
}
public function duplicate(string $newName) : PapelImpresion
{
$papelImpresionRow = $this->papelImpresion?->toArray();
$papelImpresionMargen = $this->papelImpresion->margen()?->toArray();
$papelImpresionTipologia = $this->papelImpresion->tipologia()?->toArray();
$papelImpresionMaquina = $this->papelImpresion->maquinas_impresion()?->toArray();
$papelImpresionRow['nombre'] = $newName;
if($this->papelImpresion){
$papelImpresionDuplicatedId = $this->papelImpresionModel->insert($papelImpresionRow);
}
if($papelImpresionMargen){
$papelImpresionMargen['papel_impresion_id'] = $papelImpresionDuplicatedId;
$this->papelImpresionMargenModel->insert($papelImpresionMargen);
}
if($papelImpresionTipologia){
$this->papelImpresionTipologiaModel->insert($papelImpresionTipologia);
$papelImpresionTipologia['papel_impresion_id'] = $papelImpresionDuplicatedId;
}
if($papelImpresionMaquina){
$papelImpresionMaquina['papel_impresion_id'] = $papelImpresionDuplicatedId;
$this->papelImpresionMaquinaModel->insert($papelImpresionMaquina);
}
$papelImpresionDuplicated = $this->papelImpresionModel->find($papelImpresionDuplicatedId);
return $papelImpresionDuplicated;
}
}

View File

@ -0,0 +1,29 @@
import Ajax from "../../../components/ajax.js"
import Modal from "../../../components/modal.js";
$(() => {
let papelImpresionId = $("#papelImpresionForm").data("id");
const uri = '/configuracion/papelesimpresion/duplicate/' + papelImpresionId;
let modalPapelDuplicate = new Modal($("#modalPapelImpresionDuplicate"))
$("#btn-papel-impresion-duplicate").on("click", (event) => {
modalPapelDuplicate.toggle();
$("#btn-new-papel-impresion-duplicate").on("click", () => {
let name = $("#duplicated_name").val()
const ajax = new Ajax(uri,
{ name: name },
null,
(response) => {
modalPapelDuplicate.toggle();
$("#btn-new-papel-impresion-duplicate").off();
$("#duplicated_name").addClass("is-valid").removeClass('d-none');
window.open('/configuracion/papelesimpresion/edit/' + response.data.id)
},
(error) => {
$("#duplicated_name").removeClass("is-valid").addClass("is-invalid")
}
)
ajax.post()
})
})
})