realizado el calculo por horas e introducido en el comparador

This commit is contained in:
Jaime Jiménez
2024-01-03 16:57:55 +01:00
parent fbea595a6b
commit 04f5748cb3
16 changed files with 240 additions and 49 deletions

View File

@ -63,6 +63,9 @@ class ClientePrecios extends \App\Controllers\GoBaseResourceController
if($plantilla_id == -1){
$this->model->clean_plantilla_id($requestedId);
}
else if($requestedId== -1){ // actualizar todos los clientes que usan una plantilla
$this->model->update_from_plantilla($plantilla_id);
}
else{
$this->model->copy_from_plantilla($requestedId, $plantilla_id);
}

View File

@ -249,7 +249,7 @@ class Maquinastarifasimpresion extends \App\Controllers\GoBaseResourceController
// Si no se quiere borrar...
if ($data['data'][$pkey]['is_deleted'] != 1) {
// Cubierta y sobrecubierta sólo pueden ser en color
if ($values['uso'] != 'interior' && $values['tipo'] != 'color') {
if ($values['uso'] != 'interior' && $values['tipo'] != 'colorhq') {
return lang('MaquinasTarifasImpresions.validation.cubierta_sobrecubierta_color');
}

View File

@ -21,6 +21,7 @@ use App\Services\PresupuestoService;
use App\Models\Configuracion\PapelImpresionModel;
use App\Models\Configuracion\MaquinaModel;
use App\Models\Configuracion\MaquinasTarifasImpresionModel;
use App\Models\Clientes\ClientePreciosModel;
use Exception;
class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
@ -432,12 +433,14 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
];
$gramaje = $reqData['gramaje'] ?? 0;
$cliente_id = $reqData['cliente_id'] ?? -1;
if ($type=='interior') {
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq);
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id);
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
@ -469,7 +472,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
array_push($datosTipolog, $data);
}
$resourceData = $this->getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $datosTipolog);
$resourceData = $this->getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog);
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
@ -480,12 +483,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
return $this->respond($data);
}
else if ($type=='cubierta') {
else if ($type=='cubierta' || $type=='sobrecubierta') {
$datosPedido->solapas = $reqData['solapas'];
$datosPedido->solapas_ancho = $reqData['solapas_ancho'];
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq);
// Cubierta y sobrecubierta siempre color HQ
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, 1, $cliente_id);
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
@ -523,11 +527,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$datos = $reqData['datos'] ?? null;
$presupuesto_id = $reqData['presupuesto_id'] ?? -1;
/*foreach($datos as $key=>$linea){
$datos[$key]['papel_id'] = $datos[$key]['papel_id'] ?? -1;
}*/
if($datos != null){
$this->updateLineasPresupuestoActivas($presupuesto_id, $datos);
}
@ -554,7 +553,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
}
public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq)
public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id)
{
$tipo = $isColor? ($isHq?'colorhq':'color'): ($isHq?'negrohq':'negro');
@ -584,8 +583,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
'rotativa' => 0,
);
}
// Se obtienen los papeles disponibles
$papelimpresionmodel = new PapelImpresionModel();
@ -616,6 +613,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
if(!is_float($tarifa)){
continue;
}
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
if(array_key_exists('error', $linea))
continue;
@ -634,13 +632,35 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$linea['fields']['precio_click'],
$maquina->velocidad);
$clientePreciosModel = new ClientePreciosModel();
$config = (object)[
"tipo" => $uso,
"tipo_maquina" => $maquina->is_tinta?'inkjet':'toner',
"tipo_impresion" => $tipo
];
$tiempo = PresupuestoService::getHorasMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad);
[$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
if(is_null($precio_hora)){
continue;
}
$linea['fields']['precio_hora'] = $precio_hora;
$linea['fields']['precio_hora_margen'] = $margen_precio_hora;
$linea['fields']['horas_maquina'] = $tiempo;
$linea['fields']['precio_impresion_horas'] = $precio_hora*$tiempo*1.0;
$linea['fields']['margen_impresion_horas'] = $precio_hora*$tiempo*1.0*$margen_precio_hora/100.0;
array_push($lineas, $linea);
}
}
return $lineas;
}
public function getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $datosTipolog = null)
public function getCompIntRotData($datosPedido, $papel_generico, $gramaje, $paginas, $cliente_id, $datosTipolog = null)
{
$uso = 'interior';
@ -771,9 +791,37 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$linea['fields']['precio_click'],
$maquina->velocidad);
$clientePreciosModel = new ClientePreciosModel();
$config = (object)[
"tipo" => $uso,
"tipo_maquina" => 'inkjet',
"tipo_impresion" => $tipo
];
$tiempo = PresupuestoService::getHorasMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad);
[$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
if(is_null($precio_hora)){
continue;
}
$linea['fields']['precio_hora'] = $precio_hora;
$linea['fields']['precio_hora_margen'] = $margen_precio_hora;
$linea['fields']['horas_maquina'] = $tiempo;
$linea['fields']['precio_impresion_horas'] = $precio_hora*$tiempo*1.0;
$linea['fields']['margen_impresion_horas'] = $precio_hora*$tiempo*1.0*$margen_precio_hora/100.0;
// total linea rotativa
$linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + $linea['fields']['precio_click_pedido'] + $linea['fields']['precio_tinta'] +
$linea['fields']['total_corte'];
//$linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + $linea['fields']['precio_click_pedido'] + $linea['fields']['precio_tinta'] +
// $linea['fields']['total_corte'];
$linea['fields']['total_impresion'] =
$linea['fields']['precio_pedido'] + // papel
$linea['fields']['precio_impresion_horas'] + $linea['fields']['margen_impresion_horas'] + // horas de maquina
$linea['fields']['precio_tinta'] + // tinta
$linea['fields']['total_corte']; // corte
array_push($lineas, $linea);
}

View File

@ -17,11 +17,20 @@ class Test extends BaseController
public function index()
{
$model = model('App\Models\Clientes\ClientePreciosModel') ;
echo '<pre>';
$model = model('App\Models\Configuracion\TipoPresupuestoModel');
var_dump($model->get_isCosido(25));
var_dump($model->update_from_plantilla(5));
echo '</pre>';
/*
echo '<pre>';
$model = model('App\Models\Clientes\ClientePreciosModel');
$configuracion = (object)[
'tipo' => 'interior',
'tipo_maquina' => 'inkjet',
'tipo_impresion' => 'color'
];
var_dump($model->get_precio_hora(999,$configuracion, 1.5));
echo '</pre>';*/
}