mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'feat/sk-17' into 'main'
feat : duplicar papel impresion con relaciones See merge request jjimenez/safekat!482
This commit is contained in:
@ -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']);
|
||||
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
*========================================================================**/
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,8 @@ return [
|
||||
'Profile' => 'Perfil',
|
||||
'Roles' => 'Roles',
|
||||
'Save' => 'Guardar',
|
||||
'Copy' => 'Copiar',
|
||||
'Duplicate' => 'Duplicar',
|
||||
'Sections' => 'Secciones',
|
||||
'SignOut' => 'Desconectar',
|
||||
'Success' => 'Éxito',
|
||||
|
||||
@ -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',
|
||||
|
||||
66
ci4/app/Services/PapelImpresionService.php
Normal file
66
ci4/app/Services/PapelImpresionService.php
Normal 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;
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -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()
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user