Merge branch 'main' into dev/chat

This commit is contained in:
Alvaro Mazuecos Nogales
2024-09-23 10:04:55 +02:00
25 changed files with 204 additions and 183 deletions

View File

@ -9,8 +9,6 @@ class TarifaextraEntity extends \CodeIgniter\Entity\Entity
"id" => null,
"nombre" => null,
"precio" => null,
"precio_min" => 0,
"importe_fijo" => 0,
"margen" => 0,
"mostrar_en_presupuesto" => 1,
"user_created_id" => 1,
@ -22,8 +20,6 @@ class TarifaextraEntity extends \CodeIgniter\Entity\Entity
];
protected $casts = [
"precio" => "float",
"precio_min" => "float",
"importe_fijo" => "float",
"margen" => "float",
"mostrar_en_presupuesto" => "int",
"user_created_id" => "int",

View File

@ -9,8 +9,6 @@ class TarifapreimpresionEntity extends \CodeIgniter\Entity\Entity
"id" => null,
"nombre" => null,
"precio" => null,
"precio_min" => 0,
"importe_fijo" => 0,
"margen" => 0,
"mostrar_en_presupuesto" => 1,
"user_created_id" => 1,
@ -22,8 +20,6 @@ class TarifapreimpresionEntity extends \CodeIgniter\Entity\Entity
];
protected $casts = [
"precio" => "float",
"precio_min" => "float",
"importe_fijo" => "float",
"margen" => "float",
"mostrar_en_presupuesto" => "int",
"user_created_id" => "int",

View File

@ -13,7 +13,7 @@ return [
'nombre' => 'Name',
'precioMax' => 'Price Max',
'precioMin' => 'Price Min',
'precioMin' => 'Min Price',
'importeMinimo' => 'Min Price',
'importeFijo' => 'Fixed amount',
'mostrar_en_presupuesto' => 'Show in budget',
'margen' => 'Margin',

View File

@ -19,6 +19,7 @@ return [
'updatedAt' => 'Updated At',
'userCreatedId' => 'User Created ID',
'userUpdateId' => 'User Update ID',
'coste' => 'Cost',
'validation' => [
'nombre' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',

View File

@ -18,6 +18,7 @@ return [
'updatedAt' => 'Actualizado en',
'userCreatedId' => 'ID Usuario \"Creado en\"',
'userUpdateId' => 'ID Usuario \"Actualizado en\"',
'coste' => 'Coste',
'validation' => [
'nombre' => [
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',

View File

@ -10,6 +10,7 @@ return [
'id' => 'ID',
'moduleTitle' => 'Tarifas Manipulado',
'nombre' => 'Nombre',
'importeMinimo' => 'Importe mínimo',
'precioMax' => 'Precio T. Mín',
'precioMin' => 'Precio T. Máx',
'importeFijo' => 'Importe Fijo',

View File

@ -18,6 +18,7 @@ return [
'updatedAt' => 'Actualizado en',
'userCreatedId' => 'ID Usuario \"Creado en\"',
'userUpdateId' => 'ID Usuario \"Actualizado en\"',
'coste' => 'Coste',
'validation' => [
'nombre' => [
'max_length' => 'El campo {field} no puede exceder {param} caracteres en longitud.',

View File

@ -209,6 +209,7 @@ class ProveedorModel extends \App\Models\BaseModel
->select(
"t1.id AS value, t1.nombre AS label, t1.propiedades AS options")
->where("tipo_id", $tipoId)
->where("is_deleted", 0)
->orderBy('t1.nombre', 'asc');
return $builder->get()->getResultObject();

View File

@ -283,6 +283,13 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
$total = $precio_unidad * $tirada;
$margen = floatval($tarifa->margen);
if($tarifa->tarifa_precio_min > $total){
$total = $total-($total * $margen/100.0);
$margen = round(100.0 * (floatval($tarifa->tarifa_precio_min) - $total) / floatval($tarifa->tarifa_precio_min), 0);
$total = floatval($tarifa->tarifa_precio_min);
$precio_unidad = round(floatval($total / $tirada), 2);
}
if (!$is_POD){
$total += floatval($tarifa->tarifa_importe_fijo);
}

View File

@ -324,6 +324,13 @@ class PresupuestoEncuadernacionesModel extends \App\Models\BaseModel
$total = $precio_unidad * $ejemplares;
$margen = floatval($tarifa->margen);
if($tarifa->tarifa_precio_min > $total){
$total = $total-($total * $margen/100.0);
$margen = round(100.0 * (floatval($tarifa->tarifa_precio_min) - $total) / floatval($tarifa->tarifa_precio_min), 0);
$total = floatval($tarifa->tarifa_precio_min);
$precio_unidad = round(floatval($total / $ejemplares), 2);
}
if (!$is_POD){
$total += floatval($tarifa->tarifa_importe_fijo);
}

View File

@ -84,6 +84,13 @@ class PresupuestoManipuladosModel extends \App\Models\BaseModel
$total = $precio_unidad * $tirada;
$margen = floatval($tarifa->margen);
if($tarifa->tarifa_precio_min > $total){
$total = $total-($total * $margen/100.0);
$margen = round(100.0 * (floatval($tarifa->tarifa_precio_min) - $total) / floatval($tarifa->tarifa_precio_min), 0);
$total = floatval($tarifa->tarifa_precio_min);
$precio_unidad = round(floatval($total / $tirada), 2);
}
if (!$is_POD){
$total += floatval($tarifa->tarifa_importe_fijo);
}

View File

@ -69,7 +69,6 @@ class PresupuestoPreimpresionesModel extends \App\Models\BaseModel
];
return $ret_array;
}
return [];
}
private function calcularTarifa($tarifa){

View File

@ -15,8 +15,6 @@ class TarifaextraModel extends \App\Models\BaseModel
protected $allowedFields = [
"nombre",
"precio",
"precio_min",
"importe_fijo",
"margen",
"mostrar_en_presupuesto",
"deleted_at",
@ -39,14 +37,6 @@ class TarifaextraModel extends \App\Models\BaseModel
"label" => "Tarifaextra.nombre",
"rules" => "trim|required|max_length[255]",
],
"precio" => [
"label" => "Tarifaextra.precio",
"rules" => "required|decimal",
],
"precio_min" => [
"label" => "Tarifaextra.precioMin",
"rules" => "required|decimal",
],
"importe_fijo" => [
"label" => "Tarifaextra.importeFijo",
"rules" => "required|decimal",
@ -66,14 +56,6 @@ class TarifaextraModel extends \App\Models\BaseModel
"decimal" => "Tarifaextra.validation.precio.decimal",
"required" => "Tarifaextra.validation.precio.required",
],
"precio_min" => [
"required" => "Tarifaextra.validation.precio_min.required",
"decimal" => "Tarifaextra.validation.precio_min.decimal",
],
"importe_fijo" => [
"required" => "Tarifaextra.validation.importe_fijo.required",
"decimal" => "Tarifaextra.validation.importe_fijo.decimal",
],
"margen" => [
"required" => "Tarifaextra.validation.margen.required",
"decimal" => "Tarifaextra.validation.margen.decimal",

View File

@ -15,8 +15,6 @@ class TarifapreimpresionModel extends \App\Models\BaseModel
protected $allowedFields = [
"nombre",
"precio",
"precio_min",
"importe_fijo",
"margen",
"mostrar_en_presupuesto",
"deleted_at",
@ -43,14 +41,6 @@ class TarifapreimpresionModel extends \App\Models\BaseModel
"label" => "Tarifapreimpresion.precio",
"rules" => "required|decimal",
],
"precio_min" => [
"label" => "Tarifapreimpresion.precioMin",
"rules" => "required|decimal",
],
"importe_fijo" => [
"label" => "Tarifapreimpresion.importeFijo",
"rules" => "required|decimal",
],
"margen" => [
"label" => "Tarifapreimpresion.margen",
"rules" => "required|decimal",
@ -66,14 +56,6 @@ class TarifapreimpresionModel extends \App\Models\BaseModel
"decimal" => "Tarifapreimpresion.validation.precio.decimal",
"required" => "Tarifapreimpresion.validation.precio.required",
],
"precio_min" => [
"required" => "Tarifapreimpresion.validation.precio_min.required",
"decimal" => "Tarifapreimpresion.validation.precio_min.decimal",
],
"importe_fijo" => [
"required" => "Tarifapreimpresion.validation.importe_fijo.required",
"decimal" => "Tarifapreimpresion.validation.importe_fijo.decimal",
],
"margen" => [
"required" => "Tarifapreimpresion.validation.margen.required",
"decimal" => "Tarifapreimpresion.validation.margen.decimal",

View File

@ -200,62 +200,80 @@
<h6> Color del interior </h6>
<div class="row-color">
<div class="row mb-2 col-sm-6">
<div class="container col col-sm-3 d-flex justify-content-center">
<!-- Fila 1 -->
<div class="row mb-2">
<!-- Imagen 1 (Color Negro) -->
<div class="col-sm-4 offset-sm-1 d-flex flex-column align-items-center justify-content-center">
<div id="colorNegroDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
<label class="form-check-label custom-option-content" for="colorNegro">
<span class="custom-option-body">
<img style="height:150px;width:240px" src="<?= site_url("assets/img/bn.png") ?>" alt="">
<img style="height:150px;width:240px" src="<?= site_url('assets/img/bn.png') ?>" alt="">
</span>
</label>
<input name="colorNegro" class="form-check-input calcular-presupuesto" type="radio" value="colorNegro" id="colorNegro"
<input name="colorNegro" class="form-check-input calcular-presupuesto" type="radio" value="colorNegro" id="colorNegro"
<?php echo ($datosPresupuesto->color_impresion == 'negro' ? ' checked=""': ''); ?> >
</div>
<!-- Texto alineado debajo de la imagen -->
<div>
<h6 class="mt-2 text-center">Blanco y Negro Estándar</h6>
</div>
</div>
<div class="container col col-sm-3 d-flex justify-content-center">
<!-- Imagen 2 (Color Negro HQ) -->
<div class="col-sm-4 d-flex flex-column align-items-center justify-content-center">
<div id="colorNegroHqDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
<label class="form-check-label custom-option-content" for="colorNegroHq">
<span class="custom-option-body">
<img style="height:150px;width:240px" src="<?= site_url("assets/img//bn_hq.png") ?>" alt="">
<img style="height:150px;width:240px" src="<?= site_url('assets/img/bn_hq.png') ?>" alt="">
</span>
</label>
<input name="colorNegroHq" class="form-check-input calcular-presupuesto" type="radio" value="colorNegroHq" id="colorNegroHq"
<?php echo ($datosPresupuesto->color_impresion == 'negroHq' ? ' checked=""': ''); ?> >
</div>
<!-- Texto alineado debajo de la imagen -->
<div>
<h6 class="mt-2 text-center">Blanco y Negro Premium</h6>
</div>
</div>
</div> <!-- //.row -->
</div> <!--//.row -->
<div class="row col-sm-6">
<div class="container col col-sm-3 d-flex justify-content-center">
<!-- Fila 2 -->
<div class="row mb-2">
<!-- Imagen 3 (Color) -->
<div class="col-sm-4 offset-sm-1 d-flex flex-column align-items-center justify-content-center">
<div id="colorColorDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
<label class="form-check-label custom-option-content" for="colorColor">
<span class="custom-option-body">
<img style="height:150px;width:240px" src="<?= site_url("assets/img/color.png") ?>" alt="">
<img style="height:150px;width:240px" src="<?= site_url('assets/img/color.png') ?>" alt="">
</span>
</label>
<input name="colorColor" class="form-check-input calcular-presupuesto" type="radio" value="colorColor" id="colorColor"
<input name="colorColor" class="form-check-input calcular-presupuesto" type="radio" value="colorColor" id="colorColor"
<?php echo ($datosPresupuesto->color_impresion == 'color' ? ' checked=""': ''); ?> >
</div>
<!-- Texto alineado debajo de la imagen -->
<div>
<h6 class="mt-2 text-center">Color Estándar</h6>
</div>
</div>
<div class="container col col-sm-3 d-flex justify-content-center">
<!-- Imagen 4 (Color HQ) -->
<div class="col-sm-4 d-flex flex-column align-items-center justify-content-center">
<div id="colorColorHqDiv" class="form-check change-tipo-impresion custom-option-color custom-option custom-option-image custom-option-image-radio">
<label class="form-check-label custom-option-content" for="colorColorHq">
<span class="custom-option-body">
<img style="height:150px;width:240px" src="<?= site_url("assets/img//color_hq.png") ?>" alt="">
<img style="height:150px;width:240px" src="<?= site_url('assets/img/color_hq.png') ?>" alt="">
</span>
</label>
<input name="colorColorHq" class="form-check-input calcular-presupuesto" type="radio" value="colorColorHq" id="colorColorHq"
<?php echo ($datosPresupuesto->color_impresion == 'colorHq' ? ' checked=""': ''); ?> >
</div>
<!-- Texto alineado debajo de la imagen -->
<div>
<h6 class="mt-2 text-center">Color Premium</h6>
</div>
</div>
</div> <!--//.row -->
</div> <!--//.row-color -->
</div> <!-- //.row -->
</div> <!-- //.row-color -->
<div id="pagColorDiv" class="row">
<div class="col-sm-3 mb-3">

View File

@ -204,6 +204,11 @@ function init_servicio_acabado(){
else if (element.sobrecubierta == 1){
nombre_completo += ' (' + window.Presupuestos.sobrecubierta + ')'
}
var precio_unidad = parseFloat(element.precio_unidad).toFixed(2)
var margen = parseFloat(element.margen).toFixed(2)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
tableServiciosAcabado.row.add([
element.tarifa_acabado_id,
nombre_completo,
@ -212,9 +217,9 @@ function init_servicio_acabado(){
element.proveedor +
'</option>' +
'</select>',
'<span id="precio_unidad_acabado_' + element.tarifa_acabado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
'<span id="precio_unidad_acabado_' + element.tarifa_acabado_id + '">' + precio_unidad_coste + ' / ' + precio_unidad + '</span>',
'<input class="update-totales-servicios" id="precio_total_acabado_' + element.tarifa_acabado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="acabado_margen_' + element.tarifa_acabado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
'<span style="display: none;" class="update-totales" id="acabado_margen_' + element.tarifa_acabado_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_acabado_id +'" data-text="' + nombre_completo + '"></i></a>'
]).draw(false)
@ -300,10 +305,14 @@ function select_acabado_event(){
url: window.routes_servicios.dataTableOfPresupuestoAcabados,
data: datos,
success: function (data) {
var precio_unidad = parseFloat(data.values[0].precio_unidad).toFixed(2)
var margen = parseFloat(data.values[0].margen).toFixed(2)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
$('#precio_unidad_acabado_' + datos.tarifa_acabado_id).text(parseFloat(data.values[0].precio_unidad).toFixed(2))
$('#precio_unidad_acabado_' + datos.tarifa_acabado_id).text(precio_unidad_coste + ' / ' + precio_unidad)
$('#precio_total_acabado_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].total).toFixed(2))
$('#acabado_margen_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].margen).toFixed(2))
$('#acabado_margen_' + datos.tarifa_acabado_id).val(margen)
yeniden(data[window.csrf_token]);
return true;
@ -366,6 +375,10 @@ function get_tarifas_acabado(tarifa_id = -1, uso=null){
if(uso!= null)
nombre += ' (' + uso + ')'
var precio_unidad = parseFloat(row.precio_unidad).toFixed(2)
var margen = parseFloat(row.margen).toFixed(2)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
tableServiciosAcabado.row.add([
row.tarifa_id,
nombre,
@ -374,9 +387,9 @@ function get_tarifas_acabado(tarifa_id = -1, uso=null){
row.proveedor +
'</option>' +
'</select>',
'<span id="precio_unidad_acabado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
'<span id="precio_unidad_acabado_' + row.tarifa_id + '">' + precio_unidad_coste + ' / ' + precio_unidad + '</span>',
'<input class="update-totales-servicios" id="precio_total_acabado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="acabado_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
'<span style="display: none;" class="update-totales" id="acabado_margen_' + row.tarifa_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2 tiradas-alternativas" data-id="' + row.tarifa_id +'" data-text="' + nombre +'"></i></a>'
]).draw(false)
@ -550,7 +563,7 @@ function get_datos_acabado(){
values['proveedor_id'] = $(this).children(":first").select2('data')[0].id
break
case 3:
values['precio_unidad'] = $(this).text()
values['precio_unidad'] = $(this).text().split('/')[1].trim()
break
case 4:
values['precio_total'] = $(this).children(":first").val()
@ -653,6 +666,10 @@ function init_servicio_encuadernado(){
const tarifa_id = element.tarifa_encuadernado_id
var proveedor_nombre = element.proveedor===null? window.Presupuestos.no_disponible: element.proveedor
var precio_unidad = parseFloat(element.precio_unidad).toFixed(2)
var margen = parseFloat(element.margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
var linea = [
element.tarifa_encuadernado_id,
element.nombre,
@ -661,11 +678,11 @@ function init_servicio_encuadernado(){
proveedor_nombre +
'</option>' +
'</select>',
'<span id="precio_unidad_encuadernado_' + element.tarifa_encuadernado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
'<span id="precio_unidad_encuadernado_' + element.tarifa_encuadernado_id + '">' + precio_unidad_coste + ' / ' + precio_unidad + '</span>',
(element.hasOwnProperty('paginas_por_cuadernillo') && element.paginas_por_cuadernillo!=null)?selectForCuadernillos(element.tarifa_encuadernado_id, element.paginas_por_cuadernillo):'',
'<span id="tiempo_encuadernado_' + element.tarifa_encuadernado_id + '">' + convertirTiempo(element.tiempo) + '</span>',
'<input class="update-totales-servicios" id="precio_total_encuadernado_' + element.tarifa_encuadernado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="enc_margen_' + element.tarifa_encuadernado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
'<span style="display: none;" class="update-totales" id="enc_margen_' + element.tarifa_encuadernado_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_encuadernado_id +'"></i></a>'
]
@ -814,11 +831,15 @@ function select_enc_event(){
url: window.routes_servicios.dataTableOfPresupuestoEncuadernaciones,
data: datos,
success: function (data) {
var precio_unidad = parseFloat(data.values[0].precio_unidad).toFixed(2)
var margen = parseFloat(data.values[0].margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
$('#precio_unidad_encuadernado_' + datos.tarifa_encuadernacion_id).text(parseFloat(data.values[0].precio_unidad).toFixed(2))
$('#precio_unidad_encuadernado_' + datos.tarifa_encuadernacion_id).text(precio_unidad_coste + ' / ' + precio_unidad)
$('#tiempo_encuadernado_' + datos.tarifa_encuadernacion_id).text(convertirTiempo(data.values[0].tiempo))
$('#precio_total_encuadernado_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].total).toFixed(2))
$('#enc_margen_' + datos.tarifa_encuadernacion_id).val(parseFloat(data.values[0].margen).toFixed(2))
$('#enc_margen_' + datos.tarifa_encuadernacion_id).val(margen)
yeniden(data[window.csrf_token]);
return true;
@ -889,6 +910,10 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
tableServiciosEnc.clear().draw()
data.values.forEach((row) => {
var precio_unidad = parseFloat(row.precio_unidad).toFixed(2)
var margen = parseFloat(row.margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
tableServiciosEnc.row.add([
row.tarifa_id,
@ -898,11 +923,11 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
row.proveedor +
'</option>' +
'</select>',
'<span id="precio_unidad_encuadernado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
'<span id="precio_unidad_encuadernado_' + row.tarifa_id + '">' + precio_unidad_coste + ' / ' + precio_unidad + '</span>',
(row.hasOwnProperty('paginas_por_cuadernillo') && row.paginas_por_cuadernillo!=null)?selectForCuadernillos(row.tarifa_id, 32):'',
'<span id="tiempo_encuadernado_' + row.tarifa_id + '">' + convertirTiempo(row.tiempo) + '</span>',
'<input class="update-totales-servicios" id="precio_total_encuadernado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="enc_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
'<span style="display: none;" class="update-totales" id="enc_margen_' + row.tarifa_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + row.tarifa_id +'"></i></a>'
]).draw(false)
@ -1008,7 +1033,7 @@ function get_datos_encuadernacion(){
values['proveedor_id'] = $(this).children(":first").select2('data')[0].id
break
case 3:
values['precio_unidad'] = $(this).text()
values['precio_unidad'] = $(this).text().split('/')[1].trim()
break
case 4:
values['paginas_por_cuadernillo'] = $(this).children(":first").val()
@ -1122,13 +1147,17 @@ function init_servicio_manipulado(){
})
window.serviciosmanipuladoList.forEach((element) =>{
var precio_unidad = parseFloat(element.precio_unidad).toFixed(2)
var margen = parseFloat(element.margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
tableServiciosManipulado.row.add([
element.tarifa_manipulado_id,
element.nombre,
'<span id="precio_unidad_manipulado_' + element.tarifa_manipulado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
'<span id="precio_unidad_manipulado_' + element.tarifa_manipulado_id + '">' + precio_unidad_coste + ' / ' + precio_unidad + '</span>',
'<input class="update-totales-servicios" id="precio_total_manipulado_' + element.tarifa_manipulado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="manipulado_margen_' + element.tarifa_manipulado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
'<span style="display: none;" class="update-totales" id="manipulado_margen_' + element.tarifa_manipulado_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_manipulado_id +'"></i></a>'
]).draw(false)
@ -1202,12 +1231,16 @@ async function get_tarifas_manipulado(tipo=null, tarifa_id = -1){
data.values.forEach((row) => {
var precio_unidad = parseFloat(row.precio_unidad).toFixed(2)
var margen = parseFloat(row.margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
tableServiciosManipulado.row.add([
row.tarifa_id,
row.tarifa_nombre,
'<span id="precio_unidad_manipulado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
'<span id="precio_unidad_manipulado_' + row.tarifa_id + '">' + precio_unidad_coste + ' / ' + precio_unidad + '</span>',
'<input class="update-totales-servicios" id="precio_total_manipulado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="manipulado_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
'<span style="display: none;" class="update-totales" id="manipulado_margen_' + row.tarifa_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + row.tarifa_id +'"></i></a>'
]).draw(false)
@ -1276,7 +1309,7 @@ function get_datos_manipulado(){
values['tarifa_id'] = $(this).text()
break
case 2:
values['precio_unidad'] = $(this).text()
values['precio_unidad'] = $(this).text().split('/')[1].trim()
break
case 3:
values['precio_total'] = $(this).children(":first").val()
@ -1374,11 +1407,16 @@ function init_servicio_preimpresion(){
window.serviciospreimpresionList.forEach((element) =>{
var precio = parseFloat(element.precio).toFixed(2)
var margen = parseFloat(element.margen).toFixed(2)
var coste = (precio/(1+margen/100)).toFixed(2)
tableServiciosPreimpresion.row.add([
element.tarifa_preimpresion_id,
element.nombre,
'<input class="update-totales-servicios" id="precio_preimpresion_' + element.tarifa_preimpresion_id +'" value="' + parseFloat(element.precio).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="preimpresion_margen_' + element.tarifa_preimpresion_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
'<span id="coste_preimprecion_' + element.tarifa_id + '">' + coste + '</span>',
'<input class="update-totales-servicios" id="precio_preimpresion_' + element.tarifa_preimpresion_id +'" value="' + precio + '"></input>',
'<span style="display: none;" class="update-totales" id="preimpresion_margen_' + element.tarifa_preimpresion_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_preimpresion_id +'"></i></a>'
]).draw(false)
@ -1433,10 +1471,15 @@ function get_tarifas_preimpresion(tarifa_id = -1){
success: function (data) {
data.values.forEach((row) => {
var precio = parseFloat(row.precio).toFixed(2)
var margen = parseFloat(row.margen).toFixed(2)
var coste = (precio/(1+margen/100)).toFixed(2)
tableServiciosPreimpresion.row.add([
row.tarifa_id,
row.tarifa_nombre,
'<span id="coste_preimprecion_' + row.tarifa_id + '">' + coste + '</span>',
'<input class="update-totales-servicios" id="precio_preimpresion_' + row.tarifa_id +'" value="' + parseFloat(row.precio).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="preimpresion_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + row.tarifa_id +'"></i></a>'
@ -1528,10 +1571,10 @@ function get_datos_preimpresion(){
case 0:
values['tarifa_id'] = $(this).text()
break
case 2:
case 3:
values['precio'] = $(this).children(":first").val()
break
case 3:
case 4:
values['margen'] = $(this).text()
break
}
@ -1627,11 +1670,16 @@ function init_servicio_extra(){
window.serviciosextraList.forEach((element) =>{
var precio = parseFloat(element.precio).toFixed(2)
var margen = parseFloat(element.margen).toFixed(2)
var coste = (precio/(1+margen/100)).toFixed(2)
tableServiciosExtra.row.add([
element.tarifa_extra_id,
element.nombre,
'<input class="update-totales-servicios" id="precio_servicioextra_' + element.tarifa_extra_id +'" value="' + parseFloat(element.precio).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="servicioextra_margen_' + element.tarifa_extra_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
'<span id="coste_servicioextra_' + element.tarifa_id + '">' + coste + '</span>',
'<input class="update-totales-servicios" id="precio_servicioextra_' + element.tarifa_extra_id +'" value="' + precio + '"></input>',
'<span style="display: none;" class="update-totales" id="servicioextra_margen_' + element.tarifa_extra_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_extra_id +'"></i></a>'
]).draw(false)
@ -1687,11 +1735,16 @@ function get_tarifas_extra(tarifa_id = -1){
data.values.forEach((row) => {
var precio = parseFloat(row.precio).toFixed(2)
var margen = parseFloat(row.margen).toFixed(2)
var coste = (precio/(1+margen/100)).toFixed(2)
tableServiciosExtra.row.add([
row.tarifa_id,
row.tarifa_nombre,
'<input class="update-totales-servicios" id="precio_servicioextra_' + row.tarifa_id +'" value="' + parseFloat(row.precio).toFixed(2) + '"></input>',
'<span style="display: none;" class="update-totales" id="servicioextra_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
'<span id="coste_servicioextra_' + row.tarifa_id + '">' + coste + '</span>',
'<input class="update-totales-servicios" id="precio_servicioextra_' + row.tarifa_id +'" value="' + precio + '"></input>',
'<span style="display: none;" class="update-totales" id="servicioextra_margen_' + row.tarifa_id + '">' + margen + '</span>',
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + row.tarifa_id +'"></i></a>'
]).draw(false)
@ -1744,10 +1797,10 @@ function get_datos_serviciosextra(){
case 0:
values['tarifa_id'] = $(this).text()
break
case 2:
case 3:
values['precio'] = $(this).children(":first").val()
break
case 3:
case 4:
values['margen'] = $(this).text()
break
}
@ -1872,6 +1925,11 @@ async function actualizar_servicios(update_preimpresion=false){
.then(response => response.json())
.then(data => {
data.lines.forEach((line) => {
var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2)
var margen = parseFloat(line[0].margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
$('#proveedor_acabado_' + line[0].tarifa_id).off('change')
if(line[0].hasOwnProperty('proveedor_id')){
$('#proveedor_acabado_' + line[0].tarifa_id)
@ -1881,9 +1939,9 @@ async function actualizar_servicios(update_preimpresion=false){
$('#proveedor_acabado_' + line[0].tarifa_id).empty()
.append('<option selected="selected" value="' + line[0].proveedor_id + '">' + window.Presupuestos.no_disponible + '</option>')
}
$('#precio_unidad_acabado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
$('#precio_unidad_acabado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad)
$('#precio_total_acabado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
$('#acabado_margen_' + line[0].tarifa_id).text(parseFloat(line[0].margen).toFixed(2))
$('#acabado_margen_' + line[0].tarifa_id).text(margen)
$('#proveedor_acabado_' + line[0].tarifa_id).on('change', select_enc_event)
});
check_serv_acabado_error()
@ -1900,6 +1958,10 @@ async function actualizar_servicios(update_preimpresion=false){
.then(response => response.json())
.then(data => {
data.lines.forEach((line) => {
var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2)
var margen = parseFloat(line[0].margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
$('#proveedor_enc_' + line[0].tarifa_id).off('change')
if(line[0].hasOwnProperty('proveedor_id')){
@ -1910,9 +1972,9 @@ async function actualizar_servicios(update_preimpresion=false){
$('#proveedor_enc_' + line[0].tarifa_id).empty()
.append('<option selected="selected" value="' + line[0].proveedor_id + '">' + window.Presupuestos.no_disponible + '</option>')
}
$('#precio_unidad_encuadernado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
$('#precio_unidad_encuadernado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad)
$('#precio_total_encuadernado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
$('#enc_margen_' + line[0].tarifa_id).val(parseFloat(line[0].margen).toFixed(2))
$('#enc_margen_' + line[0].tarifa_id).val(margen)
$('#proveedor_enc_' + line[0].tarifa_id).on('change', select_enc_event)
});
check_serv_enc_error()
@ -1928,9 +1990,14 @@ async function actualizar_servicios(update_preimpresion=false){
.then(response => response.json())
.then(data => {
data.lines.forEach((line) => {
$('#precio_unidad_manipulado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
var precio_unidad = parseFloat(line[0].precio_unidad).toFixed(2)
var margen = parseFloat(line[0].margen).toFixed(0)
var precio_unidad_coste = (precio_unidad/(1+margen/100)).toFixed(2)
$('#precio_unidad_manipulado_' + line[0].tarifa_id).text(precio_unidad_coste + " / " + precio_unidad)
$('#precio_total_manipulado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
$('#manipulado_margen_' + line[0].tarifa_id).val(parseFloat(line[0].margen).toFixed(2))
$('#manipulado_margen_' + line[0].tarifa_id).val(margen)
});
check_serv_manipulado_error()
yeniden(data[window.csrf_token]);
@ -1947,8 +2014,14 @@ async function actualizar_servicios(update_preimpresion=false){
.then(data => {
data.lines.forEach((line) => {
$('#precio_preimpresion_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
$('#preimpresion_margen_' + line[0].tarifa_id).val(parseFloat(line[0].margen).toFixed(2))
var precio = parseFloat(line[0].total).toFixed(2)
var margen = parseFloat(line[0].margen).toFixed(2)
var coste = (precio/(1+margen/100)).toFixed(2)
$('#coste_preimprecion_' + line[0].tarifa_id).text(coste)
$('#precio_preimpresion_' + line[0].tarifa_id).val(precio)
$('#preimpresion_margen_' + line[0].tarifa_id).val(margen)
});
check_serv_preimpresion_error()
yeniden(data[window.csrf_token]);
@ -1965,10 +2038,15 @@ async function actualizar_servicios(update_preimpresion=false){
})
.then(response => response.json())
.then(data => {
var precio = parseFloat(data[0].total).toFixed(2)
var margen = parseFloat(data[0].margen).toFixed(2)
var coste = (precio/(1+margen/100)).toFixed(2)
data.lines.forEach((line) => {
$('#precio_serviciosextra_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
$('#serviciosextra_margen_' + line[0].tarifa_id).val(parseFloat(line[0].margen).toFixed(2))
$('#coste_servicioextra_' + line[0].tarifa_id).text(coste)
$('#precio_serviciosextra_' + line[0].tarifa_id).val(precio)
$('#serviciosextra_margen_' + line[0].tarifa_id).val(margen)
});
check_serv_preimpresion_error();
yeniden(data[window.csrf_token]);

View File

@ -129,6 +129,7 @@
<tr>
<th><?= lang('Presupuestos.id') ?></th>
<th><?= lang('Tarifapreimpresion.tarifapreimpresion') ?></th>
<th><?= lang('Tarifapreimpresion.coste') ?></th>
<th><?= lang('Presupuestos.precio') ?></th>
<th></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -246,6 +247,7 @@
<tr>
<th><?= lang('Presupuestos.id') ?></th>
<th><?= lang('Tarifaextra.tarifaextra') ?></th>
<th><?= lang('Tarifaextra.coste') ?></th>
<th><?= lang('Presupuestos.precio') ?></th>
<th></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>

View File

@ -47,7 +47,8 @@
<dt class="col-5 fw-normal text-end">Total Costes</dt>
<dd id="totalCostes" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_costes) ?>€</dd>
<dt class="col-5 fw-normal text-end">Total Margen</dt>
<dd id="totalMargenes" class="col-6 text-end"><?= old('0', $presupuestoEntity->total_margenes) ?></dd>
<dd id="porcentajeMargen" class="col-3 text-end py-1"><?= old('0', round(100*$presupuestoEntity->total_margenes/($presupuestoEntity->total_costes+$presupuestoEntity->total_margenes),0)) ?>%</dd>
<dd id="totalMargenes" class="col-3 text-end py-1"><?= old('0', $presupuestoEntity->total_margenes) ?>€</dd>
</dl>
<hr class="mx-n4">

View File

@ -16,7 +16,11 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
var sumForFactor = 0.0
var sumForFactorPonderado = 0.0
var margenPorHoras = 0.0;
if(updateLP){
if(typeof $("#tableLineasPresupuesto").DataTable() !== 'undefined'){
$("#tableLineasPresupuesto").DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
var rowData = this.data();
@ -30,7 +34,8 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
}
if(rowData.check_impresion_total){
totalImpresion += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
//totalImpresion += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
margenPorHoras += parseFloat($('#' + rowData.row_id + '_precioImpresion').val())
totalImpresion += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
sumForFactor += parseFloat($('#' + rowData.row_id + '_totalClicks').val())
@ -41,8 +46,10 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
sumForFactor += (parseFloat(rowData.totalTinta) + parseFloat(rowData.totalCorte))
}
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
//margenImpresion += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
//margenPorHoras += parseFloat($('#' + rowData.row_id + '_margenImpresion').val())
margenImpresion += parseFloat($('#' + rowData.row_id + '_margenClicks').val())
sumForFactor -= parseFloat($('#' + rowData.row_id + '_margenClicks').val())
@ -56,6 +63,8 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
totalImpresion -= margenImpresion
totalPapel -= margenPapel
margenImpresion += margenPorHoras
var porcentajeMargenPapel = isNaN(margenPapel/(totalPapel)*100.0)?0:margenPapel/(totalPapel)*100.0
$('#porcentajeMargenPapel').text(porcentajeMargenPapel.toFixed(0) + '%')
@ -150,7 +159,7 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
sumForFactorPonderado += totalServicios;
var porcentajeMargenServicios = margenServicios/(margenServicios+totalServicios)*100
var porcentajeMargenServicios = margenServicios/(totalServicios)*100
$('#porcentajeMargenServicios').text(isNaN(porcentajeMargenServicios.toFixed(0))?0:porcentajeMargenServicios.toFixed(0) + '%')
$('#totalServicios').text((addSeparatorsNF(totalServicios.toFixed(2), ".", ",", ".")) + "€")
$('#margenServicios').text((addSeparatorsNF(margenServicios.toFixed(2), ".", ",", ".")) + "€")
@ -189,10 +198,13 @@ function updateTotales(updateLP=true, updateServicios=true, updateEnvio=true){
var totalCostes = parseFloat(totalPapel.toFixed(2)) + parseFloat(totalImpresion.toFixed(2)) + parseFloat(totalServicios.toFixed(2)) + parseFloat(totalEnvios.toFixed(2))
var totalMargenes = parseFloat(margenPapel.toFixed(2)) + parseFloat(margenImpresion.toFixed(2)) + parseFloat(margenServicios.toFixed(2)) + parseFloat(margenEnvios.toFixed(2))
var porcentajeMargen = (100*totalMargenes/(totalCostes+totalMargenes)).toFixed(0)
$('#totalCostes').text((addSeparatorsNF(totalCostes.toFixed(2), ".", ",", ".")) + "€")
$('#totalMargenes').text((addSeparatorsNF(totalMargenes.toFixed(2), ".", ",", ".")) + "€")
$('#totalCostes').attr('val',(totalCostes).toFixed(2) + '€')
$('#totalMargenes').attr('val',(totalMargenes).toFixed(2) + '€')
$('#porcentajeMargen').text(porcentajeMargen + '%')
$('#porcentajeMargen').attr('val',porcentajeMargen)
if($('#total_descuentoPercent').val()<0){
$('#total_descuentoPercent').val(0)

View File

@ -31,34 +31,6 @@
>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="precio_min" class="form-label">
<?= lang('Tarifaextra.precioMin') ?>*
</label>
<input
type="text"
id="precio_min"
name="precio_min"
required
class="form-control"
value="<?= old('precio_min', $tarifaextraEntity->precio_min) ?>"
>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="importe_fijo" class="form-label">
<?= lang('Tarifaextra.importeFijo') ?>*
</label>
<input
type="text"
id="importe_fijo"
name="importe_fijo"
required
class="form-control"
value="<?= old('importe_fijo', $tarifaextraEntity->importe_fijo) ?>"
>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="margen" class="form-label">
<?= lang('Tarifaextra.margen') ?>*

View File

@ -17,8 +17,6 @@
<tr>
<th><?= lang('Tarifaextra.nombre') ?></th>
<th><?= lang('Tarifaextra.precio') ?></th>
<th><?= lang('Tarifaextra.precioMin') ?></th>
<th><?= lang('Tarifaextra.importeFijo') ?></th>
<th><?= lang('Tarifaextra.margen') ?></th>
<th><?= lang('Tarifaextra.mostrar_en_presupuesto') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -33,12 +31,6 @@
<td class="align-middle">
<?= esc($item->precio) ?>
</td>
<td class="align-middle">
<?= esc($item->precio_min) ?>
</td>
<td class="align-middle">
<?= esc($item->importe_fijo) ?>
</td>
<td class="align-middle">
<?= esc($item->margen) ?>
</td>

View File

@ -9,7 +9,7 @@
<div class="mb-3">
<label for="nombre" class="form-label">
<?=lang('Tarifamanipulado.precioMin') ?>*
<?=lang('Tarifamanipulado.importeMinimo') ?>*
</label>
<input type="text" id="precio_min" name="precio_min" class="form-control" value="<?=old('precio_min', $tarifaManipuladoEntity->precio_min) ?>">
</div><!--//.mb-3 -->

View File

@ -17,7 +17,7 @@
<thead>
<tr>
<th><?= lang('Tarifamanipulado.nombre') ?></th>
<th><?= lang('Tarifamanipulado.precioMin') ?></th>
<th><?= lang('Tarifamanipulado.importeMinimo') ?></th>
<th><?= lang('Tarifamanipulado.importeFijo') ?></th>
<th><?= lang('Tarifamanipulado.mostrar_en_presupuesto') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>

View File

@ -31,34 +31,7 @@
>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="precio_min" class="form-label">
<?= lang('Tarifapreimpresion.precioMin') ?>*
</label>
<input
type="text"
id="precio_min"
name="precio_min"
required
class="form-control"
value="<?= old('precio_min', $tarifapreimpresionEntity->precio_min) ?>"
>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="importe_fijo" class="form-label">
<?= lang('Tarifapreimpresion.importeFijo') ?>*
</label>
<input
type="text"
id="importe_fijo"
name="importe_fijo"
required
class="form-control"
value="<?= old('importe_fijo', $tarifapreimpresionEntity->importe_fijo) ?>"
>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="margen" class="form-label">
<?= lang('Tarifapreimpresion.margen') ?>*

View File

@ -17,8 +17,6 @@
<tr>
<th><?= lang('Tarifapreimpresion.nombre') ?></th>
<th><?= lang('Tarifapreimpresion.precio') ?></th>
<th><?= lang('Tarifapreimpresion.precioMin') ?></th>
<th><?= lang('Tarifapreimpresion.importeFijo') ?></th>
<th><?= lang('Tarifapreimpresion.margen') ?></th>
<th><?= lang('Tarifapreimpresion.mostrar_en_presupuesto') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
@ -33,12 +31,6 @@
<td class="align-middle">
<?= esc($item->precio) ?>
</td>
<td class="align-middle">
<?= esc($item->precio_min) ?>
</td>
<td class="align-middle">
<?= esc($item->importe_fijo) ?>
</td>
<td class="align-middle">
<?= esc($item->margen) ?>
</td>