<?php

$categoryList = $data['category_for_sales_report_list'];

$storeName = $data['storeName'];

//echo "<pre>";var_dump($categoryList);echo "</pre>";
// echo "<pre>";
// var_dump($storeName);
// echo "</pre>";
// exit;

$arrayData = $data['data'];
//echo "<pre>";var_dump($arrayData);echo "</pre>";exit;


$empresa = new CompanyRepository();
$empresaData = $empresa->getById(1);



$startDate = $this->options['startDate'];
$endDate = $this->options['endDate'];
if (trim($startDate) == '' && trim($endDate) == '') {
    $startDate = $this->_getTranslation("Desde el inicio de los tiempos");
    $endDate = strftime('%m/%d/%Y', strtotime('now'));
} elseif (trim($startDate) == '' && trim($endDate) != '') {
    $startDate = $endDate;
} elseif (trim($startDate) != '' && trim($endDate) == '') {
    $endDate = $startDate;
}

//$categoryList[null] = "Sin categoria";
$pageCout = 0;
$pageNumber = 1;

//echo "<pre>";var_dump($categoryList);echo "</pre>";exit;
// var_dump($estadoDeCuenta);exit;
$pdf = new PDF();
$pdf->AliasNbPages(); // Necesario para el alias de número de páginas


$pdf->AddPage('', '');
$pageNumber = $pdf->PageNo(); // Obtiene el número de la primera página de cada tienda

$company = new CompanyRepository();
$company->setOptions($company->getById(1));
$pdf->SetFillColor(200, 200, 200);
// $pdf->Ln(1);
// $pdf->Ln(1);

$pdf->SetFont('Arial', 'B', '12');
//$pdf->Cell(260, 7, $empresaData['name'], '0', 1, 'R');
$pdf->Cell(260, 7, 'Bread Elicon', '0', 1, 'R');

$x = $pdf->GetX();
$pdf->SetX(0);
$pdf->Cell(10, 15, "", '0', 0, 'L', true);
$pdf->Cell(60, 15, "Resumen de tipos de pago por sucursal: ", '0', 1, 'R', true);
$pdf->SetX($x);
$pdf->SetFont('Arial', '', '8');

$pdf->Cell(60, 5, 'Del dia ' . $startDate . " - Al dia " . $endDate, 0, 1, 'R');
$pdf->ln(3);
$pdf->SetFont('Arial', '', '8');
$pdf->SetTextColor(0);
$sum_fila_sucursal = 0;
$sum_balance_sucursal = 0;
$sum_totalfila = 0;
$sum_enviado = 0;
$sum_recibido = 0;
$sum_tot_enviado = 0;
$sum_tot_recibido = 0;
$gran_tot_recibido = 0;
$gran_tot_pan = 0;
$gran_tot_pastel = 0;
$pdf->SetFont('Arial', 'B', '8');
// $pdf->cell(100, 4, $categoryName, 0, 1, 'L');
$pdf->SetFont('Arial', 'B', '8');
$pdf->Cell(30, 8, 'Sucursal', 'B', 0, 'C');
foreach ($categoryList as $category_id => $categoryName) {
    $pdf->Cell(20, 8, $categoryName, 'B', 0, 'C');
}
$pdf->Cell(20, 8, "TOTAL PAGADO", 'B', 0, 'R');

$pdf->Cell(20, 8, "SALDO TIENDA", 'B', 0, 'R');

$pdf->Cell(20, 8, "TOTAL", 'B', 1, 'R');
$pdf->Ln(1);

$pdf->SetFont('Arial', '', '8');
// Crear un array para almacenar los totales por categoría
$totalesPorCategoria = array_fill_keys(array_keys($categoryList), 0);
// Crear una variable para acumular el total de la columna "Total"
$totalColumnaTotal = 0;
$totalColumnaPagado = 0;
$totalColumnaSaldoTienda = 0;
// Iterar sobre cada sucursal
foreach ($storeName as $storeId => $storeInfo) {
    if ($storeInfo !== null) {
        // Iniciar una nueva fila con el nombre de la tienda
        $pdf->Cell(30, 8, $storeInfo['name'], '1', 0, 'C', true);
        // Inicializar el valor de la columna "Total" para la tienda actual
        $totalFila = 0;
        // Iterar sobre cada categoría
        foreach ($categoryList as $categoryId => $categoryName) {
            // Inicializar el valor de la categoría para la tienda actual
            $categoryValue = 0;

            // Iterar sobre los datos del arrayData
            foreach ($arrayData as $data) {

                // Limpiar y convertir los valores antes de la comparación
                $categoryForSalesReport = (int) preg_replace('/\D/', '', $data['store_payment_type_id']); // Convertir a entero y eliminar caracteres no numéricos
                $storeName = trim($data['billed_to_store']);
                $categoryIdCleaned = trim($categoryId);
                $storeIdCleaned = (int) preg_replace('/\D/', '', $storeId); // Convertir a entero y eliminar caracteres no numéricos
                // Imprimir los datos para depurar
                //   echo "category_for_sales_report: " . $categoryForSalesReport . ", ";
                //   echo "storeName: " . $storeName . ", ";
                //   echo "categoryId: " . $categoryIdCleaned. ", ";
                //   echo "storeId: " . $storeIdCleaned . "<br>";

                // Verificar si el dato pertenece a la categoría y tienda actuales
                if (($categoryForSalesReport == $categoryIdCleaned || ($categoryForSalesReport === 0 && $categoryIdCleaned === '')) && $storeName == $storeIdCleaned) {
                    // Calcular el valor y sumarlo al total de la categoría
                    $categoryValue += $data['amount'];
                    $sum_fila_sucursal += $categoryValue;
                    $sum_balance_sucursal += $data['balance'];
                    $sum_totalfila += ($sum_balance_sucursal - $sum_fila_sucursal);


                }
            }

            // // Añadir el valor de la categoría a la fila
            // $pdf->Cell(15, 8, $categoryValue, '1', 0, 'C', true);
            // Añadir el valor de la categoría a la fila
            //$pdf->Cell(15, 5, '$' . number_format($categoryValue, 2), '0', 0, 'R', true); 

            $pdf->Cell(20, 8, '$' . number_format($categoryValue, 2), '0', 0, 'C', false); // Modificado '1' a '0' para eliminar el contorno
            // Acumular el total por categoría
            $totalesPorCategoria[$categoryId] += $categoryValue;
            // Calcular el valor y sumarlo al total de la fila
            $totalFila += $categoryValue;
        }

        // Añadir el valor total pagado de la fila
        $pdf->Cell(20, 8, '$' . number_format($sum_fila_sucursal, 2), '0', 0, 'C', false);
        // Añadir el valor saldo tienda de la fila
        $pdf->Cell(20, 8, '$' . number_format($sum_balance_sucursal, 2), '0', 0, 'C', false);
        // Añadir el valor saldo tienda de la fila
        $pdf->Cell(20, 8, '$' . number_format($sum_totalfila, 2), '0', 0, 'R', false);

        $sum_fila_sucursal = 0;
        // Acumular el total de la columna "Total"
        $totalColumnaPagado += $totalFila;
        # Acumular el saldo total de tienda
        $totalColumnaSaldoTienda += $sum_balance_sucursal;
        # Acumular el saldo total FINAL
        $totalColumnaTotal += $sum_totalfila;
        // Agregar un salto de línea al final de cada tienda
        $pdf->Ln();
    }

}
$pdf->Ln(5);
$pdf->Cell(30, 8, "Totales:", '1', 0, 'R');
foreach ($categoryList as $categoryId => $categoryName) {
    $pdf->Cell(20, 8, '$' . number_format($totalesPorCategoria[$categoryId], 2), '1', 0, 'C');
}
// Pintar el total de la columna "Total Pagado"
$pdf->Cell(20, 8, '$' . number_format($totalColumnaPagado, 2), '1', 0, 'R');
// Pintar el total de la columna "Saldo Pendiente"
$pdf->Cell(20, 8, '$' . number_format($totalColumnaSaldoTienda, 2), '1', 0, 'R');
// Pintar el total de la columna "TOTAL"
$pdf->Cell(20, 8, '$' . number_format($totalColumnaTotal, 2), '1', 1, 'R');

$gran_tot_recibido = 0;
$gran_tot_pan = 0;
$gran_tot_pastel = 0;



if ($this->saveFile == true) {
    $pdf->Output($this->getTempFolder() . "/" . $this->getNombreArchivo() . ".pdf", "F");
} else {
    $pdf->Output('D', 'ResumenTiposPagoPorSucursal.pdf');
}
