ahora se ordenan los servicios por precio total en cada proveedor (encuadernacion)

This commit is contained in:
Jaime Jiménez
2024-02-12 12:43:17 +01:00
parent 28432fc7cc
commit 60746fc72e
2 changed files with 101 additions and 48 deletions

View File

@ -18,7 +18,7 @@ class Test extends BaseController
public function index() public function index()
{ {
echo '<pre>'; echo '<pre>';
\var_dump($this->get_tarifa_enc(12, 100, 100, 150, 210)); \var_dump($this->get_precio_tarifa(18,300,10,150,210,-1,30));
echo '</pre>'; echo '</pre>';
/* /*

View File

@ -64,26 +64,41 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel
$tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa['tarifa_id'], $tiempo, $tirada); $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa['tarifa_id'], $tiempo, $tirada);
if (count($tarifa_value)>0) { if (count($tarifa_value)>0) {
$precio_total = floatval(1.0* $tarifa_value[0]->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0);
if (!$POD){
$precio_total += floatval($tarifa_value[0]->tarifa_importe_fijo);
}
$result_data[0] = floatval($precio_total / $tirada); // Precio/unidad $result_array = [];
$result_data[1] = $precio_total; foreach($tarifa_value as $tarifa_proveedor){
$result_data[2] = $tarifa_value[0]->margen ; // margen $precio_total = floatval(1.0* $tarifa_proveedor->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0);
if (!$POD){
array_push($tarifas, $precio_total += floatval($tarifa_proveedor->tarifa_importe_fijo);
}
$result_data[0] = floatval($precio_total / $tirada); // Precio/unidad
$result_data[1] = $precio_total;
$result_data[2] = $tarifa_proveedor->margen ; // margen
array_push($result_array,
(object)[ (object)[
'tarifa_id'=> $tarifa['tarifa_id'], 'tarifa_id'=> $tarifa['tarifa_id'],
'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, 'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre,
'precio_unidad'=> $result_data[0], 'precio_unidad'=> $result_data[0],
'total'=> $result_data[1], 'total'=> $result_data[1],
'margen' => $result_data[2], 'margen' => $result_data[2],
'proveedor' => $tarifa_value[0]->proveedor_nombre, 'proveedor' => $tarifa_proveedor->proveedor_nombre,
'proveedor_id' => $tarifa_value[0]->proveedor_id, 'proveedor_id' => $tarifa_proveedor->proveedor_id,
]); ]);
}
usort($result_array, function($a, $b) {
if ($a->total == $b->total) {
return 0;
}
return ($a->total < $b->total) ? -1 : 1;
});
array_push($tarifas, $result_array[0]);
} }
else{ else{
array_push($tarifas, array_push($tarifas,
@ -100,17 +115,30 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel
else{ else{
$tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto); $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto);
if (count($tarifa_value)>0) { if (count($tarifa_value)>0) {
$result_data = $this->calcularTarifa($tarifa_value[0], $paginas, $tirada, $POD<$tirada?false:true);
array_push($tarifas, $result_array = [];
(object)[ foreach($tarifa_value as $tarifa_proveedor){
'tarifa_id'=> $tarifa['tarifa_id'], $result_data = $this->calcularTarifa($tarifa_proveedor, $paginas, $tirada, $POD<$tirada?false:true);
'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, array_push($result_array, (object)[
'tarifa_id'=> $tarifa_proveedor->tarifa_enc_id,
'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre,
'precio_unidad'=> $result_data[0], 'precio_unidad'=> $result_data[0],
'total'=> $result_data[1], 'total'=> $result_data[1],
'margen'=> $result_data[2], 'margen'=> $result_data[2],
'proveedor' => $tarifa_value[0]->proveedor_nombre, 'proveedor' => $tarifa_proveedor->proveedor_nombre,
'proveedor_id' => $tarifa_value[0]->proveedor_id, 'proveedor_id' => $tarifa_proveedor->proveedor_id,
]); ]);
}
usort($result_array, function($a, $b) {
if ($a->total == $b->total) {
return 0;
}
return ($a->total < $b->total) ? -1 : 1;
});
array_push($tarifas, $result_array[0]);
} }
else{ else{
array_push($tarifas, array_push($tarifas,
@ -164,17 +192,29 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel
$tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto); $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto);
} }
if (count($tarifa_value)>0) { if (count($tarifa_value)>0) {
$ret_array = [];
foreach($tarifa_value as $tarifa){
$result_data = $this->calcularTarifa($tarifa, $paginas, $tirada, $POD<$tirada?false:true);
array_push($ret_array, (object)[
'tarifa_id'=> $tarifa->tarifa_enc_id,
'tarifa_nombre'=> $tarifa->tarifa_enc_nombre,
'precio_unidad'=> $result_data[0],
'total'=> $result_data[1],
'margen'=> $result_data[2],
'proveedor' => $tarifa->proveedor_nombre,
'proveedor_id' => $tarifa->proveedor_id,
]);
}
$result_data = $this->calcularTarifa($tarifa_value[0], $paginas, $POD<$tirada?false:true); usort($ret_array, function($a, $b) {
$ret_array[] = (object)[
'tarifa_id'=> $tarifa_value[0]->tarifa_enc_id, if ($a->total == $b->total) {
'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, return 0;
'precio_unidad'=> $result_data[0], }
'total'=> $result_data[1], return ($a->total < $b->total) ? -1 : 1;
'margen'=> $result_data[2], });
'proveedor' => $tarifa_value[0]->proveedor_nombre,
'proveedor_id' => $tarifa_value[0]->proveedor_id,
];
return $ret_array; return $ret_array;
} }
else{ else{
@ -200,24 +240,37 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel
$tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa_encuadernacion_id, $tiempo, $tirada, $proveedor_id); $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa_encuadernacion_id, $tiempo, $tirada, $proveedor_id);
if (count($tarifa_value)>0) { if (count($tarifa_value)>0) {
$precio_total = floatval(1.0* $tarifa_value[0]->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0); $ret_array = [];
if (!$POD){ foreach($tarifa_value as $tarifa_proveedor){
$precio_total += floatval($tarifa_value[0]->tarifa_importe_fijo); $precio_total = floatval(1.0* $tarifa_proveedor->precio_hora* $tiempo) * (1+$tarifa_value[0]->margen/100.0);
} if (!$POD){
$precio_total += floatval($tarifa_proveedor->tarifa_importe_fijo);
}
$result_data[0] = floatval($precio_total / $tirada); // Precio/unidad
$result_data[1] = $precio_total;
$result_data[2] = $tarifa_proveedor->margen ; // margen
array_push($ret_array,
(object)[
'tarifa_id'=> $tarifa['tarifa_id'],
'tarifa_nombre'=> $tarifa_proveedor->tarifa_enc_nombre,
'precio_unidad'=> $result_data[0],
'total'=> $result_data[1],
'margen' => $result_data[2],
'proveedor' => $tarifa_proveedor->proveedor_nombre,
'proveedor_id' => $tarifa_proveedor->proveedor_id,
]);
}
usort($ret_array, function($a, $b) {
if ($a->total == $b->total) {
return 0;
}
return ($a->total < $b->total) ? -1 : 1;
});
$result_data[0] = floatval($precio_total / $tirada); // Precio/unidad
$result_data[1] = $precio_total;
$result_data[2] = $tarifa_value[0]->margen; // margen
$ret_array[] = (object)[
'tarifa_id'=> $tarifa_encuadernacion_id,
'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre,
'precio_unidad'=> $result_data[0],
'total'=> $result_data[1],
'margen' => $result_data[2],
'proveedor' => $tarifa_value[0]->proveedor_nombre,
'proveedor_id' => $tarifa_value[0]->proveedor_id,
];
return $ret_array; return $ret_array;
} }
else{ else{