mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'mod/importe_fijo_margen' into 'main'
Mod/importe fijo margen See merge request jjimenez/safekat!791
This commit is contained in:
@ -86,6 +86,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'tarifa_nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
'tarifa_nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
||||||
'nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
'nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
||||||
'precio_unidad' => $result_data[0],
|
'precio_unidad' => $result_data[0],
|
||||||
|
'importe_fijo' => $tarifa_proveedor->importe_fijo,
|
||||||
'tiempo' => $tiempo,
|
'tiempo' => $tiempo,
|
||||||
'total' => $result_data[1],
|
'total' => $result_data[1],
|
||||||
'precio_total' => $result_data[1],
|
'precio_total' => $result_data[1],
|
||||||
@ -124,6 +125,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'nombre' => $tarifa['tarifa_nombre'],
|
'nombre' => $tarifa['tarifa_nombre'],
|
||||||
'proveedor' => lang('Presupuestos.no_disponible'),
|
'proveedor' => lang('Presupuestos.no_disponible'),
|
||||||
'precio_unidad' => 0,
|
'precio_unidad' => 0,
|
||||||
|
'importe_fijo' => 0,
|
||||||
'tiempo' => null,
|
'tiempo' => null,
|
||||||
'total' => 0,
|
'total' => 0,
|
||||||
'precio_total' => 0,
|
'precio_total' => 0,
|
||||||
@ -143,6 +145,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'tarifa_nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
'tarifa_nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
||||||
'nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
'nombre' => $tarifa_proveedor->tarifa_enc_nombre,
|
||||||
'precio_unidad' => $result_data[0],
|
'precio_unidad' => $result_data[0],
|
||||||
|
'importe_fijo' => $tarifa_proveedor->importe_fijo,
|
||||||
'tiempo' => null,
|
'tiempo' => null,
|
||||||
'total' => $result_data[1],
|
'total' => $result_data[1],
|
||||||
'precio_total' => $result_data[1],
|
'precio_total' => $result_data[1],
|
||||||
@ -170,6 +173,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'nombre' => $tarifa['tarifa_nombre'],
|
'nombre' => $tarifa['tarifa_nombre'],
|
||||||
'proveedor' => lang('Presupuestos.no_disponible'),
|
'proveedor' => lang('Presupuestos.no_disponible'),
|
||||||
'precio_unidad' => 0,
|
'precio_unidad' => 0,
|
||||||
|
'importe_fijo' => 0,
|
||||||
'tiempo' => null,
|
'tiempo' => null,
|
||||||
'total' => 0,
|
'total' => 0,
|
||||||
'precio_total' => 0,
|
'precio_total' => 0,
|
||||||
@ -228,6 +232,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
array_push($ret_array, (object) [
|
array_push($ret_array, (object) [
|
||||||
'tarifa_id' => $tarifa->tarifa_enc_id,
|
'tarifa_id' => $tarifa->tarifa_enc_id,
|
||||||
'tarifa_nombre' => $tarifa->tarifa_enc_nombre,
|
'tarifa_nombre' => $tarifa->tarifa_enc_nombre,
|
||||||
|
'importe_fijo' => $tarifa->importe_fijo,
|
||||||
'nombre' => $tarifa->tarifa_enc_nombre,
|
'nombre' => $tarifa->tarifa_enc_nombre,
|
||||||
'precio_unidad' => $result_data[0],
|
'precio_unidad' => $result_data[0],
|
||||||
'tiempo' => null,
|
'tiempo' => null,
|
||||||
@ -254,6 +259,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'nombre' => $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre,
|
'nombre' => $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre,
|
||||||
'proveedor' => lang('Presupuestos.no_disponible'),
|
'proveedor' => lang('Presupuestos.no_disponible'),
|
||||||
'precio_unidad' => 0,
|
'precio_unidad' => 0,
|
||||||
|
'importe_fijo' => 0,
|
||||||
'tiempo' => null,
|
'tiempo' => null,
|
||||||
'total' => 0,
|
'total' => 0,
|
||||||
'precio_total' => 0,
|
'precio_total' => 0,
|
||||||
@ -309,6 +315,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'precio_unidad' => $result_data[0],
|
'precio_unidad' => $result_data[0],
|
||||||
'tiempo' => $tiempo,
|
'tiempo' => $tiempo,
|
||||||
'paginas_por_cuadernillo' => $paginas_cuadernillo,
|
'paginas_por_cuadernillo' => $paginas_cuadernillo,
|
||||||
|
'importe_fijo' => $tarifa_proveedor->importe_fijo,
|
||||||
'precio_total' => $result_data[1],
|
'precio_total' => $result_data[1],
|
||||||
'total' => $result_data[1],
|
'total' => $result_data[1],
|
||||||
'margen' => $result_data[2],
|
'margen' => $result_data[2],
|
||||||
@ -334,6 +341,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
'nombre' => $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre,
|
'nombre' => $modelTarifa->getNombreTarifaEncuadernacion($tarifa_encuadernacion_id)[0]->nombre,
|
||||||
'proveedor' => lang('Presupuestos.no_disponible'),
|
'proveedor' => lang('Presupuestos.no_disponible'),
|
||||||
'precio_unidad' => 0,
|
'precio_unidad' => 0,
|
||||||
|
'importe_fijo' => 0,
|
||||||
'tiempo' => null,
|
'tiempo' => null,
|
||||||
'paginas_por_cuadernillo' => null,
|
'paginas_por_cuadernillo' => null,
|
||||||
'total' => 0,
|
'total' => 0,
|
||||||
@ -351,16 +359,17 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
$precio_unidad = floatval($tarifa->precio_max) - (floatval($tarifa->precio_max) - floatval($tarifa->precio_min)) / ($tarifa->paginas_max - $tarifa->paginas_min) * ($paginas - $tarifa->paginas_min);
|
$precio_unidad = floatval($tarifa->precio_max) - (floatval($tarifa->precio_max) - floatval($tarifa->precio_min)) / ($tarifa->paginas_max - $tarifa->paginas_min) * ($paginas - $tarifa->paginas_min);
|
||||||
if ($paginas > $tarifa->paginas_max)
|
if ($paginas > $tarifa->paginas_max)
|
||||||
$precio_unidad = $tarifa->precio_max;
|
$precio_unidad = $tarifa->precio_max;
|
||||||
$precio_unidad = $precio_unidad * (1 + floatval($tarifa->margen) / 100.0);
|
$precio_unidad = $precio_unidad * (1 + floatval($tarifa->margen)/100.0);
|
||||||
|
|
||||||
if (!$is_POD) {
|
|
||||||
$precio_unidad += floatval($tarifa->tarifa_importe_fijo) / floatval($ejemplares);
|
|
||||||
}
|
|
||||||
|
|
||||||
$precio_unidad = round($precio_unidad, 2);
|
$precio_unidad = round($precio_unidad, 2);
|
||||||
|
|
||||||
$total = $precio_unidad * $ejemplares;
|
$total = $precio_unidad * $ejemplares;
|
||||||
$margen = floatval($tarifa->margen);
|
$margen = floatval($tarifa->margen);
|
||||||
|
if (!$is_POD) {
|
||||||
|
$total += floatval($tarifa->tarifa_importe_fijo) ;
|
||||||
|
$precio_unidad = round(floatval($total / $ejemplares), 2);
|
||||||
|
}
|
||||||
|
|
||||||
$tarifa_precio_min = floatval($tarifa->tarifa_precio_min);
|
$tarifa_precio_min = floatval($tarifa->tarifa_precio_min);
|
||||||
|
|
||||||
if ($tarifa_precio_min > $total) {
|
if ($tarifa_precio_min > $total) {
|
||||||
@ -459,18 +468,66 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
*/
|
*/
|
||||||
public function getResource($presupuesto_id = -1)
|
public function getResource($presupuesto_id = -1)
|
||||||
{
|
{
|
||||||
$builder = $this->db
|
|
||||||
->table($this->table . " t1")
|
$builder = $this->db->table('presupuesto_encuadernaciones t1')
|
||||||
->select(
|
->select("
|
||||||
"t1.id AS id, t1.tarifa_encuadernado_id AS tarifa_encuadernado_id, t1.precio_unidad AS precio_unidad, t1.tiempo AS tiempo,
|
t1.id AS id,
|
||||||
t1.precio_total AS precio_total, t1.margen AS margen, t2.nombre AS nombre, t1.proveedor_id AS proveedor_id, t3.nombre AS proveedor,
|
t1.tarifa_encuadernado_id AS tarifa_encuadernado_id,
|
||||||
t1.paginas_por_cuadernillo AS paginas_por_cuadernillo"
|
t1.precio_unidad AS precio_unidad,
|
||||||
);
|
t1.tiempo AS tiempo,
|
||||||
|
t1.precio_total AS precio_total,
|
||||||
$builder->where('t1.presupuesto_id', $presupuesto_id);
|
t1.margen AS margen,
|
||||||
$builder->join("tarifa_encuadernacion t2", "t1.tarifa_encuadernado_id = t2.id", "left");
|
t2.nombre AS nombre,
|
||||||
$builder->join("lg_proveedores t3", "t1.proveedor_id = t3.id", "left");
|
t1.proveedor_id AS proveedor_id,
|
||||||
|
t3.nombre AS proveedor,
|
||||||
|
t1.paginas_por_cuadernillo AS paginas_por_cuadernillo,
|
||||||
|
presupuestos.tirada AS tirada,
|
||||||
|
CASE
|
||||||
|
WHEN t2.por_horas = 0 THEN (
|
||||||
|
SELECT t2_sub.importe_fijo
|
||||||
|
FROM tarifa_encuadernacion_tiradas t2_sub
|
||||||
|
JOIN tarifa_encuadernacion_lineas t3_sub ON t2_sub.id = t3_sub.tirada_encuadernacion_id
|
||||||
|
JOIN tarifa_encuadernacion_dimensiones t4_sub ON t3_sub.dimensiones_id = t4_sub.id
|
||||||
|
WHERE t2_sub.tarifa_encuadernacion_id = t1.tarifa_encuadernado_id
|
||||||
|
AND t2_sub.tirada_min <= presupuestos.tirada
|
||||||
|
AND t2_sub.tirada_max >= presupuestos.tirada
|
||||||
|
AND t3_sub.paginas_libro_min <= presupuestos.paginas
|
||||||
|
AND t3_sub.paginas_libro_max >= presupuestos.paginas
|
||||||
|
AND t4_sub.ancho_min <=
|
||||||
|
CASE WHEN presupuestos.papel_formato_personalizado = 1 THEN LEAST(presupuestos.papel_formato_ancho, presupuestos.papel_formato_alto)
|
||||||
|
ELSE LEAST(lg_papel_formato.ancho, lg_papel_formato.alto) END
|
||||||
|
AND t4_sub.ancho_max >
|
||||||
|
CASE WHEN presupuestos.papel_formato_personalizado = 1 THEN LEAST(presupuestos.papel_formato_ancho, presupuestos.papel_formato_alto)
|
||||||
|
ELSE LEAST(lg_papel_formato.ancho, lg_papel_formato.alto) END
|
||||||
|
AND t4_sub.alto_min <=
|
||||||
|
CASE WHEN presupuestos.papel_formato_personalizado = 1 THEN GREATEST(presupuestos.papel_formato_ancho, presupuestos.papel_formato_alto)
|
||||||
|
ELSE GREATEST(lg_papel_formato.ancho, lg_papel_formato.alto) END
|
||||||
|
AND t4_sub.alto_max >=
|
||||||
|
CASE WHEN presupuestos.papel_formato_personalizado = 1 THEN GREATEST(presupuestos.papel_formato_ancho, presupuestos.papel_formato_alto)
|
||||||
|
ELSE GREATEST(lg_papel_formato.ancho, lg_papel_formato.alto) END
|
||||||
|
AND t2_sub.proveedor_id = t1.proveedor_id
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHEN t2.por_horas = 1 THEN (
|
||||||
|
SELECT t2_sub.importe_fijo
|
||||||
|
FROM tarifa_encuadernacion_tiradas t2_sub
|
||||||
|
JOIN tarifa_encuadernacion_lineas_horas t3_sub ON t2_sub.id = t3_sub.tirada_encuadernacion_id
|
||||||
|
WHERE t2_sub.tarifa_encuadernacion_id = t1.tarifa_encuadernado_id
|
||||||
|
AND t2_sub.tirada_min <= presupuestos.tirada
|
||||||
|
AND t2_sub.tirada_max > presupuestos.tirada
|
||||||
|
AND t3_sub.tiempo_min <= t1.tiempo
|
||||||
|
AND t3_sub.tiempo_max > t1.tiempo
|
||||||
|
AND t2_sub.proveedor_id = t1.proveedor_id
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
ELSE NULL
|
||||||
|
END AS importe_fijo
|
||||||
|
")
|
||||||
|
->join("tarifa_encuadernacion t2", "t1.tarifa_encuadernado_id = t2.id", "left")
|
||||||
|
->join("lg_proveedores t3", "t1.proveedor_id = t3.id", "left")
|
||||||
|
->join("presupuestos", "presupuestos.id = t1.presupuesto_id", "left")
|
||||||
|
->join("lg_papel_formato", "lg_papel_formato.id = presupuestos.papel_formato_id", "left")
|
||||||
|
->where("t1.presupuesto_id", $presupuesto_id);
|
||||||
return $builder;
|
return $builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -486,7 +543,7 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
|
|||||||
return 0.01;
|
return 0.01;
|
||||||
else
|
else
|
||||||
return $temp;
|
return $temp;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function calcularTiempoCosido($maquina_id, $paginas, $tirada, $cuadernillos_por_pagina = 32)
|
private function calcularTiempoCosido($maquina_id, $paginas, $tirada, $cuadernillos_por_pagina = 32)
|
||||||
|
|||||||
@ -127,7 +127,7 @@ class TarifaEncuadernacionModel extends \App\Models\BaseModel
|
|||||||
$builder = $this->db
|
$builder = $this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->select(
|
->select(
|
||||||
"t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t3.total_min AS tarifa_precio_min, t2.importe_fijo AS tarifa_importe_fijo,
|
"t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t3.total_min AS tarifa_precio_min, t2.importe_fijo AS tarifa_importe_fijo, t2.importe_fijo AS importe_fijo,
|
||||||
t2.id AS tarifa_tirada_id, t2.proveedor_id AS proveedor_id, t5.nombre AS proveedor_nombre, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max,
|
t2.id AS tarifa_tirada_id, t2.proveedor_id AS proveedor_id, t5.nombre AS proveedor_nombre, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max,
|
||||||
t3.id AS tarifa_linea_id, t3.paginas_libro_min AS paginas_min, t3.paginas_libro_max AS paginas_max, t3.precio_min AS precio_min, t3.precio_max AS precio_max, t3.margen AS margen,
|
t3.id AS tarifa_linea_id, t3.paginas_libro_min AS paginas_min, t3.paginas_libro_max AS paginas_max, t3.precio_min AS precio_min, t3.precio_max AS precio_max, t3.margen AS margen,
|
||||||
t4.ancho_min AS ancho_min, t4.ancho_max AS ancho_max, t4.alto_min AS alto_min, t4.alto_max AS alto_max"
|
t4.ancho_min AS ancho_min, t4.ancho_max AS ancho_max, t4.alto_min AS alto_min, t4.alto_max AS alto_max"
|
||||||
@ -166,7 +166,7 @@ class TarifaEncuadernacionModel extends \App\Models\BaseModel
|
|||||||
$builder = $this->db
|
$builder = $this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->select(
|
->select(
|
||||||
"t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t3.total_min AS tarifa_precio_min, t2.importe_fijo AS tarifa_importe_fijo,
|
"t1.id AS tarifa_enc_id, t1.nombre AS tarifa_enc_nombre, t3.total_min AS tarifa_precio_min, t2.importe_fijo AS tarifa_importe_fijo, t2.importe_fijo AS importe_fijo,
|
||||||
t2.id AS tarifa_tirada_id, t2.proveedor_id AS proveedor_id, t5.nombre AS proveedor_nombre, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max,
|
t2.id AS tarifa_tirada_id, t2.proveedor_id AS proveedor_id, t5.nombre AS proveedor_nombre, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max,
|
||||||
t3.id AS tarifa_linea_id, t3.tiempo_min AS tiempo_min, t3.tiempo_max AS tiempo_max, t3.precio_hora AS precio_hora, t3.margen AS margen"
|
t3.id AS tarifa_linea_id, t3.tiempo_min AS tiempo_min, t3.tiempo_max AS tiempo_max, t3.precio_hora AS precio_hora, t3.margen AS margen"
|
||||||
)
|
)
|
||||||
|
|||||||
@ -212,9 +212,9 @@ class Resumen {
|
|||||||
let rowData = this.data();
|
let rowData = this.data();
|
||||||
let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio_total));
|
let total_servicio = self.roundToTwoDecimals(parseFloat(rowData.precio_total));
|
||||||
let margen_servicio = parseFloat(rowData.margen);
|
let margen_servicio = parseFloat(rowData.margen);
|
||||||
|
let importe_fijo = parseFloat(rowData.importe_fijo);
|
||||||
totalServicios += total_servicio
|
totalServicios += total_servicio
|
||||||
let base = self.roundToTwoDecimals(total_servicio / (1 + margen_servicio / 100.0));
|
let base = self.roundToTwoDecimals((total_servicio-importe_fijo) / (1 + margen_servicio / 100.0));
|
||||||
base = self.roundToTwoDecimals(base / total) * total;
|
|
||||||
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
|
margenServicios += self.roundToTwoDecimals(parseFloat(total_servicio - base));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1026,7 +1026,8 @@ class ServiciosEncuadernacion {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
data: 'precio_unidad', render: function (data, type, row) {
|
data: 'precio_unidad', render: function (data, type, row) {
|
||||||
let precio_unidad_coste = (row.precio_unidad / (1 + row.margen / 100)).toFixed(2);
|
const precio_total_sin_fijo = (row.precio_unidad*parseInt($('#tirada').val()))-parseFloat(row.importe_fijo);
|
||||||
|
let precio_unidad_coste = ((precio_total_sin_fijo / parseInt($('#tirada').val())) / (1 + row.margen / 100)).toFixed(2);
|
||||||
precio_unidad_coste = parseFloat(precio_unidad_coste).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
precio_unidad_coste = parseFloat(precio_unidad_coste).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||||
const precio_unidad = parseFloat(row.precio_unidad).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
const precio_unidad = parseFloat(row.precio_unidad).toLocaleString('es-ES', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||||
return precio_unidad_coste + '/' + precio_unidad;
|
return precio_unidad_coste + '/' + precio_unidad;
|
||||||
@ -1048,7 +1049,8 @@ class ServiciosEncuadernacion {
|
|||||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-servencuadernacion mx-2" data-id="${row.id}"></i></a>
|
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-servencuadernacion mx-2" data-id="${row.id}"></i></a>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
{data: 'importe_fijo', visible: false},
|
||||||
],
|
],
|
||||||
|
|
||||||
drawCallback: function (settings) {
|
drawCallback: function (settings) {
|
||||||
|
|||||||
Reference in New Issue
Block a user