trabajando en checkear las lineas de presupuesto

This commit is contained in:
jaimejimenezortega
2024-03-19 08:20:55 +01:00
parent c815c24150
commit a231bd9c1b
8 changed files with 235 additions and 22 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
ci4/.env
.vscode/

View File

@ -346,7 +346,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$this->viewData['acabadosSobrecubierta'] = $this->getAcabadosSobrecubierta();
// Lineas Presupuesto
$this->viewData['lineasPresupuesto'] = (new PresupuestoLineaModel())->getLineasPresupuesto($id);
$this->viewData['lineasPresupuesto'] = $this->getLineasPresupuesto($presupuestoEntity);
// Tarifas
$this->viewData['serviciosAcabado'] = $this->getServiciosAcabado();
@ -1302,4 +1302,26 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
return $model->where('presupuesto_id', $presupuesto_id)->findAll();
}
protected function getLineasPresupuesto($presupuestoEntity){
$lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id);
$input_data = [];
$input_data['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id;
$input_data['tirada'] = $presupuestoEntity->tirada;
$input_data['merma'] = $presupuestoEntity->merma;
$input_data['papel_formato_id'] = $presupuestoEntity->papel_formato_id;
$input_data['papel_formato_personalizado'] = $presupuestoEntity->papel_formato_personalizado;
$input_data['papel_formato_ancho'] = $presupuestoEntity->papel_formato_ancho;
$input_data['papel_formato_alto'] = $presupuestoEntity->papel_formato_alto;
$input_data['cliente_id'] = $presupuestoEntity->cliente_id;
$input_data['solapas'] = $presupuestoEntity->solapas;
$input_data['solapas_ancho'] = $presupuestoEntity->solapas_ancho;
$input_data['solapas_sobrecubierta'] = $presupuestoEntity->solapas_sobrecubierta;
$input_data['solapas_ancho_sobrecubierta'] = $presupuestoEntity->solapas_ancho_sobrecubierta;
$input_data['lomo_cubierta'] = $presupuestoEntity->lomo_cubierta;
$input_data['lomo_sobrecubierta'] = $presupuestoEntity->lomo_sobrecubierta;
return PresupuestoService::checkLineasPresupuesto($input_data, $lineas);
}
}

View File

@ -17,19 +17,8 @@ class Test extends BaseController
public function index()
{
$presupuestoModel = model('App\Models\Presupuestos\PresupuestoModel');
$presupuesto = $presupuestoModel->find(44);
$presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
echo '<pre>';
$presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
$presupuestoLineaModel->duplicateLineasPresupuesto(48, 75);
echo '</pre>';
$status = PresupuestoService::checkMaquina(1995);
var_dump($status);
}

View File

@ -51,7 +51,8 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"comentarios_pdf" => null,
"comentarios_tarifa" => null,
"comentarios_produccion" => null,
"lomo" => null,
"lomo_cubierta" => null,
"lomo_sobrecubierta" => null,
"total_presupuesto" => null,
"envios_recoge_cliente" => false,
"tirada_alternativa_json_data" => null,
@ -120,7 +121,8 @@ class PresupuestoEntity extends \CodeIgniter\Entity\Entity
"sobrecubiertas_ancho" => "float",
"merma" => "float",
"merma_cubierta" => "float",
"lomo" => "?int",
"lomo_cubierta" => "?float",
"lomo_sobrecubierta" => "?float",
"total_presupuesto" => "?float",
"envios_recoge_cliente" => "boolean",
"aprobado_user_id" => "?int",

View File

@ -72,7 +72,8 @@ class PresupuestoModel extends \App\Models\GoBaseModel
"comentarios_pdf",
"comentarios_tarifa",
"comentarios_produccion",
"lomo",
"lomo_cubierta",
"lomo_sobrecubierta",
"total_presupuesto",
"envios_recoge_cliente",
"tirada_alternativa_json_data",
@ -277,8 +278,9 @@ class PresupuestoModel extends \App\Models\GoBaseModel
->table($this->table . " t1")
->select(
"t1.id AS id, t1.created_at AS fecha, t1.titulo AS titulo, t1.autor AS autor, t1.ferro AS ferro,
t1.ferro_digital AS ferro_digital, t1.prototipo AS prototipo, t1.solapas AS solapas, t1.lomo AS lomo,
t1.solapas_ancho AS solapas_ancho, t1.paginas AS paginas, t1.tirada AS tirada, t1.coleccion AS coleccion,
t1.ferro_digital AS ferro_digital, t1.prototipo AS prototipo, t1.solapas AS solapas, t1.solapas_sobrecubierta AS solapas_sobrecubierta,
t1.lomo_cubierta AS lomo_cubierta, t1.lomo_sobrecubierta AS lomo_sobrecubierta,
t1.solapas_ancho AS solapas_ancho, t1.solapas_sobrecubierta_ancho AS solapas_sobrecubierta_ancho, t1.paginas AS paginas, t1.tirada AS tirada, t1.coleccion AS coleccion,
t1.retractilado AS retractilado, t1.guardas AS guardas, t1.marcapaginas AS marcapaginas,
t1.comentarios_pdf AS comentarios_pdf, t1.tirada_alternativa_json_data AS tiradas_alternativas,
t1.total_presupuesto AS total_presupuesto, t1.total_precio_unidad AS total_precio_unidad,

View File

@ -6,8 +6,11 @@ use CodeIgniter\Config\BaseService;
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
use App\Models\Clientes\ClientePreciosModel;
use App\Models\Configuracion\MaquinaModel;
use App\Models\Configuracion\PapelImpresionModel;
use App\Models\Configuracion\PapelGenericoModel;
use App\Models\Configuracion\TipoPresupuestoModel;
use App\Models\Configuracion\PapelFormatoModel;
class PresupuestoService extends BaseService
{
@ -949,6 +952,193 @@ class PresupuestoService extends BaseService
return $opciones_papel;
}
public static function checkLineasPresupuesto($input_data, $array_lineas)
{
foreach ($array_lineas as $linea) {
if (!PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) {
// Generar linea con comparador
}
else{
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($input_data, $linea);
if(count($nueva_linea) >0){
if(round($nueva_linea['fields']['total_impresion'],2) != $linea->total_linea){
// Generar linea con comparador
}
}
}
}
return $array_lineas;
}
private static function obtenerValorLineaPresupuesto($input_data, $linea){
$tipo_impresion_id = $input_data['tipo_impresion_id'];
$tirada = $input_data['tirada'];
$merma = $input_data['merma'];
$papel_formato_id = $input_data['papel_formato_id'];
$papel_formato_personalizado = $input_data['papel_formato_personalizado'];
$ancho = $input_data['papel_formato_ancho'];
$alto = $input_data['papel_formato_alto'];
$cliente_id = $input_data['cliente_id'];
$solapas = $input_data['solapas'];
$solapas_sobrecubierta = $input_data['solapas_sobrecubierta'];
$solapas_ancho_cubierta = $input_data['solapas_ancho'];
$solapas_ancho_sobrecubierta = $input_data['solapas_ancho_sobrecubierta'];
$lomo_cubierta = $input_data['lomo_cubierta'];
$lomo_sobrecubierta = $input_data['lomo_sobrecubierta'];
if($papel_formato_personalizado == 0){
$papel_formato = (new PapelFormatoModel())->find($papel_formato_id);
$ancho = $papel_formato->ancho;
$alto = $papel_formato->alto;
}
$data = [];
$output_data = [];
$papel_impresion = (new PapelImpresionModel())->find($linea->papel_impresion_id);
$maquina = (new MaquinaModel())->find($linea->maquina_id);
$maquina->maquina_id = $maquina->id;
$maquina->maquina = $maquina->nombre;
$papel_generico = (new PapelGenericoModel())->find($linea->papel_id);
$papel_generico = array(
'id' => $papel_generico->id,
'nombre' => $papel_generico->nombre,
);
$data['datosPedido'] = (object)array(
'paginas' => $linea->paginas,
'tirada' => $tirada,
'merma' => $merma,
'ancho' => $ancho,
'alto' => $alto,
'a_favor_fibra' => $linea->rotativa_a_favor_fibra,
'isCosido' => (new TipoPresupuestoModel())->get_isCosido($tipo_impresion_id),
);
$data['cliente_id'] = $cliente_id;
$data['papel'] = $papel_impresion;
$data['maquina'] = $maquina;
$data['papel_generico'] = $papel_generico;
$data['a_favor_fibra'] = $linea->rotativa_a_favor_fibra;
$data['datosTipolog'] = [(object)array(
'negro' => $linea->rotativa_negro,
'cyan' => $linea->rotativa_cyan,
'magenta' => $linea->rotativa_magenta,
'amarillo' => $linea->rotativa_amarillo,
'cg' => $linea->rotativa_cg,
'gota_negro' => $linea->rotativa_gota_negro,
'gota_color' => $linea->rotativa_gota_color,
)];
$data['gramaje'] = $linea->gramaje;
switch($linea->tipo){
case 'lp_bn':
case 'lp_bnhq':
case 'lp_color':
case 'lp_colorhq':
case 'lp_guardas':
$data['uso'] = 'interior';
$isColor = strpos($linea->tipo, 'color') !== false;
$isHq = strpos($linea->tipo, 'hq') !== false;
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
$opciones_papel = PresupuestoService::get_opciones_papel('interior', $isColor);
if($linea->tipo == 'lp_guardas'){
$data['datosPedido']->paginas_impresion = $linea->paginas_impresion;
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico
// y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral
// o wire-o tapa dura, las guardas se imprimen como hojas sueltas
if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
$data['datosPedido']->isCosido = true;
} else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) {
$data['datosPedido']->isCosido = false;
}
}
$data['tipo'] = $tipo;
$data['isColor'] = $isColor;
$data['opciones_papel'] = $opciones_papel;
$output_data = PresupuestoService::getLineaPresupuestoPlana($data);
break;
case 'lp_rot_color':
case 'lp_rot_bn':
$data['uso'] = 'interior';
$tipo = $linea->rotativa_pag_color>0 ? 'color' : 'negro';
$data['paginas'] = (object)array(
'negro' => $linea->paginas-$linea->rotativa_pag_color,
'color' => $linea->rotativa_pag_color,
);
$data['tipo'] = $tipo;
$data['parametrosRotativa'] = (object)array(
'a_favor_fibra' => $linea->rotativa_a_favor_fibra,
'bnPages' => $data['paginas']->negro,
'colorPages' => $data['paginas']->color,
'rotativa_negro' => $linea->rotativa_negro,
'rotativa_cyan' => $linea->rotativa_cyan,
'rotativa_magenta' => $linea->rotativa_magenta,
'rotativa_amarillo' => $linea->rotativa_amarillo,
'rotativa_gota_negro' => $linea->rotativa_gota_negro,
'rotativa_gota_color' => $linea->rotativa_gota_color,
);
$output_data = PresupuestoService::getLineaPresupuestoRotativa($data);
break;
case 'lp_cubierta':
case 'lp_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;
$data['datosPedido']->solapas_ancho = ($linea->tipo == 'lp cubierta')? $solapas_ancho_cubierta : $solapas_ancho_sobrecubierta;
$data['datosPedido']->lomo = ($linea->tipo == 'lp cubierta')? $lomo_cubierta : $lomo_sobrecubierta;
$opciones_papel = PresupuestoService::get_opciones_papel($data['uso'], true);
$data['opciones_papel'] = $opciones_papel;
$data['datosPedido']->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($data['uso'], $tipo_impresion_id, $data['datosPedido']);
$data['datosPedido']->altoExteriores = PresupuestoService::getAltoTotalExteriores($data['uso'], $tipo_impresion_id, $data['datosPedido']);
$output_data = PresupuestoService::getLineaPresupuestoPlana($data);
break;
}
return $output_data;
}
// Funcion que comprueba si existe una maquina
private static function checkMaquina($maquina_id){
$maquina = (new MaquinaModel())->find($maquina_id);
if (!$maquina) {
return false;
}
return true;
}
// Funcion que comprueba si existe un papel de impresion
private static function checkPapelImpresion($papel_impresion_id){
$papel = (new PapelImpresionModel())->find($papel_impresion_id);
if (!$papel) {
return false;
}
return true;
}
/**
* Devuelve la dimensión del lomo interior.
*/

View File

@ -4001,7 +4001,7 @@ async function calcularPresupuesto_sobrecubierta(fromComparador=false, input_dat
merma: parseInt($('#mermacubierta').val()),
ancho: dimension.ancho,
alto: dimension.alto,
lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto,
lomo: getLomoLineasPresupuesto() + getLomoCubiertaLineasPresupuesto(),
papel_generico_id: input_data.papel_generico_id,
papel_generico: input_data.papel_generico,
gramaje: input_data.gramaje,
@ -4137,6 +4137,7 @@ function getLomoLineasPresupuesto(){
catch(error){
lomoTotal = 0
}
$('#lomo_cubierta').val(lomoTotal)
return lomoTotal
}
@ -4152,6 +4153,7 @@ function getLomoCubiertaLineasPresupuesto(){
catch(error){
lomoTotal = 0
}
$('#lomo_sobrecubierta').val(lomoTotal+parseFloat($('#lomo_cubierta').val()))
return lomoTotal
}

View File

@ -17,6 +17,10 @@
value="<?= $presupuestoEntity->id ?>"></input>
<input type="hidden" name="tipo_impresion_id" id="tipo_impresion_id" class="form-control"
value="<?= $tipo_impresion_id ?>"></input>
<input type="hidden" name="lomo_cubierta" id="lomo_cubierta" class="form-control"
value="<?= is_null($presupuestoEntity->lomo_cubierta)?0:$presupuestoEntity->lomo_cubierta ?>"></input>
<input type="hidden" name="lomo_sobrecubierta" id="lomo_sobrecubierta" class="form-control"
value="<?= is_null($presupuestoEntity->lomo_sobrecubierta)?0:$presupuestoEntity->lomo_sobrecubierta ?>"></input>
<input type="hidden" name="isCosido" id="isCosido" class="form-control"
value="<?= $isCosido ?>"></input>
<input type="hidden" name="POD" id="POD" class="form-control"