trabajando en añadir tiradas alternativas

This commit is contained in:
2025-01-14 20:33:55 +01:00
parent 28a133f687
commit a4394ed470
20 changed files with 934 additions and 559 deletions

View File

@ -73,38 +73,6 @@ async function get_coste_envio_tiradasAlternativas(tirada){
}
function checkInsertar(){
var cantidad_total = 0
$('#tableOfDireccionesEnvio').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
var data = this.data();
cantidad_total += parseInt(data.cantidad )
} );
var htmlString = ''
if(cantidad_total < parseInt($('#tirada').val())){
$('#rowInsertar').css('display', 'flex')
}
else{
$('#rowInsertar').css('display', 'none')
}
if(cantidad_total != parseInt($('#tirada').val())){
htmlString = `
<div class="alert alert-warning d-flex align-items-baseline" role="alert">
<span class="alert-icon alert-icon-lg text-primary me-2">
<i class="ti ti-bell ti-sm"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">` +
window.Presupuestos.validation.ejemplares_envio +
`</h5>
</div>
</div>`;
}
$('#alert-envios').html(htmlString)
}
async function updateTablaEnvios(tirada_inicial = null, tirada = null){
var peso_total_libro = get_peso_libro();
@ -201,80 +169,11 @@ $('#insertar_direccion').on('click', function(){
$(document).on('click', '.delete-add-row', function(e) {
const row = $(this).closest('tr');
tableEnvios.row( row )
.remove()
.draw();
checkInsertar()
//updateTotales(false, false, true)
updatePresupuesto({
update_lineas: false,
update_servicios: false,
update_envios: false,
update_resumen: true,
update_tiradas_alternativas: true
})
showBreadCrumbSaveButton(true);
})
$(document).on('click', '.btn-edit-add', function(e) {
const row = $(this).closest('tr');
var data = tableEnvios.row( row ).data()
$("#addressForm").attr('action','edit')
$("#addressForm").attr('row', row[0]._DT_RowIndex)
$("#addressForm").attr('presupuestodireccion_id', $(this).attr('data-id'))
var $newAddDialog = $("#addressForm")
var maximaCantidad = parseInt($('#tirada').val())
$("#add_cantidad").attr("max" , maximaCantidad);
$("#add_cantidad").val( maximaCantidad);
$("#add_cantidad").on('change', function(){
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
})
cantidad_total = 0
tableEnvios.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
var data2 = this.data();
cantidad_total += parseInt(data2.cantidad)
} );
cantidad_total -= parseInt(data.cantidad) // Si es editar tienes que restar los de la linea actual
$('#add_cantidad').attr('max-value', parseInt($('#tirada').val())-cantidad_total)
$('#add_cantidad').val(parseInt($('#tirada').val())-cantidad_total)
$('#add_att').val(data.att)
$('#add_direccion').val(data.direccion)
$('#add_email').val(data.email)
$('#add_cp').val(data.cp)
$('#add_municipio').val(data.municipio)
$('#add_provincia').val(data.provincia)
$('#add_pais_id').val(data.paisId)
$('#add_telefono').val(data.telefono)
$('#add_cantidad').val(data.cantidad)
$('#add_entregaPieCalle').prop('checked', data.entregaPieCalle==1?true:false)
$newAddDialog.modal('show')
})
$('#recoger_en_taller').change(function(){
if(this.checked) {
$('#rowTable').css('display', 'none')
$('#rowInsertar').css('display', 'none')
tableEnvios.clear().draw()
}
else{
$('#rowTable').css('display', 'flex')
$('#rowInsertar').css('display', 'flex')
tableEnvios.columns.adjust();
}
})
@ -316,43 +215,5 @@ function save_datos_envios(){
}
function load_datos_envios(){
window.direccionesList.forEach((linea) => {
tableEnvios.row
.add({
'tarifa_id': linea.tarifa_id,
'cantidad': linea.cantidad,
'peso': linea.peso,
'att': linea.att,
'email': linea.email,
'direccion': linea.direccion,
'cp': linea.cp,
'municipio': linea.municipio,
'provincia': linea.provincia,
'paisId': linea.pais_id,
'telefono': linea.telefono,
'proveedor': linea.proveedor,
'proveedor_id': linea.proveedor_id,
'precio': linea.precio,
'margen': linea.margen,
'entregaPieCalle': linea.entregaPieCalle,
'actionBtns_direcciones': actionBtns_direcciones,
})
.draw();
checkInsertar()
});
updatePresupuesto({
update_lineas: false,
update_servicios: false,
update_envios: false,
update_resumen: true,
update_tiradas_alternativas: false
})
}
*/

View File

@ -10,6 +10,15 @@
<div class="accordion-body">
<div id='alert-envios'></div>
<?= view("themes/vuexy/form/presupuestos/admin/_presupuestoDireccionesForm") ?>
<div class='row'>
<div class='col-md-12 col-lg-4 px-4 py-2'>
<label for='envio_base' class='form-label'>
Envio base
</label>
<input readonly type='text' class='form-control' id='envio_base' name='envio_base' value='<?= $presupuestoEntity->envio_base ?>' />
</div>
</div>
<div id='rowTable' class='row'>
<table id="tableOfDireccionesEnvio" class="table comparator-table dt-responsive dataTable px-2 update-resumen-presupuesto" style="width: 95%;">
<thead>

View File

@ -2,20 +2,21 @@
<div class="modal-dialog modal-lg modal-simple">
<div class="modal-content">
<div class="modal-header">
<h4 id="labelTitleConfirmDialog" class="modal-title"><?= lang('PresupuestosDirecciones.direccionTitle') ?></h4>
<h4 id="labelTitleConfirmDialog" class="modal-title">
<?= lang('PresupuestosDirecciones.direccionTitle') ?></h4>
</div>
<div class="modal-body">
<div id='error-tarifa'></div>
<div class="mb-3">
<label for="add_clientedAdd" class="form-label">
<?=lang('PresupuestosDirecciones.clientedAdd') ?>*
</label>
<select id="add_clientedAdd" class="form-control select2bs" style="width: 100%;" >
</select>
</div><!--//.mb-3 -->
<div id='error-tarifa'></div>
<div class="mb-3">
<label for="add_clientedAdd" class="form-label">
<?= lang('PresupuestosDirecciones.clientedAdd') ?>*
</label>
<select id="add_clientedAdd" class="form-control select2bs" style="width: 100%;">
</select>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_cantidad" class="form-label">
<?= lang('PresupuestosDirecciones.cantidad') ?>*
@ -41,32 +42,32 @@
<input type="text" id="add_direccion" maxLength="255" class="form-control new-address">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_pais_id" class="form-label">
<?=lang('PresupuestosDirecciones.pais') ?>*
<?= lang('PresupuestosDirecciones.pais') ?>*
</label>
<select id="add_pais_id" class="form-control select2bs new-address" style="width: 100%;" >
<select id="add_pais_id" class="form-control select2bs new-address" style="width: 100%;">
</select>
</div><!--//.mb-3 -->
<div class='row'>
<div id='divMunicipio' class="col-md-12 col-lg-12 pl-4">
<div id='divMunicipio' class="col-md-12 col-lg-12 pl-4">
<div class="mb-3">
<label for="add_municipio" class="form-label">
<?=lang('PresupuestosDirecciones.municipio') ?>*
<?= lang('PresupuestosDirecciones.municipio') ?>*
</label>
<input type="text" id="add_municipio" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
</div>
<div class="col-md-12 col-lg-6 pl-4 spain-data" style="display: none;">
<div class="col-md-12 col-lg-6 pl-4 spain-data" style="display: none;">
<div class="mb-3">
<label for="add_provincia" class="form-label">
<?=lang('PresupuestosDirecciones.provincia') ?>*
<?= lang('PresupuestosDirecciones.provincia') ?>*
</label>
<input type="text" id="add_provincia" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
@ -76,37 +77,42 @@
<div class='row'>
<div class="col-md-12 col-lg-6 pl-4">
<div class="col-md-12 col-lg-6 pl-4">
<div class="mb-3">
<label for="add_cp" class="form-label">
<?=lang('PresupuestosDirecciones.cp') ?>*
<?= lang('PresupuestosDirecciones.cp') ?>*
</label>
<input type="text" id="add_cp" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
</div>
<div class="col-md-12 col-lg-6 pl-4">
<div class="col-md-12 col-lg-6 pl-4">
<div class="mb-3">
<label for="add_telefono" class="form-label">
<?=lang('PresupuestosDirecciones.telefono') ?>*
<?= lang('PresupuestosDirecciones.telefono') ?>*
</label>
<input type="text" id="add_telefono" maxLength="100" class="form-control new-address"></input>
<input type="text" id="add_telefono" maxLength="100"
class="form-control new-address"></input>
</div><!--//.mb-3 -->
</div>
</div> <!-- //.row -->
<div class="col-md-12 col-lg-6 pl-4">
<div class="col-md-12 col-lg-6 pl-4">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="add_entregaPieCalle" name="add_entregaPieCalle" value="1" >
<label class="form-check-label" for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
<input class="form-check-input" type="checkbox" id="add_entregaPieCalle"
name="add_entregaPieCalle" value="1">
<label class="form-check-label"
for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
</div>
</div>
<div class="col-md-12 col-lg-6 pl-4">
<div class="col-md-12 col-lg-6 pl-4">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="add_saveDirection" name="add_saveDirection" value="1" >
<label class="form-check-label" for="add_saveDirection"><?= lang('PresupuestosDirecciones.saveDirection') ?></label>
<input class="form-check-input" type="checkbox" id="add_saveDirection" name="add_saveDirection"
value="1">
<label class="form-check-label"
for="add_saveDirection"><?= lang('PresupuestosDirecciones.saveDirection') ?></label>
</div>
</div>
@ -114,22 +120,15 @@
<label style="display:none" for="add_alias" class="form-label save-alias">
<?= lang('PresupuestosDirecciones.alias') ?>*
</label>
<input type="text" id="add_alias" maxLength="100" class="form-control new-address save-alias" style='display: none;'>
<input type="text" id="add_alias" maxLength="100" class="form-control new-address save-alias"
style='display: none;'>
</div><!--//.mb-3 -->
</div>
<div class="modal-footer">
<button id="saveDireccionEnvio"
type="button"
class="btn btn-primary"
>Guardar</button>
<button id="cancelAdd"
type="button"
class="btn btn-default"
>Cancelar</button>
<button id="saveDireccionEnvio" type="button" class="btn btn-primary">Guardar</button>
<button id="cancelAdd" type="button" class="btn btn-default">Cancelar</button>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,59 +1,3 @@
// Selección de la última columna de la tabla de tiradas
const lastColNr_tiradasAlt = $('#tableTiradas').find("tr:first th").length - 1;
// Función para generar los botones de acción de la tabla de tiradas
const actionBtns_tiradasAlt = function (data) {
return `
<a href="javascript:void(0);"><i class="ti ti-check ti-sm comfirm-tirada-alt mx-2" data-id="${data.row_id}"></i></a>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-tirada mx-2" data-id="${data.row_id}"></i></a>
`;
};
// Inicializaciones de la tabla de tiradas
var tableTiradas;
// Espera a que todas las variables necesarias estén definidas
(async () => {
while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
await new Promise(resolve => setTimeout(resolve, 200));
initTableTiradas();
fill_tiradas_alternativas();
/*$('.tiradas-alternativas').each(function() {
if ($(this).is('input')) {
$(this).bind('change', update_tiradas_alternativas);
} else if ($(this).is('button')) {
$(this).bind('click', update_tiradas_alternativas);
} else if ($(this).is('table')) {
$(this).bind('draw.dt', update_tiradas_alternativas);
}
else{
// para los botones de borrar
$(this).bind('click', update_tiradas_alternativas);
}
});*/
})();
async function actualizar_tiradas_alternativas(){
if(tableTiradas !== undefined && tableTiradas.rows().count() > 0){
// se obtiene la primera columna de la tabla de tiradas
const data = tableTiradas.rows().data().toArray();
// se borra la tabla de tiradas
tableTiradas.clear().draw();
const tiradas = data.map(row => row.tirada);
// por cada tirada, se añade una fila a la tabla de tiradas
await tiradas.forEach(async function(tirada){
await add_tirada_alternativa(tirada);
});
}
}
// Evento de añadir una tirada alternativa
@ -229,55 +173,6 @@ function getLomoExterior(){
}
// Inicialización de la tabla de tiradas
function initTableTiradas() {
tableTiradas = $('#tableTiradas').DataTable({
"language": {
"url": window.datatable_lang_url
},
"paging": false,
"info": false,
"searching": false,
"ordering": true,
"autoWidth": false,
"responsive": true,
"columnDefs": [
{
orderable: false,
searchable: false,
targets: [lastColNr_tiradasAlt]
},
],
"columns": [
{ data: "tirada" },
{ data: 'coste_impresion' },
{ data: 'coste_envio' },
{ data: 'margen' ,
render: function ( data, type, row ) {
return data + '%';
}
},
{ data: 'total_pedido' },
{ data: 'precio_unidad' },
{
data: actionBtns_tiradasAlt,
className: 'row-edit dt-center'
}
],
order: [[0, 'asc']]
});
}
// Evento de borrado de una fila de la tabla de tiradas
$(document).on('click', '.btn-delete-tirada', function (e) {
const row = $(this).closest('tr');
tableTiradas.row(row)
.remove()
.draw();
showBreadCrumbSaveButton(true);
})
// Función para usar la tirada alternativa como tirada principal
$(document).on('click', '.comfirm-tirada-alt', function (e) {
@ -340,57 +235,9 @@ function filterData(data, keys) {
}
// Función para obtener la merma de la tirada alternativa
function get_merma_tirada_alternativa(tirada){
var merma = 0
if(tirada>parseInt($('#POD').val())){
merma = tirada*0.1<=30 ? tirada*0.1 : 30
}
else{
merma_lineas = []
$('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
var rowData = this.data();
if(rowData.row_id != 'lp_guardas' && rowData.row_id != 'lp_cubierta' && rowData.row_id != 'lp_sobrecubierta'){
const formas_linea = $('#isCosido').val()==0?parseInt(rowData.formas):parseInt(rowData.formas)/2
if(formas_linea > tirada)
merma_lineas.push(formas_linea-tirada)
else
merma_lineas.push(tirada%formas_linea)
}
})
if(merma_lineas.length>0)
merma = Math.max(...merma_lineas)
else
merma = 0
}
return merma;
}
function fill_tiradas_alternativas(){
tableTiradas.clear().draw();
const text = $('#tirada_alternativa_json_data').val()
if(text.length>0){
const data = JSON.parse(text);
if(data.length>0){
$.each(data, function(key, value) {
tableTiradas.row.add({
tirada: value.tirada,
coste_impresion: value.coste_impresion,
coste_envio: value.coste_envio,
margen: value.margen,
total_pedido: value.total_pedido,
precio_unidad: value.precio_unidad,
}).draw(false);
});
}
}
}

View File

@ -30,7 +30,7 @@
<th><?= lang('Presupuestos.tiradaMargen') ?></th>
<th><?= lang('Presupuestos.totalPedido') ?></th>
<th><?= lang('Presupuestos.precioUnidad') ?></th>
<th></th>
<th style="min-width: 80px;"></th>
</tr>
</thead>
@ -48,21 +48,6 @@
</div> <!-- //.accordion-item -->
</div> <!-- //.accordion -->
<!------------------------------------------------------->
<!-- Código JS comportamiento ?????. -->
<!------------------------------------------------------->
<?= $this->section("additionalInlineJs") ?>
/* window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json";
window.datatable_TA_url = "<?= route_to('dataTableOfPresupuestoTiradasAlternativas') ?>";
window.get_tirada_url = "<?= route_to('getTiradaData') ?>";
window.error_lang_tirada_alt_duplicada = "<?= lang('Presupuestos.errores.tirada_alt_duplicada') ?>";
window.error_lang_tirada_alt_tipo = "<?= lang('Presupuestos.errores.tirada_alt_tipo') ?>";
*/
<?= $this->endSection() ?>

View File

@ -29,6 +29,7 @@
<input readonly hidden id="lomo_minimo_fresado_cosido" value="<?= $lomo_minimo_fresado_cosido ?>"></input>
<input readonly hidden id="pod" value="<?= $POD ?>"></input>
<input readonly hidden id="c" value="<?= $clienteId ?>"></input>
<input readonly hidden id="eb" value="<?= $eb ?>"></input>
<!-- Create Deal Wizard -->
<div id="wizard-presupuesto-cliente" class="bs-stepper vertical mt-2 linear">