mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
trabajando en cuando no encuentra maquina o papel
This commit is contained in:
@ -540,6 +540,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
$item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100);
|
$item->ws_externo_json_data = character_limiter($item->ws_externo_json_data, 100);
|
||||||
endif;
|
endif;
|
||||||
endforeach;
|
endforeach;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$isColor = $reqData['color'] ?? false;
|
$isColor = $reqData['color'] ?? false;
|
||||||
@ -564,7 +565,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
|
|
||||||
$cliente_id = $reqData['cliente_id'] ?? -1;
|
$cliente_id = $reqData['cliente_id'] ?? -1;
|
||||||
|
|
||||||
|
$resourceData = [];
|
||||||
|
|
||||||
if ($type == 'interior' || $type == 'guardas') {
|
if ($type == 'interior' || $type == 'guardas') {
|
||||||
|
|
||||||
@ -584,6 +585,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($type == 'guardas') {
|
if ($type == 'guardas') {
|
||||||
|
|
||||||
$datosPedido->paginas_impresion = intval($reqData['paginas_impresion']) ?? 0;
|
$datosPedido->paginas_impresion = intval($reqData['paginas_impresion']) ?? 0;
|
||||||
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico
|
// 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
|
// y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral
|
||||||
@ -597,16 +599,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
|
|
||||||
$a_favor_fibra = $reqData['a_favor_fibra'] ?? false;
|
$a_favor_fibra = $reqData['a_favor_fibra'] ?? false;
|
||||||
|
|
||||||
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog, $a_favor_fibra);
|
$input_data = array(
|
||||||
|
'uso' => $type,
|
||||||
|
'tipo_impresion_id' => $tipo_impresion_id,
|
||||||
|
'datosPedido' => $datosPedido,
|
||||||
|
'papel_generico' => $papel_generico,
|
||||||
|
'gramaje' => $gramaje,
|
||||||
|
'isColor' => $isColor,
|
||||||
|
'isHq' => $isHq,
|
||||||
|
'cliente_id' => $cliente_id,
|
||||||
|
'datosTipolog' => $datosTipolog,
|
||||||
|
'a_favor_fibra' => $a_favor_fibra
|
||||||
|
);
|
||||||
|
|
||||||
$newTokenHash = csrf_hash();
|
$resourceData = PresupuestoService::obtenerComparadorPlana($input_data);
|
||||||
$csrfTokenName = csrf_token();
|
|
||||||
$data = [
|
|
||||||
'lineas' => $resourceData,
|
|
||||||
$csrfTokenName => $newTokenHash
|
|
||||||
];
|
|
||||||
|
|
||||||
return $this->respond($data);
|
|
||||||
} else if ($type == 'interior_rot') {
|
} else if ($type == 'interior_rot') {
|
||||||
|
|
||||||
$paginas = (object)array(
|
$paginas = (object)array(
|
||||||
@ -628,36 +635,45 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
array_push($datosTipolog, $data);
|
array_push($datosTipolog, $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$resourceData = $this->getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog);
|
$input_data = [
|
||||||
|
'datosPedido' => $datosPedido,
|
||||||
$newTokenHash = csrf_hash();
|
'papel_generico' => $papel_generico,
|
||||||
$csrfTokenName = csrf_token();
|
'gramaje' => $gramaje,
|
||||||
$data = [
|
'paginas' => $paginas,
|
||||||
'lineas' => $resourceData,
|
'cliente_id' => $cliente_id,
|
||||||
$csrfTokenName => $newTokenHash
|
'datosTipolog' => $datosTipolog
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$resourceData = PresupuestoService::obtenerComparadorRotativa($input_data);
|
||||||
|
|
||||||
return $this->respond($data);
|
|
||||||
} else if ($type == 'cubierta' || $type == 'sobrecubierta') {
|
} else if ($type == 'cubierta' || $type == 'sobrecubierta') {
|
||||||
|
|
||||||
$datosPedido->solapas = $reqData['solapas'];
|
$datosPedido->solapas = $reqData['solapas'];
|
||||||
$datosPedido->solapas_ancho = $reqData['solapas_ancho'];
|
$datosPedido->solapas_ancho = $reqData['solapas_ancho'];
|
||||||
$datosPedido->lomo = $reqData['lomo'];
|
$datosPedido->lomo = $reqData['lomo'];
|
||||||
|
|
||||||
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
|
$input_data = array(
|
||||||
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
|
'uso' => $type,
|
||||||
// Cubierta y sobrecubierta siempre color HQ
|
'tipo_impresion_id' => $tipo_impresion_id,
|
||||||
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, 1, $cliente_id);
|
'datosPedido' => $datosPedido,
|
||||||
|
'papel_generico' => $papel_generico,
|
||||||
$newTokenHash = csrf_hash();
|
'gramaje' => $gramaje,
|
||||||
$csrfTokenName = csrf_token();
|
'isColor' => 1, // Cubierta y sobrecubierta siempre color HQ
|
||||||
$data = [
|
'isHq' => 1,
|
||||||
'lineas' => $resourceData,
|
'cliente_id' => $cliente_id,
|
||||||
$csrfTokenName => $newTokenHash
|
);
|
||||||
];
|
|
||||||
|
$resourceData = PresupuestoService::obtenerComparadorPlana($input_data);
|
||||||
return $this->respond($data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$newTokenHash = csrf_hash();
|
||||||
|
$csrfTokenName = csrf_token();
|
||||||
|
$data = [
|
||||||
|
'lineas' => $resourceData,
|
||||||
|
$csrfTokenName => $newTokenHash
|
||||||
|
];
|
||||||
|
|
||||||
|
return $this->respond($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->respond(Collection::datatable(
|
return $this->respond(Collection::datatable(
|
||||||
@ -785,216 +801,75 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
|
|
||||||
return $viewData;
|
return $viewData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
private function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog = null, $a_favor_fibra = false)
|
* Duplica un presupuesto dado por su ID.
|
||||||
{
|
*
|
||||||
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
|
* Esta función duplica un presupuesto y todas sus entidades relacionadas como acabados, encuadernaciones, manipulados,
|
||||||
|
* preimpresiones, direcciones y lineas. El presupuesto duplicado se marca como tal y a su título se le añade
|
||||||
$opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
|
* una cadena 'duplicado'. La función devuelve un array con un estado de éxito y el ID del nuevo presupuesto.
|
||||||
|
*
|
||||||
// Se obtienen los papeles disponibles
|
* @param int $id El ID del presupuesto a duplicar.
|
||||||
$papelimpresionmodel = new PapelImpresionModel();
|
* @return array Un array asociativo que contiene una clave 'success' que indica el estado de éxito de la operación,
|
||||||
$papeles = $papelimpresionmodel->getIdPapelesImpresionForPresupuesto(
|
* y una clave 'id' que contiene el ID del nuevo presupuesto si la operación fue exitosa.
|
||||||
papel_generico_id: $papel_generico['id'],
|
* Si ocurre una excepción, la clave 'success' será false y una clave 'message' contendrá el mensaje de la excepción.
|
||||||
gramaje: $gramaje,
|
* @throws \Exception Si ocurre un error durante la operación.
|
||||||
options: $opciones_papel
|
*/
|
||||||
);
|
|
||||||
|
|
||||||
$lineas = array();
|
|
||||||
// Para cada papel, se obtienen las maquinas disponibles
|
|
||||||
foreach ($papeles as $papel) {
|
|
||||||
|
|
||||||
$maquinamodel = new MaquinaModel();
|
|
||||||
$maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto(
|
|
||||||
is_rotativa: 0,
|
|
||||||
tarifa_tipo: $tipo,
|
|
||||||
uso_tarifa: ($uso == 'guardas') ? 'interior' : $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['opciones_papel'] = $opciones_papel;
|
|
||||||
$data['maquina'] = $maquina;
|
|
||||||
$data['papel_generico'] = $papel_generico;
|
|
||||||
$data['isColor'] = $isColor;
|
|
||||||
$data['a_favor_fibra'] = $a_favor_fibra;
|
|
||||||
$data['datosTipolog'] = $datosTipolog;
|
|
||||||
$data['gramaje'] = $gramaje;
|
|
||||||
|
|
||||||
$linea = PresupuestoService::getLineaPresupuestoPlana($data);
|
|
||||||
|
|
||||||
if(empty($linea))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
array_push($lineas, $linea);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $lineas;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function duplicarPresupuesto($id){
|
private function duplicarPresupuesto($id){
|
||||||
|
|
||||||
try{
|
try{
|
||||||
|
|
||||||
$presupuesto = $this->model->find($id);
|
$presupuesto = $this->model->find($id);
|
||||||
$presupuesto->titulo = $presupuesto->titulo .' - ' . lang('Presupuestos.duplicado');
|
$presupuesto->titulo = $presupuesto->titulo .' - ' . lang('Presupuestos.duplicado');
|
||||||
$presupuesto->is_duplicado = 1;
|
$presupuesto->is_duplicado = 1;
|
||||||
$new_id = $this->model->insert($presupuesto);
|
$new_id = $this->model->insert($presupuesto);
|
||||||
|
|
||||||
$presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
$presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||||
foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) {
|
foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) {
|
||||||
$acabado->presupuesto_id = $new_id;
|
$acabado->presupuesto_id = $new_id;
|
||||||
$presupuestoAcabadosModel->insert($acabado);
|
$presupuestoAcabadosModel->insert($acabado);
|
||||||
}
|
}
|
||||||
|
|
||||||
$presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
|
$presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
|
||||||
foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) {
|
foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) {
|
||||||
$encuadernacion->presupuesto_id = $new_id;
|
$encuadernacion->presupuesto_id = $new_id;
|
||||||
$presupuestoEncuadernacionesModel->insert($encuadernacion);
|
$presupuestoEncuadernacionesModel->insert($encuadernacion);
|
||||||
}
|
}
|
||||||
|
|
||||||
$presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel');
|
$presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel');
|
||||||
foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) {
|
foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) {
|
||||||
$manipulado->presupuesto_id = $new_id;
|
$manipulado->presupuesto_id = $new_id;
|
||||||
$presupuestoManipuladosModel->insert($manipulado);
|
$presupuestoManipuladosModel->insert($manipulado);
|
||||||
}
|
}
|
||||||
|
|
||||||
$presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel');
|
$presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel');
|
||||||
foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) {
|
foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) {
|
||||||
$preimpresion->presupuesto_id = $new_id;
|
$preimpresion->presupuesto_id = $new_id;
|
||||||
$presupuestoPreimpresionesModel->insert($preimpresion);
|
$presupuestoPreimpresionesModel->insert($preimpresion);
|
||||||
}
|
}
|
||||||
|
|
||||||
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
||||||
foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) {
|
foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) {
|
||||||
$direccion->presupuesto_id = $new_id;
|
$direccion->presupuesto_id = $new_id;
|
||||||
$presupuestoDireccionesModel->insert($direccion);
|
$presupuestoDireccionesModel->insert($direccion);
|
||||||
}
|
}
|
||||||
|
|
||||||
$presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
|
$presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
|
||||||
$presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id);
|
$presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'id' => $new_id
|
'id' => $new_id
|
||||||
];
|
];
|
||||||
|
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
return [
|
return [
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'message' => $e->getMessage()
|
'message' => $e->getMessage()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private function getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog = null)
|
|
||||||
{
|
|
||||||
$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;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function allItemsSelect()
|
public function allItemsSelect()
|
||||||
{
|
{
|
||||||
@ -1163,8 +1038,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected function getPapelGenericoRotativaNegro()
|
protected function getPapelGenericoRotativaNegro()
|
||||||
{
|
{
|
||||||
$model = model('App\Models\Configuracion\PapelGenericoModel');
|
$model = model('App\Models\Configuracion\PapelGenericoModel');
|
||||||
@ -1319,20 +1192,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
|||||||
$lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id);
|
$lineas = (new PresupuestoLineaModel())->getLineasPresupuesto($presupuestoEntity->id);
|
||||||
|
|
||||||
$input_data = [];
|
$input_data = [];
|
||||||
$input_data['tipo_impresion_id'] = $presupuestoEntity->tipo_impresion_id;
|
$input_data['presupuesto'] = $presupuestoEntity;
|
||||||
$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);
|
return PresupuestoService::checkLineasPresupuesto($input_data, $lineas);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,7 @@ use App\Models\Presupuestos\PresupuestoDireccionesModel;
|
|||||||
use App\Models\Tarifas\TarifaEnvioModel;
|
use App\Models\Tarifas\TarifaEnvioModel;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PresupuestoService extends BaseService
|
class PresupuestoService extends BaseService
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -973,24 +974,91 @@ class PresupuestoService extends BaseService
|
|||||||
|
|
||||||
public static function checkLineasPresupuesto($input_data, $array_lineas)
|
public static function checkLineasPresupuesto($input_data, $array_lineas)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$data['tipo_impresion_id'] = ($input_data['presupuesto'])->tipo_impresion_id;
|
||||||
|
$data['tirada'] = ($input_data['presupuesto'])->tirada;
|
||||||
|
$data['merma'] = ($input_data['presupuesto'])->merma;
|
||||||
|
$data['papel_formato_id'] = ($input_data['presupuesto'])->papel_formato_id;
|
||||||
|
$data['papel_formato_personalizado'] = ($input_data['presupuesto'])->papel_formato_personalizado;
|
||||||
|
$data['papel_formato_ancho'] = ($input_data['presupuesto'])->papel_formato_ancho;
|
||||||
|
$data['papel_formato_alto'] = ($input_data['presupuesto'])->papel_formato_alto;
|
||||||
|
$data['cliente_id'] = ($input_data['presupuesto'])->cliente_id;
|
||||||
|
$data['solapas'] = ($input_data['presupuesto'])->solapas;
|
||||||
|
$data['solapas_ancho'] = ($input_data['presupuesto'])->solapas_ancho;
|
||||||
|
$data['solapas_sobrecubierta'] = ($input_data['presupuesto'])->solapas_sobrecubierta;
|
||||||
|
$data['solapas_ancho_sobrecubierta'] = ($input_data['presupuesto'])->solapas_ancho_sobrecubierta;
|
||||||
|
$data['lomo_cubierta'] = ($input_data['presupuesto'])->lomo_cubierta;
|
||||||
|
$data['lomo_sobrecubierta'] = ($input_data['presupuesto'])->lomo_sobrecubierta;
|
||||||
|
|
||||||
$cambios = false;
|
$cambios = false;
|
||||||
|
|
||||||
$lineas = [];
|
$lineas = [];
|
||||||
|
|
||||||
foreach ($array_lineas as $linea) {
|
foreach ($array_lineas as $linea) {
|
||||||
|
|
||||||
if (!PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) {
|
if (PresupuestoService::checkMaquina($linea->maquina_id) || !PresupuestoService::checkPapelImpresion($linea->papel_impresion_id)) {
|
||||||
|
|
||||||
// Hay que ver si es rotativa o plana
|
// Hay que ver si es rotativa o plana
|
||||||
if(str_contains($linea->tipo, '_rot_')){
|
if(str_contains($linea->tipo, '_rot_')){
|
||||||
|
|
||||||
|
if(($input_data['presupuesto'])->papel_formato_personalizado == 0){
|
||||||
|
$papel_formato = (new PapelFormatoModel())->find(($input_data['presupuesto'])->papel_formato_id);
|
||||||
|
$ancho = $papel_formato->ancho;
|
||||||
|
$alto = $papel_formato->alto;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$ancho = ($input_data['presupuesto'])->papel_formato_ancho;
|
||||||
|
$alto = ($input_data['presupuesto'])->papel_formato_alto;
|
||||||
|
}
|
||||||
|
|
||||||
|
$papel_generico = (new PapelGenericoModel)->find($linea->papel_id);
|
||||||
|
$papel_generico = [
|
||||||
|
'id' => $papel_generico->id,
|
||||||
|
'nombre' => $papel_generico->nombre,
|
||||||
|
];
|
||||||
|
|
||||||
|
$datos = [
|
||||||
|
'datosPedido' => (object)array(
|
||||||
|
'paginas' => ($input_data['presupuesto'])->paginas,
|
||||||
|
'tirada' => ($input_data['presupuesto'])->tirada,
|
||||||
|
'merma' => ($input_data['presupuesto'])->merma,
|
||||||
|
'ancho' => $ancho,
|
||||||
|
'alto' => $alto,
|
||||||
|
'a_favor_fibra' => $linea->rotativa_a_favor_fibra,
|
||||||
|
'isCosido' => (new TipoPresupuestoModel())->get_isCosido(($input_data['presupuesto'])->tipo_impresion_id),
|
||||||
|
),
|
||||||
|
'papel_generico' => $papel_generico,
|
||||||
|
'gramaje' => $linea->gramaje,
|
||||||
|
'paginas' => (object)array(
|
||||||
|
'negro' => ($input_data['presupuesto'])->paginas - $linea->rotativa_pag_color,
|
||||||
|
'color' => $linea->rotativa_pag_color,
|
||||||
|
),
|
||||||
|
'cliente_id' => ($input_data['presupuesto'])->cliente_id,
|
||||||
|
'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,
|
||||||
|
)]
|
||||||
|
];
|
||||||
|
|
||||||
|
$comp_data = PresupuestoService::obtenerComparadorRotativa($datos);
|
||||||
|
// se ordena $comp_data usando el campo ['fields]['total_impresion']
|
||||||
|
usort($comp_data, function($a, $b) {
|
||||||
|
return $a['fields']['total_impresion'] <=> $b['fields']['total_impresion'];
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($input_data, $linea);
|
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($data, $linea);
|
||||||
if(count($nueva_linea) >0){
|
if(count($nueva_linea) >0){
|
||||||
if(round($nueva_linea['fields']['total_impresion'],2) != $linea->total_linea){
|
if(round($nueva_linea['fields']['total_impresion'],2) != $linea->total_linea){
|
||||||
(new PresupuestoLineaModel())->updatePreciosLineasPresupuesto($linea->id, $nueva_linea);
|
(new PresupuestoLineaModel())->updatePreciosLineasPresupuesto($linea->id, $nueva_linea);
|
||||||
@ -1009,6 +1077,8 @@ class PresupuestoService extends BaseService
|
|||||||
return [$cambios, $lineas];
|
return [$cambios, $lineas];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static function obtenerValorLineaPresupuesto($input_data, $linea){
|
private static function obtenerValorLineaPresupuesto($input_data, $linea){
|
||||||
|
|
||||||
$tipo_impresion_id = $input_data['tipo_impresion_id'];
|
$tipo_impresion_id = $input_data['tipo_impresion_id'];
|
||||||
@ -1388,12 +1458,33 @@ class PresupuestoService extends BaseService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static function obtenerLineasRotativa($input_data){
|
// Funcion que obtiene el coste para impresión en rotativa
|
||||||
|
// y devuelve un array con los datos de la lineas
|
||||||
|
// Parametros de entrada: $input_data es un array con los siguientes datos:
|
||||||
|
// - paginas: objeto con las paginas a imprimir en color y negro
|
||||||
|
// - datosPedido: un objeto que contiene los siguientes campos
|
||||||
|
// * paginas: numero total de páginas
|
||||||
|
// * tirada: numero de ejemplares a imprimir
|
||||||
|
// * merma: número de ejemplares extra a imprimir
|
||||||
|
// * ancho: ancho del libro
|
||||||
|
// * alto: alto del libro
|
||||||
|
// * a_favor_fibra: dirección de la impresión
|
||||||
|
// * isCosido: indica si el libro es cosido o no
|
||||||
|
// - papel_generico: objeto que contiene el id y el nombre del papel generico
|
||||||
|
// - 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){
|
||||||
|
|
||||||
$uso = 'interior';
|
$paginas = $input_data['paginas'];
|
||||||
|
$datosPedido = $input_data['datosPedido'];
|
||||||
|
$gramaje = $input_data['gramaje'];
|
||||||
|
$papel_generico = $input_data['papel_generico'];
|
||||||
|
$cliente_id = $input_data['cliente_id'];
|
||||||
|
$datosTipolog = $input_data['datosTipolog'];
|
||||||
|
|
||||||
$tipo = $paginas->color > 0 ? 'color' : 'negro';
|
$tipo = $paginas->color > 0 ? 'color' : 'negro';
|
||||||
|
$uso = 'interior';
|
||||||
|
|
||||||
$parametrosRotativa = (object)array(
|
$parametrosRotativa = (object)array(
|
||||||
'a_favor_fibra' => $datosPedido->a_favor_fibra,
|
'a_favor_fibra' => $datosPedido->a_favor_fibra,
|
||||||
@ -1460,19 +1551,20 @@ class PresupuestoService extends BaseService
|
|||||||
papel_impresion_id: $papel->id,
|
papel_impresion_id: $papel->id,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$data['uso'] = $uso;
|
||||||
|
$data['tipo'] = $tipo;
|
||||||
|
$data['datosPedido'] = $datosPedido;
|
||||||
|
$data['cliente_id'] = $cliente_id;
|
||||||
|
$data['papel'] = $papel;
|
||||||
|
$data['papel_generico'] = $papel_generico;
|
||||||
|
$data['parametrosRotativa'] = $parametrosRotativa;
|
||||||
|
$data['paginas'] = $paginas;
|
||||||
|
$data['gramaje'] = $gramaje;
|
||||||
|
|
||||||
// Se recorren las máquinas y se calcula el coste de linea por cada una
|
// Se recorren las máquinas y se calcula el coste de linea por cada una
|
||||||
foreach ($maquinas as $maquina) {
|
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['maquina'] = $maquina;
|
||||||
$data['papel_generico'] = $papel_generico;
|
|
||||||
$data['parametrosRotativa'] = $parametrosRotativa;
|
|
||||||
$data['paginas'] = $paginas;
|
|
||||||
$data['gramaje'] = $gramaje;
|
|
||||||
|
|
||||||
$linea = PresupuestoService::getLineaPresupuestoRotativa($data);
|
$linea = PresupuestoService::getLineaPresupuestoRotativa($data);
|
||||||
|
|
||||||
@ -1486,6 +1578,100 @@ class PresupuestoService extends BaseService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Funcion que obtiene el coste para impresión en plana
|
||||||
|
// y devuelve un array con los datos de la lineas
|
||||||
|
// Parametros de entrada: $input_data es un array con los siguientes datos:
|
||||||
|
// - uso: 'interior', 'guardas', 'cubierta' o 'sobrecubierta'
|
||||||
|
// - tipo_impresion_id: id del tipo de impresion
|
||||||
|
// - datosPedido: un objeto que contiene los siguientes campos
|
||||||
|
// * paginas: numero total de páginas
|
||||||
|
// * tirada: numero de ejemplares a imprimir
|
||||||
|
// * merma: número de ejemplares extra a imprimir
|
||||||
|
// * ancho: ancho del libro
|
||||||
|
// * alto: alto del libro
|
||||||
|
// * a_favor_fibra: dirección de la impresión
|
||||||
|
// * isCosido: indica si el libro es cosido o no
|
||||||
|
// * solapas: (solo cubierta y sobrecubierta) indica si hay o no solapas
|
||||||
|
// * solapas_ancho: (solo cubierta y sobrecubierta) indica el ancho de las solapas
|
||||||
|
// * lomo: (solo cubierta y sobrecubierta) ancho del lomo del libro (o libro mas cubierta)
|
||||||
|
// - papel_generico: objeto que contiene el id y el nombre del papel generico
|
||||||
|
// - gramaje: gramaje del papel seleccionado
|
||||||
|
// - 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){
|
||||||
|
|
||||||
|
$uso = $input_data['uso'];
|
||||||
|
$tipo_impresion_id = $input_data['tipo_impresion_id'];
|
||||||
|
$datosPedido = $input_data['datosPedido'];
|
||||||
|
$papel_generico = $input_data['papel_generico'];
|
||||||
|
$gramaje = $input_data['gramaje'];
|
||||||
|
$isColor = $input_data['isColor'];
|
||||||
|
$isHq = $input_data['isHq'];
|
||||||
|
$cliente_id = $input_data['cliente_id'];
|
||||||
|
$datosTipolog = $input_data['datosTipolog'] ?? null;
|
||||||
|
$a_favor_fibra = $datosPedido->a_favor_fibra ?? false;
|
||||||
|
|
||||||
|
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
|
||||||
|
|
||||||
|
if ($uso == 'cubierta' || $uso == 'sobrecubierta') {
|
||||||
|
|
||||||
|
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($uso, $tipo_impresion_id, $datosPedido);
|
||||||
|
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($uso, $tipo_impresion_id, $datosPedido);
|
||||||
|
}
|
||||||
|
|
||||||
|
$opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
|
||||||
|
|
||||||
|
// 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) {
|
||||||
|
|
||||||
|
$maquinamodel = new MaquinaModel();
|
||||||
|
$maquinas = $maquinamodel->getMaquinaImpresionForPresupuesto(
|
||||||
|
is_rotativa: 0,
|
||||||
|
tarifa_tipo: $tipo,
|
||||||
|
uso_tarifa: ($uso == 'guardas') ? 'interior' : $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['opciones_papel'] = $opciones_papel;
|
||||||
|
$data['maquina'] = $maquina;
|
||||||
|
$data['papel_generico'] = $papel_generico;
|
||||||
|
$data['isColor'] = $isColor;
|
||||||
|
$data['a_favor_fibra'] = $a_favor_fibra;
|
||||||
|
$data['datosTipolog'] = $datosTipolog;
|
||||||
|
$data['gramaje'] = $gramaje;
|
||||||
|
|
||||||
|
$linea = PresupuestoService::getLineaPresupuestoPlana($data);
|
||||||
|
|
||||||
|
if(empty($linea))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
array_push($lineas, $linea);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $lineas;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Funcion que comprueba si existe una maquina
|
// Funcion que comprueba si existe una maquina
|
||||||
private static function checkMaquina($maquina_id){
|
private static function checkMaquina($maquina_id){
|
||||||
|
|
||||||
|
|||||||
3860
xdebug.log
3860
xdebug.log
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user