mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
trabajando
This commit is contained in:
@ -781,6 +781,7 @@ $routes->group('logistica', ['namespace' => 'App\Controllers\Logistica'], functi
|
||||
$routes->get('panel', 'LogisticaController::panel', ['as' => 'LogisticaPanel']);
|
||||
$routes->get('selectEnvios/(:any)', 'LogisticaController::selectorEnvios/$1', ['as' => 'selectEnvios']);
|
||||
$routes->get('buscar/(:any)', 'LogisticaController::searchPedidoOrISBN/$1', ['as' => 'buscarPedidoOrISBN']);
|
||||
$routes->get('datatableEnvios', 'LogisticaController::datatable_envios');
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@ -8,6 +8,7 @@ use App\Services\LogisticaService;
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Hermawan\DataTables\DataTable;
|
||||
|
||||
class LogisticaController extends BaseController
|
||||
{
|
||||
@ -69,16 +70,45 @@ class LogisticaController extends BaseController
|
||||
return view(static::$viewPath . 'viewLogisticaSelectEnvios', $viewData);
|
||||
}
|
||||
|
||||
public function searchPedidoOrISBN($search = ""){
|
||||
public function searchPedidoOrISBN($search = "")
|
||||
{
|
||||
|
||||
if(empty($search)){
|
||||
if (empty($search)) {
|
||||
$result = [
|
||||
'status' => false,
|
||||
'message' => lang('Logistica.errors.noDataToFind'),
|
||||
];
|
||||
return $this->response->setJSON($result);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
$result = LogisticaService::findPedidoOrISBN($search);
|
||||
return $this->response->setJSON($result);
|
||||
return $this->response->setJSON($result);
|
||||
}
|
||||
|
||||
public function datatable_envios()
|
||||
{
|
||||
$model = model('App\Models\Logistica\EnvioModel');
|
||||
$q = $model->getDatatableQuery();
|
||||
|
||||
|
||||
$result = DataTable::of($q)
|
||||
->edit(
|
||||
"finalizado",
|
||||
function ($row, $meta) {
|
||||
if ($row->finalizado == 1)
|
||||
return '<i class="ti ti-check"></i>';
|
||||
else
|
||||
return '<i class="ti ti-x"></i>';
|
||||
}
|
||||
)
|
||||
->add("action", callback: function ($q) {
|
||||
|
||||
return '
|
||||
<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="' . $q->id . '"></i></a>
|
||||
</div>
|
||||
';
|
||||
});
|
||||
|
||||
return $result->toJson(returnAsObject: true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,10 +26,13 @@ return [
|
||||
'finalizado' => 'Finalizado',
|
||||
'acciones' => 'Acciones',
|
||||
'backToPanel' => 'Volver al panel',
|
||||
|
||||
'no' => 'No',
|
||||
'si' => 'Sí',
|
||||
|
||||
'errors' => [
|
||||
'noAlbaranes' => 'No se han encontrado albaranes para este pedido',
|
||||
'noDataToFind' => 'No se ha introducido ningún dato para buscar',
|
||||
'notFound' => 'No se encuentra el pedido o ISBN',
|
||||
'notFound' => 'No se encuentra el pedido o ISBN, o el pedido aún no se ha finalizado',
|
||||
'noAddresses' => 'El pedido no tiene direcciones de envío',
|
||||
],
|
||||
];
|
||||
@ -62,43 +62,104 @@ class LogisticaService
|
||||
$response['data']->createAlbaran = true;
|
||||
}
|
||||
|
||||
$response_envio = LogisticaService::generateEnvio($result[0]->pedido_id);
|
||||
if($response_envio['status'] == false){
|
||||
$response = [
|
||||
'status' => false,
|
||||
'message' => $response_envio['message'],
|
||||
];
|
||||
return $response;
|
||||
}
|
||||
else{
|
||||
$response['data']->id_envio = $response_envio['data']['id_envio'];
|
||||
$response['data']->multienvio = $response_envio['data']['multienvio'];
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function generateEnvio($pedido){
|
||||
private static function generateEnvio($pedido_id){
|
||||
|
||||
// Se obtiene los datos de att, direccion, ciudad, cp, telefono, pais_id
|
||||
$modelPedidoLinea = model('App\Models\Pedidos\PedidoLineaModel');
|
||||
$lineasPedido = $modelPedidoLinea->where('pedido_id', $pedido->id)
|
||||
$AlbaranModel = model('App\Models\Pedidos\AlbaranModel');
|
||||
$lineasAlbaran = $AlbaranModel->where('pedido_id', $pedido_id)
|
||||
->join('albaranes_lineas', 'albaranes_lineas.albaran_id = albaranes.id')
|
||||
->join('pedidos', 'pedidos.id = albaranes.pedido_id')
|
||||
->where('pedidos.estado', 'finalizado')
|
||||
->countAllResults();
|
||||
|
||||
$multienvio = false;
|
||||
->findAll();
|
||||
if(empty($lineasPedido)){
|
||||
|
||||
if($lineasAlbaran == 0){
|
||||
return [
|
||||
'status' => false,
|
||||
'message' => lang('Logistica.errors.noLines'),
|
||||
'message' => lang('Logistica.errors.noAlbaranes'),
|
||||
];
|
||||
}
|
||||
if(count($lineasPedido) > 1){
|
||||
if($lineasAlbaran > 1){
|
||||
$multienvio = true;
|
||||
}
|
||||
if(!$multienvio){
|
||||
// solo hay una dirección, se obtiene de los albaranes
|
||||
$AlbaranModel = model('App\Models\Pedidos\AlbaranModel');
|
||||
|
||||
$datosEnvio = $AlbaranModel
|
||||
->select('albaranes.att_albaran as att, albaranes.direccion_albaran as direccion,
|
||||
presupuestos_direcciones.ciudad as ciudad, presupuestos_direcciones.cp as cp, presupuestos_direcciones.telefono as telefono,
|
||||
presupuestos_direcciones.pais_id as pais_id, albaranes_linea.cantidad as cantidad, albaranes_linea.cajas as cajas')
|
||||
->where('albaranes.pedido_id', $pedido->id)
|
||||
->where('albaranes_linea.cajas !=', null)
|
||||
->join('albaranes_linea', 'albaranes_linea.albaran_id = albaranes.id')
|
||||
->join('presupuestos_direcciones', 'presupuestos_direcciones.id = albaran.presupuesto_id')
|
||||
presupuesto_direcciones.provincia as ciudad, presupuesto_direcciones.cp as cp, presupuesto_direcciones.telefono as telefono, presupuesto_direcciones.email as email,
|
||||
presupuesto_direcciones.pais_id as pais_id, albaranes_lineas.cantidad as cantidad, albaranes_lineas.cajas as cajas')
|
||||
->where('albaranes.pedido_id', $pedido_id)
|
||||
->where('albaranes_lineas.cajas !=', null)
|
||||
->join('albaranes_lineas', 'albaranes_lineas.albaran_id = albaranes.id')
|
||||
->join('presupuesto_direcciones', 'presupuesto_direcciones.presupuesto_id = albaranes.presupuesto_id')
|
||||
->first();
|
||||
|
||||
// se genera un nuevo envio con estos datos
|
||||
$EnvioModel = model('App\Models\Logistica\EnvioModel');
|
||||
$EnvioModel->set('att', $datosEnvio->att);
|
||||
$EnvioModel->set('direccion', $datosEnvio->direccion);
|
||||
$EnvioModel->set('ciudad', $datosEnvio->ciudad);
|
||||
$EnvioModel->set('cp', $datosEnvio->cp);
|
||||
$EnvioModel->set('telefono', $datosEnvio->telefono);
|
||||
$EnvioModel->set('email', $datosEnvio->email);
|
||||
$EnvioModel->set('pais_id', $datosEnvio->pais_id);
|
||||
$EnvioModel->set('cantidad', $datosEnvio->cantidad);
|
||||
$EnvioModel->set('cajas', $datosEnvio->cajas);
|
||||
$EnvioModel->set('created_at', date('Y-m-d H:i:s'));
|
||||
$EnvioModel->set('updated_at', date('Y-m-d H:i:s'));
|
||||
$EnvioModel->insert();
|
||||
$idEnvio = $EnvioModel->insertID();
|
||||
|
||||
// se genera la linea de envio
|
||||
$EnvioLineasModel = model('App\Models\Logistica\EnvioLineaModel');
|
||||
$EnvioLineasModel->set('envio_id', $idEnvio);
|
||||
$EnvioLineasModel->set('pedido_id', $pedido_id);
|
||||
$EnvioLineasModel->set('unidades_envio', $datosEnvio->cantidad);
|
||||
$EnvioLineasModel->set('unidades_total', $datosEnvio->cantidad);
|
||||
$EnvioLineasModel->set('cajas', $datosEnvio->cajas);
|
||||
$EnvioLineasModel->set('unidades_cajas', $datosEnvio->cajas);
|
||||
$EnvioLineasModel->set('created_at', date('Y-m-d H:i:s'));
|
||||
$EnvioLineasModel->set('updated_at', date('Y-m-d H:i:s'));
|
||||
$EnvioLineasModel->set('created_by', auth()->user()->id);
|
||||
$EnvioLineasModel->set('updated_by', auth()->user()->id);
|
||||
$EnvioLineasModel->insert();
|
||||
|
||||
return [
|
||||
'status' => true,
|
||||
'data' => [
|
||||
'id_envio' => $idEnvio,
|
||||
'multienvio' => false,
|
||||
],
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(empty($datosEnvio)){
|
||||
return [
|
||||
'status' => false,
|
||||
'message' => lang('Logistica.errors.noAddresses'),
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,7 +11,10 @@ $(()=>{
|
||||
{},
|
||||
{},
|
||||
function(response) {
|
||||
if(response.data.createAlbaran){
|
||||
if(!response.status){
|
||||
popErrorAlert(response.message);
|
||||
}
|
||||
if(response.data && response.data.createAlbaran){
|
||||
|
||||
Swal.fire({
|
||||
title: 'Atención!',
|
||||
@ -31,11 +34,62 @@ $(()=>{
|
||||
|
||||
},
|
||||
function(xhr, status, error) {
|
||||
popErrorAlert(error.responseJSON.message);
|
||||
if(status == 'error' && typeof(error)== 'string')
|
||||
popErrorAlert(error);
|
||||
else
|
||||
popErrorAlert(error.responseJSON.message);
|
||||
}
|
||||
).get();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
const tableEnvios = $('#tableOfEnvios').DataTable({
|
||||
processing: true,
|
||||
serverSide: true,
|
||||
autoWidth: true,
|
||||
responsive: true,
|
||||
scrollX: true,
|
||||
orderCellsTop: true,
|
||||
lengthMenu: [5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500],
|
||||
pageLength: 50,
|
||||
"dom": 'lBrtip',
|
||||
"ajax": {
|
||||
"url": "/logistica/datatableEnvios",
|
||||
},
|
||||
"columns": [
|
||||
{ "data": "id" },
|
||||
{ "data": "pedidos" },
|
||||
{ "data": "num_lineas" },
|
||||
{ "data": "att" },
|
||||
{ "data": "direccion" },
|
||||
{ "data": "ciudad" },
|
||||
{ "data": "pais" },
|
||||
{ "data": "cp" },
|
||||
{ "data": "email" },
|
||||
{ "data": "telefono" },
|
||||
{
|
||||
"data": "finalizado",
|
||||
"className": "text-center",
|
||||
},
|
||||
{ "data": "action" }
|
||||
|
||||
],
|
||||
"language": {
|
||||
url: "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"
|
||||
},
|
||||
"columnDefs": [
|
||||
{
|
||||
orderable: false,
|
||||
searchable: false,
|
||||
targets: [11]
|
||||
},
|
||||
],
|
||||
"order": [[0, "desc"]],
|
||||
});
|
||||
|
||||
$(document).on('click', '.btn-edit', function (e) {
|
||||
window.location.href = '/logistica/envio/' + $(this).attr('data-id');
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user