
    public function getGeneralStock()
    {
        try {
            // 1. Get List of Companies (Headers)
            $companies = \App\Models\Cadastro\CD\CDEmpresa::where('fk_tipo_empresa', 1)
                ->orderBy('fantasia')
                ->get(['id', 'fantasia as name', 'nome']);

            // 2. Define Standard Products (Rows)
            $productNames = ['P05', 'P08', 'P13', 'P20', 'P45'];
            
            // 3. Get Stock Data grouped by Company AND Product
            $stocks = DB::table('cd_estoque')
                ->join('cd_civ_lote', 'cd_estoque.fk_civ_lote', '=', 'cd_civ_lote.id')
                ->join('cd_civ', 'cd_civ_lote.fk_cd_civ', '=', 'cd_civ.id')
                ->join('cd_produto', 'cd_civ_lote.fk_cd_produto', '=', 'cd_produto.id')
                ->whereIn('cd_civ.fk_cd_companhia', $companies->pluck('id'))
                ->select(
                    'cd_civ.fk_cd_companhia as company_id',
                    'cd_produto.descricao as product',
                    DB::raw('SUM(cd_estoque.qtd - cd_estoque.qtd_saida) as saldo')
                )
                ->groupBy('cd_civ.fk_cd_companhia', 'cd_produto.descricao')
                ->get();

            // 4. Build Matrix
            $matrix = [];
            foreach ($productNames as $pName) {
                $row = [
                    'product' => $pName,
                    'stocks' => [], // Keyed by Company ID
                    'total' => 0
                ];
                // Init 0 for all companies
                foreach ($companies as $comp) {
                    $row['stocks'][$comp->id] = 0;
                }
                $matrix[$pName] = $row;
            }

            // 5. Fill Data
            foreach ($stocks as $item) {
                $pName = strtoupper($item->product);
                $compId = $item->company_id;
                $saldo = (int) $item->saldo;

                // Only track if it's one of our standard products, else ignore or add to "Others"
                // For this requirement, we focus on P-series.
                if (isset($matrix[$pName])) {
                    $matrix[$pName]['stocks'][$compId] = $saldo;
                    $matrix[$pName]['total'] += $saldo;
                }
            }

            return response()->json([
                'companies' => $companies,
                'products' => array_values($matrix)
            ]);

        } catch (\Exception $e) {
            return response()->json(['error' => $e->getMessage()], 500);
        }
    }
