17: private function getData($overrideSucursalId = null) 18: { 19: $sucursalId = $overrideSucursalId ?? session('sucursal_id'); 20: 21: // Si no hay sucursal en sesión ni override, intentar sacarla del usuario autenticado 22: if (!$sucursalId) { 23: $user = auth()->user(); 24: if ($user && isset($user->sucursal_asignada_id)) { 25: $sucursalId = $user->sucursal_asignada_id; 26: } 27: } 28: 29: $productosReal = []; 30: $categoriasReal = []; 31: 32: if ($sucursalId) { 33: try { 34: // Obtener categorías reales de la sucursal 35: $categoriasEntity = $this->obtenerCategoriasUC->ejecutar($sucursalId); 36: $categoriasReal = array_map(function ($cat) { 37: return [ 38: 'id' => $cat->id, 39: 'nombre' => $cat->nombre, 40: 'icono' => $this->getIconForCategory($cat->nombre) 41: ]; 42: }, $categoriasEntity); 43: 44: // Obtener productos reales de la sucursal (Consulta cruda para no perder precios y ofertas) 45: $productsData = \Illuminate\Support\Facades\DB::table('Ventas_Productos as p') 46: ->join('Ventas_Precios_Producto as pp', 'p.id_producto', '=', 'pp.producto_id') 47: ->join('Ventas_Listas_Precios as lp', 'pp.id_precios', '=', 'lp.id_lista') 48: ->where('lp.sucursal_id', $sucursalId) 49: ->where(function ($q) { 50: $q->where('p.activo', 1)->orWhereNull('p.activo'); 51: }) 52: ->select('p.*', 'pp.precio', 'pp.moneda') 53: ->distinct() 54: ->get(); 55: 56: // Mapa de categoria → nombre para enriquecer productos 57: $catMap = [];