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
$response = Editor::inst($db, 'maquinas_calles')
->fields(
Field::inst('formas_min')
Field::inst('formas')
->validator('Validate::numeric', array(
'message' => lang('MaquinasCalles.validation.formas_min.integer'))
'message' => lang('MaquinasCalles.validation.formas.integer'))
)
->validator('Validate::notEmpty', array(
'message' => lang('MaquinasCalles.validation.formas_min.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'))
'message' => lang('MaquinasCalles.validation.formas.required'))
),
Field::inst('internas')
->validator('Validate::numeric', array(
@ -94,10 +87,9 @@ class Maquinascalles extends \App\Controllers\GoBaseResourceController
foreach ($data['data'] as $pkey => $values) {
// Si no se quiere borrar...
if ($data['data'][$pkey]['is_deleted'] != 1) {
$process_data['formas_min'] = $data['data'][$pkey]['formas_min'];
$process_data['formas_max'] = $data['data'][$pkey]['formas_max'];
$process_data['formas'] = $data['data'][$pkey]['formas'];
$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
if (!empty($response)) {
return $response;

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,5 @@
<?php
namespace App\Models\Configuracion;
class MaquinaModel extends \App\Models\GoBaseModel
@ -26,8 +27,8 @@ class MaquinaModel extends \App\Models\GoBaseModel
9 => "t1.orden_planning",
10 => "t1.min",
11 => "t1.max",
];
protected $allowedFields = [
@ -252,14 +253,15 @@ class MaquinaModel extends \App\Models\GoBaseModel
return $result;
}
public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa){
public function getIdMaquinasForPapelImpresion($papel_impresion_id, $rotativa)
{
$builder = $this->db
->table($this->table . " t1")
->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);
return $builder;
}
@ -280,57 +282,87 @@ class MaquinaModel extends \App\Models\GoBaseModel
$builder->join("lg_maquinas t2", "t1.padre_id = t2.id", "left");
//JJO
$builder->where("t1.is_deleted", 0);
$builder->where("t1.is_deleted", 0);
return empty($search)
? $builder
: $builder
->groupStart()
->like("t1.id", $search)
->orLike("t1.nombre", $search)
->orLike("t1.tipo", $search)
->orLike("t1.velocidad", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.ancho_impresion", $search)
->orLike("t1.alto_impresion", $search)
->orLike("t1.alto_click", $search)
->orLike("t1.min", $search)
->orLike("t1.max", $search)
->orLike("t1.duracion_jornada", $search)
->orLike("t1.orden_planning", $search)
->orLike("t1.precio_tinta_negro", $search)
->orLike("t1.precio_tinta_color", $search)
->orLike("t1.velocidad_corte", $search)
->orLike("t1.precio_hora_corte", $search)
->orLike("t1.metrosxminuto", $search)
->orLike("t1.forzar_num_formas_horizontales_portada", $search)
->orLike("t1.forzar_num_formas_verticales_portada", $search)
->orLike("t1.observaciones", $search)
->orLike("t2.id", $search)
->orLike("t1.id", $search)
->orLike("t1.nombre", $search)
->orLike("t1.tipo", $search)
->orLike("t1.velocidad", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.ancho_impresion", $search)
->orLike("t1.alto_impresion", $search)
->orLike("t1.alto_click", $search)
->orLike("t1.padre_id", $search)
->orLike("t1.min", $search)
->orLike("t1.max", $search)
->orLike("t1.duracion_jornada", $search)
->orLike("t1.orden_planning", $search)
->orLike("t1.precio_tinta_negro", $search)
->orLike("t1.precio_tinta_color", $search)
->orLike("t1.velocidad_corte", $search)
->orLike("t1.precio_hora_corte", $search)
->orLike("t1.metrosxminuto", $search)
->orLike("t1.forzar_num_formas_horizontales_portada", $search)
->orLike("t1.forzar_num_formas_verticales_portada", $search)
->orLike("t1.observaciones", $search)
->orLike("t2.nombre", $search)
->groupEnd();
->groupStart()
->like("t1.id", $search)
->orLike("t1.nombre", $search)
->orLike("t1.tipo", $search)
->orLike("t1.velocidad", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.ancho_impresion", $search)
->orLike("t1.alto_impresion", $search)
->orLike("t1.alto_click", $search)
->orLike("t1.min", $search)
->orLike("t1.max", $search)
->orLike("t1.duracion_jornada", $search)
->orLike("t1.orden_planning", $search)
->orLike("t1.precio_tinta_negro", $search)
->orLike("t1.precio_tinta_color", $search)
->orLike("t1.velocidad_corte", $search)
->orLike("t1.precio_hora_corte", $search)
->orLike("t1.metrosxminuto", $search)
->orLike("t1.forzar_num_formas_horizontales_portada", $search)
->orLike("t1.forzar_num_formas_verticales_portada", $search)
->orLike("t1.observaciones", $search)
->orLike("t2.id", $search)
->orLike("t1.id", $search)
->orLike("t1.nombre", $search)
->orLike("t1.tipo", $search)
->orLike("t1.velocidad", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.ancho_impresion", $search)
->orLike("t1.alto_impresion", $search)
->orLike("t1.alto_click", $search)
->orLike("t1.padre_id", $search)
->orLike("t1.min", $search)
->orLike("t1.max", $search)
->orLike("t1.duracion_jornada", $search)
->orLike("t1.orden_planning", $search)
->orLike("t1.precio_tinta_negro", $search)
->orLike("t1.precio_tinta_color", $search)
->orLike("t1.velocidad_corte", $search)
->orLike("t1.precio_hora_corte", $search)
->orLike("t1.metrosxminuto", $search)
->orLike("t1.forzar_num_formas_horizontales_portada", $search)
->orLike("t1.forzar_num_formas_verticales_portada", $search)
->orLike("t1.observaciones", $search)
->orLike("t2.nombre", $search)
->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;
const SORTABLE = [
0 => "t1.formas_min",
1 => "t1.formas_max",
2 => "t1.internas",
3 => "t1.externas",
0 => "t1.formas",
1 => "t1.internas",
2 => "t1.externas",
];
protected $allowedFields = [
"maquina_id",
"formas_min",
"formas_max",
"formas",
"internas",
"externas",
"user_created_id",
@ -43,10 +41,7 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
public static $labelField = "maquina_id";
protected $validationRules = [
"formas_min" => [
"rules" => "required|int",
],
"formas_max" => [
"formas" => [
"rules" => "required|int",
],
"internas" => [
@ -70,8 +65,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id AS id, t1.maquina_id as maquina, t1.formas_min AS formas_min,
t1.formas_max AS formas_max, t1.internas AS internas, t1.externas AS externas,"
"t1.id AS id, t1.maquina_id as maquina, t1.formas AS formas,
t1.internas AS internas, t1.externas AS externas,"
);
//JJO
@ -82,29 +77,22 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
? $builder
: $builder
->groupStart()
->like("t1.formas_min", $search)
->orLike("t1.formas_max", $search)
->like("t1.formas", $search)
->orLike("t1.internas", $search)
->orLike("t1.externas", $search)
->orLike("t1.formas_min", $search)
->orLike("t1.formas_max", $search)
->orLike("t1.formas", $search)
->orLike("t1.internas", $search)
->orLike("t1.externas", $search)
->groupEnd();
}
public function checkIntervals($data = [], $id = null){
public function checkDuplicatedFormas($data = [], $id = null){
helper('general');
if(floatval($data["formas_min"])>= floatval($data["formas_max"])){
return lang('MaquinasCalles.validation.error_calle_range');
}
$rows = $this->db
->table($this->table)
->select("id, formas_min, formas_max")
->select("id, formas")
->where("is_deleted", 0)
->where("maquina_id", $data['maquina_id'])
->get()->getResultObject();
@ -116,9 +104,8 @@ class MaquinasCallesModel extends \App\Models\GoBaseModel
continue;
}
}
if(check_overlap(floatval($data["formas_min"]), floatval($data["formas_max"]),
$row->formas_min, $row->formas_max)){
return lang('MaquinasCalles.validation.error_calle_overlap');
if(intval($data["formas"]) == $row->formas){
return lang('MaquinasCalles.validation.error_formas_exists');
}
}
}

View File

@ -209,4 +209,52 @@ class PapelImpresionModel extends \App\Models\GoBaseModel
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;
use App\Controllers\Servicios\Maquetacion;
use CodeIgniter\Config\BaseService;
use App\Models\Configuracion\PapelGenericoModel;
use App\Models\Configuracion\MaquinaModel;
use App\Models\Configuracion\PapelImpresionModel;
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.
* Devuelve la lista de papeles disponibles
*
* @param mixed $tipo_impresion
* @param mixed $dimensiones
* @return mixed
* @param mixed $uso
* 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
*
* @return [type]
*/
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%;">
<thead>
<tr>
<th><?= lang('MaquinasCalles.formas_min') ?></th>
<th><?= lang('MaquinasCalles.formas_max') ?></th>
<th><?= lang('MaquinasCalles.formas') ?></th>
<th><?= lang('MaquinasCalles.internas') ?></th>
<th><?= lang('MaquinasCalles.externas') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -657,9 +656,7 @@
table : "#tableOfCalles",
idSrc: 'id',
fields: [ {
name: "formas_min"
}, {
name: "formas_max"
name: "formas"
}, {
name: "internas"
}, {
@ -728,8 +725,7 @@
async: true,
}),
columns : [
{ 'data': 'formas_min' },
{ 'data': 'formas_max' },
{ 'data': 'formas' },
{ 'data': 'internas' },
{ 'data': 'externas' },
{ data: actionBtns,