<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

	
	
	#--------------------------------------------------------------------------------------------------#
	#	                                    Crear el archivo XML de la nómina					       #
	#--------------------------------------------------------------------------------------------------#
	function crearXmlRecibo($configuracion,$empleado,$sello,$certificado,$fecha,$folio,$divisa,$antiguedad)
	{
		$fecha					= str_replace(" ","T",$fecha);
		$sello					= str_replace(" ","",$sello);
		$certificado			= str_replace(" ","",$certificado);
		$numeroPercepciones		= $_POST['txtNumeroPercepciones'];
		$otrosPagos				= false;
	
		for($i=0;$i<$numeroPercepciones;$i++)
		{
			if (isset($_POST['txtOtros'.$i]))
			{
				$otrosPagos		= true;
				break;
			}
		}
	
		$XMLFacturaComprobante	='<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:implocal="http://www.sat.gob.mx/implocal" xmlns:nomina12="http://www.sat.gob.mx/nomina12" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"';
		$XMLFacturaComprobante.=' Sello="'.$sello.'"';
		$XMLFacturaComprobante.=' Certificado="'.$certificado.'"';
	
		$XMLFacturaComprobante.=' xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/nomina12 http://www.sat.gob.mx/sitio_internet/cfd/nomina/nomina12.xsd http://www.sat.gob.mx/implocal http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xsd"';
	
		$XMLFacturaComprobante.=' Version="4.0" Folio="'.$folio.'"';
	
		if(strlen($configuracion->serie)>0)
		{
			$XMLFacturaComprobante.=' Serie="'.$configuracion->serie.'"';
		}
	
		$XMLFacturaComprobante.=' Fecha="'.$fecha.'" Exportacion="01" NoCertificado="'.$configuracion->numeroCertificado.'"';
		$XMLFacturaComprobante.=' SubTotal="'.Sprintf("% 01.2f",$_POST['txtPercepciones']+$_POST['txtOtrosPagos']).'"';
	
		if($_POST['txtDeducciones']>0)
		{
			$XMLFacturaComprobante.=' Descuento="'.Sprintf("% 01.2f",$_POST['txtDeducciones']).'"';
		}
		
		$XMLFacturaComprobante.=' Moneda="'.$divisa->clave.'" Total="'.Sprintf("% 01.2f",$_POST['txtTotales']).'" TipoDeComprobante="N" MetodoPago="PUE" LugarExpedicion="'.sustituir($configuracion->codigoPostal).'">';	
		$XMLFacturaEmisor=chr(13).chr(10).'  <cfdi:Emisor Rfc="'.espaciosFactura(sustituir($configuracion->rfc)).'" Nombre="'.sustituir($configuracion->nombre).'" RegimenFiscal="'.sustituir($configuracion->claveRegimen).'"/>';
		$XMLFacturaReceptor=chr(13).chr(10).'  <cfdi:Receptor Rfc="'.espaciosFactura(sustituir($empleado->rfc)).'" Nombre="'.sustituir($empleado->nombre).'" UsoCFDI="CN01" RegimenFiscalReceptor="'.sustituir($empleado->claveRegimenFiscal).'" DomicilioFiscalReceptor="'.sustituir($empleado->codigoPostal).'"/>';
	
		$XMLFacturaConceptos=chr(13).chr(10).'  <cfdi:Conceptos>';
		$XMLFacturaConceptos.=chr(13).chr(10).'    <cfdi:Concepto '.($_POST['txtDeducciones']>0?'Descuento="'.Sprintf("% 01.2f",$_POST['txtDeducciones']).'" ':'').'ClaveProdServ="84111505" Cantidad="1" ClaveUnidad="ACT" ValorUnitario="'.Sprintf("% 01.2f",$_POST['txtPercepciones']+$_POST['txtOtrosPagos']).'" Descripcion="'.$_POST['txtConcepto'].'" Importe="'.Sprintf("% 01.2f",$_POST['txtPercepciones']+$_POST['txtOtrosPagos']).'" ObjetoImp="01"/>';
		$XMLFacturaConceptos.=chr(13).chr(10).'  </cfdi:Conceptos>';
	
		$totalIsr		=$_POST['txtTotalIsr'];
	
		$XMLFacturaImpuestos='';
		$nomina="";

		$nomina.='  <nomina12:Nomina Version="1.2" TipoNomina="'.$_POST['selectTipoNomina'].'" FechaPago="'.$_POST['txtFechaPago'].'" FechaInicialPago="'.$_POST['txtFechaInicialPago'].'" FechaFinalPago="'.$_POST['txtFechaFinalPago'].'" NumDiasPagados="'.$_POST['txtDiasTrabajados'].'" TotalPercepciones="'.Sprintf("% 01.2f",$_POST['txtPercepciones']).'"';
	
		$nomina.=$_POST['txtDeducciones']>0?' TotalDeducciones="'.Sprintf("% 01.2f",$_POST['txtDeducciones']).'"':'';
	
		//AJUSTE A OTROS PAGOS<---> 17-FEBRERO-2022
		#$nomina.=$_POST['txtOtrosPagos']>0?' TotalOtrosPagos="'.Sprintf("% 01.2f",$_POST['txtOtrosPagos']).'"':'';
		$nomina.=$otrosPagos?' TotalOtrosPagos="'.Sprintf("% 01.2f",$_POST['txtOtrosPagos']).'"':'';
		$nomina.='>';
	
		if(strlen($empleado->registroPatronal)>2)
		{
			$nomina.='<nomina12:Emisor RegistroPatronal="'.$empleado->registroPatronal.'" />';
		}
	
		$nomina.='<nomina12:Receptor';
	
		$nomina.=$empleado->salarioBase>0?' SalarioBaseCotApor="'.Sprintf("% 01.2f",$empleado->salarioBase).'"':'';
	
		if($empleado->claveContrato!='99')
		{
			$nomina.=$empleado->salarioDiario>0?' SalarioDiarioIntegrado="'.Sprintf("% 01.2f",$empleado->salarioDiario).'"':'';
		}
	
		if($empleado->claveContrato!='99')
		{
			$nomina.=$empleado->idRiesgo>0?' RiesgoPuesto="'.$empleado->idRiesgo.'"':'';
		}
	
		$nomina.=strlen($empleado->puesto)>1?' Puesto="'.sustituir($empleado->puesto).'"':'';
		$nomina.=strlen($empleado->departamento)>1?' Departamento="'.sustituir($empleado->departamento).'"':'';
	
		if($empleado->claveContrato!='99')
		{
			$nomina.=strlen($empleado->numeroSeguridad)>2?' NumSeguridadSocial="'.espaciosFactura(sustituir($empleado->numeroSeguridad)).'"':'';
		}
	
		if($empleado->claveContrato!='99')
		{
			$nomina.=' FechaInicioRelLaboral="'.$empleado->fechaInicio.'" Antigüedad="P'.$antiguedad.'W"';
		}
	
		$nomina.=strlen($empleado->clabe)>8?' CuentaBancaria="'.espaciosFactura(sustituir($empleado->clabe)).'"':'';
	
		if(strlen($empleado->clabe)<18)
		{
			$nomina.=strlen($empleado->claveBanco)>1?' Banco="'.$empleado->claveBanco.'"':'';
		}
	
		$nomina.=strlen($empleado->claveJornada)>1?' TipoJornada="'.$empleado->claveJornada.'"':'';

		$nomina.=' TipoRegimen="'.$empleado->claveRegimen.'" TipoContrato="'.$empleado->claveContrato.'" PeriodicidadPago="'.$empleado->clavePeriodicidad.'" NumEmpleado="'.sustituir($empleado->numeroEmpleado).'" Curp="'.espaciosFactura(sustituir($empleado->curp)).'" ClaveEntFed="'.$empleado->estado.'"';
	
	
		if($empleado->subContratacion=='1')
		{
			$nomina.='<nomina12:SubContratacion RfcLabora="'.$empleado->rfcLabora.'"  PorcentajeTiempo="'.$empleado->tiempo.'" />';
			$nomina.='</nomina12:Receptor>';
		}
		else
		{
			$nomina.='/>';
		}

	
		//PARA LAS PERCEPCIONES
	
		//SACAR LAS INDEMNIZACIONES Y PRIMAS
		$indemnizacion=$_POST['txtTotalFiniquito'];
	
		$nomina.=chr(13).chr(10).'    <nomina12:Percepciones TotalGravado="'.Sprintf("% 01.2f",$_POST['txtTotalGravadoPercepciones']).'" TotalExento="'.Sprintf("% 01.2f",$_POST['txtTotalExentoPercepciones']).'" TotalSueldos="'.Sprintf("% 01.2f",($_POST['txtPercepciones'])-$indemnizacion).'"'.($indemnizacion>0?' TotalSeparacionIndemnizacion="'.Sprintf("% 01.2f",$indemnizacion).'"':'').'>';
		$numeroHoras	= $_POST['txtNumeroHoras']; //NÚMERO DE HORAS EXTRA
	
		for($i=0;$i<$numeroPercepciones;$i++)
		{
			if(isset($_POST['txtTipoPercepcion'.$i]))
			{
				if(strlen($_POST['txtTipoPercepcion'.$i])>0 and $_POST['txtOtros'.$i]=='0')
				{
					if($_POST['txtTipoPercepcion'.$i]!='019') //LAS HORAS EXTRA PENDIENTES
					{
						$nomina.=chr(13).chr(10).'      <nomina12:Percepcion TipoPercepcion="'.$_POST['txtTipoPercepcion'.$i].'" Clave="'.sustituir($_POST['txtClavePercepcion'.$i]).'" Concepto="'.sustituir($_POST['txtConceptoPercepcion'.$i]).'" ImporteGravado="'.Sprintf("% 01.2f",$_POST['txtImporteGravadoPercepcion'.$i]).'" ImporteExento="'.Sprintf("% 01.2f",$_POST['txtImporteExentoPercepcion'.$i]).'"/>';
					}
					else
					{
						$nomina.=chr(13).chr(10).'      <nomina12:Percepcion TipoPercepcion="'.$_POST['txtTipoPercepcion'.$i].'" Clave="'.sustituir($_POST['txtClavePercepcion'.$i]).'" Concepto="'.sustituir($_POST['txtConceptoPercepcion'.$i]).'" ImporteGravado="'.Sprintf("% 01.2f",$_POST['txtImporteGravadoPercepcion'.$i]).'" ImporteExento="'.Sprintf("% 01.2f",$_POST['txtImporteExentoPercepcion'.$i]).'">';
					
						for($h=0;$h<$numeroHoras;$h++)
						{
							if(strlen($_POST['txtDiasHoras'.$h])>0 && strlen($_POST['txtNumeroHoras'.$h])>0 && strlen($_POST['txtImporteHoras'.$h])>0)
							{
								$nomina.=chr(13).chr(10).'<nomina12:HorasExtra Dias="'.$_POST['txtDiasHoras'.$h].'" TipoHoras="'.sustituir($_POST['selectTipoHoras'.$h]).'" HorasExtra="'.sustituir($_POST['txtNumeroHoras'.$h]).'" ImportePagado="'.Sprintf("% 01.2f",$_POST['txtImporteHoras'.$h]).'"/>';
							}
						}
					
						$nomina.=chr(13).chr(10).'</nomina12:Percepcion>';
					}
				}
			}
		}
	
		if($indemnizacion>0)
		{
			$nomina.=chr(13).chr(10).'      <nomina12:SeparacionIndemnizacion TotalPagado="'.Sprintf("% 01.2f",$_POST['txtTotalFiniquito']).'" NumAñosServicio="'.$_POST['txtAniosServicio'].'" UltimoSueldoMensOrd="'.Sprintf("% 01.2f",$_POST['txtUltimoSueldo']).'" IngresoAcumulable="'.Sprintf("% 01.2f",$_POST['txtIngresoAcumulable']).'" IngresoNoAcumulable="'.Sprintf("% 01.2f",$_POST['txtIngresoNoAcumulable']).'"/> ';
		}
	
		$nomina.=chr(13).chr(10).'    </nomina12:Percepciones>';
	
		//PARA LAS DEDUCCIONES
	
		$numeroDeducciones	=$_POST['txtNumeroDeducciones'];
	
		if($numeroDeducciones>0)
		{
			$otrasDeducciones	= $_POST['txtDeducciones']-$_POST['txtTotalIsr'];
		
			$nomina.=chr(13).chr(10).'    <nomina12:Deducciones'.($otrasDeducciones>0?' TotalOtrasDeducciones="'.Sprintf("% 01.2f",$otrasDeducciones).'"':'').($_POST['txtTotalIsr']>0?' TotalImpuestosRetenidos="'.Sprintf("% 01.2f",$_POST['txtTotalIsr']).'"':'').'>';
		
			for($i=0;$i<$numeroDeducciones;$i++)
			{
				if(isset($_POST['txtTipoDeduccion'.$i]))
				{
					if(strlen($_POST['txtTipoDeduccion'.$i])>0)
					{
						$nomina.=chr(13).chr(10).'      <nomina12:Deduccion TipoDeduccion="'.$_POST['txtTipoDeduccion'.$i].'" Clave="'.($_POST['txtClaveDeduccion'.$i]).'" Concepto="'.sustituir($_POST['txtConceptoDeduccion'.$i]).'" Importe="'.Sprintf("% 01.2f",$_POST['txtImporteGravadoDeduccion'.$i]).'"/>';
					}
				}
			}
		
			$nomina.=chr(13).chr(10).'    </nomina12:Deducciones>';
		}
	
		if($otrosPagos)
		{
			$nomina .=chr(13).chr(10). '    	<nomina12:OtrosPagos>';

			for($i=0;$i<$numeroPercepciones;$i++)
			{
				if (isset($_POST['txtOtros'.$i]))
				{
					if ($_POST['txtOtros'.$i] == "1")
					{
						if ($_POST['txtTipoPercepcion'.$i] != "002")
						{
							$nomina .=chr(13).chr(10). '		<nomina12:OtroPago TipoOtroPago="'.$_POST['txtTipoPercepcion'.$i].'" Importe="'.Sprintf("% 01.2f",$_POST['txtImporteGravadoPercepcion'.$i]).'" Clave="'.$_POST['txtClavePercepcion'.$i].'" Concepto="'.$_POST['txtConceptoPercepcion'.$i].'"/>';
						}
						else
						{
							$nomina .=chr(13).chr(10). '<nomina12:OtroPago TipoOtroPago="'.$_POST['txtTipoPercepcion'.$i].'" Importe="'.Sprintf("% 01.2f",$_POST['txtImporteGravadoPercepcion'.$i]).'" Clave="'.$_POST['txtClavePercepcion'.$i].'" Concepto="'.$_POST['txtConceptoPercepcion'.$i].'">';
							$nomina .=chr(13).chr(10). '<nomina12:SubsidioAlEmpleo SubsidioCausado="'.Sprintf("% 01.2f",$_POST['txtImporteGravadoPercepcion'.$i]).'"/>';
							$nomina .=chr(13).chr(10). '</nomina12:OtroPago>';
						}
					}
				}
			}

		   $nomina.=chr(13).chr(10).'</nomina12:OtrosPagos>';
		}
	
		//PARA LAS INCAPACIDADES
	
		/*$numeroIncapacidades	=$_POST['txtNumeroIncapacidades'];
	
		if($_POST['txtTotalIncapacidades']>0)
		{
			$nomina.=chr(13).chr(10).'   <nomina12:Incapacidades>';
		
			for($i=0;$i<$numeroIncapacidades;$i++)
			{
				if(strlen($_POST['txtDiasIncapacidad'.$i])>0 && strlen($_POST['txtDescuentoIncapacidad'.$i])>0)
				{
					$nomina.=chr(13).chr(10).'      <nomina12:Incapacidad DiasIncapacidad="'.$_POST['txtDiasIncapacidad'.$i].'" TipoIncapacidad="'.($_POST['selectTipoIncapacidad'.$i]).'" ImporteMonetario="'.Sprintf("% 01.2f",$_POST['txtDescuentoIncapacidad'.$i]).'"/>';
				}
			}
		
			$nomina.=chr(13).chr(10).'    </nomina12:Incapacidades>';
		}*/
	
		$nomina.=chr(13).chr(10).'  </nomina12:Nomina>';
	
		$XMLFinal='<?xml version="1.0" encoding="utf-8"?>'.chr(13).chr(10).
		$XMLFacturaComprobante.
		$XMLFacturaEmisor.
		$XMLFacturaReceptor.
		$XMLFacturaConceptos.
		$XMLFacturaImpuestos.chr(13).chr(10).'  <cfdi:Complemento>'.chr(13).chr(10).$nomina.'</cfdi:Complemento>'.chr(13).chr(10).'</cfdi:Comprobante>';

		return $XMLFinal;
	}
	
?>
