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('datatableLineasEnvios/(:num)', 'LogisticaController::datatable_enviosEdit/$1');
|
||||||
$routes->get('envio/(:num)', 'LogisticaController::editEnvio/$1');
|
$routes->get('envio/(:num)', 'LogisticaController::editEnvio/$1');
|
||||||
$routes->get('selectAddLinea', 'LogisticaController::selectAddEnvioLinea');
|
$routes->get('selectAddLinea', 'LogisticaController::selectAddEnvioLinea');
|
||||||
|
$routes->get('addLineaEnvio', 'LogisticaController::addEnvioLinea');
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -80,14 +80,14 @@ class LogisticaController extends BaseController
|
|||||||
];
|
];
|
||||||
return $this->response->setJSON($result);
|
return $this->response->setJSON($result);
|
||||||
}
|
}
|
||||||
$result = LogisticaService::findPedidoOrISBN($search, $envio_id);
|
$result = LogisticaService::findPedidoOrISBN($search);
|
||||||
return $this->response->setJSON($result);
|
return $this->response->setJSON($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function selectAddEnvioLinea(){
|
public function selectAddEnvioLinea(){
|
||||||
|
|
||||||
if ($this->request->isAJAX()) {
|
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")) {
|
if ($this->request->getGet("q")) {
|
||||||
$query->groupStart()
|
$query->groupStart()
|
||||||
->orLike("pedidos.id", $this->request->getGet("q"))
|
->orLike("pedidos.id", $this->request->getGet("q"))
|
||||||
@ -95,7 +95,24 @@ class LogisticaController extends BaseController
|
|||||||
->groupEnd();
|
->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 {
|
} else {
|
||||||
return $this->failUnauthorized('Invalid request', 403);
|
return $this->failUnauthorized('Invalid request', 403);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ return [
|
|||||||
'envioSimpleMultiple' => 'Envío simple/múltiple',
|
'envioSimpleMultiple' => 'Envío simple/múltiple',
|
||||||
'nuevoEnvio' => 'Nuevo envío',
|
'nuevoEnvio' => 'Nuevo envío',
|
||||||
'buscadorPedidosTitle' => 'Código Pedido o ISBN',
|
'buscadorPedidosTitle' => 'Código Pedido o ISBN',
|
||||||
|
'buscadorPedidosTitle2' => 'Código Pedido o título',
|
||||||
'listadoEnvios' => 'Listado de envíos',
|
'listadoEnvios' => 'Listado de envíos',
|
||||||
'idEnvio' => 'ID Envío',
|
'idEnvio' => 'ID Envío',
|
||||||
'numeroPedidos' => 'Nº Pedidos',
|
'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');
|
$modelPedido = model('App\Models\Pedidos\PedidoModel');
|
||||||
|
|
||||||
$builder = $modelPedido->builder();
|
$builder = $modelPedido->builder();
|
||||||
|
|
||||||
$builder->select("
|
$builder->select("
|
||||||
CONCAT(
|
pedidos.id as pedido_id,
|
||||||
'[' ,
|
pedidos_linea.id as linea_id,
|
||||||
pedidos.id, ']',
|
pedidos_linea.cantidad as total_unidades,
|
||||||
' - ',
|
(
|
||||||
presupuestos.titulo,
|
SELECT IFNULL(SUM(el.unidades_envio), 0)
|
||||||
) as name,
|
FROM envios_lineas el
|
||||||
pedidos.id as pedido_id");
|
JOIN envios e ON e.id = el.envio_id
|
||||||
|
WHERE el.pedido_id = pedidos.id
|
||||||
$builder->join('pedidos_linea', 'pedidos_linea.pedido_id = pedidos.id', 'left');
|
AND e.finalizado = 1
|
||||||
$builder->join('presupuestos', 'presupuestos.id = pedidos_linea.presupuesto_id', 'left');
|
AND TRIM(e.direccion) = '" . addslashes(trim($direccion)) . "'
|
||||||
$builder->join('envios_lineas', 'envios_lineas.pedido_id = pedidos_linea.pedido_id', 'left');
|
) as unidades_enviadas,
|
||||||
$builder->join('presupuesto_direcciones', 'presupuesto_direcciones.id = envios_lineas.presupuesto_direcciones_id', 'left');
|
pedidos_linea.cantidad - IFNULL(SUM(envios_lineas.unidades_envio), 0) as unidades_envio,
|
||||||
|
presupuestos.id as presupuesto_id
|
||||||
$builder->groupBy('pedidos_linea.id');
|
");
|
||||||
$builder->having('IFNULL(SUM(envios_lineas.unidades_envio), 0) < cantidad_linea', null, false);
|
|
||||||
$builder->where('pedidos.estado', 'finalizado');
|
|
||||||
$builder->where('presupuesto_direcciones.direccion', $direccion);
|
|
||||||
|
|
||||||
return $builder;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*$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',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$builder->join('pedidos_linea', 'pedidos_linea.pedido_id = pedidos.id', 'left');
|
$builder->join('pedidos_linea', 'pedidos_linea.pedido_id = pedidos.id', 'left');
|
||||||
$builder->join('presupuestos', 'presupuestos.id = pedidos_linea.presupuesto_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('envios_lineas', 'envios_lineas.pedido_id = pedidos_linea.pedido_id', 'left');
|
||||||
|
|
||||||
$builder->groupBy('pedidos_linea.id');
|
$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('pedidos.estado', 'finalizado');
|
||||||
|
$builder->where('pedidos.id', $pedido_id);
|
||||||
|
|
||||||
|
$result = $builder->get()->getResultObject();
|
||||||
|
|
||||||
|
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,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'status' => true,
|
||||||
|
'data' => [
|
||||||
|
'unidades_envio' => $result[0]->unidades_envio,
|
||||||
|
'unidades_enviadas' => $result[0]->unidades_enviadas,
|
||||||
|
'total_unidades' => $result[0]->total_unidades,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
$result = $builder->get()->getResult();
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
private static function generateEnvio($pedido_id, $multienvio = false)
|
private static function generateEnvio($pedido_id, $multienvio = false)
|
||||||
@ -154,7 +202,7 @@ class LogisticaService
|
|||||||
|
|
||||||
$datosEnvio = $presupuestoDireccionesModel
|
$datosEnvio = $presupuestoDireccionesModel
|
||||||
->select('
|
->select('
|
||||||
presupuesto_direcciones.id as presupuesto_direcciones_id,
|
presupuestos.id as presupuesto_id,
|
||||||
presupuesto_direcciones.att,
|
presupuesto_direcciones.att,
|
||||||
presupuesto_direcciones.direccion,
|
presupuesto_direcciones.direccion,
|
||||||
presupuesto_direcciones.provincia as ciudad,
|
presupuesto_direcciones.provincia as ciudad,
|
||||||
@ -167,7 +215,9 @@ class LogisticaService
|
|||||||
')
|
')
|
||||||
->join('pedidos_linea', 'pedidos_linea.presupuesto_id = presupuesto_direcciones.presupuesto_id')
|
->join('pedidos_linea', 'pedidos_linea.presupuesto_id = presupuesto_direcciones.presupuesto_id')
|
||||||
->join('pedidos', 'pedidos.id = pedidos_linea.pedido_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)
|
->where('pedidos.id', $pedido_id)
|
||||||
->groupBy('presupuesto_direcciones.id') // Necesario por el uso de SUM
|
->groupBy('presupuesto_direcciones.id') // Necesario por el uso de SUM
|
||||||
->first();
|
->first();
|
||||||
@ -203,7 +253,7 @@ class LogisticaService
|
|||||||
'updated_at' => date('Y-m-d H:i:s'),
|
'updated_at' => date('Y-m-d H:i:s'),
|
||||||
'created_by' => auth()->user()->id,
|
'created_by' => auth()->user()->id,
|
||||||
'updated_by' => auth()->user()->id,
|
'updated_by' => auth()->user()->id,
|
||||||
'presupuesto_direcciones_id' => (int) $datosEnvio->presupuesto_direcciones_id
|
'presupuesto_id' => (int) $datosEnvio->presupuesto_id
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
@ -211,9 +261,9 @@ class LogisticaService
|
|||||||
return [
|
return [
|
||||||
'status' => true,
|
'status' => true,
|
||||||
'data' => [
|
'data' => [
|
||||||
'id_envio' => $idEnvio,
|
'id_envio' => $idEnvio,
|
||||||
'multienvio' => false,
|
'multienvio' => false,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ $(()=>{
|
|||||||
}
|
}
|
||||||
if(response.data){
|
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