<?php
/**
 * Created by PhpStorm.
 * User: svycar
 * Date: 5/4/18
 * Time: 18:07
 */

namespace Shara\Reportes;


use Exception;
use Picqer\Barcode\Exceptions\BarcodeException;


class ReporteUtil
{
    private $IVA = 2;

    private $RENTA = 1;
    private $ICE = 3;
    private $IRBPNR = 5;

    private $IVA_VENTA_0 = 0;
    private $IVA_VENTA_12 = 2;
    private $IVA_VENTA_14 = 3;

    private $IVA_VENTA_15 = 4;
    private $IVA_NO_OBJETO = 6;
    private $IVA_EXCENTO = 7;
    private $IVA_VENTA_5 = 5;


    public function getTotales($impuestos)
    {
        $resp = null;

        $totalIva12 = 0.00;
        $totalIva0 = 0.00;
        $totalExentoIVA = 0.00;
        $iva12 = 0.00;
        $totalICE = 0.00;
        $totalIRBPNR = 0.00;
        $totalSinImpuesto = 0.00;

        $totalIva5 = 0.00;
        $iva5 = 0.00;

        $tc = array();

        try {

            foreach ($impuestos as $ti) {
                $cod = $ti['codigo'];
                if (($this->IVA == $cod) && ($this->IVA_VENTA_12 == $ti['codigoPorcentaje'])) {
                    $totalIva12 += floatval($ti['baseImponible']);
                    $iva12 += floatval($ti['valor']);
                    $iva = "12";
                }
                elseif (($this->IVA == $cod) && ($this->IVA_VENTA_14 == $ti['codigoPorcentaje'])) {
                    $totalIva12 += floatval($ti['baseImponible']);
                    $iva12 += floatval($ti['valor']);
                    $iva = "14";
                }
                elseif (($this->IVA == $cod) && ($this->IVA_VENTA_15 == $ti['codigoPorcentaje'])) {
                    $totalIva12 += floatval($ti['baseImponible']);
                    $iva12 += floatval($ti['valor']);
                    $iva = "15";
                }
                elseif (($this->IVA == $cod) && ($this->IVA_VENTA_5 == $ti['codigoPorcentaje'])) {
                    $totalIva5 += floatval($ti['baseImponible']);
                    $iva5 += floatval($ti['valor']);
                }
                elseif (($this->IVA == $cod) && ($this->IVA_VENTA_0 == $ti['codigoPorcentaje'])) {
                    $totalIva0 += floatval($ti['baseImponible']);
                }
                if (($this->IVA == $cod) && ($this->IVA_NO_OBJETO == $ti['codigoPorcentaje'])) {
                    $totalSinImpuesto += floatval($ti['baseImponible']);
                }
                if (($this->IVA == $cod) && ($this->IVA_EXCENTO == $ti['codigoPorcentaje'])) {
                    $totalExentoIVA += floatval($ti['baseImponible']);
                }
                if ($this->ICE == $cod) {
                    $totalICE += floatval($ti['valor']);
                }
                if ($this->IRBPNR == $cod) {
                    $totalIRBPNR += floatval($ti['valor']);
                }
            }
            $tc['iva12'] = $iva12;
            $tc['totalIva0'] = $totalIva0;
            $tc['totalIva12'] = $totalIva12;
            $tc['totalICE'] = $totalICE;
            $tc['subtotal'] = $totalIva0+$totalIva12+$totalSinImpuesto+$totalIva5;
            $tc['totalNoSujetoIva'] = $totalSinImpuesto;
            $tc['totalExentoIVA'] = $totalExentoIVA;
            $tc['totalIRBPNR'] = $totalIRBPNR;
            $tc['iva5'] = $iva5;
            $tc['totalIva5'] = $totalIva5;

            $resp = array('error' => false, 'totimp' => $tc);
        } catch (Exception $ex) {
            return array('error' => true, 'mensaje' => $ex->getMessage());
        }
        return $resp;
    }

    public function getTotalRetencion($impuestos)
    {
        $resp = null;

        $totalRetencion = 0.00;

        $tc = array();

        try {

            foreach ($impuestos as $ti) {
                $totalRetencion += floatval($ti['valorRetenido']);

            }
            $tc['totalRetenido'] = $totalRetencion;

            $resp = array('error' => false, 'totalRetenido' => $tc);
        } catch (Exception $ex) {
            return array('error' => true, 'mensaje' => $ex->getMessage());
        }
        return $resp;
    }

    public static function getCodBarras($claveAcceso){

        $generator = new \Picqer\Barcode\BarcodeGeneratorPNG();

        //file_put_contents('barcode.png', $generator->getBarcode($claveAcceso, $generator::TYPE_CODABAR));

        try {
            return '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode($claveAcceso, $generator::TYPE_CODABAR)) . '" height="30" width="320px">';
        } catch (BarcodeException $e) {
            return null;
        }
    }
}