Merge branch 'mod/tarifas' into 'main'

modificacion en tablas tarifas acabado/manipulado. Correccion errores...

See merge request jjimenez/safekat!37
This commit is contained in:
2023-07-18 16:46:20 +00:00
16 changed files with 124 additions and 134 deletions

View File

@ -255,20 +255,19 @@ if ($this->request->getPost('predeterminado') == null ) {
return lang('MaquinasTarifasImpresions.validation.cubierta_sobrecubierta_color');
}
// No se pueden duplicar valores al crear
if($action === Editor::ACTION_CREATE){
$builder = $this->model->select('*')
->where(array(
'maquina_id'=> $values['maquina_id'],
'tipo'=> $values['tipo'],
'uso'=> $values['uso'],
'is_deleted'=> 0));
$builder = $this->model->select('*')
->where(array(
'maquina_id'=> $values['maquina_id'],
'tipo'=> $values['tipo'],
'uso'=> $values['uso'],
'is_deleted'=> 0));
if ($builder->countAllResults() >= 1){
if(($action === Editor::ACTION_EDIT && $builder->get()->getFirstRow()->id != $pkey)
|| $action === Editor::ACTION_CREATE)
return lang('MaquinasTarifasImpresions.validation.duplicated_uso_tipo');
// No se pueden duplicar valores al crear o al editar
if ($builder->countAllResults() >= 1){
if(($action === Editor::ACTION_EDIT && $builder->get()->getFirstRow()->id != $pkey)
|| $action === Editor::ACTION_CREATE){
return lang('MaquinasTarifasImpresions.validation.duplicated_uso_tipo');
}
}
}

View File

@ -22,6 +22,8 @@ use
DataTables\Editor\Validate,
DataTables\Editor\ValidateOptions;
use function PHPUnit\Framework\isEmpty;
class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController {
protected $modelName = TarifaAcabadoLineaModel::class;
@ -276,13 +278,6 @@ class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController {
->validator( 'Validate::notEmpty',array(
'message' => lang('TarifaAcabadoLineas.validation.precio_max.required') )
),
Field::inst( 'precio_unidad' )
->validator( 'Validate::numeric', array(
'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.required') )
),
Field::inst( 'tarifa_acabado_id' ),
Field::inst( 'user_created_id' ),
Field::inst( 'created_at' ),
@ -296,17 +291,14 @@ class Tarifaacabadolineas extends \App\Controllers\GoBaseResourceController {
if ($action === Editor::ACTION_CREATE || $action === Editor::ACTION_EDIT){
foreach ($data['data'] as $pkey => $values ){
// Si no se quiere borrar...
if($data['data'][$pkey]['is_deleted'] != 1)
{
$count = $this->model->select('*')
->where(array( 'tarifa_acabado_id'=> $values['tarifa_acabado_id'],
'tirada_min'=> $values['tirada_min'],
'tirada_max'=> $values['tirada_max'],
'is_deleted'=> 0
))
->countAllResults();
if ($count >= 1){
return lang('TarifaAcabadoLineas.validation.duplicated_tirada');
if($data['data'][$pkey]['is_deleted'] != 1){
$process_data['tirada_min'] = $data['data'][$pkey]['tirada_min'];
$process_data['tirada_max'] = $data['data'][$pkey]['tirada_max'];
$response = $this->model->checkIntervals($process_data, $pkey, $data['data'][$pkey]['tarifa_acabado_id']);
// No se pueden duplicar valores al crear o al editar
if (!empty($response)){
return $response;
}
}
}

View File

@ -240,13 +240,6 @@ class Tarifamanipuladolineas extends \App\Controllers\GoBaseResourceController {
->validator( 'Validate::notEmpty',array(
'message' => lang('TarifaAcabadoLineas.validation.precio_max.required') )
),
Field::inst( 'precio_unidad' )
->validator( 'Validate::numeric', array(
'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.decimal') )
)
->validator( 'Validate::notEmpty',array(
'message' => lang('TarifaAcabadoLineas.validation.precio_unidad.required') )
),
Field::inst( 'tarifa_manipulado_id' ),
Field::inst( 'user_created_id' ),
Field::inst( 'created_at' ),
@ -262,16 +255,12 @@ class Tarifamanipuladolineas extends \App\Controllers\GoBaseResourceController {
// Si no se quiere borrar...
if($data['data'][$pkey]['is_deleted'] != 1)
{
$count = $this->model->select('*')
->where(array(
'tarifa_manipulado_id'=> $values['tarifa_manipulado_id'],
'tirada_min'=> $values['tirada_min'],
'tirada_max'=> $values['tirada_max'],
'is_deleted'=> 0))
->countAllResults();
if ($count >= 1){
return lang('TarifaAcabadoLineas.validation.duplicated_tirada');
$process_data['tirada_min'] = $data['data'][$pkey]['tirada_min'];
$process_data['tirada_max'] = $data['data'][$pkey]['tirada_max'];
$response = $this->model->checkIntervals($process_data, $pkey, $data['data'][$pkey]['tarifa_manipulado_id']);
// No se pueden duplicar valores al crear o al editar
if (!empty($response)){
return $response;
}
}
}

View File

@ -12,7 +12,6 @@ class TarifaAcabadoLinea extends \CodeIgniter\Entity\Entity
"tirada_max" => 0,
"precio_min" => 0,
"precio_max" => 0,
"precio_unidad" => 0,
"user_created_id" => 0,
"user_updated_id" => 0,
"is_deleted" => 0,
@ -25,7 +24,6 @@ class TarifaAcabadoLinea extends \CodeIgniter\Entity\Entity
"tirada_max" => "int",
"precio_min" => "float",
"precio_max" => "float",
"precio_unidad" => "float",
"user_created_id" => "int",
"user_updated_id" => "int",
"is_deleted" => "int",

View File

@ -12,7 +12,6 @@ class TarifaManipuladoLinea extends \CodeIgniter\Entity\Entity
"tirada_max" => 0,
"precio_min" => 0,
"precio_max" => 0,
"precio_unidad" => 0,
"user_created_id" => 0,
"user_updated_id" => 0,
"is_deleted" => 0,
@ -25,7 +24,6 @@ class TarifaManipuladoLinea extends \CodeIgniter\Entity\Entity
"tirada_max" => "float",
"precio_min" => "float",
"precio_max" => "float",
"precio_unidad" => "float",
"user_created_id" => "int",
"user_updated_id" => "int",
"is_deleted" => "int",

View File

@ -641,6 +641,15 @@ function templateSelect($templates=[],$name='',$type='') {
return null;
}
// Devuelve true si los intervalos (a1,a2) (b1,b2) se solapan
// https://stackoverflow.com/questions/3269434/whats-the-most-efficient-way-to-test-if-two-ranges-overlap
function check_overlap($a1, $a2, $b1, $b2){
if (max($a2, $b2) - min($a1, $b1) <= ($a2 - $a1) + ($b2 - $b1))
return true;
return false;
}
function version() {
return "1.2.1";
}

View File

@ -12,7 +12,8 @@ return [
'tiradaMax' => 'Print Max',
'tiradaMin' => 'Print Min',
'validation' => [
'duplicated_tirada' => "Duplicated line (the couple 'Print Min' and 'Print Max' must be unique)",
'error_tirada_overlap' => 'The range [Min Printing, Max Printing] is overlapped with another one for the selected type.',
'error_tirada_range' => 'The field Min Printing must be lower than the field Max Printing',
'precio_max' => [
'decimal' => 'The field must contain a decimal number.',
'required' => 'The field is required.',
@ -25,12 +26,6 @@ return [
],
'precio_unidad' => [
'decimal' => 'The field must contain a decimal number.',
'required' => 'The field is required.',
],
'tirada_max' => [
'integer' => 'The field must contain an integer.',
'required' => 'The field is required.',

View File

@ -12,6 +12,8 @@ return [
'tiradaMax' => 'Print Max',
'tiradaMin' => 'Print Min',
'validation' => [
'error_tirada_overlap' => 'The range [Min Printing, Max Printing] is overlapped with another one for the selected type.',
'error_tirada_range' => 'The field Min Printing must be lower than the field Max Printing',
'precio_max' => [
'decimal' => 'The {field} field must contain a decimal number.',
'required' => 'The {field} field is required.',
@ -24,12 +26,6 @@ return [
],
'precio_unidad' => [
'decimal' => 'The {field} field must contain a decimal number.',
'required' => 'The {field} field is required.',
],
'tirada_max' => [
'decimal' => 'The {field} field must contain a decimal number.',
'required' => 'The {field} field is required.',

View File

@ -12,7 +12,8 @@ return [
'tiradaMax' => 'Tirada Max',
'tiradaMin' => 'Tirada Min',
'validation' => [
'duplicated_tirada' => "Línea duplicada (la pareja 'Tirada Min' y 'Tirada Max' debe de ser única)",
'error_tirada_overlap' => 'El rango [Tirada Min, Tirada Max] se solapa con otro existente para el tipo seleccionado.',
'error_tirada_range' => 'El campo Tirada Min debe ser menor que el campo Tirada Max',
'precio_max' => [
'decimal' => 'El campo debe contener un número decimal.',
'required' => 'El campo es obligatorio.',
@ -25,12 +26,6 @@ return [
],
'precio_unidad' => [
'decimal' => 'El campo debe contener un número decimal.',
'required' => 'El campo es obligatorio.',
],
'tirada_max' => [
'integer' => 'El campo debe contener un número entero.',
'required' => 'El campo es obligatorio.',

View File

@ -12,6 +12,8 @@ return [
'tiradaMax' => 'Tirada Max',
'tiradaMin' => 'Tirada Min',
'validation' => [
'error_tirada_overlap' => 'El rango [Tirada Min, Tirada Max] se solapa con otro existente para el tipo seleccionado.',
'error_tirada_range' => 'El campo Tirada Min debe ser menor que el campo Tirada Max',
'precio_max' => [
'decimal' => 'El campo {field} debe contener un número decimal.',
'required' => 'The {field} field is required.',
@ -24,12 +26,6 @@ return [
],
'precio_unidad' => [
'decimal' => 'El campo {field} debe contener un número decimal.',
'required' => 'The {field} field is required.',
],
'tirada_max' => [
'decimal' => 'El campo {field} debe contener un número decimal.',
'required' => 'The {field} field is required.',

View File

@ -183,6 +183,8 @@ class MaquinasDefectoModel extends \App\Models\GoBaseModel
public function checkIntervals($data = [], $id = null){
helper('general');
if(floatval($data["ancho_min"])>= floatval($data["ancho_max"])){
return lang('MaquinasPorDefecto.validation.error_ancho_range');
}
@ -209,17 +211,17 @@ class MaquinasDefectoModel extends \App\Models\GoBaseModel
continue;
}
}
if($this->check_overlap(floatval($data["ancho_min"]), floatval($data["ancho_max"]),
if(check_overlap(floatval($data["ancho_min"]), floatval($data["ancho_max"]),
$row->ancho_min, $row->ancho_max)){
return lang('MaquinasPorDefecto.validation.error_ancho_overlap');
}
if($this->check_overlap(floatval($data["alto_min"]), floatval($data["alto_max"]),
if(check_overlap(floatval($data["alto_min"]), floatval($data["alto_max"]),
$row->alto_min, $row->alto_max)){
return lang('MaquinasPorDefecto.validation.error_alto_overlap');
}
if($this->check_overlap(floatval($data["tirada_min"]), floatval($data["tirada_max"]),
if(check_overlap(floatval($data["tirada_min"]), floatval($data["tirada_max"]),
$row->tirada_min, $row->tirada_max)){
return lang('MaquinasPorDefecto.validation.error_ancho_overlap');
return lang('MaquinasPorDefecto.validation.error_tirada_overlap');
}
}
@ -227,15 +229,6 @@ class MaquinasDefectoModel extends \App\Models\GoBaseModel
return "";
}
// Devuelve true si los intervalos (a1,a2) (b1,b2) se solapan
// https://stackoverflow.com/questions/3269434/whats-the-most-efficient-way-to-test-if-two-ranges-overlap
private function check_overlap($a1, $a2, $b1, $b2){
if (max($a2, $b2) - min($a1, $b1) < ($a2 - $a1) + ($b2 - $b1))
return true;
return false;
}
}

View File

@ -17,7 +17,6 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
1 => "t1.tirada_max",
2 => "t1.precio_min",
3 => "t1.precio_max",
4 => "t1.precio_unidad",
];
protected $allowedFields = [
@ -25,7 +24,6 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
"tirada_max",
"precio_min",
"precio_max",
"precio_unidad",
"user_created_id",
"is_deleted",
];
@ -53,10 +51,6 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
"label" => "TarifaAcabadoLineas.precioMin",
"rules" => "required|decimal",
],
"precio_unidad" => [
"label" => "TarifaAcabadoLineas.precioUnidad",
"rules" => "required|decimal",
],
"tirada_max" => [
"label" => "TarifaAcabadoLineas.tiradaMax",
"rules" => "required|integer",
@ -84,10 +78,6 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
"decimal" => "TarifaAcabadoLineas.validation.precio_min.decimal",
"required" => "TarifaAcabadoLineas.validation.precio_min.required",
],
"precio_unidad" => [
"decimal" => "TarifaAcabadoLineas.validation.precio_unidad.decimal",
"required" => "TarifaAcabadoLineas.validation.precio_unidad.required",
],
"tirada_max" => [
"integer" => "TarifaAcabadoLineas.validation.tirada_max.integer",
"required" => "TarifaAcabadoLineas.validation.tirada_max.required",
@ -135,7 +125,7 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id AS id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado"
"t1.id AS id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.user_created_id AS user_created_id, t1.user_updated_id AS user_updated_id, t1.is_deleted AS is_deleted, t1.created_at AS created_at, t1.updated_at AS updated_at, t2.id AS tarifa_acabado"
);
//JJO
@ -153,7 +143,6 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
->orLike("t1.tirada_max", $search)
->orLike("t1.precio_min", $search)
->orLike("t1.precio_max", $search)
->orLike("t1.precio_unidad", $search)
->orLike("t1.user_created_id", $search)
->orLike("t1.user_updated_id", $search)
->orLike("t1.is_deleted", $search)
@ -164,7 +153,6 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
->orLike("t1.tirada_max", $search)
->orLike("t1.precio_min", $search)
->orLike("t1.precio_max", $search)
->orLike("t1.precio_unidad", $search)
->orLike("t1.user_created_id", $search)
->orLike("t1.user_updated_id", $search)
->orLike("t1.is_deleted", $search)
@ -185,4 +173,35 @@ class TarifaAcabadoLineaModel extends \App\Models\GoBaseModel
return $builder;
}
public function checkIntervals($data = [], $id_linea = null, $id_tarifa_acabado = null){
helper('general');
if(floatval($data["tirada_min"])>= floatval($data["tirada_max"])){
return lang('TarifaAcabadoLineas.validation.error_tirada_range');
}
$rows = $this->db
->table($this->table)
->select("id, tirada_min, tirada_max")
->where("is_deleted", 0)
->where("tarifa_acabado_id", $id_tarifa_acabado)
->get()->getResultObject();
foreach ($rows as $row) {
if (!is_null($id_linea)){
if($row->id == $id_linea){
continue;
}
}
if(check_overlap(floatval($data["tirada_min"]), floatval($data["tirada_max"]),
$row->tirada_min, $row->tirada_max)){
return lang('TarifaAcabadoLineas.validation.error_tirada_overlap');
}
}
return "";
}
}

View File

@ -17,7 +17,6 @@ class TarifaManipuladoLineaModel extends \App\Models\GoBaseModel
1 => "t1.tirada_max",
2 => "t1.precio_min",
3 => "t1.precio_max",
4 => "t1.precio_unidad",
];
protected $allowedFields = [
@ -26,7 +25,6 @@ class TarifaManipuladoLineaModel extends \App\Models\GoBaseModel
"tirada_max",
"precio_min",
"precio_max",
"precio_unidad",
"user_created_id",
"is_deleted",
@ -51,10 +49,6 @@ class TarifaManipuladoLineaModel extends \App\Models\GoBaseModel
"label" => "TarifaManipuladoLineas.precioMin",
"rules" => "required|decimal",
],
"precio_unidad" => [
"label" => "TarifaManipuladoLineas.precioUnidad",
"rules" => "required|decimal",
],
"tirada_max" => [
"label" => "TarifaManipuladoLineas.tiradaMax",
"rules" => "required|decimal",
@ -74,10 +68,6 @@ class TarifaManipuladoLineaModel extends \App\Models\GoBaseModel
"decimal" => "TarifaManipuladoLineas.validation.precio_min.decimal",
"required" => "TarifaManipuladoLineas.validation.precio_min.required",
],
"precio_unidad" => [
"decimal" => "TarifaManipuladoLineas.validation.precio_unidad.decimal",
"required" => "TarifaManipuladoLineas.validation.precio_unidad.required",
],
"tirada_max" => [
"decimal" => "TarifaManipuladoLineas.validation.tirada_max.decimal",
"required" => "TarifaManipuladoLineas.validation.tirada_max.required",
@ -100,7 +90,7 @@ class TarifaManipuladoLineaModel extends \App\Models\GoBaseModel
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id AS id, t1.tarifa_manipulado_id AS tarifa_manipulado_id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.precio_unidad AS precio_unidad, t2.id AS tarifa_manipulado"
"t1.id AS id, t1.tarifa_manipulado_id AS tarifa_manipulado_id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t2.id AS tarifa_manipulado"
);
//JJO
$builder->where('tarifa_manipulado_id', $tarifa_manipulado_id);
@ -119,14 +109,43 @@ class TarifaManipuladoLineaModel extends \App\Models\GoBaseModel
->orLike("t1.tirada_max", $search)
->orLike("t1.precio_min", $search)
->orLike("t1.precio_max", $search)
->orLike("t1.precio_unidad", $search)
->orLike("t1.id", $search)
->orLike("t1.tarifa_manipulado_id", $search)
->orLike("t1.tirada_min", $search)
->orLike("t1.tirada_max", $search)
->orLike("t1.precio_min", $search)
->orLike("t1.precio_max", $search)
->orLike("t1.precio_unidad", $search)
->groupEnd();
}
public function checkIntervals($data = [], $id_linea = null, $id_tarifa_manipulado = null){
helper('general');
if(floatval($data["tirada_min"])>= floatval($data["tirada_max"])){
return lang('TarifaManipuladoLineas.validation.error_tirada_range');
}
$rows = $this->db
->table($this->table)
->select("id, tirada_min, tirada_max")
->where("is_deleted", 0)
->where("tarifa_manipulado_id", $id_tarifa_manipulado)
->get()->getResultObject();
foreach ($rows as $row) {
if (!is_null($id_linea)){
if($row->id == $id_linea){
continue;
}
}
if(check_overlap(floatval($data["tirada_min"]), floatval($data["tirada_max"]),
$row->tirada_min, $row->tirada_max)){
return lang('TarifaManipuladoLineas.validation.error_tirada_overlap');
}
}
return "";
}
}

View File

@ -118,7 +118,7 @@
});
$(document).on('click', '.btn-edit', function(e) {
window.location.href = `configuracion/maquinasdefecto/edit/${$(this).attr('data-id')}`;
window.location.href = `/configuracion/maquinasdefecto/edit/${$(this).attr('data-id')}`;
});
$(document).on('click', '.btn-delete', function(e) {

View File

@ -44,10 +44,9 @@
<thead>
<tr>
<th><?= lang('TarifaAcabadoLineas.tiradaMin') ?></th>
<th><?= lang('TarifaAcabadoLineas.precioMax') ?></th>
<th><?= lang('TarifaAcabadoLineas.tiradaMax') ?></th>
<th><?= lang('TarifaAcabadoLineas.precioMin') ?></th>
<th><?= lang('TarifaAcabadoLineas.precioMax') ?></th>
<th><?= lang('TarifaAcabadoLineas.precioUnidad') ?></th>
<th></th>
</tr>
</thead>
@ -96,15 +95,13 @@
idSrc: 'id',
fields: [ {
name: "tirada_min"
}, {
name: "precio_max"
}, {
name: "tirada_max"
}, {
name: "precio_min"
}, {
name: "precio_max"
}, {
name: "precio_unidad"
},{
"name": "tarifa_acabado_id",
"type": "hidden"
},{
@ -165,10 +162,9 @@
}),
columns: [
{ 'data': 'tirada_min' },
{ 'data': 'precio_max' },
{ 'data': 'tirada_max' },
{ 'data': 'precio_min' },
{ 'data': 'precio_max' },
{ 'data': 'precio_unidad' },
{
data: actionBtns,
className: 'row-edit dt-center'

View File

@ -48,10 +48,9 @@
<thead>
<tr>
<th><?= lang('TarifaManipuladoLineas.tiradaMin') ?></th>
<th><?= lang('TarifaManipuladoLineas.precioMax') ?></th>
<th><?= lang('TarifaManipuladoLineas.tiradaMax') ?></th>
<th><?= lang('TarifaManipuladoLineas.precioMin') ?></th>
<th><?= lang('TarifaManipuladoLineas.precioMax') ?></th>
<th><?= lang('TarifaManipuladoLineas.precioUnidad') ?></th>
<th></th>
</tr>
</thead>
@ -98,15 +97,13 @@
idSrc: 'id',
fields: [ {
name: "tirada_min"
}, {
name: "precio_max"
}, {
name: "tirada_max"
}, {
name: "precio_min"
}, {
name: "precio_max"
}, {
name: "precio_unidad"
},{
"name": "tarifa_manipulado_id",
"type": "hidden"
},{
@ -167,10 +164,9 @@
}),
columns: [
{ 'data': 'tirada_min' },
{ 'data': 'precio_max' },
{ 'data': 'tirada_max' },
{ 'data': 'precio_min' },
{ 'data': 'precio_max' },
{ 'data': 'precio_unidad' },
{
data: actionBtns,
className: 'row-edit dt-center'