This commit is contained in:
jaimejimenezortega
2024-07-10 12:28:48 +02:00
parent b6420b7b8a
commit e18368e647
6 changed files with 130 additions and 16 deletions

View File

@ -25,8 +25,8 @@ class Test extends BaseController
$data = $model->obtenerLineasPedidoSinFacturar(999);
*/
$model = model("\App\Models\Facturas\FacturaModel");
$data = $model->getCantidadLineaPedidoFacturada(5);
$model = model("\App\Models\Facturas\FacturaLineaModel");
$data = $model->getResource(9)->get()->getResultObject();
echo('<pre>');
var_dump($data);

View File

@ -39,8 +39,9 @@ class FacturaLineaModel extends \App\Models\BaseModel {
"t1.id AS id, t1.factura_id AS factura_id,
t1.pedido_linea_impresion_id AS pedido_linea_impresion_id, t1.pedido_maquetacion_id AS pedido_maquetacion_id,
t1.descripcion AS concepto, t1.cantidad as unidades, t1.precio_unidad AS precio_unidad, t1.iva AS iva,
t1.base AS subtotal, t1.total_iva AS total_iva, t1.total AS total, t1.data AS data,"
t1.base AS subtotal, t1.total_iva AS total_iva, t1.total AS total, t1.data AS data, t2.pedido_id AS pedido_id"
)
->join("pedidos_linea t2", "t2.id = t1.pedido_linea_impresion_id", "left")
->where("t1.factura_id", $factura_id)
->where("t1.deleted_at", null);

View File

@ -116,12 +116,13 @@ $('#addNewPedidoImpresion').on('click', function(){
},
success: function(response) {
yeniden(response.<?= csrf_token() ?>);
$('#pedidoImpresion').val(null).trigger('change');
// Se actualiza la tabla de lineas de factura
$('#tableOfLineasFactura').DataTable().clearPipeline();
$('#tableOfLineasFactura').DataTable().ajax.reload();
// se ajustan el ancho de las columnas
$('#tableOfLineasFactura').DataTable().columns.adjust().draw();
$('#pedidoImpresion').val(null).trigger('change');
}
});

View File

@ -16,16 +16,44 @@
<th></th>
<th></th>
<th></th>
<th></th>
<th><?= lang('Facturas.unidades') ?></th>
<th><?= lang('Facturas.concepto') ?></th>
<th><?= lang('Facturas.precioUnidad') ?></th>
<th><?= lang('Facturas.iva') ?></th>
<th><?= lang('Facturas.subtotal') ?></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<td colspan="8" style="text-align:right">Subtotal:</td>
<td id="subtotal-sum"></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="8" style="text-align:right">I.V.A.:</td>
<td id="total-iva-sum"></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="8" style="text-align:right">Total:</td>
<td id="total-sum"></td>
<td></td>
<td></td>
</tr>
<tr>
<td colspan="8" style="text-align:right">Pendiente de pago:</td>
<td id="pendiente-pago"></td>
<td></td>
<td></td>
</tr>
</tfoot>
</table>
<?php if($facturaEntity->estado =='borrador') : ?>
<div class="row">
@ -50,6 +78,20 @@
<?=$this->section('additionalInlineJs') ?>
const actionBtns = function(data) {
// se comprueba si data es null
if (data.pedido_id === null) {
return `
<td class="text-right py-0 align-middle">
<div class="row mb-2">
<div class="btn-group btn-group-sm"><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}"></i></a>
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
</div>
</div>
</td>`;
}
else{
return `
<td class="text-right py-0 align-middle">
<div class="row mb-2">
@ -59,9 +101,10 @@ const actionBtns = function(data) {
</div>
</div>
<div class="row">
<button type="button" class="btn btn-sm btn-primary btn-view_pedido" data-id="${data.pedido_linea_impresion_id}">Ver pedido</button>
<button type="button" class="btn btn-sm btn-primary btn-view_pedido" data-id="${data.pedido_id}">Ver pedido</button>
</div>
</td>`;
}
};
var editor = new $.fn.dataTable.Editor( {
@ -123,6 +166,21 @@ editor.on( 'submitSuccess', function ( e, json, data, action ) {
});
// Activate an inline edit on click of a table cell
$('#tableOfLineasFactura').on( 'click', 'tbody span.edit', function (e) {
editor.inline(
tableLineas.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'
}
);
} );
var tableLineas = $('#tableOfLineasFactura').DataTable({
processing: true,
serverSide: true,
@ -133,11 +191,14 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({
{data: null, render: actionBtns},
{data: "pedido_linea_impresion_id"},
{data: "pedido_maquetacion_id"},
{data: "pedido_id"},
{data: "unidades"},
{data: "concepto"},
{data: "precio_unidad"},
{data: "iva"},
{data: "subtotal"}
{data: "subtotal"},
{data: "total_iva"},
{data: "total"},
],
order: [[1, "asc"]],
dom: 't',
@ -158,10 +219,52 @@ var tableLineas = $('#tableOfLineasFactura').DataTable({
},
{
visible: false,
targets: [1, 2]
targets: [1, 2, 3, 9, 10]
}
],
footerCallback: function (row, data, start, end, display) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function (i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
// Total over all pages
var totalSubtotal = api
.column(8)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
var totalIVA = api
.column(9)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
var totalTotal = api
.column(10)
.data()
.reduce(function (a, b) {
return intVal(a) + intVal(b);
}, 0);
// Update footer
$('#subtotal-sum').html(totalSubtotal.toFixed(2));
$('#total-iva-sum').html(totalIVA.toFixed(2));
$('#total-sum').html(totalTotal.toFixed(2));
// Assuming pendiente de pago is totalTotal - totalIVA for this example
var pendientePago = totalTotal ;//- totalIVA;
$('#pendiente-pago').html(pendientePago.toFixed(2));
}
});
@ -195,11 +298,11 @@ function deleteConfirmed(params){
})
}
$(document).on('click', '.btn-view_pedido', function(e) {
var pedido_id = $(this).data('id');
var url = '<?= route_to('editarPedido', ':id') ?>';
url = url.replace(':id', pedido_id );
$('.btn-view_pedido').on('click', function(e){
var pedido_linea_id = $(this).data('id');
var url = '<?= route_to('viewPedidoImpresion', ':id') ?>';
url = url.replace(':id', pedido_linea_id );
window.open(url, '_blank');
});

View File

@ -49,12 +49,22 @@
const lastColNr = $('#tableOfFacturas').find("tr:first th").length - 1;
const actionBtns = function(data) {
if(data.estado == 'borrador'){
return `
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
</div>
</td>`;
}
else{
return `
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<a href="javascript:void(0);"><i class="ti ti-eye ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
</div>
</td>`;
}
};
theTable = $('#tableOfFacturas').DataTable({

View File

@ -130,7 +130,6 @@ $(document).on('click', '.btn-view', function(e) {
var url = '<?= route_to('editarPresupuestoCliente2', ':id') ?>';
<?php endif; ?>
url = url.replace(':id', `${$(this).attr('data-id')}` );
console.log(url);
window.open(
url,
'_blank' // <- This is what makes it open in a new window.