diff --git a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php index fd22f397..a822c826 100755 --- a/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php +++ b/ci4/app/Controllers/Presupuestos/Cosidotapablanda.php @@ -1087,8 +1087,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController if ($tipo == 'gramaje') { // En este caso contiene el nombre del papel generico + $tirada = $reqData['tirada'] ?? 0; + $merma = $reqData['merma'] ?? 0; $model = new PapelGenericoModel(); - $menu = $model->getGramajeComparador($datos, $uso ); + $menu = $model->getGramajeComparador($datos, $uso, intval($tirada+$merma) ); $data = [ 'menu' => $menu, diff --git a/ci4/app/Controllers/Test.php b/ci4/app/Controllers/Test.php index 9039b2a5..7fcf3f0d 100755 --- a/ci4/app/Controllers/Test.php +++ b/ci4/app/Controllers/Test.php @@ -18,7 +18,7 @@ class Test extends BaseController public function index() { echo '
';
-        \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 '
'; /* diff --git a/ci4/app/Models/Configuracion/PapelGenericoModel.php b/ci4/app/Models/Configuracion/PapelGenericoModel.php index acff8639..cc1b37c7 100755 --- a/ci4/app/Models/Configuracion/PapelGenericoModel.php +++ b/ci4/app/Models/Configuracion/PapelGenericoModel.php @@ -160,7 +160,7 @@ class PapelGenericoModel extends \App\Models\GoBaseModel return $data; } - public function getGramajeComparador(string $papel_generico_nombre="", $uso="") + public function getGramajeComparador(string $papel_generico_nombre="", $uso="", $ejemplares=0) { if($uso == 'cubierta' || $uso == 'sobrecubierta') $tipo = 'colorhq'; @@ -206,6 +206,9 @@ class PapelGenericoModel extends \App\Models\GoBaseModel } $builder->where("t5.uso", $uso_tarifa); + + $builder->where("t4.min <=", $ejemplares); + $builder->where("t4.max >=", $ejemplares); $values = $builder->orderBy("t2.gramaje", "asc")->get()->getResultObject(); $id = 1; diff --git a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php index c06a6864..4aa222ac 100755 --- a/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php +++ b/ci4/app/Models/Presupuestos/PresupuestoEncuadernacionesModel.php @@ -64,26 +64,41 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa['tarifa_id'], $tiempo, $tirada); 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_data[1] = $precio_total; - $result_data[2] = $tarifa_value[0]->margen ; // margen - - array_push($tarifas, + $result_array = []; + foreach($tarifa_value as $tarifa_proveedor){ + $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($result_array, (object)[ '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], 'total'=> $result_data[1], 'margen' => $result_data[2], - 'proveedor' => $tarifa_value[0]->proveedor_nombre, - 'proveedor_id' => $tarifa_value[0]->proveedor_id, + 'proveedor' => $tarifa_proveedor->proveedor_nombre, + '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{ array_push($tarifas, @@ -100,17 +115,30 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel else{ $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa['tarifa_id'], $paginas, $tirada, $ancho, $alto); if (count($tarifa_value)>0) { - $result_data = $this->calcularTarifa($tarifa_value[0], $paginas, $POD<$tirada?false:true); - array_push($tarifas, - (object)[ - 'tarifa_id'=> $tarifa['tarifa_id'], - 'tarifa_nombre'=> $tarifa_value[0]->tarifa_enc_nombre, + + $result_array = []; + foreach($tarifa_value as $tarifa_proveedor){ + $result_data = $this->calcularTarifa($tarifa_proveedor, $paginas, $tirada, $POD<$tirada?false:true); + array_push($result_array, (object)[ + 'tarifa_id'=> $tarifa_proveedor->tarifa_enc_id, + 'tarifa_nombre'=> $tarifa_proveedor->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, + 'proveedor' => $tarifa_proveedor->proveedor_nombre, + '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{ array_push($tarifas, @@ -164,17 +192,29 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacion($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto); } 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); - $ret_array[] = (object)[ - 'tarifa_id'=> $tarifa_value[0]->tarifa_enc_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, - ]; + usort($ret_array, function($a, $b) { + + if ($a->total == $b->total) { + return 0; + } + return ($a->total < $b->total) ? -1 : 1; + }); return $ret_array; } else{ @@ -200,24 +240,37 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel $tarifa_value = $modelTarifa->getTarifaPresupuestoEncuadernacionHoras($tarifa_encuadernacion_id, $tiempo, $tirada, $proveedor_id); 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); - } + $ret_array = []; + foreach($tarifa_value as $tarifa_proveedor){ + $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; } else{ @@ -235,14 +288,14 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel } - private function calcularTarifa($tarifa, $paginas, $is_POD=false){ + private function calcularTarifa($tarifa, $paginas, $ejemplares, $is_POD=false){ $precio_unidad = floatval($tarifa->precio_min) - (floatval($tarifa->precio_min) - floatval($tarifa->precio_max))/($tarifa->paginas_max - $tarifa->paginas_min) * ($paginas - $tarifa->paginas_min); if ($paginas > $tarifa->paginas_max) $precio_unidad = $tarifa->precio_max; $precio_unidad = $precio_unidad* (1+ floatval($tarifa->margen)/100.0); - $total = $precio_unidad * $paginas; + $total = $precio_unidad * $ejemplares; $margen = floatval($tarifa->margen); if (!$is_POD){ @@ -348,9 +401,9 @@ class PresupuestoEncuadernacionesModel extends \App\Models\GoBaseModel private function calcularTiempo($maquina_id, $paginas, $tirada){ $maquinaModel = model("App\Models\Configuracion\MaquinaModel"); - $pliegos_libro = $paginas/4; - $pliegos_pedido = $pliegos_libro*$tirada; + $cuadernillos_libro = $paginas/4; + $cuadernillos_pedido = $cuadernillos_libro*$tirada; $velocidad = $maquinaModel->getVelocidad($maquina_id); - return round($pliegos_pedido/($velocidad*60.0), 2); + return round($cuadernillos_pedido/($velocidad*60.0), 2); } } diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php index 5e04ad01..c0f2e6fb 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoClienteItems.php @@ -557,6 +557,8 @@ return { tipo: 'gramaje', uso: 'bn', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelNegro').select2('data')[0].text.trim() , : v }; @@ -588,6 +590,8 @@ return { tipo: 'gramaje', uso: 'bnhq', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelNegrohq').select2('data')[0].text.trim() , : v }; @@ -624,6 +628,8 @@ return { tipo: 'gramaje', uso: 'color', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelColor').select2('data')[0].text.trim() , : v }; @@ -651,6 +657,8 @@ return { tipo: 'gramaje', uso: 'colorhq', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelColorhq').select2('data')[0].text.trim() , : v }; @@ -1443,6 +1451,8 @@ return { tipo: 'gramaje', uso: 'bn', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelNegro').select2('data')[0].text.trim() , : v }; @@ -1485,6 +1495,8 @@ return { tipo: 'gramaje', uso: 'bnhq', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelNegrohq').select2('data')[0].text.trim() , : v }; @@ -1529,6 +1541,8 @@ return { tipo: 'gramaje', uso: 'color', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelColor').select2('data')[0].text.trim() , : v }; @@ -1573,6 +1587,8 @@ return { tipo: 'gramaje', uso: 'colorhq', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelColorhq').select2('data')[0].text.trim() , : v }; @@ -1614,6 +1630,8 @@ return { tipo: 'gramaje', uso: 'cubierta', + tirada: parseInt($('#tirada').val()), + merma: parseInt($('#mermacubierta').val()), datos: $('#compPapelCubierta').select2('data')[0].text.trim() , : v };