mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
arraglado bug tarifas cliente
This commit is contained in:
@ -153,7 +153,7 @@ class ClientePreciosModel extends \App\Models\BaseModel
|
|||||||
|
|
||||||
// Se cargan los valores de la plantilla
|
// Se cargan los valores de la plantilla
|
||||||
$plantillaModel = model('App\Models\Clientes\ClientePlantillaPreciosLineasModel');
|
$plantillaModel = model('App\Models\Clientes\ClientePlantillaPreciosLineasModel');
|
||||||
$values = $plantillaModel->getResource($plantilla_id)->get()->getResultObject();
|
$values = $plantillaModel->getResource([],$plantilla_id)->get()->getResultObject();
|
||||||
foreach ($values as $value) {
|
foreach ($values as $value) {
|
||||||
$this->db
|
$this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
<div id="accordionTip1" class="accordion-collapse collapse show" data-bs-parent="#accordionPreciosLineas">
|
<div id="accordionTip1" class="accordion-collapse collapse show" data-bs-parent="#accordionPreciosLineas">
|
||||||
<div class="accordion-body">
|
<div class="accordion-body">
|
||||||
|
|
||||||
<button type="button" class="btn btn-primary d-none">
|
<button id="applyChanges" type="button" class="btn btn-primary">
|
||||||
Guardar y aplicar a clientes
|
Guardar y aplicar a clientes
|
||||||
</button>
|
</button>
|
||||||
<table id="tableOfPlantillasPreciosLineas" class="table table-striped table-hover" style="width: 100%;">
|
<table id="tableOfPlantillasPreciosLineas" class="table table-striped table-hover" style="width: 100%;">
|
||||||
@ -75,282 +75,6 @@
|
|||||||
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
<?php if (str_contains($formAction, 'edit')): ?>
|
|
||||||
<?= $this->section('additionalInlineJs') ?>
|
|
||||||
/*
|
|
||||||
const lastColNr_lineas = $('#tableOfPlantillasPreciosLineas').find("tr:first th").length - 1;
|
|
||||||
|
|
||||||
const url = window.location.href;
|
|
||||||
const url_parts = url.split('/');
|
|
||||||
|
|
||||||
let id = -1;
|
|
||||||
if(url_parts[url_parts.length-2] == 'edit'){
|
|
||||||
id = url_parts[url_parts.length-1];
|
|
||||||
}
|
|
||||||
|
|
||||||
const actionBtns_lineas = function(data) {
|
|
||||||
return `
|
|
||||||
<span class="edit"><a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2"
|
|
||||||
data-id="${data.id}"></i></a></span>
|
|
||||||
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal"
|
|
||||||
data-bs-target="#confirm2delete"></i></a>
|
|
||||||
<span class="cancel"></span>
|
|
||||||
`;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
const tipo_linea = [
|
|
||||||
{label:'<?= lang('ClientePrecios.interior') ?>', value:'interior'},
|
|
||||||
{label:'<?= lang('ClientePrecios.cubierta') ?>', value: 'cubierta'},
|
|
||||||
{label:'<?= lang('ClientePrecios.sobrecubierta') ?>', value: 'sobrecubierta'}
|
|
||||||
];
|
|
||||||
|
|
||||||
const tipo_maquina = [
|
|
||||||
{label: '<?= lang('ClientePrecios.toner') ?>', value:'toner'},
|
|
||||||
{label: '<?= lang('ClientePrecios.inkjet') ?>', value:'inkjet'},
|
|
||||||
];
|
|
||||||
|
|
||||||
const tipo_impresion = [
|
|
||||||
{label: '<?= lang('ClientePrecios.negro') ?>', value:'negro'},
|
|
||||||
{label: '<?= lang('ClientePrecios.negrohq') ?>', value:'negrohq'},
|
|
||||||
{label: '<?= lang('ClientePrecios.color') ?>', value:'color'},
|
|
||||||
{label: '<?= lang('ClientePrecios.colorhq') ?>', value:'colorhq'},
|
|
||||||
];
|
|
||||||
|
|
||||||
var editor = new $.fn.dataTable.Editor( {
|
|
||||||
ajax: {
|
|
||||||
url: "<?= route_to('editorOfClienteplantillaprecioslineas') ?>",
|
|
||||||
headers: {
|
|
||||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
table : "#tableOfPlantillasPreciosLineas",
|
|
||||||
idSrc: 'id',
|
|
||||||
fields: [ {
|
|
||||||
name: "tipo",
|
|
||||||
type: "select",
|
|
||||||
options: tipo_linea
|
|
||||||
}, {
|
|
||||||
name: "tipo_maquina",
|
|
||||||
type: "select",
|
|
||||||
options: tipo_maquina
|
|
||||||
}, {
|
|
||||||
name: "tipo_impresion",
|
|
||||||
type: "select",
|
|
||||||
options: tipo_impresion
|
|
||||||
}, {
|
|
||||||
name: "tiempo_min"
|
|
||||||
}, {
|
|
||||||
name: "tiempo_max"
|
|
||||||
}, {
|
|
||||||
name: "precio_hora"
|
|
||||||
}, {
|
|
||||||
name: "margen"
|
|
||||||
}, {
|
|
||||||
name: "user_updated_id",
|
|
||||||
type:'hidden',
|
|
||||||
|
|
||||||
}, {
|
|
||||||
name: "updated_at",
|
|
||||||
type:'hidden',
|
|
||||||
|
|
||||||
}, {
|
|
||||||
"name": "plantilla_id",
|
|
||||||
"type": "hidden"
|
|
||||||
},{
|
|
||||||
"name": "deleted_at",
|
|
||||||
"type": "hidden"
|
|
||||||
},{
|
|
||||||
"name": "is_deleted",
|
|
||||||
"type": "hidden"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
} );
|
|
||||||
|
|
||||||
editor.on( 'preSubmit', function ( e, d, type ) {
|
|
||||||
if ( type === 'create'){
|
|
||||||
d.data[0]['plantilla_id'] = id;
|
|
||||||
}
|
|
||||||
else if(type === 'edit' ) {
|
|
||||||
for (v in d.data){
|
|
||||||
d.data[v]['plantilla_id'] = id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
editor.on( 'postSubmit', function ( e, json, data, action ) {
|
|
||||||
|
|
||||||
yeniden(json.<?= csrf_token() ?>);
|
|
||||||
|
|
||||||
const domain = window.location.origin
|
|
||||||
fetch(domain + "/clientes/clienteprecios/update/" + -1 , {
|
|
||||||
method: "POST",
|
|
||||||
body: JSON.stringify({
|
|
||||||
plantilla_id: id,
|
|
||||||
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v
|
|
||||||
}),
|
|
||||||
headers: {
|
|
||||||
"Content-type": "application/json; charset=UTF-8"
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
editor.on( 'submitSuccess', function ( e, json, data, action ) {
|
|
||||||
|
|
||||||
theTable.clearPipeline();
|
|
||||||
theTable.draw();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
var theTable = $('#tableOfPlantillasPreciosLineas').DataTable( {
|
|
||||||
serverSide: true,
|
|
||||||
processing: true,
|
|
||||||
autoWidth: true,
|
|
||||||
responsive: true,
|
|
||||||
lengthMenu: [ 10, 25, 50, 100],
|
|
||||||
order: [[ 0, "asc" ], [ 1, "asc" ], [ 2, "asc" ], [ 3, "asc" ]],
|
|
||||||
pageLength: 50,
|
|
||||||
lengthChange: true,
|
|
||||||
searching: false,
|
|
||||||
paging: true,
|
|
||||||
info: false,
|
|
||||||
dom: '<"mt-4"><"float-end"B><"float-start"l>
|
|
||||||
<t><"mt-4 mb-3"p>',
|
|
||||||
ajax : $.fn.dataTable.pipeline( {
|
|
||||||
url: '<?= route_to('dataTableOfClientesplantillaprecioslineas') ?>',
|
|
||||||
data: {
|
|
||||||
plantilla_id: id,
|
|
||||||
},
|
|
||||||
method: 'POST',
|
|
||||||
headers: {'X-Requested-With': 'XMLHttpRequest'},
|
|
||||||
async: true,
|
|
||||||
}),
|
|
||||||
columns: [
|
|
||||||
{ 'data': 'tipo' ,
|
|
||||||
'render': function ( data, type, row, meta ) {
|
|
||||||
if(data=='interior')
|
|
||||||
return '<?= lang('ClientePrecios.interior') ?>';
|
|
||||||
else if(data=='cubierta')
|
|
||||||
return '<?= lang('ClientePrecios.cubierta') ?>';
|
|
||||||
else if(data=='sobrecubierta')
|
|
||||||
return '<?= lang('ClientePrecios.sobrecubierta') ?>';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'data': 'tipo_maquina',
|
|
||||||
'render': function ( data, type, row, meta ) {
|
|
||||||
if(data=='toner')
|
|
||||||
return '<?= lang('ClientePrecios.toner') ?>';
|
|
||||||
else if(data=='inkjet')
|
|
||||||
return '<?= lang('ClientePrecios.inkjet') ?>';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'data': 'tipo_impresion',
|
|
||||||
'render': function ( data, type, row, meta ) {
|
|
||||||
if(data=='negro')
|
|
||||||
return '<?= lang('ClientePrecios.negro') ?>';
|
|
||||||
else if(data=='negrohq')
|
|
||||||
return '<?= lang('ClientePrecios.negrohq') ?>';
|
|
||||||
else if(data=='color')
|
|
||||||
return '<?= lang('ClientePrecios.color') ?>';
|
|
||||||
else if(data=='colorhq')
|
|
||||||
return '<?= lang('ClientePrecios.colorhq') ?>';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'data': 'tiempo_min' },
|
|
||||||
{ 'data': 'tiempo_max' },
|
|
||||||
{ 'data': 'precio_hora' },
|
|
||||||
{ 'data': 'margen' },
|
|
||||||
{ 'data': 'user_updated_id',
|
|
||||||
'render': function ( data, type, row, meta ) {
|
|
||||||
return row.user_updated
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ 'data': 'updated_at' },
|
|
||||||
{
|
|
||||||
data: actionBtns_lineas,
|
|
||||||
className: 'row-edit dt-center'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
columnDefs: [
|
|
||||||
{
|
|
||||||
orderable: false,
|
|
||||||
searchable: false,
|
|
||||||
targets: [lastColNr_lineas]
|
|
||||||
},
|
|
||||||
{"orderData": [ 0, 1 ], "targets": 0 },
|
|
||||||
|
|
||||||
],
|
|
||||||
language: {
|
|
||||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
|
||||||
},
|
|
||||||
buttons: [
|
|
||||||
{
|
|
||||||
extend: 'collection',
|
|
||||||
text: 'Exportar',
|
|
||||||
buttons:[
|
|
||||||
'copy', 'csv', 'excel', 'print', {
|
|
||||||
extend: 'pdfHtml5',
|
|
||||||
orientation: 'landscape',
|
|
||||||
pageSize: 'A4'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
className: 'btn btn-primary me-sm-3 me-1',
|
|
||||||
extend: "createInline",
|
|
||||||
editor: editor,
|
|
||||||
formOptions: {
|
|
||||||
submitTrigger: -1,
|
|
||||||
submitHtml: '<a href="javascript:void(0);"><i class="ti ti-device-floppy"></i></a>'
|
|
||||||
}
|
|
||||||
} ]
|
|
||||||
} );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Activate an inline edit on click of a table cell
|
|
||||||
$('#tableOfPlantillasPreciosLineas').on( 'click', 'tbody span.edit', function (e) {
|
|
||||||
editor.inline(
|
|
||||||
theTable.cells(this.parentNode.parentNode, '*').nodes(),
|
|
||||||
{
|
|
||||||
cancelHtml: '<a href="javascript:void(0);"><i class="ti ti-x"></i></a>',
|
|
||||||
cancelTrigger: 'span.cancel',
|
|
||||||
submitHtml: '<a href="javascript:void(0);"><i class="ti ti-device-floppy"></i></a>',
|
|
||||||
submitTrigger: 'span.edit',
|
|
||||||
submit: 'allIfChanged'
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} );
|
|
||||||
|
|
||||||
|
|
||||||
// Delete row
|
|
||||||
$(document).on('click', '.btn-delete', function(e) {
|
|
||||||
$(".btn-remove").attr('data-id', $(this).attr('data-id'));
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('click', '.btn-remove', function(e) {
|
|
||||||
const dataId = $(this).attr('data-id');
|
|
||||||
const row = $(this).closest('tr');
|
|
||||||
if ($.isNumeric(dataId)) {
|
|
||||||
$.ajax({
|
|
||||||
url: `/clientes/clienteplantillaprecioslineas/delete/${dataId}`,
|
|
||||||
method: 'GET',
|
|
||||||
}).done((data, textStatus, jqXHR) => {
|
|
||||||
$('#confirm2delete').modal('toggle');
|
|
||||||
theTable.clearPipeline();
|
|
||||||
theTable.row($(row)).invalidate().draw();
|
|
||||||
popSuccessAlert(data.msg ?? jqXHR.statusText);
|
|
||||||
}).fail((jqXHR, textStatus, errorThrown) => {
|
|
||||||
popErrorAlert(jqXHR.responseJSON.messages.error)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
<?= $this->endSection() ?>
|
|
||||||
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<?= $this->section('css') ?>
|
<?= $this->section('css') ?>
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="<?= site_url('themes/vuexy/css/datatables-editor/editor.dataTables.min.css') ?>">
|
href="<?= site_url('themes/vuexy/css/datatables-editor/editor.dataTables.min.css') ?>">
|
||||||
|
|||||||
@ -267,26 +267,36 @@ class tarifasClienteView {
|
|||||||
|
|
||||||
#changePlantilla() {
|
#changePlantilla() {
|
||||||
|
|
||||||
self = this;
|
const self = this;
|
||||||
const data = $('#plantillas').select2('data');
|
const data = $('#plantillas').select2('data');
|
||||||
if (data.length > 0) {
|
if (data.length > 0) {
|
||||||
const id = data[0].id;
|
if (data[0].id == 0) {
|
||||||
new Ajax(
|
self.#borrarPlantillaTarifa(self.clienteId);
|
||||||
'/clienteprecios/changeplantilla',
|
self.tableTarifas.table.clearPipeline();
|
||||||
{
|
self.tableTarifas.table.draw();
|
||||||
'cliente_id': self.clienteId,
|
|
||||||
'plantilla_id': id,
|
}
|
||||||
[this.csrf_token]: this.csrf_hash
|
else {
|
||||||
},
|
|
||||||
{},
|
|
||||||
() => {
|
const id = data[0].id;
|
||||||
self.tableTarifas.table.clearPipeline();
|
new Ajax(
|
||||||
self.tableTarifas.table.draw();
|
'/clienteprecios/changeplantilla',
|
||||||
},
|
{
|
||||||
(error) => {
|
'cliente_id': self.clienteId,
|
||||||
console.log(error);
|
'plantilla_id': id,
|
||||||
}
|
[this.csrf_token]: this.csrf_hash
|
||||||
).post();
|
},
|
||||||
|
{},
|
||||||
|
() => {
|
||||||
|
self.tableTarifas.table.clearPipeline();
|
||||||
|
self.tableTarifas.table.draw();
|
||||||
|
},
|
||||||
|
(error) => {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
).post();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,8 @@ class PlantillasTarifasClienteForm {
|
|||||||
this.csrf_token = getToken();
|
this.csrf_token = getToken();
|
||||||
this.csrf_hash = $('#mainContainer').find('input[name="' + this.csrf_token + '"]').val();
|
this.csrf_hash = $('#mainContainer').find('input[name="' + this.csrf_token + '"]').val();
|
||||||
|
|
||||||
|
this.btnApply = $('#btnApply');
|
||||||
|
|
||||||
this.tablePlantilla = null;
|
this.tablePlantilla = null;
|
||||||
this.deleteModal = null;
|
this.deleteModal = null;
|
||||||
|
|
||||||
@ -22,6 +24,7 @@ class PlantillasTarifasClienteForm {
|
|||||||
this.ajaxEditor = null;
|
this.ajaxEditor = null;
|
||||||
|
|
||||||
this.changedRows = [];
|
this.changedRows = [];
|
||||||
|
this.deletedRows = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
@ -50,7 +53,8 @@ class PlantillasTarifasClienteForm {
|
|||||||
submitHtml: '<a href="javascript:void(0);"><i class="ti ti-device-floppy"></i></a>',
|
submitHtml: '<a href="javascript:void(0);"><i class="ti ti-device-floppy"></i></a>',
|
||||||
cancelTrigger: row.find('span.cancel')[0],
|
cancelTrigger: row.find('span.cancel')[0],
|
||||||
submitTrigger: row.find('span.edit')[0],
|
submitTrigger: row.find('span.edit')[0],
|
||||||
submit: 'allIfChanged'
|
submit: 'allIfChanged',
|
||||||
|
drawType: 'none'
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -123,47 +127,14 @@ class PlantillasTarifasClienteForm {
|
|||||||
|
|
||||||
this.ajaxEditor.init();
|
this.ajaxEditor.init();
|
||||||
|
|
||||||
|
|
||||||
this.localEditor.editor.on('postEdit', function (e, json, data) {
|
this.localEditor.editor.on('postEdit', function (e, json, data) {
|
||||||
|
|
||||||
/*console.log(self.tablePlantilla.table.row(0).data());
|
|
||||||
self.tablePlantilla.table.rows().every( function ( rowIdx ) {
|
|
||||||
var rowData = this.data();
|
|
||||||
if(rowData.id == data.id){
|
|
||||||
self.tablePlantilla.table.row(rowIdx).data({
|
|
||||||
id: data.id,
|
|
||||||
tipo: 'interior', // 'interior', 'cubierta', etc.
|
|
||||||
tipo_maquina: 'toner', // 'toner', 'inkjet'
|
|
||||||
tipo_impresion: 'negro', // 'negro', 'color', etc.
|
|
||||||
tiempo_min: 0,
|
|
||||||
tiempo_max: 1,
|
|
||||||
precio_hora: 1,
|
|
||||||
margen: 100,
|
|
||||||
user_updated: 'yo',
|
|
||||||
updated_at: '200000'
|
|
||||||
}).draw(false);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
//self.tablePlantilla.table.row(0).data(data2).draw(false);
|
|
||||||
|
|
||||||
/*self.tablePlantilla.table.row(0).data({
|
|
||||||
id: 1,
|
|
||||||
tipo: 'interior', // 'interior', 'cubierta', etc.
|
|
||||||
tipo_maquina: 'toner', // 'toner', 'inkjet'
|
|
||||||
tipo_impresion: 'negro', // 'negro', 'color', etc.
|
|
||||||
tiempo_min: 0,
|
|
||||||
tiempo_max: 1,
|
|
||||||
precio_hora: 1,
|
|
||||||
margen: 100,
|
|
||||||
user_updated: 'yo',
|
|
||||||
updated_at: '200000'
|
|
||||||
}).draw(false);*/
|
|
||||||
let row = self.tablePlantilla.table.row('#' + data.id);
|
let row = self.tablePlantilla.table.row('#' + data.id);
|
||||||
|
|
||||||
if (row.length) {
|
if (row.length) {
|
||||||
console.log('Data:', data)
|
|
||||||
let rowData = row.data();
|
let rowData = row.data();
|
||||||
console.log('Datos de la fila:', rowData);
|
|
||||||
|
|
||||||
// Actualizar los datos de la fila
|
// Actualizar los datos de la fila
|
||||||
self.tablePlantilla.table.row('#' + data.id).data({
|
self.tablePlantilla.table.row('#' + data.id).data({
|
||||||
id: data.id,
|
id: data.id,
|
||||||
@ -174,41 +145,15 @@ class PlantillasTarifasClienteForm {
|
|||||||
tiempo_max: data.tiempo_max,
|
tiempo_max: data.tiempo_max,
|
||||||
precio_hora: data.precio_hora,
|
precio_hora: data.precio_hora,
|
||||||
margen: "150",
|
margen: "150",
|
||||||
user_updated_id: data.user_updated_id,
|
user_updated_id: data.user_updated,
|
||||||
user_updated: data.user_updated,
|
user_updated: data.user_updated,
|
||||||
updated_at: data.updated_at
|
updated_at: data.updated_at
|
||||||
}).draw(true); // Usar invalidate() si es necesario
|
});
|
||||||
rowData = row.data();
|
|
||||||
console.log('Datos de la fila actualizados:', rowData);
|
|
||||||
} else {
|
|
||||||
console.warn('No se encontró la fila con ID row_' + data.id);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
if (row.length > 0) {
|
|
||||||
self.tablePlantilla.table.row(row[0]).data({
|
|
||||||
id: data.id,
|
|
||||||
tipo: data.tipo, // 'interior', 'cubierta', etc.
|
|
||||||
tipo_maquina: data.tipo_maquina, // 'toner', 'inkjet'
|
|
||||||
tipo_impresion: data.tipo_impresion, // 'negro', 'color', etc.
|
|
||||||
tiempo_min: data.tiempo_min,
|
|
||||||
tiempo_max: data.tiempo_max,
|
|
||||||
precio_hora: data.precio_hora,
|
|
||||||
margen: data.margen,
|
|
||||||
user_updated: data.user_updated,
|
|
||||||
updated_at: data.updated_at
|
|
||||||
}).invalidate().draw(false);
|
|
||||||
|
|
||||||
console.log('---');
|
|
||||||
console.log(self.tablePlantilla.table.row(row[0]).data())
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
// check if this id exists
|
||||||
|
|
||||||
// check if this id exists
|
|
||||||
if (!self.changedRows.includes(data.id))
|
if (!self.changedRows.includes(data.id))
|
||||||
self.changedRows.push(data.id);
|
self.changedRows.push(data.id);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user