ya funcionando la consulta de papel_impresion/maquinas

This commit is contained in:
Jaime Jimenez
2023-09-25 08:03:28 +02:00
parent ad55a2290f
commit d9afa9a1ef
10 changed files with 251 additions and 144 deletions

View File

@ -52,19 +52,12 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController
// Build our Editor instance and process the data coming from _POST // Build our Editor instance and process the data coming from _POST
$response = Editor::inst($db, 'maquinas_calles') $response = Editor::inst($db, 'maquinas_calles')
->fields( ->fields(
Field::inst('formas_min') Field::inst('formas')
->validator('Validate::numeric', array( ->validator('Validate::numeric', array(
'message' => lang('MaquinasCalles.validation.formas_min.integer')) 'message' => lang('MaquinasCalles.validation.formas.integer'))
) )
->validator('Validate::notEmpty', array( ->validator('Validate::notEmpty', array(
'message' => lang('MaquinasCalles.validation.formas_min.required')) 'message' => lang('MaquinasCalles.validation.formas.required'))
),
Field::inst('formas_max')
->validator('Validate::numeric', array(
'message' => lang('MaquinasCalles.validation.formas_max.integer'))
)
->validator('Validate::notEmpty', array(
'message' => lang('MaquinasCalles.validation.formas_max.required'))
), ),
Field::inst('internas') Field::inst('internas')
->validator('Validate::numeric', array( ->validator('Validate::numeric', array(
@ -94,10 +87,9 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController
foreach ($data['data'] as $pkey => $values) { foreach ($data['data'] as $pkey => $values) {
// Si no se quiere borrar... // Si no se quiere borrar...
if ($data['data'][$pkey]['is_deleted'] != 1) { if ($data['data'][$pkey]['is_deleted'] != 1) {
$process_data['formas_min'] = $data['data'][$pkey]['formas_min']; $process_data['formas'] = $data['data'][$pkey]['formas'];
$process_data['formas_max'] = $data['data'][$pkey]['formas_max'];
$process_data['maquina_id'] = $data['data'][$pkey]['maquina_id']; $process_data['maquina_id'] = $data['data'][$pkey]['maquina_id'];
$response = $this->model->checkIntervals($process_data, $pkey); $response = $this->model->checkDuplicatedFormas($process_data, $pkey);
// No se pueden duplicar valores al crear o al editar // No se pueden duplicar valores al crear o al editar
if (!empty($response)) { if (!empty($response)) {
return $response; return $response;

View File

@ -2,7 +2,8 @@
namespace App\Controllers; namespace App\Controllers;
use App\Models\Configuracion\MaquinasCallesModel; use App\Models\Presupuestos\PresupuestoModel;
use App\Services\PresupuestoService;
class Test extends BaseController class Test extends BaseController
{ {
@ -15,11 +16,7 @@ class Test extends BaseController
public function index() public function index()
{ {
$model = new MaquinasCallesModel(); PresupuestoService::test();
echo '<pre>';
$resourceData = $model->getResource("", 113)->get()->getResultObject();
var_dump($resourceData);
echo '</pre>';
} }
} }

View File

@ -8,8 +8,7 @@ class MaquinasCallesEntity extends \CodeIgniter\Entity\Entity
protected $attributes = [ protected $attributes = [
"id" => null, "id" => null,
"maquina_id" => null, "maquina_id" => null,
"formas_min" => null, "formas" => null,
"formas_max" => null,
"internas" => 3.32, "internas" => 3.32,
"externas" => 1.66, "externas" => 1.66,
"user_created_id" => 0, "user_created_id" => 0,
@ -20,8 +19,7 @@ class MaquinasCallesEntity extends \CodeIgniter\Entity\Entity
]; ];
protected $casts = [ protected $casts = [
"maquina_id" => "int", "maquina_id" => "int",
"formas_min" => "int", "formas" => "int",
"formas_max" => "int",
"internas" => "float", "internas" => "float",
"externas" => "float", "externas" => "float",
"user_created_id" => "int", "user_created_id" => "int",

View File

@ -6,20 +6,12 @@ return [
'id' => 'ID', 'id' => 'ID',
'moduleTitle' => 'Streets config', 'moduleTitle' => 'Streets config',
'deleteLine' => 'the selected register', 'deleteLine' => 'the selected register',
'formas_min' => 'Shapes mín.', 'formas' => 'Shapes',
'formas_max' => 'Shapes max.',
'internas' => 'Internal streets', 'internas' => 'Internal streets',
'externas' => 'External streets', 'externas' => 'External streets',
'validation' => [ 'validation' => [
'error_calle_overlap' => 'The range [Shapes mín, Shapes max] is overlapped with another one.', 'error_formas_exists' => 'The shape value for another line already exists',
'error_calle_range' => 'The field Shapes min. must be lower than the field Shapes max.', 'formas' => [
'formas_min' => [
'integer' => 'Must be a integer number.',
'required' => 'Required.',
],
'formas_max' => [
'integer' => 'Must be a integer number.', 'integer' => 'Must be a integer number.',
'required' => 'Required.', 'required' => 'Required.',

View File

@ -6,20 +6,12 @@ return [
'id' => 'ID', 'id' => 'ID',
'moduleTitle' => 'Configuración Calles', 'moduleTitle' => 'Configuración Calles',
'deleteLine' => 'el registro seleccionado', 'deleteLine' => 'el registro seleccionado',
'formas_min' => 'Formas mín.', 'formas' => 'Formas',
'formas_max' => 'Formas max.',
'internas' => 'Calles internas', 'internas' => 'Calles internas',
'externas' => 'Calles externas', 'externas' => 'Calles externas',
'validation' => [ 'validation' => [
'error_calle_overlap' => 'El rango [Formas mín, Formas max] se solapa con otro existente para el tipo seleccionado.', 'error_formas_exists' => 'Ya existe el valor de forma para otra línea',
'error_calle_range' => 'El campo Formas mín. debe ser menor que el campo Formas max.', 'formas' => [
'formas_min' => [
'integer' => 'Debe contener un número entero.',
'required' => 'Requerido.',
],
'formas_max' => [
'integer' => 'Debe contener un número entero.', 'integer' => 'Debe contener un número entero.',
'required' => 'Requerido.', 'required' => 'Requerido.',

View File

@ -1,4 +1,5 @@
<?php <?php
namespace App\Models\Configuracion; namespace App\Models\Configuracion;
class MaquinaModel extends \App\Models\GoBaseModel class MaquinaModel extends \App\Models\GoBaseModel
@ -252,12 +253,13 @@ class MaquinaModel extends \App\Models\GoBaseModel
return $result; return $result;
} }
public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa){ public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa)
{
$builder = $this->db $builder = $this->db
->table($this->table . " t1") ->table($this->table . " t1")
->select( ->select(
"'".$papel_impresion_id."'". " as papel_impresion_id, t1.id AS maquina_id, '0' as active" "'" . $papel_impresion_id . "'" . " as papel_impresion_id, t1.id AS maquina_id, '0' as active"
); );
$builder->where("t1.is_rotativa", $rotativa); $builder->where("t1.is_rotativa", $rotativa);
return $builder; return $builder;
@ -285,52 +287,82 @@ class MaquinaModel extends \App\Models\GoBaseModel
return empty($search) return empty($search)
? $builder ? $builder
: $builder : $builder
->groupStart() ->groupStart()
->like("t1.id", $search) ->like("t1.id", $search)
->orLike("t1.nombre", $search) ->orLike("t1.nombre", $search)
->orLike("t1.tipo", $search) ->orLike("t1.tipo", $search)
->orLike("t1.velocidad", $search) ->orLike("t1.velocidad", $search)
->orLike("t1.ancho", $search) ->orLike("t1.ancho", $search)
->orLike("t1.alto", $search) ->orLike("t1.alto", $search)
->orLike("t1.ancho_impresion", $search) ->orLike("t1.ancho_impresion", $search)
->orLike("t1.alto_impresion", $search) ->orLike("t1.alto_impresion", $search)
->orLike("t1.alto_click", $search) ->orLike("t1.alto_click", $search)
->orLike("t1.min", $search) ->orLike("t1.min", $search)
->orLike("t1.max", $search) ->orLike("t1.max", $search)
->orLike("t1.duracion_jornada", $search) ->orLike("t1.duracion_jornada", $search)
->orLike("t1.orden_planning", $search) ->orLike("t1.orden_planning", $search)
->orLike("t1.precio_tinta_negro", $search) ->orLike("t1.precio_tinta_negro", $search)
->orLike("t1.precio_tinta_color", $search) ->orLike("t1.precio_tinta_color", $search)
->orLike("t1.velocidad_corte", $search) ->orLike("t1.velocidad_corte", $search)
->orLike("t1.precio_hora_corte", $search) ->orLike("t1.precio_hora_corte", $search)
->orLike("t1.metrosxminuto", $search) ->orLike("t1.metrosxminuto", $search)
->orLike("t1.forzar_num_formas_horizontales_portada", $search) ->orLike("t1.forzar_num_formas_horizontales_portada", $search)
->orLike("t1.forzar_num_formas_verticales_portada", $search) ->orLike("t1.forzar_num_formas_verticales_portada", $search)
->orLike("t1.observaciones", $search) ->orLike("t1.observaciones", $search)
->orLike("t2.id", $search) ->orLike("t2.id", $search)
->orLike("t1.id", $search) ->orLike("t1.id", $search)
->orLike("t1.nombre", $search) ->orLike("t1.nombre", $search)
->orLike("t1.tipo", $search) ->orLike("t1.tipo", $search)
->orLike("t1.velocidad", $search) ->orLike("t1.velocidad", $search)
->orLike("t1.ancho", $search) ->orLike("t1.ancho", $search)
->orLike("t1.alto", $search) ->orLike("t1.alto", $search)
->orLike("t1.ancho_impresion", $search) ->orLike("t1.ancho_impresion", $search)
->orLike("t1.alto_impresion", $search) ->orLike("t1.alto_impresion", $search)
->orLike("t1.alto_click", $search) ->orLike("t1.alto_click", $search)
->orLike("t1.padre_id", $search) ->orLike("t1.padre_id", $search)
->orLike("t1.min", $search) ->orLike("t1.min", $search)
->orLike("t1.max", $search) ->orLike("t1.max", $search)
->orLike("t1.duracion_jornada", $search) ->orLike("t1.duracion_jornada", $search)
->orLike("t1.orden_planning", $search) ->orLike("t1.orden_planning", $search)
->orLike("t1.precio_tinta_negro", $search) ->orLike("t1.precio_tinta_negro", $search)
->orLike("t1.precio_tinta_color", $search) ->orLike("t1.precio_tinta_color", $search)
->orLike("t1.velocidad_corte", $search) ->orLike("t1.velocidad_corte", $search)
->orLike("t1.precio_hora_corte", $search) ->orLike("t1.precio_hora_corte", $search)
->orLike("t1.metrosxminuto", $search) ->orLike("t1.metrosxminuto", $search)
->orLike("t1.forzar_num_formas_horizontales_portada", $search) ->orLike("t1.forzar_num_formas_horizontales_portada", $search)
->orLike("t1.forzar_num_formas_verticales_portada", $search) ->orLike("t1.forzar_num_formas_verticales_portada", $search)
->orLike("t1.observaciones", $search) ->orLike("t1.observaciones", $search)
->orLike("t2.nombre", $search) ->orLike("t2.nombre", $search)
->groupEnd(); ->groupEnd();
}
public function getMaquinaImpresionForPresupuesto($is_rotativa, $tarifa_tipo, $papel_impresion_id = -1)
{
/*
1.-> tarifa_Tipo impresion
2.-> Maquina
3.-> Papeles impresion asociados a esa maquina
4.-> papeles genericos que aparecen en esos papeles impresion
*/
$builder = $this->db
->table($this->table . " t1")
->distinct('t1.id')
->select(
"t1.id AS maquina_id, t1.nombre AS maquina, t1.ancho_impresion AS ancho_impresion,
t1.alto_impresion AS alto_impresion, t1.is_rotativa AS is rotativa"
)
->join("lg_maquinas_tarifas_impresion t2", "t1.id = t2.maquina_id", "left")
->join("lg_maquina_papel_impresion t3", "t1.id = t3.maquina_id", "left")
->where("t1.is_deleted", 0)
->where("t1.tipo", "impresion")
->where("t1.is_rotativa", $is_rotativa)
->where("t2.is_deleted", 0)
->where("t2.tipo", $tarifa_tipo)
->where("t3.papel_impresion_id", $papel_impresion_id)
->where("t3.active", 1);
return $builder->orderBy("t1.id", "asc")->get()->getResultObject();
} }
} }

View File

@ -13,16 +13,14 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
protected $useAutoIncrement = true; protected $useAutoIncrement = true;
const SORTABLE = [ const SORTABLE = [
0 => "t1.formas_min", 0 => "t1.formas",
1 => "t1.formas_max", 1 => "t1.internas",
2 => "t1.internas", 2 => "t1.externas",
3 => "t1.externas",
]; ];
protected $allowedFields = [ protected $allowedFields = [
"maquina_id", "maquina_id",
"formas_min", "formas",
"formas_max",
"internas", "internas",
"externas", "externas",
"user_created_id", "user_created_id",
@ -43,10 +41,7 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
public static $labelField = "maquina_id"; public static $labelField = "maquina_id";
protected $validationRules = [ protected $validationRules = [
"formas_min" => [ "formas" => [
"rules" => "required|int",
],
"formas_max" => [
"rules" => "required|int", "rules" => "required|int",
], ],
"internas" => [ "internas" => [
@ -70,8 +65,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
$builder = $this->db $builder = $this->db
->table($this->table . " t1") ->table($this->table . " t1")
->select( ->select(
"t1.id AS id, t1.maquina_id as maquina, t1.formas_min AS formas_min, "t1.id AS id, t1.maquina_id as maquina, t1.formas AS formas,
t1.formas_max AS formas_max, t1.internas AS internas, t1.externas AS externas," t1.internas AS internas, t1.externas AS externas,"
); );
//JJO //JJO
@ -82,29 +77,22 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
? $builder ? $builder
: $builder : $builder
->groupStart() ->groupStart()
->like("t1.formas_min", $search) ->like("t1.formas", $search)
->orLike("t1.formas_max", $search)
->orLike("t1.internas", $search) ->orLike("t1.internas", $search)
->orLike("t1.externas", $search) ->orLike("t1.externas", $search)
->orLike("t1.formas_min", $search) ->orLike("t1.formas", $search)
->orLike("t1.formas_max", $search)
->orLike("t1.internas", $search) ->orLike("t1.internas", $search)
->orLike("t1.externas", $search) ->orLike("t1.externas", $search)
->groupEnd(); ->groupEnd();
} }
public function checkIntervals($data = [], $id = null){ public function checkDuplicatedFormas($data = [], $id = null){
helper('general'); helper('general');
if(floatval($data["formas_min"])>= floatval($data["formas_max"])){
return lang('MaquinasCalles.validation.error_calle_range');
}
$rows = $this->db $rows = $this->db
->table($this->table) ->table($this->table)
->select("id, formas_min, formas_max") ->select("id, formas")
->where("is_deleted", 0) ->where("is_deleted", 0)
->where("maquina_id", $data['maquina_id']) ->where("maquina_id", $data['maquina_id'])
->get()->getResultObject(); ->get()->getResultObject();
@ -116,9 +104,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
continue; continue;
} }
} }
if(check_overlap(floatval($data["formas_min"]), floatval($data["formas_max"]), if(intval($data["formas"]) == $row->formas){
$row->formas_min, $row->formas_max)){ return lang('MaquinasCalles.validation.error_formas_exists');
return lang('MaquinasCalles.validation.error_calle_overlap');
} }
} }
} }

View File

@ -209,4 +209,52 @@ class PapelImpresionModel extends \App\Models\GoBaseModel
return $builder; return $builder;
} }
/**
* @param null $papel_generico_id
* @param null $gramaje
* @param mixed $options
* array con las opciones para bn,color,cubierta,sobrecubierta,rotativa
* @param mixed $is_activo=true
*
* @return [type]
*/
public function getIdPapelesImpresionForPresupuesto($papel_generico_id = null, $gramaje = null, $options=[]){
$bn = array_key_exists('bn', $options) ? $options['bn'] : null;
$color = array_key_exists('color', $options)? $options['color'] : null;
$cubierta = array_key_exists('cubierta', $options)? $options['cubierta'] : null;
$sobrecubierta = array_key_exists('sobrecubierta', $options)? $options['sobrecubierta'] : null;
$rotativa = array_key_exists('rotativa', $options)? $options['rotativa'] : null;
$builder = $this->db
->table($this->table . " t1")
->distinct("t1.id")
->select(
"t1.id AS id, t1.nombre AS nombre, t1.papel_generico_id AS papel_generico_id,
t1.gramaje as gramaje, t1.espesor AS espesor, t1.precio_tonelada AS precio_tonelada, t1.rotativa AS rotativa");
$builder->where("t1.is_deleted", 0);
$builder->where("t1.isActivo", 1);
$builder->where("t1.papel_generico_id", $papel_generico_id);
$builder->where("t1.gramaje", $gramaje);
if(!is_null($bn)){
$builder->where("t1.bn", $bn);
}
if(!is_null($color)){
$builder->where("t1.color", $color);
}
if(!is_null($cubierta)){
$builder->where("t1.cubierta", $cubierta);
}
if(!is_null($sobrecubierta)){
$builder->where("t1.sobrecubierta", $sobrecubierta);
}
if(!is_null($rotativa)){
$builder->where("t1.rotativa", $rotativa);
}
return $builder->orderBy("t1.id", "asc")->get()->getResultObject();
}
} }

View File

@ -2,26 +2,99 @@
namespace App\Services; namespace App\Services;
use App\Controllers\Servicios\Maquetacion;
use CodeIgniter\Config\BaseService; use CodeIgniter\Config\BaseService;
use App\Models\Configuracion\PapelGenericoModel; use App\Models\Configuracion\MaquinaModel;
use App\Models\Configuracion\PapelImpresionModel;
class PresupuestoService extends BaseService class PresupuestoService extends BaseService
{ {
public static function example(){
return 'Hola'; public static function test(){
$uso = 'interior';
$tipo = 'negro';
$cantidad = (object)array(
'paginas' => 100,
'tirada' => 50,
'merma' => 5,
'merma_portada' => 1,
);
$maquina_model = new MaquinaModel();
$opciones_papel = array(
'bn' => 1,
'cubierta' => 0,
'sobrecubierta' => 0,
'rotativa' => 0,
);
$papelimpresionmodel = new PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: 4,
gramaje: 70,
options: $opciones_papel
);
foreach($papeles as $papel){
echo '-------------------------------';
$maquinas = $maquina_model->getMaquinaImpresionForPresupuesto(
is_rotativa: $papel->rotativa,
tarifa_tipo: 'negro',
papel_impresion_id: $papel->id
);
echo '<pre>';
echo '<p>Para papel impresion: ' . $papel->nombre . '</p>';
echo '';
var_dump($maquinas);
echo '</pre>';
}
} }
/*
/** /**
* getPapelForMenu. * @param mixed $uso
* Devuelve la lista de papeles disponibles * contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta']
* @param mixed $tipo
* contiene algun parametro de la lista ['negro','color','negrohq','bicolor','colorhq']
* @param mixed $datos_cantidad
* objeto con la siguiente extructura:
* -> paginas: numero de paginas por libro
* -> tirada: numero de unidades a imprimir
* -> merma: unidades que se añaden a la tirada
* -> merma_portada: unidades de merma para la portada
* @param mixed $maquina
* objeto con la siguiente estructura:
* -> id: el id de la maquina
* -> nombre: nombre de la maquina
* -> calles: objeto con la configuracion de las calles de la maquina
* -> formas: numero de formas
* -> calle_interna: valor de las calles internas de la maquina
* -> calle_externa: valor de las calles externas de la maquina
* -> ancho_impresion: valor maximo del ancho para imprimir
* -> alto_impresion: valor maximo del alto para imprimir
* *
* @param mixed $tipo_impresion * @return [type]
* @param mixed $dimensiones
* @return mixed
*/ */
public static function test(){ public function getCostesLinea($uso, $tipo, $datos_cantidad, $maquina, $temp){
$tipo = array_get($args, 'tipo') ;
$tirada = array_get($args, 'tirada');
$merma = array_get($args, 'merma');
$merma_portada = array_get($args, 'merma_portada');
$ancho = array_get($args, 'ancho');
$alto = array_get($args, 'alto');
$paginas = array_get($args, 'paginas');
$papel = array_get($args, 'papel');
$papel_compra = array_get($args, 'papel_compra');
$gramaje = array_get($args, 'gramaje');
$maquina = array_get($args, 'maquina');
$tarifa = array_get($args, 'tarifa');
$cosido = array_get($args, 'cosido', false);
} }
} }

View File

@ -78,8 +78,7 @@
<table id="tableOfCalles" class="table table-striped table-hover" style="width: 100%;"> <table id="tableOfCalles" class="table table-striped table-hover" style="width: 100%;">
<thead> <thead>
<tr> <tr>
<th><?= lang('MaquinasCalles.formas_min') ?></th> <th><?= lang('MaquinasCalles.formas') ?></th>
<th><?= lang('MaquinasCalles.formas_max') ?></th>
<th><?= lang('MaquinasCalles.internas') ?></th> <th><?= lang('MaquinasCalles.internas') ?></th>
<th><?= lang('MaquinasCalles.externas') ?></th> <th><?= lang('MaquinasCalles.externas') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th> <th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -657,9 +656,7 @@
table : "#tableOfCalles", table : "#tableOfCalles",
idSrc: 'id', idSrc: 'id',
fields: [ { fields: [ {
name: "formas_min" name: "formas"
}, {
name: "formas_max"
}, { }, {
name: "internas" name: "internas"
}, { }, {
@ -728,8 +725,7 @@
async: true, async: true,
}), }),
columns : [ columns : [
{ 'data': 'formas_min' }, { 'data': 'formas' },
{ 'data': 'formas_max' },
{ 'data': 'internas' }, { 'data': 'internas' },
{ 'data': 'externas' }, { 'data': 'externas' },
{ data: actionBtns, { data: actionBtns,