<?
session_name('portal_absa');
session_start();
if(!isset($_SESSION['usuario_p_prov_absa']) || trim($_SESSION['usuario_p_prov_absa']) == "" || trim(strtoupper($_SESSION["URL_PORTAL"]."admin.php")) != trim(strtoupper($_SERVER['HTTP_REFERER']))){
	?><script>window.location.href="<?=$_SESSION["URL_PORTAL"]."index.php"?>"</script><?
	exit;
}
require "../../clases/datosbd.class.php";
$datosbd = new datosbd();
$archivo = @$_FILES["archivo"]["name"];
$archivoAnterior="";

if(strtoupper(trim($_SESSION['usuario_p_prov_absa'])) == "ADMIN"){
	$RFCEmisor = @$_REQUEST['RFCEmisor'];
}else{
	$RFCEmisor = $_SESSION['RFC_RECEPTOR_PORTAL'];
}
$tipoDocto = "NOTIFICACION DE PAGO"; 
$serie = @$_REQUEST["serie"];
$folio = @$_REQUEST["folio"];
$RFCReceptor = @$_REQUEST["rfcreceptor"];
/*$taxid = $_REQUEST["taxid"];
if($RFCReceptor == "XEXX010101000" && trim($taxid) == ""){
    $datosbd->Error("El Tax Id es requerido para el RFC XEXX010101000.");
}*/
if(trim(@$_REQUEST["adicionala"]) == ""){
	//Traigo el nombre del proveedor
	if(!$datosbd->getNombreProveedor($RFCReceptor,@$taxid)){
		$datosbd->Error($datosbd->mensajeerror);
	}
	if($datosbd->cNombreProveedor == null){
		$datosbd->Error("No se encontro el proveedor seleccionado.");
	}
	$tProveedor = mysqli_fetch_assoc($datosbd->cNombreProveedor);
	$nombreRec = $tProveedor["nombreemi"];
}
$fecha = @$_REQUEST["fecha"]."T".@$_REQUEST["hora"];
$Moneda = @$_REQUEST["moneda"];
$TipoCambio = @$_REQUEST["tipocambio"];
$MetodoPago = @$_REQUEST["metodopago"];
$FormaDePago = @$_REQUEST["formadepago"];
$total = @$_REQUEST["total"];
$uuid = @$_REQUEST["adicionala"];
if(trim(@$_REQUEST["adicionala"]) == ""){
	if($total <= 0){
		$datosbd->Alert("El total no puede ser 0 o menor a 0");
	}
}
$banInsert = true;
if(trim($uuid) != ""){
    if($datosbd->getDoce($uuid)){
        if($datosbd->cDoce != null){
            $banInsert = false;
            $tDoce = $datosbd->cDoce;
			$fecha = $tDoce["fecha"];
			$RFCEmisor = $tDoce["rfcemisor"];
            $archivoAnterior = $tDoce["archpdf"];
        }else{
            $datosbd->Alert("No se puede modificar el documento, no se encontro dado de alta.");
        }
    }else{
        $datosbd->Alert($datosbd->mensajeerror);
    }
}else{
    //Traigo el uuid
    if(!$datosbd->getUUID()){
        $datosbd->Error($datosbd->mensajeerror);
    }
    if($datosbd->cUUID == null){
        $datosbd->Error("No se pudo obtener el UUID del documento. Intente nuevamente.");
    }else{
        $uuid = $datosbd->cUUID;
    }
    //Traigo el folio siguiente
    if($datosbd->getFolioSiguiente("NOTIFICACION DE PAGO")){
        if($datosbd->cFolioSiguiente != null){
            $folio = $datosbd->cFolioSiguiente["folio"]+1;
            $serie = $datosbd->cFolioSiguiente["serie"];
        }else{
            $datosbd->Error("No se pudo obtener el folio soguiente");
        }
    }else{
        $datosbd->Error($datosbd->mensajeerror);
    }
}
$cSet = "";
$cSetUpdate = "";
if(trim($archivo) != ""){
    $ext = ".".ext($archivo);
    $archivo = basename($_FILES["archivo"]["name"],$ext);
    $archivo.="_".date("YmdHis").$ext;
    $cSet = "ArchPDF='". mysqli_real_escape_string($datosbd->CONEXION,$archivo)."',";
	$cSetUpdate = "ArchPDF='". mysqli_real_escape_string($datosbd->CONEXION,$archivo)."'";
}

if($banInsert){
    $q = "insert into doce set $cSet rfcemisor='$RFCEmisor',tipodocto='$tipoDocto',serie='$serie',folio=$folio,adicionala='$uuid',"
            . "rfcreceptor='$RFCReceptor',nombrerec='$nombreRec',fecha='$fecha',moneda='$Moneda',tipocambio='$TipoCambio',metodopago='$MetodoPago',"
            . "formadepago='$FormaDePago',adicionalb='$FormaDePago',total=$total,status=1,tipocomprobante='E',mostrarweb='SI',alta_manual='1'";
}else{
    if(!$datosbd->getTotalPagoDocumentosRef($tDoce["adicionala"])){
        $datosbd->Alert($datosbd->mensajeerror);
    }
    if(!$datosbd->getPagoDocumentosRef($tDoce["adicionala"])){
        $datosbd->Alert($datosbd->mensajeerror);
    }
    if($datosbd->cPagoDocumentosRef != null){
        if($tDoce["rfcreceptor"] != $RFCReceptor || $tDoce["tipocambio"] != $TipoCambio || $tDoce["moneda"] != $Moneda){
            $datosbd->Alert("No se puede cambiar el proveedor,tipo de cambio o moneda cuando ya hay documentos relacionados al pago.");
        }
    }
    if($datosbd->cTotalPagoDocumentosRef != null){
        if($total < $datosbd->cTotalPagoDocumentosRef){
            $datosbd->Alert("El total no puede ser menor a la suma de los montos de los documentos relacionados.<br/>"
                    . "Edite los montos de los documentos relacionados al pago si es necesario.");
        }
    }
	if(trim($archivo) == ""){
		$datosbd->Alert("Debe de seleccionar un archivo.");
		exit;
	}
	$RFCReceptor = $_REQUEST["rfcreceptorEnvio"];
    $q = "update doce set $cSetUpdate where adicionala = '$uuid'";
}

if(!mysqli_query($datosbd->CONEXION, $q)){
    $datosbd->Alert(mysqli_error($datosbd->CONEXION));
}

/*if(mysqli_affected_rows($datosbd->CONEXION) <= 0){
    $datosbd->Alert("No se afecto ningún registro. Intente nuevamente.");
}*/
if (strpos($q, 'insert into') !== false) {
    if($datosbd->incrementaFolio("NOTIFICACION DE PAGO")){
        $datosbd->setValueForm("adicionala",$uuid);
        $datosbd->setDisabled("RFCEmisor");
        $datosbd->setDisabled("fecha");
		$datosbd->setDisabled("hora");
        $datosbd->setDisabled("rfcreceptor");
        $datosbd->setDisabled("metodopago");
        $datosbd->setDisabled("formadepago");
        $datosbd->setDisabled("moneda");
        $datosbd->setDisabled("tipocambio");
        $datosbd->setDisabled("total");
        $datosbd->enviarNotificacion($uuid,$RFCReceptor);
        $datosbd->InfoContinua("Datos guardados correctamente.");
    }
}else if(strpos($q, 'update doce') !== false){
	$datosbd->enviarNotificacion($uuid,$RFCReceptor);
	$datosbd->InfoContinua("Datos guardados correctamente.");
}
$datosbd->setValueForm("archivo","");

if(trim($archivo) != ""){
    if(!$datosbd->getRutaPDF($RFCEmisor, $tipoDocto)){
        $datosbd->Alert("No se pudo guardar el archivo. Error: ".$datosbd->mensajeerror);
    }
    if($datosbd->cRutaPDF == null){
        $datosbd->Alert("No se pudo guardar el archivo. No se encontro la ruta destino en la configuración.");
    }
    try {
        if(!is_dir($datosbd->cRutaPDF."/".substr($fecha, 0,4)."/".substr($fecha, 5,2)."/")){
            mkdir($datosbd->cRutaPDF."/".substr($fecha, 0,4)."/".substr($fecha, 5,2)."/",0777,TRUE);
        }
    } catch (Exception $exc) {
        $datosbd->Alert("Ocurrio una excepción al crear el directorio destino. ".$exc->getMessage());
    }
    try{
        @move_uploaded_file($_FILES["archivo"]["tmp_name"], $datosbd->cRutaPDF."/".substr($fecha, 0,4)."/".substr($fecha, 5,2)."/".$archivo);
        if (strpos($q, 'update doce') !== false) {
            @unlink($datosbd->cRutaPDF."/".substr($fecha, 0,4)."/".substr($fecha, 5,2)."/".$archivoAnterior);
        }
    }catch(Exception $e){
        $datosbd->Alert("Ocurrio una excepción al mover el archivo. ".$e->getMessage());
    }
}

function ext($text, $dot = false)
{
    $ext = // Extension natural
            substr($text, strrpos($text, '.'));
    if (!$dot)
    { // sin punto...
        return substr($ext, 1);
    }
    return $ext;
} 

?>