<?php

$categoryList = $data['category_for_sales_report_list'];

$storeName = $data['storeName'];

$arrayData = $data['data'];

$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";

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

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

$pageNumber = 1;
// var_dump($estadoDeCuenta);exit;
$pdf = new PDF();


$pdf->AliasNbPages();
$pdf->AddPage("P", "A4");

$totalPages = 1; // Variable para llevar el seguimiento del total de páginas
$startYStore = "";
$limiteHoja = "";
//UG Apartir de aqui es necesario agrupar por sucursal
if (isset($storeName)) {

    foreach ($storeName as $indice => $storeData) {
        $pdf->setStore($storeData["name"]);
        $startYStore = $pdf->GetY(); // Obtén la posición Y antes del bucle de sucursales
        $limiteHoja = $pdf->GetPageHeight();

        $pageNumber = $totalPages; // Obtén 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->SetFont('Arial', 'B', '10');
        $pdf->Cell(190, 5, $empresaData['name'], '0', 1, 'R');
        $x = $pdf->GetX();
        $pdf->SetX(0);
        $pdf->Cell(10, 10, "", '0', 0, 'L', true);
        $pdf->Cell(50, 10, "Ventas a sucursal detalle: " . $storeData["name"], '0', 1, 'R', true);
        $pdf->SetX($x);
        $pdf->SetFont('Arial', '', '8');

        $pdf->Cell(50, 3, $startDate . " - " . $endDate, 0, 1, 'R');
        $pdf->ln(3);
        $pdf->SetFont('Arial', '', '8');
        $pdf->SetTextColor(0);
        $sum_enviado = 0;
        $sum_recibido = 0;
        $sum_tot_enviado = 0;
        $sum_tot_recibido = 0;
        $gran_tot_recibido = 0;
        $gran_tot_enviado = 0;
        $gran_tot_pan = 0;
        $total_pan_enviado = 0;
        $total_pastel_enviado = 0;
        $gran_tot_pastel = 0;
        $flagPageChanged = false;

        foreach ($categoryList as $category_id => $categoryName) {


            $pdf->SetFont('Arial', 'B', '8');
            $pdf->cell(100, 4, $categoryName, 0, 1, 'L');
            $pdf->SetFont('Arial', 'B', '8');
            $pdf->Cell(45, 5, "Producto", 'B', 0, 'C');
            $pdf->Cell(15, 5, "Enviado", 'B', 0, 'C');
            $pdf->Cell(20, 5, "Recibido", 'B', 0, 'C');
            $pdf->Cell(20, 5, "Precio", 'B', 0, 'R');
            $pdf->Cell(20, 5, "Total enviado", 'B', 0, 'R');

            $pdf->Cell(55, 5, "Total recibido", 'B', 1, 'R');
            $pdf->Ln(1);
            $startYCategory = $pdf->GetY(); // Obtén la posición Y antes del bucle de categorías

            $pdf->SetFont('Arial', '', '8');


            $saldoPendienteTotalPorCliente = 0;

            foreach ($arrayData as $key => $data) {
                if ($data['category_for_sales_report'] == $category_id && $storeData['name'] == $data['storeName']) {

                    $pdf->SetFillColor(247, 248, 249);

                    $pdf->Cell(45, 5, $data['description'], '0', 0, 'C', true); //Producto
                    $pdf->Cell(15, 5, $data['quantity'], '0', 0, 'C', true); //Enviado
                    $pdf->Cell(20, 5, $data['received'], '0', 0, 'C', true); //Recibido
                    $pdf->Cell(20, 5, '$' . number_format($data['sale_price'], 2), '0', 0, 'R', true); //Precio
                    $pdf->Cell(20, 5, '$' . number_format($data['quantity'] * $data['sale_price'], 2), '0', 0, 'R', true); //Total Enviado

                    $pdf->Cell(55, 5, '$' . number_format($data['received'] * $data['sale_price'], 2), '0', 1, 'R', true); //Total Recibido

                    $sum_enviado += $data['quantity'];
                    $sum_recibido += $data['received'];
                    $sum_tot_enviado += $data['quantity'] * $data['sale_price'];
                    $sum_tot_recibido += $data['received'] * $data['sale_price'];

                }


            }

            $pdf->Ln(1);
            $pdf->Cell(45, 5, "Total", '1', 0, 'R');
            $pdf->Cell(15, 5, number_format($sum_enviado, 2), '1', 0, 'C'); //Qty Enviado
            $pdf->Cell(20, 5, number_format($sum_recibido, 2), '1', 0, 'C'); //Qty Recibido
            $pdf->Cell(20, 5, "", '1', 0, 'R'); //Vacio
            $pdf->Cell(20, 5, '$' . number_format($sum_tot_enviado, 2), '1', 0, 'R'); //Total Enviado

            $pdf->Cell(55, 5, '$' . number_format($sum_tot_recibido, 2), '1', 0, 'R'); //Total Recibido
            $pdf->Ln(5);


            if ($categoryName == "Conchas" || $categoryName == "Harinas" || $categoryName == "Otros panes" || $categoryName == "Pan" || $categoryName == "Galletas" || $categoryName == "Insumos" || $categoryName == "Miniaturas") {
                $gran_tot_pan += $sum_tot_recibido;
                $total_pan_enviado += $sum_tot_enviado;
            }
            if ($categoryName == "Pasteles" || $categoryName == "Mini pasteles") {
                $gran_tot_pastel += $sum_tot_recibido;
                $total_pastel_enviado += $sum_tot_enviado;
            }
            $gran_tot_recibido += $sum_tot_recibido;
            $gran_tot_enviado += $sum_tot_enviado;
            $sum_enviado = 0;
            $sum_recibido = 0;
            $sum_tot_enviado = 0;
            $sum_tot_recibido = 0;


        }
        $endYStore = $pdf->GetY(); // Obtén la posición Y después del bucle de sucursales


        // Comprueba si se cambió de página al nivel de sucursales
        // if ($endYStore < $startYStore) {
        //     echo "Cambiado de página después de procesar sucursales." . PHP_EOL;
        // }
        $pdf->Ln(1);
        $pdf->Ln(1);
        $pdf->Cell(175, 5, "GRAN TOTAL", '1', 1, 'C');
        //$pdf->Cell(55, 5, '$' . number_format($gran_tot_recibido, 2), '1', 1, 'R');

        $pdf->Ln(1);


        $pdf->Cell(45, 5, "TOTAL PAN ENVIADO", '1', 0, 'R');
        $pdf->Cell(5, 5, "", '0', 0, 'R');
        $pdf->Cell(35, 5, '$' . number_format($total_pan_enviado, 2), '1', 0, 'R');
        $pdf->Cell(5, 5, "", '0', 0, 'R');


        $pdf->Cell(45, 5, "TOTAL PAN RECIBIDO", '1', 0, 'R');
        $pdf->Cell(5, 5, "", '0', 0, 'R');
        $pdf->Cell(35, 5, '$' . number_format($gran_tot_pan, 2), '1', 1, 'R');



        $pdf->Ln(1);
        $pdf->Cell(45, 5, "TOTAL PASTELES ENVIADOS", '1', 0, 'R');
        $pdf->Cell(5, 5, "", '0', 0, 'R');
        $pdf->Cell(35, 5, '$' . number_format($total_pastel_enviado, 2), '1', 0, 'R');
        $pdf->Cell(5, 5, "", '0', 0, 'R');


        $pdf->Cell(45, 5, "TOTAL PASTEL RECIBIDOS", '1', 0, 'R');
        $pdf->Cell(5, 5, "", '0', 0, 'R');
        $pdf->Cell(35, 5, '$' . number_format($gran_tot_pastel, 2), '1', 1, 'R');



        $pdf->Ln(1);

        $pdf->Cell(45, 5, "GRAN TOTAL", '1', 0, 'R');


        $pdf->Cell(5, 5, "", '0', 0, 'R');
        $pdf->Cell(35, 5, '$' . number_format($gran_tot_enviado, 2), '1', 0, 'R');

        $pdf->Cell(55, 5, "", '0', 0, 'R');
        //$pdf->Cell(15, 5, "GRAN TOTAL", '1', 0, 'R');
        $pdf->Cell(35, 5, '$' . number_format($gran_tot_recibido, 2), '1', 1, 'R');

        // $pdf->Ln(1);
        // $pdf->Ln(1);
        // $pdf->Cell(120, 5, "NOTAS", '1', 0, 'R');
        // $pdf->Cell(55, 5, 'NOTAS', '1', 1, 'R');

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

        if ($storeData === end($storeName)) {

        }else{
            $pdf->AddPage("P", "A4");

        }

    }
   // $pdf->Output();
    $formatDate = date('m_d_Y-h:ia');

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