<?php
	function CE_BOLETA($StrId){
		$WSG="";
		$V=gr("vis_fes_ventas","ID=$StrId");
		$R_ZIP=$V['R_SUN_ZIP'];
		$ID_EMP=$V['ID_EMP'];
		$ID_COM=$V['ID_COM'];
		$ANU=$V['ANU'];
		//
		$V['FEC']=date("Y-m-d");
		//
		if(strlen($R_ZIP)>0){
			$WSG="|MS|Este proceso ya fue realizado anteriormente|";
			return $WSG;
		}		
		//
		if($ANU=="S"){
			$WSG="|MS|Registro anulado no se puede Emetir Comprobante Electronico|";
			return $WSG;
		}
		//		
		$IdCli=$V['ID_CLI'];
		$VIgv=$V['IGV'];
		$VSub=$V['SUB'];
		$VTot=$V['TOT'];
		//
		$Dir_Empresa = 'facturacion/'."empresa".$ID_EMP;
		if (!file_exists($Dir_Empresa)) {
			mkdir($Dir_Empresa, 0777, true);
		}		
		$Dir_xml = 'facturacion/empresa'.$ID_EMP."/xml";
		if (!file_exists($Dir_xml)) {
			mkdir($Dir_xml, 0777, true);
		}		
		$Dir_cdr = 'facturacion/empresa'.$ID_EMP."/cdr";
		if (!file_exists($Dir_cdr)) {
			mkdir($Dir_cdr, 0777, true);
		}
		$PERU="PE";
		/////////////////////////////////////////////////////////////////////
		//DATOS DEL EMISOR
		$E=gr("empresas","id_emp=$ID_EMP");
		$emisor = 	array(
					'tipodoc'					=> '6',
					'ruc' 						=> $E['emp_fe_ruc'],			
					'razon_social'				=> $E['emp_fe_nom_com'],			
					'nombre_comercial'			=> $E['emp_fe_nom_com'],			
					'direccion'					=> $E['emp_fe_dir'],						
					'pais'						=> $PERU,			
					'departamento'  			=> $E['emp_fe_dep'],
					'provincia'					=> $E['emp_fe_prv'],
					'distrito'					=> $E['emp_fe_dis'],
					'ubigeo'					=> $E['emp_fe_ubi'],			
					'usuario_sol'				=> $E['emp_fe_usu_pri_nom'],
					'clave_sol'					=> $E['emp_fe_usu_pri_pas'],			
					'usuario_secundario'		=> $E['emp_fe_usu_sec_nom'],
					'clave_usuario_secundario'	=> $E['emp_fe_usu_sec_pas'],
					'id_empresa'				=> $E['id_emp'],
					'cer_password'				=> $E['emp_fe_cert_pas']
					);
		/////////////////////////////////////////////////////////////////////			
		//DATOS DEL CLIENTE
		$C=gr("clientes","id_cliente=$IdCli");
		$cliente = 	array(
					'tipodoc'		=> '1',
					'ruc'			=> $C['cli_dni'],
					'razon_social'	=> $C['cli_nombre'],
					'direccion'		=> $C['cli_dir'],
					'pais'			=> 'PE'
					);
		/////////////////////////////////////////////////////////////////////
		//DATOS COMPROBANTES
		$SerSun="";
		$NumSun="";
		CE_GEN_SER_NUM($ID_COM,$ID_EMP,$SerSun,$NumSun);
		//
		$comprobante =	array(
						'tipodoc'			=> '03', 		//01->FACTURA, 03->BOLETA, 07->NC, 08->ND
						'serie'				=> "B".$SerSun,		//$V['SER'],
						'correlativo'		=> $NumSun,
						'fecha_emision' 	=> $V['FEC'],
						'moneda'			=> 'PEN', 	//PEN->SOLES; USD->DOLARES
						'total_opgravadas'	=> 0, 			//OP. GRAVADAS
						'total_opexoneradas'=> 0,
						'total_opinafectas'	=> 0,
						'igv'				=> $VIgv,
						'total'				=> $VTot,
						'total_texto'		=> ''
					);
		/////////////////////////////////////////////////////////////////////
		//DATOS DEL DETALLE DE VENTAS
		$i=0;
		$CX=0;
		$s="SELECT * FROM vis_fes_ventas_det WHERE ID_VEN=$StrId ORDER BY CX";	
		$rs = grs($s);
		$rs=grs($s);
		while($r=$rs->fetch_assoc()){
			$CX++;
			$PRECIO_UNITARIO=$r['PRE'] * $r['PIE'];
			$PreU=($PRECIO_UNITARIO*100)/118;
			//
			$IMP=$r['IMP'];	
			$SUB=$r['IMP']/1.18;
			$SUB=(float) number_format($SUB,2,'.','');	
			$IGV=$IMP-$SUB;
			//
			$r['COD']=$r['COD']."x".$r['PIE'];
			//
			$detalle[$i] = 	array(
							'item' 					=> $CX,
							'codigo'				=> $r['COD'],
							'descripcion'			=> $r['DES'],
							'cantidad'				=> $r['CAN'],
							'valor_unitario'		=> number_format($PreU,2),				
							'precio_unitario'		=> $PRECIO_UNITARIO,
							'tipo_precio'			=> "01", 	//ya incluye igv
							'igv'					=> $IGV,
							'porcentaje_igv'		=> 18, 		//de 0 a 100
							'valor_total'			=> $SUB, 
							'importe_total'			=> $IMP,
							'unidad'				=> 'NIU',	//unidad,
							'codigo_afectacion_alt'	=> '10', 	// Catálogo No. 07 - Anexo V
							'codigo_afectacion'		=> 1000,
							'nombre_afectacion'		=>'IGV',
							'tipo_afectacion'		=> 'VAT' 	//GRAVADAS		
							);
			$i++;
		}
		//Inicializo totales de la factura
		$op_grabadas = 0;
		$op_inafectas = 0;
		$op_exoneradas = 0;
		$igv = 0;
		$total = 0;

		foreach ($detalle as $k => $v) {
			if($v['codigo_afectacion_alt'] == '10') //OPERACIONES GRABADAS
			{
				$op_grabadas = $op_grabadas + $v['valor_total'];
			}
			if($v['codigo_afectacion_alt'] == '20') //OPERACIONES EXONERADAS
			{
				$op_exoneradas = $op_exoneradas + $v['valor_total'];
			}
			if($v['codigo_afectacion_alt'] == '30') //OPERACIONES INAFECTOS
			{
				$op_inafectas = $op_inafectas + $v['valor_total'];
			}
			$igv = $igv + $v['igv'];
			$total = $total + $v['importe_total'];
		}

		$comprobante['total_opgravadas'] = $op_grabadas;
		$comprobante['total_opexoneradas'] = $op_exoneradas;
		$comprobante['total_opinafectas'] = $op_inafectas;
		$comprobante['igv'] = $igv;
		$comprobante['total'] = $total;
		
		require_once('cantidad_en_letras.php');
		$comprobante['total_texto'] = CantidadEnLetra($total);

		//PASO 01 - CREAR XML
		require_once('xml.php');
		$xml = new GeneradorXML();

		//RUC EMISOR - TIPO COMPROBANTE - SERIE - CORRELATIVO
		//Ejemplo: 20123456789-01-F001-123.XML
		//01: Factura, 03: Boleta; 07: Nota Credito; 08: Nota Debito

		$nombreXml = $emisor['ruc'] . '-' . $comprobante['tipodoc'] . '-' . $comprobante['serie'] . '-' . $comprobante['correlativo'];
		$ruta = $Dir_xml."/".$nombreXml;

		$xml->CrearXMLFactura($ruta, $emisor, $cliente, $comprobante, $detalle);
		
		//LLAMAR AL API DE FACTURACION
		require_once('ApiFacturacion.php');
		$objApiFac = new ApiFacturacion();
		//$MSN=$objApiFac->EnviarComprobanteElectronico($emisor, $nombreXml);
		$MSN=$objApiFac->EnviarComprobanteElectronico($emisor, $nombreXml, $Dir_xml."/", $Dir_cdr."/");
		
		if($MSN=="OK"){	
			if(file_exists($Dir_cdr."/R-".$nombreXml.".XML")){
				$RZip="R-".$nombreXml.".ZIP";
				/*			
				$IdCom=gn("id_com","sp_comprobantes","com_nom='BOLETA'");		
				$N_Num=NewN($NumSun);
				//				
				$Ce_Descarga="R-".$nombreXml.".ZIP";
				
				
				$IdEmp=$ID_EMP;
				$Ser=$SerSun;
				$Num=$NumSun;		
				*/
				$s="UPDATE ventas SET 
					respuesta_sunat_zip='$RZip',
					sunat_ser='$SerSun',
					sunat_num='$NumSun'		
					WHERE id_venta=$StrId";
				ejt($s);				
				/*
				$s="UPDATE numeracion_ce SET 
					num_actual='$N_Num'		
					WHERE id_com=$IdCom AND id_emp=$ID_EMP";
				ejt($s);
		
				$SYS_FUN="Alert|V|$MTim|Proceso realizado con Exito puede descargar el CDR en el icono Zip";
				$SYS_FOC="Emp";	
				*/
				return "OK";		
			}else{			
				$SYS_MSG="ERROR INESPERADO";
				$OK=0;
			}
		}else{		
			$SYS_MSG=$MSN;
			$OK=0;
		}
			
	}
?>