<?php require('../fpdf/fpdf.php');
include('casa/setup.casa.php');
$codigo_venta = DataForms::GET('id');
$cod_cliente = DataForms::GET('cod_cliente');

$fecha_actual = FechaGlobal22(date("Y-m-d h:i:s"));

/** actualizar inventario */
$Inventario = new DB();
$ActualizarProductos = new DB();
$sqlInventario = "SELECT * FROM ventas_productos ven, inventarios_productos prod
WHERE ven.prod_codigo = prod.prod_codigo
AND ven.ven_codigo = '$codigo_venta';";
$Inventario->dbSQL($sqlInventario);
while($Inventario->next()){
	$ven_codigo = $Inventario->dbField('ven_codigo');
	$clie_codigo = $Inventario->dbField('clie_codigo');
	$prod_codigo = $Inventario->dbField('prod_codigo');
	$ubica_codigo = $Inventario->dbField('ubica_codigo');
	$us_id = $Inventario->dbField('us_id');
	$ven_cantidad = $Inventario->dbField('ven_cantidad');
	$ven_precio = $Inventario->dbField('ven_precio');
	$ven_tipo = $Inventario->dbField('ven_tipo');
	//Productos
	$prod_piezascaja = $Inventario->dbField('prod_piezascaja');
	$prod_unidadesreal = $Inventario->dbField('prod_unidadesreal');	
	//Calculos ventas - productos
	$ActCantidadProducto = 0;
	$SaldoNuevo=0;
	switch($ven_tipo){
		case 1: $TipoVenta = 'Unidad'; 
			$ActCantidadProducto	= $ven_cantidad;
		break;
		case 2: $TipoVenta = 'Docena';
			$ActCantidadProducto	= $ven_cantidad;
		break;
		case 3: $TipoVenta = 'CajaDocena';
			$ActCantidadProducto	= $ven_cantidad * $prod_piezascaja;
		break;
		case 4: $TipoVenta = 'unidades por docena';
			$ActCantidadProducto	= $ven_cantidad;
		break;
	}
	//Restar cantidad actual del producto menos la compra realizada
	$SaldoNuevo = $prod_unidadesreal - $ActCantidadProducto;
	$sqlActualizarCantidad = "UPDATE inventarios_productos SET 
		prod_unidadesreal = '$SaldoNuevo'
	WHERE prod_codigo ='$prod_codigo';";
	$ActualizarProductos->dbSQL($sqlActualizarCantidad);
}
/**actualizar inventario */
function FechaGlobal22($fec){
	//2023-05-06 21:53:45
	$fecha = explode(' ',$fec);
	$hora = explode(':',$fecha[1]);
	$mes = explode('-', $fecha[0]);
    $dia = $mes[2] - 1;   

	switch($mes[1]){
		case 1 : $mm = 'Ene'; break;
		case 2 : $mm = 'Feb'; break;
		case 3 : $mm = 'Mar'; break;
		case 4 : $mm = 'Abr'; break;
		case 5 : $mm = 'May'; break;
		case 6 : $mm = 'Jun'; break;
		case 7 : $mm = 'Jul'; break;
		case 8 : $mm = 'Ago'; break;
		case 9 : $mm = 'Sep'; break;
		case 10: $mm = 'Oct'; break;
		case 11: $mm = 'Nov'; break;
		case 12: $mm = 'Dic'; break;		
	}

	if($hora[0] < 6)
		$hh = ($hora[0] + 24) - 18;
	else
		$hh = $hora[0];// - 6;

	$hora_global = $dia.'-'.$mm.'-'.$mes[0];//.' '.$hh.':'.$hora[1].':'.$hora[2];

	return $hora_global;
}

$title = 'PROFORMA DE VENTA';
echo "<title>".AppName.' - '.$title."</title>";

$Ubicacion = new DB();
$sqlUbicacion = "SELECT * FROM inventarios_ubicaciones ubi, rol_usuarios us
WHERE ubi.ubica_codigo = us.ubica_codigo
AND us.us_id='$USID';";
$Ubicacion->dbSQL($sqlUbicacion);
if($Ubicacion->next())
	$ubica_nombre = $Ubicacion->dbField('ubica_nombre');
else
	$ubica_nombre = 'Central';

$Cliente	= new DB();
$sqlCliente = "SELECT * FROM inventarios_clientes
WHERE clie_codigo = '$cod_cliente';";
$Cliente->dbSQL($sqlCliente);
$Cliente->next();
	$clie_id = $Cliente->dbField('clie_id');
	$clie_codigo = $Cliente->dbField('clie_codigo');
	$clie_cinit = $Cliente->dbField('clie_cinit');
	$clie_nombres = $Cliente->dbField('clie_nombres');
	$clie_apellidos = $Cliente->dbField('clie_apellidos');
	$clie_destino = $Cliente->dbField('clie_destino');
	$clie_celular = $Cliente->dbField('clie_celular');
	$clie_puntolista = $Cliente->dbField('clie_puntolista');
	$clie_puntoentrega = $Cliente->dbField('clie_puntoentrega');
	$clie_personarecoge = $Cliente->dbField('clie_personarecoge');
	$clie_tipopagonombre = $Cliente->dbField('clie_tipopagonombre');
	$clie_descuento = 0;
	
//datos de la compra
$datos='';
$sql = "SELECT * FROM inventarios_productos prod, inventarios_ubicaciones ubi, ventas_productos ven
											WHERE prod.ubica_codigo = ubi.ubica_codigo
											AND ven.ubica_codigo = ubi.ubica_codigo
											AND ven.prod_codigo = prod.prod_codigo
											AND ven.ven_codigo = '$codigo_venta'
											AND ven.ventas_tipo='app';";	
											$db= new DB();
											$db->dbSQL($sql);
											$html='';
											$i=0;
											$total = 0;
											while($db->next()){						
											$i++;												
												$ubica_nombre = $db->dbField('ubica_nombre');	
												$ubica_color = $db->dbField('ubica_color');			

												$prod_item = $db->dbField('prod_item');
												$prod_nombre = $db->dbField('prod_nombre');
												$prod_preciounitario = $db->dbField('prod_preciounitario');
												$prod_preciodocena = $db->dbField('prod_preciodocena');
												$prod_preciocajadocena = $db->dbField('prod_preciocajadocena');
												$prod_piezascaja = $db->dbField('prod_piezascaja');
												$prod_observaciones = $db->dbField('prod_observaciones');

												$ven_tipo = $db->dbField('ven_tipo');
												//ventas
												$ven_id = $db->dbField('ven_id');
												$ven_cantidad = $db->dbField('ven_cantidad');
												$ven_precio = $db->dbField('ven_precio');
												$ven_numerolista = $db->dbField('ven_numerolista');
												switch($ven_tipo){
													case '1' : $tipo = 'Unidad'; 
														$precio = $prod_preciounitario;
														$CajaU = 'Unidad';
														$piezas = 1;
														$cantidades = $ven_cantidad*$piezas;
														$precios = number_format(($precio/$piezas),2);
														$extras='';
													break;
													case '2' : $tipo = 'Docena'; 
														$precio = $prod_preciodocena;
														$CajaU = 'Unidades';
														$piezas = $prod_piezascaja*12;
														$cantidades = $ven_cantidad;
														$precios = number_format(($precio),2);
														$extras='';
													break;
													case '3' : $tipo = 'Caja Docena'; 
														$precio = $prod_preciocajadocena;
														$CajaU = 'unidad';
														$piezas = $prod_piezascaja;
														$cantidades = $ven_cantidad*$piezas;
														$precios = number_format(($precio/$piezas),2);
														$extras='<b>Piezas Caja: </b>'.$piezas.'<br>
														<b>total Unidades: </b>'.$cantidades.' '.$CajaU.'<br>';
													break;
													case '4' : $tipo = 'Docena'; 
														$precio = $prod_preciodocena;
														$CajaU = 'unidades';
														$piezas = $prod_piezascaja;
														$cantidades = $ven_cantidad;
														$precios = number_format(($precio),2);
														$extras='';
													break;
												  }
												
												$total = $total + $ven_precio;
												//$preciototal = number_format(($precio/$piezas)*($ven_cantidad*$piezas),2);
                                                $preciototal = $ven_cantidad * $precio;
																					

	$datos.= '<br><b>Item: </b>'.$prod_item.'<br>
    <b>Producto: </b>'.$prod_nombre.'<br>
    <b>Cantidad: </b>'.$ven_cantidad.' '.$CajaU.'<br>
    '.$extras.'<b>Precio Unitario: </b>'.$precios.'<br>
    <b>Subtotal: Bs.'.$preciototal.'</b>';

}//wend() 	
$descuentos = $total*$clie_descuento;
$total22 = $total;// - $descuentos;
//$file = 'imprimir-ventas'.substr(md5(uniqid()),1,4);
$file = 'caja_'.$ven_numerolista;//'app-imprimir';//nombre del numero de la lista
//Generar txt
$archivo = fopen($file.'.txt','w+b');
  fwrite($archivo,$datos);
  fflush($archivo);
fclose($archivo);

class PDF extends FPDF{
    //HTML
protected $B = 0;
protected $I = 0;
protected $U = 0;
protected $HREF = '';

function WriteHTML($html){
    // Intérprete de HTML
    $html = str_replace("\n",' ',$html);
    $a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
    foreach($a as $i=>$e){
        if($i%2==0){
            // Text
            if($this->HREF)
                $this->PutLink($this->HREF,$e);
            else
                $this->Write(5,$e);
        }else{
            // Etiqueta
            if($e[0]=='/')
                $this->CloseTag(strtoupper(substr($e,1)));
            else{
                // Extraer atributos
                $a2 = explode(' ',$e);
                $tag = strtoupper(array_shift($a2));
                $attr = array();
                foreach($a2 as $v){
                    if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
                        $attr[strtoupper($a3[1])] = $a3[2];
                }
                $this->OpenTag($tag,$attr);
            }
        }
    }
}

function OpenTag($tag, $attr){
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,true);
    if($tag=='A')
        $this->HREF = $attr['HREF'];
    if($tag=='BR')
        $this->Ln(5);
}

function CloseTag($tag){
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,false);
    if($tag=='A')
        $this->HREF = '';
}

function SetStyle($tag, $enable){
    $this->$tag += ($enable ? 1 : -1);
    $style = '';
    foreach(array('B', 'I', 'U') as $s){
        if($this->$s>0)
            $style .= $s;
    }
    $this->SetFont('',$style);
}

function PutLink($URL, $txt){
    // Escribir un hiper-enlace
    $this->SetTextColor(0,0,255);
    $this->SetStyle('U',true);
    $this->Write(5,$txt,$URL);
    $this->SetStyle('U',false);
    $this->SetTextColor(0);
}   
// Cargar los datos
function LoadData($file){
    $lines = file($file);
    $data = array();
    foreach($lines as $line)
        $data[] = explode(';',trim($line));
    return $data;
}

// Tabla coloreada
function FancyTable($header, $data){
    $this->SetFillColor(0,128,0);
    $this->SetTextColor(255);
    $this->SetDrawColor(200,200,200);
    $this->SetLineWidth(.01);
    $this->SetFont('','B');
    // Cabecera
    $w = array(17,57,14,14,17);
    for($i=0;$i<count($header);$i++)
        $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
    $this->Ln();
    // Restauración de colores y fuentes
    $this->SetFillColor(224,235,255);
    $this->SetTextColor(0);
    $this->SetFont('');
    // Datos
    $fill = false;
    foreach($data as $row){
        $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
        $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
        $this->Cell($w[2],6,$row[2],'LR',0,'L',$fill);
        $this->Cell($w[3],6,$row[3],'LR',0,'L',$fill);
        $this->Cell($w[4],6,$row[3],'LR',0,'L',$fill);
        $this->Ln();
        $fill = !$fill;
    }
    // Línea de cierre
    $this->Cell(array_sum($w),0,'','T');
}


}
//vertical P
//Horizontal L
//$pdf = new PDF('L','mm','Letter');
//$pdf = new PDF('P','mm','Letter'); array(ancho, alto)
  $pdf = new PDF('P','mm',array(100,400));
  $pdf->SetMargins(2,2,2);
  $pdf->SetAutoPageBreak(true,1); 
// Títulos de las columnas
$header = array('ITEM','PRODUCTO','CANT','P.UNIT','PRECIO');
// Carga de datos
$data = $pdf->LoadData($file.'.txt');
$pdf->SetFont('Arial','',11);
$pdf->AddPage();
//$pdf->Image("fondopdf.jpg",69,44,25,12);
$pdf->Image("logo4.jpg",0,0,100,60);

$pdf->WriteHTML('<br><br><br><br><br>                                     <b>RECIBO<br>Compra Nro: '.$ven_numerolista.'</b>');
$pdf->WriteHTML('<br><b>Cliente: </b>'.$clie_nombres.' '.$clie_apellidos.'<br><b>NIT: </b>'.$clie_cinit);
$pdf->WriteHTML('<br><b>Sucursal: </b>'.$ubica_nombre);
$pdf->WriteHTML('<br><b>Anotaciones: </b>'.$clie_destino);
$pdf->WriteHTML('<br><b>Fecha: </b>'.$fecha_actual.'<br>');
//$pdf->FancyTable($header,$data);
$pdf->WriteHTML('<br>                         <b>DETALLES DE VENTA</b>');
$pdf->WriteHTML($datos);
$pdf->WriteHTML('<br><br><b>SUBTOTAL: </b>Bs.'.$total);
//$pdf->WriteHTML('<br><b>DESCUENTO: </b>Bs.'.$descuentos.'<br><b>TOTAL: Bs.'.$total22.'</b>');
$pdf->WriteHTML('<br><b>TOTAL: Bs.'.$total22.'</b>');
$pdf->WriteHTML('<br><br><br><br><br><br><br><br>                   SELLO Y FIRMA CAJERO');
$pdf->WriteHTML('<br><br><br><br><br><br><br><br>                SELLO Y FIRMA ALMACEN');
$pdf->WriteHTML('<br><br>                         <b>Importadora El Comercio SyS</b>');
$pdf->Output($file.'.pdf','F');
//geneerar nuevo codigo venta
$_SESSION['codigo_venta'] = substr(sha1(uniqid()),1,7);

$report = "<script>top.location='".PATH_HOME.$file.".pdf';</script>";
echo $report;
?>