mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'main' into feat/revision-ot-2
This commit is contained in:
108
ci4/app/Models/Etiquetas/EtiquetasTitulosLineasModel.php
Normal file
108
ci4/app/Models/Etiquetas/EtiquetasTitulosLineasModel.php
Normal file
@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Etiquetas;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
use App\Entities\Etiquetas\EtiquetaTituloLinea;
|
||||
|
||||
class EtiquetasTitulosLineasModel extends Model
|
||||
{
|
||||
protected $table = 'etiquetas_titulos_lineas';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useAutoIncrement = true;
|
||||
|
||||
protected $returnType = EtiquetaTituloLinea::class;
|
||||
protected $useSoftDeletes = true;
|
||||
|
||||
protected $allowedFields = [
|
||||
'etiqueta_titulos_id',
|
||||
'ot_id',
|
||||
'unidades',
|
||||
'numero_caja',
|
||||
'user_created_at',
|
||||
'user_updated_at',
|
||||
'user_deleted_at',
|
||||
];
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
protected $validationRules = [];
|
||||
protected $validationMessages = [];
|
||||
protected $skipValidation = false;
|
||||
|
||||
protected $beforeDelete = ['addUserDeleted'];
|
||||
protected $beforeUpdate = ['addUserUpdated'];
|
||||
|
||||
protected function addUserDeleted(array $data)
|
||||
{
|
||||
$userId = auth()->user()->id;
|
||||
|
||||
if (!isset($data['data'])) {
|
||||
$data['data'] = [];
|
||||
}
|
||||
|
||||
if (!empty($data['id'])) {
|
||||
$builder = $this->builder();
|
||||
$builder->whereIn($this->primaryKey, (array) $data['id'])
|
||||
->update(['user_deleted_at' => $userId]);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function addUserUpdated(array $data)
|
||||
{
|
||||
$userId = auth()->user()->id;
|
||||
|
||||
if (!isset($data['data'])) {
|
||||
$data['data'] = [];
|
||||
}
|
||||
|
||||
if (!empty($data['id'])) {
|
||||
$builder = $this->builder();
|
||||
$builder->whereIn($this->primaryKey, (array) $data['id'])
|
||||
->update(['user_updated_at' => $userId]);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getDatatableQuery($etiqueta_id, $direccion = null)
|
||||
{
|
||||
$direccionNormalizada = str_replace(' ', '', strtolower(trim($direccion)));
|
||||
|
||||
// Subconsulta: suma de pesos por presupuesto
|
||||
$subPeso = $this->db->table('presupuesto_linea')
|
||||
->select('presupuesto_id, ROUND(SUM(peso)/1000, 2) as pesoUnidad')
|
||||
->groupBy('presupuesto_id');
|
||||
|
||||
$builder = $this->db->table('etiquetas_titulos_lineas etl')
|
||||
->select('
|
||||
etl.id as id,
|
||||
etl.ot_id as ot,
|
||||
pr.titulo as titulo,
|
||||
etl.unidades as unidades,
|
||||
etl.numero_caja as numero_caja,
|
||||
etl.numero_caja as numero_caja_raw,
|
||||
pd.cantidad as unidadesTotal,
|
||||
etl.id as id,
|
||||
etl.unidades as unidadesRaw,
|
||||
peso_sub.pesoUnidad
|
||||
')
|
||||
->join('etiquetas_titulos et', 'et.id = etl.etiqueta_titulos_id')
|
||||
->join('ordenes_trabajo ot', 'ot.id = etl.ot_id')
|
||||
->join('pedidos p', 'p.id = ot.pedido_id')
|
||||
->join('pedidos_linea pl', 'pl.pedido_id = p.id')
|
||||
->join('presupuestos pr', 'pr.id = pl.presupuesto_id')
|
||||
->join("({$subPeso->getCompiledSelect()}) as peso_sub", 'peso_sub.presupuesto_id = pr.id', 'left')
|
||||
->join('presupuesto_direcciones pd', 'pd.presupuesto_id = pr.id')
|
||||
->where('etl.deleted_at IS NULL')
|
||||
->where('et.id', $etiqueta_id)
|
||||
->where("REPLACE(LOWER(TRIM(pd.direccion)), ' ', '') = '{$direccionNormalizada}'", null, false)
|
||||
->orderBy('etl.numero_caja');
|
||||
|
||||
return $builder;
|
||||
}
|
||||
|
||||
}
|
||||
82
ci4/app/Models/Etiquetas/EtiquetasTitulosModel.php
Normal file
82
ci4/app/Models/Etiquetas/EtiquetasTitulosModel.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Etiquetas;
|
||||
|
||||
use CodeIgniter\Model;
|
||||
use App\Entities\Etiquetas\EtiquetaTitulo;
|
||||
|
||||
class EtiquetasTitulosModel extends Model
|
||||
{
|
||||
protected $table = 'etiquetas_titulos';
|
||||
protected $primaryKey = 'id';
|
||||
protected $useAutoIncrement = true;
|
||||
|
||||
protected $returnType = EtiquetaTitulo::class;
|
||||
protected $useSoftDeletes = true;
|
||||
|
||||
protected $allowedFields = [
|
||||
'comentarios',
|
||||
'direccion',
|
||||
'att',
|
||||
'cliente_id',
|
||||
'user_created_at',
|
||||
'user_updated_at',
|
||||
'user_deleted_at',
|
||||
];
|
||||
|
||||
protected $useTimestamps = true;
|
||||
protected $createdField = 'created_at';
|
||||
protected $updatedField = 'updated_at';
|
||||
protected $deletedField = 'deleted_at';
|
||||
|
||||
protected $validationRules = [];
|
||||
protected $validationMessages = [];
|
||||
protected $skipValidation = false;
|
||||
|
||||
|
||||
protected $beforeDelete = ['addUserDeleted'];
|
||||
protected $beforeUpdate = ['addUserUpdated'];
|
||||
|
||||
protected function addUserDeleted(array $data)
|
||||
{
|
||||
$userId = auth()->user()->id;
|
||||
|
||||
if (!isset($data['data'])) {
|
||||
$data['data'] = [];
|
||||
}
|
||||
|
||||
if (!empty($data['id'])) {
|
||||
$builder = $this->builder();
|
||||
$builder->whereIn($this->primaryKey, (array) $data['id'])
|
||||
->update(['user_deleted_at' => $userId]);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function addUserUpdated(array $data)
|
||||
{
|
||||
$userId = auth()->user()->id;
|
||||
|
||||
if (!isset($data['data'])) {
|
||||
$data['data'] = [];
|
||||
}
|
||||
|
||||
if (!empty($data['id'])) {
|
||||
$builder = $this->builder();
|
||||
$builder->whereIn($this->primaryKey, (array) $data['id'])
|
||||
->update(['user_updated_at' => $userId]);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getEtiquetasTitulos()
|
||||
{
|
||||
return $this->db->table('etiquetas_titulos et')
|
||||
->select('et.id, GROUP_CONCAT(DISTINCT etl.ot_id ORDER BY etl.ot_id ASC SEPARATOR ", ") as lista_ots')
|
||||
->select('COUNT(DISTINCT etl.numero_caja) as cajas, et.att, et.direccion')
|
||||
->join('etiquetas_titulos_lineas etl', 'etl.etiqueta_titulos_id = et.id')
|
||||
->where('et.deleted_at IS NULL')
|
||||
->where('etl.deleted_at IS NULL')
|
||||
->groupBy('et.id, et.att, et.direccion');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user