con totales

This commit is contained in:
2025-03-31 17:31:56 +02:00
parent c5feb39e8b
commit fb2d12e318
4 changed files with 113 additions and 79 deletions

View File

@ -758,6 +758,7 @@ $routes->group('pedidos', ['namespace' => 'App\Controllers\Pedidos'], function (
$routes->get('xml/(:num)', 'Pedido::get_xml_pedido/$1', ['as' => 'getXMLPedido']); $routes->get('xml/(:num)', 'Pedido::get_xml_pedido/$1', ['as' => 'getXMLPedido']);
$routes->post('produccion/(:num)', 'Pedido::to_produccion/$1', ['as' => 'toProduccion']); $routes->post('produccion/(:num)', 'Pedido::to_produccion/$1', ['as' => 'toProduccion']);
$routes->get('pedidosCliente', 'Pedido::tablaClienteForm'); $routes->get('pedidosCliente', 'Pedido::tablaClienteForm');
$routes->get('getSumCliente/(:num)', 'Pedido::obtenerTotalPedidosCliente/$1');
}); });
$routes->resource('pedidos', ['namespace' => 'App\Controllers\Pedidos', 'controller' => 'Pedido', 'except' => 'show,new,create,update']); $routes->resource('pedidos', ['namespace' => 'App\Controllers\Pedidos', 'controller' => 'Pedido', 'except' => 'show,new,create,update']);

View File

@ -10,6 +10,7 @@ use App\Services\PedidoXMLService;
use App\Services\ProductionService; use App\Services\ProductionService;
use Hermawan\DataTables\DataTable; use Hermawan\DataTables\DataTable;
use CodeIgniter\I18n\Time; use CodeIgniter\I18n\Time;
use Error;
class Pedido extends \App\Controllers\BaseResourceController class Pedido extends \App\Controllers\BaseResourceController
{ {
@ -441,6 +442,29 @@ class Pedido extends \App\Controllers\BaseResourceController
return $result->toJson(returnAsObject: true) ; return $result->toJson(returnAsObject: true) ;
} }
public function obtenerTotalPedidosCliente($cliente_id){
$error = false;
$result = [
'total_impresion' => 0,
'total_maquetacion' => 0,
];
$data = $this->model
->where('presupuestos.cliente_id', $cliente_id)->whereNotIn('pedidos.estado', ['cancelado'])
->select('SUM(pedidos.total_precio) as total')
->join('pedidos_linea', 'pedidos_linea.pedido_id = pedidos.id')
->join('presupuestos', 'presupuestos.id = pedidos_linea.presupuesto_id')
->groupBy('presupuestos.cliente_id')->get()->getResultObject();
if(count($data) > 0){
$result['total_impresion'] = round(floatval($data[0]->total), 2);
}
else{
$error = true;
}
$result['total'] = $result['total_impresion'] + $result['total_maquetacion'];
return $this->respond(['status' => $error?'error':'success', 'totales' => $result]);
}
public function obtenerPedidosForFacturas(){ public function obtenerPedidosForFacturas(){
if ($this->request->isAJAX()) { if ($this->request->isAJAX()) {

View File

@ -2,17 +2,17 @@
<div class="col-2"> <div class="col-2">
<div class="form-group"> <div class="form-group">
<label for="acumuladoFacturacion"><?= lang('Pedidos.pedidosImpresion') ?></label> <label for="pedidosImpresion"><?= lang('Pedidos.pedidosImpresion') ?></label>
<input readonly type="text" class="form-control autonumeric-currency-totales" id="pedidosImpresion" <input readonly type="text" class="form-control autonumeric-currency-totales" id="pedidosImpresion"
name="pedidos_impresion"> name="pedidos_impresion">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="totalPendientePago"><?= lang('Pedidos.pedidosMaquetacion') ?></label> <label for="pedidosMaquetacion"><?= lang('Pedidos.pedidosMaquetacion') ?></label>
<input readonly type="text" class="form-control autonumeric-currency-totales" id="pedidosMaquetacion" <input readonly type="text" class="form-control autonumeric-currency-totales" id="pedidosMaquetacion"
name="pedidos_maquetacion"> name="pedidos_maquetacion">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="totalPendientePago" class="fw-bold"><?= lang('Pedidos.pedidosTotal') ?></label> <label for="totalPedidos" class="fw-bold"><?= lang('Pedidos.pedidosTotal') ?></label>
<input readonly type="text" class="form-control fw-bold autonumeric-currency-totales" id="totalPedidos" <input readonly type="text" class="form-control fw-bold autonumeric-currency-totales" id="totalPedidos"
name="total_pedidos"> name="total_pedidos">
</div> </div>

View File

@ -67,6 +67,24 @@ class ClientePedidos {
], ],
columns: datatableColumns, columns: datatableColumns,
}); });
new Ajax('/pedidos/getSumCliente/' + this.clienteId,
{},
{},
function (response) {
if (response.status == 'success') {
AutoNumeric.getAutoNumericElement('#pedidosImpresion').set(response.totales['total_impresion']);
AutoNumeric.getAutoNumericElement('#pedidosMaquetacion').set(response.totales['total_maquetacion']);
AutoNumeric.getAutoNumericElement('#totalPedidos').set(response.totales['total']);
}
else {
console.log("Error data:", response);
}
},
function (error) {
console.log("Error data:", error);
}).get();
} }
/* /*
$(document).on("keyup", ".factura-filter", (event) => { $(document).on("keyup", ".factura-filter", (event) => {
@ -123,16 +141,7 @@ class ClientePedidos {
$('#tableOfFacturasCliente').DataTable().column(2).search('').draw(); $('#tableOfFacturasCliente').DataTable().column(2).search('').draw();
}); });
new Ajax('/facturas/getdatoscliente/'+ this.clienteId,
{},
{},
function (response) {
AutoNumeric.getAutoNumericElement('#acumuladoFacturacion').set(response.total_facturacion);
AutoNumeric.getAutoNumericElement('#totalPendientePago').set(response.total_pendiente);
},
function (error) {
console.log("Error data:", error);
}).get();
} }