mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
acabado actualizar lineas presupuesto
This commit is contained in:
@ -11,8 +11,15 @@ use App\Models\Configuracion\PapelImpresionModel;
|
||||
use App\Models\Configuracion\PapelGenericoModel;
|
||||
use App\Models\Configuracion\TipoPresupuestoModel;
|
||||
use App\Models\Configuracion\PapelFormatoModel;
|
||||
|
||||
use App\Models\Presupuestos\PresupuestoLineaModel;
|
||||
|
||||
use App\Models\Presupuestos\PresupuestoAcabadosModel;
|
||||
use App\Models\Presupuestos\PresupuestoManipuladosModel;
|
||||
use App\Models\Presupuestos\PresupuestoEncuadernacionesModel;
|
||||
|
||||
use App\Models\Tarifas\TarifaEncuadernacionModel;
|
||||
|
||||
class PresupuestoService extends BaseService
|
||||
{
|
||||
/**
|
||||
@ -1119,6 +1126,192 @@ class PresupuestoService extends BaseService
|
||||
return $output_data;
|
||||
}
|
||||
|
||||
// Funcion que procesa los servicios y actualiza los precios en caso de cambio
|
||||
public static function checkLineasServicios($input_data, $servicios){
|
||||
|
||||
$cambio_en_servicios = false;
|
||||
$cambio = false;
|
||||
|
||||
if(count($servicios->serviciosAcabado)>0){
|
||||
|
||||
[$cambio, $servicios->serviciosAcabado] =
|
||||
PresupuestoService::procesarServiciosAcabado($input_data, $servicios->serviciosAcabado);
|
||||
|
||||
$cambio_en_servicios = $cambio_en_servicios? $cambio_en_servicios: $cambio;
|
||||
}
|
||||
|
||||
if(count($servicios->serviciosManipulado)>0){
|
||||
|
||||
[$cambio, $servicios->serviciosManipulado] =
|
||||
PresupuestoService::procesarServiciosManipulado($input_data, $servicios->serviciosManipulado);
|
||||
|
||||
$cambio_en_servicios = $cambio_en_servicios? $cambio_en_servicios: $cambio;
|
||||
}
|
||||
|
||||
if(count($servicios->serviciosEncuadernacion)>0){
|
||||
|
||||
[$cambio, $servicios->serviciosEncuadernacion] =
|
||||
PresupuestoService::procesarServiciosEncuadernacion($input_data, $servicios->serviciosEncuadernacion);
|
||||
|
||||
$cambio_en_servicios = $cambio_en_servicios? $cambio_en_servicios: $cambio;
|
||||
}
|
||||
|
||||
// Los servicios de preimpresion se dejan tal y como esten
|
||||
|
||||
return [$cambio_en_servicios, $servicios];
|
||||
}
|
||||
|
||||
|
||||
// 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){
|
||||
|
||||
$serviciosUpdated = [];
|
||||
$cambio = false;
|
||||
|
||||
$model = new PresupuestoAcabadosModel();
|
||||
foreach ($servicios as $servicio) {
|
||||
$count = 0;
|
||||
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], $input_data['POD']);
|
||||
if($nueva_tarifa && count($nueva_tarifa)>0){
|
||||
if(round($nueva_tarifa[0]->precio_unidad, 2) != $servicio->precio_unidad ||
|
||||
$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);
|
||||
$servicio->margen = round($nueva_tarifa[0]->margen);
|
||||
$cambio = true;
|
||||
}
|
||||
array_push($serviciosUpdated, $servicio);
|
||||
$servicio_temp = $servicio;
|
||||
$servicio_temp->tarifa_id = $servicio_temp->tarifa_acabado_id;
|
||||
$model->updateTarifas($input_data['presupuesto_id'], array($servicio_temp));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return [$cambio, $serviciosUpdated];
|
||||
}
|
||||
|
||||
// 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){
|
||||
|
||||
$serviciosUpdated = [];
|
||||
$cambio = false;
|
||||
|
||||
$model = new PresupuestoManipuladosModel();
|
||||
foreach ($servicios as $servicio) {
|
||||
$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) != $servicio->precio_unidad ||
|
||||
$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);
|
||||
$servicio->margen = round($nueva_tarifa[0]->margen);
|
||||
$cambio = true;
|
||||
}
|
||||
array_push($serviciosUpdated, $servicio);
|
||||
$servicio_temp = $servicio;
|
||||
$servicio_temp->tarifa_id = $servicio_temp->tarifa_manipulado_id;
|
||||
$model->updateTarifas($input_data['presupuesto_id'], array($servicio_temp));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return [$cambio, $serviciosUpdated];
|
||||
}
|
||||
|
||||
|
||||
// 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){
|
||||
|
||||
$serviciosUpdated = [];
|
||||
$cambio = false;
|
||||
|
||||
$model = new PresupuestoEncuadernacionesModel();
|
||||
$tarifaModel = model('App\Models\Tarifas\TarifaEncuadernacionModel');
|
||||
|
||||
foreach ($servicios as $servicio) {
|
||||
|
||||
// Si es un presupuesto duplicado hay que buscar el proveedor más barato
|
||||
if($input_data['is_duplicado']){
|
||||
if($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)){
|
||||
$nueva_tarifa = $model->getPrecioTarifaHoras(
|
||||
$servicio->tarifa_encuadernado_id,
|
||||
$input_data['paginas'],
|
||||
$input_data['tirada'],
|
||||
-1,
|
||||
$input_data['POD']);
|
||||
}else{
|
||||
$nueva_tarifa = $model->getPrecioTarifa(
|
||||
$servicio->tarifa_encuadernado_id,
|
||||
$input_data['paginas'],
|
||||
$input_data['tirada'],
|
||||
$input_data['ancho'],
|
||||
$input_data['alto'],
|
||||
-1,
|
||||
$input_data['POD']);
|
||||
}
|
||||
|
||||
}
|
||||
// En caso de que el presupuesto no sea duplicado, recalcular la tarifa
|
||||
// con el mismo proveedor
|
||||
else{
|
||||
if($tarifaModel->isTarifaPorHoras($servicio->tarifa_encuadernado_id)){
|
||||
$nueva_tarifa = $model->getPrecioTarifaHoras(
|
||||
$servicio->tarifa_encuadernado_id,
|
||||
$input_data['paginas'],
|
||||
$input_data['tirada'],
|
||||
$servicio->proveedor_id,
|
||||
$input_data['POD']);
|
||||
}else{
|
||||
$nueva_tarifa = $model->getPrecioTarifa(
|
||||
$servicio->tarifa_encuadernado_id,
|
||||
$input_data['paginas'],
|
||||
$input_data['tirada'],
|
||||
$input_data['ancho'],
|
||||
$input_data['alto'],
|
||||
$servicio->proveedor_id,
|
||||
$input_data['POD']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($nueva_tarifa && count($nueva_tarifa)>0){
|
||||
if(!isset($nueva_tarifa[0]->proveedor_id)){
|
||||
$nueva_tarifa[0]->proveedor_id = null;
|
||||
}
|
||||
// Si el presupuesto no es duplicado, se comprueba que
|
||||
// no ha cambiado el precio unidad
|
||||
if(round($nueva_tarifa[0]->precio_unidad, 2) != $servicio->precio_unidad ||
|
||||
$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);
|
||||
$servicio->margen = round($nueva_tarifa[0]->margen);
|
||||
$cambio = true;
|
||||
}
|
||||
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->precio_total = round($nueva_tarifa[0]->total, 2);
|
||||
$servicio->margen = round($nueva_tarifa[0]->margen);
|
||||
$servicio->proveedor = $nueva_tarifa[0]->proveedor;
|
||||
$servicio->proveedor_id = $nueva_tarifa[0]->proveedor_id;
|
||||
$cambio = true;
|
||||
}
|
||||
array_push($serviciosUpdated, $servicio);
|
||||
$servicio_temp = $servicio;
|
||||
$servicio_temp->tarifa_id = $servicio_temp->tarifa_encuadernado_id;
|
||||
$model->updateTarifas($input_data['presupuesto_id'], array($servicio_temp));
|
||||
}
|
||||
}
|
||||
|
||||
return [$cambio, $serviciosUpdated];
|
||||
}
|
||||
|
||||
// Funcion que comprueba si existe una maquina
|
||||
private static function checkMaquina($maquina_id){
|
||||
|
||||
Reference in New Issue
Block a user