trabajando en lineas presupuesto

This commit is contained in:
2024-12-27 18:10:35 +01:00
parent ef58fe7209
commit 1ccade47a3
12 changed files with 974 additions and 766 deletions

View File

@ -582,6 +582,7 @@ $routes->group('presupuestoadmin', ['namespace' => 'App\Controllers\Presupuestos
$routes->get('cargar/(:any)', 'Presupuestoadmin::cargar/$1');
$routes->post('comparadorinterior', 'Presupuestoadmin::obtenerComparadorInterior');
$routes->post('comparadorexteriores', 'Presupuestoadmin::obtenerComparadorExteriores');
$routes->post('comparadorguardas', 'Presupuestoadmin::obtenerComparadorGuardas');
$routes->get('papelgenerico', 'Presupuestoadmin::getPapelGenerico');
$routes->get('papelgramaje', 'Presupuestoadmin::getGramaje');
});

View File

@ -538,6 +538,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
$item['papel_nombre'] = $modelPapelGenerico->getNombre($item['papel_id'])['nombre'];
}
$data['comparador']['posPagColor'] = $presupuesto->comp_pos_paginas_color;
$data['comparador']['lomoRedondo'] = $presupuesto->lomo_redondo;
$data['comparador']['cabezada'] = $presupuesto->cabezada;
/*
@ -689,8 +691,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
'papel_generico' => $papel_generico,
'gramaje' => $gramaje,
'paginas_color' => $paginas_color,
'isColor' => $isColor,
'isHq' => $isHq,
'isColor' => 1, // cubierta y sobre cubierta colorhq
'isHq' => 1, // cubierta y sobre cubierta colorhq
'tipo_impresion_id' => $tipo_impresion_id,
'uso' => $uso,
'lomoRedondo' => $lomoRedondo
@ -714,8 +716,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
'papel_generico' => $papel_generico,
'gramaje' => $gramaje,
'paginas_color' => $paginas_color,
'isColor' => $isColor,
'isHq' => $isHq,
'isColor' => 1, // cubierta y sobre cubierta colorhq
'isHq' => 1, // cubierta y sobre cubierta colorhq
'tipo_impresion_id' => $tipo_impresion_id,
'uso' => $uso
);
@ -737,6 +739,58 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController
}
public function obtenerComparadorGuardas()
{
if ($this->request->isAJAX()) {
$cliente_id = $this->request->getPost('cliente_id');
$datosPedido = $this->request->getPost('datosPedido');
$papel_generico = $this->request->getPost('papel_generico');
$gramaje = $this->request->getPost('gramaje');
$paginas_color = $this->request->getPost('paginas_color');
$isColor = $this->request->getPost('isColor');
$isHq = $this->request->getPost('isHq');
$tipo_impresion_id = $this->request->getPost('tipo_impresion_id');
$uso = $this->request->getPost('uso');
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico
// y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral
// o wire-o tapa dura, las guardas se imprimen como hojas sueltas
if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
$datosPedido['isCosido'] = true;
} else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) {
$datosPedido['isCosido'] = false;
}
$datosPedido['paginas_impresion'] = $datosPedido['paginas'];
$data = array(
'cliente_id' => $cliente_id,
'datosPedido' => (object) $datosPedido,
'papel_generico' => $papel_generico,
'gramaje' => $gramaje,
'papelInteriorDiferente' => true,
'paginas_color' => $paginas_color,
'isColor' => $isColor,
'isHq' => $isHq,
'tipo_impresion_id' => $tipo_impresion_id,
'uso' => $uso
);
$lineas = PresupuestoClienteService::obtenerGuardas($data, true);
return $this->respond(
[
'status' => 1,
'data' => $lineas
]
);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
public function datatable()
{
if ($this->request->isAJAX()) {

View File

@ -1205,9 +1205,17 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$data['datosGenerales']['retractilado5'] = $presupuesto->retractilado5;
$datos_papel = $this->obtenerDatosPapel($presupuesto->id);
$data['interior'] = $datos_papel['interior'] ? $datos_papel['interior'] : [];
if (array_key_exists('interior', $datos_papel)) {
$data['interior'] = $datos_papel['interior'];
} else {
$data['interior'] = [];
}
$data['cubierta'] = $datos_papel['cubierta'] ? $datos_papel['cubierta'] : [];
if (array_key_exists('cubierta', $datos_papel)) {
$data['cubierta'] = $datos_papel['cubierta'];
} else {
$data['cubierta'] = [];
}
$data['cubierta']['tapa'] = $this->obtenerTipoTapa($presupuesto->tipo_impresion_id ?? null);
$data['cubierta']['lomoRedondo'] = $presupuesto->lomo_redondo ? 1 : 0;
$data['cubierta']['solapas'] = $presupuesto->solapas ? 1 : 0;

View File

@ -186,7 +186,7 @@ class PresupuestoClienteService extends BaseService
return $lineas_sobrecubierta;
}
public static function obtenerGuardas($data)
public static function obtenerGuardas($data, $return_raw=false)
{
$uso = $data['uso'];
@ -220,6 +220,14 @@ class PresupuestoClienteService extends BaseService
}
if (count($lineas_guardas) > 0) {
if($return_raw){
$lineas_guardas = array_values(array_unique($lineas_guardas, SORT_REGULAR));
return[
'guardas' => $lineas_guardas
];
}
usort(
$lineas_guardas,
function ($a, $b) {

View File

@ -222,27 +222,46 @@
</div>
<?php if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3): ?>
<div class="col-md-12 col-lg-2 px-4">
<div class="col-md-12 col-lg-2 px-4">
</div>
</div>
<div class="col-md-12 col-lg-2 px-4">
<label id="label_compLomoRedondo" for="compLomoRedondo" class="form-label">
<?= lang('Presupuestos.lomoRedondo') ?>*
</label>
<select id="compLomoRedondo" name="lomo_redondo" class="form-control select2bs2 comp_cubierta_items"
style="width: 100%;">
<option value="2">
<p>
<?= lang('Presupuestos.no') ?>
</p>
</option>
<option value="4">
<p>
<?= lang('Presupuestos.si') ?>
</p>
</option>
</select>
</div>
<div class="col-md-12 col-lg-2 px-4">
<label id="label_compLomoRedondo" for="compLomoRedondo" class="form-label">
<?= lang('Presupuestos.lomoRedondo') ?>*
</label>
<select id="compLomoRedondo" name="lomo_redondo"
class="form-control select2bs2 comp_cubierta_items" style="width: 100%;">
<option value="0">
<p>
<?= lang('Presupuestos.no') ?>
</p>
</option>
<option value="1">
<p>
<?= lang('Presupuestos.si') ?>
</p>
</option>
</select>
</div>
<div class="col-md-12 col-lg-2 px-4">
<label for="cabezada" class="form-label">
<?= lang('Presupuestos.cabezada') ?>
</label>
<select class="form-select select2bs2" id="cabezada" name="cabezada">
<option value="WHI">
<?= lang('Presupuestos.blanca') ?>
</option>
<option value="GRE">
<?= lang('Presupuestos.verde') ?>
</option>
<option value="BLUE">
<?= lang('Presupuestos.azul') ?>
</option>
<option value="REDYEL">
<?= lang('Presupuestos.rojaAmarilla') ?>
</option>
</select>
</div>
<?php endif; ?>
<div>
<hr class="my-1">
@ -322,9 +341,11 @@
</select>
</div>
<div class="col-md-12 col-lg-2 px-4">
<input readonly type="text" id="compGramajeGuardas" name="comp_gramaje_guardas" placeholder="0"
maxLength="5" class="form-control comp_guardas_items" value='170'>
<select id="compGramajeGuardas" name="comp_gramaje_guardas"
class="form-control select2bs2 comp_guardas_items" style="width: 100%;">
</select>
</div>
<div>
<hr class="my-1">
</div>

View File

@ -652,270 +652,8 @@ function format(d) {
return $(value).toArray();
}
const lastColNr_lp = $('#tableLineasPresupuesto').find("tr:first th").length - 1;
const actionBtns_lp = function(data) {
return `
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-lp mx-2" data-id="${data.row_id}"></i></a>
`;
};
var tableLineasPresupuesto = new DataTable('#tableLineasPresupuesto',{
scrollX: true,
searching: false,
paging: false,
info: false,
ordering: true,
responsive: true,
select: false,
rowId: 'row_id',
language: {
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
},
columnDefs: [
{
targets: 0,
className: 'dt-control',
orderable: false,
data: null,
defaultContent: ''
},
{
targets: [1,2,3,4,5,6,7,8,9],
orderable: false,
visible: false,
},
{
targets: [11,12,13,14,15,16,17,18,19,20],
orderable: false,
},
{
targets: [10],
orderable: true,
visible: false,
},
{
orderable: false,
searchable: false,
targets: [lastColNr_lp]
},
],
columns: [
{data: null},
{data: 'tarifa_impresion_id'},
{data: 'maquina_ancho'},
{data: 'maquina_alto'},
{data: 'maquina_impresion_ancho'},
{data: 'maquina_impresion_alto'},
{data: 'formas'},
{data: 'formas_v'},
{data: 'formas_h'},
{data: 'formas_orientacion'},
{data: 'position',
type: "num" ,
render: function (data, type, row, meta){
if(row.row_id.includes('_bn')){
return 0;
}
else if(row.row_id.includes('_color')){
return 1;
}
else if(row.row_id.includes('_cubierta')){
return 2;
}
else if(row.row_id.includes('_sobrecubierta')){
return 3;
}
else if(row.row_id.includes('_guardas')){
return 4;
}
}
},
{data: 'icon',
render: function ( data, type, row, meta ){
return '<img style="padding: 0; margin:0;" src="' + data + '" />'
}
},
{data: 'paginas',
render: function ( data, type, row, meta ) {
if(row.row_id != "lp_cubierta" && row.row_id != "lp_sobrecubierta" && row.row_id != "lp_guardas")
return '<td class="lp-td"><input id="' + row.row_id + '_paginas" name="' + row.row_id + '_paginas" class="lp-cell lp-input paginas-lp" type="text" value="' + data + '"></td>';
else if(row.row_id == "lp_cubierta"){
select = '<select id="lp_cubierta_paginas" name="comp_paginas_cubierta" class="form-control form-select-sm lp-cell lp-select" style="min-width:50px;">'
if(data==2){
select += '<option value="2" selected >'
}
else{
select += '<option value="2">'
}
select +='<p>' + window.Presupuestos.unaCara + '</p>'
select += '</option>'
if(data==4){
select += '<option value="4" selected >'
}
else{
select += '<option value="4">'
}
select +='<p>' + window.Presupuestos.dosCaras + '</p>'
select += '</option>'
select += '</select>'
return select;
}
else if(row.row_id == "lp_guardas"){
select = '<select id="lp_guardas_paginas" name="comp_paginas_guardas" class="form-control form-select-sm lp-cell lp-select" style="min-width:50px;">'
if(row.paginas_impresion==0){
select += '<option value="0" selected >'
}
else{
select += '<option value="0">'
}
select +='<p>' + window.Presupuestos.sinImpresion + '</p>'
select += '</option>'
if(row.paginas_impresion==4){
select += '<option value="4" selected >'
}
else{
select += '<option value="4">'
}
select +='<p>' + window.Presupuestos.unaCara + '</p>'
select += '</option>'
if(row.paginas_impresion==8){
select += '<option value="8" selected >'
}
else{
select += '<option value="8">'
}
select +='<p>' + window.Presupuestos.dosCaras + '</p>'
select += '</option>'
select += '</select>'
return select;
}
else{
return '';
}
}
},
{data: 'papel',
render: function ( data, type, row, meta ) {
var select = $('<select>')
.attr('id', row.row_id + '_papel')
.attr('name', row.row_id + '_papel')
.addClass('form-control form-select-sm lp-cell lp-select')
.css('min-width', '150px')
var papelList
if(row.row_id == 'lp_bn'){
papelList = window.papelGenericoNegroList
}
else if (row.row_id == 'lp_bnhq'){
papelList = window.papelGenericoNegroHQList
}
else if (row.row_id == 'lp_color'){
papelList = window.papelGenericoColorList
}
else if (row.row_id == 'lp_colorhq'){
papelList = window.papelGenericoColorHQList
}
else if (row.row_id == 'lp_cubierta'){
papelList = window.papelGenericoCubiertaList
}
else if (row.row_id == 'lp_sobrecubierta'){
papelList = window.papelGenericoSobrecubiertaList
}
else if (row.row_id == 'lp_guardas'){
papelList = window.papelGenericoGuardasList
}
else if (row.row_id == 'lp_rot_bn'){
papelList = window.papelGenericoRotativaNegroList
}
else if (row.row_id == 'lp_rot_color'){
papelList = window.papelGenericoRotativaColorList
}
papelList.forEach((element) => {
var option
if(element.id == data)
option = '<option value="'+element.id+'" selected>'+element.nombre+'</option>';
else
option = '<option value="'+element.id+'">'+element.nombre+'</option>';
select.append(option);
});
return select[0].outerHTML
}
},
{data: 'gramaje',
render: function ( data, type, row, meta ) {
var select = $('<select>')
.attr('id', row.row_id + '_gramaje')
.attr('name', row.row_id + '_gramaje')
.addClass('form-control form-select-sm lp-cell lp-select ' )//+ row.row_class + '-select')
.css('min-width', '40px')
var option = '<option value="" selected>'+ parseInt(data)+'</option>';
select.append(option);
return select[0].outerHTML
}
},
{data: 'papel_impresion',
render: function ( data, type, row, meta ) {
var select = $('<select>')
.attr('id', row.row_id + '_papelImpresion')
.attr('name', row.row_id + '_papelImpresion')
.addClass('form-control form-select-sm lp-cell lp-select ' + row.row_class + '-select')
.css('min-width', '150px')
var option = '<option value="' + row.papel_impresion_id+ '" selected>'+ data +'</option>';
select.append(option);
return select[0].outerHTML
}
},
{data: 'maquina',
render: function ( data, type, row, meta ) {
var select = $('<select>')
.attr('id', row.row_id + '_maquina')
.attr('name', row.row_id + '_maquina')
.addClass('form-control form-select-sm lp-cell lp-select ' + row.row_class + '-select')
.css('min-width', '110px')
var option = '<option value="' + row.maquina_id+ '" selected>'+ data +'</option>';
select.append(option);
return select[0].outerHTML
}
},
{data: 'tiempo',
render: function ( data, type, row, meta ) {
return '<td class="lp-td"><input id="' + row.row_id + '_tiempo" name="' + row.row_id + '_tiempo" readonly class="lp-cell lp-cell-disabled lp-input ' + row.row_class + '-input " type="text" value="' + data + '"></td>';
}
},
{data: 'lomo',
render: function ( data, type, row, meta ) {
return '<td class="lp-td"><input id="' + row.row_id + '_lomo" name="' + row.row_id + '_lomo" readonly class="lp-cell lp-cell-disabled lp-input ' + row.row_class + '-input" type="text" value="' + data + '"></td>';
}
},
{data: 'peso',
render: function ( data, type, row, meta ) {
return '<td class="lp-td"><input id="' + row.row_id + '_peso" name="' + row.row_id + '_peso" readonly class="lp-cell lp-cell-disabled lp-input ' + row.row_class + '-input" type="text" value="' + data + '"></td>';
}
},
{data: 'total_linea',
render: function ( data, type, row, meta ) {
return '<td class="lp-td"><input id="' + row.row_id + '_total_linea" name="' + row.row_id + '_total_linea" readonly class="lp-cell lp-cell-disabled lp-input ' + row.row_class + '-input " type="text" value="' + data + '"></td>';
}
},
{
data: actionBtns_lp,
className: 'row-edit dt-center'
}
],
"order": [ 10, 'asc' ]
});
tableLineasPresupuesto.on( 'draw.dt', function () {
checkPaginasPresupuesto()
@ -949,20 +687,7 @@ $(document).on('click', '.btn-delete-lp', function(e) {
// Add event listener for opening and closing details
tableLineasPresupuesto.on('click', 'td.dt-control', function (e) {
let tr = e.target.closest('tr');
let row = tableLineasPresupuesto.row(tr);
if (row.child.isShown()) {
// This row is already open - close it
row.child.hide();
}
else {
// Open this row
row.child(format(row.data())).show();
}
});
function processRowData(row, rowId, rowClass){

View File

@ -1,49 +0,0 @@
/*******************************
* Metodos
*******************************/
function selectGuardasLineas() {
$("#tableCompGuardas").DataTable().rows('.selected').deselect();
let value_total = 0.00;
if ($("#tableCompGuardas").DataTable().rows().count() > 0) {
$("#tableCompGuardas").DataTable().row(0).nodes().to$().toggleClass('selected');
value_total = parseFloat($("#tableCompGuardas").DataTable().rows(0).data()[0]['total'])
};
$('#total_comp_guardas').html(value_total.toFixed(2));
}
function fillGuardas(data) {
let sorted = data.lineas.sort(
(p1, p2) => ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) < (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ?
-1 : ((p1.fields.precio_pedido + p1.fields.precio_click_pedido) > (p2.fields.precio_pedido + p2.fields.precio_click_pedido)) ? 1 : 0);
sorted.forEach(function (linea) {
if (typeof linea.error == "undefined")
$('#tableCompGuardas').DataTable().row
.add(getRowFromLineaInt('guardas', linea))
.draw()
})
}