mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
voy a añadir grupos de cajas
This commit is contained in:
@ -785,6 +785,7 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi
|
||||
$routes->get('datatableLineasEnvios/(:num)', 'LogisticaController::datatable_enviosEdit/$1');
|
||||
$routes->get('envio/(:num)', 'LogisticaController::editEnvio/$1');
|
||||
$routes->get('selectAddLinea', 'LogisticaController::selectAddEnvioLinea');
|
||||
$routes->get('addLineaEnvio', 'LogisticaController::addEnvioLinea');
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@ -80,14 +80,14 @@ class LogisticaController extends BaseController
|
||||
];
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
$result = LogisticaService::findPedidoOrISBN($search, $envio_id);
|
||||
$result = LogisticaService::findPedidoOrISBN($search);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
|
||||
public function selectAddEnvioLinea(){
|
||||
|
||||
if ($this->request->isAJAX()) {
|
||||
$query = LogisticaService::findLineaEnvio($this->request->getGet('direccion'))->orderBy("nombre", "asc");
|
||||
$query = LogisticaService::findLineaEnvioPorEnvio($this->request->getGet('envio'))->orderBy("name", "asc");
|
||||
if ($this->request->getGet("q")) {
|
||||
$query->groupStart()
|
||||
->orLike("pedidos.id", $this->request->getGet("q"))
|
||||
@ -95,7 +95,24 @@ class LogisticaController extends BaseController
|
||||
->groupEnd();
|
||||
}
|
||||
|
||||
return $this->response->setJSON($query->get()->getResultObject());
|
||||
$result = $query->get()->getResultObject();
|
||||
|
||||
return $this->response->setJSON($result);
|
||||
} else {
|
||||
return $this->failUnauthorized('Invalid request', 403);
|
||||
}
|
||||
}
|
||||
|
||||
public function addEnvioLinea(){
|
||||
|
||||
if ($this->request->isAJAX()) {
|
||||
$pedido_id = $this->request->getGet('pedido_id');
|
||||
$envio_id = $this->request->getGet('envio_id');
|
||||
$envioModel = model('App\Models\Logistica\EnvioModel');
|
||||
$direccion = $envioModel->find($envio_id)->direccion;
|
||||
|
||||
$result = LogisticaService::addLineaEnvio($envio_id, $pedido_id, $direccion);
|
||||
return $this->response->setJSON($result);
|
||||
} else {
|
||||
return $this->failUnauthorized('Invalid request', 403);
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ return [
|
||||
'envioSimpleMultiple' => 'Envío simple/múltiple',
|
||||
'nuevoEnvio' => 'Nuevo envío',
|
||||
'buscadorPedidosTitle' => 'Código Pedido o ISBN',
|
||||
'buscadorPedidosTitle2' => 'Código Pedido o título',
|
||||
'listadoEnvios' => 'Listado de envíos',
|
||||
'idEnvio' => 'ID Envío',
|
||||
'numeroPedidos' => 'Nº Pedidos',
|
||||
|
||||
@ -83,65 +83,113 @@ class LogisticaService
|
||||
}
|
||||
|
||||
|
||||
public static function findLineaEnvio($direccion){
|
||||
public static function findLineaEnvioPorEnvio(int $envio_id)
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
$builder = $db->table('envios e_main');
|
||||
|
||||
$builder->select("
|
||||
CONCAT('[', p.id, '] - ', pr.titulo) AS name,
|
||||
p.id AS id,
|
||||
pl.id AS linea_id,
|
||||
pl.cantidad,
|
||||
(
|
||||
SELECT IFNULL(SUM(el.unidades_envio), 0)
|
||||
FROM envios_lineas el
|
||||
JOIN envios e ON e.id = el.envio_id
|
||||
WHERE el.pedido_id = p.id
|
||||
AND e.direccion = e_main.direccion
|
||||
) AS unidades_enviadas,
|
||||
(pl.cantidad - (
|
||||
SELECT IFNULL(SUM(el2.unidades_envio), 0)
|
||||
FROM envios_lineas el2
|
||||
JOIN envios e2 ON e2.id = el2.envio_id
|
||||
WHERE el2.pedido_id = p.id
|
||||
AND e2.direccion = e_main.direccion
|
||||
)) AS unidades_pendientes
|
||||
");
|
||||
|
||||
$builder->join('envios_lineas el_main', 'el_main.envio_id = e_main.id');
|
||||
$builder->join('pedidos p', 'p.id = el_main.pedido_id');
|
||||
$builder->join('pedidos_linea pl', 'pl.pedido_id = p.id');
|
||||
$builder->join('presupuestos pr', 'pr.id = pl.presupuesto_id');
|
||||
|
||||
$builder->where('p.estado', 'finalizado');
|
||||
$builder->where('e_main.id', $envio_id);
|
||||
|
||||
$builder->groupBy('pl.id');
|
||||
$builder->having('unidades_enviadas < pl.cantidad', null, false);
|
||||
$builder->orderBy('name', 'ASC');
|
||||
|
||||
return $builder;
|
||||
}
|
||||
|
||||
public static function addLineaEnvio($envio_id = null, $pedido_id = null, $direccion = null)
|
||||
{
|
||||
$modelPedido = model('App\Models\Pedidos\PedidoModel');
|
||||
|
||||
$builder = $modelPedido->builder();
|
||||
|
||||
$builder->select("
|
||||
CONCAT(
|
||||
'[' ,
|
||||
pedidos.id, ']',
|
||||
' - ',
|
||||
presupuestos.titulo,
|
||||
) as name,
|
||||
pedidos.id as pedido_id");
|
||||
pedidos.id as pedido_id,
|
||||
pedidos_linea.id as linea_id,
|
||||
pedidos_linea.cantidad as total_unidades,
|
||||
(
|
||||
SELECT IFNULL(SUM(el.unidades_envio), 0)
|
||||
FROM envios_lineas el
|
||||
JOIN envios e ON e.id = el.envio_id
|
||||
WHERE el.pedido_id = pedidos.id
|
||||
AND e.finalizado = 1
|
||||
AND TRIM(e.direccion) = '" . addslashes(trim($direccion)) . "'
|
||||
) as unidades_enviadas,
|
||||
pedidos_linea.cantidad - IFNULL(SUM(envios_lineas.unidades_envio), 0) as unidades_envio,
|
||||
presupuestos.id as presupuesto_id
|
||||
");
|
||||
|
||||
$builder->join('pedidos_linea', 'pedidos_linea.pedido_id = pedidos.id', 'left');
|
||||
$builder->join('presupuestos', 'presupuestos.id = pedidos_linea.presupuesto_id', 'left');
|
||||
$builder->join('envios_lineas', 'envios_lineas.pedido_id = pedidos_linea.pedido_id', 'left');
|
||||
$builder->join('presupuesto_direcciones', 'presupuesto_direcciones.id = envios_lineas.presupuesto_direcciones_id', 'left');
|
||||
|
||||
$builder->groupBy('pedidos_linea.id');
|
||||
$builder->having('IFNULL(SUM(envios_lineas.unidades_envio), 0) < cantidad_linea', null, false);
|
||||
$builder->having('IFNULL(SUM(envios_lineas.unidades_envio), 0) < pedidos_linea.cantidad', null, false);
|
||||
$builder->where('pedidos.estado', 'finalizado');
|
||||
$builder->where('presupuesto_direcciones.direccion', $direccion);
|
||||
$builder->where('pedidos.id', $pedido_id);
|
||||
|
||||
return $builder;
|
||||
$result = $builder->get()->getResultObject();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*$builder->select([
|
||||
'pedidos.id as pedido_id',
|
||||
'pedidos_linea.id as linea_id',
|
||||
'pedidos_linea.cantidad as total_unidades',
|
||||
'IFNULL((
|
||||
SELECT SUM(t_sub.unidades_envio)
|
||||
FROM " . envios_lineas . " t_sub
|
||||
JOIN envios e ON e.id = t_sub.envio_id
|
||||
WHERE e.finalizado = 1
|
||||
AND t_sub.pedido_id = t1.pedido_id
|
||||
AND t_sub.presupuesto_direcciones_id = t1.presupuesto_direcciones_id
|
||||
), 0) as unidades_enviadas',
|
||||
'cantidad_linea - IFNULL(SUM(envios_lineas.unidades_envio), 0) as unidades_envio',
|
||||
'presupuestos.id as presupuesto_id',
|
||||
if (empty($result)) {
|
||||
return [
|
||||
'status' => false,
|
||||
'message' => lang('Logistica.errors.notFound'),
|
||||
];
|
||||
} else {
|
||||
$EnvioLineasModel = model('App\Models\Logistica\EnvioLineaModel');
|
||||
$EnvioLineasModel->save([
|
||||
'envio_id' => $envio_id,
|
||||
'pedido_id' => $result[0]->pedido_id,
|
||||
'unidades_envio' => $result[0]->unidades_envio,
|
||||
'unidades_total' => $result[0]->total_unidades,
|
||||
'cajas' => 1,
|
||||
'unidades_cajas' => 1,
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
'created_by' => auth()->user()->id,
|
||||
'updated_by' => auth()->user()->id,
|
||||
'presupuesto_id' => $result[0]->presupuesto_id,
|
||||
]);
|
||||
}
|
||||
|
||||
$builder->join('pedidos_linea', 'pedidos_linea.pedido_id = pedidos.id', 'left');
|
||||
$builder->join('presupuestos', 'presupuestos.id = pedidos_linea.presupuesto_id', 'left');
|
||||
$builder->join('envios_lineas', 'envios_lineas.pedido_id = pedidos_linea.pedido_id', 'left');
|
||||
return [
|
||||
'status' => true,
|
||||
'data' => [
|
||||
'unidades_envio' => $result[0]->unidades_envio,
|
||||
'unidades_enviadas' => $result[0]->unidades_enviadas,
|
||||
'total_unidades' => $result[0]->total_unidades,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
$builder->groupBy('pedidos_linea.id');
|
||||
$builder->having('IFNULL(SUM(envios_lineas.unidades_envio), 0) < cantidad_linea', null, false);
|
||||
$builder->where('pedidos.estado', 'finalizado');
|
||||
|
||||
$result = $builder->get()->getResult();
|
||||
*/
|
||||
|
||||
|
||||
private static function generateEnvio($pedido_id, $multienvio = false)
|
||||
@ -154,7 +202,7 @@ class LogisticaService
|
||||
|
||||
$datosEnvio = $presupuestoDireccionesModel
|
||||
->select('
|
||||
presupuesto_direcciones.id as presupuesto_direcciones_id,
|
||||
presupuestos.id as presupuesto_id,
|
||||
presupuesto_direcciones.att,
|
||||
presupuesto_direcciones.direccion,
|
||||
presupuesto_direcciones.provincia as ciudad,
|
||||
@ -167,7 +215,9 @@ class LogisticaService
|
||||
')
|
||||
->join('pedidos_linea', 'pedidos_linea.presupuesto_id = presupuesto_direcciones.presupuesto_id')
|
||||
->join('pedidos', 'pedidos.id = pedidos_linea.pedido_id')
|
||||
->join('envios_lineas', 'envios_lineas.pedido_id = pedidos.id AND envios_lineas.presupuesto_direcciones_id = presupuesto_direcciones.id', 'left')
|
||||
->join('presupuestos', 'pedidos_linea.presupuesto_id = presupuestos.id')
|
||||
->join('envios_lineas', 'envios_lineas.pedido_id = pedidos.id', 'left')
|
||||
->join('envios', 'envios.id = envios_lineas.envio_id', 'left')
|
||||
->where('pedidos.id', $pedido_id)
|
||||
->groupBy('presupuesto_direcciones.id') // Necesario por el uso de SUM
|
||||
->first();
|
||||
@ -203,7 +253,7 @@ class LogisticaService
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
'created_by' => auth()->user()->id,
|
||||
'updated_by' => auth()->user()->id,
|
||||
'presupuesto_direcciones_id' => (int) $datosEnvio->presupuesto_direcciones_id
|
||||
'presupuesto_id' => (int) $datosEnvio->presupuesto_id
|
||||
]);
|
||||
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ $(()=>{
|
||||
}
|
||||
if(response.data){
|
||||
|
||||
window.open(`${urlObj.origin}` + '/logistica/envio/' + response.id);
|
||||
window.open(`${window.location.origin}/logistica/envio/${response.data.id_envio}`);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user