trabajando

This commit is contained in:
2025-04-16 18:24:48 +02:00
parent 6a4e9b611e
commit 3ada529b6e
5 changed files with 173 additions and 24 deletions

View File

@ -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'),
];
}
}
}