<?php
	//++
	function CE_NDC($StrId){
		$V=gr("vis_fes_ndc","ID=$StrId");
		$R_ZIP=$V['R_SUN_ZIP'];
		$ID_EMP=$V['ID_EMP'];
		$ID_COM=$V['ID_COM'];
		$NDC_TDO="XXX";//$V['CLI_TDI'];
		$NDC_NDO=trim($V['NDC_CLI_NDI']);
		$NDC_CLI=trim($V['NDC_CLI_NOM']);
		$NDC_CLI_KOD=trim($V['NDC_CLI_ID']);
		//
		//$V['FEC']=date("Y-m-d");
		//
		$REF_COM=trim($V['REF_COM']);
		$REF_SER=$V['REF_SER_'];
		$REF_NUM=vbr("000000000".$V['REF_NUM_'],8);
		//
		$TAB_CLI_NOM=$V['CLI_NOM'];
		$TAB_CLI_TDI=trim($V['CLI_TDI']);
		$TAB_CLI_TDI_SUNAT_COD=trim($V['CLI_TDI_SUNAT_COD']);
		$TAB_CLI_DNI=trim($V['CLI_DNI']);
		$TAB_CLI_RUC=trim($V['CLI_RUC']);
		//
		$VIgv=$V['IGV'];
		$VSub=$V['SUB'];
		$VTot=$V['TOT'];
		$VMot=$V['MOT_DES'];
		//
		$GLQ_CLI_COD_TDI="";
		$GLQ_CLI_NDI="";
		$GLQ_CLI_DIR=trim($V['NDC_CLI_DIR']);
		//
		if(strlen($R_ZIP)>0){
			return "Este proceso ya fue realizado anteriormente";
		}
		if($NDC_CLI_KOD==0){
			return "No se puede determinar el ID del cliente";
		}
		if($REF_COM=="FACT. ELEC."){
			if(strlen($NDC_NDO)!=11){
				if(strlen($TAB_CLI_RUC)!=11){
					return "No se puede determinar el ruc del cliente";
				}else{
					$GLQ_CLI_NDI=$TAB_CLI_RUC;
				}
			}else{
				$GLQ_CLI_NDI=$NDC_NDO;
			}
			$GLQ_CLI_COD_TDI="6";
			$REF_SER="F".vbr("0000".$REF_SER,3);
		}else{
			if($REF_COM=="BOL. ELEC."){
				if(strlen($NDC_NDO)==8){
					$GLQ_CLI_COD_TDI="1";
					$GLQ_CLI_NDI=$NDC_NDO;
				}else{
					$GLQ_CLI_COD_TDI=$TAB_CLI_TDI_SUNAT_COD;
					$GLQ_CLI_NDI=$TAB_CLI_DNI;
				}
				$REF_SER="B".vbr("0000".$REF_SER,3);
			}else{
				return "Comprobante de referencia no valido";
			}
		}
		//		
		$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";
		$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']
					);				
		//---------------------------------------------------------------------------------------
		$CTDoc=$GLQ_CLI_COD_TDI;
		$CNDoc=$GLQ_CLI_NDI;
		//
		$cliente = array(
			'tipodoc'		=> $CTDoc,
			'ruc'			=> $CNDoc,
			'razon_social'	=> $NDC_CLI,
			'direccion'		=> $GLQ_CLI_DIR,
			'pais'			=> 'PE'
		);
		//
		$NDC_SER_=$V['NDC_SER_'];
		$NDC_NUM=vbr("000000000".$V['NDC_NUM_'],8);	
		if($REF_COM=="FACT. ELEC."){
			$TipDoc_Ref="01";
			$SerS="F".vbr("0000".$NDC_SER_,3);	
		}
		if($REF_COM=="BOL. ELEC."){
			$TipDoc_Ref="03";
			$SerS="B".vbr("0000".$NDC_SER_,3);	
		}	
		$CodMot=$V['MOT_COD'];
		//
		$comprobante =	array(
					'tipodoc'			=> '07', 		//01->FACTURA, 03->BOLETA, 07->NC, 08->ND
					'serie'				=> $SerS,  		//$V['SER'],
					'correlativo'		=> $NDC_NUM,
					'fecha_emision' 	=> $V['NDC_FEC'],
					'moneda'			=> 'PEN', 	//PEN->SOLES; USD->DOLARES
					'total_opgravadas'	=> 0, 			//OP. GRAVADAS
					'total_opexoneradas'=> 0,
					'total_opinafectas'	=> 0,
					'igv'				=> $VIgv,
					'total'				=> $VTot,
					'total_texto'		=> '',		
					'tipodoc_ref'   	=>  $TipDoc_Ref,
					'serie_ref'     	=>  $REF_SER,
					'correlativo_ref'   =>  $REF_NUM,			
					'codmotivo'     	=>  $CodMot,
					'descripcion'   	=>  $VMot			
				);	
		//---------------------------------------------------------------------------------------
		//DATOS DEL DETALLE DE VENTAS-----------------
		$i=1;
		$CT=0;
		$s="SELECT * FROM fe_ventaz_det WHERE id_fe=$StrId ORDER BY cx";	
		$rs=grs($s);
		while($r=$rs->fetch_assoc()){
			$CT++;
			$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;
			
			$detalle[$i] = array(
			'item' 					=> $CT,
			'codigo'				=> $r['cod'],
			'descripcion'			=> $r['des'],
			'cantidad'				=> $r['can_'],
			'valor_unitario'		=> round($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);
		//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->CrearXMLNotaCredito($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")){
				$RZip="R-".$nombreXml.".ZIP";
				//
				$s="UPDATE fe_ventaz SET 
					respuesta_sunat_zip='$RZip',
					sunat_ser='$SerS',
					sunat_num='$NDC_NUM',
					fv_gen='S' 			
					WHERE id_ven=$StrId";
				ejt($s);		
				//
				return "OK";
			}else{			
				return "ERROR INESPERADO";			
			}	
		}else{		
			return $MSN;
		}
	}
?>