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);
|
||||
endif;
|
||||
endforeach;
|
||||
|
||||
} else {
|
||||
|
||||
$isColor = $reqData['color'] ?? false;
|
||||
@ -564,7 +565,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
|
||||
$cliente_id = $reqData['cliente_id'] ?? -1;
|
||||
|
||||
|
||||
$resourceData = [];
|
||||
|
||||
if ($type == 'interior' || $type == 'guardas') {
|
||||
|
||||
@ -584,6 +585,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
}
|
||||
|
||||
if ($type == 'guardas') {
|
||||
|
||||
$datosPedido->paginas_impresion = intval($reqData['paginas_impresion']) ?? 0;
|
||||
// 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
|
||||
@ -597,16 +599,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
|
||||
$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();
|
||||
$csrfTokenName = csrf_token();
|
||||
$data = [
|
||||
'lineas' => $resourceData,
|
||||
$csrfTokenName => $newTokenHash
|
||||
];
|
||||
$resourceData = PresupuestoService::obtenerComparadorPlana($input_data);
|
||||
|
||||
return $this->respond($data);
|
||||
} else if ($type == 'interior_rot') {
|
||||
|
||||
$paginas = (object)array(
|
||||
@ -628,36 +635,45 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
array_push($datosTipolog, $data);
|
||||
}
|
||||
|
||||
$resourceData = $this->getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog);
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
$data = [
|
||||
'lineas' => $resourceData,
|
||||
$csrfTokenName => $newTokenHash
|
||||
$input_data = [
|
||||
'datosPedido' => $datosPedido,
|
||||
'papel_generico' => $papel_generico,
|
||||
'gramaje' => $gramaje,
|
||||
'paginas' => $paginas,
|
||||
'cliente_id' => $cliente_id,
|
||||
'datosTipolog' => $datosTipolog
|
||||
];
|
||||
|
||||
$resourceData = PresupuestoService::obtenerComparadorRotativa($input_data);
|
||||
|
||||
return $this->respond($data);
|
||||
} else if ($type == 'cubierta' || $type == 'sobrecubierta') {
|
||||
|
||||
$datosPedido->solapas = $reqData['solapas'];
|
||||
$datosPedido->solapas_ancho = $reqData['solapas_ancho'];
|
||||
$datosPedido->lomo = $reqData['lomo'];
|
||||
|
||||
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
|
||||
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
|
||||
// Cubierta y sobrecubierta siempre color HQ
|
||||
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, 1, $cliente_id);
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
$data = [
|
||||
'lineas' => $resourceData,
|
||||
$csrfTokenName => $newTokenHash
|
||||
];
|
||||
|
||||
return $this->respond($data);
|
||||
$input_data = array(
|
||||
'uso' => $type,
|
||||
'tipo_impresion_id' => $tipo_impresion_id,
|
||||
'datosPedido' => $datosPedido,
|
||||
'papel_generico' => $papel_generico,
|
||||
'gramaje' => $gramaje,
|
||||
'isColor' => 1, // Cubierta y sobrecubierta siempre color HQ
|
||||
'isHq' => 1,
|
||||
'cliente_id' => $cliente_id,
|
||||
);
|
||||
|
||||
$resourceData = PresupuestoService::obtenerComparadorPlana($input_data);
|
||||
}
|
||||
|
||||
$newTokenHash = csrf_hash();
|
||||
$csrfTokenName = csrf_token();
|
||||
$data = [
|
||||
'lineas' => $resourceData,
|
||||
$csrfTokenName => $newTokenHash
|
||||
];
|
||||
|
||||
return $this->respond($data);
|
||||
}
|
||||
|
||||
return $this->respond(Collection::datatable(
|
||||
@ -785,216 +801,75 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
|
||||
return $viewData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog = null, $a_favor_fibra = false)
|
||||
{
|
||||
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplica un presupuesto dado por su ID.
|
||||
*
|
||||
* 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
|
||||
* una cadena 'duplicado'. La función devuelve un array con un estado de éxito y el ID del nuevo presupuesto.
|
||||
*
|
||||
* @param int $id El ID del presupuesto a duplicar.
|
||||
* @return array Un array asociativo que contiene una clave 'success' que indica el estado de éxito de la operación,
|
||||
* y una clave 'id' que contiene el ID del nuevo presupuesto si la operación fue exitosa.
|
||||
* Si ocurre una excepción, la clave 'success' será false y una clave 'message' contendrá el mensaje de la excepción.
|
||||
* @throws \Exception Si ocurre un error durante la operación.
|
||||
*/
|
||||
private function duplicarPresupuesto($id){
|
||||
|
||||
try{
|
||||
|
||||
$presupuesto = $this->model->find($id);
|
||||
$presupuesto->titulo = $presupuesto->titulo .' - ' . lang('Presupuestos.duplicado');
|
||||
$presupuesto->is_duplicado = 1;
|
||||
$new_id = $this->model->insert($presupuesto);
|
||||
|
||||
$presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) {
|
||||
$acabado->presupuesto_id = $new_id;
|
||||
$presupuestoAcabadosModel->insert($acabado);
|
||||
}
|
||||
|
||||
$presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
|
||||
foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) {
|
||||
$encuadernacion->presupuesto_id = $new_id;
|
||||
$presupuestoEncuadernacionesModel->insert($encuadernacion);
|
||||
}
|
||||
|
||||
$presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel');
|
||||
foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) {
|
||||
$manipulado->presupuesto_id = $new_id;
|
||||
$presupuestoManipuladosModel->insert($manipulado);
|
||||
}
|
||||
|
||||
$presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel');
|
||||
foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) {
|
||||
$preimpresion->presupuesto_id = $new_id;
|
||||
$presupuestoPreimpresionesModel->insert($preimpresion);
|
||||
}
|
||||
|
||||
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
||||
foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) {
|
||||
$direccion->presupuesto_id = $new_id;
|
||||
$presupuestoDireccionesModel->insert($direccion);
|
||||
}
|
||||
|
||||
$presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
|
||||
$presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id);
|
||||
|
||||
return [
|
||||
'success' => true,
|
||||
'id' => $new_id
|
||||
];
|
||||
|
||||
}catch(\Exception $e){
|
||||
return [
|
||||
'success' => false,
|
||||
'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;
|
||||
}
|
||||
try{
|
||||
|
||||
$presupuesto = $this->model->find($id);
|
||||
$presupuesto->titulo = $presupuesto->titulo .' - ' . lang('Presupuestos.duplicado');
|
||||
$presupuesto->is_duplicado = 1;
|
||||
$new_id = $this->model->insert($presupuesto);
|
||||
|
||||
$presupuestoAcabadosModel = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||
foreach ($presupuestoAcabadosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $acabado) {
|
||||
$acabado->presupuesto_id = $new_id;
|
||||
$presupuestoAcabadosModel->insert($acabado);
|
||||
}
|
||||
|
||||
$presupuestoEncuadernacionesModel = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
|
||||
foreach ($presupuestoEncuadernacionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $encuadernacion) {
|
||||
$encuadernacion->presupuesto_id = $new_id;
|
||||
$presupuestoEncuadernacionesModel->insert($encuadernacion);
|
||||
}
|
||||
|
||||
$presupuestoManipuladosModel = model('App\Models\Presupuestos\PresupuestoManipuladosModel');
|
||||
foreach ($presupuestoManipuladosModel->where('presupuesto_id', $presupuesto->id)->findAll() as $manipulado) {
|
||||
$manipulado->presupuesto_id = $new_id;
|
||||
$presupuestoManipuladosModel->insert($manipulado);
|
||||
}
|
||||
|
||||
$presupuestoPreimpresionesModel = model('App\Models\Presupuestos\PresupuestoPreimpresionesModel');
|
||||
foreach ($presupuestoPreimpresionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $preimpresion) {
|
||||
$preimpresion->presupuesto_id = $new_id;
|
||||
$presupuestoPreimpresionesModel->insert($preimpresion);
|
||||
}
|
||||
|
||||
$presupuestoDireccionesModel = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
|
||||
foreach ($presupuestoDireccionesModel->where('presupuesto_id', $presupuesto->id)->findAll() as $direccion) {
|
||||
$direccion->presupuesto_id = $new_id;
|
||||
$presupuestoDireccionesModel->insert($direccion);
|
||||
}
|
||||
|
||||
$presupuestoLineaModel = model('App\Models\Presupuestos\PresupuestoLineaModel');
|
||||
$presupuestoLineaModel->duplicateLineasPresupuesto($presupuesto->id, $new_id);
|
||||
|
||||
return [
|
||||
'success' => true,
|
||||
'id' => $new_id
|
||||
];
|
||||
|
||||
}catch(\Exception $e){
|
||||
return [
|
||||
'success' => false,
|
||||
'message' => $e->getMessage()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
public function allItemsSelect()
|
||||
{
|
||||
@ -1163,8 +1038,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected function getPapelGenericoRotativaNegro()
|
||||
{
|
||||
$model = model('App\Models\Configuracion\PapelGenericoModel');
|
||||
@ -1319,20 +1192,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
|
||||
$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;
|
||||
$input_data['presupuesto'] = $presupuestoEntity;
|
||||
|
||||
return PresupuestoService::checkLineasPresupuesto($input_data, $lineas);
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ use App\Models\Presupuestos\PresupuestoDireccionesModel;
|
||||
use App\Models\Tarifas\TarifaEnvioModel;
|
||||
|
||||
|
||||
|
||||
class PresupuestoService extends BaseService
|
||||
{
|
||||
/**
|
||||
@ -973,24 +974,91 @@ class PresupuestoService extends BaseService
|
||||
|
||||
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;
|
||||
|
||||
$lineas = [];
|
||||
|
||||
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
|
||||
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{
|
||||
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($input_data, $linea);
|
||||
$nueva_linea = PresupuestoService::obtenerValorLineaPresupuesto($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);
|
||||
@ -1009,6 +1077,8 @@ class PresupuestoService extends BaseService
|
||||
return [$cambios, $lineas];
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static function obtenerValorLineaPresupuesto($input_data, $linea){
|
||||
|
||||
$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';
|
||||
|
||||
$uso = 'interior';
|
||||
|
||||
$parametrosRotativa = (object)array(
|
||||
'a_favor_fibra' => $datosPedido->a_favor_fibra,
|
||||
@ -1460,19 +1551,20 @@ class PresupuestoService extends BaseService
|
||||
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
|
||||
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);
|
||||
|
||||
@ -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
|
||||
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