<?php
/*include("conexion21.php");
$StrId=1;
$StrCmd="CE_FACTURA";
$OK=1;
*/

if($StrCmd=="CE_FACTURA"){
$V=gr("vis_sp_ventas","ID=$StrId");
$R_ZIP=$V['R_SUN_ZIP'];
$ID_EMP=$V['ID_EMP'];
$ID_COM=$V['ID_COM'];
$SAnu=$V['ANU'];

if(strlen($R_ZIP)>0){
	$SYS_FUN="Alert|N|$MTim|Este proceso ya fue realizado anteriormente";
	$SYS_FOC="Emp";
	$OK=0;
}

if($OK==1){
if(gn("count(*)","numeracion_ce","id_com=$ID_COM AND id_emp=$ID_EMP")==0){
	$SYS_FUN="Alert|N|$MTim|No hay registro inicial de la Serie y Numeracion";
	$SYS_FOC="Emp";
	$OK=0;	
}}

if($OK==1){
if($SAnu=="SI"){
	$SYS_FUN="Alert|N|$MTim|Registro anulado no se puede Emetir Comprobante Electronico";
	$SYS_FOC="Emp";
	$OK=0;	
}}

if($OK==1){
$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);
}

//---------------------------------------------------------------------------------------
//DATOS DEL EMISOR-----------------
/*$E=gr("emisor","id_emisor=1");
$emisor = 	array(
			'tipodoc'					=> '6',
			'ruc' 						=> $E['ruc'],			
			'razon_social'				=> $E['raz_social'],			
			'nombre_comercial'			=> $E['nom_comercial'],			
			'direccion'					=> $E['dir'],						
			'pais'						=> $E['pais'],			
			'departamento'  			=> $E['dep'],
			'provincia'					=> $E['prov'],
			'distrito'					=> $E['distrito'],
			'ubigeo'					=> $E['ubigeo'],			
			'usuario_sol'				=> $E['usuario_sol'],
			'clave_sol'					=> $E['clave_sol'],			
			'usuario_secundario'		=> $E['usu_secundario'],
			'clave_usuario_secundario'	=> $E['usu_secundario_clave']
			);
*/

$E=gr("sp_empresas","id_emp=$ID_EMP");
$emisor = 	array(
			'tipodoc'					=> '6',
			'ruc' 						=> $E['emp_fe_ruc'],			
			'razon_social'				=> $E['emp_nombre'],			
			'nombre_comercial'			=> $E['emp_fe_raz_soc'],			
			'direccion'					=> $E['emp_fe_dir'],						
			'pais'						=> $E['emp_pais'],			
			'departamento'  			=> $E['emp_fe_dep'],
			'provincia'					=> $E['emp_fe_prov'],
			'distrito'					=> $E['emp_fe_dis'],
			'ubigeo'					=> $E['emp_fe_ubigeo'],			
			'usuario_sol'				=> $E['emp_usu_prin'],
			'clave_sol'					=> $E['emp_pas_prin'],			
			'usuario_secundario'		=> $E['emp_usu_sec'],
			'clave_usuario_secundario'	=> $E['emp_pas_sec'],
			'id_empresa'				=> $E['id_emp'],
			'cer_password'				=> $E['emp_cer_pass']
			);

//---------------------------------------------------------------------------------------
//DATOS DEL CLIENTE-----------------
$C=gr("sp_clientes","id_cli=$IdCli");
	$cliente = array(
		'tipodoc'		=> '6',
		'ruc'			=> $C['cli_ruc'],
		'razon_social'	=> $C['cli_nom'],
		'direccion'		=> $C['cli_dir'],
		'pais'			=> 'PE'
	);
	

//---------------------------------------------------------------------------------------
//DATOS DEL TIPO DE COMPROBANTE QUE SE EMVIA-----------------
//$CS=gr("vis_numeracion_ce","COM='FACTURA'");
//$SerSun=$CS['SER'];
//$NumSun=$CS['NUM'];

$SerSun=gn("ser_actual","numeracion_ce","id_com=$ID_COM AND id_emp=$ID_EMP");
$NumSun=gn("num_actual","numeracion_ce","id_com=$ID_COM AND id_emp=$ID_EMP");

//if($V['MON']="S"){$V['MON']="PEN";}else{$V['MON']="USD";}
$comprobante =	array(
			'tipodoc'			=> '01', 		//01->FACTURA, 03->BOLETA, 07->NC, 08->ND
			'serie'				=> "F".$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_sp_ventas_det
WHERE IDVEN=$StrId ORDER BY IDVEN";

$rs = grs($s);
while ($r = $rs->fetch_assoc()){
	$CX++;
	$PreU=($r['PVE']*100)/118;

	$IMP=$r['IMP'];	
	$SUB=$r['IMP']/1.18;
	$SUB=(float) number_format($SUB,2,'.','');	
	$IGV=$IMP-$SUB;
	
	//$IGV=$r['IGV'];
	//$SUB=$r['SUB'];
	//$IMP=$r['IMP'];
	
	$detalle[$i] = array(
	'item' 					=> $CX,
	'codigo'				=> $r['COD'],
	'descripcion'			=> $r['DES'],
	'cantidad'				=> $r['CAN'],
	'valor_unitario'		=> number_format($PreU,2),				
	'precio_unitario'		=> $r['PVE'],
	'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);

//var_dump($comprobante);

//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);

//echo "<br/>PASO 01: XML CREADO";

//LLAMAR AL API DE FACTURACION

require_once('ApiFacturacion.php');
$objApiFac = new ApiFacturacion();
$MSN=$objApiFac->EnviarComprobanteElectronico($emisor, $nombreXml, $Dir_xml."/", $Dir_cdr."/");


if($MSN=="OK"){	
	if (file_exists($Dir_cdr."/R-".$nombreXml.".XML")){	
		$IdCom=gn("id_com","sp_comprobantes","com_nom='FACTURA'");
		$N_Num=NewN($NumSun);
		
		$RZip="R-".$nombreXml.".ZIP";
		$IdEmp=$ID_EMP;
		$Ser=$SerSun;
		$Num=$NumSun;
		
		$s="UPDATE sp_ventas SET 
			respuesta_sunat_zip='$RZip',
			ven_ser='$SerSun',
			ven_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";

	}else{			
		$SYS_MSG="ERROR INESPERADO";
		$OK=0;
	}	
}else{		
	$SYS_MSG=$MSN;
	$OK=0;

}
}
}
?>