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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>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() ,
= csrf_token() ?? "token" ?> : = csrf_token() ?>v
};