corregidos errores

This commit is contained in:
2024-10-24 08:50:13 +02:00
parent 3dd9f8f7e3
commit 0f00649f99
4 changed files with 371 additions and 301 deletions

View File

@ -1,4 +1,5 @@
<?php namespace App\Controllers\Configuracion;
<?php
namespace App\Controllers\Configuracion;
use App\Controllers\BaseResourceController;
@ -220,30 +221,48 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController
$response = Editor::inst($db, 'lg_maquinas_tarifas_impresion')
->fields(
Field::inst('uso')
->validator('Validate::notEmpty', array(
'message' => lang('MaquinasTarifasImpresions.validation.uso.required'))
->validator(
'Validate::notEmpty',
array(
'message' => lang('MaquinasTarifasImpresions.validation.uso.required')
)
),
Field::inst('tipo')
->validator('Validate::notEmpty', array(
'message' => lang('MaquinasTarifasImpresions.validation.tipo.required'))
->validator(
'Validate::notEmpty',
array(
'message' => lang('MaquinasTarifasImpresions.validation.tipo.required')
)
),
Field::inst('precio')
->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar')
->validator('Validate::numeric', array(
->validator(
'Validate::numeric',
array(
"decimal" => ',',
'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal'))
'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal')
)
)
->validator(
'Validate::notEmpty',
array(
'message' => lang('MaquinasTarifasImpresions.validation.tipo.required')
)
->validator('Validate::notEmpty', array(
'message' => lang('MaquinasTarifasImpresions.validation.tipo.required'))
),
Field::inst('margen')
->getFormatter('Format::toDecimalChar')->setFormatter('Format::fromDecimalChar')
->validator('Validate::numeric', array(
->validator(
'Validate::numeric',
array(
"decimal" => ',',
'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal'))
'message' => lang('MaquinasTarifasImpresions.validation.precio.decimal')
)
)
->validator(
'Validate::notEmpty',
array(
'message' => lang('MaquinasTarifasImpresions.validation.tipo.required')
)
->validator('Validate::notEmpty', array(
'message' => lang('MaquinasTarifasImpresions.validation.tipo.required'))
),
Field::inst('maquina_id'),
Field::inst('user_created_id'),
@ -269,14 +288,18 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController
'maquina_id' => $values['maquina_id'],
'tipo' => $values['tipo'],
'uso' => $values['uso'],
'is_deleted' => 0));
$id = $builder->get()->getFirstRow()->id;
'is_deleted' => 0
));
$id = $builder->get()->getFirstRow();
if ($id) {
$id = $id->id;
// No se pueden duplicar valores al crear o al editar
if ($builder->countAllResults() >= 1) {
if (($action === Editor::ACTION_EDIT && $id != $pkey)
|| $action === Editor::ACTION_CREATE) {
if (
($action === Editor::ACTION_EDIT && $id != $pkey)
|| $action === Editor::ACTION_CREATE
) {
return lang('MaquinasTarifasImpresions.validation.duplicated_uso_tipo');
}
@ -284,6 +307,7 @@ class Maquinastarifasimpresion extends \App\Controllers\BaseResourceController
}
}
}
}
})
->on('preCreate', function ($editor, &$values) {
$session = session();

View File

@ -219,8 +219,7 @@ class PresupuestoService extends BaseService
log_message("error","No se ha encontrado tarifa para la maquina {maquina_id} y el uso {uso} y el tipo {tipo}", $info);
*/
return [];
}
else{
} else {
$tarifaId = $resultado_tarifa[0];
$tarifa = $resultado_tarifa[1];
$tarifa_margen = $resultado_tarifa[2];
@ -245,7 +244,8 @@ class PresupuestoService extends BaseService
$linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $linea['fields']['precios_pliegos'];
// Precio papel pedido
$linea['fields']['precio_pedido'] = $linea['fields']['precio_libro'] * ($datosPedido->tirada + $datosPedido->merma);
$linea['fields']['margen_papel_pedido'] = $linea['fields']['pliegos_libro'] * $margen_pliego_impresion * ($datosPedido->tirada + $datosPedido->merma);;
$linea['fields']['margen_papel_pedido'] = $linea['fields']['pliegos_libro'] * $margen_pliego_impresion * ($datosPedido->tirada + $datosPedido->merma);
;
$linea['fields']['a_favor_fibra'] = $parametrosRotativa->a_favor_fibra;
$linea['fields']['maquina'] = $maquina->maquina;
@ -842,7 +842,7 @@ class PresupuestoService extends BaseService
{
$ancho_total = 0;
$sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA;
if($datosPedido->ancho > 210 || $datosPedido->alto > 297){
if ($datosPedido->ancho >= 210) {
$sangre_cubierta = 15;
}
@ -878,8 +878,10 @@ class PresupuestoService extends BaseService
$ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS) + 7;
}
// Wire-o y espiral (tapa blanda y tapa dura)
else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 6 ||
$tipo_impresion_id == 7 || $tipo_impresion_id == 8) {
else if (
$tipo_impresion_id == 5 || $tipo_impresion_id == 6 ||
$tipo_impresion_id == 7 || $tipo_impresion_id == 8
) {
// En este caso, la cubierta se imprime como dos formas separadas, pero hay que dejar un
// espacio entre ellas para poder cortarlas
$calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina_id, 2);
@ -904,8 +906,7 @@ class PresupuestoService extends BaseService
// Se le suma 20mm de sangre por cada lado. Como son 2 hojas independientes, se multiplica por 4
$ancho_total += (4 * $sangre_cubierta);
}
}
else {
} else {
// En cualquier otro caso se le suma 5mm de sangre por cada lado
$ancho_total += (2 * self::SANGRE_FORMAS);
}
@ -922,11 +923,15 @@ class PresupuestoService extends BaseService
if ($datosPedido) {
$alto_total = floatval($datosPedido->alto);
$sangre_cubierta = self::SANGRE_FORMAS_CUBIERTA;
if ($datosPedido->alto >= 297) {
$sangre_cubierta = 15;
}
// Tapa dura (cosido y fresado)
if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
// Se añaden 20mm de sangre por cada lado + 3.5mm extra por cada lado de vuelo
if ($uso == "cubierta")
$alto_total += (2*3.5 + 2 * self::SANGRE_FORMAS_CUBIERTA);
$alto_total += (2 * 3.5 + 2 * $sangre_cubierta);
// si es sobrecubierta
// Se añaden 5mm de sangre por cada lado + 7mm de vuelo
else
@ -1023,9 +1028,7 @@ class PresupuestoService extends BaseService
$papel_formato = (new PapelFormatoModel())->find(($input_data['presupuesto'])->papel_formato_id);
$ancho = $papel_formato->ancho;
$alto = $papel_formato->alto;
}
else
{
} else {
$ancho = ($input_data['presupuesto'])->papel_formato_ancho;
$alto = ($input_data['presupuesto'])->papel_formato_alto;
}
@ -1057,7 +1060,8 @@ class PresupuestoService extends BaseService
'color' => $linea->rotativa_pag_color,
),
'cliente_id' => ($input_data['presupuesto'])->cliente_id,
'datosTipolog' => [(object)array(
'datosTipolog' => [
(object) array(
'negro' => $linea->rotativa_negro,
'cyan' => $linea->rotativa_cyan,
'magenta' => $linea->rotativa_magenta,
@ -1065,7 +1069,8 @@ class PresupuestoService extends BaseService
'cg' => $linea->rotativa_cg,
'gota_negro' => $linea->rotativa_gota_negro,
'gota_color' => $linea->rotativa_gota_color,
)]
)
]
];
$comp_data = PresupuestoService::obtenerComparadorRotativa($datos);
@ -1088,7 +1093,8 @@ class PresupuestoService extends BaseService
'papel_generico' => $papel_generico,
'gramaje' => $linea->gramaje,
'cliente_id' => ($input_data['presupuesto'])->cliente_id,
'datosTipolog' => [(object)array(
'datosTipolog' => [
(object) array(
'negro' => $linea->rotativa_negro,
'cyan' => $linea->rotativa_cyan,
'magenta' => $linea->rotativa_magenta,
@ -1096,7 +1102,8 @@ class PresupuestoService extends BaseService
'cg' => $linea->rotativa_cg,
'gota_negro' => $linea->rotativa_gota_negro,
'gota_color' => $linea->rotativa_gota_color,
)]
)
]
];
// si la línea es cubierta o sobrecubierta, es HQ y color
@ -1110,15 +1117,13 @@ class PresupuestoService extends BaseService
$datos['datosPedido']->solapas_ancho = ($input_data['presupuesto'])->solapas_ancho_sobrecubierta;
$datos['datosPedido']->lomo = ($input_data['presupuesto'])->lomo_sobrecubierta;
$datos['uso'] = 'sobrecubierta';
}
else{
} else {
$datos['datosPedido']->solapas = ($input_data['presupuesto'])->solapas;
$datos['datosPedido']->solapas_ancho = ($input_data['presupuesto'])->solapas_ancho;
$datos['datosPedido']->lomo = ($input_data['presupuesto'])->lomo_cubierta;
$datos['uso'] = 'cubierta';
}
}
else{
} else {
$datos['isColor'] = str_contains($linea->tipo, '_color') ? true : false;
$datos['isHq'] = str_contains($linea->tipo, 'hq') ? true : false;
$datos['uso'] = 'interior';
@ -1152,8 +1157,7 @@ class PresupuestoService extends BaseService
$linea_to_save = (new PresupuestoLineaModel())->find($linea->id);
$cambios = true;
array_push($lineas, $linea_to_save);
}
else{
} else {
array_push($lineas, $linea);
}
}
@ -1166,7 +1170,8 @@ class PresupuestoService extends BaseService
private static function obtenerValorLineaPresupuesto($input_data, $linea){
private static function obtenerValorLineaPresupuesto($input_data, $linea)
{
$tipo_impresion_id = $input_data['tipo_impresion_id'];
$tirada = $input_data['tirada'];
@ -1216,7 +1221,8 @@ class PresupuestoService extends BaseService
$data['maquina'] = $maquina;
$data['papel_generico'] = $papel_generico;
$data['a_favor_fibra'] = $linea->rotativa_a_favor_fibra;
$data['datosTipolog'] = [(object)array(
$data['datosTipolog'] = [
(object) array(
'negro' => $linea->rotativa_negro,
'cyan' => $linea->rotativa_cyan,
'magenta' => $linea->rotativa_magenta,
@ -1224,7 +1230,8 @@ class PresupuestoService extends BaseService
'cg' => $linea->rotativa_cg,
'gota_negro' => $linea->rotativa_gota_negro,
'gota_color' => $linea->rotativa_gota_color,
)];
)
];
$data['gramaje'] = $linea->gramaje;
switch ($linea->tipo) {
@ -1305,8 +1312,10 @@ class PresupuestoService extends BaseService
$output_data = PresupuestoService::getLineaPresupuestoPlana($data);
if ($tipo_impresion_id == 5 || $tipo_impresion_id == 6 ||
$tipo_impresion_id == 7 || $tipo_impresion_id == 8) {
if (
$tipo_impresion_id == 5 || $tipo_impresion_id == 6 ||
$tipo_impresion_id == 7 || $tipo_impresion_id == 8
) {
$output_data['fields']['num_formas']['num_formas_horizontales'] *= 2;
$output_data['fields']['num_formas']['value'] *= 2;
@ -1317,7 +1326,8 @@ class PresupuestoService extends BaseService
}
// Funcion que procesa los servicios y actualiza los precios en caso de cambio
public static function checkLineasServicios($input_data, $servicios){
public static function checkLineasServicios($input_data, $servicios)
{
$cambio_en_servicios = false;
$cambio = false;
@ -1354,7 +1364,8 @@ class PresupuestoService extends BaseService
// Funcion que procesa los servicios de acabado del presupuesto
// y actualiza los precios en caso de cambio de valor en precio_unidad
private static function procesarServiciosAcabado($input_data, $servicios){
private static function procesarServiciosAcabado($input_data, $servicios)
{
$serviciosUpdated = [];
$cambio = false;
@ -1365,14 +1376,15 @@ class PresupuestoService extends BaseService
// Si es un presupuesto duplicado hay que buscar el proveedor más barato
if ($input_data['is_duplicado']) {
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], -1, $input_data['POD']);
}
else{
} else {
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], $servicio->proveedor_id, $input_data['POD']);
}
if ($nueva_tarifa && count($nueva_tarifa) > 0) {
if(round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad,2) ||
$nueva_tarifa[0]->margen != $servicio->margen){
if (
round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad, 2) ||
$nueva_tarifa[0]->margen != $servicio->margen
) {
$servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2);
$servicio->precio_total = round($nueva_tarifa[0]->total, 2);
@ -1392,7 +1404,8 @@ class PresupuestoService extends BaseService
// Funcion que procesa los servicios de manipulado del presupuesto
// y actualiza los precios en caso de cambio de valor en precio_unidad
private static function procesarServiciosManipulado($input_data, $servicios){
private static function procesarServiciosManipulado($input_data, $servicios)
{
$serviciosUpdated = [];
$cambio = false;
@ -1402,8 +1415,10 @@ class PresupuestoService extends BaseService
$count = 0;
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_manipulado_id, $input_data['tirada'], $input_data['POD']);
if ($nueva_tarifa && count($nueva_tarifa) > 0) {
if(round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad,2) ||
$nueva_tarifa[0]->margen != $servicio->margen){
if (
round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad, 2) ||
$nueva_tarifa[0]->margen != $servicio->margen
) {
$servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2);
$servicio->precio_total = round($nueva_tarifa[0]->total, 2);
@ -1424,7 +1439,8 @@ class PresupuestoService extends BaseService
// Funcion que procesa los servicios de encuadernacion del presupuesto
// y actualiza los precios en caso de cambio de valor en precio_unidad
private static function procesarServiciosEncuadernacion($input_data, $servicios){
private static function procesarServiciosEncuadernacion($input_data, $servicios)
{
$serviciosUpdated = [];
$cambio = false;
@ -1444,7 +1460,8 @@ class PresupuestoService extends BaseService
$input_data['tirada'],
-1,
$input_data['POD'],
$paginas_cuadernillo);
$paginas_cuadernillo
);
} else {
$nueva_tarifa = $model->getPrecioTarifa(
$servicio->tarifa_encuadernado_id,
@ -1453,7 +1470,8 @@ class PresupuestoService extends BaseService
$input_data['ancho'],
$input_data['alto'],
-1,
$input_data['POD']);
$input_data['POD']
);
}
}
@ -1468,7 +1486,8 @@ class PresupuestoService extends BaseService
$input_data['tirada'],
$servicio->proveedor_id,
$input_data['POD'],
$paginas_cuadernillo);
$paginas_cuadernillo
);
} else {
$nueva_tarifa = $model->getPrecioTarifa(
$servicio->tarifa_encuadernado_id,
@ -1477,7 +1496,8 @@ class PresupuestoService extends BaseService
$input_data['ancho'],
$input_data['alto'],
$servicio->proveedor_id,
$input_data['POD']);
$input_data['POD']
);
}
}
@ -1492,17 +1512,18 @@ class PresupuestoService extends BaseService
$nueva_tarifa[0]->tiempo = 0;
if ($servicio->tiempo == null)
$servicio->tiempo = 0;
if(round($nueva_tarifa[0]->precio_unidad, 2) != round(floatval($servicio->precio_unidad),2) ||
if (
round($nueva_tarifa[0]->precio_unidad, 2) != round(floatval($servicio->precio_unidad), 2) ||
$nueva_tarifa[0]->margen != floatval($servicio->margen) ||
$nueva_tarifa[0]->tiempo != floatval($servicio->tiempo)){
$nueva_tarifa[0]->tiempo != floatval($servicio->tiempo)
) {
$servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2);
$servicio->tiempo = $nueva_tarifa[0]->tiempo == null ? 0 : round($nueva_tarifa[0]->tiempo, 2);
$servicio->precio_total = round($nueva_tarifa[0]->total, 2);
$servicio->margen = round($nueva_tarifa[0]->margen);
$cambio = true;
}
else if($input_data['is_duplicado'] && $nueva_tarifa[0]->proveedor_id != $servicio->proveedor_id){
} else if ($input_data['is_duplicado'] && $nueva_tarifa[0]->proveedor_id != $servicio->proveedor_id) {
$servicio->precio_unidad = round($nueva_tarifa[0]->precio_unidad, 2);
$servicio->tiempo = $nueva_tarifa[0]->tiempo == null ? "" : round($nueva_tarifa[0]->tiempo, 2);
$servicio->precio_total = round($nueva_tarifa[0]->total, 2);
@ -1522,7 +1543,8 @@ class PresupuestoService extends BaseService
}
public static function checkLineasEnvios($envios){
public static function checkLineasEnvios($envios)
{
$cambio = false;
@ -1551,8 +1573,10 @@ class PresupuestoService extends BaseService
}
$margen += $coste * floatval($nueva_tarifa[0]->margen) / 100.0;
if(round($coste, 2) != $envio->precio ||
$margen != $envio->margen || $nueva_tarifa[0]->id != $envio->tarifa_id){
if (
round($coste, 2) != $envio->precio ||
$margen != $envio->margen || $nueva_tarifa[0]->id != $envio->tarifa_id
) {
$envio->precio = round($coste, 2);
$envio->margen = $margen;
@ -1588,7 +1612,8 @@ class PresupuestoService extends BaseService
// - gramaje: gramaje del papel seleccionado
// - cliente_id: id del cliente al que va destinado el presupuesto
// - datosTipolog: datos referentes a las tintas
public static function obtenerComparadorRotativa($input_data){
public static function obtenerComparadorRotativa($input_data)
{
$paginas = $input_data['paginas'];
$datosPedido = $input_data['datosPedido'];
@ -1616,8 +1641,7 @@ class PresupuestoService extends BaseService
if ($paginas->color > 0) {
$tipo = 'color';
$opciones_papel['color'] = 1;
}
else {
} else {
$opciones_papel['bn'] = 1;
$tipo = 'negro';
}
@ -1713,7 +1737,8 @@ class PresupuestoService extends BaseService
// - cliente_id: id del cliente al que va destinado el presupuesto
// - datosTipolog: datos referentes a las tintas (opcional)
// - a_favor_fibra: dirección de la impresión
public static function obtenerComparadorPlana($input_data){
public static function obtenerComparadorPlana($input_data)
{
$uso = $input_data['uso'];
$tipo_impresion_id = $input_data['tipo_impresion_id'];
@ -1776,8 +1801,10 @@ class PresupuestoService extends BaseService
$linea = PresupuestoService::getLineaPresupuestoPlana($data);
if ($tipo_impresion_id == 5 || $tipo_impresion_id == 6 ||
$tipo_impresion_id == 7 || $tipo_impresion_id == 8) {
if (
$tipo_impresion_id == 5 || $tipo_impresion_id == 6 ||
$tipo_impresion_id == 7 || $tipo_impresion_id == 8
) {
if ($uso == 'cubierta') {
$linea['fields']['num_formas']['num_formas_horizontales'] *= 2;
@ -1794,8 +1821,7 @@ class PresupuestoService extends BaseService
$linea['fields']['tipo_linea'] = 'lp_colorhq';
else
$linea['fields']['tipo_linea'] = 'lp_color';
}
else{
} else {
if ($isHq)
$linea['fields']['tipo_linea'] = 'lp_bnhq';
else
@ -1853,7 +1879,8 @@ class PresupuestoService extends BaseService
*******************************/
// Funcion que comprueba si existe una maquina
private static function checkMaquina($maquina_id){
private static function checkMaquina($maquina_id)
{
$maquina = (new MaquinaModel())->find($maquina_id);
if (!$maquina) {
@ -1864,7 +1891,8 @@ class PresupuestoService extends BaseService
// Funcion que comprueba si existe un papel de impresion
private static function checkPapelImpresion($papel_impresion_id){
private static function checkPapelImpresion($papel_impresion_id)
{
$papel = (new PapelImpresionModel())->find($papel_impresion_id);
if (!$papel) {

View File

@ -132,7 +132,9 @@
<div id="form_buttons" class="row col-sm-12 justify-content-center" style="display: none;">
</div>
<?php if($formAction == 'edit'): ?>
<?= view("themes/vuexy/components/chat_internal_presupuesto",data:["modelId" => $presupuestoId,"type" => "presupuesto"]) ?>
<?php endif; ?>
</div><!--//.row -->
<?= view("themes/_commonPartialsBs/_modalConfirmDialog") ?>
<?= view("themes/_commonPartialsBs/_modalMessageDialog") ?>

View File

@ -79,6 +79,7 @@ class PresupuestoCliente {
}
$(".calcular-presupuesto").on('change', this.checkForm.bind(this));
}
@ -145,9 +146,21 @@ class PresupuestoCliente {
if (datos_to_check.direcciones) {
delete datos_to_check.direcciones;
}
if (datos_to_check.posPaginasColor) {
if (datos_to_check.posPaginasColor == "" || datos_to_check.posPaginasColor == null) {
delete datos_to_check.posPaginasColor;
}
if(datos_to_check.cubierta.acabados.barniz == undefined){
delete datos_to_check.cubierta.acabados.barniz;
}
if(datos_to_check.cubierta.acabados.plastificado == undefined){
delete datos_to_check.cubierta.acabados.plastificado;
}
if(datos_to_check.cubierta.acabados.estampado == undefined){
delete datos_to_check.cubierta.acabados.estampado;
}
if(datos_to_check.sobrecubierta.plastificado == undefined){
delete datos_to_check.sobrecubierta.plastificado;
}
if (Object.values(datos_to_check).every(this.#isValidDataForm)) {
try {
@ -352,7 +365,7 @@ class PresupuestoCliente {
$(`#containerTiradasEnvios .tirada-envio input[tirada="${response.tiradas[0]}"]`).trigger('click');
}, 0);
}
$('#loader').modal('hide');
// DEBUG
//console.log(response);
}
@ -420,7 +433,6 @@ class PresupuestoCliente {
cubierta: {
tipoCubierta: this.disenioCubierta.disenioCubierta.filter('.selected').attr('id'),
lomoRedondo: this.disenioCubierta.disenioCubierta.filter('.selected').attr('id').includes('Redondo') ? 1 : 0,
papelCubierta: this.disenioCubierta.getPapel(),
gramajeCubierta: this.disenioCubierta.getGramaje(),
cabezada: this.disenioCubierta.getCabezada(),
@ -438,6 +450,10 @@ class PresupuestoCliente {
'prototipo': this.datosGenerales.prototipo.is(':checked') ? 1 : 0,
},
};
let lomoRedondo = 0;
if(this.disenioCubierta.disenioCubierta.filter('.selected').length > 0)
lomoRedondo = this.disenioCubierta.disenioCubierta.filter('.selected').attr('id').includes('Redondo') ? 1 : 0;
this.datos.cubierta.lomoRedondo = lomoRedondo;
if (this.datos.tipo == "cosido") {
this.datos.paginasCuadernillo = this.datosGenerales.paginasCuadernillo.val();