haciendo el comparador del backend

This commit is contained in:
jaimejimenezortega
2024-03-26 21:26:42 +01:00
parent 848bf90a6e
commit a35dfff298
6 changed files with 74564 additions and 38 deletions

View File

@ -346,8 +346,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$this->viewData['papelGenericoRotativaNegroList'] = $this->getPapelGenericoRotativaNegro();
$this->viewData['papelGenericoRotativaColorList'] = $this->getPapelGenericoRotativaColor();
$this->viewData['direccionesList'] = $this->getDirecciones($id);
// Acabados exteriores
$this->viewData['acabadosCubierta'] = $this->getAcabadosCubierta();
$this->viewData['acabadosSobrecubierta'] = $this->getAcabadosSobrecubierta();
@ -357,24 +355,23 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
if($cambios_lineas){
$this->viewData['presupuestoEntity']->cambios_lineas=true;
}
// Tarifas
// Servicios
[$cambios_en_servicios, $servicios] = $this->getLineasServicios($presupuestoEntity);
$this->viewData['serviciosPreimpresion'] = $this->getServiciosPreimpresion();
$this->viewData['serviciosPreimpresion'] = $this->getServiciosPreimpresion();
$this->viewData['serviciosEncuadernacion'] = $this->getServiciosEncuadernacion();
$this->viewData['serviciosManipulado'] = $this->getServiciosManipulado();
$this->viewData['serviciosAcabado'] = $this->getServiciosAcabado();
[$cambios_en_servicios, $servicios] = $this->getLineasServicios($presupuestoEntity);
$this->viewData['serviciosEncuadernacionList'] = (new PresupuestoEncuadernacionesModel())->getResource($id)->get()->getResultObject();
$this->viewData['serviciosAcabadosList'] = (new PresupuestoAcabadosModel())->getResource($id)->get()->getResultObject();
$this->viewData['serviciosManipuladoList'] = (new PresupuestoManipuladosModel())->getResource($id)->get()->getResultObject();
$this->viewData['serviciosPreimpresionList'] = (new PresupuestoPreimpresionesModel())->getResource($id)->get()->getResultObject();
[$cambios_en_servicios, $servicios] = $this->getLineasServicios($presupuestoEntity);
$this->viewData['serviciosEncuadernacionList'] = $servicios->serviciosEncuadernacion;
$this->viewData['serviciosAcabadosList'] = $servicios->serviciosAcabado;
$this->viewData['serviciosManipuladoList'] = $servicios->serviciosManipulado;
$this->viewData['serviciosPreimpresionList'] = $servicios->serviciosPreimpresion;
// Direciones presupuesto
$this->getLineasDirecciones($presupuestoEntity);
$this->viewData['presupuestoDirecciones'] = (new PresupuestoDireccionesModel())->getResource("", $id)->get()->getResultObject();
[$cambios_en_direcciones, $this->viewData['direccionesList']] = $this->getLineasDirecciones($presupuestoEntity);
$this->viewData['POD'] = $this->getPOD();
$this->viewData['serviciosAutomaticos'] = [
@ -1318,11 +1315,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
return $model->getPOD();
}
protected function getDirecciones($presupuesto_id){
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
return $model->where('presupuesto_id', $presupuesto_id)->findAll();
}
protected function getLineasPresupuesto($presupuestoEntity){
$lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id);
@ -1384,10 +1376,9 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
protected function getLineasDirecciones($presupuestoEntity){
$direccionesEnvio = (new PresupuestoDireccionesModel())->getResource("", $presupuestoEntity->id)->get()->getResultObject();
$nuevasDirecciones = PresupuestoService::checkLineasEnvios($direccionesEnvio);
return $direccionesEnvio;
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$direccionesEnvio = $model->where('presupuesto_id', $presupuestoEntity->id)->findAll();
return PresupuestoService::checkLineasEnvios($direccionesEnvio);
}
}

View File

@ -90,6 +90,16 @@ class PresupuestoDireccionesModel extends \App\Models\GoBaseModel
->groupEnd();
}
public function updateLineaEnvio($lineaEnvio){
$lineaTemp = $lineaEnvio;
unset($lineaTemp->pais);
$this->save($lineaTemp);
}
/**
* Get resource data for pdf generation.
*

View File

@ -355,13 +355,6 @@ class PresupuestoLineaModel extends \App\Models\GoBaseModel
"tarifa_impresion_id" => $new_linea['fields']['tarifa_impresion_id'],
"rotativa_total_impresion" => $rot_total_impresion,
"rotativa_a_favor_fibra" => $new_linea['fields']['a_favor_fibra'] ?? 0,
"rotativa_negro" => $new_linea['fields']['datosTipologias']->negro ?? 0,
"rotativa_cyan" => $new_linea['fields']['datosTipologias']->cyan ?? 0,
"rotativa_magenta" => $new_linea['fields']['datosTipologias']->magenta ?? 0,
"rotativa_amarillo" => $new_linea['fields']['datosTipologias']->amarillo ?? 0,
"rotativa_cg" => $new_linea['fields']['datosTipologias']->cg ?? 0,
"rotativa_gota_negro" => $new_linea['fields']['datosTipologias']->gota_negro ?? 0,
"rotativa_gota_color" => $new_linea['fields']['datosTipologias']->gota_color,
"rotativa_mxm" => $new_linea['fields']['maquina_velocidad'] ?? 0,
"rotativa_resolucion" => $new_linea['fields']['resolucion'] ?? 0,
"rotativa_area_paginas" => $new_linea['fields']['superficie'] ?? 0,
@ -399,8 +392,19 @@ class PresupuestoLineaModel extends \App\Models\GoBaseModel
"precio_impresion" => $new_linea['fields']['precio_impresion_horas'] ?? 0,
"total_linea" => round($new_linea['fields']['total_impresion'], 2) ?? 0,
"margen_impresion" => $new_linea['fields']['margen_impresion_horas'] ?? 0,
"margen_click_pedido" => $new_linea['fields']['margen_click_pedido'] ?? 0,
];
if(array_key_exists('datosTipologias', $new_linea['fields'])){
$data += [
"rotativa_negro" => $new_linea['fields']['datosTipologias']->negro ?? 0,
"rotativa_cyan" => $new_linea['fields']['datosTipologias']->cyan ?? 0,
"rotativa_magenta" => $new_linea['fields']['datosTipologias']->magenta ?? 0,
"rotativa_amarillo" => $new_linea['fields']['datosTipologias']->amarillo ?? 0,
"rotativa_cg" => $new_linea['fields']['datosTipologias']->cg ?? 0,
"rotativa_gota_negro" => $new_linea['fields']['datosTipologias']->gota_negro ?? 0,
"rotativa_gota_color" => $new_linea['fields']['datosTipologias']->gota_color
];
}
$this->db
->table($this->table . " t1")
->where('id', $id_linea)

View File

@ -18,6 +18,7 @@ use App\Models\Presupuestos\PresupuestoAcabadosModel;
use App\Models\Presupuestos\PresupuestoManipuladosModel;
use App\Models\Presupuestos\PresupuestoEncuadernacionesModel;
use App\Models\Presupuestos\PresupuestoDireccionesModel;
use App\Models\Tarifas\TarifaEnvioModel;
@ -230,6 +231,9 @@ class PresupuestoService extends BaseService
// precio del pliego de impresion
$linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosRotativa);
if(count($linea['fields']) == 0){
return [];
}
[$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas);
@ -461,6 +465,10 @@ class PresupuestoService extends BaseService
$factor_altura = round($maquina->alto_impresion / ($data['alto'] + self::MARGEN_PAGINAS_ROTATIVA), 2);
$factor_altura_click = round($maquina->alto_click / ($data['alto'] + self::MARGEN_PAGINAS_ROTATIVA), 2);
if(floor($factor_anchura) == 0){
return [];
}
$multiplicador_pliego = $datosPedido->isCosido ? 4 : 2;
$paginas_por_pliego = round(floor($factor_anchura) * $factor_altura * $multiplicador_pliego, 2);
$pliegos_libro = round($paginas_por_pliego ? $datosPedido->paginas / $paginas_por_pliego : 0, 2);
@ -966,24 +974,39 @@ class PresupuestoService extends BaseService
public static function checkLineasPresupuesto($input_data, $array_lineas)
{
$cambios = false;
$lineas = [];
foreach ($array_lineas as $linea) {
if (!PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) {
// Generar linea con comparador
// Hay que ver si es rotativa o plana
if(str_contains($linea->tipo, '_rot_')){
}
else{
}
}
else{
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($input_data, $linea);
if(count($nueva_linea) >0){
if(round($nueva_linea['fields']['total_impresion'],2) != $linea->total_linea){
(new PresupuestoLineaModel())->updatePreciosLineasPresupuesto($linea->id, $nueva_linea);
$linea_to_save = (new PresupuestoLineaModel())->find($linea->id);
$cambios = true;
array_push($lineas, $linea_to_save);
}
else{
array_push($lineas, $linea);
}
}
}
}
return [$cambios, $array_lineas];
return [$cambios, $lineas];
}
private static function obtenerValorLineaPresupuesto($input_data, $linea){
@ -1108,7 +1131,7 @@ class PresupuestoService extends BaseService
case 'lp_cubierta':
case 'lp_sobrecubierta':
$data['uso'] = ($linea->tipo == 'lp cubierta')? 'cubierta':'sobrecubierta';
$data['uso'] = ($linea->tipo == 'lp_cubierta')? 'cubierta':'sobrecubierta';
$data['tipo'] = 'colorhq';
$data['isColor'] = true;
$data['datosPedido']->solapas = ($linea->tipo == 'lp cubierta')? $solapas : $solapas_sobrecubierta;
@ -1321,6 +1344,7 @@ class PresupuestoService extends BaseService
if(count($envios)>0){
$model = new TarifaEnvioModel();
foreach ($envios as $envio) {
$paisId = $envio->pais_id;
$cp= $envio->cp;
@ -1329,7 +1353,6 @@ class PresupuestoService extends BaseService
$nueva_tarifa = $model->getTarifaEnvio($paisId, $cp, $peso, $tipo_envio);
//$nueva_tarifa = $model->getPrecioTarifa($envio->tarifa_envio_id, $input_data['tirada'], $input_data['POD']);
if($nueva_tarifa && count($nueva_tarifa)>0){
$coste = 0;
$margen = 0;
@ -1345,14 +1368,17 @@ class PresupuestoService extends BaseService
$margen += $coste*floatval($nueva_tarifa[0]->margen)/100.0;
if(round($coste, 2) != $envio->precio ||
$margen != $envio->margen){
$margen != $envio->margen || $nueva_tarifa[0]->id != $envio->tarifa_id){
$envio->precio = round($coste, 2);
$envio->margen = $margen;
$envio->tarifa_id = $nueva_tarifa[0]->id;
$cambio = true;
$presupuestoDirecciones = new PresupuestoDireccionesModel();
$presupuestoDirecciones->updateLineaEnvio($envio);
}
//$model->updateTarifas($input_data['presupuesto_id'], array($envio_temp));
}
}
@ -1362,6 +1388,102 @@ class PresupuestoService extends BaseService
}
private static function obtenerLineasRotativa($input_data){
$uso = 'interior';
$tipo = $paginas->color > 0 ? 'color' : 'negro';
$parametrosRotativa = (object)array(
'a_favor_fibra' => $datosPedido->a_favor_fibra,
'bnPages' => $paginas->negro,
'colorPages' => $paginas->color,
'rotativa_gota_negro' => 0,
'rotativa_gota_color' => 0,
);
$opciones_papel = array(
'rotativa' => 1,
);
$tipo = array();
if ($paginas->color > 0) {
$tipo = 'color';
$opciones_papel['color'] = 1;
}
else {
$opciones_papel['bn'] = 1;
$tipo = 'negro';
}
// Se obtienen los papeles disponibles
$papelimpresionmodel = new PapelImpresionModel();
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
papel_generico_id: $papel_generico['id'],
gramaje: $gramaje,
options: $opciones_papel
);
$lineas = array();
// Para cada papel, se obtienen las maquinas disponibles
foreach ($papeles as $papel) {
$papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel();
if (is_null($datosTipolog)) {
$datosTipologias = $papelImpresionTipologiaModel
->findTipologiasForPapelImpresion($papel->id, $parametrosRotativa->colorPages > 0 ? 'color' : 'negro')
->get()->getResultObject();
if (count($datosTipologias) == 0) {
continue;
}
} else {
$datosTipologias = $datosTipolog;
}
$parametrosRotativa->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
$parametrosRotativa->rotativa_gota_color = $datosTipologias[0]->gota_color;
$parametrosRotativa->rotativa_negro = $datosTipologias[0]->negro;
$parametrosRotativa->rotativa_cyan = $datosTipologias[0]->cyan;
$parametrosRotativa->rotativa_magenta = $datosTipologias[0]->magenta;
$parametrosRotativa->rotativa_amarillo = $datosTipologias[0]->amarillo;
$maquinamodel = new MaquinaModel();
$maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto(
is_rotativa: 1,
tarifa_tipo: $tipo,
uso_tarifa: $uso,
tirada: $datosPedido->tirada + $datosPedido->merma,
papel_impresion_id: $papel->id,
);
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
$data['uso'] = $uso;
$data['tipo'] = $tipo;
$data['datosPedido'] = $datosPedido;
$data['cliente_id'] = $cliente_id;
$data['papel'] = $papel;
$data['maquina'] = $maquina;
$data['papel_generico'] = $papel_generico;
$data['parametrosRotativa'] = $parametrosRotativa;
$data['paginas'] = $paginas;
$data['gramaje'] = $gramaje;
$linea = PresupuestoService::getLineaPresupuestoRotativa($data);
if(empty($linea))
continue;
array_push($lineas, $linea);
}
}
return $lineas;
}
// Funcion que comprueba si existe una maquina

View File

@ -2977,7 +2977,7 @@ function clear_lp_rot_bn(clear_selectors){
$(".lp-rot-bn-input" ).val("0")
$("#lp_rot_bn_paginas" ).val(pags)
if(clear_selectors)
$( ".lp-rotbn-select").empty()
$( ".lp-rot-bn-select").empty()
}
@ -3324,7 +3324,7 @@ function clear_lp_rot_color(clear_selectors){
$(".lp-rot-color-input" ).val("0")
$("#lp_rot_color_paginas" ).val(pags)
if(clear_selectors)
$( ".lp-rotcolor-select").empty()
$( ".lp-rot-color-select").empty()
}

74399
xdebug.log

File diff suppressed because one or more lines are too long